diff --git a/addons/api/.eslintignore b/addons/api/.eslintignore index 72df37307..922165552 100644 --- a/addons/api/.eslintignore +++ b/addons/api/.eslintignore @@ -13,6 +13,7 @@ # misc /coverage/ !.* +.eslintcache # ember-try /.node_modules.ember-try/ diff --git a/addons/api/.eslintrc.js b/addons/api/.eslintrc.js index 928585995..49fb14100 100644 --- a/addons/api/.eslintrc.js +++ b/addons/api/.eslintrc.js @@ -7,48 +7,54 @@ module.exports = { ecmaVersion: 2018, sourceType: 'module', ecmaFeatures: { - legacyDecorators: true - } + legacyDecorators: true, + }, }, - plugins: [ - 'ember' - ], + plugins: ['ember'], extends: [ 'eslint:recommended', - 'plugin:ember/recommended' + 'plugin:ember/recommended', + 'plugin:prettier/recommended', ], env: { - browser: true + browser: true, + }, + rules: { + 'ember/no-get': 'off', + 'ember/no-get-with-default': 'off', + 'ember/no-computed-properties-in-native-classes': 'off', + 'ember/no-assignment-of-untracked-properties-used-in-tracking-contexts': + 'off', }, - rules: {}, overrides: [ // node files { files: [ '.eslintrc.js', + '.prettierrc.js', '.template-lintrc.js', 'ember-cli-build.js', 'index.js', 'testem.js', 'blueprints/*/index.js', 'config/**/*.js', - 'tests/dummy/config/**/*.js' + 'tests/dummy/config/**/*.js', ], excludedFiles: [ 'addon/**', 'addon-test-support/**', 'app/**', - 'tests/dummy/app/**' + 'tests/dummy/app/**', ], parserOptions: { - sourceType: 'script' + sourceType: 'script', }, env: { browser: false, - node: true + node: true, }, plugins: ['node'], - extends: ['plugin:node/recommended'] - } - ] + extends: ['plugin:node/recommended'], + }, + ], }; diff --git a/addons/api/.npmignore b/addons/api/.npmignore index bd09adff9..88818f2c8 100644 --- a/addons/api/.npmignore +++ b/addons/api/.npmignore @@ -10,6 +10,7 @@ /.editorconfig /.ember-cli /.env* +/.eslintcache /.eslintignore /.eslintrc.js /.git/ diff --git a/addons/core/.gitignore b/addons/api/.prettierignore similarity index 50% rename from addons/core/.gitignore rename to addons/api/.prettierignore index c40a1b2ab..922165552 100644 --- a/addons/core/.gitignore +++ b/addons/api/.prettierignore @@ -1,4 +1,6 @@ -# See https://help.github.com/ignore-files/ for more about ignoring files. +# unconventional js +/blueprints/*/files/ +/vendor/ # compiled output /dist/ @@ -9,15 +11,9 @@ /node_modules/ # misc -/.env* -/.pnp* -/.sass-cache -/connect.lock /coverage/ -/libpeerconnection.log -/npm-debug.log* -/testem.log -/yarn-error.log +!.* +.eslintcache # ember-try /.node_modules.ember-try/ diff --git a/addons/api/.prettierrc.js b/addons/api/.prettierrc.js new file mode 100644 index 000000000..534e6d35a --- /dev/null +++ b/addons/api/.prettierrc.js @@ -0,0 +1,5 @@ +'use strict'; + +module.exports = { + singleQuote: true, +}; diff --git a/addons/api/.template-lintrc.js b/addons/api/.template-lintrc.js index f38737001..3b0b9af95 100644 --- a/addons/api/.template-lintrc.js +++ b/addons/api/.template-lintrc.js @@ -1,5 +1,5 @@ 'use strict'; module.exports = { - extends: 'octane' + extends: 'octane', }; diff --git a/addons/api/addon/generated/models/role.js b/addons/api/addon/generated/models/role.js index 3632696a4..87bfa46f8 100644 --- a/addons/api/addon/generated/models/role.js +++ b/addons/api/addon/generated/models/role.js @@ -18,7 +18,8 @@ export default class GeneratedRoleModel extends BaseModel { description; @attr('string', { - description: 'The scope to which this role applies. Defaults to the role\'s scope.', + description: + "The scope to which this role applies. Defaults to the role's scope.", }) grant_scope_id; diff --git a/addons/api/addon/generated/models/session.js b/addons/api/addon/generated/models/session.js index a33426e4c..977fff71d 100644 --- a/addons/api/addon/generated/models/session.js +++ b/addons/api/addon/generated/models/session.js @@ -2,7 +2,6 @@ import BaseModel from '../../models/base'; import { attr } from '@ember-data/model'; export default class GeneratedSessionModel extends BaseModel { - // =attributes @attr('string') user_id; @@ -32,5 +31,4 @@ export default class GeneratedSessionModel extends BaseModel { description: 'Current version number of this resource.', }) version; - } diff --git a/addons/api/addon/generated/models/target.js b/addons/api/addon/generated/models/target.js index 55c83d18c..4bf84649f 100644 --- a/addons/api/addon/generated/models/target.js +++ b/addons/api/addon/generated/models/target.js @@ -24,13 +24,13 @@ export default class GeneratedTargetModel extends BaseModel { @attr('number', { description: '', - defaultValue: 28800 + defaultValue: 28800, }) session_max_seconds; @attr('number', { description: '', - defaultValue: 1 + defaultValue: 1, }) session_connection_limit; diff --git a/addons/api/addon/models/account.js b/addons/api/addon/models/account.js index a4e1359f3..90ad55c42 100644 --- a/addons/api/addon/models/account.js +++ b/addons/api/addon/models/account.js @@ -4,7 +4,6 @@ import { computed } from '@ember/object'; import { equal } from '@ember/object/computed'; export default class AccountModel extends GeneratedAccountModel { - // =attributes /** diff --git a/addons/api/addon/models/base.js b/addons/api/addon/models/base.js index 60ed2faea..70da1b8a6 100644 --- a/addons/api/addon/models/base.js +++ b/addons/api/addon/models/base.js @@ -25,7 +25,6 @@ import { computed } from '@ember/object'; * 2) Or as an ID: `record.scopeID`. */ export default class BaseModel extends Model { - // =relationships /** diff --git a/addons/api/addon/models/host-set.js b/addons/api/addon/models/host-set.js index 3c56d2879..66dd96d52 100644 --- a/addons/api/addon/models/host-set.js +++ b/addons/api/addon/models/host-set.js @@ -2,7 +2,6 @@ import GeneratedHostSetModel from '../generated/models/host-set'; import { fragmentArray } from 'ember-data-model-fragments/attributes'; export default class HostSetModel extends GeneratedHostSetModel { - // =attributes /** diff --git a/addons/api/addon/models/host.js b/addons/api/addon/models/host.js index a2e855084..7748e023b 100644 --- a/addons/api/addon/models/host.js +++ b/addons/api/addon/models/host.js @@ -2,11 +2,9 @@ import GeneratedHostModel from '../generated/models/host'; import { fragment } from 'ember-data-model-fragments/attributes'; export default class HostModel extends GeneratedHostModel { - /** * Attributes of this resource, if any, represented as a JSON fragment. * @type {FragmentHostAttributesModel} */ @fragment('fragment-host-attributes', { defaultValue: {} }) attributes; - } diff --git a/addons/api/addon/models/role.js b/addons/api/addon/models/role.js index be29c1c24..60edd5ac9 100644 --- a/addons/api/addon/models/role.js +++ b/addons/api/addon/models/role.js @@ -35,7 +35,7 @@ export default class RoleModel extends GeneratedRoleModel { return this.save({ adapterOptions: { method: 'set-grants', - grantStrings + grantStrings, }, }); } diff --git a/addons/api/addon/models/session.js b/addons/api/addon/models/session.js index dd27cd9c6..15fd0b4dd 100644 --- a/addons/api/addon/models/session.js +++ b/addons/api/addon/models/session.js @@ -4,7 +4,6 @@ import { equal } from '@ember/object/computed'; import { attr } from '@ember-data/model'; export default class SessionModel extends GeneratedSessionModel { - // =attributes @attr('string', { readOnly: true }) proxy_address; @@ -61,5 +60,4 @@ export default class SessionModel extends GeneratedSessionModel { }, }); } - } diff --git a/addons/api/addon/models/target.js b/addons/api/addon/models/target.js index 6c5e1cfe8..a00c3b182 100644 --- a/addons/api/addon/models/target.js +++ b/addons/api/addon/models/target.js @@ -41,8 +41,9 @@ export default class TargetModel extends GeneratedTargetModel { * @type {SessionModel[]} */ get sessions() { - return this.store.peekAll('session') - .filter(s => s && (s.target_id === this.id)); + return this.store + .peekAll('session') + .filter((s) => s && s.target_id === this.id); } /** @@ -58,8 +59,9 @@ export default class TargetModel extends GeneratedTargetModel { * @type {boolean} */ get isActive() { - const pendingOrActiveSessions = - this.sessions.filter(s => s.isActive || s.isPending); + const pendingOrActiveSessions = this.sessions.filter( + (s) => s.isActive || s.isPending + ); return Boolean(pendingOrActiveSessions.length); } diff --git a/addons/api/addon/models/user.js b/addons/api/addon/models/user.js index 567ebd81c..49fe64520 100644 --- a/addons/api/addon/models/user.js +++ b/addons/api/addon/models/user.js @@ -3,7 +3,6 @@ import { attr } from '@ember-data/model'; import { A } from '@ember/array'; export default class UserModel extends GeneratedUserModel { - // =attributes /** @@ -74,5 +73,4 @@ export default class UserModel extends GeneratedUserModel { removeAccount(accountID, options) { return this.removeAccounts([accountID], options); } - } diff --git a/addons/api/addon/serializers/account.js b/addons/api/addon/serializers/account.js index 5f5291dcd..dfbb7e580 100644 --- a/addons/api/addon/serializers/account.js +++ b/addons/api/addon/serializers/account.js @@ -1,7 +1,6 @@ import ApplicationSerializer from './application'; export default class AccountSerializer extends ApplicationSerializer { - // =properties /** diff --git a/addons/api/addon/serializers/application.js b/addons/api/addon/serializers/application.js index e4531c7fe..08b59eebc 100644 --- a/addons/api/addon/serializers/application.js +++ b/addons/api/addon/serializers/application.js @@ -7,7 +7,6 @@ import { copy } from 'ember-copy'; * Manages serialization/normalization of data to/from the API. */ export default class ApplicationSerializer extends RESTSerializer { - // =properties /** @@ -82,7 +81,7 @@ export default class ApplicationSerializer extends RESTSerializer { // Delete `scope` field delete serialized.scope; // And serialize `scope_id` - if(this.serializeScopeID) { + if (this.serializeScopeID) { const scope_id = snapshot?.attr('scope')?.attr('scope_id'); if (scope_id) serialized.scope_id = scope_id; } diff --git a/addons/api/addon/serializers/host-set.js b/addons/api/addon/serializers/host-set.js index ee38bd5eb..5bdb2d028 100644 --- a/addons/api/addon/serializers/host-set.js +++ b/addons/api/addon/serializers/host-set.js @@ -1,7 +1,6 @@ import ApplicationSerializer from './application'; export default class HostSetSerializer extends ApplicationSerializer { - // =properties /** diff --git a/addons/api/addon/serializers/host.js b/addons/api/addon/serializers/host.js index fad6f2ca7..0b25ce63b 100644 --- a/addons/api/addon/serializers/host.js +++ b/addons/api/addon/serializers/host.js @@ -1,12 +1,10 @@ import ApplicationSerializer from './application'; export default class HostSerializer extends ApplicationSerializer { - // =properties /** * @type {boolean} */ serializeScopeID = false; - } diff --git a/addons/api/addon/serializers/role.js b/addons/api/addon/serializers/role.js index 59271fe44..a1801ff63 100644 --- a/addons/api/addon/serializers/role.js +++ b/addons/api/addon/serializers/role.js @@ -17,8 +17,8 @@ export default class RoleSerializer extends ApplicationSerializer { serialize(snapshot) { const grantStrings = get(snapshot, 'adapterOptions.grantStrings'); let serialized = super.serialize(...arguments); - if (grantStrings) serialized = - this.serializeWithGrantStrings(snapshot, grantStrings); + if (grantStrings) + serialized = this.serializeWithGrantStrings(snapshot, grantStrings); const principalIDs = snapshot?.adapterOptions?.principalIDs; if (principalIDs) serialized = this.serializewithPrincipals(snapshot, principalIDs); @@ -34,7 +34,7 @@ export default class RoleSerializer extends ApplicationSerializer { serializeWithGrantStrings(snapshot, grantStrings) { return { version: snapshot.attr('version'), - grant_strings: grantStrings + grant_strings: grantStrings, }; } diff --git a/addons/api/addon/serializers/user.js b/addons/api/addon/serializers/user.js index 9c4a47194..c5c3b223c 100644 --- a/addons/api/addon/serializers/user.js +++ b/addons/api/addon/serializers/user.js @@ -13,8 +13,8 @@ export default class UserSerializer extends ApplicationSerializer { serialize(snapshot) { let serialized = super.serialize(...arguments); const accountIDs = snapshot?.adapterOptions?.accountIDs; - if (accountIDs) serialized = - this.serializewithAccounts(snapshot, accountIDs); + if (accountIDs) + serialized = this.serializewithAccounts(snapshot, accountIDs); return serialized; } diff --git a/addons/api/config/ember-try.js b/addons/api/config/ember-try.js index 2022058df..aa7ca9f14 100644 --- a/addons/api/config/ember-try.js +++ b/addons/api/config/ember-try.js @@ -25,9 +25,9 @@ module.exports = async function () { name: 'ember-lts-3.20', npm: { devDependencies: { - 'ember-source': '~3.20.5' - } - } + 'ember-source': '~3.20.5', + }, + }, }, { name: 'ember-release', @@ -62,9 +62,9 @@ module.exports = async function () { }, npm: { devDependencies: { - '@ember/jquery': '^1.1.0' - } - } + '@ember/jquery': '^1.1.0', + }, + }, }, { name: 'ember-classic', diff --git a/addons/api/mirage/config.js b/addons/api/mirage/config.js index 8f6503319..ad976e8e7 100644 --- a/addons/api/mirage/config.js +++ b/addons/api/mirage/config.js @@ -5,8 +5,7 @@ import { pickRandomStatusString } from './factories/session'; import { Response } from 'miragejs'; import initializeMockIPC from './scenarios/ipc'; -export default function() { - +export default function () { initializeMockIPC(this); // make this `http://localhost:8080`, for example, if your API is on a different server @@ -23,17 +22,20 @@ export default function() { // Scope resources - this.get('/scopes', ({ scopes }, { queryParams: { scope_id, recursive } }) => { - // Default parent scope is global - if (!scope_id) scope_id = 'global'; - if (recursive && scope_id === 'global') { - return scopes.all(); - } else { - return scopes.where(scope => { - return scope.scope ? scope.scope.id === scope_id : false - }); + this.get( + '/scopes', + ({ scopes }, { queryParams: { scope_id, recursive } }) => { + // Default parent scope is global + if (!scope_id) scope_id = 'global'; + if (recursive && scope_id === 'global') { + return scopes.all(); + } else { + return scopes.where((scope) => { + return scope.scope ? scope.scope.id === scope_id : false; + }); + } } - }); + ); this.post('/scopes', function ({ scopes }) { // Parent scope comes through the payload via `scope_id`, but this needs // to be expanded to a scope object `scope: {id:..., type:...}` before @@ -49,41 +51,50 @@ export default function() { // Auth & IAM resources - this.get('/auth-methods', ({ authMethods }, { queryParams: { scope_id: scopeId } }) => { - return authMethods.where({ scopeId }); - }); + this.get( + '/auth-methods', + ({ authMethods }, { queryParams: { scope_id: scopeId } }) => { + return authMethods.where({ scopeId }); + } + ); this.post('/auth-methods'); this.get('/auth-methods/:id'); this.patch('/auth-methods/:id'); this.del('/auth-methods/:id'); // Auth Method Accounts - this.get('/accounts', ({ accounts }, { queryParams: { auth_method_id: authMethodId } }) => { - return accounts.where({ authMethodId }); - }); + this.get( + '/accounts', + ({ accounts }, { queryParams: { auth_method_id: authMethodId } }) => { + return accounts.where({ authMethodId }); + } + ); this.post('/accounts'); this.get('/accounts/:id'); this.patch('/accounts/:id'); this.del('/accounts/:id'); - this.post('/accounts/:idMethod', function ({ accounts }, { params: { idMethod } }) { - const attrs = this.normalizedRequestAttrs(); - const id = idMethod.split(':')[0]; - const method = idMethod.split(':')[1]; - const account = accounts.find(id); - const updatedAttrs = { - version: attrs.version, - attributes: account.attributes - }; - // Set new password - if (method === 'set-password') { - updatedAttrs.attributes.password = attrs.password; + this.post( + '/accounts/:idMethod', + function ({ accounts }, { params: { idMethod } }) { + const attrs = this.normalizedRequestAttrs(); + const id = idMethod.split(':')[0]; + const method = idMethod.split(':')[1]; + const account = accounts.find(id); + const updatedAttrs = { + version: attrs.version, + attributes: account.attributes, + }; + // Set new password + if (method === 'set-password') { + updatedAttrs.attributes.password = attrs.password; + } + // Set new password + if (method === 'change-password') { + updatedAttrs.attributes.password = attrs.new_password; + } + return account.update(updatedAttrs); } - // Set new password - if (method === 'change-password') { - updatedAttrs.attributes.password = attrs.new_password; - } - return account.update(updatedAttrs); - }); + ); // Authenticate/deauthenticate routes this.post('/auth-methods/:id_method', authHandler); @@ -104,11 +115,11 @@ export default function() { const user = users.find(id); const updatedAttrs = { version: attrs.version, - accountIds: user.accountIds + accountIds: user.accountIds, }; // If adding accounts, push them into the array if (method === 'add-accounts') { - attrs.accountIds.forEach(id => { + attrs.accountIds.forEach((id) => { if (!updatedAttrs.accountIds.includes(id)) { updatedAttrs.accountIds.push(id); } @@ -116,7 +127,7 @@ export default function() { } // If deleting accounts, filter them out of the array if (method === 'remove-accounts') { - updatedAttrs.accountIds = updatedAttrs.accountIds.filter(id => { + updatedAttrs.accountIds = updatedAttrs.accountIds.filter((id) => { return !attrs.accountIds.includes(id); }); } @@ -131,31 +142,34 @@ export default function() { this.get('/groups/:id'); this.patch('/groups/:id'); this.del('/groups/:id'); - this.post('/groups/:idMethod', function ({ groups }, { params: { idMethod } }) { - const attrs = this.normalizedRequestAttrs(); - const id = idMethod.split(':')[0]; - const method = idMethod.split(':')[1]; - const group = groups.find(id); - const updatedAttrs = { - version: attrs.version, - memberIds: group.memberIds - }; - // If adding members, push them into the array - if (method === 'add-members') { - attrs.memberIds.forEach(id => { - if (!updatedAttrs.memberIds.includes(id)) { - updatedAttrs.memberIds.push(id); - } - }); + this.post( + '/groups/:idMethod', + function ({ groups }, { params: { idMethod } }) { + const attrs = this.normalizedRequestAttrs(); + const id = idMethod.split(':')[0]; + const method = idMethod.split(':')[1]; + const group = groups.find(id); + const updatedAttrs = { + version: attrs.version, + memberIds: group.memberIds, + }; + // If adding members, push them into the array + if (method === 'add-members') { + attrs.memberIds.forEach((id) => { + if (!updatedAttrs.memberIds.includes(id)) { + updatedAttrs.memberIds.push(id); + } + }); + } + // If deleting members, filter them out of the array + if (method === 'remove-members') { + updatedAttrs.memberIds = updatedAttrs.memberIds.filter((id) => { + return !attrs.memberIds.includes(id); + }); + } + return group.update(updatedAttrs); } - // If deleting members, filter them out of the array - if (method === 'remove-members') { - updatedAttrs.memberIds = updatedAttrs.memberIds.filter(id => { - return !attrs.memberIds.includes(id); - }); - } - return group.update(updatedAttrs); - }); + ); // IAM: Roles this.get('/roles', ({ roles }, { queryParams: { scope_id: scopeId } }) => { @@ -165,66 +179,72 @@ export default function() { this.get('/roles/:id'); this.patch('/roles/:id'); this.del('/roles/:id'); - this.post('/roles/:idMethod', function ({ roles, users, groups }, { params: { idMethod } }) { - const attrs = this.normalizedRequestAttrs(); - const id = idMethod.split(':')[0]; - const method = idMethod.split(':')[1]; - const role = roles.find(id); - let updatedAttrs = {}; + this.post( + '/roles/:idMethod', + function ({ roles, users, groups }, { params: { idMethod } }) { + const attrs = this.normalizedRequestAttrs(); + const id = idMethod.split(':')[0]; + const method = idMethod.split(':')[1]; + const role = roles.find(id); + let updatedAttrs = {}; - // Principals is a combined list of users and groups, but in Mirage we've - // internally modelled them as separate lists. Therefore we must check - // the type by looking up the user or group first, then determine which - // list to add the principal to. - if (method === 'add-principals') { - updatedAttrs = { - version: attrs.version, - userIds: role.userIds, - groupIds: role.groupIds - }; - attrs.principalIds.forEach(id => { - const isUser = users.find(id); - const isGroup = groups.find(id); - if (isUser && !updatedAttrs.userIds.includes(id)) { - updatedAttrs.userIds.push(id); - } - if (isGroup && !updatedAttrs.groupIds.includes(id)) { - updatedAttrs.groupIds.push(id); - } - }); - } - // If deleting principals, filter them out of both users and groups, - // and in this case don't care about the type - if (method === 'remove-principals') { - updatedAttrs = { - version: attrs.version, - userIds: role.userIds, - groupIds: role.groupIds - }; - updatedAttrs.userIds = updatedAttrs.userIds.filter(id => { - return !attrs.principalIds.includes(id); - }); - updatedAttrs.groupIds = updatedAttrs.groupIds.filter(id => { - return !attrs.principalIds.includes(id); - }); - } + // Principals is a combined list of users and groups, but in Mirage we've + // internally modelled them as separate lists. Therefore we must check + // the type by looking up the user or group first, then determine which + // list to add the principal to. + if (method === 'add-principals') { + updatedAttrs = { + version: attrs.version, + userIds: role.userIds, + groupIds: role.groupIds, + }; + attrs.principalIds.forEach((id) => { + const isUser = users.find(id); + const isGroup = groups.find(id); + if (isUser && !updatedAttrs.userIds.includes(id)) { + updatedAttrs.userIds.push(id); + } + if (isGroup && !updatedAttrs.groupIds.includes(id)) { + updatedAttrs.groupIds.push(id); + } + }); + } + // If deleting principals, filter them out of both users and groups, + // and in this case don't care about the type + if (method === 'remove-principals') { + updatedAttrs = { + version: attrs.version, + userIds: role.userIds, + groupIds: role.groupIds, + }; + updatedAttrs.userIds = updatedAttrs.userIds.filter((id) => { + return !attrs.principalIds.includes(id); + }); + updatedAttrs.groupIds = updatedAttrs.groupIds.filter((id) => { + return !attrs.principalIds.includes(id); + }); + } - if (method === 'set-grants') { - updatedAttrs = { - version: attrs.version, - grantStrings: attrs.grantStrings - }; - } + if (method === 'set-grants') { + updatedAttrs = { + version: attrs.version, + grantStrings: attrs.grantStrings, + }; + } - return role.update(updatedAttrs); - }); + return role.update(updatedAttrs); + } + ); // Other resources // host-catalog - this.get('/host-catalogs', ({ hostCatalogs }, { queryParams: { scope_id: scopeId } }) => { - return hostCatalogs.where({ scopeId }); - }); + this.get( + '/host-catalogs', + ({ hostCatalogs }, { queryParams: { scope_id: scopeId } }) => { + return hostCatalogs.where({ scopeId }); + } + ); this.post('/host-catalogs'); this.get('/host-catalogs/:id'); this.patch('/host-catalogs/:id'); @@ -232,9 +252,12 @@ export default function() { // host - this.get('/hosts', function ({ hosts }, { queryParams: { host_catalog_id: hostCatalogId } }) { - return hosts.where({ hostCatalogId }); - }); + this.get( + '/hosts', + function ({ hosts }, { queryParams: { host_catalog_id: hostCatalogId } }) { + return hosts.where({ hostCatalogId }); + } + ); this.post('/hosts', function ({ hostCatalogs, hosts }) { const attrs = this.normalizedRequestAttrs(); const hostCatalog = hostCatalogs.find(attrs.hostCatalogId); @@ -247,9 +270,15 @@ export default function() { // host-set - this.get('/host-sets', function ({ hostSets }, { queryParams: { host_catalog_id: hostCatalogId } }) { - return hostSets.where({ hostCatalogId }); - }); + this.get( + '/host-sets', + function ( + { hostSets }, + { queryParams: { host_catalog_id: hostCatalogId } } + ) { + return hostSets.where({ hostCatalogId }); + } + ); this.post('/host-sets', function ({ hostCatalogs, hostSets }) { const attrs = this.normalizedRequestAttrs(); const hostCatalog = hostCatalogs.find(attrs.hostCatalogId); @@ -259,49 +288,57 @@ export default function() { this.get('/host-sets/:id'); this.patch('/host-sets/:id'); this.del('/host-sets/:id'); - this.post('/host-sets/:idMethod', function ({ hostSets }, { params: { idMethod } }) { - const attrs = this.normalizedRequestAttrs(); - const id = idMethod.split(':')[0]; - const method = idMethod.split(':')[1]; - const hostSet = hostSets.find(id); - const updatedAttrs = { - version: attrs.version, - hostIds: hostSet.hostIds - } + this.post( + '/host-sets/:idMethod', + function ({ hostSets }, { params: { idMethod } }) { + const attrs = this.normalizedRequestAttrs(); + const id = idMethod.split(':')[0]; + const method = idMethod.split(':')[1]; + const hostSet = hostSets.find(id); + const updatedAttrs = { + version: attrs.version, + hostIds: hostSet.hostIds, + }; - // If adding hosts, push them into the array - if(method === 'add-hosts') { - attrs.hostIds.forEach(id => { - if(!updatedAttrs.hostIds.includes(id)) { - updatedAttrs.hostIds.push(id); - } - }) - } + // If adding hosts, push them into the array + if (method === 'add-hosts') { + attrs.hostIds.forEach((id) => { + if (!updatedAttrs.hostIds.includes(id)) { + updatedAttrs.hostIds.push(id); + } + }); + } - // If deleting hosts, filter them out of the array - if (method === 'remove-hosts') { - updatedAttrs.hostIds = updatedAttrs.hostIds.filter(id => { - return !attrs.hostIds.includes(id); - }); - } + // If deleting hosts, filter them out of the array + if (method === 'remove-hosts') { + updatedAttrs.hostIds = updatedAttrs.hostIds.filter((id) => { + return !attrs.hostIds.includes(id); + }); + } - return hostSet.update(updatedAttrs); - }); + return hostSet.update(updatedAttrs); + } + ); // target - this.get('/targets', function ({ targets }, { queryParams: { scope_id, recursive } }) { - if (recursive && scope_id === 'global') { - return targets.all(); - } else if (recursive) { - return targets.where(target => { - const targetModel = targets.find(target.id); - return (target.scopeId === scope_id) - || (targetModel?.scope?.scope?.id === scope_id) - }); + this.get( + '/targets', + function ({ targets }, { queryParams: { scope_id, recursive } }) { + if (recursive && scope_id === 'global') { + return targets.all(); + } else if (recursive) { + return targets.where((target) => { + const targetModel = targets.find(target.id); + return ( + target.scopeId === scope_id || + targetModel?.scope?.scope?.id === scope_id + ); + }); + } + return targets.where((target) => target.scopeId === scope_id); } - return targets.where(target => target.scopeId === scope_id); - }); + ); this.post('/targets', function ({ targets }) { const attrs = this.normalizedRequestAttrs(); return targets.create(attrs); @@ -309,83 +346,93 @@ export default function() { this.get('/targets/:id'); this.patch('/targets/:id'); this.del('/targets/:id'); - this.post('/targets/:idMethod', function ({ targets }, { params: { idMethod } }) { - const attrs = this.normalizedRequestAttrs(); - const id = idMethod.split(':')[0]; - const method = idMethod.split(':')[1]; - const target = targets.find(id); - const updatedAttrs = { - version: attrs.version, - hostSetIds: target.hostSetIds - }; - // If adding host sets, push them into the array - if (method === 'add-host-sets') { - attrs.hostSetIds.forEach(id => { - if (!updatedAttrs.hostSetIds.includes(id)) { - updatedAttrs.hostSetIds.push(id); - } - }); + this.post( + '/targets/:idMethod', + function ({ targets }, { params: { idMethod } }) { + const attrs = this.normalizedRequestAttrs(); + const id = idMethod.split(':')[0]; + const method = idMethod.split(':')[1]; + const target = targets.find(id); + const updatedAttrs = { + version: attrs.version, + hostSetIds: target.hostSetIds, + }; + // If adding host sets, push them into the array + if (method === 'add-host-sets') { + attrs.hostSetIds.forEach((id) => { + if (!updatedAttrs.hostSetIds.includes(id)) { + updatedAttrs.hostSetIds.push(id); + } + }); + } + // If deleting host sets, filter them out of the array + if (method === 'remove-host-sets') { + updatedAttrs.hostSetIds = updatedAttrs.hostSetIds.filter((id) => { + return !attrs.hostSetIds.includes(id); + }); + } + return target.update(updatedAttrs); } - // If deleting host sets, filter them out of the array - if (method === 'remove-host-sets') { - updatedAttrs.hostSetIds = updatedAttrs.hostSetIds.filter(id => { - return !attrs.hostSetIds.includes(id); - }); - } - return target.update(updatedAttrs); - }); + ); // session - this.get('/sessions', function ({ sessions }, { queryParams: { scope_id, recursive } }) { - // To simulate changes to `session.status` that may occur in the backend, - // we quietly randomize the value of the field on GET. - // To populate sessions for logged in user, - // update alternate sessions to auth user. - // But only if not in testing mode. - // In tests, we need deterministic statuses. - if (!Ember.testing) { - sessions.all() - .models - .forEach(session => { + this.get( + '/sessions', + function ({ sessions }, { queryParams: { scope_id, recursive } }) { + // To simulate changes to `session.status` that may occur in the backend, + // we quietly randomize the value of the field on GET. + // To populate sessions for logged in user, + // update alternate sessions to auth user. + // But only if not in testing mode. + // In tests, we need deterministic statuses. + if (!Ember.testing) { + sessions.all().models.forEach((session) => { session.update({ - status: pickRandomStatusString() - }); - if(session.id.split('-').pop() % 2) session.update({ - userId: 'authenticateduser' + status: pickRandomStatusString(), }); + if (session.id.split('-').pop() % 2) + session.update({ + userId: 'authenticateduser', + }); }); + } + if (recursive && scope_id === 'global') { + return sessions.all(); + } else if (recursive) { + return sessions.where((session) => { + const sessionModel = sessions.find(session.id); + return ( + session.scopeId === scope_id || + sessionModel?.scope?.scope?.id === scope_id + ); + }); + } + return sessions.where((session) => session.scopeId === scope_id); } - if (recursive && scope_id === 'global') { - return sessions.all(); - } else if (recursive) { - return sessions.where(session => { - const sessionModel = sessions.find(session.id); - return (session.scopeId === scope_id) - || (sessionModel?.scope?.scope?.id === scope_id) - }); - } - return sessions.where(session => session.scopeId === scope_id); - }); + ); this.get('/sessions/:id', function ({ sessions }, { params: { id } }) { const session = sessions.find(id); return session.update({ - status: pickRandomStatusString() + status: pickRandomStatusString(), }); }); - this.post('/sessions/:idMethod', function ({ sessions }, { params: { idMethod } }) { - const attrs = this.normalizedRequestAttrs(); - const id = idMethod.split(':')[0]; - const method = idMethod.split(':')[1]; - const session = sessions.find(id); - const updatedAttrs = { - version: attrs.version - }; - if (method === 'cancel') { - updatedAttrs.status = 'canceling'; + this.post( + '/sessions/:idMethod', + function ({ sessions }, { params: { idMethod } }) { + const attrs = this.normalizedRequestAttrs(); + const id = idMethod.split(':')[0]; + const method = idMethod.split(':')[1]; + const session = sessions.find(id); + const updatedAttrs = { + version: attrs.version, + }; + if (method === 'cancel') { + updatedAttrs.status = 'canceling'; + } + return session.update(updatedAttrs); } - return session.update(updatedAttrs); - }); + ); // auth-tokens diff --git a/addons/api/mirage/factories/auth-method.js b/addons/api/mirage/factories/auth-method.js index 61d29726b..b14366c19 100644 --- a/addons/api/mirage/factories/auth-method.js +++ b/addons/api/mirage/factories/auth-method.js @@ -10,11 +10,10 @@ export default factory.extend({ withAccountsAndUsers: trait({ afterCreate(authMethod, server) { const { scope } = authMethod; - server.createList('user', 5, { scope }).map(user => { + server.createList('user', 5, { scope }).map((user) => { const { id } = server.create('account', { scope, authMethod }); user.update({ accountIds: [id] }); }); - } - }) - + }, + }), }); diff --git a/addons/api/mirage/factories/group.js b/addons/api/mirage/factories/group.js index 9531de4f8..79b28cc2e 100644 --- a/addons/api/mirage/factories/group.js +++ b/addons/api/mirage/factories/group.js @@ -13,6 +13,6 @@ export default factory.extend({ const scope = group.scope; const members = server.createList('user', 2, { scope }); group.update({ members }); - } - }) + }, + }), }); diff --git a/addons/api/mirage/factories/host-catalog.js b/addons/api/mirage/factories/host-catalog.js index 1eaed0433..ffb849668 100644 --- a/addons/api/mirage/factories/host-catalog.js +++ b/addons/api/mirage/factories/host-catalog.js @@ -2,13 +2,11 @@ import factory from '../generated/factories/host-catalog'; import { trait } from 'ember-cli-mirage'; export default factory.extend({ - withChildren: trait({ afterCreate(hostCatalog, server) { const { scope } = hostCatalog; const hosts = server.createList('host', 10, { scope, hostCatalog }); server.createList('host-set', 3, { scope, hostCatalog, hosts }); - } - }) - + }, + }), }); diff --git a/addons/api/mirage/factories/host-set.js b/addons/api/mirage/factories/host-set.js index ad9ae1fa1..a3c053fda 100644 --- a/addons/api/mirage/factories/host-set.js +++ b/addons/api/mirage/factories/host-set.js @@ -1,5 +1,5 @@ import factory from '../generated/factories/host-set'; export default factory.extend({ - id: (i) => `host-set-id-${i}` + id: (i) => `host-set-id-${i}`, }); diff --git a/addons/api/mirage/factories/host.js b/addons/api/mirage/factories/host.js index f322cb4d4..c797e8a64 100644 --- a/addons/api/mirage/factories/host.js +++ b/addons/api/mirage/factories/host.js @@ -1,5 +1,5 @@ import factory from '../generated/factories/host'; export default factory.extend({ - id: (i) => `host-id-${i}` + id: (i) => `host-id-${i}`, }); diff --git a/addons/api/mirage/factories/role.js b/addons/api/mirage/factories/role.js index aa4356af7..103a3725b 100644 --- a/addons/api/mirage/factories/role.js +++ b/addons/api/mirage/factories/role.js @@ -2,11 +2,10 @@ import factory from '../generated/factories/role'; import { trait } from 'ember-cli-mirage'; export default factory.extend({ - // eslint-disable-next-line ember/avoid-leaking-state-in-ember-objects grant_strings: () => [ 'id=*;action=*', - 'id=*;type=host-catalog;actions=create,read' + 'id=*;type=host-catalog;actions=create,read', ], /** @@ -18,15 +17,16 @@ export default factory.extend({ const users = server.createList('user', 2, { scope }); const groups = server.createList('group', 2, { scope }); role.update({ users, groups }); - } + }, }), /** * Set the grant scope ID to match the scope ID. */ afterCreate(role) { - const { scope: { id } } = role; + const { + scope: { id }, + } = role; role.update({ grant_scope_id: id }); - } - + }, }); diff --git a/addons/api/mirage/factories/scope.js b/addons/api/mirage/factories/scope.js index a14dbc719..fe41f3866 100644 --- a/addons/api/mirage/factories/scope.js +++ b/addons/api/mirage/factories/scope.js @@ -2,7 +2,6 @@ import factory from '../generated/factories/scope'; import { trait } from 'ember-cli-mirage'; export default factory.extend({ - type: 'global', /** @@ -18,18 +17,22 @@ export default factory.extend({ withChildren: trait({ afterCreate(record, server) { if (record.type === 'global') { - server.createList('scope', 1, { - type: 'org', - scope: { id: record.id, type: record.type } - }, 'withChildren'); + server.createList( + 'scope', + 1, + { + type: 'org', + scope: { id: record.id, type: record.type }, + }, + 'withChildren' + ); } if (record.type === 'org') { server.createList('scope', 3, { type: 'project', - scope: { id: record.id, type: record.type } + scope: { id: record.id, type: record.type }, }); } - } - }) - + }, + }), }); diff --git a/addons/api/mirage/factories/session.js b/addons/api/mirage/factories/session.js index f30301c5c..a581fa9e4 100644 --- a/addons/api/mirage/factories/session.js +++ b/addons/api/mirage/factories/session.js @@ -2,17 +2,11 @@ import factory from '../generated/factories/session'; import { trait } from 'ember-cli-mirage'; import { random } from 'faker'; -const statusStrings = [ - 'pending', - 'active', - 'canceling', - 'terminated' -]; +const statusStrings = ['pending', 'active', 'canceling', 'terminated']; export const pickRandomStatusString = () => random.arrayElement(statusStrings); export default factory.extend({ - id: (i) => `session-id-${i}`, status: pickRandomStatusString, @@ -26,7 +20,8 @@ export default factory.extend({ const scopeId = record.scopeId; if (record.scope.type === 'project') { const orgScopeId = record.scope?.scope.id; - const user = server.schema.users.where({ scopeId: orgScopeId }).models[0]; + const user = server.schema.users.where({ scopeId: orgScopeId }) + .models[0]; if (user) record.update({ user }); } const target = server.schema.targets.where({ scopeId }).models[0]; @@ -39,7 +34,6 @@ export default factory.extend({ if (host) record.update({ host }); } } - } - }) - + }, + }), }); diff --git a/addons/api/mirage/factories/target.js b/addons/api/mirage/factories/target.js index 4f34cc459..2c00b6639 100644 --- a/addons/api/mirage/factories/target.js +++ b/addons/api/mirage/factories/target.js @@ -6,7 +6,6 @@ const randomBoolean = (chance = 0.5) => Math.random() < chance; const hostSetChance = 0.3; export default factory.extend({ - /** * -1 means "unlimited" and we want to generate these on occassion. */ @@ -19,8 +18,8 @@ export default factory.extend({ if (target.type === 'tcp') { target.update({ attributes: { - default_port: random.number() - } + default_port: random.number(), + }, }); } }, @@ -37,10 +36,9 @@ export default factory.extend({ // expect at this level of abstraction, but appears to be a serialized // representation of the model instance. It's very confusing since // the result set of `where` _is a collection of model instances_. - .where(hostSet => hostSet.scopeId === target.scope.id).models - .filter(() => randomBoolean(hostSetChance)); - target.update({hostSets: randomlySelectedHostSets}); - } - }) - + .where((hostSet) => hostSet.scopeId === target.scope.id) + .models.filter(() => randomBoolean(hostSetChance)); + target.update({ hostSets: randomlySelectedHostSets }); + }, + }), }); diff --git a/addons/api/mirage/factories/user.js b/addons/api/mirage/factories/user.js index 42bccd33d..39c5abf96 100644 --- a/addons/api/mirage/factories/user.js +++ b/addons/api/mirage/factories/user.js @@ -1,5 +1,5 @@ import factory from '../generated/factories/user'; export default factory.extend({ - id: (i) => `user-${i}` + id: (i) => `user-${i}`, }); diff --git a/addons/api/mirage/generated/factories/account.js b/addons/api/mirage/generated/factories/account.js index a66184e1f..c659af6a2 100644 --- a/addons/api/mirage/generated/factories/account.js +++ b/addons/api/mirage/generated/factories/account.js @@ -5,7 +5,6 @@ import { random, date } from 'faker'; * GeneratedAccountFactory */ export default Factory.extend({ - type: 'password', name: () => random.words(), description: () => random.words(), @@ -13,5 +12,4 @@ export default Factory.extend({ updated_time: () => date.recent(), version: () => random.number(), attributes: () => ({ login_name: random.words() }), - }); diff --git a/addons/api/mirage/generated/factories/auth-method.js b/addons/api/mirage/generated/factories/auth-method.js index d76245946..26af0cc7f 100644 --- a/addons/api/mirage/generated/factories/auth-method.js +++ b/addons/api/mirage/generated/factories/auth-method.js @@ -5,12 +5,10 @@ import { random, date } from 'faker'; * GeneratedAuthMethodModelFactory */ export default Factory.extend({ - type: 'password', name: () => random.words(), description: () => random.words(), created_time: () => date.recent(), updated_time: () => date.recent(), disabled: () => random.boolean(), - }); diff --git a/addons/api/mirage/generated/factories/group.js b/addons/api/mirage/generated/factories/group.js index 7c78ee7ec..1f0a07f7b 100644 --- a/addons/api/mirage/generated/factories/group.js +++ b/addons/api/mirage/generated/factories/group.js @@ -6,11 +6,9 @@ import { random, date } from 'faker'; * Group contains all fields related to a Group resource */ export default Factory.extend({ - name: () => random.words(), description: () => random.words(), created_time: () => date.recent(), updated_time: () => date.recent(), disabled: () => random.boolean(), - }); diff --git a/addons/api/mirage/generated/factories/host-catalog.js b/addons/api/mirage/generated/factories/host-catalog.js index daf2d356f..83cfe556e 100644 --- a/addons/api/mirage/generated/factories/host-catalog.js +++ b/addons/api/mirage/generated/factories/host-catalog.js @@ -5,12 +5,10 @@ import { random, date } from 'faker'; * GeneratedHostCatalogModelFactory */ export default Factory.extend({ - type: 'static', name: () => random.words(), description: () => random.words(), created_time: () => date.recent(), updated_time: () => date.recent(), disabled: () => random.boolean(), - }); diff --git a/addons/api/mirage/generated/factories/host-set.js b/addons/api/mirage/generated/factories/host-set.js index 95636bda0..9f69c7318 100644 --- a/addons/api/mirage/generated/factories/host-set.js +++ b/addons/api/mirage/generated/factories/host-set.js @@ -5,7 +5,6 @@ import { random, date } from 'faker'; * GeneratedHostSetModelFactory */ export default Factory.extend({ - type: 'static', name: () => random.words(), description: () => random.words(), @@ -13,5 +12,4 @@ export default Factory.extend({ updated_time: () => date.recent(), version: () => random.number(), size: () => random.number(), - }); diff --git a/addons/api/mirage/generated/factories/host.js b/addons/api/mirage/generated/factories/host.js index e6fccf602..adfb886be 100644 --- a/addons/api/mirage/generated/factories/host.js +++ b/addons/api/mirage/generated/factories/host.js @@ -5,13 +5,13 @@ import { random, date, internet } from 'faker'; * GeneratedHostModelFactory */ export default Factory.extend({ - type: 'static', name: () => random.words(), description: () => random.words(), created_time: () => date.recent(), updated_time: () => date.recent(), version: () => random.number(), - attributes: () => { return { address: internet.ipv6() } }, - + attributes: () => { + return { address: internet.ipv6() }; + }, }); diff --git a/addons/api/mirage/generated/factories/org.js b/addons/api/mirage/generated/factories/org.js index 81ee23629..cc1d6200b 100644 --- a/addons/api/mirage/generated/factories/org.js +++ b/addons/api/mirage/generated/factories/org.js @@ -6,10 +6,8 @@ import { random, date } from 'faker'; * */ export default Factory.extend({ - name: () => random.words(), description: () => random.words(), created_time: () => date.recent(), updated_time: () => date.recent(), - }); diff --git a/addons/api/mirage/generated/factories/project.js b/addons/api/mirage/generated/factories/project.js index 69054217d..3f2cca936 100644 --- a/addons/api/mirage/generated/factories/project.js +++ b/addons/api/mirage/generated/factories/project.js @@ -6,11 +6,9 @@ import { random, date } from 'faker'; * Project contains all fields related to a Project resource */ export default Factory.extend({ - name: () => random.words(), description: () => random.words(), created_time: () => date.recent(), updated_time: () => date.recent(), disabled: () => random.boolean(), - }); diff --git a/addons/api/mirage/generated/factories/role.js b/addons/api/mirage/generated/factories/role.js index 13e83aad3..fec661f1a 100644 --- a/addons/api/mirage/generated/factories/role.js +++ b/addons/api/mirage/generated/factories/role.js @@ -6,12 +6,10 @@ import { random, date } from 'faker'; * Role contains all field related to a Role resource */ export default Factory.extend({ - name: () => random.words(), description: () => random.words(), created_time: () => date.recent(), updated_time: () => date.recent(), disabled: () => random.boolean(), version: () => random.number(), - }); diff --git a/addons/api/mirage/generated/factories/scope.js b/addons/api/mirage/generated/factories/scope.js index cc574d3cd..b5c5ca10f 100644 --- a/addons/api/mirage/generated/factories/scope.js +++ b/addons/api/mirage/generated/factories/scope.js @@ -5,11 +5,9 @@ import { random, date } from 'faker'; * GeneratedScopeModelFactory */ export default Factory.extend({ - name: () => random.words(), description: () => random.words(), created_time: () => date.recent(), updated_time: () => date.recent(), disabled: () => random.boolean(), - }); diff --git a/addons/api/mirage/generated/factories/session.js b/addons/api/mirage/generated/factories/session.js index 25aca3759..638580868 100644 --- a/addons/api/mirage/generated/factories/session.js +++ b/addons/api/mirage/generated/factories/session.js @@ -5,10 +5,8 @@ import { random, date } from 'faker'; * GeneratedSessionModelFactory */ export default Factory.extend({ - type: 'tcp', created_time: () => date.recent(), updated_time: () => date.recent(), version: () => random.number(), - }); diff --git a/addons/api/mirage/generated/factories/target.js b/addons/api/mirage/generated/factories/target.js index 5ce21adeb..82eb8769c 100644 --- a/addons/api/mirage/generated/factories/target.js +++ b/addons/api/mirage/generated/factories/target.js @@ -5,7 +5,6 @@ import { random, date } from 'faker'; * GeneratedTargetModelFactory */ export default Factory.extend({ - type: 'tcp', name: () => random.words(), session_max_seconds: () => random.number(), @@ -15,5 +14,4 @@ export default Factory.extend({ updated_time: () => date.recent(), disabled: () => random.boolean(), version: () => random.number(), - }); diff --git a/addons/api/mirage/generated/factories/user.js b/addons/api/mirage/generated/factories/user.js index 3934bc7e9..bdf283e45 100644 --- a/addons/api/mirage/generated/factories/user.js +++ b/addons/api/mirage/generated/factories/user.js @@ -6,11 +6,9 @@ import { random, date } from 'faker'; * User contains all fields related to a User resource */ export default Factory.extend({ - name: () => random.words(), description: () => random.words(), created_time: () => date.recent(), updated_time: () => date.recent(), disabled: () => random.boolean(), - }); diff --git a/addons/api/mirage/models/account.js b/addons/api/mirage/models/account.js index e6d3e303c..8f39ad219 100644 --- a/addons/api/mirage/models/account.js +++ b/addons/api/mirage/models/account.js @@ -1,8 +1,6 @@ import { Model, belongsTo } from 'ember-cli-mirage'; export default Model.extend({ - scope: belongsTo(), - authMethod: belongsTo() - + authMethod: belongsTo(), }); diff --git a/addons/api/mirage/models/auth-method.js b/addons/api/mirage/models/auth-method.js index 08b1f5ad3..7faa2b5a2 100644 --- a/addons/api/mirage/models/auth-method.js +++ b/addons/api/mirage/models/auth-method.js @@ -1,7 +1,5 @@ import { Model, belongsTo } from 'ember-cli-mirage'; export default Model.extend({ - - scope: belongsTo() - + scope: belongsTo(), }); diff --git a/addons/api/mirage/models/group.js b/addons/api/mirage/models/group.js index 3d73f3d73..67446a6d6 100644 --- a/addons/api/mirage/models/group.js +++ b/addons/api/mirage/models/group.js @@ -1,8 +1,6 @@ import { Model, belongsTo, hasMany } from 'ember-cli-mirage'; export default Model.extend({ - scope: belongsTo(), - members: hasMany('user') - + members: hasMany('user'), }); diff --git a/addons/api/mirage/models/host-catalog.js b/addons/api/mirage/models/host-catalog.js index 8c2757e71..0f03cb6ef 100644 --- a/addons/api/mirage/models/host-catalog.js +++ b/addons/api/mirage/models/host-catalog.js @@ -1,8 +1,6 @@ import { Model, belongsTo, hasMany } from 'ember-cli-mirage'; export default Model.extend({ - scope: belongsTo(), - hostSets: hasMany() - + hostSets: hasMany(), }); diff --git a/addons/api/mirage/models/host-set.js b/addons/api/mirage/models/host-set.js index 5a579e119..645c144ff 100644 --- a/addons/api/mirage/models/host-set.js +++ b/addons/api/mirage/models/host-set.js @@ -1,10 +1,8 @@ import { Model, belongsTo, hasMany } from 'ember-cli-mirage'; export default Model.extend({ - scope: belongsTo(), target: belongsTo(), hostCatalog: belongsTo(), - hosts: hasMany() - + hosts: hasMany(), }); diff --git a/addons/api/mirage/models/host.js b/addons/api/mirage/models/host.js index b9a941a4f..88d9026e8 100644 --- a/addons/api/mirage/models/host.js +++ b/addons/api/mirage/models/host.js @@ -1,8 +1,6 @@ import { Model, belongsTo } from 'ember-cli-mirage'; export default Model.extend({ - scope: belongsTo(), - hostCatalog: belongsTo() - + hostCatalog: belongsTo(), }); diff --git a/addons/api/mirage/models/role.js b/addons/api/mirage/models/role.js index 744d1025a..c256df5fc 100644 --- a/addons/api/mirage/models/role.js +++ b/addons/api/mirage/models/role.js @@ -1,9 +1,7 @@ import { Model, belongsTo, hasMany } from 'ember-cli-mirage'; export default Model.extend({ - scope: belongsTo(), users: hasMany(), - groups: hasMany() - + groups: hasMany(), }); diff --git a/addons/api/mirage/models/session.js b/addons/api/mirage/models/session.js index 91a4da594..eb036d6b8 100644 --- a/addons/api/mirage/models/session.js +++ b/addons/api/mirage/models/session.js @@ -1,11 +1,9 @@ import { Model, belongsTo } from 'ember-cli-mirage'; export default Model.extend({ - scope: belongsTo(), user: belongsTo(), target: belongsTo(), host: belongsTo(), hostSet: belongsTo(), - }); diff --git a/addons/api/mirage/models/target.js b/addons/api/mirage/models/target.js index 8c2757e71..0f03cb6ef 100644 --- a/addons/api/mirage/models/target.js +++ b/addons/api/mirage/models/target.js @@ -1,8 +1,6 @@ import { Model, belongsTo, hasMany } from 'ember-cli-mirage'; export default Model.extend({ - scope: belongsTo(), - hostSets: hasMany() - + hostSets: hasMany(), }); diff --git a/addons/api/mirage/models/user.js b/addons/api/mirage/models/user.js index 45cf14952..d3eb79bed 100644 --- a/addons/api/mirage/models/user.js +++ b/addons/api/mirage/models/user.js @@ -1,8 +1,6 @@ import { Model, belongsTo, hasMany } from 'ember-cli-mirage'; export default Model.extend({ - scope: belongsTo(), - accounts: hasMany('account') - + accounts: hasMany('account'), }); diff --git a/addons/api/mirage/route-handlers/auth.js b/addons/api/mirage/route-handlers/auth.js index 5bac04839..1876cd128 100644 --- a/addons/api/mirage/route-handlers/auth.js +++ b/addons/api/mirage/route-handlers/auth.js @@ -31,20 +31,23 @@ export function authHandler({ scopes, authMethods }, request) { const id = request.params.id_method.split(':')[0]; const authMethod = authMethods.find(id); const scope = scopes.find(authMethod.scopeId); - const scopeAttrs = - this.serialize(scopes.find(scope.id)); - return new Response(200, {}, { - scope: scopeAttrs, - id: 'token123', - token: 'thetokenstring', - account_id: '1', - user_id: 'authenticateduser', - auth_method_id: 'authmethod123', - created_time: '', - updated_time: '', - last_used_time: '', - expiration_time: '' - }); + const scopeAttrs = this.serialize(scopes.find(scope.id)); + return new Response( + 200, + {}, + { + scope: scopeAttrs, + id: 'token123', + token: 'thetokenstring', + account_id: '1', + user_id: 'authenticateduser', + auth_method_id: 'authmethod123', + created_time: '', + updated_time: '', + last_used_time: '', + expiration_time: '', + } + ); } } diff --git a/addons/api/mirage/scenarios/default.js b/addons/api/mirage/scenarios/default.js index c1db90168..fe5297ea2 100644 --- a/addons/api/mirage/scenarios/default.js +++ b/addons/api/mirage/scenarios/default.js @@ -1,23 +1,37 @@ -export default function(server) { - +export default function (server) { // Scope resources // creates a global scope const globalScope = server.create('scope', { id: 'global', type: 'global', - name: 'Global' + name: 'Global', }); - const orgScope = server.createList('scope', 3, { - type: 'org', - scope: { id: globalScope.id, type: globalScope.type } - }, 'withChildren')[0]; + const orgScope = server.createList( + 'scope', + 3, + { + type: 'org', + scope: { id: globalScope.id, type: globalScope.type }, + }, + 'withChildren' + )[0]; server.create('user', { id: 'authenticateduser' }); // Auth - server.createList('auth-method', 1, { scope: globalScope }, 'withAccountsAndUsers'); - server.createList('auth-method', 3, { scope: orgScope }, 'withAccountsAndUsers'); + server.createList( + 'auth-method', + 1, + { scope: globalScope }, + 'withAccountsAndUsers' + ); + server.createList( + 'auth-method', + 3, + { scope: orgScope }, + 'withAccountsAndUsers' + ); // Groups and Users server.createList('group', 1, { scope: globalScope }, 'withMembers'); @@ -27,7 +41,7 @@ export default function(server) { server.createList('role', 5, { scope: orgScope }, 'withPrincipals'); // Other resources - server.schema.scopes.where({type: 'project'}).models.forEach(scope => { + server.schema.scopes.where({ type: 'project' }).models.forEach((scope) => { server.createList('host-catalog', 2, { scope }, 'withChildren'); server.createList('target', 2, { scope }, 'withRandomHostSets'); server.createList('session', 4, { scope }, 'withAssociations'); diff --git a/addons/api/mirage/scenarios/ipc.js b/addons/api/mirage/scenarios/ipc.js index f8b7e524a..bf6d1947c 100644 --- a/addons/api/mirage/scenarios/ipc.js +++ b/addons/api/mirage/scenarios/ipc.js @@ -2,7 +2,7 @@ import Ember from 'ember'; import config from 'ember-get-config'; import { random } from 'faker'; -export default function initializeMockIPC (server) { +export default function initializeMockIPC(server) { /** * We strive to make this application runnable in a regular web browser, since * it is a convenient environment for development and testing. But only an @@ -51,13 +51,13 @@ export default function initializeMockIPC (server) { target, userId: 'authenticateduser', type, - created_time: new Date().toISOString() + created_time: new Date().toISOString(), }); return { address: window.location.hostname, port: random.number(), protocol: type, - session_id: newSession.id + session_id: newSession.id, }; } } @@ -80,5 +80,4 @@ export default function initializeMockIPC (server) { } }); } - } diff --git a/addons/api/mirage/serializers/account.js b/addons/api/mirage/serializers/account.js index 85d38851b..3ceb16738 100644 --- a/addons/api/mirage/serializers/account.js +++ b/addons/api/mirage/serializers/account.js @@ -4,9 +4,12 @@ export default ApplicationSerializer.extend({ modelName: 'account', _hashForModel(model) { - const json = ApplicationSerializer.prototype._hashForModel.apply(this, arguments); + const json = ApplicationSerializer.prototype._hashForModel.apply( + this, + arguments + ); json.auth_method_id = model.authMethodId; delete json.attributes?.password; return json; - } + }, }); diff --git a/addons/api/mirage/serializers/application.js b/addons/api/mirage/serializers/application.js index 7bfbc7cd7..453e11e21 100644 --- a/addons/api/mirage/serializers/application.js +++ b/addons/api/mirage/serializers/application.js @@ -6,7 +6,6 @@ import { isArray } from '@ember/array'; * Manages serialization/normalization of data into and out of the mock API. */ export default RestSerializer.extend({ - // =attributes /** @@ -45,7 +44,7 @@ export default RestSerializer.extend({ serialize() { let json = RestSerializer.prototype.serialize.apply(this, arguments); // If array, root it under a standard `items` key - if (isArray(json)) json = {items: json}; + if (isArray(json)) json = { items: json }; return json; }, @@ -59,7 +58,7 @@ export default RestSerializer.extend({ if (model.scope) { json.scope = { id: model.scope.id, - type: model.scope.type + type: model.scope.type, }; } return json; @@ -79,6 +78,5 @@ export default RestSerializer.extend({ } const value = RestSerializer.prototype.normalize.apply(this, [newJSON]); return value; - } - + }, }); diff --git a/addons/api/mirage/serializers/auth-method.js b/addons/api/mirage/serializers/auth-method.js index cabe9ee7b..4bc89ef3b 100644 --- a/addons/api/mirage/serializers/auth-method.js +++ b/addons/api/mirage/serializers/auth-method.js @@ -1,5 +1,5 @@ import ApplicationSerializer from './application'; export default ApplicationSerializer.extend({ - modelName: 'auth-method' + modelName: 'auth-method', }); diff --git a/addons/api/mirage/serializers/group.js b/addons/api/mirage/serializers/group.js index 1ea1605f7..3e879dfdb 100644 --- a/addons/api/mirage/serializers/group.js +++ b/addons/api/mirage/serializers/group.js @@ -11,9 +11,11 @@ export default ApplicationSerializer.extend({ }, _hashForModel(model) { - const json = ApplicationSerializer.prototype._hashForModel.apply(this, arguments); + const json = ApplicationSerializer.prototype._hashForModel.apply( + this, + arguments + ); if (model.memberIds.length) json.member_ids = model.memberIds; return json; - } - + }, }); diff --git a/addons/api/mirage/serializers/host-set.js b/addons/api/mirage/serializers/host-set.js index 7acf251b3..77cd5aa40 100644 --- a/addons/api/mirage/serializers/host-set.js +++ b/addons/api/mirage/serializers/host-set.js @@ -11,12 +11,14 @@ export default ApplicationSerializer.extend({ }, _hashForModel(model) { - const json = ApplicationSerializer.prototype._hashForModel.apply(this, arguments); + const json = ApplicationSerializer.prototype._hashForModel.apply( + this, + arguments + ); json.host_catalog_id = model.hostCatalogId; if (model.hostIds?.length) { json.host_ids = model.hostIds; } return json; - } - + }, }); diff --git a/addons/api/mirage/serializers/host.js b/addons/api/mirage/serializers/host.js index ccd3994ca..829b4476b 100644 --- a/addons/api/mirage/serializers/host.js +++ b/addons/api/mirage/serializers/host.js @@ -1,5 +1,5 @@ import ApplicationSerializer from './application'; export default ApplicationSerializer.extend({ - modelName: 'host' + modelName: 'host', }); diff --git a/addons/api/mirage/serializers/role.js b/addons/api/mirage/serializers/role.js index 73dec3023..db04fe328 100644 --- a/addons/api/mirage/serializers/role.js +++ b/addons/api/mirage/serializers/role.js @@ -4,23 +4,26 @@ export default ApplicationSerializer.extend({ modelName: 'role', _hashForModel(model) { - const json = ApplicationSerializer.prototype._hashForModel.apply(this, arguments); - const serializedUsers = model.users.models.map(user => ({ + const json = ApplicationSerializer.prototype._hashForModel.apply( + this, + arguments + ); + const serializedUsers = model.users.models.map((user) => ({ scope_id: model.scope.id, id: user.id, - type: 'user' + type: 'user', })); - const serializedGroups = model.groups.models.map(group => ({ + const serializedGroups = model.groups.models.map((group) => ({ scope_id: model.scope.id, id: group.id, - type: 'group' + type: 'group', })); - json.principals = [ ...serializedUsers, ...serializedGroups ]; + json.principals = [...serializedUsers, ...serializedGroups]; if (!json.principals.length) delete json.principals; // default grant scope if (!json.grant_scope_id) json.grant_scope_id = json.scope.id; return json; - } + }, }); diff --git a/addons/api/mirage/serializers/scope.js b/addons/api/mirage/serializers/scope.js index bfb33f398..b6989ad9e 100644 --- a/addons/api/mirage/serializers/scope.js +++ b/addons/api/mirage/serializers/scope.js @@ -1,5 +1,5 @@ import ApplicationSerializer from './application'; export default ApplicationSerializer.extend({ - modelName: 'scope' + modelName: 'scope', }); diff --git a/addons/api/mirage/serializers/session.js b/addons/api/mirage/serializers/session.js index 3e14a23e6..347e713c2 100644 --- a/addons/api/mirage/serializers/session.js +++ b/addons/api/mirage/serializers/session.js @@ -11,12 +11,14 @@ export default ApplicationSerializer.extend({ }, _hashForModel(model) { - const json = ApplicationSerializer.prototype._hashForModel.apply(this, arguments); + const json = ApplicationSerializer.prototype._hashForModel.apply( + this, + arguments + ); json.user_id = model.userId; json.target_id = model.targetId; json.host_set_id = model.hostSetId; json.host_id = model.hostId; return json; - } - + }, }); diff --git a/addons/api/mirage/serializers/target.js b/addons/api/mirage/serializers/target.js index 2d2a0d974..006388773 100644 --- a/addons/api/mirage/serializers/target.js +++ b/addons/api/mirage/serializers/target.js @@ -11,16 +11,18 @@ export default ApplicationSerializer.extend({ }, _hashForModel(model) { - const json = ApplicationSerializer.prototype._hashForModel.apply(this, arguments); + const json = ApplicationSerializer.prototype._hashForModel.apply( + this, + arguments + ); const { hostSets } = this.schema; if (model.hostSetIds?.length) { - json.host_sets = model.hostSetIds.map(host_set_id => { + json.host_sets = model.hostSetIds.map((host_set_id) => { const hostSet = hostSets.find(host_set_id); const host_catalog_id = hostSet?.hostCatalog?.id; return { id: host_set_id, host_catalog_id }; }); } return json; - } - + }, }); diff --git a/addons/api/mirage/serializers/user.js b/addons/api/mirage/serializers/user.js index 0ef9298f5..fe4c8084f 100644 --- a/addons/api/mirage/serializers/user.js +++ b/addons/api/mirage/serializers/user.js @@ -11,8 +11,11 @@ export default ApplicationSerializer.extend({ }, _hashForModel(model) { - const json = ApplicationSerializer.prototype._hashForModel.apply(this, arguments); + const json = ApplicationSerializer.prototype._hashForModel.apply( + this, + arguments + ); if (model.accountIds.length) json.account_ids = model.accountIds; return json; - } + }, }); diff --git a/addons/api/package.json b/addons/api/package.json index ed6925b35..00f8962a4 100644 --- a/addons/api/package.json +++ b/addons/api/package.json @@ -10,56 +10,65 @@ "scripts": { "build:development": "ember build", "build": "ember build --environment=production", - "lint": "npm-run-all --aggregate-output --continue-on-error --parallel lint:*", + "lint": "npm-run-all --aggregate-output --continue-on-error --parallel 'lint:!(fix)'", + "lint:fix": "npm-run-all --aggregate-output --continue-on-error --parallel lint:*:fix", + "lint:hbs": "ember-template-lint .", + "lint:hbs:fix": "ember-template-lint . --fix", "lint:js": "eslint .", + "lint:js:fix": "eslint . --fix", "format": "npm run format:js", - "format:js": "prettier --write '{addon,app,config,stories,tests}/**/*.js' *.js", + "format:js": "prettier --write '{addon,app,config,stories,tests,mirage}/**/*.js' *.js", "start": "ember serve", "test": "ember test", "test:ember-compatibility": "ember try:each", "doc:toc": "doctoc README.md" }, "dependencies": { - "ember-cli-babel": "^7.21.0", - "ember-cli-htmlbars": "^5.2.0", + "ember-cli-babel": "^7.23.0", + "ember-cli-htmlbars": "^5.3.1", + "ember-cli-mirage": "^1.1.8", "ember-data": "^3.20.0", "ember-data-model-fragments": "5.0.0-beta.0", - "ember-fetch": "^8.0.1", - "ember-cli-mirage": "^1.1.8" + "ember-fetch": "^8.0.1" }, "devDependencies": { - "@ember/optional-features": "^1.3.0", - "@glimmer/component": "^1.0.1", - "@glimmer/tracking": "^1.0.0", + "@ember/optional-features": "^2.0.0", + "@ember/test-helpers": "^2.1.4", + "@glimmer/component": "^1.0.3", + "@glimmer/tracking": "^1.0.3", "babel-eslint": "^10.1.0", "broccoli-asset-rev": "^3.0.0", "doctoc": "^1.4.0", - "ember-auto-import": "^1.6.0", - "ember-cli": "~3.20.2", + "ember-auto-import": "^1.10.1", + "ember-cli": "~3.24.0", "ember-cli-dependency-checker": "^3.2.0", "ember-cli-inject-live-reload": "^2.0.2", "ember-cli-sri": "^2.1.1", - "ember-cli-uglify": "^3.0.0", + "ember-cli-terser": "^4.0.1", "ember-cli-update": "^0.54.6", "ember-copy": "^1.0.0", "ember-disable-prototype-extensions": "^1.1.3", "ember-export-application-global": "^2.0.1", "ember-get-config": "^0.3.0", - "ember-load-initializers": "^2.1.1", + "ember-load-initializers": "^2.1.2", "ember-maybe-import-regenerator": "^0.1.6", - "ember-qunit": "^4.6.0", - "ember-resolver": "^8.0.0", - "ember-source": "~3.20.2", - "ember-source-channel-url": "^2.0.1", - "ember-template-lint": "^2.9.1", + "ember-page-title": "^6.0.3", + "ember-qunit": "^5.1.1", + "ember-resolver": "^8.0.2", + "ember-source": "~3.24.0", + "ember-source-channel-url": "^3.0.0", + "ember-template-lint": "^2.15.0", "ember-try": "^1.4.0", - "eslint": "^7.5.0", - "eslint-plugin-ember": "^8.9.1", + "eslint": "^7.17.0", + "eslint-config-prettier": "^7.1.0", + "eslint-plugin-ember": "^10.1.1", "eslint-plugin-node": "^11.1.0", + "eslint-plugin-prettier": "^3.3.1", "loader.js": "^4.7.0", "npm-run-all": "^4.1.5", - "prettier": "^2.0.5", - "qunit-dom": "^1.2.0" + "prettier": "^2.2.1", + "qunit": "^2.13.0", + "qunit-dom": "^1.6.0" }, "engines": { "node": "10.* || >= 12" diff --git a/addons/api/tests/dummy/app/templates/application.hbs b/addons/api/tests/dummy/app/templates/application.hbs index f8bc38e7b..001b0153a 100644 --- a/addons/api/tests/dummy/app/templates/application.hbs +++ b/addons/api/tests/dummy/app/templates/application.hbs @@ -1,3 +1,5 @@ +{{page-title "Dummy"}} +

