@embroider/core 3.4.16-unstable.a691d39 → 3.4.16-unstable.aa52b09

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.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@embroider/core",
3
- "version": "3.4.16-unstable.a691d39",
3
+ "version": "3.4.16-unstable.aa52b09",
4
4
  "private": false,
5
5
  "description": "A build system for EmberJS applications.",
6
6
  "repository": {
@@ -21,7 +21,7 @@
21
21
  "@babel/parser": "^7.14.5",
22
22
  "@babel/traverse": "^7.14.5",
23
23
  "assert-never": "^1.2.1",
24
- "babel-plugin-ember-template-compilation": "^2.1.1",
24
+ "babel-plugin-ember-template-compilation": "^2.3.0",
25
25
  "broccoli-node-api": "^1.7.0",
26
26
  "broccoli-persistent-filter": "^3.1.2",
27
27
  "broccoli-plugin": "^4.0.7",
@@ -29,7 +29,6 @@
29
29
  "debug": "^4.3.2",
30
30
  "escape-string-regexp": "^4.0.0",
31
31
  "fast-sourcemap-concat": "^2.1.1",
32
- "filesize": "^10.0.7",
33
32
  "fs-extra": "^9.1.0",
34
33
  "fs-tree-diff": "^2.0.1",
35
34
  "handlebars": "^4.7.7",
@@ -41,9 +40,9 @@
41
40
  "resolve.exports": "^2.0.2",
42
41
  "typescript-memoize": "^1.0.1",
43
42
  "walk-sync": "^3.0.0",
44
- "@embroider/macros": "1.16.7-unstable.a691d39",
45
- "@embroider/reverse-exports": "0.1.1-unstable.a691d39",
46
- "@embroider/shared-internals": "2.6.4-unstable.a691d39"
43
+ "@embroider/reverse-exports": "0.1.1-unstable.aa52b09",
44
+ "@embroider/shared-internals": "2.6.4-unstable.aa52b09",
45
+ "@embroider/macros": "1.16.7-unstable.aa52b09"
47
46
  },
