@embroider/core 4.4.7 → 4.6.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.
@@ -56,6 +56,7 @@ function logTransition(reason, before, after = before) {
56
56
  }
57
57
  const compatPattern = /@embroider\/virtual\/(?<type>[^\/]+)\/(?<rest>.*)/;
58
58
  class Resolver {
59
+ options;
59
60
  constructor(options) {
60
61
  this.options = options;
61
62
  }
@@ -211,7 +212,6 @@ class Resolver {
211
212
  return request;
212
213
  }
213
214
  handleFastbootSwitch(request) {
214
- var _a;
215
215
  if (request.resolvedTo) {
216
216
  return request;
217
217
  }
@@ -251,8 +251,8 @@ class Resolver {
251
251
  request.alias((0, shared_internals_2.explicitRelative)((0, path_1.dirname)(request.fromFile), (0, path_1.resolve)(pkg.root, targetFile))));
252
252
  }
253
253
  }
254
- let entry = (_a = this.getEntryFromMergeMap(rel, pkg.root)) === null || _a === void 0 ? void 0 : _a.entry;
255
- if ((entry === null || entry === void 0 ? void 0 : entry.type) === 'both') {
254
+ let entry = this.getEntryFromMergeMap(rel, pkg.root)?.entry;
255
+ if (entry?.type === 'both') {
256
256
  return logTransition('matched addon entry', request, request.alias(entry[section].specifier).rehome(entry[section].fromFile));
257
257
  }
258
258
  }
@@ -273,7 +273,7 @@ class Resolver {
273
273
  }
274
274
  filename = filename.slice(0, -1);
275
275
  let pkg = this.packageCache.ownerOfFile(request.fromFile);