Welcome to Ember

{{outlet}} diff --git a/addons/api/tests/dummy/config/ember-cli-update.json b/addons/api/tests/dummy/config/ember-cli-update.json index 3c0c55fdb..ed4d5fc2d 100644 --- a/addons/api/tests/dummy/config/ember-cli-update.json +++ b/addons/api/tests/dummy/config/ember-cli-update.json @@ -3,7 +3,7 @@ "packages": [ { "name": "ember-cli", - "version": "3.20.2", + "version": "3.24.0", "blueprints": [ { "name": "addon", diff --git a/addons/api/tests/index.html b/addons/api/tests/index.html index 5209b8523..3eb848dbd 100644 --- a/addons/api/tests/index.html +++ b/addons/api/tests/index.html @@ -21,6 +21,13 @@ {{content-for "body"}} {{content-for "test-body"}} +
+
+
+
+
+
+ diff --git a/addons/api/tests/test-helper.js b/addons/api/tests/test-helper.js index 4eae06f81..4efd6e58a 100644 --- a/addons/api/tests/test-helper.js +++ b/addons/api/tests/test-helper.js @@ -1,8 +1,12 @@ import Application from 'dummy/app'; import config from 'dummy/config/environment'; +import * as QUnit from 'qunit'; import { setApplication } from '@ember/test-helpers'; +import { setup } from 'qunit-dom'; import { start } from 'ember-qunit'; setApplication(Application.create(config.APP)); +setup(QUnit.assert); + start(); diff --git a/addons/api/tests/unit/mixins/adapter-build-url-test.js b/addons/api/tests/unit/mixins/adapter-build-url-test.js index 49d49029a..796b6bed6 100644 --- a/addons/api/tests/unit/mixins/adapter-build-url-test.js +++ b/addons/api/tests/unit/mixins/adapter-build-url-test.js @@ -9,7 +9,7 @@ module('Unit | Mixin | build-url', function (hooks) { test('it does not interfere with basic URLs', function (assert) { assert.expect(1); - /* eslint-disable-next-line ember/no-new-mixins */ + /* eslint-disable-next-line ember/no-new-mixins, ember/no-classic-classes */ const Adapter = RESTAdapter.extend(AdapterBuildURLMixin); this.owner.register('adapter:adapter', Adapter); const adapter = this.owner.lookup('adapter:adapter'); @@ -19,7 +19,7 @@ module('Unit | Mixin | build-url', function (hooks) { test('it does not interfere with namespaced URLs', function (assert) { assert.expect(1); - /* eslint-disable-next-line ember/no-new-mixins */ + /* eslint-disable-next-line ember/no-new-mixins, ember/no-classic-classes */ const Adapter = RESTAdapter.extend(AdapterBuildURLMixin, { namespace: 'api/v1', }); @@ -31,7 +31,7 @@ module('Unit | Mixin | build-url', function (hooks) { test('it can prepend a prefix', function (assert) { assert.expect(1); - /* eslint-disable-next-line ember/no-new-mixins */ + /* eslint-disable-next-line ember/no-new-mixins, ember/no-classic-classes */ const Adapter = RESTAdapter.extend(AdapterBuildURLMixin, { urlPrefix() { return '/foo/bars'; @@ -45,7 +45,7 @@ module('Unit | Mixin | build-url', function (hooks) { test('it can append a suffix', function (assert) { assert.expect(1); - /* eslint-disable-next-line ember/no-new-mixins */ + /* eslint-disable-next-line ember/no-new-mixins, ember/no-classic-classes */ const Adapter = RESTAdapter.extend(AdapterBuildURLMixin, { urlSuffix() { return ':method'; diff --git a/addons/api/tests/unit/models/account-test.js b/addons/api/tests/unit/models/account-test.js index f937b3c26..33021e295 100644 --- a/addons/api/tests/unit/models/account-test.js +++ b/addons/api/tests/unit/models/account-test.js @@ -21,5 +21,4 @@ module('Unit | Model | account', function (hooks) { model.attributes.login_name = 'username'; assert.equal(model.username, 'username'); }); - }); diff --git a/addons/api/tests/unit/models/auth-token-test.js b/addons/api/tests/unit/models/auth-token-test.js index 1f0826b86..bf9809ee0 100644 --- a/addons/api/tests/unit/models/auth-token-test.js +++ b/addons/api/tests/unit/models/auth-token-test.js @@ -1,11 +1,11 @@ import { module, test } from 'qunit'; import { setupTest } from 'ember-qunit'; -module('Unit | Model | auth token', function(hooks) { +module('Unit | Model | auth token', function (hooks) { setupTest(hooks); // Replace this with your real tests. - test('it exists', function(assert) { + test('it exists', function (assert) { let store = this.owner.lookup('service:store'); let model = store.createRecord('auth-token', {}); assert.ok(model); diff --git a/addons/api/tests/unit/models/host-set-test.js b/addons/api/tests/unit/models/host-set-test.js index c7228a81f..d3738fe5b 100644 --- a/addons/api/tests/unit/models/host-set-test.js +++ b/addons/api/tests/unit/models/host-set-test.js @@ -24,10 +24,7 @@ module('Unit | Model | host set', function (hooks) { attributes: { name: 'Host Set', description: 'Description', - host_ids: [ - {value: '1'}, - {value: '3'}, - ], + host_ids: [{ value: '1' }, { value: '3' }], version: 1, scope: { scope_id: 'o_1', @@ -58,10 +55,7 @@ module('Unit | Model | host set', function (hooks) { attributes: { name: 'Host Set', description: 'Description', - host_ids: [ - {value: '1'}, - {value: '3'}, - ], + host_ids: [{ value: '1' }, { value: '3' }], version: 1, scope: { scope_id: 'o_1', @@ -92,10 +86,7 @@ module('Unit | Model | host set', function (hooks) { attributes: { name: 'Host Set', description: 'Description', - host_ids: [ - {value: '1'}, - {value: '3'}, - ], + host_ids: [{ value: '1' }, { value: '3' }], version: 1, scope: { scope_id: 'o_1', @@ -126,10 +117,7 @@ module('Unit | Model | host set', function (hooks) { attributes: { name: 'Host Set', description: 'Description', - host_ids: [ - {value: '1'}, - {value: '3'}, - ], + host_ids: [{ value: '1' }, { value: '3' }], version: 1, scope: { scope_id: 'o_1', diff --git a/addons/api/tests/unit/models/session-test.js b/addons/api/tests/unit/models/session-test.js index 54c8b44cc..43cf7caf4 100644 --- a/addons/api/tests/unit/models/session-test.js +++ b/addons/api/tests/unit/models/session-test.js @@ -1,28 +1,28 @@ import { module, test } from 'qunit'; import { setupTest } from 'ember-qunit'; -module('Unit | Model | session', function(hooks) { +module('Unit | Model | session', function (hooks) { setupTest(hooks); - test('it exists', function(assert) { + test('it exists', function (assert) { let store = this.owner.lookup('service:store'); let model = store.createRecord('session', {}); assert.ok(model); assert.notOk(model.isCancelable); }); - test('it allows cancellation of an active session', function(assert) { + test('it allows cancellation of an active session', function (assert) { let store = this.owner.lookup('service:store'); let model = store.createRecord('session', { - status: 'active' + status: 'active', }); assert.ok(model.isCancelable); }); - test('it allows cancellation of a pending session', function(assert) { + test('it allows cancellation of a pending session', function (assert) { let store = this.owner.lookup('service:store'); let model = store.createRecord('session', { - status: 'pending' + status: 'pending', }); assert.ok(model.isCancelable); }); @@ -31,7 +31,7 @@ module('Unit | Model | session', function(hooks) { assert.expect(2); let store = this.owner.lookup('service:store'); let model = store.createRecord('session', { - status: 'pending' + status: 'pending', }); assert.notOk(model.isActive); model.status = 'active'; @@ -42,7 +42,7 @@ module('Unit | Model | session', function(hooks) { assert.expect(2); let store = this.owner.lookup('service:store'); let model = store.createRecord('session', { - status: 'active' + status: 'active', }); assert.notOk(model.isPending); model.status = 'pending'; @@ -55,7 +55,7 @@ module('Unit | Model | session', function(hooks) { assert.equal(model.proxy, null); model.setProperties({ proxy_address: 'localhost', - proxy_port: '12345' + proxy_port: '12345', }); assert.equal(model.proxy, 'localhost:12345'); }); diff --git a/addons/api/tests/unit/models/target-test.js b/addons/api/tests/unit/models/target-test.js index bacab9b42..18be834bd 100644 --- a/addons/api/tests/unit/models/target-test.js +++ b/addons/api/tests/unit/models/target-test.js @@ -186,33 +186,37 @@ module('Unit | Model | target', function (hooks) { store.push({ data: { id: '123abc', - type: 'target' - } + type: 'target', + }, }); const target = store.peekRecord('target', '123abc'); - assert.equal( target.sessions.length, 0); + assert.equal(target.sessions.length, 0); store.push({ data: { id: '1', type: 'session', - attributes: { target_id: '123abc' } - } + attributes: { target_id: '123abc' }, + }, }); store.push({ data: { id: '2', type: 'session', - attributes: { target_id: '123abc' } - } + attributes: { target_id: '123abc' }, + }, }); store.push({ data: { id: '3', type: 'session', - attributes: { target_id: '456xyz' } - } + attributes: { target_id: '456xyz' }, + }, }); - assert.equal(store.peekAll('session').length, 3, 'There are 3 sessions loaded in the store'); + assert.equal( + store.peekAll('session').length, + 3, + 'There are 3 sessions loaded in the store' + ); assert.equal( target.sessions.length, 2, diff --git a/addons/api/tests/unit/serializers/application-test.js b/addons/api/tests/unit/serializers/application-test.js index 014d80377..a7040e876 100644 --- a/addons/api/tests/unit/serializers/application-test.js +++ b/addons/api/tests/unit/serializers/application-test.js @@ -66,7 +66,7 @@ module('Unit | Serializer | application', function (hooks) { const serializedRecord = serializer.serialize(snapshot); assert.deepEqual(serializedRecord, { name: 'User', - description: 'Description' + description: 'Description', }); }); @@ -172,7 +172,7 @@ module('Unit | Serializer | application', function (hooks) { attributes: { name: 'User 1', account_ids: [], - scope: { scope_id: 'o_123' } + scope: { scope_id: 'o_123' }, }, relationships: {}, }, diff --git a/addons/api/tests/unit/serializers/host-test.js b/addons/api/tests/unit/serializers/host-test.js index c31a5ce4e..86c17fdd0 100644 --- a/addons/api/tests/unit/serializers/host-test.js +++ b/addons/api/tests/unit/serializers/host-test.js @@ -1,18 +1,18 @@ import { module, test } from 'qunit'; import { setupTest } from 'ember-qunit'; -module('Unit | Serializer | host', function(hooks) { +module('Unit | Serializer | host', function (hooks) { setupTest(hooks); // Replace this with your real tests. - test('it exists', function(assert) { + test('it exists', function (assert) { let store = this.owner.lookup('service:store'); let serializer = store.serializerFor('host'); assert.ok(serializer); }); - test('it serializes records', function(assert) { + test('it serializes records', function (assert) { let store = this.owner.lookup('service:store'); let record = store.createRecord('host', {}); diff --git a/addons/api/tests/unit/serializers/role-test.js b/addons/api/tests/unit/serializers/role-test.js index f0d14b17a..16336d035 100644 --- a/addons/api/tests/unit/serializers/role-test.js +++ b/addons/api/tests/unit/serializers/role-test.js @@ -21,7 +21,7 @@ module('Unit | Serializer | role', function (hooks) { name: 'User', description: 'Description', version: 1, - grant_scope_id: null + grant_scope_id: null, }); }); diff --git a/addons/api/tests/unit/serializers/session-test.js b/addons/api/tests/unit/serializers/session-test.js index fde7c215f..a5ae53586 100644 --- a/addons/api/tests/unit/serializers/session-test.js +++ b/addons/api/tests/unit/serializers/session-test.js @@ -1,11 +1,11 @@ import { module, test } from 'qunit'; import { setupTest } from 'ember-qunit'; -module('Unit | Serializer | session', function(hooks) { +module('Unit | Serializer | session', function (hooks) { setupTest(hooks); // Replace this with your real tests. - test('it exists', function(assert) { + test('it exists', function (assert) { let store = this.owner.lookup('service:store'); let serializer = store.serializerFor('session'); diff --git a/addons/api/tests/unit/serializers/target-test.js b/addons/api/tests/unit/serializers/target-test.js index d8e4a58fb..255faa9ac 100644 --- a/addons/api/tests/unit/serializers/target-test.js +++ b/addons/api/tests/unit/serializers/target-test.js @@ -20,7 +20,7 @@ module('Unit | Serializer | target', function (hooks) { type: 'org', }, version: 1, - type: 'tcp' + type: 'tcp', }); const snapshot = record._createSnapshot(); snapshot.adapterOptions = {}; diff --git a/addons/api/tests/unit/serializers/user-test.js b/addons/api/tests/unit/serializers/user-test.js index c0d2bd061..4ca1800d6 100644 --- a/addons/api/tests/unit/serializers/user-test.js +++ b/addons/api/tests/unit/serializers/user-test.js @@ -55,11 +55,7 @@ module('Unit | Serializer | user', function (hooks) { name: 'user 1', scope: { id: 'o_123' }, }; - const normalized = serializer.normalizeSingleResponse( - store, - user, - payload - ); + const normalized = serializer.normalizeSingleResponse(store, user, payload); assert.deepEqual(normalized, { included: [], data: { diff --git a/addons/core/.travis.yml b/addons/core/.travis.yml deleted file mode 100644 index 1211e146c..000000000 --- a/addons/core/.travis.yml +++ /dev/null @@ -1,66 +0,0 @@ ---- -language: node_js -node_js: - # we recommend testing addons with the same minimum supported node version as Ember CLI - # so that your addon works for all apps - - "10" - -dist: xenial - -addons: - chrome: stable - -cache: - yarn: true - -env: - global: - # See https://git.io/vdao3 for details. - - JOBS=1 - -branches: - only: - - master - # npm version tags - - /^v\d+\.\d+\.\d+/ - -jobs: - fast_finish: true - allow_failures: - - env: EMBER_TRY_SCENARIO=ember-canary - - include: - # runs linting and tests with current locked deps - - stage: "Tests" - name: "Tests" - script: - - yarn lint - - yarn test:ember - - - stage: "Additional Tests" - name: "Floating Dependencies" - install: - - yarn install --no-lockfile --non-interactive - script: - - yarn test:ember - - # we recommend new addons test the current and previous LTS - # as well as latest stable release (bonus points to beta/canary) - - env: EMBER_TRY_SCENARIO=ember-lts-3.12 - - env: EMBER_TRY_SCENARIO=ember-lts-3.16 - - env: EMBER_TRY_SCENARIO=ember-lts-3.20 - - env: EMBER_TRY_SCENARIO=ember-release - - env: EMBER_TRY_SCENARIO=ember-beta - - env: EMBER_TRY_SCENARIO=ember-canary - - env: EMBER_TRY_SCENARIO=ember-default-with-jquery - - env: EMBER_TRY_SCENARIO=ember-classic - -before_install: - - curl -o- -L https://yarnpkg.com/install.sh | bash - - export PATH=$HOME/.yarn/bin:$PATH - -install: - - yarn install --non-interactive - -script: - - node_modules/.bin/ember try:one $EMBER_TRY_SCENARIO diff --git a/package.json b/package.json index 28f76d867..9fef4be33 100644 --- a/package.json +++ b/package.json @@ -33,7 +33,7 @@ "compliance:audit": "bash ./scripts/yarn-audit.sh", "precommit": "yarn compliance:licenses && yarn compliance:audit && yarn lint && yarn test", "commit": "git-cz", - "compliance:licenses": "license-checker --onlyAllow 'Apache*;Apache License, Version 2.0;Apache-2.0;Apache 2.0;Artistic-2.0;BSD;BSD-3-Clause;CC-BY-3.0;CC-BY-4.0;CC0-1.0;ISC;MIT;MPL-2.0;Public Domain;Unicode-TOU;Unlicense;WTFPL' --excludePackages 'boundary-ui;admin@0.0.0;desktop@0.0.0;base64-js@0.0.2;cycle@1.0.3'", + "compliance:licenses": "license-checker --onlyAllow 'Apache*;Apache License, Version 2.0;Apache-2.0;Apache 2.0;Artistic-2.0;BSD;BSD-3-Clause;CC-BY-3.0;CC-BY-4.0;CC0-1.0;ISC;MIT;MPL-2.0;Public Domain;Python-2.0;Unicode-TOU;Unlicense;WTFPL' --excludePackages 'boundary-ui;admin@0.0.0;desktop@0.0.0;base64-js@0.0.2;cycle@1.0.3'", "doc:toc": "doctoc README.md" }, "devDependencies": { diff --git a/yarn.lock b/yarn.lock index 6a5062c2b..2bc86b5dd 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2,6 +2,13 @@ # yarn lockfile v1 +"@babel/code-frame@7.12.11", "@babel/code-frame@^7.0.0", "@babel/code-frame@^7.10.4", "@babel/code-frame@^7.12.11", "@babel/code-frame@^7.5.5": + version "7.12.11" + resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.12.11.tgz#f4ad435aa263db935b8f10f2c552d23fb716a63f" + integrity sha512-Zt1yodBx1UcyiePMSkWnU4hPqhwq7hGi2nFL1LeA3EUl+q2LQx16MISgJ0+z7dnmgvP9QtIleuETGOiOH1RcIw== + dependencies: + "@babel/highlight" "^7.10.4" + "@babel/code-frame@7.8.3": version "7.8.3" resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.8.3.tgz#33e25903d7481181534e12ec0a25f16b6fcf419e" @@ -9,18 +16,23 @@ dependencies: "@babel/highlight" "^7.8.3" -"@babel/code-frame@^7.0.0", "@babel/code-frame@^7.10.4", "@babel/code-frame@^7.12.11", "@babel/code-frame@^7.5.5": - version "7.12.11" - resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.12.11.tgz#f4ad435aa263db935b8f10f2c552d23fb716a63f" - integrity sha512-Zt1yodBx1UcyiePMSkWnU4hPqhwq7hGi2nFL1LeA3EUl+q2LQx16MISgJ0+z7dnmgvP9QtIleuETGOiOH1RcIw== +"@babel/code-frame@^7.12.13": + version "7.12.13" + resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.12.13.tgz#dcfc826beef65e75c50e21d3837d7d95798dd658" + integrity sha512-HV1Cm0Q3ZrpCR93tkWOYiuYIgLxZXZFVG2VgK+MBWjUqZTundupbfx2aXarXuw5Ko5aMcjtJgbSs4vUGBS5v6g== dependencies: - "@babel/highlight" "^7.10.4" + "@babel/highlight" "^7.12.13" "@babel/compat-data@^7.12.5", "@babel/compat-data@^7.12.7": version "7.12.7" resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.12.7.tgz#9329b4782a7d6bbd7eef57e11addf91ee3ef1e41" integrity sha512-YaxPMGs/XIWtYqrdEOZOCPsVWfEoriXopnsz3/i7apYPXQ3698UFhS6dVT1KN5qOsWmVgw/FOrmQgpRaZayGsw== +"@babel/compat-data@^7.13.8": + version "7.13.8" + resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.13.8.tgz#5b783b9808f15cef71547f1b691f34f8ff6003a6" + integrity sha512-EaI33z19T4qN3xLXsGf48M2cDqa6ei9tPZlfLdb2HC+e/cFtREiRd8hdSqDbwdLB0/+gLwqJmCYASH0z2bUdog== + "@babel/core@7.12.9": version "7.12.9" resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.12.9.tgz#fd450c4ec10cdbb980e2928b7aa7a28484593fc8" @@ -64,6 +76,28 @@ semver "^5.4.1" source-map "^0.5.0" +"@babel/core@^7.12.9": + version "7.13.8" + resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.13.8.tgz#c191d9c5871788a591d69ea1dc03e5843a3680fb" + integrity sha512-oYapIySGw1zGhEFRd6lzWNLWFX2s5dA/jm+Pw/+59ZdXtjyIuwlXbrId22Md0rgZVop+aVoqow2riXhBLNyuQg== + dependencies: + "@babel/code-frame" "^7.12.13" + "@babel/generator" "^7.13.0" + "@babel/helper-compilation-targets" "^7.13.8" + "@babel/helper-module-transforms" "^7.13.0" + "@babel/helpers" "^7.13.0" + "@babel/parser" "^7.13.4" + "@babel/template" "^7.12.13" + "@babel/traverse" "^7.13.0" + "@babel/types" "^7.13.0" + convert-source-map "^1.7.0" + debug "^4.1.0" + gensync "^1.0.0-beta.2" + json5 "^2.1.2" + lodash "^4.17.19" + semver "^6.3.0" + source-map "^0.5.0" + "@babel/generator@^7.12.1", "@babel/generator@^7.12.10", "@babel/generator@^7.12.11", "@babel/generator@^7.12.5": version "7.12.11" resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.12.11.tgz#98a7df7b8c358c9a37ab07a24056853016aba3af" @@ -73,6 +107,15 @@ jsesc "^2.5.1" source-map "^0.5.0" +"@babel/generator@^7.13.0": + version "7.13.9" + resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.13.9.tgz#3a7aa96f9efb8e2be42d38d80e2ceb4c64d8de39" + integrity sha512-mHOOmY0Axl/JCTkxTU6Lf5sWOg/v8nUa+Xkt4zMTftX0wqmb6Sh7J8gvcehBw7q0AhrhAR+FDacKjCZ2X8K+Sw== + dependencies: + "@babel/types" "^7.13.0" + jsesc "^2.5.1" + source-map "^0.5.0" + "@babel/helper-annotate-as-pure@^7.10.4", "@babel/helper-annotate-as-pure@^7.12.10": version "7.12.10" resolved "https://registry.yarnpkg.com/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.12.10.tgz#54ab9b000e60a93644ce17b3f37d313aaf1d115d" @@ -98,6 +141,16 @@ browserslist "^4.14.5" semver "^5.5.0" +"@babel/helper-compilation-targets@^7.13.8": + version "7.13.8" + resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.13.8.tgz#02bdb22783439afb11b2f009814bdd88384bd468" + integrity sha512-pBljUGC1y3xKLn1nrx2eAhurLMA8OqBtBP/JwG4U8skN7kf8/aqwwxpV1N6T0e7r6+7uNitIa/fUxPFagSXp3A== + dependencies: + "@babel/compat-data" "^7.13.8" + "@babel/helper-validator-option" "^7.12.17" + browserslist "^4.14.5" + semver "^6.3.0" + "@babel/helper-create-class-features-plugin@^7.12.1", "@babel/helper-create-class-features-plugin@^7.5.5", "@babel/helper-create-class-features-plugin@^7.8.3": version "7.12.1" resolved "https://registry.yarnpkg.com/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.12.1.tgz#3c45998f431edd4a9214c5f1d3ad1448a6137f6e" @@ -142,6 +195,15 @@ "@babel/template" "^7.12.7" "@babel/types" "^7.12.11" +"@babel/helper-function-name@^7.12.13": + version "7.12.13" + resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.12.13.tgz#93ad656db3c3c2232559fd7b2c3dbdcbe0eb377a" + integrity sha512-TZvmPn0UOqmvi5G4vvw0qZTpVptGkB1GL61R6lKvrSdIxGm5Pky7Q3fpKiIkQCAtRCBUwB0PaThlx9vebCDSwA== + dependencies: + "@babel/helper-get-function-arity" "^7.12.13" + "@babel/template" "^7.12.13" + "@babel/types" "^7.12.13" + "@babel/helper-get-function-arity@^7.12.10": version "7.12.10" resolved "https://registry.yarnpkg.com/@babel/helper-get-function-arity/-/helper-get-function-arity-7.12.10.tgz#b158817a3165b5faa2047825dfa61970ddcc16cf" @@ -149,6 +211,13 @@ dependencies: "@babel/types" "^7.12.10" +"@babel/helper-get-function-arity@^7.12.13": + version "7.12.13" + resolved "https://registry.yarnpkg.com/@babel/helper-get-function-arity/-/helper-get-function-arity-7.12.13.tgz#bc63451d403a3b3082b97e1d8b3fe5bd4091e583" + integrity sha512-DjEVzQNz5LICkzN0REdpD5prGoidvbdYk1BVgRUOINaWJP2t6avB27X1guXK1kXNrX0WMfsrm1A/ZBthYuIMQg== + dependencies: + "@babel/types" "^7.12.13" + "@babel/helper-hoist-variables@^7.10.4": version "7.10.4" resolved "https://registry.yarnpkg.com/@babel/helper-hoist-variables/-/helper-hoist-variables-7.10.4.tgz#d49b001d1d5a68ca5e6604dda01a6297f7c9381e" @@ -163,6 +232,13 @@ dependencies: "@babel/types" "^7.12.7" +"@babel/helper-member-expression-to-functions@^7.13.0": + version "7.13.0" + resolved "https://registry.yarnpkg.com/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.13.0.tgz#6aa4bb678e0f8c22f58cdb79451d30494461b091" + integrity sha512-yvRf8Ivk62JwisqV1rFRMxiSMDGnN6KH1/mDMmIrij4jztpQNRoHqqMG3U6apYbGRPJpgPalhva9Yd06HlUxJQ== + dependencies: + "@babel/types" "^7.13.0" + "@babel/helper-module-imports@^7.0.0", "@babel/helper-module-imports@^7.12.1", "@babel/helper-module-imports@^7.12.5", "@babel/helper-module-imports@^7.8.3": version "7.12.5" resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.12.5.tgz#1bfc0229f794988f76ed0a4d4e90860850b54dfb" @@ -170,6 +246,13 @@ dependencies: "@babel/types" "^7.12.5" +"@babel/helper-module-imports@^7.12.13": + version "7.12.13" + resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.12.13.tgz#ec67e4404f41750463e455cc3203f6a32e93fcb0" + integrity sha512-NGmfvRp9Rqxy0uHSSVP+SRIW1q31a7Ji10cLBcqSDUngGentY4FRiHOFZFE1CLU5eiL0oE8reH7Tg1y99TDM/g== + dependencies: + "@babel/types" "^7.12.13" + "@babel/helper-module-transforms@^7.12.1": version "7.12.1" resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.12.1.tgz#7954fec71f5b32c48e4b303b437c34453fd7247c" @@ -185,6 +268,21 @@ "@babel/types" "^7.12.1" lodash "^4.17.19" +"@babel/helper-module-transforms@^7.13.0": + version "7.13.0" + resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.13.0.tgz#42eb4bd8eea68bab46751212c357bfed8b40f6f1" + integrity sha512-Ls8/VBwH577+pw7Ku1QkUWIyRRNHpYlts7+qSqBBFCW3I8QteB9DxfcZ5YJpOwH6Ihe/wn8ch7fMGOP1OhEIvw== + dependencies: + "@babel/helper-module-imports" "^7.12.13" + "@babel/helper-replace-supers" "^7.13.0" + "@babel/helper-simple-access" "^7.12.13" + "@babel/helper-split-export-declaration" "^7.12.13" + "@babel/helper-validator-identifier" "^7.12.11" + "@babel/template" "^7.12.13" + "@babel/traverse" "^7.13.0" + "@babel/types" "^7.13.0" + lodash "^4.17.19" + "@babel/helper-optimise-call-expression@^7.10.4", "@babel/helper-optimise-call-expression@^7.12.10": version "7.12.10" resolved "https://registry.yarnpkg.com/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.12.10.tgz#94ca4e306ee11a7dd6e9f42823e2ac6b49881e2d" @@ -192,6 +290,13 @@ dependencies: "@babel/types" "^7.12.10" +"@babel/helper-optimise-call-expression@^7.12.13": + version "7.12.13" + resolved "https://registry.yarnpkg.com/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.12.13.tgz#5c02d171b4c8615b1e7163f888c1c81c30a2aaea" + integrity sha512-BdWQhoVJkp6nVjB7nkFWcn43dkprYauqtk++Py2eaf/GRDFm5BxRqEIZCiHlZUGAVmtwKcsVL1dC68WmzeFmiA== + dependencies: + "@babel/types" "^7.12.13" + "@babel/helper-plugin-utils@7.10.4", "@babel/helper-plugin-utils@^7.0.0", "@babel/helper-plugin-utils@^7.10.4", "@babel/helper-plugin-utils@^7.8.0", "@babel/helper-plugin-utils@^7.8.3": version "7.10.4" resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.10.4.tgz#2f75a831269d4f677de49986dff59927533cf375" @@ -216,6 +321,16 @@ "@babel/traverse" "^7.12.10" "@babel/types" "^7.12.11" +"@babel/helper-replace-supers@^7.13.0": + version "7.13.0" + resolved "https://registry.yarnpkg.com/@babel/helper-replace-supers/-/helper-replace-supers-7.13.0.tgz#6034b7b51943094cb41627848cb219cb02be1d24" + integrity sha512-Segd5me1+Pz+rmN/NFBOplMbZG3SqRJOBlY+mA0SxAv6rjj7zJqr1AVr3SfzUVTLCv7ZLU5FycOM/SBGuLPbZw== + dependencies: + "@babel/helper-member-expression-to-functions" "^7.13.0" + "@babel/helper-optimise-call-expression" "^7.12.13" + "@babel/traverse" "^7.13.0" + "@babel/types" "^7.13.0" + "@babel/helper-simple-access@^7.12.1": version "7.12.1" resolved "https://registry.yarnpkg.com/@babel/helper-simple-access/-/helper-simple-access-7.12.1.tgz#32427e5aa61547d38eb1e6eaf5fd1426fdad9136" @@ -223,6 +338,13 @@ dependencies: "@babel/types" "^7.12.1" +"@babel/helper-simple-access@^7.12.13": + version "7.12.13" + resolved "https://registry.yarnpkg.com/@babel/helper-simple-access/-/helper-simple-access-7.12.13.tgz#8478bcc5cacf6aa1672b251c1d2dde5ccd61a6c4" + integrity sha512-0ski5dyYIHEfwpWGx5GPWhH35j342JaflmCeQmsPWcrOQDtCN6C1zKAVRFVbK53lPW2c9TsuLLSUDf0tIGJ5hA== + dependencies: + "@babel/types" "^7.12.13" + "@babel/helper-skip-transparent-expression-wrappers@^7.12.1": version "7.12.1" resolved "https://registry.yarnpkg.com/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.12.1.tgz#462dc63a7e435ade8468385c63d2b84cce4b3cbf" @@ -237,6 +359,13 @@ dependencies: "@babel/types" "^7.12.11" +"@babel/helper-split-export-declaration@^7.12.13": + version "7.12.13" + resolved "https://registry.yarnpkg.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.12.13.tgz#e9430be00baf3e88b0e13e6f9d4eaf2136372b05" + integrity sha512-tCJDltF83htUtXx5NLcaDqRmknv652ZWCHyoTETf1CXYJdPC7nohZohjUgieXhv0hTJdRf2FjDueFehdNucpzg== + dependencies: + "@babel/types" "^7.12.13" + "@babel/helper-validator-identifier@^7.10.4", "@babel/helper-validator-identifier@^7.12.11": version "7.12.11" resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.12.11.tgz#c9a1f021917dcb5ccf0d4e453e399022981fc9ed" @@ -247,6 +376,11 @@ resolved "https://registry.yarnpkg.com/@babel/helper-validator-option/-/helper-validator-option-7.12.11.tgz#d66cb8b7a3e7fe4c6962b32020a131ecf0847f4f" integrity sha512-TBFCyj939mFSdeX7U7DDj32WtzYY7fDcalgq8v3fBZMNOJQNn7nOYzMaUCiPxPYfCup69mtIpqlKgMZLvQ8Xhw== +"@babel/helper-validator-option@^7.12.17": + version "7.12.17" + resolved "https://registry.yarnpkg.com/@babel/helper-validator-option/-/helper-validator-option-7.12.17.tgz#d1fbf012e1a79b7eebbfdc6d270baaf8d9eb9831" + integrity sha512-TopkMDmLzq8ngChwRlyjR6raKD6gMSae4JdYDB8bByKreQgG0RBTuKe9LRxW3wFtUnjxOPRKBDwEH6Mg5KeDfw== + "@babel/helper-wrap-function@^7.10.4": version "7.12.3" resolved "https://registry.yarnpkg.com/@babel/helper-wrap-function/-/helper-wrap-function-7.12.3.tgz#3332339fc4d1fbbf1c27d7958c27d34708e990d9" @@ -266,6 +400,15 @@ "@babel/traverse" "^7.12.5" "@babel/types" "^7.12.5" +"@babel/helpers@^7.13.0": + version "7.13.0" + resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.13.0.tgz#7647ae57377b4f0408bf4f8a7af01c42e41badc0" + integrity sha512-aan1MeFPxFacZeSz6Ld7YZo5aPuqnKlD7+HZY75xQsueczFccP9A7V05+oe0XpLwHK3oLorPe9eaAUljL7WEaQ== + dependencies: + "@babel/template" "^7.12.13" + "@babel/traverse" "^7.13.0" + "@babel/types" "^7.13.0" + "@babel/highlight@^7.10.4", "@babel/highlight@^7.8.3": version "7.10.4" resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.10.4.tgz#7d1bdfd65753538fabe6c38596cdb76d9ac60143" @@ -275,11 +418,25 @@ chalk "^2.0.0" js-tokens "^4.0.0" +"@babel/highlight@^7.12.13": + version "7.13.8" + resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.13.8.tgz#10b2dac78526424dfc1f47650d0e415dfd9dc481" + integrity sha512-4vrIhfJyfNf+lCtXC2ck1rKSzDwciqF7IWFhXXrSOUC2O5DrVp+w4c6ed4AllTxhTkUP5x2tYj41VaxdVMMRDw== + dependencies: + "@babel/helper-validator-identifier" "^7.12.11" + chalk "^2.0.0" + js-tokens "^4.0.0" + "@babel/parser@^7.1.2", "@babel/parser@^7.12.10", "@babel/parser@^7.12.11", "@babel/parser@^7.12.3", "@babel/parser@^7.12.7", "@babel/parser@^7.4.5", "@babel/parser@^7.7.0": version "7.12.11" resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.12.11.tgz#9ce3595bcd74bc5c466905e86c535b8b25011e79" integrity sha512-N3UxG+uuF4CMYoNj8AhnbAcJF0PiuJ9KHuy1lQmkYsxTer/MAH9UBNHsBoAX/4s6NvlDD047No8mYVGGzLL4hg== +"@babel/parser@^7.12.13", "@babel/parser@^7.13.0", "@babel/parser@^7.13.4": + version "7.13.9" + resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.13.9.tgz#ca34cb95e1c2dd126863a84465ae8ef66114be99" + integrity sha512-nEUfRiARCcaVo3ny3ZQjURjHQZUo/JkEw7rLlSZy/psWGnvwXFtPcr6jb7Yb41DVW5LTe6KRq9LGleRNsg1Frw== + "@babel/plugin-proposal-async-generator-functions@^7.12.1": version "7.12.12" resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.12.12.tgz#04b8f24fd4532008ab4e79f788468fd5a8476566" @@ -987,6 +1144,15 @@ "@babel/parser" "^7.12.7" "@babel/types" "^7.12.7" +"@babel/template@^7.12.13": + version "7.12.13" + resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.12.13.tgz#530265be8a2589dbb37523844c5bcb55947fb327" + integrity sha512-/7xxiGA57xMo/P2GVvdEumr8ONhFOhfgq2ihK3h1e6THqzTAkHbkXgB0xI9yeTfIUoH3+oAeHhqm/I43OTbbjA== + dependencies: + "@babel/code-frame" "^7.12.13" + "@babel/parser" "^7.12.13" + "@babel/types" "^7.12.13" + "@babel/traverse@^7.1.6", "@babel/traverse@^7.10.4", "@babel/traverse@^7.12.1", "@babel/traverse@^7.12.10", "@babel/traverse@^7.12.5", "@babel/traverse@^7.12.9", "@babel/traverse@^7.3.4", "@babel/traverse@^7.4.5", "@babel/traverse@^7.7.0": version "7.12.12" resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.12.12.tgz#d0cd87892704edd8da002d674bc811ce64743376" @@ -1002,6 +1168,21 @@ globals "^11.1.0" lodash "^4.17.19" +"@babel/traverse@^7.13.0": + version "7.13.0" + resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.13.0.tgz#6d95752475f86ee7ded06536de309a65fc8966cc" + integrity sha512-xys5xi5JEhzC3RzEmSGrs/b3pJW/o87SypZ+G/PhaE7uqVQNv/jlmVIBXuoh5atqQ434LfXV+sf23Oxj0bchJQ== + dependencies: + "@babel/code-frame" "^7.12.13" + "@babel/generator" "^7.13.0" + "@babel/helper-function-name" "^7.12.13" + "@babel/helper-split-export-declaration" "^7.12.13" + "@babel/parser" "^7.13.0" + "@babel/types" "^7.13.0" + debug "^4.1.0" + globals "^11.1.0" + lodash "^4.17.19" + "@babel/types@^7.1.6", "@babel/types@^7.10.4", "@babel/types@^7.10.5", "@babel/types@^7.12.1", "@babel/types@^7.12.10", "@babel/types@^7.12.11", "@babel/types@^7.12.12", "@babel/types@^7.12.5", "@babel/types@^7.12.7", "@babel/types@^7.4.4", "@babel/types@^7.7.0", "@babel/types@^7.7.2": version "7.12.12" resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.12.12.tgz#4608a6ec313abbd87afa55004d373ad04a96c299" @@ -1011,6 +1192,15 @@ lodash "^4.17.19" to-fast-properties "^2.0.0" +"@babel/types@^7.12.13", "@babel/types@^7.13.0": + version "7.13.0" + resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.13.0.tgz#74424d2816f0171b4100f0ab34e9a374efdf7f80" + integrity sha512-hE+HE8rnG1Z6Wzo+MhaKE5lM5eMx71T4EHJgku2E3xIfaULhDcxiiRxUYgwX8qwP1BBSlag+TdGOt6JAidIZTA== + dependencies: + "@babel/helper-validator-identifier" "^7.12.11" + lodash "^4.17.19" + to-fast-properties "^2.0.0" + "@base2/pretty-print-object@1.0.0": version "1.0.0" resolved "https://registry.yarnpkg.com/@base2/pretty-print-object/-/pretty-print-object-1.0.0.tgz#860ce718b0b73f4009e153541faff2cb6b85d047" @@ -1468,6 +1658,18 @@ silent-error "^1.1.1" util.promisify "^1.0.0" +"@ember/optional-features@^2.0.0": + version "2.0.0" + resolved "https://registry.yarnpkg.com/@ember/optional-features/-/optional-features-2.0.0.tgz#c809abd5a27d5b0ef3c6de3941334ab6153313f0" + integrity sha512-4gkvuGRYfpAh1nwAz306cmMeC1mG7wxZnbsBZ09mMaMX/W7IyKOKc/38JwrDPUFUalmNEM7q7JEPcmew2M3Dog== + dependencies: + chalk "^4.1.0" + ember-cli-version-checker "^5.1.1" + glob "^7.1.6" + inquirer "^7.3.3" + mkdirp "^1.0.4" + silent-error "^1.1.1" + "@ember/ordered-set@^4.0.0": version "4.0.0" resolved "https://registry.yarnpkg.com/@ember/ordered-set/-/ordered-set-4.0.0.tgz#c5ec021ab8d4734c6db92708a81edd499d45fd31" @@ -1503,6 +1705,29 @@ ember-cli-htmlbars-inline-precompile "^2.1.0" ember-test-waiters "^1.1.1" +"@ember/test-helpers@^2.1.4": + version "2.2.3" + resolved "https://registry.yarnpkg.com/@ember/test-helpers/-/test-helpers-2.2.3.tgz#237c2de48a9e85492374b91e825cb142675858cc" + integrity sha512-qpLz0wwHrY49JzmS2qznpEjrfZUhrWemgSXu48xgJAZnjXBa52libZgl7mzwnHmmo4YtUBgQtJSRPUp/coYFNA== + dependencies: + "@ember/test-waiters" "^2.4.0" + broccoli-debug "^0.6.5" + broccoli-funnel "^3.0.3" + ember-cli-babel "^7.23.1" + ember-cli-htmlbars "^5.2.0" + ember-destroyable-polyfill "^2.0.3" + +"@ember/test-waiters@^2.4.0": + version "2.4.1" + resolved "https://registry.yarnpkg.com/@ember/test-waiters/-/test-waiters-2.4.1.tgz#e46bd7f1d28ff9a779c89acbbd2cc2df81235ca1" + integrity sha512-tad4/nKcQHrBZ50kPlZy9xkTpmPpQUaAKegb7lHBfxC+5GcHSGbc6wYM2I8bT9Vf96diWZgNT0a5jbpLSQwRRA== + dependencies: + calculate-cache-key-for-tree "^2.0.0" + ember-cli-babel "^7.21.0" + ember-cli-typescript "^3.1.4" + ember-cli-version-checker "^5.1.2" + semver "^7.3.2" + "@embroider/core@0.29.0": version "0.29.0" resolved "https://registry.yarnpkg.com/@embroider/core/-/core-0.29.0.tgz#51421fbb2bcee607dc6e162400e3502a121230d2" @@ -1725,6 +1950,21 @@ minimatch "^3.0.4" strip-json-comments "^3.1.1" +"@eslint/eslintrc@^0.4.0": + version "0.4.0" + resolved "https://registry.yarnpkg.com/@eslint/eslintrc/-/eslintrc-0.4.0.tgz#99cc0a0584d72f1df38b900fb062ba995f395547" + integrity sha512-2ZPCc+uNbjV5ERJr+aKSPRwZgKd2z11x0EgLvb1PURmUrn9QNRXFqje0Ldq454PfAVyaJYyrDvvIKSFP4NnBog== + dependencies: + ajv "^6.12.4" + debug "^4.1.1" + espree "^7.3.0" + globals "^12.1.0" + ignore "^4.0.6" + import-fresh "^3.2.1" + js-yaml "^3.13.1" + minimatch "^3.0.4" + strip-json-comments "^3.1.1" + "@formatjs/ecma402-abstract@1.5.2": version "1.5.2" resolved "https://registry.yarnpkg.com/@formatjs/ecma402-abstract/-/ecma402-abstract-1.5.2.tgz#6c20c24f814ebf8e9dd46e34310a67895853a931" @@ -1752,6 +1992,26 @@ ember-cli-version-checker "^3.1.3" ember-compatibility-helpers "^1.1.2" +"@glimmer/component@^1.0.3": + version "1.0.4" + resolved "https://registry.yarnpkg.com/@glimmer/component/-/component-1.0.4.tgz#1c85a5181615a6647f6acfaaed68e28ad7e9626e" + integrity sha512-sS4N8wtcKfYdUJ6O3m8nbTut6NjErdz94Ap8VB1ekcg4WSD+7sI7Nmv6kt2rdPoe363nUdjUbRBzHNWhLzraBw== + dependencies: + "@glimmer/di" "^0.1.9" + "@glimmer/env" "^0.1.7" + "@glimmer/util" "^0.44.0" + broccoli-file-creator "^2.1.1" + broccoli-merge-trees "^3.0.2" + ember-cli-babel "^7.7.3" + ember-cli-get-component-path-option "^1.0.0" + ember-cli-is-package-missing "^1.0.0" + ember-cli-normalize-entity-name "^1.0.0" + ember-cli-path-utils "^1.0.0" + ember-cli-string-utils "^1.1.0" + ember-cli-typescript "3.0.0" + ember-cli-version-checker "^3.1.3" + ember-compatibility-helpers "^1.1.2" + "@glimmer/di@^0.1.9": version "0.1.11" resolved "https://registry.yarnpkg.com/@glimmer/di/-/di-0.1.11.tgz#a6878c07a13a2c2c76fcde598a5c97637bfc4280" @@ -1862,6 +2122,14 @@ "@glimmer/env" "^0.1.7" "@glimmer/validator" "^0.44.0" +"@glimmer/tracking@^1.0.3": + version "1.0.4" + resolved "https://registry.yarnpkg.com/@glimmer/tracking/-/tracking-1.0.4.tgz#f1bc1412fe5e2236d0f8d502994a8f88af1bbb21" + integrity sha512-F+oT8I55ba2puSGIzInmVrv/8QA2PcK1VD+GWgFMhF6WC97D+uZX7BFg+a3s/2N4FVBq5KHE+QxZzgazM151Yw== + dependencies: + "@glimmer/env" "^0.1.7" + "@glimmer/validator" "^0.44.0" + "@glimmer/util@0.65.1": version "0.65.1" resolved "https://registry.yarnpkg.com/@glimmer/util/-/util-0.65.1.tgz#c85ebc13344739c123e0ec6551ae740cf5fd62bf" @@ -3643,6 +3911,11 @@ argparse@^1.0.7, argparse@~1.0.2: dependencies: sprintf-js "~1.0.2" +argparse@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/argparse/-/argparse-2.0.1.tgz#246f50f3ca78a3240f6c997e8a9bd1eac49e4b38" + integrity sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q== + arr-diff@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/arr-diff/-/arr-diff-4.0.0.tgz#d6461074febfec71e7e15235761a329a5dc7c520" @@ -4240,6 +4513,13 @@ babel-plugin-ember-modules-api-polyfill@^3.2.1: dependencies: ember-rfc176-data "^0.3.16" +babel-plugin-ember-modules-api-polyfill@^3.4.0: + version "3.4.0" + resolved "https://registry.yarnpkg.com/babel-plugin-ember-modules-api-polyfill/-/babel-plugin-ember-modules-api-polyfill-3.4.0.tgz#3f5e0457e135f8a29b3a8b6910806bb5b524649e" + integrity sha512-nVu/LqbZBAup1zLij6xGvQwVLWVk4XYu2fl4vIOUR3S6ukdonMLhKAb0d4QXSzH30Pd7OczVTlPffWbiwahdJw== + dependencies: + ember-rfc176-data "^0.3.16" + babel-plugin-emotion@^10.0.20, babel-plugin-emotion@^10.0.27: version "10.0.33" resolved "https://registry.yarnpkg.com/babel-plugin-emotion/-/babel-plugin-emotion-10.0.33.tgz#ce1155dcd1783bbb9286051efee53f4e2be63e03" @@ -4286,6 +4566,13 @@ babel-plugin-htmlbars-inline-precompile@^4.2.0: resolved "https://registry.yarnpkg.com/babel-plugin-htmlbars-inline-precompile/-/babel-plugin-htmlbars-inline-precompile-4.2.1.tgz#9a367f8d7ecb9fb2c2e886edfe285caf7cb9766d" integrity sha512-MCJXk+1R0YjlF/F52eDbhJTpsnqRVYsPYVP9d0jEu7E46AcRPEWDL5tfSweiQWHLKG017BIedATb91KcIoT3zA== +babel-plugin-htmlbars-inline-precompile@^4.4.1: + version "4.4.4" + resolved "https://registry.yarnpkg.com/babel-plugin-htmlbars-inline-precompile/-/babel-plugin-htmlbars-inline-precompile-4.4.4.tgz#e62bc7f037a3efd7a0c0de88796aaf88e2a2506b" + integrity sha512-H2EqG91B1Vfzc5caPmMm2G6BioWR3c/0qOvai5NxjAHwhf/BK4N/nQUbUTRA1qeakO8afqOpkNonb2BMEgmmlw== + dependencies: + babel-plugin-ember-modules-api-polyfill "^3.4.0" + babel-plugin-istanbul@^6.0.0: version "6.0.0" resolved "https://registry.yarnpkg.com/babel-plugin-istanbul/-/babel-plugin-istanbul-6.0.0.tgz#e159ccdc9af95e0b570c75b4573b7c34d671d765" @@ -5757,6 +6044,22 @@ broccoli-templater@^2.0.1: rimraf "^2.6.2" walk-sync "^0.3.3" +broccoli-terser-sourcemap@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/broccoli-terser-sourcemap/-/broccoli-terser-sourcemap-4.1.0.tgz#5f37441b64a3b6bfb0c67e9af232259c9576f115" + integrity sha512-zkNnjsAbP+M5rG2aMM1EE4BmXPUSxFKmtLUkUs2D1DLTOJQoF1xlOjGWjjKYCFy5tw8t4+tgGJ+HVa2ucJZ8sw== + dependencies: + async-promise-queue "^1.0.5" + broccoli-plugin "^4.0.3" + debug "^4.1.0" + lodash.defaultsdeep "^4.6.1" + matcher-collection "^2.0.1" + source-map-url "^0.4.0" + symlink-or-copy "^1.3.1" + terser "^5.3.0" + walk-sync "^2.2.0" + workerpool "^6.0.0" + broccoli-uglify-sourcemap@^3.1.0: version "3.2.0" resolved "https://registry.yarnpkg.com/broccoli-uglify-sourcemap/-/broccoli-uglify-sourcemap-3.2.0.tgz#d96f1d41f6c18e9a5d49af1a5ab9489cdcac1c6c" @@ -5804,6 +6107,36 @@ broccoli@^3.4.2: underscore.string "^3.2.2" watch-detector "^1.0.0" +broccoli@^3.5.0: + version "3.5.1" + resolved "https://registry.yarnpkg.com/broccoli/-/broccoli-3.5.1.tgz#371bc63cabe700bae3a2b80cac3e978f94664418" + integrity sha512-2Rvl40E6JgALX1JQN5PjCgP1apFAP24vVol+coX5TpVVy0Lsqzl3Mabbe3fVQcu3lMRfPJ6DyBKqBlo52XPSRg== + dependencies: + "@types/chai" "^4.2.9" + "@types/chai-as-promised" "^7.1.2" + "@types/express" "^4.17.2" + ansi-html "^0.0.7" + broccoli-node-info "^2.1.0" + broccoli-slow-trees "^3.0.1" + broccoli-source "^3.0.0" + commander "^4.1.1" + connect "^3.6.6" + console-ui "^3.0.4" + esm "^3.2.4" + findup-sync "^4.0.0" + handlebars "^4.7.3" + heimdalljs "^0.2.6" + heimdalljs-logger "^0.1.9" + https "^1.0.0" + mime-types "^2.1.26" + resolve-path "^1.4.0" + rimraf "^3.0.2" + sane "^4.0.0" + tmp "^0.0.33" + tree-sync "^2.0.0" + underscore.string "^3.2.2" + watch-detector "^1.0.0" + brorand@^1.0.1: version "1.1.0" resolved "https://registry.yarnpkg.com/brorand/-/brorand-1.1.0.tgz#12c25efe40a45e3c323eb8675a0a0ce57b22371f" @@ -6188,7 +6521,7 @@ callsites@^2.0.0: resolved "https://registry.yarnpkg.com/callsites/-/callsites-2.0.0.tgz#06eb84f00eea413da86affefacbffb36093b3c50" integrity sha1-BuuE8A7qQT2oav/vrL/7Ngk7PFA= -callsites@^3.0.0: +callsites@^3.0.0, callsites@^3.1.0: version "3.1.0" resolved "https://registry.yarnpkg.com/callsites/-/callsites-3.1.0.tgz#b3630abd8943432f54b3f0519238e33cd7df2f73" integrity sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ== @@ -6537,7 +6870,7 @@ clean-css@^4.2.3: dependencies: source-map "~0.6.0" -clean-stack@^2.0.0: +clean-stack@^2.0.0, clean-stack@^2.2.0: version "2.2.0" resolved "https://registry.yarnpkg.com/clean-stack/-/clean-stack-2.2.0.tgz#ee8472dbb129e727b31e8a10a427dee9dfe4008b" integrity sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A== @@ -6993,7 +7326,7 @@ console-control-strings@^1.0.0, console-control-strings@^1.1.0, console-control- resolved "https://registry.yarnpkg.com/console-control-strings/-/console-control-strings-1.1.0.tgz#3d7cf4464db6446ea644bf4b39507f9851008e8e" integrity sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4= -console-ui@^3.0.4, console-ui@^3.1.1: +console-ui@^3.0.4, console-ui@^3.1.1, console-ui@^3.1.2: version "3.1.2" resolved "https://registry.yarnpkg.com/console-ui/-/console-ui-3.1.2.tgz#51aef616ff02013c85ccee6a6d77ef7a94202e7a" integrity sha512-+5j3R4wZJcEYZeXk30whc4ZU/+fWW9JMTNntVuMYpjZJ9n26Cxr0tUBXco1NRjVZRpRVvZ4DDKKKIHNYeUG9Dw== @@ -7370,6 +7703,14 @@ css-tree@1.0.0-alpha.29: mdn-data "~1.1.0" source-map "^0.5.3" +css-tree@^1.0.0-alpha.39: + version "1.1.2" + resolved "https://registry.yarnpkg.com/css-tree/-/css-tree-1.1.2.tgz#9ae393b5dafd7dae8a622475caec78d3d8fbd7b5" + integrity sha512-wCoWush5Aeo48GLhfHPbmvZs59Z+M7k5+B1xDnXbdWNcEF423DoFdqSWE0PM5aNk5nI5cp1q7ms36zGApY/sKQ== + dependencies: + mdn-data "2.0.14" + source-map "^0.6.1" + css-url-regex@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/css-url-regex/-/css-url-regex-1.1.0.tgz#83834230cc9f74c457de59eebd1543feeb83b7ec" @@ -8163,7 +8504,7 @@ ember-assign-polyfill@^2.6.0: ember-cli-babel "^7.20.5" ember-cli-version-checker "^2.0.0" -ember-auto-import@^1.2.15, ember-auto-import@^1.2.19, ember-auto-import@^1.5.3, ember-auto-import@^1.6.0: +ember-auto-import@^1.10.1, ember-auto-import@^1.2.15, ember-auto-import@^1.2.19, ember-auto-import@^1.5.3, ember-auto-import@^1.6.0: version "1.10.1" resolved "https://registry.yarnpkg.com/ember-auto-import/-/ember-auto-import-1.10.1.tgz#6c93a875e494aa0a58b759867d3f20adfd514ae3" integrity sha512-7bOWzPELlVwdWDOkB+phDIjg8BNW+/2RiLLQ+Xa/eIvCLT4ABYhHV5wqW5gs5BnXTDVLfE4ddKZdllnGuPGGDQ== @@ -8237,7 +8578,7 @@ ember-cli-babel-plugin-helpers@^1.0.0, ember-cli-babel-plugin-helpers@^1.1.0, em resolved "https://registry.yarnpkg.com/ember-cli-babel-plugin-helpers/-/ember-cli-babel-plugin-helpers-1.1.1.tgz#5016b80cdef37036c4282eef2d863e1d73576879" integrity sha512-sKvOiPNHr5F/60NLd7SFzMpYPte/nnGkq/tMIfXejfKHIhaiIkYFqX8Z9UFTKWLLn+V7NOaby6niNPZUdvKCRw== -ember-cli-babel@7, ember-cli-babel@^7.0.0, ember-cli-babel@^7.1.0, ember-cli-babel@^7.1.2, ember-cli-babel@^7.10.0, ember-cli-babel@^7.11.0, ember-cli-babel@^7.11.1, ember-cli-babel@^7.12.0, ember-cli-babel@^7.13.0, ember-cli-babel@^7.18.0, ember-cli-babel@^7.19.0, ember-cli-babel@^7.20.5, ember-cli-babel@^7.21.0, ember-cli-babel@^7.22.1, ember-cli-babel@^7.23.0, ember-cli-babel@^7.4.0, ember-cli-babel@^7.5.0, ember-cli-babel@^7.7.3: +ember-cli-babel@7, ember-cli-babel@^7.0.0, ember-cli-babel@^7.1.0, ember-cli-babel@^7.1.2, ember-cli-babel@^7.10.0, ember-cli-babel@^7.11.0, ember-cli-babel@^7.11.1, ember-cli-babel@^7.12.0, ember-cli-babel@^7.13.0, ember-cli-babel@^7.13.2, ember-cli-babel@^7.18.0, ember-cli-babel@^7.19.0, ember-cli-babel@^7.20.5, ember-cli-babel@^7.21.0, ember-cli-babel@^7.22.1, ember-cli-babel@^7.23.0, ember-cli-babel@^7.23.1, ember-cli-babel@^7.4.0, ember-cli-babel@^7.5.0, ember-cli-babel@^7.7.3: version "7.23.1" resolved "https://registry.yarnpkg.com/ember-cli-babel/-/ember-cli-babel-7.23.1.tgz#d1517228ede08a5d4b045c78a7429728e956b30b" integrity sha512-qYggmt3hRs6QJ6cRkww3ahMpyP8IEV2KFrIRO/Z6hu9MkE/8Y28Xd5NjQl6fPV3oLoG0vwuHzhNe3Jr7Wec8zw== @@ -8432,6 +8773,27 @@ ember-cli-htmlbars@^5.2.0: strip-bom "^4.0.0" walk-sync "^2.2.0" +ember-cli-htmlbars@^5.3.1: + version "5.6.3" + resolved "https://registry.yarnpkg.com/ember-cli-htmlbars/-/ember-cli-htmlbars-5.6.3.tgz#4916d1ea2b6d69ea5e7252c0c59e56d7031ee310" + integrity sha512-pn2pW49KmsrjlG4PEMmd3ZrsbS2WHKn+1NLLCWUjxmc5g4/lHxHicB8IN5z95ANmgqDHAwp+rw1XTyWy9r0xyQ== + dependencies: + "@ember/edition-utils" "^1.2.0" + babel-plugin-htmlbars-inline-precompile "^4.4.1" + broccoli-debug "^0.6.5" + broccoli-persistent-filter "^3.1.2" + broccoli-plugin "^4.0.3" + common-tags "^1.8.0" + ember-cli-babel-plugin-helpers "^1.1.1" + fs-tree-diff "^2.0.1" + hash-for-dep "^1.5.1" + heimdalljs-logger "^0.1.10" + json-stable-stringify "^1.0.1" + semver "^7.3.4" + silent-error "^1.1.1" + strip-bom "^4.0.0" + walk-sync "^2.2.0" + ember-cli-inject-live-reload@^2.0.2: version "2.0.2" resolved "https://registry.yarnpkg.com/ember-cli-inject-live-reload/-/ember-cli-inject-live-reload-2.0.2.tgz#95edb543b386239d35959e5ea9579f5382976ac7" @@ -8526,6 +8888,13 @@ ember-cli-template-lint@^2.0.2: strip-ansi "^6.0.0" walk-sync "^2.0.2" +ember-cli-terser@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/ember-cli-terser/-/ember-cli-terser-4.0.1.tgz#0da0b8f2b09989e8c992b207553ddec1bbb65915" + integrity sha512-vvp0uVl8reYeW9EZjSXRPR3Bq7y4u9CYlUdI7j/WzMPDj3/gUHU4Z7CHYOCrftrClQvFfqO2eXmHwDA6F7SLug== + dependencies: + broccoli-terser-sourcemap "^4.1.0" + ember-cli-test-info@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/ember-cli-test-info/-/ember-cli-test-info-1.0.0.tgz#ed4e960f249e97523cf891e4aed2072ce84577b4" @@ -8540,6 +8909,13 @@ ember-cli-test-loader@^2.2.0: dependencies: ember-cli-babel "^6.8.1" +ember-cli-test-loader@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/ember-cli-test-loader/-/ember-cli-test-loader-3.0.0.tgz#1c036fc48de36155355fcda3266af63f977826f1" + integrity sha512-wfFRBrfO9gaKScYcdQxTfklx9yp1lWK6zv1rZRpkas9z2SHyJojF7NOQRWQgSB3ypm7vfpiF8VsFFVVr7VBzAQ== + dependencies: + ember-cli-babel "^7.13.2" + ember-cli-typescript@3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/ember-cli-typescript/-/ember-cli-typescript-3.0.0.tgz#3b838d1ce9e4d22a98e68da22ceac6dc0cfd9bfc" @@ -8575,7 +8951,7 @@ ember-cli-typescript@^2.0.0-rc.2, ember-cli-typescript@^2.0.2: stagehand "^1.0.0" walk-sync "^1.0.0" -ember-cli-typescript@^3.1.3: +ember-cli-typescript@^3.1.3, ember-cli-typescript@^3.1.4: version "3.1.4" resolved "https://registry.yarnpkg.com/ember-cli-typescript/-/ember-cli-typescript-3.1.4.tgz#21d6ccd670d1f2e34c9cce68c6e32c442f46806b" integrity sha512-HJ73kL45OGRmIkPhBNFt31I1SGUvdZND+LCH21+qpq3pPlFpJG8GORyXpP+2ze8PbnITNLzwe5AwUrpyuRswdQ== @@ -8677,7 +9053,7 @@ ember-cli-version-checker@^4.1.0: semver "^6.3.0" silent-error "^1.1.1" -ember-cli-version-checker@^5.0.1, ember-cli-version-checker@^5.1.1: +ember-cli-version-checker@^5.0.1, ember-cli-version-checker@^5.1.1, ember-cli-version-checker@^5.1.2: version "5.1.2" resolved "https://registry.yarnpkg.com/ember-cli-version-checker/-/ember-cli-version-checker-5.1.2.tgz#649c7b6404902e3b3d69c396e054cea964911ab0" integrity sha512-rk7GY+FmLn/2e22HsZs0Ycrz8HQ1W3Fv+2TFOuEFW9optnDXDgkntPBIl6gact/LHsfBM5RKbM3dHsIIeLgl0Q== @@ -8781,6 +9157,103 @@ ember-cli@~3.20.2: watch-detector "^1.0.0" yam "^1.0.0" +ember-cli@~3.24.0: + version "3.24.0" + resolved "https://registry.yarnpkg.com/ember-cli/-/ember-cli-3.24.0.tgz#dbda4938e74fdafe4da1c42b49356f9d14c10697" + integrity sha512-dLurYpluRcE+XjCHy/JzUBcW4dBKhjmXH3zUjyof89gFjj+8EFjB0b2tqyS6buKqBasinVaX8lZZVIXYCdFtNA== + dependencies: + "@babel/core" "^7.12.9" + "@babel/plugin-transform-modules-amd" "^7.12.1" + amd-name-resolver "^1.3.1" + babel-plugin-module-resolver "^4.0.0" + bower-config "^1.4.3" + bower-endpoint-parser "0.2.2" + broccoli "^3.5.0" + broccoli-amd-funnel "^2.0.1" + broccoli-babel-transpiler "^7.8.0" + broccoli-builder "^0.18.14" + broccoli-concat "^4.2.4" + broccoli-config-loader "^1.0.1" + broccoli-config-replace "^1.1.2" + broccoli-debug "^0.6.5" + broccoli-funnel "^2.0.2" + broccoli-funnel-reducer "^1.0.0" + broccoli-merge-trees "^3.0.2" + broccoli-middleware "^2.1.1" + broccoli-slow-trees "^3.1.0" + broccoli-source "^3.0.0" + broccoli-stew "^3.0.0" + calculate-cache-key-for-tree "^2.0.0" + capture-exit "^2.0.0" + chalk "^4.1.0" + ci-info "^2.0.0" + clean-base-url "^1.0.0" + compression "^1.7.4" + configstore "^5.0.1" + console-ui "^3.1.2" + core-object "^3.1.5" + dag-map "^2.0.2" + diff "^4.0.2" + ember-cli-is-package-missing "^1.0.0" + ember-cli-lodash-subset "^2.0.1" + ember-cli-normalize-entity-name "^1.0.0" + ember-cli-preprocess-registry "^3.3.0" + ember-cli-string-utils "^1.1.0" + ember-source-channel-url "^3.0.0" + ensure-posix-path "^1.1.1" + execa "^4.1.0" + exit "^0.1.2" + express "^4.17.1" + filesize "^6.1.0" + find-up "^5.0.0" + find-yarn-workspace-root "^2.0.0" + fixturify-project "^2.1.0" + fs-extra "^9.0.1" + fs-tree-diff "^2.0.1" + get-caller-file "^2.0.5" + git-repo-info "^2.1.1" + glob "^7.1.6" + heimdalljs "^0.2.6" + heimdalljs-fs-monitor "^1.1.0" + heimdalljs-graph "^1.0.0" + heimdalljs-logger "^0.1.10" + http-proxy "^1.18.1" + inflection "^1.12.0" + is-git-url "^1.0.0" + is-language-code "^2.0.0" + isbinaryfile "^4.0.6" + js-yaml "^3.14.0" + json-stable-stringify "^1.0.1" + leek "0.0.24" + lodash.template "^4.5.0" + markdown-it "^12.0.2" + markdown-it-terminal "0.2.1" + minimatch "^3.0.4" + morgan "^1.10.0" + nopt "^3.0.6" + npm-package-arg "^8.1.0" + p-defer "^3.0.0" + portfinder "^1.0.28" + promise-map-series "^0.3.0" + promise.hash.helper "^1.0.7" + quick-temp "^0.1.8" + resolve "^1.19.0" + resolve-package-path "^3.1.0" + sane "^4.1.0" + semver "^7.3.2" + silent-error "^1.1.1" + sort-package-json "^1.48.0" + symlink-or-copy "^1.3.1" + temp "0.9.4" + testem "^3.2.0" + tiny-lr "^2.0.0" + tree-sync "^2.1.0" + uuid "^8.3.1" + walk-sync "^2.2.0" + watch-detector "^1.0.0" + workerpool "^6.0.3" + yam "^1.0.0" + ember-compatibility-helpers@^1.1.1, ember-compatibility-helpers@^1.1.2, ember-compatibility-helpers@^1.2.0, ember-compatibility-helpers@^1.2.1: version "1.2.2" resolved "https://registry.yarnpkg.com/ember-compatibility-helpers/-/ember-compatibility-helpers-1.2.2.tgz#839e0c24190b7a2ec8c39b80e030811b1a95b6d3" @@ -8868,7 +9341,7 @@ ember-decorators-polyfill@^1.1.5: ember-cli-version-checker "^3.1.3" ember-compatibility-helpers "^1.2.0" -ember-destroyable-polyfill@^2.0.2: +ember-destroyable-polyfill@^2.0.2, ember-destroyable-polyfill@^2.0.3: version "2.0.3" resolved "https://registry.yarnpkg.com/ember-destroyable-polyfill/-/ember-destroyable-polyfill-2.0.3.tgz#1673ed66609a82268ef270a7d917ebd3647f11e1" integrity sha512-TovtNqCumzyAiW0/OisSkkVK93xnVF4NRU6+FN0ubpfwEOpRrmM2RqDwXI6YAChCgSHON1cz0DfQStpA1Gjuuw== @@ -9035,7 +9508,7 @@ ember-intl@^5.5.0: mkdirp "^1.0.4" silent-error "^1.1.1" -ember-load-initializers@^2.1.1: +ember-load-initializers@^2.1.1, ember-load-initializers@^2.1.2: version "2.1.2" resolved "https://registry.yarnpkg.com/ember-load-initializers/-/ember-load-initializers-2.1.2.tgz#8a47a656c1f64f9b10cecdb4e22a9d52ad9c7efa" integrity sha512-CYR+U/wRxLbrfYN3dh+0Tb6mFaxJKfdyz+wNql6cqTrA0BBi9k6J3AaKXj273TqvEpyyXegQFFkZEiuZdYtgJw== @@ -9125,6 +9598,21 @@ ember-qunit@^4.6.0: ember-cli-test-loader "^2.2.0" qunit "^2.9.3" +ember-qunit@^5.1.1: + version "5.1.3" + resolved "https://registry.yarnpkg.com/ember-qunit/-/ember-qunit-5.1.3.tgz#73de924c6c698eaed4adaaab257793741f2d666f" + integrity sha512-vz56bX/ciBZPNXl1l3jDNo9O0YBdVXtt3kqXpmEurNAlggmhdAJyAFTVZaWLtZYIfLuSdlHEMPwOzYmjqhd7fQ== + dependencies: + broccoli-funnel "^3.0.3" + broccoli-merge-trees "^3.0.2" + common-tags "^1.8.0" + ember-auto-import "^1.10.1" + ember-cli-babel "^7.23.1" + ember-cli-test-loader "^3.0.0" + resolve-package-path "^3.1.0" + silent-error "^1.1.1" + validate-peer-dependencies "^1.1.0" + ember-radio-button@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/ember-radio-button/-/ember-radio-button-2.0.1.tgz#f081a44d581a4b1db88fef79ec5c47da712ab963" @@ -9133,7 +9621,7 @@ ember-radio-button@^2.0.1: ember-cli-babel "^6.9.2" ember-cli-htmlbars "^1.1.1" -ember-resolver@^8.0.0: +ember-resolver@^8.0.0, ember-resolver@^8.0.2: version "8.0.2" resolved "https://registry.yarnpkg.com/ember-resolver/-/ember-resolver-8.0.2.tgz#8a45a744aaf5391eb52b4cb393b3b06d2db1975c" integrity sha512-BmCoPT8nf5uv0g2QkhMsrG1Gmu6MtXd6igfhCVzCTMTwZ97SxhJKqoMY62EP/av5HVSWBC/Sa1uGU5cQvX1Aog== @@ -9195,6 +9683,13 @@ ember-source-channel-url@^2.0.1: dependencies: got "^8.0.1" +ember-source-channel-url@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/ember-source-channel-url/-/ember-source-channel-url-3.0.0.tgz#bcd5be72c63fa0b8c390b3121783b462063e2a1b" + integrity sha512-vF/8BraOc66ZxIDo3VuNP7iiDrnXEINclJgSJmqwAAEpg84Zb1DHPI22XTXSDA+E8fW5btPUxu65c3ZXi8AQFA== + dependencies: + node-fetch "^2.6.0" + ember-source@~3.20.2: version "3.20.6" resolved "https://registry.yarnpkg.com/ember-source/-/ember-source-3.20.6.tgz#c2aa4cee386436214b4b3ed84a71becfe815fa12" @@ -9225,6 +9720,36 @@ ember-source@~3.20.2: semver "^6.1.1" silent-error "^1.1.1" +ember-source@~3.24.0: + version "3.24.2" + resolved "https://registry.yarnpkg.com/ember-source/-/ember-source-3.24.2.tgz#64c593057020eb867935cf0735e758e96bb5f4cd" + integrity sha512-naFddoVtCI01nDbmPC4u2+8CpnjQdKlgftkE35Io9Ud6PZTsTB1uib9jf5+v8h+ie+cNbRSfikKrB1odcGm0Og== + 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" + babel-plugin-filter-imports "^4.0.0" + broccoli-concat "^4.2.4" + broccoli-debug "^0.6.4" + broccoli-funnel "^2.0.2" + broccoli-merge-trees "^4.2.0" + chalk "^4.0.0" + ember-cli-babel "^7.23.0" + ember-cli-get-component-path-option "^1.0.0" + ember-cli-is-package-missing "^1.0.0" + ember-cli-normalize-entity-name "^1.0.0" + ember-cli-path-utils "^1.0.0" + ember-cli-string-utils "^1.1.0" + ember-cli-version-checker "^5.1.1" + ember-router-generator "^2.0.0" + inflection "^1.12.0" + jquery "^3.5.0" + resolve "^1.17.0" + semver "^6.1.1" + silent-error "^1.1.1" + ember-template-lint@^2.0.1, ember-template-lint@^2.14.0, ember-template-lint@^2.9.1: version "2.18.0" resolved "https://registry.yarnpkg.com/ember-template-lint/-/ember-template-lint-2.18.0.tgz#cba7665c2ff3c34734285768d7bf41cdd08ffb3f" @@ -9241,6 +9766,23 @@ ember-template-lint@^2.0.1, ember-template-lint@^2.14.0, ember-template-lint@^2. v8-compile-cache "^2.2.0" yargs "^16.2.0" +ember-template-lint@^2.15.0: + version "2.21.0" + resolved "https://registry.yarnpkg.com/ember-template-lint/-/ember-template-lint-2.21.0.tgz#7e120abf309a8810eeed26c52377943faf15a95b" + integrity sha512-19QbEqJQdMfcRS7PsQsubflRowEtnkbD0tpYR4q/xq4lodmhU7hhOFvlTQgbxD/jwW5Ur+tkOwH4KFy9JwOyXA== + dependencies: + chalk "^4.0.0" + ember-template-recast "^5.0.1" + find-up "^5.0.0" + fuse.js "^6.4.6" + get-stdin "^8.0.0" + globby "^11.0.2" + is-glob "^4.0.1" + micromatch "^4.0.2" + resolve "^1.20.0" + v8-compile-cache "^2.2.0" + yargs "^16.2.0" + ember-template-recast@^5.0.1: version "5.0.1" resolved "https://registry.yarnpkg.com/ember-template-recast/-/ember-template-recast-5.0.1.tgz#c5d9e7208bf629ee368a3792328f245f3c651003" @@ -9710,6 +10252,23 @@ escope@^3.6.0: esrecurse "^4.1.0" estraverse "^4.1.1" +eslint-config-prettier@^7.1.0: + version "7.2.0" + resolved "https://registry.yarnpkg.com/eslint-config-prettier/-/eslint-config-prettier-7.2.0.tgz#f4a4bd2832e810e8cc7c1411ec85b3e85c0c53f9" + integrity sha512-rV4Qu0C3nfJKPOAhFujFxB7RMP+URFyQqqOZW9DMRD7ZDTFyjaIlETU3xzHELt++4ugC0+Jm084HQYkkJe+Ivg== + +eslint-plugin-ember@^10.1.1: + version "10.2.0" + resolved "https://registry.yarnpkg.com/eslint-plugin-ember/-/eslint-plugin-ember-10.2.0.tgz#449c3ce8e5421c61ab47e0cb6954e2f6f1cfbdc8" + integrity sha512-W5cPJa+bBcKJ5kmmu7o8r1hbbT45ZCy8eE5EyRjqJ02B7Jlg74mX+Hdz4RYNSvV1+G7YAOwEZLUkIdJ+44ySGA== + dependencies: + "@ember-data/rfc395-data" "^0.0.4" + css-tree "^1.0.0-alpha.39" + ember-rfc176-data "^0.3.15" + eslint-utils "^2.1.0" + lodash.kebabcase "^4.1.1" + snake-case "^3.0.3" + eslint-plugin-ember@^8.9.1: version "8.14.0" resolved "https://registry.yarnpkg.com/eslint-plugin-ember/-/eslint-plugin-ember-8.14.0.tgz#fc4c5119b5a1c87604a7bf920ca397783b96b7be" @@ -9740,6 +10299,13 @@ eslint-plugin-node@^11.1.0: resolve "^1.10.1" semver "^6.1.0" +eslint-plugin-prettier@^3.3.1: + version "3.3.1" + resolved "https://registry.yarnpkg.com/eslint-plugin-prettier/-/eslint-plugin-prettier-3.3.1.tgz#7079cfa2497078905011e6f82e8dd8453d1371b7" + integrity sha512-Rq3jkcFY8RYeQLgk2cCwuc0P7SEFwDravPhsJZOQ5N4YI4DSg50NyqJ/9gdZHzQlHf8MvafSesbNJCcP/FF6pQ== + dependencies: + prettier-linter-helpers "^1.0.0" + eslint-scope@^4.0.3: version "4.0.3" resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-4.0.3.tgz#ca03833310f6889a3264781aa82e63eb9cfe7848" @@ -9862,6 +10428,49 @@ eslint@^6.5.1: text-table "^0.2.0" v8-compile-cache "^2.0.3" +eslint@^7.17.0: + version "7.21.0" + resolved "https://registry.yarnpkg.com/eslint/-/eslint-7.21.0.tgz#4ecd5b8c5b44f5dedc9b8a110b01bbfeb15d1c83" + integrity sha512-W2aJbXpMNofUp0ztQaF40fveSsJBjlSCSWpy//gzfTvwC+USs/nceBrKmlJOiM8r1bLwP2EuYkCqArn/6QTIgg== + dependencies: + "@babel/code-frame" "7.12.11" + "@eslint/eslintrc" "^0.4.0" + ajv "^6.10.0" + chalk "^4.0.0" + cross-spawn "^7.0.2" + debug "^4.0.1" + doctrine "^3.0.0" + enquirer "^2.3.5" + eslint-scope "^5.1.1" + eslint-utils "^2.1.0" + eslint-visitor-keys "^2.0.0" + espree "^7.3.1" + esquery "^1.4.0" + esutils "^2.0.2" + file-entry-cache "^6.0.1" + functional-red-black-tree "^1.0.1" + glob-parent "^5.0.0" + globals "^12.1.0" + ignore "^4.0.6" + import-fresh "^3.0.0" + imurmurhash "^0.1.4" + is-glob "^4.0.0" + js-yaml "^3.13.1" + json-stable-stringify-without-jsonify "^1.0.1" + levn "^0.4.1" + lodash "^4.17.20" + minimatch "^3.0.4" + natural-compare "^1.4.0" + optionator "^0.9.1" + progress "^2.0.0" + regexpp "^3.1.0" + semver "^7.2.1" + strip-ansi "^6.0.0" + strip-json-comments "^3.1.0" + table "^6.0.4" + text-table "^0.2.0" + v8-compile-cache "^2.0.3" + eslint@^7.5.0: version "7.19.0" resolved "https://registry.yarnpkg.com/eslint/-/eslint-7.19.0.tgz#6719621b196b5fad72e43387981314e5d0dc3f41" @@ -9953,6 +10562,13 @@ esquery@^1.0.1, esquery@^1.2.0: dependencies: estraverse "^5.1.0" +esquery@^1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/esquery/-/esquery-1.4.0.tgz#2148ffc38b82e8c7057dfed48425b3e61f0f24a5" + integrity sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w== + dependencies: + estraverse "^5.1.0" + esrecurse@^4.1.0, esrecurse@^4.3.0: version "4.3.0" resolved "https://registry.yarnpkg.com/esrecurse/-/esrecurse-4.3.0.tgz#7ad7964d679abb28bee72cec63758b1c5d2c9921" @@ -10083,7 +10699,7 @@ execa@^3.0.0, execa@^3.4.0: signal-exit "^3.0.2" strip-final-newline "^2.0.0" -execa@^4.0.0, execa@^4.0.3: +execa@^4.0.0, execa@^4.0.3, execa@^4.1.0: version "4.1.0" resolved "https://registry.yarnpkg.com/execa/-/execa-4.1.0.tgz#4e5491ad1572f2f17a77d388c6c857135b22847a" integrity sha512-j5W0//W7f8UxAn8hXVnwG8tLwdiUy4FJLcSupCg6maBYZDpyBvTApK7KyuI4bKj8KOh1r2YH+6ucuYtJv1bTZA== @@ -10226,6 +10842,11 @@ extglob@^2.0.4: snapdragon "^0.8.1" to-regex "^3.0.1" +extract-stack@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/extract-stack/-/extract-stack-2.0.0.tgz#11367bc865bfcd9bc0db3123e5edb57786f11f9b" + integrity sha512-AEo4zm+TenK7zQorGK1f9mJ8L14hnTDi2ZQPR+Mub1NX8zimka1mXpV5LpH8x9HoUmFSHZCfLHqWvp0Y4FxxzQ== + extract-zip@^2.0.0: version "2.0.1" resolved "https://registry.yarnpkg.com/extract-zip/-/extract-zip-2.0.1.tgz#663dca56fe46df890d5f131ef4a06d22bb8ba13a" @@ -10267,6 +10888,11 @@ fast-deep-equal@^3.1.1: resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz#3a7d56b559d6cbc3eb512325244e619a65c6c525" integrity sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q== +fast-diff@^1.1.2: + version "1.2.0" + resolved "https://registry.yarnpkg.com/fast-diff/-/fast-diff-1.2.0.tgz#73ee11982d86caaf7959828d519cfe927fac5f03" + integrity sha512-xJuoT5+L99XlZ8twedaRf6Ax2TgQVxvgZOYoPKqZufmJib0tL2tegPBOZb1pVNgIhlqDlA0eO0c3wBvQcmzx4w== + fast-glob@^2.0.2, fast-glob@^2.2.6: version "2.2.7" resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-2.2.7.tgz#6953857c3afa475fff92ee6015d52da70a4cd39d" @@ -10360,6 +10986,13 @@ fault@^1.0.0, fault@^1.0.1: dependencies: format "^0.2.0" +faye-websocket@^0.11.3: + version "0.11.3" + resolved "https://registry.yarnpkg.com/faye-websocket/-/faye-websocket-0.11.3.tgz#5c0e9a8968e8912c286639fde977a8b209f2508e" + integrity sha512-D2y4bovYpzziGgbHYtGCMjlJM36vAl/y+xUyn1C+FVx8szd1E+86KwVw6XvYSzOP8iMpm1X0I4xJD+QtUb36OA== + dependencies: + websocket-driver ">=0.5.1" + faye-websocket@~0.10.0: version "0.10.0" resolved "https://registry.yarnpkg.com/faye-websocket/-/faye-websocket-0.10.0.tgz#4e492f8d04dfb6f89003507f6edbf2d501e7c6f4" @@ -10430,6 +11063,13 @@ file-entry-cache@^6.0.0: dependencies: flat-cache "^3.0.4" +file-entry-cache@^6.0.1: + version "6.0.1" + resolved "https://registry.yarnpkg.com/file-entry-cache/-/file-entry-cache-6.0.1.tgz#211b2dd9659cb0394b073e7323ac3c933d522027" + integrity sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg== + dependencies: + flat-cache "^3.0.4" + file-loader@^6.0.0: version "6.2.0" resolved "https://registry.yarnpkg.com/file-loader/-/file-loader-6.2.0.tgz#baef7cf8e1840df325e4390b4484879480eebe4d" @@ -10618,6 +11258,13 @@ find-yarn-workspace-root@^1.1.0, find-yarn-workspace-root@^1.2.1: fs-extra "^4.0.3" micromatch "^3.1.4" +find-yarn-workspace-root@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/find-yarn-workspace-root/-/find-yarn-workspace-root-2.0.0.tgz#f47fb8d239c900eb78179aa81b66673eac88f7bd" + integrity sha512-1IMnbjt4KzsQfnhnzNd8wUEgXZ44IzZaZmnLYx7D5FZlaHt2gW20Cri8Q+E/t5tIj4+epTBub+2Zxu/vNILzqQ== + dependencies: + micromatch "^4.0.2" + findup-sync@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/findup-sync/-/findup-sync-3.0.0.tgz#17b108f9ee512dfb7a5c7f3c8b27ea9e1a9c08d1" @@ -11082,6 +11729,11 @@ fuse.js@^3.6.1: resolved "https://registry.yarnpkg.com/fuse.js/-/fuse.js-3.6.1.tgz#7de85fdd6e1b3377c23ce010892656385fd9b10c" integrity sha512-hT9yh/tiinkmirKrlv4KWOjztdoZo1mx9Qh4KvWqC7isoXwdUY3PNWUxceF4/qO9R6riA2C29jdTOeQOIROjgw== +fuse.js@^6.4.6: + version "6.4.6" + resolved "https://registry.yarnpkg.com/fuse.js/-/fuse.js-6.4.6.tgz#62f216c110e5aa22486aff20be7896d19a059b79" + integrity sha512-/gYxR/0VpXmWSfZOIPS3rWwU8SHgsRTwWuXhyb2O6s7aRuVtHtxCkR33bNYu3wyLyNx/Wpv0vU7FZy8Vj53VNw== + galactus@^0.2.1: version "0.2.1" resolved "https://registry.yarnpkg.com/galactus/-/galactus-0.2.1.tgz#cbed2d20a40c1f5679a35908e2b9415733e78db9" @@ -11124,7 +11776,7 @@ genfun@^5.0.0: resolved "https://registry.yarnpkg.com/genfun/-/genfun-5.0.0.tgz#9dd9710a06900a5c4a5bf57aca5da4e52fe76537" integrity sha512-KGDOARWVga7+rnB3z9Sd2Letx515owfk0hSxHGuqjANb1M+x2bGZGqHLiozPsYMdM2OubeMni/Hpwmjq6qIUhA== -gensync@^1.0.0-beta.1: +gensync@^1.0.0-beta.1, gensync@^1.0.0-beta.2: version "1.0.0-beta.2" resolved "https://registry.yarnpkg.com/gensync/-/gensync-1.0.0-beta.2.tgz#32a6ee76c3d7f52d46b2b1ae5d93fea8580a25e0" integrity sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg== @@ -11961,6 +12613,17 @@ heimdalljs-fs-monitor@^0.2.3: heimdalljs "^0.2.3" heimdalljs-logger "^0.1.7" +heimdalljs-fs-monitor@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/heimdalljs-fs-monitor/-/heimdalljs-fs-monitor-1.1.0.tgz#0ad5aa1dac0a30d5940a74edeea3d515e70225e4" + integrity sha512-OH1LgPeqRo5kOzN5XhU/I4lUbqDqj0jx4+6vn33RTKcZTFmp/63KWbVrDDlk9iDlQ5j6FxmOeuoWJ2cjLjvNcQ== + dependencies: + callsites "^3.1.0" + clean-stack "^2.2.0" + extract-stack "^2.0.0" + heimdalljs "^0.2.3" + heimdalljs-logger "^0.1.7" + heimdalljs-graph@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/heimdalljs-graph/-/heimdalljs-graph-1.0.0.tgz#0059857952988e54f3a74bb23edaf669f8eaf6af" @@ -12546,7 +13209,7 @@ inquirer@^0.12.0: strip-ansi "^3.0.0" through "^2.3.6" -inquirer@^7.0.0, inquirer@^7.0.1: +inquirer@^7.0.0, inquirer@^7.0.1, 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== @@ -12735,7 +13398,7 @@ is-cidr@^3.0.0: dependencies: cidr-regex "^2.0.10" -is-core-module@^2.1.0: +is-core-module@^2.1.0, is-core-module@^2.2.0: version "2.2.0" resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.2.0.tgz#97037ef3d52224d85163f5597b2b63d9afed981a" integrity sha512-XRAfAdyyY5F5cOXn7hYQDqh2Xmii+DEfIcQGxK/uNwMHhIkPWO0g8msXcbzLe+MpGoR951MlqM/2iIlU4vKDdQ== @@ -12908,6 +13571,11 @@ is-lambda@^1.0.1: resolved "https://registry.yarnpkg.com/is-lambda/-/is-lambda-1.0.1.tgz#3d9877899e6a53efc0160504cde15f82e6f061d5" integrity sha1-PZh3iZ5qU+/AFgUEzeFfgubwYdU= +is-language-code@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/is-language-code/-/is-language-code-2.0.0.tgz#6f4d59c551d73b98c45cf9f1d3ce65cee060e65b" + integrity sha512-6xKmRRcP2YdmMBZMVS3uiJRPQgcMYolkD6hFw2Y4KjqyIyaJlCGxUt56tuu0iIV8q9r8kMEo0Gjd/GFwKrgjbw== + is-map@^2.0.2: version "2.0.2" resolved "https://registry.yarnpkg.com/is-map/-/is-map-2.0.2.tgz#00922db8c9bf73e81b7a335827bc2a43f2b91127" @@ -13930,6 +14598,11 @@ livereload-js@^2.3.0: resolved "https://registry.yarnpkg.com/livereload-js/-/livereload-js-2.4.0.tgz#447c31cf1ea9ab52fc20db615c5ddf678f78009c" integrity sha512-XPQH8Z2GDP/Hwz2PCDrh2mth4yFejwA1OZ/81Ti3LgKyhDcEjsSsqFWZojHG0va/duGd+WyosY7eXLDoOyqcPw== +livereload-js@^3.3.1: + version "3.3.1" + resolved "https://registry.yarnpkg.com/livereload-js/-/livereload-js-3.3.1.tgz#61f887468086762e61fb2987412cf9d1dda99202" + integrity sha512-CBu1gTEfzVhlOK1WASKAAJ9Qx1fHECTq0SUB67sfxwQssopTyvzqTlgl+c0h9pZ6V+Fzd2rc510ppuNusg9teQ== + load-json-file@^1.0.0: version "1.1.0" resolved "https://registry.yarnpkg.com/load-json-file/-/load-json-file-1.1.0.tgz#956905708d58b4bab4c2261b04f59f31c99374c0" @@ -14621,6 +15294,17 @@ markdown-it@^11.0.0: mdurl "^1.0.1" uc.micro "^1.0.5" +markdown-it@^12.0.2: + version "12.0.4" + resolved "https://registry.yarnpkg.com/markdown-it/-/markdown-it-12.0.4.tgz#eec8247d296327eac3ba9746bdeec9cfcc751e33" + integrity sha512-34RwOXZT8kyuOJy25oJNJoulO8L0bTHYWXcdZBYZqFnjIy3NgjeoM3FmPXIOFQ26/lSHYMr8oc62B6adxXcb3Q== + dependencies: + argparse "^2.0.1" + entities "~2.1.0" + linkify-it "^3.0.1" + mdurl "^1.0.1" + uc.micro "^1.0.5" + markdown-it@^4.3.0: version "4.4.0" resolved "https://registry.yarnpkg.com/markdown-it/-/markdown-it-4.4.0.tgz#3df373dbea587a9a7fef3e56311b68908f75c414" @@ -14767,6 +15451,11 @@ mdast-util-to-string@^2.0.0: resolved "https://registry.yarnpkg.com/mdast-util-to-string/-/mdast-util-to-string-2.0.0.tgz#b8cfe6a713e1091cb5b728fc48885a4767f8b97b" integrity sha512-AW4DRS3QbBayY/jJmD8437V1Gombjf8RSOUCMFBuo5iHi58AGEgVCKQ+ezHkZZDpAQS75hcBMpLqjpJTjtUL7w== +mdn-data@2.0.14: + version "2.0.14" + resolved "https://registry.yarnpkg.com/mdn-data/-/mdn-data-2.0.14.tgz#7113fc4281917d63ce29b43446f701e68c25ba50" + integrity sha512-dn6wd0uw5GsdswPFfsgMp5NSB0/aDe6fK94YJV/AJDYXL6HVLWBsxeq7js7Ad+mU2K9LAlwpk6kN2D5mwCPVow== + mdn-data@~1.1.0: version "1.1.4" resolved "https://registry.yarnpkg.com/mdn-data/-/mdn-data-1.1.4.tgz#50b5d4ffc4575276573c4eedb8780812a8419f01" @@ -15746,6 +16435,15 @@ npm-package-arg@^8.0.0, npm-package-arg@^8.0.1: semver "^7.0.0" validate-npm-package-name "^3.0.0" +npm-package-arg@^8.1.0: + version "8.1.1" + resolved "https://registry.yarnpkg.com/npm-package-arg/-/npm-package-arg-8.1.1.tgz#00ebf16ac395c63318e67ce66780a06db6df1b04" + integrity sha512-CsP95FhWQDwNqiYS+Q0mZ7FAEDytDZAkNxQqea6IaAFJTAY9Lhhqyl0irU/6PMc7BGfUmnsbHcqxJD7XuVM/rg== + dependencies: + hosted-git-info "^3.0.6" + semver "^7.0.0" + 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: version "1.4.8" resolved "https://registry.yarnpkg.com/npm-packlist/-/npm-packlist-1.4.8.tgz#56ee6cc135b9f98ad3d51c1c95da22bbb9b2ef3e" @@ -16904,7 +17602,7 @@ polished@^3.4.4: dependencies: "@babel/runtime" "^7.9.2" -portfinder@^1.0.25, portfinder@^1.0.26: +portfinder@^1.0.25, portfinder@^1.0.26, portfinder@^1.0.28: version "1.0.28" resolved "https://registry.yarnpkg.com/portfinder/-/portfinder-1.0.28.tgz#67c4622852bd5374dd1dd900f779f53462fac778" integrity sha512-Se+2isanIcEqf2XMHjyUKskczxbPH7dQnlMjXX6+dybayyHvAf/TCgyMRlzf/B6QDhAEFOGes0pzRo3by4AbMA== @@ -17087,7 +17785,14 @@ pretender@^3.4.3: fake-xml-http-request "^2.1.1" route-recognizer "^0.3.3" -prettier@^2.0.5, prettier@^2.1.2: +prettier-linter-helpers@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/prettier-linter-helpers/-/prettier-linter-helpers-1.0.0.tgz#d23d41fe1375646de2d0104d3454a3008802cf7b" + integrity sha512-GbK2cP9nraSSUF9N2XwUwqfzlAFlMNYYl+ShE/V+H8a9uNl/oUqB1w2EL54Jh0OlyRSd8RfWYJ3coVS4TROP2w== + dependencies: + fast-diff "^1.1.2" + +prettier@^2.0.5, prettier@^2.1.2, prettier@^2.2.1: version "2.2.1" resolved "https://registry.yarnpkg.com/prettier/-/prettier-2.2.1.tgz#795a1a78dd52f073da0cd42b21f9c91381923ff5" integrity sha512-PqyhM2yCjg/oKkFPtTGUojv7gnZAoG80ttl45O6x2Ug/rMJw4wcc9k6aaf2hibP7BGVCCM33gZoGjyvt9mm16Q== @@ -17229,7 +17934,7 @@ promise.allsettled@^1.0.0: get-intrinsic "^1.0.2" iterate-value "^1.0.2" -promise.hash.helper@^1.0.6: +promise.hash.helper@^1.0.6, promise.hash.helper@^1.0.7: version "1.0.7" resolved "https://registry.yarnpkg.com/promise.hash.helper/-/promise.hash.helper-1.0.7.tgz#2f39d8495df40dcdfbc1d5be9e9e56efeae7f180" integrity sha512-0qhWYyCV9TYDMSooYw1fShIb7R6hsWYja7JLqbeb1MvHqDTvP/uy/R1RsyVqDi6GCiHOI4G5p2Hpr3IA+/l/+Q== @@ -17428,7 +18133,7 @@ quick-temp@^0.1.2, quick-temp@^0.1.3, quick-temp@^0.1.5, quick-temp@^0.1.8: rimraf "^2.5.4" underscore.string "~3.3.4" -qunit-dom@^1.2.0: +qunit-dom@^1.2.0, qunit-dom@^1.6.0: version "1.6.0" resolved "https://registry.yarnpkg.com/qunit-dom/-/qunit-dom-1.6.0.tgz#a4bea6a46329d221e4a317d712cb40709107b977" integrity sha512-YwSqcLjQcRI0fUFpaSWwU10KIJPFW5Qh+d3cT5DOgx81dypRuUSiPkKFmBY/CDs/R1KdHRadthkcXg2rqAon8Q== @@ -17438,7 +18143,7 @@ qunit-dom@^1.2.0: ember-cli-babel "^7.23.0" ember-cli-version-checker "^5.1.1" -qunit@^2.9.3: +qunit@^2.13.0, qunit@^2.9.3: version "2.14.0" resolved "https://registry.yarnpkg.com/qunit/-/qunit-2.14.0.tgz#6f913903e71ebe24ef4a4dada2b796fb52285051" integrity sha512-CYfenbgdpmhl2Ql2rDrrj0felY4h8k6lYhtWwGBCLL4qQC33YOj0psV8MWo85L1i0SIOmEDRXkFopWnGCLmf7g== @@ -18485,6 +19190,14 @@ resolve@^1.1.6, resolve@^1.10.0, resolve@^1.10.1, resolve@^1.11.1, resolve@^1.12 is-core-module "^2.1.0" path-parse "^1.0.6" +resolve@^1.20.0: + version "1.20.0" + resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.20.0.tgz#629a013fb3f70755d6f0b7935cc1c2c5378b1975" + integrity sha512-wENBPt4ySzg4ybFQW2TT1zMQucPK95HSh/nq2CFTZVOGut2+pQvSsgtda4d26YrYcr067wjbmzOG8byDPBX63A== + dependencies: + is-core-module "^2.2.0" + path-parse "^1.0.6" + responselike@1.0.2, responselike@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/responselike/-/responselike-1.0.2.tgz#918720ef3b631c5642be068f15ade5a46f4ba1e7" @@ -19264,6 +19977,18 @@ sort-package-json@^1.44.0: is-plain-obj "2.1.0" sort-object-keys "^1.1.3" +sort-package-json@^1.48.0: + version "1.49.0" + resolved "https://registry.yarnpkg.com/sort-package-json/-/sort-package-json-1.49.0.tgz#82845ab598501bb35875f326e4768a5ab5f15335" + integrity sha512-3YuqFGThwc9X0TZLYohOUJJ/P6uJIVcTeuJOc6ZWw4f1fHpTHIfVysKer4qXtrZ2zvwwU2aEcb555Bo+2fwIgQ== + dependencies: + detect-indent "^6.0.0" + detect-newline "3.1.0" + git-hooks-list "1.0.3" + globby "10.0.0" + is-plain-obj "2.1.0" + sort-object-keys "^1.1.3" + sorted-object@~2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/sorted-object/-/sorted-object-2.0.1.tgz#7d631f4bd3a798a24af1dffcfbfe83337a5df5fc" @@ -19300,7 +20025,7 @@ source-map-support@^0.4.15: dependencies: source-map "^0.5.6" -source-map-support@^0.5.13, source-map-support@^0.5.16, source-map-support@~0.5.12: +source-map-support@^0.5.13, source-map-support@^0.5.16, source-map-support@~0.5.12, source-map-support@~0.5.19: version "0.5.19" resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.19.tgz#a98b62f86dcaf4f67399648c085291ab9e8fed61" integrity sha512-Wonm7zOCIJzBGQdB+thsPar0kYuCIzYvxZwlBa87yi/Mdjv7Tip2cyVbLj5o0cFPN4EVkuTwb3GDDyUx2DGnGw== @@ -19335,7 +20060,7 @@ source-map@^0.6.0, source-map@^0.6.1, source-map@~0.6.0, source-map@~0.6.1: resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263" integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== -source-map@^0.7.3: +source-map@^0.7.3, source-map@~0.7.2: version "0.7.3" resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.7.3.tgz#5302f8169031735226544092e64981f751750383" integrity sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ== @@ -20156,6 +20881,14 @@ temp@0.9.1: dependencies: rimraf "~2.6.2" +temp@0.9.4: + version "0.9.4" + resolved "https://registry.yarnpkg.com/temp/-/temp-0.9.4.tgz#cd20a8580cb63635d0e4e9d4bd989d44286e7620" + integrity sha512-yYrrsWnrXMcdsnu/7YMYAofM1ktpL5By7vZhf15CrXijWWrEYZks5AXBudalfSWJLlnen/QUJUB5aoB0kqZUGA== + dependencies: + mkdirp "^0.5.1" + rimraf "~2.6.2" + term-size@^1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/term-size/-/term-size-1.2.0.tgz#458b83887f288fc56d6fffbfad262e26638efa69" @@ -20207,6 +20940,15 @@ terser@^4.1.2, terser@^4.3.9, terser@^4.6.3, terser@^4.8.0: source-map "~0.6.1" source-map-support "~0.5.12" +terser@^5.3.0: + version "5.6.0" + resolved "https://registry.yarnpkg.com/terser/-/terser-5.6.0.tgz#138cdf21c5e3100b1b3ddfddf720962f88badcd2" + integrity sha512-vyqLMoqadC1uR0vywqOZzriDYzgEkNJFK4q9GeyOBHIbiECHiWLKcWfbQWAUaPfxkjDhapSlZB9f7fkMrvkVjA== + dependencies: + commander "^2.20.0" + source-map "~0.7.2" + source-map-support "~0.5.19" + test-exclude@^6.0.0: version "6.0.0" resolved "https://registry.yarnpkg.com/test-exclude/-/test-exclude-6.0.0.tgz#04a8698661d805ea6fa293b6cb9e63ac044ef15e" @@ -20216,7 +20958,7 @@ test-exclude@^6.0.0: glob "^7.1.4" minimatch "^3.0.4" -testem@^3.1.0: +testem@^3.1.0, testem@^3.2.0: version "3.2.0" resolved "https://registry.yarnpkg.com/testem/-/testem-3.2.0.tgz#9924481f6a3b23e350fa77bb251c64d801c4c9a7" integrity sha512-FkFzNRCIzCxjbNSTxIQSC2tWn1Q2MTR/GTxusSw6uZA4byEQ7wc86TKutNnoCyZ5XIaD9wo4q+dmlK0GUEqFVA== @@ -20362,6 +21104,18 @@ tiny-lr@^1.1.1: object-assign "^4.1.0" qs "^6.4.0" +tiny-lr@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/tiny-lr/-/tiny-lr-2.0.0.tgz#863659d7ce1ed201a117d8197d7f8b9a27bdc085" + integrity sha512-f6nh0VMRvhGx4KCeK1lQ/jaL0Zdb5WdR+Jk8q9OSUQnaSDxAEGH1fgqLZ+cMl5EW3F2MGnCsalBO1IsnnogW1Q== + dependencies: + body "^5.1.0" + debug "^3.1.0" + faye-websocket "^0.11.3" + livereload-js "^3.3.1" + object-assign "^4.1.0" + qs "^6.4.0" + tiny-relative-date@^1.3.0: version "1.3.0" resolved "https://registry.yarnpkg.com/tiny-relative-date/-/tiny-relative-date-1.3.0.tgz#fa08aad501ed730f31cc043181d995c39a935e07" @@ -21215,7 +21969,7 @@ uuid@^3.1.0, uuid@^3.3.2, uuid@^3.3.3: resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.4.0.tgz#b23e4358afa8a202fe7a100af1f5f883f02007ee" integrity sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A== -uuid@^8.0.0, uuid@^8.1.0, uuid@^8.3.0: +uuid@^8.0.0, uuid@^8.1.0, uuid@^8.3.0, uuid@^8.3.1: version "8.3.2" resolved "https://registry.yarnpkg.com/uuid/-/uuid-8.3.2.tgz#80d5b5ced271bb9af6c445f21a1a04c606cefbe2" integrity sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg== @@ -21240,6 +21994,14 @@ validate-npm-package-name@^3.0.0, validate-npm-package-name@~3.0.0: dependencies: builtins "^1.0.3" +validate-peer-dependencies@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/validate-peer-dependencies/-/validate-peer-dependencies-1.1.0.tgz#8240a115df121ea35b0bb082255b38b5c591d7e1" + integrity sha512-eHHxI3fNMqu8bzWPRWWgV72kBJkWwRCeEua7yC7UI6dsqC55orhxKAC3uyQfCjjToOyAZ8mpNrbQH+NMoYBn1w== + dependencies: + resolve-package-path "^3.1.0" + semver "^7.3.2" + vary@~1.1.2: version "1.1.2" resolved "https://registry.yarnpkg.com/vary/-/vary-1.1.2.tgz#2299f02c6ded30d4a5961b0b9f74524a18f634fc" @@ -21651,7 +22413,7 @@ workerpool@^5.0.1: resolved "https://registry.yarnpkg.com/workerpool/-/workerpool-5.0.4.tgz#4f67cb70ff7550a27ab94de25b0b843cd92059a2" integrity sha512-Sywova24Ow2NQ24JPB68bI89EdqMDjUXo4OpofK/QMD7C2ZVMloYBgQ5J3PChcBJHj2vspsmGx1/3nBKXtUkXQ== -workerpool@^6.0.3: +workerpool@^6.0.0, workerpool@^6.0.3: version "6.1.0" resolved "https://registry.yarnpkg.com/workerpool/-/workerpool-6.1.0.tgz#a8e038b4c94569596852de7a8ea4228eefdeb37b" integrity sha512-toV7q9rWNYha963Pl/qyeZ6wG+3nnsyvolaNUS8+R5Wtw6qJPTxIlOP1ZSvcGhEJw+l3HMMmtiNo9Gl61G4GVg==