diff --git a/package.json b/package.json index 769783eeb20..f6669fa50ce 100644 --- a/package.json +++ b/package.json @@ -157,7 +157,11 @@ "esbuild" ], "patchedDependencies": { - "@tracerbench/core@8.0.1": "patches/@tracerbench__core@8.0.1.patch" + "@tracerbench/core@8.0.1": "patches/@tracerbench__core@8.0.1.patch", + "ember-cli@6.11.0": "patches/ember-cli@6.11.0.patch", + "@embroider/compat@4.1.16": "patches/@embroider__compat@4.1.16.patch", + "ember-cli-htmlbars@7.0.0": "patches/ember-cli-htmlbars@7.0.0.patch", + "ember-auto-import@2.13.0": "patches/ember-auto-import@2.13.0.patch" } }, "peerDependencies": { diff --git a/patches/@embroider__compat@4.1.16.patch b/patches/@embroider__compat@4.1.16.patch new file mode 100644 index 00000000000..5fa0ca1be7c --- /dev/null +++ b/patches/@embroider__compat@4.1.16.patch @@ -0,0 +1,24 @@ +diff --git a/dist/src/compat-app.js b/dist/src/compat-app.js +index e22220b687d2434136227e16c15bf1826a483c98..53c0036eb17403e93e9bb5d248047afefc412ec7 100644 +--- a/dist/src/compat-app.js ++++ b/dist/src/compat-app.js +@@ -241,10 +241,15 @@ class CompatApp { + // + // The template compiler is still here so that apps using a V2 ember can + // still app.import the traditional runtime template compiler. +- trees.push((0, broccoli_file_creator_1.default)('vendor/ember/ember.js', () => '')); +- trees.push((0, broccoli_file_creator_1.default)('vendor/ember/ember-testing.js', () => '')); +- const templateCompilerSrc = (0, fs_1.readFileSync)((0, path_1.join)(emberSource.root, 'dist/ember-template-compiler.js'), 'utf8'); +- trees.push((0, broccoli_file_creator_1.default)('vendor/ember/ember-template-compiler.js', () => templateCompilerSrc)); ++ // ++ // When ember-source no longer provides `paths` (v7+), these legacy vendor ++ // files are not needed at all — ember-source is fully ESM. ++ if (emberSource.paths) { ++ trees.push((0, broccoli_file_creator_1.default)('vendor/ember/ember.js', () => '')); ++ trees.push((0, broccoli_file_creator_1.default)('vendor/ember/ember-testing.js', () => '')); ++ const templateCompilerSrc = (0, fs_1.readFileSync)((0, path_1.join)(emberSource.root, 'dist/ember-template-compiler.js'), 'utf8'); ++ trees.push((0, broccoli_file_creator_1.default)('vendor/ember/ember-template-compiler.js', () => templateCompilerSrc)); ++ } + } + if (this.vendorTree) { + trees.push((0, broccoli_funnel_1.default)(this.vendorTree, { diff --git a/patches/ember-auto-import@2.13.0.patch b/patches/ember-auto-import@2.13.0.patch new file mode 100644 index 00000000000..b9fe42cac2a --- /dev/null +++ b/patches/ember-auto-import@2.13.0.patch @@ -0,0 +1,14 @@ +diff --git a/js/package.js b/js/package.js +index 91c757199e649b581e3064130f35f45d2af771a4..67f1aaebf0f58e51ebb04b992ae89d44f021374d 100644 +--- a/js/package.js ++++ b/js/package.js +@@ -413,7 +413,8 @@ class Package { + } + let ensureModuleApiPolyfill = semver_1.default.satisfies(emberSource.pkg.version, '<3.27.0', { includePrerelease: true }); + let templateCompilerPath = emberSource.absolutePaths +- .templateCompiler; ++ ? emberSource.absolutePaths.templateCompiler ++ : require('path').join(emberSource.root, 'dist', 'dev', 'packages', 'ember-template-compiler', 'index.js'); + const babelPluginPrecompile = ensureModuleApiPolyfill + ? [ + require.resolve('babel-plugin-htmlbars-inline-precompile'), diff --git a/patches/ember-cli-htmlbars@7.0.0.patch b/patches/ember-cli-htmlbars@7.0.0.patch new file mode 100644 index 00000000000..aac34530a1d --- /dev/null +++ b/patches/ember-cli-htmlbars@7.0.0.patch @@ -0,0 +1,19 @@ +diff --git a/lib/ember-addon-main.js b/lib/ember-addon-main.js +index 71c809a11baa57fcc78f10e08176e5d34eaeb62b..158fd9c7707cfe0809eb1cd2bf5ae2cece2b2fde 100644 +--- a/lib/ember-addon-main.js ++++ b/lib/ember-addon-main.js +@@ -105,7 +105,13 @@ module.exports = { + ); + } + +- return ember.absolutePaths.templateCompiler; ++ if (ember.absolutePaths) { ++ return ember.absolutePaths.templateCompiler; ++ } ++ ++ // v7+ ember-source no longer provides absolutePaths; the ESM template ++ // compiler lives under dist/dev/packages/ ++ return path.join(ember.root, 'dist', 'dev', 'packages', 'ember-template-compiler', 'index.js'); + }, + + astPlugins() { diff --git a/patches/ember-cli@6.11.0.patch b/patches/ember-cli@6.11.0.patch new file mode 100644 index 00000000000..4655bc79a3d --- /dev/null +++ b/patches/ember-cli@6.11.0.patch @@ -0,0 +1,27 @@ +diff --git a/lib/broccoli/ember-app.js b/lib/broccoli/ember-app.js +index 267a9ac10b610960322caac363300525daa2d190..0de6c2e0d96f86e4e0bf2a0c63a28ad5badec8ed 100644 +--- a/lib/broccoli/ember-app.js ++++ b/lib/broccoli/ember-app.js +@@ -342,13 +342,15 @@ class EmberApp { + + this.vendorFiles = omitBy( + merge( +- { +- 'ember.js': { +- development: emberSource.paths.debug, +- production: emberSource.paths.prod, +- }, +- 'ember-testing.js': [emberSource.paths.testing, { type: 'test' }], +- }, ++ emberSource.paths ++ ? { ++ 'ember.js': { ++ development: emberSource.paths.debug, ++ production: emberSource.paths.prod, ++ }, ++ 'ember-testing.js': [emberSource.paths.testing, { type: 'test' }], ++ } ++ : {}, + this.options.vendorFiles + ), + isNull diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 5f9a6d5f046..5fd2ff93cc9 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -12,9 +12,21 @@ overrides: ember-cli-babel: ^8.3.1 patchedDependencies: + '@embroider/compat@4.1.16': + hash: 7abfb78c7600805f2951947c7fccb186fe063686cc3074501a91cd8f025bdf6f + path: patches/@embroider__compat@4.1.16.patch '@tracerbench/core@8.0.1': hash: 5e48bdb11a088927d3415cc5430bb6c37d5ce66ed2dab1327914b55e4fd5cd13 path: patches/@tracerbench__core@8.0.1.patch + ember-auto-import@2.13.0: + hash: 1303fba1a35f4858b054774f61b0b3b4c8651f1a90825be1bd2b56224925b368 + path: patches/ember-auto-import@2.13.0.patch + ember-cli-htmlbars@7.0.0: + hash: 03c5666262a96427db47f2156d601e45f729568d29ec3f2e4f2210989488148a + path: patches/ember-cli-htmlbars@7.0.0.patch + ember-cli@6.11.0: + hash: b402dc130db441084ccb96ecb60ed99ef58806dbbc3149327037c1e4450ccd82 + path: patches/ember-cli@6.11.0.patch importers: @@ -149,7 +161,7 @@ importers: version: 2.0.0(@babel/core@7.29.0) ember-cli: specifier: ^6.3.0 - version: 6.11.0(@types/node@22.19.15)(ejs@3.1.10)(handlebars@4.7.9)(underscore@1.13.8) + version: 6.11.0(patch_hash=b402dc130db441084ccb96ecb60ed99ef58806dbbc3149327037c1e4450ccd82)(@types/node@22.19.15)(ejs@3.1.10)(handlebars@4.7.9)(underscore@1.13.8) ember-cli-blueprint-test-helpers: specifier: ^0.19.2 version: 0.19.2 @@ -158,7 +170,7 @@ importers: version: 2.1.0 ember-cli-dependency-checker: specifier: ^3.3.1 - version: 3.3.3(ember-cli@6.11.0(@types/node@22.19.15)(ejs@3.1.10)(handlebars@4.7.9)(underscore@1.13.8)) + version: 3.3.3(ember-cli@6.11.0(patch_hash=b402dc130db441084ccb96ecb60ed99ef58806dbbc3149327037c1e4450ccd82)(@types/node@22.19.15)(ejs@3.1.10)(handlebars@4.7.9)(underscore@1.13.8)) ember-cli-yuidoc: specifier: ^0.9.1 version: 0.9.1 @@ -2788,10 +2800,10 @@ importers: version: 9.2.1 ember-auto-import: specifier: ^2.13.0 - version: 2.13.0(webpack@5.105.4) + version: 2.13.0(patch_hash=1303fba1a35f4858b054774f61b0b3b4c8651f1a90825be1bd2b56224925b368)(webpack@5.105.4) ember-cli: specifier: ~6.11.0 - version: 6.11.0(@types/node@22.19.15)(ejs@3.1.10)(handlebars@4.7.9)(underscore@1.13.8) + version: 6.11.0(patch_hash=b402dc130db441084ccb96ecb60ed99ef58806dbbc3149327037c1e4450ccd82)(@types/node@22.19.15)(ejs@3.1.10)(handlebars@4.7.9)(underscore@1.13.8) ember-cli-app-version: specifier: ^7.0.0 version: 7.0.0(@babel/core@7.29.0)(ember-source@) @@ -2803,13 +2815,13 @@ importers: version: 3.0.0 ember-cli-dependency-checker: specifier: ^3.3.3 - version: 3.3.3(ember-cli@6.11.0(@types/node@22.19.15)(ejs@3.1.10)(handlebars@4.7.9)(underscore@1.13.8)) + version: 3.3.3(ember-cli@6.11.0(patch_hash=b402dc130db441084ccb96ecb60ed99ef58806dbbc3149327037c1e4450ccd82)(@types/node@22.19.15)(ejs@3.1.10)(handlebars@4.7.9)(underscore@1.13.8)) ember-cli-deprecation-workflow: specifier: ^3.4.0 version: 3.4.0(ember-source@) ember-cli-htmlbars: specifier: ^7.0.0 - version: 7.0.0(@babel/core@7.29.0)(ember-source@) + version: 7.0.0(patch_hash=03c5666262a96427db47f2156d601e45f729568d29ec3f2e4f2210989488148a)(@babel/core@7.29.0)(ember-source@) ember-cli-inject-live-reload: specifier: ^2.1.0 version: 2.1.0 @@ -2950,7 +2962,7 @@ importers: devDependencies: '@embroider/compat': specifier: ^4.1.16 - version: 4.1.16(@embroider/core@4.4.7) + version: 4.1.16(patch_hash=7abfb78c7600805f2951947c7fccb186fe063686cc3074501a91cd8f025bdf6f)(@embroider/core@4.4.7) '@embroider/core': specifier: ^4.4.7 version: 4.4.7 @@ -3016,7 +3028,7 @@ importers: version: 4.1.1(@babel/core@7.29.0) '@embroider/compat': specifier: ^4.1.16 - version: 4.1.16(@embroider/core@4.4.7) + version: 4.1.16(patch_hash=7abfb78c7600805f2951947c7fccb186fe063686cc3074501a91cd8f025bdf6f)(@embroider/core@4.4.7) '@embroider/config-meta-loader': specifier: ^1.0.0 version: 1.0.0 @@ -3055,7 +3067,7 @@ importers: version: 2.3.1(@babel/core@7.29.0) ember-cli: specifier: ~6.11.0 - version: 6.11.0(@types/node@22.19.15)(ejs@3.1.10)(handlebars@4.7.9)(underscore@1.13.8) + version: 6.11.0(patch_hash=b402dc130db441084ccb96ecb60ed99ef58806dbbc3149327037c1e4450ccd82)(@types/node@22.19.15)(ejs@3.1.10)(handlebars@4.7.9)(underscore@1.13.8) ember-cli-babel: specifier: ^8.3.1 version: 8.3.1(@babel/core@7.29.0) @@ -13485,7 +13497,7 @@ snapshots: - supports-color - webpack - '@embroider/compat@4.1.16(@embroider/core@4.4.7)': + '@embroider/compat@4.1.16(patch_hash=7abfb78c7600805f2951947c7fccb186fe063686cc3074501a91cd8f025bdf6f)(@embroider/core@4.4.7)': dependencies: '@babel/code-frame': 7.29.0 '@babel/core': 7.29.0(supports-color@8.1.1) @@ -17529,7 +17541,7 @@ snapshots: elegant-spinner@1.0.1: {} - ember-auto-import@2.13.0(webpack@5.105.4): + ember-auto-import@2.13.0(patch_hash=1303fba1a35f4858b054774f61b0b3b4c8651f1a90825be1bd2b56224925b368)(webpack@5.105.4): dependencies: '@babel/core': 7.29.0(supports-color@8.1.1) '@babel/plugin-proposal-class-properties': 7.18.6(@babel/core@7.29.0) @@ -17648,10 +17660,10 @@ snapshots: transitivePeerDependencies: - supports-color - ember-cli-dependency-checker@3.3.3(ember-cli@6.11.0(@types/node@22.19.15)(ejs@3.1.10)(handlebars@4.7.9)(underscore@1.13.8)): + ember-cli-dependency-checker@3.3.3(ember-cli@6.11.0(patch_hash=b402dc130db441084ccb96ecb60ed99ef58806dbbc3149327037c1e4450ccd82)(@types/node@22.19.15)(ejs@3.1.10)(handlebars@4.7.9)(underscore@1.13.8)): dependencies: chalk: 2.4.2 - ember-cli: 6.11.0(@types/node@22.19.15)(ejs@3.1.10)(handlebars@4.7.9)(underscore@1.13.8) + ember-cli: 6.11.0(patch_hash=b402dc130db441084ccb96ecb60ed99ef58806dbbc3149327037c1e4450ccd82)(@types/node@22.19.15)(ejs@3.1.10)(handlebars@4.7.9)(underscore@1.13.8) find-yarn-workspace-root: 2.0.0 is-git-url: 1.0.0 resolve: 1.22.11 @@ -17694,7 +17706,7 @@ snapshots: transitivePeerDependencies: - supports-color - ember-cli-htmlbars@7.0.0(@babel/core@7.29.0)(ember-source@): + ember-cli-htmlbars@7.0.0(patch_hash=03c5666262a96427db47f2156d601e45f729568d29ec3f2e4f2210989488148a)(@babel/core@7.29.0)(ember-source@): dependencies: '@babel/core': 7.29.0(supports-color@8.1.1) '@ember/edition-utils': 1.2.0 @@ -17794,7 +17806,7 @@ snapshots: transitivePeerDependencies: - supports-color - ember-cli@6.11.0(@types/node@22.19.15)(ejs@3.1.10)(handlebars@4.7.9)(underscore@1.13.8): + ember-cli@6.11.0(patch_hash=b402dc130db441084ccb96ecb60ed99ef58806dbbc3149327037c1e4450ccd82)(@types/node@22.19.15)(ejs@3.1.10)(handlebars@4.7.9)(underscore@1.13.8): dependencies: '@ember-tooling/blueprint-blueprint': 0.2.1 '@ember-tooling/blueprint-model': 0.5.0 @@ -18076,7 +18088,7 @@ snapshots: ember-tracked-storage-polyfill@1.0.0(@babel/core@7.29.0)(ember-source@): dependencies: ember-cli-babel: 8.3.1(@babel/core@7.29.0) - ember-cli-htmlbars: 7.0.0(@babel/core@7.29.0)(ember-source@) + ember-cli-htmlbars: 7.0.0(patch_hash=03c5666262a96427db47f2156d601e45f729568d29ec3f2e4f2210989488148a)(@babel/core@7.29.0)(ember-source@) transitivePeerDependencies: - '@babel/core' - ember-source diff --git a/smoke-tests/node-template/tests/node/sourcemap-test.js b/smoke-tests/node-template/tests/node/sourcemap-test.js index 689809479bc..3049c4320db 100644 --- a/smoke-tests/node-template/tests/node/sourcemap-test.js +++ b/smoke-tests/node-template/tests/node/sourcemap-test.js @@ -1,18 +1,24 @@ import fs from 'node:fs'; -import { createRequire } from 'node:module'; import { dirname, join } from 'node:path'; +import { createRequire } from 'node:module'; const require = createRequire(import.meta.url); const emberSourceRoot = dirname(require.resolve('ember-source/package.json')); QUnit.module('sourcemap validation', function () { - QUnit.test(`ember.js has only a single sourcemaps comment`, function (assert) { - let jsPath = join(emberSourceRoot, 'dist', 'ember.debug.js'); - assert.ok(fs.existsSync(jsPath)); + QUnit.test(`dev build has only single sourcemap comments per file`, function (assert) { + let devDir = join(emberSourceRoot, 'dist', 'dev', 'packages'); + assert.ok(fs.existsSync(devDir), 'dist/dev/packages exists'); - let contents = fs.readFileSync(jsPath, 'utf-8'); - let num = count(contents, '//# sourceMappingURL='); - assert.equal(num, 1); + // Check a representative file from the dev build + let emberIndex = join(devDir, 'ember', 'index.js'); + if (fs.existsSync(emberIndex)) { + let contents = fs.readFileSync(emberIndex, 'utf-8'); + let num = count(contents, '//# sourceMappingURL='); + assert.ok(num <= 1, `ember/index.js has at most one sourcemap comment (found ${num})`); + } else { + assert.ok(true, 'ember/index.js not present (skipped)'); + } }); });