@embroider/core 4.6.8 → 4.6.9

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 (119) hide show
  1. package/README.md +17 -0
  2. package/dist/src/app-files.d.ts +34 -0
  3. package/dist/src/app-files.d.ts.map +1 -0
  4. package/dist/src/app-files.js +201 -0
  5. package/dist/src/app-files.js.map +1 -0
  6. package/dist/src/describe-exports.d.ts +7 -0
  7. package/dist/src/describe-exports.d.ts.map +1 -0
  8. package/dist/src/describe-exports.js +52 -0
  9. package/dist/src/describe-exports.js.map +1 -0
  10. package/dist/src/html-entrypoint.d.ts +23 -0
  11. package/dist/src/html-entrypoint.d.ts.map +1 -0
  12. package/dist/src/html-entrypoint.js +185 -0
  13. package/dist/src/html-entrypoint.js.map +1 -0
  14. package/dist/src/html-placeholder.d.ts +40 -0
  15. package/dist/src/html-placeholder.d.ts.map +1 -0
  16. package/dist/src/html-placeholder.js +130 -0
  17. package/dist/src/html-placeholder.js.map +1 -0
  18. package/dist/src/index.d.ts +15 -0
  19. package/dist/src/index.d.ts.map +1 -0
  20. package/dist/src/index.js +50 -0
  21. package/dist/src/index.js.map +1 -0
  22. package/dist/src/js-handlebars.d.ts +2 -0
  23. package/dist/src/js-handlebars.d.ts.map +1 -0
  24. package/dist/src/js-handlebars.js +20 -0
  25. package/dist/src/js-handlebars.js.map +1 -0
  26. package/dist/src/measure-concat.d.ts +14 -0
  27. package/dist/src/measure-concat.d.ts.map +1 -0
  28. package/dist/src/measure-concat.js +33 -0
  29. package/dist/src/measure-concat.js.map +1 -0
  30. package/dist/src/messages.d.ts +9 -0
  31. package/dist/src/messages.d.ts.map +1 -0
  32. package/dist/src/messages.js +74 -0
  33. package/dist/src/messages.js.map +1 -0
  34. package/dist/src/module-request.d.ts +45 -0
  35. package/dist/src/module-request.d.ts.map +1 -0
  36. package/dist/src/module-request.js +87 -0
  37. package/dist/src/module-request.js.map +1 -0
  38. package/dist/src/module-resolver-options.d.ts +43 -0
  39. package/dist/src/module-resolver-options.d.ts.map +1 -0
  40. package/dist/src/module-resolver-options.js +155 -0
  41. package/dist/src/module-resolver-options.js.map +1 -0
  42. package/dist/src/module-resolver.d.ts +71 -0
  43. package/dist/src/module-resolver.d.ts.map +1 -0
  44. package/dist/src/module-resolver.js +1167 -0
  45. package/dist/src/module-resolver.js.map +1 -0
  46. package/dist/src/node-resolve.d.ts +36 -0
  47. package/dist/src/node-resolve.d.ts.map +1 -0
  48. package/dist/src/node-resolve.js +134 -0
  49. package/dist/src/node-resolve.js.map +1 -0
  50. package/dist/src/options.d.ts +26 -0
  51. package/dist/src/options.d.ts.map +1 -0
  52. package/dist/src/options.js +26 -0
  53. package/dist/src/options.js.map +1 -0
  54. package/dist/src/packager.d.ts +20 -0
  55. package/dist/src/packager.d.ts.map +1 -0
  56. package/dist/src/packager.js +34 -0
  57. package/dist/src/packager.js.map +1 -0
  58. package/dist/src/portable.d.ts +26 -0
  59. package/dist/src/portable.d.ts.map +1 -0
  60. package/dist/src/portable.js +231 -0
  61. package/dist/src/portable.js.map +1 -0
  62. package/dist/src/resolvable-extensions.d.ts +2 -0
  63. package/dist/src/resolvable-extensions.d.ts.map +1 -0
  64. package/dist/src/resolvable-extensions.js +13 -0
  65. package/dist/src/resolvable-extensions.js.map +1 -0
  66. package/dist/src/resolver-loader.d.ts +9 -0
  67. package/dist/src/resolver-loader.d.ts.map +1 -0
  68. package/dist/src/resolver-loader.js +54 -0
  69. package/dist/src/resolver-loader.js.map +1 -0
  70. package/dist/src/stage.d.ts +9 -0
  71. package/dist/src/stage.d.ts.map +1 -0
  72. package/dist/src/stage.js +3 -0
  73. package/dist/src/stage.js.map +1 -0
  74. package/dist/src/virtual-content.d.ts +36 -0
  75. package/dist/src/virtual-content.d.ts.map +1 -0
  76. package/dist/src/virtual-content.js +232 -0
  77. package/dist/src/virtual-content.js.map +1 -0
  78. package/dist/src/virtual-entrypoint.d.ts +22 -0
  79. package/dist/src/virtual-entrypoint.d.ts.map +1 -0
  80. package/dist/src/virtual-entrypoint.js +280 -0
  81. package/dist/src/virtual-entrypoint.js.map +1 -0
  82. package/dist/src/virtual-route-entrypoint.d.ts +11 -0
  83. package/dist/src/virtual-route-entrypoint.d.ts.map +1 -0
  84. package/dist/src/virtual-route-entrypoint.js +68 -0
  85. package/dist/src/virtual-route-entrypoint.js.map +1 -0
  86. package/dist/src/virtual-test-support-styles.d.ts +8 -0
  87. package/dist/src/virtual-test-support-styles.d.ts.map +1 -0
  88. package/dist/src/virtual-test-support-styles.js +61 -0
  89. package/dist/src/virtual-test-support-styles.js.map +1 -0
  90. package/dist/src/virtual-test-support.d.ts +8 -0
  91. package/dist/src/virtual-test-support.d.ts.map +1 -0
  92. package/dist/src/virtual-test-support.js +65 -0
  93. package/dist/src/virtual-test-support.js.map +1 -0
  94. package/dist/src/virtual-vendor-styles.d.ts +9 -0
  95. package/dist/src/virtual-vendor-styles.d.ts.map +1 -0
  96. package/dist/src/virtual-vendor-styles.js +84 -0
  97. package/dist/src/virtual-vendor-styles.js.map +1 -0
  98. package/dist/src/virtual-vendor.d.ts +8 -0
  99. package/dist/src/virtual-vendor.d.ts.map +1 -0
  100. package/dist/src/virtual-vendor.js +55 -0
  101. package/dist/src/virtual-vendor.js.map +1 -0
  102. package/dist/src/wait-for-trees.d.ts +14 -0
  103. package/dist/src/wait-for-trees.d.ts.map +1 -0
  104. package/dist/src/wait-for-trees.js +98 -0
  105. package/dist/src/wait-for-trees.js.map +1 -0
  106. package/dist/tests/babel-debug-util.d.ts +2 -0
  107. package/dist/tests/babel-debug-util.d.ts.map +1 -0
  108. package/dist/tests/babel-debug-util.js +36 -0
  109. package/dist/tests/babel-debug-util.js.map +1 -0
  110. package/dist/tests/example-target.d.ts +3 -0
  111. package/dist/tests/example-target.d.ts.map +1 -0
  112. package/dist/tests/example-target.js +10 -0
  113. package/dist/tests/example-target.js.map +1 -0
  114. package/dist/tests/portable.test.d.ts +2 -0
  115. package/dist/tests/portable.test.d.ts.map +1 -0
  116. package/dist/tests/portable.test.js +14 -0
  117. package/dist/tests/portable.test.js.map +1 -0
  118. package/dist/tsconfig.tsbuildinfo +1 -0
  119. package/package.json +5 -5
