From 1951960a27a30b8f31bbf2f9a62f9c66977593f2 Mon Sep 17 00:00:00 2001 From: Marine Dunstetter Date: Tue, 25 Jun 2024 10:57:55 +0200 Subject: [PATCH] feat (new app-boot): the entry point exports the amdModules, which are then define in app.js --- packages/core/src/virtual-entrypoint.ts | 7 +- tests/addon-template/tests/dummy/app/app.js | 10 ++- tests/app-template/app/app.js | 10 ++- tests/scenarios/compat-stage2-test.ts | 64 +++++++------------ .../compat-template-colocation-test.ts | 36 ++++------- tests/ts-app-template/app/app.ts | 12 +++- 6 files changed, 69 insertions(+), 70 deletions(-) diff --git a/packages/core/src/virtual-entrypoint.ts b/packages/core/src/virtual-entrypoint.ts index 528805497..e363ddda4 100644 --- a/packages/core/src/virtual-entrypoint.ts +++ b/packages/core/src/virtual-entrypoint.ts @@ -181,7 +181,6 @@ import environment from './config/environment'; {{#each amdModules as |amdModule index| ~}} import * as amdModule{{index}} from "{{js-string-escape amdModule.buildtime}}" - d("{{js-string-escape amdModule.runtime}}", function(){ return amdModule{{index}}; }); {{/each}} {{#if fastbootOnlyAmdModules}} @@ -226,6 +225,12 @@ w._embroiderEngineBundles_ = [ {{/each}} ] {{/if}} + +export default { + {{#each amdModules as |amdModule index| ~}} + "{{js-string-escape amdModule.runtime}}": amdModule{{index}}, + {{/each}} +}; `) as (params: { amdModules: { runtime: string; buildtime: string }[]; fastbootOnlyAmdModules?: { runtime: string; buildtime: string }[]; diff --git a/tests/addon-template/tests/dummy/app/app.js b/tests/addon-template/tests/dummy/app/app.js index e77e56b09..ebada6316 100644 --- a/tests/addon-template/tests/dummy/app/app.js +++ b/tests/addon-template/tests/dummy/app/app.js @@ -1,9 +1,17 @@ import Application from '@ember/application'; +import '@embroider/core/entrypoint'; +import coreModules from '@embroider/core/entrypoint'; import Resolver from 'ember-resolver'; import loadInitializers from 'ember-load-initializers'; import config from 'dummy/config/environment'; -import '@embroider/core/entrypoint'; +let d = window.define; + +for (const [name, module] of Object.entries(coreModules)) { + d(name, function () { + return module; + }); +} export default class App extends Application { modulePrefix = config.modulePrefix; diff --git a/tests/app-template/app/app.js b/tests/app-template/app/app.js index c025a955b..f9fb59da4 100644 --- a/tests/app-template/app/app.js +++ b/tests/app-template/app/app.js @@ -1,9 +1,17 @@ import Application from '@ember/application'; +import '@embroider/core/entrypoint'; +import coreModules from '@embroider/core/entrypoint'; import Resolver from 'ember-resolver'; import loadInitializers from 'ember-load-initializers'; import config from './config/environment'; -import '@embroider/core/entrypoint'; +let d = window.define; + +for (const [name, module] of Object.entries(coreModules)) { + d(name, function () { + return module; + }); +} export default class App extends Application { modulePrefix = config.modulePrefix; diff --git a/tests/scenarios/compat-stage2-test.ts b/tests/scenarios/compat-stage2-test.ts index d5bba4cda..8f079fa41 100644 --- a/tests/scenarios/compat-stage2-test.ts +++ b/tests/scenarios/compat-stage2-test.ts @@ -246,33 +246,24 @@ stage2Scenarios expectModule.withContents(contents => { const result = /import \* as (\w+) from ".*in-repo-b\/_app_\/service\/in-repo.js.*/.exec(contents) ?? []; const [, amdModule] = result; - assert.codeContains( - contents, - `d("my-app/service/in-repo", function () { - return ${amdModule}; - });` + assert.ok( + contents.includes(`"my-app/service/in-repo": ${amdModule}`), + 'expected module is in the export list' ); return true; }, 'module imports from the correct place'); expectModule.withContents(contents => { const result = /import \* as (\w+) from ".*dep-b\/_app_\/service\/addon.js.*/.exec(contents) ?? []; const [, amdModule] = result; - assert.codeContains( - contents, - `d("my-app/service/addon", function () { - return ${amdModule}; - });` - ); + assert.ok(contents.includes(`"my-app/service/addon": ${amdModule}`), 'expected module is in the export list'); return true; }, 'module imports from the correct place'); expectModule.withContents(contents => { const result = /import \* as (\w+) from ".*dev-c\/_app_\/service\/dev-addon.js.*/.exec(contents) ?? []; const [, amdModule] = result; - assert.codeContains( - contents, - `d("my-app/service/dev-addon", function () { - return ${amdModule}; - });` + assert.ok( + contents.includes(`"my-app/service/dev-addon": ${amdModule}`), + 'expected module is in the export list' ); return true; }, 'module imports from the correct place'); @@ -283,11 +274,9 @@ stage2Scenarios const result = /import \* as (\w+) from ".*dep-b\/_app_\/service\/dep-wins-over-dev.js.*/.exec(contents) ?? []; const [, amdModule] = result; - assert.codeContains( - contents, - `d("my-app/service/dep-wins-over-dev", function () { - return ${amdModule}; - });` + assert.ok( + contents.includes(`"my-app/service/dep-wins-over-dev": ${amdModule}`), + 'expected module is in the export list' ); return true; }); @@ -298,11 +287,9 @@ stage2Scenarios const result = /import \* as (\w+) from ".*in-repo-a\/_app_\/service\/in-repo-over-deps.js.*/.exec(contents) ?? []; const [, amdModule] = result; - assert.codeContains( - contents, - `d("my-app/service/in-repo-over-deps", function () { - return ${amdModule}; - });` + assert.ok( + contents.includes(`"my-app/service/in-repo-over-deps": ${amdModule}`), + 'expected module is in the export list' ); return true; }); @@ -312,11 +299,9 @@ stage2Scenarios resolveEntryPoint(expectAudit).withContents(contents => { const result = /import \* as (\w+) from ".*dev-d\/_app_\/service\/test-before.js.*/.exec(contents) ?? []; const [, amdModule] = result; - assert.codeContains( - contents, - `d("my-app/service/test-before", function () { - return ${amdModule}; - });` + assert.ok( + contents.includes(`"my-app/service/test-before": ${amdModule}`), + 'expected module is in the export list' ); return true; }); @@ -326,11 +311,9 @@ stage2Scenarios resolveEntryPoint(expectAudit).withContents(contents => { const result = /import \* as (\w+) from ".*dev-b\/_app_\/service\/test-after.js.*/.exec(contents) ?? []; const [, amdModule] = result; - assert.codeContains( - contents, - `d("my-app/service/test-after", function () { - return ${amdModule}; - });` + assert.ok( + contents.includes(`"my-app/service/test-after": ${amdModule}`), + 'expected module is in the export list' ); return true; }); @@ -845,12 +828,9 @@ stage2Scenarios } const [, amdModule] = result; - - assert.codeContains( - contents, - `d("my-app/non-static-dir/another-library", function () { - return ${amdModule}; - });` + assert.ok( + contents.includes(`"my-app/non-static-dir/another-library": ${amdModule}`), + 'expected module is in the export list' ); return true; }); diff --git a/tests/scenarios/compat-template-colocation-test.ts b/tests/scenarios/compat-template-colocation-test.ts index fe10732aa..773ea561c 100644 --- a/tests/scenarios/compat-template-colocation-test.ts +++ b/tests/scenarios/compat-template-colocation-test.ts @@ -183,12 +183,9 @@ scenarios } const [, amdModule] = result; - - assert.codeContains( - contents, - `d("my-app/components/has-colocated-template", function () { - return ${amdModule}; - });` + assert.ok( + contents.includes(`"my-app/components/has-colocated-template": ${amdModule}`), + 'expected module is in the export list' ); }); }); @@ -395,12 +392,9 @@ appScenarios } const [, podComponentAmd] = result; - - assert.codeContains( - content, - `d("my-app/components/pod-component/component", function () { - return ${podComponentAmd}; - });` + assert.ok( + content.includes(`"my-app/components/pod-component/component": ${podComponentAmd}`), + 'expected module is in the export list' ); result = /import \* as (\w+) from "\/components\/pod-component\/template\.hbs.*"/.exec(content); @@ -410,12 +404,9 @@ appScenarios } const [, podComponentTemplateAmd] = result; - - assert.codeContains( - content, - `d("my-app/components/pod-component/template", function () { - return ${podComponentTemplateAmd}; - });` + assert.ok( + content.includes(`"my-app/components/pod-component/template": ${podComponentTemplateAmd}`), + 'expected module is in the export list' ); result = /import \* as (\w+) from "\/components\/template-only\/template\.hbs.*"/.exec(content); @@ -425,12 +416,9 @@ appScenarios } const [, templateOnlyAmd] = result; - - assert.codeContains( - content, - `d("my-app/components/template-only/template", function () { - return ${templateOnlyAmd}; - });` + assert.ok( + content.includes(`"my-app/components/template-only/template": ${templateOnlyAmd}`), + 'expected module is in the export list' ); return true; diff --git a/tests/ts-app-template/app/app.ts b/tests/ts-app-template/app/app.ts index aeb3eb262..667543e2c 100644 --- a/tests/ts-app-template/app/app.ts +++ b/tests/ts-app-template/app/app.ts @@ -1,9 +1,19 @@ import Application from '@ember/application'; +import '@embroider/core/entrypoint'; +// @ts-ignore +import coreModules from '@embroider/core/entrypoint'; import Resolver from 'ember-resolver'; import loadInitializers from 'ember-load-initializers'; import config from 'ts-app-template/config/environment'; -import '@embroider/core/entrypoint'; +// @ts-ignore +let d = window.define; + +for (const [name, module] of Object.entries(coreModules)) { + d(name, function () { + return module; + }); +} export default class App extends Application { modulePrefix = config.modulePrefix;