diff --git a/.eslintignore b/.eslintignore index 1172e0271..1b45cf136 100644 --- a/.eslintignore +++ b/.eslintignore @@ -16,6 +16,8 @@ /packages/hbs-loader/**/*.d.ts /test-packages/support/**/*.js /test-packages/**/*.d.ts +/tests/scenarios/**/*.js +/tests/scenarios/**/*.d.ts /packages/test-setup/**/*.js /packages/test-setup/**/*.d.ts diff --git a/package.json b/package.json index 3be626aa1..e3145de74 100644 --- a/package.json +++ b/package.json @@ -13,7 +13,9 @@ "types/@babel__traverse", "types/broccoli-funnel", "types/broccoli-concat", - "types/ember-cli-htmlbars" + "types/ember-cli-htmlbars", + "tests/scenarios", + "tests/app-template" ], "nohoist": [ "**/@types/broccoli-plugin" diff --git a/packages/router/package.json b/packages/router/package.json index d1baaebf9..cc4e0fbcb 100644 --- a/packages/router/package.json +++ b/packages/router/package.json @@ -33,6 +33,7 @@ }, "devDependencies": { "@ember/optional-features": "^0.7.0", + "@ember/string": "^1.0.0", "@embroider/compat": "0.39.1", "@embroider/core": "0.39.1", "@embroider/test-support": "0.36.0", diff --git a/test-packages/engines-host-app/package.json b/test-packages/engines-host-app/package.json index f0298198d..c32eaaa31 100644 --- a/test-packages/engines-host-app/package.json +++ b/test-packages/engines-host-app/package.json @@ -25,6 +25,7 @@ "devDependencies": { "@ember/jquery": "^0.6.0", "@ember/optional-features": "^0.7.0", + "@ember/string": "^1.0.0", "@embroider/compat": "0.39.1", "@embroider/core": "0.39.1", "@embroider/router": "0.39.1", diff --git a/test-packages/fastboot-app/.travis.yml b/test-packages/fastboot-app/.travis.yml deleted file mode 100644 index 858c035b8..000000000 --- a/test-packages/fastboot-app/.travis.yml +++ /dev/null @@ -1,31 +0,0 @@ ---- -language: node_js -node_js: - - '10' - -dist: trusty - -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 - -install: - - yarn install --non-interactive - -script: - - yarn test diff --git a/test-packages/fastboot-app/app/components/check-service.hbs b/test-packages/fastboot-app/app/components/check-service.hbs deleted file mode 100644 index 6a9578aff..000000000 --- a/test-packages/fastboot-app/app/components/check-service.hbs +++ /dev/null @@ -1,14 +0,0 @@ -
- {{#if this.message}} - {{this.message}} - {{else}} - No service present - {{/if}} -
-
- {{#if this.addonFileValue}} - {{this.addonFileValue}} - {{else}} - No addon file value - {{/if}} -
\ No newline at end of file diff --git a/test-packages/fastboot-app/app/components/check-service.js b/test-packages/fastboot-app/app/components/check-service.js deleted file mode 100644 index a2f0b356f..000000000 --- a/test-packages/fastboot-app/app/components/check-service.js +++ /dev/null @@ -1,16 +0,0 @@ -import Component from '@glimmer/component'; -import { getOwner } from '@ember/application'; - -export default class CheckServiceComponent extends Component { - constructor(...args) { - super(...args); - let service = getOwner(this).lookup('service:apps-fastboot-only'); - if (service) { - this.message = service.message; - } - /* global requirejs, require */ - if (requirejs.entries['from-fastboot-addon-sample']) { - this.addonFileValue = require('from-fastboot-addon-sample').default; - } - } -} diff --git a/test-packages/fastboot-app/app/components/example.hbs b/test-packages/fastboot-app/app/components/example.hbs deleted file mode 100644 index 5c7242107..000000000 --- a/test-packages/fastboot-app/app/components/example.hbs +++ /dev/null @@ -1 +0,0 @@ -
{{this.message}}
\ No newline at end of file diff --git a/test-packages/fastboot-app/app/components/example.js b/test-packages/fastboot-app/app/components/example.js deleted file mode 100644 index 1304c1fe9..000000000 --- a/test-packages/fastboot-app/app/components/example.js +++ /dev/null @@ -1,5 +0,0 @@ -import Component from '@glimmer/component'; -import { message } from '../lib/switchable'; -export default class extends Component { - message = message; -} diff --git a/test-packages/fastboot-app/app/components/lazy-component.hbs b/test-packages/fastboot-app/app/components/lazy-component.hbs deleted file mode 100644 index f1027c4e8..000000000 --- a/test-packages/fastboot-app/app/components/lazy-component.hbs +++ /dev/null @@ -1 +0,0 @@ -
{{this.message}}
\ No newline at end of file diff --git a/test-packages/fastboot-app/app/components/lazy-component.js b/test-packages/fastboot-app/app/components/lazy-component.js deleted file mode 100644 index f590baaf0..000000000 --- a/test-packages/fastboot-app/app/components/lazy-component.js +++ /dev/null @@ -1,23 +0,0 @@ -import Component from '@glimmer/component'; -import { inject } from '@ember/service'; -import { tracked } from '@glimmer/tracking'; - -export default class LazyComponent extends Component { - @inject fastboot; - @tracked message = 'loading...'; - - constructor(...args) { - super(...args); - if (this.fastboot.isFastBoot) { - this.fastboot.deferRendering(this.loadLibrary()); - } else { - this.loadLibrary(); - } - } - - async loadLibrary() { - let library = (await import('@embroider/sample-lib')).default; - this.message = library(); - window.lazyComponentDone = true; - } -} diff --git a/test-packages/fastboot-app/app/lib/switchable.js b/test-packages/fastboot-app/app/lib/switchable.js deleted file mode 100644 index d46c1b284..000000000 --- a/test-packages/fastboot-app/app/lib/switchable.js +++ /dev/null @@ -1 +0,0 @@ -export const message = 'This is the browser implementation'; diff --git a/test-packages/fastboot-app/app/routes/index.js b/test-packages/fastboot-app/app/routes/index.js deleted file mode 100644 index a020a4a4c..000000000 --- a/test-packages/fastboot-app/app/routes/index.js +++ /dev/null @@ -1,14 +0,0 @@ -import Route from '@ember/routing/route'; -import { inject as service } from '@ember/service'; - -export default class IndexRoute extends Route { - @service - fastboot; - - beforeModel() { - // This is only to to make sure we can correctly access the request's host, which fails if FastBoot's `hostWhitelist` - // is not correctly set up. This is the case when the changes added to /dist/package.json by FastBoot are not correctly - // merged by Embroider. So this serves as a reproduction of https://github.com/embroider-build/embroider/issues/160 - return this.fastboot.isFastBoot ? this.fastboot.request.host : null; - } -} diff --git a/test-packages/fastboot-app/app/templates/index.hbs b/test-packages/fastboot-app/app/templates/index.hbs deleted file mode 100644 index 246820600..000000000 --- a/test-packages/fastboot-app/app/templates/index.hbs +++ /dev/null @@ -1,5 +0,0 @@ -
Hello from fastboot-app
- - - - \ No newline at end of file diff --git a/test-packages/fastboot-app/fastboot-tests/fastboot-basic-tests.js b/test-packages/fastboot-app/fastboot-tests/fastboot-basic-tests.js deleted file mode 100644 index 405719440..000000000 --- a/test-packages/fastboot-app/fastboot-tests/fastboot-basic-tests.js +++ /dev/null @@ -1,36 +0,0 @@ -/* eslint-env node */ - -const { module: Qmodule, test } = require('qunit'); -const setup = require('./util'); - -Qmodule('fastboot basics', function(hooks) { - setup(hooks, process.env.FASTBOOT_APP_PROD === 'true' ? ['--environment', 'production'] : undefined); - - let doc; - - hooks.before(async function() { - doc = await this.visit('/'); - }); - - test('content is rendered', async function(assert) { - assert.equal(doc.querySelector('[data-test="hello"]').textContent, 'Hello from fastboot-app'); - }); - test('found server implementation of in-app module', async function(assert) { - assert.equal(doc.querySelector('[data-test="example"]').textContent, 'This is the server implementation'); - }); - test('found server implementation of addon service', async function(assert) { - assert.equal(doc.querySelector('[data-test="addon-example"]').textContent, 'Server AddonExampleService'); - }); - test('found fastboot-only service from the app', async function(assert) { - assert.equal( - doc.querySelector('[data-test="check-service"]').textContent.trim(), - `I'm a fastboot-only service in the app` - ); - }); - test('found fastboot-only file from the addon', async function(assert) { - assert.equal(doc.querySelector('[data-test="check-addon-file"]').textContent.trim(), '42'); - }); - test('a component successfully lazy loaded some code', async function(assert) { - assert.equal(doc.querySelector('[data-test="lazy-component"]').textContent.trim(), 'From sample-lib'); - }); -}); diff --git a/test-packages/fastboot-app/fastboot-tests/util.js b/test-packages/fastboot-app/fastboot-tests/util.js deleted file mode 100644 index 0e430ee70..000000000 --- a/test-packages/fastboot-app/fastboot-tests/util.js +++ /dev/null @@ -1,39 +0,0 @@ -/* eslint-env node */ - -const FastBoot = require('fastboot'); -const { execFileSync } = require('child_process'); -const jsdom = require('jsdom'); -const { JSDOM } = jsdom; - -module.exports = function setup(hooks, buildArgs = []) { - let fastboot; - - async function visit(assert, url, { expectStatus } = {}) { - if (expectStatus == null) { - expectStatus = 200; - } - let visitOpts = { - request: { headers: { host: 'localhost:4200' } }, - }; - let page = await fastboot.visit(url, visitOpts); - assert.equal(page.statusCode, expectStatus, `status code for ${url}`); - let html = await page.html(); - let dom = new JSDOM(html); - return dom.window.document; - } - - hooks.before(async function (assert) { - if (!process.env.REUSE_FASTBOOT_BUILD) { - execFileSync('node', ['../../node_modules/ember-cli/bin/ember', 'build', ...buildArgs]); - process.env.REUSE_FASTBOOT_BUILD = 'true'; - } - fastboot = new FastBoot({ - distPath: 'dist', - resilient: false, - }); - this.visit = visit.bind(this, assert); - }); - hooks.beforeEach(function (assert) { - this.visit = visit.bind(this, assert); - }); -}; diff --git a/test-packages/fastboot-app/fastboot/lib/switchable.js b/test-packages/fastboot-app/fastboot/lib/switchable.js deleted file mode 100644 index 20aa94b62..000000000 --- a/test-packages/fastboot-app/fastboot/lib/switchable.js +++ /dev/null @@ -1 +0,0 @@ -export const message = 'This is the server implementation'; diff --git a/test-packages/fastboot-app/fastboot/services/apps-fastboot-only.js b/test-packages/fastboot-app/fastboot/services/apps-fastboot-only.js deleted file mode 100644 index b30b556dd..000000000 --- a/test-packages/fastboot-app/fastboot/services/apps-fastboot-only.js +++ /dev/null @@ -1,5 +0,0 @@ -import Service from '@ember/service'; - -export default class AppsFastbootOnlyService extends Service { - message = `I'm a fastboot-only service in the app`; -} diff --git a/test-packages/fastboot-app/package.json b/test-packages/fastboot-app/package.json deleted file mode 100644 index 53c7863ee..000000000 --- a/test-packages/fastboot-app/package.json +++ /dev/null @@ -1,77 +0,0 @@ -{ - "name": "fastboot-app", - "version": "0.0.0", - "private": true, - "description": "Small description for fastboot-app goes here", - "repository": "", - "license": "MIT", - "author": "", - "directories": { - "doc": "doc", - "test": "tests" - }, - "scripts": { - "build": "ember build --environment=production", - "lint": "npm-run-all --aggregate-output --continue-on-error --parallel lint:*", - "lint:hbs": "ember-template-lint .", - "lint:js": "eslint .", - "start": "ember serve", - "test": "npm-run-all lint:* test:*", - "test:ember": "ember test --test-port=0", - "test:ember-classic": "cross-env CLASSIC=true ember test --test-port=0", - "test:ember-production": "ember test --test-port=0 --environment=production", - "test:fastboot": "qunit fastboot-tests", - "test:fastboot-production": "cross-env FASTBOOT_APP_PROD=true qunit fastboot-tests", - "test:fastboot-classic": "cross-env CLASSIC=true FASTBOOT_APP_PROD=true qunit fastboot-tests" - }, - "devDependencies": { - "@ember/optional-features": "^1.3.0", - "@embroider/compat": "0.39.1", - "@embroider/core": "0.39.1", - "@embroider/sample-lib": "0.0.0", - "@embroider/test-support": "0.36.0", - "@embroider/webpack": "0.39.1", - "@glimmer/component": "^1.0.0", - "@glimmer/tracking": "^1.0.0", - "babel-eslint": "^10.1.0", - "broccoli-asset-rev": "^3.0.0", - "ember-auto-import": "^1.5.3", - "ember-cli": "~3.18.0", - "ember-cli-app-version": "^3.2.0", - "ember-cli-babel": "^7.20.5", - "ember-cli-dependency-checker": "^3.2.0", - "ember-cli-fastboot": "^2.2.2", - "ember-cli-htmlbars": "^4.3.1", - "ember-cli-inject-live-reload": "^2.0.2", - "ember-cli-sri": "^2.1.1", - "ember-cli-uglify": "^3.0.0", - "ember-export-application-global": "^2.0.1", - "ember-fetch": "^8.0.1", - "ember-load-initializers": "^2.1.1", - "ember-maybe-import-regenerator": "^0.1.6", - "ember-qunit": "^4.6.0", - "ember-resolver": "^8.0.0", - "ember-source": "~3.18.0", - "ember-template-lint": "^2.6.0", - "ember-welcome-page": "^4.0.0", - "eslint": "^6.8.0", - "eslint-plugin-ember": "^8.4.0", - "eslint-plugin-node": "^9.0.0", - "fastboot": "^3.1.0", - "fastboot-addon": "0.0.0", - "jsdom": "^16.2.2", - "loader.js": "^4.7.0", - "npm-run-all": "^4.1.5", - "qunit": "^2.14.1", - "qunit-dom": "^1.2.0" - }, - "engines": { - "node": "10.* || >= 12" - }, - "ember": { - "edition": "octane" - }, - "volta": { - "extends": "../../package.json" - } -} diff --git a/test-packages/fastboot-app/testem.js b/test-packages/fastboot-app/testem.js deleted file mode 100644 index 442829a1a..000000000 --- a/test-packages/fastboot-app/testem.js +++ /dev/null @@ -1,2 +0,0 @@ -const { testemConfig } = require('@embroider/test-support/suite-setup-util'); -module.exports = testemConfig(); diff --git a/test-packages/fastboot-app/tests/acceptance/basic-test.js b/test-packages/fastboot-app/tests/acceptance/basic-test.js deleted file mode 100644 index 043d7327c..000000000 --- a/test-packages/fastboot-app/tests/acceptance/basic-test.js +++ /dev/null @@ -1,49 +0,0 @@ -import { module, test } from 'qunit'; -import { - visit, - setupApplicationContext, - teardownApplicationContext, - setupContext, - teardownContext, - waitUntil, -} from '@ember/test-helpers'; - -module('Acceptance | runtime basics', function(hooks) { - let opts = { waitForSettled: true }; - - hooks.before(async function() { - await setupContext(this, opts); - await setupApplicationContext(this); - await visit('/'); - await waitUntil(() => window.lazyComponentDone); - }); - - hooks.after(async function() { - await teardownApplicationContext(this, opts); - await teardownContext(this, opts); - }); - - test('content is rendered', function(assert) { - assert.dom('[data-test="hello"]').containsText('Hello from fastboot-app'); - }); - - test('found browser implementation of in-app module', function(assert) { - assert.dom('[data-test="example"]').containsText('This is the browser implementation'); - }); - - test('found browser implementation of addon service', function(assert) { - assert.dom('[data-test="addon-example"]').containsText('Browser AddonExampleService'); - }); - - test('found no fastboot-only service from the app', function(assert) { - assert.dom('[data-test="check-service"]').containsText('No service present'); - }); - - test('found no fastboot-only file from the addon', function(assert) { - assert.dom('[data-test="check-addon-file"]').containsText('No addon file value'); - }); - - test('a component lazily loaded some code', async function(assert) { - assert.dom('[data-test="lazy-component"]').containsText('From sample-lib'); - }); -}); diff --git a/test-packages/fastboot-app/tests/test-helper.js b/test-packages/fastboot-app/tests/test-helper.js deleted file mode 100644 index 0382a848d..000000000 --- a/test-packages/fastboot-app/tests/test-helper.js +++ /dev/null @@ -1,8 +0,0 @@ -import Application from '../app'; -import config from '../config/environment'; -import { setApplication } from '@ember/test-helpers'; -import { start } from 'ember-qunit'; - -setApplication(Application.create(config.APP)); - -start(); diff --git a/test-packages/macro-sample-addon/package.json b/test-packages/macro-sample-addon/package.json index 9cb910530..292a2d66e 100644 --- a/test-packages/macro-sample-addon/package.json +++ b/test-packages/macro-sample-addon/package.json @@ -30,6 +30,7 @@ }, "devDependencies": { "@ember/optional-features": "^0.7.0", + "@ember/string": "^1.0.0", "@embroider/compat": "0.39.1", "@embroider/core": "0.39.1", "@embroider/test-support": "0.36.0", diff --git a/test-packages/macro-tests/package.json b/test-packages/macro-tests/package.json index c0aa06e4b..eef0e2aad 100644 --- a/test-packages/macro-tests/package.json +++ b/test-packages/macro-tests/package.json @@ -23,6 +23,7 @@ "devDependencies": { "@ember/jquery": "^0.6.0", "@ember/optional-features": "^0.7.0", + "@ember/string": "^1.0.0", "@embroider/compat": "0.39.1", "@embroider/core": "0.39.1", "@embroider/macros": "0.39.1", diff --git a/test-packages/static-app/package.json b/test-packages/static-app/package.json index 82af92cab..586486e9e 100644 --- a/test-packages/static-app/package.json +++ b/test-packages/static-app/package.json @@ -25,6 +25,7 @@ "devDependencies": { "@ember/jquery": "^0.5.2", "@ember/optional-features": "^0.7.0", + "@ember/string": "^1.0.0", "@embroider/compat": "0.39.1", "@embroider/core": "0.39.1", "@embroider/macros": "0.39.1", diff --git a/test-packages/support/suite-setup-util.ts b/test-packages/support/suite-setup-util.ts index c21c46eed..d20528c0e 100644 --- a/test-packages/support/suite-setup-util.ts +++ b/test-packages/support/suite-setup-util.ts @@ -1,6 +1,7 @@ import { tmpdir } from 'os'; import { basename, join, relative, resolve } from 'path'; import { readdirSync, statSync, unlinkSync, writeFileSync } from 'fs-extra'; +import execa from 'execa'; // we sometimes run our various Ember app's test suites in parallel, and // unfortunately the shared persistent caching underneath various broccoli @@ -78,6 +79,23 @@ export async function allSuites({ includeEmberTry } = { includeEmberTry: true }) } } } + + // while we convert over from test-packages to test-scenarios here we merge both together + let { stdout } = await execa('scenario-tester', ['list', '--require', 'ts-node/register', '--files=*-test.ts'], { + cwd: resolve(__dirname, '..', '..', 'tests', 'scenarios'), + preferLocal: true, + }); + + let testScenarios = stdout.split('\n'); + testScenarios.forEach(scenario => { + suites.push({ + name: scenario, + command: 'yarn', + args: ['test', '--filter', scenario], + dir: resolve(__dirname, '..', '..', 'tests', 'scenarios'), + }); + }); + return suites; } diff --git a/test-packages/fastboot-app/.editorconfig b/tests/app-template/.editorconfig similarity index 99% rename from test-packages/fastboot-app/.editorconfig rename to tests/app-template/.editorconfig index c35a00240..219985c22 100644 --- a/test-packages/fastboot-app/.editorconfig +++ b/tests/app-template/.editorconfig @@ -4,6 +4,7 @@ root = true + [*] end_of_line = lf charset = utf-8 diff --git a/test-packages/fastboot-app/.ember-cli b/tests/app-template/.ember-cli similarity index 100% rename from test-packages/fastboot-app/.ember-cli rename to tests/app-template/.ember-cli diff --git a/test-packages/fastboot-app/.eslintignore b/tests/app-template/.eslintignore similarity index 100% rename from test-packages/fastboot-app/.eslintignore rename to tests/app-template/.eslintignore diff --git a/test-packages/fastboot-app/.eslintrc.js b/tests/app-template/.eslintrc.js similarity index 55% rename from test-packages/fastboot-app/.eslintrc.js rename to tests/app-template/.eslintrc.js index f3c9d4f26..758a8e843 100644 --- a/test-packages/fastboot-app/.eslintrc.js +++ b/tests/app-template/.eslintrc.js @@ -6,23 +6,13 @@ module.exports = { parserOptions: { ecmaVersion: 2018, sourceType: 'module', - ecmaFeatures: { - legacyDecorators: true - } }, - plugins: [ - 'ember' - ], - extends: [ - 'eslint:recommended', - 'plugin:ember/recommended' - ], + plugins: ['ember'], + extends: ['eslint:recommended', 'plugin:ember/recommended'], env: { - browser: true - }, - rules: { - 'ember/no-jquery': 'error' + browser: true, }, + rules: {}, overrides: [ // node files { @@ -34,23 +24,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'], - rules: Object.assign({}, require('eslint-plugin-node').configs.recommended.rules, { - // add your custom rules and overrides for node files here - + 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/test-packages/fastboot-app/.gitignore b/tests/app-template/.gitignore similarity index 100% rename from test-packages/fastboot-app/.gitignore rename to tests/app-template/.gitignore diff --git a/test-packages/fastboot-app/.template-lintrc.js b/tests/app-template/.template-lintrc.js similarity index 63% rename from test-packages/fastboot-app/.template-lintrc.js rename to tests/app-template/.template-lintrc.js index f38737001..3b0b9af95 100644 --- a/test-packages/fastboot-app/.template-lintrc.js +++ b/tests/app-template/.template-lintrc.js @@ -1,5 +1,5 @@ 'use strict'; module.exports = { - extends: 'octane' + extends: 'octane', }; diff --git a/test-packages/fastboot-app/.watchmanconfig b/tests/app-template/.watchmanconfig similarity index 100% rename from test-packages/fastboot-app/.watchmanconfig rename to tests/app-template/.watchmanconfig diff --git a/test-packages/fastboot-app/README.md b/tests/app-template/README.md similarity index 97% rename from test-packages/fastboot-app/README.md rename to tests/app-template/README.md index b216c6787..8481bf261 100644 --- a/test-packages/fastboot-app/README.md +++ b/tests/app-template/README.md @@ -1,4 +1,4 @@ -# fastboot-app +# app-template This README outlines the details of collaborating on this Ember application. A short introduction of this app could easily go here. @@ -16,7 +16,7 @@ You will need the following things properly installed on your computer. ## Installation * `git clone ` this repository -* `cd fastboot-app` +* `cd app-template` * `yarn install` ## Running / Development diff --git a/test-packages/fastboot-app/app/app.js b/tests/app-template/app/app.js similarity index 100% rename from test-packages/fastboot-app/app/app.js rename to tests/app-template/app/app.js diff --git a/test-packages/fastboot-app/app/components/.gitkeep b/tests/app-template/app/components/.gitkeep similarity index 100% rename from test-packages/fastboot-app/app/components/.gitkeep rename to tests/app-template/app/components/.gitkeep diff --git a/test-packages/fastboot-app/app/controllers/.gitkeep b/tests/app-template/app/controllers/.gitkeep similarity index 100% rename from test-packages/fastboot-app/app/controllers/.gitkeep rename to tests/app-template/app/controllers/.gitkeep diff --git a/test-packages/fastboot-app/app/helpers/.gitkeep b/tests/app-template/app/helpers/.gitkeep similarity index 100% rename from test-packages/fastboot-app/app/helpers/.gitkeep rename to tests/app-template/app/helpers/.gitkeep diff --git a/test-packages/fastboot-app/app/index.html b/tests/app-template/app/index.html similarity index 84% rename from test-packages/fastboot-app/app/index.html rename to tests/app-template/app/index.html index 58f1ad2e6..594551b74 100644 --- a/test-packages/fastboot-app/app/index.html +++ b/tests/app-template/app/index.html @@ -3,14 +3,14 @@ - FastbootApp + AppTemplate {{content-for "head"}} - + {{content-for "head-footer"}} @@ -18,7 +18,7 @@ {{content-for "body"}} - + {{content-for "body-footer"}} diff --git a/test-packages/fastboot-app/app/models/.gitkeep b/tests/app-template/app/models/.gitkeep similarity index 100% rename from test-packages/fastboot-app/app/models/.gitkeep rename to tests/app-template/app/models/.gitkeep diff --git a/test-packages/fastboot-app/app/router.js b/tests/app-template/app/router.js similarity index 66% rename from test-packages/fastboot-app/app/router.js rename to tests/app-template/app/router.js index 224ca426a..a76187429 100644 --- a/test-packages/fastboot-app/app/router.js +++ b/tests/app-template/app/router.js @@ -1,10 +1,9 @@ import EmberRouter from '@ember/routing/router'; -import config from './config/environment'; +import config from 'app-template/config/environment'; export default class Router extends EmberRouter { location = config.locationType; rootURL = config.rootURL; } -Router.map(function() { -}); +Router.map(function () {}); diff --git a/test-packages/fastboot-app/app/routes/.gitkeep b/tests/app-template/app/routes/.gitkeep similarity index 100% rename from test-packages/fastboot-app/app/routes/.gitkeep rename to tests/app-template/app/routes/.gitkeep diff --git a/test-packages/fastboot-app/app/styles/app.css b/tests/app-template/app/styles/app.css similarity index 100% rename from test-packages/fastboot-app/app/styles/app.css rename to tests/app-template/app/styles/app.css diff --git a/test-packages/fastboot-app/app/templates/application.hbs b/tests/app-template/app/templates/application.hbs similarity index 100% rename from test-packages/fastboot-app/app/templates/application.hbs rename to tests/app-template/app/templates/application.hbs diff --git a/test-packages/fastboot-app/tests/helpers/.gitkeep b/tests/app-template/app/templates/components/.gitkeep similarity index 100% rename from test-packages/fastboot-app/tests/helpers/.gitkeep rename to tests/app-template/app/templates/components/.gitkeep diff --git a/tests/app-template/config/ember-cli-update.json b/tests/app-template/config/ember-cli-update.json new file mode 100644 index 000000000..4c36188f4 --- /dev/null +++ b/tests/app-template/config/ember-cli-update.json @@ -0,0 +1,20 @@ +{ + "schemaVersion": "1.0.0", + "packages": [ + { + "name": "ember-cli", + "version": "3.26.0", + "blueprints": [ + { + "name": "app", + "outputRepo": "https://github.com/ember-cli/ember-new-output", + "codemodsSource": "ember-app-codemods-manifest@1", + "isBaseBlueprint": true, + "options": [ + "--yarn" + ] + } + ] + } + ] +} diff --git a/test-packages/fastboot-app/config/environment.js b/tests/app-template/config/environment.js similarity index 86% rename from test-packages/fastboot-app/config/environment.js rename to tests/app-template/config/environment.js index f6e3bb933..e09edae54 100644 --- a/test-packages/fastboot-app/config/environment.js +++ b/tests/app-template/config/environment.js @@ -1,8 +1,8 @@ 'use strict'; -module.exports = function (environment) { +module.exports = function(environment) { let ENV = { - modulePrefix: 'fastboot-app', + modulePrefix: 'app-template', environment, rootURL: '/', locationType: 'auto', @@ -13,17 +13,14 @@ module.exports = function (environment) { }, EXTEND_PROTOTYPES: { // Prevent Ember Data from overriding Date.parse. - Date: false, - }, - }, - fastboot: { - hostWhitelist: [/^localhost:\d+$/], + Date: false + } }, APP: { // Here you can pass flags/options to your application instance // when it is created - }, + } }; if (environment === 'development') { diff --git a/test-packages/fastboot-app/config/optional-features.json b/tests/app-template/config/optional-features.json similarity index 100% rename from test-packages/fastboot-app/config/optional-features.json rename to tests/app-template/config/optional-features.json diff --git a/test-packages/fastboot-app/config/targets.js b/tests/app-template/config/targets.js similarity index 51% rename from test-packages/fastboot-app/config/targets.js rename to tests/app-template/config/targets.js index 8ffae3636..fb7f01b09 100644 --- a/test-packages/fastboot-app/config/targets.js +++ b/tests/app-template/config/targets.js @@ -1,12 +1,8 @@ 'use strict'; -const browsers = [ - 'last 1 Chrome versions', - 'last 1 Firefox versions', - 'last 1 Safari versions' -]; +const browsers = ['last 1 Chrome versions', 'last 1 Firefox versions', 'last 1 Safari versions']; -const isCI = !!process.env.CI; +const isCI = Boolean(process.env.CI); const isProduction = process.env.EMBER_ENV === 'production'; if (isCI || isProduction) { @@ -14,5 +10,5 @@ if (isCI || isProduction) { } module.exports = { - browsers + browsers, }; diff --git a/test-packages/fastboot-app/ember-cli-build.js b/tests/app-template/ember-cli-build.js similarity index 55% rename from test-packages/fastboot-app/ember-cli-build.js rename to tests/app-template/ember-cli-build.js index a86135438..1d9b7e50e 100644 --- a/test-packages/fastboot-app/ember-cli-build.js +++ b/tests/app-template/ember-cli-build.js @@ -2,17 +2,9 @@ const EmberApp = require('ember-cli/lib/broccoli/ember-app'); -module.exports = function(defaults) { +module.exports = function (defaults) { let app = new EmberApp(defaults, { - autoImport: { - // we have a direct dependency on qunit for use in our fastboot-tests, but - // for the standard ember tests we don't want to auto-import this, we want - // to use the copy provided magically by ember-qunit. - exclude: ['qunit'], - }, - babel: { - plugins: [require.resolve('ember-auto-import/babel-plugin')], - }, + // Add options here }); // Use `app.import` to add additional libraries to the generated @@ -28,9 +20,12 @@ module.exports = function(defaults) { // please specify an object with the list of modules as keys // along with the exports of each module as its value. - if (process.env.CLASSIC) { - return app.toTree(); - } - const Webpack = require('@embroider/webpack').Webpack; - return require('@embroider/compat').compatBuild(app, Webpack); + const { Webpack } = require('@embroider/webpack'); + return require('@embroider/compat').compatBuild(app, Webpack, { + skipBabel: [ + { + package: 'qunit', + }, + ], + }); }; diff --git a/tests/app-template/package.json b/tests/app-template/package.json new file mode 100644 index 000000000..a74b7316e --- /dev/null +++ b/tests/app-template/package.json @@ -0,0 +1,75 @@ +{ + "name": "app-template", + "version": "0.0.0", + "private": true, + "description": "Small description for app-template goes here", + "repository": "", + "license": "MIT", + "author": "", + "directories": { + "doc": "doc", + "test": "tests" + }, + "scripts": { + "build": "ember build", + "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 . --cache", + "lint:js:fix": "eslint . --fix", + "start": "ember serve", + "test": "npm-run-all lint test:*", + "test:ember": "ember test" + }, + "devDependencies": { + "@ember/optional-features": "^2.0.0", + "@ember/test-helpers": "^2.2.5", + "@embroider/compat": "0.39.1", + "@embroider/core": "0.39.1", + "@embroider/webpack": "0.39.1", + "@glimmer/component": "^1.0.4", + "@glimmer/tracking": "^1.0.4", + "babel-eslint": "^10.1.0", + "broccoli-asset-rev": "^3.0.0", + "ember-auto-import": "^1.11.2", + "ember-cli": "~3.26.0", + "ember-cli-app-version": "^5.0.0", + "ember-cli-babel": "^7.26.3", + "ember-cli-dependency-checker": "^3.2.0", + "ember-cli-htmlbars": "^5.7.1", + "ember-cli-inject-live-reload": "^2.0.2", + "ember-cli-sri": "^2.1.1", + "ember-cli-terser": "^4.0.1", + "ember-data": "~3.26.0", + "ember-export-application-global": "^2.0.1", + "ember-fetch": "^8.0.1", + "ember-load-initializers": "^2.1.2", + "ember-maybe-import-regenerator": "^0.1.6", + "ember-page-title": "^6.2.1", + "ember-qunit": "^5.1.4", + "ember-resolver": "^8.0.2", + "ember-source": "~3.26.1", + "ember-template-lint": "^3.2.0", + "eslint": "^7.23.0", + "eslint-config-prettier": "^8.1.0", + "eslint-plugin-ember": "^10.3.0", + "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.2.1", + "qunit": "^2.14.1", + "qunit-dom": "^1.6.0" + }, + "engines": { + "node": "10.* || >= 12" + }, + "ember": { + "edition": "octane" + }, + "volta": { + "node": "14.16.1", + "yarn": "1.22.5" + } +} diff --git a/test-packages/fastboot-app/public/robots.txt b/tests/app-template/public/robots.txt similarity index 100% rename from test-packages/fastboot-app/public/robots.txt rename to tests/app-template/public/robots.txt diff --git a/tests/app-template/testem.js b/tests/app-template/testem.js new file mode 100644 index 000000000..ed2f37124 --- /dev/null +++ b/tests/app-template/testem.js @@ -0,0 +1,23 @@ +'use strict'; + +module.exports = { + test_page: 'tests/index.html?hidepassed', + disable_watching: true, + launch_in_ci: ['Chrome'], + launch_in_dev: ['Chrome'], + browser_start_timeout: 120, + browser_args: { + Chrome: { + ci: [ + // --no-sandbox is needed when running Chrome inside a container + process.env.CI ? '--no-sandbox' : null, + '--headless', + '--disable-dev-shm-usage', + '--disable-software-rasterizer', + '--mute-audio', + '--remote-debugging-port=0', + '--window-size=1440,900', + ].filter(Boolean), + }, + }, +}; diff --git a/test-packages/fastboot-app/tests/integration/.gitkeep b/tests/app-template/tests/helpers/.gitkeep similarity index 100% rename from test-packages/fastboot-app/tests/integration/.gitkeep rename to tests/app-template/tests/helpers/.gitkeep diff --git a/test-packages/fastboot-app/tests/index.html b/tests/app-template/tests/index.html similarity index 69% rename from test-packages/fastboot-app/tests/index.html rename to tests/app-template/tests/index.html index 9011fa578..e87490958 100644 --- a/test-packages/fastboot-app/tests/index.html +++ b/tests/app-template/tests/index.html @@ -3,7 +3,7 @@ - FastbootApp Tests + App-Template Tests @@ -11,7 +11,7 @@ {{content-for "test-head"}} - + {{content-for "head-footer"}} @@ -21,10 +21,17 @@ {{content-for "body"}} {{content-for "test-body"}} - +
+
+
+
+
+
+ + - + {{content-for "body-footer"}} diff --git a/test-packages/fastboot-app/tests/unit/.gitkeep b/tests/app-template/tests/integration/.gitkeep similarity index 100% rename from test-packages/fastboot-app/tests/unit/.gitkeep rename to tests/app-template/tests/integration/.gitkeep diff --git a/tests/app-template/tests/test-helper.js b/tests/app-template/tests/test-helper.js new file mode 100644 index 000000000..06c62fcbb --- /dev/null +++ b/tests/app-template/tests/test-helper.js @@ -0,0 +1,12 @@ +import Application from 'app-template/app'; +import config from 'app-template/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/test-packages/fastboot-app/vendor/.gitkeep b/tests/app-template/tests/unit/.gitkeep similarity index 100% rename from test-packages/fastboot-app/vendor/.gitkeep rename to tests/app-template/tests/unit/.gitkeep diff --git a/tests/app-template/vendor/.gitkeep b/tests/app-template/vendor/.gitkeep new file mode 100644 index 000000000..e69de29bb diff --git a/tests/scenarios/.gitignore b/tests/scenarios/.gitignore new file mode 100644 index 000000000..0a288ffc1 --- /dev/null +++ b/tests/scenarios/.gitignore @@ -0,0 +1,3 @@ +**/*.js +**/*d.ts +**/*.js.map \ No newline at end of file diff --git a/tests/scenarios/fastboot-app-test.ts b/tests/scenarios/fastboot-app-test.ts new file mode 100644 index 000000000..d58a7bf85 --- /dev/null +++ b/tests/scenarios/fastboot-app-test.ts @@ -0,0 +1,306 @@ +import { appScenarios } from './scenarios'; +import { PreparedApp } from 'scenario-tester'; +import { setupFastboot } from './helpers'; +import QUnit from 'qunit'; +import merge from 'lodash/merge'; +const { module: Qmodule, test } = QUnit; + +appScenarios + .map('dynamic-import', project => { + project.linkDependency('@embroider/sample-lib', { baseDir: __dirname }); + project.linkDependency('ember-cli-fastboot', { baseDir: __dirname }); + project.linkDependency('fastboot', { baseDir: __dirname }); + project.linkDependency('fastboot-addon', { baseDir: __dirname }); + + // this fixes: Cannot find module 'abortcontroller-polyfill/dist/cjs-ponyfill' + project.removeDependency('ember-fetch'); + + merge(project.files, { + app: { + components: { + 'check-service.hbs': ` +
+ {{#if this.message}} + {{this.message}} + {{else}} + No service present + {{/if}} +
+
+ {{#if this.addonFileValue}} + {{this.addonFileValue}} + {{else}} + No addon file value + {{/if}} +
+ `, + 'check-service.js': ` + import Component from '@glimmer/component'; + import { getOwner } from '@ember/application'; + + export default class CheckServiceComponent extends Component { + constructor(...args) { + super(...args); + let service = getOwner(this).lookup('service:apps-fastboot-only'); + if (service) { + this.message = service.message; + } + /* global requirejs, require */ + if (requirejs.entries['from-fastboot-addon-sample']) { + this.addonFileValue = require('from-fastboot-addon-sample').default; + } + } + } + `, + 'example.hbs': ` +
{{this.message}}
+ `, + 'example.js': ` + import Component from '@glimmer/component'; + import { message } from '../lib/switchable'; + export default class extends Component { + message = message; + } + `, + 'lazy-component.hbs': ` +
{{this.message}}
+ `, + 'lazy-component.js': ` + import Component from '@glimmer/component'; + import { inject } from '@ember/service'; + import { tracked } from '@glimmer/tracking'; + + export default class LazyComponent extends Component { + @inject fastboot; + @tracked message = 'loading...'; + + constructor(...args) { + super(...args); + if (this.fastboot.isFastBoot) { + this.fastboot.deferRendering(this.loadLibrary()); + } else { + this.loadLibrary(); + } + } + + async loadLibrary() { + let library = (await import('@embroider/sample-lib')).default; + this.message = library(); + window.lazyComponentDone = true; + } + } + `, + }, + lib: { + 'switchable.js': ` + export const message = 'This is the browser implementation'; + `, + }, + routes: { + 'index.js': ` + import Route from '@ember/routing/route'; + import { inject as service } from '@ember/service'; + + export default class IndexRoute extends Route { + @service + fastboot; + + beforeModel() { + // This is only to to make sure we can correctly access the request's host, which fails if FastBoot's 'hostWhitelist' + // is not correctly set up. This is the case when the changes added to /dist/package.json by FastBoot are not correctly + // merged by Embroider. So this serves as a reproduction of https://github.com/embroider-build/embroider/issues/160 + return this.fastboot.isFastBoot ? this.fastboot.request.host : null; + } + } + `, + }, + templates: { + 'index.hbs': ` +
Hello from fastboot-app
+ + + + + `, + }, + }, + fastboot: { + lib: { + 'switchable.js': ` + export const message = 'This is the server implementation'; + `, + }, + services: { + 'apps-fastboot-only.js': ` + import Service from '@ember/service'; + + export default class AppsFastbootOnlyService extends Service { + message = "I'm a fastboot-only service in the app"; + } + `, + }, + }, + tests: { + acceptance: { + 'basic-test.js': ` + import { module, test } from 'qunit'; + import { visit, waitUntil } from '@ember/test-helpers'; + import { setupApplicationTest } from 'ember-qunit'; + + module('Acceptance | runtime basics', function (hooks) { + setupApplicationTest(hooks); + + hooks.beforeEach(async function () { + await visit('/'); + await waitUntil(() => window.lazyComponentDone); + }); + + test('content is rendered', function (assert) { + assert.dom('[data-test="hello"]').containsText('Hello from fastboot-app'); + }); + + test('found browser implementation of in-app module', function (assert) { + assert.dom('[data-test="example"]').containsText('This is the browser implementation'); + }); + + test('found browser implementation of addon service', function (assert) { + assert.dom('[data-test="addon-example"]').containsText('Browser AddonExampleService'); + }); + + test('found no fastboot-only service from the app', function (assert) { + assert.dom('[data-test="check-service"]').containsText('No service present'); + }); + + test('found no fastboot-only file from the addon', function (assert) { + assert.dom('[data-test="check-addon-file"]').containsText('No addon file value'); + }); + + test('a component lazily loaded some code', async function (assert) { + assert.dom('[data-test="lazy-component"]').containsText('From sample-lib'); + }); + }); + `, + }, + }, + 'ember-cli-build.js': ` + 'use strict'; + + const EmberApp = require('ember-cli/lib/broccoli/ember-app'); + + module.exports = function(defaults) { + let app = new EmberApp(defaults, {}); + + const Webpack = require('@embroider/webpack').Webpack; + return require('@embroider/compat').compatBuild(app, Webpack, { + skipBabel: [{ + package: 'qunit' + }], + }); + }; + `, + config: { + 'environment.js': ` + 'use strict'; + + module.exports = function (environment) { + let ENV = { + modulePrefix: 'app-template', + environment, + rootURL: '/', + locationType: 'auto', + EmberENV: { + FEATURES: { + // Here you can enable experimental features on an ember canary build + // e.g. EMBER_NATIVE_DECORATOR_SUPPORT: true + }, + EXTEND_PROTOTYPES: { + // Prevent Ember Data from overriding Date.parse. + Date: false, + }, + }, + fastboot: { + hostWhitelist: ['localhost:4200'], + }, + APP: { + // Here you can pass flags/options to your application instance + // when it is created + }, + }; + + if (environment === 'development') { + // ENV.APP.LOG_RESOLVER = true; + // ENV.APP.LOG_ACTIVE_GENERATION = true; + // ENV.APP.LOG_TRANSITIONS = true; + // ENV.APP.LOG_TRANSITIONS_INTERNAL = true; + // ENV.APP.LOG_VIEW_LOOKUPS = true; + } + + if (environment === 'test') { + // Testem prefers this... + ENV.locationType = 'none'; + + // keep test console output quieter + ENV.APP.LOG_ACTIVE_GENERATION = false; + ENV.APP.LOG_VIEW_LOOKUPS = false; + + ENV.APP.rootElement = '#ember-testing'; + ENV.APP.autoboot = false; + } + + if (environment === 'production') { + // here you can enable a production-specific feature + } + + return ENV; + }; + `, + }, + }); + }) + .forEachScenario(scenario => { + Qmodule(scenario.name, function (hooks) { + let app: PreparedApp; + hooks.before(async () => { + app = await scenario.prepare(); + }); + + ['production', 'development'].forEach(env => { + test(`yarn test: ${env}`, async function (assert) { + let result = await app.execute('yarn test'); + assert.equal(result.exitCode, 0, result.output); + }); + + Qmodule(`fastboot: ${env}`, function (hooks) { + let visit: any; + let doc: any; + + hooks.before(async () => { + ({ visit } = await setupFastboot(app, env)); + doc = (await visit('/')).window.document; + }); + + test('content is rendered', async function (assert) { + assert.equal(doc.querySelector('[data-test="hello"]').textContent, 'Hello from fastboot-app'); + }); + test('found server implementation of in-app module', async function (assert) { + assert.equal(doc.querySelector('[data-test="example"]').textContent, 'This is the server implementation'); + }); + test('found server implementation of addon service', async function (assert) { + assert.equal(doc.querySelector('[data-test="addon-example"]').textContent, 'Server AddonExampleService'); + }); + test('found fastboot-only service from the app', async function (assert) { + assert.equal( + doc.querySelector('[data-test="check-service"]').textContent.trim(), + `I'm a fastboot-only service in the app` + ); + }); + test('found fastboot-only file from the addon', async function (assert) { + assert.equal(doc.querySelector('[data-test="check-addon-file"]').textContent.trim(), '42'); + }); + test('a component successfully lazy loaded some code', async function (assert) { + assert.equal(doc.querySelector('[data-test="lazy-component"]').textContent.trim(), 'From sample-lib'); + }); + }); + }); + }); + }); diff --git a/tests/scenarios/helpers.ts b/tests/scenarios/helpers.ts new file mode 100644 index 000000000..cceef52b2 --- /dev/null +++ b/tests/scenarios/helpers.ts @@ -0,0 +1,30 @@ +import { PreparedApp } from 'scenario-tester'; +import { join } from 'path'; + +export async function setupFastboot(app: PreparedApp, environment = 'development') { + let result = await app.execute(`node node_modules/ember-cli/bin/ember build --environment=${environment}`); + + if (result.exitCode !== 0) { + throw new Error(`failed to build app for fastboot: ${result.output}`); + } + + const FastBoot = require('fastboot'); + + let fastboot = new FastBoot({ + distPath: join(app.dir, 'dist'), + resilient: false, + }); + + async function visit(url: string) { + const jsdom = require('jsdom'); + const { JSDOM } = jsdom; + let visitOpts = { + request: { headers: { host: 'localhost:4200' } }, + }; + let page = await fastboot.visit(url, visitOpts); + let html = await page.html(); + return new JSDOM(html); + } + + return { visit }; +} diff --git a/tests/scenarios/package.json b/tests/scenarios/package.json new file mode 100644 index 000000000..27c13ff89 --- /dev/null +++ b/tests/scenarios/package.json @@ -0,0 +1,32 @@ +{ + "name": "@embroider/test-scenarios", + "version": "0.0.0", + "dependencies": { + "@types/qunit": "^2.11.1", + "fastboot": "^3.1.0", + "jsdom": "^16.2.2", + "lodash": "^4.17.20", + "qunit": "^2.6.1", + "scenario-tester": "^0.4.0", + "ts-node": "^9.1.1" + }, + "scripts": { + "test": "qunit --require ts-node/register *-test.ts", + "test:list": "scenario-tester list --require ts-node/register --files=*-test.ts", + "test:output": "scenario-tester output --require ts-node/register --files=*-test.ts" + }, + "license": "MIT", + "devDependencies": { + "@embroider/sample-lib": "link:../../test-packages/sample-lib", + "ember-cli-latest": "npm:ember-cli@latest", + "ember-cli-beta": "npm:ember-cli@beta", + "ember-cli-fastboot": "^2.2.3", + "ember-source-latest": "npm:ember-source@latest", + "ember-source-beta": "npm:ember-source@beta", + "fastboot-addon": "link:../../test-packages/fastboot-addon" + }, + "volta": { + "node": "14.16.1", + "yarn": "1.22.5" + } +} \ No newline at end of file diff --git a/tests/scenarios/scenarios.ts b/tests/scenarios/scenarios.ts new file mode 100644 index 000000000..31e45f5ba --- /dev/null +++ b/tests/scenarios/scenarios.ts @@ -0,0 +1,29 @@ +import { Scenarios, Project } from 'scenario-tester'; +import { dirname, delimiter } from 'path'; + +// https://github.com/volta-cli/volta/issues/702 +// We need this because we're launching node in child processes and we want +// those children to respect volta config per project. +(function restoreVoltaEnvironment() { + let voltaHome = process.env['VOLTA_HOME']; + if (!voltaHome) return; + let paths = process.env['PATH']!.split(delimiter); + while (/\.volta/.test(paths[0])) { + paths.shift; + } + paths.unshift(`${voltaHome}/bin`); + process.env['PATH'] = paths.join(delimiter); +})(); + +async function release(project: Project) { + project.linkDevDependency('ember-source', { baseDir: __dirname, resolveName: 'ember-source-latest' }); + project.linkDevDependency('ember-cli', { baseDir: __dirname, resolveName: 'ember-cli-latest' }); +} + +export function supportMatrix(scenarios: Scenarios) { + return scenarios.expand({ + release, + }); +} + +export const appScenarios = supportMatrix(Scenarios.fromDir(dirname(require.resolve('../app-template/package.json')))); diff --git a/tsconfig.json b/tsconfig.json index 51b21e351..688555355 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -3,7 +3,8 @@ "./packages/*/src/**/*.ts", "./packages/*/tests/**/*.ts", "./test-packages/support/**/*.ts", - "./packages/util/shim.ts" + "./tests/scenarios/**/*.ts", + "./packages/util/shim.ts", ], "compilerOptions": { "target": "es2017", diff --git a/yarn.lock b/yarn.lock index 719030587..6ba5a4a1e 100644 --- a/yarn.lock +++ b/yarn.lock @@ -43,6 +43,27 @@ semver "^6.3.0" source-map "^0.5.0" +"@babel/core@^7.13.8": + version "7.13.15" + resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.13.15.tgz#a6d40917df027487b54312202a06812c4f7792d0" + integrity sha512-6GXmNYeNjS2Uz+uls5jalOemgIhnTMeaXo+yBUA72kC2uX/8VW6XyhVIo2L8/q0goKQA3EVKx0KOQpVKSeWadQ== + dependencies: + "@babel/code-frame" "^7.12.13" + "@babel/generator" "^7.13.9" + "@babel/helper-compilation-targets" "^7.13.13" + "@babel/helper-module-transforms" "^7.13.14" + "@babel/helpers" "^7.13.10" + "@babel/parser" "^7.13.15" + "@babel/template" "^7.12.13" + "@babel/traverse" "^7.13.15" + "@babel/types" "^7.13.14" + convert-source-map "^1.7.0" + debug "^4.1.0" + gensync "^1.0.0-beta.2" + json5 "^2.1.2" + semver "^6.3.0" + source-map "^0.5.0" + "@babel/generator@^7.13.0", "@babel/generator@^7.13.9", "@babel/generator@^7.4.0": version "7.13.9" resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.13.9.tgz#3a7aa96f9efb8e2be42d38d80e2ceb4c64d8de39" @@ -77,6 +98,16 @@ browserslist "^4.14.5" semver "^6.3.0" +"@babel/helper-compilation-targets@^7.13.13": + version "7.13.13" + resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.13.13.tgz#2b2972a0926474853f41e4adbc69338f520600e5" + integrity sha512-q1kcdHNZehBwD9jYPh3WyXcsFERi39X4I59I3NadciWtNDyZ6x+GboOxncFK0kXlKIv6BJm5acncehXWUjWQMQ== + dependencies: + "@babel/compat-data" "^7.13.12" + "@babel/helper-validator-option" "^7.12.17" + browserslist "^4.14.5" + semver "^6.3.0" + "@babel/helper-create-class-features-plugin@^7.13.0", "@babel/helper-create-class-features-plugin@^7.5.5", "@babel/helper-create-class-features-plugin@^7.8.3": version "7.13.11" resolved "https://registry.yarnpkg.com/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.13.11.tgz#30d30a005bca2c953f5653fc25091a492177f4f6" @@ -169,6 +200,20 @@ "@babel/traverse" "^7.13.0" "@babel/types" "^7.13.12" +"@babel/helper-module-transforms@^7.13.14": + version "7.13.14" + resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.13.14.tgz#e600652ba48ccb1641775413cb32cfa4e8b495ef" + integrity sha512-QuU/OJ0iAOSIatyVZmfqB0lbkVP0kDRiKj34xy+QNsnVZi/PA6BoSoreeqnxxa9EHFAIL0R9XOaAR/G9WlIy5g== + dependencies: + "@babel/helper-module-imports" "^7.13.12" + "@babel/helper-replace-supers" "^7.13.12" + "@babel/helper-simple-access" "^7.13.12" + "@babel/helper-split-export-declaration" "^7.12.13" + "@babel/helper-validator-identifier" "^7.12.11" + "@babel/template" "^7.12.13" + "@babel/traverse" "^7.13.13" + "@babel/types" "^7.13.14" + "@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" @@ -264,6 +309,11 @@ resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.13.12.tgz#ba320059420774394d3b0c0233ba40e4250b81d1" integrity sha512-4T7Pb244rxH24yR116LAuJ+adxXXnHhZaLJjegJVKSdoNCe4x1eDBaud5YIcQFcqzsaD5BHvJw5BQ0AZapdCRw== +"@babel/parser@^7.13.15": + version "7.13.15" + resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.13.15.tgz#8e66775fb523599acb6a289e12929fa5ab0954d8" + integrity sha512-b9COtcAlVEQljy/9fbcMHpG+UIW9ReF+gpaxDHTlZd0c6/UU9ng8zdySAW9sRTzpvcdCHn6bUcbuYUgGzLAWVQ== + "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@^7.13.12": version "7.13.12" resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.13.12.tgz#a3484d84d0b549f3fc916b99ee4783f26fabad2a" @@ -598,7 +648,7 @@ dependencies: "@babel/helper-plugin-utils" "^7.12.13" -"@babel/plugin-transform-modules-amd@^7.12.1", "@babel/plugin-transform-modules-amd@^7.13.0", "@babel/plugin-transform-modules-amd@^7.2.0", "@babel/plugin-transform-modules-amd@^7.5.0", "@babel/plugin-transform-modules-amd@^7.7.5", "@babel/plugin-transform-modules-amd@^7.8.3": +"@babel/plugin-transform-modules-amd@^7.12.1", "@babel/plugin-transform-modules-amd@^7.13.0", "@babel/plugin-transform-modules-amd@^7.2.0", "@babel/plugin-transform-modules-amd@^7.5.0", "@babel/plugin-transform-modules-amd@^7.7.5": version "7.13.0" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.13.0.tgz#19f511d60e3d8753cc5a6d4e775d3a5184866cc3" integrity sha512-EKy/E2NHhY/6Vw5d1k3rgoobftcNUmp9fGjb9XZwQLtTctsRBOTRO7RHHxfIky1ogMN5BxN7p9uMA3SzPfotMQ== @@ -923,6 +973,20 @@ globals "^11.1.0" lodash "^4.17.19" +"@babel/traverse@^7.13.13", "@babel/traverse@^7.13.15": + version "7.13.15" + resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.13.15.tgz#c38bf7679334ddd4028e8e1f7b3aa5019f0dada7" + integrity sha512-/mpZMNvj6bce59Qzl09fHEs8Bt8NnpEDQYleHUPZQ3wXUMvXi+HJPLars68oAbmp839fGoOkv2pSL2z9ajCIaQ== + dependencies: + "@babel/code-frame" "^7.12.13" + "@babel/generator" "^7.13.9" + "@babel/helper-function-name" "^7.12.13" + "@babel/helper-split-export-declaration" "^7.12.13" + "@babel/parser" "^7.13.15" + "@babel/types" "^7.13.14" + debug "^4.1.0" + globals "^11.1.0" + "@babel/types@^7.0.0", "@babel/types@^7.1.5", "@babel/types@^7.1.6", "@babel/types@^7.12.1", "@babel/types@^7.12.13", "@babel/types@^7.13.0", "@babel/types@^7.13.12", "@babel/types@^7.4.0", "@babel/types@^7.4.4", "@babel/types@^7.7.0", "@babel/types@^7.7.2", "@babel/types@^7.8.7": version "7.13.12" resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.13.12.tgz#edbf99208ef48852acdff1c8a681a1e4ade580cd" @@ -932,6 +996,15 @@ lodash "^4.17.19" to-fast-properties "^2.0.0" +"@babel/types@^7.13.14": + version "7.13.14" + resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.13.14.tgz#c35a4abb15c7cd45a2746d78ab328e362cbace0d" + integrity sha512-A2aa3QTkWoyqsZZFl56MLUsfmh7O0gN41IPvXAE/++8ojpbz12SszD7JEGYVdn4f9Kt4amIei07swF1h4AqmmQ== + dependencies: + "@babel/helper-validator-identifier" "^7.12.11" + lodash "^4.17.19" + to-fast-properties "^2.0.0" + "@cnakazawa/watch@^1.0.3": version "1.0.4" resolved "https://registry.yarnpkg.com/@cnakazawa/watch/-/watch-1.0.4.tgz#f864ae85004d0fcab6f50be9141c4da368d1656a" @@ -940,11 +1013,131 @@ exec-sh "^0.3.2" minimist "^1.2.0" +"@ember-data/adapter@3.26.0": + version "3.26.0" + resolved "https://registry.yarnpkg.com/@ember-data/adapter/-/adapter-3.26.0.tgz#c6e8f0e80edf798b573cf49a63857fa96547f354" + integrity sha512-l/sbaxu+llWq1bSAuUhhpDlI1BLigykXA5Fu1Hpj4KjQG/5vNu5D7o9kUxNBmWFzZqMyBV5Tv7o9+b0pynKGQg== + dependencies: + "@ember-data/private-build-infra" "3.26.0" + "@ember-data/store" "3.26.0" + "@ember/edition-utils" "^1.2.0" + "@ember/string" "^1.0.0" + ember-cli-babel "^7.26.3" + ember-cli-test-info "^1.0.0" + ember-cli-typescript "^4.0.0" + +"@ember-data/canary-features@3.26.0": + version "3.26.0" + resolved "https://registry.yarnpkg.com/@ember-data/canary-features/-/canary-features-3.26.0.tgz#c1cb6a05aaba7ec72f4600503ce4f92bc8ec33c0" + integrity sha512-SYd5+4QY7DOYYEVueN3oqxrL8I0dVDz1HRSI9k4Pw/C743IIYlxERqL65VNf3BTr4Db56AaN/DSWq2nomABX4Q== + dependencies: + ember-cli-babel "^7.26.3" + ember-cli-typescript "^4.0.0" + +"@ember-data/debug@3.26.0": + version "3.26.0" + resolved "https://registry.yarnpkg.com/@ember-data/debug/-/debug-3.26.0.tgz#ad9ad2b1e73ba633b6f89248ad5c15a2ae863ea5" + integrity sha512-vZBvzWi7u1oi7rlyjjEK222Ewe8VBZRWG4PP63gpoXMywNrOVIihe9VpGa4G+17x2ATq12ADw1bFW7MZuI4WGQ== + dependencies: + "@ember-data/private-build-infra" "3.26.0" + "@ember/edition-utils" "^1.2.0" + "@ember/string" "^1.0.0" + ember-cli-babel "^7.26.3" + ember-cli-test-info "^1.0.0" + ember-cli-typescript "^4.0.0" + +"@ember-data/model@3.26.0": + version "3.26.0" + resolved "https://registry.yarnpkg.com/@ember-data/model/-/model-3.26.0.tgz#6db4dacb7761175f28fb3f77aa6bdd9d22bc04ae" + integrity sha512-zd9pmYNoJWOcwJraHQPmTRIGehzyCuGirbesURDMZe2mNFJfBCv66eor6eq8S3Om6mftQBDbBM6CxtK8222FAA== + dependencies: + "@ember-data/canary-features" "3.26.0" + "@ember-data/private-build-infra" "3.26.0" + "@ember-data/store" "3.26.0" + "@ember/edition-utils" "^1.2.0" + "@ember/string" "^1.0.0" + ember-cli-babel "^7.26.3" + ember-cli-string-utils "^1.1.0" + ember-cli-test-info "^1.0.0" + ember-cli-typescript "^4.0.0" + ember-compatibility-helpers "^1.2.0" + inflection "1.12.0" + +"@ember-data/private-build-infra@3.26.0": + version "3.26.0" + resolved "https://registry.yarnpkg.com/@ember-data/private-build-infra/-/private-build-infra-3.26.0.tgz#ec0cec007799729e31f7f46c066307b60dac1154" + integrity sha512-X1VTlXXrnde00OTtErK4r4/CoTHzmj/MjFu9MqpAseqFpjNQ/ek7gVpsuO4t4I1Qe2HnErh8uVsBIT50aBdloA== + dependencies: + "@babel/plugin-transform-block-scoping" "^7.8.3" + "@ember-data/canary-features" "3.26.0" + "@ember/edition-utils" "^1.2.0" + babel-plugin-debug-macros "^0.3.3" + babel-plugin-filter-imports "^4.0.0" + babel6-plugin-strip-class-callcheck "^6.0.0" + broccoli-debug "^0.6.5" + broccoli-file-creator "^2.1.1" + broccoli-funnel "^2.0.2" + broccoli-merge-trees "^4.2.0" + broccoli-rollup "^4.1.1" + calculate-cache-key-for-tree "^2.0.0" + chalk "^4.0.0" + ember-cli-babel "^7.26.3" + ember-cli-path-utils "^1.0.0" + ember-cli-string-utils "^1.1.0" + ember-cli-typescript "^3.1.3" + ember-cli-version-checker "^5.1.1" + esm "^3.2.25" + git-repo-info "^2.1.1" + glob "^7.1.6" + npm-git-info "^1.0.3" + rimraf "^3.0.2" + rsvp "^4.8.5" + semver "^7.1.3" + silent-error "^1.1.1" + +"@ember-data/record-data@3.26.0": + version "3.26.0" + resolved "https://registry.yarnpkg.com/@ember-data/record-data/-/record-data-3.26.0.tgz#1ea213a04d54aa4999d9c82207e88ff662af9fe9" + integrity sha512-58Ny2PMtezVzdrAg/QeKaqEX49hQkS/JNINB2dakIm4cSYeFDDAv6TZIlp18dIv85MJ+UyPpWNZvsMKhmE5VjA== + dependencies: + "@ember-data/canary-features" "3.26.0" + "@ember-data/private-build-infra" "3.26.0" + "@ember-data/store" "3.26.0" + "@ember/edition-utils" "^1.2.0" + "@ember/ordered-set" "^4.0.0" + ember-cli-babel "^7.26.3" + ember-cli-test-info "^1.0.0" + ember-cli-typescript "^4.0.0" + "@ember-data/rfc395-data@^0.0.4": version "0.0.4" resolved "https://registry.yarnpkg.com/@ember-data/rfc395-data/-/rfc395-data-0.0.4.tgz#ecb86efdf5d7733a76ff14ea651a1b0ed1f8a843" integrity sha512-tGRdvgC9/QMQSuSuJV45xoyhI0Pzjm7A9o/MVVA3HakXIImJbbzx/k/6dO9CUEQXIyS2y0fW6C1XaYOG7rY0FQ== +"@ember-data/serializer@3.26.0": + version "3.26.0" + resolved "https://registry.yarnpkg.com/@ember-data/serializer/-/serializer-3.26.0.tgz#e956e2a77323e4ed3b5542d9a2cc0b119c0f8382" + integrity sha512-2+8GG7v8DiW0xBgjUZv8SVMzLA1jGwupBXEeX6idiEC12BMFrmYRBPNz3Ts17I5cVpxuiYArtW7sRcPG8ZnmsA== + dependencies: + "@ember-data/private-build-infra" "3.26.0" + "@ember-data/store" "3.26.0" + ember-cli-babel "^7.26.3" + ember-cli-test-info "^1.0.0" + ember-cli-typescript "^4.0.0" + +"@ember-data/store@3.26.0": + version "3.26.0" + resolved "https://registry.yarnpkg.com/@ember-data/store/-/store-3.26.0.tgz#16b52af043aca43e49274c4200054267f65ca3e5" + integrity sha512-qG+zgEJStdcyGaJXTS0JV+tPC8HfCSnv/u5IWHBm0AkqtOn4JmWhFmap9h2/hwQE/K1f+clWn7AMSCxQS+uBgw== + dependencies: + "@ember-data/canary-features" "3.26.0" + "@ember-data/private-build-infra" "3.26.0" + "@ember/string" "^1.0.0" + ember-cli-babel "^7.26.3" + ember-cli-path-utils "^1.0.0" + ember-cli-typescript "^4.0.0" + heimdalljs "^0.3.0" + "@ember-decorators/component@^6.1.0", "@ember-decorators/component@^6.1.1": version "6.1.1" resolved "https://registry.yarnpkg.com/@ember-decorators/component/-/component-6.1.1.tgz#b360dc4fa8e576ee1c840879399ef1745fd96e06" @@ -968,6 +1161,16 @@ dependencies: ember-cli-babel "^7.1.3" +"@ember-template-lint/todo-utils@^8.0.0": + version "8.0.0" + resolved "https://registry.yarnpkg.com/@ember-template-lint/todo-utils/-/todo-utils-8.0.0.tgz#db18b2bbc26fb372062d827138b7e1bb659a30ae" + integrity sha512-bqULTNLWr93SRfM+MkPFN4qdYvdzmvwiPBaHpxQM67qnZ1BCs4Mr7zV8GF8OSmSKbyPNMAN2ZyxsPbNRbN6o3g== + dependencies: + "@types/eslint" "^7.2.7" + fs-extra "^9.1.0" + slash "^3.0.0" + tslib "^2.1.0" + "@ember/edition-utils@^1.1.1", "@ember/edition-utils@^1.2.0": version "1.2.0" resolved "https://registry.yarnpkg.com/@ember/edition-utils/-/edition-utils-1.2.0.tgz#a039f542dc14c8e8299c81cd5abba95e2459cfa6" @@ -1042,6 +1245,14 @@ ember-cli-babel "^6.16.0" ember-compatibility-helpers "^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" + integrity sha512-cUCcme4R5H37HyK8w0qzdG5+lpb3XVr2RQHLyWEP4JsKI66Ob4tizoJOs8rb/XdHCv+F5WeA321hfPMi3DrZbg== + dependencies: + ember-cli-babel "^7.22.1" + ember-compatibility-helpers "^1.1.1" + "@ember/render-modifiers@^1.0.2": version "1.0.2" resolved "https://registry.yarnpkg.com/@ember/render-modifiers/-/render-modifiers-1.0.2.tgz#2e87c48db49d922ce4850d707215caaac60d8444" @@ -1050,6 +1261,13 @@ ember-cli-babel "^7.10.0" ember-modifier-manager-polyfill "^1.1.0" +"@ember/string@^1.0.0": + version "1.0.0" + resolved "https://registry.yarnpkg.com/@ember/string/-/string-1.0.0.tgz#3a2254caedacb95e09071204d36cad49e0f8b855" + integrity sha512-KZ+CcIXFdyIBMztxDMgza4SdLJgIeUgTjDAoHk6M50C2u1X/BK7KWUIN7MIK2LNTOMvbib9lWwEzKboxdI4lBw== + dependencies: + ember-cli-babel "^7.4.0" + "@ember/test-helpers@^1.7.1": version "1.7.3" resolved "https://registry.yarnpkg.com/@ember/test-helpers/-/test-helpers-1.7.3.tgz#d06b36cb579b172186b11b236b90f0a1aba15ab0" @@ -1062,7 +1280,7 @@ ember-cli-htmlbars-inline-precompile "^2.1.0" ember-test-waiters "^1.1.1" -"@ember/test-helpers@^2.2.0": +"@ember/test-helpers@^2.2.0", "@ember/test-helpers@^2.2.5": version "2.2.5" resolved "https://registry.yarnpkg.com/@ember/test-helpers/-/test-helpers-2.2.5.tgz#9f915310b79fd6330e8e19857958e5f241c1d0de" integrity sha512-E0GMlkmRb9r3lHa+88gtfZcve+IlAS3yoUsB5QSSTC8oRTGhqzirvsxYAylCj8n40gfoOHdqKEZxncYhVimZwg== @@ -1139,6 +1357,9 @@ resolve "^1.8.1" semver "^7.3.2" +"@embroider/sample-lib@link:test-packages/sample-lib": + version "0.0.0" + "@eslint/eslintrc@^0.4.0": version "0.4.0" resolved "https://registry.yarnpkg.com/@eslint/eslintrc/-/eslintrc-0.4.0.tgz#99cc0a0584d72f1df38b900fb062ba995f395547" @@ -1154,7 +1375,7 @@ minimatch "^3.0.4" strip-json-comments "^3.1.1" -"@glimmer/component@^1.0.0", "@glimmer/component@^1.0.3": +"@glimmer/component@^1.0.0", "@glimmer/component@^1.0.3", "@glimmer/component@^1.0.4": version "1.0.4" resolved "https://registry.yarnpkg.com/@glimmer/component/-/component-1.0.4.tgz#1c85a5181615a6647f6acfaaed68e28ad7e9626e" integrity sha512-sS4N8wtcKfYdUJ6O3m8nbTut6NjErdz94Ap8VB1ekcg4WSD+7sI7Nmv6kt2rdPoe363nUdjUbRBzHNWhLzraBw== @@ -1305,7 +1526,7 @@ "@handlebars/parser" "^1.1.0" simple-html-tokenizer "^0.5.10" -"@glimmer/tracking@^1.0.0", "@glimmer/tracking@^1.0.3": +"@glimmer/tracking@^1.0.0", "@glimmer/tracking@^1.0.3", "@glimmer/tracking@^1.0.4": 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== @@ -1940,6 +2161,14 @@ "@types/estree" "*" "@types/json-schema" "*" +"@types/eslint@^7.2.7": + version "7.2.10" + resolved "https://registry.yarnpkg.com/@types/eslint/-/eslint-7.2.10.tgz#4b7a9368d46c0f8cd5408c23288a59aa2394d917" + integrity sha512-kUEPnMKrqbtpCq/KTaGFFKAcz6Ethm2EjCoKIDaCmfRBWLbFuTcOJfTlorwbnboXBzahqWLgUp1BQeKHiJzPUQ== + dependencies: + "@types/estree" "*" + "@types/json-schema" "*" + "@types/estree@*": version "0.0.47" resolved "https://registry.yarnpkg.com/@types/estree/-/estree-0.0.47.tgz#d7a51db20f0650efec24cd04994f523d93172ed4" @@ -1988,6 +2217,13 @@ dependencies: "@types/node" "*" +"@types/fs-extra@^9.0.7": + version "9.0.11" + resolved "https://registry.yarnpkg.com/@types/fs-extra/-/fs-extra-9.0.11.tgz#8cc99e103499eab9f347dbc6ca4e99fb8d2c2b87" + integrity sha512-mZsifGG4QeQ7hlkhO56u7zt/ycBgGxSVsFI/6lGTU34VtwkiqrrSDgw0+ygs8kFGWcXnFQWMrzF2h7TtDFNixA== + dependencies: + "@types/node" "*" + "@types/glob@*", "@types/glob@^7.1.1": version "7.1.3" resolved "https://registry.yarnpkg.com/@types/glob/-/glob-7.1.3.tgz#e6ba80f36b7daad2c685acd9266382e68985c183" @@ -2151,6 +2387,11 @@ resolved "https://registry.yarnpkg.com/@types/qs/-/qs-6.9.6.tgz#df9c3c8b31a247ec315e6996566be3171df4b3b1" integrity sha512-0/HnwIfW4ki2D8L8c9GVcG5I72s9jP5GSLVF0VIXDW00kmIpA6O33G7a8n59Tmh7Nz0WUC3rSb7PTY/sdW2JzA== +"@types/qunit@^2.11.1": + version "2.11.1" + resolved "https://registry.yarnpkg.com/@types/qunit/-/qunit-2.11.1.tgz#3496d430d2bb0fa4761f00a27511f46020c6b410" + integrity sha512-vcM5+9O8LZuu5DYseaV4J7ehkYrhkv+aMIuxnF/OqMYlVEdv+odpCH1/5OVztiqxbCqTpQKWuELkMvG7OPycUQ== + "@types/range-parser@*": version "1.2.3" resolved "https://registry.yarnpkg.com/@types/range-parser/-/range-parser-1.2.3.tgz#7ee330ba7caafb98090bece86a5ee44115904c2c" @@ -2243,6 +2484,11 @@ resolved "https://registry.yarnpkg.com/@types/tmp/-/tmp-0.1.0.tgz#19cf73a7bcf641965485119726397a096f0049bd" integrity sha512-6IwZ9HzWbCq6XoQWhxLpDjuADodH/MKXRUIDFudvgjcVdjFknvmR+DNsoUeer4XPrEnrZs04Jj+kfV9pFsrhmA== +"@types/tmp@^0.2.0": + version "0.2.0" + resolved "https://registry.yarnpkg.com/@types/tmp/-/tmp-0.2.0.tgz#e3f52b4d7397eaa9193592ef3fdd44dc0af4298c" + integrity sha512-flgpHJjntpBAdJD43ShRosQvNC0ME97DCfGvZEDlAThQmnerRXrLbX6YgzRBQCZTthET9eAWFAMaYP0m0Y4HzQ== + "@types/tough-cookie@*": version "4.0.0" resolved "https://registry.yarnpkg.com/@types/tough-cookie/-/tough-cookie-4.0.0.tgz#fef1904e4668b6e5ecee60c52cc6a078ffa6697d" @@ -2309,6 +2555,13 @@ dependencies: "@types/yargs-parser" "*" +"@types/yargs@^16.0.0": + version "16.0.1" + resolved "https://registry.yarnpkg.com/@types/yargs/-/yargs-16.0.1.tgz#5fc5d41f69762e00fbecbc8d4bf9dea47d8726f4" + integrity sha512-x4HABGLyzr5hKUzBC9dvjciOTm11WVH1NWonNjGgxapnTHu5SWUqyqn0zQ6Re0yQU0lsQ6ztLCoMAKDGZflyxA== + dependencies: + "@types/yargs-parser" "*" + "@typescript-eslint/eslint-plugin@^4.1.1": version "4.19.0" resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-4.19.0.tgz#56f8da9ee118fe9763af34d6a526967234f6a7f0" @@ -2974,6 +3227,11 @@ are-we-there-yet@~1.1.2: delegates "^1.0.0" readable-stream "^2.0.6" +arg@^4.1.0: + version "4.1.3" + resolved "https://registry.yarnpkg.com/arg/-/arg-4.1.3.tgz#269fc7ad5b8e42cb63c896d5666017261c144089" + integrity sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA== + argparse@^1.0.7: version "1.0.10" resolved "https://registry.yarnpkg.com/argparse/-/argparse-1.0.10.tgz#bcd6791ea5ae09725e17e5ad988134cd40b3d911" @@ -3666,7 +3924,7 @@ babel-plugin-module-resolver@^3.2.0: reselect "^3.0.1" resolve "^1.4.0" -babel-plugin-module-resolver@^4.0.0: +babel-plugin-module-resolver@^4.0.0, babel-plugin-module-resolver@^4.1.0: version "4.1.0" resolved "https://registry.yarnpkg.com/babel-plugin-module-resolver/-/babel-plugin-module-resolver-4.1.0.tgz#22a4f32f7441727ec1fbf4967b863e1e3e9f33e2" integrity sha512-MlX10UDheRr3lb3P0WcaIdtCSRlxdQsB1sBqL7W0raF070bGl1HQQq5K3T2vf2XAYie+ww+5AKC/WrkjRO2knA== @@ -5183,7 +5441,7 @@ broccoli@^2.0.0, broccoli@^2.3.0: underscore.string "^3.2.2" watch-detector "^0.1.0" -broccoli@^3.2.0, broccoli@^3.3.3, broccoli@^3.4.2, broccoli@^3.5.0: +broccoli@^3.2.0, broccoli@^3.3.3, broccoli@^3.4.2, broccoli@^3.5.0, broccoli@^3.5.1: version "3.5.1" resolved "https://registry.yarnpkg.com/broccoli/-/broccoli-3.5.1.tgz#371bc63cabe700bae3a2b80cac3e978f94664418" integrity sha512-2Rvl40E6JgALX1JQN5PjCgP1apFAP24vVol+coX5TpVVy0Lsqzl3Mabbe3fVQcu3lMRfPJ6DyBKqBlo52XPSRg== @@ -6289,6 +6547,11 @@ create-hmac@^1.1.0, create-hmac@^1.1.4, create-hmac@^1.1.7: safe-buffer "^5.0.1" sha.js "^2.4.8" +create-require@^1.1.0: + version "1.1.1" + resolved "https://registry.yarnpkg.com/create-require/-/create-require-1.1.1.tgz#c1d7e8f1e5f6cfc9ff65f9cd352d37348756c333" + integrity sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ== + cross-env@^7.0.3: version "7.0.3" resolved "https://registry.yarnpkg.com/cross-env/-/cross-env-7.0.3.tgz#865264b29677dc015ba8418918965dd232fc54cf" @@ -6488,6 +6751,11 @@ data-urls@^2.0.0: whatwg-mimetype "^2.3.0" whatwg-url "^8.0.0" +date-fns@^2.19.0: + version "2.21.1" + resolved "https://registry.yarnpkg.com/date-fns/-/date-fns-2.21.1.tgz#679a4ccaa584c0706ea70b3fa92262ac3009d2b0" + integrity sha512-m1WR0xGiC6j6jNFAyW4Nvh4WxAi4JF4w9jRJwSI8nBmNcyZXPcP9VUQG+6gHQXAmqaGEKDKhOqAtENDC941UkA== + date-time@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/date-time/-/date-time-2.1.0.tgz#0286d1b4c769633b3ca13e1e62558d2dbdc2eba2" @@ -6736,6 +7004,11 @@ diff@^4.0.1, diff@^4.0.2: resolved "https://registry.yarnpkg.com/diff/-/diff-4.0.2.tgz#60f3aecb89d5fae520c11aa19efc2bb982aade7d" integrity sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A== +diff@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/diff/-/diff-5.0.0.tgz#7ed6ad76d859d030787ec35855f5b1daf31d852b" + integrity sha512-/VTCrvm5Z0JGty/BWHljh+BAiw3IK+2j87NGMu8Nwc/f48WoDAC395uomO9ZD117ZOBaHmkX1oyLvkVM/aIT3w== + diffie-hellman@^5.0.0: version "5.0.3" resolved "https://registry.yarnpkg.com/diffie-hellman/-/diffie-hellman-5.0.3.tgz#40e8ee98f55a2149607146921c63e1ae5f3d2875" @@ -6939,7 +7212,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.21, ember-auto-import@^1.5.3: +ember-auto-import@^1.10.1, ember-auto-import@^1.11.2, ember-auto-import@^1.2.21, ember-auto-import@^1.5.3: version "1.11.2" resolved "https://registry.yarnpkg.com/ember-auto-import/-/ember-auto-import-1.11.2.tgz#b6e9a0dddd88a10692830ffa4f5dfd8c137c8919" integrity sha512-Sm0x9qgAQEx+XSYeh5zeKj89Uo0c7XzULZxuziFPxbhtKy/G4pywhBuQ7EgDznTj8IZVxOdfe4ufcUxnJtbSgg== @@ -6995,6 +7268,14 @@ ember-cli-app-version@^3.2.0: ember-cli-babel "^6.12.0" git-repo-version "^1.0.2" +ember-cli-app-version@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/ember-cli-app-version/-/ember-cli-app-version-5.0.0.tgz#adad17c6f706f419b223707eec66dd1cd28530c3" + integrity sha512-afhx/CXDOMNXzoe4NDPy5WUfxWmYYHUzMCiTyvPBxCDBXYcMrtxNWxvgaSaeqcoHVEmqzeyBj8V82tzmT1dcyw== + dependencies: + ember-cli-babel "^7.23.1" + git-repo-info "^2.1.1" + ember-cli-babel-plugin-helpers@^1.0.0, ember-cli-babel-plugin-helpers@^1.1.0, ember-cli-babel-plugin-helpers@^1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/ember-cli-babel-plugin-helpers/-/ember-cli-babel-plugin-helpers-1.1.1.tgz#5016b80cdef37036c4282eef2d863e1d73576879" @@ -7067,7 +7348,7 @@ ember-cli-babel@^7.0.0, ember-cli-babel@^7.1.0, ember-cli-babel@^7.1.3, ember-cl rimraf "^3.0.1" semver "^5.5.0" -ember-cli-babel@^7.11.1, ember-cli-babel@^7.19.0: +ember-cli-babel@^7.11.1, ember-cli-babel@^7.19.0, ember-cli-babel@^7.26.3, ember-cli-babel@^7.4.0: version "7.26.3" resolved "https://registry.yarnpkg.com/ember-cli-babel/-/ember-cli-babel-7.26.3.tgz#e93ce7ec458208894d10844cf76e41cc06fdbeb6" integrity sha512-ZCs0g99d3kYaHs1+HT33oMY7/K+nLCAAv7dCLxsMzg7cQf55O6Pq4ZKnWEr3IHVs33xbJFnEb9prt1up36QVnw== @@ -7100,6 +7381,103 @@ ember-cli-babel@^7.11.1, ember-cli-babel@^7.19.0: rimraf "^3.0.1" semver "^5.5.0" +"ember-cli-beta@npm:ember-cli@beta": + version "3.27.0-beta.1" + resolved "https://registry.yarnpkg.com/ember-cli/-/ember-cli-3.27.0-beta.1.tgz#c60d27554d00a2e806cb2609bd26c64921f99fbc" + integrity sha512-MqzFFFkYyMaTqPrllVf1k854fD9sR1TlVLWYCpAwoev2sf4/Q5e5INiySpeIuiSzkK3G7YNtjXS6R6oGz3FX5Q== + dependencies: + "@babel/core" "^7.13.8" + "@babel/plugin-transform-modules-amd" "^7.12.1" + amd-name-resolver "^1.3.1" + babel-plugin-module-resolver "^4.1.0" + bower-config "^1.4.3" + bower-endpoint-parser "0.2.2" + broccoli "^3.5.1" + 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 "^5.0.0" + 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 "^5.0.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.1" + fs-extra "^9.1.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 "^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.4" + markdown-it-terminal "0.2.1" + minimatch "^3.0.4" + morgan "^1.10.0" + nopt "^3.0.6" + npm-package-arg "^8.1.1" + 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.20.0" + resolve-package-path "^3.1.0" + sane "^4.1.0" + semver "^7.3.4" + 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.2" + walk-sync "^2.2.0" + watch-detector "^1.0.0" + workerpool "^6.0.3" + yam "^1.0.0" + ember-cli-broccoli-sane-watcher@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/ember-cli-broccoli-sane-watcher/-/ember-cli-broccoli-sane-watcher-3.0.0.tgz#dc1812c047e1ceec4413d3c41b51a9ffc61b4cfe" @@ -7132,7 +7510,7 @@ ember-cli-eslint@^5.1.0: rsvp "^4.6.1" walk-sync "^1.0.0" -ember-cli-fastboot@^2.2.2: +ember-cli-fastboot@^2.2.2, ember-cli-fastboot@^2.2.3: version "2.2.3" resolved "https://registry.yarnpkg.com/ember-cli-fastboot/-/ember-cli-fastboot-2.2.3.tgz#d32eba948b2790ec4b5429ff759a8dee932c1e55" integrity sha512-RdKzTOXHi59VW6a9RB0muCQd15BmY95pWkQ9eLslyeLR38/Uh1EVP+kgWxzJTxODywmMJ9SWW2HPpvxxLDfCEw== @@ -7245,6 +7623,103 @@ ember-cli-is-package-missing@^1.0.0: resolved "https://registry.yarnpkg.com/ember-cli-is-package-missing/-/ember-cli-is-package-missing-1.0.0.tgz#6e6184cafb92635dd93ca6c946b104292d4e3390" integrity sha1-bmGEyvuSY13ZPKbJRrEEKS1OM5A= +"ember-cli-latest@npm:ember-cli@latest", ember-cli@~3.26.0: + version "3.26.0" + resolved "https://registry.yarnpkg.com/ember-cli/-/ember-cli-3.26.0.tgz#19b3b9701df7ab78a23f7d0f44bf26e78f031f71" + integrity sha512-zmwUS1i4w7nFIwNjPLNGPlH0lOZjbOfUt51FQsbS8zqRgbbA/oYGAfpiTzJfO3bONjiKy3irEQIqbdBQaXFA7w== + dependencies: + "@babel/core" "^7.12.10" + "@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 "^5.0.0" + 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 "^5.0.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.1.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 "^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.4" + 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.4" + 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.2" + walk-sync "^2.2.0" + watch-detector "^1.0.0" + workerpool "^6.0.3" + yam "^1.0.0" + ember-cli-lodash-subset@2.0.1, ember-cli-lodash-subset@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/ember-cli-lodash-subset/-/ember-cli-lodash-subset-2.0.1.tgz#20cb68a790fe0fde2488ddfd8efbb7df6fe766f2" @@ -7414,7 +7889,7 @@ ember-cli-typescript@^3.1.3: stagehand "^1.0.0" walk-sync "^2.0.0" -ember-cli-typescript@^4.1.0: +ember-cli-typescript@^4.0.0, ember-cli-typescript@^4.1.0: version "4.1.0" resolved "https://registry.yarnpkg.com/ember-cli-typescript/-/ember-cli-typescript-4.1.0.tgz#2ff17be2e6d26b58c88b1764cb73887e7176618b" integrity sha512-zSuKG8IQuYE3vS+c7V0mHJqwrN/4Wo9Wr50+0NUjnZH3P99ChynczQHu/P7WSifkO6pF6jaxwzf09XzWvG8sVw== @@ -7768,100 +8243,6 @@ ember-cli@~3.17.0: watch-detector "^1.0.0" yam "^1.0.0" -ember-cli@~3.18.0: - version "3.18.0" - resolved "https://registry.yarnpkg.com/ember-cli/-/ember-cli-3.18.0.tgz#fdee530b156f752a97e75b832d97a8616f1cab4d" - integrity sha512-I/9ps0AI6BDjUm9/M1to96kc6d2yAYZ/ApX+teDTwFqZBVX3cE6EASfRWw14/Y3nPSI8wXo3aviYBYs6KMWgqA== - dependencies: - "@babel/core" "^7.8.7" - "@babel/plugin-transform-modules-amd" "^7.8.3" - amd-name-resolver "^1.3.1" - babel-plugin-module-resolver "^4.0.0" - bower-config "^1.4.1" - bower-endpoint-parser "0.2.2" - broccoli "^3.3.3" - broccoli-amd-funnel "^2.0.1" - broccoli-babel-transpiler "^7.4.0" - broccoli-builder "^0.18.14" - broccoli-concat "^3.7.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.0.1" - broccoli-source "^3.0.0" - broccoli-stew "^3.0.0" - calculate-cache-key-for-tree "^2.0.0" - capture-exit "^2.0.0" - chalk "^3.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" - fs-extra "^8.1.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.0" - inflection "^1.12.0" - is-git-url "^1.0.0" - isbinaryfile "^4.0.4" - js-yaml "^3.13.1" - json-stable-stringify "^1.0.1" - leek "0.0.24" - lodash.template "^4.5.0" - markdown-it "^10.0.0" - markdown-it-terminal "0.1.1" - minimatch "^3.0.4" - morgan "^1.9.1" - nopt "^3.0.6" - npm-package-arg "^8.0.1" - p-defer "^3.0.0" - portfinder "^1.0.25" - promise-map-series "^0.3.0" - promise.hash.helper "^1.0.6" - quick-temp "^0.1.8" - resolve "^1.15.1" - resolve-package-path "^2.0.0" - sane "^4.1.0" - semver "^7.1.3" - silent-error "^1.1.1" - sort-package-json "^1.40.0" - symlink-or-copy "^1.3.1" - temp "0.9.1" - testem "^3.0.2" - tiny-lr "^1.1.1" - tree-sync "^2.0.0" - uuid "^7.0.2" - walk-sync "^2.0.2" - watch-detector "^1.0.0" - yam "^1.0.0" - ember-cli@~3.25.2: version "3.25.2" resolved "https://registry.yarnpkg.com/ember-cli/-/ember-cli-3.25.2.tgz#e48203adfb2e6ff8f93d88b602f2c7c3b1633be2" @@ -8036,6 +8417,27 @@ ember-data@~3.10.0: resolve "^1.8.1" silent-error "^1.1.1" +ember-data@~3.26.0: + version "3.26.0" + resolved "https://registry.yarnpkg.com/ember-data/-/ember-data-3.26.0.tgz#cc6f86e6fd38b2984472faed2146d2d5f2b32252" + integrity sha512-rywnYB2vsEMrsvugT+nMlWc/H7QM9LplQxVIKHPKak1wxGKm8EHS7eA/qSWC6CykALItOG2gix05ymPYxqdI1Q== + dependencies: + "@ember-data/adapter" "3.26.0" + "@ember-data/debug" "3.26.0" + "@ember-data/model" "3.26.0" + "@ember-data/private-build-infra" "3.26.0" + "@ember-data/record-data" "3.26.0" + "@ember-data/serializer" "3.26.0" + "@ember-data/store" "3.26.0" + "@ember/edition-utils" "^1.2.0" + "@ember/ordered-set" "^4.0.0" + "@ember/string" "^1.0.0" + "@glimmer/env" "^0.1.7" + broccoli-merge-trees "^4.2.0" + ember-cli-babel "^7.26.3" + ember-cli-typescript "^4.0.0" + ember-inflector "^4.0.1" + ember-decorators@^6.1.1: version "6.1.1" resolved "https://registry.yarnpkg.com/ember-decorators/-/ember-decorators-6.1.1.tgz#6d770f8999cf5a413a1ee459afd520838c0fc470" @@ -8139,6 +8541,13 @@ ember-inflector@^3.0.0: dependencies: ember-cli-babel "^6.6.0" +ember-inflector@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/ember-inflector/-/ember-inflector-4.0.1.tgz#e0aa9e39119156a278c80bb8cdec8462ecb8e6ab" + integrity sha512-D14nH2wVMp13ciOONcHMXwdL/IoMBSDXsGObF2rsQX7F8vGjwp+jnSNzZuGjjIvlBFQydOJ+R2n86J2e8HRTQA== + dependencies: + ember-cli-babel "^7.23.0" + ember-inline-svg@^0.2.1: version "0.2.1" resolved "https://registry.yarnpkg.com/ember-inline-svg/-/ember-inline-svg-0.2.1.tgz#091f3fc27836e5ee0df1482c9e4a1a8adc9113f3" @@ -8264,7 +8673,7 @@ ember-qunit@^4.4.1, ember-qunit@^4.6.0: ember-cli-test-loader "^2.2.0" qunit "^2.9.3" -ember-qunit@^5.1.2: +ember-qunit@^5.1.2, ember-qunit@^5.1.4: version "5.1.4" resolved "https://registry.yarnpkg.com/ember-qunit/-/ember-qunit-5.1.4.tgz#bc69f963a0f5409ce33bee1e4d8146b1407147bf" integrity sha512-L8L3TA5UYdsoJl9If88CU6Liu5Kr76uEpXimeJIyjoRX2kI57YWI2/76uiW7UU0qdYfvcmVazgd+MJGj9aB2JA== @@ -8311,7 +8720,7 @@ ember-resolver@^7.0.0: ember-cli-version-checker "^3.1.3" resolve "^1.14.0" -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== @@ -8344,6 +8753,37 @@ ember-router-generator@^2.0.0: "@babel/traverse" "^7.4.5" recast "^0.18.1" +"ember-source-beta@npm:ember-source@beta": + version "3.27.0-beta.3" + resolved "https://registry.yarnpkg.com/ember-source/-/ember-source-3.27.0-beta.3.tgz#075dfd21f79424a3f6bfe8d5eb998aca13ba4900" + integrity sha512-XcA+3qQexvqNUu3uDeG7JgU5AehdwzwbNI/i1uSzjOCgQ6PiAfePJWGrRIFAb4QHKVsijh5oi2IyNFiLN2kENw== + 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" + "@glimmer/vm-babel-plugins" "0.77.5" + 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.1" + resolve "^1.17.0" + semver "^7.3.4" + silent-error "^1.1.1" + ember-source-channel-url@^1.0.1, ember-source-channel-url@^1.1.0: version "1.2.0" resolved "https://registry.yarnpkg.com/ember-source-channel-url/-/ember-source-channel-url-1.2.0.tgz#77eb9d0889e5f5370e6c70fcb2696c63ff4a34a1" @@ -8365,6 +8805,37 @@ ember-source-channel-url@^3.0.0: dependencies: node-fetch "^2.6.0" +"ember-source-latest@npm:ember-source@latest", ember-source@~3.26.1: + version "3.26.1" + resolved "https://registry.yarnpkg.com/ember-source/-/ember-source-3.26.1.tgz#8c9e8a314fb0da447b944d64f9d92a80a628d7b5" + integrity sha512-5/NATBo5h9m1N52ITVksmjtGlYhGHLl4lDErAWv5/DC9zYe9ZR93NtymR6PEqrRilXc2x0KWd3NlOsWUoJRUOw== + 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" + "@glimmer/vm-babel-plugins" "0.77.5" + 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.1" + resolve "^1.17.0" + semver "^7.3.4" + silent-error "^1.1.1" + ember-source@3.17.0: version "3.17.0" resolved "https://registry.yarnpkg.com/ember-source/-/ember-source-3.17.0.tgz#6365b8e43f72d552f62e5d7ee4e841595ae70579" @@ -8503,36 +8974,6 @@ ember-source@~3.17.0: semver "^6.1.1" silent-error "^1.1.1" -ember-source@~3.18.0: - version "3.18.1" - resolved "https://registry.yarnpkg.com/ember-source/-/ember-source-3.18.1.tgz#64ef40261ef1094e529ef6baabd907e6171a51f7" - integrity sha512-hfBkU2w+R7zquHpdMI+HCCt51OiBA4vkVd/czm+Xr17+qkxswh748l/VQe0N0IJLhrWlbmeOI6gtrB+Hsk8QAg== - 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 "^3.7.4" - broccoli-debug "^0.6.4" - broccoli-funnel "^2.0.2" - broccoli-merge-trees "^3.0.2" - chalk "^3.0.0" - ember-cli-babel "^7.18.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 "^3.1.3" - ember-router-generator "^2.0.0" - inflection "^1.12.0" - jquery "^3.4.1" - resolve "^1.14.2" - semver "^6.1.1" - silent-error "^1.1.1" - ember-source@~3.21.1: version "3.21.3" resolved "https://registry.yarnpkg.com/ember-source/-/ember-source-3.21.3.tgz#c85fae070566468a1e479b1817bc690fe3d03207" @@ -8606,7 +9047,7 @@ ember-template-lint@^1.2.0: resolve "^1.15.1" strip-bom "^3.0.0" -ember-template-lint@^2.18.1, ember-template-lint@^2.4.0, ember-template-lint@^2.6.0: +ember-template-lint@^2.18.1, ember-template-lint@^2.4.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== @@ -8623,6 +9064,25 @@ ember-template-lint@^2.18.1, ember-template-lint@^2.4.0, ember-template-lint@^2. v8-compile-cache "^2.2.0" yargs "^16.2.0" +ember-template-lint@^3.2.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/ember-template-lint/-/ember-template-lint-3.2.0.tgz#d9fefc4f572079db2807c068f652a9d3cdc84c7c" + integrity sha512-X37VYwhi2JdVU7+CQDtLCCSHzK2+CeQ64/WQ4hKt9bx1ZtvxWXDMd2BNeDBckY/YvdviG0Yq2VARCzHpkiElwQ== + dependencies: + "@ember-template-lint/todo-utils" "^8.0.0" + chalk "^4.0.0" + date-fns "^2.19.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.3" + is-glob "^4.0.1" + micromatch "^4.0.2" + resolve "^1.20.0" + v8-compile-cache "^2.3.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" @@ -8976,6 +9436,11 @@ eslint-config-prettier@^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-config-prettier@^8.1.0: + version "8.2.0" + resolved "https://registry.yarnpkg.com/eslint-config-prettier/-/eslint-config-prettier-8.2.0.tgz#78de77d63bca8e9e59dae75a614b5299925bb7b3" + integrity sha512-dWV9EVeSo2qodOPi1iBYU/x6F6diHv8uujxbxr77xExs3zTAlNXvVZKiyLsQGNz7yPV2K49JY5WjPzNIuDc2Bw== + eslint-import-resolver-node@^0.3.4: version "0.3.4" resolved "https://registry.yarnpkg.com/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.4.tgz#85ffa81942c25012d8231096ddf679c03042c717" @@ -8992,7 +9457,7 @@ eslint-module-utils@^2.6.0: debug "^2.6.9" pkg-dir "^2.0.0" -eslint-plugin-ember@^10.2.0: +eslint-plugin-ember@^10.2.0, eslint-plugin-ember@^10.3.0: version "10.3.0" resolved "https://registry.yarnpkg.com/eslint-plugin-ember/-/eslint-plugin-ember-10.3.0.tgz#2e53ad334dc7f7f66f6cba890b9c01a64817d1c1" integrity sha512-qmUQ6OYs8trr+4h3DPJz76fBgXBJEragLCD4RHV4bcnKd4vtgmJvFTF+UDlIsiZZVd03r5aYzpuQvVa+oH6JXg== @@ -9022,16 +9487,6 @@ eslint-plugin-ember@^7.0.0, eslint-plugin-ember@^7.10.1: ember-rfc176-data "^0.3.12" snake-case "^3.0.3" -eslint-plugin-ember@^8.4.0: - 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@^1.4.1: version "1.4.1" resolved "https://registry.yarnpkg.com/eslint-plugin-es/-/eslint-plugin-es-1.4.1.tgz#12acae0f4953e76ba444bfd1b2271081ac620998" @@ -9266,7 +9721,50 @@ eslint@^7.14.0, eslint@^7.20.0: text-table "^0.2.0" v8-compile-cache "^2.0.3" -esm@^3.2.4: +eslint@^7.23.0: + version "7.24.0" + resolved "https://registry.yarnpkg.com/eslint/-/eslint-7.24.0.tgz#2e44fa62d93892bfdb100521f17345ba54b8513a" + integrity sha512-k9gaHeHiFmGCDQ2rEfvULlSLruz6tgfA8DEn+rY9/oYPFFTlz55mM/Q/Rij1b2Y42jwZiK3lXvNTw6w6TXzcKQ== + 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 "^13.6.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.21" + 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" integrity sha512-U1suiZ2oDVWv4zPO56S0NcR5QriEahGtdN2OR6FiOG4WJvcjBVFB0qI4+eKoWFH483PKGuLuu6V8Z4T5g63UVA== @@ -9390,7 +9888,7 @@ exec-sh@^0.3.2: resolved "https://registry.yarnpkg.com/exec-sh/-/exec-sh-0.3.6.tgz#ff264f9e325519a60cb5e273692943483cca63bc" integrity sha512-nQn+hI3yp+oD0huYhKwvYI32+JFeq+XkNcD1GAo3Y/MjxsfVGmrrzrnzjWiNY6f+pUCP440fThsFh5gZrRAU/w== -execa@5.0.0: +execa@5.0.0, execa@^5.0.0: version "5.0.0" resolved "https://registry.yarnpkg.com/execa/-/execa-5.0.0.tgz#4029b0007998a841fbd1032e5f4de86a3c1e3376" integrity sha512-ov6w/2LCiuyO4RLYGdpFGjkcs0wMTgGE8PrkTHikeUy5iJekXyPIKUjifk5CsE0pt7sMCrMZ3YNqoCj6idQOnQ== @@ -9688,6 +10186,12 @@ fast-sourcemap-concat@^2.1.0: source-map-url "^0.3.0" sourcemap-validator "^1.1.0" +"fastboot-addon@link:test-packages/fastboot-addon": + version "0.0.0" + dependencies: + ember-cli-babel "^7.20.5" + ember-cli-htmlbars "^4.2.3" + fastboot-express-middleware@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/fastboot-express-middleware/-/fastboot-express-middleware-2.0.0.tgz#3cb2c4b744e738a709b4336c4166f1a059ab0ffb" @@ -9953,7 +10457,7 @@ fixturify-project@^1.10.0: fixturify "^1.2.0" tmp "^0.0.33" -fixturify-project@^2.1.0: +fixturify-project@^2.1.0, fixturify-project@^2.1.1: version "2.1.1" resolved "https://registry.yarnpkg.com/fixturify-project/-/fixturify-project-2.1.1.tgz#a511dd26700c6b64ac271ef4393e7124f153c81f" integrity sha512-sP0gGMTr4iQ8Kdq5Ez0CVJOZOGWqzP5dv/veOTdFNywioKjkNWCHBi1q65DMpcNGUGeoOUWehyji274Q2wRgxA== @@ -9962,6 +10466,15 @@ fixturify-project@^2.1.0: tmp "^0.0.33" type-fest "^0.11.0" +fixturify-project@ef4/node-fixturify-project#dcad8d1a56c586a38f63772eb0dd70ab2751d4e6: + version "2.1.1" + resolved "https://codeload.github.com/ef4/node-fixturify-project/tar.gz/dcad8d1a56c586a38f63772eb0dd70ab2751d4e6" + dependencies: + fixturify "^2.1.0" + resolve-package-path "^3.1.0" + tmp "^0.0.33" + type-fest "^0.11.0" + fixturify@^0.3.2: version "0.3.4" resolved "https://registry.yarnpkg.com/fixturify/-/fixturify-0.3.4.tgz#c676de404a7f8ee8e64d0b76118e62ec95ab7b25" @@ -10173,7 +10686,7 @@ fs-extra@^8.0.0, fs-extra@^8.0.1, fs-extra@^8.1.0: jsonfile "^4.0.0" universalify "^0.1.0" -fs-extra@^9.0.1: +fs-extra@^9.0.1, fs-extra@^9.1.0: version "9.1.0" resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-9.1.0.tgz#5954460c764a8da2094ba3554bf839e6b9a7c86d" integrity sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ== @@ -10583,7 +11096,7 @@ globby@11.0.2: merge2 "^1.3.0" slash "^3.0.0" -globby@^11.0.1, globby@^11.0.2: +globby@^11.0.1, globby@^11.0.2, globby@^11.0.3: version "11.0.3" resolved "https://registry.yarnpkg.com/globby/-/globby-11.0.3.tgz#9b1f0cb523e171dd1ad8c7b2a9fb4b644b9593cb" integrity sha512-ffdmosjA807y7+lA1NM0jELARVmYul/715xiILEjo3hBLPTcirgQNnXECn5g3mtR8TOLCVbkfua1Hpen25/Xcg== @@ -11207,7 +11720,7 @@ infer-owner@^1.0.3, infer-owner@^1.0.4: resolved "https://registry.yarnpkg.com/infer-owner/-/infer-owner-1.0.4.tgz#c4cefcaa8e51051c2a40ba2ce8a3d27295af9467" integrity sha512-IClj+Xz94+d7irH5qRyfJonOdfTzuDaifE6ZPWfx0N0+/ATZCbuTPq2prFl526urkQd90WyUKIh1DfBQ2hMz9A== -inflection@^1.12.0: +inflection@1.12.0, inflection@^1.12.0: version "1.12.0" resolved "https://registry.yarnpkg.com/inflection/-/inflection-1.12.0.tgz#a200935656d6f5f6bc4dc7502e1aecb703228416" integrity sha1-ogCTVlbW9fa8TcdQLhrstwMihBY= @@ -11805,7 +12318,7 @@ isbinaryfile@^3.0.3: dependencies: buffer-alloc "^1.2.0" -isbinaryfile@^4.0.4, isbinaryfile@^4.0.6: +isbinaryfile@^4.0.6: version "4.0.6" resolved "https://registry.yarnpkg.com/isbinaryfile/-/isbinaryfile-4.0.6.tgz#edcb62b224e2b4710830b67498c8e4e5a4d2610b" integrity sha512-ORrEy+SNVqUhrCaal4hA4fBzhggQQ+BaLntyPOdoEiwlKZW9BZiJXjg3RMiruE4tPEI3pyVPpySHQF/dKWperg== @@ -12271,7 +12784,7 @@ jquery-deferred@^0.3.0: resolved "https://registry.yarnpkg.com/jquery-deferred/-/jquery-deferred-0.3.1.tgz#596eca1caaff54f61b110962b23cafea74c35355" integrity sha1-WW7KHKr/VPYbEQlisjyv6nTDU1U= -jquery@^3.3.1, jquery@^3.4.1, jquery@^3.5.0: +jquery@^3.3.1, jquery@^3.4.1, jquery@^3.5.0, jquery@^3.5.1: version "3.6.0" resolved "https://registry.yarnpkg.com/jquery/-/jquery-3.6.0.tgz#c72a09f15c1bdce142f49dbf1170bdf8adac2470" integrity sha512-JVzAR/AjBvVt2BmYhxRCSYysDsPcssdmTFnzyLEts9qNwmjmu4JTAMYubEfwVOSwpQ1I1sKKFcxhZCI2buerfw== @@ -13096,6 +13609,11 @@ make-dir@^3.0.0, make-dir@^3.0.2, make-dir@^3.1.0: dependencies: semver "^6.0.0" +make-error@^1.1.1: + version "1.3.6" + resolved "https://registry.yarnpkg.com/make-error/-/make-error-1.3.6.tgz#2eb2e37ea9b67c4891f684a1394799af484cf7a2" + integrity sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw== + make-fetch-happen@^7.1.1: version "7.1.1" resolved "https://registry.yarnpkg.com/make-fetch-happen/-/make-fetch-happen-7.1.1.tgz#89ac8112eaa9d4361541deb591329e9238a531b1" @@ -13913,7 +14431,7 @@ npm-package-arg@^6.1.0, npm-package-arg@^6.1.1: 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.1.0: +npm-package-arg@^8.0.0, npm-package-arg@^8.1.0, npm-package-arg@^8.1.1: version "8.1.2" resolved "https://registry.yarnpkg.com/npm-package-arg/-/npm-package-arg-8.1.2.tgz#b868016ae7de5619e729993fbd8d11dc3c52ab62" integrity sha512-6Eem455JsSMJY6Kpd3EyWE+n5hC+g9bSyHr9K9U2zqZb7+02+hObQ2c0+8iDk/mNF+8r1MhY44WypKJAkySIYA== @@ -14867,7 +15385,7 @@ promise-retry@^1.1.1: err-code "^1.0.0" retry "^0.10.0" -promise.hash.helper@^1.0.2, promise.hash.helper@^1.0.6, promise.hash.helper@^1.0.7: +promise.hash.helper@^1.0.2, 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== @@ -15056,7 +15574,7 @@ qunit-dom@^0.8.4: broccoli-funnel "^2.0.2" broccoli-merge-trees "^3.0.1" -qunit-dom@^1.1.0, qunit-dom@^1.2.0, qunit-dom@^1.6.0: +qunit-dom@^1.1.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== @@ -15066,7 +15584,7 @@ qunit-dom@^1.1.0, 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.14.1, qunit@^2.9.3: +qunit@^2.14.1, qunit@^2.6.1, qunit@^2.9.3: version "2.14.1" resolved "https://registry.yarnpkg.com/qunit/-/qunit-2.14.1.tgz#02ba25c108f0845fda411a42b5cbfca0f0319943" integrity sha512-jtFw8bf8+GjzY8UpnwbjqTOdK/rvrjcafUFTNpRc6/9N4q5dBwcwSMlcC76kAn5BRiSFj5Ssn2dfHtEYvtsXSw== @@ -15958,6 +16476,21 @@ saxes@^5.0.1: dependencies: xmlchars "^2.2.0" +scenario-tester@^0.4.0: + version "0.4.0" + resolved "https://registry.yarnpkg.com/scenario-tester/-/scenario-tester-0.4.0.tgz#164a6ea290fd817a9c304732912f18037174812e" + integrity sha512-2YKa+FrWuaRwQC8oVfIprE195hL7FzWEfXnnyD+PXYonrxchLnZoMhTInH7/6qkLqzM7YA3rtvCdPBL51vMTTA== + dependencies: + "@types/fs-extra" "^9.0.7" + "@types/tmp" "^0.2.0" + "@types/yargs" "^16.0.0" + fixturify-project ef4/node-fixturify-project#dcad8d1a56c586a38f63772eb0dd70ab2751d4e6 + fs-extra "^9.1.0" + glob "^7.1.6" + tmp "^0.2.1" + typescript "^4.1.5" + yargs "^16.2.0" + schema-utils@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-1.0.0.tgz#0b79a93204d7b600d4b2850d1f66c2a34951c770" @@ -16360,7 +16893,7 @@ 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.22.1, sort-package-json@^1.23.1, sort-package-json@^1.39.1, sort-package-json@^1.40.0, sort-package-json@^1.48.0: +sort-package-json@^1.22.1, sort-package-json@^1.23.1, sort-package-json@^1.39.1, 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== @@ -16402,7 +16935,7 @@ source-map-support@^0.4.15: dependencies: source-map "^0.5.6" -source-map-support@^0.5.16, source-map-support@^0.5.6, source-map-support@~0.5.10, source-map-support@~0.5.12, source-map-support@~0.5.19: +source-map-support@^0.5.16, source-map-support@^0.5.17, source-map-support@^0.5.6, source-map-support@~0.5.10, 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== @@ -17081,7 +17614,7 @@ testem@^2.14.0, testem@^2.17.0: tmp "0.0.33" xmldom "^0.1.19" -testem@^3.0.1, testem@^3.0.2, testem@^3.2.0: +testem@^3.0.1, testem@^3.2.0: version "3.4.0" resolved "https://registry.yarnpkg.com/testem/-/testem-3.4.0.tgz#48ab6b98e96085eeddac1fb46337872b13e9e06c" integrity sha512-09mhy7fQj9o1W1c/Lfcs56FYqhFiZrXZjnOSJn+KxWAdYjbF5yHEuGrg+L5ooBlleCGD9r1TQwKd3+DixskT0Q== @@ -17402,6 +17935,18 @@ tryor@~0.1.2: resolved "https://registry.yarnpkg.com/tryor/-/tryor-0.1.2.tgz#8145e4ca7caff40acde3ccf946e8b8bb75b4172b" integrity sha1-gUXkynyv9ArN48z5Rui4u3W0Fys= +ts-node@^9.1.1: + version "9.1.1" + resolved "https://registry.yarnpkg.com/ts-node/-/ts-node-9.1.1.tgz#51a9a450a3e959401bda5f004a72d54b936d376d" + integrity sha512-hPlt7ZACERQGf03M253ytLY3dHbGNGrAq9qIHWUY9XHYl1z7wYngSr3OQ5xmui8o2AaxsONxIzjafLUiWBo1Fg== + dependencies: + arg "^4.1.0" + create-require "^1.1.0" + diff "^4.0.1" + make-error "^1.1.1" + source-map-support "^0.5.17" + yn "3.1.1" + tsconfig-paths@^3.9.0: version "3.9.0" resolved "https://registry.yarnpkg.com/tsconfig-paths/-/tsconfig-paths-3.9.0.tgz#098547a6c4448807e8fcb8eae081064ee9a3c90b" @@ -17422,6 +17967,11 @@ tslib@^2.0.3: resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.1.0.tgz#da60860f1c2ecaa5703ab7d39bc05b6bf988b97a" integrity sha512-hcVC3wYEziELGGmEEXue7D75zbwIIVUMWAVbHItGPx0ziyXxrOMQx4rQEVEV45Ut/1IotuEvwqPopzIOkDMf0A== +tslib@^2.1.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.2.0.tgz#fb2c475977e35e241311ede2693cee1ec6698f5c" + integrity sha512-gS9GVHRU+RGn5KQM2rllAlR3dU6m7AcpJKdtH8gFvQiC4Otgk98XnmMU+nZenHt/+VhnBPWwgrJsyrdcw6i23w== + tsutils@^3.17.1: version "3.21.0" resolved "https://registry.yarnpkg.com/tsutils/-/tsutils-3.21.0.tgz#b48717d394cea6c1e096983eed58e9d61715b623" @@ -17505,6 +18055,11 @@ typescript-memoize@^1.0.0, typescript-memoize@^1.0.0-alpha.3: resolved "https://registry.yarnpkg.com/typescript-memoize/-/typescript-memoize-1.0.0.tgz#ad3b0e7e5a411ca234be123f913a2a31302b7eb6" integrity sha512-B1eufjs/mGzHqoGeI1VT/dnSBoZr2v3i3/Wm8NmdxlZflyVdleE8wO0QwUuj4NfundD7T5nU3I7HSKp/5BD9og== +typescript@^4.1.5: + version "4.2.4" + resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.2.4.tgz#8610b59747de028fda898a8aef0e103f156d0961" + integrity sha512-V+evlYHZnQkaz8TRBuxTA92yZBPotr5H+WhQ7bD3hZUndx5tGOa1fuCgeSjxAzM1RiN5IzvadIXTVefuuwZCRg== + typescript@~4.0.0: version "4.0.7" resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.0.7.tgz#7168032c43d2a2671c95c07812f69523c79590af" @@ -17800,12 +18355,7 @@ uuid@^3.3.2, uuid@^3.3.3, uuid@^3.4.0: resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.4.0.tgz#b23e4358afa8a202fe7a100af1f5f883f02007ee" integrity sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A== -uuid@^7.0.2: - version "7.0.3" - resolved "https://registry.yarnpkg.com/uuid/-/uuid-7.0.3.tgz#c5c9f2c8cf25dc0a372c4df1441c41f5bd0c680b" - integrity sha512-DPSke0pXhTZgoF/d+WSt2QaKMCFSfx7QegxEWT+JOuHF5aWrKEn0G+ztjuJg/gG8/ItK+rbPCD/yNv8yyih6Cg== - -v8-compile-cache@^2.0.3, v8-compile-cache@^2.2.0: +v8-compile-cache@^2.0.3, v8-compile-cache@^2.2.0, v8-compile-cache@^2.3.0: version "2.3.0" resolved "https://registry.yarnpkg.com/v8-compile-cache/-/v8-compile-cache-2.3.0.tgz#2de19618c66dc247dcfb6f99338035d8245a2cee" integrity sha512-l8lCEmLcLYZh4nbunNZvQCJc5pv7+RCwa8q/LdUx8u7lsWvPDKmpodJAJNwkAhJC//dFY48KuIEmjtd4RViDrA== @@ -18459,6 +19009,11 @@ yeast@0.1.2: resolved "https://registry.yarnpkg.com/yeast/-/yeast-0.1.2.tgz#008e06d8094320c372dbc2f8ed76a0ca6c8ac419" integrity sha1-AI4G2AlDIMNy28L47XagymyKxBk= +yn@3.1.1: + version "3.1.1" + resolved "https://registry.yarnpkg.com/yn/-/yn-3.1.1.tgz#1e87401a09d767c1d5eab26a6e4c185182d2eb50" + integrity sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q== + yocto-queue@^0.1.0: version "0.1.0" resolved "https://registry.yarnpkg.com/yocto-queue/-/yocto-queue-0.1.0.tgz#0294eb3dee05028d31ee1a5fa2c556a6aaf10a1b"