@@ -0,0 +1,68 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.renderRouteEntrypoint = renderRouteEntrypoint;
4
+ const app_files_1 = require("./app-files");
5
+ const js_handlebars_1 = require("./js-handlebars");
6
+ const shared_internals_1 = require("@embroider/shared-internals");
7
+ const lodash_1 = require("lodash");
8
+ const virtual_entrypoint_1 = require("./virtual-entrypoint");
9
+ // Cache AppFiles instances by fromDir to avoid recreating them for every route
10
+ const appFilesCache = new Map();
11
+ function renderRouteEntrypoint({ fromDir, route }, resolver) {
12
+ const owner = resolver.packageCache.ownerOfFile(fromDir);
13
+ if (!owner) {
14
+ throw new Error('Owner expected'); // ToDo: Really bad error, update message
15
+ }
16
+ let engine = resolver.owningEngine(owner);
17
+ let isApp = owner?.root === resolver.options.engines[0].root;
18
+ let hasFastboot = Boolean(resolver.options.engines[0].activeAddons.find(a => a.name === 'ember-cli-fastboot'));
19
+ let appFiles = appFilesCache.get(fromDir);
20
+ if (!appFiles) {
21
+ appFiles = new app_files_1.AppFiles({
22
+ package: owner,
23
+ addons: new Map(engine.activeAddons.map(addon => [
24
+ resolver.packageCache.get(addon.root),
25
+ addon.canResolveFromFile,
26
+ ])),
27
+ isApp,
28
+ modulePrefix: isApp ? resolver.options.modulePrefix : engine.packageName,
29
+ appRelativePath: 'NOT_USED_DELETE_ME',
30
+ }, (0, virtual_entrypoint_1.getAppFiles)(fromDir), hasFastboot ? (0, virtual_entrypoint_1.getFastbootFiles)(owner.root) : new Set(), (0, shared_internals_1.extensionsPattern)(resolver.options.resolvableExtensions), (0, virtual_entrypoint_1.staticAppPathsPattern)(resolver.options.staticAppPaths), resolver.options.podModulePrefix);
31
+ appFilesCache.set(fromDir, appFiles);
32
+ }
33
+ let src = '';
34
+ for (let [routeName, routeFiles] of appFiles.routeFiles.children) {
35
+ (0, virtual_entrypoint_1.splitRoute)(routeName, routeFiles, resolver.options.splitAtRoutes, (_, _filename) => {
36
+ // noop
37
+ }, (routeNames, routeFiles) => {
38
+ if (routeNames[0] === route) {
39
+ let [fastboot, nonFastboot] = (0, lodash_1.partition)(routeFiles, file => appFiles.isFastbootOnly.get(file));
40
+ const amdModules = nonFastboot.map(f => (0, virtual_entrypoint_1.importPaths)(resolver, appFiles, f));
41
+ const fastbootOnlyAmdModules = fastboot.map(f => (0, virtual_entrypoint_1.importPaths)(resolver, appFiles, f));
42
+ src = routeEntryTemplate({
43
+ amdModules,
44
+ fastbootOnlyAmdModules,
45
+ });
46
+ }
47
+ });
48
+ }
49
+ return { src, watches: [] };
50
+ }
51
+ const routeEntryTemplate = (0, js_handlebars_1.compile)(`
52
+ const output = {};
53
+ export default output;
54
+
55
+ {{#each amdModules as |amdModule index| ~}}
56
+ import * as amdModule{{index}} from "{{js-string-escape amdModule.buildtime}}"
57
+ output["{{js-string-escape amdModule.runtime}}"] = amdModule{{index}};
58
+ {{/each}}
59
+
60
+ {{#if fastbootOnlyAmdModules}}
61
+ if (macroCondition(getGlobalConfig().fastboot?.isRunning)) {
62
+ {{#each fastbootOnlyAmdModules as |amdModule| ~}}
63
+ output["{{js-string-escape amdModule.runtime}}"] = await import("{{js-string-escape amdModule.buildtime}}");
64
+ {{/each}}
65
+ }
66
+ {{/if}}
67
+ `);
68
+ //# sourceMappingURL=virtual-route-entrypoint.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"virtual-route-entrypoint.js","sourceRoot":"","sources":["../../src/virtual-route-entrypoint.ts"],"names":[],"mappings":"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","sourcesContent":["import type { V2AddonPackage } from '@embroider/shared-internals/src/package';\nimport { AppFiles } from './app-files';\nimport type { Resolver } from './module-resolver';\nimport { compile } from './js-handlebars';\nimport { extensionsPattern } from '@embroider/shared-internals';\nimport { partition } from 'lodash';\nimport { getAppFiles, getFastbootFiles, importPaths, splitRoute, staticAppPathsPattern } from './virtual-entrypoint';\n\nexport interface RouteEntrypointResponse {\n type: 'route-entrypoint';\n fromDir: string;\n route: string;\n}\n\n// Cache AppFiles instances by fromDir to avoid recreating them for every route\nconst appFilesCache = new Map();\n\nexport function renderRouteEntrypoint(\n { fromDir, route }: RouteEntrypointResponse,\n resolver: Resolver\n): { src: string; watches: string[] } {\n const owner = resolver.packageCache.ownerOfFile(fromDir);\n\n if (!owner) {\n throw new Error('Owner expected'); // ToDo: Really bad error, update message\n }\n\n let engine = resolver.owningEngine(owner);\n let isApp = owner?.root === resolver.options.engines[0]!.root;\n let hasFastboot = Boolean(resolver.options.engines[0]!.activeAddons.find(a => a.name === 'ember-cli-fastboot'));\n let appFiles = appFilesCache.get(fromDir);\n\n if (!appFiles) {\n appFiles = new AppFiles(\n {\n package: owner,\n addons: new Map(\n engine.activeAddons.map(addon => [\n resolver.packageCache.get(addon.root) as V2AddonPackage,\n addon.canResolveFromFile,\n ])\n ),\n isApp,\n modulePrefix: isApp ? resolver.options.modulePrefix : engine.packageName,\n appRelativePath: 'NOT_USED_DELETE_ME',\n },\n getAppFiles(fromDir),\n hasFastboot ? getFastbootFiles(owner.root) : new Set(),\n extensionsPattern(resolver.options.resolvableExtensions),\n staticAppPathsPattern(resolver.options.staticAppPaths),\n resolver.options.podModulePrefix\n );\n\n appFilesCache.set(fromDir, appFiles);\n }\n\n let src = '';\n\n for (let [routeName, routeFiles] of appFiles.routeFiles.children) {\n splitRoute(\n routeName,\n routeFiles,\n resolver.options.splitAtRoutes,\n (_: string, _filename: string) => {\n // noop\n },\n (routeNames: string[], routeFiles: string[]) => {\n if (routeNames[0] === route) {\n let [fastboot, nonFastboot] = partition(routeFiles, file => appFiles.isFastbootOnly.get(file));\n\n const amdModules = nonFastboot.map(f => importPaths(resolver, appFiles, f));\n const fastbootOnlyAmdModules = fastboot.map(f => importPaths(resolver, appFiles, f));\n\n src = routeEntryTemplate({\n amdModules,\n fastbootOnlyAmdModules,\n });\n }\n }\n );\n }\n\n return { src, watches: [] };\n}\n\nconst routeEntryTemplate = compile(`\nconst output = {};\nexport default output;\n\n{{#each amdModules as |amdModule index| ~}}\n import * as amdModule{{index}} from \"{{js-string-escape amdModule.buildtime}}\"\n output[\"{{js-string-escape amdModule.runtime}}\"] = amdModule{{index}};\n{{/each}}\n\n{{#if fastbootOnlyAmdModules}}\n if (macroCondition(getGlobalConfig().fastboot?.isRunning)) {\n {{#each fastbootOnlyAmdModules as |amdModule| ~}}\n output[\"{{js-string-escape amdModule.runtime}}\"] = await import(\"{{js-string-escape amdModule.buildtime}}\");\n {{/each}}\n }\n{{/if}}\n`) as (params: {\n amdModules: { runtime: string; buildtime: string }[];\n fastbootOnlyAmdModules: { runtime: string; buildtime: string }[];\n}) => string;\n"]}
@@ -0,0 +1,8 @@
1
+ import type { Resolver } from './module-resolver';
2
+ import type { VirtualContentResult } from './virtual-content';
3
+ export interface TestSupportStylesResponse {
4
+ type: 'test-support-css';
5
+ specifier: string;
6
+ }
7
+ export declare function renderTestSupportStyles(response: TestSupportStylesResponse, resolver: Resolver): VirtualContentResult;
8
+ //# sourceMappingURL=virtual-test-support-styles.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"virtual-test-support-styles.d.ts","sourceRoot":"","sources":["../../src/virtual-test-support-styles.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAClD,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AAE9D,MAAM,WAAW,yBAAyB;IACxC,IAAI,EAAE,kBAAkB,CAAC;IACzB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,wBAAgB,uBAAuB,CAAC,QAAQ,EAAE,yBAAyB,EAAE,QAAQ,EAAE,QAAQ,GAAG,oBAAoB,CAOrH"}
@@ -0,0 +1,61 @@
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.renderTestSupportStyles = renderTestSupportStyles;
7
+ const fs_1 = require("fs");
8
+ const lodash_1 = require("lodash");
9
+ const resolve_1 = __importDefault(require("resolve"));
10
+ function renderTestSupportStyles(response, resolver) {
11
+ const filename = response.specifier;
12
+ const owner = resolver.packageCache.ownerOfFile(filename);
13
+ if (!owner) {
14
+ throw new Error(`Failed to find a valid owner for ${filename}`);
15
+ }
16
+ return { src: getTestSupportStyles(owner, resolver), watches: [] };
17
+ }
18
+ function getTestSupportStyles(owner, resolver) {
19
+ let engineConfig = resolver.owningEngine(owner);
20
+ let engine = {
21
+ package: owner,
22
+ addons: new Map(engineConfig.activeAddons.map(addon => [
23
+ resolver.packageCache.get(addon.root),
24
+ addon.canResolveFromFile,
25
+ ])),
26
+ isApp: true,
27
+ modulePrefix: resolver.options.modulePrefix,
28
+ appRelativePath: 'NOT_USED_DELETE_ME',
29
+ };
30
+ return generateTestSupportStyles(engine);
31
+ }
32
+ function generateTestSupportStyles(engine) {
33
+ let result = impliedAddonTestSupportStyles(engine).map((sourcePath) => {
34
+ let source = (0, fs_1.readFileSync)(sourcePath);
35
+ return `${source}`;
36
+ });
37
+ return result.join('');
38
+ }
39
+ function impliedAddonTestSupportStyles(engine) {
40
+ let result = [];
41
+ for (let addon of (0, lodash_1.sortBy)(Array.from(engine.addons.keys()), pkg => {
42
+ switch (pkg.name) {
43
+ case 'loader.js':
44
+ return 0;
45
+ case 'ember-source':
46
+ return 10;
47
+ default:
48
+ return 1000;
49
+ }
50
+ })) {
51
+ let implicitStyles = addon.meta['implicit-test-styles'];
52
+ if (implicitStyles) {
53
+ let options = { basedir: addon.root };
54
+ for (let mod of implicitStyles) {
55
+ result.push(resolve_1.default.sync(mod, options));
56
+ }
57
+ }
58
+ }
59
+ return result;
60
+ }
61
+ //# sourceMappingURL=virtual-test-support-styles.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"virtual-test-support-styles.js","sourceRoot":"","sources":["../../src/virtual-test-support-styles.ts"],"names":[],"mappings":";;;;;AAcA,0DAOC;AAnBD,2BAAkC;AAClC,mCAAgC;AAChC,sDAA8B;AAU9B,SAAgB,uBAAuB,CAAC,QAAmC,EAAE,QAAkB;IAC7F,MAAM,QAAQ,GAAG,QAAQ,CAAC,SAAS,CAAC;IACpC,MAAM,KAAK,GAAG,QAAQ,CAAC,YAAY,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;IAC1D,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,MAAM,IAAI,KAAK,CAAC,oCAAoC,QAAQ,EAAE,CAAC,CAAC;IAClE,CAAC;IACD,OAAO,EAAE,GAAG,EAAE,oBAAoB,CAAC,KAAK,EAAE,QAAQ,CAAC,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC;AACrE,CAAC;AAED,SAAS,oBAAoB,CAAC,KAAc,EAAE,QAAkB;IAC9D,IAAI,YAAY,GAAG,QAAQ,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;IAChD,IAAI,MAAM,GAAW;QACnB,OAAO,EAAE,KAAK;QACd,MAAM,EAAE,IAAI,GAAG,CACb,YAAY,CAAC,YAAY,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC;YACrC,QAAQ,CAAC,YAAY,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAmB;YACvD,KAAK,CAAC,kBAAkB;SACzB,CAAC,CACH;QACD,KAAK,EAAE,IAAI;QACX,YAAY,EAAE,QAAQ,CAAC,OAAO,CAAC,YAAY;QAC3C,eAAe,EAAE,oBAAoB;KACtC,CAAC;IAEF,OAAO,yBAAyB,CAAC,MAAM,CAAC,CAAC;AAC3C,CAAC;AAED,SAAS,yBAAyB,CAAC,MAAc;IAC/C,IAAI,MAAM,GAAa,6BAA6B,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,UAAkB,EAAU,EAAE;QAC9F,IAAI,MAAM,GAAG,IAAA,iBAAY,EAAC,UAAU,CAAC,CAAC;QACtC,OAAO,GAAG,MAAM,EAAE,CAAC;IACrB,CAAC,CAAC,CAAC;IAEH,OAAO,MAAM,CAAC,IAAI,CAAC,EAAE,CAAW,CAAC;AACnC,CAAC;AAED,SAAS,6BAA6B,CAAC,MAAc;IACnD,IAAI,MAAM,GAAkB,EAAE,CAAC;IAC/B,KAAK,IAAI,KAAK,IAAI,IAAA,eAAM,EAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE;QAC/D,QAAQ,GAAG,CAAC,IAAI,EAAE,CAAC;YACjB,KAAK,WAAW;gBACd,OAAO,CAAC,CAAC;YACX,KAAK,cAAc;gBACjB,OAAO,EAAE,CAAC;YACZ;gBACE,OAAO,IAAI,CAAC;QAChB,CAAC;IACH,CAAC,CAAC,EAAE,CAAC;QACH,IAAI,cAAc,GAAG,KAAK,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC;QACxD,IAAI,cAAc,EAAE,CAAC;YACnB,IAAI,OAAO,GAAG,EAAE,OAAO,EAAE,KAAK,CAAC,IAAI,EAAE,CAAC;YACtC,KAAK,IAAI,GAAG,IAAI,cAAc,EAAE,CAAC;gBAC/B,MAAM,CAAC,IAAI,CAAC,iBAAO,CAAC,IAAI,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC,CAAC;YAC1C,CAAC;QACH,CAAC;IACH,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC","sourcesContent":["import type { Package } from '@embroider/shared-internals';\nimport type { V2AddonPackage } from '@embroider/shared-internals/src/package';\nimport { readFileSync } from 'fs';\nimport { sortBy } from 'lodash';\nimport resolve from 'resolve';\nimport type { Engine } from './app-files';\nimport type { Resolver } from './module-resolver';\nimport type { VirtualContentResult } from './virtual-content';\n\nexport interface TestSupportStylesResponse {\n type: 'test-support-css';\n specifier: string;\n}\n\nexport function renderTestSupportStyles(response: TestSupportStylesResponse, resolver: Resolver): VirtualContentResult {\n const filename = response.specifier;\n const owner = resolver.packageCache.ownerOfFile(filename);\n if (!owner) {\n throw new Error(`Failed to find a valid owner for ${filename}`);\n }\n return { src: getTestSupportStyles(owner, resolver), watches: [] };\n}\n\nfunction getTestSupportStyles(owner: Package, resolver: Resolver): string {\n let engineConfig = resolver.owningEngine(owner);\n let engine: Engine = {\n package: owner,\n addons: new Map(\n engineConfig.activeAddons.map(addon => [\n resolver.packageCache.get(addon.root) as V2AddonPackage,\n addon.canResolveFromFile,\n ])\n ),\n isApp: true,\n modulePrefix: resolver.options.modulePrefix,\n appRelativePath: 'NOT_USED_DELETE_ME',\n };\n\n return generateTestSupportStyles(engine);\n}\n\nfunction generateTestSupportStyles(engine: Engine): string {\n let result: string[] = impliedAddonTestSupportStyles(engine).map((sourcePath: string): string => {\n let source = readFileSync(sourcePath);\n return `${source}`;\n });\n\n return result.join('') as string;\n}\n\nfunction impliedAddonTestSupportStyles(engine: Engine): string[] {\n let result: Array<string> = [];\n for (let addon of sortBy(Array.from(engine.addons.keys()), pkg => {\n switch (pkg.name) {\n case 'loader.js':\n return 0;\n case 'ember-source':\n return 10;\n default:\n return 1000;\n }\n })) {\n let implicitStyles = addon.meta['implicit-test-styles'];\n if (implicitStyles) {\n let options = { basedir: addon.root };\n for (let mod of implicitStyles) {\n result.push(resolve.sync(mod, options));\n }\n }\n }\n return result;\n}\n"]}
@@ -0,0 +1,8 @@
1
+ import type { Resolver } from './module-resolver';
2
+ import type { VirtualContentResult } from './virtual-content';
3
+ export interface TestSupportResponse {
4
+ type: 'test-support-js';
5
+ specifier: string;
6
+ }
7
+ export declare function renderImplicitTestScripts(response: TestSupportResponse, resolver: Resolver): VirtualContentResult;
8
+ //# sourceMappingURL=virtual-test-support.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"virtual-test-support.d.ts","sourceRoot":"","sources":["../../src/virtual-test-support.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAClD,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AAE9D,MAAM,WAAW,mBAAmB;IAClC,IAAI,EAAE,iBAAiB,CAAC;IACxB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,wBAAgB,yBAAyB,CAAC,QAAQ,EAAE,mBAAmB,EAAE,QAAQ,EAAE,QAAQ,GAAG,oBAAoB,CAOjH"}
@@ -0,0 +1,65 @@
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.renderImplicitTestScripts = renderImplicitTestScripts;
7
+ const fs_1 = require("fs");
8
+ const resolve_1 = __importDefault(require("resolve"));
9
+ function renderImplicitTestScripts(response, resolver) {
10
+ const filename = response.specifier;
11
+ const owner = resolver.packageCache.ownerOfFile(filename);
12
+ if (!owner) {
13
+ throw new Error(`Failed to find a valid owner for ${filename}`);
14
+ }
15
+ return { src: getTestSupport(owner, resolver), watches: [] };
16
+ }
17
+ function getTestSupport(owner, resolver) {
18
+ let engineConfig = resolver.owningEngine(owner);
19
+ let engine = {
20
+ package: owner,
21
+ addons: new Map(engineConfig.activeAddons.map(addon => [
22
+ resolver.packageCache.get(addon.root),
23
+ addon.canResolveFromFile,
24
+ ])),
25
+ isApp: true,
26
+ modulePrefix: resolver.options.modulePrefix,
27
+ appRelativePath: 'NOT_USED_DELETE_ME',
28
+ };
29
+ return generateTestSupport(engine);
30
+ }
31
+ function generateTestSupport(engine) {
32
+ // Add classic addons test-support
33
+ let result = impliedAddonTestSupport(engine);
34
+ let hasEmbroiderMacrosTestSupport = result.find(sourcePath => sourcePath.endsWith('embroider-macros-test-support.js'));
35
+ result = result.map((sourcePath) => {
36
+ let source = (0, fs_1.readFileSync)(sourcePath);
37
+ return `${source}`;
38
+ });
39
+ // Add _testing_suffix_.js
40
+ result.push(`
41
+ var runningTests=true;
42
+ if (typeof Testem !== 'undefined' && (typeof QUnit !== 'undefined' || typeof Mocha !== 'undefined')) {
43
+ Testem.hookIntoTestFramework();
44
+ }`);
45
+ // whether or not anybody was actually using @embroider/macros explicitly
46
+ // as an addon, we ensure its test-support file is always present.
47
+ if (!hasEmbroiderMacrosTestSupport) {
48
+ result.unshift(`${(0, fs_1.readFileSync)(require.resolve('@embroider/macros/src/vendor/embroider-macros-test-support'))}`);
49
+ }
50
+ return result.join('');
51
+ }
52
+ function impliedAddonTestSupport(engine) {
53
+ let result = [];
54
+ for (let addon of Array.from(engine.addons.keys())) {
55
+ let implicitScripts = addon.meta['implicit-test-scripts'];
56
+ if (implicitScripts) {
57
+ let options = { basedir: addon.root };
58
+ for (let mod of implicitScripts) {
59
+ result.push(resolve_1.default.sync(mod, options));
60
+ }
61
+ }
62
+ }
63
+ return result;
64
+ }
65
+ //# sourceMappingURL=virtual-test-support.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"virtual-test-support.js","sourceRoot":"","sources":["../../src/virtual-test-support.ts"],"names":[],"mappings":";;;;;AAaA,8DAOC;AAlBD,2BAAkC;AAClC,sDAA8B;AAU9B,SAAgB,yBAAyB,CAAC,QAA6B,EAAE,QAAkB;IACzF,MAAM,QAAQ,GAAG,QAAQ,CAAC,SAAS,CAAC;IACpC,MAAM,KAAK,GAAG,QAAQ,CAAC,YAAY,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;IAC1D,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,MAAM,IAAI,KAAK,CAAC,oCAAoC,QAAQ,EAAE,CAAC,CAAC;IAClE,CAAC;IACD,OAAO,EAAE,GAAG,EAAE,cAAc,CAAC,KAAK,EAAE,QAAQ,CAAC,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC;AAC/D,CAAC;AAED,SAAS,cAAc,CAAC,KAAc,EAAE,QAAkB;IACxD,IAAI,YAAY,GAAG,QAAQ,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;IAChD,IAAI,MAAM,GAAW;QACnB,OAAO,EAAE,KAAK;QACd,MAAM,EAAE,IAAI,GAAG,CACb,YAAY,CAAC,YAAY,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC;YACrC,QAAQ,CAAC,YAAY,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAmB;YACvD,KAAK,CAAC,kBAAkB;SACzB,CAAC,CACH;QACD,KAAK,EAAE,IAAI;QACX,YAAY,EAAE,QAAQ,CAAC,OAAO,CAAC,YAAY;QAC3C,eAAe,EAAE,oBAAoB;KACtC,CAAC;IAEF,OAAO,mBAAmB,CAAC,MAAM,CAAC,CAAC;AACrC,CAAC;AAED,SAAS,mBAAmB,CAAC,MAAc;IACzC,kCAAkC;IAClC,IAAI,MAAM,GAAa,uBAAuB,CAAC,MAAM,CAAC,CAAC;IACvD,IAAI,6BAA6B,GAAG,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,CAC3D,UAAU,CAAC,QAAQ,CAAC,kCAAkC,CAAC,CACxD,CAAC;IACF,MAAM,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,UAAkB,EAAU,EAAE;QACjD,IAAI,MAAM,GAAG,IAAA,iBAAY,EAAC,UAAU,CAAC,CAAC;QACtC,OAAO,GAAG,MAAM,EAAE,CAAC;IACrB,CAAC,CAAC,CAAC;IAEH,0BAA0B;IAC1B,MAAM,CAAC,IAAI,CAAC;;;;EAIZ,CAAC,CAAC;IAEF,yEAAyE;IACzE,kEAAkE;IAClE,IAAI,CAAC,6BAA6B,EAAE,CAAC;QACnC,MAAM,CAAC,OAAO,CAAC,GAAG,IAAA,iBAAY,EAAC,OAAO,CAAC,OAAO,CAAC,4DAA4D,CAAC,CAAC,EAAE,CAAC,CAAC;IACnH,CAAC;IAED,OAAO,MAAM,CAAC,IAAI,CAAC,EAAE,CAAW,CAAC;AACnC,CAAC;AAED,SAAS,uBAAuB,CAAC,MAAc;IAC7C,IAAI,MAAM,GAAkB,EAAE,CAAC;IAC/B,KAAK,IAAI,KAAK,IAAI,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC;QACnD,IAAI,eAAe,GAAG,KAAK,CAAC,IAAI,CAAC,uBAAuB,CAAC,CAAC;QAC1D,IAAI,eAAe,EAAE,CAAC;YACpB,IAAI,OAAO,GAAG,EAAE,OAAO,EAAE,KAAK,CAAC,IAAI,EAAE,CAAC;YACtC,KAAK,IAAI,GAAG,IAAI,eAAe,EAAE,CAAC;gBAChC,MAAM,CAAC,IAAI,CAAC,iBAAO,CAAC,IAAI,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC,CAAC;YAC1C,CAAC;QACH,CAAC;IACH,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC","sourcesContent":["import type { Package } from '@embroider/shared-internals';\nimport type { V2AddonPackage } from '@embroider/shared-internals/src/package';\nimport { readFileSync } from 'fs';\nimport resolve from 'resolve';\nimport type { Engine } from './app-files';\nimport type { Resolver } from './module-resolver';\nimport type { VirtualContentResult } from './virtual-content';\n\nexport interface TestSupportResponse {\n type: 'test-support-js';\n specifier: string;\n}\n\nexport function renderImplicitTestScripts(response: TestSupportResponse, resolver: Resolver): VirtualContentResult {\n const filename = response.specifier;\n const owner = resolver.packageCache.ownerOfFile(filename);\n if (!owner) {\n throw new Error(`Failed to find a valid owner for ${filename}`);\n }\n return { src: getTestSupport(owner, resolver), watches: [] };\n}\n\nfunction getTestSupport(owner: Package, resolver: Resolver): string {\n let engineConfig = resolver.owningEngine(owner);\n let engine: Engine = {\n package: owner,\n addons: new Map(\n engineConfig.activeAddons.map(addon => [\n resolver.packageCache.get(addon.root) as V2AddonPackage,\n addon.canResolveFromFile,\n ])\n ),\n isApp: true,\n modulePrefix: resolver.options.modulePrefix,\n appRelativePath: 'NOT_USED_DELETE_ME',\n };\n\n return generateTestSupport(engine);\n}\n\nfunction generateTestSupport(engine: Engine): string {\n // Add classic addons test-support\n let result: string[] = impliedAddonTestSupport(engine);\n let hasEmbroiderMacrosTestSupport = result.find(sourcePath =>\n sourcePath.endsWith('embroider-macros-test-support.js')\n );\n result = result.map((sourcePath: string): string => {\n let source = readFileSync(sourcePath);\n return `${source}`;\n });\n\n // Add _testing_suffix_.js\n result.push(`\nvar runningTests=true;\nif (typeof Testem !== 'undefined' && (typeof QUnit !== 'undefined' || typeof Mocha !== 'undefined')) {\n Testem.hookIntoTestFramework();\n}`);\n\n // whether or not anybody was actually using @embroider/macros explicitly\n // as an addon, we ensure its test-support file is always present.\n if (!hasEmbroiderMacrosTestSupport) {\n result.unshift(`${readFileSync(require.resolve('@embroider/macros/src/vendor/embroider-macros-test-support'))}`);\n }\n\n return result.join('') as string;\n}\n\nfunction impliedAddonTestSupport(engine: Engine): string[] {\n let result: Array<string> = [];\n for (let addon of Array.from(engine.addons.keys())) {\n let implicitScripts = addon.meta['implicit-test-scripts'];\n if (implicitScripts) {\n let options = { basedir: addon.root };\n for (let mod of implicitScripts) {\n result.push(resolve.sync(mod, options));\n }\n }\n }\n return result;\n}\n"]}
@@ -0,0 +1,9 @@
1
+ import type { Resolver } from './module-resolver';
2
+ import type { VirtualContentResult } from './virtual-content';
3
+ export interface VirtualVendorStylesResponse {
4
+ type: 'vendor-css';
5
+ specifier: string;
6
+ }
7
+ export declare function decodeVirtualVendorStyles(filename: string): boolean;
8
+ export declare function renderVendorStyles(response: VirtualVendorStylesResponse, resolver: Resolver): VirtualContentResult;
9
+ //# sourceMappingURL=virtual-vendor-styles.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"virtual-vendor-styles.d.ts","sourceRoot":"","sources":["../../src/virtual-vendor-styles.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAClD,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AAG9D,MAAM,WAAW,2BAA2B;IAC1C,IAAI,EAAE,YAAY,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,wBAAgB,yBAAyB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAEnE;AAED,wBAAgB,kBAAkB,CAAC,QAAQ,EAAE,2BAA2B,EAAE,QAAQ,EAAE,QAAQ,GAAG,oBAAoB,CAOlH"}
@@ -0,0 +1,84 @@
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.decodeVirtualVendorStyles = decodeVirtualVendorStyles;
7
+ exports.renderVendorStyles = renderVendorStyles;
8
+ const fs_1 = require("fs");
9
+ const lodash_1 = require("lodash");
10
+ const resolve_1 = __importDefault(require("resolve"));
11
+ function decodeVirtualVendorStyles(filename) {
12
+ return filename.endsWith('-embroider-vendor-styles.css');
13
+ }
14
+ function renderVendorStyles(response, resolver) {
15
+ const filename = response.specifier;
16
+ const owner = resolver.packageCache.ownerOfFile(filename);
17
+ if (!owner) {
18
+ throw new Error(`Failed to find a valid owner for ${filename}`);
19
+ }
20
+ return { src: getVendorStyles(owner, resolver), watches: [] };
21
+ }
22
+ function getVendorStyles(owner, resolver) {
23
+ let engineConfig = resolver.owningEngine(owner);
24
+ let engine = {
25
+ package: owner,
26
+ addons: new Map(engineConfig.activeAddons.map(addon => [
27
+ resolver.packageCache.get(addon.root),
28
+ addon.canResolveFromFile,
29
+ ])),
30
+ isApp: engineConfig.root === resolver.options.engines[0].root,
31
+ modulePrefix: resolver.options.modulePrefix,
32
+ appRelativePath: 'NOT_USED_DELETE_ME',
33
+ };
34
+ return generateVendorStyles(engine);
35
+ }
36
+ function generateVendorStyles(engine) {
37
+ let result = impliedAddonVendorStyles(engine).map(sourcePath => (0, fs_1.readFileSync)(sourcePath, 'utf-8'));
38
+ // add the engines own styles but only if it is not the top-level app, that is provided by @embroider/synthesized-styles
39
+ if (!engine.isApp) {
40
+ let engineStyles = [];
41
+ engineStyles = getAddonImplicitStyles(engine.package).map(sourcePath => (0, fs_1.readFileSync)(sourcePath, 'utf-8'));
42
+ // add engine's own implicit styles after all vendor styles
43
+ if (engineStyles.length) {
44
+ result = [...result, ...engineStyles];
45
+ }
46
+ }
47
+ return result.join('');
48
+ }
49
+ function impliedAddonVendorStyles(engine) {
50
+ let result = [];
51
+ for (let addon of (0, lodash_1.sortBy)(Array.from(engine.addons.keys()), pkg => {
52
+ switch (pkg.name) {
53
+ case 'loader.js':
54
+ return 0;
55
+ case 'ember-source':
56
+ return 10;
57
+ default:
58
+ return 1000;
59
+ }
60
+ })) {
61
+ // exclude lazy engines because they will handle their own css importation
62
+ if (addon.isLazyEngine()) {
63
+ continue;
64
+ }
65
+ let styles = getAddonImplicitStyles(addon);
66
+ if (styles.length) {
67
+ const newResult = styles.slice().concat(result);
68
+ result = newResult;
69
+ }
70
+ }
71
+ return result;
72
+ }
73
+ function getAddonImplicitStyles(pkg) {
74
+ let implicitStyles = pkg.meta['implicit-styles'];
75
+ let styles = [];
76
+ if (implicitStyles) {
77
+ let options = { basedir: pkg.root };
78
+ for (let mod of implicitStyles) {
79
+ styles.push(resolve_1.default.sync(mod, options));
80
+ }
81
+ }
82
+ return styles;
83
+ }
84
+ //# sourceMappingURL=virtual-vendor-styles.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"virtual-vendor-styles.js","sourceRoot":"","sources":["../../src/virtual-vendor-styles.ts"],"names":[],"mappings":"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","sourcesContent":["import type { Package } from '@embroider/shared-internals';\nimport type { V2AddonPackage } from '@embroider/shared-internals/src/package';\nimport { readFileSync } from 'fs';\nimport { sortBy } from 'lodash';\nimport resolve from 'resolve';\nimport type { Resolver } from './module-resolver';\nimport type { VirtualContentResult } from './virtual-content';\nimport type { Engine } from './app-files';\n\nexport interface VirtualVendorStylesResponse {\n type: 'vendor-css';\n specifier: string;\n}\n\nexport function decodeVirtualVendorStyles(filename: string): boolean {\n return filename.endsWith('-embroider-vendor-styles.css');\n}\n\nexport function renderVendorStyles(response: VirtualVendorStylesResponse, resolver: Resolver): VirtualContentResult {\n const filename = response.specifier;\n const owner = resolver.packageCache.ownerOfFile(filename);\n if (!owner) {\n throw new Error(`Failed to find a valid owner for ${filename}`);\n }\n return { src: getVendorStyles(owner, resolver), watches: [] };\n}\n\nfunction getVendorStyles(owner: Package, resolver: Resolver): string {\n let engineConfig = resolver.owningEngine(owner);\n let engine: Engine = {\n package: owner,\n addons: new Map(\n engineConfig.activeAddons.map(addon => [\n resolver.packageCache.get(addon.root) as V2AddonPackage,\n addon.canResolveFromFile,\n ])\n ),\n isApp: engineConfig.root === resolver.options.engines[0].root,\n modulePrefix: resolver.options.modulePrefix,\n appRelativePath: 'NOT_USED_DELETE_ME',\n };\n\n return generateVendorStyles(engine);\n}\n\nfunction generateVendorStyles(engine: Engine): string {\n let result: string[] = impliedAddonVendorStyles(engine).map(sourcePath => readFileSync(sourcePath, 'utf-8'));\n\n // add the engines own styles but only if it is not the top-level app, that is provided by @embroider/synthesized-styles\n if (!engine.isApp) {\n let engineStyles = [];\n\n engineStyles = getAddonImplicitStyles(engine.package as V2AddonPackage).map(sourcePath =>\n readFileSync(sourcePath, 'utf-8')\n );\n\n // add engine's own implicit styles after all vendor styles\n if (engineStyles.length) {\n result = [...result, ...engineStyles];\n }\n }\n\n return result.join('') as string;\n}\n\nfunction impliedAddonVendorStyles(engine: Engine): string[] {\n let result: Array<string> = [];\n for (let addon of sortBy(Array.from(engine.addons.keys()), pkg => {\n switch (pkg.name) {\n case 'loader.js':\n return 0;\n case 'ember-source':\n return 10;\n default:\n return 1000;\n }\n })) {\n // exclude lazy engines because they will handle their own css importation\n if (addon.isLazyEngine()) {\n continue;\n }\n\n let styles = getAddonImplicitStyles(addon);\n\n if (styles.length) {\n const newResult = styles.slice().concat(result);\n\n result = newResult;\n }\n }\n return result;\n}\n\nfunction getAddonImplicitStyles(pkg: V2AddonPackage): string[] {\n let implicitStyles = pkg.meta['implicit-styles'];\n let styles = [];\n if (implicitStyles) {\n let options = { basedir: pkg.root };\n for (let mod of implicitStyles) {\n styles.push(resolve.sync(mod, options));\n }\n }\n return styles;\n}\n"]}
@@ -0,0 +1,8 @@
1
+ import type { Resolver } from './module-resolver';
2
+ import type { VirtualContentResult } from './virtual-content';
3
+ export interface VirtualVendorResponse {
4
+ type: 'vendor-js';
5
+ specifier: string;
6
+ }
7
+ export declare function renderVendor(response: VirtualVendorResponse, resolver: Resolver): VirtualContentResult;
8
+ //# sourceMappingURL=virtual-vendor.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"virtual-vendor.d.ts","sourceRoot":"","sources":["../../src/virtual-vendor.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAClD,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AAE9D,MAAM,WAAW,qBAAqB;IACpC,IAAI,EAAE,WAAW,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,wBAAgB,YAAY,CAAC,QAAQ,EAAE,qBAAqB,EAAE,QAAQ,EAAE,QAAQ,GAAG,oBAAoB,CAMtG"}
@@ -0,0 +1,55 @@
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.renderVendor = renderVendor;
7
+ const shared_internals_1 = require("@embroider/shared-internals");
8
+ const fs_extra_1 = require("fs-extra");
9
+ const path_1 = require("path");
10
+ const resolve_1 = __importDefault(require("resolve"));
11
+ function renderVendor(response, resolver) {
12
+ const owner = resolver.packageCache.ownerOfFile(response.specifier);
13
+ if (!owner) {
14
+ throw new Error(`Failed to find a valid owner for ${response.specifier}`);
15
+ }
16
+ return { src: getVendor(owner, resolver), watches: [] };
17
+ }
18
+ function getVendor(owner, resolver) {
19
+ let engineConfig = resolver.owningEngine(owner);
20
+ let addons = engineConfig.activeAddons.map(addon => resolver.packageCache.get(addon.root));
21
+ let path = (0, path_1.join)((0, shared_internals_1.locateEmbroiderWorkingDir)(resolver.options.appRoot), 'ember-env.json');
22
+ let emberENV;
23
+ if ((0, fs_extra_1.existsSync)(path)) {
24
+ emberENV = (0, fs_extra_1.readJSONSync)(path);
25
+ }
26
+ return generateVendor(addons, emberENV);
27
+ }
28
+ function generateVendor(addons, emberENV) {
29
+ // Add addons implicit-scripts
30
+ let vendor = impliedAddonVendors(addons).map((sourcePath) => {
31
+ let source = (0, fs_extra_1.readFileSync)(sourcePath);
32
+ return `${source}`;
33
+ });
34
+ // Add _testing_prefix_.js
35
+ vendor.unshift(`var runningTests=false;`);
36
+ // Add _ember_env_.js
37
+ if (emberENV) {
38
+ vendor.unshift(`window.EmberENV={ ...(window.EmberENV || {}), ...${JSON.stringify(emberENV, null, 2)} };`);
39
+ }
40
+ return vendor.join('');
41
+ }
42
+ function impliedAddonVendors(addons) {
43
+ let result = [];
44
+ for (let addon of addons) {
45
+ let implicitScripts = addon.meta['implicit-scripts'];
46
+ if (implicitScripts) {
47
+ let options = { basedir: addon.root };
48
+ for (let mod of implicitScripts) {
49
+ result.push(resolve_1.default.sync(mod, options));
50
+ }
51
+ }
52
+ }
53
+ return result;
54
+ }
55
+ //# sourceMappingURL=virtual-vendor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"virtual-vendor.js","sourceRoot":"","sources":["../../src/virtual-vendor.ts"],"names":[],"mappings":";;;;;AAaA,oCAMC;AAnBD,kEAAsF;AAEtF,uCAAkE;AAClE,+BAA4B;AAC5B,sDAA8B;AAS9B,SAAgB,YAAY,CAAC,QAA+B,EAAE,QAAkB;IAC9E,MAAM,KAAK,GAAG,QAAQ,CAAC,YAAY,CAAC,WAAW,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;IACpE,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,MAAM,IAAI,KAAK,CAAC,oCAAoC,QAAQ,CAAC,SAAS,EAAE,CAAC,CAAC;IAC5E,CAAC;IACD,OAAO,EAAE,GAAG,EAAE,SAAS,CAAC,KAAK,EAAE,QAAQ,CAAC,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC;AAC1D,CAAC;AAED,SAAS,SAAS,CAAC,KAAc,EAAE,QAAkB;IACnD,IAAI,YAAY,GAAG,QAAQ,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;IAChD,IAAI,MAAM,GAAG,YAAY,CAAC,YAAY,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,QAAQ,CAAC,YAAY,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAmB,CAAC,CAAC;IAE7G,IAAI,IAAI,GAAG,IAAA,WAAI,EAAC,IAAA,4CAAyB,EAAC,QAAQ,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,gBAAgB,CAAC,CAAC;IAEvF,IAAI,QAAQ,CAAC;IACb,IAAI,IAAA,qBAAU,EAAC,IAAI,CAAC,EAAE,CAAC;QACrB,QAAQ,GAAG,IAAA,uBAAY,EAAC,IAAI,CAAC,CAAC;IAChC,CAAC;IAED,OAAO,cAAc,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;AAC1C,CAAC;AAED,SAAS,cAAc,CAAC,MAAwB,EAAE,QAAiB;IACjE,8BAA8B;IAC9B,IAAI,MAAM,GAAa,mBAAmB,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,UAAkB,EAAU,EAAE;QACpF,IAAI,MAAM,GAAG,IAAA,uBAAY,EAAC,UAAU,CAAC,CAAC;QACtC,OAAO,GAAG,MAAM,EAAE,CAAC;IACrB,CAAC,CAAC,CAAC;IACH,0BAA0B;IAC1B,MAAM,CAAC,OAAO,CAAC,yBAAyB,CAAC,CAAC;IAC1C,qBAAqB;IACrB,IAAI,QAAQ,EAAE,CAAC;QACb,MAAM,CAAC,OAAO,CAAC,oDAAoD,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC;IAC7G,CAAC;IAED,OAAO,MAAM,CAAC,IAAI,CAAC,EAAE,CAAW,CAAC;AACnC,CAAC;AAED,SAAS,mBAAmB,CAAC,MAAwB;IACnD,IAAI,MAAM,GAAkB,EAAE,CAAC;IAC/B,KAAK,IAAI,KAAK,IAAI,MAAM,EAAE,CAAC;QACzB,IAAI,eAAe,GAAG,KAAK,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;QACrD,IAAI,eAAe,EAAE,CAAC;YACpB,IAAI,OAAO,GAAG,EAAE,OAAO,EAAE,KAAK,CAAC,IAAI,EAAE,CAAC;YACtC,KAAK,IAAI,GAAG,IAAI,eAAe,EAAE,CAAC;gBAChC,MAAM,CAAC,IAAI,CAAC,iBAAO,CAAC,IAAI,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC,CAAC;YAC1C,CAAC;QACH,CAAC;IACH,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC","sourcesContent":["import { type Package, locateEmbroiderWorkingDir } from '@embroider/shared-internals';\nimport type { V2AddonPackage } from '@embroider/shared-internals/src/package';\nimport { existsSync, readFileSync, readJSONSync } from 'fs-extra';\nimport { join } from 'path';\nimport resolve from 'resolve';\nimport type { Resolver } from './module-resolver';\nimport type { VirtualContentResult } from './virtual-content';\n\nexport interface VirtualVendorResponse {\n type: 'vendor-js';\n specifier: string;\n}\n\nexport function renderVendor(response: VirtualVendorResponse, resolver: Resolver): VirtualContentResult {\n const owner = resolver.packageCache.ownerOfFile(response.specifier);\n if (!owner) {\n throw new Error(`Failed to find a valid owner for ${response.specifier}`);\n }\n return { src: getVendor(owner, resolver), watches: [] };\n}\n\nfunction getVendor(owner: Package, resolver: Resolver): string {\n let engineConfig = resolver.owningEngine(owner);\n let addons = engineConfig.activeAddons.map(addon => resolver.packageCache.get(addon.root) as V2AddonPackage);\n\n let path = join(locateEmbroiderWorkingDir(resolver.options.appRoot), 'ember-env.json');\n\n let emberENV;\n if (existsSync(path)) {\n emberENV = readJSONSync(path);\n }\n\n return generateVendor(addons, emberENV);\n}\n\nfunction generateVendor(addons: V2AddonPackage[], emberENV: unknown): string {\n // Add addons implicit-scripts\n let vendor: string[] = impliedAddonVendors(addons).map((sourcePath: string): string => {\n let source = readFileSync(sourcePath);\n return `${source}`;\n });\n // Add _testing_prefix_.js\n vendor.unshift(`var runningTests=false;`);\n // Add _ember_env_.js\n if (emberENV) {\n vendor.unshift(`window.EmberENV={ ...(window.EmberENV || {}), ...${JSON.stringify(emberENV, null, 2)} };`);\n }\n\n return vendor.join('') as string;\n}\n\nfunction impliedAddonVendors(addons: V2AddonPackage[]): string[] {\n let result: Array<string> = [];\n for (let addon of addons) {\n let implicitScripts = addon.meta['implicit-scripts'];\n if (implicitScripts) {\n let options = { basedir: addon.root };\n for (let mod of implicitScripts) {\n result.push(resolve.sync(mod, options));\n }\n }\n }\n return result;\n}\n"]}
@@ -0,0 +1,14 @@
1
+ import BroccoliPlugin from 'broccoli-plugin';
2
+ import type { Node } from 'broccoli-node-api';
3
+ export default class WaitForTrees<NamedTrees> extends BroccoliPlugin {
4
+ private trees;
5
+ private buildHook;
6
+ constructor(trees: NamedTrees, annotation: string, buildHook: (trees: OutputPaths<NamedTrees>, changed: Map<string, boolean>) => Promise<void>);
7
+ build(detail?: {
8
+ changedNodes: boolean[];
9
+ }): Promise<void>;
10
+ }
11
+ export type OutputPaths<NamedTrees> = {
12
+ [P in keyof NamedTrees]: NamedTrees[P] extends Node ? string : NamedTrees[P] extends Node[] ? string[] : never;
13
+ };
14
+ //# sourceMappingURL=wait-for-trees.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"wait-for-trees.d.ts","sourceRoot":"","sources":["../../src/wait-for-trees.ts"],"names":[],"mappings":"AAAA,OAAO,cAAc,MAAM,iBAAiB,CAAC;AAC7C,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,mBAAmB,CAAC;AAuB9C,MAAM,CAAC,OAAO,OAAO,YAAY,CAAC,UAAU,CAAE,SAAQ,cAAc;IAEhE,OAAO,CAAC,KAAK;IAEb,OAAO,CAAC,SAAS;gBAFT,KAAK,EAAE,UAAU,EACzB,UAAU,EAAE,MAAM,EACV,SAAS,EAAE,CAAC,KAAK,EAAE,WAAW,CAAC,UAAU,CAAC,EAAE,OAAO,EAAE,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,OAAO,CAAC,IAAI,CAAC;IAU/F,KAAK,CAAC,MAAM,CAAC,EAAE;QAAE,YAAY,EAAE,OAAO,EAAE,CAAA;KAAE;CAwBjD;AAED,MAAM,MAAM,WAAW,CAAC,UAAU,IAAI;KACnC,CAAC,IAAI,MAAM,UAAU,GAAG,UAAU,CAAC,CAAC,CAAC,SAAS,IAAI,GAAG,MAAM,GAAG,UAAU,CAAC,CAAC,CAAC,SAAS,IAAI,EAAE,GAAG,MAAM,EAAE,GAAG,KAAK;CAC/G,CAAC"}
@@ -0,0 +1,98 @@
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
+ const broccoli_plugin_1 = __importDefault(require("broccoli-plugin"));
7
+ /*
8
+ Takes some named broccoli trees and/or lists of broccoli trees and gives you
9
+ the resulting inputPaths once those trees are built. Example:
10
+
11
+ import { Node } from 'broccoli-node-api';;
12
+
13
+ interface MyInputs<T> {
14
+ codeFromMyApp: T,
15
+ codeFromMyAddons: T[]
16
+ }
17
+
18
+ function(trees: MyInputs<Node>): Node {
19
+ return WaitForTrees(trees, build);
20
+ }
21
+
22
+ async function build(paths: MyInputs<string>) {
23
+ // paths.someTree is a string
24
+ // paths.otherTrees is a string[]
25
+ }
26
+
27
+ */
28
+ class WaitForTrees extends broccoli_plugin_1.default {
29
+ trees;
30
+ buildHook;
31
+ constructor(trees, annotation, buildHook) {
32
+ super(flatTrees(trees), {
33
+ persistentOutput: true,
34
+ needsCache: false,
35
+ annotation: annotation,
36
+ trackInputChanges: true,
37
+ });
38
+ this.trees = trees;
39
+ this.buildHook = buildHook;
40
+ }
41
+ async build(detail) {
42
+ let result = {};
43
+ let changedMap = new Map();
44
+ let inputPathCounter = 0;
45
+ for (let entry of findTrees(this.trees)) {
46
+ if (entry.single) {
47
+ result[entry.name] = this.inputPaths[inputPathCounter];
48
+ let didChange = detail ? detail.changedNodes[inputPathCounter] : true;
49
+ changedMap.set(this.inputPaths[inputPathCounter], didChange);
50
+ inputPathCounter += 1;
51
+ }
52
+ else if (entry.multi) {
53
+ let sliced = this.inputPaths.slice(inputPathCounter, inputPathCounter + entry.multi.length);
54
+ result[entry.name] = sliced.map(slice => {
55
+ let didChange = detail ? detail.changedNodes[inputPathCounter] : true;
56
+ changedMap.set(slice, didChange);
57
+ inputPathCounter++;
58
+ return slice;
59
+ });
60
+ }
61
+ }
62
+ return this.buildHook(result, changedMap);
63
+ }
64
+ }
65
+ exports.default = WaitForTrees;
66
+ function isTree(x) {
67
+ return x && typeof x.__broccoliGetInfo__ === 'function';
68
+ }
69
+ function* findTrees(trees) {
70
+ for (let [name, value] of Object.entries(trees)) {
71
+ if (Array.isArray(value)) {
72
+ let stringTrees = value.filter(t => typeof t === 'string');
73
+ if (stringTrees.length > 0) {
74
+ throw new Error(`found strings instead of broccoli trees for ${name}: ${value}`);
75
+ }
76
+ yield { name, multi: value.filter(isTree) };
77
+ }
78
+ else if (isTree(value)) {
79
+ yield { name, single: value };
80
+ }
81
+ else if (typeof value === 'string') {
82
+ throw new Error(`found a string when we expected a broccoli tree for ${name}: ${value}`);
83
+ }
84
+ }
85
+ }
86
+ function flatTrees(trees) {
87
+ let output = [];
88
+ for (let value of findTrees(trees)) {
89
+ if (value.multi) {
90
+ output = output.concat(value.multi);
91
+ }
92
+ else if (value.single) {
93
+ output.push(value.single);
94
+ }
95
+ }
96
+ return output;
97
+ }
98
+ //# sourceMappingURL=wait-for-trees.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"wait-for-trees.js","sourceRoot":"","sources":["../../src/wait-for-trees.ts"],"names":[],"mappings":"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","sourcesContent":["import BroccoliPlugin from 'broccoli-plugin';\nimport type { Node } from 'broccoli-node-api';\n\n/*\n Takes some named broccoli trees and/or lists of broccoli trees and gives you\n the resulting inputPaths once those trees are built. Example:\n\n import { Node } from 'broccoli-node-api';;\n\n interface MyInputs<T> {\n codeFromMyApp: T,\n codeFromMyAddons: T[]\n }\n\n function(trees: MyInputs<Node>): Node {\n return WaitForTrees(trees, build);\n }\n\n async function build(paths: MyInputs<string>) {\n // paths.someTree is a string\n // paths.otherTrees is a string[]\n }\n\n*/\nexport default class WaitForTrees<NamedTrees> extends BroccoliPlugin {\n constructor(\n private trees: NamedTrees,\n annotation: string,\n private buildHook: (trees: OutputPaths<NamedTrees>, changed: Map<string, boolean>) => Promise<void>\n ) {\n super(flatTrees(trees), {\n persistentOutput: true,\n needsCache: false,\n annotation: annotation,\n trackInputChanges: true,\n });\n }\n\n async build(detail?: { changedNodes: boolean[] }) {\n let result: { [treeName: string]: string | string[] } = {};\n let changedMap = new Map();\n\n let inputPathCounter = 0;\n for (let entry of findTrees(this.trees)) {\n if (entry.single) {\n result[entry.name] = this.inputPaths[inputPathCounter];\n let didChange = detail ? detail.changedNodes[inputPathCounter] : true;\n changedMap.set(this.inputPaths[inputPathCounter], didChange);\n inputPathCounter += 1;\n } else if (entry.multi) {\n let sliced = this.inputPaths.slice(inputPathCounter, inputPathCounter + entry.multi.length);\n\n result[entry.name] = sliced.map(slice => {\n let didChange = detail ? detail.changedNodes[inputPathCounter] : true;\n changedMap.set(slice, didChange);\n inputPathCounter++;\n return slice;\n });\n }\n }\n return this.buildHook(result as unknown as OutputPaths<NamedTrees>, changedMap);\n }\n}\n\nexport type OutputPaths<NamedTrees> = {\n [P in keyof NamedTrees]: NamedTrees[P] extends Node ? string : NamedTrees[P] extends Node[] ? string[] : never;\n};\n\nfunction isTree(x: any): x is Node {\n return x && typeof x.__broccoliGetInfo__ === 'function';\n}\n\nfunction* findTrees<NamedTrees>(trees: NamedTrees): IterableIterator<{ name: string; single?: Node; multi?: Node[] }> {\n for (let [name, value] of Object.entries(trees as Record<string, unknown>)) {\n if (Array.isArray(value)) {\n let stringTrees = value.filter(t => typeof t === 'string');\n if (stringTrees.length > 0) {\n throw new Error(`found strings instead of broccoli trees for ${name}: ${value}`);\n }\n yield { name, multi: value.filter(isTree) };\n } else if (isTree(value)) {\n yield { name, single: value };\n } else if (typeof value === 'string') {\n throw new Error(`found a string when we expected a broccoli tree for ${name}: ${value}`);\n }\n }\n}\n\nfunction flatTrees<NamedTrees>(trees: NamedTrees) {\n let output: Node[] = [];\n for (let value of findTrees(trees)) {\n if (value.multi) {\n output = output.concat(value.multi);\n } else if (value.single) {\n output.push(value.single);\n }\n }\n return output;\n}\n"]}
@@ -0,0 +1,2 @@
1
+ export declare function transpile(appDir: string, fileLocalPath: string): Promise<string>;
2
+ //# sourceMappingURL=babel-debug-util.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"babel-debug-util.d.ts","sourceRoot":"","sources":["../../tests/babel-debug-util.ts"],"names":[],"mappings":"AAMA,wBAAsB,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAMtF"}
@@ -0,0 +1,36 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.transpile = transpile;
4
+ const core_1 = require("@babel/core");
5
+ const fs_extra_1 = require("fs-extra");
6
+ const path_1 = require("path");
7
+ const process_1 = require("process");
8
+ async function transpile(appDir, fileLocalPath) {
9
+ let pkg = (0, fs_extra_1.readJSONSync)((0, path_1.join)(appDir, 'package.json'));
10
+ let config = (await import((0, path_1.join)(appDir, pkg['ember-addon'].babel.filename))).default;
11
+ let filename = (0, path_1.join)(appDir, fileLocalPath);
12
+ let src = (0, fs_extra_1.readFileSync)(filename, 'utf8');
13
+ return (0, core_1.transform)(src, Object.assign({ filename }, config)).code;
14
+ }
15
+ if (require.main === module) {
16
+ if (process_1.argv.length < 4) {
17
+ console.log(`
18
+ Usage:
19
+ node babel-debug-util.js [pathToAppOutputDir] [localPathToFile]
20
+
21
+ Given an app that has been prepared by Embroider (the stage2 output)
22
+ and the local path to a JS file within that app, run the app's babel
23
+ config on that file and print the results.
24
+ `);
25
+ process.exit(-1);
26
+ }
27
+ transpile(process.argv[2], process.argv[3])
28
+ .then(src => {
29
+ console.log(src);
30
+ })
31
+ .catch(err => {
32
+ console.log(err);
33
+ process.exit(-1);
34
+ });
35
+ }
36
+ //# sourceMappingURL=babel-debug-util.js.map