@embroider/core 4.1.3 → 4.2.0
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.
@@ -388,6 +388,8 @@ class Resolver {
|
|
388
388
|
return this.resolveModifier(rest, engine, request);
|
389
389
|
case 'ambiguous':
|
390
390
|
return this.resolveHelperOrComponent(rest, engine, request);
|
391
|
+
case 'compat-modules':
|
392
|
+
return request;
|
391
393
|
default:
|
392
394
|
throw new Error(`bug: unexepected @embroider/virtual specifier: ${request.specifier}`);
|
393
395
|
}
|
@@ -733,7 +735,7 @@ class Resolver {
|
|
733
735
|
}
|
734
736
|
if (pkg.name === packageName) {
|
735
737
|
// we found a self-import
|
736
|
-
if ((_a = pkg.meta) === null || _a === void 0 ? void 0 : _a['auto-upgraded']) {
|
738
|
+
if (((_a = pkg.meta) === null || _a === void 0 ? void 0 : _a['auto-upgraded']) && !pkg.isEngine()) {
|
737
739
|
// auto-upgraded packages always get automatically adjusted. They never
|
738
740
|
// supported fancy package.json exports features so this direct mapping
|
739
741
|
// to the root is always right.
|
@@ -745,6 +747,15 @@ class Resolver {
|
|
745
747
|
// auto-upgraded addons get special support for self-resolving here.
|
746
748
|
return logTransition(`v1 addon self-import`, request, request.rehome(addonConfig.canResolveFromFile));
|
747
749
|
}
|
750
|
+
else if (owningEngine.root === pkg.root) {
|
751
|
+
for (let engineConfig of this.options.engines) {
|
752
|
+
for (let activeAddon of engineConfig.activeAddons) {
|
753
|
+
if (activeAddon.root === pkg.root) {
|
754
|
+
return logTransition(`v1 engine self-import`, request, request.rehome(activeAddon.canResolveFromFile));
|
755
|
+
}
|
756
|
+
}
|
757
|
+
}
|
758
|
+
}
|
748
759
|
else {
|
749
760
|
// auto-upgraded apps will necessarily have packageJSON.exports
|
750
761
|
// because we insert them, so for that support we can fall through to
|
@@ -901,10 +912,16 @@ class Resolver {
|
|
901
912
|
// here.
|
902
913
|
return request;
|
903
914
|
}
|
915
|
+
let abortFallback = (() => {
|
916
|
+
const unmodified = request;
|
917
|
+
// Whenever fallbackResolve gives up, it should return the original
|
918
|
+
// unmodifiedRequest so that we communicate clearly that no further
|
919
|
+
// fallbacks should be attempted. Internally, we track a modifiedRequest
|
920
|
+
// that has been adjusted to compensate for rehoming.
|
921
|
+
return (desc) => logTransition(desc, unmodified);
|
922
|
+
})();
|
923
|
+
request = this.restoreRehomedRequest(request);
|
904
924
|
let pkg = this.packageCache.ownerOfFile(request.fromFile);
|
905
|
-
if (pkg) {
|
906
|
-
({ pkg, request } = this.restoreRehomedRequest(pkg, request));
|
907
|
-
}
|
908
925
|
if (!(pkg === null || pkg === void 0 ? void 0 : pkg.isV2Ember())) {
|
909
926
|
// this request is coming from a file that appears to be owned by no ember
|
910
927
|
// package. We offer one fallback behavior for such files. They're allowed
|
@@ -918,12 +935,12 @@ class Resolver {
|
|
918
935
|
if (packageName === this.options.modulePrefix) {
|
919
936
|
return logTransition(`fallbackResolver: ${description} resolved app namespace`, request, request.rehome(this.packageCache.maybeMoved(this.packageCache.get(this.options.appRoot)).root));
|
920
937
|
}
|
921
|
-
return
|
938
|
+
return abortFallback(`fallbackResolver: ${description}`);
|
922
939
|
}
|
923
940
|
let packageName = (0, shared_internals_1.packageName)(request.specifier);
|
924
941
|
if (!packageName) {
|
925
942
|
// this is a relative import
|
926
|
-
return this.relativeFallbackResolve(pkg, request);
|
943
|
+
return this.relativeFallbackResolve(pkg, request, abortFallback);
|
927
944
|
}
|
928
945
|
if (pkg.needsLooseResolving()) {
|
929
946
|
let activeAddon = this.maybeFallbackToActiveAddon(request, packageName);
|
@@ -954,44 +971,39 @@ class Resolver {
|
|
954
971
|
}
|
955
972
|
// this is falling through with the original specifier which was
|
956
973
|
// non-resolvable, which will presumably cause a static build error in stage3.
|
957
|
-
return
|
974
|
+
return abortFallback('fallbackResolve final exit');
|
958
975
|
}
|
959
|
-
restoreRehomedRequest(
|
976
|
+
restoreRehomedRequest(request) {
|
960
977
|
var _a;
|
961
978
|
// meta.originalFromFile gets set when we want to try to rehome a request
|
962
979
|
// but then come back to the original location here in the fallback when the
|
963
980
|
// rehomed request fails
|
964
|
-
let
|
965
|
-
if (
|
966
|
-
|
967
|
-
if (typeof originalFromFile !== 'string') {
|
968
|
-
throw new Error(`bug: embroider resolver's meta is not propagating`);
|
969
|
-
}
|
970
|
-
request = request.rehome(originalFromFile);
|
971
|
-
pkg = movedPkg;
|
981
|
+
let originalFromFile = (_a = request.meta) === null || _a === void 0 ? void 0 : _a.originalFromFile;
|
982
|
+
if (typeof originalFromFile === 'string') {
|
983
|
+
return request.rehome(originalFromFile);
|
972
984
|
}
|
973
|
-
return
|
985
|
+
return request;
|
974
986
|
}
|
975
|
-
async relativeFallbackResolve(pkg, request) {
|
987
|
+
async relativeFallbackResolve(pkg, request, abortFallback) {
|
976
988
|
let withinEngine = this.engineConfig(pkg.name);
|
977
989
|
if (withinEngine) {
|
978
990
|
// it's a relative import inside an engine (which also means app), which
|
979
991
|
// means we may need to satisfy the request via app tree merging.
|
980
992
|
let logicalName = engineRelativeName(pkg, (0, path_1.resolve)((0, path_1.dirname)(request.fromFile), request.specifier));
|
981
993
|
if (!logicalName) {
|
982
|
-
return
|
994
|
+
return abortFallback('fallbackResolve: relative failure because this file is not externally accessible');
|
983
995
|
}
|
984
996
|
let appJSMatch = await this.searchAppTree(request, withinEngine, logicalName);
|
985
997
|
if (appJSMatch) {
|
986
998
|
return logTransition('fallbackResolve: relative appJsMatch', request, appJSMatch);
|
987
999
|
}
|
988
1000
|
else {
|
989
|
-
return
|
1001
|
+
return abortFallback('fallbackResolve: relative appJs search failure');
|
990
1002
|
}
|
991
1003
|
}
|
992
1004
|
else {
|
993
1005
|
// nothing else to do for relative imports
|
994
|
-
return
|
1006
|
+
return abortFallback('fallbackResolve: relative failure');
|
995
1007
|
}
|
996
1008
|
}
|
997
1009
|
maybeFallbackToActiveAddon(request, requestedPackageName) {
|