diff --git a/ui/desktop/.eslintignore b/ui/desktop/.eslintignore index b22d5a994..c1a086935 100644 --- a/ui/desktop/.eslintignore +++ b/ui/desktop/.eslintignore @@ -13,6 +13,7 @@ # misc /coverage/ !.* +.eslintcache # ember-try /.node_modules.ember-try/ diff --git a/ui/desktop/.eslintrc.js b/ui/desktop/.eslintrc.js index 3f6869249..6d20176b1 100644 --- a/ui/desktop/.eslintrc.js +++ b/ui/desktop/.eslintrc.js @@ -7,25 +7,31 @@ 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', 'testem.js', @@ -33,22 +39,22 @@ module.exports = { 'blueprints/*/index.js', 'config/**/*.js', 'lib/*/index.js', - 'server/**/*.js' + 'server/**/*.js', ], parserOptions: { - sourceType: 'script' + sourceType: 'script', }, env: { browser: false, - node: true + node: true, }, plugins: ['node'], extends: ['plugin:node/recommended'], rules: { // this can be removed once the following is fixed // https://github.com/mysticatea/eslint-plugin-node/issues/77 - 'node/no-unpublished-require': 'off' - } - } - ] + 'node/no-unpublished-require': 'off', + }, + }, + ], }; diff --git a/ui/desktop/.prettierignore b/ui/desktop/.prettierignore new file mode 100644 index 000000000..922165552 --- /dev/null +++ b/ui/desktop/.prettierignore @@ -0,0 +1,21 @@ +# unconventional js +/blueprints/*/files/ +/vendor/ + +# compiled output +/dist/ +/tmp/ + +# dependencies +/bower_components/ +/node_modules/ + +# misc +/coverage/ +!.* +.eslintcache + +# ember-try +/.node_modules.ember-try/ +/bower.json.ember-try +/package.json.ember-try diff --git a/ui/desktop/.prettierrc.js b/ui/desktop/.prettierrc.js new file mode 100644 index 000000000..534e6d35a --- /dev/null +++ b/ui/desktop/.prettierrc.js @@ -0,0 +1,5 @@ +'use strict'; + +module.exports = { + singleQuote: true, +}; diff --git a/ui/desktop/.template-lintrc.js b/ui/desktop/.template-lintrc.js index 68511a97a..c95107553 100644 --- a/ui/desktop/.template-lintrc.js +++ b/ui/desktop/.template-lintrc.js @@ -5,6 +5,6 @@ module.exports = { rules: { 'no-bare-strings': true, 'no-curly-component-invocation': { allow: ['app-name'] }, - 'no-implicit-this': { allow: ['app-name', 'is-loading'] } - } + 'no-implicit-this': { allow: ['app-name', 'is-loading'] }, + }, }; diff --git a/ui/desktop/.travis.yml b/ui/desktop/.travis.yml new file mode 100644 index 000000000..aa771282f --- /dev/null +++ b/ui/desktop/.travis.yml @@ -0,0 +1,28 @@ +--- +language: node_js +node_js: + - "10" + +dist: xenial + +addons: + chrome: stable + +cache: + yarn: true + +env: + global: + # See https://git.io/vdao3 for details. + - JOBS=1 + +branches: + only: + - master + +before_install: + - curl -o- -L https://yarnpkg.com/install.sh | bash + - export PATH=$HOME/.yarn/bin:$PATH + +script: + - yarn test diff --git a/ui/desktop/app/components/copyable/index.js b/ui/desktop/app/components/copyable/index.js index 86a18c2ea..a30ff3aca 100644 --- a/ui/desktop/app/components/copyable/index.js +++ b/ui/desktop/app/components/copyable/index.js @@ -37,6 +37,7 @@ export default class CopyableComponent extends Component { this.copied = true; yield timeout(1000); this.copied = false; + /* eslint-disable-next-line prettier/prettier */ }).drop() confirmCopyTimer; /** diff --git a/ui/desktop/app/controllers/scopes/scope/authenticate.js b/ui/desktop/app/controllers/scopes/scope/authenticate.js index 93bb9beda..46ce98c66 100644 --- a/ui/desktop/app/controllers/scopes/scope/authenticate.js +++ b/ui/desktop/app/controllers/scopes/scope/authenticate.js @@ -2,7 +2,6 @@ import Controller from '@ember/controller'; import { inject as service } from '@ember/service'; export default class ScopesScopeAuthenticateController extends Controller { - // =services @service origin; diff --git a/ui/desktop/app/controllers/scopes/scope/projects/sessions/index.js b/ui/desktop/app/controllers/scopes/scope/projects/sessions/index.js index 0cfb61dbf..7b1d3cc3f 100644 --- a/ui/desktop/app/controllers/scopes/scope/projects/sessions/index.js +++ b/ui/desktop/app/controllers/scopes/scope/projects/sessions/index.js @@ -2,7 +2,6 @@ import Controller from '@ember/controller'; import { inject as service } from '@ember/service'; export default class ScopesScopeProjectsSessionsIndexController extends Controller { - // =sessions @service session; @@ -19,9 +18,10 @@ export default class ScopesScopeProjectsSessionsIndexController extends Controll const sessions = this.model; const sortedSessions = sessions // filter sessions by current user - .filter(session => session.user_id === userId) + .filter((session) => session.user_id === userId) // sort by created time - .sortBy('session.created_time').reverse(); + .sortBy('session.created_time') + .reverse(); return [ // then move active sessions to the top ...sortedSessions.filter((session) => session.isCancelable), @@ -29,5 +29,4 @@ export default class ScopesScopeProjectsSessionsIndexController extends Controll ...sortedSessions.filter((session) => !session.isCancelable), ]; } - } diff --git a/ui/desktop/app/controllers/scopes/scope/projects/targets/target/sessions.js b/ui/desktop/app/controllers/scopes/scope/projects/targets/target/sessions.js index 9b10b7e0d..f9ea74a2c 100644 --- a/ui/desktop/app/controllers/scopes/scope/projects/targets/target/sessions.js +++ b/ui/desktop/app/controllers/scopes/scope/projects/targets/target/sessions.js @@ -24,11 +24,9 @@ export default class ScopesScopeProjectsTargetsTargetSessionsController extends get cancelableUserSessions() { const sessions = this.sessions; const userId = this.session.data.authenticated.user_id; - const filteredSessions = - sessions.filter(session => - session.isCancelable && - session.user_id === userId - ); + const filteredSessions = sessions.filter( + (session) => session.isCancelable && session.user_id === userId + ); // Sort sessions const sortedSessions = A(filteredSessions).sortBy('created_time').reverse(); diff --git a/ui/desktop/app/initializers/origin.js b/ui/desktop/app/initializers/origin.js index 0a3abfc39..fea7a43c3 100644 --- a/ui/desktop/app/initializers/origin.js +++ b/ui/desktop/app/initializers/origin.js @@ -1,7 +1,6 @@ import { getOwner } from '@ember/application'; export function initialize(registry) { - // Lookup the application route const ApplicationRoute = registry.resolveRegistration ? registry.resolveRegistration('route:application') @@ -13,7 +12,7 @@ export function initialize(registry) { const originalBeforeModel = this.beforeModel; // Override the beforeModel hook and initialize the origin - this.beforeModel = async function() { + this.beforeModel = async function () { const origin = getOwner(this).lookup('service:origin'); return origin.updateOrigin().then( () => originalBeforeModel.apply(this, arguments), @@ -26,5 +25,5 @@ export function initialize(registry) { export default { after: 'ember-simple-auth', - initialize + initialize, }; diff --git a/ui/desktop/app/router.js b/ui/desktop/app/router.js index 0af5b7e46..041868e34 100644 --- a/ui/desktop/app/router.js +++ b/ui/desktop/app/router.js @@ -14,12 +14,12 @@ Router.map(function () { }); this.route('projects', function () { this.route('targets', function () { - this.route('target', { path: ':target_id' }, function() { + this.route('target', { path: ':target_id' }, function () { this.route('hosts'); this.route('sessions'); }); }); - this.route('sessions', function() {}); + this.route('sessions', function () {}); }); }); }); diff --git a/ui/desktop/app/routes/scopes/scope/authenticate/method.js b/ui/desktop/app/routes/scopes/scope/authenticate/method.js index f1547b90b..33b7fd324 100644 --- a/ui/desktop/app/routes/scopes/scope/authenticate/method.js +++ b/ui/desktop/app/routes/scopes/scope/authenticate/method.js @@ -37,12 +37,10 @@ export default class ScopesScopeAuthenticateMethodRoute extends Route { const authMethod = this.modelFor('scopes.scope.authenticate.method'); const authenticatorName = `authenticator:${authMethod.type}`; const requestCookies = false; - await this.session.authenticate( - authenticatorName, - creds, - requestCookies, - { scope, authMethod } - ); + await this.session.authenticate(authenticatorName, creds, requestCookies, { + scope, + authMethod, + }); this.replaceWith('index'); } } diff --git a/ui/desktop/app/routes/scopes/scope/projects.js b/ui/desktop/app/routes/scopes/scope/projects.js index e579d7efb..1f4387f70 100644 --- a/ui/desktop/app/routes/scopes/scope/projects.js +++ b/ui/desktop/app/routes/scopes/scope/projects.js @@ -38,5 +38,4 @@ export default class ScopesScopeProjectsRoute extends Route { .query('scope', { recursive: true, scope_id: 'global' }) .filter(({ isProject }) => isProject); } - } diff --git a/ui/desktop/app/routes/scopes/scope/projects/sessions.js b/ui/desktop/app/routes/scopes/scope/projects/sessions.js index 149aedb7f..91973bf27 100644 --- a/ui/desktop/app/routes/scopes/scope/projects/sessions.js +++ b/ui/desktop/app/routes/scopes/scope/projects/sessions.js @@ -30,6 +30,7 @@ export default class ScopesScopeProjectsSessionsRoute extends Route { yield timeout(POLL_TIMEOUT_SECONDS * 1000); yield this.refresh(); } + /* eslint-disable-next-line prettier/prettier */ }).drop() poller; // =methods diff --git a/ui/desktop/app/routes/scopes/scope/projects/sessions/index.js b/ui/desktop/app/routes/scopes/scope/projects/sessions/index.js index 85b153379..704c762f5 100644 --- a/ui/desktop/app/routes/scopes/scope/projects/sessions/index.js +++ b/ui/desktop/app/routes/scopes/scope/projects/sessions/index.js @@ -1,4 +1,3 @@ import Route from '@ember/routing/route'; -export default class ScopesScopeProjectsSessionsIndexRoute extends Route { -} +export default class ScopesScopeProjectsSessionsIndexRoute extends Route {} diff --git a/ui/desktop/app/routes/scopes/scope/projects/targets.js b/ui/desktop/app/routes/scopes/scope/projects/targets.js index 867011648..6913852eb 100644 --- a/ui/desktop/app/routes/scopes/scope/projects/targets.js +++ b/ui/desktop/app/routes/scopes/scope/projects/targets.js @@ -34,6 +34,7 @@ export default class ScopesScopeProjectsTargetsRoute extends Route { yield timeout(POLL_TIMEOUT_SECONDS * 1000); yield this.refreshSessions(); } + /* eslint-disable-next-line prettier/prettier */ }).drop() poller; // =methods diff --git a/ui/desktop/app/routes/scopes/scope/projects/targets/target.js b/ui/desktop/app/routes/scopes/scope/projects/targets/target.js index 3cf2343fe..0a540c12c 100644 --- a/ui/desktop/app/routes/scopes/scope/projects/targets/target.js +++ b/ui/desktop/app/routes/scopes/scope/projects/targets/target.js @@ -1,7 +1,6 @@ import Route from '@ember/routing/route'; export default class ScopesScopeProjectsTargetsTargetRoute extends Route { - // =methods /** diff --git a/ui/desktop/app/routes/scopes/scope/projects/targets/target/hosts.js b/ui/desktop/app/routes/scopes/scope/projects/targets/target/hosts.js index ef2f5a8ab..f43e8bab4 100644 --- a/ui/desktop/app/routes/scopes/scope/projects/targets/target/hosts.js +++ b/ui/desktop/app/routes/scopes/scope/projects/targets/target/hosts.js @@ -27,11 +27,9 @@ export default class ScopesScopeProjectsTargetsTargetHostsRoute extends Route { ); // Extract host ids from all host sets - const hostIds = hostSets.map(({host_ids}) => - host_ids.content.map((hostId) => - hostId.value - ) - ) + const hostIds = hostSets.map(({ host_ids }) => + host_ids.content.map((hostId) => hostId.value) + ); // Load unique hosts const uniqueHostIds = new Set(hostIds.flat()); @@ -42,7 +40,7 @@ export default class ScopesScopeProjectsTargetsTargetHostsRoute extends Route { [...uniqueHostIds].map((hostId) => this.store.findRecord('host', hostId) ) - ) - }) + ), + }); } } diff --git a/ui/desktop/app/routes/scopes/scope/projects/targets/target/index.js b/ui/desktop/app/routes/scopes/scope/projects/targets/target/index.js index 0f92ba860..82513fa81 100644 --- a/ui/desktop/app/routes/scopes/scope/projects/targets/target/index.js +++ b/ui/desktop/app/routes/scopes/scope/projects/targets/target/index.js @@ -9,5 +9,4 @@ export default class ScopesScopeProjectsTargetsTargetIndexRoute extends Route { afterModel() { this.transitionTo('scopes.scope.projects.targets.target.sessions'); } - } diff --git a/ui/desktop/app/routes/scopes/scope/projects/targets/target/sessions.js b/ui/desktop/app/routes/scopes/scope/projects/targets/target/sessions.js index 9306118c7..4f0281e2f 100644 --- a/ui/desktop/app/routes/scopes/scope/projects/targets/target/sessions.js +++ b/ui/desktop/app/routes/scopes/scope/projects/targets/target/sessions.js @@ -3,7 +3,6 @@ import { action } from '@ember/object'; import { notifySuccess, notifyError } from 'core/decorators/notify'; export default class ScopesScopeProjectsTargetsTargetSessionsRoute extends Route { - // =actions /** @@ -16,5 +15,4 @@ export default class ScopesScopeProjectsTargetsTargetSessionsRoute extends Route async cancelSession(session) { await session.cancelSession(); } - } diff --git a/ui/desktop/app/services/origin.js b/ui/desktop/app/services/origin.js index e72a738f0..a5c1f3a0e 100644 --- a/ui/desktop/app/services/origin.js +++ b/ui/desktop/app/services/origin.js @@ -4,7 +4,6 @@ import { inject as service } from '@ember/service'; import { notifyError } from 'core/decorators/notify'; export default class OriginService extends Service { - // =services @service ipc; @@ -59,11 +58,14 @@ export default class OriginService extends Service { */ async setOrigin(origin) { const originalHost = this.adapter.host; - assert(`setOrigin expects a string, you passed ${origin}`, typeof origin === 'string'); + assert( + `setOrigin expects a string, you passed ${origin}`, + typeof origin === 'string' + ); try { this.adapter.host = origin; this.rendererOrigin = origin; - if (origin !== await this.mainOrigin) { + if (origin !== (await this.mainOrigin)) { await this.ipc.invoke('setOrigin', origin); } } catch (e) { @@ -81,5 +83,4 @@ export default class OriginService extends Service { this.rendererOrigin = null; await this.ipc.invoke('resetOrigin'); } - } diff --git a/ui/desktop/app/templates/application.hbs b/ui/desktop/app/templates/application.hbs index 3bca4c490..b3750e04b 100644 --- a/ui/desktop/app/templates/application.hbs +++ b/ui/desktop/app/templates/application.hbs @@ -44,7 +44,7 @@ - + {{/if}} diff --git a/ui/desktop/config/ember-cli-update.json b/ui/desktop/config/ember-cli-update.json index 7742d41a6..6a97c18fb 100644 --- a/ui/desktop/config/ember-cli-update.json +++ b/ui/desktop/config/ember-cli-update.json @@ -3,7 +3,7 @@ "packages": [ { "name": "ember-cli", - "version": "3.20.2", + "version": "3.24.0", "blueprints": [ { "name": "app", diff --git a/ui/desktop/config/environment.js b/ui/desktop/config/environment.js index cb8bcd5cd..8e854404a 100644 --- a/ui/desktop/config/environment.js +++ b/ui/desktop/config/environment.js @@ -31,7 +31,7 @@ module.exports = function (environment) { 'ember-cli-mirage': { //enabled: ENABLE_MIRAGE, - directory: '../../addons/api/mirage' + directory: '../../addons/api/mirage', }, api: { @@ -49,9 +49,9 @@ module.exports = function (environment) { baseURL: 'https://boundaryproject.io/help/desktop', topics: { targets: '/targets', - sessions: '/sessions' - } - } + sessions: '/sessions', + }, + }, }; if (process.env.ENABLE_MIRAGE) { @@ -89,7 +89,7 @@ module.exports = function (environment) { // Use in-memory storage ENV.storage = { - memory: true + memory: true, }; } diff --git a/ui/desktop/electron-app/src/boundary-cli.js b/ui/desktop/electron-app/src/boundary-cli.js index 2227687ed..24083493b 100644 --- a/ui/desktop/electron-app/src/boundary-cli.js +++ b/ui/desktop/electron-app/src/boundary-cli.js @@ -25,7 +25,7 @@ module.exports = { const addr = origin.origin; const sanitized = { target_id: escapeAndValidateBase62(target_id), - token: escapeAndValidateBase62(token) + token: escapeAndValidateBase62(token), }; if (host_id) sanitized.host_id = escapeAndValidateBase62(host_id); const command = [ @@ -34,15 +34,15 @@ module.exports = { `-token=${sanitized.token}`, `-addr=${addr}`, '-format=json', - '--output-json-errors' + '--output-json-errors', ]; - if (host_id) command.push(`-host-id=${sanitized.host_id}`) + if (host_id) command.push(`-host-id=${sanitized.host_id}`); return spawnAsyncJSONPromise(command); }, // Returns JSON-formatted version information from the CLI version: () => { - const command = [ '-v' ]; + const command = ['-v']; const rawOutput = spawnSync(command); let gitRevision = /Git Revision:\s*(?.*)\n/.exec(rawOutput); let versionNumber = /Version Number:\s*(?.*)\n/.exec(rawOutput); @@ -53,5 +53,5 @@ module.exports = { : `CLI Commit: ${gitRevision}`; return { gitRevision, versionNumber, formatted }; return rawOutput; - } -} + }, +}; diff --git a/ui/desktop/electron-app/src/content-security-policy.js b/ui/desktop/electron-app/src/content-security-policy.js index 41bd1e148..6f5156bb6 100644 --- a/ui/desktop/electron-app/src/content-security-policy.js +++ b/ui/desktop/electron-app/src/content-security-policy.js @@ -20,8 +20,8 @@ const enableDevCSP = () => { csp['style-src'].push("'unsafe-inline'"); csp['script-src'].push("'unsafe-eval'"); csp['script-src'].push("'unsafe-inline'"); - csp['script-src'].push("http://localhost:7020"); - csp['connect-src'].push("ws://localhost:7020"); + csp['script-src'].push('http://localhost:7020'); + csp['connect-src'].push('ws://localhost:7020'); }; const generateCSPHeader = () => { @@ -33,14 +33,13 @@ const generateCSPHeader = () => { policy['connect-src'].push(origin.origin); } - return Object - .keys(policy) - .map(key => `${key} ${policy[key].join(' ')};`) + return Object.keys(policy) + .map((key) => `${key} ${policy[key].join(' ')};`) .join(' '); -} +}; if (isDev) enableDevCSP(); module.exports = { - generateCSPHeader: generateCSPHeader + generateCSPHeader: generateCSPHeader, }; diff --git a/ui/desktop/electron-app/src/index.js b/ui/desktop/electron-app/src/index.js index 3a9e42607..bbe22a1d8 100644 --- a/ui/desktop/electron-app/src/index.js +++ b/ui/desktop/electron-app/src/index.js @@ -4,7 +4,14 @@ const { default: installExtension, EMBER_INSPECTOR, } = require('electron-devtools-installer'); -const { session, app, protocol, BrowserWindow, ipcMain, Menu } = require('electron'); +const { + session, + app, + protocol, + BrowserWindow, + ipcMain, + Menu, +} = require('electron'); require('./handlers.js'); const origin = require('./origin.js'); @@ -63,7 +70,8 @@ app.on('ready', async () => { // Disallow all permissions requests originating outside of serve://boundary, // per Electronegativity PERMISSION_REQUEST_HANDLER_GLOBAL_CHECK ses.setPermissionRequestHandler((webContents, permission, callback) => { - if (webContents.getURL().startsWith('serve://boundary')) return callback(false); + if (webContents.getURL().startsWith('serve://boundary')) + return callback(false); return callback(true); }); @@ -72,8 +80,8 @@ app.on('ready', async () => { callback({ responseHeaders: { ...details.responseHeaders, - 'Content-Security-Policy': [generateCSPHeader()] - } + 'Content-Security-Policy': [generateCSPHeader()], + }, }); }); @@ -91,7 +99,7 @@ app.on('ready', async () => { } // Configure menu in prod env - if(!isDev) { + if (!isDev) { const menuTemplate = Menu.buildFromTemplate(menu.generateMenuTemplate()); Menu.setApplicationMenu(menuTemplate); } @@ -109,7 +117,7 @@ app.on('ready', async () => { enableRemoteModule: false, allowRunningInsecureContent: false, preload: preloadPath, - disableBlinkFeatures: 'Auxclick' + disableBlinkFeatures: 'Auxclick', }, }); diff --git a/ui/desktop/electron-app/src/ipc-handler.js b/ui/desktop/electron-app/src/ipc-handler.js index 84122de1d..82cf76e19 100644 --- a/ui/desktop/electron-app/src/ipc-handler.js +++ b/ui/desktop/electron-app/src/ipc-handler.js @@ -1,10 +1,9 @@ const { ipcMain } = require('electron'); const isDev = require('electron-is-dev'); -const log = (method, request='', response='', type='log') => { - const requestString = typeof request === 'object' - ? JSON.stringify(request) - : request; +const log = (method, request = '', response = '', type = 'log') => { + const requestString = + typeof request === 'object' ? JSON.stringify(request) : request; // only log in dev mode if (isDev) { console[type]( @@ -15,7 +14,7 @@ const log = (method, request='', response='', type='log') => { } }; -module.exports = function handle (command, handler) { +module.exports = function handle(command, handler) { ipcMain.handle(command, async function (event, request) { const requestPayload = request; let result; @@ -26,7 +25,7 @@ module.exports = function handle (command, handler) { // If e is an Error instance, we need to extract the message and wrap // it in a POJO before stringifying it. If not an Error, e is assumed to // be already a POJO. - const errorMessage = (e instanceof Error) ? { message: e.message } : e; + const errorMessage = e instanceof Error ? { message: e.message } : e; result = new Error(JSON.stringify(errorMessage)); log(command, requestPayload, e, 'error'); } diff --git a/ui/desktop/electron-app/src/menu.js b/ui/desktop/electron-app/src/menu.js index 1047bb8a6..4a863826f 100644 --- a/ui/desktop/electron-app/src/menu.js +++ b/ui/desktop/electron-app/src/menu.js @@ -1,4 +1,4 @@ -const { shell } = require('electron') +const { shell } = require('electron'); const generateMenuTemplate = () => { return [ @@ -14,15 +14,13 @@ const generateMenuTemplate = () => { { role: 'hideothers' }, { role: 'unhide' }, { type: 'separator' }, - { role: 'quit' } - ] + { role: 'quit' }, + ], }, // { role: 'fileMenu' } { label: 'File', - submenu: [ - { role: 'close' } - ] + submenu: [{ role: 'close' }], }, // { role: 'editMenu' } { @@ -40,12 +38,9 @@ const generateMenuTemplate = () => { { type: 'separator' }, { label: 'Speech', - submenu: [ - { role: 'startSpeaking' }, - { role: 'stopSpeaking' } - ] - } - ] + submenu: [{ role: 'startSpeaking' }, { role: 'stopSpeaking' }], + }, + ], }, // { role: 'viewMenu' } { @@ -57,8 +52,8 @@ const generateMenuTemplate = () => { { role: 'zoomIn' }, { role: 'zoomOut' }, { type: 'separator' }, - { role: 'togglefullscreen' } - ] + { role: 'togglefullscreen' }, + ], }, // { role: 'windowMenu' } { @@ -69,21 +64,21 @@ const generateMenuTemplate = () => { { type: 'separator' }, { role: 'front' }, { type: 'separator' }, - { role: 'window' } - ] + { role: 'window' }, + ], }, { role: 'help', submenu: [ { label: 'Documentation', - click: () => shell.openExternal('https://www.boundaryproject.io') - } - ] - } - ] -} + click: () => shell.openExternal('https://www.boundaryproject.io'), + }, + ], + }, + ]; +}; module.exports = { - generateMenuTemplate: generateMenuTemplate + generateMenuTemplate: generateMenuTemplate, }; diff --git a/ui/desktop/electron-app/src/origin.js b/ui/desktop/electron-app/src/origin.js index cdb640cd2..5cc150c32 100644 --- a/ui/desktop/electron-app/src/origin.js +++ b/ui/desktop/electron-app/src/origin.js @@ -1,27 +1,27 @@ -const { net } = require('electron') +const { net } = require('electron'); const requestTimeoutSeconds = 10; // Simple promise wrapper around Electron's net.request feature. // https://www.electronjs.org/docs/api/client-request -const netRequestPromise = url => new Promise((resolve, reject) => { - try { - const request = net.request(url); - // We don't worry about canceling the request timeout timer once a - // request ends because: request.abort() has no effect after a request - // ends and the promise will already have been completed, so a rejection - // has no effect either. - const requestTimeout = - setTimeout(() => { +const netRequestPromise = (url) => + new Promise((resolve, reject) => { + try { + const request = net.request(url); + // We don't worry about canceling the request timeout timer once a + // request ends because: request.abort() has no effect after a request + // ends and the promise will already have been completed, so a rejection + // has no effect either. + const requestTimeout = setTimeout(() => { request.abort(); reject(new Error('Request timeout')); }, requestTimeoutSeconds * 1000); - request.on('error', reject); - request.on('response', resolve); - request.end(); - } catch (e) { - reject(e); - } -}); + request.on('error', reject); + request.on('response', resolve); + request.end(); + } catch (e) { + reject(e); + } + }); // Provides a singleton class instance to enable a consistent view of // runtime settings across the application. @@ -30,7 +30,6 @@ const netRequestPromise = url => new Promise((resolve, reject) => { // set up at runtime. For example, the Boundary origin is a runtime setting. class RuntimeSettings { - // Internal private origin is exposed via getter/setter below. #origin = undefined; @@ -38,7 +37,9 @@ class RuntimeSettings { * The user-specified Boundary origin, which should be allowed by CSP. * @type {?string} */ - get origin() { return this.#origin; } + get origin() { + return this.#origin; + } set origin(origin) { if (this.#origin !== origin) { this.#origin = origin; @@ -79,7 +80,7 @@ class RuntimeSettings { } triggerOriginChanged() { - this.#originWatchers.forEach(fn => fn(this.#origin)); + this.#originWatchers.forEach((fn) => fn(this.#origin)); } } diff --git a/ui/desktop/electron-app/src/spawn-promise.js b/ui/desktop/electron-app/src/spawn-promise.js index ba08e2685..d9f44c7a8 100644 --- a/ui/desktop/electron-app/src/spawn-promise.js +++ b/ui/desktop/electron-app/src/spawn-promise.js @@ -5,13 +5,13 @@ const boundaryPath = path.resolve(__dirname, '..', 'cli', 'boundary'); // Convert to json const jsonify = (data) => { - if(typeof data !== 'string') data = JSON.stringify(data); + if (typeof data !== 'string') data = JSON.stringify(data); try { return JSON.parse(data); } catch (e) { // Ignore parse errors } -} +}; // You can throw exceptions, or allow them to occur, and this is supported. // Exceptions thrown in this way will be returned to the UI as an @@ -28,7 +28,6 @@ const jsonify = (data) => { // helpful message for users, so it's recommended to craft nice // POJO representation and throw it or promise->reject it. module.exports = { - /** * Spawns an asynchronous child process that is expected to output JSON * data on either stdout or stderr. The process is allowed to continue @@ -65,6 +64,5 @@ module.exports = { const childProcess = spawnSync(boundaryPath, command); const rawOutput = childProcess.output.toString(); return rawOutput; - } - + }, }; diff --git a/ui/desktop/ember-cli-build.js b/ui/desktop/ember-cli-build.js index 7cd77f5c0..2bec26235 100644 --- a/ui/desktop/ember-cli-build.js +++ b/ui/desktop/ember-cli-build.js @@ -5,7 +5,7 @@ const EmberApp = require('ember-cli/lib/broccoli/ember-app'); module.exports = function (defaults) { let app = new EmberApp(defaults, { 'ember-cli-babel': { - includeExternalHelpers: true + includeExternalHelpers: true, }, babel: { sourceMaps: 'inline', diff --git a/ui/desktop/package.json b/ui/desktop/package.json index e63f6435a..21aa5f5e1 100644 --- a/ui/desktop/package.json +++ b/ui/desktop/package.json @@ -15,20 +15,23 @@ "build:development": "ember build", "prebuild:desktop": "cp -r dist/ electron-app/ember-dist/", "build:desktop": "cd electron-app && yarn make", - "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:sass": "stylelint '**/*.scss'", "lint:electron": "electronegativity -r -i ./electron-app", "format": "npm-run-all format:*", "format:js": "prettier --write '{app,config,stories,tests,electron-app/src}/**/*.js' *.js", "format:sass": "prettier --write app/**/*.scss", + "lint:js:fix": "eslint . --fix", "start": "ember serve", "prestart:desktop": "cd electron-app && yarn build:cli", "start:desktop": "ember electron", "clean:coverage": "rm -rf coverage_*", "pretest": "yarn clean:coverage", - "test": "npm-run-all test:*", + "test": "npm-run-all lint test:*", "test:ember": "COVERAGE=true ember exam --random", "postinstall": "cd electron-app && yarn install", "posttest": "ember coverage-merge && yarn clean:coverage" @@ -36,50 +39,55 @@ "devDependencies": { "@doyensec/electronegativity": "^1.7.0", "@ember/jquery": "^1.1.0", - "@ember/optional-features": "^1.3.0", + "@ember/optional-features": "^2.0.0", "@ember/render-modifiers": "^1.0.2", - "@glimmer/component": "^1.0.1", - "@glimmer/tracking": "^1.0.0", + "@ember/test-helpers": "^2.1.4", + "@glimmer/component": "^1.0.3", + "@glimmer/tracking": "^1.0.3", "babel-eslint": "^10.1.0", "babel-loader": "^8.1.0", "broccoli-asset-rev": "^3.0.0", "clipboard": "^2.0.6", "core": "*", "doctoc": "^1.4.0", - "ember-auto-import": "^1.6.0", + "ember-auto-import": "^1.10.1", "ember-autofocus-modifier": "^1.1.0", - "ember-cli": "~3.20.2", - "ember-cli-app-version": "^3.2.0", - "ember-cli-babel": "^7.21.0", + "ember-cli": "~3.24.0", + "ember-cli-app-version": "^4.0.0", + "ember-cli-babel": "^7.23.0", "ember-cli-code-coverage": "^1.0.2", "ember-cli-dependency-checker": "^3.2.0", - "ember-cli-htmlbars": "^5.2.0", + "ember-cli-htmlbars": "^5.3.1", "ember-cli-inject-live-reload": "^2.0.2", "ember-cli-sass": "^10.0.1", "ember-cli-sri": "^2.1.1", "ember-cli-template-lint": "^2.0.2", - "ember-cli-uglify": "^3.0.0", + "ember-cli-terser": "^4.0.1", "ember-concurrency": "^1.3.0", "ember-electron": "https://github.com/adopted-ember-addons/ember-electron#v3.0.0-beta.4", "ember-exam": "^6.0.1", "ember-export-application-global": "^2.0.1", "ember-inline-svg": "^1.0.0", - "ember-load-initializers": "^2.1.1", + "ember-load-initializers": "^2.1.2", "ember-maybe-import-regenerator": "^0.1.6", "ember-modifier": "^2.1.1", "ember-notify": "^6.0.0", - "ember-qunit": "^4.6.0", - "ember-resolver": "^8.0.0", - "ember-source": "~3.20.2", - "ember-template-lint": "^2.14.0", - "eslint": "^7.5.0", - "eslint-plugin-ember": "^8.9.1", + "ember-page-title": "^6.0.3", + "ember-qunit": "^5.1.1", + "ember-resolver": "^8.0.2", + "ember-source": "~3.24.0", + "ember-template-lint": "^2.15.0", + "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", "faker": "^5.1.0", "loader.js": "^4.7.0", "npm-run-all": "^4.1.5", - "prettier": "^2.1.2", - "qunit-dom": "^1.2.0", + "prettier": "^2.2.1", + "qunit": "^2.13.0", + "qunit-dom": "^1.6.0", "rose": "*", "sass": "^1.29.0", "sinon": "^9.2.1", diff --git a/ui/desktop/tests/acceptance/authentication-test.js b/ui/desktop/tests/acceptance/authentication-test.js index d0f0e3fa6..a436b4b54 100644 --- a/ui/desktop/tests/acceptance/authentication-test.js +++ b/ui/desktop/tests/acceptance/authentication-test.js @@ -166,7 +166,7 @@ module('Acceptance | authentication', function (hooks) { authenticateSession({ scope: { id: instances.scopes.global.id, - type: instances.scopes.global.type + type: instances.scopes.global.type, }, }); later(async () => { diff --git a/ui/desktop/tests/index.html b/ui/desktop/tests/index.html index d6b5581a4..8653a5598 100644 --- a/ui/desktop/tests/index.html +++ b/ui/desktop/tests/index.html @@ -21,6 +21,13 @@ {{content-for "body"}} {{content-for "test-body"}} +
+
+
+
+
+
+ diff --git a/ui/desktop/tests/integration/components/branded-card-test.js b/ui/desktop/tests/integration/components/branded-card-test.js index 35e7cdaf5..019103ec5 100644 --- a/ui/desktop/tests/integration/components/branded-card-test.js +++ b/ui/desktop/tests/integration/components/branded-card-test.js @@ -3,10 +3,10 @@ import { setupRenderingTest } from 'ember-qunit'; import { render } from '@ember/test-helpers'; import { hbs } from 'ember-cli-htmlbars'; -module('Integration | Component | branded-card', function(hooks) { +module('Integration | Component | branded-card', function (hooks) { setupRenderingTest(hooks); - test('it renders', async function(assert) { + test('it renders', async function (assert) { // Set any properties with this.set('myProperty', 'value'); // Handle any actions with this.set('myAction', function(val) { ... }); diff --git a/ui/desktop/tests/test-helper.js b/ui/desktop/tests/test-helper.js index 0382a848d..e2d6cc5a0 100644 --- a/ui/desktop/tests/test-helper.js +++ b/ui/desktop/tests/test-helper.js @@ -1,8 +1,12 @@ -import Application from '../app'; -import config from '../config/environment'; +import Application from 'desktop/app'; +import config from 'desktop/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/ui/desktop/tests/unit/controllers/scopes/scope/projects/sessions/index-test.js b/ui/desktop/tests/unit/controllers/scopes/scope/projects/sessions/index-test.js index 1a9f45f78..d34ff4736 100644 --- a/ui/desktop/tests/unit/controllers/scopes/scope/projects/sessions/index-test.js +++ b/ui/desktop/tests/unit/controllers/scopes/scope/projects/sessions/index-test.js @@ -1,12 +1,17 @@ import { module, test } from 'qunit'; import { setupTest } from 'ember-qunit'; -module('Unit | Controller | scopes/scope/projects/sessions/index', function(hooks) { - setupTest(hooks); +module( + 'Unit | Controller | scopes/scope/projects/sessions/index', + function (hooks) { + setupTest(hooks); - // TODO: Replace this with your real tests. - test('it exists', function(assert) { - let controller = this.owner.lookup('controller:scopes/scope/projects/sessions/index'); - assert.ok(controller); - }); -}); + // TODO: Replace this with your real tests. + test('it exists', function (assert) { + let controller = this.owner.lookup( + 'controller:scopes/scope/projects/sessions/index' + ); + assert.ok(controller); + }); + } +); diff --git a/ui/desktop/tests/unit/controllers/scopes/scope/projects/targets/target/sessions-test.js b/ui/desktop/tests/unit/controllers/scopes/scope/projects/targets/target/sessions-test.js index f869024f9..456cd78ae 100644 --- a/ui/desktop/tests/unit/controllers/scopes/scope/projects/targets/target/sessions-test.js +++ b/ui/desktop/tests/unit/controllers/scopes/scope/projects/targets/target/sessions-test.js @@ -1,12 +1,17 @@ import { module, test } from 'qunit'; import { setupTest } from 'ember-qunit'; -module('Unit | Controller | scopes/scope/projects/targets/target/sessions', function(hooks) { - setupTest(hooks); +module( + 'Unit | Controller | scopes/scope/projects/targets/target/sessions', + function (hooks) { + setupTest(hooks); - // TODO: Replace this with your real tests. - test('it exists', function(assert) { - let controller = this.owner.lookup('controller:scopes/scope/projects/targets/target/sessions'); - assert.ok(controller); - }); -}); + // TODO: Replace this with your real tests. + test('it exists', function (assert) { + let controller = this.owner.lookup( + 'controller:scopes/scope/projects/targets/target/sessions' + ); + assert.ok(controller); + }); + } +); diff --git a/ui/desktop/tests/unit/routes/scopes/scope/projects/sessions-test.js b/ui/desktop/tests/unit/routes/scopes/scope/projects/sessions-test.js index 358be9959..51481a29d 100644 --- a/ui/desktop/tests/unit/routes/scopes/scope/projects/sessions-test.js +++ b/ui/desktop/tests/unit/routes/scopes/scope/projects/sessions-test.js @@ -1,10 +1,10 @@ import { module, test } from 'qunit'; import { setupTest } from 'ember-qunit'; -module('Unit | Route | scopes/scope/projects/sessions', function(hooks) { +module('Unit | Route | scopes/scope/projects/sessions', function (hooks) { setupTest(hooks); - test('it exists', function(assert) { + test('it exists', function (assert) { let route = this.owner.lookup('route:scopes/scope/projects/sessions'); assert.ok(route); }); diff --git a/ui/desktop/tests/unit/routes/scopes/scope/projects/sessions/index-test.js b/ui/desktop/tests/unit/routes/scopes/scope/projects/sessions/index-test.js index 5c63b65eb..72c1e5966 100644 --- a/ui/desktop/tests/unit/routes/scopes/scope/projects/sessions/index-test.js +++ b/ui/desktop/tests/unit/routes/scopes/scope/projects/sessions/index-test.js @@ -1,10 +1,10 @@ import { module, test } from 'qunit'; import { setupTest } from 'ember-qunit'; -module('Unit | Route | scopes/scope/projects/sessions/index', function(hooks) { +module('Unit | Route | scopes/scope/projects/sessions/index', function (hooks) { setupTest(hooks); - test('it exists', function(assert) { + test('it exists', function (assert) { let route = this.owner.lookup('route:scopes/scope/projects/sessions/index'); assert.ok(route); }); diff --git a/ui/desktop/tests/unit/routes/scopes/scope/projects/targets/target-test.js b/ui/desktop/tests/unit/routes/scopes/scope/projects/targets/target-test.js index 7794f4aa7..0a3e5d110 100644 --- a/ui/desktop/tests/unit/routes/scopes/scope/projects/targets/target-test.js +++ b/ui/desktop/tests/unit/routes/scopes/scope/projects/targets/target-test.js @@ -1,10 +1,10 @@ import { module, test } from 'qunit'; import { setupTest } from 'ember-qunit'; -module('Unit | Route | scopes/scope/projects/targets/target', function(hooks) { +module('Unit | Route | scopes/scope/projects/targets/target', function (hooks) { setupTest(hooks); - test('it exists', function(assert) { + test('it exists', function (assert) { let route = this.owner.lookup('route:scopes/scope/projects/targets/target'); assert.ok(route); }); diff --git a/ui/desktop/tests/unit/routes/scopes/scope/projects/targets/target/hosts-test.js b/ui/desktop/tests/unit/routes/scopes/scope/projects/targets/target/hosts-test.js index e28f35db7..906e8dd65 100644 --- a/ui/desktop/tests/unit/routes/scopes/scope/projects/targets/target/hosts-test.js +++ b/ui/desktop/tests/unit/routes/scopes/scope/projects/targets/target/hosts-test.js @@ -1,11 +1,16 @@ import { module, test } from 'qunit'; import { setupTest } from 'ember-qunit'; -module('Unit | Route | scopes/scope/projects/targets/target/hosts', function(hooks) { - setupTest(hooks); +module( + 'Unit | Route | scopes/scope/projects/targets/target/hosts', + function (hooks) { + setupTest(hooks); - test('it exists', function(assert) { - let route = this.owner.lookup('route:scopes/scope/projects/targets/target/hosts'); - assert.ok(route); - }); -}); + test('it exists', function (assert) { + let route = this.owner.lookup( + 'route:scopes/scope/projects/targets/target/hosts' + ); + assert.ok(route); + }); + } +); diff --git a/ui/desktop/tests/unit/routes/scopes/scope/projects/targets/target/index-test.js b/ui/desktop/tests/unit/routes/scopes/scope/projects/targets/target/index-test.js index d097986e4..a59d6163c 100644 --- a/ui/desktop/tests/unit/routes/scopes/scope/projects/targets/target/index-test.js +++ b/ui/desktop/tests/unit/routes/scopes/scope/projects/targets/target/index-test.js @@ -1,11 +1,16 @@ import { module, test } from 'qunit'; import { setupTest } from 'ember-qunit'; -module('Unit | Route | scopes/scope/projects/targets/target/index', function(hooks) { - setupTest(hooks); +module( + 'Unit | Route | scopes/scope/projects/targets/target/index', + function (hooks) { + setupTest(hooks); - test('it exists', function(assert) { - let route = this.owner.lookup('route:scopes/scope/projects/targets/target/index'); - assert.ok(route); - }); -}); + test('it exists', function (assert) { + let route = this.owner.lookup( + 'route:scopes/scope/projects/targets/target/index' + ); + assert.ok(route); + }); + } +); diff --git a/ui/desktop/tests/unit/routes/scopes/scope/projects/targets/target/sessions-test.js b/ui/desktop/tests/unit/routes/scopes/scope/projects/targets/target/sessions-test.js index 2208beec8..705c38be0 100644 --- a/ui/desktop/tests/unit/routes/scopes/scope/projects/targets/target/sessions-test.js +++ b/ui/desktop/tests/unit/routes/scopes/scope/projects/targets/target/sessions-test.js @@ -1,11 +1,16 @@ import { module, test } from 'qunit'; import { setupTest } from 'ember-qunit'; -module('Unit | Route | scopes/scope/projects/targets/target/sessions', function(hooks) { - setupTest(hooks); +module( + 'Unit | Route | scopes/scope/projects/targets/target/sessions', + function (hooks) { + setupTest(hooks); - test('it exists', function(assert) { - let route = this.owner.lookup('route:scopes/scope/projects/targets/target/sessions'); - assert.ok(route); - }); -}); + test('it exists', function (assert) { + let route = this.owner.lookup( + 'route:scopes/scope/projects/targets/target/sessions' + ); + assert.ok(route); + }); + } +); diff --git a/ui/desktop/tests/unit/services/ipc-test.js b/ui/desktop/tests/unit/services/ipc-test.js index f9c262130..a892ccccc 100644 --- a/ui/desktop/tests/unit/services/ipc-test.js +++ b/ui/desktop/tests/unit/services/ipc-test.js @@ -58,13 +58,13 @@ module('Unit | Service | ipc', function (hooks) { assert.expect(1); const stringifiedPayload = JSON.stringify({ foo: 'bar', - test: 42 + test: 42, }); const myWindow = { postMessage(request, origin, [port]) { // Post back an error on the response port port.postMessage(new Error(stringifiedPayload)); - } + }, }; try { await new IPCRequest('hello', 'world', myWindow); diff --git a/ui/desktop/tests/unit/services/origin-test.js b/ui/desktop/tests/unit/services/origin-test.js index c133a53a5..1355719a2 100644 --- a/ui/desktop/tests/unit/services/origin-test.js +++ b/ui/desktop/tests/unit/services/origin-test.js @@ -1,11 +1,11 @@ import { module, test } from 'qunit'; import { setupTest } from 'ember-qunit'; -module('Unit | Service | origin', function(hooks) { +module('Unit | Service | origin', function (hooks) { setupTest(hooks); // TODO: Replace this with your real tests. - test('it exists', function(assert) { + test('it exists', function (assert) { let service = this.owner.lookup('service:origin'); assert.ok(service); }); diff --git a/yarn.lock b/yarn.lock index 065b3e2da..472e735d2 100644 --- a/yarn.lock +++ b/yarn.lock @@ -783,7 +783,7 @@ dependencies: "@babel/helper-plugin-utils" "^7.10.4" -"@babel/plugin-transform-modules-amd@^7.10.1", "@babel/plugin-transform-modules-amd@^7.10.4", "@babel/plugin-transform-modules-amd@^7.10.5", "@babel/plugin-transform-modules-amd@^7.12.1": +"@babel/plugin-transform-modules-amd@^7.10.1", "@babel/plugin-transform-modules-amd@^7.10.5", "@babel/plugin-transform-modules-amd@^7.12.1": version "7.12.1" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.12.1.tgz#3154300b026185666eebb0c0ed7f8415fefcf6f9" integrity sha512-tDW8hMkzad5oDtzsB70HIQQRBiTKrhfgwC/KkJeGsaNFTdWhKNt/BiE8c5yj19XiGyrxpbkOfH87qkNg1YGlOQ== @@ -1645,19 +1645,6 @@ jquery "^3.4.1" resolve "^1.11.1" -"@ember/optional-features@^1.3.0": - version "1.3.0" - resolved "https://registry.yarnpkg.com/@ember/optional-features/-/optional-features-1.3.0.tgz#d7da860417b85a56cec88419f30da5ee1dde2756" - integrity sha512-Lrfojy4xKwTX+J4EAylmxZY2TO6bQtP4Lg5C8/z2priVqiT0X5fVB1+4WQCJbRBetctO1lMDnqjmhWCVKB8bmQ== - dependencies: - chalk "^3.0.0" - ember-cli-version-checker "^3.1.3" - glob "^7.1.6" - inquirer "^7.0.1" - mkdirp "^0.5.1" - 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" @@ -1693,7 +1680,7 @@ dependencies: ember-cli-babel "^7.4.0" -"@ember/test-helpers@^1.7.0", "@ember/test-helpers@^1.7.1": +"@ember/test-helpers@^1.7.0": version "1.7.2" resolved "https://registry.yarnpkg.com/@ember/test-helpers/-/test-helpers-1.7.2.tgz#5b128dc5f6524c3850abf52668e6bd4fda401194" integrity sha512-FEJBpbFNIaWAsCSnataiNwYFvmcpoymL/B7fXLruuJ/46BnJjzLaRPtpUIZ91w4GNTK6knxbHWXW76aVb3Aezg== @@ -1934,22 +1921,6 @@ resolved "https://registry.yarnpkg.com/@emotion/weak-memoize/-/weak-memoize-0.2.5.tgz#8eed982e2ee6f7f4e44c253e12962980791efd46" integrity sha512-6U71C2Wp7r5XtFtQzYrW5iKFT67OixrSxjI4MptCHzdSVlgabczzqLe0ZSgnub/5Kp4hSbpDB1tMytZY9pwxxA== -"@eslint/eslintrc@^0.3.0": - version "0.3.0" - resolved "https://registry.yarnpkg.com/@eslint/eslintrc/-/eslintrc-0.3.0.tgz#d736d6963d7003b6514e6324bec9c602ac340318" - integrity sha512-1JTKgrOKAHVivSvOYw+sJOunkBjUOvjqWk1DPja7ZFhIS2mX/4EgTT8M7eTK9jrKhL/FvXXEbQwIs3pg1xp3dg== - 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" - lodash "^4.17.20" - 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" @@ -1972,26 +1943,6 @@ dependencies: tslib "^2.0.1" -"@glimmer/component@^1.0.1": - version "1.0.3" - resolved "https://registry.yarnpkg.com/@glimmer/component/-/component-1.0.3.tgz#38c26fc4855fd7ad0e0816d18d80d32c578e5140" - integrity sha512-GD3gcN+Pr2flmxkt2lm5K86jwX+KRD9QQpNH+wiEQGjBXOzd46+XD5npH1sRByqLYml9rW4klflcrEfNb7dnQw== - 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/component@^1.0.3": version "1.0.4" resolved "https://registry.yarnpkg.com/@glimmer/component/-/component-1.0.4.tgz#1c85a5181615a6647f6acfaaed68e28ad7e9626e" @@ -2114,14 +2065,6 @@ "@handlebars/parser" "^1.1.0" simple-html-tokenizer "^0.5.10" -"@glimmer/tracking@^1.0.0": - version "1.0.3" - resolved "https://registry.yarnpkg.com/@glimmer/tracking/-/tracking-1.0.3.tgz#8b9b42aff6c206edeaaea178a95acc1eff62e61e" - integrity sha512-21WR13vPdzt1IQ6JmPPAu4szjV9yKdmLHV3nD0MLDj6/EoYv1c2PqpFBBlp++6xW8OnyDa++cQ8OFoQDP+MRpA== - dependencies: - "@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" @@ -5505,7 +5448,7 @@ broccoli-babel-transpiler@^6.5.0: rsvp "^4.8.2" workerpool "^2.3.0" -broccoli-babel-transpiler@^7.5.0, broccoli-babel-transpiler@^7.6.0, broccoli-babel-transpiler@^7.8.0: +broccoli-babel-transpiler@^7.5.0, broccoli-babel-transpiler@^7.8.0: version "7.8.0" resolved "https://registry.yarnpkg.com/broccoli-babel-transpiler/-/broccoli-babel-transpiler-7.8.0.tgz#7e0f01fce5739f49bbadeee7f1e625ca51cad66e" integrity sha512-dv30Td5uL7dO3NzQUqQKQs+Iq7JGKnCNtvc6GBO76uVPqGnRlsQZcYqdBVr33JrctR+ZrpTUf7TjsFKeDRFA8Q== @@ -6060,53 +6003,6 @@ broccoli-terser-sourcemap@^4.1.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" - integrity sha512-kkkn8v7kXdWwnZNekq+3ILuTAGkZoaoEMUYCKoER5/uokuoyTjtdYLHaE7UxHkuPEuLfjvJYv21sCCePZ74/2g== - dependencies: - async-promise-queue "^1.0.5" - broccoli-plugin "^1.2.1" - debug "^4.1.0" - lodash.defaultsdeep "^4.6.1" - matcher-collection "^2.0.0" - mkdirp "^0.5.0" - source-map-url "^0.4.0" - symlink-or-copy "^1.0.1" - terser "^4.3.9" - walk-sync "^1.1.3" - workerpool "^5.0.1" - -broccoli@^3.4.2: - version "3.5.0" - resolved "https://registry.yarnpkg.com/broccoli/-/broccoli-3.5.0.tgz#bdf96dc32980d1ad9f7ef5e68aaaa19e8d47b602" - integrity sha512-qGYirIs6W5NGzDPMTRtoOnveP3UQJKWFjAWdRRZJjCoAJYN872sXuO48cnNfnc/c1nd9fCR8et4knlTPgI+9yQ== - 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" - broccoli@^3.5.0: version "3.5.1" resolved "https://registry.yarnpkg.com/broccoli/-/broccoli-3.5.1.tgz#371bc63cabe700bae3a2b80cac3e978f94664418" @@ -7199,7 +7095,7 @@ commitizen@^4.0.3: strip-bom "4.0.0" strip-json-comments "3.0.1" -common-tags@^1.4.0, common-tags@^1.8.0: +common-tags@^1.8.0: version "1.8.0" resolved "https://registry.yarnpkg.com/common-tags/-/common-tags-1.8.0.tgz#8e3153e542d4a39e9b10554434afaaf98956a937" integrity sha512-6P6g0uetGpW/sdyUy/iQQCbFF0kWVMSIVSyYz7Zgjcgh8mgw8PQzDNZeyZ5DQ2gM7LBoZPHmnjz8rUthkBG5tw== @@ -7326,7 +7222,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.1.2: +console-ui@^3.0.4, 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== @@ -8504,7 +8400,7 @@ ember-assign-polyfill@^2.6.0: ember-cli-babel "^7.20.5" ember-cli-version-checker "^2.0.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: +ember-auto-import@^1.10.1, ember-auto-import@^1.2.15, ember-auto-import@^1.2.19, ember-auto-import@^1.5.3: 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== @@ -8565,14 +8461,6 @@ ember-cli-addon-docs-yuidoc@^0.2.3: lodash "^4.17.5" yuidocjs "^0.10.2" -ember-cli-app-version@^3.2.0: - version "3.2.0" - resolved "https://registry.yarnpkg.com/ember-cli-app-version/-/ember-cli-app-version-3.2.0.tgz#7b9ad0e1b63ae0518648356ee24c703e922bc26e" - integrity sha512-fHWOJElSw8JL03FNCHrT0RdWhGpWEQ4VQ10unEwwhVZ+OANNcOLz8O2dA3D5iuB4bb0fMLwjEwYZGM62+TBs1Q== - dependencies: - ember-cli-babel "^6.12.0" - git-repo-version "^1.0.2" - ember-cli-app-version@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/ember-cli-app-version/-/ember-cli-app-version-4.0.0.tgz#033057ec5fe4d3ecdf5ac5380d442e2dc9f7526a" @@ -8586,7 +8474,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.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: +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.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== @@ -8650,7 +8538,7 @@ ember-cli-babel@7.21.0: rimraf "^3.0.1" semver "^5.5.0" -ember-cli-babel@^6.0.0-beta.4, ember-cli-babel@^6.12.0, ember-cli-babel@^6.16.0, ember-cli-babel@^6.3.0, ember-cli-babel@^6.6.0, ember-cli-babel@^6.8.1, ember-cli-babel@^6.8.2, ember-cli-babel@^6.9.2: +ember-cli-babel@^6.0.0-beta.4, ember-cli-babel@^6.16.0, ember-cli-babel@^6.3.0, ember-cli-babel@^6.6.0, ember-cli-babel@^6.8.1, ember-cli-babel@^6.8.2, ember-cli-babel@^6.9.2: version "6.18.0" resolved "https://registry.yarnpkg.com/ember-cli-babel/-/ember-cli-babel-6.18.0.tgz#3f6435fd275172edeff2b634ee7b29ce74318957" integrity sha512-7ceC8joNYxY2wES16iIBlbPSxwKDBhYwC8drU3ZEvuPDMwVv1KzxCNu1fvxyFEBWhwaRNTUxSCsEVoTd9nosGA== @@ -8910,13 +8798,6 @@ ember-cli-test-info@^1.0.0: dependencies: ember-cli-string-utils "^1.0.0" -ember-cli-test-loader@^2.2.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/ember-cli-test-loader/-/ember-cli-test-loader-2.2.0.tgz#3fb8d5d1357e4460d3f0a092f5375e71b6f7c243" - integrity sha512-mlSXX9SciIRwGkFTX6XGyJYp4ry6oCFZRxh5jJ7VH8UXLTNx2ZACtDTwaWtNhYrWXgKyiDUvmD8enD56aePWRA== - 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" @@ -8995,14 +8876,6 @@ ember-cli-typescript@^4.0.0: stagehand "^1.0.0" walk-sync "^2.2.0" -ember-cli-uglify@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/ember-cli-uglify/-/ember-cli-uglify-3.0.0.tgz#8819665b2cc5fe70e3ba9fe7a94645209bc42fd6" - integrity sha512-n3QxdBfAgBdb2Cnso82Kt/nxm3ppIjnYWM8uhOEhF1aYxNXfM7AJrc+yiqTCDUR61Db8aCpHfAMvChz3kyme7g== - dependencies: - broccoli-uglify-sourcemap "^3.1.0" - lodash.defaultsdeep "^4.6.0" - ember-cli-update@^0.54.6: version "0.54.6" resolved "https://registry.yarnpkg.com/ember-cli-update/-/ember-cli-update-0.54.6.tgz#e9f405b4737558e53874025731568ae7c005a48c" @@ -9070,101 +8943,6 @@ ember-cli-version-checker@^5.0.1, ember-cli-version-checker@^5.1.1, ember-cli-ve semver "^7.3.4" silent-error "^1.1.1" -ember-cli@~3.20.2: - version "3.20.2" - resolved "https://registry.yarnpkg.com/ember-cli/-/ember-cli-3.20.2.tgz#4a5411afc32a91eb81e4fa1e6f4bc950e838c132" - integrity sha512-8ggRX+NXD9VkQt/9/GSMLcnswWNYTgE7Aw1uelexHdxGA1TqcjOjQ07ljVmgRwYVieknhDzhK3M0u3Xoa3x0HA== - dependencies: - "@babel/core" "^7.10.2" - "@babel/plugin-transform-modules-amd" "^7.10.4" - 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.4.2" - broccoli-amd-funnel "^2.0.1" - broccoli-babel-transpiler "^7.6.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.0.0" - ci-info "^2.0.0" - clean-base-url "^1.0.0" - compression "^1.7.4" - configstore "^5.0.1" - console-ui "^3.1.1" - 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 "^2.0.1" - ensure-posix-path "^1.1.1" - execa "^1.0.0" - exit "^0.1.2" - express "^4.17.1" - filesize "^6.1.0" - find-up "^4.1.0" - find-yarn-workspace-root "^1.2.1" - fixturify-project "^2.1.0" - fs-extra "^9.0.0" - 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 "^0.2.3" - 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" - isbinaryfile "^4.0.6" - js-yaml "^3.13.1" - json-stable-stringify "^1.0.1" - leek "0.0.24" - lodash.template "^4.5.0" - markdown-it "^11.0.0" - markdown-it-terminal "0.2.1" - minimatch "^3.0.4" - morgan "^1.10.0" - nopt "^3.0.6" - npm-package-arg "^8.0.1" - p-defer "^3.0.0" - portfinder "^1.0.26" - promise-map-series "^0.3.0" - promise.hash.helper "^1.0.6" - quick-temp "^0.1.8" - resolve "^1.17.0" - resolve-package-path "^2.0.0" - sane "^4.1.0" - semver "^7.3.2" - silent-error "^1.1.1" - sort-package-json "^1.44.0" - symlink-or-copy "^1.3.1" - temp "0.9.1" - testem "^3.1.0" - tiny-lr "^1.1.1" - tree-sync "^2.1.0" - uuid "^8.1.0" - walk-sync "^2.2.0" - 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" @@ -9516,7 +9294,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.2: +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== @@ -9593,19 +9371,6 @@ ember-page-title@^6.0.3: dependencies: ember-cli-babel "^7.22.1" -ember-qunit@^4.6.0: - version "4.6.0" - resolved "https://registry.yarnpkg.com/ember-qunit/-/ember-qunit-4.6.0.tgz#ad79fd3ff00073a8779400cc5a4b44829517590f" - integrity sha512-i5VOGn0RP8XH+5qkYDOZshbqAvO6lHgF65D0gz8vRx4DszCIvJMJO+bbftBTfYMxp6rqG85etAA6pfNxE0DqsQ== - dependencies: - "@ember/test-helpers" "^1.7.1" - broccoli-funnel "^2.0.2" - broccoli-merge-trees "^3.0.2" - common-tags "^1.4.0" - ember-cli-babel "^7.12.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" @@ -9629,7 +9394,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.2: +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== @@ -9684,13 +9449,6 @@ ember-source-channel-url@^1.0.1: dependencies: got "^8.0.1" -ember-source-channel-url@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/ember-source-channel-url/-/ember-source-channel-url-2.0.1.tgz#18b88f8a00b7746e7a456b3551abb3aea18729cc" - integrity sha512-YlLUHW9gNvxEaohIj5exykoTZb4xj9ZRTcR4J3svv9S8rjAHJUnHmqC5Fd9onCs+NGxHo7KwR/fDwsfadbDu5Q== - 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" @@ -9698,36 +9456,6 @@ ember-source-channel-url@^3.0.0: 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" - integrity sha512-THimwJmimckNdumSg0M5URQTRlXAArEhe2ricCIuYesMwyX9HwZSUMS+IbXALzktGZU8qfEqyWNXxpmQ8ThJLA== - 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.19.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-source@~3.24.0: version "3.24.2" resolved "https://registry.yarnpkg.com/ember-source/-/ember-source-3.24.2.tgz#64c593057020eb867935cf0735e758e96bb5f4cd" @@ -9758,7 +9486,7 @@ ember-source@~3.24.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.0.1: version "2.18.0" resolved "https://registry.yarnpkg.com/ember-template-lint/-/ember-template-lint-2.18.0.tgz#cba7665c2ff3c34734285768d7bf41cdd08ffb3f" integrity sha512-4J1Dk2ZaMo/nqtP4QJF+25yYnKNOewE8xopSRNGjgQpNwaUFZmZCtzJtoSJF6+SRLcMDljnewXRezugok4ljug== @@ -9998,11 +9726,6 @@ entities@^2.0.0: resolved "https://registry.yarnpkg.com/entities/-/entities-2.2.0.tgz#098dc90ebb83d8dffa089d55256b351d34c4da55" integrity sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A== -entities@~2.0.0: - version "2.0.3" - resolved "https://registry.yarnpkg.com/entities/-/entities-2.0.3.tgz#5c487e5742ab93c15abb5da22759b8590ec03b7f" - integrity sha512-MyoZ0jgnLvB2X3Lg5HqpFmn1kybDiIfEQmKzTb5apr51Rb+T3KdmMiqa70T+bhGnyv7bQ6WMj2QMHpGMmlrUYQ== - entities@~2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/entities/-/entities-2.1.0.tgz#992d3129cf7df6870b96c57858c249a120f8b8b5" @@ -10277,16 +10000,6 @@ eslint-plugin-ember@^10.1.1: 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" - integrity sha512-PQhR58omMAZzcJOB8GLWzL6l/vjRZ2Uo1eohxOmgPUyeBkHfZAMlvK+OSeneMLIr4azLQ4GISkklwv6lxb8qnw== - dependencies: - "@ember-data/rfc395-data" "^0.0.4" - ember-rfc176-data "^0.3.15" - lodash.kebabcase "^4.1.1" - snake-case "^3.0.3" - eslint-plugin-es@^3.0.0: version "3.0.1" resolved "https://registry.yarnpkg.com/eslint-plugin-es/-/eslint-plugin-es-3.0.1.tgz#75a7cdfdccddc0589934aeeb384175f221c57893" @@ -10479,49 +10192,6 @@ eslint@^7.17.0: 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" - integrity sha512-CGlMgJY56JZ9ZSYhJuhow61lMPPjUzWmChFya71Z/jilVos7mR/jPgaEfVGgMBY5DshbKdG8Ezb8FDCHcoMEMg== - dependencies: - "@babel/code-frame" "^7.0.0" - "@eslint/eslintrc" "^0.3.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.2.0" - esutils "^2.0.2" - file-entry-cache "^6.0.0" - 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" - esm@^3.2.25, esm@^3.2.4: version "3.2.25" resolved "https://registry.yarnpkg.com/esm/-/esm-3.2.25.tgz#342c18c29d56157688ba5ce31f8431fbb795cc10" @@ -10563,7 +10233,7 @@ esprima@~3.0.0: resolved "https://registry.yarnpkg.com/esprima/-/esprima-3.0.0.tgz#53cf247acda77313e551c3aa2e73342d3fb4f7d9" integrity sha1-U88kes2ncxPlUcOqLnM0LT+099k= -esquery@^1.0.1, esquery@^1.2.0: +esquery@^1.0.1: version "1.3.1" resolved "https://registry.yarnpkg.com/esquery/-/esquery-1.3.1.tgz#b78b5828aa8e214e29fb74c4d5b752e1c033da57" integrity sha512-olpvt9QG0vniUBZspVRN6lwB7hOZoTRtT+jzR+tS4ffYx2mzbw+z0XCOk44aaLYKApNX5nMm+E+P6o25ip/DHQ== @@ -11001,13 +10671,6 @@ faye-websocket@^0.11.3: 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" - integrity sha1-TkkvjQTftviQA1B/btvy1QHnxvQ= - dependencies: - websocket-driver ">=0.5.1" - fb-watchman@^2.0.0: version "2.0.1" resolved "https://registry.yarnpkg.com/fb-watchman/-/fb-watchman-2.0.1.tgz#fc84fb39d2709cf3ff6d743706157bb5708a8a85" @@ -11258,7 +10921,7 @@ find-up@^3.0.0: dependencies: locate-path "^3.0.0" -find-yarn-workspace-root@^1.1.0, find-yarn-workspace-root@^1.2.1: +find-yarn-workspace-root@^1.1.0: version "1.2.1" resolved "https://registry.yarnpkg.com/find-yarn-workspace-root/-/find-yarn-workspace-root-1.2.1.tgz#40eb8e6e7c2502ddfaa2577c176f221422f860db" integrity sha512-dVtfb0WuQG+8Ag2uWkbG79hOUzEsRrhBzgfn86g2sJPkzmcpGdghbNTfUKGTxymFrY/tLIodDzLoW9nOJ4FY8Q== @@ -11415,13 +11078,6 @@ follow-redirects@^1.0.0: resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.13.2.tgz#dd73c8effc12728ba5cf4259d760ea5fb83e3147" integrity sha512-6mPTgLxYm3r6Bkkg0vNM0HTjfGrOEtsfbhagQvbxDEsEkpNhw582upBaoRZylzen6krEmxXJgt9Ju6HiI4O7BA== -for-each@^0.3.3: - version "0.3.3" - resolved "https://registry.yarnpkg.com/for-each/-/for-each-0.3.3.tgz#69b447e88a0a5d32c3e7084f3f1710034b21376e" - integrity sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw== - dependencies: - is-callable "^1.1.3" - for-in@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/for-in/-/for-in-1.0.2.tgz#81068d295a8142ec0ac726c6e2200c30fb6d5e80" @@ -11936,23 +11592,11 @@ git-read-pkt-line@0.0.8: bops "0.0.3" through "~2.2.7" -git-repo-info@^1.4.1: - version "1.4.1" - resolved "https://registry.yarnpkg.com/git-repo-info/-/git-repo-info-1.4.1.tgz#2a072823254aaf62fcf0766007d7b6651bd41943" - integrity sha1-KgcoIyVKr2L88HZgB9e2ZRvUGUM= - git-repo-info@^2.0.0, git-repo-info@^2.1.1: version "2.1.1" resolved "https://registry.yarnpkg.com/git-repo-info/-/git-repo-info-2.1.1.tgz#220ffed8cbae74ef8a80e3052f2ccb5179aed058" integrity sha512-8aCohiDo4jwjOwma4FmYFd3i97urZulL8XL24nIPxuE+GZnfsAyy/g2Shqx6OjUiFKUXZM+Yy+KHnOmmA3FVcg== -git-repo-version@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/git-repo-version/-/git-repo-version-1.0.2.tgz#2c8e9bee5d970cafc0dd58480f9dc56d9afe8e4f" - integrity sha512-OPtwtHx9E8/rTMcWT+BU6GNj6Kq/O40bHJZaZAGy+pN2RXGmeKcfr0ix4M+SQuFY8vl5L/wfPSGOAtvUT/e3Qg== - dependencies: - git-repo-info "^1.4.1" - git-transport-protocol@^0.1.0: version "0.1.0" resolved "https://registry.yarnpkg.com/git-transport-protocol/-/git-transport-protocol-0.1.0.tgz#99f4dd6389b9161eded74a9e617d6ba5ed0a6c2c" @@ -12613,14 +12257,6 @@ he@1.2.0, he@^1.2.0: resolved "https://registry.yarnpkg.com/he/-/he-1.2.0.tgz#84ae65fa7eafb165fddb61566ae14baf05664f0f" integrity sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw== -heimdalljs-fs-monitor@^0.2.3: - version "0.2.3" - resolved "https://registry.yarnpkg.com/heimdalljs-fs-monitor/-/heimdalljs-fs-monitor-0.2.3.tgz#1aedd4b1c61d86c51f6141fb75c5a3350dc41b15" - integrity sha512-fYAvqSP0CxeOjLrt61B4wux/jqZzdZnS2xfb2oc14NP6BTZ8gtgtR2op6gKFakOR8lm8GN9Xhz1K4A1ZvJ4RQw== - dependencies: - 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" @@ -13207,7 +12843,7 @@ inquirer@^0.12.0: strip-ansi "^3.0.0" through "^2.3.6" -inquirer@^7.0.0, inquirer@^7.0.1, inquirer@^7.3.3: +inquirer@^7.0.0, 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== @@ -13370,7 +13006,7 @@ is-buffer@^2.0.0: resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-2.0.5.tgz#ebc252e400d22ff8d77fa09888821a24a658c191" integrity sha512-i2R6zNFDwgEHJyQUtJEk0XFi1i0dPFn/oqjK3/vPCcDeJvW5NQ83V8QbicfF1SupOaB0h8ntgBC2YiE7dfyctQ== -is-callable@^1.1.3, is-callable@^1.1.4, is-callable@^1.2.2: +is-callable@^1.1.4, is-callable@^1.2.2: version "1.2.2" resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.2.2.tgz#c7c6715cd22d4ddb48d3e19970223aceabb080d9" integrity sha512-dnMqspv5nU3LoewK2N/y7KLtxtakvTuaCsU9FU50/QDmdbHNy/4/JuRtMHqRU22o3q+W89YQndQEeCVwK+3qrA== @@ -14591,11 +14227,6 @@ linkify-it@~1.2.0: dependencies: uc.micro "^1.0.1" -livereload-js@^2.3.0: - version "2.4.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" @@ -14854,7 +14485,7 @@ lodash.defaults@^4.2.0: resolved "https://registry.yarnpkg.com/lodash.defaults/-/lodash.defaults-4.2.0.tgz#d09178716ffea4dde9e5fb7b37f6f0802274580c" integrity sha1-0JF4cW/+pN3p5ft7N/bwgCJ0WAw= -lodash.defaultsdeep@^4.6.0, lodash.defaultsdeep@^4.6.1: +lodash.defaultsdeep@^4.6.1: version "4.6.1" resolved "https://registry.yarnpkg.com/lodash.defaultsdeep/-/lodash.defaultsdeep-4.6.1.tgz#512e9bd721d272d94e3d3a63653fa17516741ca6" integrity sha512-3j8wdDzYuWO3lM3Reg03MuQR957t287Rpcxp1njpEa8oDrikb+FwGdW3n+FELh/A6qib6yPit0j/pv9G/yeAqA== @@ -15281,17 +14912,6 @@ markdown-it-terminal@0.2.1: lodash.merge "^4.6.2" markdown-it "^8.3.1" -markdown-it@^11.0.0: - version "11.0.1" - resolved "https://registry.yarnpkg.com/markdown-it/-/markdown-it-11.0.1.tgz#b54f15ec2a2193efa66dda1eb4173baea08993d6" - integrity sha512-aU1TzmBKcWNNYvH9pjq6u92BML+Hz3h5S/QpfTFwiQF852pLT+9qHsrhM9JYipkOXZxGn+sGH8oyJE9FD9WezQ== - dependencies: - argparse "^1.0.7" - entities "~2.0.0" - linkify-it "^3.0.1" - 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" @@ -16424,7 +16044,7 @@ npm-package-arg@^7.0.0: semver "^5.6.0" validate-npm-package-name "^3.0.0" -npm-package-arg@^8.0.0, npm-package-arg@^8.0.1: +npm-package-arg@^8.0.0: version "8.1.0" resolved "https://registry.yarnpkg.com/npm-package-arg/-/npm-package-arg-8.1.0.tgz#b5f6319418c3246a1c38e1a8fbaa06231bc5308f" integrity sha512-/ep6QDxBkm9HvOhOg0heitSd7JHA1U7y1qhhlRlteYYAi9Pdb/ZV7FW5aHpkrpM8+P+4p/jjR8zCyKPBMBjSig== @@ -16795,7 +16415,7 @@ object.entries@^1.1.0: es-abstract "^1.18.0-next.1" has "^1.0.3" -object.getownpropertydescriptors@^2.0.3, object.getownpropertydescriptors@^2.1.0, object.getownpropertydescriptors@^2.1.1: +object.getownpropertydescriptors@^2.0.3, object.getownpropertydescriptors@^2.1.0: version "2.1.1" resolved "https://registry.yarnpkg.com/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.1.1.tgz#0dfda8d108074d9c563e80490c883b6661091544" integrity sha512-6DtXgZ/lIZ9hqx4GtZETobXLR/ZLaa0aqV0kzbn80Rf8Z2e/XFnhA0I7p07N2wH8bBBltr2xQPi6sbKWAY2Eng== @@ -17600,7 +17220,7 @@ polished@^3.4.4: dependencies: "@babel/runtime" "^7.9.2" -portfinder@^1.0.25, portfinder@^1.0.26, portfinder@^1.0.28: +portfinder@^1.0.25, 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== @@ -17790,7 +17410,7 @@ prettier-linter-helpers@^1.0.0: dependencies: fast-diff "^1.1.2" -prettier@^2.1.2, prettier@^2.2.1: +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== @@ -17932,7 +17552,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.7: +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== @@ -18131,7 +17751,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.6.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== @@ -18141,7 +17761,7 @@ qunit-dom@^1.2.0, qunit-dom@^1.6.0: ember-cli-babel "^7.23.0" ember-cli-version-checker "^5.1.1" -qunit@^2.13.0, qunit@^2.9.3: +qunit@^2.13.0: version "2.14.0" resolved "https://registry.yarnpkg.com/qunit/-/qunit-2.14.0.tgz#6f913903e71ebe24ef4a4dada2b796fb52285051" integrity sha512-CYfenbgdpmhl2Ql2rDrrj0felY4h8k6lYhtWwGBCLL4qQC33YOj0psV8MWo85L1i0SIOmEDRXkFopWnGCLmf7g== @@ -19963,18 +19583,6 @@ sort-object-keys@^1.1.3: resolved "https://registry.yarnpkg.com/sort-object-keys/-/sort-object-keys-1.1.3.tgz#bff833fe85cab147b34742e45863453c1e190b45" integrity sha512-855pvK+VkU7PaKYPc+Jjnmt4EzejQHyhhF33q31qG8x7maDzkeFhAAThdCYay11CISO+qAMwjOBP+fPZe0IPyg== -sort-package-json@^1.44.0: - version "1.48.1" - resolved "https://registry.yarnpkg.com/sort-package-json/-/sort-package-json-1.48.1.tgz#58629823da53a3ccccc049cb7e7300bc23072b33" - integrity sha512-YvDm1iBzhphfXtctTS0XIBlIW/2N1DZNHx3YMcZnptpZhchqH4zazUOuEWmjfNXndwamITMt9hFPliqwx1SHvQ== - 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" - 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" @@ -20872,13 +20480,6 @@ temp-dir@^2.0.0: resolved "https://registry.yarnpkg.com/temp-dir/-/temp-dir-2.0.0.tgz#bde92b05bdfeb1516e804c9c00ad45177f31321e" integrity sha512-aoBAniQmmwtcKp/7BzsH8Cxzv8OL736p7v1ihGb5e9DJ9kTwGWHrQrVB5+lfVDzfGrdRzXch+ig7LHaY1JTOrg== -temp@0.9.1: - version "0.9.1" - resolved "https://registry.yarnpkg.com/temp/-/temp-0.9.1.tgz#2d666114fafa26966cd4065996d7ceedd4dd4697" - integrity sha512-WMuOgiua1xb5R56lE0eH6ivpVmg/lq2OHm4+LtT/xtEtPQ+sz6N3bBM6WZ5FvO1lO4IKIOb43qnhoc4qxP5OeA== - 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" @@ -20929,7 +20530,7 @@ terser-webpack-plugin@^3.0.0: terser "^4.8.0" webpack-sources "^1.4.3" -terser@^4.1.2, terser@^4.3.9, terser@^4.6.3, terser@^4.8.0: +terser@^4.1.2, terser@^4.6.3, terser@^4.8.0: version "4.8.0" resolved "https://registry.yarnpkg.com/terser/-/terser-4.8.0.tgz#63056343d7c70bb29f3af665865a46fe03a0df17" integrity sha512-EAPipTNeWsb/3wLPeup1tVPaXfIaU68xMnVdPafIL1TV05OhASArYyIfFvnvJCNrR2NIOvDVNNTFRa+Re2MWyw== @@ -20956,7 +20557,7 @@ test-exclude@^6.0.0: glob "^7.1.4" minimatch "^3.0.4" -testem@^3.1.0, testem@^3.2.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== @@ -21090,18 +20691,6 @@ tiny-glob@0.2.8: globalyzer "0.1.0" globrex "^0.1.2" -tiny-lr@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/tiny-lr/-/tiny-lr-1.1.1.tgz#9fa547412f238fedb068ee295af8b682c98b2aab" - integrity sha512-44yhA3tsaRoMOjQQ+5v5mVdqef+kH6Qze9jTpqtVufgYjYt08zyZAwNwwVBj3i1rJMnR52IxOW0LK0vBzgAkuA== - dependencies: - body "^5.1.0" - debug "^3.1.0" - faye-websocket "~0.10.0" - livereload-js "^2.3.0" - 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" @@ -21910,17 +21499,6 @@ util.promisify@1.0.0: define-properties "^1.1.2" object.getownpropertydescriptors "^2.0.3" -util.promisify@^1.0.0: - version "1.1.1" - resolved "https://registry.yarnpkg.com/util.promisify/-/util.promisify-1.1.1.tgz#77832f57ced2c9478174149cae9b96e9918cd54b" - integrity sha512-/s3UsZUrIfa6xDhr7zZhnE9SLQ5RIXyYfiVnMMyMDzOc8WhWN4Nbh36H842OyurKbCDAesZOJaVyvmSl6fhGQw== - dependencies: - call-bind "^1.0.0" - define-properties "^1.1.3" - for-each "^0.3.3" - has-symbols "^1.0.1" - object.getownpropertydescriptors "^2.1.1" - util.promisify@~1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/util.promisify/-/util.promisify-1.0.1.tgz#6baf7774b80eeb0f7520d8b81d07982a59abbaee" @@ -21967,7 +21545,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.3.1: +uuid@^8.0.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== @@ -22406,11 +21984,6 @@ workerpool@^3.1.1: object-assign "4.1.1" rsvp "^4.8.4" -workerpool@^5.0.1: - version "5.0.4" - resolved "https://registry.yarnpkg.com/workerpool/-/workerpool-5.0.4.tgz#4f67cb70ff7550a27ab94de25b0b843cd92059a2" - integrity sha512-Sywova24Ow2NQ24JPB68bI89EdqMDjUXo4OpofK/QMD7C2ZVMloYBgQ5J3PChcBJHj2vspsmGx1/3nBKXtUkXQ== - workerpool@^6.0.0, workerpool@^6.0.3: version "6.1.0" resolved "https://registry.yarnpkg.com/workerpool/-/workerpool-6.1.0.tgz#a8e038b4c94569596852de7a8ea4228eefdeb37b"