276
- if (!(pkg === null || pkg === void 0 ? void 0 : pkg.isV2Ember())) {
276
+ if (!pkg?.isV2Ember()) {
277
277
  throw new Error(`bug: found implicit modules import in non-ember package at ${request.fromFile}`);
278
278
  }
279
279
  let type = `implicit-${variant}modules`;
@@ -289,7 +289,6 @@ class Resolver {
289
289
  return request;
290
290
  }
291
291
  handleEntrypoint(request) {
292
- var _a;
293
292
  if (request.resolvedTo) {
294
293
  return request;
295
294
  }
@@ -299,7 +298,7 @@ class Resolver {
299
298
  return request;
300
299
  }
301
300
  const requestingPkg = this.packageCache.ownerOfFile(request.fromFile);
302
- if (!(requestingPkg === null || requestingPkg === void 0 ? void 0 : requestingPkg.isV2Ember())) {
301
+ if (!requestingPkg?.isV2Ember()) {
303
302
  throw new Error(`bug: found entrypoint import in non-ember package at ${request.fromFile}`);
304
303
  }
305
304
  let pkg;
@@ -314,7 +313,7 @@ class Resolver {
314
313
  browser: true,
315
314
  conditions: ['default', 'imports'],
316
315
  });
317
- let specifier = (0, path_1.resolve)(pkg.root, (_a = matched === null || matched === void 0 ? void 0 : matched[0]) !== null && _a !== void 0 ? _a : '-embroider-entrypoint.js');
316
+ let specifier = (0, path_1.resolve)(pkg.root, matched?.[0] ?? '-embroider-entrypoint.js');
318
317
  return logTransition('entrypoint', request, request.virtualize({
319
318
  type: 'entrypoint',
320
319
  specifier,
@@ -331,7 +330,7 @@ class Resolver {
331
330
  }
332
331
  let routeName = request.specifier.slice(publicPrefix.length);
333
332
  let pkg = this.packageCache.ownerOfFile(request.fromFile);
334
- if (!(pkg === null || pkg === void 0 ? void 0 : pkg.isV2Ember())) {
333
+ if (!pkg?.isV2Ember()) {
335
334
  throw new Error(`bug: found entrypoint import in non-ember package at ${request.fromFile}`);
336
335
  }
337
336
  let matched = (0, resolve_exports_1.exports)(pkg.packageJSON, '-embroider-route-entrypoint.js', {
@@ -347,7 +346,7 @@ class Resolver {
347
346
  return request;
348
347
  }
349
348
  let pkg = this.packageCache.ownerOfFile(request.fromFile);
350
- if ((pkg === null || pkg === void 0 ? void 0 : pkg.root) !== this.options.engines[0].root) {
349
+ if (pkg?.root !== this.options.engines[0].root) {
351
350
  throw new Error(`bug: found an import of ${request.specifier} in ${request.fromFile}, but this is not the top-level Ember app. The top-level Ember app is the only one that has support for @embroider/virtual/test-support.js. If you think something should be fixed in Embroider, please open an issue on https://github.com/embroider-build/embroider/issues.`);
352
351
  }
353
352
  return logTransition('test-support', request, request.virtualize({ type: 'test-support-js', specifier: (0, path_1.resolve)(pkg.root, '-embroider-test-support.js') }));
@@ -357,7 +356,7 @@ class Resolver {
357
356
  return request;
358
357
  }
359
358
  let pkg = this.packageCache.ownerOfFile(request.fromFile);
360
- if ((pkg === null || pkg === void 0 ? void 0 : pkg.root) !== this.options.engines[0].root) {
359
+ if (pkg?.root !== this.options.engines[0].root) {
361
360
  throw new Error(`bug: found an import of ${request.specifier} in ${request.fromFile}, but this is not the top-level Ember app. The top-level Ember app is the only one that has support for @embroider/virtual/test-support.css. If you think something should be fixed in Embroider, please open an issue on https://github.com/embroider-build/embroider/issues.`);
362
361
  }
363
362
  return logTransition('test-support-styles', request, request.virtualize({
@@ -375,7 +374,7 @@ class Resolver {
375
374
  }
376
375
  let { type, rest } = match.groups;
377
376
  let fromPkg = this.packageCache.ownerOfFile(request.fromFile);
378
- if (!(fromPkg === null || fromPkg === void 0 ? void 0 : fromPkg.isV2Ember())) {
377
+ if (!fromPkg?.isV2Ember()) {
379
378
  return request;
380
379
  }
381
380
  let engine = this.owningEngine(fromPkg);
@@ -399,7 +398,7 @@ class Resolver {
399
398
  return request;
400
399
  }
401
400
  let pkg = this.packageCache.ownerOfFile(request.fromFile);
402
- if (!pkg || !this.options.engines.some(e => e.root === (pkg === null || pkg === void 0 ? void 0 : pkg.root))) {
401
+ if (!pkg || !this.options.engines.some(e => e.root === pkg?.root)) {
403
402
  throw new Error(`bug: found an import of ${request.specifier} in ${request.fromFile}, but this is not the top-level Ember app or Engine. The top-level Ember app is the only one that has support for @embroider/virtual/vendor.css. If you think something should be fixed in Embroider, please open an issue on https://github.com/embroider-build/embroider/issues.`);
404
403
  }
405
404
  return logTransition('vendor-styles', request, request.virtualize({ type: 'vendor-css', specifier: (0, path_1.resolve)(pkg.root, '-embroider-vendor-styles.css') }));
@@ -409,7 +408,6 @@ class Resolver {
409
408
  return logTransition('resolveHelper', request, request.alias(`${target.packageName}/helpers/${target.memberName}`).rehome((0, path_1.resolve)(inEngine.root, 'package.json')));
410
409
  }
411
410
  async resolveComponent(path, inEngine, request) {
412
- var _a, _b;
413
411
  let target = this.parseGlobalPath(path, inEngine);
414
412
  let hbsModule = null;
415
413
  let jsModule = null;
@@ -441,9 +439,9 @@ class Resolver {
441
439
  return logTransition(`resolveComponent found legacy HBS`, request, request.virtualize({
442
440
  type: 'component-pair',
443
441
  hbsModule: hbsModule.filename,
444
- jsModule: (_a = jsModule === null || jsModule === void 0 ? void 0 : jsModule.filename) !== null && _a !== void 0 ? _a : null,
442
+ jsModule: jsModule?.filename ?? null,
445
443
  debugName: (0, path_1.basename)(hbsModule.filename).replace(/\.(js|hbs)$/, ''),
446
- specifier: `${this.options.appRoot}/embroider-pair-component/${encodeURIComponent(hbsModule.filename)}/__vpc__/${encodeURIComponent((_b = jsModule === null || jsModule === void 0 ? void 0 : jsModule.filename) !== null && _b !== void 0 ? _b : '')}`,
444
+ specifier: `${this.options.appRoot}/embroider-pair-component/${encodeURIComponent(hbsModule.filename)}/__vpc__/${encodeURIComponent(jsModule?.filename ?? '')}`,
447
445
  }));
448
446
  }
449
447
  else if (jsModule) {
@@ -551,7 +549,7 @@ class Resolver {
551
549
  }
552
550
  reverse.set((0, path_1.resolve)(addon.root, inAddonName), { inEngineName, owningPackageRoot: addon.root });
553
551
  let prevEntry = engineModules.get(inEngineName);
554
- switch (prevEntry === null || prevEntry === void 0 ? void 0 : prevEntry.type) {
552
+ switch (prevEntry?.type) {
555
553
  case undefined:
556
554
  engineModules.set(inEngineName, {
557
555
  type: 'app-only',
@@ -595,7 +593,7 @@ class Resolver {
595
593
  }
596
594
  reverse.set((0, path_1.resolve)(addon.root, inAddonName), { inEngineName, owningPackageRoot: addon.root });
597
595
  let prevEntry = engineModules.get(inEngineName);
598
- switch (prevEntry === null || prevEntry === void 0 ? void 0 : prevEntry.type) {
596
+ switch (prevEntry?.type) {
599
597
  case undefined:
600
598
  engineModules.set(inEngineName, {
601
599
  type: 'fastboot-only',
@@ -698,8 +696,23 @@ class Resolver {
698
696
  }
699
697
  return request;
700
698
  }
699
+ get renameModulesMap() {
700
+ let extensionPattern = (0, shared_internals_1.extensionsPattern)(this.options.resolvableExtensions);
701
+ let map = new Map();
702
+ for (let [candidate, replacement] of Object.entries(this.options.renameModules)) {
703
+ map.set(candidate, replacement);
704
+ let withoutExtension = candidate.replace(extensionPattern, '');
705
+ if (withoutExtension !== candidate) {
706
+ map.set(withoutExtension, replacement);
707
+ let withoutIndex = withoutExtension.replace(/\/index$/, '');
708
+ if (withoutIndex !== withoutExtension) {
709
+ map.set(withoutIndex, replacement);
710
+ }
711
+ }
712
+ }
713
+ return map;
714
+ }
701
715
  handleRenaming(request) {
702
- var _a;
703
716
  if (request.resolvedTo) {
704
717
  return request;
705
718
  }
@@ -712,19 +725,10 @@ class Resolver {
712
725
  // ember-source might provide backburner via module renaming, but if you
713
726
  // have an explicit dependency on backburner you should still get that real
714
727
  // copy.
715
- if (!(pkg === null || pkg === void 0 ? void 0 : pkg.hasDependency(packageName))) {
716
- for (let [candidate, replacement] of Object.entries(this.options.renameModules)) {
717
- if (candidate === request.specifier) {
718
- return logTransition(`renameModules`, request, request.alias(replacement));
719
- }
720
- for (let extension of this.options.resolvableExtensions) {
721
- if (candidate === request.specifier + '/index' + extension) {
722
- return logTransition(`renameModules`, request, request.alias(replacement));
723
- }
724
- if (candidate === request.specifier + extension) {
725
- return logTransition(`renameModules`, request, request.alias(replacement));
726
- }
727
- }
728
+ if (!pkg?.hasDependency(packageName)) {
729
+ let replacement = this.renameModulesMap.get(request.specifier);
730
+ if (replacement !== undefined) {
731
+ return logTransition(`renameModules`, request, request.alias(replacement));
728
732
  }
729
733
  if (this.options.renamePackages[packageName]) {
730
734
  return logTransition(`renamePackages`, request, request.alias(request.specifier.replace(packageName, this.options.renamePackages[packageName])));
@@ -735,7 +739,7 @@ class Resolver {
735
739
  }
736
740
  if (pkg.name === packageName) {
737
741
  // we found a self-import
738
- if (((_a = pkg.meta) === null || _a === void 0 ? void 0 : _a['auto-upgraded']) && !pkg.isEngine()) {
742
+ if (pkg.meta?.['auto-upgraded'] && !pkg.isEngine()) {
739
743
  // auto-upgraded packages always get automatically adjusted. They never
740
744
  // supported fancy package.json exports features so this direct mapping
741
745
  // to the root is always right.
@@ -773,8 +777,8 @@ class Resolver {
773
777
  browser: true,
774
778
  conditions: ['default', 'imports'],
775
779
  });
776
- if (found === null || found === void 0 ? void 0 : found[0]) {
777
- return logTransition(`v2 self-import with package.json exports`, request, request.alias(found === null || found === void 0 ? void 0 : found[0]).rehome((0, path_1.resolve)(pkg.root, 'package.json')));
780
+ if (found?.[0]) {
781
+ return logTransition(`v2 self-import with package.json exports`, request, request.alias(found?.[0]).rehome((0, path_1.resolve)(pkg.root, 'package.json')));
778
782
  }
779
783
  }
780
784
  }
@@ -785,7 +789,7 @@ class Resolver {
785
789
  return request;
786
790
  }
787
791
  let pkg = this.packageCache.ownerOfFile(request.fromFile);
788
- if ((pkg === null || pkg === void 0 ? void 0 : pkg.root) !== this.options.engines[0].root) {
792
+ if (pkg?.root !== this.options.engines[0].root) {
789
793
  throw new Error(`bug: found an import of ${request.specifier} in ${request.fromFile}, but this is not the top-level Ember app. The top-level Ember app is the only one that has support for @embroider/virtual/vendor.js. If you think something should be fixed in Embroider, please open an issue on https://github.com/embroider-build/embroider/issues.`);
790
794
  }
791
795
  return logTransition('vendor', request, request.virtualize({ type: 'vendor-js', specifier: (0, path_1.resolve)(pkg.root, '-embroider-vendor.js') }));
@@ -805,7 +809,6 @@ class Resolver {
805
809
  return newRequest.withMeta({ originalFromFile });
806
810
  }
807
811
  preHandleExternal(request) {
808
- var _a;
809
812
  if (request.resolvedTo) {
810
813
  return request;
811
814
  }
@@ -846,7 +849,7 @@ class Resolver {
846
849
  // package to which it belongs (normally the app) that affects some policy
847
850
  // choices about what it can import
848
851
  let logicalPackage = this.logicalPackage(pkg, fromFile);
849
- if (((_a = logicalPackage.meta) === null || _a === void 0 ? void 0 : _a['auto-upgraded']) && !logicalPackage.hasDependency('ember-auto-import')) {
852
+ if (logicalPackage.meta?.['auto-upgraded'] && !logicalPackage.hasDependency('ember-auto-import')) {
850
853
  try {
851
854
  let dep = this.packageCache.resolve(packageName, logicalPackage);
852
855
  if (!dep.isEmberAddon()) {
@@ -922,7 +925,7 @@ class Resolver {
922
925
  })();
923
926
  request = this.restoreRehomedRequest(request);
924
927
  let pkg = this.packageCache.ownerOfFile(request.fromFile);
925
- if (!(pkg === null || pkg === void 0 ? void 0 : pkg.isV2Ember())) {
928
+ if (!pkg?.isV2Ember()) {
926
929
  // this request is coming from a file that appears to be owned by no ember
927
930
  // package. We offer one fallback behavior for such files. They're allowed
928
931
  // to resolve from the app's namespace.
@@ -974,11 +977,10 @@ class Resolver {
974
977
  return abortFallback('fallbackResolve final exit');
975
978
  }
976
979
  restoreRehomedRequest(request) {
977
- var _a;
978
980
  // meta.originalFromFile gets set when we want to try to rehome a request
979
981
  // but then come back to the original location here in the fallback when the
980
982
  // rehomed request fails
981
- let originalFromFile = (_a = request.meta) === null || _a === void 0 ? void 0 : _a.originalFromFile;
983
+ let originalFromFile = request.meta?.originalFromFile;
982
984
  if (typeof originalFromFile === 'string') {
983
985
  return request.rehome(originalFromFile);
984
986
  }
@@ -1017,10 +1019,9 @@ class Resolver {
1017
1019
  }
1018
1020
  }
1019
1021
  getEntryFromMergeMap(inEngineSpecifier, root) {
1020
- var _a;
1021
1022
  let entry;
1022
1023
  for (let candidate of this.withResolvableExtensions(inEngineSpecifier)) {
1023
- entry = (_a = this.mergeMap.get(root)) === null || _a === void 0 ? void 0 : _a.get(candidate);
1024
+ entry = this.mergeMap.get(root)?.get(candidate);
1024
1025
  if (entry) {
1025
1026
  return { entry, matched: candidate };
1026
1027
  }
@@ -1038,7 +1039,7 @@ class Resolver {
1038
1039
  }
1039
1040
  async searchAppTree(request, engine, inEngineSpecifier) {
1040
1041
  let matched = this.getEntryFromMergeMap(inEngineSpecifier, engine.root);
1041
- switch (matched === null || matched === void 0 ? void 0 : matched.entry.type) {
1042
+ switch (matched?.entry.type) {
1042
1043
  case undefined:
1043
1044
  return undefined;
1044
1045
  case 'app-only':
@@ -1070,7 +1071,7 @@ class Resolver {
1070
1071
  // its dasherized name
1071
1072
  reverseComponentLookup(filename) {
1072
1073
  const owningPackage = this.packageCache.ownerOfFile(filename);
1073
- if (!(owningPackage === null || owningPackage === void 0 ? void 0 : owningPackage.isV2Ember())) {
1074
+ if (!owningPackage?.isV2Ember()) {
1074
1075
  return;
1075
1076
  }
1076
1077
  let engineConfig = this.options.engines.find(e => e.root === owningPackage.root);
@@ -1107,6 +1108,9 @@ __decorate([
1107
1108
  __decorate([
1108
1109
  (0, typescript_memoize_1.Memoize)()
1109
1110
  ], Resolver.prototype, "emberVersionSupportsSeparateTemplates", null);
1111
+ __decorate([
1112
+ (0, typescript_memoize_1.Memoize)()
1113
+ ], Resolver.prototype, "renameModulesMap", null);
1110
1114
  // we don't want to allow things that resolve only by accident that are likely
1111
1115
  // to break in other setups. For example: import your dependencies'
1112
1116
  // dependencies, or importing your own name from within a monorepo (which will