@embroider/core 3.5.0 → 3.5.1-unstable.1c0f616

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.
Files changed (68) hide show
  1. package/package.json +22 -11
  2. package/src/app-files.d.ts +3 -5
  3. package/src/app-files.js +25 -8
  4. package/src/app-files.js.map +1 -1
  5. package/src/index.d.ts +5 -5
  6. package/src/index.js +3 -4
  7. package/src/index.js.map +1 -1
  8. package/src/measure-concat.js +1 -2
  9. package/src/measure-concat.js.map +1 -1
  10. package/src/messages.js.map +1 -1
  11. package/src/module-request.d.ts +44 -0
  12. package/src/module-request.js +100 -0
  13. package/src/module-request.js.map +1 -0
  14. package/src/module-resolver-options.d.ts +42 -0
  15. package/src/module-resolver-options.js +164 -0
  16. package/src/module-resolver-options.js.map +1 -0
  17. package/src/module-resolver.d.ts +24 -61
  18. package/src/module-resolver.js +469 -322
  19. package/src/module-resolver.js.map +1 -1
  20. package/src/node-resolve.d.ts +35 -0
  21. package/src/node-resolve.js +130 -0
  22. package/src/node-resolve.js.map +1 -0
  23. package/src/options.d.ts +0 -7
  24. package/src/options.js +0 -1
  25. package/src/options.js.map +1 -1
  26. package/src/packager.d.ts +0 -8
  27. package/src/packager.js +0 -9
  28. package/src/packager.js.map +1 -1
  29. package/src/resolver-loader.js +8 -1
  30. package/src/resolver-loader.js.map +1 -1
  31. package/src/virtual-content.d.ts +32 -12
  32. package/src/virtual-content.js +83 -184
  33. package/src/virtual-content.js.map +1 -1
  34. package/src/virtual-entrypoint.d.ts +21 -0
  35. package/src/virtual-entrypoint.js +273 -0
  36. package/src/virtual-entrypoint.js.map +1 -0
  37. package/src/virtual-route-entrypoint.d.ts +10 -0
  38. package/src/virtual-route-entrypoint.js +62 -0
  39. package/src/virtual-route-entrypoint.js.map +1 -0
  40. package/src/virtual-test-support-styles.d.ts +7 -0
  41. package/src/virtual-test-support-styles.js +61 -0
  42. package/src/virtual-test-support-styles.js.map +1 -0
  43. package/src/virtual-test-support.d.ts +7 -0
  44. package/src/virtual-test-support.js +65 -0
  45. package/src/virtual-test-support.js.map +1 -0
  46. package/src/virtual-vendor-styles.d.ts +8 -0
  47. package/src/virtual-vendor-styles.js +83 -0
  48. package/src/virtual-vendor-styles.js.map +1 -0
  49. package/src/virtual-vendor.d.ts +7 -0
  50. package/src/virtual-vendor.js +53 -0
  51. package/src/virtual-vendor.js.map +1 -0
  52. package/types/virtual/index.d.ts +9 -0
  53. package/types/virtual/index.js +3 -0
  54. package/src/asset.d.ts +0 -32
  55. package/src/asset.js +0 -3
  56. package/src/asset.js.map +0 -1
  57. package/src/ember-html.d.ts +0 -43
  58. package/src/ember-html.js +0 -110
  59. package/src/ember-html.js.map +0 -1
  60. package/src/portable-babel-config.d.ts +0 -11
  61. package/src/portable-babel-config.js +0 -132
  62. package/src/portable-babel-config.js.map +0 -1
  63. package/src/portable-babel-launcher.d.ts +0 -6
  64. package/src/portable-babel-launcher.js +0 -75
  65. package/src/portable-babel-launcher.js.map +0 -1
  66. package/src/to-broccoli-plugin.d.ts +0 -8
  67. package/src/to-broccoli-plugin.js +0 -30
  68. package/src/to-broccoli-plugin.js.map +0 -1
