@embroider/core 3.5.0 → 3.5.1-unstable.0f6c294
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 +22 -11
- package/src/app-files.d.ts +3 -5
- package/src/app-files.js +25 -8
- package/src/app-files.js.map +1 -1
- package/src/index.d.ts +5 -5
- package/src/index.js +3 -4
- package/src/index.js.map +1 -1
- package/src/measure-concat.js +1 -2
- package/src/measure-concat.js.map +1 -1
- package/src/messages.js.map +1 -1
- package/src/module-request.d.ts +44 -0
- package/src/module-request.js +100 -0
- package/src/module-request.js.map +1 -0
- package/src/module-resolver-options.d.ts +42 -0
- package/src/module-resolver-options.js +164 -0
- package/src/module-resolver-options.js.map +1 -0
- package/src/module-resolver.d.ts +24 -61
- package/src/module-resolver.js +469 -322
- package/src/module-resolver.js.map +1 -1
- package/src/node-resolve.d.ts +35 -0
- package/src/node-resolve.js +130 -0
- package/src/node-resolve.js.map +1 -0
- package/src/options.d.ts +0 -7
- package/src/options.js +0 -1
- package/src/options.js.map +1 -1
- package/src/packager.d.ts +0 -8
- package/src/packager.js +0 -9
- package/src/packager.js.map +1 -1
- package/src/resolver-loader.js +8 -1
- package/src/resolver-loader.js.map +1 -1
- package/src/virtual-content.d.ts +32 -12
- package/src/virtual-content.js +83 -184
- package/src/virtual-content.js.map +1 -1
- package/src/virtual-entrypoint.d.ts +21 -0
- package/src/virtual-entrypoint.js +273 -0
- package/src/virtual-entrypoint.js.map +1 -0
- package/src/virtual-route-entrypoint.d.ts +10 -0
- package/src/virtual-route-entrypoint.js +62 -0
- package/src/virtual-route-entrypoint.js.map +1 -0
- package/src/virtual-test-support-styles.d.ts +7 -0
- package/src/virtual-test-support-styles.js +61 -0
- package/src/virtual-test-support-styles.js.map +1 -0
- package/src/virtual-test-support.d.ts +7 -0
- package/src/virtual-test-support.js +65 -0
- package/src/virtual-test-support.js.map +1 -0
- package/src/virtual-vendor-styles.d.ts +8 -0
- package/src/virtual-vendor-styles.js +83 -0
- package/src/virtual-vendor-styles.js.map +1 -0
- package/src/virtual-vendor.d.ts +7 -0
- package/src/virtual-vendor.js +53 -0
- package/src/virtual-vendor.js.map +1 -0
- package/types/virtual/index.d.ts +9 -0
- package/types/virtual/index.js +3 -0
- package/src/asset.d.ts +0 -32
- package/src/asset.js +0 -3
- package/src/asset.js.map +0 -1
- package/src/ember-html.d.ts +0 -43
- package/src/ember-html.js +0 -110
- package/src/ember-html.js.map +0 -1
- package/src/portable-babel-config.d.ts +0 -11
- package/src/portable-babel-config.js +0 -132
- package/src/portable-babel-config.js.map +0 -1
- package/src/portable-babel-launcher.d.ts +0 -6
- package/src/portable-babel-launcher.js +0 -75
- package/src/portable-babel-launcher.js.map +0 -1
- package/src/to-broccoli-plugin.d.ts +0 -8
- package/src/to-broccoli-plugin.js +0 -30
- package/src/to-broccoli-plugin.js.map +0 -1
@@ -0,0 +1,164 @@
|
|
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
|
+
modulePrefix,
|
34
|
+
staticAppPaths: (_b = inputs.staticAppPaths) !== null && _b !== void 0 ? _b : [],
|
35
|
+
emberVersion: appPackage.dependencies.find(d => d.name === 'ember-source').version,
|
36
|
+
splitAtRoutes: inputs.splitAtRoutes,
|
37
|
+
podModulePrefix: inputs.podModulePrefix,
|
38
|
+
};
|
39
|
+
if (inputs.extend) {
|
40
|
+
return inputs.extend(output, allActiveAddons);
|
41
|
+
}
|
42
|
+
return output;
|
43
|
+
}
|
44
|
+
function resolvableExtensions() {
|
45
|
+
let fromEnv = process.env.EMBROIDER_RESOLVABLE_EXTENSIONS;
|
46
|
+
if (fromEnv) {
|
47
|
+
return fromEnv.split(',');
|
48
|
+
}
|
49
|
+
else {
|
50
|
+
return ['.mjs', '.gjs', '.js', '.mts', '.gts', '.ts', '.hbs', '.hbs.js', '.json'];
|
51
|
+
}
|
52
|
+
}
|
53
|
+
function partitionEngines(appPackage, modulePrefix, extraDeps) {
|
54
|
+
let queue = [
|
55
|
+
{
|
56
|
+
package: appPackage,
|
57
|
+
addons: new Map(),
|
58
|
+
isApp: true,
|
59
|
+
modulePrefix,
|
60
|
+
appRelativePath: '.',
|
61
|
+
},
|
62
|
+
];
|
63
|
+
let done = [];
|
64
|
+
let seenEngines = new Set();
|
65
|
+
while (true) {
|
66
|
+
let current = queue.shift();
|
67
|
+
if (!current) {
|
68
|
+
break;
|
69
|
+
}
|
70
|
+
findActiveAddons(current.package, current, extraDeps);
|
71
|
+
for (let addon of current.addons.keys()) {
|
72
|
+
if (addon.isEngine() && !seenEngines.has(addon)) {
|
73
|
+
seenEngines.add(addon);
|
74
|
+
queue.push({
|
75
|
+
package: addon,
|
76
|
+
addons: new Map(),
|
77
|
+
isApp: !current,
|
78
|
+
modulePrefix: addon.name,
|
79
|
+
appRelativePath: (0, shared_internals_1.explicitRelative)(appPackage.root, addon.root),
|
80
|
+
});
|
81
|
+
}
|
82
|
+
}
|
83
|
+
done.push(current);
|
84
|
+
}
|
85
|
+
return done.map(engine => ({
|
86
|
+
packageName: engine.package.name,
|
87
|
+
// we need to use the real path here because webpack requests always use the real path i.e. follow symlinks
|
88
|
+
root: (0, fs_extra_1.realpathSync)(engine.package.root),
|
89
|
+
fastbootFiles: {},
|
90
|
+
activeAddons: [...engine.addons]
|
91
|
+
.map(([addon, canResolveFromFile]) => ({
|
92
|
+
name: addon.name,
|
93
|
+
root: addon.root,
|
94
|
+
canResolveFromFile,
|
95
|
+
}))
|
96
|
+
// the traditional order is the order in which addons will run, such
|
97
|
+
// that the last one wins. Our resolver's order is the order to
|
98
|
+
// search, so first one wins.
|
99
|
+
.reverse(),
|
100
|
+
isLazy: engine.package.isLazyEngine(),
|
101
|
+
}));
|
102
|
+
}
|
103
|
+
// recurse to find all active addons that don't cross an engine boundary.
|
104
|
+
// Inner engines themselves will be returned, but not those engines' children.
|
105
|
+
// The output set's insertion order is the proper ember-cli compatible
|
106
|
+
// ordering of the addons.
|
107
|
+
function findActiveAddons(pkg, engine, extraDeps, isChild = false) {
|
108
|
+
for (let child of activeAddonChildren(pkg, extraDeps)) {
|
109
|
+
if (!child.isEngine()) {
|
110
|
+
findActiveAddons(child, engine, extraDeps, true);
|
111
|
+
}
|
112
|
+
let canResolveFrom = (0, path_1.resolve)(pkg.root, 'package.json');
|
113
|
+
engine.addons.set(child, canResolveFrom);
|
114
|
+
}
|
115
|
+
// ensure addons are applied in the correct order, if set (via @embroider/compat/v1-addon)
|
116
|
+
if (!isChild) {
|
117
|
+
engine.addons = new Map([...engine.addons].sort(([a], [b]) => {
|
118
|
+
return (a.meta['order-index'] || 0) - (b.meta['order-index'] || 0);
|
119
|
+
}));
|
120
|
+
}
|
121
|
+
}
|
122
|
+
function activeAddonChildren(pkg, extraDeps) {
|
123
|
+
let result = pkg.dependencies.filter(isActiveAddon).filter(
|
124
|
+
// When looking for child addons, we want to ignore 'peerDependencies' of
|
125
|
+
// a given package, to align with how ember-cli resolves addons. So here
|
126
|
+
// we only include dependencies that are definitely active due to one of
|
127
|
+
// the other sections.
|
128
|
+
addon => pkg.categorizeDependency(addon.name) !== 'peerDependencies');
|
129
|
+
let extras = extraDeps.get(pkg.root);
|
130
|
+
if (extras) {
|
131
|
+
result = [...result, ...extras];
|
132
|
+
}
|
133
|
+
return result.sort(orderAddons);
|
134
|
+
}
|
135
|
+
function isActiveAddon(pkg) {
|
136
|
+
// stage1 already took care of converting everything that's actually active
|
137
|
+
// into v2 addons. If it's not a v2 addon, we don't want it.
|
138
|
+
//
|
139
|
+
// We can encounter v1 addons here when there is inactive stuff floating
|
140
|
+
// around in the node_modules that accidentally satisfy something like an
|
141
|
+
// optional peer dep.
|
142
|
+
return pkg.isV2Addon();
|
143
|
+
}
|
144
|
+
function orderAddons(depA, depB) {
|
145
|
+
let depAIdx = 0;
|
146
|
+
let depBIdx = 0;
|
147
|
+
if (depA && depA.meta && depA.isV2Addon()) {
|
148
|
+
depAIdx = depA.meta['order-index'] || 0;
|
149
|
+
}
|
150
|
+
if (depB && depB.meta && depB.isV2Addon()) {
|
151
|
+
depBIdx = depB.meta['order-index'] || 0;
|
152
|
+
}
|
153
|
+
return depAIdx - depBIdx;
|
154
|
+
}
|
155
|
+
function findAllActiveAddons(appPackage, extraDeps) {
|
156
|
+
let result = appPackage.findDescendants(isActiveAddon);
|
157
|
+
let extras = extraDeps.get(appPackage.root);
|
158
|
+
if (extras) {
|
159
|
+
let extraDescendants = (0, flatMap_1.default)(extras, dep => dep.findDescendants(isActiveAddon));
|
160
|
+
result = [...result, ...extras, ...extraDescendants];
|
161
|
+
}
|
162
|
+
return result.sort(orderAddons);
|
163
|
+
}
|
164
|
+
//# 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":";;;;;AA+BA,oDA0CC;AAzED,kEAAuH;AAEvH,+BAA8C;AAC9C,uCAAwC;AACxC,6DAAqC;AA2BrC,SAAgB,oBAAoB,CAAoB,MAQvD;;IACC,IAAI,UAAmB,CAAC;IACxB,IAAI,MAAM,CAAC,UAAU,EAAE,CAAC;QACtB,UAAU,GAAG,MAAM,CAAC,UAAU,CAAC;IACjC,CAAC;SAAM,CAAC;QACN,IAAI,YAAY,GAAG,wCAAqB,CAAC,MAAM,CAAC,WAAW,EAAE,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC;QAC5E,UAAU,GAAG,YAAY,CAAC,GAAG,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC;IACtD,CAAC;IAED,IAAI,SAAS,GAAG,MAAA,MAAM,CAAC,SAAS,mCAAI,IAAI,GAAG,EAAE,CAAC;IAE9C,IAAI,eAAe,GAAmB,mBAAmB,CAAC,UAAU,EAAE,SAAS,CAAC,CAAC;IACjF,IAAI,cAAc,GAAG,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,GAAG,eAAe,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC;IACpG,IAAI,aAAa,GAAG,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,GAAG,eAAe,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC;IAClG,IAAI,YAAY,GAAG,UAAU,CAAC,IAAI,CAAC;IACnC,IAAI,OAAO,GAAG,gBAAgB,CAAC,UAAU,EAAE,YAAY,EAAE,SAAS,CAAC,CAAC;IAEpE,IAAI,MAAM,GAAY;QACpB,cAAc;QACd,aAAa;QACb,oBAAoB,EAAE,oBAAoB,EAAE;QAC5C,OAAO,EAAE,UAAU,CAAC,IAAI;QACxB,OAAO;QACP,YAAY;QACZ,cAAc,EAAE,MAAA,MAAM,CAAC,cAAc,mCAAI,EAAE;QAC3C,YAAY,EAAE,UAAU,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,cAAc,CAAE,CAAC,OAAO;QACnF,aAAa,EAAE,MAAM,CAAC,aAAa;QACnC,eAAe,EAAE,MAAM,CAAC,eAAe;KACxC,CAAC;IAEF,IAAI,MAAM,CAAC,MAAM,EAAE,CAAC;QAClB,OAAO,MAAM,CAAC,MAAM,CAAC,MAAW,EAAE,eAAe,CAAC,CAAC;IACrD,CAAC;IACD,OAAO,MAAW,CAAC;AACrB,CAAC;AAED,SAAS,oBAAoB;IAC3B,IAAI,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC,+BAA+B,CAAC;IAC1D,IAAI,OAAO,EAAE,CAAC;QACZ,OAAO,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IAC5B,CAAC;SAAM,CAAC;QACN,OAAO,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,OAAO,CAAC,CAAC;IACpF,CAAC;AACH,CAAC;AAED,SAAS,gBAAgB,CACvB,UAAmB,EACnB,YAAoB,EACpB,SAAsC;IAEtC,IAAI,KAAK,GAAa;QACpB;YACE,OAAO,EAAE,UAAU;YACnB,MAAM,EAAE,IAAI,GAAG,EAAE;YACjB,KAAK,EAAE,IAAI;YACX,YAAY;YACZ,eAAe,EAAE,GAAG;SACrB;KACF,CAAC;IACF,IAAI,IAAI,GAAa,EAAE,CAAC;IACxB,IAAI,WAAW,GAAiB,IAAI,GAAG,EAAE,CAAC;IAC1C,OAAO,IAAI,EAAE,CAAC;QACZ,IAAI,OAAO,GAAG,KAAK,CAAC,KAAK,EAAE,CAAC;QAC5B,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,MAAM;QACR,CAAC;QACD,gBAAgB,CAAC,OAAO,CAAC,OAAO,EAAE,OAAO,EAAE,SAAS,CAAC,CAAC;QACtD,KAAK,IAAI,KAAK,IAAI,OAAO,CAAC,MAAM,CAAC,IAAI,EAAE,EAAE,CAAC;YACxC,IAAI,KAAK,CAAC,QAAQ,EAAE,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC;gBAChD,WAAW,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;gBACvB,KAAK,CAAC,IAAI,CAAC;oBACT,OAAO,EAAE,KAAK;oBACd,MAAM,EAAE,IAAI,GAAG,EAAE;oBACjB,KAAK,EAAE,CAAC,OAAO;oBACf,YAAY,EAAE,KAAK,CAAC,IAAI;oBACxB,eAAe,EAAE,IAAA,mCAAgB,EAAC,UAAU,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,CAAC;iBAC/D,CAAC,CAAC;YACL,CAAC;QACH,CAAC;QACD,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IACrB,CAAC;IAED,OAAO,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;QACzB,WAAW,EAAE,MAAM,CAAC,OAAO,CAAC,IAAI;QAChC,2GAA2G;QAC3G,IAAI,EAAE,IAAA,uBAAY,EAAC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC;QACvC,aAAa,EAAE,EAAE;QACjB,YAAY,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC;aAC7B,GAAG,CAAC,CAAC,CAAC,KAAK,EAAE,kBAAkB,CAAC,EAAE,EAAE,CAAC,CAAC;YACrC,IAAI,EAAE,KAAK,CAAC,IAAI;YAChB,IAAI,EAAE,KAAK,CAAC,IAAI;YAChB,kBAAkB;SACnB,CAAC,CAAC;YACH,oEAAoE;YACpE,+DAA+D;YAC/D,6BAA6B;aAC5B,OAAO,EAAE;QACZ,MAAM,EAAE,MAAM,CAAC,OAAO,CAAC,YAAY,EAAE;KACtC,CAAC,CAAC,CAAC;AACN,CAAC;AAED,yEAAyE;AACzE,8EAA8E;AAC9E,sEAAsE;AACtE,0BAA0B;AAC1B,SAAS,gBAAgB,CAAC,GAAY,EAAE,MAAc,EAAE,SAAsC,EAAE,OAAO,GAAG,KAAK;IAC7G,KAAK,IAAI,KAAK,IAAI,mBAAmB,CAAC,GAAG,EAAE,SAAS,CAAC,EAAE,CAAC;QACtD,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE,EAAE,CAAC;YACtB,gBAAgB,CAAC,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,IAAI,CAAC,CAAC;QACnD,CAAC;QACD,IAAI,cAAc,GAAG,IAAA,cAAW,EAAC,GAAG,CAAC,IAAI,EAAE,cAAc,CAAC,CAAC;QAC3D,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,EAAE,cAAc,CAAC,CAAC;IAC3C,CAAC;IACD,0FAA0F;IAC1F,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,MAAM,CAAC,MAAM,GAAG,IAAI,GAAG,CACrB,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE;YACnC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC;QACrE,CAAC,CAAC,CACH,CAAC;IACJ,CAAC;AACH,CAAC;AAED,SAAS,mBAAmB,CAAC,GAAY,EAAE,SAAsC;IAC/E,IAAI,MAAM,GAAI,GAAG,CAAC,YAAY,CAAC,MAAM,CAAC,aAAa,CAAoB,CAAC,MAAM;IAC5E,yEAAyE;IACzE,wEAAwE;IACxE,wEAAwE;IACxE,sBAAsB;IACtB,KAAK,CAAC,EAAE,CAAC,GAAG,CAAC,oBAAoB,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,kBAAkB,CACrE,CAAC;IACF,IAAI,MAAM,GAAG,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IACrC,IAAI,MAAM,EAAE,CAAC;QACX,MAAM,GAAG,CAAC,GAAG,MAAM,EAAE,GAAG,MAAM,CAAC,CAAC;IAClC,CAAC;IACD,OAAO,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;AAClC,CAAC;AAED,SAAS,aAAa,CAAC,GAAY;IACjC,2EAA2E;IAC3E,4DAA4D;IAC5D,EAAE;IACF,wEAAwE;IACxE,yEAAyE;IACzE,qBAAqB;IACrB,OAAO,GAAG,CAAC,SAAS,EAAE,CAAC;AACzB,CAAC;AAED,SAAS,WAAW,CAAC,IAAa,EAAE,IAAa;IAC/C,IAAI,OAAO,GAAG,CAAC,CAAC;IAChB,IAAI,OAAO,GAAG,CAAC,CAAC;IAEhB,IAAI,IAAI,IAAI,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,SAAS,EAAE,EAAE,CAAC;QAC1C,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;IAC1C,CAAC;IACD,IAAI,IAAI,IAAI,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,SAAS,EAAE,EAAE,CAAC;QAC1C,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;IAC1C,CAAC;IAED,OAAO,OAAO,GAAG,OAAO,CAAC;AAC3B,CAAC;AAED,SAAS,mBAAmB,CAAC,UAAmB,EAAE,SAAsC;IACtF,IAAI,MAAM,GAAG,UAAU,CAAC,eAAe,CAAC,aAAa,CAAmB,CAAC;IACzE,IAAI,MAAM,GAAG,SAAS,CAAC,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;IAC5C,IAAI,MAAM,EAAE,CAAC;QACX,IAAI,gBAAgB,GAAG,IAAA,iBAAO,EAAC,MAAM,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,eAAe,CAAC,aAAa,CAAC,CAAmB,CAAC;QACpG,MAAM,GAAG,CAAC,GAAG,MAAM,EAAE,GAAG,MAAM,EAAE,GAAG,gBAAgB,CAAC,CAAC;IACvD,CAAC;IACD,OAAO,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;AAClC,CAAC","sourcesContent":["import { explicitRelative, RewrittenPackageCache, type AddonPackage, type Package } from '@embroider/shared-internals';\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 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 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,64 +1,14 @@
|
|
1
1
|
import type { Package } from '@embroider/shared-internals';
|
2
2
|
import { RewrittenPackageCache } from '@embroider/shared-internals';
|
3
|
-
import type
|
4
|
-
|
5
|
-
|
6
|
-
[fromName: string]: string;
|
7
|
-
};
|
8
|
-
renameModules: {
|
9
|
-
[fromName: string]: string;
|
10
|
-
};
|
11
|
-
activeAddons: {
|
12
|
-
[packageName: string]: string;
|
13
|
-
};
|
14
|
-
resolvableExtensions: string[];
|
15
|
-
appRoot: string;
|
16
|
-
engines: EngineConfig[];
|
17
|
-
modulePrefix: string;
|
18
|
-
podModulePrefix?: string;
|
19
|
-
amdCompatibility: Required<UserOptions['amdCompatibility']>;
|
20
|
-
}
|
21
|
-
interface EngineConfig {
|
22
|
-
packageName: string;
|
23
|
-
activeAddons: {
|
24
|
-
name: string;
|
25
|
-
root: string;
|
26
|
-
}[];
|
27
|
-
fastbootFiles: {
|
28
|
-
[appName: string]: {
|
29
|
-
localFilename: string;
|
30
|
-
shadowedFilename: string | undefined;
|
31
|
-
};
|
32
|
-
};
|
33
|
-
root: string;
|
34
|
-
}
|
35
|
-
export interface ModuleRequest {
|
36
|
-
readonly specifier: string;
|
37
|
-
readonly fromFile: string;
|
38
|
-
readonly isVirtual: boolean;
|
39
|
-
readonly meta: Record<string, unknown> | undefined;
|
40
|
-
alias(newSpecifier: string): this;
|
41
|
-
rehome(newFromFile: string): this;
|
42
|
-
virtualize(virtualFilename: string): this;
|
43
|
-
withMeta(meta: Record<string, any> | undefined): this;
|
44
|
-
}
|
45
|
-
export type Resolution<T = unknown, E = unknown> = {
|
46
|
-
type: 'found';
|
47
|
-
result: T;
|
48
|
-
} | {
|
49
|
-
type: 'not_found';
|
50
|
-
err: E;
|
51
|
-
};
|
52
|
-
export type ResolverFunction<R extends ModuleRequest = ModuleRequest, Res extends Resolution = Resolution> = (request: R) => Promise<Res>;
|
53
|
-
export type SyncResolverFunction<R extends ModuleRequest = ModuleRequest, Res extends Resolution = Resolution> = (request: R) => Res;
|
3
|
+
import { type NodeResolveOpts } from './node-resolve';
|
4
|
+
import type { Options, EngineConfig } from './module-resolver-options';
|
5
|
+
import { type ModuleRequest, type Resolution } from './module-request';
|
54
6
|
export declare class Resolver {
|
55
7
|
readonly options: Options;
|
56
8
|
constructor(options: Options);
|
57
|
-
beforeResolve
|
58
|
-
resolve<
|
59
|
-
|
60
|
-
private internalResolve;
|
61
|
-
nodeResolve(specifier: string, fromFile: string): {
|
9
|
+
private beforeResolve;
|
10
|
+
resolve<ResolveResolution extends Resolution>(request: ModuleRequest<ResolveResolution>): Promise<ResolveResolution>;
|
11
|
+
nodeResolve(specifier: string, fromFile: string, opts?: NodeResolveOpts): Promise<{
|
62
12
|
type: 'virtual';
|
63
13
|
filename: string;
|
64
14
|
content: string;
|
@@ -68,13 +18,20 @@ export declare class Resolver {
|
|
68
18
|
} | {
|
69
19
|
type: 'not_found';
|
70
20
|
err: Error;
|
71
|
-
}
|
21
|
+
}>;
|
72
22
|
get packageCache(): RewrittenPackageCache;
|
23
|
+
private afterResolve;
|
24
|
+
private handleSyntheticComponents;
|
73
25
|
private logicalPackage;
|
74
26
|
private generateFastbootSwitch;
|
75
27
|
private handleFastbootSwitch;
|
76
28
|
private handleImplicitModules;
|
29
|
+
private handleEntrypoint;
|
30
|
+
private handleRouteEntrypoint;
|
31
|
+
private handleImplicitTestScripts;
|
32
|
+
private handleTestSupportStyles;
|
77
33
|
private handleGlobalsCompat;
|
34
|
+
private handleVendorStyles;
|
78
35
|
private resolveHelper;
|
79
36
|
private resolveComponent;
|
80
37
|
private resolveHelperOrComponent;
|
@@ -90,15 +47,21 @@ export declare class Resolver {
|
|
90
47
|
get emberVersionSupportsSeparateTemplates(): boolean;
|
91
48
|
private handleRewrittenPackages;
|
92
49
|
private handleRenaming;
|
50
|
+
private handleVendor;
|
93
51
|
private resolveWithinMovedPackage;
|
94
52
|
private preHandleExternal;
|
95
|
-
private
|
96
|
-
fallbackResolve
|
53
|
+
private locateActiveAddon;
|
54
|
+
private fallbackResolve;
|
55
|
+
private restoreRehomedRequest;
|
56
|
+
private relativeFallbackResolve;
|
57
|
+
private maybeFallbackToActiveAddon;
|
97
58
|
private getEntryFromMergeMap;
|
98
59
|
private withResolvableExtensions;
|
99
60
|
private searchAppTree;
|
100
|
-
|
61
|
+
reverseSearchAppTree(owningPackage: Package, fromFile: string): {
|
62
|
+
owningEngine: EngineConfig;
|
63
|
+
inAppName: string;
|
64
|
+
} | undefined;
|
101
65
|
reverseComponentLookup(filename: string): string | undefined;
|
102
66
|
private tryReverseComponent;
|
103
67
|
}
|
104
|
-
export {};
|