diff --git a/CHANGELOG.md b/CHANGELOG.md index b66ee571c..245241147 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,44 @@ # Embroider Changelog +## Release (2024-05-08) + +@embroider/addon-shim 1.8.8 (patch) +@embroider/compat 3.5.0 (minor) +@embroider/router 2.1.7 (patch) + +#### :rocket: Enhancement +* `@embroider/compat` + * [#1907](https://github.com/embroider-build/embroider/pull/1907) Make ember-source compat adapter tolerant of upcoming ember-source changes ([@ef4](https://github.com/ef4)) + +#### :bug: Bug Fix +* `@embroider/router` + * [#1904](https://github.com/embroider-build/embroider/pull/1904) Fix getRoute override ([@jembezmamy](https://github.com/jembezmamy)) +* `@embroider/addon-shim` + * [#1901](https://github.com/embroider-build/embroider/pull/1901) [addon-shim]: Narrowed down broccoli trees for optimized file watching ([@simonihmig](https://github.com/simonihmig)) + +#### :house: Internal +* `@embroider/test-scenarios` + * [#1908](https://github.com/embroider-build/embroider/pull/1908) update tests to follow newer babel-plugin-ember-template-compiilation ([@ef4](https://github.com/ef4)) + +#### Committers: 3 +- Edward Faulkner ([@ef4](https://github.com/ef4)) +- Paweł Bator ([@jembezmamy](https://github.com/jembezmamy)) +- Simon Ihmig ([@simonihmig](https://github.com/simonihmig)) + +## Release (2024-04-30) + +@embroider/compat 3.4.9 (patch) +@embroider/core 3.4.9 (patch) +@embroider/macros 1.16.1 (patch) +@embroider/util 1.13.1 (patch) + +#### :bug: Bug Fix +* `@embroider/macros`, `@embroider/util` + * [#1891](https://github.com/embroider-build/embroider/pull/1891) Revert "Update to `ember-cli-babel` v8" ([@mansona](https://github.com/mansona)) + +#### Committers: 1 +- Chris Manson ([@mansona](https://github.com/mansona)) + ## Release (2024-04-18) @embroider/compat 3.4.8 (patch) diff --git a/packages/addon-shim/package.json b/packages/addon-shim/package.json index 14699bcdc..798c43685 100644 --- a/packages/addon-shim/package.json +++ b/packages/addon-shim/package.json @@ -1,6 +1,6 @@ { "name": "@embroider/addon-shim", - "version": "1.8.7", + "version": "1.8.8", "description": "Make v2 addons work in non-Embroider apps.", "keywords": [], "main": "./src/index.js", @@ -19,9 +19,11 @@ "dependencies": { "@embroider/shared-internals": "workspace:^", "broccoli-funnel": "^3.0.8", + "common-ancestor-path": "^1.0.1", "semver": "^7.3.8" }, "devDependencies": { + "@types/common-ancestor-path": "^1.0.2", "@types/semver": "^7.3.6", "broccoli-node-api": "^1.7.0", "typescript": "^5.4.5", diff --git a/packages/addon-shim/src/index.ts b/packages/addon-shim/src/index.ts index 05038a4fe..663285729 100644 --- a/packages/addon-shim/src/index.ts +++ b/packages/addon-shim/src/index.ts @@ -1,13 +1,13 @@ -import { resolve, relative, isAbsolute } from 'path'; -import { readFileSync } from 'fs'; import { - AddonMeta, AddonInstance, - isDeepAddonInstance, + AddonMeta, PackageInfo, + isDeepAddonInstance, } from '@embroider/shared-internals'; import buildFunnel from 'broccoli-funnel'; -import type { Node } from 'broccoli-node-api'; +import commonAncestorPath from 'common-ancestor-path'; +import { readFileSync } from 'fs'; +import { dirname, isAbsolute, join, normalize, relative, resolve } from 'path'; import { satisfies } from 'semver'; export interface ShimOptions { @@ -29,15 +29,46 @@ export function addonV1Shim(directory: string, options: ShimOptions = {}) { let meta = addonMeta(pkg); let disabled = false; - const rootTrees = new WeakMap(); - function rootTree(addonInstance: AddonInstance): Node { - let tree = rootTrees.get(addonInstance); - if (!tree) { - tree = addonInstance.treeGenerator(directory); - rootTrees.set(addonInstance, tree); + function treeFor( + addonInstance: AddonInstance, + resourceMap: Record, + // default expectation is for resourceMap to map from interior to exterior, swap if needed + swapInteriorExterior = false + ) { + const absoluteInteriorPaths = Object[ + swapInteriorExterior ? 'values' : 'keys' + ](resourceMap).map((internalPath) => join(directory, internalPath)); + + if (absoluteInteriorPaths.length === 0) { + return; } - return tree; + + const ancestorPath = + commonAncestorPath(...absoluteInteriorPaths.map(dirname)) ?? directory; + const ancestorPathRel = relative(directory, ancestorPath); + const ancestorTree = addonInstance.treeGenerator(ancestorPath); + const relativeInteriorPaths = absoluteInteriorPaths.map((absPath) => + relative(ancestorPath, absPath) + ); + + return buildFunnel(ancestorTree, { + files: relativeInteriorPaths, + getDestinationPath(relativePath: string): string { + for (let [a, b] of Object.entries(resourceMap)) { + const interiorName = swapInteriorExterior ? b : a; + const exteriorName = swapInteriorExterior ? a : b; + if (join(ancestorPathRel, relativePath) === normalize(interiorName)) { + return exteriorName; + } + } + throw new Error( + `bug in addonV1Shim, no match for ${relativePath} in ${JSON.stringify( + resourceMap + )}` + ); + }, + }); } return { @@ -72,22 +103,7 @@ export function addonV1Shim(directory: string, options: ShimOptions = {}) { } let maybeAppJS = meta['app-js']; if (maybeAppJS) { - const appJS = maybeAppJS; - return buildFunnel(rootTree(this), { - files: Object.values(appJS), - getDestinationPath(relativePath: string): string { - for (let [exteriorName, interiorName] of Object.entries(appJS)) { - if (relativePath === interiorName) { - return exteriorName; - } - } - throw new Error( - `bug in addonV1Shim, no match for ${relativePath} in ${JSON.stringify( - appJS - )}` - ); - }, - }); + return treeFor(this, maybeAppJS, true); } }, @@ -104,22 +120,7 @@ export function addonV1Shim(directory: string, options: ShimOptions = {}) { } let maybeAssets = meta['public-assets']; if (maybeAssets) { - const assets = maybeAssets; - return buildFunnel(rootTree(this), { - files: Object.keys(assets), - getDestinationPath(relativePath: string): string { - for (let [interiorName, exteriorName] of Object.entries(assets)) { - if (relativePath === interiorName) { - return exteriorName; - } - } - throw new Error( - `bug in addonV1Shim, no match for ${relativePath} in ${JSON.stringify( - assets - )}` - ); - }, - }); + return treeFor(this, maybeAssets); } }, diff --git a/packages/compat/package.json b/packages/compat/package.json index e5e31ff9f..f1c676099 100644 --- a/packages/compat/package.json +++ b/packages/compat/package.json @@ -1,6 +1,6 @@ { "name": "@embroider/compat", - "version": "3.4.8", + "version": "3.5.0", "private": false, "description": "Backward compatibility layer for the Embroider build system.", "repository": { diff --git a/packages/compat/src/compat-adapters/ember-source.ts b/packages/compat/src/compat-adapters/ember-source.ts index f2187269c..0eb73cced 100644 --- a/packages/compat/src/compat-adapters/ember-source.ts +++ b/packages/compat/src/compat-adapters/ember-source.ts @@ -11,6 +11,7 @@ import type * as Babel from '@babel/core'; import type { NodePath } from '@babel/traverse'; import Plugin from 'broccoli-plugin'; import type { Node } from 'broccoli-node-api'; +import { existsSync } from 'fs'; export default class extends V1Addon { get v2Tree() { @@ -21,11 +22,27 @@ export default class extends V1Addon { return this.app.options.staticEmberSource; } - // ember-source inlines a whole bunch of dependencies into itself + // versions of ember-source prior to + // https://github.com/emberjs/ember.js/pull/20675 ship dist/packages and + // dist/dependencies separately and the imports between them are package-name + // imports. Since many of the dependencies are also true package.json + // dependencies (in order to get typescript types), and our module-resolver + // prioritizes true dependencies, it's necessary to detect and remove the + // package.json dependencies. + // + // After the above linked change, ember-source ships only dist/packages and + // the inter-package imports are all relative. Some of the things in + // dist/packages are still the rolled-in dependencies, but now that the + // imports are all relative we need no special handling for them (beyond the + // normal v2 addon renamed-modules support. @Memoize() private get includedDependencies() { let result: string[] = []; - for (let name of readdirSync(resolve(this.root, 'dist', 'dependencies'))) { + let depsDir = resolve(this.root, 'dist', 'dependencies'); + if (!existsSync(depsDir)) { + return result; + } + for (let name of readdirSync(depsDir)) { if (name[0] === '@') { for (let innerName of readdirSync(resolve(this.root, 'dist', 'dependencies', name))) { if (innerName.endsWith('.js')) { @@ -87,6 +104,7 @@ export default class extends V1Addon { packages, buildFunnel(this.rootTree, { srcDir: 'dist/dependencies', + allowEmpty: true, }), ]; diff --git a/packages/core/package.json b/packages/core/package.json index 66d896c97..b7d23b375 100644 --- a/packages/core/package.json +++ b/packages/core/package.json @@ -1,6 +1,6 @@ { "name": "@embroider/core", - "version": "3.4.8", + "version": "3.4.9", "private": false, "description": "A build system for EmberJS applications.", "repository": { diff --git a/packages/macros/package.json b/packages/macros/package.json index c7ad3d2b6..7d68923ec 100644 --- a/packages/macros/package.json +++ b/packages/macros/package.json @@ -1,6 +1,6 @@ { "name": "@embroider/macros", - "version": "1.16.0", + "version": "1.16.1", "private": false, "description": "Standardized build-time macros for ember apps.", "keywords": [ @@ -23,17 +23,17 @@ "test": "jest" }, "dependencies": { - "@babel/core": "^7.24.0", "@embroider/shared-internals": "workspace:*", "assert-never": "^1.2.1", "babel-import-util": "^2.0.0", - "ember-cli-babel": "^8.2.0", + "ember-cli-babel": "^7.26.6", "find-up": "^5.0.0", "lodash": "^4.17.21", "resolve": "^1.20.0", "semver": "^7.3.2" }, "devDependencies": { + "@babel/core": "^7.14.5", "@babel/plugin-transform-modules-amd": "^7.19.6", "@babel/traverse": "^7.14.5", "@embroider/core": "workspace:*", diff --git a/packages/router/package.json b/packages/router/package.json index ecfeb644a..e520f3ff4 100644 --- a/packages/router/package.json +++ b/packages/router/package.json @@ -1,6 +1,6 @@ { "name": "@embroider/router", - "version": "2.1.6", + "version": "2.1.7", "description": "Lazy loading router", "keywords": [ "ember-addon" diff --git a/packages/router/src/index.ts b/packages/router/src/index.ts index 6c0c55e26..cdf2a22ea 100644 --- a/packages/router/src/index.ts +++ b/packages/router/src/index.ts @@ -14,6 +14,17 @@ type EngineInfoByRoute = Record; let Router: typeof EmberRouter; +interface GetRoute { + (name: string): ReturnType; + isEmbroiderRouterHandler?: true; +} + +interface Internals { + _routerMicrolib: { + getRoute: GetRoute; + }; +} + if (macroCondition(getGlobalConfig()['@embroider/core']?.active ?? false)) { const waiter = buildWaiter('@embroider/router:lazy-route-waiter'); @@ -65,16 +76,18 @@ if (macroCondition(getGlobalConfig()['@embroider/core']?.active ?? // This is the framework method that we're overriding to provide our own // handlerResolver. - setupRouter(...args: unknown[]) { + setupRouter(this: this & Internals, ...args: unknown[]) { // @ts-expect-error extending private method let isSetup = super.setupRouter(...args); - let microLib = (this as unknown as { _routerMicrolib: { getRoute: (name: string) => unknown } })._routerMicrolib; - microLib.getRoute = this._handlerResolver(microLib.getRoute.bind(microLib)); + let microLib = this._routerMicrolib; + if (!microLib.getRoute.isEmbroiderRouterHandler) { + microLib.getRoute = this._handlerResolver(microLib.getRoute.bind(microLib)); + } return isSetup; } private _handlerResolver(original: (name: string) => unknown) { - return (name: string) => { + let handler = ((name: string) => { const bundle = this.lazyBundle(name); if (!bundle || bundle.loaded) { return original(name); @@ -93,7 +106,9 @@ if (macroCondition(getGlobalConfig()['@embroider/core']?.active ?? throw err; } ); - }; + }) as GetRoute; + handler.isEmbroiderRouterHandler = true; + return handler; } } diff --git a/packages/util/package.json b/packages/util/package.json index 41dd864dd..ae4261332 100644 --- a/packages/util/package.json +++ b/packages/util/package.json @@ -1,6 +1,6 @@ { "name": "@embroider/util", - "version": "1.13.0", + "version": "1.13.1", "description": "Utilities for app and addon authors.", "keywords": [ "ember-addon" @@ -27,10 +27,9 @@ "test:ember-compatibility": "ember try:each" }, "dependencies": { - "@babel/core": "^7.24.0", "@embroider/macros": "workspace:^", "broccoli-funnel": "^3.0.5", - "ember-cli-babel": "^8.2.0" + "ember-cli-babel": "^7.26.11" }, "peerDependencies": { "ember-source": "*", @@ -46,6 +45,7 @@ } }, "devDependencies": { + "@babel/core": "^7.19.6", "@ember/jquery": "^2.0.0", "@ember/optional-features": "^2.0.0", "@ember/string": "^3.1.1", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index cb8e8dbf7..dfd770ab9 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -117,10 +117,16 @@ importers: broccoli-funnel: specifier: ^3.0.8 version: 3.0.8 + common-ancestor-path: + specifier: ^1.0.1 + version: 1.0.1 semver: specifier: ^7.3.8 version: 7.6.2 devDependencies: + '@types/common-ancestor-path': + specifier: ^1.0.2 + version: 1.0.2 '@types/semver': specifier: ^7.3.6 version: 7.5.8 @@ -199,7 +205,7 @@ importers: version: 2.1.1 babel-plugin-ember-template-compilation: specifier: ^2.1.1 - version: 2.2.4 + version: 2.2.5 babel-plugin-syntax-dynamic-import: specifier: ^6.18.0 version: 6.18.0 @@ -380,7 +386,7 @@ importers: version: 1.2.1 babel-plugin-ember-template-compilation: specifier: ^2.1.1 - version: 2.2.4 + version: 2.2.5 broccoli-node-api: specifier: ^1.7.0 version: 1.7.0 @@ -401,7 +407,7 @@ importers: version: 1.4.0 filesize: specifier: ^10.0.7 - version: 10.1.1 + version: 10.1.2 fs-extra: specifier: ^9.1.0 version: 9.1.0 @@ -505,9 +511,6 @@ importers: packages/macros: dependencies: - '@babel/core': - specifier: ^7.24.0 - version: 7.24.5 '@embroider/shared-internals': specifier: workspace:* version: link:../shared-internals @@ -518,8 +521,8 @@ importers: specifier: ^2.0.0 version: 2.1.1 ember-cli-babel: - specifier: ^8.2.0 - version: 8.2.0(@babel/core@7.24.5) + specifier: ^7.26.6 + version: 7.26.11 find-up: specifier: ^5.0.0 version: 5.0.0 @@ -533,6 +536,9 @@ importers: specifier: ^7.3.2 version: 7.6.2 devDependencies: + '@babel/core': + specifier: ^7.14.5 + version: 7.24.5 '@babel/plugin-transform-modules-amd': specifier: ^7.19.6 version: 7.24.1(@babel/core@7.24.5) @@ -574,7 +580,7 @@ importers: version: 7.5.8 babel-plugin-ember-template-compilation: specifier: ^2.1.1 - version: 2.2.4 + version: 2.2.5 code-equality-assertions: specifier: ^0.9.0 version: 0.9.0(@types/jest@29.5.12)(qunit@2.20.1) @@ -767,9 +773,6 @@ importers: packages/util: dependencies: - '@babel/core': - specifier: ^7.24.0 - version: 7.24.5 '@embroider/macros': specifier: workspace:^ version: link:../macros @@ -777,9 +780,12 @@ importers: specifier: ^3.0.5 version: 3.0.8 ember-cli-babel: - specifier: ^8.2.0 - version: 8.2.0(@babel/core@7.24.5) + specifier: ^7.26.11 + version: 7.26.11 devDependencies: + '@babel/core': + specifier: ^7.19.6 + version: 7.24.5 '@ember/jquery': specifier: ^2.0.0 version: 2.0.0 @@ -1715,7 +1721,7 @@ importers: version: 7.5.8 babel-plugin-ember-template-compilation: specifier: ^2.1.1 - version: 2.2.4 + version: 2.2.5 bootstrap: specifier: ^4.3.1 version: 4.6.2 @@ -1778,7 +1784,7 @@ importers: version: /ember-source@4.4.5(@babel/core@7.24.5)(webpack@5.91.0) ember-source-beta: specifier: npm:ember-source@beta - version: /ember-source@5.9.0-beta.1(@babel/core@7.24.5)(webpack@5.91.0) + version: /ember-source@5.9.0-beta.2(@babel/core@7.24.5)(webpack@5.91.0) ember-source-canary: specifier: https://s3.amazonaws.com/builds.emberjs.com/canary/shas/370cf34f9e86df17b880f11fef35a5a0f24ff38a.tgz version: '@s3.amazonaws.com/builds.emberjs.com/canary/shas/370cf34f9e86df17b880f11fef35a5a0f24ff38a.tgz(@babel/core@7.24.5)(webpack@5.91.0)' @@ -2020,7 +2026,7 @@ packages: engines: {node: '>=6.9.0'} dependencies: '@babel/highlight': 7.24.5 - picocolors: 1.0.0 + picocolors: 1.0.1 /@babel/compat-data@7.24.4: resolution: {integrity: sha512-vg8Gih2MLK+kOkHJp4gBEIkyaIi00jgWot2D9QOmmfLC8jINSOzmCLta6Bvz/JSBCqnegV0L80jhxkol5GWNfQ==} @@ -2311,7 +2317,7 @@ packages: '@babel/helper-validator-identifier': 7.24.5 chalk: 2.4.2 js-tokens: 4.0.0 - picocolors: 1.0.0 + picocolors: 1.0.1 /@babel/parser@7.24.5: resolution: {integrity: sha512-EOv5IK8arwh3LI47dz1b0tKUb/1uhHAnHJOrjgtQMIpu1uXd9mlFrJg9IUgGUgZ41Ch0K8REPTYpO7B76b4vJg==} @@ -3235,7 +3241,7 @@ packages: babel-plugin-polyfill-corejs2: 0.4.11(@babel/core@7.24.5) babel-plugin-polyfill-corejs3: 0.10.4(@babel/core@7.24.5) babel-plugin-polyfill-regenerator: 0.6.2(@babel/core@7.24.5) - core-js-compat: 3.37.0 + core-js-compat: 3.37.1 semver: 6.3.1 transitivePeerDependencies: - supports-color @@ -3326,7 +3332,7 @@ packages: babel-plugin-polyfill-corejs2: 0.4.11(@babel/core@7.24.5)(supports-color@8.1.1) babel-plugin-polyfill-corejs3: 0.10.4(@babel/core@7.24.5)(supports-color@8.1.1) babel-plugin-polyfill-regenerator: 0.6.2(@babel/core@7.24.5)(supports-color@8.1.1) - core-js-compat: 3.37.0 + core-js-compat: 3.37.1 semver: 6.3.1 transitivePeerDependencies: - supports-color @@ -3457,8 +3463,8 @@ packages: '@csstools/css-tokenizer': 2.3.1 dev: true - /@csstools/selector-specificity@3.0.3(postcss-selector-parser@6.0.16): - resolution: {integrity: sha512-KEPNw4+WW5AVEIyzC80rTbWEUatTW2lXpN8+8ILC8PiPeWPjwUzrPZDIOZ2wwqDmeqOYTdSGyL3+vE5GC3FB3Q==} + /@csstools/selector-specificity@3.1.1(postcss-selector-parser@6.0.16): + resolution: {integrity: sha512-a7cxGcJ2wIlMFLlh8z2ONm+715QkPHiyJcxwQlKOz/03GPw1COpfhcmC9wm4xlZfp//jWHNNMwzjtqHXVWU9KA==} engines: {node: ^14 || ^16 || >=18} peerDependencies: postcss-selector-parser: ^6.0.13 @@ -6486,7 +6492,7 @@ packages: engines: {node: ^16.14.0 || >=18.0.0} dependencies: '@npmcli/git': 5.0.7 - glob: 10.3.14 + glob: 10.3.15 hosted-git-info: 7.0.2 json-parse-even-better-errors: 3.0.2 normalize-package-data: 6.0.1 @@ -7402,6 +7408,10 @@ packages: /@types/chai@4.3.16: resolution: {integrity: sha512-PatH4iOdyh3MyWtmHVFXLWCCIhUbopaltqddG9BzB+gMIzee2MJrvd+jouii9Z3wzQJruGWAm7WOMjgfG8hQlQ==} + /@types/common-ancestor-path@1.0.2: + resolution: {integrity: sha512-8llyULydTb7nM9yfiW78n6id3cet+qnATPV3R44yIywxgBaa8QXFSM9QTMf4OH64QOB45BlgZ3/oL4mmFLztQw==} + dev: true + /@types/connect@3.4.38: resolution: {integrity: sha512-K6uROf1LD88uDQqJCktA4yzL1YYAK6NgfsI0v/mTgyPKWsX1CnJ0XPSDhViejru1GcRkLWb8RlzFYJRqGUbaug==} dependencies: @@ -8877,8 +8887,8 @@ packages: dependencies: ember-rfc176-data: 0.3.18 - /babel-plugin-ember-template-compilation@2.2.4: - resolution: {integrity: sha512-g1p/6CZL4lYUl2gnmdZ1/2ZRSL412Hm67+jpKocG6Ac0ZArEY4+uwrLiaOxd/31SgkkDtAykhycBV9VamZG+bw==} + /babel-plugin-ember-template-compilation@2.2.5: + resolution: {integrity: sha512-NQ2DT0DsYyHVrEpFQIy2U8S91JaKSE8NOSZzMd7KZFJVgA6KodJq3Uj852HcH9LsSfvwppnM+dRo1G8bzTnnFw==} engines: {node: '>= 12.*'} dependencies: '@glimmer/syntax': 0.84.3 @@ -8953,6 +8963,7 @@ packages: pkg-up: 3.1.0 reselect: 4.1.8 resolve: 1.22.8 + dev: true /babel-plugin-polyfill-corejs2@0.4.11(@babel/core@7.24.5): resolution: {integrity: sha512-sMEJ27L0gRHShOh5G54uAAPaiCOygY/5ratXuiyb2G46FmlSpc9eFCzYVyDiPxfNbwzA7mYahmjQc5q+CZQ09Q==} @@ -8986,7 +8997,7 @@ packages: dependencies: '@babel/core': 7.24.5 '@babel/helper-define-polyfill-provider': 0.6.2(@babel/core@7.24.5) - core-js-compat: 3.37.0 + core-js-compat: 3.37.1 transitivePeerDependencies: - supports-color @@ -8997,7 +9008,7 @@ packages: dependencies: '@babel/core': 7.24.5(supports-color@8.1.1) '@babel/helper-define-polyfill-provider': 0.6.2(@babel/core@7.24.5)(supports-color@8.1.1) - core-js-compat: 3.37.0 + core-js-compat: 3.37.1 transitivePeerDependencies: - supports-color dev: false @@ -9544,6 +9555,7 @@ packages: resolution: {integrity: sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==} dependencies: balanced-match: 1.0.2 + dev: true /braces@2.3.2: resolution: {integrity: sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==} @@ -9650,6 +9662,7 @@ packages: workerpool: 6.5.1 transitivePeerDependencies: - supports-color + dev: true /broccoli-builder@0.18.14: resolution: {integrity: sha512-YoUHeKnPi4xIGZ2XDVN9oHNA9k3xF5f5vlA+1wvrxIIDXqQU97gp2FxVAF503Zxdtt0C5CRB5n+47k2hlkaBzA==} @@ -10241,10 +10254,10 @@ packages: engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} hasBin: true dependencies: - caniuse-lite: 1.0.30001617 - electron-to-chromium: 1.4.762 + caniuse-lite: 1.0.30001618 + electron-to-chromium: 1.4.769 node-releases: 2.0.14 - update-browserslist-db: 1.0.15(browserslist@4.23.0) + update-browserslist-db: 1.0.16(browserslist@4.23.0) /bser@2.1.1: resolution: {integrity: sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ==} @@ -10413,8 +10426,8 @@ packages: path-temp: 2.1.0 dev: true - /caniuse-lite@1.0.30001617: - resolution: {integrity: sha512-mLyjzNI9I+Pix8zwcrpxEbGlfqOkF9kM3ptzmKNw5tizSyYwMe+nGLTqMK9cO+0E+Bh6TsBxNAaHWEM8xwSsmA==} + /caniuse-lite@1.0.30001618: + resolution: {integrity: sha512-p407+D1tIkDvsEAPS22lJxLQQaG8OTBEqo0KhzfABGk0TU4juBNDSfH0hyAp/HRyx+M8L17z/ltyhxh27FTfQg==} /capture-exit@2.0.0: resolution: {integrity: sha512-PiT/hQmTonHhl/HFGN+Lx3JJUznrVYJ3+AQsnthneZbvW7x+f08Tk7yLJTLEOUvBTbduLeeBkxEaYXUOUrRq6g==} @@ -10579,8 +10592,8 @@ packages: resolution: {integrity: sha512-ywqV+5MmyL4E7ybXgKys4DugZbX0FC6LnwrhjuykIjnK9k8OQacQ7axGKnjDXWNhns0xot3bZI5h55H8yo9cJg==} engines: {node: '>=6'} - /cli-table3@0.6.4: - resolution: {integrity: sha512-Lm3L0p+/npIQWNIiyF/nAn7T5dnOwR3xNTHXYEBFBFVPXzCVNZ5lqEC/1eo/EVfpDsQ1I+TX4ORPQgp+UI0CRw==} + /cli-table3@0.6.5: + resolution: {integrity: sha512-+W/5efTR7y5HRD7gACw9yQjqMVvEMLBHmboM/kPWam+H+Hmyrgjh6YncVKK122YZkXrLudzTuAukUw9FnMf7IQ==} engines: {node: 10.* || >= 12.*} dependencies: string-width: 4.2.3 @@ -10769,7 +10782,6 @@ packages: /common-ancestor-path@1.0.1: resolution: {integrity: sha512-L3sHRo1pXXEqX8VU28kfgUY+YGsk09hPqZiZmLacNib6XNTCM8ubYeT7ryXQw8asB1sKgcU5lkB7ONug08aB8w==} - dev: true /common-path-prefix@3.0.0: resolution: {integrity: sha512-QE33hToZseCH3jS0qN96O/bSh3kaw/h+Tq7ngyY9eWDUnTlTNUyqfqvCXioLe5Na5jFsL78ra/wuBU4iuEgd4w==} @@ -11100,8 +11112,8 @@ packages: resolution: {integrity: sha512-XgZ0pFcakEUlbwQEVNg3+QAis1FyTL3Qel9FYy8pSkQqoG3PNoT0bOCQtOXcOkur21r2Eq2kI+IE+gsmAEVlYw==} engines: {node: '>=0.10.0'} - /core-js-compat@3.37.0: - resolution: {integrity: sha512-vYq4L+T8aS5UuFg4UwDhc7YNRWVeVZwltad9C/jV3R2LgVOpS9BDr7l/WL6BN0dbV3k1XejPTHqqEzJgsa0frA==} + /core-js-compat@3.37.1: + resolution: {integrity: sha512-9TNiImhKvQqSUkOvk/mMRZzOANTiEVC7WaBNhHcKM7x+/5E1l5NvsysR19zuDQScE8k+kfQXWRN3AtS/eOSHpg==} dependencies: browserslist: 4.23.0 @@ -11682,8 +11694,8 @@ packages: /ee-first@1.1.1: resolution: {integrity: sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==} - /electron-to-chromium@1.4.762: - resolution: {integrity: sha512-rrFvGweLxPwwSwJOjIopy3Vr+J3cIPtZzuc74bmlvmBIgQO3VYJDvVrlj94iKZ3ukXUH64Ex31hSfRTLqvjYJQ==} + /electron-to-chromium@1.4.769: + resolution: {integrity: sha512-bZu7p623NEA2rHTc9K1vykl57ektSPQYFFqQir8BOYf6EKOB+yIsbFB9Kpm7Cgt6tsLr9sRkqfqSZUw7LP1XxQ==} /ember-asset-loader@0.6.1: resolution: {integrity: sha512-e2zafQJBMLhzl69caTG/+mQMH20uMHYrm7KcmdbmnX0oY2dZ48bhm0Wh1SPLXS/6G2T9NsNMWX6J2pVSnI+xyA==} @@ -11714,7 +11726,7 @@ packages: '@embroider/shared-internals': 2.6.0 babel-loader: 8.3.0(@babel/core@7.24.5) babel-plugin-ember-modules-api-polyfill: 3.5.0 - babel-plugin-ember-template-compilation: 2.2.4 + babel-plugin-ember-template-compilation: 2.2.5 babel-plugin-htmlbars-inline-precompile: 5.3.1 babel-plugin-syntax-dynamic-import: 6.18.0 broccoli-debug: 0.6.5 @@ -11758,7 +11770,7 @@ packages: '@embroider/shared-internals': 2.6.0 babel-loader: 8.3.0(@babel/core@7.24.5)(webpack@5.91.0) babel-plugin-ember-modules-api-polyfill: 3.5.0 - babel-plugin-ember-template-compilation: 2.2.4 + babel-plugin-ember-template-compilation: 2.2.5 babel-plugin-htmlbars-inline-precompile: 5.3.1 babel-plugin-syntax-dynamic-import: 6.18.0 broccoli-debug: 0.6.5 @@ -11990,6 +12002,7 @@ packages: semver: 7.6.2 transitivePeerDependencies: - supports-color + dev: true /ember-cli-build-config-editor@0.5.1: resolution: {integrity: sha512-wNGVcpHbp6R+DeDHdpx+w4M+F+2cjaFDvf4ZV3VeIcHXLoxYlo0duXkbOLVKalHK/al6xO+rlZt5KqjK5Cyp0w==} @@ -12160,7 +12173,7 @@ packages: engines: {node: 12.* || 14.* || >= 16} dependencies: '@ember/edition-utils': 1.2.0 - babel-plugin-ember-template-compilation: 2.2.4 + babel-plugin-ember-template-compilation: 2.2.5 babel-plugin-htmlbars-inline-precompile: 5.3.1 broccoli-debug: 0.6.5 broccoli-persistent-filter: 3.1.3 @@ -12904,7 +12917,7 @@ packages: execa: 5.1.1 exit: 0.1.2 express: 4.19.2 - filesize: 10.1.1 + filesize: 10.1.2 find-up: 5.0.0 find-yarn-workspace-root: 2.0.0 fixturify-project: 2.1.1 @@ -12919,7 +12932,7 @@ packages: heimdalljs-logger: 0.1.10 http-proxy: 1.18.1 inflection: 2.0.1 - inquirer: 9.2.20 + inquirer: 9.2.21 is-git-url: 1.0.0 is-language-code: 3.1.0 isbinaryfile: 5.0.2 @@ -13055,7 +13068,7 @@ packages: execa: 5.1.1 exit: 0.1.2 express: 4.19.2 - filesize: 10.1.1 + filesize: 10.1.2 find-up: 5.0.0 find-yarn-workspace-root: 2.0.0 fixturify-project: 2.1.1 @@ -13070,7 +13083,7 @@ packages: heimdalljs-logger: 0.1.10 http-proxy: 1.18.1 inflection: 2.0.1 - inquirer: 9.2.20 + inquirer: 9.2.21 is-git-url: 1.0.0 is-language-code: 3.1.0 isbinaryfile: 5.0.2 @@ -13205,7 +13218,7 @@ packages: execa: 5.1.1 exit: 0.1.2 express: 4.19.2 - filesize: 10.1.1 + filesize: 10.1.2 find-up: 5.0.0 find-yarn-workspace-root: 2.0.0 fixturify-project: 2.1.1 @@ -13220,7 +13233,7 @@ packages: heimdalljs-logger: 0.1.10 http-proxy: 1.18.1 inflection: 2.0.1 - inquirer: 9.2.20 + inquirer: 9.2.21 is-git-url: 1.0.0 is-language-code: 3.1.0 isbinaryfile: 5.0.2 @@ -13352,7 +13365,7 @@ packages: execa: 5.1.1 exit: 0.1.2 express: 4.19.2 - filesize: 10.1.1 + filesize: 10.1.2 find-up: 5.0.0 find-yarn-workspace-root: 2.0.0 fixturify-project: 2.1.1 @@ -13367,7 +13380,7 @@ packages: heimdalljs-logger: 0.1.10 http-proxy: 1.18.1 inflection: 2.0.1 - inquirer: 9.2.20 + inquirer: 9.2.21 is-git-url: 1.0.0 is-language-code: 3.1.0 isbinaryfile: 5.0.2 @@ -14452,7 +14465,7 @@ packages: '@glimmer/vm-babel-plugins': 0.87.1(@babel/core@7.24.5) '@simple-dom/interface': 1.4.0 babel-plugin-debug-macros: 0.3.4(@babel/core@7.24.5) - babel-plugin-ember-template-compilation: 2.2.4 + babel-plugin-ember-template-compilation: 2.2.5 babel-plugin-filter-imports: 4.0.0 backburner.js: 2.8.0 broccoli-concat: 4.2.5 @@ -14511,7 +14524,7 @@ packages: '@glimmer/vm-babel-plugins': 0.87.1(@babel/core@7.24.5) '@simple-dom/interface': 1.4.0 babel-plugin-debug-macros: 0.3.4(@babel/core@7.24.5) - babel-plugin-ember-template-compilation: 2.2.4 + babel-plugin-ember-template-compilation: 2.2.5 babel-plugin-filter-imports: 4.0.0 backburner.js: 2.8.0 broccoli-concat: 4.2.5 @@ -14544,8 +14557,8 @@ packages: - webpack dev: true - /ember-source@5.9.0-beta.1(@babel/core@7.24.5)(webpack@5.91.0): - resolution: {integrity: sha512-+Kbbf7Db65fBOwxjwjlOcdmTpCSpmNm1adoz+NWoA8JBV+Pz/aJ8jIw4PCZwsNbc8eflF72Qm8LVnt88/392XQ==} + /ember-source@5.9.0-beta.2(@babel/core@7.24.5)(webpack@5.91.0): + resolution: {integrity: sha512-3476KQBR7zlq9ITbgeG+P7oYpmtpMF6+/aKH+Sx7iLKjAlw3QRR2UEOboH0joAlbU+1/cLtDdK0txnefK43ViQ==} engines: {node: '>= 16.*'} dependencies: '@babel/helper-module-imports': 7.24.3 @@ -14570,7 +14583,7 @@ packages: '@glimmer/vm-babel-plugins': 0.92.0(@babel/core@7.24.5) '@simple-dom/interface': 1.4.0 babel-plugin-debug-macros: 0.3.4(@babel/core@7.24.5) - babel-plugin-ember-template-compilation: 2.2.4 + babel-plugin-ember-template-compilation: 2.2.5 babel-plugin-filter-imports: 4.0.0 backburner.js: 2.8.0 broccoli-concat: 4.2.5 @@ -14785,7 +14798,7 @@ packages: engines: {node: 10.* || 12.* || >= 14.*} dependencies: chalk: 4.1.2 - cli-table3: 0.6.4 + cli-table3: 0.6.5 core-object: 3.1.5 debug: 4.3.4(supports-color@9.4.0) ember-try-config: 4.0.0 @@ -16115,8 +16128,8 @@ packages: flat-cache: 3.2.0 dev: true - /filesize@10.1.1: - resolution: {integrity: sha512-L0cdwZrKlwZQkMSFnCflJ6J2Y+5egO/p3vgRSDQGxQt++QbUZe5gMbRO6kg6gzwQDPvq2Fk9AmoxUNfZ5gdqaQ==} + /filesize@10.1.2: + resolution: {integrity: sha512-Dx770ai81ohflojxhU+oG+Z2QGvKdYxgEr9OSA8UVrqhwNHjfH9A8f5NKfg83fEH8ZFA5N5llJo5T3PIoZ4CRA==} engines: {node: '>= 10.4.0'} /filesize@6.4.0: @@ -16188,6 +16201,7 @@ packages: dependencies: json5: 2.2.3 path-exists: 4.0.0 + dev: true /find-cache-dir@3.3.2: resolution: {integrity: sha512-wXZV5emFEjrridIgED11OoUKLxiYjAcqot/NJdAkOhlJ+vGzwhOAfcG5OX1jP+S0PcjEn8bdMJv+g2jwQ3Onig==} @@ -16762,16 +16776,16 @@ packages: /glob-to-regexp@0.4.1: resolution: {integrity: sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==} - /glob@10.3.14: - resolution: {integrity: sha512-4fkAqu93xe9Mk7le9v0y3VrPDqLKHarNi2s4Pv7f2yOvfhWfhc7hRPHC/JyqMqb8B/Dt/eGS4n7ykwf3fOsl8g==} - engines: {node: '>=16 || 14 >=14.17'} + /glob@10.3.15: + resolution: {integrity: sha512-0c6RlJt1TICLyvJYIApxb8GsXoai0KUP7AxKKAtsYXdgJR1mGEUa7DgwShbdk1nly0PYoZj01xd4hzbq3fsjpw==} + engines: {node: '>=16 || 14 >=14.18'} hasBin: true dependencies: foreground-child: 3.1.1 jackspeak: 2.3.6 minimatch: 9.0.4 minipass: 7.1.1 - path-scurry: 1.11.0 + path-scurry: 1.11.1 dev: true /glob@5.0.15: @@ -16802,6 +16816,7 @@ packages: inherits: 2.0.4 minimatch: 5.1.6 once: 1.4.0 + dev: true /glob@9.3.5: resolution: {integrity: sha512-e1LleDykUz2Iu+MTYdkSsuWX8lvAjAcs0Xef0lNIu0S2wOAzuTxCJtcd9S3cijlwYF18EsU3rzb8jPVobxDh9Q==} @@ -16810,7 +16825,7 @@ packages: fs.realpath: 1.0.0 minimatch: 8.0.4 minipass: 4.2.8 - path-scurry: 1.11.0 + path-scurry: 1.11.1 dev: true /global-modules@1.0.0: @@ -17493,8 +17508,8 @@ packages: through: 2.3.8 dev: true - /inquirer@9.2.20: - resolution: {integrity: sha512-SFwJJPS+Ms75NV+wzFBHjirG4z3tzvis31h+9NyH1tqjIu2c7vCavlXILZ73q/nPYy8/aw4W+DNzLH5MjfYXiA==} + /inquirer@9.2.21: + resolution: {integrity: sha512-c/dwDruM1FtzeISV+xMHm+JZTmhpmgWPEZI2bU3+Fwu5MhbAX0zMHHxj5warNfttE5NUID3aijrFUpDc2yBvcA==} engines: {node: '>=18'} dependencies: '@inquirer/figures': 1.0.1 @@ -18454,7 +18469,7 @@ packages: http-proxy-agent: 4.0.1 https-proxy-agent: 5.0.1 is-potential-custom-element-name: 1.0.1 - nwsapi: 2.2.9 + nwsapi: 2.2.10 parse5: 6.0.1 saxes: 5.0.1 symbol-tree: 3.2.4 @@ -18496,7 +18511,7 @@ packages: http-proxy-agent: 4.0.1(supports-color@8.1.1) https-proxy-agent: 5.0.1(supports-color@8.1.1) is-potential-custom-element-name: 1.0.1 - nwsapi: 2.2.9 + nwsapi: 2.2.10 parse5: 6.0.1 saxes: 5.0.1 symbol-tree: 3.2.4 @@ -18538,7 +18553,7 @@ packages: http-proxy-agent: 5.0.0 https-proxy-agent: 5.0.1 is-potential-custom-element-name: 1.0.1 - nwsapi: 2.2.9 + nwsapi: 2.2.10 parse5: 6.0.1 saxes: 5.0.1 symbol-tree: 3.2.4 @@ -19416,6 +19431,7 @@ packages: engines: {node: '>=10'} dependencies: brace-expansion: 2.0.1 + dev: true /minimatch@7.4.6: resolution: {integrity: sha512-sBz8G/YjVniEz6lKPNpKxXwazJe4c19fEfV2GDMX6AjFz+MX9uDWIZW8XreVhkFW3fkIdTv/gxWr/Kks5FFAVw==} @@ -19901,8 +19917,8 @@ packages: boolbase: 1.0.0 dev: true - /nwsapi@2.2.9: - resolution: {integrity: sha512-2f3F0SEEer8bBu0dsNCFF50N0cTThV1nWFYcEYFZttdW0lDAoybv9cQoK7X7/68Z89S7FoRrVjP1LPX4XRf9vg==} + /nwsapi@2.2.10: + resolution: {integrity: sha512-QK0sRs7MKv0tKe1+5uZIQk/C8XGza4DAnztJG8iD+TpJIORARrCxczA738awHrZoHeTjSSoHqao2teO0dC/gFQ==} /object-assign@4.1.1: resolution: {integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==} @@ -20363,9 +20379,9 @@ packages: dependencies: path-root-regex: 0.1.2 - /path-scurry@1.11.0: - resolution: {integrity: sha512-LNHTaVkzaYaLGlO+0u3rQTz7QrHTFOuKyba9JMTQutkmtNew8dw8wOD7mTU/5fCPZzCWpfW0XnQKzY61P0aTaw==} - engines: {node: '>=16 || 14 >=14.17'} + /path-scurry@1.11.1: + resolution: {integrity: sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==} + engines: {node: '>=16 || 14 >=14.18'} dependencies: lru-cache: 10.2.2 minipass: 7.1.1 @@ -20392,8 +20408,8 @@ packages: resolution: {integrity: sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==} engines: {node: '>=8'} - /picocolors@1.0.0: - resolution: {integrity: sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==} + /picocolors@1.0.1: + resolution: {integrity: sha512-anP1Z8qwhkbmu7MFP5iTt+wQKXgwzf7zTyGlcdzabySa9vd0Xt392U0rVmz9poOaBj0uHJKyyo9/upk0HrEQew==} /picomatch@2.3.1: resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==} @@ -20557,7 +20573,7 @@ packages: engines: {node: ^10 || ^12 || >=14} dependencies: nanoid: 3.3.7 - picocolors: 1.0.0 + picocolors: 1.0.1 source-map-js: 1.2.0 /prelude-ls@1.1.2: @@ -22340,7 +22356,7 @@ packages: '@csstools/css-parser-algorithms': 2.6.3(@csstools/css-tokenizer@2.3.1) '@csstools/css-tokenizer': 2.3.1 '@csstools/media-query-list-parser': 2.1.11(@csstools/css-parser-algorithms@2.6.3)(@csstools/css-tokenizer@2.3.1) - '@csstools/selector-specificity': 3.0.3(postcss-selector-parser@6.0.16) + '@csstools/selector-specificity': 3.1.1(postcss-selector-parser@6.0.16) balanced-match: 2.0.0 colord: 2.9.3 cosmiconfig: 8.3.6(typescript@5.4.5) @@ -22363,7 +22379,7 @@ packages: meow: 10.1.5 micromatch: 4.0.5 normalize-path: 3.0.0 - picocolors: 1.0.0 + picocolors: 1.0.1 postcss: 8.4.38 postcss-resolve-nested-selector: 0.1.1 postcss-safe-parser: 6.0.0(postcss@8.4.38) @@ -23191,15 +23207,15 @@ packages: engines: {node: '>=4'} dev: true - /update-browserslist-db@1.0.15(browserslist@4.23.0): - resolution: {integrity: sha512-K9HWH62x3/EalU1U6sjSZiylm9C8tgq2mSvshZpqc7QE69RaA2qjhkW2HlNA0tFpEbtyFz7HTqbSdN4MSwUodA==} + /update-browserslist-db@1.0.16(browserslist@4.23.0): + resolution: {integrity: sha512-KVbTxlBYlckhF5wgfyZXTWnMn7MMZjMu9XG8bPlliUOP9ThaF4QnhP8qrjrH7DRzHfSk0oQv1wToW+iA5GajEQ==} hasBin: true peerDependencies: browserslist: ^4.14.0 dependencies: browserslist: 4.23.0 escalade: 3.1.2 - picocolors: 1.0.0 + picocolors: 1.0.1 /uri-js@4.4.1: resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==} @@ -23933,7 +23949,7 @@ packages: '@glimmer/vm-babel-plugins': 0.87.1(@babel/core@7.24.5) '@simple-dom/interface': 1.4.0 babel-plugin-debug-macros: 0.3.4(@babel/core@7.24.5) - babel-plugin-ember-template-compilation: 2.2.4 + babel-plugin-ember-template-compilation: 2.2.5 babel-plugin-filter-imports: 4.0.0 backburner.js: 2.8.0 broccoli-concat: 4.2.5 diff --git a/tests/scenarios/stage1-test.ts b/tests/scenarios/stage1-test.ts index a8ed7f20e..62a319d61 100644 --- a/tests/scenarios/stage1-test.ts +++ b/tests/scenarios/stage1-test.ts @@ -59,9 +59,12 @@ appScenarios hooks.before(async assert => { process.env.THROW_UNLESS_PARALLELIZABLE = '1'; // see https://github.com/embroider-build/embroider/pull/924 app = await scenario.prepare(); - let result = await app.execute( - 'cross-env STAGE1_ONLY=true EMBROIDER_PREBUILD=true node ./node_modules/ember-cli/bin/ember b' - ); + let result = await app.execute('node ./node_modules/ember-cli/bin/ember b', { + env: { + STAGE1_ONLY: 'true', + EMBROIDER_PREBUILD: 'true', + }, + }); assert.equal(result.exitCode, 0, result.output); }); @@ -201,9 +204,12 @@ appScenarios hooks.before(async () => { app = await scenario.prepare(); - await app.execute( - 'cross-env STAGE1_ONLY=true EMBROIDER_PREBUILD=true node ./node_modules/ember-cli/bin/ember b' - ); + await app.execute('node ./node_modules/ember-cli/bin/ember b', { + env: { + STAGE1_ONLY: 'true', + EMBROIDER_PREBUILD: 'true', + }, + }); }); hooks.beforeEach(assert => { @@ -449,9 +455,12 @@ appScenarios hooks.before(async () => { app = await scenario.prepare(); - await app.execute( - 'cross-env STAGE1_ONLY=true EMBROIDER_PREBUILD=true node ./node_modules/ember-cli/bin/ember b' - ); + await app.execute('node ./node_modules/ember-cli/bin/ember b', { + env: { + STAGE1_ONLY: 'true', + EMBROIDER_PREBUILD: 'true', + }, + }); }); hooks.beforeEach(assert => {