Skip to content

Commit

Permalink
feat (new app-boot): the entry point exports the amdModules, which ar…
Browse files Browse the repository at this point in the history
…e then define in app.js
  • Loading branch information
BlueCutOfficial committed Jun 25, 2024
1 parent 9993260 commit 1951960
Show file tree
Hide file tree
Showing 6 changed files with 69 additions and 70 deletions.
7 changes: 6 additions & 1 deletion packages/core/src/virtual-entrypoint.ts
Original file line number Diff line number Diff line change
Expand Up @@ -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}}
Expand Down Expand Up @@ -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 }[];
Expand Down
10 changes: 9 additions & 1 deletion tests/addon-template/tests/dummy/app/app.js
Original file line number Diff line number Diff line change
@@ -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;
Expand Down
10 changes: 9 additions & 1 deletion tests/app-template/app/app.js
Original file line number Diff line number Diff line change
@@ -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;
Expand Down
64 changes: 22 additions & 42 deletions tests/scenarios/compat-stage2-test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -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');
Expand All @@ -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;
});
Expand All @@ -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;
});
Expand All @@ -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;
});
Expand All @@ -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;
});
Expand Down Expand Up @@ -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;
});
Expand Down
36 changes: 12 additions & 24 deletions tests/scenarios/compat-template-colocation-test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -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'
);
});
});
Expand Down Expand Up @@ -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);
Expand All @@ -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);
Expand All @@ -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;
Expand Down
12 changes: 11 additions & 1 deletion tests/ts-app-template/app/app.ts
Original file line number Diff line number Diff line change
@@ -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;
Expand Down

0 comments on commit 1951960

Please sign in to comment.