@@ -0,0 +1,164 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.buildResolverOptions = buildResolverOptions;
7
+ const shared_internals_1 = require("@embroider/shared-internals");
8
+ const path_1 = require("path");
9
+ const fs_extra_1 = require("fs-extra");
10
+ const flatMap_1 = __importDefault(require("lodash/flatMap"));
11
+ function buildResolverOptions(inputs) {
12
+ var _a, _b;
13
+ let appPackage;
14
+ if (inputs.appPackage) {
15
+ appPackage = inputs.appPackage;
16
+ }
17
+ else {
18
+ let packageCache = shared_internals_1.RewrittenPackageCache.shared('embroider', process.cwd());
19
+ appPackage = packageCache.get(packageCache.appRoot);
20
+ }
21
+ let extraDeps = (_a = inputs.extraDeps) !== null && _a !== void 0 ? _a : new Map();
22
+ let allActiveAddons = findAllActiveAddons(appPackage, extraDeps);
23
+ let renamePackages = Object.assign({}, ...allActiveAddons.map(dep => dep.meta['renamed-packages']));
24
+ let renameModules = Object.assign({}, ...allActiveAddons.map(dep => dep.meta['renamed-modules']));
25
+ let modulePrefix = appPackage.name;
26
+ let engines = partitionEngines(appPackage, modulePrefix, extraDeps);
27
+ let output = {
28
+ renamePackages,
29
+ renameModules,
30
+ resolvableExtensions: resolvableExtensions(),
31
+ appRoot: appPackage.root,
32
+ engines,
33
+ modulePrefix,
34
+ staticAppPaths: (_b = inputs.staticAppPaths) !== null && _b !== void 0 ? _b : [],
35
+ emberVersion: appPackage.dependencies.find(d => d.name === 'ember-source').version,
36
+ splitAtRoutes: inputs.splitAtRoutes,
37
+ podModulePrefix: inputs.podModulePrefix,
38
+ };
39
+ if (inputs.extend) {
40
+ return inputs.extend(output, allActiveAddons);
41
+ }
42
+ return output;
43
+ }
44
+ function resolvableExtensions() {
45
+ let fromEnv = process.env.EMBROIDER_RESOLVABLE_EXTENSIONS;
46
+ if (fromEnv) {
47
+ return fromEnv.split(',');
48
+ }
49
+ else {
50
+ return ['.mjs', '.gjs', '.js', '.mts', '.gts', '.ts', '.hbs', '.hbs.js', '.json'];
51
+ }
52
+ }
53
+ function partitionEngines(appPackage, modulePrefix, extraDeps) {
54
+ let queue = [
55
+ {
56
+ package: appPackage,
57
+ addons: new Map(),
58
+ isApp: true,
59
+ modulePrefix,
60
+ appRelativePath: '.',
61
+ },
62
+ ];
63
+ let done = [];
64
+ let seenEngines = new Set();
65
+ while (true) {
66
+ let current = queue.shift();
67
+ if (!current) {
68
+ break;
69
+ }
70
+ findActiveAddons(current.package, current, extraDeps);
71
+ for (let addon of current.addons.keys()) {
72
+ if (addon.isEngine() && !seenEngines.has(addon)) {
73
+ seenEngines.add(addon);
74
+ queue.push({
75
+ package: addon,
76
+ addons: new Map(),
77
+ isApp: !current,
78
+ modulePrefix: addon.name,
79
+ appRelativePath: (0, shared_internals_1.explicitRelative)(appPackage.root, addon.root),
80
+ });
81
+ }
82
+ }
83
+ done.push(current);
84
+ }
85
+ return done.map(engine => ({
86
+ packageName: engine.package.name,
87
+ // we need to use the real path here because webpack requests always use the real path i.e. follow symlinks
88
+ root: (0, fs_extra_1.realpathSync)(engine.package.root),
89
+ fastbootFiles: {},
90
+ activeAddons: [...engine.addons]
91
+ .map(([addon, canResolveFromFile]) => ({
92
+ name: addon.name,
93
+ root: addon.root,
94
+ canResolveFromFile,
95
+ }))
96
+ // the traditional order is the order in which addons will run, such
97
+ // that the last one wins. Our resolver's order is the order to
98
+ // search, so first one wins.
99
+ .reverse(),
100
+ isLazy: engine.package.isLazyEngine(),
101
+ }));
102
+ }
103
+ // recurse to find all active addons that don't cross an engine boundary.
104
+ // Inner engines themselves will be returned, but not those engines' children.
105
+ // The output set's insertion order is the proper ember-cli compatible
106
+ // ordering of the addons.
107
+ function findActiveAddons(pkg, engine, extraDeps, isChild = false) {
108
+ for (let child of activeAddonChildren(pkg, extraDeps)) {
109
+ if (!child.isEngine()) {
110
+ findActiveAddons(child, engine, extraDeps, true);
111
+ }
112
+ let canResolveFrom = (0, path_1.resolve)(pkg.root, 'package.json');
113
+ engine.addons.set(child, canResolveFrom);
114
+ }
115
+ // ensure addons are applied in the correct order, if set (via @embroider/compat/v1-addon)
116
+ if (!isChild) {
117
+ engine.addons = new Map([...engine.addons].sort(([a], [b]) => {
118
+ return (a.meta['order-index'] || 0) - (b.meta['order-index'] || 0);
119
+ }));
120
+ }
121
+ }
122
+ function activeAddonChildren(pkg, extraDeps) {
123
+ let result = pkg.dependencies.filter(isActiveAddon).filter(
124
+ // When looking for child addons, we want to ignore 'peerDependencies' of
125
+ // a given package, to align with how ember-cli resolves addons. So here
126
+ // we only include dependencies that are definitely active due to one of
127
+ // the other sections.
128
+ addon => pkg.categorizeDependency(addon.name) !== 'peerDependencies');
129
+ let extras = extraDeps.get(pkg.root);
130
+ if (extras) {
131
+ result = [...result, ...extras];
132
+ }
133
+ return result.sort(orderAddons);
134
+ }
135
+ function isActiveAddon(pkg) {
136
+ // stage1 already took care of converting everything that's actually active
137
+ // into v2 addons. If it's not a v2 addon, we don't want it.
138
+ //
139
+ // We can encounter v1 addons here when there is inactive stuff floating
140
+ // around in the node_modules that accidentally satisfy something like an
141
+ // optional peer dep.
142
+ return pkg.isV2Addon();
143
+ }
144
+ function orderAddons(depA, depB) {
145
+ let depAIdx = 0;
146
+ let depBIdx = 0;
147
+ if (depA && depA.meta && depA.isV2Addon()) {
148
+ depAIdx = depA.meta['order-index'] || 0;
149
+ }
150
+ if (depB && depB.meta && depB.isV2Addon()) {
151
+ depBIdx = depB.meta['order-index'] || 0;
152
+ }
153
+ return depAIdx - depBIdx;
154
+ }
155
+ function findAllActiveAddons(appPackage, extraDeps) {
156
+ let result = appPackage.findDescendants(isActiveAddon);
157
+ let extras = extraDeps.get(appPackage.root);
158
+ if (extras) {
159
+ let extraDescendants = (0, flatMap_1.default)(extras, dep => dep.findDescendants(isActiveAddon));
160
+ result = [...result, ...extras, ...extraDescendants];
161
+ }
162
+ return result.sort(orderAddons);
163
+ }
164
+ //# sourceMappingURL=module-resolver-options.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"module-resolver-options.js","sourceRoot":"","sources":["module-resolver-options.ts"],"names":[],"mappings":"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","sourcesContent":["import { explicitRelative, RewrittenPackageCache, type AddonPackage, type Package } from '@embroider/shared-internals';\nimport type { Engine } from './app-files';\nimport { resolve as resolvePath } from 'path';\nimport { realpathSync } from 'fs-extra';\nimport flatMap from 'lodash/flatMap';\n\nexport interface Options {\n renamePackages: {\n [fromName: string]: string;\n };\n renameModules: {\n [fromName: string]: string;\n };\n resolvableExtensions: string[];\n appRoot: string;\n engines: EngineConfig[];\n modulePrefix: string;\n splitAtRoutes?: (RegExp | string)[];\n podModulePrefix?: string;\n staticAppPaths: string[];\n emberVersion: string;\n}\n\nexport interface EngineConfig {\n packageName: string;\n activeAddons: { name: string; root: string; canResolveFromFile: string }[];\n fastbootFiles: { [appName: string]: { localFilename: string; shadowedFilename: string | undefined } };\n root: string;\n isLazy: boolean;\n}\n\nexport function buildResolverOptions<T extends Options>(inputs: {\n appPackage?: Package;\n extraDeps?: Map<string, AddonPackage[]>;\n modulePrefix?: string;\n podModulePrefix?: string;\n splitAtRoutes?: (RegExp | string)[];\n staticAppPaths?: string[];\n extend?: (opts: T, allActiveAddons: AddonPackage[]) => T;\n}): T {\n let appPackage: Package;\n if (inputs.appPackage) {\n appPackage = inputs.appPackage;\n } else {\n let packageCache = RewrittenPackageCache.shared('embroider', process.cwd());\n appPackage = packageCache.get(packageCache.appRoot);\n }\n\n let extraDeps = inputs.extraDeps ?? new Map();\n\n let allActiveAddons: AddonPackage[] = findAllActiveAddons(appPackage, extraDeps);\n let renamePackages = Object.assign({}, ...allActiveAddons.map(dep => dep.meta['renamed-packages']));\n let renameModules = Object.assign({}, ...allActiveAddons.map(dep => dep.meta['renamed-modules']));\n let modulePrefix = appPackage.name;\n let engines = partitionEngines(appPackage, modulePrefix, extraDeps);\n\n let output: Options = {\n renamePackages,\n renameModules,\n resolvableExtensions: resolvableExtensions(),\n appRoot: appPackage.root,\n engines,\n modulePrefix,\n staticAppPaths: inputs.staticAppPaths ?? [],\n emberVersion: appPackage.dependencies.find(d => d.name === 'ember-source')!.version,\n splitAtRoutes: inputs.splitAtRoutes,\n podModulePrefix: inputs.podModulePrefix,\n };\n\n if (inputs.extend) {\n return inputs.extend(output as T, allActiveAddons);\n }\n return output as T;\n}\n\nfunction resolvableExtensions(): string[] {\n let fromEnv = process.env.EMBROIDER_RESOLVABLE_EXTENSIONS;\n if (fromEnv) {\n return fromEnv.split(',');\n } else {\n return ['.mjs', '.gjs', '.js', '.mts', '.gts', '.ts', '.hbs', '.hbs.js', '.json'];\n }\n}\n\nfunction partitionEngines(\n appPackage: Package,\n modulePrefix: string,\n extraDeps: Map<string, AddonPackage[]>\n): EngineConfig[] {\n let queue: Engine[] = [\n {\n package: appPackage,\n addons: new Map(),\n isApp: true,\n modulePrefix,\n appRelativePath: '.',\n },\n ];\n let done: Engine[] = [];\n let seenEngines: Set<Package> = new Set();\n while (true) {\n let current = queue.shift();\n if (!current) {\n break;\n }\n findActiveAddons(current.package, current, extraDeps);\n for (let addon of current.addons.keys()) {\n if (addon.isEngine() && !seenEngines.has(addon)) {\n seenEngines.add(addon);\n queue.push({\n package: addon,\n addons: new Map(),\n isApp: !current,\n modulePrefix: addon.name,\n appRelativePath: explicitRelative(appPackage.root, addon.root),\n });\n }\n }\n done.push(current);\n }\n\n return done.map(engine => ({\n packageName: engine.package.name,\n // we need to use the real path here because webpack requests always use the real path i.e. follow symlinks\n root: realpathSync(engine.package.root),\n fastbootFiles: {},\n activeAddons: [...engine.addons]\n .map(([addon, canResolveFromFile]) => ({\n name: addon.name,\n root: addon.root,\n canResolveFromFile,\n }))\n // the traditional order is the order in which addons will run, such\n // that the last one wins. Our resolver's order is the order to\n // search, so first one wins.\n .reverse(),\n isLazy: engine.package.isLazyEngine(),\n }));\n}\n\n// recurse to find all active addons that don't cross an engine boundary.\n// Inner engines themselves will be returned, but not those engines' children.\n// The output set's insertion order is the proper ember-cli compatible\n// ordering of the addons.\nfunction findActiveAddons(pkg: Package, engine: Engine, extraDeps: Map<string, AddonPackage[]>, isChild = false): void {\n for (let child of activeAddonChildren(pkg, extraDeps)) {\n if (!child.isEngine()) {\n findActiveAddons(child, engine, extraDeps, true);\n }\n let canResolveFrom = resolvePath(pkg.root, 'package.json');\n engine.addons.set(child, canResolveFrom);\n }\n // ensure addons are applied in the correct order, if set (via @embroider/compat/v1-addon)\n if (!isChild) {\n engine.addons = new Map(\n [...engine.addons].sort(([a], [b]) => {\n return (a.meta['order-index'] || 0) - (b.meta['order-index'] || 0);\n })\n );\n }\n}\n\nfunction activeAddonChildren(pkg: Package, extraDeps: Map<string, AddonPackage[]>): AddonPackage[] {\n let result = (pkg.dependencies.filter(isActiveAddon) as AddonPackage[]).filter(\n // When looking for child addons, we want to ignore 'peerDependencies' of\n // a given package, to align with how ember-cli resolves addons. So here\n // we only include dependencies that are definitely active due to one of\n // the other sections.\n addon => pkg.categorizeDependency(addon.name) !== 'peerDependencies'\n );\n let extras = extraDeps.get(pkg.root);\n if (extras) {\n result = [...result, ...extras];\n }\n return result.sort(orderAddons);\n}\n\nfunction isActiveAddon(pkg: Package): boolean {\n // stage1 already took care of converting everything that's actually active\n // into v2 addons. If it's not a v2 addon, we don't want it.\n //\n // We can encounter v1 addons here when there is inactive stuff floating\n // around in the node_modules that accidentally satisfy something like an\n // optional peer dep.\n return pkg.isV2Addon();\n}\n\nfunction orderAddons(depA: Package, depB: Package): number {\n let depAIdx = 0;\n let depBIdx = 0;\n\n if (depA && depA.meta && depA.isV2Addon()) {\n depAIdx = depA.meta['order-index'] || 0;\n }\n if (depB && depB.meta && depB.isV2Addon()) {\n depBIdx = depB.meta['order-index'] || 0;\n }\n\n return depAIdx - depBIdx;\n}\n\nfunction findAllActiveAddons(appPackage: Package, extraDeps: Map<string, AddonPackage[]>): AddonPackage[] {\n let result = appPackage.findDescendants(isActiveAddon) as AddonPackage[];\n let extras = extraDeps.get(appPackage.root);\n if (extras) {\n let extraDescendants = flatMap(extras, dep => dep.findDescendants(isActiveAddon)) as AddonPackage[];\n result = [...result, ...extras, ...extraDescendants];\n }\n return result.sort(orderAddons);\n}\n"]}
@@ -1,64 +1,14 @@
1
1
  import type { Package } from '@embroider/shared-internals';
