@embroider/core 3.4.10 → 3.4.11-unstable.217e7a8
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/package.json +15 -12
- package/src/app-files.d.ts +3 -4
- package/src/app-files.js +10 -3
- package/src/app-files.js.map +1 -1
- package/src/describe-exports.js.map +1 -1
- package/src/html-entrypoint.js.map +1 -1
- package/src/html-placeholder.js.map +1 -1
- package/src/index.d.ts +1 -2
- package/src/index.js.map +1 -1
- package/src/messages.js.map +1 -1
- package/src/module-resolver.d.ts +31 -15
- package/src/module-resolver.js +346 -191
- package/src/module-resolver.js.map +1 -1
- package/src/node-resolve.d.ts +33 -0
- package/src/node-resolve.js +131 -0
- package/src/node-resolve.js.map +1 -0
- package/src/options.js.map +1 -1
- package/src/packager.js.map +1 -1
- package/src/portable-babel-config.js.map +1 -1
- package/src/portable-babel-launcher.js.map +1 -1
- package/src/portable.js.map +1 -1
- package/src/resolver-loader.js.map +1 -1
- package/src/to-broccoli-plugin.js.map +1 -1
- package/src/virtual-content.d.ts +6 -2
- package/src/virtual-content.js +119 -42
- package/src/virtual-content.js.map +1 -1
- package/src/virtual-entrypoint.d.ts +19 -0
- package/src/virtual-entrypoint.js +303 -0
- package/src/virtual-entrypoint.js.map +1 -0
- package/src/virtual-route-entrypoint.d.ts +15 -0
- package/src/virtual-route-entrypoint.js +102 -0
- package/src/virtual-route-entrypoint.js.map +1 -0
- package/src/virtual-test-entrypoint.d.ts +10 -0
- package/src/virtual-test-entrypoint.js +67 -0
- package/src/virtual-test-entrypoint.js.map +1 -0
- package/src/virtual-test-support-styles.d.ts +4 -0
- package/src/virtual-test-support-styles.js +65 -0
- package/src/virtual-test-support-styles.js.map +1 -0
- package/src/virtual-test-support.d.ts +4 -0
- package/src/virtual-test-support.js +69 -0
- package/src/virtual-test-support.js.map +1 -0
- package/src/virtual-vendor-styles.d.ts +4 -0
- package/src/virtual-vendor-styles.js +83 -0
- package/src/virtual-vendor-styles.js.map +1 -0
- package/src/virtual-vendor.d.ts +4 -0
- package/src/virtual-vendor.js +73 -0
- package/src/virtual-vendor.js.map +1 -0
- package/src/wait-for-trees.js.map +1 -1
- package/LICENSE +0 -21
- package/src/asset.d.ts +0 -33
- package/src/asset.js +0 -3
- package/src/asset.js.map +0 -1
- package/src/ember-html.d.ts +0 -43
- package/src/ember-html.js +0 -110
- package/src/ember-html.js.map +0 -1
@@ -0,0 +1,67 @@
|
|
1
|
+
"use strict";
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
3
|
+
exports.renderTestEntrypoint = exports.decodeTestEntrypoint = void 0;
|
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 virtual_entrypoint_1 = require("./virtual-entrypoint");
|
8
|
+
const entrypointPattern = /(?<filename>.*)[\\/]-embroider-test-entrypoint.js/;
|
9
|
+
function decodeTestEntrypoint(filename) {
|
10
|
+
// Performance: avoid paying regex exec cost unless needed
|
11
|
+
if (!filename.includes('-embroider-test-entrypoint.js')) {
|
12
|
+
return;
|
13
|
+
}
|
14
|
+
let m = entrypointPattern.exec(filename);
|
15
|
+
if (m) {
|
16
|
+
return {
|
17
|
+
fromFile: m.groups.filename,
|
18
|
+
};
|
19
|
+
}
|
20
|
+
}
|
21
|
+
exports.decodeTestEntrypoint = decodeTestEntrypoint;
|
22
|
+
function renderTestEntrypoint(resolver, { fromFile }) {
|
23
|
+
const owner = resolver.packageCache.ownerOfFile(fromFile);
|
24
|
+
if (!owner) {
|
25
|
+
throw new Error(`Owner expected while loading test entrypoint from file: ${fromFile}`);
|
26
|
+
}
|
27
|
+
let engine = resolver.owningEngine(owner);
|
28
|
+
let appFiles = new app_files_1.AppFiles({
|
29
|
+
package: owner,
|
30
|
+
addons: new Map(engine.activeAddons.map(addon => [
|
31
|
+
resolver.packageCache.get(addon.root),
|
32
|
+
addon.canResolveFromFile,
|
33
|
+
])),
|
34
|
+
isApp: true,
|
35
|
+
modulePrefix: resolver.options.modulePrefix,
|
36
|
+
appRelativePath: 'NOT_USED_DELETE_ME',
|
37
|
+
}, (0, virtual_entrypoint_1.getAppFiles)(owner.root), new Set(), // no fastboot files
|
38
|
+
(0, shared_internals_1.extensionsPattern)(resolver.options.resolvableExtensions), (0, virtual_entrypoint_1.staticAppPathsPattern)(resolver.options.staticAppPaths), resolver.options.podModulePrefix);
|
39
|
+
let amdModules = [];
|
40
|
+
for (let relativePath of appFiles.tests) {
|
41
|
+
amdModules.push((0, virtual_entrypoint_1.importPaths)(resolver, appFiles, relativePath));
|
42
|
+
}
|
43
|
+
let src = entryTemplate({
|
44
|
+
amdModules,
|
45
|
+
});
|
46
|
+
return {
|
47
|
+
src,
|
48
|
+
watches: [],
|
49
|
+
};
|
50
|
+
}
|
51
|
+
exports.renderTestEntrypoint = renderTestEntrypoint;
|
52
|
+
const entryTemplate = (0, js_handlebars_1.compile)(`
|
53
|
+
import { importSync as i } from '@embroider/macros';
|
54
|
+
let w = window;
|
55
|
+
let d = w.define;
|
56
|
+
|
57
|
+
import "ember-testing";
|
58
|
+
import "@embroider/core/entrypoint";
|
59
|
+
|
60
|
+
{{#each amdModules as |amdModule| ~}}
|
61
|
+
d("{{js-string-escape amdModule.runtime}}", function(){ return i("{{js-string-escape amdModule.buildtime}}");});
|
62
|
+
{{/each}}
|
63
|
+
|
64
|
+
import('./tests/test-helper');
|
65
|
+
EmberENV.TESTS_FILE_LOADED = true;
|
66
|
+
`);
|
67
|
+
//# sourceMappingURL=virtual-test-entrypoint.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"virtual-test-entrypoint.js","sourceRoot":"","sources":["virtual-test-entrypoint.ts"],"names":[],"mappings":";;;AAAA,2CAAuC;AACvC,mDAA0C;AAE1C,kEAAgE;AAEhE,6DAAuF;AAEvF,MAAM,iBAAiB,GAAG,mDAAmD,CAAC;AAE9E,SAAgB,oBAAoB,CAAC,QAAgB;IACnD,0DAA0D;IAC1D,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,+BAA+B,CAAC,EAAE,CAAC;QACxD,OAAO;IACT,CAAC;IACD,IAAI,CAAC,GAAG,iBAAiB,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IACzC,IAAI,CAAC,EAAE,CAAC;QACN,OAAO;YACL,QAAQ,EAAE,CAAC,CAAC,MAAO,CAAC,QAAQ;SAC7B,CAAC;IACJ,CAAC;AACH,CAAC;AAXD,oDAWC;AAED,SAAgB,oBAAoB,CAClC,QAAkB,EAClB,EAAE,QAAQ,EAAwB;IAElC,MAAM,KAAK,GAAG,QAAQ,CAAC,YAAY,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;IAE1D,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,MAAM,IAAI,KAAK,CAAC,2DAA2D,QAAQ,EAAE,CAAC,CAAC;IACzF,CAAC;IAED,IAAI,MAAM,GAAG,QAAQ,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;IAE1C,IAAI,QAAQ,GAAG,IAAI,oBAAQ,CACzB;QACE,OAAO,EAAE,KAAK;QACd,MAAM,EAAE,IAAI,GAAG,CACb,MAAM,CAAC,YAAY,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC;YAC/B,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,EACD,IAAA,gCAAW,EAAC,KAAK,CAAC,IAAI,CAAC,EACvB,IAAI,GAAG,EAAE,EAAE,oBAAoB;IAC/B,IAAA,oCAAiB,EAAC,QAAQ,CAAC,OAAO,CAAC,oBAAoB,CAAC,EACxD,IAAA,0CAAqB,EAAC,QAAQ,CAAC,OAAO,CAAC,cAAc,CAAC,EACtD,QAAQ,CAAC,OAAO,CAAC,eAAe,CACjC,CAAC;IAEF,IAAI,UAAU,GAA6C,EAAE,CAAC;IAE9D,KAAK,IAAI,YAAY,IAAI,QAAQ,CAAC,KAAK,EAAE,CAAC;QACxC,UAAU,CAAC,IAAI,CAAC,IAAA,gCAAW,EAAC,QAAQ,EAAE,QAAQ,EAAE,YAAY,CAAC,CAAC,CAAC;IACjE,CAAC;IAED,IAAI,GAAG,GAAG,aAAa,CAAC;QACtB,UAAU;KACX,CAAC,CAAC;IAEH,OAAO;QACL,GAAG;QACH,OAAO,EAAE,EAAE;KACZ,CAAC;AACJ,CAAC;AA9CD,oDA8CC;AAED,MAAM,aAAa,GAAG,IAAA,uBAAO,EAAC;;;;;;;;;;;;;;CAc7B,CAAiF,CAAC","sourcesContent":["import { AppFiles } from './app-files';\nimport { compile } from './js-handlebars';\nimport type { Resolver } from './module-resolver';\nimport { extensionsPattern } from '@embroider/shared-internals';\nimport type { V2AddonPackage } from '@embroider/shared-internals/src/package';\nimport { getAppFiles, importPaths, staticAppPathsPattern } from './virtual-entrypoint';\n\nconst entrypointPattern = /(?<filename>.*)[\\\\/]-embroider-test-entrypoint.js/;\n\nexport function decodeTestEntrypoint(filename: string): { fromFile: string } | undefined {\n // Performance: avoid paying regex exec cost unless needed\n if (!filename.includes('-embroider-test-entrypoint.js')) {\n return;\n }\n let m = entrypointPattern.exec(filename);\n if (m) {\n return {\n fromFile: m.groups!.filename,\n };\n }\n}\n\nexport function renderTestEntrypoint(\n resolver: Resolver,\n { fromFile }: { fromFile: string }\n): { src: string; watches: string[] } {\n const owner = resolver.packageCache.ownerOfFile(fromFile);\n\n if (!owner) {\n throw new Error(`Owner expected while loading test entrypoint from file: ${fromFile}`);\n }\n\n let engine = resolver.owningEngine(owner);\n\n let 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: true,\n modulePrefix: resolver.options.modulePrefix,\n appRelativePath: 'NOT_USED_DELETE_ME',\n },\n getAppFiles(owner.root),\n new Set(), // no fastboot files\n extensionsPattern(resolver.options.resolvableExtensions),\n staticAppPathsPattern(resolver.options.staticAppPaths),\n resolver.options.podModulePrefix\n );\n\n let amdModules: { runtime: string; buildtime: string }[] = [];\n\n for (let relativePath of appFiles.tests) {\n amdModules.push(importPaths(resolver, appFiles, relativePath));\n }\n\n let src = entryTemplate({\n amdModules,\n });\n\n return {\n src,\n watches: [],\n };\n}\n\nconst entryTemplate = compile(`\nimport { importSync as i } from '@embroider/macros';\nlet w = window;\nlet d = w.define;\n\nimport \"ember-testing\";\nimport \"@embroider/core/entrypoint\";\n\n{{#each amdModules as |amdModule| ~}}\n d(\"{{js-string-escape amdModule.runtime}}\", function(){ return i(\"{{js-string-escape amdModule.buildtime}}\");});\n{{/each}}\n\nimport('./tests/test-helper');\nEmberENV.TESTS_FILE_LOADED = true;\n`) as (params: { amdModules: { runtime: string; buildtime: string }[] }) => string;\n"]}
|
@@ -0,0 +1,4 @@
|
|
1
|
+
import type { Resolver } from './module-resolver';
|
2
|
+
import type { VirtualContentResult } from './virtual-content';
|
3
|
+
export declare function decodeTestSupportStyles(filename: string): boolean;
|
4
|
+
export declare function renderTestSupportStyles(filename: string, resolver: Resolver): VirtualContentResult;
|
@@ -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.renderTestSupportStyles = exports.decodeTestSupportStyles = void 0;
|
7
|
+
const fs_1 = require("fs");
|
8
|
+
const lodash_1 = require("lodash");
|
9
|
+
const resolve_1 = __importDefault(require("resolve"));
|
10
|
+
function decodeTestSupportStyles(filename) {
|
11
|
+
return filename.endsWith('-embroider-test-support-styles.css');
|
12
|
+
}
|
13
|
+
exports.decodeTestSupportStyles = decodeTestSupportStyles;
|
14
|
+
function renderTestSupportStyles(filename, resolver) {
|
15
|
+
const owner = resolver.packageCache.ownerOfFile(filename);
|
16
|
+
if (!owner) {
|
17
|
+
throw new Error(`Failed to find a valid owner for ${filename}`);
|
18
|
+
}
|
19
|
+
return { src: getTestSupportStyles(owner, resolver), watches: [] };
|
20
|
+
}
|
21
|
+
exports.renderTestSupportStyles = renderTestSupportStyles;
|
22
|
+
function getTestSupportStyles(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: true,
|
31
|
+
modulePrefix: resolver.options.modulePrefix,
|
32
|
+
appRelativePath: 'NOT_USED_DELETE_ME',
|
33
|
+
};
|
34
|
+
return generateTestSupportStyles(engine);
|
35
|
+
}
|
36
|
+
function generateTestSupportStyles(engine) {
|
37
|
+
let result = impliedAddonTestSupportStyles(engine).map((sourcePath) => {
|
38
|
+
let source = (0, fs_1.readFileSync)(sourcePath);
|
39
|
+
return `${source}`;
|
40
|
+
});
|
41
|
+
return result.join('');
|
42
|
+
}
|
43
|
+
function impliedAddonTestSupportStyles(engine) {
|
44
|
+
let result = [];
|
45
|
+
for (let addon of (0, lodash_1.sortBy)(Array.from(engine.addons.keys()), pkg => {
|
46
|
+
switch (pkg.name) {
|
47
|
+
case 'loader.js':
|
48
|
+
return 0;
|
49
|
+
case 'ember-source':
|
50
|
+
return 10;
|
51
|
+
default:
|
52
|
+
return 1000;
|
53
|
+
}
|
54
|
+
})) {
|
55
|
+
let implicitStyles = addon.meta['implicit-test-styles'];
|
56
|
+
if (implicitStyles) {
|
57
|
+
let options = { basedir: addon.root };
|
58
|
+
for (let mod of implicitStyles) {
|
59
|
+
result.push(resolve_1.default.sync(mod, options));
|
60
|
+
}
|
61
|
+
}
|
62
|
+
}
|
63
|
+
return result;
|
64
|
+
}
|
65
|
+
//# sourceMappingURL=virtual-test-support-styles.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"virtual-test-support-styles.js","sourceRoot":"","sources":["virtual-test-support-styles.ts"],"names":[],"mappings":";;;;;;AAEA,2BAAkC;AAClC,mCAAgC;AAChC,sDAA8B;AAK9B,SAAgB,uBAAuB,CAAC,QAAgB;IACtD,OAAO,QAAQ,CAAC,QAAQ,CAAC,oCAAoC,CAAC,CAAC;AACjE,CAAC;AAFD,0DAEC;AAED,SAAgB,uBAAuB,CAAC,QAAgB,EAAE,QAAkB;IAC1E,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;AAND,0DAMC;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 function decodeTestSupportStyles(filename: string): boolean {\n return filename.endsWith('-embroider-test-support-styles.css');\n}\n\nexport function renderTestSupportStyles(filename: string, resolver: Resolver): VirtualContentResult {\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,4 @@
|
|
1
|
+
import type { Resolver } from './module-resolver';
|
2
|
+
import type { VirtualContentResult } from './virtual-content';
|
3
|
+
export declare function decodeImplicitTestScripts(filename: string): boolean;
|
4
|
+
export declare function renderImplicitTestScripts(filename: string, resolver: Resolver): VirtualContentResult;
|
@@ -0,0 +1,69 @@
|
|
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 = exports.decodeImplicitTestScripts = void 0;
|
7
|
+
const fs_1 = require("fs");
|
8
|
+
const resolve_1 = __importDefault(require("resolve"));
|
9
|
+
function decodeImplicitTestScripts(filename) {
|
10
|
+
return filename.endsWith('-embroider-test-support.js');
|
11
|
+
}
|
12
|
+
exports.decodeImplicitTestScripts = decodeImplicitTestScripts;
|
13
|
+
function renderImplicitTestScripts(filename, resolver) {
|
14
|
+
const owner = resolver.packageCache.ownerOfFile(filename);
|
15
|
+
if (!owner) {
|
16
|
+
throw new Error(`Failed to find a valid owner for ${filename}`);
|
17
|
+
}
|
18
|
+
return { src: getTestSupport(owner, resolver), watches: [] };
|
19
|
+
}
|
20
|
+
exports.renderImplicitTestScripts = renderImplicitTestScripts;
|
21
|
+
function getTestSupport(owner, resolver) {
|
22
|
+
let engineConfig = resolver.owningEngine(owner);
|
23
|
+
let engine = {
|
24
|
+
package: owner,
|
25
|
+
addons: new Map(engineConfig.activeAddons.map(addon => [
|
26
|
+
resolver.packageCache.get(addon.root),
|
27
|
+
addon.canResolveFromFile,
|
28
|
+
])),
|
29
|
+
isApp: true,
|
30
|
+
modulePrefix: resolver.options.modulePrefix,
|
31
|
+
appRelativePath: 'NOT_USED_DELETE_ME',
|
32
|
+
};
|
33
|
+
return generateTestSupport(engine);
|
34
|
+
}
|
35
|
+
function generateTestSupport(engine) {
|
36
|
+
// Add classic addons test-support
|
37
|
+
let result = impliedAddonTestSupport(engine);
|
38
|
+
let hasEmbroiderMacrosTestSupport = result.find(sourcePath => sourcePath.endsWith('embroider-macros-test-support.js'));
|
39
|
+
result = result.map((sourcePath) => {
|
40
|
+
let source = (0, fs_1.readFileSync)(sourcePath);
|
41
|
+
return `${source}`;
|
42
|
+
});
|
43
|
+
// Add _testing_suffix_.js
|
44
|
+
result.push(`
|
45
|
+
var runningTests=true;
|
46
|
+
if (typeof Testem !== 'undefined' && (typeof QUnit !== 'undefined' || typeof Mocha !== 'undefined')) {
|
47
|
+
Testem.hookIntoTestFramework();
|
48
|
+
}`);
|
49
|
+
// whether or not anybody was actually using @embroider/macros explicitly
|
50
|
+
// as an addon, we ensure its test-support file is always present.
|
51
|
+
if (!hasEmbroiderMacrosTestSupport) {
|
52
|
+
result.unshift(`${(0, fs_1.readFileSync)(require.resolve('@embroider/macros/src/vendor/embroider-macros-test-support'))}`);
|
53
|
+
}
|
54
|
+
return result.join('');
|
55
|
+
}
|
56
|
+
function impliedAddonTestSupport(engine) {
|
57
|
+
let result = [];
|
58
|
+
for (let addon of Array.from(engine.addons.keys())) {
|
59
|
+
let implicitScripts = addon.meta['implicit-test-scripts'];
|
60
|
+
if (implicitScripts) {
|
61
|
+
let options = { basedir: addon.root };
|
62
|
+
for (let mod of implicitScripts) {
|
63
|
+
result.push(resolve_1.default.sync(mod, options));
|
64
|
+
}
|
65
|
+
}
|
66
|
+
}
|
67
|
+
return result;
|
68
|
+
}
|
69
|
+
//# sourceMappingURL=virtual-test-support.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"virtual-test-support.js","sourceRoot":"","sources":["virtual-test-support.ts"],"names":[],"mappings":";;;;;;AAEA,2BAAkC;AAClC,sDAA8B;AAK9B,SAAgB,yBAAyB,CAAC,QAAgB;IACxD,OAAO,QAAQ,CAAC,QAAQ,CAAC,4BAA4B,CAAC,CAAC;AACzD,CAAC;AAFD,8DAEC;AAED,SAAgB,yBAAyB,CAAC,QAAgB,EAAE,QAAkB;IAC5E,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;AAND,8DAMC;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 function decodeImplicitTestScripts(filename: string): boolean {\n return filename.endsWith('-embroider-test-support.js');\n}\n\nexport function renderImplicitTestScripts(filename: string, resolver: Resolver): VirtualContentResult {\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,4 @@
|
|
1
|
+
import type { Resolver } from './module-resolver';
|
2
|
+
import type { VirtualContentResult } from './virtual-content';
|
3
|
+
export declare function decodeVirtualVendorStyles(filename: string): boolean;
|
4
|
+
export declare function renderVendorStyles(filename: string, resolver: Resolver): VirtualContentResult;
|
@@ -0,0 +1,83 @@
|
|
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.renderVendorStyles = exports.decodeVirtualVendorStyles = void 0;
|
7
|
+
const fs_1 = require("fs");
|
8
|
+
const lodash_1 = require("lodash");
|
9
|
+
const resolve_1 = __importDefault(require("resolve"));
|
10
|
+
function decodeVirtualVendorStyles(filename) {
|
11
|
+
return filename.endsWith('-embroider-vendor-styles.css');
|
12
|
+
}
|
13
|
+
exports.decodeVirtualVendorStyles = decodeVirtualVendorStyles;
|
14
|
+
function renderVendorStyles(filename, resolver) {
|
15
|
+
const owner = resolver.packageCache.ownerOfFile(filename);
|
16
|
+
if (!owner) {
|
17
|
+
throw new Error(`Failed to find a valid owner for ${filename}`);
|
18
|
+
}
|
19
|
+
return { src: getVendorStyles(owner, resolver), watches: [] };
|
20
|
+
}
|
21
|
+
exports.renderVendorStyles = renderVendorStyles;
|
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
|
+
result = [...styles, ...result];
|
68
|
+
}
|
69
|
+
}
|
70
|
+
return result;
|
71
|
+
}
|
72
|
+
function getAddonImplicitStyles(pkg) {
|
73
|
+
let implicitStyles = pkg.meta['implicit-styles'];
|
74
|
+
let styles = [];
|
75
|
+
if (implicitStyles) {
|
76
|
+
let options = { basedir: pkg.root };
|
77
|
+
for (let mod of implicitStyles) {
|
78
|
+
styles.push(resolve_1.default.sync(mod, options));
|
79
|
+
}
|
80
|
+
}
|
81
|
+
return styles;
|
82
|
+
}
|
83
|
+
//# sourceMappingURL=virtual-vendor-styles.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"virtual-vendor-styles.js","sourceRoot":"","sources":["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 function decodeVirtualVendorStyles(filename: string): boolean {\n return filename.endsWith('-embroider-vendor-styles.css');\n}\n\nexport function renderVendorStyles(filename: string, resolver: Resolver): VirtualContentResult {\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 result = [...styles, ...result];\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,4 @@
|
|
1
|
+
import type { Resolver } from './module-resolver';
|
2
|
+
import type { VirtualContentResult } from './virtual-content';
|
3
|
+
export declare function decodeVirtualVendor(filename: string): boolean;
|
4
|
+
export declare function renderVendor(filename: string, resolver: Resolver): VirtualContentResult;
|
@@ -0,0 +1,73 @@
|
|
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 = exports.decodeVirtualVendor = void 0;
|
7
|
+
const shared_internals_1 = require("@embroider/shared-internals");
|
8
|
+
const fs_extra_1 = require("fs-extra");
|
9
|
+
const lodash_1 = require("lodash");
|
10
|
+
const path_1 = require("path");
|
11
|
+
const resolve_1 = __importDefault(require("resolve"));
|
12
|
+
function decodeVirtualVendor(filename) {
|
13
|
+
return filename.endsWith('-embroider-vendor.js');
|
14
|
+
}
|
15
|
+
exports.decodeVirtualVendor = decodeVirtualVendor;
|
16
|
+
function renderVendor(filename, resolver) {
|
17
|
+
const owner = resolver.packageCache.ownerOfFile(filename);
|
18
|
+
if (!owner) {
|
19
|
+
throw new Error(`Failed to find a valid owner for ${filename}`);
|
20
|
+
}
|
21
|
+
return { src: getVendor(owner, resolver, filename), watches: [] };
|
22
|
+
}
|
23
|
+
exports.renderVendor = renderVendor;
|
24
|
+
function getVendor(owner, resolver, filename) {
|
25
|
+
let engineConfig = resolver.owningEngine(owner);
|
26
|
+
let addons = new Map(engineConfig.activeAddons.map(addon => [
|
27
|
+
resolver.packageCache.get(addon.root),
|
28
|
+
addon.canResolveFromFile,
|
29
|
+
]));
|
30
|
+
let path = (0, path_1.join)((0, shared_internals_1.locateEmbroiderWorkingDir)(resolver.options.appRoot), 'ember-env.json');
|
31
|
+
if (!(0, fs_extra_1.lstatSync)(path).isFile()) {
|
32
|
+
throw new Error(`Failed to read the ember-env.json when generating content for ${filename}`);
|
33
|
+
}
|
34
|
+
let emberENV = (0, fs_extra_1.readJSONSync)(path);
|
35
|
+
return generateVendor(addons, emberENV);
|
36
|
+
}
|
37
|
+
function generateVendor(addons, emberENV) {
|
38
|
+
// Add addons implicit-scripts
|
39
|
+
let vendor = impliedAddonVendors(addons).map((sourcePath) => {
|
40
|
+
let source = (0, fs_extra_1.readFileSync)(sourcePath);
|
41
|
+
return `${source}`;
|
42
|
+
});
|
43
|
+
// Add _testing_prefix_.js
|
44
|
+
vendor.unshift(`var runningTests=false;`);
|
45
|
+
// Add _ember_env_.js
|
46
|
+
vendor.unshift(`window.EmberENV={ ...(window.EmberENV || {}), ...${JSON.stringify(emberENV, null, 2)} };`);
|
47
|
+
// Add _loader_.js
|
48
|
+
vendor.push(`loader.makeDefaultExport=false;`);
|
49
|
+
return vendor.join('');
|
50
|
+
}
|
51
|
+
function impliedAddonVendors(addons) {
|
52
|
+
let result = [];
|
53
|
+
for (let addon of (0, lodash_1.sortBy)(Array.from(addons.keys()), pkg => {
|
54
|
+
switch (pkg.name) {
|
55
|
+
case 'loader.js':
|
56
|
+
return 0;
|
57
|
+
case 'ember-source':
|
58
|
+
return 10;
|
59
|
+
default:
|
60
|
+
return 1000;
|
61
|
+
}
|
62
|
+
})) {
|
63
|
+
let implicitScripts = addon.meta['implicit-scripts'];
|
64
|
+
if (implicitScripts) {
|
65
|
+
let options = { basedir: addon.root };
|
66
|
+
for (let mod of implicitScripts) {
|
67
|
+
result.push(resolve_1.default.sync(mod, options));
|
68
|
+
}
|
69
|
+
}
|
70
|
+
}
|
71
|
+
return result;
|
72
|
+
}
|
73
|
+
//# sourceMappingURL=virtual-vendor.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"virtual-vendor.js","sourceRoot":"","sources":["virtual-vendor.ts"],"names":[],"mappings":"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","sourcesContent":["import { type Package, locateEmbroiderWorkingDir } from '@embroider/shared-internals';\nimport type { V2AddonPackage } from '@embroider/shared-internals/src/package';\nimport { lstatSync, readFileSync, readJSONSync } from 'fs-extra';\nimport { sortBy } from 'lodash';\nimport { join } from 'path';\nimport resolve from 'resolve';\nimport type { Resolver } from './module-resolver';\nimport type { VirtualContentResult } from './virtual-content';\n\nexport function decodeVirtualVendor(filename: string): boolean {\n return filename.endsWith('-embroider-vendor.js');\n}\n\nexport function renderVendor(filename: string, resolver: Resolver): VirtualContentResult {\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: getVendor(owner, resolver, filename), watches: [] };\n}\n\nfunction getVendor(owner: Package, resolver: Resolver, filename: string): string {\n let engineConfig = resolver.owningEngine(owner);\n let addons = new Map(\n engineConfig.activeAddons.map(addon => [\n resolver.packageCache.get(addon.root) as V2AddonPackage,\n addon.canResolveFromFile,\n ])\n );\n\n let path = join(locateEmbroiderWorkingDir(resolver.options.appRoot), 'ember-env.json');\n if (!lstatSync(path).isFile()) {\n throw new Error(`Failed to read the ember-env.json when generating content for ${filename}`);\n }\n let emberENV = readJSONSync(path);\n\n return generateVendor(addons, emberENV);\n}\n\nfunction generateVendor(addons: Map<V2AddonPackage, string>, 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 vendor.unshift(`window.EmberENV={ ...(window.EmberENV || {}), ...${JSON.stringify(emberENV, null, 2)} };`);\n // Add _loader_.js\n vendor.push(`loader.makeDefaultExport=false;`);\n\n return vendor.join('') as string;\n}\n\nfunction impliedAddonVendors(addons: Map<V2AddonPackage, string>): string[] {\n let result: Array<string> = [];\n for (let addon of sortBy(Array.from(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 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"]}
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"wait-for-trees.js","sourceRoot":"","sources":["wait-for-trees.ts"],"names":[],"mappings":";;;;;AAAA,sEAA6C;AAG7C;;;;;;;;;;;;;;;;;;;;EAoBE;AACF,MAAqB,YAAyB,SAAQ,yBAAc;IAClE,YACU,KAAiB,EACzB,UAAkB,EACV,SAA2F;QAEnG,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE;YACtB,gBAAgB,EAAE,IAAI;YACtB,UAAU,EAAE,KAAK;YACjB,UAAU,EAAE,UAAU;YACtB,iBAAiB,EAAE,IAAI;SACxB,CAAC,CAAC;QATK,UAAK,GAAL,KAAK,CAAY;QAEjB,cAAS,GAAT,SAAS,CAAkF;IAQrG,CAAC;IAED,KAAK,CAAC,KAAK,CAAC,MAAoC;QAC9C,IAAI,MAAM,GAA8C,EAAE,CAAC;QAC3D,IAAI,UAAU,GAAG,IAAI,GAAG,EAAE,CAAC;QAE3B,IAAI,gBAAgB,GAAG,CAAC,CAAC;QACzB,KAAK,IAAI,KAAK,IAAI,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE;
|
1
|
+
{"version":3,"file":"wait-for-trees.js","sourceRoot":"","sources":["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"]}
|
package/LICENSE
DELETED
@@ -1,21 +0,0 @@
|
|
1
|
-
MIT License
|
2
|
-
|
3
|
-
Copyright (c) 2018 Edward Faulkner
|
4
|
-
|
5
|
-
Permission is hereby granted, free of charge, to any person obtaining a copy
|
6
|
-
of this software and associated documentation files (the "Software"), to deal
|
7
|
-
in the Software without restriction, including without limitation the rights
|
8
|
-
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
9
|
-
copies of the Software, and to permit persons to whom the Software is
|
10
|
-
furnished to do so, subject to the following conditions:
|
11
|
-
|
12
|
-
The above copyright notice and this permission notice shall be included in all
|
13
|
-
copies or substantial portions of the Software.
|
14
|
-
|
15
|
-
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
16
|
-
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
17
|
-
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
18
|
-
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
19
|
-
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
20
|
-
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
21
|
-
SOFTWARE.
|
package/src/asset.d.ts
DELETED
@@ -1,33 +0,0 @@
|
|
1
|
-
/// <reference types="node" />
|
2
|
-
import type { JSDOM } from 'jsdom';
|
3
|
-
import type { EmberHTML } from './ember-html';
|
4
|
-
export interface ImplicitAssetPaths {
|
5
|
-
'implicit-scripts': string[];
|
6
|
-
'implicit-test-scripts': string[];
|
7
|
-
'implicit-styles': string[];
|
8
|
-
'implicit-test-styles': string[];
|
9
|
-
}
|
10
|
-
interface BaseAsset {
|
11
|
-
relativePath: string;
|
12
|
-
}
|
13
|
-
export interface OnDiskAsset extends BaseAsset {
|
14
|
-
kind: 'on-disk';
|
15
|
-
sourcePath: string;
|
16
|
-
mtime: number;
|
17
|
-
size: number;
|
18
|
-
}
|
19
|
-
export interface InMemoryAsset extends BaseAsset {
|
20
|
-
kind: 'in-memory';
|
21
|
-
source: string | Buffer;
|
22
|
-
}
|
23
|
-
export interface EmberAsset extends BaseAsset {
|
24
|
-
kind: 'ember';
|
25
|
-
sourcePath: string;
|
26
|
-
mtime: number;
|
27
|
-
size: number;
|
28
|
-
includeTests: boolean;
|
29
|
-
rootURL: string;
|
30
|
-
prepare(dom: JSDOM): EmberHTML;
|
31
|
-
}
|
32
|
-
export type Asset = OnDiskAsset | InMemoryAsset | EmberAsset;
|
33
|
-
export {};
|
package/src/asset.js
DELETED
package/src/asset.js.map
DELETED
@@ -1 +0,0 @@
|
|
1
|
-
{"version":3,"file":"asset.js","sourceRoot":"","sources":["asset.ts"],"names":[],"mappings":"","sourcesContent":["import type { JSDOM } from 'jsdom';\nimport type { EmberHTML } from './ember-html';\n\nexport interface ImplicitAssetPaths {\n 'implicit-scripts': string[];\n 'implicit-test-scripts': string[];\n 'implicit-styles': string[];\n 'implicit-test-styles': string[];\n}\n\ninterface BaseAsset {\n // where this asset should be placed, relative to the app's root\n relativePath: string;\n}\n\nexport interface OnDiskAsset extends BaseAsset {\n kind: 'on-disk';\n\n // absolute path to where we will find it\n sourcePath: string;\n mtime: number;\n size: number;\n}\n\nexport interface InMemoryAsset extends BaseAsset {\n kind: 'in-memory';\n\n // the actual bits\n source: string | Buffer;\n}\n\n// This represents an HTML entrypoint to the Ember app\nexport interface EmberAsset extends BaseAsset {\n kind: 'ember';\n\n // absolute path to where we will find the html file\n sourcePath: string;\n\n // these describe the file at sourcePath so we can avoid rebuilding when it\n // hasn't changed\n mtime: number;\n size: number;\n\n // whether we should include the test suite (in addition to the ember app)\n includeTests: boolean;\n\n // the rootURL at which this Ember app expects to be hosted.\n rootURL: string;\n\n // This will receive the parsed document. It may optionally modify the\n // document. And it must return a description of the locations where we're\n // supposed to insert the parts of the Ember app.\n prepare(dom: JSDOM): EmberHTML;\n}\n\nexport type Asset = OnDiskAsset | InMemoryAsset | EmberAsset;\n"]}
|
package/src/ember-html.d.ts
DELETED
@@ -1,43 +0,0 @@
|
|
1
|
-
import { JSDOM } from 'jsdom';
|
2
|
-
import type { EmberAsset } from './asset';
|
3
|
-
export interface EmberHTML {
|
4
|
-
javascript: Node;
|
5
|
-
styles: Node;
|
6
|
-
implicitScripts: Node;
|
7
|
-
implicitStyles: Node;
|
8
|
-
testJavascript?: Node;
|
9
|
-
implicitTestScripts?: Node;
|
10
|
-
implicitTestStyles?: Node;
|
11
|
-
}
|
12
|
-
declare class Placeholder {
|
13
|
-
readonly start: Node;
|
14
|
-
readonly end: Node;
|
15
|
-
readonly reference: Node;
|
16
|
-
static replacing(node: Node): Placeholder;
|
17
|
-
static immediatelyAfter(node: Node): Placeholder;
|
18
|
-
readonly parent: HTMLElement;
|
19
|
-
constructor(start: Node, end: Node, reference: Node);
|
20
|
-
clear(): void;
|
21
|
-
insert(node: Node): void;
|
22
|
-
}
|
23
|
-
export declare class PreparedEmberHTML {
|
24
|
-
private asset;
|
25
|
-
dom: JSDOM;
|
26
|
-
javascript: Placeholder;
|
27
|
-
styles: Placeholder;
|
28
|
-
implicitScripts: Placeholder;
|
29
|
-
implicitStyles: Placeholder;
|
30
|
-
testJavascript: Placeholder;
|
31
|
-
implicitTestScripts: Placeholder;
|
32
|
-
implicitTestStyles: Placeholder;
|
33
|
-
constructor(asset: EmberAsset);
|
34
|
-
private placeholders;
|
35
|
-
clear(): void;
|
36
|
-
insertScriptTag(placeholder: Placeholder, relativeSrc: string, { type, tag }?: {
|
37
|
-
type?: string;
|
38
|
-
tag?: string;
|
39
|
-
}): void;
|
40
|
-
insertStyleLink(placeholder: Placeholder, relativeHref: string): void;
|
41
|
-
}
|
42
|
-
export declare function insertNewline(at: Node): void;
|
43
|
-
export {};
|