@embroider/core 3.5.1-unstable.fc482ba → 3.5.2

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 +11 -22
  2. package/src/app-files.d.ts +5 -3
  3. package/src/app-files.js +8 -25
  4. package/src/app-files.js.map +1 -1
  5. package/src/asset.d.ts +32 -0
  6. package/src/asset.js +3 -0
  7. package/src/asset.js.map +1 -0
  8. package/src/ember-html.d.ts +43 -0
  9. package/src/ember-html.js +110 -0
  10. package/src/ember-html.js.map +1 -0
  11. package/src/index.d.ts +5 -5
  12. package/src/index.js +4 -3
  13. package/src/index.js.map +1 -1
  14. package/src/measure-concat.js +2 -1
  15. package/src/measure-concat.js.map +1 -1
  16. package/src/messages.js.map +1 -1
  17. package/src/module-resolver.d.ts +61 -24
  18. package/src/module-resolver.js +310 -469
  19. package/src/module-resolver.js.map +1 -1
  20. package/src/node-resolve.d.ts +6 -31
  21. package/src/node-resolve.js +44 -112
  22. package/src/node-resolve.js.map +1 -1
  23. package/src/options.d.ts +7 -0
  24. package/src/options.js +1 -0
  25. package/src/options.js.map +1 -1
  26. package/src/packager.d.ts +8 -0
  27. package/src/packager.js +9 -0
  28. package/src/packager.js.map +1 -1
  29. package/src/portable-babel-config.d.ts +11 -0
  30. package/src/portable-babel-config.js +132 -0
  31. package/src/portable-babel-config.js.map +1 -0
  32. package/src/portable-babel-launcher.d.ts +6 -0
  33. package/src/portable-babel-launcher.js +75 -0
  34. package/src/portable-babel-launcher.js.map +1 -0
  35. package/src/resolver-loader.js +1 -8
  36. package/src/resolver-loader.js.map +1 -1
  37. package/src/to-broccoli-plugin.d.ts +8 -0
  38. package/src/to-broccoli-plugin.js +30 -0
  39. package/src/to-broccoli-plugin.js.map +1 -0
  40. package/src/virtual-content.d.ts +12 -32
  41. package/src/virtual-content.js +184 -83
  42. package/src/virtual-content.js.map +1 -1
  43. package/src/module-request.d.ts +0 -44
  44. package/src/module-request.js +0 -100
  45. package/src/module-request.js.map +0 -1
  46. package/src/module-resolver-options.d.ts +0 -42
  47. package/src/module-resolver-options.js +0 -164
  48. package/src/module-resolver-options.js.map +0 -1
  49. package/src/virtual-entrypoint.d.ts +0 -21
  50. package/src/virtual-entrypoint.js +0 -273
  51. package/src/virtual-entrypoint.js.map +0 -1
  52. package/src/virtual-route-entrypoint.d.ts +0 -10
  53. package/src/virtual-route-entrypoint.js +0 -62
  54. package/src/virtual-route-entrypoint.js.map +0 -1
  55. package/src/virtual-test-support-styles.d.ts +0 -7
  56. package/src/virtual-test-support-styles.js +0 -61
  57. package/src/virtual-test-support-styles.js.map +0 -1
  58. package/src/virtual-test-support.d.ts +0 -7
  59. package/src/virtual-test-support.js +0 -65
  60. package/src/virtual-test-support.js.map +0 -1
  61. package/src/virtual-vendor-styles.d.ts +0 -8
  62. package/src/virtual-vendor-styles.js +0 -83
  63. package/src/virtual-vendor-styles.js.map +0 -1
  64. package/src/virtual-vendor.d.ts +0 -7
  65. package/src/virtual-vendor.js +0 -53
  66. package/src/virtual-vendor.js.map +0 -1
  67. package/types/virtual/index.d.ts +0 -9
  68. package/types/virtual/index.js +0 -3
