@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 logTransition(`fallbackResolver: ${description}`, request);
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 logTransition('fallbackResolve final exit', request);
974
+ return abortFallback('fallbackResolve final exit');
958
975
  }
959
- restoreRehomedRequest(pkg, request) {
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 movedPkg = this.packageCache.maybeMoved(pkg);
965
- if (movedPkg !== pkg) {
966
- let originalFromFile = (_a = request.meta) === null || _a === void 0 ? void 0 : _a.originalFromFile;
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 { pkg, request };
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 logTransition('fallbackResolve: relative failure because this file is not externally accessible', request);
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 logTransition('fallbackResolve: relative appJs search failure', request);
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 logTransition('fallbackResolve: relative failure', request);
1006
+ return abortFallback('fallbackResolve: relative failure');
995
1007
  }
996
1008
  }
997
1009
  maybeFallbackToActiveAddon(request, requestedPackageName) {