@embroider/core 3.4.20-unstable.35f48d4 → 3.4.20-unstable.4070ba7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/package.json +6 -6
- package/src/index.d.ts +1 -1
- package/src/index.js.map +1 -1
- package/src/module-request.d.ts +8 -9
- package/src/module-request.js +15 -37
- package/src/module-request.js.map +1 -1
- package/src/module-resolver.js +58 -93
- package/src/module-resolver.js.map +1 -1
- package/src/node-resolve.d.ts +3 -0
- package/src/node-resolve.js +21 -23
- package/src/node-resolve.js.map +1 -1
- package/src/virtual-content.d.ts +24 -1
- package/src/virtual-content.js +10 -16
- package/src/virtual-content.js.map +1 -1
- package/src/virtual-entrypoint.d.ts +4 -0
- package/src/virtual-entrypoint.js +38 -0
- package/src/virtual-entrypoint.js.map +1 -1
- package/src/virtual-route-entrypoint.d.ts +2 -1
- package/src/virtual-route-entrypoint.js +8 -2
- package/src/virtual-route-entrypoint.js.map +1 -1
package/package.json
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
{
|
2
2
|
"name": "@embroider/core",
|
3
|
-
"version": "3.4.20-unstable.
|
3
|
+
"version": "3.4.20-unstable.4070ba7",
|
4
4
|
"private": false,
|
5
5
|
"description": "A build system for EmberJS applications.",
|
6
6
|
"repository": {
|
@@ -49,9 +49,9 @@
|
|
49
49
|
"semver": "^7.3.5",
|
50
50
|
"typescript-memoize": "^1.0.1",
|
51
51
|
"walk-sync": "^3.0.0",
|
52
|
-
"@embroider/macros": "1.16.10-unstable.
|
53
|
-
"@embroider/
|
54
|
-
"@embroider/
|
52
|
+
"@embroider/macros": "1.16.10-unstable.4070ba7",
|
53
|
+
"@embroider/shared-internals": "2.8.2-unstable.4070ba7",
|
54
|
+
"@embroider/reverse-exports": "0.1.1-unstable.4070ba7"
|
55
55
|
},
|
56
56
|
"devDependencies": {
|
57
57
|
"@glimmer/syntax": "^0.84.2",
|
@@ -70,8 +70,8 @@
|
|
70
70
|
"fixturify": "^2.1.1",
|
71
71
|
"tmp": "^0.1.0",
|
72
72
|
"typescript": "^5.4.5",
|
73
|
-
"@embroider/
|
74
|
-
"@embroider/
|
73
|
+
"@embroider/test-support": "0.36.0",
|
74
|
+
"@embroider/sample-transforms": "0.0.0"
|
75
75
|
},
|
76
76
|
"engines": {
|
77
77
|
"node": "12.* || 14.* || >= 16"
|
package/src/index.d.ts
CHANGED
@@ -9,6 +9,6 @@ export { Resolver } from './module-resolver';
|
|
9
9
|
export { ModuleRequest, type Resolution, type RequestAdapter, type RequestAdapterCreate } from './module-request';
|
10
10
|
export type { Options as ResolverOptions } from './module-resolver-options';
|
11
11
|
export { ResolverLoader } from './resolver-loader';
|
12
|
-
export { virtualContent } from './virtual-content';
|
12
|
+
export { virtualContent, type VirtualResponse } from './virtual-content';
|
13
13
|
export type { Engine } from './app-files';
|
14
14
|
export * from '@embroider/shared-internals';
|
package/src/index.js.map
CHANGED
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;AAAA,uCAOoB;AAHlB,qHAAA,yBAAyB,OAAA;AACzB,sGAAA,UAAU,OAAA;AACV,+GAAA,mBAAmB,OAAA;AAErB,qDAAkE;AAAzD,iHAAA,cAAc,OAAA;AAEvB,qCAAoE;AAAvC,8GAAA,mBAAmB,OAAA;AAChD,mDAAwE;AAA/D,+HAAA,OAAO,OAAgB;AAChC,iDAAiE;AAAxD,oHAAA,OAAO,OAAuB;AACvC,uCAA4F;AAAnF,gGAAA,IAAI,OAAA;AAAE,uGAAA,WAAW,OAAA;AAAE,gGAAA,IAAI,OAAA;AAAE,iGAAA,KAAK,OAAA;AAAE,yGAAA,aAAa,OAAA;AAAE,2GAAA,eAAe,OAAA;AACvE,qDAA6C;AAApC,2GAAA,QAAQ,OAAA;AACjB,mDAAkH;AAAzG,+GAAA,aAAa,OAAA;AAEtB,qDAAmD;AAA1C,iHAAA,cAAc,OAAA;AACvB,
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;AAAA,uCAOoB;AAHlB,qHAAA,yBAAyB,OAAA;AACzB,sGAAA,UAAU,OAAA;AACV,+GAAA,mBAAmB,OAAA;AAErB,qDAAkE;AAAzD,iHAAA,cAAc,OAAA;AAEvB,qCAAoE;AAAvC,8GAAA,mBAAmB,OAAA;AAChD,mDAAwE;AAA/D,+HAAA,OAAO,OAAgB;AAChC,iDAAiE;AAAxD,oHAAA,OAAO,OAAuB;AACvC,uCAA4F;AAAnF,gGAAA,IAAI,OAAA;AAAE,uGAAA,WAAW,OAAA;AAAE,gGAAA,IAAI,OAAA;AAAE,iGAAA,KAAK,OAAA;AAAE,yGAAA,aAAa,OAAA;AAAE,2GAAA,eAAe,OAAA;AACvE,qDAA6C;AAApC,2GAAA,QAAQ,OAAA;AACjB,mDAAkH;AAAzG,+GAAA,aAAa,OAAA;AAEtB,qDAAmD;AAA1C,iHAAA,cAAc,OAAA;AACvB,qDAAyE;AAAhE,iHAAA,cAAc,OAAA;AAGvB,8EAA8E;AAC9E,+DAA+D;AAC/D,8DAA4C","sourcesContent":["export {\n Packager,\n PackagerConstructor,\n Variant,\n applyVariantToBabelConfig,\n getAppMeta,\n getPackagerCacheDir,\n} from './packager';\nexport { HTMLEntrypoint, BundleSummary } from './html-entrypoint';\nexport { default as Stage } from './stage';\nexport { default as Options, optionsWithDefaults } from './options';\nexport { default as WaitForTrees, OutputPaths } from './wait-for-trees';\nexport { compile as jsHandlebarsCompile } from './js-handlebars';\nexport { todo, unsupported, warn, debug, expectWarning, throwOnWarnings } from './messages';\nexport { Resolver } from './module-resolver';\nexport { ModuleRequest, type Resolution, type RequestAdapter, type RequestAdapterCreate } from './module-request';\nexport type { Options as ResolverOptions } from './module-resolver-options';\nexport { ResolverLoader } from './resolver-loader';\nexport { virtualContent, type VirtualResponse } from './virtual-content';\nexport type { Engine } from './app-files';\n\n// this is reexported because we already make users manage a peerDep from some\n// other packages (like embroider/webpack and @embroider/compat\nexport * from '@embroider/shared-internals';\n"]}
|
package/src/module-request.d.ts
CHANGED
@@ -1,10 +1,8 @@
|
|
1
|
+
import type { VirtualResponse } from './virtual-content';
|
1
2
|
export type Resolution<T = unknown, E = unknown> = {
|
2
3
|
type: 'found';
|
3
4
|
filename: string;
|
4
|
-
|
5
|
-
result: T;
|
6
|
-
} | {
|
7
|
-
type: 'ignored';
|
5
|
+
virtual: VirtualResponse | false;
|
8
6
|
result: T;
|
9
7
|
} | {
|
10
8
|
type: 'not_found';
|
@@ -17,6 +15,8 @@ export type RequestAdapterCreate<Init, Res extends Resolution> = (params: Init)
|
|
17
15
|
export interface RequestAdapter<Res extends Resolution> {
|
18
16
|
readonly debugType: string;
|
19
17
|
resolve(request: ModuleRequest<Res>): Promise<Res>;
|
18
|
+
notFoundResponse(request: ModuleRequest<Res>): Res | (() => Promise<Res>);
|
19
|
+
virtualResponse(request: ModuleRequest<Res>, response: VirtualResponse): Res | (() => Promise<Res>);
|
20
20
|
}
|
21
21
|
export interface InitialRequestState {
|
22
22
|
readonly specifier: string;
|
@@ -29,16 +29,15 @@ export declare class ModuleRequest<Res extends Resolution = Resolution> implemen
|
|
29
29
|
private constructor();
|
30
30
|
get specifier(): string;
|
31
31
|
get fromFile(): string;
|
32
|
-
get isVirtual(): boolean;
|
33
32
|
get debugType(): string;
|
34
33
|
get meta(): Record<string, unknown> | undefined;
|
35
|
-
get
|
36
|
-
get resolvedTo(): Res | undefined;
|
34
|
+
get resolvedTo(): Res | (() => Promise<Res>) | undefined;
|
37
35
|
alias(newSpecifier: string): this;
|
38
36
|
rehome(newFromFile: string): this;
|
39
|
-
virtualize(
|
37
|
+
virtualize(virtualResponse: VirtualResponse): this;
|
40
38
|
withMeta(meta: Record<string, any> | undefined): this;
|
41
39
|
notFound(): this;
|
42
|
-
resolveTo(res: Res): this;
|
40
|
+
resolveTo(res: Res | (() => Promise<Res>)): this;
|
43
41
|
defaultResolve(): Promise<Res>;
|
42
|
+
clone(): this;
|
44
43
|
}
|
package/src/module-request.js
CHANGED
@@ -10,33 +10,26 @@ var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (
|
|
10
10
|
if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot read private member from an object whose class did not declare it");
|
11
11
|
return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
|
12
12
|
};
|
13
|
-
var
|
13
|
+
var _ModuleRequest_adapter, _ModuleRequest_specifier, _ModuleRequest_fromFile, _ModuleRequest_meta, _ModuleRequest_resolvedTo;
|
14
14
|
Object.defineProperty(exports, "__esModule", { value: true });
|
15
15
|
exports.ModuleRequest = void 0;
|
16
16
|
class ModuleRequest {
|
17
17
|
static create(createAdapter, params) {
|
18
18
|
let result = createAdapter(params);
|
19
19
|
if (result) {
|
20
|
-
return new
|
20
|
+
return new ModuleRequest(result.adapter, result.initialState);
|
21
21
|
}
|
22
22
|
}
|
23
|
-
constructor(adapter, initialize
|
24
|
-
var _b, _c;
|
25
|
-
_ModuleRequest_instances.add(this);
|
23
|
+
constructor(adapter, initialize) {
|
26
24
|
_ModuleRequest_adapter.set(this, void 0);
|
27
25
|
_ModuleRequest_specifier.set(this, void 0);
|
28
26
|
_ModuleRequest_fromFile.set(this, void 0);
|
29
|
-
_ModuleRequest_isVirtual.set(this, void 0);
|
30
27
|
_ModuleRequest_meta.set(this, void 0);
|
31
|
-
_ModuleRequest_isNotFound.set(this, void 0);
|
32
28
|
_ModuleRequest_resolvedTo.set(this, void 0);
|
33
29
|
__classPrivateFieldSet(this, _ModuleRequest_adapter, adapter, "f");
|
34
30
|
__classPrivateFieldSet(this, _ModuleRequest_specifier, initialize.specifier, "f");
|
35
31
|
__classPrivateFieldSet(this, _ModuleRequest_fromFile, initialize.fromFile, "f");
|
36
32
|
__classPrivateFieldSet(this, _ModuleRequest_meta, initialize.meta, "f");
|
37
|
-
__classPrivateFieldSet(this, _ModuleRequest_isVirtual, (_b = propagate === null || propagate === void 0 ? void 0 : propagate.isVirtual) !== null && _b !== void 0 ? _b : false, "f");
|
38
|
-
__classPrivateFieldSet(this, _ModuleRequest_isNotFound, (_c = propagate === null || propagate === void 0 ? void 0 : propagate.isNotFound) !== null && _c !== void 0 ? _c : false, "f");
|
39
|
-
__classPrivateFieldSet(this, _ModuleRequest_resolvedTo, propagate === null || propagate === void 0 ? void 0 : propagate.resolvedTo, "f");
|
40
33
|
}
|
41
34
|
get specifier() {
|
42
35
|
return __classPrivateFieldGet(this, _ModuleRequest_specifier, "f");
|
@@ -44,18 +37,12 @@ class ModuleRequest {
|
|
44
37
|
get fromFile() {
|
45
38
|
return __classPrivateFieldGet(this, _ModuleRequest_fromFile, "f");
|
46
39
|
}
|
47
|
-
get isVirtual() {
|
48
|
-
return __classPrivateFieldGet(this, _ModuleRequest_isVirtual, "f");
|
49
|
-
}
|
50
40
|
get debugType() {
|
51
41
|
return __classPrivateFieldGet(this, _ModuleRequest_adapter, "f").debugType;
|
52
42
|
}
|
53
43
|
get meta() {
|
54
44
|
return __classPrivateFieldGet(this, _ModuleRequest_meta, "f");
|
55
45
|
}
|
56
|
-
get isNotFound() {
|
57
|
-
return __classPrivateFieldGet(this, _ModuleRequest_isNotFound, "f");
|
58
|
-
}
|
59
46
|
get resolvedTo() {
|
60
47
|
return __classPrivateFieldGet(this, _ModuleRequest_resolvedTo, "f");
|
61
48
|
}
|
@@ -63,51 +50,42 @@ class ModuleRequest {
|
|
63
50
|
if (__classPrivateFieldGet(this, _ModuleRequest_specifier, "f") === newSpecifier) {
|
64
51
|
return this;
|
65
52
|
}
|
66
|
-
let result =
|
53
|
+
let result = this.clone();
|
67
54
|
__classPrivateFieldSet(result, _ModuleRequest_specifier, newSpecifier, "f");
|
68
|
-
__classPrivateFieldSet(result, _ModuleRequest_isNotFound, false, "f");
|
69
|
-
__classPrivateFieldSet(result, _ModuleRequest_resolvedTo, undefined, "f");
|
70
55
|
return result;
|
71
56
|
}
|
72
57
|
rehome(newFromFile) {
|
73
58
|
if (__classPrivateFieldGet(this, _ModuleRequest_fromFile, "f") === newFromFile) {
|
74
59
|
return this;
|
75
60
|
}
|
76
|
-
let result =
|
61
|
+
let result = this.clone();
|
77
62
|
__classPrivateFieldSet(result, _ModuleRequest_fromFile, newFromFile, "f");
|
78
|
-
__classPrivateFieldSet(result, _ModuleRequest_isNotFound, false, "f");
|
79
|
-
__classPrivateFieldSet(result, _ModuleRequest_resolvedTo, undefined, "f");
|
80
63
|
return result;
|
81
64
|
}
|
82
|
-
virtualize(
|
83
|
-
|
84
|
-
__classPrivateFieldSet(result, _ModuleRequest_specifier, virtualFileName, "f");
|
85
|
-
__classPrivateFieldSet(result, _ModuleRequest_isVirtual, true, "f");
|
86
|
-
__classPrivateFieldSet(result, _ModuleRequest_isNotFound, false, "f");
|
87
|
-
__classPrivateFieldSet(result, _ModuleRequest_resolvedTo, undefined, "f");
|
88
|
-
return result;
|
65
|
+
virtualize(virtualResponse) {
|
66
|
+
return this.resolveTo(__classPrivateFieldGet(this, _ModuleRequest_adapter, "f").virtualResponse(this, virtualResponse));
|
89
67
|
}
|
90
68
|
withMeta(meta) {
|
91
|
-
let result =
|
69
|
+
let result = this.clone();
|
92
70
|
__classPrivateFieldSet(result, _ModuleRequest_meta, meta, "f");
|
71
|
+
__classPrivateFieldSet(result, _ModuleRequest_resolvedTo, __classPrivateFieldGet(this, _ModuleRequest_resolvedTo, "f"), "f");
|
93
72
|
return result;
|
94
73
|
}
|
95
74
|
notFound() {
|
96
|
-
|
97
|
-
__classPrivateFieldSet(result, _ModuleRequest_isNotFound, true, "f");
|
98
|
-
return result;
|
75
|
+
return this.resolveTo(__classPrivateFieldGet(this, _ModuleRequest_adapter, "f").notFoundResponse(this));
|
99
76
|
}
|
100
77
|
resolveTo(res) {
|
101
|
-
let result =
|
78
|
+
let result = this.clone();
|
102
79
|
__classPrivateFieldSet(result, _ModuleRequest_resolvedTo, res, "f");
|
103
80
|
return result;
|
104
81
|
}
|
105
82
|
defaultResolve() {
|
106
83
|
return __classPrivateFieldGet(this, _ModuleRequest_adapter, "f").resolve(this);
|
107
84
|
}
|
85
|
+
clone() {
|
86
|
+
return new ModuleRequest(__classPrivateFieldGet(this, _ModuleRequest_adapter, "f"), this);
|
87
|
+
}
|
108
88
|
}
|
109
89
|
exports.ModuleRequest = ModuleRequest;
|
110
|
-
|
111
|
-
return new _a(__classPrivateFieldGet(this, _ModuleRequest_adapter, "f"), this, this);
|
112
|
-
};
|
90
|
+
_ModuleRequest_adapter = new WeakMap(), _ModuleRequest_specifier = new WeakMap(), _ModuleRequest_fromFile = new WeakMap(), _ModuleRequest_meta = new WeakMap(), _ModuleRequest_resolvedTo = new WeakMap();
|
113
91
|
//# sourceMappingURL=module-request.js.map
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"module-request.js","sourceRoot":"","sources":["module-request.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAgCA,MAAa,aAAa;IACxB,MAAM,CAAC,MAAM,CACX,aAA8C,EAC9C,MAAY;QAEZ,IAAI,MAAM,GAAG,aAAa,CAAC,MAAM,CAAC,CAAC;QACnC,IAAI,MAAM,EAAE,CAAC;YACX,OAAO,IAAI,
|
1
|
+
{"version":3,"file":"module-request.js","sourceRoot":"","sources":["module-request.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAgCA,MAAa,aAAa;IACxB,MAAM,CAAC,MAAM,CACX,aAA8C,EAC9C,MAAY;QAEZ,IAAI,MAAM,GAAG,aAAa,CAAC,MAAM,CAAC,CAAC;QACnC,IAAI,MAAM,EAAE,CAAC;YACX,OAAO,IAAI,aAAa,CAAC,MAAM,CAAC,OAAO,EAAE,MAAM,CAAC,YAAY,CAAC,CAAC;QAChE,CAAC;IACH,CAAC;IAQD,YAAoB,OAA4B,EAAE,UAA+B;QANjF,yCAA8B;QAC9B,2CAAmB;QACnB,0CAAkB;QAClB,sCAA2C;QAC3C,4CAAoD;QAGlD,uBAAA,IAAI,0BAAY,OAAO,MAAA,CAAC;QACxB,uBAAA,IAAI,4BAAc,UAAU,CAAC,SAAS,MAAA,CAAC;QACvC,uBAAA,IAAI,2BAAa,UAAU,CAAC,QAAQ,MAAA,CAAC;QACrC,uBAAA,IAAI,uBAAS,UAAU,CAAC,IAAI,MAAA,CAAC;IAC/B,CAAC;IAED,IAAI,SAAS;QACX,OAAO,uBAAA,IAAI,gCAAW,CAAC;IACzB,CAAC;IAED,IAAI,QAAQ;QACV,OAAO,uBAAA,IAAI,+BAAU,CAAC;IACxB,CAAC;IAED,IAAI,SAAS;QACX,OAAO,uBAAA,IAAI,8BAAS,CAAC,SAAS,CAAC;IACjC,CAAC;IAED,IAAI,IAAI;QACN,OAAO,uBAAA,IAAI,2BAAM,CAAC;IACpB,CAAC;IAED,IAAI,UAAU;QACZ,OAAO,uBAAA,IAAI,iCAAY,CAAC;IAC1B,CAAC;IAED,KAAK,CAAC,YAAoB;QACxB,IAAI,uBAAA,IAAI,gCAAW,KAAK,YAAY,EAAE,CAAC;YACrC,OAAO,IAAI,CAAC;QACd,CAAC;QACD,IAAI,MAAM,GAAG,IAAI,CAAC,KAAK,EAAE,CAAC;QAC1B,uBAAA,MAAM,4BAAc,YAAY,MAAA,CAAC;QACjC,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,MAAM,CAAC,WAAmB;QACxB,IAAI,uBAAA,IAAI,+BAAU,KAAK,WAAW,EAAE,CAAC;YACnC,OAAO,IAAI,CAAC;QACd,CAAC;QACD,IAAI,MAAM,GAAG,IAAI,CAAC,KAAK,EAAE,CAAC;QAC1B,uBAAA,MAAM,2BAAa,WAAW,MAAA,CAAC;QAC/B,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,UAAU,CAAC,eAAgC;QACzC,OAAO,IAAI,CAAC,SAAS,CAAC,uBAAA,IAAI,8BAAS,CAAC,eAAe,CAAC,IAAI,EAAE,eAAe,CAAC,CAAC,CAAC;IAC9E,CAAC;IAED,QAAQ,CAAC,IAAqC;QAC5C,IAAI,MAAM,GAAG,IAAI,CAAC,KAAK,EAAE,CAAC;QAC1B,uBAAA,MAAM,uBAAS,IAAI,MAAA,CAAC;QACpB,uBAAA,MAAM,6BAAe,uBAAA,IAAI,iCAAY,MAAA,CAAC;QACtC,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,QAAQ;QACN,OAAO,IAAI,CAAC,SAAS,CAAC,uBAAA,IAAI,8BAAS,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC,CAAC;IAC9D,CAAC;IAED,SAAS,CAAC,GAA+B;QACvC,IAAI,MAAM,GAAG,IAAI,CAAC,KAAK,EAAE,CAAC;QAC1B,uBAAA,MAAM,6BAAe,GAAG,MAAA,CAAC;QACzB,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,cAAc;QACZ,OAAO,uBAAA,IAAI,8BAAS,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IACrC,CAAC;IAED,KAAK;QACH,OAAO,IAAI,aAAa,CAAC,uBAAA,IAAI,8BAAS,EAAE,IAAI,CAAS,CAAC;IACxD,CAAC;CACF;AA1FD,sCA0FC","sourcesContent":["import type { VirtualResponse } from './virtual-content';\n\n// This is generic because different build systems have different ways of\n// representing a found module, and we just pass those values through.\nexport type Resolution<T = unknown, E = unknown> =\n | { type: 'found'; filename: string; virtual: VirtualResponse | false; result: T }\n\n // the important thing about this Resolution is that embroider should do its\n // fallback behaviors here.\n | { type: 'not_found'; err: E };\n\nexport type RequestAdapterCreate<Init, Res extends Resolution> = (\n params: Init\n) => { initialState: InitialRequestState; adapter: RequestAdapter<Res> } | undefined;\n\nexport interface RequestAdapter<Res extends Resolution> {\n readonly debugType: string;\n resolve(request: ModuleRequest<Res>): Promise<Res>;\n\n // the function-returning variants of both of these are only because webpack\n // plugins are a pain in the butt. Integrators are encouraged to use the plain\n // Response-returning variants in all sane build environments.\n notFoundResponse(request: ModuleRequest<Res>): Res | (() => Promise<Res>);\n virtualResponse(request: ModuleRequest<Res>, response: VirtualResponse): Res | (() => Promise<Res>);\n}\n\nexport interface InitialRequestState {\n readonly specifier: string;\n readonly fromFile: string;\n readonly meta: Record<string, unknown> | undefined;\n}\n\nexport class ModuleRequest<Res extends Resolution = Resolution> implements ModuleRequest<Res> {\n static create<Init, Res extends Resolution>(\n createAdapter: RequestAdapterCreate<Init, Res>,\n params: Init\n ): ModuleRequest<Res> | undefined {\n let result = createAdapter(params);\n if (result) {\n return new ModuleRequest(result.adapter, result.initialState);\n }\n }\n\n #adapter: RequestAdapter<Res>;\n #specifier: string;\n #fromFile: string;\n #meta: Record<string, unknown> | undefined;\n #resolvedTo: Res | (() => Promise<Res>) | undefined;\n\n private constructor(adapter: RequestAdapter<Res>, initialize: InitialRequestState) {\n this.#adapter = adapter;\n this.#specifier = initialize.specifier;\n this.#fromFile = initialize.fromFile;\n this.#meta = initialize.meta;\n }\n\n get specifier(): string {\n return this.#specifier;\n }\n\n get fromFile(): string {\n return this.#fromFile;\n }\n\n get debugType(): string {\n return this.#adapter.debugType;\n }\n\n get meta(): Record<string, unknown> | undefined {\n return this.#meta;\n }\n\n get resolvedTo(): Res | (() => Promise<Res>) | undefined {\n return this.#resolvedTo;\n }\n\n alias(newSpecifier: string): this {\n if (this.#specifier === newSpecifier) {\n return this;\n }\n let result = this.clone();\n result.#specifier = newSpecifier;\n return result;\n }\n\n rehome(newFromFile: string): this {\n if (this.#fromFile === newFromFile) {\n return this;\n }\n let result = this.clone();\n result.#fromFile = newFromFile;\n return result;\n }\n\n virtualize(virtualResponse: VirtualResponse): this {\n return this.resolveTo(this.#adapter.virtualResponse(this, virtualResponse));\n }\n\n withMeta(meta: Record<string, any> | undefined): this {\n let result = this.clone();\n result.#meta = meta;\n result.#resolvedTo = this.#resolvedTo;\n return result;\n }\n\n notFound(): this {\n return this.resolveTo(this.#adapter.notFoundResponse(this));\n }\n\n resolveTo(res: Res | (() => Promise<Res>)): this {\n let result = this.clone();\n result.#resolvedTo = res;\n return result;\n }\n\n defaultResolve(): Promise<Res> {\n return this.#adapter.resolve(this);\n }\n\n clone(): this {\n return new ModuleRequest(this.#adapter, this) as this;\n }\n}\n"]}
|
package/src/module-resolver.js
CHANGED
@@ -24,6 +24,7 @@ const fs_1 = require("fs");
|
|
24
24
|
const node_resolve_1 = require("./node-resolve");
|
25
25
|
const virtual_route_entrypoint_1 = require("./virtual-route-entrypoint");
|
26
26
|
const semver_1 = require("semver");
|
27
|
+
const virtual_entrypoint_1 = require("./virtual-entrypoint");
|
27
28
|
const debug = (0, debug_1.default)('embroider:resolver');
|
28
29
|
// Using a formatter makes this work lazy so nothing happens when we aren't
|
29
30
|
// logging. It is unfortunate that formatters are a globally mutable config and
|
@@ -36,10 +37,7 @@ debug_1.default.formatters.p = (s) => {
|
|
36
37
|
return s;
|
37
38
|
};
|
38
39
|
function logTransition(reason, before, after = before) {
|
39
|
-
if (after.
|
40
|
-
debug(`[%s:virtualized] %s because %s\n in %p`, before.debugType, before.specifier, reason, before.fromFile);
|
41
|
-
}
|
42
|
-
else if (after.resolvedTo) {
|
40
|
+
if (after.resolvedTo) {
|
43
41
|
debug(`[%s:resolvedTo] %s because %s\n in %p`, before.debugType, before.specifier, reason, before.fromFile);
|
44
42
|
}
|
45
43
|
else if (before.specifier !== after.specifier) {
|
@@ -53,17 +51,11 @@ function logTransition(reason, before, after = before) {
|
|
53
51
|
else if (before.fromFile !== after.fromFile) {
|
54
52
|
debug(`[%s:rehomed] %s, because %s\n from %p\n to %p`, before.debugType, before.specifier, reason, before.fromFile, after.fromFile);
|
55
53
|
}
|
56
|
-
else if (after.isNotFound) {
|
57
|
-
debug(`[%s:not-found] %s because %s\n in %p`, before.debugType, before.specifier, reason, before.fromFile);
|
58
|
-
}
|
59
54
|
else {
|
60
55
|
debug(`[%s:unchanged] %s because %s\n in %p`, before.debugType, before.specifier, reason, before.fromFile);
|
61
56
|
}
|
62
57
|
return after;
|
63
58
|
}
|
64
|
-
function isTerminal(request) {
|
65
|
-
return request.isVirtual || request.isNotFound || Boolean(request.resolvedTo);
|
66
|
-
}
|
67
59
|
const compatPattern = /@embroider\/virtual\/(?<type>[^\/]+)\/(?<rest>.*)/;
|
68
60
|
class Resolver {
|
69
61
|
constructor(options) {
|
@@ -102,36 +94,43 @@ class Resolver {
|
|
102
94
|
// rules.
|
103
95
|
async resolve(request) {
|
104
96
|
request = await this.beforeResolve(request);
|
97
|
+
let resolution;
|
105
98
|
if (request.resolvedTo) {
|
106
|
-
|
99
|
+
if (typeof request.resolvedTo === 'function') {
|
100
|
+
resolution = await request.resolvedTo();
|
101
|
+
}
|
102
|
+
else {
|
103
|
+
resolution = request.resolvedTo;
|
104
|
+
}
|
105
|
+
}
|
106
|
+
else {
|
107
|
+
resolution = await request.defaultResolve();
|
107
108
|
}
|
108
|
-
let resolution = await request.defaultResolve();
|
109
109
|
switch (resolution.type) {
|
110
110
|
case 'found':
|
111
|
-
case 'ignored':
|
112
111
|
return resolution;
|
113
112
|
case 'not_found':
|
114
113
|
break;
|
115
114
|
default:
|
116
115
|
throw (0, assert_never_1.default)(resolution);
|
117
116
|
}
|
117
|
+
request = request.clone();
|
118
118
|
let nextRequest = await this.fallbackResolve(request);
|
119
119
|
if (nextRequest === request) {
|
120
120
|
// no additional fallback is available.
|
121
121
|
return resolution;
|
122
122
|
}
|
123
123
|
if (nextRequest.resolvedTo) {
|
124
|
-
|
124
|
+
if (typeof nextRequest.resolvedTo === 'function') {
|
125
|
+
return await nextRequest.resolvedTo();
|
126
|
+
}
|
127
|
+
else {
|
128
|
+
return nextRequest.resolvedTo;
|
129
|
+
}
|
125
130
|
}
|
126
131
|
if (nextRequest.fromFile === request.fromFile && nextRequest.specifier === request.specifier) {
|
127
132
|
throw new Error('Bug Discovered! New request is not === original request but has the same fromFile and specifier. This will likely create a loop.');
|
128
133
|
}
|
129
|
-
if (nextRequest.isVirtual || nextRequest.isNotFound) {
|
130
|
-
// virtual and NotFound requests are terminal, there is no more
|
131
|
-
// beforeResolve or fallbackResolve around them. The defaultResolve is
|
132
|
-
// expected to know how to implement them.
|
133
|
-
return nextRequest.defaultResolve();
|
134
|
-
}
|
135
134
|
return this.resolve(nextRequest);
|
136
135
|
}
|
137
136
|
// Use standard NodeJS resolving, with our required compatibility rules on
|
@@ -155,7 +154,7 @@ class Resolver {
|
|
155
154
|
return owningPackage;
|
156
155
|
}
|
157
156
|
generateFastbootSwitch(request) {
|
158
|
-
if (
|
157
|
+
if (request.resolvedTo) {
|
159
158
|
return request;
|
160
159
|
}
|
161
160
|
let pkg = this.packageCache.ownerOfFile(request.fromFile);
|
@@ -183,7 +182,7 @@ class Resolver {
|
|
183
182
|
return logTransition('internal lookup from fastbootSwitch', request);
|
184
183
|
}
|
185
184
|
else {
|
186
|
-
return logTransition('shadowed app fastboot', request, request.virtualize(switchFile));
|
185
|
+
return logTransition('shadowed app fastboot', request, request.virtualize({ type: 'fastboot-switch', specifier: switchFile }));
|
187
186
|
}
|
188
187
|
}
|
189
188
|
else {
|
@@ -196,7 +195,7 @@ class Resolver {
|
|
196
195
|
}
|
197
196
|
handleFastbootSwitch(request) {
|
198
197
|
var _a;
|
199
|
-
if (
|
198
|
+
if (request.resolvedTo) {
|
200
199
|
return request;
|
201
200
|
}
|
202
201
|
let match = (0, virtual_content_1.decodeFastbootSwitch)(request.fromFile);
|
@@ -243,7 +242,7 @@ class Resolver {
|
|
243
242
|
return logTransition('failed to match in fastboot switch', request);
|
244
243
|
}
|
245
244
|
handleImplicitModules(request) {
|
246
|
-
if (
|
245
|
+
if (request.resolvedTo) {
|
247
246
|
return request;
|
248
247
|
}
|
249
248
|
let im = (0, virtual_content_1.decodeImplicitModules)(request.specifier);
|
@@ -257,51 +256,26 @@ class Resolver {
|
|
257
256
|
let packageName = (0, shared_internals_1.packageName)(im.fromFile);
|
258
257
|
if (packageName) {
|
259
258
|
let dep = this.packageCache.resolve(packageName, pkg);
|
260
|
-
return logTransition(`dep's implicit modules`, request, request.virtualize((0, path_1.resolve)(dep.root, `-embroider-${im.type}.js`)));
|
259
|
+
return logTransition(`dep's implicit modules`, request, request.virtualize({ type: im.type, specifier: (0, path_1.resolve)(dep.root, `-embroider-${im.type}.js`) }));
|
261
260
|
}
|
262
261
|
else {
|
263
|
-
return logTransition(`own implicit modules`, request, request.virtualize((0, path_1.resolve)(pkg.root, `-embroider-${im.type}.js`)));
|
262
|
+
return logTransition(`own implicit modules`, request, request.virtualize({ type: im.type, specifier: (0, path_1.resolve)(pkg.root, `-embroider-${im.type}.js`) }));
|
264
263
|
}
|
265
264
|
}
|
266
265
|
handleEntrypoint(request) {
|
267
|
-
|
268
|
-
if (isTerminal(request)) {
|
269
|
-
return request;
|
270
|
-
}
|
271
|
-
//TODO move the extra forwardslash handling out into the vite plugin
|
272
|
-
const candidates = [
|
273
|
-
'@embroider/virtual/compat-modules',
|
274
|
-
'/@embroider/virtual/compat-modules',
|
275
|
-
'./@embroider/virtual/compat-modules',
|
276
|
-
];
|
277
|
-
if (!candidates.some(c => request.specifier.startsWith(c + '/') || request.specifier === c)) {
|
266
|
+
if (request.resolvedTo) {
|
278
267
|
return request;
|
279
268
|
}
|
280
|
-
|
281
|
-
if (
|
282
|
-
|
283
|
-
throw new Error('entrypoint does not match pattern' + request.specifier);
|
284
|
-
}
|
285
|
-
const { packageName } = result.groups;
|
286
|
-
const requestingPkg = this.packageCache.ownerOfFile(request.fromFile);
|
287
|
-
if (!(requestingPkg === null || requestingPkg === void 0 ? void 0 : requestingPkg.isV2Ember())) {
|
288
|
-
throw new Error(`bug: found entrypoint import in non-ember package at ${request.fromFile}`);
|
289
|
-
}
|
290
|
-
let pkg;
|
291
|
-
if (packageName) {
|
292
|
-
pkg = this.packageCache.resolve(packageName, requestingPkg);
|
269
|
+
let virtualResponse = (0, virtual_entrypoint_1.virtualEntrypoint)(request, this.packageCache);
|
270
|
+
if (virtualResponse) {
|
271
|
+
return logTransition('entrypoint', request, request.virtualize(virtualResponse));
|
293
272
|
}
|
294
273
|
else {
|
295
|
-
|
274
|
+
return request;
|
296
275
|
}
|
297
|
-
let matched = (0, resolve_exports_1.exports)(pkg.packageJSON, '-embroider-entrypoint.js', {
|
298
|
-
browser: true,
|
299
|
-
conditions: ['default', 'imports'],
|
300
|
-
});
|
301
|
-
return logTransition('entrypoint', request, request.virtualize((0, path_1.resolve)(pkg.root, (_a = matched === null || matched === void 0 ? void 0 : matched[0]) !== null && _a !== void 0 ? _a : '-embroider-entrypoint.js')));
|
302
276
|
}
|
303
277
|
handleRouteEntrypoint(request) {
|
304
|
-
if (
|
278
|
+
if (request.resolvedTo) {
|
305
279
|
return request;
|
306
280
|
}
|
307
281
|
let routeName = (0, virtual_route_entrypoint_1.decodePublicRouteEntrypoint)(request.specifier);
|
@@ -312,11 +286,7 @@ class Resolver {
|
|
312
286
|
if (!(pkg === null || pkg === void 0 ? void 0 : pkg.isV2Ember())) {
|
313
287
|
throw new Error(`bug: found entrypoint import in non-ember package at ${request.fromFile}`);
|
314
288
|
}
|
315
|
-
|
316
|
-
browser: true,
|
317
|
-
conditions: ['default', 'imports'],
|
318
|
-
});
|
319
|
-
return logTransition('route entrypoint', request, request.virtualize((0, virtual_route_entrypoint_1.encodeRouteEntrypoint)(pkg.root, matched === null || matched === void 0 ? void 0 : matched[0], routeName)));
|
289
|
+
return logTransition('route entrypoint', request, request.virtualize({ type: 'route-entrypoint', specifier: (0, virtual_route_entrypoint_1.encodeRouteEntrypoint)(pkg, routeName) }));
|
320
290
|
}
|
321
291
|
handleImplicitTestScripts(request) {
|
322
292
|
//TODO move the extra forwardslash handling out into the vite plugin
|
@@ -332,7 +302,7 @@ class Resolver {
|
|
332
302
|
if ((pkg === null || pkg === void 0 ? void 0 : pkg.root) !== this.options.engines[0].root) {
|
333
303
|
throw new Error(`bug: found an import of ${request.specifier} in ${request.fromFile}, but this is not the top-level Ember app. The top-level Ember app is the only one that has support for @embroider/virtual/test-support.js. If you think something should be fixed in Embroider, please open an issue on https://github.com/embroider-build/embroider/issues.`);
|
334
304
|
}
|
335
|
-
return logTransition('test-support', request, request.virtualize((0, path_1.resolve)(pkg.root, '-embroider-test-support.js')));
|
305
|
+
return logTransition('test-support', request, request.virtualize({ type: 'test-support-js', specifier: (0, path_1.resolve)(pkg.root, '-embroider-test-support.js') }));
|
336
306
|
}
|
337
307
|
handleTestSupportStyles(request) {
|
338
308
|
//TODO move the extra forwardslash handling out into the vite plugin
|
@@ -348,10 +318,13 @@ class Resolver {
|
|
348
318
|
if ((pkg === null || pkg === void 0 ? void 0 : pkg.root) !== this.options.engines[0].root) {
|
349
319
|
throw new Error(`bug: found an import of ${request.specifier} in ${request.fromFile}, but this is not the top-level Ember app. The top-level Ember app is the only one that has support for @embroider/virtual/test-support.css. If you think something should be fixed in Embroider, please open an issue on https://github.com/embroider-build/embroider/issues.`);
|
350
320
|
}
|
351
|
-
return logTransition('test-support-styles', request, request.virtualize(
|
321
|
+
return logTransition('test-support-styles', request, request.virtualize({
|
322
|
+
type: 'test-support-css',
|
323
|
+
specifier: (0, path_1.resolve)(pkg.root, '-embroider-test-support-styles.css'),
|
324
|
+
}));
|
352
325
|
}
|
353
326
|
async handleGlobalsCompat(request) {
|
354
|
-
if (
|
327
|
+
if (request.resolvedTo) {
|
355
328
|
return request;
|
356
329
|
}
|
357
330
|
let match = compatPattern.exec(request.specifier);
|
@@ -391,7 +364,7 @@ class Resolver {
|
|
391
364
|
if (!pkg || !this.options.engines.some(e => e.root === (pkg === null || pkg === void 0 ? void 0 : pkg.root))) {
|
392
365
|
throw new Error(`bug: found an import of ${request.specifier} in ${request.fromFile}, but this is not the top-level Ember app or Engine. The top-level Ember app is the only one that has support for @embroider/virtual/vendor.css. If you think something should be fixed in Embroider, please open an issue on https://github.com/embroider-build/embroider/issues.`);
|
393
366
|
}
|
394
|
-
return logTransition('vendor-styles', request, request.virtualize((0, path_1.resolve)(pkg.root, '-embroider-vendor-styles.css')));
|
367
|
+
return logTransition('vendor-styles', request, request.virtualize({ type: 'vendor-css', specifier: (0, path_1.resolve)(pkg.root, '-embroider-vendor-styles.css') }));
|
395
368
|
}
|
396
369
|
resolveHelper(path, inEngine, request) {
|
397
370
|
let target = this.parseGlobalPath(path, inEngine);
|
@@ -404,9 +377,7 @@ class Resolver {
|
|
404
377
|
// first, the various places our template might be.
|
405
378
|
for (let candidate of this.componentTemplateCandidates(target.packageName)) {
|
406
379
|
let candidateSpecifier = `${target.packageName}${candidate.prefix}${target.memberName}${candidate.suffix}`;
|
407
|
-
let resolution = await this.resolve(request.alias(candidateSpecifier).rehome(target.from)
|
408
|
-
runtimeFallback: false,
|
409
|
-
}));
|
380
|
+
let resolution = await this.resolve(request.alias(candidateSpecifier).rehome(target.from));
|
410
381
|
if (resolution.type === 'found') {
|
411
382
|
hbsModule = resolution;
|
412
383
|
break;
|
@@ -415,12 +386,7 @@ class Resolver {
|
|
415
386
|
// then the various places our javascript might be.
|
416
387
|
for (let candidate of this.componentJSCandidates(target.packageName)) {
|
417
388
|
let candidateSpecifier = `${target.packageName}${candidate.prefix}${target.memberName}${candidate.suffix}`;
|
418
|
-
let resolution = await this.resolve(request.alias(candidateSpecifier).rehome(target.from)
|
419
|
-
runtimeFallback: false,
|
420
|
-
}));
|
421
|
-
if (resolution.type === 'ignored') {
|
422
|
-
return logTransition(`resolving to ignored component`, request, request.resolveTo(resolution));
|
423
|
-
}
|
389
|
+
let resolution = await this.resolve(request.alias(candidateSpecifier).rehome(target.from));
|
424
390
|
// .hbs is a resolvable extension for us, so we need to exclude it here.
|
425
391
|
// It matches as a priority lower than .js, so finding an .hbs means
|
426
392
|
// there's definitely not a .js.
|
@@ -433,7 +399,10 @@ class Resolver {
|
|
433
399
|
if (!this.emberVersionSupportsSeparateTemplates) {
|
434
400
|
throw new Error(`Components with separately resolved templates were removed at Ember 6.0. Migrate to either co-located js/ts + hbs files or to gjs/gts. https://deprecations.emberjs.com/id/component-template-resolving/. Bad template was: ${hbsModule.filename}.`);
|
435
401
|
}
|
436
|
-
return logTransition(`resolveComponent found legacy HBS`, request, request.virtualize(
|
402
|
+
return logTransition(`resolveComponent found legacy HBS`, request, request.virtualize({
|
403
|
+
type: 'component-pair',
|
404
|
+
specifier: (0, virtual_content_1.virtualPairComponent)(this.options.appRoot, hbsModule.filename, jsModule === null || jsModule === void 0 ? void 0 : jsModule.filename),
|
405
|
+
}));
|
437
406
|
}
|
438
407
|
else if (jsModule) {
|
439
408
|
return logTransition(`resolving to resolveComponent found only JS`, request, request.resolveTo(jsModule));
|
@@ -447,13 +416,8 @@ class Resolver {
|
|
447
416
|
// component, so here to resolve the ambiguity we need to actually resolve
|
448
417
|
// that candidate to see if it works.
|
449
418
|
let helperCandidate = this.resolveHelper(path, inEngine, request);
|
450
|
-
let helperMatch = await this.resolve(request.alias(helperCandidate.specifier).rehome(helperCandidate.fromFile)
|
451
|
-
|
452
|
-
}));
|
453
|
-
// for the case of 'ignored' that means that esbuild found this helper in an external
|
454
|
-
// package so it should be considered found in this case and we should not look for a
|
455
|
-
// component with this name
|
456
|
-
if (helperMatch.type === 'found' || helperMatch.type === 'ignored') {
|
419
|
+
let helperMatch = await this.resolve(request.alias(helperCandidate.specifier).rehome(helperCandidate.fromFile));
|
420
|
+
if (helperMatch.type === 'found') {
|
457
421
|
return logTransition('resolve to ambiguous case matched a helper', request, request.resolveTo(helperMatch));
|
458
422
|
}
|
459
423
|
// unlike resolveHelper, resolveComponent already does pre-resolution in
|
@@ -631,7 +595,7 @@ class Resolver {
|
|
631
595
|
});
|
632
596
|
}
|
633
597
|
handleRewrittenPackages(request) {
|
634
|
-
if (
|
598
|
+
if (request.resolvedTo) {
|
635
599
|
return request;
|
636
600
|
}
|
637
601
|
let requestingPkg = this.packageCache.ownerOfFile(request.fromFile);
|
@@ -684,7 +648,7 @@ class Resolver {
|
|
684
648
|
return request;
|
685
649
|
}
|
686
650
|
handleRenaming(request) {
|
687
|
-
if (
|
651
|
+
if (request.resolvedTo) {
|
688
652
|
return request;
|
689
653
|
}
|
690
654
|
let packageName = (0, shared_internals_1.packageName)(request.specifier);
|
@@ -769,7 +733,7 @@ class Resolver {
|
|
769
733
|
if ((pkg === null || pkg === void 0 ? void 0 : pkg.root) !== this.options.engines[0].root) {
|
770
734
|
throw new Error(`bug: found an import of ${request.specifier} in ${request.fromFile}, but this is not the top-level Ember app. The top-level Ember app is the only one that has support for @embroider/virtual/vendor.js. If you think something should be fixed in Embroider, please open an issue on https://github.com/embroider-build/embroider/issues.`);
|
771
735
|
}
|
772
|
-
return logTransition('vendor', request, request.virtualize((0, path_1.resolve)(pkg.root, '-embroider-vendor.js')));
|
736
|
+
return logTransition('vendor', request, request.virtualize({ type: 'vendor-js', specifier: (0, path_1.resolve)(pkg.root, '-embroider-vendor.js') }));
|
773
737
|
}
|
774
738
|
resolveWithinMovedPackage(request, pkg) {
|
775
739
|
let levels = ['..'];
|
@@ -786,7 +750,7 @@ class Resolver {
|
|
786
750
|
return newRequest.withMeta({ originalFromFile });
|
787
751
|
}
|
788
752
|
preHandleExternal(request) {
|
789
|
-
if (
|
753
|
+
if (request.resolvedTo) {
|
790
754
|
return request;
|
791
755
|
}
|
792
756
|
let { specifier, fromFile } = request;
|
@@ -866,8 +830,8 @@ class Resolver {
|
|
866
830
|
}
|
867
831
|
}
|
868
832
|
async fallbackResolve(request) {
|
869
|
-
if (request.
|
870
|
-
throw new Error('Build tool bug detected! Fallback resolve should never see
|
833
|
+
if (request.resolvedTo) {
|
834
|
+
throw new Error('Build tool bug detected! Fallback resolve should never see an already-resolved request.');
|
871
835
|
}
|
872
836
|
if (request.specifier === '@embroider/macros') {
|
873
837
|
// the macros package is always handled directly within babel (not
|
@@ -1025,14 +989,15 @@ class Resolver {
|
|
1025
989
|
case 'fastboot-only':
|
1026
990
|
return request.alias(matched.entry['fastboot-js'].specifier).rehome(matched.entry['fastboot-js'].fromFile);
|
1027
991
|
case 'both':
|
1028
|
-
let foundAppJS = await this.resolve(request.alias(matched.entry['app-js'].specifier).rehome(matched.entry['app-js'].fromFile)
|
1029
|
-
runtimeFallback: false,
|
1030
|
-
}));
|
992
|
+
let foundAppJS = await this.resolve(request.alias(matched.entry['app-js'].specifier).rehome(matched.entry['app-js'].fromFile));
|
1031
993
|
if (foundAppJS.type !== 'found') {
|
1032
994
|
throw new Error(`${matched.entry['app-js'].fromPackageName} declared ${inEngineSpecifier} in packageJSON.ember-addon.app-js, but that module does not exist`);
|
1033
995
|
}
|
1034
996
|
let { names } = (0, describe_exports_1.describeExports)((0, fs_1.readFileSync)(foundAppJS.filename, 'utf8'), { configFile: false });
|
1035
|
-
return request.virtualize(
|
997
|
+
return request.virtualize({
|
998
|
+
type: 'fastboot-switch',
|
999
|
+
specifier: (0, virtual_content_1.fastbootSwitch)(matched.matched, (0, path_1.resolve)(engine.root, 'package.json'), names),
|
1000
|
+
});
|
1036
1001
|
}
|
1037
1002
|
}
|
1038
1003
|
// check whether the given file with the given owningPackage is an addon's
|