2
2
  import { RewrittenPackageCache } from '@embroider/shared-internals';
3
- import type UserOptions from './options';
4
- export interface Options {
5
- renamePackages: {
6
- [fromName: string]: string;
7
- };
8
- renameModules: {
9
- [fromName: string]: string;
10
- };
11
- activeAddons: {
12
- [packageName: string]: string;
13
- };
14
- resolvableExtensions: string[];
15
- appRoot: string;
16
- engines: EngineConfig[];
17
- modulePrefix: string;
18
- podModulePrefix?: string;
19
- amdCompatibility: Required<UserOptions['amdCompatibility']>;
20
- }
21
- interface EngineConfig {
22
- packageName: string;
23
- activeAddons: {
24
- name: string;
25
- root: string;
26
- }[];
27
- fastbootFiles: {
28
- [appName: string]: {
29
- localFilename: string;
30
- shadowedFilename: string | undefined;
31
- };
32
- };
33
- root: string;
34
- }
35
- export interface ModuleRequest {
36
- readonly specifier: string;
37
- readonly fromFile: string;
38
- readonly isVirtual: boolean;
39
- readonly meta: Record<string, unknown> | undefined;
40
- alias(newSpecifier: string): this;
41
- rehome(newFromFile: string): this;
42
- virtualize(virtualFilename: string): this;
43
- withMeta(meta: Record<string, any> | undefined): this;
44
- }
45
- export type Resolution<T = unknown, E = unknown> = {
46
- type: 'found';
47
- result: T;
48
- } | {
49
- type: 'not_found';
50
- err: E;
51
- };
52
- export type ResolverFunction<R extends ModuleRequest = ModuleRequest, Res extends Resolution = Resolution> = (request: R) => Promise<Res>;
53
- export type SyncResolverFunction<R extends ModuleRequest = ModuleRequest, Res extends Resolution = Resolution> = (request: R) => Res;
3
+ import { type NodeResolveOpts } from './node-resolve';
4
+ import type { Options, EngineConfig } from './module-resolver-options';
5
+ import { type ModuleRequest, type Resolution } from './module-request';
54
6
  export declare class Resolver {
55
7
  readonly options: Options;
56
8
  constructor(options: Options);
57
- beforeResolve<R extends ModuleRequest>(request: R): R;
58
- resolve<Req extends ModuleRequest, Res extends Resolution>(request: Req, defaultResolve: ResolverFunction<Req, Res>): Promise<Res>;
59
- resolveSync<Req extends ModuleRequest, Res extends Resolution>(request: Req, defaultResolve: SyncResolverFunction<Req, Res>): Res;
60
- private internalResolve;
61
- nodeResolve(specifier: string, fromFile: string): {
9
+ private beforeResolve;
10
+ resolve<ResolveResolution extends Resolution>(request: ModuleRequest<ResolveResolution>): Promise<ResolveResolution>;
11
+ nodeResolve(specifier: string, fromFile: string, opts?: NodeResolveOpts): Promise<{
62
12
  type: 'virtual';
63
13
  filename: string;
64
14
  content: string;
@@ -68,13 +18,20 @@ export declare class Resolver {
68
18
  } | {
69
19
  type: 'not_found';
70
20
  err: Error;
71
- };
21
+ }>;
72
22
  get packageCache(): RewrittenPackageCache;
23
+ private afterResolve;
24
+ private handleSyntheticComponents;
73
25
  private logicalPackage;
74
26
  private generateFastbootSwitch;
75
27
  private handleFastbootSwitch;
76
28
  private handleImplicitModules;
29
+ private handleEntrypoint;
30
+ private handleRouteEntrypoint;
31
+ private handleImplicitTestScripts;
32
+ private handleTestSupportStyles;
77
33
  private handleGlobalsCompat;
34
+ private handleVendorStyles;
78
35
  private resolveHelper;
79
36
  private resolveComponent;
80
37
  private resolveHelperOrComponent;
@@ -90,15 +47,21 @@ export declare class Resolver {
90
47
  get emberVersionSupportsSeparateTemplates(): boolean;
91
48
  private handleRewrittenPackages;
92
49
  private handleRenaming;
50
+ private handleVendor;
93
51
  private resolveWithinMovedPackage;
94
52
  private preHandleExternal;
95
- private external;
96
- fallbackResolve<R extends ModuleRequest>(request: R): R;
53
+ private locateActiveAddon;
54
+ private fallbackResolve;
55
+ private restoreRehomedRequest;
56
+ private relativeFallbackResolve;
57
+ private maybeFallbackToActiveAddon;
97
58
  private getEntryFromMergeMap;
98
59
  private withResolvableExtensions;
99
60
  private searchAppTree;
100
- private reverseSearchAppTree;
61
+ reverseSearchAppTree(owningPackage: Package, fromFile: string): {
62
+ owningEngine: EngineConfig;
63
+ inAppName: string;
64
+ } | undefined;
101
65
  reverseComponentLookup(filename: string): string | undefined;
102
66
  private tryReverseComponent;
103
67
  }
104
- export {};