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"