@embroider/core 4.4.6 → 4.5.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',
@@ -699,7 +697,6 @@ class Resolver {
699
697
  return request;
700
698
  }
701
699
  handleRenaming(request) {
702
- var _a;
703
700
  if (request.resolvedTo) {
704
701
  return request;
705
702
  }
@@ -712,7 +709,7 @@ class Resolver {
712
709
  // ember-source might provide backburner via module renaming, but if you
713
710
  // have an explicit dependency on backburner you should still get that real
714
711
  // copy.
715
- if (!(pkg === null || pkg === void 0 ? void 0 : pkg.hasDependency(packageName))) {
712
+ if (!pkg?.hasDependency(packageName)) {
716
713
  for (let [candidate, replacement] of Object.entries(this.options.renameModules)) {
717
714
  if (candidate === request.specifier) {
718
715
  return logTransition(`renameModules`, request, request.alias(replacement));
@@ -735,7 +732,7 @@ class Resolver {
735
732
  }
736
733
  if (pkg.name === packageName) {
737
734
  // we found a self-import
738
- if (((_a = pkg.meta) === null || _a === void 0 ? void 0 : _a['auto-upgraded']) && !pkg.isEngine()) {
735
+ if (pkg.meta?.['auto-upgraded'] && !pkg.isEngine()) {
739
736
  // auto-upgraded packages always get automatically adjusted. They never
740
737
  // supported fancy package.json exports features so this direct mapping
741
738
  // to the root is always right.
@@ -773,8 +770,8 @@ class Resolver {
773
770
  browser: true,
774
771
  conditions: ['default', 'imports'],
775
772
  });
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')));
773
+ if (found?.[0]) {
774
+ return logTransition(`v2 self-import with package.json exports`, request, request.alias(found?.[0]).rehome((0, path_1.resolve)(pkg.root, 'package.json')));
778
775
  }
779
776
  }
780
777
  }
@@ -785,7 +782,7 @@ class Resolver {
785
782
  return request;
786
783
  }
787
784
  let pkg = this.packageCache.ownerOfFile(request.fromFile);
788
- if ((pkg === null || pkg === void 0 ? void 0 : pkg.root) !== this.options.engines[0].root) {
785
+ if (pkg?.root !== this.options.engines[0].root) {
789
786
  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
787
  }
791
788
  return logTransition('vendor', request, request.virtualize({ type: 'vendor-js', specifier: (0, path_1.resolve)(pkg.root, '-embroider-vendor.js') }));
@@ -805,7 +802,6 @@ class Resolver {
805
802
  return newRequest.withMeta({ originalFromFile });
806
803
  }
807
804
  preHandleExternal(request) {
808
- var _a;
809
805
  if (request.resolvedTo) {
810
806
  return request;
811
807
  }
@@ -846,7 +842,7 @@ class Resolver {
846
842
  // package to which it belongs (normally the app) that affects some policy
847
843
  // choices about what it can import
848
844
  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')) {
845
+ if (logicalPackage.meta?.['auto-upgraded'] && !logicalPackage.hasDependency('ember-auto-import')) {
850
846
  try {
851
847
  let dep = this.packageCache.resolve(packageName, logicalPackage);
852
848
  if (!dep.isEmberAddon()) {
@@ -922,7 +918,7 @@ class Resolver {
922
918
  })();
923
919
  request = this.restoreRehomedRequest(request);
924
920
  let pkg = this.packageCache.ownerOfFile(request.fromFile);
925
- if (!(pkg === null || pkg === void 0 ? void 0 : pkg.isV2Ember())) {
921
+ if (!pkg?.isV2Ember()) {
926
922
  // this request is coming from a file that appears to be owned by no ember
927
923
  // package. We offer one fallback behavior for such files. They're allowed
928
924
  // to resolve from the app's namespace.
@@ -974,11 +970,10 @@ class Resolver {
974
970
  return abortFallback('fallbackResolve final exit');
975
971
  }
976
972
  restoreRehomedRequest(request) {
977
- var _a;
978
973
  // meta.originalFromFile gets set when we want to try to rehome a request
979
974
  // but then come back to the original location here in the fallback when the
980
975
  // rehomed request fails
981
- let originalFromFile = (_a = request.meta) === null || _a === void 0 ? void 0 : _a.originalFromFile;
976
+ let originalFromFile = request.meta?.originalFromFile;
982
977
  if (typeof originalFromFile === 'string') {
983
978
  return request.rehome(originalFromFile);
984
979
  }
@@ -1017,10 +1012,9 @@ class Resolver {
1017
1012
  }
1018
1013
  }
1019
1014
  getEntryFromMergeMap(inEngineSpecifier, root) {
1020
- var _a;
1021
1015
  let entry;
1022
1016
  for (let candidate of this.withResolvableExtensions(inEngineSpecifier)) {
1023
- entry = (_a = this.mergeMap.get(root)) === null || _a === void 0 ? void 0 : _a.get(candidate);
1017
+ entry = this.mergeMap.get(root)?.get(candidate);
1024
1018
  if (entry) {
1025
1019
  return { entry, matched: candidate };
1026
1020
  }
@@ -1038,7 +1032,7 @@ class Resolver {
1038
1032
  }
1039
1033
  async searchAppTree(request, engine, inEngineSpecifier) {
1040
1034
  let matched = this.getEntryFromMergeMap(inEngineSpecifier, engine.root);
1041
- switch (matched === null || matched === void 0 ? void 0 : matched.entry.type) {
1035
+ switch (matched?.entry.type) {
1042
1036
  case undefined:
1043
1037
  return undefined;
1044
1038
  case 'app-only':
@@ -1070,7 +1064,7 @@ class Resolver {
1070
1064
  // its dasherized name
1071
1065
  reverseComponentLookup(filename) {
1072
1066
  const owningPackage = this.packageCache.ownerOfFile(filename);
1073
- if (!(owningPackage === null || owningPackage === void 0 ? void 0 : owningPackage.isV2Ember())) {
1067
+ if (!owningPackage?.isV2Ember()) {
1074
1068
  return;
1075
1069
  }
1076
1070
  let engineConfig = this.options.engines.find(e => e.root === owningPackage.root);