@embroider/core 3.4.20-unstable.7195610 → 3.4.20-unstable.78dd1bb
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 +7 -7
- package/src/index.d.ts +2 -2
- package/src/index.js +3 -3
- package/src/index.js.map +1 -1
- package/src/module-request.d.ts +45 -0
- package/src/module-request.js +91 -0
- package/src/module-request.js.map +1 -0
- package/src/module-resolver-options.d.ts +0 -2
- package/src/module-resolver-options.js +0 -3
- package/src/module-resolver-options.js.map +1 -1
- package/src/module-resolver.d.ts +1 -29
- package/src/module-resolver.js +31 -104
- package/src/module-resolver.js.map +1 -1
- package/src/node-resolve.d.ts +12 -16
- package/src/node-resolve.js +37 -54
- package/src/node-resolve.js.map +1 -1
- package/src/options.d.ts +0 -3
- package/src/options.js.map +1 -1
- package/src/virtual-content.d.ts +0 -2
- package/src/virtual-content.js +0 -104
- package/src/virtual-content.js.map +1 -1
- package/src/virtual-route-entrypoint.js +4 -11
- package/src/virtual-route-entrypoint.js.map +1 -1
- package/src/virtual-vendor.js +2 -17
- package/src/virtual-vendor.js.map +1 -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
package/src/module-resolver.js
CHANGED
@@ -36,10 +36,7 @@ debug_1.default.formatters.p = (s) => {
|
|
36
36
|
return s;
|
37
37
|
};
|
38
38
|
function logTransition(reason, before, after = before) {
|
39
|
-
if (after.
|
40
|
-
debug(`[%s:virtualized] %s because %s\n in %p`, before.debugType, before.specifier, reason, before.fromFile);
|
41
|
-
}
|
42
|
-
else if (after.resolvedTo) {
|
39
|
+
if (after.resolvedTo) {
|
43
40
|
debug(`[%s:resolvedTo] %s because %s\n in %p`, before.debugType, before.specifier, reason, before.fromFile);
|
44
41
|
}
|
45
42
|
else if (before.specifier !== after.specifier) {
|
@@ -53,17 +50,11 @@ function logTransition(reason, before, after = before) {
|
|
53
50
|
else if (before.fromFile !== after.fromFile) {
|
54
51
|
debug(`[%s:rehomed] %s, because %s\n from %p\n to %p`, before.debugType, before.specifier, reason, before.fromFile, after.fromFile);
|
55
52
|
}
|
56
|
-
else if (after.isNotFound) {
|
57
|
-
debug(`[%s:not-found] %s because %s\n in %p`, before.debugType, before.specifier, reason, before.fromFile);
|
58
|
-
}
|
59
53
|
else {
|
60
54
|
debug(`[%s:unchanged] %s because %s\n in %p`, before.debugType, before.specifier, reason, before.fromFile);
|
61
55
|
}
|
62
56
|
return after;
|
63
57
|
}
|
64
|
-
function isTerminal(request) {
|
65
|
-
return request.isVirtual || request.isNotFound || Boolean(request.resolvedTo);
|
66
|
-
}
|
67
58
|
const compatPattern = /@embroider\/virtual\/(?<type>[^\/]+)\/(?<rest>.*)/;
|
68
59
|
class Resolver {
|
69
60
|
constructor(options) {
|
@@ -77,9 +68,6 @@ class Resolver {
|
|
77
68
|
// why we need to know about it.
|
78
69
|
return logTransition('early exit', request);
|
79
70
|
}
|
80
|
-
if (request.specifier === 'require') {
|
81
|
-
return this.external('early require', request, request.specifier);
|
82
|
-
}
|
83
71
|
request = this.handleFastbootSwitch(request);
|
84
72
|
request = await this.handleGlobalsCompat(request);
|
85
73
|
request = this.handleImplicitModules(request);
|
@@ -105,10 +93,18 @@ class Resolver {
|
|
105
93
|
// rules.
|
106
94
|
async resolve(request) {
|
107
95
|
request = await this.beforeResolve(request);
|
96
|
+
let resolution;
|
108
97
|
if (request.resolvedTo) {
|
109
|
-
|
98
|
+
if (typeof request.resolvedTo === 'function') {
|
99
|
+
resolution = await request.resolvedTo();
|
100
|
+
}
|
101
|
+
else {
|
102
|
+
resolution = request.resolvedTo;
|
103
|
+
}
|
104
|
+
}
|
105
|
+
else {
|
106
|
+
resolution = await request.defaultResolve();
|
110
107
|
}
|
111
|
-
let resolution = await request.defaultResolve();
|
112
108
|
switch (resolution.type) {
|
113
109
|
case 'found':
|
114
110
|
case 'ignored':
|
@@ -118,23 +114,23 @@ class Resolver {
|
|
118
114
|
default:
|
119
115
|
throw (0, assert_never_1.default)(resolution);
|
120
116
|
}
|
117
|
+
request = request.clone();
|
121
118
|
let nextRequest = await this.fallbackResolve(request);
|
122
119
|
if (nextRequest === request) {
|
123
120
|
// no additional fallback is available.
|
124
121
|
return resolution;
|
125
122
|
}
|
126
123
|
if (nextRequest.resolvedTo) {
|
127
|
-
|
124
|
+
if (typeof nextRequest.resolvedTo === 'function') {
|
125
|
+
return await nextRequest.resolvedTo();
|
126
|
+
}
|
127
|
+
else {
|
128
|
+
return nextRequest.resolvedTo;
|
129
|
+
}
|
128
130
|
}
|
129
131
|
if (nextRequest.fromFile === request.fromFile && nextRequest.specifier === request.specifier) {
|
130
132
|
throw new Error('Bug Discovered! New request is not === original request but has the same fromFile and specifier. This will likely create a loop.');
|
131
133
|
}
|
132
|
-
if (nextRequest.isVirtual || nextRequest.isNotFound) {
|
133
|
-
// virtual and NotFound requests are terminal, there is no more
|
134
|
-
// beforeResolve or fallbackResolve around them. The defaultResolve is
|
135
|
-
// expected to know how to implement them.
|
136
|
-
return nextRequest.defaultResolve();
|
137
|
-
}
|
138
134
|
return this.resolve(nextRequest);
|
139
135
|
}
|
140
136
|
// Use standard NodeJS resolving, with our required compatibility rules on
|
@@ -158,7 +154,7 @@ class Resolver {
|
|
158
154
|
return owningPackage;
|
159
155
|
}
|
160
156
|
generateFastbootSwitch(request) {
|
161
|
-
if (
|
157
|
+
if (request.resolvedTo) {
|
162
158
|
return request;
|
163
159
|
}
|
164
160
|
let pkg = this.packageCache.ownerOfFile(request.fromFile);
|
@@ -199,7 +195,7 @@ class Resolver {
|
|
199
195
|
}
|
200
196
|
handleFastbootSwitch(request) {
|
201
197
|
var _a;
|
202
|
-
if (
|
198
|
+
if (request.resolvedTo) {
|
203
199
|
return request;
|
204
200
|
}
|
205
201
|
let match = (0, virtual_content_1.decodeFastbootSwitch)(request.fromFile);
|
@@ -246,7 +242,7 @@ class Resolver {
|
|
246
242
|
return logTransition('failed to match in fastboot switch', request);
|
247
243
|
}
|
248
244
|
handleImplicitModules(request) {
|
249
|
-
if (
|
245
|
+
if (request.resolvedTo) {
|
250
246
|
return request;
|
251
247
|
}
|
252
248
|
let im = (0, virtual_content_1.decodeImplicitModules)(request.specifier);
|
@@ -268,7 +264,7 @@ class Resolver {
|
|
268
264
|
}
|
269
265
|
handleEntrypoint(request) {
|
270
266
|
var _a;
|
271
|
-
if (
|
267
|
+
if (request.resolvedTo) {
|
272
268
|
return request;
|
273
269
|
}
|
274
270
|
//TODO move the extra forwardslash handling out into the vite plugin
|
@@ -304,7 +300,7 @@ class Resolver {
|
|
304
300
|
return logTransition('entrypoint', request, request.virtualize((0, path_1.resolve)(pkg.root, (_a = matched === null || matched === void 0 ? void 0 : matched[0]) !== null && _a !== void 0 ? _a : '-embroider-entrypoint.js')));
|
305
301
|
}
|
306
302
|
handleRouteEntrypoint(request) {
|
307
|
-
if (
|
303
|
+
if (request.resolvedTo) {
|
308
304
|
return request;
|
309
305
|
}
|
310
306
|
let routeName = (0, virtual_route_entrypoint_1.decodePublicRouteEntrypoint)(request.specifier);
|
@@ -354,7 +350,7 @@ class Resolver {
|
|
354
350
|
return logTransition('test-support-styles', request, request.virtualize((0, path_1.resolve)(pkg.root, '-embroider-test-support-styles.css')));
|
355
351
|
}
|
356
352
|
async handleGlobalsCompat(request) {
|
357
|
-
if (
|
353
|
+
if (request.resolvedTo) {
|
358
354
|
return request;
|
359
355
|
}
|
360
356
|
let match = compatPattern.exec(request.specifier);
|
@@ -434,7 +430,7 @@ class Resolver {
|
|
434
430
|
}
|
435
431
|
if (hbsModule) {
|
436
432
|
if (!this.emberVersionSupportsSeparateTemplates) {
|
437
|
-
throw new Error(`Components with separately resolved templates were removed at Ember 6.0. Migrate to either co-located js/ts + hbs files or to gjs/gts. https://deprecations.emberjs.com/id/component-template-resolving/. Bad template was: ${hbsModule}.`);
|
433
|
+
throw new Error(`Components with separately resolved templates were removed at Ember 6.0. Migrate to either co-located js/ts + hbs files or to gjs/gts. https://deprecations.emberjs.com/id/component-template-resolving/. Bad template was: ${hbsModule.filename}.`);
|
438
434
|
}
|
439
435
|
return logTransition(`resolveComponent found legacy HBS`, request, request.virtualize((0, virtual_content_1.virtualPairComponent)(hbsModule.filename, jsModule === null || jsModule === void 0 ? void 0 : jsModule.filename)));
|
440
436
|
}
|
@@ -634,7 +630,7 @@ class Resolver {
|
|
634
630
|
});
|
635
631
|
}
|
636
632
|
handleRewrittenPackages(request) {
|
637
|
-
if (
|
633
|
+
if (request.resolvedTo) {
|
638
634
|
return request;
|
639
635
|
}
|
640
636
|
let requestingPkg = this.packageCache.ownerOfFile(request.fromFile);
|
@@ -687,7 +683,7 @@ class Resolver {
|
|
687
683
|
return request;
|
688
684
|
}
|
689
685
|
handleRenaming(request) {
|
690
|
-
if (
|
686
|
+
if (request.resolvedTo) {
|
691
687
|
return request;
|
692
688
|
}
|
693
689
|
let packageName = (0, shared_internals_1.packageName)(request.specifier);
|
@@ -789,7 +785,7 @@ class Resolver {
|
|
789
785
|
return newRequest.withMeta({ originalFromFile });
|
790
786
|
}
|
791
787
|
preHandleExternal(request) {
|
792
|
-
if (
|
788
|
+
if (request.resolvedTo) {
|
793
789
|
return request;
|
794
790
|
}
|
795
791
|
let { specifier, fromFile } = request;
|
@@ -799,11 +795,6 @@ class Resolver {
|
|
799
795
|
}
|
800
796
|
let packageName = (0, shared_internals_1.packageName)(specifier);
|
801
797
|
if (!packageName) {
|
802
|
-
// This is a relative import. We don't automatically externalize those
|
803
|
-
// because it's rare, and by keeping them static we give better errors. But
|
804
|
-
// we do allow them to be explicitly externalized by the package author (or
|
805
|
-
// a compat adapter). In the metadata, they would be listed in
|
806
|
-
// package-relative form, so we need to convert this specifier to that.
|
807
798
|
let absoluteSpecifier = (0, path_1.resolve)((0, path_1.dirname)(fromFile), specifier);
|
808
799
|
if (!absoluteSpecifier.startsWith(pkg.root)) {
|
809
800
|
// this relative path escape its package. So it's not really using
|
@@ -812,11 +803,6 @@ class Resolver {
|
|
812
803
|
// references to runtime utilities, like we do in @embroider/macros.
|
813
804
|
return logTransition('beforeResolve: relative path escapes its package', request);
|
814
805
|
}
|
815
|
-
let packageRelativeSpecifier = (0, shared_internals_2.explicitRelative)(pkg.root, absoluteSpecifier);
|
816
|
-
if (isExplicitlyExternal(packageRelativeSpecifier, pkg)) {
|
817
|
-
let publicSpecifier = absoluteSpecifier.replace(pkg.root, pkg.name);
|
818
|
-
return this.external('beforeResolve', request, publicSpecifier);
|
819
|
-
}
|
820
806
|
// if the requesting file is in an addon's app-js, the relative request
|
821
807
|
// should really be understood as a request for a module in the containing
|
822
808
|
// engine.
|
@@ -826,14 +812,6 @@ class Resolver {
|
|
826
812
|
}
|
827
813
|
return request;
|
828
814
|
}
|
829
|
-
// absolute package imports can also be explicitly external based on their
|
830
|
-
// full specifier name
|
831
|
-
if (isExplicitlyExternal(specifier, pkg)) {
|
832
|
-
return this.external('beforeResolve', request, specifier);
|
833
|
-
}
|
834
|
-
if (shared_internals_1.emberVirtualPackages.has(packageName) && !pkg.hasDependency(packageName)) {
|
835
|
-
return this.external('beforeResolve emberVirtualPackages', request, specifier);
|
836
|
-
}
|
837
815
|
if (shared_internals_1.emberVirtualPeerDeps.has(packageName) && !pkg.hasDependency(packageName)) {
|
838
816
|
// addons (whether auto-upgraded or not) may use the app's
|
839
817
|
// emberVirtualPeerDeps, like "@glimmer/component" etc.
|
@@ -853,7 +831,7 @@ class Resolver {
|
|
853
831
|
if (!dep.isEmberAddon()) {
|
854
832
|
// classic ember addons can only import non-ember dependencies if they
|
855
833
|
// have ember-auto-import.
|
856
|
-
return
|
834
|
+
return logTransition('v1 package without auto-import', request, request.notFound());
|
857
835
|
}
|
858
836
|
}
|
859
837
|
catch (err) {
|
@@ -886,42 +864,9 @@ class Resolver {
|
|
886
864
|
}
|
887
865
|
}
|
888
866
|
}
|
889
|
-
external(label, request, specifier) {
|
890
|
-
if (this.options.amdCompatibility === 'cjs') {
|
891
|
-
let filename = (0, virtual_content_1.virtualExternalCJSModule)(specifier);
|
892
|
-
return logTransition(label, request, request.virtualize(filename));
|
893
|
-
}
|
894
|
-
else if (this.options.amdCompatibility) {
|
895
|
-
let entry = this.options.amdCompatibility.es.find(entry => entry[0] === specifier || entry[0] + '/index' === specifier);
|
896
|
-
if (!entry && request.specifier === 'require') {
|
897
|
-
entry = ['require', ['default', 'has']];
|
898
|
-
}
|
899
|
-
if (!entry) {
|
900
|
-
throw new Error(`[${request.debugType}] A module tried to resolve "${request.specifier}" and didn't find it (${label}).
|
901
|
-
|
902
|
-
- Maybe a dependency declaration is missing?
|
903
|
-
- Remember that v1 addons can only import non-Ember-addon NPM dependencies if they include ember-auto-import in their dependencies.
|
904
|
-
- If this dependency is available in the AMD loader (because someone manually called "define()" for it), you can configure a shim like:
|
905
|
-
|
906
|
-
amdCompatibility: {
|
907
|
-
es: [
|
908
|
-
["${request.specifier}", ["default", "yourNamedExportsGoHere"]],
|
909
|
-
]
|
910
|
-
}
|
911
|
-
|
912
|
-
`);
|
913
|
-
}
|
914
|
-
let filename = (0, virtual_content_1.virtualExternalESModule)(specifier, entry[1]);
|
915
|
-
return logTransition(label, request, request.virtualize(filename));
|
916
|
-
}
|
917
|
-
else {
|
918
|
-
throw new Error(`Embroider's amdCompatibility option is disabled, but something tried to use it to access "${request.specifier}"`);
|
919
|
-
}
|
920
|
-
}
|
921
867
|
async fallbackResolve(request) {
|
922
|
-
|
923
|
-
|
924
|
-
throw new Error('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');
|
868
|
+
if (request.resolvedTo) {
|
869
|
+
throw new Error('Build tool bug detected! Fallback resolve should never see an already-resolved request.');
|
925
870
|
}
|
926
871
|
if (request.specifier === '@embroider/macros') {
|
927
872
|
// the macros package is always handled directly within babel (not
|
@@ -997,21 +942,6 @@ class Resolver {
|
|
997
942
|
return logTransition('fallbackResolve: non-relative appJsMatch', request, appJSMatch);
|
998
943
|
}
|
999
944
|
}
|
1000
|
-
if (pkg.needsLooseResolving() && ((_b = (_a = request.meta) === null || _a === void 0 ? void 0 : _a.runtimeFallback) !== null && _b !== void 0 ? _b : true)) {
|
1001
|
-
// auto-upgraded packages can fall back to attempting to find dependencies at
|
1002
|
-
// runtime. Native v2 packages can only get this behavior in the
|
1003
|
-
// isExplicitlyExternal case above because they need to explicitly ask for
|
1004
|
-
// externals.
|
1005
|
-
return this.external('v1 catch-all fallback', request, request.specifier);
|
1006
|
-
}
|
1007
|
-
else {
|
1008
|
-
// native v2 packages don't automatically externalize *everything* the way
|
1009
|
-
// auto-upgraded packages do, but they still externalize known and approved
|
1010
|
-
// ember virtual packages (like @ember/component)
|
1011
|
-
if (shared_internals_1.emberVirtualPackages.has(packageName)) {
|
1012
|
-
return this.external('emberVirtualPackages', request, request.specifier);
|
1013
|
-
}
|
1014
|
-
}
|
1015
945
|
// this is falling through with the original specifier which was
|
1016
946
|
// non-resolvable, which will presumably cause a static build error in stage3.
|
1017
947
|
return logTransition('fallbackResolve final exit', request);
|
@@ -1165,9 +1095,6 @@ __decorate([
|
|
1165
1095
|
__decorate([
|
1166
1096
|
(0, typescript_memoize_1.Memoize)()
|
1167
1097
|
], Resolver.prototype, "emberVersionSupportsSeparateTemplates", null);
|
1168
|
-
function isExplicitlyExternal(specifier, fromPkg) {
|
1169
|
-
return Boolean(fromPkg.isV2Addon() && fromPkg.meta['externals'] && fromPkg.meta['externals'].includes(specifier));
|
1170
|
-
}
|
1171
1098
|
// we don't want to allow things that resolve only by accident that are likely
|
1172
1099
|
// to break in other setups. For example: import your dependencies'
|
1173
1100
|
// dependencies, or importing your own name from within a monorepo (which will
|