@@ -1,100 +0,0 @@
1
- "use strict";
2
- var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {
3
- if (kind === "m") throw new TypeError("Private method is not writable");
4
- if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a setter");
5
- if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot write private member to an object whose class did not declare it");
6
- return (kind === "a" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;
7
- };
8
- var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {
9
- if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a getter");
10
- if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot read private member from an object whose class did not declare it");
11
- return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
12
- };
13
- var _ModuleRequest_adapter, _ModuleRequest_specifier, _ModuleRequest_fromFile, _ModuleRequest_meta, _ModuleRequest_resolvedTo;
14
- Object.defineProperty(exports, "__esModule", { value: true });
15
- exports.ModuleRequest = void 0;
16
- exports.extractResolution = extractResolution;
17
- class ModuleRequest {
18
- static create(createAdapter, params) {
19
- let result = createAdapter(params);
20
- if (result) {
21
- return new ModuleRequest(result.adapter, result.initialState);
22
- }
23
- }
24
- constructor(adapter, initialize) {
25
- _ModuleRequest_adapter.set(this, void 0);
26
- _ModuleRequest_specifier.set(this, void 0);
27
- _ModuleRequest_fromFile.set(this, void 0);
28
- _ModuleRequest_meta.set(this, void 0);
29
- _ModuleRequest_resolvedTo.set(this, void 0);
30
- __classPrivateFieldSet(this, _ModuleRequest_adapter, adapter, "f");
31
- __classPrivateFieldSet(this, _ModuleRequest_specifier, initialize.specifier, "f");
32
- __classPrivateFieldSet(this, _ModuleRequest_fromFile, initialize.fromFile, "f");
33
- __classPrivateFieldSet(this, _ModuleRequest_meta, initialize.meta, "f");
34
- }
35
- get specifier() {
36
- return __classPrivateFieldGet(this, _ModuleRequest_specifier, "f");
37
- }
38
- get fromFile() {
39
- return __classPrivateFieldGet(this, _ModuleRequest_fromFile, "f");
40
- }
41
- get debugType() {
42
- return __classPrivateFieldGet(this, _ModuleRequest_adapter, "f").debugType;
43
- }
44
- get meta() {
45
- return __classPrivateFieldGet(this, _ModuleRequest_meta, "f");
46
- }
47
- get resolvedTo() {
48
- return __classPrivateFieldGet(this, _ModuleRequest_resolvedTo, "f");
49
- }
50
- alias(newSpecifier) {
51
- if (__classPrivateFieldGet(this, _ModuleRequest_specifier, "f") === newSpecifier) {
52
- return this;
53
- }
54
- let result = this.clone();
55
- __classPrivateFieldSet(result, _ModuleRequest_specifier, newSpecifier, "f");
56
- return result;
57
- }
58
- rehome(newFromFile) {
59
- if (__classPrivateFieldGet(this, _ModuleRequest_fromFile, "f") === newFromFile) {
60
- return this;
61
- }
62
- let result = this.clone();
63
- __classPrivateFieldSet(result, _ModuleRequest_fromFile, newFromFile, "f");
64
- return result;
65
- }
66
- virtualize(virtualResponse) {
67
- return this.resolveTo(__classPrivateFieldGet(this, _ModuleRequest_adapter, "f").virtualResponse(this, virtualResponse));
68
- }
69
- withMeta(meta) {
70
- let result = this.clone();
71
- __classPrivateFieldSet(result, _ModuleRequest_meta, meta, "f");
72
- __classPrivateFieldSet(result, _ModuleRequest_resolvedTo, __classPrivateFieldGet(this, _ModuleRequest_resolvedTo, "f"), "f");
73
- return result;
74
- }
75
- notFound() {
76
- return this.resolveTo(__classPrivateFieldGet(this, _ModuleRequest_adapter, "f").notFoundResponse(this));
77
- }
78
- resolveTo(res) {
79
- let result = this.clone();
80
- __classPrivateFieldSet(result, _ModuleRequest_resolvedTo, res, "f");
81
- return result;
82
- }
83
- defaultResolve() {
84
- return __classPrivateFieldGet(this, _ModuleRequest_adapter, "f").resolve(this);
85
- }
86
- clone() {
87
- return new ModuleRequest(__classPrivateFieldGet(this, _ModuleRequest_adapter, "f"), this);
88
- }
89
- }
90
- exports.ModuleRequest = ModuleRequest;
91
- _ModuleRequest_adapter = new WeakMap(), _ModuleRequest_specifier = new WeakMap(), _ModuleRequest_fromFile = new WeakMap(), _ModuleRequest_meta = new WeakMap(), _ModuleRequest_resolvedTo = new WeakMap();
92
- async function extractResolution(res) {
93
- if (typeof res === 'function') {
94
- return await res();
95
- }
96
- else {
97
- return res;
98
- }
99
- }
100
- //# sourceMappingURL=module-request.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"module-request.js","sourceRoot":"","sources":["module-request.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AA4HA,8CAQC;AApGD,MAAa,aAAa;IACxB,MAAM,CAAC,MAAM,CACX,aAA8C,EAC9C,MAAY;QAEZ,IAAI,MAAM,GAAG,aAAa,CAAC,MAAM,CAAC,CAAC;QACnC,IAAI,MAAM,EAAE,CAAC;YACX,OAAO,IAAI,aAAa,CAAC,MAAM,CAAC,OAAO,EAAE,MAAM,CAAC,YAAY,CAAC,CAAC;QAChE,CAAC;IACH,CAAC;IAQD,YAAoB,OAA4B,EAAE,UAA+B;QANjF,yCAA8B;QAC9B,2CAAmB;QACnB,0CAAkB;QAClB,sCAA2C;QAC3C,4CAAoD;QAGlD,uBAAA,IAAI,0BAAY,OAAO,MAAA,CAAC;QACxB,uBAAA,IAAI,4BAAc,UAAU,CAAC,SAAS,MAAA,CAAC;QACvC,uBAAA,IAAI,2BAAa,UAAU,CAAC,QAAQ,MAAA,CAAC;QACrC,uBAAA,IAAI,uBAAS,UAAU,CAAC,IAAI,MAAA,CAAC;IAC/B,CAAC;IAED,IAAI,SAAS;QACX,OAAO,uBAAA,IAAI,gCAAW,CAAC;IACzB,CAAC;IAED,IAAI,QAAQ;QACV,OAAO,uBAAA,IAAI,+BAAU,CAAC;IACxB,CAAC;IAED,IAAI,SAAS;QACX,OAAO,uBAAA,IAAI,8BAAS,CAAC,SAAS,CAAC;IACjC,CAAC;IAED,IAAI,IAAI;QACN,OAAO,uBAAA,IAAI,2BAAM,CAAC;IACpB,CAAC;IAED,IAAI,UAAU;QACZ,OAAO,uBAAA,IAAI,iCAAY,CAAC;IAC1B,CAAC;IAED,KAAK,CAAC,YAAoB;QACxB,IAAI,uBAAA,IAAI,gCAAW,KAAK,YAAY,EAAE,CAAC;YACrC,OAAO,IAAI,CAAC;QACd,CAAC;QACD,IAAI,MAAM,GAAG,IAAI,CAAC,KAAK,EAAE,CAAC;QAC1B,uBAAA,MAAM,4BAAc,YAAY,MAAA,CAAC;QACjC,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,MAAM,CAAC,WAAmB;QACxB,IAAI,uBAAA,IAAI,+BAAU,KAAK,WAAW,EAAE,CAAC;YACnC,OAAO,IAAI,CAAC;QACd,CAAC;QACD,IAAI,MAAM,GAAG,IAAI,CAAC,KAAK,EAAE,CAAC;QAC1B,uBAAA,MAAM,2BAAa,WAAW,MAAA,CAAC;QAC/B,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,UAAU,CAAC,eAAgC;QACzC,OAAO,IAAI,CAAC,SAAS,CAAC,uBAAA,IAAI,8BAAS,CAAC,eAAe,CAAC,IAAI,EAAE,eAAe,CAAC,CAAC,CAAC;IAC9E,CAAC;IAED,QAAQ,CAAC,IAAqC;QAC5C,IAAI,MAAM,GAAG,IAAI,CAAC,KAAK,EAAE,CAAC;QAC1B,uBAAA,MAAM,uBAAS,IAAI,MAAA,CAAC;QACpB,uBAAA,MAAM,6BAAe,uBAAA,IAAI,iCAAY,MAAA,CAAC;QACtC,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,QAAQ;QACN,OAAO,IAAI,CAAC,SAAS,CAAC,uBAAA,IAAI,8BAAS,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC,CAAC;IAC9D,CAAC;IAED,SAAS,CAAC,GAA+B;QACvC,IAAI,MAAM,GAAG,IAAI,CAAC,KAAK,EAAE,CAAC;QAC1B,uBAAA,MAAM,6BAAe,GAAG,MAAA,CAAC;QACzB,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,cAAc;QACZ,OAAO,uBAAA,IAAI,8BAAS,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IACrC,CAAC;IAED,KAAK;QACH,OAAO,IAAI,aAAa,CAAC,uBAAA,IAAI,8BAAS,EAAE,IAAI,CAAS,CAAC;IACxD,CAAC;CACF;AA1FD,sCA0FC;;AAEM,KAAK,UAAU,iBAAiB,CACrC,GAA+B;IAE/B,IAAI,OAAO,GAAG,KAAK,UAAU,EAAE,CAAC;QAC9B,OAAO,MAAM,GAAG,EAAE,CAAC;IACrB,CAAC;SAAM,CAAC;QACN,OAAO,GAAG,CAAC;IACb,CAAC;AACH,CAAC","sourcesContent":["import type { VirtualResponse } from './virtual-content';\n\n// This is generic because different build systems have different ways of\n// representing a found module, and we just pass those values through.\nexport type Resolution<T = unknown, E = unknown> =\n | { type: 'found'; filename: string; virtual: VirtualResponse | false; result: T }\n\n // the important thing about this Resolution is that embroider should do its\n // fallback behaviors here.\n | { type: 'not_found'; err: E };\n\nexport type RequestAdapterCreate<Init, Res extends Resolution> = (\n params: Init\n) => { initialState: InitialRequestState; adapter: RequestAdapter<Res> } | undefined;\n\nexport interface RequestAdapter<Res extends Resolution> {\n readonly debugType: string;\n resolve(request: ModuleRequest<Res>): Promise<Res>;\n\n // the function-returning variants of both of these are only because webpack\n // plugins are a pain in the butt. Integrators are encouraged to use the plain\n // Response-returning variants in all sane build environments.\n notFoundResponse(request: ModuleRequest<Res>): Res | (() => Promise<Res>);\n virtualResponse(request: ModuleRequest<Res>, response: VirtualResponse): Res | (() => Promise<Res>);\n}\n\nexport interface InitialRequestState {\n readonly specifier: string;\n readonly fromFile: string;\n readonly meta: Record<string, unknown> | undefined;\n}\n\nexport class ModuleRequest<Res extends Resolution = Resolution> implements ModuleRequest<Res> {\n static create<Init, Res extends Resolution>(\n createAdapter: RequestAdapterCreate<Init, Res>,\n params: Init\n ): ModuleRequest<Res> | undefined {\n let result = createAdapter(params);\n if (result) {\n return new ModuleRequest(result.adapter, result.initialState);\n }\n }\n\n #adapter: RequestAdapter<Res>;\n #specifier: string;\n #fromFile: string;\n #meta: Record<string, unknown> | undefined;\n #resolvedTo: Res | (() => Promise<Res>) | undefined;\n\n private constructor(adapter: RequestAdapter<Res>, initialize: InitialRequestState) {\n this.#adapter = adapter;\n this.#specifier = initialize.specifier;\n this.#fromFile = initialize.fromFile;\n this.#meta = initialize.meta;\n }\n\n get specifier(): string {\n return this.#specifier;\n }\n\n get fromFile(): string {\n return this.#fromFile;\n }\n\n get debugType(): string {\n return this.#adapter.debugType;\n }\n\n get meta(): Record<string, unknown> | undefined {\n return this.#meta;\n }\n\n get resolvedTo(): Res | (() => Promise<Res>) | undefined {\n return this.#resolvedTo;\n }\n\n alias(newSpecifier: string): this {\n if (this.#specifier === newSpecifier) {\n return this;\n }\n let result = this.clone();\n result.#specifier = newSpecifier;\n return result;\n }\n\n rehome(newFromFile: string): this {\n if (this.#fromFile === newFromFile) {\n return this;\n }\n let result = this.clone();\n result.#fromFile = newFromFile;\n return result;\n }\n\n virtualize(virtualResponse: VirtualResponse): this {\n return this.resolveTo(this.#adapter.virtualResponse(this, virtualResponse));\n }\n\n withMeta(meta: Record<string, any> | undefined): this {\n let result = this.clone();\n result.#meta = meta;\n result.#resolvedTo = this.#resolvedTo;\n return result;\n }\n\n notFound(): this {\n return this.resolveTo(this.#adapter.notFoundResponse(this));\n }\n\n resolveTo(res: Res | (() => Promise<Res>)): this {\n let result = this.clone();\n result.#resolvedTo = res;\n return result;\n }\n\n defaultResolve(): Promise<Res> {\n return this.#adapter.resolve(this);\n }\n\n clone(): this {\n return new ModuleRequest(this.#adapter, this) as this;\n }\n}\n\nexport async function extractResolution<Res extends Resolution = Resolution>(\n res: Res | (() => Promise<Res>)\n): Promise<Res> {\n if (typeof res === 'function') {\n return await res();\n } else {\n return res;\n }\n}\n"]}
@@ -1,42 +0,0 @@
1
- import { type AddonPackage, type Package } from '@embroider/shared-internals';
2
- export interface Options {
3
- renamePackages: {
4
- [fromName: string]: string;
5
- };
6
- renameModules: {
7
- [fromName: string]: string;
8
- };
9
- resolvableExtensions: string[];
10
- appRoot: string;
11
- engines: EngineConfig[];
12
- modulePrefix: string;
13
- splitAtRoutes?: (RegExp | string)[];
14
- podModulePrefix?: string;
15
- staticAppPaths: string[];
16
- emberVersion: string;
17
- }
18
- export interface EngineConfig {
19
- packageName: string;
20
- activeAddons: {
21
- name: string;
22
- root: string;
23
- canResolveFromFile: string;
24
- }[];
25
- fastbootFiles: {
26
- [appName: string]: {
27
- localFilename: string;
28
- shadowedFilename: string | undefined;
29
- };
30
- };
31
- root: string;
32
- isLazy: boolean;
33
- }
34
- export declare function buildResolverOptions<T extends Options>(inputs: {
35
- appPackage?: Package;
36
- extraDeps?: Map<string, AddonPackage[]>;
37
- modulePrefix?: string;
38
- podModulePrefix?: string;
39
- splitAtRoutes?: (RegExp | string)[];
40
- staticAppPaths?: string[];
41
- extend?: (opts: T, allActiveAddons: AddonPackage[]) => T;
42
- }): T;
@@ -1,164 +0,0 @@
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
@@ -1 +0,0 @@
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,21 +0,0 @@
1
- import { AppFiles, type RouteFiles } from './app-files';
2
- import type { Resolver } from './module-resolver';
3
- export interface EntrypointResponse {
4
- type: 'entrypoint';
5
- fromDir: string;
6
- specifier: string;
7
- }
8
- export declare function staticAppPathsPattern(staticAppPaths: string[] | undefined): RegExp | undefined;
9
- export declare function renderEntrypoint(resolver: Resolver, { fromDir }: {
10
- fromDir: string;
11
- }): {
12
- src: string;
13
- watches: string[];
14
- };
15
- export declare function importPaths(resolver: Resolver, { engine }: AppFiles, engineRelativePath: string): {
16
- runtime: string;
17
- buildtime: string;
18
- };
19
- export declare function splitRoute(routeName: string, files: RouteFiles, splitAtRoutes: (RegExp | string)[] | undefined, addToParent: (routeName: string, filename: string) => void, addLazyBundle: (routeNames: string[], files: string[]) => void): void;
20
- export declare function getAppFiles(appRoot: string): Set<string>;
21
- export declare function getFastbootFiles(appRoot: string): Set<string>;
@@ -1,273 +0,0 @@
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.staticAppPathsPattern = staticAppPathsPattern;
7
- exports.renderEntrypoint = renderEntrypoint;
8
- exports.importPaths = importPaths;
9
- exports.splitRoute = splitRoute;
10
- exports.getAppFiles = getAppFiles;
11
- exports.getFastbootFiles = getFastbootFiles;
12
- const app_files_1 = require("./app-files");
13
- const js_handlebars_1 = require("./js-handlebars");
14
- const lodash_1 = require("lodash");
15
- const path_1 = require("path");
16
- const shared_internals_1 = require("@embroider/shared-internals");
17
- const walk_sync_1 = __importDefault(require("walk-sync"));
18
- const escape_string_regexp_1 = __importDefault(require("escape-string-regexp"));
19
- const options_1 = require("./options");
20
- function staticAppPathsPattern(staticAppPaths) {
21
- if (staticAppPaths && staticAppPaths.length > 0) {
22
- return new RegExp('^(?:' + staticAppPaths.map(staticAppPath => (0, escape_string_regexp_1.default)(staticAppPath)).join('|') + ')(?:$|/)');
23
- }
24
- }
25
- function renderEntrypoint(resolver, { fromDir }) {
26
- var _a;
27
- const owner = resolver.packageCache.ownerOfFile(fromDir);
28
- let eagerModules = [];
29
- if (!owner) {
30
- throw new Error('Owner expected'); // ToDo: Really bad error, update message
31
- }
32
- let engine = resolver.owningEngine(owner);
33
- let isApp = (owner === null || owner === void 0 ? void 0 : owner.root) === resolver.options.engines[0].root;
34
- let hasFastboot = Boolean(resolver.options.engines[0].activeAddons.find(a => a.name === 'ember-cli-fastboot'));
35
- let appFiles = new app_files_1.AppFiles({
36
- package: owner,
37
- addons: new Map(engine.activeAddons.map(addon => [
38
- resolver.packageCache.get(addon.root),
39
- addon.canResolveFromFile,
40
- ])),
41
- isApp,
42
- modulePrefix: isApp ? resolver.options.modulePrefix : engine.packageName,
43
- appRelativePath: 'NOT_USED_DELETE_ME',
44
- }, getAppFiles(fromDir), hasFastboot ? getFastbootFiles(owner.root) : new Set(), (0, shared_internals_1.extensionsPattern)(resolver.options.resolvableExtensions), staticAppPathsPattern(resolver.options.staticAppPaths), resolver.options.podModulePrefix);
45
- let options = (_a = resolver.options.options) !== null && _a !== void 0 ? _a : (0, options_1.optionsWithDefaults)();
46
- let requiredAppFiles = [appFiles.otherAppFiles];
47
- if (!options.staticComponents) {
48
- requiredAppFiles.push(appFiles.components);
49
- }
50
- if (!options.staticHelpers) {
51
- requiredAppFiles.push(appFiles.helpers);
52
- }
53
- if (!options.staticModifiers) {
54
- requiredAppFiles.push(appFiles.modifiers);
55
- }
56
- let styles = [];
57
- // only import styles from engines with a parent (this excludeds the parent application) as their styles
58
- // will be inserted via a direct <link> tag.
59
- if (!appFiles.engine.isApp && appFiles.engine.package.isLazyEngine()) {
60
- styles.push({
61
- path: '@embroider/virtual/vendor.css',
62
- });
63
- }
64
- let lazyEngines = [];
65
- if (isApp) {
66
- // deliberately ignoring the app (which is the first entry in the engines array)
67
- let [, ...childEngines] = resolver.options.engines;
68
- for (let childEngine of childEngines) {
69
- let target = `@embroider/virtual/compat-modules/${childEngine.packageName}`;
70
- if (childEngine.isLazy) {
71
- lazyEngines.push({
72
- names: [childEngine.packageName],
73
- path: target,
74
- });
75
- }
76
- else {
77
- eagerModules.push(target);
78
- }
79
- }
80
- }
81
- let lazyRoutes = [];
82
- for (let [routeName, routeFiles] of appFiles.routeFiles.children) {
83
- splitRoute(routeName, routeFiles, resolver.options.splitAtRoutes, (_, filename) => {
84
- requiredAppFiles.push([filename]);
85
- }, (routeNames) => {
86
- lazyRoutes.push({
87
- names: routeNames,
88
- path: `@embroider/core/route/${encodeURIComponent(routeNames[0])}`,
89
- });
90
- });
91
- }
92
- let [fastboot, nonFastboot] = (0, lodash_1.partition)(excludeDotFiles((0, lodash_1.flatten)(requiredAppFiles)), file => appFiles.isFastbootOnly.get(file));
93
- let amdModules = nonFastboot.map(file => importPaths(resolver, appFiles, file));
94
- let fastbootOnlyAmdModules = fastboot.map(file => importPaths(resolver, appFiles, file));
95
- let params = {
96
- amdModules,
97
- fastbootOnlyAmdModules,
98
- lazyRoutes,
99
- lazyEngines,
100
- eagerModules,
101
- styles,
102
- // this is a backward-compatibility feature: addons can force inclusion of modules.
103
- defineModulesFrom: './-embroider-implicit-modules.js',
104
- };
105
- return {
106
- src: entryTemplate(params),
107
- watches: [fromDir],
108
- };
109
- }
110
- const entryTemplate = (0, js_handlebars_1.compile)(`
111
- import { macroCondition, getGlobalConfig } from '@embroider/macros';
112
-
113
- {{#if styles}}
114
- if (macroCondition(!getGlobalConfig().fastboot?.isRunning)) {
115
- {{#each styles as |stylePath| ~}}
116
- await import("{{js-string-escape stylePath.path}}");
117
- {{/each}}
118
- }
119
- {{/if}}
120
-
121
- {{#if defineModulesFrom ~}}
122
- import implicitModules from "{{js-string-escape defineModulesFrom}}";
123
- {{/if}}
124
-
125
- {{#each eagerModules as |eagerModule| ~}}
126
- import "{{js-string-escape eagerModule}}";
127
- {{/each}}
128
-
129
- {{#each amdModules as |amdModule index| ~}}
130
- import * as amdModule{{index}} from "{{js-string-escape amdModule.buildtime}}"
131
- {{/each}}
132
-
133
- let exportFastbootModules = {};
134
-
135
- {{#if fastbootOnlyAmdModules}}
136
- if (macroCondition(getGlobalConfig().fastboot?.isRunning)) {
137
- let fastbootModules = {};
138
-
139
- {{#each fastbootOnlyAmdModules as |amdModule| ~}}
140
- fastbootModules["{{js-string-escape amdModule.runtime}}"] = import("{{js-string-escape amdModule.buildtime}}");
141
- {{/each}}
142
-
143
- const resolvedValues = await Promise.all(Object.values(fastbootModules));
144
-
145
- Object.keys(fastbootModules).forEach((k, i) => {
146
- exportFasbootModules[k] = resolvedValues[i];
147
- })
148
- }
149
- {{/if}}
150
-
151
-
152
- {{#if lazyRoutes}}
153
- window._embroiderRouteBundles_ = [
154
- {{#each lazyRoutes as |route|}}
155
- {
156
- names: {{json-stringify route.names}},
157
- load: function() {
158
- return import("{{js-string-escape route.path}}");
159
- }
160
- },
161
- {{/each}}
162
- ]
163
- {{/if}}
164
-
165
- {{#if lazyEngines}}
166
- window._embroiderEngineBundles_ = [
167
- {{#each lazyEngines as |engine|}}
168
- {
169
- names: {{json-stringify engine.names}},
170
- load: function() {
171
- return import("{{js-string-escape engine.path}}");
172
- }
173
- },
174
- {{/each}}
175
- ]
176
- {{/if}}
177
-
178
- export default Object.assign(
179
- {},
180
- implicitModules,
181
- {
182
- {{#each amdModules as |amdModule index| ~}}
183
- "{{js-string-escape amdModule.runtime}}": amdModule{{index}},
184
- {{/each}}
185
- },
186
- exportFastbootModules
187
- );
188
- `);
189
- function excludeDotFiles(files) {
190
- return files.filter(file => !file.startsWith('.') && !file.includes('/.'));
191
- }
192
- function importPaths(resolver, { engine }, engineRelativePath) {
193
- let resolvableExtensionsPattern = (0, shared_internals_1.extensionsPattern)(resolver.options.resolvableExtensions);
194
- let noHBS = engineRelativePath.replace(resolvableExtensionsPattern, '').replace(/\.hbs$/, '');
195
- return {
196
- runtime: `${engine.modulePrefix}/${noHBS}`,
197
- buildtime: `./${engineRelativePath}`,
198
- };
199
- }
200
- function splitRoute(routeName, files, splitAtRoutes, addToParent, addLazyBundle) {
201
- let shouldSplit = routeName && shouldSplitRoute(routeName, splitAtRoutes);
202
- let ownFiles = [];
203
- let ownNames = new Set();
204
- if (files.template) {
205
- if (shouldSplit) {
206
- ownFiles.push(files.template);
207
- ownNames.add(routeName);
208
- }
209
- else {
210
- addToParent(routeName, files.template);
211
- }
212
- }
213
- if (files.controller) {
214
- if (shouldSplit) {
215
- ownFiles.push(files.controller);
216
- ownNames.add(routeName);
217
- }
218
- else {
219
- addToParent(routeName, files.controller);
220
- }
221
- }
222
- if (files.route) {
223
- if (shouldSplit) {
224
- ownFiles.push(files.route);
225
- ownNames.add(routeName);
226
- }
227
- else {
228
- addToParent(routeName, files.route);
229
- }
230
- }
231
- for (let [childName, childFiles] of files.children) {
232
- splitRoute(`${routeName}.${childName}`, childFiles, splitAtRoutes, (childRouteName, childFile) => {
233
- // this is our child calling "addToParent"
234
- if (shouldSplit) {
235
- ownFiles.push(childFile);
236
- ownNames.add(childRouteName);
237
- }
238
- else {
239
- addToParent(childRouteName, childFile);
240
- }
241
- }, (routeNames, files) => {
242
- addLazyBundle(routeNames, files);
243
- });
244
- }
245
- if (ownFiles.length > 0) {
246
- addLazyBundle([...ownNames], ownFiles);
247
- }
248
- }
249
- function shouldSplitRoute(routeName, splitAtRoutes) {
250
- if (!splitAtRoutes) {
251
- return false;
252
- }
253
- return splitAtRoutes.find(pattern => {
254
- if (typeof pattern === 'string') {
255
- return pattern === routeName;
256
- }
257
- else {
258
- return pattern.test(routeName);
259
- }
260
- });
261
- }
262
- function getAppFiles(appRoot) {
263
- const files = (0, walk_sync_1.default)(appRoot, {
264
- ignore: ['_babel_filter_.js', 'app.js', 'assets', 'testem.js', 'node_modules'],
265
- });
266
- return new Set(files);
267
- }
268
- function getFastbootFiles(appRoot) {
269
- const appDirPath = (0, path_1.join)(appRoot, '_fastboot_');
270
- const files = (0, walk_sync_1.default)(appDirPath);
271
- return new Set(files);
272
- }
273
- //# sourceMappingURL=virtual-entrypoint.js.map