48
47
  "devDependencies": {
49
48
  "@glimmer/syntax": "^0.84.2",
package/src/index.d.ts CHANGED
@@ -6,7 +6,8 @@ export { default as toBroccoliPlugin } from './to-broccoli-plugin';
6
6
  export { default as WaitForTrees, OutputPaths } from './wait-for-trees';
7
7
  export { compile as jsHandlebarsCompile } from './js-handlebars';
8
8
  export { todo, unsupported, warn, debug, expectWarning, throwOnWarnings } from './messages';
9
- export { Resolver, Options as ResolverOptions, ModuleRequest, Resolution } from './module-resolver';
9
+ export { Resolver, ModuleRequest, Resolution } from './module-resolver';
10
+ export type { Options as ResolverOptions } from './module-resolver-options';
10
11
  export { ResolverLoader } from './resolver-loader';
11
12
  export { virtualContent } from './virtual-content';
12
13
  export type { Engine } from './app-files';
package/src/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;AAAA,uCAOoB;AAHlB,qHAAA,yBAAyB,OAAA;AACzB,sGAAA,UAAU,OAAA;AACV,+GAAA,mBAAmB,OAAA;AAErB,qDAAkE;AAAzD,iHAAA,cAAc,OAAA;AAEvB,qCAAoE;AAAvC,8GAAA,mBAAmB,OAAA;AAChD,2DAAmE;AAA1D,uIAAA,OAAO,OAAoB;AACpC,mDAAwE;AAA/D,+HAAA,OAAO,OAAgB;AAChC,iDAAiE;AAAxD,oHAAA,OAAO,OAAuB;AACvC,uCAA4F;AAAnF,gGAAA,IAAI,OAAA;AAAE,uGAAA,WAAW,OAAA;AAAE,gGAAA,IAAI,OAAA;AAAE,iGAAA,KAAK,OAAA;AAAE,yGAAA,aAAa,OAAA;AAAE,2GAAA,eAAe,OAAA;AACvE,qDAAoG;AAA3F,2GAAA,QAAQ,OAAA;AACjB,qDAAmD;AAA1C,iHAAA,cAAc,OAAA;AACvB,qDAAmD;AAA1C,iHAAA,cAAc,OAAA;AAGvB,8EAA8E;AAC9E,+DAA+D;AAC/D,8DAA4C","sourcesContent":["export {\n Packager,\n PackagerConstructor,\n Variant,\n applyVariantToBabelConfig,\n getAppMeta,\n getPackagerCacheDir,\n} from './packager';\nexport { HTMLEntrypoint, BundleSummary } from './html-entrypoint';\nexport { default as Stage } from './stage';\nexport { default as Options, optionsWithDefaults } from './options';\nexport { default as toBroccoliPlugin } from './to-broccoli-plugin';\nexport { default as WaitForTrees, OutputPaths } from './wait-for-trees';\nexport { compile as jsHandlebarsCompile } from './js-handlebars';\nexport { todo, unsupported, warn, debug, expectWarning, throwOnWarnings } from './messages';\nexport { Resolver, Options as ResolverOptions, ModuleRequest, Resolution } from './module-resolver';\nexport { ResolverLoader } from './resolver-loader';\nexport { virtualContent } from './virtual-content';\nexport type { Engine } from './app-files';\n\n// this is reexported because we already make users manage a peerDep from some\n// other packages (like embroider/webpack and @embroider/compat\nexport * from '@embroider/shared-internals';\n"]}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;AAAA,uCAOoB;AAHlB,qHAAA,yBAAyB,OAAA;AACzB,sGAAA,UAAU,OAAA;AACV,+GAAA,mBAAmB,OAAA;AAErB,qDAAkE;AAAzD,iHAAA,cAAc,OAAA;AAEvB,qCAAoE;AAAvC,8GAAA,mBAAmB,OAAA;AAChD,2DAAmE;AAA1D,uIAAA,OAAO,OAAoB;AACpC,mDAAwE;AAA/D,+HAAA,OAAO,OAAgB;AAChC,iDAAiE;AAAxD,oHAAA,OAAO,OAAuB;AACvC,uCAA4F;AAAnF,gGAAA,IAAI,OAAA;AAAE,uGAAA,WAAW,OAAA;AAAE,gGAAA,IAAI,OAAA;AAAE,iGAAA,KAAK,OAAA;AAAE,yGAAA,aAAa,OAAA;AAAE,2GAAA,eAAe,OAAA;AACvE,qDAAwE;AAA/D,2GAAA,QAAQ,OAAA;AAEjB,qDAAmD;AAA1C,iHAAA,cAAc,OAAA;AACvB,qDAAmD;AAA1C,iHAAA,cAAc,OAAA;AAGvB,8EAA8E;AAC9E,+DAA+D;AAC/D,8DAA4C","sourcesContent":["export {\n Packager,\n PackagerConstructor,\n Variant,\n applyVariantToBabelConfig,\n getAppMeta,\n getPackagerCacheDir,\n} from './packager';\nexport { HTMLEntrypoint, BundleSummary } from './html-entrypoint';\nexport { default as Stage } from './stage';\nexport { default as Options, optionsWithDefaults } from './options';\nexport { default as toBroccoliPlugin } from './to-broccoli-plugin';\nexport { default as WaitForTrees, OutputPaths } from './wait-for-trees';\nexport { compile as jsHandlebarsCompile } from './js-handlebars';\nexport { todo, unsupported, warn, debug, expectWarning, throwOnWarnings } from './messages';\nexport { Resolver, ModuleRequest, Resolution } from './module-resolver';\nexport type { Options as ResolverOptions } from './module-resolver-options';\nexport { ResolverLoader } from './resolver-loader';\nexport { virtualContent } from './virtual-content';\nexport type { Engine } from './app-files';\n\n// this is reexported because we already make users manage a peerDep from some\n// other packages (like embroider/webpack and @embroider/compat\nexport * from '@embroider/shared-internals';\n"]}
@@ -2,7 +2,6 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  const path_1 = require("path");
4
4
  const fs_1 = require("fs");
5
- const filesize_1 = require("filesize");
6
5
  class MeasureConcat {
7
6
  constructor(name, concat, baseDir) {
8
7
  this.name = name;
@@ -22,7 +21,7 @@ class MeasureConcat {
22
21
  console.log(`Concatenated ${this.name}:`);
23
22
  console.log(Object.entries(this.stats)
24
23
  .sort((a, b) => b[1] - a[1])
25
- .map(([name, bytes]) => ` ${name}: ${(0, filesize_1.filesize)(bytes, {})}`)
24
+ .map(([name, bytes]) => ` ${name}: ${bytes} bytes`)
26
25
  .join('\n'));
27
26
  return await this.concat.end();
28
27
  }
@@ -1 +1 @@
1
- {"version":3,"file":"measure-concat.js","sourceRoot":"","sources":["measure-concat.ts"],"names":[],"mappings":";;AACA,+BAA4B;AAC5B,2BAA8B;AAC9B,uCAAoC;AAEpC,MAAqB,aAAa;IAEhC,YAAoB,IAAY,EAAU,MAAuB,EAAU,OAAe;QAAtE,SAAI,GAAJ,IAAI,CAAQ;QAAU,WAAM,GAAN,MAAM,CAAiB;QAAU,YAAO,GAAP,OAAO,CAAQ;QAD1F,UAAK,GAAmC,EAAE,CAAC;IACkD,CAAC;IAC9F,OAAO,CAAC,QAAgB;QACtB,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,GAAG,IAAA,aAAQ,EAAC,IAAA,WAAI,EAAC,IAAI,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC;QACnE,OAAO,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;IACvC,CAAC;IACD,QAAQ,CAAC,QAAgB;QACvB,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,GAAG,QAAQ,CAAC,MAAM,CAAC;QAC3E,OAAO,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;IACxC,CAAC;IACD,KAAK,CAAC,GAAG;QACP,OAAO,CAAC,GAAG,CAAC,gBAAgB,IAAI,CAAC,IAAI,GAAG,CAAC,CAAC;QAC1C,OAAO,CAAC,GAAG,CACT,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC;aACvB,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;aAC3B,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,KAAK,IAAI,KAAK,IAAA,mBAAQ,EAAC,KAAK,EAAE,EAAE,CAAC,EAAE,CAAC;aAC3D,IAAI,CAAC,IAAI,CAAC,CACd,CAAC;QACF,OAAO,MAAM,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC;IACjC,CAAC;CACF;AArBD,gCAqBC","sourcesContent":["import type SourceMapConcat from 'fast-sourcemap-concat';\nimport { join } from 'path';\nimport { statSync } from 'fs';\nimport { filesize } from 'filesize';\n\nexport default class MeasureConcat {\n stats: { [filename: string]: number } = {};\n constructor(private name: string, private concat: SourceMapConcat, private baseDir: string) {}\n addFile(filename: string) {\n this.stats[filename] = statSync(join(this.baseDir, filename)).size;\n return this.concat.addFile(filename);\n }\n addSpace(contents: string) {\n this.stats['in-memory'] = (this.stats['in-memory'] || 0) + contents.length;\n return this.concat.addSpace(contents);\n }\n async end() {\n console.log(`Concatenated ${this.name}:`);\n console.log(\n Object.entries(this.stats)\n .sort((a, b) => b[1] - a[1])\n .map(([name, bytes]) => ` ${name}: ${filesize(bytes, {})}`)\n .join('\\n')\n );\n return await this.concat.end();\n }\n}\n"]}
1
+ {"version":3,"file":"measure-concat.js","sourceRoot":"","sources":["measure-concat.ts"],"names":[],"mappings":";;AACA,+BAA4B;AAC5B,2BAA8B;AAE9B,MAAqB,aAAa;IAEhC,YAAoB,IAAY,EAAU,MAAuB,EAAU,OAAe;QAAtE,SAAI,GAAJ,IAAI,CAAQ;QAAU,WAAM,GAAN,MAAM,CAAiB;QAAU,YAAO,GAAP,OAAO,CAAQ;QAD1F,UAAK,GAAmC,EAAE,CAAC;IACkD,CAAC;IAC9F,OAAO,CAAC,QAAgB;QACtB,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,GAAG,IAAA,aAAQ,EAAC,IAAA,WAAI,EAAC,IAAI,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC;QACnE,OAAO,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;IACvC,CAAC;IACD,QAAQ,CAAC,QAAgB;QACvB,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,GAAG,QAAQ,CAAC,MAAM,CAAC;QAC3E,OAAO,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;IACxC,CAAC;IACD,KAAK,CAAC,GAAG;QACP,OAAO,CAAC,GAAG,CAAC,gBAAgB,IAAI,CAAC,IAAI,GAAG,CAAC,CAAC;QAC1C,OAAO,CAAC,GAAG,CACT,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC;aACvB,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;aAC3B,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,KAAK,IAAI,KAAK,KAAK,QAAQ,CAAC;aACnD,IAAI,CAAC,IAAI,CAAC,CACd,CAAC;QACF,OAAO,MAAM,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC;IACjC,CAAC;CACF;AArBD,gCAqBC","sourcesContent":["import type SourceMapConcat from 'fast-sourcemap-concat';\nimport { join } from 'path';\nimport { statSync } from 'fs';\n\nexport default class MeasureConcat {\n stats: { [filename: string]: number } = {};\n constructor(private name: string, private concat: SourceMapConcat, private baseDir: string) {}\n addFile(filename: string) {\n this.stats[filename] = statSync(join(this.baseDir, filename)).size;\n return this.concat.addFile(filename);\n }\n addSpace(contents: string) {\n this.stats['in-memory'] = (this.stats['in-memory'] || 0) + contents.length;\n return this.concat.addSpace(contents);\n }\n async end() {\n console.log(`Concatenated ${this.name}:`);\n console.log(\n Object.entries(this.stats)\n .sort((a, b) => b[1] - a[1])\n .map(([name, bytes]) => ` ${name}: ${bytes} bytes`)\n .join('\\n')\n );\n return await this.concat.end();\n }\n}\n"]}
@@ -0,0 +1,44 @@
1
+ import { type AddonPackage, type Package } from '@embroider/shared-internals';
2
+ import type UserOptions from './options';
3
+ export interface Options {
4
+ renamePackages: {
5
+ [fromName: string]: string;
6
+ };
7
+ renameModules: {
8
+ [fromName: string]: string;
9
+ };
10
+ resolvableExtensions: string[];
11
+ appRoot: string;
12
+ engines: EngineConfig[];
13
+ modulePrefix: string;
14
+ splitAtRoutes?: (RegExp | string)[];
15
+ podModulePrefix?: string;
16
+ amdCompatibility: Required<UserOptions['amdCompatibility']>;
17
+ staticAppPaths: string[];
18
+ emberVersion: string;
19
+ }
20
+ export interface EngineConfig {
21
+ packageName: string;
22
+ activeAddons: {
23
+ name: string;
24
+ root: string;
25
+ canResolveFromFile: string;
26
+ }[];
27
+ fastbootFiles: {
28
+ [appName: string]: {
29
+ localFilename: string;
30
+ shadowedFilename: string | undefined;
31
+ };
32
+ };
33
+ root: string;
34
+ isLazy: boolean;
35
+ }
36
+ export declare function buildResolverOptions<T extends Options>(inputs: {
37
+ appPackage?: Package;
38
+ extraDeps?: Map<string, AddonPackage[]>;
39
+ modulePrefix?: string;
40
+ podModulePrefix?: string;
41
+ splitAtRoutes?: (RegExp | string)[];
42
+ staticAppPaths?: string[];
43
+ extend?: (opts: T, allActiveAddons: AddonPackage[]) => T;
44
+ }): T;
@@ -0,0 +1,167 @@
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
+ amdCompatibility: {
34
+ es: [],
35
+ },
36
+ modulePrefix,
37
+ staticAppPaths: (_b = inputs.staticAppPaths) !== null && _b !== void 0 ? _b : [],
38
+ emberVersion: appPackage.dependencies.find(d => d.name === 'ember-source').version,
39
+ splitAtRoutes: inputs.splitAtRoutes,
40
+ podModulePrefix: inputs.podModulePrefix,
41
+ };
42
+ if (inputs.extend) {
43
+ return inputs.extend(output, allActiveAddons);
44
+ }
45
+ return output;
46
+ }
47
+ function resolvableExtensions() {
48
+ let fromEnv = process.env.EMBROIDER_RESOLVABLE_EXTENSIONS;
49
+ if (fromEnv) {
50
+ return fromEnv.split(',');
51
+ }
52
+ else {
53
+ return ['.mjs', '.gjs', '.js', '.mts', '.gts', '.ts', '.hbs', '.hbs.js', '.json'];
54
+ }
55
+ }
56
+ function partitionEngines(appPackage, modulePrefix, extraDeps) {
57
+ let queue = [
58
+ {
59
+ package: appPackage,
60
+ addons: new Map(),
61
+ isApp: true,
62
+ modulePrefix,
63
+ appRelativePath: '.',
64
+ },
65
+ ];
66
+ let done = [];
67
+ let seenEngines = new Set();
68
+ while (true) {
69
+ let current = queue.shift();
70
+ if (!current) {
71
+ break;
72
+ }
73
+ findActiveAddons(current.package, current, extraDeps);
74
+ for (let addon of current.addons.keys()) {
75
+ if (addon.isEngine() && !seenEngines.has(addon)) {
76
+ seenEngines.add(addon);
77
+ queue.push({
78
+ package: addon,
79
+ addons: new Map(),
80
+ isApp: !current,
81
+ modulePrefix: addon.name,
82
+ appRelativePath: (0, shared_internals_1.explicitRelative)(appPackage.root, addon.root),
83
+ });
84
+ }
85
+ }
86
+ done.push(current);
87
+ }
88
+ return done.map(engine => ({
89
+ packageName: engine.package.name,
90
+ // we need to use the real path here because webpack requests always use the real path i.e. follow symlinks
91
+ root: (0, fs_extra_1.realpathSync)(engine.package.root),
92
+ fastbootFiles: {},
93
+ activeAddons: [...engine.addons]
94
+ .map(([addon, canResolveFromFile]) => ({
95
+ name: addon.name,
96
+ root: addon.root,
97
+ canResolveFromFile,
98
+ }))
99
+ // the traditional order is the order in which addons will run, such
100
+ // that the last one wins. Our resolver's order is the order to
101
+ // search, so first one wins.
102
+ .reverse(),
103
+ isLazy: engine.package.isLazyEngine(),
104
+ }));
105
+ }
106
+ // recurse to find all active addons that don't cross an engine boundary.
107
+ // Inner engines themselves will be returned, but not those engines' children.
108
+ // The output set's insertion order is the proper ember-cli compatible
109
+ // ordering of the addons.
110
+ function findActiveAddons(pkg, engine, extraDeps, isChild = false) {
111
+ for (let child of activeAddonChildren(pkg, extraDeps)) {
112
+ if (!child.isEngine()) {
113
+ findActiveAddons(child, engine, extraDeps, true);
114
+ }
115
+ let canResolveFrom = (0, path_1.resolve)(pkg.root, 'package.json');
116
+ engine.addons.set(child, canResolveFrom);
117
+ }
118
+ // ensure addons are applied in the correct order, if set (via @embroider/compat/v1-addon)
119
+ if (!isChild) {
120
+ engine.addons = new Map([...engine.addons].sort(([a], [b]) => {
121
+ return (a.meta['order-index'] || 0) - (b.meta['order-index'] || 0);
122
+ }));
123
+ }
124
+ }
125
+ function activeAddonChildren(pkg, extraDeps) {
126
+ let result = pkg.dependencies.filter(isActiveAddon).filter(
127
+ // When looking for child addons, we want to ignore 'peerDependencies' of
128
+ // a given package, to align with how ember-cli resolves addons. So here
129
+ // we only include dependencies that are definitely active due to one of
130
+ // the other sections.
131
+ addon => pkg.categorizeDependency(addon.name) !== 'peerDependencies');
132
+ let extras = extraDeps.get(pkg.root);
133
+ if (extras) {
134
+ result = [...result, ...extras];
135
+ }
136
+ return result.sort(orderAddons);
137
+ }
138
+ function isActiveAddon(pkg) {
139
+ // stage1 already took care of converting everything that's actually active
140
+ // into v2 addons. If it's not a v2 addon, we don't want it.
141
+ //
142
+ // We can encounter v1 addons here when there is inactive stuff floating
143
+ // around in the node_modules that accidentally satisfy something like an
144
+ // optional peer dep.
145
+ return pkg.isV2Addon();
146
+ }
147
+ function orderAddons(depA, depB) {
148
+ let depAIdx = 0;
149
+ let depBIdx = 0;
150
+ if (depA && depA.meta && depA.isV2Addon()) {
151
+ depAIdx = depA.meta['order-index'] || 0;
152
+ }
153
+ if (depB && depB.meta && depB.isV2Addon()) {
154
+ depBIdx = depB.meta['order-index'] || 0;
155
+ }
156
+ return depAIdx - depBIdx;
157
+ }
158
+ function findAllActiveAddons(appPackage, extraDeps) {
159
+ let result = appPackage.findDescendants(isActiveAddon);
160
+ let extras = extraDeps.get(appPackage.root);
161
+ if (extras) {
162
+ let extraDescendants = (0, flatMap_1.default)(extras, dep => dep.findDescendants(isActiveAddon));
163
+ result = [...result, ...extras, ...extraDescendants];
164
+ }
165
+ return result.sort(orderAddons);
166
+ }
167
+ //# 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 UserOptions from './options';\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 amdCompatibility: Required<UserOptions['amdCompatibility']>;\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 amdCompatibility: {\n es: [],\n },\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,39 +1,6 @@
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
- resolvableExtensions: string[];
12
- appRoot: string;
13
- engines: EngineConfig[];
14
- modulePrefix: string;
15
- splitAtRoutes?: (RegExp | string)[];
16
- podModulePrefix?: string;
17
- amdCompatibility: Required<UserOptions['amdCompatibility']>;
18
- autoRun: boolean;
19
- staticAppPaths: string[];
20
- }
21
- export interface EngineConfig {
22
- packageName: string;
23
- activeAddons: {
24
- name: string;
25
- root: string;
26
- canResolveFromFile: string;
27
- }[];
28
- fastbootFiles: {
29
- [appName: string]: {
30
- localFilename: string;
31
- shadowedFilename: string | undefined;
32
- };
33
- };
34
- root: string;
35
- isLazy: boolean;
36
- }
3
+ import type { Options, EngineConfig } from './module-resolver-options';
37
4
  export interface ModuleRequest<Res extends Resolution = Resolution> {
38
5
  readonly specifier: string;
39
6
  readonly fromFile: string;