@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.
@@ -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.isVirtual) {
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
- return request.resolvedTo;
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
- return nextRequest.resolvedTo;
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 (isTerminal(request)) {
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 (isTerminal(request)) {
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 (isTerminal(request)) {
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 (isTerminal(request)) {
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 (isTerminal(request)) {
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 (isTerminal(request)) {
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 (isTerminal(request)) {
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 (isTerminal(request)) {
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 (isTerminal(request)) {
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 this.external('v1 package without auto-import', request, specifier);
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
- var _a, _b;
923
- if (request.isVirtual) {
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