@embroider/core 3.4.16-unstable.2ff89c0 → 3.4.16-unstable.72ee15d
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 +15 -8
- package/src/index.d.ts +2 -1
- package/src/index.js.map +1 -1
- package/src/measure-concat.js +1 -2
- package/src/measure-concat.js.map +1 -1
- package/src/module-resolver-options.d.ts +44 -0
- package/src/module-resolver-options.js +167 -0
- package/src/module-resolver-options.js.map +1 -0
- package/src/module-resolver.d.ts +1 -35
- package/src/module-resolver.js +18 -6
- package/src/module-resolver.js.map +1 -1
- package/src/resolver-loader.js +8 -1
- package/src/resolver-loader.js.map +1 -1
- package/src/virtual-entrypoint.js +6 -4
- package/src/virtual-entrypoint.js.map +1 -1
- package/types/virtual/index.d.ts +9 -0
- package/types/virtual/index.js +3 -0
package/package.json
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
{
|
2
2
|
"name": "@embroider/core",
|
3
|
-
"version": "3.4.16-unstable.
|
3
|
+
"version": "3.4.16-unstable.72ee15d",
|
4
4
|
"private": false,
|
5
5
|
"description": "A build system for EmberJS applications.",
|
6
6
|
"repository": {
|
@@ -11,10 +11,18 @@
|
|
11
11
|
"license": "MIT",
|
12
12
|
"author": "Edward Faulkner",
|
13
13
|
"main": "src/index.js",
|
14
|
+
"typesVersions": {
|
15
|
+
"*": {
|
16
|
+
"virtual": [
|
17
|
+
"types/virtual"
|
18
|
+
]
|
19
|
+
}
|
20
|
+
},
|
14
21
|
"files": [
|
15
22
|
"src/**/*.js",
|
16
23
|
"src/**/*.d.ts",
|
17
|
-
"src/**/*.js.map"
|
24
|
+
"src/**/*.js.map",
|
25
|
+
"types"
|
18
26
|
],
|
19
27
|
"dependencies": {
|
20
28
|
"@babel/core": "^7.14.5",
|
@@ -29,7 +37,6 @@
|
|
29
37
|
"debug": "^4.3.2",
|
30
38
|
"escape-string-regexp": "^4.0.0",
|
31
39
|
"fast-sourcemap-concat": "^2.1.1",
|
32
|
-
"filesize": "^10.0.7",
|
33
40
|
"fs-extra": "^9.1.0",
|
34
41
|
"fs-tree-diff": "^2.0.1",
|
35
42
|
"handlebars": "^4.7.7",
|
@@ -41,9 +48,9 @@
|
|
41
48
|
"resolve.exports": "^2.0.2",
|
42
49
|
"typescript-memoize": "^1.0.1",
|
43
50
|
"walk-sync": "^3.0.0",
|
44
|
-
"@embroider/macros": "1.16.7-unstable.
|
45
|
-
"@embroider/
|
46
|
-
"@embroider/
|
51
|
+
"@embroider/macros": "1.16.7-unstable.72ee15d",
|
52
|
+
"@embroider/shared-internals": "2.6.4-unstable.72ee15d",
|
53
|
+
"@embroider/reverse-exports": "0.1.1-unstable.72ee15d"
|
47
54
|
},
|
48
55
|
"devDependencies": {
|
49
56
|
"@glimmer/syntax": "^0.84.2",
|
@@ -61,8 +68,8 @@
|
|
61
68
|
"fixturify": "^2.1.1",
|
62
69
|
"tmp": "^0.1.0",
|
63
70
|
"typescript": "^5.4.5",
|
64
|
-
"@embroider/
|
65
|
-
"@embroider/
|
71
|
+
"@embroider/sample-transforms": "0.0.0",
|
72
|
+
"@embroider/test-support": "0.36.0"
|
66
73
|
},
|
67
74
|
"engines": {
|
68
75
|
"node": "12.* || 14.* || >= 16"
|
package/src/index.d.ts
CHANGED
@@ -6,7 +6,8 @@ export { default as toBroccoliPlugin } from './to-broccoli-plugin';
|
|
6
6
|
export { default as WaitForTrees, OutputPaths } from './wait-for-trees';
|
7
7
|
export { compile as jsHandlebarsCompile } from './js-handlebars';
|
8
8
|
export { todo, unsupported, warn, debug, expectWarning, throwOnWarnings } from './messages';
|
9
|
-
export { Resolver,
|
9
|
+
export { Resolver, ModuleRequest, Resolution } from './module-resolver';
|
10
|
+
export type { Options as ResolverOptions } from './module-resolver-options';
|
10
11
|
export { ResolverLoader } from './resolver-loader';
|
11
12
|
export { virtualContent } from './virtual-content';
|
12
13
|
export type { Engine } from './app-files';
|
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,2DAAmE;AAA1D,uIAAA,OAAO,OAAoB;AACpC,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,
|
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,2DAAmE;AAA1D,uIAAA,OAAO,OAAoB;AACpC,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,qDAAwE;AAA/D,2GAAA,QAAQ,OAAA;AAEjB,qDAAmD;AAA1C,iHAAA,cAAc,OAAA;AACvB,qDAAmD;AAA1C,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 toBroccoliPlugin } from './to-broccoli-plugin';\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, ModuleRequest, Resolution } from './module-resolver';\nexport type { Options as ResolverOptions } from './module-resolver-options';\nexport { ResolverLoader } from './resolver-loader';\nexport { virtualContent } 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/measure-concat.js
CHANGED
@@ -2,7 +2,6 @@
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
3
3
|
const path_1 = require("path");
|
4
4
|
const fs_1 = require("fs");
|
5
|
-
const filesize_1 = require("filesize");
|
6
5
|
class MeasureConcat {
|
7
6
|
constructor(name, concat, baseDir) {
|
8
7
|
this.name = name;
|
@@ -22,7 +21,7 @@ class MeasureConcat {
|
|
22
21
|
console.log(`Concatenated ${this.name}:`);
|
23
22
|
console.log(Object.entries(this.stats)
|
24
23
|
.sort((a, b) => b[1] - a[1])
|
25
|
-
.map(([name, bytes]) => ` ${name}: ${
|
24
|
+
.map(([name, bytes]) => ` ${name}: ${bytes} bytes`)
|
26
25
|
.join('\n'));
|
27
26
|
return await this.concat.end();
|
28
27
|
}
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"measure-concat.js","sourceRoot":"","sources":["measure-concat.ts"],"names":[],"mappings":";;AACA,+BAA4B;AAC5B,2BAA8B;
|
1
|
+
{"version":3,"file":"measure-concat.js","sourceRoot":"","sources":["measure-concat.ts"],"names":[],"mappings":";;AACA,+BAA4B;AAC5B,2BAA8B;AAE9B,MAAqB,aAAa;IAEhC,YAAoB,IAAY,EAAU,MAAuB,EAAU,OAAe;QAAtE,SAAI,GAAJ,IAAI,CAAQ;QAAU,WAAM,GAAN,MAAM,CAAiB;QAAU,YAAO,GAAP,OAAO,CAAQ;QAD1F,UAAK,GAAmC,EAAE,CAAC;IACkD,CAAC;IAC9F,OAAO,CAAC,QAAgB;QACtB,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,GAAG,IAAA,aAAQ,EAAC,IAAA,WAAI,EAAC,IAAI,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC;QACnE,OAAO,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;IACvC,CAAC;IACD,QAAQ,CAAC,QAAgB;QACvB,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,GAAG,QAAQ,CAAC,MAAM,CAAC;QAC3E,OAAO,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;IACxC,CAAC;IACD,KAAK,CAAC,GAAG;QACP,OAAO,CAAC,GAAG,CAAC,gBAAgB,IAAI,CAAC,IAAI,GAAG,CAAC,CAAC;QAC1C,OAAO,CAAC,GAAG,CACT,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC;aACvB,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;aAC3B,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,KAAK,IAAI,KAAK,KAAK,QAAQ,CAAC;aACnD,IAAI,CAAC,IAAI,CAAC,CACd,CAAC;QACF,OAAO,MAAM,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC;IACjC,CAAC;CACF;AArBD,gCAqBC","sourcesContent":["import type SourceMapConcat from 'fast-sourcemap-concat';\nimport { join } from 'path';\nimport { statSync } from 'fs';\n\nexport default class MeasureConcat {\n stats: { [filename: string]: number } = {};\n constructor(private name: string, private concat: SourceMapConcat, private baseDir: string) {}\n addFile(filename: string) {\n this.stats[filename] = statSync(join(this.baseDir, filename)).size;\n return this.concat.addFile(filename);\n }\n addSpace(contents: string) {\n this.stats['in-memory'] = (this.stats['in-memory'] || 0) + contents.length;\n return this.concat.addSpace(contents);\n }\n async end() {\n console.log(`Concatenated ${this.name}:`);\n console.log(\n Object.entries(this.stats)\n .sort((a, b) => b[1] - a[1])\n .map(([name, bytes]) => ` ${name}: ${bytes} bytes`)\n .join('\\n')\n );\n return await this.concat.end();\n }\n}\n"]}
|
@@ -0,0 +1,44 @@
|
|
1
|
+
import { type AddonPackage, type Package } from '@embroider/shared-internals';
|
2
|
+
import type UserOptions from './options';
|
3
|
+
export interface Options {
|
4
|
+
renamePackages: {
|
5
|
+
[fromName: string]: string;
|
6
|
+
};
|
7
|
+
renameModules: {
|
8
|
+
[fromName: string]: string;
|
9
|
+
};
|
10
|
+
resolvableExtensions: string[];
|
11
|
+
appRoot: string;
|
12
|
+
engines: EngineConfig[];
|
13
|
+
modulePrefix: string;
|
14
|
+
splitAtRoutes?: (RegExp | string)[];
|
15
|
+
podModulePrefix?: string;
|
16
|
+
amdCompatibility: Required<UserOptions['amdCompatibility']>;
|
17
|
+
staticAppPaths: string[];
|
18
|
+
emberVersion: string;
|
19
|
+
}
|
20
|
+
export interface EngineConfig {
|
21
|
+
packageName: string;
|
22
|
+
activeAddons: {
|
23
|
+
name: string;
|
24
|
+
root: string;
|
25
|
+
canResolveFromFile: string;
|
26
|
+
}[];
|
27
|
+
fastbootFiles: {
|
28
|
+
[appName: string]: {
|
29
|
+
localFilename: string;
|
30
|
+
shadowedFilename: string | undefined;
|
31
|
+
};
|
32
|
+
};
|
33
|
+
root: string;
|
34
|
+
isLazy: boolean;
|
35
|
+
}
|
36
|
+
export declare function buildResolverOptions<T extends Options>(inputs: {
|
37
|
+
appPackage?: Package;
|
38
|
+
extraDeps?: Map<string, AddonPackage[]>;
|
39
|
+
modulePrefix?: string;
|
40
|
+
podModulePrefix?: string;
|
41
|
+
splitAtRoutes?: (RegExp | string)[];
|
42
|
+
staticAppPaths?: string[];
|
43
|
+
extend?: (opts: T, allActiveAddons: AddonPackage[]) => T;
|
44
|
+
}): T;
|
@@ -0,0 +1,167 @@
|
|
1
|
+
"use strict";
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
4
|
+
};
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
6
|
+
exports.buildResolverOptions = buildResolverOptions;
|
7
|
+
const shared_internals_1 = require("@embroider/shared-internals");
|
8
|
+
const path_1 = require("path");
|
9
|
+
const fs_extra_1 = require("fs-extra");
|
10
|
+
const flatMap_1 = __importDefault(require("lodash/flatMap"));
|
11
|
+
function buildResolverOptions(inputs) {
|
12
|
+
var _a, _b;
|
13
|
+
let appPackage;
|
14
|
+
if (inputs.appPackage) {
|
15
|
+
appPackage = inputs.appPackage;
|
16
|
+
}
|
17
|
+
else {
|
18
|
+
let packageCache = shared_internals_1.RewrittenPackageCache.shared('embroider', process.cwd());
|
19
|
+
appPackage = packageCache.get(packageCache.appRoot);
|
20
|
+
}
|
21
|
+
let extraDeps = (_a = inputs.extraDeps) !== null && _a !== void 0 ? _a : new Map();
|
22
|
+
let allActiveAddons = findAllActiveAddons(appPackage, extraDeps);
|
23
|
+
let renamePackages = Object.assign({}, ...allActiveAddons.map(dep => dep.meta['renamed-packages']));
|
24
|
+
let renameModules = Object.assign({}, ...allActiveAddons.map(dep => dep.meta['renamed-modules']));
|
25
|
+
let modulePrefix = appPackage.name;
|
26
|
+
let engines = partitionEngines(appPackage, modulePrefix, extraDeps);
|
27
|
+
let output = {
|
28
|
+
renamePackages,
|
29
|
+
renameModules,
|
30
|
+
resolvableExtensions: resolvableExtensions(),
|
31
|
+
appRoot: appPackage.root,
|
32
|
+
engines,
|
33
|
+
amdCompatibility: {
|
34
|
+
es: [],
|
35
|
+
},
|
36
|
+
modulePrefix,
|
37
|
+
staticAppPaths: (_b = inputs.staticAppPaths) !== null && _b !== void 0 ? _b : [],
|
38
|
+
emberVersion: appPackage.dependencies.find(d => d.name === 'ember-source').version,
|
39
|
+
splitAtRoutes: inputs.splitAtRoutes,
|
40
|
+
podModulePrefix: inputs.podModulePrefix,
|
41
|
+
};
|
42
|
+
if (inputs.extend) {
|
43
|
+
return inputs.extend(output, allActiveAddons);
|
44
|
+
}
|
45
|
+
return output;
|
46
|
+
}
|
47
|
+
function resolvableExtensions() {
|
48
|
+
let fromEnv = process.env.EMBROIDER_RESOLVABLE_EXTENSIONS;
|
49
|
+
if (fromEnv) {
|
50
|
+
return fromEnv.split(',');
|
51
|
+
}
|
52
|
+
else {
|
53
|
+
return ['.mjs', '.gjs', '.js', '.mts', '.gts', '.ts', '.hbs', '.hbs.js', '.json'];
|
54
|
+
}
|
55
|
+
}
|
56
|
+
function partitionEngines(appPackage, modulePrefix, extraDeps) {
|
57
|
+
let queue = [
|
58
|
+
{
|
59
|
+
package: appPackage,
|
60
|
+
addons: new Map(),
|
61
|
+
isApp: true,
|
62
|
+
modulePrefix,
|
63
|
+
appRelativePath: '.',
|
64
|
+
},
|
65
|
+
];
|
66
|
+
let done = [];
|
67
|
+
let seenEngines = new Set();
|
68
|
+
while (true) {
|
69
|
+
let current = queue.shift();
|
70
|
+
if (!current) {
|
71
|
+
break;
|
72
|
+
}
|
73
|
+
findActiveAddons(current.package, current, extraDeps);
|
74
|
+
for (let addon of current.addons.keys()) {
|
75
|
+
if (addon.isEngine() && !seenEngines.has(addon)) {
|
76
|
+
seenEngines.add(addon);
|
77
|
+
queue.push({
|
78
|
+
package: addon,
|
79
|
+
addons: new Map(),
|
80
|
+
isApp: !current,
|
81
|
+
modulePrefix: addon.name,
|
82
|
+
appRelativePath: (0, shared_internals_1.explicitRelative)(appPackage.root, addon.root),
|
83
|
+
});
|
84
|
+
}
|
85
|
+
}
|
86
|
+
done.push(current);
|
87
|
+
}
|
88
|
+
return done.map(engine => ({
|
89
|
+
packageName: engine.package.name,
|
90
|
+
// we need to use the real path here because webpack requests always use the real path i.e. follow symlinks
|
91
|
+
root: (0, fs_extra_1.realpathSync)(engine.package.root),
|
92
|
+
fastbootFiles: {},
|
93
|
+
activeAddons: [...engine.addons]
|
94
|
+
.map(([addon, canResolveFromFile]) => ({
|
95
|
+
name: addon.name,
|
96
|
+
root: addon.root,
|
97
|
+
canResolveFromFile,
|
98
|
+
}))
|
99
|
+
// the traditional order is the order in which addons will run, such
|
100
|
+
// that the last one wins. Our resolver's order is the order to
|
101
|
+
// search, so first one wins.
|
102
|
+
.reverse(),
|
103
|
+
isLazy: engine.package.isLazyEngine(),
|
104
|
+
}));
|
105
|
+
}
|
106
|
+
// recurse to find all active addons that don't cross an engine boundary.
|
107
|
+
// Inner engines themselves will be returned, but not those engines' children.
|
108
|
+
// The output set's insertion order is the proper ember-cli compatible
|
109
|
+
// ordering of the addons.
|
110
|
+
function findActiveAddons(pkg, engine, extraDeps, isChild = false) {
|
111
|
+
for (let child of activeAddonChildren(pkg, extraDeps)) {
|
112
|
+
if (!child.isEngine()) {
|
113
|
+
findActiveAddons(child, engine, extraDeps, true);
|
114
|
+
}
|
115
|
+
let canResolveFrom = (0, path_1.resolve)(pkg.root, 'package.json');
|
116
|
+
engine.addons.set(child, canResolveFrom);
|
117
|
+
}
|
118
|
+
// ensure addons are applied in the correct order, if set (via @embroider/compat/v1-addon)
|
119
|
+
if (!isChild) {
|
120
|
+
engine.addons = new Map([...engine.addons].sort(([a], [b]) => {
|
121
|
+
return (a.meta['order-index'] || 0) - (b.meta['order-index'] || 0);
|
122
|
+
}));
|
123
|
+
}
|
124
|
+
}
|
125
|
+
function activeAddonChildren(pkg, extraDeps) {
|
126
|
+
let result = pkg.dependencies.filter(isActiveAddon).filter(
|
127
|
+
// When looking for child addons, we want to ignore 'peerDependencies' of
|
128
|
+
// a given package, to align with how ember-cli resolves addons. So here
|
129
|
+
// we only include dependencies that are definitely active due to one of
|
130
|
+
// the other sections.
|
131
|
+
addon => pkg.categorizeDependency(addon.name) !== 'peerDependencies');
|
132
|
+
let extras = extraDeps.get(pkg.root);
|
133
|
+
if (extras) {
|
134
|
+
result = [...result, ...extras];
|
135
|
+
}
|
136
|
+
return result.sort(orderAddons);
|
137
|
+
}
|
138
|
+
function isActiveAddon(pkg) {
|
139
|
+
// stage1 already took care of converting everything that's actually active
|
140
|
+
// into v2 addons. If it's not a v2 addon, we don't want it.
|
141
|
+
//
|
142
|
+
// We can encounter v1 addons here when there is inactive stuff floating
|
143
|
+
// around in the node_modules that accidentally satisfy something like an
|
144
|
+
// optional peer dep.
|
145
|
+
return pkg.isV2Addon();
|
146
|
+
}
|
147
|
+
function orderAddons(depA, depB) {
|
148
|
+
let depAIdx = 0;
|
149
|
+
let depBIdx = 0;
|
150
|
+
if (depA && depA.meta && depA.isV2Addon()) {
|
151
|
+
depAIdx = depA.meta['order-index'] || 0;
|
152
|
+
}
|
153
|
+
if (depB && depB.meta && depB.isV2Addon()) {
|
154
|
+
depBIdx = depB.meta['order-index'] || 0;
|
155
|
+
}
|
156
|
+
return depAIdx - depBIdx;
|
157
|
+
}
|
158
|
+
function findAllActiveAddons(appPackage, extraDeps) {
|
159
|
+
let result = appPackage.findDescendants(isActiveAddon);
|
160
|
+
let extras = extraDeps.get(appPackage.root);
|
161
|
+
if (extras) {
|
162
|
+
let extraDescendants = (0, flatMap_1.default)(extras, dep => dep.findDescendants(isActiveAddon));
|
163
|
+
result = [...result, ...extras, ...extraDescendants];
|
164
|
+
}
|
165
|
+
return result.sort(orderAddons);
|
166
|
+
}
|
167
|
+
//# sourceMappingURL=module-resolver-options.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"module-resolver-options.js","sourceRoot":"","sources":["module-resolver-options.ts"],"names":[],"mappings":"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","sourcesContent":["import { explicitRelative, RewrittenPackageCache, type AddonPackage, type Package } from '@embroider/shared-internals';\nimport type UserOptions from './options';\nimport type { Engine } from './app-files';\nimport { resolve as resolvePath } from 'path';\nimport { realpathSync } from 'fs-extra';\nimport flatMap from 'lodash/flatMap';\n\nexport interface Options {\n renamePackages: {\n [fromName: string]: string;\n };\n renameModules: {\n [fromName: string]: string;\n };\n resolvableExtensions: string[];\n appRoot: string;\n engines: EngineConfig[];\n modulePrefix: string;\n splitAtRoutes?: (RegExp | string)[];\n podModulePrefix?: string;\n amdCompatibility: Required<UserOptions['amdCompatibility']>;\n staticAppPaths: string[];\n emberVersion: string;\n}\n\nexport interface EngineConfig {\n packageName: string;\n activeAddons: { name: string; root: string; canResolveFromFile: string }[];\n fastbootFiles: { [appName: string]: { localFilename: string; shadowedFilename: string | undefined } };\n root: string;\n isLazy: boolean;\n}\n\nexport function buildResolverOptions<T extends Options>(inputs: {\n appPackage?: Package;\n extraDeps?: Map<string, AddonPackage[]>;\n modulePrefix?: string;\n podModulePrefix?: string;\n splitAtRoutes?: (RegExp | string)[];\n staticAppPaths?: string[];\n extend?: (opts: T, allActiveAddons: AddonPackage[]) => T;\n}): T {\n let appPackage: Package;\n if (inputs.appPackage) {\n appPackage = inputs.appPackage;\n } else {\n let packageCache = RewrittenPackageCache.shared('embroider', process.cwd());\n appPackage = packageCache.get(packageCache.appRoot);\n }\n\n let extraDeps = inputs.extraDeps ?? new Map();\n\n let allActiveAddons: AddonPackage[] = findAllActiveAddons(appPackage, extraDeps);\n let renamePackages = Object.assign({}, ...allActiveAddons.map(dep => dep.meta['renamed-packages']));\n let renameModules = Object.assign({}, ...allActiveAddons.map(dep => dep.meta['renamed-modules']));\n let modulePrefix = appPackage.name;\n let engines = partitionEngines(appPackage, modulePrefix, extraDeps);\n\n let output: Options = {\n renamePackages,\n renameModules,\n resolvableExtensions: resolvableExtensions(),\n appRoot: appPackage.root,\n engines,\n amdCompatibility: {\n es: [],\n },\n modulePrefix,\n staticAppPaths: inputs.staticAppPaths ?? [],\n emberVersion: appPackage.dependencies.find(d => d.name === 'ember-source')!.version,\n splitAtRoutes: inputs.splitAtRoutes,\n podModulePrefix: inputs.podModulePrefix,\n };\n\n if (inputs.extend) {\n return inputs.extend(output as T, allActiveAddons);\n }\n return output as T;\n}\n\nfunction resolvableExtensions(): string[] {\n let fromEnv = process.env.EMBROIDER_RESOLVABLE_EXTENSIONS;\n if (fromEnv) {\n return fromEnv.split(',');\n } else {\n return ['.mjs', '.gjs', '.js', '.mts', '.gts', '.ts', '.hbs', '.hbs.js', '.json'];\n }\n}\n\nfunction partitionEngines(\n appPackage: Package,\n modulePrefix: string,\n extraDeps: Map<string, AddonPackage[]>\n): EngineConfig[] {\n let queue: Engine[] = [\n {\n package: appPackage,\n addons: new Map(),\n isApp: true,\n modulePrefix,\n appRelativePath: '.',\n },\n ];\n let done: Engine[] = [];\n let seenEngines: Set<Package> = new Set();\n while (true) {\n let current = queue.shift();\n if (!current) {\n break;\n }\n findActiveAddons(current.package, current, extraDeps);\n for (let addon of current.addons.keys()) {\n if (addon.isEngine() && !seenEngines.has(addon)) {\n seenEngines.add(addon);\n queue.push({\n package: addon,\n addons: new Map(),\n isApp: !current,\n modulePrefix: addon.name,\n appRelativePath: explicitRelative(appPackage.root, addon.root),\n });\n }\n }\n done.push(current);\n }\n\n return done.map(engine => ({\n packageName: engine.package.name,\n // we need to use the real path here because webpack requests always use the real path i.e. follow symlinks\n root: realpathSync(engine.package.root),\n fastbootFiles: {},\n activeAddons: [...engine.addons]\n .map(([addon, canResolveFromFile]) => ({\n name: addon.name,\n root: addon.root,\n canResolveFromFile,\n }))\n // the traditional order is the order in which addons will run, such\n // that the last one wins. Our resolver's order is the order to\n // search, so first one wins.\n .reverse(),\n isLazy: engine.package.isLazyEngine(),\n }));\n}\n\n// recurse to find all active addons that don't cross an engine boundary.\n// Inner engines themselves will be returned, but not those engines' children.\n// The output set's insertion order is the proper ember-cli compatible\n// ordering of the addons.\nfunction findActiveAddons(pkg: Package, engine: Engine, extraDeps: Map<string, AddonPackage[]>, isChild = false): void {\n for (let child of activeAddonChildren(pkg, extraDeps)) {\n if (!child.isEngine()) {\n findActiveAddons(child, engine, extraDeps, true);\n }\n let canResolveFrom = resolvePath(pkg.root, 'package.json');\n engine.addons.set(child, canResolveFrom);\n }\n // ensure addons are applied in the correct order, if set (via @embroider/compat/v1-addon)\n if (!isChild) {\n engine.addons = new Map(\n [...engine.addons].sort(([a], [b]) => {\n return (a.meta['order-index'] || 0) - (b.meta['order-index'] || 0);\n })\n );\n }\n}\n\nfunction activeAddonChildren(pkg: Package, extraDeps: Map<string, AddonPackage[]>): AddonPackage[] {\n let result = (pkg.dependencies.filter(isActiveAddon) as AddonPackage[]).filter(\n // When looking for child addons, we want to ignore 'peerDependencies' of\n // a given package, to align with how ember-cli resolves addons. So here\n // we only include dependencies that are definitely active due to one of\n // the other sections.\n addon => pkg.categorizeDependency(addon.name) !== 'peerDependencies'\n );\n let extras = extraDeps.get(pkg.root);\n if (extras) {\n result = [...result, ...extras];\n }\n return result.sort(orderAddons);\n}\n\nfunction isActiveAddon(pkg: Package): boolean {\n // stage1 already took care of converting everything that's actually active\n // into v2 addons. If it's not a v2 addon, we don't want it.\n //\n // We can encounter v1 addons here when there is inactive stuff floating\n // around in the node_modules that accidentally satisfy something like an\n // optional peer dep.\n return pkg.isV2Addon();\n}\n\nfunction orderAddons(depA: Package, depB: Package): number {\n let depAIdx = 0;\n let depBIdx = 0;\n\n if (depA && depA.meta && depA.isV2Addon()) {\n depAIdx = depA.meta['order-index'] || 0;\n }\n if (depB && depB.meta && depB.isV2Addon()) {\n depBIdx = depB.meta['order-index'] || 0;\n }\n\n return depAIdx - depBIdx;\n}\n\nfunction findAllActiveAddons(appPackage: Package, extraDeps: Map<string, AddonPackage[]>): AddonPackage[] {\n let result = appPackage.findDescendants(isActiveAddon) as AddonPackage[];\n let extras = extraDeps.get(appPackage.root);\n if (extras) {\n let extraDescendants = flatMap(extras, dep => dep.findDescendants(isActiveAddon)) as AddonPackage[];\n result = [...result, ...extras, ...extraDescendants];\n }\n return result.sort(orderAddons);\n}\n"]}
|
package/src/module-resolver.d.ts
CHANGED
@@ -1,40 +1,6 @@
|
|
1
1
|
import type { Package } from '@embroider/shared-internals';
|
2
2
|
import { RewrittenPackageCache } from '@embroider/shared-internals';
|
3
|
-
import type
|
4
|
-
export interface Options {
|
5
|
-
renamePackages: {
|
6
|
-
[fromName: string]: string;
|
7
|
-
};
|
8
|
-
renameModules: {
|
9
|
-
[fromName: string]: string;
|
10
|
-
};
|
11
|
-
resolvableExtensions: string[];
|
12
|
-
appRoot: string;
|
13
|
-
engines: EngineConfig[];
|
14
|
-
modulePrefix: string;
|
15
|
-
splitAtRoutes?: (RegExp | string)[];
|
16
|
-
podModulePrefix?: string;
|
17
|
-
amdCompatibility: Required<UserOptions['amdCompatibility']>;
|
18
|
-
autoRun: boolean;
|
19
|
-
staticAppPaths: string[];
|
20
|
-
emberVersion: string;
|
21
|
-
}
|
22
|
-
export interface EngineConfig {
|
23
|
-
packageName: string;
|
24
|
-
activeAddons: {
|
25
|
-
name: string;
|
26
|
-
root: string;
|
27
|
-
canResolveFromFile: string;
|
28
|
-
}[];
|
29
|
-
fastbootFiles: {
|
30
|
-
[appName: string]: {
|
31
|
-
localFilename: string;
|
32
|
-
shadowedFilename: string | undefined;
|
33
|
-
};
|
34
|
-
};
|
35
|
-
root: string;
|
36
|
-
isLazy: boolean;
|
37
|
-
}
|
3
|
+
import type { Options, EngineConfig } from './module-resolver-options';
|
38
4
|
export interface ModuleRequest<Res extends Resolution = Resolution> {
|
39
5
|
readonly specifier: string;
|
40
6
|
readonly fromFile: string;
|
package/src/module-resolver.js
CHANGED
@@ -271,11 +271,15 @@ class Resolver {
|
|
271
271
|
return request;
|
272
272
|
}
|
273
273
|
//TODO move the extra forwardslash handling out into the vite plugin
|
274
|
-
const candidates = [
|
274
|
+
const candidates = [
|
275
|
+
'@embroider/virtual/compat-modules',
|
276
|
+
'/@embroider/virtual/compat-modules',
|
277
|
+
'./@embroider/virtual/compat-modules',
|
278
|
+
];
|
275
279
|
if (!candidates.some(c => request.specifier.startsWith(c + '/') || request.specifier === c)) {
|
276
280
|
return request;
|
277
281
|
}
|
278
|
-
const result = /\.?\/?@embroider\/
|
282
|
+
const result = /\.?\/?@embroider\/virtual\/compat-modules(?:\/(?<packageName>.*))?/.exec(request.specifier);
|
279
283
|
if (!result) {
|
280
284
|
// TODO make a better error
|
281
285
|
throw new Error('entrypoint does not match pattern' + request.specifier);
|
@@ -377,13 +381,17 @@ class Resolver {
|
|
377
381
|
}
|
378
382
|
handleVendorStyles(request) {
|
379
383
|
//TODO move the extra forwardslash handling out into the vite plugin
|
380
|
-
const candidates = [
|
384
|
+
const candidates = [
|
385
|
+
'@embroider/virtual/vendor.css',
|
386
|
+
'/@embroider/virtual/vendor.css',
|
387
|
+
'./@embroider/virtual/vendor.css',
|
388
|
+
];
|
381
389
|
if (!candidates.includes(request.specifier)) {
|
382
390
|
return request;
|
383
391
|
}
|
384
392
|
let pkg = this.packageCache.ownerOfFile(request.fromFile);
|
385
393
|
if (!pkg || !this.options.engines.some(e => e.root === (pkg === null || pkg === void 0 ? void 0 : pkg.root))) {
|
386
|
-
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/
|
394
|
+
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.`);
|
387
395
|
}
|
388
396
|
return logTransition('vendor-styles', request, request.virtualize((0, path_1.resolve)(pkg.root, '-embroider-vendor-styles.css')));
|
389
397
|
}
|
@@ -739,13 +747,17 @@ class Resolver {
|
|
739
747
|
}
|
740
748
|
handleVendor(request) {
|
741
749
|
//TODO move the extra forwardslash handling out into the vite plugin
|
742
|
-
const candidates = [
|
750
|
+
const candidates = [
|
751
|
+
'@embroider/virtual/vendor.js',
|
752
|
+
'/@embroider/virtual/vendor.js',
|
753
|
+
'./@embroider/virtual/vendor.js',
|
754
|
+
];
|
743
755
|
if (!candidates.includes(request.specifier)) {
|
744
756
|
return request;
|
745
757
|
}
|
746
758
|
let pkg = this.packageCache.ownerOfFile(request.fromFile);
|
747
759
|
if ((pkg === null || pkg === void 0 ? void 0 : pkg.root) !== this.options.engines[0].root) {
|
748
|
-
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/
|
760
|
+
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.`);
|
749
761
|
}
|
750
762
|
return logTransition('vendor', request, request.virtualize((0, path_1.resolve)(pkg.root, '-embroider-vendor.js')));
|
751
763
|
}
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"module-resolver.js","sourceRoot":"","sources":["module-resolver.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n emberVirtualPackages,\n emberVirtualPeerDeps,\n extensionsPattern,\n packageName as getPackageName,\n packageName,\n} from '@embroider/shared-internals';\nimport { dirname, resolve, posix } from 'path';\nimport type { Package, V2Package } from '@embroider/shared-internals';\nimport { explicitRelative, RewrittenPackageCache } from '@embroider/shared-internals';\nimport makeDebug from 'debug';\nimport assertNever from 'assert-never';\nimport { externalName } from '@embroider/reverse-exports';\nimport { exports as resolveExports } from 'resolve.exports';\n\nimport {\n virtualExternalESModule,\n virtualExternalCJSModule,\n virtualPairComponent,\n fastbootSwitch,\n decodeFastbootSwitch,\n decodeImplicitModules,\n} from './virtual-content';\nimport { Memoize } from 'typescript-memoize';\nimport { describeExports } from './describe-exports';\nimport { readFileSync } from 'fs';\nimport type UserOptions from './options';\nimport { nodeResolve } from './node-resolve';\nimport { decodePublicRouteEntrypoint, encodeRouteEntrypoint } from './virtual-route-entrypoint';\n\nconst debug = makeDebug('embroider:resolver');\n\n// Using a formatter makes this work lazy so nothing happens when we aren't\n// logging. It is unfortunate that formatters are a globally mutable config and\n// you can only use single character names, but oh well.\nmakeDebug.formatters.p = (s: string) => {\n let cwd = process.cwd();\n if (s.startsWith(cwd)) {\n return s.slice(cwd.length + 1);\n }\n return s;\n};\n\nfunction logTransition<R extends ModuleRequest>(reason: string, before: R, after: R = before): R {\n if (after.isVirtual) {\n debug(`[%s:virtualized] %s because %s\\n in %p`, before.debugType, before.specifier, reason, before.fromFile);\n } else if (after.resolvedTo) {\n debug(`[%s:resolvedTo] %s because %s\\n in %p`, before.debugType, before.specifier, reason, before.fromFile);\n } else if (before.specifier !== after.specifier) {\n if (before.fromFile !== after.fromFile) {\n debug(\n `[%s:aliased and rehomed] %s to %s\\n because %s\\n from %p\\n to %p`,\n before.debugType,\n before.specifier,\n after.specifier,\n reason,\n before.fromFile,\n after.fromFile\n );\n } else {\n debug(`[%s:aliased] %s to %s\\n because %s`, before.debugType, before.specifier, after.specifier, reason);\n }\n } else if (before.fromFile !== after.fromFile) {\n debug(\n `[%s:rehomed] %s, because %s\\n from %p\\n to %p`,\n before.debugType,\n before.specifier,\n reason,\n before.fromFile,\n after.fromFile\n );\n } else if (after.isNotFound) {\n debug(`[%s:not-found] %s because %s\\n in %p`, before.debugType, before.specifier, reason, before.fromFile);\n } else {\n debug(`[%s:unchanged] %s because %s\\n in %p`, before.debugType, before.specifier, reason, before.fromFile);\n }\n return after;\n}\n\nfunction isTerminal(request: ModuleRequest): boolean {\n return request.isVirtual || request.isNotFound || Boolean(request.resolvedTo);\n}\n\nexport interface Options {\n renamePackages: {\n [fromName: string]: string;\n };\n renameModules: {\n [fromName: string]: string;\n };\n resolvableExtensions: string[];\n appRoot: string;\n engines: EngineConfig[];\n modulePrefix: string;\n splitAtRoutes?: (RegExp | string)[];\n podModulePrefix?: string;\n amdCompatibility: Required<UserOptions['amdCompatibility']>;\n autoRun: boolean;\n staticAppPaths: string[];\n emberVersion: string;\n}\n\n// TODO: once we can remove the stage2 entrypoint this type can get streamlined\n// to the parts we actually need\nexport interface EngineConfig {\n packageName: string;\n activeAddons: { name: string; root: string; canResolveFromFile: string }[];\n fastbootFiles: { [appName: string]: { localFilename: string; shadowedFilename: string | undefined } };\n root: string;\n isLazy: boolean;\n}\n\ntype MergeEntry =\n | {\n type: 'app-only';\n 'app-js': {\n specifier: string;\n fromFile: string;\n fromPackageName: string;\n };\n }\n | {\n type: 'fastboot-only';\n 'fastboot-js': {\n specifier: string;\n fromFile: string;\n fromPackageName: string;\n };\n }\n | {\n type: 'both';\n 'app-js': {\n specifier: string;\n fromFile: string;\n fromPackageName: string;\n };\n 'fastboot-js': {\n specifier: string;\n fromFile: string;\n fromPackageName: string;\n };\n };\n\ntype MergeMap = Map</* engine root dir */ string, Map</* withinEngineModuleName */ string, MergeEntry>>;\n\nconst compatPattern = /@embroider\\/virtual\\/(?<type>[^\\/]+)\\/(?<rest>.*)/;\n\nexport interface ModuleRequest<Res extends Resolution = Resolution> {\n readonly specifier: string;\n readonly fromFile: string;\n readonly isVirtual: boolean;\n readonly meta: Record<string, unknown> | undefined;\n readonly debugType: string;\n readonly isNotFound: boolean;\n readonly resolvedTo: Res | undefined;\n alias(newSpecifier: string): this;\n rehome(newFromFile: string): this;\n virtualize(virtualFilename: string): this;\n withMeta(meta: Record<string, any> | undefined): this;\n notFound(): this;\n defaultResolve(): Promise<Res>;\n resolveTo(resolution: Res): this;\n}\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; isVirtual: boolean; result: T }\n\n // used for requests that are special and don't represent real files that\n // embroider can possibly do anything custom with.\n //\n // the motivating use case for introducing this is Vite's depscan which marks\n // almost everything as \"external\" as a way to tell esbuild to stop traversing\n // once it has been seen the first time.\n | { type: 'ignored'; 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 class Resolver {\n constructor(readonly options: Options) {}\n\n private async beforeResolve<R extends ModuleRequest>(request: R): Promise<R> {\n if (request.specifier === '@embroider/macros') {\n // the macros package is always handled directly within babel (not\n // necessarily as a real resolvable package), so we should not mess with it.\n // It might not get compiled away until *after* our plugin has run, which is\n // why we need to know about it.\n return logTransition('early exit', request);\n }\n\n if (request.specifier === 'require') {\n return this.external('early require', request, request.specifier);\n }\n\n request = this.handleFastbootSwitch(request);\n request = await this.handleGlobalsCompat(request);\n request = this.handleImplicitModules(request);\n request = this.handleImplicitTestScripts(request);\n request = this.handleVendorStyles(request);\n request = this.handleTestSupportStyles(request);\n request = this.handleEntrypoint(request);\n request = this.handleRouteEntrypoint(request);\n request = this.handleRenaming(request);\n request = this.handleVendor(request);\n // we expect the specifier to be app relative at this point - must be after handleRenaming\n request = this.generateFastbootSwitch(request);\n request = this.preHandleExternal(request);\n\n // this should probably stay the last step in beforeResolve, because it can\n // rehome requests to their un-rewritten locations, and for the most part we\n // want to be dealing with the rewritten packages.\n request = this.handleRewrittenPackages(request);\n return request;\n }\n\n // This encapsulates the whole resolving process. Given a `defaultResolve`\n // that calls your build system's normal module resolver, this does both pre-\n // and post-resolution adjustments as needed to implement our compatibility\n // rules.\n async resolve<ResolveResolution extends Resolution>(\n request: ModuleRequest<ResolveResolution>\n ): Promise<ResolveResolution> {\n request = await this.beforeResolve(request);\n if (request.resolvedTo) {\n return request.resolvedTo;\n }\n\n let resolution = await request.defaultResolve();\n\n switch (resolution.type) {\n case 'found':\n case 'ignored':\n return resolution;\n case 'not_found':\n break;\n default:\n throw assertNever(resolution);\n }\n let nextRequest = await this.fallbackResolve(request);\n if (nextRequest === request) {\n // no additional fallback is available.\n return resolution;\n }\n\n if (nextRequest.resolvedTo) {\n return nextRequest.resolvedTo;\n }\n\n if (nextRequest.fromFile === request.fromFile && nextRequest.specifier === request.specifier) {\n throw new Error(\n 'Bug Discovered! New request is not === original request but has the same fromFile and specifier. This will likely create a loop.'\n );\n }\n\n if (nextRequest.isVirtual || nextRequest.isNotFound) {\n // virtual and NotFound requests are terminal, there is no more\n // beforeResolve or fallbackResolve around them. The defaultResolve is\n // expected to know how to implement them.\n return nextRequest.defaultResolve();\n }\n\n return this.resolve(nextRequest);\n }\n\n // Use standard NodeJS resolving, with our required compatibility rules on\n // top. This is a convenience method for calling resolveSync with the\n // defaultResolve already configured to be \"do the normal node thing\".\n async nodeResolve(\n specifier: string,\n fromFile: string\n ): Promise<\n | { type: 'virtual'; filename: string; content: string }\n | { type: 'real'; filename: string }\n | { type: 'not_found'; err: Error }\n > {\n return nodeResolve(this, specifier, fromFile);\n }\n\n get packageCache() {\n return RewrittenPackageCache.shared('embroider', this.options.appRoot);\n }\n\n private logicalPackage(owningPackage: V2Package, file: string): V2Package {\n let logicalLocation = this.reverseSearchAppTree(owningPackage, file);\n if (logicalLocation) {\n let pkg = this.packageCache.get(logicalLocation.owningEngine.root);\n if (!pkg.isV2Ember()) {\n throw new Error(`bug: all engines should be v2 addons by the time we see them here`);\n }\n return pkg;\n }\n return owningPackage;\n }\n\n private generateFastbootSwitch<R extends ModuleRequest>(request: R): R {\n if (isTerminal(request)) {\n return request;\n }\n let pkg = this.packageCache.ownerOfFile(request.fromFile);\n\n if (!pkg) {\n return request;\n }\n\n if (packageName(request.specifier)) {\n // not a relative request, and we're assuming all within-engine requests\n // are relative by this point due to `v1 self-import` which happens\n // earlier\n return request;\n }\n\n let engineConfig = this.engineConfig(pkg.name);\n let appRelativePath = explicitRelative(pkg.root, resolve(dirname(request.fromFile), request.specifier));\n if (engineConfig) {\n for (let candidate of this.withResolvableExtensions(appRelativePath)) {\n let fastbootFile = engineConfig.fastbootFiles[candidate];\n if (fastbootFile) {\n if (fastbootFile.shadowedFilename) {\n let { names } = describeExports(readFileSync(resolve(pkg.root, fastbootFile.shadowedFilename), 'utf8'), {\n configFile: false,\n });\n let switchFile = fastbootSwitch(candidate, resolve(pkg.root, 'package.json'), names);\n if (switchFile === request.fromFile) {\n return logTransition('internal lookup from fastbootSwitch', request);\n } else {\n return logTransition('shadowed app fastboot', request, request.virtualize(switchFile));\n }\n } else {\n return logTransition(\n 'unshadowed app fastboot',\n request,\n request.alias(fastbootFile.localFilename).rehome(resolve(pkg.root, 'package.json'))\n );\n }\n }\n }\n }\n\n return request;\n }\n\n private handleFastbootSwitch<R extends ModuleRequest>(request: R): R {\n if (isTerminal(request)) {\n return request;\n }\n let match = decodeFastbootSwitch(request.fromFile);\n if (!match) {\n return request;\n }\n\n let section: 'app-js' | 'fastboot-js' | undefined;\n if (request.specifier === './browser') {\n section = 'app-js';\n } else if (request.specifier === './fastboot') {\n section = 'fastboot-js';\n }\n\n if (!section) {\n return logTransition('non-special import in fastboot switch', request);\n }\n\n let pkg = this.packageCache.ownerOfFile(match.filename);\n if (pkg) {\n let rel = explicitRelative(pkg.root, match.filename);\n\n let engineConfig = this.engineConfig(pkg.name);\n if (engineConfig) {\n let fastbootFile = engineConfig.fastbootFiles[rel];\n if (fastbootFile && fastbootFile.shadowedFilename) {\n let targetFile: string;\n if (section === 'app-js') {\n targetFile = fastbootFile.shadowedFilename;\n } else {\n targetFile = fastbootFile.localFilename;\n }\n return logTransition(\n 'matched app entry',\n request,\n // deliberately not using rehome because we want\n // generateFastbootSwitch to see that this request is coming *from*\n // a fastboot switch so it won't cycle back around. Instead we make\n // the targetFile relative to the fromFile that we already have.\n request.alias(explicitRelative(dirname(request.fromFile), resolve(pkg.root, targetFile)))\n );\n }\n }\n\n let entry = this.getEntryFromMergeMap(rel, pkg.root)?.entry;\n if (entry?.type === 'both') {\n return logTransition(\n 'matched addon entry',\n request,\n request.alias(entry[section].specifier).rehome(entry[section].fromFile)\n );\n }\n }\n\n return logTransition('failed to match in fastboot switch', request);\n }\n\n private handleImplicitModules<R extends ModuleRequest>(request: R): R {\n if (isTerminal(request)) {\n return request;\n }\n let im = decodeImplicitModules(request.specifier);\n if (!im) {\n return request;\n }\n\n let pkg = this.packageCache.ownerOfFile(request.fromFile);\n if (!pkg?.isV2Ember()) {\n throw new Error(`bug: found implicit modules import in non-ember package at ${request.fromFile}`);\n }\n\n let packageName = getPackageName(im.fromFile);\n if (packageName) {\n let dep = this.packageCache.resolve(packageName, pkg);\n return logTransition(\n `dep's implicit modules`,\n request,\n request.virtualize(resolve(dep.root, `-embroider-${im.type}.js`))\n );\n } else {\n return logTransition(\n `own implicit modules`,\n request,\n request.virtualize(resolve(pkg.root, `-embroider-${im.type}.js`))\n );\n }\n }\n\n private handleEntrypoint<R extends ModuleRequest>(request: R): R {\n if (isTerminal(request)) {\n return request;\n }\n\n //TODO move the extra forwardslash handling out into the vite plugin\n const candidates = ['@embroider/core/entrypoint', '/@embroider/core/entrypoint', './@embroider/core/entrypoint'];\n\n if (!candidates.some(c => request.specifier.startsWith(c + '/') || request.specifier === c)) {\n return request;\n }\n\n const result = /\\.?\\/?@embroider\\/core\\/entrypoint(?:\\/(?<packageName>.*))?/.exec(request.specifier);\n\n if (!result) {\n // TODO make a better error\n throw new Error('entrypoint does not match pattern' + request.specifier);\n }\n\n const { packageName } = result.groups!;\n\n const requestingPkg = this.packageCache.ownerOfFile(request.fromFile);\n\n if (!requestingPkg?.isV2Ember()) {\n throw new Error(`bug: found entrypoint import in non-ember package at ${request.fromFile}`);\n }\n\n let pkg;\n\n if (packageName) {\n pkg = this.packageCache.resolve(packageName, requestingPkg);\n } else {\n pkg = requestingPkg;\n }\n let matched = resolveExports(pkg.packageJSON, '-embroider-entrypoint.js', {\n browser: true,\n conditions: ['default', 'imports'],\n });\n return logTransition(\n 'entrypoint',\n request,\n request.virtualize(resolve(pkg.root, matched?.[0] ?? '-embroider-entrypoint.js'))\n );\n }\n\n private handleRouteEntrypoint<R extends ModuleRequest>(request: R): R {\n if (isTerminal(request)) {\n return request;\n }\n\n let routeName = decodePublicRouteEntrypoint(request.specifier);\n\n if (!routeName) {\n return request;\n }\n\n let pkg = this.packageCache.ownerOfFile(request.fromFile);\n\n if (!pkg?.isV2Ember()) {\n throw new Error(`bug: found entrypoint import in non-ember package at ${request.fromFile}`);\n }\n\n let matched = resolveExports(pkg.packageJSON, '-embroider-route-entrypoint.js', {\n browser: true,\n conditions: ['default', 'imports'],\n });\n\n return logTransition(\n 'route entrypoint',\n request,\n request.virtualize(encodeRouteEntrypoint(pkg.root, matched?.[0], routeName))\n );\n }\n\n private handleImplicitTestScripts<R extends ModuleRequest>(request: R): R {\n //TODO move the extra forwardslash handling out into the vite plugin\n const candidates = [\n '@embroider/core/test-support.js',\n '/@embroider/core/test-support.js',\n './@embroider/core/test-support.js',\n ];\n\n if (!candidates.includes(request.specifier)) {\n return request;\n }\n\n let pkg = this.packageCache.ownerOfFile(request.fromFile);\n if (pkg?.root !== this.options.engines[0].root) {\n throw new Error(\n `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/core/test-support.js. If you think something should be fixed in Embroider, please open an issue on https://github.com/embroider-build/embroider/issues.`\n );\n }\n\n return logTransition('test-support', request, request.virtualize(resolve(pkg.root, '-embroider-test-support.js')));\n }\n\n private handleTestSupportStyles<R extends ModuleRequest>(request: R): R {\n //TODO move the extra forwardslash handling out into the vite plugin\n const candidates = [\n '@embroider/core/test-support.css',\n '/@embroider/core/test-support.css',\n './@embroider/core/test-support.css',\n ];\n\n if (!candidates.includes(request.specifier)) {\n return request;\n }\n\n let pkg = this.packageCache.ownerOfFile(request.fromFile);\n if (pkg?.root !== this.options.engines[0].root) {\n throw new Error(\n `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/core/test-support.css. If you think something should be fixed in Embroider, please open an issue on https://github.com/embroider-build/embroider/issues.`\n );\n }\n\n return logTransition(\n 'test-support-styles',\n request,\n request.virtualize(resolve(pkg.root, '-embroider-test-support-styles.css'))\n );\n }\n\n private async handleGlobalsCompat<R extends ModuleRequest>(request: R): Promise<R> {\n if (isTerminal(request)) {\n return request;\n }\n let match = compatPattern.exec(request.specifier);\n if (!match) {\n return request;\n }\n let { type, rest } = match.groups!;\n let fromPkg = this.packageCache.ownerOfFile(request.fromFile);\n if (!fromPkg?.isV2Ember()) {\n return request;\n }\n let engine = this.owningEngine(fromPkg);\n\n switch (type) {\n case 'helpers':\n return this.resolveHelper(rest, engine, request);\n case 'components':\n return this.resolveComponent(rest, engine, request);\n case 'modifiers':\n return this.resolveModifier(rest, engine, request);\n case 'ambiguous':\n return this.resolveHelperOrComponent(rest, engine, request);\n default:\n throw new Error(`bug: unexepected @embroider/virtual specifier: ${request.specifier}`);\n }\n }\n\n private handleVendorStyles<R extends ModuleRequest>(request: R): R {\n //TODO move the extra forwardslash handling out into the vite plugin\n const candidates = ['@embroider/core/vendor.css', '/@embroider/core/vendor.css', './@embroider/core/vendor.css'];\n\n if (!candidates.includes(request.specifier)) {\n return request;\n }\n\n let pkg = this.packageCache.ownerOfFile(request.fromFile);\n if (!pkg || !this.options.engines.some(e => e.root === pkg?.root)) {\n throw new Error(\n `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/core/vendor.css. If you think something should be fixed in Embroider, please open an issue on https://github.com/embroider-build/embroider/issues.`\n );\n }\n\n return logTransition(\n 'vendor-styles',\n request,\n request.virtualize(resolve(pkg.root, '-embroider-vendor-styles.css'))\n );\n }\n\n private resolveHelper<R extends ModuleRequest>(path: string, inEngine: EngineConfig, request: R): R {\n let target = this.parseGlobalPath(path, inEngine);\n return logTransition(\n 'resolveHelper',\n request,\n request.alias(`${target.packageName}/helpers/${target.memberName}`).rehome(resolve(inEngine.root, 'package.json'))\n );\n }\n\n private async resolveComponent<R extends ModuleRequest>(\n path: string,\n inEngine: EngineConfig,\n request: R\n ): Promise<R> {\n let target = this.parseGlobalPath(path, inEngine);\n\n let hbsModule: Resolution | null = null;\n let jsModule: Resolution | null = null;\n\n // first, the various places our template might be.\n for (let candidate of this.componentTemplateCandidates(target.packageName)) {\n let candidateSpecifier = `${target.packageName}${candidate.prefix}${target.memberName}${candidate.suffix}`;\n\n let resolution = await this.resolve(\n request.alias(candidateSpecifier).rehome(target.from).withMeta({\n runtimeFallback: false,\n })\n );\n\n if (resolution.type === 'found') {\n hbsModule = resolution;\n break;\n }\n }\n\n // then the various places our javascript might be.\n for (let candidate of this.componentJSCandidates(target.packageName)) {\n let candidateSpecifier = `${target.packageName}${candidate.prefix}${target.memberName}${candidate.suffix}`;\n\n let resolution = await this.resolve(\n request.alias(candidateSpecifier).rehome(target.from).withMeta({\n runtimeFallback: false,\n })\n );\n\n if (resolution.type === 'ignored') {\n return logTransition(`resolving to ignored component`, request, request.resolveTo(resolution));\n }\n\n // .hbs is a resolvable extension for us, so we need to exclude it here.\n // It matches as a priority lower than .js, so finding an .hbs means\n // there's definitely not a .js.\n if (resolution.type === 'found' && !resolution.filename.endsWith('.hbs')) {\n jsModule = resolution;\n break;\n }\n }\n\n if (hbsModule) {\n return logTransition(\n `resolveComponent found legacy HBS`,\n request,\n request.virtualize(virtualPairComponent(hbsModule.filename, jsModule?.filename))\n );\n } else if (jsModule) {\n return logTransition(`resolving to resolveComponent found only JS`, request, request.resolveTo(jsModule));\n } else {\n return logTransition(`resolveComponent failed`, request);\n }\n }\n\n private async resolveHelperOrComponent<R extends ModuleRequest>(\n path: string,\n inEngine: EngineConfig,\n request: R\n ): Promise<R> {\n // resolveHelper just rewrites our request to one that should target the\n // component, so here to resolve the ambiguity we need to actually resolve\n // that candidate to see if it works.\n let helperCandidate = this.resolveHelper(path, inEngine, request);\n let helperMatch = await this.resolve(\n request.alias(helperCandidate.specifier).rehome(helperCandidate.fromFile).withMeta({\n runtimeFallback: false,\n })\n );\n\n // for the case of 'ignored' that means that esbuild found this helper in an external\n // package so it should be considered found in this case and we should not look for a\n // component with this name\n if (helperMatch.type === 'found' || helperMatch.type === 'ignored') {\n return logTransition('resolve to ambiguous case matched a helper', request, request.resolveTo(helperMatch));\n }\n\n // unlike resolveHelper, resolveComponent already does pre-resolution in\n // order to deal with its own internal ambiguity around JS vs HBS vs\n // colocation.≥\n let componentMatch = await this.resolveComponent(path, inEngine, request);\n if (componentMatch !== request) {\n return logTransition('ambiguous case matched a cmoponent', request, componentMatch);\n }\n\n // this is the hard failure case -- we were supposed to find something and\n // didn't. Let the normal resolution process progress so the user gets a\n // normal build error.\n return logTransition('ambiguous case failing', request);\n }\n\n private resolveModifier<R extends ModuleRequest>(path: string, inEngine: EngineConfig, request: R): R {\n let target = this.parseGlobalPath(path, inEngine);\n return logTransition(\n 'resolveModifier',\n request,\n request\n .alias(`${target.packageName}/modifiers/${target.memberName}`)\n .rehome(resolve(inEngine.root, 'package.json'))\n );\n }\n\n private *componentTemplateCandidates(inPackageName: string) {\n yield { prefix: '/templates/components/', suffix: '' };\n yield { prefix: '/components/', suffix: '/template' };\n\n let pods = this.podPrefix(inPackageName);\n if (pods) {\n yield { prefix: `${pods}/components/`, suffix: '/template' };\n }\n }\n\n private *componentJSCandidates(inPackageName: string) {\n yield { prefix: '/components/', suffix: '' };\n yield { prefix: '/components/', suffix: '/index' };\n yield { prefix: '/components/', suffix: '/component' };\n\n let pods = this.podPrefix(inPackageName);\n if (pods) {\n yield { prefix: `${pods}/components/`, suffix: '/component' };\n }\n }\n\n private podPrefix(targetPackageName: string) {\n if (targetPackageName === this.options.modulePrefix && this.options.podModulePrefix) {\n if (!this.options.podModulePrefix.startsWith(this.options.modulePrefix)) {\n throw new Error(\n `Your podModulePrefix (${this.options.podModulePrefix}) does not start with your app module prefix (${this.options.modulePrefix}). Not gonna support that silliness.`\n );\n }\n return this.options.podModulePrefix.slice(this.options.modulePrefix.length);\n }\n }\n\n // for paths that come from non-strict templates\n private parseGlobalPath(path: string, inEngine: EngineConfig) {\n let parts = path.split('@');\n if (parts.length > 1 && parts[0].length > 0) {\n return { packageName: parts[0], memberName: parts[1], from: resolve(inEngine.root, 'package.json') };\n } else {\n return { packageName: inEngine.packageName, memberName: path, from: resolve(inEngine.root, 'package.json') };\n }\n }\n\n private engineConfig(packageName: string): EngineConfig | undefined {\n return this.options.engines.find(e => e.packageName === packageName);\n }\n\n // This is where we figure out how all the classic treeForApp merging bottoms\n // out.\n @Memoize()\n private get mergeMap(): MergeMap {\n let result: MergeMap = new Map();\n for (let engine of this.options.engines) {\n let engineModules: Map<string, MergeEntry> = new Map();\n for (let addonConfig of engine.activeAddons) {\n let addon = this.packageCache.get(addonConfig.root);\n if (!addon.isV2Addon()) {\n continue;\n }\n\n let appJS = addon.meta['app-js'];\n if (appJS) {\n for (let [inEngineName, inAddonName] of Object.entries(appJS)) {\n if (!inEngineName.startsWith('./')) {\n throw new Error(\n `addon ${addon.name} declares app-js in its package.json with the illegal name \"${inEngineName}\". It must start with \"./\" to make it clear that it's relative to the app`\n );\n }\n if (!inAddonName.startsWith('./')) {\n throw new Error(\n `addon ${addon.name} declares app-js in its package.json with the illegal name \"${inAddonName}\". It must start with \"./\" to make it clear that it's relative to the addon`\n );\n }\n let specifier = externalName(addon.packageJSON, inAddonName);\n if (!specifier) {\n throw new Error(\n `${addon.name}'s package.json app-js refers to ${inAddonName}, but that module is not accessible from outside the package`\n );\n }\n let prevEntry = engineModules.get(inEngineName);\n switch (prevEntry?.type) {\n case undefined:\n engineModules.set(inEngineName, {\n type: 'app-only',\n 'app-js': {\n specifier,\n fromFile: addonConfig.canResolveFromFile,\n fromPackageName: addon.name,\n },\n });\n break;\n case 'app-only':\n case 'both':\n // first match wins, so this one is shadowed\n break;\n case 'fastboot-only':\n engineModules.set(inEngineName, {\n type: 'both',\n 'app-js': {\n specifier,\n fromFile: addonConfig.canResolveFromFile,\n fromPackageName: addon.name,\n },\n 'fastboot-js': prevEntry['fastboot-js'],\n });\n break;\n }\n }\n }\n\n let fastbootJS = addon.meta['fastboot-js'];\n if (fastbootJS) {\n for (let [inEngineName, inAddonName] of Object.entries(fastbootJS)) {\n if (!inEngineName.startsWith('./')) {\n throw new Error(\n `addon ${addon.name} declares fastboot-js in its package.json with the illegal name \"${inEngineName}\". It must start with \"./\" to make it clear that it's relative to the app`\n );\n }\n if (!inAddonName.startsWith('./')) {\n throw new Error(\n `addon ${addon.name} declares fastboot-js in its package.json with the illegal name \"${inAddonName}\". It must start with \"./\" to make it clear that it's relative to the addon`\n );\n }\n let specifier = externalName(addon.packageJSON, inAddonName);\n if (!specifier) {\n throw new Error(\n `${addon.name}'s package.json fastboot-js refers to ${inAddonName}, but that module is not accessible from outside the package`\n );\n }\n let prevEntry = engineModules.get(inEngineName);\n switch (prevEntry?.type) {\n case undefined:\n engineModules.set(inEngineName, {\n type: 'fastboot-only',\n 'fastboot-js': {\n specifier,\n fromFile: addonConfig.canResolveFromFile,\n fromPackageName: addon.name,\n },\n });\n break;\n case 'fastboot-only':\n case 'both':\n // first match wins, so this one is shadowed\n break;\n case 'app-only':\n engineModules.set(inEngineName, {\n type: 'both',\n 'fastboot-js': {\n specifier,\n fromFile: addonConfig.canResolveFromFile,\n fromPackageName: addon.name,\n },\n 'app-js': prevEntry['app-js'],\n });\n break;\n }\n }\n }\n }\n result.set(engine.root, engineModules);\n }\n return result;\n }\n\n owningEngine(pkg: Package) {\n let owningEngine = this.options.engines.find(e =>\n pkg.isEngine() ? e.root === pkg.root : e.activeAddons.find(a => a.root === pkg.root)\n );\n if (!owningEngine) {\n throw new Error(\n `bug in @embroider/core/src/module-resolver: cannot figure out the owning engine for ${pkg.root}`\n );\n }\n return owningEngine;\n }\n\n private handleRewrittenPackages<R extends ModuleRequest>(request: R): R {\n if (isTerminal(request)) {\n return request;\n }\n let requestingPkg = this.packageCache.ownerOfFile(request.fromFile);\n if (!requestingPkg) {\n return request;\n }\n let packageName = getPackageName(request.specifier);\n if (!packageName) {\n // relative request\n return request;\n }\n\n let targetPkg: Package | undefined;\n if (packageName !== requestingPkg.name) {\n // non-relative, non-self request, so check if it aims at a rewritten addon\n try {\n targetPkg = this.packageCache.resolve(packageName, requestingPkg);\n } catch (err) {\n if (err.code !== 'MODULE_NOT_FOUND') {\n throw err;\n }\n }\n }\n\n let originalRequestingPkg = this.packageCache.original(requestingPkg);\n let originalTargetPkg = targetPkg ? this.packageCache.original(targetPkg) : undefined;\n\n if (targetPkg && originalTargetPkg !== targetPkg) {\n // in this case it doesn't matter whether or not the requesting package\n // was moved. RewrittenPackageCache.resolve already took care of finding\n // the right target, and we redirect the request so it will look inside\n // that target.\n return logTransition(\n 'request targets a moved package',\n request,\n this.resolveWithinMovedPackage(request, targetPkg)\n );\n } else if (originalRequestingPkg !== requestingPkg) {\n if (targetPkg) {\n // in this case, the requesting package is moved but its destination is\n // not, so we need to rehome the request back to the original location.\n return logTransition(\n 'outbound request from moved package',\n request,\n request\n // setting meta here because if this fails, we want the fallback\n // logic to revert our rehome and continue from the *moved* package.\n .withMeta({ originalFromFile: request.fromFile })\n .rehome(resolve(originalRequestingPkg.root, 'package.json'))\n );\n } else {\n // requesting package was moved and we failed to find its target. We\n // can't let that accidentally succeed in the defaultResolve because we\n // could escape the moved package system.\n return logTransition('missing outbound request from moved package', request, request.notFound());\n }\n }\n\n return request;\n }\n\n private handleRenaming<R extends ModuleRequest>(request: R): R {\n if (isTerminal(request)) {\n return request;\n }\n let packageName = getPackageName(request.specifier);\n if (!packageName) {\n return request;\n }\n\n let pkg = this.packageCache.ownerOfFile(request.fromFile);\n\n // real deps take precedence over renaming rules. That is, a package like\n // ember-source might provide backburner via module renaming, but if you\n // have an explicit dependency on backburner you should still get that real\n // copy.\n\n if (!pkg?.hasDependency(packageName)) {\n for (let [candidate, replacement] of Object.entries(this.options.renameModules)) {\n if (candidate === request.specifier) {\n return logTransition(`renameModules`, request, request.alias(replacement));\n }\n for (let extension of this.options.resolvableExtensions) {\n if (candidate === request.specifier + '/index' + extension) {\n return logTransition(`renameModules`, request, request.alias(replacement));\n }\n if (candidate === request.specifier + extension) {\n return logTransition(`renameModules`, request, request.alias(replacement));\n }\n }\n }\n\n if (this.options.renamePackages[packageName]) {\n return logTransition(\n `renamePackages`,\n request,\n request.alias(request.specifier.replace(packageName, this.options.renamePackages[packageName]))\n );\n }\n }\n\n if (!pkg || !pkg.isV2Ember()) {\n return request;\n }\n\n if (pkg.name === packageName) {\n // we found a self-import\n if (pkg.meta['auto-upgraded']) {\n // auto-upgraded packages always get automatically adjusted. They never\n // supported fancy package.json exports features so this direct mapping\n // to the root is always right.\n\n // \"my-app/foo\" -> \"./foo\" from app's package.json\n // \"my-addon/foo\" -> \"my-addon/foo\" from a package that's guaranteed to be able to resolve my-addon\n\n let owningEngine = this.owningEngine(pkg);\n let addonConfig = owningEngine.activeAddons.find(a => a.root === pkg.root);\n if (addonConfig) {\n // auto-upgraded addons get special support for self-resolving here.\n return logTransition(`v1 addon self-import`, request, request.rehome(addonConfig.canResolveFromFile));\n } else {\n // auto-upgraded apps will necessarily have packageJSON.exports\n // because we insert them, so for that support we can fall through to\n // that support below.\n }\n }\n\n // v2 packages are supposed to use package.json `exports` to enable\n // self-imports, but not all build tools actually follow the spec. This\n // is a workaround for badly behaved packagers.\n //\n // Known upstream bugs this works around:\n // - https://github.com/vitejs/vite/issues/9731\n if (pkg.packageJSON.exports) {\n let found = resolveExports(pkg.packageJSON, request.specifier, {\n browser: true,\n conditions: ['default', 'imports'],\n });\n if (found?.[0]) {\n return logTransition(\n `v2 self-import with package.json exports`,\n request,\n request.alias(found?.[0]).rehome(resolve(pkg.root, 'package.json'))\n );\n }\n }\n }\n\n return request;\n }\n\n private handleVendor<R extends ModuleRequest>(request: R): R {\n //TODO move the extra forwardslash handling out into the vite plugin\n const candidates = ['@embroider/core/vendor.js', '/@embroider/core/vendor.js', './@embroider/core/vendor.js'];\n\n if (!candidates.includes(request.specifier)) {\n return request;\n }\n\n let pkg = this.packageCache.ownerOfFile(request.fromFile);\n if (pkg?.root !== this.options.engines[0].root) {\n throw new Error(\n `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/core/vendor.js. If you think something should be fixed in Embroider, please open an issue on https://github.com/embroider-build/embroider/issues.`\n );\n }\n\n return logTransition('vendor', request, request.virtualize(resolve(pkg.root, '-embroider-vendor.js')));\n }\n\n private resolveWithinMovedPackage<R extends ModuleRequest>(request: R, pkg: Package): R {\n let levels = ['..'];\n if (pkg.name.startsWith('@')) {\n levels.push('..');\n }\n let originalFromFile = request.fromFile;\n let newRequest = request.rehome(resolve(pkg.root, ...levels, 'moved-package-target.js'));\n\n if (newRequest === request) {\n return request;\n }\n\n // setting meta because if this fails, we want the fallback to pick up back\n // in the original requesting package.\n return newRequest.withMeta({ originalFromFile });\n }\n\n private preHandleExternal<R extends ModuleRequest>(request: R): R {\n if (isTerminal(request)) {\n return request;\n }\n let { specifier, fromFile } = request;\n let pkg = this.packageCache.ownerOfFile(fromFile);\n if (!pkg || !pkg.isV2Ember()) {\n return request;\n }\n\n let packageName = getPackageName(specifier);\n if (!packageName) {\n // This is a relative import. We don't automatically externalize those\n // because it's rare, and by keeping them static we give better errors. But\n // we do allow them to be explicitly externalized by the package author (or\n // a compat adapter). In the metadata, they would be listed in\n // package-relative form, so we need to convert this specifier to that.\n let absoluteSpecifier = resolve(dirname(fromFile), specifier);\n\n if (!absoluteSpecifier.startsWith(pkg.root)) {\n // this relative path escape its package. So it's not really using\n // normal inter-package resolving and we should leave it alone. This\n // case comes up especially when babel transforms are trying to insert\n // references to runtime utilities, like we do in @embroider/macros.\n return logTransition('beforeResolve: relative path escapes its package', request);\n }\n\n let packageRelativeSpecifier = explicitRelative(pkg.root, absoluteSpecifier);\n if (isExplicitlyExternal(packageRelativeSpecifier, pkg)) {\n let publicSpecifier = absoluteSpecifier.replace(pkg.root, pkg.name);\n return this.external('beforeResolve', request, publicSpecifier);\n }\n\n // if the requesting file is in an addon's app-js, the relative request\n // should really be understood as a request for a module in the containing\n // engine.\n let logicalLocation = this.reverseSearchAppTree(pkg, request.fromFile);\n if (logicalLocation) {\n return logTransition(\n 'beforeResolve: relative import in app-js',\n request,\n request.alias(\n posix.join(logicalLocation.owningEngine.packageName, dirname(logicalLocation.inAppName), request.specifier)\n )\n );\n }\n\n return request;\n }\n\n // absolute package imports can also be explicitly external based on their\n // full specifier name\n if (isExplicitlyExternal(specifier, pkg)) {\n return this.external('beforeResolve', request, specifier);\n }\n\n if (emberVirtualPackages.has(packageName) && !pkg.hasDependency(packageName)) {\n return this.external('beforeResolve emberVirtualPackages', request, specifier);\n }\n\n if (emberVirtualPeerDeps.has(packageName) && !pkg.hasDependency(packageName)) {\n // addons (whether auto-upgraded or not) may use the app's\n // emberVirtualPeerDeps, like \"@glimmer/component\" etc.\n let addon = this.locateActiveAddon(packageName);\n if (!addon) {\n throw new Error(\n `${pkg.name} is trying to import the emberVirtualPeerDep \"${packageName}\", but it seems to be missing`\n );\n }\n return logTransition(`emberVirtualPeerDeps`, request, request.rehome(addon.canResolveFromFile));\n }\n\n // if this file is part of an addon's app-js, it's really the logical\n // package to which it belongs (normally the app) that affects some policy\n // choices about what it can import\n let logicalPackage = this.logicalPackage(pkg, fromFile);\n\n if (logicalPackage.meta['auto-upgraded'] && !logicalPackage.hasDependency('ember-auto-import')) {\n try {\n let dep = this.packageCache.resolve(packageName, logicalPackage);\n if (!dep.isEmberAddon()) {\n // classic ember addons can only import non-ember dependencies if they\n // have ember-auto-import.\n return this.external('v1 package without auto-import', request, specifier);\n }\n } catch (err) {\n if (err.code !== 'MODULE_NOT_FOUND') {\n throw err;\n }\n }\n }\n\n // assertions on what native v2 addons can import\n if (\n !pkg.needsLooseResolving() &&\n !appImportInAppTree(pkg, logicalPackage, packageName) &&\n !reliablyResolvable(pkg, packageName)\n ) {\n throw new Error(\n `${pkg.name} is trying to import from ${packageName} but that is not one of its explicit dependencies`\n );\n }\n\n return request;\n }\n\n private locateActiveAddon(packageName: string): { root: string; canResolveFromFile: string } | undefined {\n if (packageName === this.options.modulePrefix) {\n // the app itself is something that addon's can classically resolve if they know it's name.\n return {\n root: this.options.appRoot,\n canResolveFromFile: resolve(\n this.packageCache.maybeMoved(this.packageCache.get(this.options.appRoot)).root,\n 'package.json'\n ),\n };\n }\n for (let engine of this.options.engines) {\n for (let addon of engine.activeAddons) {\n if (addon.name === packageName) {\n return addon;\n }\n }\n }\n }\n\n private external<R extends ModuleRequest>(label: string, request: R, specifier: string): R {\n if (this.options.amdCompatibility === 'cjs') {\n let filename = virtualExternalCJSModule(specifier);\n return logTransition(label, request, request.virtualize(filename));\n } else if (this.options.amdCompatibility) {\n let entry = this.options.amdCompatibility.es.find(\n entry => entry[0] === specifier || entry[0] + '/index' === specifier\n );\n if (!entry && request.specifier === 'require') {\n entry = ['require', ['default', 'has']];\n }\n if (!entry) {\n throw new Error(\n `[${request.debugType}] A module tried to resolve \"${request.specifier}\" and didn't find it (${label}).\n\n - Maybe a dependency declaration is missing?\n - Remember that v1 addons can only import non-Ember-addon NPM dependencies if they include ember-auto-import in their dependencies.\n - If this dependency is available in the AMD loader (because someone manually called \"define()\" for it), you can configure a shim like:\n\n amdCompatibility: {\n es: [\n [\"${request.specifier}\", [\"default\", \"yourNamedExportsGoHere\"]],\n ]\n }\n\n`\n );\n }\n let filename = virtualExternalESModule(specifier, entry[1]);\n return logTransition(label, request, request.virtualize(filename));\n } else {\n throw new Error(\n `Embroider's amdCompatibility option is disabled, but something tried to use it to access \"${request.specifier}\"`\n );\n }\n }\n\n private async fallbackResolve<R extends ModuleRequest>(request: R): Promise<R> {\n if (request.isVirtual) {\n throw new Error(\n 'Build tool bug detected! Fallback resolve should never see a virtual request. It is expected that the defaultResolve for your bundler has already resolved this request'\n );\n }\n\n if (request.specifier === '@embroider/macros') {\n // the macros package is always handled directly within babel (not\n // necessarily as a real resolvable package), so we should not mess with it.\n // It might not get compiled away until *after* our plugin has run, which is\n // why we need to know about it.\n return logTransition('fallback early exit', request);\n }\n\n if (compatPattern.test(request.specifier)) {\n // Some kinds of compat requests get rewritten into other things\n // deterministically. For example, \"@embroider/virtual/helpers/whatever\"\n // means only \"the-current-engine/helpers/whatever\", and if that doesn't\n // actually exist it's that path that will show up as a missing import.\n //\n // But others have an ambiguous meaning. For example,\n // @embroider/virtual/components/whatever can mean several different\n // things. If we're unable to find any of them, the actual\n // \"@embroider/virtual\" request will fall through all the way to here.\n //\n // In that case, we don't want to externalize that failure. We know it's\n // not a classic runtime thing. It's better to let it be a build error\n // here.\n return request;\n }\n\n let pkg = this.packageCache.ownerOfFile(request.fromFile);\n\n if (pkg) {\n ({ pkg, request } = this.restoreRehomedRequest(pkg, request));\n }\n\n if (!pkg?.isV2Ember()) {\n // this request is coming from a file that appears to be owned by no ember\n // package. We offer one fallback behavior for such files. They're allowed\n // to resolve from the app's namespace.\n //\n // This makes it possible for integrations like vite to leave references\n // to the app in their pre-bundled dependencies, which will end up in an\n // arbitrary cache that is not inside any particular package.\n let description = pkg ? 'non-ember package' : 'unowned module';\n\n let packageName = getPackageName(request.specifier);\n if (packageName === this.options.modulePrefix) {\n return logTransition(\n `fallbackResolver: ${description} resolved app namespace`,\n request,\n request.rehome(this.packageCache.maybeMoved(this.packageCache.get(this.options.appRoot)).root)\n );\n }\n return logTransition(`fallbackResolver: ${description}`, request);\n }\n\n let packageName = getPackageName(request.specifier);\n if (!packageName) {\n // this is a relative import\n return this.relativeFallbackResolve(pkg, request);\n }\n\n if (pkg.needsLooseResolving()) {\n let activeAddon = this.maybeFallbackToActiveAddon(request, packageName);\n if (activeAddon) {\n return activeAddon;\n }\n }\n\n let logicalLocation = this.reverseSearchAppTree(pkg, request.fromFile);\n if (logicalLocation) {\n // the requesting file is in an addon's appTree. We didn't succeed in\n // resolving this (non-relative) request from inside the actual addon, so\n // next try to resolve it from the corresponding logical location in the\n // app.\n return logTransition(\n 'fallbackResolve: retry from logical home of app-js file',\n request,\n // it might look more precise to rehome into logicalLocation.inAppName\n // rather than package.json. But that logical location may not actually\n // exist, and some systems (including node's require.resolve) will be\n // mad about trying to resolve from notional paths that don't really\n // exist.\n request.rehome(resolve(logicalLocation.owningEngine.root, 'package.json'))\n );\n }\n\n let targetingEngine = this.engineConfig(packageName);\n if (targetingEngine) {\n let appJSMatch = await this.searchAppTree(request, targetingEngine, request.specifier.replace(packageName, '.'));\n if (appJSMatch) {\n return logTransition('fallbackResolve: non-relative appJsMatch', request, appJSMatch);\n }\n }\n\n if (pkg.needsLooseResolving() && (request.meta?.runtimeFallback ?? true)) {\n // auto-upgraded packages can fall back to attempting to find dependencies at\n // runtime. Native v2 packages can only get this behavior in the\n // isExplicitlyExternal case above because they need to explicitly ask for\n // externals.\n return this.external('v1 catch-all fallback', request, request.specifier);\n } else {\n // native v2 packages don't automatically externalize *everything* the way\n // auto-upgraded packages do, but they still externalize known and approved\n // ember virtual packages (like @ember/component)\n if (emberVirtualPackages.has(packageName)) {\n return this.external('emberVirtualPackages', request, request.specifier);\n }\n }\n\n // this is falling through with the original specifier which was\n // non-resolvable, which will presumably cause a static build error in stage3.\n return logTransition('fallbackResolve final exit', request);\n }\n\n private restoreRehomedRequest<R extends ModuleRequest>(pkg: Package, request: R): { pkg: Package; request: R } {\n // meta.originalFromFile gets set when we want to try to rehome a request\n // but then come back to the original location here in the fallback when the\n // rehomed request fails\n let movedPkg = this.packageCache.maybeMoved(pkg);\n if (movedPkg !== pkg) {\n let originalFromFile = request.meta?.originalFromFile;\n if (typeof originalFromFile !== 'string') {\n throw new Error(`bug: embroider resolver's meta is not propagating`);\n }\n request = request.rehome(originalFromFile);\n pkg = movedPkg;\n }\n return { pkg, request };\n }\n\n private async relativeFallbackResolve<R extends ModuleRequest>(pkg: Package, request: R): Promise<R> {\n let withinEngine = this.engineConfig(pkg.name);\n if (withinEngine) {\n // it's a relative import inside an engine (which also means app), which\n // means we may need to satisfy the request via app tree merging.\n\n let logicalName = engineRelativeName(pkg, resolve(dirname(request.fromFile), request.specifier));\n if (!logicalName) {\n return logTransition(\n 'fallbackResolve: relative failure because this file is not externally accessible',\n request\n );\n }\n let appJSMatch = await this.searchAppTree(request, withinEngine, logicalName);\n if (appJSMatch) {\n return logTransition('fallbackResolve: relative appJsMatch', request, appJSMatch);\n } else {\n return logTransition('fallbackResolve: relative appJs search failure', request);\n }\n } else {\n // nothing else to do for relative imports\n return logTransition('fallbackResolve: relative failure', request);\n }\n }\n\n private maybeFallbackToActiveAddon<R extends ModuleRequest>(request: R, requestedPackageName: string): R | undefined {\n // auto-upgraded packages can fall back to the set of known active addons\n let addon = this.locateActiveAddon(requestedPackageName);\n if (addon) {\n const rehomed = request.rehome(addon.canResolveFromFile);\n if (rehomed !== request) {\n return logTransition(`activeAddons`, request, rehomed);\n }\n }\n }\n\n private getEntryFromMergeMap(\n inEngineSpecifier: string,\n root: string\n ): { entry: MergeEntry; matched: string } | undefined {\n let entry: MergeEntry | undefined;\n for (let candidate of this.withResolvableExtensions(inEngineSpecifier)) {\n entry = this.mergeMap.get(root)?.get(candidate);\n if (entry) {\n return { entry, matched: candidate };\n }\n }\n }\n\n private *withResolvableExtensions(filename: string): Generator<string, void, void> {\n if (filename.match(/\\.(hbs|js|hbs\\.js)$/)) {\n yield filename;\n } else {\n for (let ext of ['.js', '.hbs.js', '.hbs']) {\n yield `${filename}${ext}`;\n }\n }\n }\n\n private async searchAppTree<R extends ModuleRequest>(\n request: R,\n engine: EngineConfig,\n inEngineSpecifier: string\n ): Promise<R | undefined> {\n let matched = this.getEntryFromMergeMap(inEngineSpecifier, engine.root);\n\n switch (matched?.entry.type) {\n case undefined:\n return undefined;\n case 'app-only':\n return request.alias(matched.entry['app-js'].specifier).rehome(matched.entry['app-js'].fromFile);\n case 'fastboot-only':\n return request.alias(matched.entry['fastboot-js'].specifier).rehome(matched.entry['fastboot-js'].fromFile);\n case 'both':\n let foundAppJS = await this.resolve(\n request.alias(matched.entry['app-js'].specifier).rehome(matched.entry['app-js'].fromFile).withMeta({\n runtimeFallback: false,\n })\n );\n if (foundAppJS.type !== 'found') {\n throw new Error(\n `${matched.entry['app-js'].fromPackageName} declared ${inEngineSpecifier} in packageJSON.ember-addon.app-js, but that module does not exist`\n );\n }\n let { names } = describeExports(readFileSync(foundAppJS.filename, 'utf8'), { configFile: false });\n return request.virtualize(fastbootSwitch(matched.matched, resolve(engine.root, 'package.json'), names));\n }\n }\n\n // check whether the given file with the given owningPackage is an addon's\n // appTree, and if so return the notional location within the app (or owning\n // engine) that it \"logically\" lives at.\n private reverseSearchAppTree(\n owningPackage: Package,\n fromFile: string\n ): { owningEngine: EngineConfig; inAppName: string } | undefined {\n // if the requesting file is in an addon's app-js, the request should\n // really be understood as a request for a module in the containing engine\n if (owningPackage.isV2Addon()) {\n let sections = [owningPackage.meta['app-js'], owningPackage.meta['fastboot-js']];\n for (let section of sections) {\n if (section) {\n let fromPackageRelativePath = explicitRelative(owningPackage.root, fromFile);\n for (let [inAppName, inAddonName] of Object.entries(section)) {\n if (inAddonName === fromPackageRelativePath) {\n return { owningEngine: this.owningEngine(owningPackage), inAppName };\n }\n }\n }\n }\n }\n }\n\n // check if this file is resolvable as a global component, and if so return\n // its dasherized name\n reverseComponentLookup(filename: string): string | undefined {\n const owningPackage = this.packageCache.ownerOfFile(filename);\n if (!owningPackage?.isV2Ember()) {\n return;\n }\n let engineConfig = this.options.engines.find(e => e.root === owningPackage.root);\n if (engineConfig) {\n // we're directly inside an engine, so we're potentially resolvable as a\n // global component\n let inAppName = engineRelativeName(owningPackage, filename);\n if (inAppName) {\n return this.tryReverseComponent(engineConfig.packageName, inAppName);\n }\n }\n\n let engineInfo = this.reverseSearchAppTree(owningPackage, filename);\n if (engineInfo) {\n // we're in some addon's app tree, so we're potentially resolvable as a\n // global component\n return this.tryReverseComponent(engineInfo.owningEngine.packageName, engineInfo.inAppName);\n }\n }\n\n private tryReverseComponent(inEngineName: string, relativePath: string): string | undefined {\n let extensionless = relativePath.replace(extensionsPattern(this.options.resolvableExtensions), '');\n let candidates = [...this.componentJSCandidates(inEngineName), ...this.componentTemplateCandidates(inEngineName)];\n for (let candidate of candidates) {\n if (extensionless.startsWith(`.${candidate.prefix}`) && extensionless.endsWith(candidate.suffix)) {\n return extensionless.slice(candidate.prefix.length + 1, extensionless.length - candidate.suffix.length);\n }\n }\n return undefined;\n }\n}\n\nfunction isExplicitlyExternal(specifier: string, fromPkg: V2Package): boolean {\n return Boolean(fromPkg.isV2Addon() && fromPkg.meta['externals'] && fromPkg.meta['externals'].includes(specifier));\n}\n\n// we don't want to allow things that resolve only by accident that are likely\n// to break in other setups. For example: import your dependencies'\n// dependencies, or importing your own name from within a monorepo (which will\n// work because of the symlinking) without setting up \"exports\" (which makes\n// your own name reliably resolvable)\nfunction reliablyResolvable(pkg: V2Package, packageName: string) {\n if (pkg.hasDependency(packageName)) {\n return true;\n }\n\n if (pkg.name === packageName && pkg.packageJSON.exports) {\n return true;\n }\n\n if (emberVirtualPeerDeps.has(packageName) || emberVirtualPackages.has(packageName)) {\n return true;\n }\n\n return false;\n}\n\n//\nfunction appImportInAppTree(inPackage: Package, inLogicalPackage: Package, importedPackageName: string): boolean {\n return inPackage !== inLogicalPackage && importedPackageName === inLogicalPackage.name;\n}\n\nfunction engineRelativeName(pkg: Package, filename: string): string | undefined {\n let outsideName = externalName(pkg.packageJSON, explicitRelative(pkg.root, filename));\n if (outsideName) {\n return '.' + outsideName.slice(pkg.name.length);\n }\n}\n"]}
|
1
|
+
{"version":3,"file":"module-resolver.js","sourceRoot":"","sources":["module-resolver.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n emberVirtualPackages,\n emberVirtualPeerDeps,\n extensionsPattern,\n packageName as getPackageName,\n packageName,\n} from '@embroider/shared-internals';\nimport { dirname, resolve, posix } from 'path';\nimport type { Package, V2Package } from '@embroider/shared-internals';\nimport { explicitRelative, RewrittenPackageCache } from '@embroider/shared-internals';\nimport makeDebug from 'debug';\nimport assertNever from 'assert-never';\nimport { externalName } from '@embroider/reverse-exports';\nimport { exports as resolveExports } from 'resolve.exports';\n\nimport {\n virtualExternalESModule,\n virtualExternalCJSModule,\n virtualPairComponent,\n fastbootSwitch,\n decodeFastbootSwitch,\n decodeImplicitModules,\n} from './virtual-content';\nimport { Memoize } from 'typescript-memoize';\nimport { describeExports } from './describe-exports';\nimport { readFileSync } from 'fs';\nimport { nodeResolve } from './node-resolve';\nimport { decodePublicRouteEntrypoint, encodeRouteEntrypoint } from './virtual-route-entrypoint';\nimport type { Options, EngineConfig } from './module-resolver-options';\n\nconst debug = makeDebug('embroider:resolver');\n\n// Using a formatter makes this work lazy so nothing happens when we aren't\n// logging. It is unfortunate that formatters are a globally mutable config and\n// you can only use single character names, but oh well.\nmakeDebug.formatters.p = (s: string) => {\n let cwd = process.cwd();\n if (s.startsWith(cwd)) {\n return s.slice(cwd.length + 1);\n }\n return s;\n};\n\nfunction logTransition<R extends ModuleRequest>(reason: string, before: R, after: R = before): R {\n if (after.isVirtual) {\n debug(`[%s:virtualized] %s because %s\\n in %p`, before.debugType, before.specifier, reason, before.fromFile);\n } else if (after.resolvedTo) {\n debug(`[%s:resolvedTo] %s because %s\\n in %p`, before.debugType, before.specifier, reason, before.fromFile);\n } else if (before.specifier !== after.specifier) {\n if (before.fromFile !== after.fromFile) {\n debug(\n `[%s:aliased and rehomed] %s to %s\\n because %s\\n from %p\\n to %p`,\n before.debugType,\n before.specifier,\n after.specifier,\n reason,\n before.fromFile,\n after.fromFile\n );\n } else {\n debug(`[%s:aliased] %s to %s\\n because %s`, before.debugType, before.specifier, after.specifier, reason);\n }\n } else if (before.fromFile !== after.fromFile) {\n debug(\n `[%s:rehomed] %s, because %s\\n from %p\\n to %p`,\n before.debugType,\n before.specifier,\n reason,\n before.fromFile,\n after.fromFile\n );\n } else if (after.isNotFound) {\n debug(`[%s:not-found] %s because %s\\n in %p`, before.debugType, before.specifier, reason, before.fromFile);\n } else {\n debug(`[%s:unchanged] %s because %s\\n in %p`, before.debugType, before.specifier, reason, before.fromFile);\n }\n return after;\n}\n\nfunction isTerminal(request: ModuleRequest): boolean {\n return request.isVirtual || request.isNotFound || Boolean(request.resolvedTo);\n}\n\ntype MergeEntry =\n | {\n type: 'app-only';\n 'app-js': {\n specifier: string;\n fromFile: string;\n fromPackageName: string;\n };\n }\n | {\n type: 'fastboot-only';\n 'fastboot-js': {\n specifier: string;\n fromFile: string;\n fromPackageName: string;\n };\n }\n | {\n type: 'both';\n 'app-js': {\n specifier: string;\n fromFile: string;\n fromPackageName: string;\n };\n 'fastboot-js': {\n specifier: string;\n fromFile: string;\n fromPackageName: string;\n };\n };\n\ntype MergeMap = Map</* engine root dir */ string, Map</* withinEngineModuleName */ string, MergeEntry>>;\n\nconst compatPattern = /@embroider\\/virtual\\/(?<type>[^\\/]+)\\/(?<rest>.*)/;\n\nexport interface ModuleRequest<Res extends Resolution = Resolution> {\n readonly specifier: string;\n readonly fromFile: string;\n readonly isVirtual: boolean;\n readonly meta: Record<string, unknown> | undefined;\n readonly debugType: string;\n readonly isNotFound: boolean;\n readonly resolvedTo: Res | undefined;\n alias(newSpecifier: string): this;\n rehome(newFromFile: string): this;\n virtualize(virtualFilename: string): this;\n withMeta(meta: Record<string, any> | undefined): this;\n notFound(): this;\n defaultResolve(): Promise<Res>;\n resolveTo(resolution: Res): this;\n}\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; isVirtual: boolean; result: T }\n\n // used for requests that are special and don't represent real files that\n // embroider can possibly do anything custom with.\n //\n // the motivating use case for introducing this is Vite's depscan which marks\n // almost everything as \"external\" as a way to tell esbuild to stop traversing\n // once it has been seen the first time.\n | { type: 'ignored'; 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 class Resolver {\n constructor(readonly options: Options) {}\n\n private async beforeResolve<R extends ModuleRequest>(request: R): Promise<R> {\n if (request.specifier === '@embroider/macros') {\n // the macros package is always handled directly within babel (not\n // necessarily as a real resolvable package), so we should not mess with it.\n // It might not get compiled away until *after* our plugin has run, which is\n // why we need to know about it.\n return logTransition('early exit', request);\n }\n\n if (request.specifier === 'require') {\n return this.external('early require', request, request.specifier);\n }\n\n request = this.handleFastbootSwitch(request);\n request = await this.handleGlobalsCompat(request);\n request = this.handleImplicitModules(request);\n request = this.handleImplicitTestScripts(request);\n request = this.handleVendorStyles(request);\n request = this.handleTestSupportStyles(request);\n request = this.handleEntrypoint(request);\n request = this.handleRouteEntrypoint(request);\n request = this.handleRenaming(request);\n request = this.handleVendor(request);\n // we expect the specifier to be app relative at this point - must be after handleRenaming\n request = this.generateFastbootSwitch(request);\n request = this.preHandleExternal(request);\n\n // this should probably stay the last step in beforeResolve, because it can\n // rehome requests to their un-rewritten locations, and for the most part we\n // want to be dealing with the rewritten packages.\n request = this.handleRewrittenPackages(request);\n return request;\n }\n\n // This encapsulates the whole resolving process. Given a `defaultResolve`\n // that calls your build system's normal module resolver, this does both pre-\n // and post-resolution adjustments as needed to implement our compatibility\n // rules.\n async resolve<ResolveResolution extends Resolution>(\n request: ModuleRequest<ResolveResolution>\n ): Promise<ResolveResolution> {\n request = await this.beforeResolve(request);\n if (request.resolvedTo) {\n return request.resolvedTo;\n }\n\n let resolution = await request.defaultResolve();\n\n switch (resolution.type) {\n case 'found':\n case 'ignored':\n return resolution;\n case 'not_found':\n break;\n default:\n throw assertNever(resolution);\n }\n let nextRequest = await this.fallbackResolve(request);\n if (nextRequest === request) {\n // no additional fallback is available.\n return resolution;\n }\n\n if (nextRequest.resolvedTo) {\n return nextRequest.resolvedTo;\n }\n\n if (nextRequest.fromFile === request.fromFile && nextRequest.specifier === request.specifier) {\n throw new Error(\n 'Bug Discovered! New request is not === original request but has the same fromFile and specifier. This will likely create a loop.'\n );\n }\n\n if (nextRequest.isVirtual || nextRequest.isNotFound) {\n // virtual and NotFound requests are terminal, there is no more\n // beforeResolve or fallbackResolve around them. The defaultResolve is\n // expected to know how to implement them.\n return nextRequest.defaultResolve();\n }\n\n return this.resolve(nextRequest);\n }\n\n // Use standard NodeJS resolving, with our required compatibility rules on\n // top. This is a convenience method for calling resolveSync with the\n // defaultResolve already configured to be \"do the normal node thing\".\n async nodeResolve(\n specifier: string,\n fromFile: string\n ): Promise<\n | { type: 'virtual'; filename: string; content: string }\n | { type: 'real'; filename: string }\n | { type: 'not_found'; err: Error }\n > {\n return nodeResolve(this, specifier, fromFile);\n }\n\n get packageCache() {\n return RewrittenPackageCache.shared('embroider', this.options.appRoot);\n }\n\n private logicalPackage(owningPackage: V2Package, file: string): V2Package {\n let logicalLocation = this.reverseSearchAppTree(owningPackage, file);\n if (logicalLocation) {\n let pkg = this.packageCache.get(logicalLocation.owningEngine.root);\n if (!pkg.isV2Ember()) {\n throw new Error(`bug: all engines should be v2 addons by the time we see them here`);\n }\n return pkg;\n }\n return owningPackage;\n }\n\n private generateFastbootSwitch<R extends ModuleRequest>(request: R): R {\n if (isTerminal(request)) {\n return request;\n }\n let pkg = this.packageCache.ownerOfFile(request.fromFile);\n\n if (!pkg) {\n return request;\n }\n\n if (packageName(request.specifier)) {\n // not a relative request, and we're assuming all within-engine requests\n // are relative by this point due to `v1 self-import` which happens\n // earlier\n return request;\n }\n\n let engineConfig = this.engineConfig(pkg.name);\n let appRelativePath = explicitRelative(pkg.root, resolve(dirname(request.fromFile), request.specifier));\n if (engineConfig) {\n for (let candidate of this.withResolvableExtensions(appRelativePath)) {\n let fastbootFile = engineConfig.fastbootFiles[candidate];\n if (fastbootFile) {\n if (fastbootFile.shadowedFilename) {\n let { names } = describeExports(readFileSync(resolve(pkg.root, fastbootFile.shadowedFilename), 'utf8'), {\n configFile: false,\n });\n let switchFile = fastbootSwitch(candidate, resolve(pkg.root, 'package.json'), names);\n if (switchFile === request.fromFile) {\n return logTransition('internal lookup from fastbootSwitch', request);\n } else {\n return logTransition('shadowed app fastboot', request, request.virtualize(switchFile));\n }\n } else {\n return logTransition(\n 'unshadowed app fastboot',\n request,\n request.alias(fastbootFile.localFilename).rehome(resolve(pkg.root, 'package.json'))\n );\n }\n }\n }\n }\n\n return request;\n }\n\n private handleFastbootSwitch<R extends ModuleRequest>(request: R): R {\n if (isTerminal(request)) {\n return request;\n }\n let match = decodeFastbootSwitch(request.fromFile);\n if (!match) {\n return request;\n }\n\n let section: 'app-js' | 'fastboot-js' | undefined;\n if (request.specifier === './browser') {\n section = 'app-js';\n } else if (request.specifier === './fastboot') {\n section = 'fastboot-js';\n }\n\n if (!section) {\n return logTransition('non-special import in fastboot switch', request);\n }\n\n let pkg = this.packageCache.ownerOfFile(match.filename);\n if (pkg) {\n let rel = explicitRelative(pkg.root, match.filename);\n\n let engineConfig = this.engineConfig(pkg.name);\n if (engineConfig) {\n let fastbootFile = engineConfig.fastbootFiles[rel];\n if (fastbootFile && fastbootFile.shadowedFilename) {\n let targetFile: string;\n if (section === 'app-js') {\n targetFile = fastbootFile.shadowedFilename;\n } else {\n targetFile = fastbootFile.localFilename;\n }\n return logTransition(\n 'matched app entry',\n request,\n // deliberately not using rehome because we want\n // generateFastbootSwitch to see that this request is coming *from*\n // a fastboot switch so it won't cycle back around. Instead we make\n // the targetFile relative to the fromFile that we already have.\n request.alias(explicitRelative(dirname(request.fromFile), resolve(pkg.root, targetFile)))\n );\n }\n }\n\n let entry = this.getEntryFromMergeMap(rel, pkg.root)?.entry;\n if (entry?.type === 'both') {\n return logTransition(\n 'matched addon entry',\n request,\n request.alias(entry[section].specifier).rehome(entry[section].fromFile)\n );\n }\n }\n\n return logTransition('failed to match in fastboot switch', request);\n }\n\n private handleImplicitModules<R extends ModuleRequest>(request: R): R {\n if (isTerminal(request)) {\n return request;\n }\n let im = decodeImplicitModules(request.specifier);\n if (!im) {\n return request;\n }\n\n let pkg = this.packageCache.ownerOfFile(request.fromFile);\n if (!pkg?.isV2Ember()) {\n throw new Error(`bug: found implicit modules import in non-ember package at ${request.fromFile}`);\n }\n\n let packageName = getPackageName(im.fromFile);\n if (packageName) {\n let dep = this.packageCache.resolve(packageName, pkg);\n return logTransition(\n `dep's implicit modules`,\n request,\n request.virtualize(resolve(dep.root, `-embroider-${im.type}.js`))\n );\n } else {\n return logTransition(\n `own implicit modules`,\n request,\n request.virtualize(resolve(pkg.root, `-embroider-${im.type}.js`))\n );\n }\n }\n\n private handleEntrypoint<R extends ModuleRequest>(request: R): R {\n if (isTerminal(request)) {\n return request;\n }\n\n //TODO move the extra forwardslash handling out into the vite plugin\n const candidates = [\n '@embroider/virtual/compat-modules',\n '/@embroider/virtual/compat-modules',\n './@embroider/virtual/compat-modules',\n ];\n\n if (!candidates.some(c => request.specifier.startsWith(c + '/') || request.specifier === c)) {\n return request;\n }\n\n const result = /\\.?\\/?@embroider\\/virtual\\/compat-modules(?:\\/(?<packageName>.*))?/.exec(request.specifier);\n\n if (!result) {\n // TODO make a better error\n throw new Error('entrypoint does not match pattern' + request.specifier);\n }\n\n const { packageName } = result.groups!;\n\n const requestingPkg = this.packageCache.ownerOfFile(request.fromFile);\n\n if (!requestingPkg?.isV2Ember()) {\n throw new Error(`bug: found entrypoint import in non-ember package at ${request.fromFile}`);\n }\n\n let pkg;\n\n if (packageName) {\n pkg = this.packageCache.resolve(packageName, requestingPkg);\n } else {\n pkg = requestingPkg;\n }\n let matched = resolveExports(pkg.packageJSON, '-embroider-entrypoint.js', {\n browser: true,\n conditions: ['default', 'imports'],\n });\n return logTransition(\n 'entrypoint',\n request,\n request.virtualize(resolve(pkg.root, matched?.[0] ?? '-embroider-entrypoint.js'))\n );\n }\n\n private handleRouteEntrypoint<R extends ModuleRequest>(request: R): R {\n if (isTerminal(request)) {\n return request;\n }\n\n let routeName = decodePublicRouteEntrypoint(request.specifier);\n\n if (!routeName) {\n return request;\n }\n\n let pkg = this.packageCache.ownerOfFile(request.fromFile);\n\n if (!pkg?.isV2Ember()) {\n throw new Error(`bug: found entrypoint import in non-ember package at ${request.fromFile}`);\n }\n\n let matched = resolveExports(pkg.packageJSON, '-embroider-route-entrypoint.js', {\n browser: true,\n conditions: ['default', 'imports'],\n });\n\n return logTransition(\n 'route entrypoint',\n request,\n request.virtualize(encodeRouteEntrypoint(pkg.root, matched?.[0], routeName))\n );\n }\n\n private handleImplicitTestScripts<R extends ModuleRequest>(request: R): R {\n //TODO move the extra forwardslash handling out into the vite plugin\n const candidates = [\n '@embroider/core/test-support.js',\n '/@embroider/core/test-support.js',\n './@embroider/core/test-support.js',\n ];\n\n if (!candidates.includes(request.specifier)) {\n return request;\n }\n\n let pkg = this.packageCache.ownerOfFile(request.fromFile);\n if (pkg?.root !== this.options.engines[0].root) {\n throw new Error(\n `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/core/test-support.js. If you think something should be fixed in Embroider, please open an issue on https://github.com/embroider-build/embroider/issues.`\n );\n }\n\n return logTransition('test-support', request, request.virtualize(resolve(pkg.root, '-embroider-test-support.js')));\n }\n\n private handleTestSupportStyles<R extends ModuleRequest>(request: R): R {\n //TODO move the extra forwardslash handling out into the vite plugin\n const candidates = [\n '@embroider/core/test-support.css',\n '/@embroider/core/test-support.css',\n './@embroider/core/test-support.css',\n ];\n\n if (!candidates.includes(request.specifier)) {\n return request;\n }\n\n let pkg = this.packageCache.ownerOfFile(request.fromFile);\n if (pkg?.root !== this.options.engines[0].root) {\n throw new Error(\n `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/core/test-support.css. If you think something should be fixed in Embroider, please open an issue on https://github.com/embroider-build/embroider/issues.`\n );\n }\n\n return logTransition(\n 'test-support-styles',\n request,\n request.virtualize(resolve(pkg.root, '-embroider-test-support-styles.css'))\n );\n }\n\n private async handleGlobalsCompat<R extends ModuleRequest>(request: R): Promise<R> {\n if (isTerminal(request)) {\n return request;\n }\n let match = compatPattern.exec(request.specifier);\n if (!match) {\n return request;\n }\n let { type, rest } = match.groups!;\n let fromPkg = this.packageCache.ownerOfFile(request.fromFile);\n if (!fromPkg?.isV2Ember()) {\n return request;\n }\n let engine = this.owningEngine(fromPkg);\n\n switch (type) {\n case 'helpers':\n return this.resolveHelper(rest, engine, request);\n case 'components':\n return this.resolveComponent(rest, engine, request);\n case 'modifiers':\n return this.resolveModifier(rest, engine, request);\n case 'ambiguous':\n return this.resolveHelperOrComponent(rest, engine, request);\n default:\n throw new Error(`bug: unexepected @embroider/virtual specifier: ${request.specifier}`);\n }\n }\n\n private handleVendorStyles<R extends ModuleRequest>(request: R): R {\n //TODO move the extra forwardslash handling out into the vite plugin\n const candidates = [\n '@embroider/virtual/vendor.css',\n '/@embroider/virtual/vendor.css',\n './@embroider/virtual/vendor.css',\n ];\n\n if (!candidates.includes(request.specifier)) {\n return request;\n }\n\n let pkg = this.packageCache.ownerOfFile(request.fromFile);\n if (!pkg || !this.options.engines.some(e => e.root === pkg?.root)) {\n throw new Error(\n `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.`\n );\n }\n\n return logTransition(\n 'vendor-styles',\n request,\n request.virtualize(resolve(pkg.root, '-embroider-vendor-styles.css'))\n );\n }\n\n private resolveHelper<R extends ModuleRequest>(path: string, inEngine: EngineConfig, request: R): R {\n let target = this.parseGlobalPath(path, inEngine);\n return logTransition(\n 'resolveHelper',\n request,\n request.alias(`${target.packageName}/helpers/${target.memberName}`).rehome(resolve(inEngine.root, 'package.json'))\n );\n }\n\n private async resolveComponent<R extends ModuleRequest>(\n path: string,\n inEngine: EngineConfig,\n request: R\n ): Promise<R> {\n let target = this.parseGlobalPath(path, inEngine);\n\n let hbsModule: Resolution | null = null;\n let jsModule: Resolution | null = null;\n\n // first, the various places our template might be.\n for (let candidate of this.componentTemplateCandidates(target.packageName)) {\n let candidateSpecifier = `${target.packageName}${candidate.prefix}${target.memberName}${candidate.suffix}`;\n\n let resolution = await this.resolve(\n request.alias(candidateSpecifier).rehome(target.from).withMeta({\n runtimeFallback: false,\n })\n );\n\n if (resolution.type === 'found') {\n hbsModule = resolution;\n break;\n }\n }\n\n // then the various places our javascript might be.\n for (let candidate of this.componentJSCandidates(target.packageName)) {\n let candidateSpecifier = `${target.packageName}${candidate.prefix}${target.memberName}${candidate.suffix}`;\n\n let resolution = await this.resolve(\n request.alias(candidateSpecifier).rehome(target.from).withMeta({\n runtimeFallback: false,\n })\n );\n\n if (resolution.type === 'ignored') {\n return logTransition(`resolving to ignored component`, request, request.resolveTo(resolution));\n }\n\n // .hbs is a resolvable extension for us, so we need to exclude it here.\n // It matches as a priority lower than .js, so finding an .hbs means\n // there's definitely not a .js.\n if (resolution.type === 'found' && !resolution.filename.endsWith('.hbs')) {\n jsModule = resolution;\n break;\n }\n }\n\n if (hbsModule) {\n return logTransition(\n `resolveComponent found legacy HBS`,\n request,\n request.virtualize(virtualPairComponent(hbsModule.filename, jsModule?.filename))\n );\n } else if (jsModule) {\n return logTransition(`resolving to resolveComponent found only JS`, request, request.resolveTo(jsModule));\n } else {\n return logTransition(`resolveComponent failed`, request);\n }\n }\n\n private async resolveHelperOrComponent<R extends ModuleRequest>(\n path: string,\n inEngine: EngineConfig,\n request: R\n ): Promise<R> {\n // resolveHelper just rewrites our request to one that should target the\n // component, so here to resolve the ambiguity we need to actually resolve\n // that candidate to see if it works.\n let helperCandidate = this.resolveHelper(path, inEngine, request);\n let helperMatch = await this.resolve(\n request.alias(helperCandidate.specifier).rehome(helperCandidate.fromFile).withMeta({\n runtimeFallback: false,\n })\n );\n\n // for the case of 'ignored' that means that esbuild found this helper in an external\n // package so it should be considered found in this case and we should not look for a\n // component with this name\n if (helperMatch.type === 'found' || helperMatch.type === 'ignored') {\n return logTransition('resolve to ambiguous case matched a helper', request, request.resolveTo(helperMatch));\n }\n\n // unlike resolveHelper, resolveComponent already does pre-resolution in\n // order to deal with its own internal ambiguity around JS vs HBS vs\n // colocation.≥\n let componentMatch = await this.resolveComponent(path, inEngine, request);\n if (componentMatch !== request) {\n return logTransition('ambiguous case matched a cmoponent', request, componentMatch);\n }\n\n // this is the hard failure case -- we were supposed to find something and\n // didn't. Let the normal resolution process progress so the user gets a\n // normal build error.\n return logTransition('ambiguous case failing', request);\n }\n\n private resolveModifier<R extends ModuleRequest>(path: string, inEngine: EngineConfig, request: R): R {\n let target = this.parseGlobalPath(path, inEngine);\n return logTransition(\n 'resolveModifier',\n request,\n request\n .alias(`${target.packageName}/modifiers/${target.memberName}`)\n .rehome(resolve(inEngine.root, 'package.json'))\n );\n }\n\n private *componentTemplateCandidates(inPackageName: string) {\n yield { prefix: '/templates/components/', suffix: '' };\n yield { prefix: '/components/', suffix: '/template' };\n\n let pods = this.podPrefix(inPackageName);\n if (pods) {\n yield { prefix: `${pods}/components/`, suffix: '/template' };\n }\n }\n\n private *componentJSCandidates(inPackageName: string) {\n yield { prefix: '/components/', suffix: '' };\n yield { prefix: '/components/', suffix: '/index' };\n yield { prefix: '/components/', suffix: '/component' };\n\n let pods = this.podPrefix(inPackageName);\n if (pods) {\n yield { prefix: `${pods}/components/`, suffix: '/component' };\n }\n }\n\n private podPrefix(targetPackageName: string) {\n if (targetPackageName === this.options.modulePrefix && this.options.podModulePrefix) {\n if (!this.options.podModulePrefix.startsWith(this.options.modulePrefix)) {\n throw new Error(\n `Your podModulePrefix (${this.options.podModulePrefix}) does not start with your app module prefix (${this.options.modulePrefix}). Not gonna support that silliness.`\n );\n }\n return this.options.podModulePrefix.slice(this.options.modulePrefix.length);\n }\n }\n\n // for paths that come from non-strict templates\n private parseGlobalPath(path: string, inEngine: EngineConfig) {\n let parts = path.split('@');\n if (parts.length > 1 && parts[0].length > 0) {\n return { packageName: parts[0], memberName: parts[1], from: resolve(inEngine.root, 'package.json') };\n } else {\n return { packageName: inEngine.packageName, memberName: path, from: resolve(inEngine.root, 'package.json') };\n }\n }\n\n private engineConfig(packageName: string): EngineConfig | undefined {\n return this.options.engines.find(e => e.packageName === packageName);\n }\n\n // This is where we figure out how all the classic treeForApp merging bottoms\n // out.\n @Memoize()\n private get mergeMap(): MergeMap {\n let result: MergeMap = new Map();\n for (let engine of this.options.engines) {\n let engineModules: Map<string, MergeEntry> = new Map();\n for (let addonConfig of engine.activeAddons) {\n let addon = this.packageCache.get(addonConfig.root);\n if (!addon.isV2Addon()) {\n continue;\n }\n\n let appJS = addon.meta['app-js'];\n if (appJS) {\n for (let [inEngineName, inAddonName] of Object.entries(appJS)) {\n if (!inEngineName.startsWith('./')) {\n throw new Error(\n `addon ${addon.name} declares app-js in its package.json with the illegal name \"${inEngineName}\". It must start with \"./\" to make it clear that it's relative to the app`\n );\n }\n if (!inAddonName.startsWith('./')) {\n throw new Error(\n `addon ${addon.name} declares app-js in its package.json with the illegal name \"${inAddonName}\". It must start with \"./\" to make it clear that it's relative to the addon`\n );\n }\n let specifier = externalName(addon.packageJSON, inAddonName);\n if (!specifier) {\n throw new Error(\n `${addon.name}'s package.json app-js refers to ${inAddonName}, but that module is not accessible from outside the package`\n );\n }\n let prevEntry = engineModules.get(inEngineName);\n switch (prevEntry?.type) {\n case undefined:\n engineModules.set(inEngineName, {\n type: 'app-only',\n 'app-js': {\n specifier,\n fromFile: addonConfig.canResolveFromFile,\n fromPackageName: addon.name,\n },\n });\n break;\n case 'app-only':\n case 'both':\n // first match wins, so this one is shadowed\n break;\n case 'fastboot-only':\n engineModules.set(inEngineName, {\n type: 'both',\n 'app-js': {\n specifier,\n fromFile: addonConfig.canResolveFromFile,\n fromPackageName: addon.name,\n },\n 'fastboot-js': prevEntry['fastboot-js'],\n });\n break;\n }\n }\n }\n\n let fastbootJS = addon.meta['fastboot-js'];\n if (fastbootJS) {\n for (let [inEngineName, inAddonName] of Object.entries(fastbootJS)) {\n if (!inEngineName.startsWith('./')) {\n throw new Error(\n `addon ${addon.name} declares fastboot-js in its package.json with the illegal name \"${inEngineName}\". It must start with \"./\" to make it clear that it's relative to the app`\n );\n }\n if (!inAddonName.startsWith('./')) {\n throw new Error(\n `addon ${addon.name} declares fastboot-js in its package.json with the illegal name \"${inAddonName}\". It must start with \"./\" to make it clear that it's relative to the addon`\n );\n }\n let specifier = externalName(addon.packageJSON, inAddonName);\n if (!specifier) {\n throw new Error(\n `${addon.name}'s package.json fastboot-js refers to ${inAddonName}, but that module is not accessible from outside the package`\n );\n }\n let prevEntry = engineModules.get(inEngineName);\n switch (prevEntry?.type) {\n case undefined:\n engineModules.set(inEngineName, {\n type: 'fastboot-only',\n 'fastboot-js': {\n specifier,\n fromFile: addonConfig.canResolveFromFile,\n fromPackageName: addon.name,\n },\n });\n break;\n case 'fastboot-only':\n case 'both':\n // first match wins, so this one is shadowed\n break;\n case 'app-only':\n engineModules.set(inEngineName, {\n type: 'both',\n 'fastboot-js': {\n specifier,\n fromFile: addonConfig.canResolveFromFile,\n fromPackageName: addon.name,\n },\n 'app-js': prevEntry['app-js'],\n });\n break;\n }\n }\n }\n }\n result.set(engine.root, engineModules);\n }\n return result;\n }\n\n owningEngine(pkg: Package) {\n let owningEngine = this.options.engines.find(e =>\n pkg.isEngine() ? e.root === pkg.root : e.activeAddons.find(a => a.root === pkg.root)\n );\n if (!owningEngine) {\n throw new Error(\n `bug in @embroider/core/src/module-resolver: cannot figure out the owning engine for ${pkg.root}`\n );\n }\n return owningEngine;\n }\n\n private handleRewrittenPackages<R extends ModuleRequest>(request: R): R {\n if (isTerminal(request)) {\n return request;\n }\n let requestingPkg = this.packageCache.ownerOfFile(request.fromFile);\n if (!requestingPkg) {\n return request;\n }\n let packageName = getPackageName(request.specifier);\n if (!packageName) {\n // relative request\n return request;\n }\n\n let targetPkg: Package | undefined;\n if (packageName !== requestingPkg.name) {\n // non-relative, non-self request, so check if it aims at a rewritten addon\n try {\n targetPkg = this.packageCache.resolve(packageName, requestingPkg);\n } catch (err) {\n if (err.code !== 'MODULE_NOT_FOUND') {\n throw err;\n }\n }\n }\n\n let originalRequestingPkg = this.packageCache.original(requestingPkg);\n let originalTargetPkg = targetPkg ? this.packageCache.original(targetPkg) : undefined;\n\n if (targetPkg && originalTargetPkg !== targetPkg) {\n // in this case it doesn't matter whether or not the requesting package\n // was moved. RewrittenPackageCache.resolve already took care of finding\n // the right target, and we redirect the request so it will look inside\n // that target.\n return logTransition(\n 'request targets a moved package',\n request,\n this.resolveWithinMovedPackage(request, targetPkg)\n );\n } else if (originalRequestingPkg !== requestingPkg) {\n if (targetPkg) {\n // in this case, the requesting package is moved but its destination is\n // not, so we need to rehome the request back to the original location.\n return logTransition(\n 'outbound request from moved package',\n request,\n request\n // setting meta here because if this fails, we want the fallback\n // logic to revert our rehome and continue from the *moved* package.\n .withMeta({ originalFromFile: request.fromFile })\n .rehome(resolve(originalRequestingPkg.root, 'package.json'))\n );\n } else {\n // requesting package was moved and we failed to find its target. We\n // can't let that accidentally succeed in the defaultResolve because we\n // could escape the moved package system.\n return logTransition('missing outbound request from moved package', request, request.notFound());\n }\n }\n\n return request;\n }\n\n private handleRenaming<R extends ModuleRequest>(request: R): R {\n if (isTerminal(request)) {\n return request;\n }\n let packageName = getPackageName(request.specifier);\n if (!packageName) {\n return request;\n }\n\n let pkg = this.packageCache.ownerOfFile(request.fromFile);\n\n // real deps take precedence over renaming rules. That is, a package like\n // ember-source might provide backburner via module renaming, but if you\n // have an explicit dependency on backburner you should still get that real\n // copy.\n\n if (!pkg?.hasDependency(packageName)) {\n for (let [candidate, replacement] of Object.entries(this.options.renameModules)) {\n if (candidate === request.specifier) {\n return logTransition(`renameModules`, request, request.alias(replacement));\n }\n for (let extension of this.options.resolvableExtensions) {\n if (candidate === request.specifier + '/index' + extension) {\n return logTransition(`renameModules`, request, request.alias(replacement));\n }\n if (candidate === request.specifier + extension) {\n return logTransition(`renameModules`, request, request.alias(replacement));\n }\n }\n }\n\n if (this.options.renamePackages[packageName]) {\n return logTransition(\n `renamePackages`,\n request,\n request.alias(request.specifier.replace(packageName, this.options.renamePackages[packageName]))\n );\n }\n }\n\n if (!pkg || !pkg.isV2Ember()) {\n return request;\n }\n\n if (pkg.name === packageName) {\n // we found a self-import\n if (pkg.meta['auto-upgraded']) {\n // auto-upgraded packages always get automatically adjusted. They never\n // supported fancy package.json exports features so this direct mapping\n // to the root is always right.\n\n // \"my-app/foo\" -> \"./foo\" from app's package.json\n // \"my-addon/foo\" -> \"my-addon/foo\" from a package that's guaranteed to be able to resolve my-addon\n\n let owningEngine = this.owningEngine(pkg);\n let addonConfig = owningEngine.activeAddons.find(a => a.root === pkg.root);\n if (addonConfig) {\n // auto-upgraded addons get special support for self-resolving here.\n return logTransition(`v1 addon self-import`, request, request.rehome(addonConfig.canResolveFromFile));\n } else {\n // auto-upgraded apps will necessarily have packageJSON.exports\n // because we insert them, so for that support we can fall through to\n // that support below.\n }\n }\n\n // v2 packages are supposed to use package.json `exports` to enable\n // self-imports, but not all build tools actually follow the spec. This\n // is a workaround for badly behaved packagers.\n //\n // Known upstream bugs this works around:\n // - https://github.com/vitejs/vite/issues/9731\n if (pkg.packageJSON.exports) {\n let found = resolveExports(pkg.packageJSON, request.specifier, {\n browser: true,\n conditions: ['default', 'imports'],\n });\n if (found?.[0]) {\n return logTransition(\n `v2 self-import with package.json exports`,\n request,\n request.alias(found?.[0]).rehome(resolve(pkg.root, 'package.json'))\n );\n }\n }\n }\n\n return request;\n }\n\n private handleVendor<R extends ModuleRequest>(request: R): R {\n //TODO move the extra forwardslash handling out into the vite plugin\n const candidates = [\n '@embroider/virtual/vendor.js',\n '/@embroider/virtual/vendor.js',\n './@embroider/virtual/vendor.js',\n ];\n\n if (!candidates.includes(request.specifier)) {\n return request;\n }\n\n let pkg = this.packageCache.ownerOfFile(request.fromFile);\n if (pkg?.root !== this.options.engines[0].root) {\n throw new Error(\n `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.`\n );\n }\n\n return logTransition('vendor', request, request.virtualize(resolve(pkg.root, '-embroider-vendor.js')));\n }\n\n private resolveWithinMovedPackage<R extends ModuleRequest>(request: R, pkg: Package): R {\n let levels = ['..'];\n if (pkg.name.startsWith('@')) {\n levels.push('..');\n }\n let originalFromFile = request.fromFile;\n let newRequest = request.rehome(resolve(pkg.root, ...levels, 'moved-package-target.js'));\n\n if (newRequest === request) {\n return request;\n }\n\n // setting meta because if this fails, we want the fallback to pick up back\n // in the original requesting package.\n return newRequest.withMeta({ originalFromFile });\n }\n\n private preHandleExternal<R extends ModuleRequest>(request: R): R {\n if (isTerminal(request)) {\n return request;\n }\n let { specifier, fromFile } = request;\n let pkg = this.packageCache.ownerOfFile(fromFile);\n if (!pkg || !pkg.isV2Ember()) {\n return request;\n }\n\n let packageName = getPackageName(specifier);\n if (!packageName) {\n // This is a relative import. We don't automatically externalize those\n // because it's rare, and by keeping them static we give better errors. But\n // we do allow them to be explicitly externalized by the package author (or\n // a compat adapter). In the metadata, they would be listed in\n // package-relative form, so we need to convert this specifier to that.\n let absoluteSpecifier = resolve(dirname(fromFile), specifier);\n\n if (!absoluteSpecifier.startsWith(pkg.root)) {\n // this relative path escape its package. So it's not really using\n // normal inter-package resolving and we should leave it alone. This\n // case comes up especially when babel transforms are trying to insert\n // references to runtime utilities, like we do in @embroider/macros.\n return logTransition('beforeResolve: relative path escapes its package', request);\n }\n\n let packageRelativeSpecifier = explicitRelative(pkg.root, absoluteSpecifier);\n if (isExplicitlyExternal(packageRelativeSpecifier, pkg)) {\n let publicSpecifier = absoluteSpecifier.replace(pkg.root, pkg.name);\n return this.external('beforeResolve', request, publicSpecifier);\n }\n\n // if the requesting file is in an addon's app-js, the relative request\n // should really be understood as a request for a module in the containing\n // engine.\n let logicalLocation = this.reverseSearchAppTree(pkg, request.fromFile);\n if (logicalLocation) {\n return logTransition(\n 'beforeResolve: relative import in app-js',\n request,\n request.alias(\n posix.join(logicalLocation.owningEngine.packageName, dirname(logicalLocation.inAppName), request.specifier)\n )\n );\n }\n\n return request;\n }\n\n // absolute package imports can also be explicitly external based on their\n // full specifier name\n if (isExplicitlyExternal(specifier, pkg)) {\n return this.external('beforeResolve', request, specifier);\n }\n\n if (emberVirtualPackages.has(packageName) && !pkg.hasDependency(packageName)) {\n return this.external('beforeResolve emberVirtualPackages', request, specifier);\n }\n\n if (emberVirtualPeerDeps.has(packageName) && !pkg.hasDependency(packageName)) {\n // addons (whether auto-upgraded or not) may use the app's\n // emberVirtualPeerDeps, like \"@glimmer/component\" etc.\n let addon = this.locateActiveAddon(packageName);\n if (!addon) {\n throw new Error(\n `${pkg.name} is trying to import the emberVirtualPeerDep \"${packageName}\", but it seems to be missing`\n );\n }\n return logTransition(`emberVirtualPeerDeps`, request, request.rehome(addon.canResolveFromFile));\n }\n\n // if this file is part of an addon's app-js, it's really the logical\n // package to which it belongs (normally the app) that affects some policy\n // choices about what it can import\n let logicalPackage = this.logicalPackage(pkg, fromFile);\n\n if (logicalPackage.meta['auto-upgraded'] && !logicalPackage.hasDependency('ember-auto-import')) {\n try {\n let dep = this.packageCache.resolve(packageName, logicalPackage);\n if (!dep.isEmberAddon()) {\n // classic ember addons can only import non-ember dependencies if they\n // have ember-auto-import.\n return this.external('v1 package without auto-import', request, specifier);\n }\n } catch (err) {\n if (err.code !== 'MODULE_NOT_FOUND') {\n throw err;\n }\n }\n }\n\n // assertions on what native v2 addons can import\n if (\n !pkg.needsLooseResolving() &&\n !appImportInAppTree(pkg, logicalPackage, packageName) &&\n !reliablyResolvable(pkg, packageName)\n ) {\n throw new Error(\n `${pkg.name} is trying to import from ${packageName} but that is not one of its explicit dependencies`\n );\n }\n\n return request;\n }\n\n private locateActiveAddon(packageName: string): { root: string; canResolveFromFile: string } | undefined {\n if (packageName === this.options.modulePrefix) {\n // the app itself is something that addon's can classically resolve if they know it's name.\n return {\n root: this.options.appRoot,\n canResolveFromFile: resolve(\n this.packageCache.maybeMoved(this.packageCache.get(this.options.appRoot)).root,\n 'package.json'\n ),\n };\n }\n for (let engine of this.options.engines) {\n for (let addon of engine.activeAddons) {\n if (addon.name === packageName) {\n return addon;\n }\n }\n }\n }\n\n private external<R extends ModuleRequest>(label: string, request: R, specifier: string): R {\n if (this.options.amdCompatibility === 'cjs') {\n let filename = virtualExternalCJSModule(specifier);\n return logTransition(label, request, request.virtualize(filename));\n } else if (this.options.amdCompatibility) {\n let entry = this.options.amdCompatibility.es.find(\n entry => entry[0] === specifier || entry[0] + '/index' === specifier\n );\n if (!entry && request.specifier === 'require') {\n entry = ['require', ['default', 'has']];\n }\n if (!entry) {\n throw new Error(\n `[${request.debugType}] A module tried to resolve \"${request.specifier}\" and didn't find it (${label}).\n\n - Maybe a dependency declaration is missing?\n - Remember that v1 addons can only import non-Ember-addon NPM dependencies if they include ember-auto-import in their dependencies.\n - If this dependency is available in the AMD loader (because someone manually called \"define()\" for it), you can configure a shim like:\n\n amdCompatibility: {\n es: [\n [\"${request.specifier}\", [\"default\", \"yourNamedExportsGoHere\"]],\n ]\n }\n\n`\n );\n }\n let filename = virtualExternalESModule(specifier, entry[1]);\n return logTransition(label, request, request.virtualize(filename));\n } else {\n throw new Error(\n `Embroider's amdCompatibility option is disabled, but something tried to use it to access \"${request.specifier}\"`\n );\n }\n }\n\n private async fallbackResolve<R extends ModuleRequest>(request: R): Promise<R> {\n if (request.isVirtual) {\n throw new Error(\n 'Build tool bug detected! Fallback resolve should never see a virtual request. It is expected that the defaultResolve for your bundler has already resolved this request'\n );\n }\n\n if (request.specifier === '@embroider/macros') {\n // the macros package is always handled directly within babel (not\n // necessarily as a real resolvable package), so we should not mess with it.\n // It might not get compiled away until *after* our plugin has run, which is\n // why we need to know about it.\n return logTransition('fallback early exit', request);\n }\n\n if (compatPattern.test(request.specifier)) {\n // Some kinds of compat requests get rewritten into other things\n // deterministically. For example, \"@embroider/virtual/helpers/whatever\"\n // means only \"the-current-engine/helpers/whatever\", and if that doesn't\n // actually exist it's that path that will show up as a missing import.\n //\n // But others have an ambiguous meaning. For example,\n // @embroider/virtual/components/whatever can mean several different\n // things. If we're unable to find any of them, the actual\n // \"@embroider/virtual\" request will fall through all the way to here.\n //\n // In that case, we don't want to externalize that failure. We know it's\n // not a classic runtime thing. It's better to let it be a build error\n // here.\n return request;\n }\n\n let pkg = this.packageCache.ownerOfFile(request.fromFile);\n\n if (pkg) {\n ({ pkg, request } = this.restoreRehomedRequest(pkg, request));\n }\n\n if (!pkg?.isV2Ember()) {\n // this request is coming from a file that appears to be owned by no ember\n // package. We offer one fallback behavior for such files. They're allowed\n // to resolve from the app's namespace.\n //\n // This makes it possible for integrations like vite to leave references\n // to the app in their pre-bundled dependencies, which will end up in an\n // arbitrary cache that is not inside any particular package.\n let description = pkg ? 'non-ember package' : 'unowned module';\n\n let packageName = getPackageName(request.specifier);\n if (packageName === this.options.modulePrefix) {\n return logTransition(\n `fallbackResolver: ${description} resolved app namespace`,\n request,\n request.rehome(this.packageCache.maybeMoved(this.packageCache.get(this.options.appRoot)).root)\n );\n }\n return logTransition(`fallbackResolver: ${description}`, request);\n }\n\n let packageName = getPackageName(request.specifier);\n if (!packageName) {\n // this is a relative import\n return this.relativeFallbackResolve(pkg, request);\n }\n\n if (pkg.needsLooseResolving()) {\n let activeAddon = this.maybeFallbackToActiveAddon(request, packageName);\n if (activeAddon) {\n return activeAddon;\n }\n }\n\n let logicalLocation = this.reverseSearchAppTree(pkg, request.fromFile);\n if (logicalLocation) {\n // the requesting file is in an addon's appTree. We didn't succeed in\n // resolving this (non-relative) request from inside the actual addon, so\n // next try to resolve it from the corresponding logical location in the\n // app.\n return logTransition(\n 'fallbackResolve: retry from logical home of app-js file',\n request,\n // it might look more precise to rehome into logicalLocation.inAppName\n // rather than package.json. But that logical location may not actually\n // exist, and some systems (including node's require.resolve) will be\n // mad about trying to resolve from notional paths that don't really\n // exist.\n request.rehome(resolve(logicalLocation.owningEngine.root, 'package.json'))\n );\n }\n\n let targetingEngine = this.engineConfig(packageName);\n if (targetingEngine) {\n let appJSMatch = await this.searchAppTree(request, targetingEngine, request.specifier.replace(packageName, '.'));\n if (appJSMatch) {\n return logTransition('fallbackResolve: non-relative appJsMatch', request, appJSMatch);\n }\n }\n\n if (pkg.needsLooseResolving() && (request.meta?.runtimeFallback ?? true)) {\n // auto-upgraded packages can fall back to attempting to find dependencies at\n // runtime. Native v2 packages can only get this behavior in the\n // isExplicitlyExternal case above because they need to explicitly ask for\n // externals.\n return this.external('v1 catch-all fallback', request, request.specifier);\n } else {\n // native v2 packages don't automatically externalize *everything* the way\n // auto-upgraded packages do, but they still externalize known and approved\n // ember virtual packages (like @ember/component)\n if (emberVirtualPackages.has(packageName)) {\n return this.external('emberVirtualPackages', request, request.specifier);\n }\n }\n\n // this is falling through with the original specifier which was\n // non-resolvable, which will presumably cause a static build error in stage3.\n return logTransition('fallbackResolve final exit', request);\n }\n\n private restoreRehomedRequest<R extends ModuleRequest>(pkg: Package, request: R): { pkg: Package; request: R } {\n // meta.originalFromFile gets set when we want to try to rehome a request\n // but then come back to the original location here in the fallback when the\n // rehomed request fails\n let movedPkg = this.packageCache.maybeMoved(pkg);\n if (movedPkg !== pkg) {\n let originalFromFile = request.meta?.originalFromFile;\n if (typeof originalFromFile !== 'string') {\n throw new Error(`bug: embroider resolver's meta is not propagating`);\n }\n request = request.rehome(originalFromFile);\n pkg = movedPkg;\n }\n return { pkg, request };\n }\n\n private async relativeFallbackResolve<R extends ModuleRequest>(pkg: Package, request: R): Promise<R> {\n let withinEngine = this.engineConfig(pkg.name);\n if (withinEngine) {\n // it's a relative import inside an engine (which also means app), which\n // means we may need to satisfy the request via app tree merging.\n\n let logicalName = engineRelativeName(pkg, resolve(dirname(request.fromFile), request.specifier));\n if (!logicalName) {\n return logTransition(\n 'fallbackResolve: relative failure because this file is not externally accessible',\n request\n );\n }\n let appJSMatch = await this.searchAppTree(request, withinEngine, logicalName);\n if (appJSMatch) {\n return logTransition('fallbackResolve: relative appJsMatch', request, appJSMatch);\n } else {\n return logTransition('fallbackResolve: relative appJs search failure', request);\n }\n } else {\n // nothing else to do for relative imports\n return logTransition('fallbackResolve: relative failure', request);\n }\n }\n\n private maybeFallbackToActiveAddon<R extends ModuleRequest>(request: R, requestedPackageName: string): R | undefined {\n // auto-upgraded packages can fall back to the set of known active addons\n let addon = this.locateActiveAddon(requestedPackageName);\n if (addon) {\n const rehomed = request.rehome(addon.canResolveFromFile);\n if (rehomed !== request) {\n return logTransition(`activeAddons`, request, rehomed);\n }\n }\n }\n\n private getEntryFromMergeMap(\n inEngineSpecifier: string,\n root: string\n ): { entry: MergeEntry; matched: string } | undefined {\n let entry: MergeEntry | undefined;\n for (let candidate of this.withResolvableExtensions(inEngineSpecifier)) {\n entry = this.mergeMap.get(root)?.get(candidate);\n if (entry) {\n return { entry, matched: candidate };\n }\n }\n }\n\n private *withResolvableExtensions(filename: string): Generator<string, void, void> {\n if (filename.match(/\\.(hbs|js|hbs\\.js)$/)) {\n yield filename;\n } else {\n for (let ext of ['.js', '.hbs.js', '.hbs']) {\n yield `${filename}${ext}`;\n }\n }\n }\n\n private async searchAppTree<R extends ModuleRequest>(\n request: R,\n engine: EngineConfig,\n inEngineSpecifier: string\n ): Promise<R | undefined> {\n let matched = this.getEntryFromMergeMap(inEngineSpecifier, engine.root);\n\n switch (matched?.entry.type) {\n case undefined:\n return undefined;\n case 'app-only':\n return request.alias(matched.entry['app-js'].specifier).rehome(matched.entry['app-js'].fromFile);\n case 'fastboot-only':\n return request.alias(matched.entry['fastboot-js'].specifier).rehome(matched.entry['fastboot-js'].fromFile);\n case 'both':\n let foundAppJS = await this.resolve(\n request.alias(matched.entry['app-js'].specifier).rehome(matched.entry['app-js'].fromFile).withMeta({\n runtimeFallback: false,\n })\n );\n if (foundAppJS.type !== 'found') {\n throw new Error(\n `${matched.entry['app-js'].fromPackageName} declared ${inEngineSpecifier} in packageJSON.ember-addon.app-js, but that module does not exist`\n );\n }\n let { names } = describeExports(readFileSync(foundAppJS.filename, 'utf8'), { configFile: false });\n return request.virtualize(fastbootSwitch(matched.matched, resolve(engine.root, 'package.json'), names));\n }\n }\n\n // check whether the given file with the given owningPackage is an addon's\n // appTree, and if so return the notional location within the app (or owning\n // engine) that it \"logically\" lives at.\n private reverseSearchAppTree(\n owningPackage: Package,\n fromFile: string\n ): { owningEngine: EngineConfig; inAppName: string } | undefined {\n // if the requesting file is in an addon's app-js, the request should\n // really be understood as a request for a module in the containing engine\n if (owningPackage.isV2Addon()) {\n let sections = [owningPackage.meta['app-js'], owningPackage.meta['fastboot-js']];\n for (let section of sections) {\n if (section) {\n let fromPackageRelativePath = explicitRelative(owningPackage.root, fromFile);\n for (let [inAppName, inAddonName] of Object.entries(section)) {\n if (inAddonName === fromPackageRelativePath) {\n return { owningEngine: this.owningEngine(owningPackage), inAppName };\n }\n }\n }\n }\n }\n }\n\n // check if this file is resolvable as a global component, and if so return\n // its dasherized name\n reverseComponentLookup(filename: string): string | undefined {\n const owningPackage = this.packageCache.ownerOfFile(filename);\n if (!owningPackage?.isV2Ember()) {\n return;\n }\n let engineConfig = this.options.engines.find(e => e.root === owningPackage.root);\n if (engineConfig) {\n // we're directly inside an engine, so we're potentially resolvable as a\n // global component\n let inAppName = engineRelativeName(owningPackage, filename);\n if (inAppName) {\n return this.tryReverseComponent(engineConfig.packageName, inAppName);\n }\n }\n\n let engineInfo = this.reverseSearchAppTree(owningPackage, filename);\n if (engineInfo) {\n // we're in some addon's app tree, so we're potentially resolvable as a\n // global component\n return this.tryReverseComponent(engineInfo.owningEngine.packageName, engineInfo.inAppName);\n }\n }\n\n private tryReverseComponent(inEngineName: string, relativePath: string): string | undefined {\n let extensionless = relativePath.replace(extensionsPattern(this.options.resolvableExtensions), '');\n let candidates = [...this.componentJSCandidates(inEngineName), ...this.componentTemplateCandidates(inEngineName)];\n for (let candidate of candidates) {\n if (extensionless.startsWith(`.${candidate.prefix}`) && extensionless.endsWith(candidate.suffix)) {\n return extensionless.slice(candidate.prefix.length + 1, extensionless.length - candidate.suffix.length);\n }\n }\n return undefined;\n }\n}\n\nfunction isExplicitlyExternal(specifier: string, fromPkg: V2Package): boolean {\n return Boolean(fromPkg.isV2Addon() && fromPkg.meta['externals'] && fromPkg.meta['externals'].includes(specifier));\n}\n\n// we don't want to allow things that resolve only by accident that are likely\n// to break in other setups. For example: import your dependencies'\n// dependencies, or importing your own name from within a monorepo (which will\n// work because of the symlinking) without setting up \"exports\" (which makes\n// your own name reliably resolvable)\nfunction reliablyResolvable(pkg: V2Package, packageName: string) {\n if (pkg.hasDependency(packageName)) {\n return true;\n }\n\n if (pkg.name === packageName && pkg.packageJSON.exports) {\n return true;\n }\n\n if (emberVirtualPeerDeps.has(packageName) || emberVirtualPackages.has(packageName)) {\n return true;\n }\n\n return false;\n}\n\n//\nfunction appImportInAppTree(inPackage: Package, inLogicalPackage: Package, importedPackageName: string): boolean {\n return inPackage !== inLogicalPackage && importedPackageName === inLogicalPackage.name;\n}\n\nfunction engineRelativeName(pkg: Package, filename: string): string | undefined {\n let outsideName = externalName(pkg.packageJSON, explicitRelative(pkg.root, filename));\n if (outsideName) {\n return '.' + outsideName.slice(pkg.name.length);\n }\n}\n"]}
|
package/src/resolver-loader.js
CHANGED
@@ -14,6 +14,7 @@ var _ResolverLoader_resolver, _ResolverLoader_configFile, _ResolverLoader_watche
|
|
14
14
|
Object.defineProperty(exports, "__esModule", { value: true });
|
15
15
|
exports.ResolverLoader = void 0;
|
16
16
|
const fs_extra_1 = require("fs-extra");
|
17
|
+
const module_resolver_options_1 = require("./module-resolver-options");
|
17
18
|
const module_resolver_1 = require("./module-resolver");
|
18
19
|
const shared_internals_1 = require("@embroider/shared-internals");
|
19
20
|
const path_1 = require("path");
|
@@ -37,7 +38,13 @@ class ResolverLoader {
|
|
37
38
|
}
|
38
39
|
get resolver() {
|
39
40
|
if (!__classPrivateFieldGet(this, _ResolverLoader_resolver, "f")) {
|
40
|
-
let config
|
41
|
+
let config;
|
42
|
+
if ((0, fs_extra_1.existsSync)(__classPrivateFieldGet(this, _ResolverLoader_configFile, "f"))) {
|
43
|
+
config = (0, fs_extra_1.readJSONSync)(__classPrivateFieldGet(this, _ResolverLoader_configFile, "f"));
|
44
|
+
}
|
45
|
+
else {
|
46
|
+
config = (0, module_resolver_options_1.buildResolverOptions)({});
|
47
|
+
}
|
41
48
|
__classPrivateFieldSet(this, _ResolverLoader_resolver, new module_resolver_1.Resolver(config), "f");
|
42
49
|
}
|
43
50
|
return __classPrivateFieldGet(this, _ResolverLoader_resolver, "f");
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"resolver-loader.js","sourceRoot":"","sources":["resolver-loader.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,
|
1
|
+
{"version":3,"file":"resolver-loader.js","sourceRoot":"","sources":["resolver-loader.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,uCAAoD;AACpD,uEAA+E;AAC/E,uDAA6C;AAC7C,kEAAwE;AACxE,+BAA4B;AAE5B,2BAAsC;AAEtC,MAAa,cAAc;IAKzB,YAAqB,OAAe,EAAE,KAAK,GAAG,KAAK;QAA9B,YAAO,GAAP,OAAO,CAAQ;QAJpC,2CAAgC;QAChC,6CAAoB;QACpB,0CAAgC;QAG9B,uBAAA,IAAI,8BAAe,IAAA,WAAI,EAAC,IAAA,4CAAyB,EAAC,IAAI,CAAC,OAAO,CAAC,EAAE,eAAe,CAAC,MAAA,CAAC;QAClF,IAAI,KAAK,EAAE,CAAC;YACV,uBAAA,IAAI,2BAAY,IAAA,UAAO,EAAC,uBAAA,IAAI,kCAAY,EAAE,EAAE,UAAU,EAAE,KAAK,EAAE,EAAE,GAAG,EAAE;gBACpE,uBAAA,IAAI,4BAAa,SAAS,MAAA,CAAC;YAC7B,CAAC,CAAC,MAAA,CAAC;QACL,CAAC;IACH,CAAC;IAED,KAAK;;QACH,MAAA,uBAAA,IAAI,+BAAS,0CAAE,KAAK,EAAE,CAAC;IACzB,CAAC;IAED,IAAI,QAAQ;QACV,IAAI,CAAC,uBAAA,IAAI,gCAAU,EAAE,CAAC;YACpB,IAAI,MAAe,CAAC;YACpB,IAAI,IAAA,qBAAU,EAAC,uBAAA,IAAI,kCAAY,CAAC,EAAE,CAAC;gBACjC,MAAM,GAAG,IAAA,uBAAY,EAAC,uBAAA,IAAI,kCAAY,CAAC,CAAC;YAC1C,CAAC;iBAAM,CAAC;gBACN,MAAM,GAAG,IAAA,8CAAoB,EAAC,EAAE,CAAC,CAAC;YACpC,CAAC;YACD,uBAAA,IAAI,4BAAa,IAAI,0BAAQ,CAAC,MAAM,CAAC,MAAA,CAAC;QACxC,CAAC;QACD,OAAO,uBAAA,IAAI,gCAAU,CAAC;IACxB,CAAC;CACF;AA9BD,wCA8BC","sourcesContent":["import { existsSync, readJSONSync } from 'fs-extra';\nimport { buildResolverOptions, type Options } from './module-resolver-options';\nimport { Resolver } from './module-resolver';\nimport { locateEmbroiderWorkingDir } from '@embroider/shared-internals';\nimport { join } from 'path';\nimport type { FSWatcher } from 'fs';\nimport { watch as fsWatch } from 'fs';\n\nexport class ResolverLoader {\n #resolver: Resolver | undefined;\n #configFile: string;\n #watcher: FSWatcher | undefined;\n\n constructor(readonly appRoot: string, watch = false) {\n this.#configFile = join(locateEmbroiderWorkingDir(this.appRoot), 'resolver.json');\n if (watch) {\n this.#watcher = fsWatch(this.#configFile, { persistent: false }, () => {\n this.#resolver = undefined;\n });\n }\n }\n\n close() {\n this.#watcher?.close();\n }\n\n get resolver(): Resolver {\n if (!this.#resolver) {\n let config: Options;\n if (existsSync(this.#configFile)) {\n config = readJSONSync(this.#configFile);\n } else {\n config = buildResolverOptions({});\n }\n this.#resolver = new Resolver(config);\n }\n return this.#resolver;\n }\n}\n"]}
|
@@ -18,6 +18,7 @@ const shared_internals_1 = require("@embroider/shared-internals");
|
|
18
18
|
const walk_sync_1 = __importDefault(require("walk-sync"));
|
19
19
|
const virtual_route_entrypoint_1 = require("./virtual-route-entrypoint");
|
20
20
|
const escape_string_regexp_1 = __importDefault(require("escape-string-regexp"));
|
21
|
+
const options_1 = require("./options");
|
21
22
|
const entrypointPattern = /(?<filename>.*)[\\/]-embroider-entrypoint.js/;
|
22
23
|
function decodeEntrypoint(filename) {
|
23
24
|
// Performance: avoid paying regex exec cost unless needed
|
@@ -37,6 +38,7 @@ function staticAppPathsPattern(staticAppPaths) {
|
|
37
38
|
}
|
38
39
|
}
|
39
40
|
function renderEntrypoint(resolver, { fromDir }) {
|
41
|
+
var _a;
|
40
42
|
// this is new
|
41
43
|
const owner = resolver.packageCache.ownerOfFile(fromDir);
|
42
44
|
let eagerModules = [];
|
@@ -56,7 +58,7 @@ function renderEntrypoint(resolver, { fromDir }) {
|
|
56
58
|
modulePrefix: isApp ? resolver.options.modulePrefix : engine.packageName,
|
57
59
|
appRelativePath: 'NOT_USED_DELETE_ME',
|
58
60
|
}, getAppFiles(fromDir), hasFastboot ? getFastbootFiles(owner.root) : new Set(), (0, shared_internals_1.extensionsPattern)(resolver.options.resolvableExtensions), staticAppPathsPattern(resolver.options.staticAppPaths), resolver.options.podModulePrefix);
|
59
|
-
let options = resolver.options.options;
|
61
|
+
let options = (_a = resolver.options.options) !== null && _a !== void 0 ? _a : (0, options_1.optionsWithDefaults)();
|
60
62
|
let requiredAppFiles = [appFiles.otherAppFiles];
|
61
63
|
if (!options.staticComponents) {
|
62
64
|
requiredAppFiles.push(appFiles.components);
|
@@ -72,7 +74,7 @@ function renderEntrypoint(resolver, { fromDir }) {
|
|
72
74
|
// will be inserted via a direct <link> tag.
|
73
75
|
if (!appFiles.engine.isApp && appFiles.engine.package.isLazyEngine()) {
|
74
76
|
styles.push({
|
75
|
-
path: '@embroider/
|
77
|
+
path: '@embroider/virtual/vendor.css',
|
76
78
|
});
|
77
79
|
}
|
78
80
|
let lazyEngines = [];
|
@@ -80,7 +82,7 @@ function renderEntrypoint(resolver, { fromDir }) {
|
|
80
82
|
// deliberately ignoring the app (which is the first entry in the engines array)
|
81
83
|
let [, ...childEngines] = resolver.options.engines;
|
82
84
|
for (let childEngine of childEngines) {
|
83
|
-
let target = `@embroider/
|
85
|
+
let target = `@embroider/virtual/compat-modules/${childEngine.packageName}`;
|
84
86
|
if (childEngine.isLazy) {
|
85
87
|
lazyEngines.push({
|
86
88
|
names: [childEngine.packageName],
|
@@ -118,7 +120,7 @@ function renderEntrypoint(resolver, { fromDir }) {
|
|
118
120
|
};
|
119
121
|
return {
|
120
122
|
src: entryTemplate(params),
|
121
|
-
watches: [],
|
123
|
+
watches: [fromDir],
|
122
124
|
};
|
123
125
|
}
|
124
126
|
const entryTemplate = (0, js_handlebars_1.compile)(`
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"virtual-entrypoint.js","sourceRoot":"","sources":["virtual-entrypoint.ts"],"names":[],"mappings":"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","sourcesContent":["import { AppFiles, type RouteFiles } from './app-files';\nimport { compile } from './js-handlebars';\nimport type { Resolver } from './module-resolver';\nimport type { CompatResolverOptions } from '../../compat/src/resolver-transform';\nimport { flatten, partition } from 'lodash';\nimport { join } from 'path';\nimport { extensionsPattern } from '@embroider/shared-internals';\nimport walkSync from 'walk-sync';\nimport type { V2AddonPackage } from '@embroider/shared-internals/src/package';\nimport { encodePublicRouteEntrypoint } from './virtual-route-entrypoint';\nimport escapeRegExp from 'escape-string-regexp';\n\nconst entrypointPattern = /(?<filename>.*)[\\\\/]-embroider-entrypoint.js/;\n\nexport function decodeEntrypoint(filename: string): { fromDir: string } | undefined {\n // Performance: avoid paying regex exec cost unless needed\n if (!filename.includes('-embroider-entrypoint')) {\n return;\n }\n let m = entrypointPattern.exec(filename);\n if (m) {\n return {\n fromDir: m.groups!.filename,\n };\n }\n}\n\nexport function staticAppPathsPattern(staticAppPaths: string[] | undefined): RegExp | undefined {\n if (staticAppPaths && staticAppPaths.length > 0) {\n return new RegExp('^(?:' + staticAppPaths.map(staticAppPath => escapeRegExp(staticAppPath)).join('|') + ')(?:$|/)');\n }\n}\n\nexport function renderEntrypoint(\n resolver: Resolver,\n { fromDir }: { fromDir: string }\n): { src: string; watches: string[] } {\n // this is new\n const owner = resolver.packageCache.ownerOfFile(fromDir);\n\n let eagerModules: string[] = [];\n\n if (!owner) {\n throw new Error('Owner expected'); // ToDo: Really bad error, update message\n }\n\n let engine = resolver.owningEngine(owner);\n let isApp = owner?.root === resolver.options.engines[0]!.root;\n let hasFastboot = Boolean(resolver.options.engines[0]!.activeAddons.find(a => a.name === 'ember-cli-fastboot'));\n\n let appFiles = new AppFiles(\n {\n package: owner,\n addons: new Map(\n engine.activeAddons.map(addon => [\n resolver.packageCache.get(addon.root) as V2AddonPackage,\n addon.canResolveFromFile,\n ])\n ),\n isApp,\n modulePrefix: isApp ? resolver.options.modulePrefix : engine.packageName,\n appRelativePath: 'NOT_USED_DELETE_ME',\n },\n getAppFiles(fromDir),\n hasFastboot ? getFastbootFiles(owner.root) : new Set(),\n extensionsPattern(resolver.options.resolvableExtensions),\n staticAppPathsPattern(resolver.options.staticAppPaths),\n resolver.options.podModulePrefix\n );\n\n let options = (resolver.options as CompatResolverOptions).options;\n\n let requiredAppFiles = [appFiles.otherAppFiles];\n if (!options.staticComponents) {\n requiredAppFiles.push(appFiles.components);\n }\n if (!options.staticHelpers) {\n requiredAppFiles.push(appFiles.helpers);\n }\n if (!options.staticModifiers) {\n requiredAppFiles.push(appFiles.modifiers);\n }\n\n let styles = [];\n // only import styles from engines with a parent (this excludeds the parent application) as their styles\n // will be inserted via a direct <link> tag.\n if (!appFiles.engine.isApp && appFiles.engine.package.isLazyEngine()) {\n styles.push({\n path: '@embroider/core/vendor.css',\n });\n }\n\n let lazyEngines: { names: string[]; path: string }[] = [];\n\n if (isApp) {\n // deliberately ignoring the app (which is the first entry in the engines array)\n let [, ...childEngines] = resolver.options.engines;\n for (let childEngine of childEngines) {\n let target = `@embroider/core/entrypoint/${childEngine.packageName}`;\n\n if (childEngine.isLazy) {\n lazyEngines.push({\n names: [childEngine.packageName],\n path: target,\n });\n } else {\n eagerModules.push(target);\n }\n }\n }\n\n let lazyRoutes: { names: string[]; path: string }[] = [];\n for (let [routeName, routeFiles] of appFiles.routeFiles.children) {\n splitRoute(\n routeName,\n routeFiles,\n resolver.options.splitAtRoutes,\n (_: string, filename: string) => {\n requiredAppFiles.push([filename]);\n },\n (routeNames: string[], _files: string[]) => {\n lazyRoutes.push({\n names: routeNames,\n path: encodePublicRouteEntrypoint(routeNames, _files),\n });\n }\n );\n }\n\n let [fastboot, nonFastboot] = partition(excludeDotFiles(flatten(requiredAppFiles)), file =>\n appFiles.isFastbootOnly.get(file)\n );\n\n let amdModules = nonFastboot.map(file => importPaths(resolver, appFiles, file));\n let fastbootOnlyAmdModules = fastboot.map(file => importPaths(resolver, appFiles, file));\n\n let params = {\n amdModules,\n fastbootOnlyAmdModules,\n lazyRoutes,\n lazyEngines,\n eagerModules,\n styles,\n // this is a backward-compatibility feature: addons can force inclusion of modules.\n defineModulesFrom: './-embroider-implicit-modules.js',\n };\n\n return {\n src: entryTemplate(params),\n watches: [],\n };\n}\n\nconst entryTemplate = compile(`\nimport { macroCondition, getGlobalConfig } from '@embroider/macros';\n\n{{#if styles}}\n if (macroCondition(!getGlobalConfig().fastboot?.isRunning)) {\n {{#each styles as |stylePath| ~}}\n await import(\"{{js-string-escape stylePath.path}}\");\n {{/each}}\n }\n{{/if}}\n\n{{#if defineModulesFrom ~}}\n import implicitModules from \"{{js-string-escape defineModulesFrom}}\";\n{{/if}}\n\n{{#each eagerModules as |eagerModule| ~}}\n import \"{{js-string-escape eagerModule}}\";\n{{/each}}\n\n{{#each amdModules as |amdModule index| ~}}\n import * as amdModule{{index}} from \"{{js-string-escape amdModule.buildtime}}\"\n{{/each}}\n\nlet exportFastbootModules = {};\n\n{{#if fastbootOnlyAmdModules}}\n if (macroCondition(getGlobalConfig().fastboot?.isRunning)) {\n let fastbootModules = {};\n\n {{#each fastbootOnlyAmdModules as |amdModule| ~}}\n fastbootModules[\"{{js-string-escape amdModule.runtime}}\"] = import(\"{{js-string-escape amdModule.buildtime}}\");\n {{/each}}\n\n const resolvedValues = await Promise.all(Object.values(fastbootModules));\n\n Object.keys(fastbootModules).forEach((k, i) => {\n exportFasbootModules[k] = resolvedValues[i];\n })\n }\n{{/if}}\n\n\n{{#if lazyRoutes}}\nwindow._embroiderRouteBundles_ = [\n {{#each lazyRoutes as |route|}}\n {\n names: {{json-stringify route.names}},\n load: function() {\n return import(\"{{js-string-escape route.path}}\");\n }\n },\n {{/each}}\n]\n{{/if}}\n\n{{#if lazyEngines}}\nwindow._embroiderEngineBundles_ = [\n {{#each lazyEngines as |engine|}}\n {\n names: {{json-stringify engine.names}},\n load: function() {\n return import(\"{{js-string-escape engine.path}}\");\n }\n },\n {{/each}}\n]\n{{/if}}\n\nexport default Object.assign(\n {},\n implicitModules,\n {\n {{#each amdModules as |amdModule index| ~}}\n \"{{js-string-escape amdModule.runtime}}\": amdModule{{index}},\n {{/each}}\n },\n exportFastbootModules\n);\n`) as (params: {\n amdModules: { runtime: string; buildtime: string }[];\n fastbootOnlyAmdModules?: { runtime: string; buildtime: string }[];\n defineModulesFrom?: string;\n eagerModules?: string[];\n lazyRoutes?: { names: string[]; path: string }[];\n lazyEngines?: { names: string[]; path: string }[];\n styles?: { path: string }[];\n}) => string;\n\nfunction excludeDotFiles(files: string[]) {\n return files.filter(file => !file.startsWith('.') && !file.includes('/.'));\n}\n\nexport function importPaths(resolver: Resolver, { engine }: AppFiles, engineRelativePath: string) {\n let resolvableExtensionsPattern = extensionsPattern(resolver.options.resolvableExtensions);\n let noHBS = engineRelativePath.replace(resolvableExtensionsPattern, '').replace(/\\.hbs$/, '');\n return {\n runtime: `${engine.modulePrefix}/${noHBS}`,\n buildtime: `./${engineRelativePath}`,\n };\n}\n\nexport function splitRoute(\n routeName: string,\n files: RouteFiles,\n splitAtRoutes: (RegExp | string)[] | undefined,\n addToParent: (routeName: string, filename: string) => void,\n addLazyBundle: (routeNames: string[], files: string[]) => void\n) {\n let shouldSplit = routeName && shouldSplitRoute(routeName, splitAtRoutes);\n let ownFiles = [];\n let ownNames = new Set() as Set<string>;\n\n if (files.template) {\n if (shouldSplit) {\n ownFiles.push(files.template);\n ownNames.add(routeName);\n } else {\n addToParent(routeName, files.template);\n }\n }\n\n if (files.controller) {\n if (shouldSplit) {\n ownFiles.push(files.controller);\n ownNames.add(routeName);\n } else {\n addToParent(routeName, files.controller);\n }\n }\n\n if (files.route) {\n if (shouldSplit) {\n ownFiles.push(files.route);\n ownNames.add(routeName);\n } else {\n addToParent(routeName, files.route);\n }\n }\n\n for (let [childName, childFiles] of files.children) {\n splitRoute(\n `${routeName}.${childName}`,\n childFiles,\n splitAtRoutes,\n (childRouteName: string, childFile: string) => {\n // this is our child calling \"addToParent\"\n if (shouldSplit) {\n ownFiles.push(childFile);\n ownNames.add(childRouteName);\n } else {\n addToParent(childRouteName, childFile);\n }\n },\n (routeNames: string[], files: string[]) => {\n addLazyBundle(routeNames, files);\n }\n );\n }\n\n if (ownFiles.length > 0) {\n addLazyBundle([...ownNames], ownFiles);\n }\n}\n\nfunction shouldSplitRoute(routeName: string, splitAtRoutes: (RegExp | string)[] | undefined) {\n if (!splitAtRoutes) {\n return false;\n }\n return splitAtRoutes.find(pattern => {\n if (typeof pattern === 'string') {\n return pattern === routeName;\n } else {\n return pattern.test(routeName);\n }\n });\n}\n\nexport function getAppFiles(appRoot: string): Set<string> {\n const files: string[] = walkSync(appRoot, {\n ignore: ['_babel_filter_.js', 'app.js', 'assets', 'testem.js', 'node_modules'],\n });\n return new Set(files);\n}\n\nexport function getFastbootFiles(appRoot: string): Set<string> {\n const appDirPath = join(appRoot, '_fastboot_');\n const files: string[] = walkSync(appDirPath);\n return new Set(files);\n}\n"]}
|
1
|
+
{"version":3,"file":"virtual-entrypoint.js","sourceRoot":"","sources":["virtual-entrypoint.ts"],"names":[],"mappings":"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","sourcesContent":["import { AppFiles, type RouteFiles } from './app-files';\nimport { compile } from './js-handlebars';\nimport type { Resolver } from './module-resolver';\nimport type { CompatResolverOptions } from '../../compat/src/resolver-transform';\nimport { flatten, partition } from 'lodash';\nimport { join } from 'path';\nimport { extensionsPattern } from '@embroider/shared-internals';\nimport walkSync from 'walk-sync';\nimport type { V2AddonPackage } from '@embroider/shared-internals/src/package';\nimport { encodePublicRouteEntrypoint } from './virtual-route-entrypoint';\nimport escapeRegExp from 'escape-string-regexp';\nimport { optionsWithDefaults } from './options';\n\nconst entrypointPattern = /(?<filename>.*)[\\\\/]-embroider-entrypoint.js/;\n\nexport function decodeEntrypoint(filename: string): { fromDir: string } | undefined {\n // Performance: avoid paying regex exec cost unless needed\n if (!filename.includes('-embroider-entrypoint')) {\n return;\n }\n let m = entrypointPattern.exec(filename);\n if (m) {\n return {\n fromDir: m.groups!.filename,\n };\n }\n}\n\nexport function staticAppPathsPattern(staticAppPaths: string[] | undefined): RegExp | undefined {\n if (staticAppPaths && staticAppPaths.length > 0) {\n return new RegExp('^(?:' + staticAppPaths.map(staticAppPath => escapeRegExp(staticAppPath)).join('|') + ')(?:$|/)');\n }\n}\n\nexport function renderEntrypoint(\n resolver: Resolver,\n { fromDir }: { fromDir: string }\n): { src: string; watches: string[] } {\n // this is new\n const owner = resolver.packageCache.ownerOfFile(fromDir);\n\n let eagerModules: string[] = [];\n\n if (!owner) {\n throw new Error('Owner expected'); // ToDo: Really bad error, update message\n }\n\n let engine = resolver.owningEngine(owner);\n let isApp = owner?.root === resolver.options.engines[0]!.root;\n let hasFastboot = Boolean(resolver.options.engines[0]!.activeAddons.find(a => a.name === 'ember-cli-fastboot'));\n\n let appFiles = new AppFiles(\n {\n package: owner,\n addons: new Map(\n engine.activeAddons.map(addon => [\n resolver.packageCache.get(addon.root) as V2AddonPackage,\n addon.canResolveFromFile,\n ])\n ),\n isApp,\n modulePrefix: isApp ? resolver.options.modulePrefix : engine.packageName,\n appRelativePath: 'NOT_USED_DELETE_ME',\n },\n getAppFiles(fromDir),\n hasFastboot ? getFastbootFiles(owner.root) : new Set(),\n extensionsPattern(resolver.options.resolvableExtensions),\n staticAppPathsPattern(resolver.options.staticAppPaths),\n resolver.options.podModulePrefix\n );\n\n let options = (resolver.options as CompatResolverOptions).options ?? optionsWithDefaults();\n\n let requiredAppFiles = [appFiles.otherAppFiles];\n if (!options.staticComponents) {\n requiredAppFiles.push(appFiles.components);\n }\n if (!options.staticHelpers) {\n requiredAppFiles.push(appFiles.helpers);\n }\n if (!options.staticModifiers) {\n requiredAppFiles.push(appFiles.modifiers);\n }\n\n let styles = [];\n // only import styles from engines with a parent (this excludeds the parent application) as their styles\n // will be inserted via a direct <link> tag.\n if (!appFiles.engine.isApp && appFiles.engine.package.isLazyEngine()) {\n styles.push({\n path: '@embroider/virtual/vendor.css',\n });\n }\n\n let lazyEngines: { names: string[]; path: string }[] = [];\n\n if (isApp) {\n // deliberately ignoring the app (which is the first entry in the engines array)\n let [, ...childEngines] = resolver.options.engines;\n for (let childEngine of childEngines) {\n let target = `@embroider/virtual/compat-modules/${childEngine.packageName}`;\n\n if (childEngine.isLazy) {\n lazyEngines.push({\n names: [childEngine.packageName],\n path: target,\n });\n } else {\n eagerModules.push(target);\n }\n }\n }\n\n let lazyRoutes: { names: string[]; path: string }[] = [];\n for (let [routeName, routeFiles] of appFiles.routeFiles.children) {\n splitRoute(\n routeName,\n routeFiles,\n resolver.options.splitAtRoutes,\n (_: string, filename: string) => {\n requiredAppFiles.push([filename]);\n },\n (routeNames: string[], _files: string[]) => {\n lazyRoutes.push({\n names: routeNames,\n path: encodePublicRouteEntrypoint(routeNames, _files),\n });\n }\n );\n }\n\n let [fastboot, nonFastboot] = partition(excludeDotFiles(flatten(requiredAppFiles)), file =>\n appFiles.isFastbootOnly.get(file)\n );\n\n let amdModules = nonFastboot.map(file => importPaths(resolver, appFiles, file));\n let fastbootOnlyAmdModules = fastboot.map(file => importPaths(resolver, appFiles, file));\n\n let params = {\n amdModules,\n fastbootOnlyAmdModules,\n lazyRoutes,\n lazyEngines,\n eagerModules,\n styles,\n // this is a backward-compatibility feature: addons can force inclusion of modules.\n defineModulesFrom: './-embroider-implicit-modules.js',\n };\n\n return {\n src: entryTemplate(params),\n watches: [fromDir],\n };\n}\n\nconst entryTemplate = compile(`\nimport { macroCondition, getGlobalConfig } from '@embroider/macros';\n\n{{#if styles}}\n if (macroCondition(!getGlobalConfig().fastboot?.isRunning)) {\n {{#each styles as |stylePath| ~}}\n await import(\"{{js-string-escape stylePath.path}}\");\n {{/each}}\n }\n{{/if}}\n\n{{#if defineModulesFrom ~}}\n import implicitModules from \"{{js-string-escape defineModulesFrom}}\";\n{{/if}}\n\n{{#each eagerModules as |eagerModule| ~}}\n import \"{{js-string-escape eagerModule}}\";\n{{/each}}\n\n{{#each amdModules as |amdModule index| ~}}\n import * as amdModule{{index}} from \"{{js-string-escape amdModule.buildtime}}\"\n{{/each}}\n\nlet exportFastbootModules = {};\n\n{{#if fastbootOnlyAmdModules}}\n if (macroCondition(getGlobalConfig().fastboot?.isRunning)) {\n let fastbootModules = {};\n\n {{#each fastbootOnlyAmdModules as |amdModule| ~}}\n fastbootModules[\"{{js-string-escape amdModule.runtime}}\"] = import(\"{{js-string-escape amdModule.buildtime}}\");\n {{/each}}\n\n const resolvedValues = await Promise.all(Object.values(fastbootModules));\n\n Object.keys(fastbootModules).forEach((k, i) => {\n exportFasbootModules[k] = resolvedValues[i];\n })\n }\n{{/if}}\n\n\n{{#if lazyRoutes}}\nwindow._embroiderRouteBundles_ = [\n {{#each lazyRoutes as |route|}}\n {\n names: {{json-stringify route.names}},\n load: function() {\n return import(\"{{js-string-escape route.path}}\");\n }\n },\n {{/each}}\n]\n{{/if}}\n\n{{#if lazyEngines}}\nwindow._embroiderEngineBundles_ = [\n {{#each lazyEngines as |engine|}}\n {\n names: {{json-stringify engine.names}},\n load: function() {\n return import(\"{{js-string-escape engine.path}}\");\n }\n },\n {{/each}}\n]\n{{/if}}\n\nexport default Object.assign(\n {},\n implicitModules,\n {\n {{#each amdModules as |amdModule index| ~}}\n \"{{js-string-escape amdModule.runtime}}\": amdModule{{index}},\n {{/each}}\n },\n exportFastbootModules\n);\n`) as (params: {\n amdModules: { runtime: string; buildtime: string }[];\n fastbootOnlyAmdModules?: { runtime: string; buildtime: string }[];\n defineModulesFrom?: string;\n eagerModules?: string[];\n lazyRoutes?: { names: string[]; path: string }[];\n lazyEngines?: { names: string[]; path: string }[];\n styles?: { path: string }[];\n}) => string;\n\nfunction excludeDotFiles(files: string[]) {\n return files.filter(file => !file.startsWith('.') && !file.includes('/.'));\n}\n\nexport function importPaths(resolver: Resolver, { engine }: AppFiles, engineRelativePath: string) {\n let resolvableExtensionsPattern = extensionsPattern(resolver.options.resolvableExtensions);\n let noHBS = engineRelativePath.replace(resolvableExtensionsPattern, '').replace(/\\.hbs$/, '');\n return {\n runtime: `${engine.modulePrefix}/${noHBS}`,\n buildtime: `./${engineRelativePath}`,\n };\n}\n\nexport function splitRoute(\n routeName: string,\n files: RouteFiles,\n splitAtRoutes: (RegExp | string)[] | undefined,\n addToParent: (routeName: string, filename: string) => void,\n addLazyBundle: (routeNames: string[], files: string[]) => void\n) {\n let shouldSplit = routeName && shouldSplitRoute(routeName, splitAtRoutes);\n let ownFiles = [];\n let ownNames = new Set() as Set<string>;\n\n if (files.template) {\n if (shouldSplit) {\n ownFiles.push(files.template);\n ownNames.add(routeName);\n } else {\n addToParent(routeName, files.template);\n }\n }\n\n if (files.controller) {\n if (shouldSplit) {\n ownFiles.push(files.controller);\n ownNames.add(routeName);\n } else {\n addToParent(routeName, files.controller);\n }\n }\n\n if (files.route) {\n if (shouldSplit) {\n ownFiles.push(files.route);\n ownNames.add(routeName);\n } else {\n addToParent(routeName, files.route);\n }\n }\n\n for (let [childName, childFiles] of files.children) {\n splitRoute(\n `${routeName}.${childName}`,\n childFiles,\n splitAtRoutes,\n (childRouteName: string, childFile: string) => {\n // this is our child calling \"addToParent\"\n if (shouldSplit) {\n ownFiles.push(childFile);\n ownNames.add(childRouteName);\n } else {\n addToParent(childRouteName, childFile);\n }\n },\n (routeNames: string[], files: string[]) => {\n addLazyBundle(routeNames, files);\n }\n );\n }\n\n if (ownFiles.length > 0) {\n addLazyBundle([...ownNames], ownFiles);\n }\n}\n\nfunction shouldSplitRoute(routeName: string, splitAtRoutes: (RegExp | string)[] | undefined) {\n if (!splitAtRoutes) {\n return false;\n }\n return splitAtRoutes.find(pattern => {\n if (typeof pattern === 'string') {\n return pattern === routeName;\n } else {\n return pattern.test(routeName);\n }\n });\n}\n\nexport function getAppFiles(appRoot: string): Set<string> {\n const files: string[] = walkSync(appRoot, {\n ignore: ['_babel_filter_.js', 'app.js', 'assets', 'testem.js', 'node_modules'],\n });\n return new Set(files);\n}\n\nexport function getFastbootFiles(appRoot: string): Set<string> {\n const appDirPath = join(appRoot, '_fastboot_');\n const files: string[] = walkSync(appDirPath);\n return new Set(files);\n}\n"]}
|