@embroider/compat 2.0.2 → 2.1.1-unstable.21eae41
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 +5 -4
- package/src/addon-dependency-rules/ember-data.js +1 -0
- package/src/addon-dependency-rules/ember-data.js.map +1 -1
- package/src/audit/build.js +48 -46
- package/src/audit/build.js.map +1 -1
- package/src/audit/options.d.ts +3 -2
- package/src/audit/options.js.map +1 -1
- package/src/audit-cli.js +0 -0
- package/src/audit.d.ts +25 -1
- package/src/audit.js +51 -32
- package/src/audit.js.map +1 -1
- package/src/babel-plugin-adjust-imports.d.ts +16 -0
- package/src/babel-plugin-adjust-imports.js +131 -0
- package/src/babel-plugin-adjust-imports.js.map +1 -0
- package/src/compat-adapters/@glimmer/tracking.d.ts +0 -1
- package/src/compat-adapters/@glimmer/tracking.js +8 -15
- package/src/compat-adapters/@glimmer/tracking.js.map +1 -1
- package/src/compat-adapters/ember-data.d.ts +1 -0
- package/src/compat-adapters/ember-data.js +4 -0
- package/src/compat-adapters/ember-data.js.map +1 -1
- package/src/compat-app.js +47 -76
- package/src/compat-app.js.map +1 -1
- package/src/default-pipeline.d.ts +1 -1
- package/src/default-pipeline.js +3 -2
- package/src/default-pipeline.js.map +1 -1
- package/src/dependency-rules.d.ts +5 -7
- package/src/dependency-rules.js +8 -40
- package/src/dependency-rules.js.map +1 -1
- package/src/resolver-transform.d.ts +13 -4
- package/src/resolver-transform.js +712 -280
- package/src/resolver-transform.js.map +1 -1
- package/src/v1-app.js +19 -5
- package/src/v1-app.js.map +1 -1
- package/src/audit/capture.d.ts +0 -8
- package/src/audit/capture.js +0 -45
- package/src/audit/capture.js.map +0 -1
- package/src/resolver.d.ts +0 -128
- package/src/resolver.js +0 -677
- package/src/resolver.js.map +0 -1
|
@@ -0,0 +1,131 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const path_1 = require("path");
|
|
4
|
+
const babel_import_util_1 = require("babel-import-util");
|
|
5
|
+
const fs_extra_1 = require("fs-extra");
|
|
6
|
+
const core_1 = require("@embroider/core");
|
|
7
|
+
const dasherize_component_name_1 = require("./dasherize-component-name");
|
|
8
|
+
function main(babel) {
|
|
9
|
+
let t = babel.types;
|
|
10
|
+
let cached;
|
|
11
|
+
function getConfig(appRoot) {
|
|
12
|
+
if (cached) {
|
|
13
|
+
return cached;
|
|
14
|
+
}
|
|
15
|
+
let resolverOptions = (0, fs_extra_1.readJSONSync)((0, path_1.join)(appRoot, '.embroider', 'resolver.json'));
|
|
16
|
+
cached = {
|
|
17
|
+
resolverOptions,
|
|
18
|
+
resolver: new core_1.Resolver(resolverOptions),
|
|
19
|
+
extraImports: preprocessExtraImports(resolverOptions),
|
|
20
|
+
};
|
|
21
|
+
return cached;
|
|
22
|
+
}
|
|
23
|
+
return {
|
|
24
|
+
visitor: {
|
|
25
|
+
Program: {
|
|
26
|
+
enter(path, state) {
|
|
27
|
+
addExtraImports(t, path, getConfig(state.opts.appRoot));
|
|
28
|
+
},
|
|
29
|
+
},
|
|
30
|
+
},
|
|
31
|
+
};
|
|
32
|
+
}
|
|
33
|
+
exports.default = main;
|
|
34
|
+
main.baseDir = function () {
|
|
35
|
+
return (0, path_1.join)(__dirname, '..');
|
|
36
|
+
};
|
|
37
|
+
function addExtraImports(t, path, config) {
|
|
38
|
+
let filename = path.hub.file.opts.filename;
|
|
39
|
+
let entry = config.extraImports[filename];
|
|
40
|
+
if (entry) {
|
|
41
|
+
let adder = new babel_import_util_1.ImportUtil(t, path);
|
|
42
|
+
if (entry.dependsOnModules) {
|
|
43
|
+
for (let target of entry.dependsOnModules) {
|
|
44
|
+
path.node.body.unshift(amdDefine(t, adder, path, target, target));
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
if (entry.dependsOnComponents) {
|
|
48
|
+
for (let dasherizedName of entry.dependsOnComponents) {
|
|
49
|
+
let pkg = config.resolver.owningPackage(filename);
|
|
50
|
+
if (pkg) {
|
|
51
|
+
let owningEngine = config.resolver.owningEngine(pkg);
|
|
52
|
+
if (owningEngine) {
|
|
53
|
+
path.node.body.unshift(amdDefine(t, adder, path, `#embroider_compat/components/${dasherizedName}`, `${owningEngine.packageName}/components/${dasherizedName}`));
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
//let componentName = config.resolver.reverseComponentLookup(filename);
|
|
60
|
+
}
|
|
61
|
+
function amdDefine(t, adder, path, target, runtimeName) {
|
|
62
|
+
let value = t.callExpression(adder.import(path, '@embroider/macros', 'importSync'), [t.stringLiteral(target)]);
|
|
63
|
+
return t.expressionStatement(t.callExpression(t.memberExpression(t.identifier('window'), t.identifier('define')), [
|
|
64
|
+
t.stringLiteral(runtimeName),
|
|
65
|
+
t.functionExpression(null, [], t.blockStatement([t.returnStatement(value)])),
|
|
66
|
+
]));
|
|
67
|
+
}
|
|
68
|
+
function preprocessExtraImports(config) {
|
|
69
|
+
let extraImports = {};
|
|
70
|
+
for (let rule of config.activePackageRules) {
|
|
71
|
+
if (rule.addonModules) {
|
|
72
|
+
for (let [filename, moduleRules] of Object.entries(rule.addonModules)) {
|
|
73
|
+
for (let root of rule.roots) {
|
|
74
|
+
expandDependsOnRules(root, filename, moduleRules, extraImports);
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
if (rule.appModules) {
|
|
79
|
+
for (let [filename, moduleRules] of Object.entries(rule.appModules)) {
|
|
80
|
+
expandDependsOnRules(config.appRoot, filename, moduleRules, extraImports);
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
if (rule.addonTemplates) {
|
|
84
|
+
for (let [filename, moduleRules] of Object.entries(rule.addonTemplates)) {
|
|
85
|
+
for (let root of rule.roots) {
|
|
86
|
+
expandInvokesRules(root, filename, moduleRules, extraImports);
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
if (rule.appTemplates) {
|
|
91
|
+
for (let [filename, moduleRules] of Object.entries(rule.appTemplates)) {
|
|
92
|
+
expandInvokesRules(config.appRoot, filename, moduleRules, extraImports);
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
return extraImports;
|
|
97
|
+
}
|
|
98
|
+
function expandDependsOnRules(root, filename, rules, extraImports) {
|
|
99
|
+
if (rules.dependsOnModules || rules.dependsOnComponents) {
|
|
100
|
+
let entry = {};
|
|
101
|
+
if (rules.dependsOnModules) {
|
|
102
|
+
entry.dependsOnModules = rules.dependsOnModules;
|
|
103
|
+
}
|
|
104
|
+
if (rules.dependsOnComponents) {
|
|
105
|
+
entry.dependsOnComponents = rules.dependsOnComponents.map(c => {
|
|
106
|
+
let d = (0, dasherize_component_name_1.snippetToDasherizedName)(c);
|
|
107
|
+
if (!d) {
|
|
108
|
+
throw new Error(`unable to parse component snippet "${c}" from rule ${JSON.stringify(rules, null, 2)}`);
|
|
109
|
+
}
|
|
110
|
+
return d;
|
|
111
|
+
});
|
|
112
|
+
}
|
|
113
|
+
extraImports[(0, path_1.join)(root, filename)] = entry;
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
function expandInvokesRules(root, filename, rules, extraImports) {
|
|
117
|
+
if (rules.invokes) {
|
|
118
|
+
let dependsOnComponents = [];
|
|
119
|
+
for (let componentList of Object.values(rules.invokes)) {
|
|
120
|
+
for (let component of componentList) {
|
|
121
|
+
let d = (0, dasherize_component_name_1.snippetToDasherizedName)(component);
|
|
122
|
+
if (!d) {
|
|
123
|
+
throw new Error(`unable to parse component snippet "${component}" from rule ${JSON.stringify(rules, null, 2)}`);
|
|
124
|
+
}
|
|
125
|
+
dependsOnComponents.push(d);
|
|
126
|
+
}
|
|
127
|
+
}
|
|
128
|
+
extraImports[(0, path_1.join)(root, filename)] = { dependsOnComponents };
|
|
129
|
+
}
|
|
130
|
+
}
|
|
131
|
+
//# sourceMappingURL=babel-plugin-adjust-imports.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"babel-plugin-adjust-imports.js","sourceRoot":"","sources":["babel-plugin-adjust-imports.ts"],"names":[],"mappings":"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","sourcesContent":["import { join } from 'path';\nimport type { NodePath } from '@babel/traverse';\nimport type * as Babel from '@babel/core';\nimport type { types as t } from '@babel/core';\nimport { ImportUtil } from 'babel-import-util';\nimport { readJSONSync } from 'fs-extra';\nimport { CompatResolverOptions } from './resolver-transform';\nimport { Resolver } from '@embroider/core';\nimport { snippetToDasherizedName } from './dasherize-component-name';\nimport { ModuleRules, TemplateRules } from './dependency-rules';\n\nexport type Options = { appRoot: string };\n\ninterface State {\n opts: Options;\n}\n\ntype BabelTypes = typeof t;\ntype InternalConfig = {\n resolverOptions: CompatResolverOptions;\n resolver: Resolver;\n extraImports: {\n [absPath: string]: {\n dependsOnComponents?: string[]; // these are already standardized in dasherized form\n dependsOnModules?: string[];\n };\n };\n};\n\nexport default function main(babel: typeof Babel) {\n let t = babel.types;\n let cached: InternalConfig | undefined;\n function getConfig(appRoot: string) {\n if (cached) {\n return cached;\n }\n let resolverOptions: CompatResolverOptions = readJSONSync(join(appRoot, '.embroider', 'resolver.json'));\n cached = {\n resolverOptions,\n resolver: new Resolver(resolverOptions),\n extraImports: preprocessExtraImports(resolverOptions),\n };\n return cached;\n }\n\n return {\n visitor: {\n Program: {\n enter(path: NodePath<t.Program>, state: State) {\n addExtraImports(t, path, getConfig(state.opts.appRoot));\n },\n },\n },\n };\n}\n\n(main as any).baseDir = function () {\n return join(__dirname, '..');\n};\n\nfunction addExtraImports(t: BabelTypes, path: NodePath<t.Program>, config: InternalConfig) {\n let filename: string = path.hub.file.opts.filename;\n let entry = config.extraImports[filename];\n if (entry) {\n let adder = new ImportUtil(t, path);\n if (entry.dependsOnModules) {\n for (let target of entry.dependsOnModules) {\n path.node.body.unshift(amdDefine(t, adder, path, target, target));\n }\n }\n if (entry.dependsOnComponents) {\n for (let dasherizedName of entry.dependsOnComponents) {\n let pkg = config.resolver.owningPackage(filename);\n if (pkg) {\n let owningEngine = config.resolver.owningEngine(pkg);\n if (owningEngine) {\n path.node.body.unshift(\n amdDefine(\n t,\n adder,\n path,\n `#embroider_compat/components/${dasherizedName}`,\n `${owningEngine.packageName}/components/${dasherizedName}`\n )\n );\n }\n }\n }\n }\n }\n\n //let componentName = config.resolver.reverseComponentLookup(filename);\n}\n\nfunction amdDefine(t: BabelTypes, adder: ImportUtil, path: NodePath<t.Program>, target: string, runtimeName: string) {\n let value = t.callExpression(adder.import(path, '@embroider/macros', 'importSync'), [t.stringLiteral(target)]);\n return t.expressionStatement(\n t.callExpression(t.memberExpression(t.identifier('window'), t.identifier('define')), [\n t.stringLiteral(runtimeName),\n t.functionExpression(null, [], t.blockStatement([t.returnStatement(value)])),\n ])\n );\n}\n\nfunction preprocessExtraImports(config: CompatResolverOptions): InternalConfig['extraImports'] {\n let extraImports: InternalConfig['extraImports'] = {};\n for (let rule of config.activePackageRules) {\n if (rule.addonModules) {\n for (let [filename, moduleRules] of Object.entries(rule.addonModules)) {\n for (let root of rule.roots) {\n expandDependsOnRules(root, filename, moduleRules, extraImports);\n }\n }\n }\n if (rule.appModules) {\n for (let [filename, moduleRules] of Object.entries(rule.appModules)) {\n expandDependsOnRules(config.appRoot, filename, moduleRules, extraImports);\n }\n }\n if (rule.addonTemplates) {\n for (let [filename, moduleRules] of Object.entries(rule.addonTemplates)) {\n for (let root of rule.roots) {\n expandInvokesRules(root, filename, moduleRules, extraImports);\n }\n }\n }\n if (rule.appTemplates) {\n for (let [filename, moduleRules] of Object.entries(rule.appTemplates)) {\n expandInvokesRules(config.appRoot, filename, moduleRules, extraImports);\n }\n }\n }\n return extraImports;\n}\n\nfunction expandDependsOnRules(\n root: string,\n filename: string,\n rules: ModuleRules,\n extraImports: InternalConfig['extraImports']\n) {\n if (rules.dependsOnModules || rules.dependsOnComponents) {\n let entry: InternalConfig['extraImports'][string] = {};\n if (rules.dependsOnModules) {\n entry.dependsOnModules = rules.dependsOnModules;\n }\n if (rules.dependsOnComponents) {\n entry.dependsOnComponents = rules.dependsOnComponents.map(c => {\n let d = snippetToDasherizedName(c);\n if (!d) {\n throw new Error(`unable to parse component snippet \"${c}\" from rule ${JSON.stringify(rules, null, 2)}`);\n }\n return d;\n });\n }\n extraImports[join(root, filename)] = entry;\n }\n}\n\nfunction expandInvokesRules(\n root: string,\n filename: string,\n rules: TemplateRules,\n extraImports: InternalConfig['extraImports']\n) {\n if (rules.invokes) {\n let dependsOnComponents: string[] = [];\n for (let componentList of Object.values(rules.invokes)) {\n for (let component of componentList) {\n let d = snippetToDasherizedName(component);\n if (!d) {\n throw new Error(\n `unable to parse component snippet \"${component}\" from rule ${JSON.stringify(rules, null, 2)}`\n );\n }\n dependsOnComponents.push(d);\n }\n }\n extraImports[join(root, filename)] = { dependsOnComponents };\n }\n}\n"]}
|
|
@@ -16,22 +16,15 @@ const fs_extra_1 = require("fs-extra");
|
|
|
16
16
|
reexport the things from ember that are needed.
|
|
17
17
|
*/
|
|
18
18
|
class RedirectToEmber extends broccoli_plugin_1.default {
|
|
19
|
-
constructor() {
|
|
20
|
-
super(...arguments);
|
|
21
|
-
this.didBuild = false;
|
|
22
|
-
}
|
|
23
19
|
build() {
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
export {
|
|
32
|
-
(0, fs_extra_1.outputFileSync)((0, path_1.join)(this.outputPath, 'primitives', 'cache.js'), `export { createCache, getValue, isConst } from "@ember/-internals/metal";`);
|
|
33
|
-
this.didBuild = true;
|
|
34
|
-
}
|
|
20
|
+
(0, fs_extra_1.copyFileSync)((0, path_1.join)(this.inputPaths[0], 'package.json'), (0, path_1.join)(this.outputPath, 'package.json'));
|
|
21
|
+
(0, fs_extra_1.outputFileSync)((0, path_1.join)(this.outputPath, 'index.js'),
|
|
22
|
+
// Prior to ember-source 4.1, cached didn't exist
|
|
23
|
+
// using this way of importing from metal, cached will be undefined if pre 4.1
|
|
24
|
+
`import * as metal from "@ember/-internals/metal";
|
|
25
|
+
const { cached, tracked } = metal;
|
|
26
|
+
export { cached, tracked };`);
|
|
27
|
+
(0, fs_extra_1.outputFileSync)((0, path_1.join)(this.outputPath, 'primitives', 'cache.js'), `export { createCache, getValue, isConst } from "@ember/-internals/metal";`);
|
|
35
28
|
}
|
|
36
29
|
}
|
|
37
30
|
class default_1 extends v1_addon_1.default {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tracking.js","sourceRoot":"","sources":["tracking.ts"],"names":[],"mappings":";;;;;AAAA,8DAAqC;AACrC,sEAAqC;AACrC,+BAA4B;AAC5B,uCAAwD;AAExD;;;;;;;EAOE;AACF,MAAM,eAAgB,SAAQ,yBAAM;
|
|
1
|
+
{"version":3,"file":"tracking.js","sourceRoot":"","sources":["tracking.ts"],"names":[],"mappings":";;;;;AAAA,8DAAqC;AACrC,sEAAqC;AACrC,+BAA4B;AAC5B,uCAAwD;AAExD;;;;;;;EAOE;AACF,MAAM,eAAgB,SAAQ,yBAAM;IAClC,KAAK;QACH,IAAA,uBAAY,EAAC,IAAA,WAAI,EAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,cAAc,CAAC,EAAE,IAAA,WAAI,EAAC,IAAI,CAAC,UAAU,EAAE,cAAc,CAAC,CAAC,CAAC;QAC9F,IAAA,yBAAc,EACZ,IAAA,WAAI,EAAC,IAAI,CAAC,UAAU,EAAE,UAAU,CAAC;QACjC,iDAAiD;QACjD,8EAA8E;QAC9E;;gCAE0B,CAC3B,CAAC;QACF,IAAA,yBAAc,EACZ,IAAA,WAAI,EAAC,IAAI,CAAC,UAAU,EAAE,YAAY,EAAE,UAAU,CAAC,EAC/C,2EAA2E,CAC5E,CAAC;IACJ,CAAC;CACF;AAED,eAAqB,SAAQ,kBAAO;IAClC,IAAI,MAAM;QACR,OAAO,IAAI,eAAe,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC;IAC7C,CAAC;CACF;AAJD,4BAIC","sourcesContent":["import V1Addon from '../../v1-addon';\nimport Plugin from 'broccoli-plugin';\nimport { join } from 'path';\nimport { outputFileSync, copyFileSync } from 'fs-extra';\n\n/*\n @glimmer/tracking is a real package but it has no working implementation. The\n real implementation is in ember-source.\n\n Since embroider prioritizes real packages, it's best to provide a compat\n adapter here to make it into a valid package. It's easy enough for it to\n reexport the things from ember that are needed.\n*/\nclass RedirectToEmber extends Plugin {\n build() {\n copyFileSync(join(this.inputPaths[0], 'package.json'), join(this.outputPath, 'package.json'));\n outputFileSync(\n join(this.outputPath, 'index.js'),\n // Prior to ember-source 4.1, cached didn't exist\n // using this way of importing from metal, cached will be undefined if pre 4.1\n `import * as metal from \"@ember/-internals/metal\";\n const { cached, tracked } = metal;\n export { cached, tracked };`\n );\n outputFileSync(\n join(this.outputPath, 'primitives', 'cache.js'),\n `export { createCache, getValue, isConst } from \"@ember/-internals/metal\";`\n );\n }\n}\n\nexport default class extends V1Addon {\n get v2Tree() {\n return new RedirectToEmber([super.v2Tree]);\n }\n}\n"]}
|
|
@@ -2,6 +2,7 @@ import V1Addon from '../v1-addon';
|
|
|
2
2
|
import { Node } from 'broccoli-node-api';
|
|
3
3
|
export declare class EmberDataBase extends V1Addon {
|
|
4
4
|
customizes(...names: string[]): boolean;
|
|
5
|
+
static shouldApplyAdapter(addonInstance: any): boolean;
|
|
5
6
|
}
|
|
6
7
|
export default class EmberData extends EmberDataBase {
|
|
7
8
|
get v2Trees(): Node[];
|
|
@@ -14,6 +14,7 @@ const v1_addon_1 = __importDefault(require("../v1-addon"));
|
|
|
14
14
|
const path_1 = require("path");
|
|
15
15
|
const typescript_memoize_1 = require("typescript-memoize");
|
|
16
16
|
const resolve_1 = require("resolve");
|
|
17
|
+
const semver_1 = __importDefault(require("semver"));
|
|
17
18
|
class EmberDataBase extends v1_addon_1.default {
|
|
18
19
|
// May of the ember-data packages use rollup to try to hide their internal
|
|
19
20
|
// structure. This is fragile and it breaks under embroider, and they should
|
|
@@ -24,6 +25,9 @@ class EmberDataBase extends v1_addon_1.default {
|
|
|
24
25
|
customizes(...names) {
|
|
25
26
|
return super.customizes(...names.filter(n => n !== 'treeForAddon'));
|
|
26
27
|
}
|
|
28
|
+
static shouldApplyAdapter(addonInstance) {
|
|
29
|
+
return semver_1.default.lt(addonInstance.pkg.version, '4.11.1');
|
|
30
|
+
}
|
|
27
31
|
}
|
|
28
32
|
exports.EmberDataBase = EmberDataBase;
|
|
29
33
|
class EmberData extends EmberDataBase {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ember-data.js","sourceRoot":"","sources":["ember-data.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,2DAAkC;AAClC,+BAA4B;AAC5B,2DAA6C;AAE7C,qCAA8C;
|
|
1
|
+
{"version":3,"file":"ember-data.js","sourceRoot":"","sources":["ember-data.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,2DAAkC;AAClC,+BAA4B;AAC5B,2DAA6C;AAE7C,qCAA8C;AAC9C,oDAA4B;AAE5B,MAAa,aAAc,SAAQ,kBAAO;IACxC,0EAA0E;IAC1E,4EAA4E;IAC5E,sEAAsE;IACtE,EAAE;IACF,uEAAuE;IACvE,uBAAuB;IACvB,UAAU,CAAC,GAAG,KAAe;QAC3B,OAAO,KAAK,CAAC,UAAU,CAAC,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,cAAc,CAAC,CAAC,CAAC;IACtE,CAAC;IAED,MAAM,CAAC,kBAAkB,CAAC,aAAkB;QAC1C,OAAO,gBAAM,CAAC,EAAE,CAAC,aAAa,CAAC,GAAG,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;IACxD,CAAC;CACF;AAdD,sCAcC;AAED,MAAqB,SAAU,SAAQ,aAAa;IAClD,6DAA6D;IAE7D,IAAI,OAAO;QACT,IAAI,WAAuB,CAAC;QAC5B,IAAI;YACF,4DAA4D;YAC5D,iEAAiE;YACjE,WAAW,GAAG,OAAO,CAAC,IAAA,WAAI,EAAC,IAAI,CAAC,IAAI,EAAE,aAAa,CAAC,CAAC,CAAC;SACvD;QAAC,OAAO,GAAG,EAAE;YACZ,SAAS,CAAC,GAAG,CAAC,CAAC;YACf,IAAI;gBACF,wDAAwD;gBACxD,iEAAiE;gBACjE,WAAW,GAAG,OAAO,CAAC,IAAA,cAAW,EAAC,oDAAoD,EAAE;oBACtF,OAAO,EAAE,IAAI,CAAC,IAAI;iBACnB,CAAC,CAAC,CAAC;aACL;YAAC,OAAO,GAAG,EAAE;gBACZ,SAAS,CAAC,GAAG,CAAC,CAAC;gBACf,kDAAkD;gBAClD,iEAAiE;gBACjE,WAAW,GAAG,OAAO,CAAC,IAAA,cAAW,EAAC,2DAA2D,EAAE;oBAC7F,OAAO,EAAE,IAAI,CAAC,IAAI;iBACnB,CAAC,CAAC,CAAC;aACL;SACF;QAED,IAAI,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC;QAC1B,KAAK,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC;QAC1B,OAAO,KAAK,CAAC;IACf,CAAC;CACF;AA5BC;IADC,IAAA,4BAAO,GAAE;wCA4BT;AA9BH,4BA+BC;AAED,SAAS,SAAS,CAAC,GAAQ;IACzB,IAAI,GAAG,CAAC,IAAI,KAAK,kBAAkB,EAAE;QACnC,MAAM,GAAG,CAAC;KACX;AACH,CAAC","sourcesContent":["import V1Addon from '../v1-addon';\nimport { join } from 'path';\nimport { Memoize } from 'typescript-memoize';\nimport { Node } from 'broccoli-node-api';\nimport { sync as resolveSync } from 'resolve';\nimport semver from 'semver';\n\nexport class EmberDataBase extends V1Addon {\n // May of the ember-data packages use rollup to try to hide their internal\n // structure. This is fragile and it breaks under embroider, and they should\n // really move this kind of \"build-within-a-build\" to prepublish time.\n //\n // This disables any custom implementation of `treeForAddon`. The stock\n // behavior is correct.\n customizes(...names: string[]) {\n return super.customizes(...names.filter(n => n !== 'treeForAddon'));\n }\n\n static shouldApplyAdapter(addonInstance: any) {\n return semver.lt(addonInstance.pkg.version, '4.11.1');\n }\n}\n\nexport default class EmberData extends EmberDataBase {\n // ember-data needs its dynamically generated version module.\n @Memoize()\n get v2Trees() {\n let versionTree: () => Node;\n try {\n // ember-data 3.10 and earlier kept the version module here.\n // eslint-disable-next-line @typescript-eslint/no-require-imports\n versionTree = require(join(this.root, 'lib/version'));\n } catch (err) {\n handleErr(err);\n try {\n // ember-data 3.11 to 3.14 keep the version module here.\n // eslint-disable-next-line @typescript-eslint/no-require-imports\n versionTree = require(resolveSync('@ember-data/-build-infra/src/create-version-module', {\n basedir: this.root,\n }));\n } catch (err) {\n handleErr(err);\n // ember-data 3.15+ keeps the version module here.\n // eslint-disable-next-line @typescript-eslint/no-require-imports\n versionTree = require(resolveSync('@ember-data/private-build-infra/src/create-version-module', {\n basedir: this.root,\n }));\n }\n }\n\n let trees = super.v2Trees;\n trees.push(versionTree());\n return trees;\n }\n}\n\nfunction handleErr(err: any) {\n if (err.code !== 'MODULE_NOT_FOUND') {\n throw err;\n }\n}\n"]}
|
package/src/compat-app.js
CHANGED
|
@@ -16,16 +16,13 @@ const walk_sync_1 = __importDefault(require("walk-sync"));
|
|
|
16
16
|
const path_1 = require("path");
|
|
17
17
|
const fs_1 = require("fs");
|
|
18
18
|
const options_1 = require("./options");
|
|
19
|
-
const resolver_1 = __importDefault(require("./resolver"));
|
|
20
19
|
const dependency_rules_1 = require("./dependency-rules");
|
|
21
20
|
const flatMap_1 = __importDefault(require("lodash/flatMap"));
|
|
22
21
|
const typescript_memoize_1 = require("typescript-memoize");
|
|
23
|
-
const flatten_1 = __importDefault(require("lodash/flatten"));
|
|
24
22
|
const resolve_1 = require("resolve");
|
|
25
23
|
const node_1 = require("@embroider/macros/src/node");
|
|
26
24
|
const bind_decorator_1 = __importDefault(require("bind-decorator"));
|
|
27
25
|
const fs_extra_1 = require("fs-extra");
|
|
28
|
-
const core_2 = require("@embroider/core");
|
|
29
26
|
// This runs at broccoli-pipeline-construction time, whereas our actual
|
|
30
27
|
// CompatAppAdapter instance only becomes available during tree-building
|
|
31
28
|
// time.
|
|
@@ -172,7 +169,7 @@ class CompatAppAdapter {
|
|
|
172
169
|
// For TS, we defer to ember-cli-babel, and the setting for
|
|
173
170
|
// "enableTypescriptTransform" can be set with and without
|
|
174
171
|
// ember-cli-typescript
|
|
175
|
-
return ['.wasm', '.mjs', '.js', '.json', '.hbs', '.
|
|
172
|
+
return ['.wasm', '.mjs', '.js', '.json', '.ts', '.hbs', '.hbs.js'];
|
|
176
173
|
}
|
|
177
174
|
*emberEntrypoints(htmlTreePath) {
|
|
178
175
|
let classicEntrypoints = [
|
|
@@ -246,82 +243,68 @@ class CompatAppAdapter {
|
|
|
246
243
|
...this.allActiveAddons.filter(p => p.meta['auto-upgraded']),
|
|
247
244
|
]);
|
|
248
245
|
}
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
}
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
(0, fs_1.writeFileSync)(file, JSON.stringify(this.adjustImportsOptions()));
|
|
263
|
-
return file;
|
|
246
|
+
hbsTransforms(resolverConfig) {
|
|
247
|
+
if (this.options.staticComponents ||
|
|
248
|
+
this.options.staticHelpers ||
|
|
249
|
+
this.options.staticModifiers ||
|
|
250
|
+
globalThis.embroider_audit) {
|
|
251
|
+
let opts = {
|
|
252
|
+
appRoot: resolverConfig.appRoot,
|
|
253
|
+
};
|
|
254
|
+
return [[require.resolve('./resolver-transform'), opts]];
|
|
255
|
+
}
|
|
256
|
+
else {
|
|
257
|
+
return [];
|
|
258
|
+
}
|
|
264
259
|
}
|
|
265
|
-
|
|
266
|
-
|
|
260
|
+
jsPlugins(resolverConfig) {
|
|
261
|
+
let pluginConfig = {
|
|
262
|
+
appRoot: resolverConfig.appRoot,
|
|
263
|
+
};
|
|
264
|
+
return [[require.resolve('./babel-plugin-adjust-imports'), pluginConfig]];
|
|
267
265
|
}
|
|
268
|
-
|
|
269
|
-
makeAdjustImportOptions(outer) {
|
|
266
|
+
resolverConfig(engines) {
|
|
270
267
|
let renamePackages = Object.assign({}, ...this.allActiveAddons.map(dep => dep.meta['renamed-packages']));
|
|
271
268
|
let renameModules = Object.assign({}, ...this.allActiveAddons.map(dep => dep.meta['renamed-modules']));
|
|
272
269
|
let activeAddons = {};
|
|
273
270
|
for (let addon of this.allActiveAddons) {
|
|
274
271
|
activeAddons[addon.name] = addon.root;
|
|
275
272
|
}
|
|
276
|
-
|
|
273
|
+
let relocatedFiles = {};
|
|
274
|
+
for (let { destPath, appFiles } of engines) {
|
|
275
|
+
for (let [relativePath, originalPath] of appFiles.relocatedFiles) {
|
|
276
|
+
relocatedFiles[(0, path_1.join)(destPath, relativePath)] = originalPath;
|
|
277
|
+
}
|
|
278
|
+
}
|
|
279
|
+
let config = {
|
|
280
|
+
// this part is the base ModuleResolverOptions as required by @embroider/core
|
|
277
281
|
activeAddons,
|
|
278
282
|
renameModules,
|
|
279
283
|
renamePackages,
|
|
280
|
-
|
|
281
|
-
// extraImports until after we have the internalTemplateResolver which in
|
|
282
|
-
// turn needs some adjustImportsOptions
|
|
283
|
-
extraImports: outer ? this.extraImports() : [],
|
|
284
|
-
relocatedFiles: {},
|
|
284
|
+
relocatedFiles,
|
|
285
285
|
resolvableExtensions: this.resolvableExtensions(),
|
|
286
|
-
// it's important that this is a persistent location, because we fill it
|
|
287
|
-
// up as a side-effect of babel transpilation, and babel is subject to
|
|
288
|
-
// persistent caching.
|
|
289
|
-
externalsDir: (0, path_1.join)(core_2.tmpdir, 'embroider', 'externals'),
|
|
290
286
|
appRoot: this.root,
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
|
|
296
|
-
|
|
297
|
-
|
|
298
|
-
|
|
299
|
-
|
|
287
|
+
engines: engines.map(engine => ({
|
|
288
|
+
packageName: engine.package.name,
|
|
289
|
+
root: this.root,
|
|
290
|
+
activeAddons: [...engine.addons]
|
|
291
|
+
.map(a => ({
|
|
292
|
+
name: a.name,
|
|
293
|
+
root: a.root,
|
|
294
|
+
}))
|
|
295
|
+
// the traditional order is the order in which addons will run, such
|
|
296
|
+
// that the last one wins. Our resolver's order is the order to
|
|
297
|
+
// search, so first one wins.
|
|
298
|
+
.reverse(),
|
|
299
|
+
})),
|
|
300
|
+
// this is the additional stufff that @embroider/compat adds on top to do
|
|
301
|
+
// global template resolving
|
|
300
302
|
modulePrefix: this.modulePrefix(),
|
|
303
|
+
podModulePrefix: this.podModulePrefix(),
|
|
301
304
|
options: this.options,
|
|
302
305
|
activePackageRules: this.activeRules(),
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
}
|
|
306
|
-
extraImports() {
|
|
307
|
-
let output = [];
|
|
308
|
-
for (let rule of this.activeRules()) {
|
|
309
|
-
if (rule.addonModules) {
|
|
310
|
-
for (let [filename, moduleRules] of Object.entries(rule.addonModules)) {
|
|
311
|
-
for (let root of rule.roots) {
|
|
312
|
-
let absPath = (0, path_1.join)(root, filename);
|
|
313
|
-
output.push((0, dependency_rules_1.expandModuleRules)(absPath, moduleRules, this.internalTemplateResolver()));
|
|
314
|
-
}
|
|
315
|
-
}
|
|
316
|
-
}
|
|
317
|
-
if (rule.appModules) {
|
|
318
|
-
for (let [filename, moduleRules] of Object.entries(rule.appModules)) {
|
|
319
|
-
let absPath = (0, path_1.join)(this.root, filename);
|
|
320
|
-
output.push((0, dependency_rules_1.expandModuleRules)(absPath, moduleRules, this.internalTemplateResolver()));
|
|
321
|
-
}
|
|
322
|
-
}
|
|
323
|
-
}
|
|
324
|
-
return (0, flatten_1.default)(output);
|
|
306
|
+
};
|
|
307
|
+
return config;
|
|
325
308
|
}
|
|
326
309
|
htmlbarsPlugins() {
|
|
327
310
|
return this.oldPackage.htmlbarsPlugins;
|
|
@@ -357,18 +340,6 @@ __decorate([
|
|
|
357
340
|
__decorate([
|
|
358
341
|
(0, typescript_memoize_1.Memoize)()
|
|
359
342
|
], CompatAppAdapter.prototype, "activeRules", null);
|
|
360
|
-
__decorate([
|
|
361
|
-
(0, typescript_memoize_1.Memoize)()
|
|
362
|
-
], CompatAppAdapter.prototype, "resolverTransform", null);
|
|
363
|
-
__decorate([
|
|
364
|
-
(0, typescript_memoize_1.Memoize)()
|
|
365
|
-
], CompatAppAdapter.prototype, "adjustImportsOptionsPath", null);
|
|
366
|
-
__decorate([
|
|
367
|
-
(0, typescript_memoize_1.Memoize)()
|
|
368
|
-
], CompatAppAdapter.prototype, "adjustImportsOptions", null);
|
|
369
|
-
__decorate([
|
|
370
|
-
(0, typescript_memoize_1.Memoize)()
|
|
371
|
-
], CompatAppAdapter.prototype, "internalTemplateResolver", null);
|
|
372
343
|
class CompatApp extends core_1.BuildStage {
|
|
373
344
|
constructor(legacyEmberAppInstance, addons, options) {
|
|
374
345
|
let { inTrees, instantiate } = setup(legacyEmberAppInstance, (0, options_1.optionsWithDefaults)(options));
|
package/src/compat-app.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"compat-app.js","sourceRoot":"","sources":["compat-app.ts"],"names":[],"mappings":";;;;;;;;;;;AACA,gFAA8C;AAC9C,0CAYyB;AACzB,4EAAkD;AAElD,0DAAiC;AACjC,+BAA4B;AAG5B,2BAA0D;AAC1D,uCAAyD;AACzD,0DAAwC;AACxC,yDAAyF;AACzF,6DAAqC;AACrC,2DAA6C;AAC7C,6DAAqC;AACrC,qCAA8C;AAC9C,qDAA0D;AAC1D,oEAAkC;AAClC,uCAA0C;AAC1C,0CAAyC;AAWzC,uEAAuE;AACvE,wEAAwE;AACxE,QAAQ;AACR,SAAS,KAAK,CAAC,sBAA8B,EAAE,OAA0B;IACvE,IAAI,UAAU,GAAG,2BAAe,CAAC,MAAM,CAAC,sBAAsB,EAAE,OAAO,CAAC,CAAC,GAAG,CAAC;IAE7E,IAAI,EAAE,KAAK,EAAE,GAAG,UAAU,CAAC,YAAY,EAAE,CAAC;IAC1C,IAAI,QAAQ,GAAG,UAAU,CAAC,QAAQ,CAAC;IACnC,IAAI,UAAU,GAAG,UAAU,CAAC,UAAU,CAAC;IACvC,IAAI,UAAU,GAAG,UAAU,CAAC,MAAM,CAAC;IACnC,IAAI,WAAW,GAAG,UAAU,CAAC,OAAO,CAAC;IAErC,IAAI,OAAO,CAAC,gBAAgB,CAAC,MAAM,GAAG,CAAC,EAAE;QACvC,UAAU,GAAG,IAAA,8BAAU,EAAC,CAAC,UAAU,EAAE,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAAC,MAAM,CAAC,OAAO,CAAmB,CAAC,CAAC;KACtG;IAED,IAAI,OAAO,GAAG;QACZ,KAAK;QACL,QAAQ;QACR,UAAU;QACV,UAAU;QACV,WAAW;KACZ,CAAC;IAEF,IAAI,WAAW,GAAG,KAAK,EAAE,IAAY,EAAE,SAAiB,EAAE,YAA0B,EAAE,EAAE;QACtF,IAAI,UAAU,GAAG,YAAY,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;QAC7C,IAAI,OAAO,GAAG,IAAI,gBAAgB,CAChC,IAAI,EACJ,UAAU,EACV,OAAO,EACP,UAAU,EACV,UAAU,EACV,YAAY,CAAC,GAAG,CAAC,IAAA,WAAI,EAAC,IAAI,EAAE,cAAc,EAAE,YAAY,EAAE,oBAAoB,CAAC,CAAC,EAChF,YAAY,CAAC,GAAG,CAAC,IAAA,WAAI,EAAC,IAAI,EAAE,cAAc,EAAE,YAAY,EAAE,oBAAoB,CAAC,CAAC,CACjF,CAAC;QAEF,OAAO,IAAI,iBAAU,CACnB,IAAI,EACJ,UAAU,EACV,OAAO,EACP,OAAO,EACP,mBAAY,CAAC,GAAG,CAAC,sBAAsB,EAAE,SAAS,CAAC,CACpD,CAAC;IACJ,CAAC,CAAC;IAEF,OAAO,EAAE,OAAO,EAAE,WAAW,EAAE,CAAC;AAClC,CAAC;AAED,MAAM,gBAAgB;IACpB,YACU,IAAY,EACZ,UAAmB,EACnB,OAA0B,EAC1B,UAAiB,EACjB,UAAoB,EACpB,WAAoB,EACpB,WAAoB;QANpB,SAAI,GAAJ,IAAI,CAAQ;QACZ,eAAU,GAAV,UAAU,CAAS;QACnB,YAAO,GAAP,OAAO,CAAmB;QAC1B,eAAU,GAAV,UAAU,CAAO;QACjB,eAAU,GAAV,UAAU,CAAU;QACpB,gBAAW,GAAX,WAAW,CAAS;QACpB,gBAAW,GAAX,WAAW,CAAS;IAC3B,CAAC;IAEJ,WAAW,CAAC,SAAiC;QAC3C,OAAO,SAAS,CAAC,KAAK,CAAC;IACzB,CAAC;IAGD,gBAAgB,CAAC,UAAkC;QACjD,IAAI,MAAM,GAAG,IAAA,WAAI,EAAC,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;QACpD,IAAI,IAAA,yBAAc,EAAC,MAAM,CAAC,EAAE;YAC1B,OAAO,MAAM,CAAC;SACf;IACH,CAAC;IAED,IAAI,GAAG;QACL,OAAO,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC;IAC7B,CAAC;IAED,MAAM,CAAC,SAAiC;QACtC,IAAI,MAAM,GAAY,EAAE,CAAC;QAEzB,gEAAgE;QAChE,IAAI,SAAS,CAAC,UAAU,EAAE;YACxB,mBAAQ;iBACL,OAAO,CAAC,SAAS,CAAC,UAAU,EAAE;gBAC7B,WAAW,EAAE,KAAK;aACnB,CAAC;iBACD,OAAO,CAAC,KAAK,CAAC,EAAE;gBACf,MAAM,CAAC,IAAI,CAAC;oBACV,IAAI,EAAE,SAAS;oBACf,YAAY,EAAE,KAAK,CAAC,YAAY;oBAChC,UAAU,EAAE,KAAK,CAAC,QAAQ;oBAC1B,KAAK,EAAE,KAAK,CAAC,KAA0B;oBACvC,IAAI,EAAE,KAAK,CAAC,IAAI;iBACjB,CAAC,CAAC;YACL,CAAC,CAAC,CAAC;SACN;QAED,oEAAoE;QACpE,sDAAsD;QACtD,IAAI,IAAI,CAAC,UAAU,CAAC,gBAAgB,EAAE;YACpC,IAAI,WAAW,GAAG,IAAI,CAAC,eAAe,EAAE,CAAC;YACzC,IAAI,WAAW,EAAE;gBACf,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;aAC1B;SACF;QAED,KAAK,IAAI,KAAK,IAAI,IAAI,CAAC,gBAAgB,CAAC,SAAS,CAAC,QAAQ,CAAC,EAAE;YAC3D,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;SACpB;QAED,OAAO,MAAM,CAAC;IAChB,CAAC;IAGD,eAAe;QACb,IAAI,UAAU,CAAC;QACf,IAAI;YACF,UAAU,GAAG,IAAA,cAAW,EAAC,kCAAkC,EAAE,EAAE,OAAO,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;SACtF;QAAC,OAAO,GAAG,EAAE,GAAE;QAChB,IAAI,UAAU,EAAE;YACd,IAAI,IAAI,GAAG,IAAA,aAAQ,EAAC,UAAU,CAAC,CAAC;YAChC,OAAO;gBACL,IAAI,EAAE,SAAS;gBACf,YAAY,EAAE,WAAW;gBACzB,UAAU;gBACV,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE;gBAC3B,IAAI,EAAE,IAAI,CAAC,IAAI;aAChB,CAAC;SACH;IACH,CAAC;IAED,gBAAgB;QACd,IAAI,IAAI,CAAC,UAAU,CAAC,WAAW,EAAE;YAC/B,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;SAC3C;QACD,OAAO,EAAE,CAAC;IACZ,CAAC;IAGD,mBAAmB,CAAC,MAAe,IAAI,CAAC,UAAU;QAChD,IAAI,MAAM,GAAI,GAAG,CAAC,YAAY,CAAC,MAAM,CAAC,IAAI,CAAC,aAAa,CAAoB,CAAC,MAAM;QACjF,yEAAyE;QACzE,wEAAwE;QACxE,0EAA0E;QAC1E,YAAY;QACZ,KAAK,CAAC,EAAE,eAAC,OAAA,CAAA,MAAA,GAAG,CAAC,WAAW,CAAC,YAAY,0CAAG,KAAK,CAAC,IAAI,CAAC,MAAI,MAAA,GAAG,CAAC,WAAW,CAAC,eAAe,0CAAG,KAAK,CAAC,IAAI,CAAC,CAAA,CAAA,EAAA,CACrG,CAAC;QACF,IAAI,GAAG,KAAK,IAAI,CAAC,UAAU,EAAE;YAC3B,IAAI,MAAM,GAAG,CAAC,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,aAAa,CAAmB,CAAC;YAC/F,MAAM,GAAG,CAAC,GAAG,MAAM,EAAE,GAAG,MAAM,CAAC,CAAC;SACjC;QACD,OAAO,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;IACvC,CAAC;IAGD,IAAI,eAAe;QACjB,IAAI,MAAM,GAAG,IAAI,CAAC,UAAU,CAAC,eAAe,CAAC,IAAI,CAAC,aAAa,CAAmB,CAAC;QACnF,IAAI,MAAM,GAAG,CAAC,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,aAAa,CAAmB,CAAC;QAC/F,IAAI,gBAAgB,GAAG,IAAA,iBAAO,EAAC,MAAM,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,eAAe,CAAC,IAAI,CAAC,aAAa,CAAC,CAAmB,CAAC;QACzG,MAAM,GAAG,CAAC,GAAG,MAAM,EAAE,GAAG,MAAM,EAAE,GAAG,gBAAgB,CAAC,CAAC;QACrD,OAAO,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;IACvC,CAAC;IAGO,aAAa,CAAC,GAAY;QAChC,sCAAsC;QACtC,OAAO,GAAG,CAAC,cAAc,EAAE,CAAC;IAC9B,CAAC;IAGO,WAAW,CAAC,IAAa,EAAE,IAAa;QAC9C,IAAI,OAAO,GAAG,CAAC,CAAC;QAChB,IAAI,OAAO,GAAG,CAAC,CAAC;QAEhB,IAAI,IAAI,IAAI,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,SAAS,EAAE,EAAE;YACzC,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;SACzC;QACD,IAAI,IAAI,IAAI,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,SAAS,EAAE,EAAE;YACzC,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;SACzC;QAED,OAAO,OAAO,GAAG,OAAO,CAAC;IAC3B,CAAC;IAGO,oBAAoB;QAC1B,uEAAuE;QACvE,0EAA0E;QAC1E,8BAA8B;QAC9B,EAAE;QACF,2DAA2D;QAC3D,0DAA0D;QAC1D,uBAAuB;QACvB,OAAO,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,CAAC,CAAC;IAC1D,CAAC;IAEO,CAAC,gBAAgB,CAAC,YAAoB;QAC5C,IAAI,kBAAkB,GAAG;YACvB,EAAE,UAAU,EAAE,YAAY,EAAE,YAAY,EAAE,KAAK,EAAE;YACjD,EAAE,UAAU,EAAE,kBAAkB,EAAE,YAAY,EAAE,IAAI,EAAE;SACvD,CAAC;QACF,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,gBAAgB,EAAE;YACrC,kBAAkB,CAAC,GAAG,EAAE,CAAC;SAC1B;QACD,KAAK,IAAI,EAAE,UAAU,EAAE,YAAY,EAAE,IAAI,kBAAkB,EAAE;YAC3D,IAAI,UAAU,GAAG,IAAA,WAAI,EAAC,YAAY,EAAE,UAAU,CAAC,CAAC;YAChD,IAAI,KAAK,GAAG,IAAA,aAAQ,EAAC,UAAU,CAAC,CAAC;YACjC,IAAI,KAAK,GAAe;gBACtB,IAAI,EAAE,OAAO;gBACb,YAAY,EAAE,UAAU;gBACxB,YAAY;gBACZ,UAAU;gBACV,KAAK,EAAE,KAAK,CAAC,KAAK,CAAC,OAAO,EAAE;gBAC5B,IAAI,EAAE,KAAK,CAAC,IAAI;gBAChB,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE;gBACvB,OAAO,EAAE,CAAC,GAAU,EAAE,EAAE;oBACtB,IAAI,OAAO,GAAG,CAAC,GAAG,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC,gBAAgB,CAAC,QAAQ,CAAC,CAAC,CAAC;oBAClE,IAAI,MAAM,GAAG,CAAC,GAAG,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC,gBAAgB,CAAC,wBAAwB,CAAC,CAAsB,CAAC;oBAEtG,OAAO;wBACL,UAAU,EAAE,iBAAiB,CAAC,GAAG,EAAE,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC;wBACtF,MAAM,EAAE,iBAAiB,CAAC,GAAG,EAAE,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;wBACjF,eAAe,EAAE,iBAAiB,CAAC,GAAG,EAAE,IAAI,CAAC,UAAU,CAAC,gBAAgB,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC;wBAC9F,cAAc,EAAE,iBAAiB,CAAC,GAAG,EAAE,IAAI,CAAC,UAAU,CAAC,gBAAgB,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;wBAC5F,cAAc,EAAE,YAAY,CAAC,GAAG,EAAE,IAAI,CAAC,UAAU,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC;wBAC1E,mBAAmB,EAAE,YAAY,CAAC,GAAG,EAAE,IAAI,CAAC,UAAU,CAAC,qBAAqB,CAAC,OAAO,CAAC,CAAC;wBACtF,kBAAkB,EAAE,YAAY,CAAC,GAAG,EAAE,IAAI,CAAC,UAAU,CAAC,qBAAqB,CAAC,MAAM,CAAC,CAAC;qBACrF,CAAC;gBACJ,CAAC;aACF,CAAC;YACF,MAAM,KAAK,CAAC;SACb;IACH,CAAC;IAED,OAAO;QACL,OAAO,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC;IACjC,CAAC;IAED,OAAO;QACL,OAAO,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC;IAC/C,CAAC;IAED,UAAU;QACR,OAAO,KAAK,CAAC;IACf,CAAC;IAED,gBAAgB;QACd,OAAO,IAAI,CAAC,UAAU,CAAC,UAAU,EAAE,CAAC,GAAG,CAAC;IAC1C,CAAC;IAED,QAAQ;QACN,OAAO,IAAI,CAAC,UAAU,CAAC,UAAU,EAAE,CAAC,QAAQ,CAAC;IAC/C,CAAC;IAED,YAAY;QACV,OAAO,IAAI,CAAC,UAAU,CAAC,UAAU,EAAE,CAAC,YAAY,CAAC;IACnD,CAAC;IAED,eAAe;QACb,OAAO,IAAI,CAAC,UAAU,CAAC,UAAU,EAAE,CAAC,eAAe,CAAC;IACtD,CAAC;IAED,OAAO;QACL,OAAO,IAAI,CAAC,UAAU,CAAC,UAAU,EAAE,CAAC,OAAO,CAAC;IAC9C,CAAC;IAED,oBAAoB;QAClB,OAAO,mDAAmD,CAAC;IAC7D,CAAC;IAED,cAAc;QACZ,OAAO,KAAK,CAAC;IACf,CAAC;IAGO,WAAW;QACjB,OAAO,IAAA,qCAAkB,EAAC,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,MAAM,CAAC,wBAAwB,EAAE,CAAC,EAAE;YACtF,IAAI,CAAC,UAAU;YACf,GAAG,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;SAC7D,CAAC,CAAC;IACL,CAAC;IAGD,iBAAiB;QACf,OAAO,IAAI,kBAAc,CAAC;YACxB,YAAY,EAAE,IAAI,CAAC,mBAAmB,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,cAAc,CAAE,CAAC,WAAW,CAAC,OAAO;YAClG,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,YAAY,EAAE,IAAI,CAAC,YAAY,EAAE;YACjC,eAAe,EAAE,IAAI,CAAC,eAAe,EAAE;YACvC,OAAO,EAAE,IAAI,CAAC,OAAO;YACrB,kBAAkB,EAAE,IAAI,CAAC,WAAW,EAAE;YACtC,wBAAwB,EAAE,IAAI,CAAC,wBAAwB,EAAE;SAC1D,CAAC,CAAC,cAAc,EAAE,CAAC;IACtB,CAAC;IAGD,wBAAwB;QACtB,IAAI,IAAI,GAAG,IAAA,WAAI,EAAC,IAAI,CAAC,IAAI,EAAE,sBAAsB,CAAC,CAAC;QACnD,IAAA,kBAAa,EAAC,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,oBAAoB,EAAE,CAAC,CAAC,CAAC;QACjE,OAAO,IAAI,CAAC;IACd,CAAC;IAGD,oBAAoB;QAClB,OAAO,IAAI,CAAC,uBAAuB,CAAC,IAAI,CAAC,CAAC;IAC5C,CAAC;IAED,0DAA0D;IAClD,uBAAuB,CAAC,KAAc;QAC5C,IAAI,cAAc,GAAG,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,GAAG,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC;QACzG,IAAI,aAAa,GAAG,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,GAAG,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC;QAEvG,IAAI,YAAY,GAAyC,EAAE,CAAC;QAC5D,KAAK,IAAI,KAAK,IAAI,IAAI,CAAC,eAAe,EAAE;YACtC,YAAY,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC,IAAI,CAAC;SACvC;QAED,OAAO;YACL,YAAY;YACZ,aAAa;YACb,cAAc;YACd,kEAAkE;YAClE,yEAAyE;YACzE,uCAAuC;YACvC,YAAY,EAAE,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC,EAAE;YAC9C,cAAc,EAAE,EAAE;YAClB,oBAAoB,EAAE,IAAI,CAAC,oBAAoB,EAAE;YAEjD,wEAAwE;YACxE,sEAAsE;YACtE,sBAAsB;YACtB,YAAY,EAAE,IAAA,WAAI,EAAC,aAAM,EAAE,WAAW,EAAE,WAAW,CAAC;YACpD,OAAO,EAAE,IAAI,CAAC,IAAI;SACnB,CAAC;IACJ,CAAC;IAED,6EAA6E;IAC7E,yEAAyE;IACzE,SAAS;IAED,wBAAwB;QAC9B,OAAO,IAAI,kBAAc,CAAC;YACxB,YAAY,EAAE,IAAI,CAAC,mBAAmB,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,cAAc,CAAE,CAAC,WAAW,CAAC,OAAO;YAClG,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,YAAY,EAAE,IAAI,CAAC,YAAY,EAAE;YACjC,OAAO,EAAE,IAAI,CAAC,OAAO;YACrB,kBAAkB,EAAE,IAAI,CAAC,WAAW,EAAE;YACtC,oBAAoB,EAAE,IAAI,CAAC,uBAAuB,CAAC,KAAK,CAAC;SAC1D,CAAC,CAAC;IACL,CAAC;IAEO,YAAY;QAClB,IAAI,MAAM,GAAkE,EAAE,CAAC;QAE/E,KAAK,IAAI,IAAI,IAAI,IAAI,CAAC,WAAW,EAAE,EAAE;YACnC,IAAI,IAAI,CAAC,YAAY,EAAE;gBACrB,KAAK,IAAI,CAAC,QAAQ,EAAE,WAAW,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,YAAY,CAAC,EAAE;oBACrE,KAAK,IAAI,IAAI,IAAI,IAAI,CAAC,KAAK,EAAE;wBAC3B,IAAI,OAAO,GAAG,IAAA,WAAI,EAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;wBACnC,MAAM,CAAC,IAAI,CAAC,IAAA,oCAAiB,EAAC,OAAO,EAAE,WAAW,EAAE,IAAI,CAAC,wBAAwB,EAAE,CAAC,CAAC,CAAC;qBACvF;iBACF;aACF;YACD,IAAI,IAAI,CAAC,UAAU,EAAE;gBACnB,KAAK,IAAI,CAAC,QAAQ,EAAE,WAAW,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE;oBACnE,IAAI,OAAO,GAAG,IAAA,WAAI,EAAC,IAAI,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;oBACxC,MAAM,CAAC,IAAI,CAAC,IAAA,oCAAiB,EAAC,OAAO,EAAE,WAAW,EAAE,IAAI,CAAC,wBAAwB,EAAE,CAAC,CAAC,CAAC;iBACvF;aACF;SACF;QACD,OAAO,IAAA,iBAAO,EAAC,MAAM,CAAC,CAAC;IACzB,CAAC;IAED,eAAe;QACb,OAAO,IAAI,CAAC,UAAU,CAAC,eAAe,CAAC;IACzC,CAAC;IAED,iBAAiB;QACf,OAAO,IAAI,CAAC,UAAU,CAAC,iBAAiB,EAAE,CAAC;IAC7C,CAAC;IAED,WAAW;QACT,OAAO,IAAI,CAAC,UAAU,CAAC,WAAW,EAAE,CAAC;IACvC,CAAC;CACF;AA9TC;IADC,IAAA,4BAAO,GAAE;wDAMT;AA2CD;IADC,IAAA,4BAAO,GAAE;uDAgBT;AAUD;IADC,IAAA,4BAAO,GAAE;2DAcT;AAGD;IADC,IAAA,4BAAO,GAAE;uDAOT;AAGD;IADC,wBAAI;qDAIJ;AAGD;IADC,wBAAI;mDAaJ;AAGD;IADC,IAAA,4BAAO,GAAE;4DAUT;AAiFD;IADC,IAAA,4BAAO,GAAE;mDAMT;AAGD;IADC,IAAA,4BAAO,GAAE;yDAWT;AAGD;IADC,IAAA,4BAAO,GAAE;gEAKT;AAGD;IADC,IAAA,4BAAO,GAAE;4DAGT;AAmCD;IADC,IAAA,4BAAO,GAAE;gEAUT;AAqCH,MAAqB,SAAU,SAAQ,iBAAqB;IAC1D,YAAY,sBAA8B,EAAE,MAAa,EAAE,OAAiB;QAC1E,IAAI,EAAE,OAAO,EAAE,WAAW,EAAE,GAAG,KAAK,CAAC,sBAAsB,EAAE,IAAA,6BAAmB,EAAC,OAAO,CAAC,CAAC,CAAC;QAC3F,KAAK,CAAC,MAAM,EAAE,OAAO,EAAE,uBAAuB,EAAE,WAAW,CAAC,CAAC;IAC/D,CAAC;CACF;AALD,4BAKC;AAED,SAAS,YAAY,CAAC,GAAU,EAAE,OAA4B;IAC5D,IAAI,OAAO,EAAE;QACX,OAAO,iBAAiB,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;KACxC;AACH,CAAC;AAED,SAAS,iBAAiB,CAAC,GAAU,EAAE,OAAgB;IACrD,IAAI,WAAW,GAAG,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC,cAAc,CAAC,EAAE,CAAC,CAAC;IACzD,OAAO,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC;IACjC,OAAO,WAAW,CAAC;AACrB,CAAC;AAED,SAAS,wBAAwB;IAC/B,OAAO,IAAA,gBAAW,EAAC,IAAA,WAAI,EAAC,SAAS,EAAE,wBAAwB,CAAC,CAAC;SAC1D,GAAG,CAAC,QAAQ,CAAC,EAAE;QACd,IAAI,QAAQ,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE;YAC5B,iEAAiE;YACjE,OAAO,OAAO,CAAC,IAAA,WAAI,EAAC,SAAS,EAAE,wBAAwB,EAAE,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC;SAC7E;IACH,CAAC,CAAC;SACD,MAAM,CAAC,OAAO,CAAC;SACf,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;AACvC,CAAC","sourcesContent":["import { Node as BroccoliNode } from 'broccoli-node-api';\nimport mergeTrees from 'broccoli-merge-trees';\nimport {\n Stage,\n PackageCache,\n OutputPaths,\n BuildStage,\n Asset,\n EmberAsset,\n AppAdapter,\n AppBuilder,\n EmberENV,\n Package,\n AddonPackage,\n} from '@embroider/core';\nimport V1InstanceCache from './v1-instance-cache';\nimport V1App from './v1-app';\nimport walkSync from 'walk-sync';\nimport { join } from 'path';\nimport { JSDOM } from 'jsdom';\nimport { V1Config } from './v1-config';\nimport { statSync, readdirSync, writeFileSync } from 'fs';\nimport Options, { optionsWithDefaults } from './options';\nimport CompatResolver from './resolver';\nimport { activePackageRules, PackageRules, expandModuleRules } from './dependency-rules';\nimport flatMap from 'lodash/flatMap';\nimport { Memoize } from 'typescript-memoize';\nimport flatten from 'lodash/flatten';\nimport { sync as resolveSync } from 'resolve';\nimport { MacrosConfig } from '@embroider/macros/src/node';\nimport bind from 'bind-decorator';\nimport { pathExistsSync } from 'fs-extra';\nimport { tmpdir } from '@embroider/core';\nimport { Options as AdjustImportsOptions } from '@embroider/core/src/babel-plugin-adjust-imports';\nimport type { Transform } from 'babel-plugin-ember-template-compilation';\n\ninterface TreeNames {\n appJS: BroccoliNode;\n htmlTree: BroccoliNode;\n publicTree: BroccoliNode | undefined;\n configTree: BroccoliNode;\n}\n\n// This runs at broccoli-pipeline-construction time, whereas our actual\n// CompatAppAdapter instance only becomes available during tree-building\n// time.\nfunction setup(legacyEmberAppInstance: object, options: Required<Options>) {\n let oldPackage = V1InstanceCache.forApp(legacyEmberAppInstance, options).app;\n\n let { appJS } = oldPackage.processAppJS();\n let htmlTree = oldPackage.htmlTree;\n let publicTree = oldPackage.publicTree;\n let configTree = oldPackage.config;\n let appBootTree = oldPackage.appBoot;\n\n if (options.extraPublicTrees.length > 0) {\n publicTree = mergeTrees([publicTree, ...options.extraPublicTrees].filter(Boolean) as BroccoliNode[]);\n }\n\n let inTrees = {\n appJS,\n htmlTree,\n publicTree,\n configTree,\n appBootTree,\n };\n\n let instantiate = async (root: string, appSrcDir: string, packageCache: PackageCache) => {\n let appPackage = packageCache.get(appSrcDir);\n let adapter = new CompatAppAdapter(\n root,\n appPackage,\n options,\n oldPackage,\n configTree,\n packageCache.get(join(root, 'node_modules', '@embroider', 'synthesized-vendor')),\n packageCache.get(join(root, 'node_modules', '@embroider', 'synthesized-styles'))\n );\n\n return new AppBuilder<TreeNames>(\n root,\n appPackage,\n adapter,\n options,\n MacrosConfig.for(legacyEmberAppInstance, appSrcDir)\n );\n };\n\n return { inTrees, instantiate };\n}\n\nclass CompatAppAdapter implements AppAdapter<TreeNames> {\n constructor(\n private root: string,\n private appPackage: Package,\n private options: Required<Options>,\n private oldPackage: V1App,\n private configTree: V1Config,\n private synthVendor: Package,\n private synthStyles: Package\n ) {}\n\n appJSSrcDir(treePaths: OutputPaths<TreeNames>) {\n return treePaths.appJS;\n }\n\n @Memoize()\n fastbootJSSrcDir(_treePaths: OutputPaths<TreeNames>) {\n let target = join(this.oldPackage.root, 'fastboot');\n if (pathExistsSync(target)) {\n return target;\n }\n }\n\n get env() {\n return this.oldPackage.env;\n }\n\n assets(treePaths: OutputPaths<TreeNames>): Asset[] {\n let assets: Asset[] = [];\n\n // Everything in our traditional public tree is an on-disk asset\n if (treePaths.publicTree) {\n walkSync\n .entries(treePaths.publicTree, {\n directories: false,\n })\n .forEach(entry => {\n assets.push({\n kind: 'on-disk',\n relativePath: entry.relativePath,\n sourcePath: entry.fullPath,\n mtime: entry.mtime as unknown as number, // https://github.com/joliss/node-walk-sync/pull/38\n size: entry.size,\n });\n });\n }\n\n // ember-cli traditionally outputs a dummy testem.js file to prevent\n // spurious errors when running tests under \"ember s\".\n if (this.oldPackage.shouldBuildTests) {\n let testemAsset = this.findTestemAsset();\n if (testemAsset) {\n assets.push(testemAsset);\n }\n }\n\n for (let asset of this.emberEntrypoints(treePaths.htmlTree)) {\n assets.push(asset);\n }\n\n return assets;\n }\n\n @Memoize()\n findTestemAsset(): Asset | undefined {\n let sourcePath;\n try {\n sourcePath = resolveSync('ember-cli/lib/broccoli/testem.js', { basedir: this.root });\n } catch (err) {}\n if (sourcePath) {\n let stat = statSync(sourcePath);\n return {\n kind: 'on-disk',\n relativePath: 'testem.js',\n sourcePath,\n mtime: stat.mtime.getTime(),\n size: stat.size,\n };\n }\n }\n\n developingAddons(): string[] {\n if (this.oldPackage.owningAddon) {\n return [this.oldPackage.owningAddon.root];\n }\n return [];\n }\n\n @Memoize()\n activeAddonChildren(pkg: Package = this.appPackage): AddonPackage[] {\n let result = (pkg.dependencies.filter(this.isActiveAddon) as AddonPackage[]).filter(\n // When looking for child addons, we want to ignore 'peerDependencies' of\n // a given package, to align with how ember-cli resolves addons. So here\n // we only include dependencies that definitely appear in one of the other\n // sections.\n addon => pkg.packageJSON.dependencies?.[addon.name] || pkg.packageJSON.devDependencies?.[addon.name]\n );\n if (pkg === this.appPackage) {\n let extras = [this.synthVendor, this.synthStyles].filter(this.isActiveAddon) as AddonPackage[];\n result = [...result, ...extras];\n }\n return result.sort(this.orderAddons);\n }\n\n @Memoize()\n get allActiveAddons(): AddonPackage[] {\n let result = this.appPackage.findDescendants(this.isActiveAddon) as AddonPackage[];\n let extras = [this.synthVendor, this.synthStyles].filter(this.isActiveAddon) as AddonPackage[];\n let extraDescendants = flatMap(extras, dep => dep.findDescendants(this.isActiveAddon)) as AddonPackage[];\n result = [...result, ...extras, ...extraDescendants];\n return result.sort(this.orderAddons);\n }\n\n @bind\n private isActiveAddon(pkg: Package): boolean {\n // todo: filter by addon-provided hook\n return pkg.isEmberPackage();\n }\n\n @bind\n private orderAddons(depA: Package, depB: Package): number {\n let depAIdx = 0;\n let depBIdx = 0;\n\n if (depA && depA.meta && depA.isV2Addon()) {\n depAIdx = depA.meta['order-index'] || 0;\n }\n if (depB && depB.meta && depB.isV2Addon()) {\n depBIdx = depB.meta['order-index'] || 0;\n }\n\n return depAIdx - depBIdx;\n }\n\n @Memoize()\n private resolvableExtensions(): string[] {\n // webpack's default is ['.wasm', '.mjs', '.js', '.json']. Keeping that\n // subset in that order is sensible, since many third-party libraries will\n // expect it to work that way.\n //\n // For TS, we defer to ember-cli-babel, and the setting for\n // \"enableTypescriptTransform\" can be set with and without\n // ember-cli-typescript\n return ['.wasm', '.mjs', '.js', '.json', '.hbs', '.ts'];\n }\n\n private *emberEntrypoints(htmlTreePath: string): IterableIterator<Asset> {\n let classicEntrypoints = [\n { entrypoint: 'index.html', includeTests: false },\n { entrypoint: 'tests/index.html', includeTests: true },\n ];\n if (!this.oldPackage.shouldBuildTests) {\n classicEntrypoints.pop();\n }\n for (let { entrypoint, includeTests } of classicEntrypoints) {\n let sourcePath = join(htmlTreePath, entrypoint);\n let stats = statSync(sourcePath);\n let asset: EmberAsset = {\n kind: 'ember',\n relativePath: entrypoint,\n includeTests,\n sourcePath,\n mtime: stats.mtime.getTime(),\n size: stats.size,\n rootURL: this.rootURL(),\n prepare: (dom: JSDOM) => {\n let scripts = [...dom.window.document.querySelectorAll('script')];\n let styles = [...dom.window.document.querySelectorAll('link[rel=\"stylesheet\"]')] as HTMLLinkElement[];\n\n return {\n javascript: definitelyReplace(dom, this.oldPackage.findAppScript(scripts, entrypoint)),\n styles: definitelyReplace(dom, this.oldPackage.findAppStyles(styles, entrypoint)),\n implicitScripts: definitelyReplace(dom, this.oldPackage.findVendorScript(scripts, entrypoint)),\n implicitStyles: definitelyReplace(dom, this.oldPackage.findVendorStyles(styles, entrypoint)),\n testJavascript: maybeReplace(dom, this.oldPackage.findTestScript(scripts)),\n implicitTestScripts: maybeReplace(dom, this.oldPackage.findTestSupportScript(scripts)),\n implicitTestStyles: maybeReplace(dom, this.oldPackage.findTestSupportStyles(styles)),\n };\n },\n };\n yield asset;\n }\n }\n\n autoRun(): boolean {\n return this.oldPackage.autoRun;\n }\n\n appBoot(): string | undefined {\n return this.oldPackage.appBoot.readAppBoot();\n }\n\n mainModule(): string {\n return 'app';\n }\n\n mainModuleConfig(): unknown {\n return this.configTree.readConfig().APP;\n }\n\n emberENV(): EmberENV {\n return this.configTree.readConfig().EmberENV;\n }\n\n modulePrefix(): string {\n return this.configTree.readConfig().modulePrefix;\n }\n\n podModulePrefix(): string | undefined {\n return this.configTree.readConfig().podModulePrefix;\n }\n\n rootURL(): string {\n return this.configTree.readConfig().rootURL;\n }\n\n templateCompilerPath(): string {\n return 'ember-source/vendor/ember/ember-template-compiler';\n }\n\n strictV2Format() {\n return false;\n }\n\n @Memoize()\n private activeRules() {\n return activePackageRules(this.options.packageRules.concat(defaultAddonPackageRules()), [\n this.appPackage,\n ...this.allActiveAddons.filter(p => p.meta['auto-upgraded']),\n ]);\n }\n\n @Memoize()\n resolverTransform(): Transform | undefined {\n return new CompatResolver({\n emberVersion: this.activeAddonChildren().find(a => a.name === 'ember-source')!.packageJSON.version,\n root: this.root,\n modulePrefix: this.modulePrefix(),\n podModulePrefix: this.podModulePrefix(),\n options: this.options,\n activePackageRules: this.activeRules(),\n adjustImportsOptionsPath: this.adjustImportsOptionsPath(),\n }).astTransformer();\n }\n\n @Memoize()\n adjustImportsOptionsPath(): string {\n let file = join(this.root, '_adjust_imports.json');\n writeFileSync(file, JSON.stringify(this.adjustImportsOptions()));\n return file;\n }\n\n @Memoize()\n adjustImportsOptions(): AdjustImportsOptions {\n return this.makeAdjustImportOptions(true);\n }\n\n // this gets serialized out by babel plugin and ast plugin\n private makeAdjustImportOptions(outer: boolean): AdjustImportsOptions {\n let renamePackages = Object.assign({}, ...this.allActiveAddons.map(dep => dep.meta['renamed-packages']));\n let renameModules = Object.assign({}, ...this.allActiveAddons.map(dep => dep.meta['renamed-modules']));\n\n let activeAddons: AdjustImportsOptions['activeAddons'] = {};\n for (let addon of this.allActiveAddons) {\n activeAddons[addon.name] = addon.root;\n }\n\n return {\n activeAddons,\n renameModules,\n renamePackages,\n // \"outer\" here prevents uncontrolled recursion. We can't know our\n // extraImports until after we have the internalTemplateResolver which in\n // turn needs some adjustImportsOptions\n extraImports: outer ? this.extraImports() : [],\n relocatedFiles: {}, // this is the only part we can't completely fill out here. It needs to wait for the AppBuilder to finish smooshing together all appTrees\n resolvableExtensions: this.resolvableExtensions(),\n\n // it's important that this is a persistent location, because we fill it\n // up as a side-effect of babel transpilation, and babel is subject to\n // persistent caching.\n externalsDir: join(tmpdir, 'embroider', 'externals'),\n appRoot: this.root,\n };\n }\n\n // unlike `templateResolver`, this one brings its own simple TemplateCompiler\n // along so it's capable of parsing component snippets in people's module\n // rules.\n @Memoize()\n private internalTemplateResolver(): CompatResolver {\n return new CompatResolver({\n emberVersion: this.activeAddonChildren().find(a => a.name === 'ember-source')!.packageJSON.version,\n root: this.root,\n modulePrefix: this.modulePrefix(),\n options: this.options,\n activePackageRules: this.activeRules(),\n adjustImportsOptions: this.makeAdjustImportOptions(false),\n });\n }\n\n private extraImports() {\n let output: { absPath: string; target: string; runtimeName?: string }[][] = [];\n\n for (let rule of this.activeRules()) {\n if (rule.addonModules) {\n for (let [filename, moduleRules] of Object.entries(rule.addonModules)) {\n for (let root of rule.roots) {\n let absPath = join(root, filename);\n output.push(expandModuleRules(absPath, moduleRules, this.internalTemplateResolver()));\n }\n }\n }\n if (rule.appModules) {\n for (let [filename, moduleRules] of Object.entries(rule.appModules)) {\n let absPath = join(this.root, filename);\n output.push(expandModuleRules(absPath, moduleRules, this.internalTemplateResolver()));\n }\n }\n }\n return flatten(output);\n }\n\n htmlbarsPlugins(): Transform[] {\n return this.oldPackage.htmlbarsPlugins;\n }\n\n babelMajorVersion() {\n return this.oldPackage.babelMajorVersion();\n }\n\n babelConfig() {\n return this.oldPackage.babelConfig();\n }\n}\n\nexport default class CompatApp extends BuildStage<TreeNames> {\n constructor(legacyEmberAppInstance: object, addons: Stage, options?: Options) {\n let { inTrees, instantiate } = setup(legacyEmberAppInstance, optionsWithDefaults(options));\n super(addons, inTrees, '@embroider/compat/app', instantiate);\n }\n}\n\nfunction maybeReplace(dom: JSDOM, element: Element | undefined): Node | undefined {\n if (element) {\n return definitelyReplace(dom, element);\n }\n}\n\nfunction definitelyReplace(dom: JSDOM, element: Element): Node {\n let placeholder = dom.window.document.createTextNode('');\n element.replaceWith(placeholder);\n return placeholder;\n}\n\nfunction defaultAddonPackageRules(): PackageRules[] {\n return readdirSync(join(__dirname, 'addon-dependency-rules'))\n .map(filename => {\n if (filename.endsWith('.js')) {\n // eslint-disable-next-line @typescript-eslint/no-require-imports\n return require(join(__dirname, 'addon-dependency-rules', filename)).default;\n }\n })\n .filter(Boolean)\n .reduce((a, b) => a.concat(b), []);\n}\n"]}
|
|
1
|
+
{"version":3,"file":"compat-app.js","sourceRoot":"","sources":["compat-app.ts"],"names":[],"mappings":";;;;;;;;;;;AACA,gFAA8C;AAC9C,0CAayB;AACzB,4EAAkD;AAElD,0DAAiC;AACjC,+BAA4B;AAG5B,2BAA2C;AAC3C,uCAAyD;AAEzD,yDAAsE;AACtE,6DAAqC;AACrC,2DAA6C;AAC7C,qCAA8C;AAC9C,qDAA0D;AAC1D,oEAAkC;AAClC,uCAA0C;AAa1C,uEAAuE;AACvE,wEAAwE;AACxE,QAAQ;AACR,SAAS,KAAK,CAAC,sBAA8B,EAAE,OAA0B;IACvE,IAAI,UAAU,GAAG,2BAAe,CAAC,MAAM,CAAC,sBAAsB,EAAE,OAAO,CAAC,CAAC,GAAG,CAAC;IAE7E,IAAI,EAAE,KAAK,EAAE,GAAG,UAAU,CAAC,YAAY,EAAE,CAAC;IAC1C,IAAI,QAAQ,GAAG,UAAU,CAAC,QAAQ,CAAC;IACnC,IAAI,UAAU,GAAG,UAAU,CAAC,UAAU,CAAC;IACvC,IAAI,UAAU,GAAG,UAAU,CAAC,MAAM,CAAC;IACnC,IAAI,WAAW,GAAG,UAAU,CAAC,OAAO,CAAC;IAErC,IAAI,OAAO,CAAC,gBAAgB,CAAC,MAAM,GAAG,CAAC,EAAE;QACvC,UAAU,GAAG,IAAA,8BAAU,EAAC,CAAC,UAAU,EAAE,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAAC,MAAM,CAAC,OAAO,CAAmB,CAAC,CAAC;KACtG;IAED,IAAI,OAAO,GAAG;QACZ,KAAK;QACL,QAAQ;QACR,UAAU;QACV,UAAU;QACV,WAAW;KACZ,CAAC;IAEF,IAAI,WAAW,GAAG,KAAK,EAAE,IAAY,EAAE,SAAiB,EAAE,YAA0B,EAAE,EAAE;QACtF,IAAI,UAAU,GAAG,YAAY,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;QAC7C,IAAI,OAAO,GAAG,IAAI,gBAAgB,CAChC,IAAI,EACJ,UAAU,EACV,OAAO,EACP,UAAU,EACV,UAAU,EACV,YAAY,CAAC,GAAG,CAAC,IAAA,WAAI,EAAC,IAAI,EAAE,cAAc,EAAE,YAAY,EAAE,oBAAoB,CAAC,CAAC,EAChF,YAAY,CAAC,GAAG,CAAC,IAAA,WAAI,EAAC,IAAI,EAAE,cAAc,EAAE,YAAY,EAAE,oBAAoB,CAAC,CAAC,CACjF,CAAC;QAEF,OAAO,IAAI,iBAAU,CACnB,IAAI,EACJ,UAAU,EACV,OAAO,EACP,OAAO,EACP,mBAAY,CAAC,GAAG,CAAC,sBAAsB,EAAE,SAAS,CAAC,CACpD,CAAC;IACJ,CAAC,CAAC;IAEF,OAAO,EAAE,OAAO,EAAE,WAAW,EAAE,CAAC;AAClC,CAAC;AAED,MAAM,gBAAgB;IACpB,YACU,IAAY,EACZ,UAAmB,EACnB,OAA0B,EAC1B,UAAiB,EACjB,UAAoB,EACpB,WAAoB,EACpB,WAAoB;QANpB,SAAI,GAAJ,IAAI,CAAQ;QACZ,eAAU,GAAV,UAAU,CAAS;QACnB,YAAO,GAAP,OAAO,CAAmB;QAC1B,eAAU,GAAV,UAAU,CAAO;QACjB,eAAU,GAAV,UAAU,CAAU;QACpB,gBAAW,GAAX,WAAW,CAAS;QACpB,gBAAW,GAAX,WAAW,CAAS;IAC3B,CAAC;IAEJ,WAAW,CAAC,SAAiC;QAC3C,OAAO,SAAS,CAAC,KAAK,CAAC;IACzB,CAAC;IAGD,gBAAgB,CAAC,UAAkC;QACjD,IAAI,MAAM,GAAG,IAAA,WAAI,EAAC,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;QACpD,IAAI,IAAA,yBAAc,EAAC,MAAM,CAAC,EAAE;YAC1B,OAAO,MAAM,CAAC;SACf;IACH,CAAC;IAED,IAAI,GAAG;QACL,OAAO,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC;IAC7B,CAAC;IAED,MAAM,CAAC,SAAiC;QACtC,IAAI,MAAM,GAAY,EAAE,CAAC;QAEzB,gEAAgE;QAChE,IAAI,SAAS,CAAC,UAAU,EAAE;YACxB,mBAAQ;iBACL,OAAO,CAAC,SAAS,CAAC,UAAU,EAAE;gBAC7B,WAAW,EAAE,KAAK;aACnB,CAAC;iBACD,OAAO,CAAC,KAAK,CAAC,EAAE;gBACf,MAAM,CAAC,IAAI,CAAC;oBACV,IAAI,EAAE,SAAS;oBACf,YAAY,EAAE,KAAK,CAAC,YAAY;oBAChC,UAAU,EAAE,KAAK,CAAC,QAAQ;oBAC1B,KAAK,EAAE,KAAK,CAAC,KAA0B;oBACvC,IAAI,EAAE,KAAK,CAAC,IAAI;iBACjB,CAAC,CAAC;YACL,CAAC,CAAC,CAAC;SACN;QAED,oEAAoE;QACpE,sDAAsD;QACtD,IAAI,IAAI,CAAC,UAAU,CAAC,gBAAgB,EAAE;YACpC,IAAI,WAAW,GAAG,IAAI,CAAC,eAAe,EAAE,CAAC;YACzC,IAAI,WAAW,EAAE;gBACf,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;aAC1B;SACF;QAED,KAAK,IAAI,KAAK,IAAI,IAAI,CAAC,gBAAgB,CAAC,SAAS,CAAC,QAAQ,CAAC,EAAE;YAC3D,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;SACpB;QAED,OAAO,MAAM,CAAC;IAChB,CAAC;IAGD,eAAe;QACb,IAAI,UAAU,CAAC;QACf,IAAI;YACF,UAAU,GAAG,IAAA,cAAW,EAAC,kCAAkC,EAAE,EAAE,OAAO,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;SACtF;QAAC,OAAO,GAAG,EAAE,GAAE;QAChB,IAAI,UAAU,EAAE;YACd,IAAI,IAAI,GAAG,IAAA,aAAQ,EAAC,UAAU,CAAC,CAAC;YAChC,OAAO;gBACL,IAAI,EAAE,SAAS;gBACf,YAAY,EAAE,WAAW;gBACzB,UAAU;gBACV,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE;gBAC3B,IAAI,EAAE,IAAI,CAAC,IAAI;aAChB,CAAC;SACH;IACH,CAAC;IAED,gBAAgB;QACd,IAAI,IAAI,CAAC,UAAU,CAAC,WAAW,EAAE;YAC/B,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;SAC3C;QACD,OAAO,EAAE,CAAC;IACZ,CAAC;IAGD,mBAAmB,CAAC,MAAe,IAAI,CAAC,UAAU;QAChD,IAAI,MAAM,GAAI,GAAG,CAAC,YAAY,CAAC,MAAM,CAAC,IAAI,CAAC,aAAa,CAAoB,CAAC,MAAM;QACjF,yEAAyE;QACzE,wEAAwE;QACxE,0EAA0E;QAC1E,YAAY;QACZ,KAAK,CAAC,EAAE,eAAC,OAAA,CAAA,MAAA,GAAG,CAAC,WAAW,CAAC,YAAY,0CAAG,KAAK,CAAC,IAAI,CAAC,MAAI,MAAA,GAAG,CAAC,WAAW,CAAC,eAAe,0CAAG,KAAK,CAAC,IAAI,CAAC,CAAA,CAAA,EAAA,CACrG,CAAC;QACF,IAAI,GAAG,KAAK,IAAI,CAAC,UAAU,EAAE;YAC3B,IAAI,MAAM,GAAG,CAAC,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,aAAa,CAAmB,CAAC;YAC/F,MAAM,GAAG,CAAC,GAAG,MAAM,EAAE,GAAG,MAAM,CAAC,CAAC;SACjC;QACD,OAAO,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;IACvC,CAAC;IAGD,IAAI,eAAe;QACjB,IAAI,MAAM,GAAG,IAAI,CAAC,UAAU,CAAC,eAAe,CAAC,IAAI,CAAC,aAAa,CAAmB,CAAC;QACnF,IAAI,MAAM,GAAG,CAAC,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,aAAa,CAAmB,CAAC;QAC/F,IAAI,gBAAgB,GAAG,IAAA,iBAAO,EAAC,MAAM,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,eAAe,CAAC,IAAI,CAAC,aAAa,CAAC,CAAmB,CAAC;QACzG,MAAM,GAAG,CAAC,GAAG,MAAM,EAAE,GAAG,MAAM,EAAE,GAAG,gBAAgB,CAAC,CAAC;QACrD,OAAO,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;IACvC,CAAC;IAGO,aAAa,CAAC,GAAY;QAChC,sCAAsC;QACtC,OAAO,GAAG,CAAC,cAAc,EAAE,CAAC;IAC9B,CAAC;IAGO,WAAW,CAAC,IAAa,EAAE,IAAa;QAC9C,IAAI,OAAO,GAAG,CAAC,CAAC;QAChB,IAAI,OAAO,GAAG,CAAC,CAAC;QAEhB,IAAI,IAAI,IAAI,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,SAAS,EAAE,EAAE;YACzC,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;SACzC;QACD,IAAI,IAAI,IAAI,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,SAAS,EAAE,EAAE;YACzC,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;SACzC;QAED,OAAO,OAAO,GAAG,OAAO,CAAC;IAC3B,CAAC;IAGD,oBAAoB;QAClB,uEAAuE;QACvE,0EAA0E;QAC1E,8BAA8B;QAC9B,EAAE;QACF,2DAA2D;QAC3D,0DAA0D;QAC1D,uBAAuB;QACvB,OAAO,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,SAAS,CAAC,CAAC;IACrE,CAAC;IAEO,CAAC,gBAAgB,CAAC,YAAoB;QAC5C,IAAI,kBAAkB,GAAG;YACvB,EAAE,UAAU,EAAE,YAAY,EAAE,YAAY,EAAE,KAAK,EAAE;YACjD,EAAE,UAAU,EAAE,kBAAkB,EAAE,YAAY,EAAE,IAAI,EAAE;SACvD,CAAC;QACF,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,gBAAgB,EAAE;YACrC,kBAAkB,CAAC,GAAG,EAAE,CAAC;SAC1B;QACD,KAAK,IAAI,EAAE,UAAU,EAAE,YAAY,EAAE,IAAI,kBAAkB,EAAE;YAC3D,IAAI,UAAU,GAAG,IAAA,WAAI,EAAC,YAAY,EAAE,UAAU,CAAC,CAAC;YAChD,IAAI,KAAK,GAAG,IAAA,aAAQ,EAAC,UAAU,CAAC,CAAC;YACjC,IAAI,KAAK,GAAe;gBACtB,IAAI,EAAE,OAAO;gBACb,YAAY,EAAE,UAAU;gBACxB,YAAY;gBACZ,UAAU;gBACV,KAAK,EAAE,KAAK,CAAC,KAAK,CAAC,OAAO,EAAE;gBAC5B,IAAI,EAAE,KAAK,CAAC,IAAI;gBAChB,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE;gBACvB,OAAO,EAAE,CAAC,GAAU,EAAE,EAAE;oBACtB,IAAI,OAAO,GAAG,CAAC,GAAG,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC,gBAAgB,CAAC,QAAQ,CAAC,CAAC,CAAC;oBAClE,IAAI,MAAM,GAAG,CAAC,GAAG,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC,gBAAgB,CAAC,wBAAwB,CAAC,CAAsB,CAAC;oBAEtG,OAAO;wBACL,UAAU,EAAE,iBAAiB,CAAC,GAAG,EAAE,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC;wBACtF,MAAM,EAAE,iBAAiB,CAAC,GAAG,EAAE,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;wBACjF,eAAe,EAAE,iBAAiB,CAAC,GAAG,EAAE,IAAI,CAAC,UAAU,CAAC,gBAAgB,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC;wBAC9F,cAAc,EAAE,iBAAiB,CAAC,GAAG,EAAE,IAAI,CAAC,UAAU,CAAC,gBAAgB,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;wBAC5F,cAAc,EAAE,YAAY,CAAC,GAAG,EAAE,IAAI,CAAC,UAAU,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC;wBAC1E,mBAAmB,EAAE,YAAY,CAAC,GAAG,EAAE,IAAI,CAAC,UAAU,CAAC,qBAAqB,CAAC,OAAO,CAAC,CAAC;wBACtF,kBAAkB,EAAE,YAAY,CAAC,GAAG,EAAE,IAAI,CAAC,UAAU,CAAC,qBAAqB,CAAC,MAAM,CAAC,CAAC;qBACrF,CAAC;gBACJ,CAAC;aACF,CAAC;YACF,MAAM,KAAK,CAAC;SACb;IACH,CAAC;IAED,OAAO;QACL,OAAO,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC;IACjC,CAAC;IAED,OAAO;QACL,OAAO,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC;IAC/C,CAAC;IAED,UAAU;QACR,OAAO,KAAK,CAAC;IACf,CAAC;IAED,gBAAgB;QACd,OAAO,IAAI,CAAC,UAAU,CAAC,UAAU,EAAE,CAAC,GAAG,CAAC;IAC1C,CAAC;IAED,QAAQ;QACN,OAAO,IAAI,CAAC,UAAU,CAAC,UAAU,EAAE,CAAC,QAAQ,CAAC;IAC/C,CAAC;IAED,YAAY;QACV,OAAO,IAAI,CAAC,UAAU,CAAC,UAAU,EAAE,CAAC,YAAY,CAAC;IACnD,CAAC;IAED,eAAe;QACb,OAAO,IAAI,CAAC,UAAU,CAAC,UAAU,EAAE,CAAC,eAAe,CAAC;IACtD,CAAC;IAED,OAAO;QACL,OAAO,IAAI,CAAC,UAAU,CAAC,UAAU,EAAE,CAAC,OAAO,CAAC;IAC9C,CAAC;IAED,oBAAoB;QAClB,OAAO,mDAAmD,CAAC;IAC7D,CAAC;IAED,cAAc;QACZ,OAAO,KAAK,CAAC;IACf,CAAC;IAGO,WAAW;QACjB,OAAO,IAAA,qCAAkB,EAAC,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,MAAM,CAAC,wBAAwB,EAAE,CAAC,EAAE;YACtF,IAAI,CAAC,UAAU;YACf,GAAG,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;SAC7D,CAAC,CAAC;IACL,CAAC;IAED,aAAa,CAAC,cAAqC;QACjD,IACE,IAAI,CAAC,OAAO,CAAC,gBAAgB;YAC7B,IAAI,CAAC,OAAO,CAAC,aAAa;YAC1B,IAAI,CAAC,OAAO,CAAC,eAAe;YAC3B,UAAkB,CAAC,eAAe,EACnC;YACA,IAAI,IAAI,GAA6B;gBACnC,OAAO,EAAE,cAAc,CAAC,OAAO;aAChC,CAAC;YACF,OAAO,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,sBAAsB,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC;SAC1D;aAAM;YACL,OAAO,EAAE,CAAC;SACX;IACH,CAAC;IAED,SAAS,CAAC,cAAqC;QAC7C,IAAI,YAAY,GAAyB;YACvC,OAAO,EAAE,cAAc,CAAC,OAAO;SAChC,CAAC;QACF,OAAO,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,+BAA+B,CAAC,EAAE,YAAY,CAAC,CAAC,CAAC;IAC5E,CAAC;IAED,cAAc,CAAC,OAAiB;QAC9B,IAAI,cAAc,GAAG,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,GAAG,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC;QACzG,IAAI,aAAa,GAAG,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,GAAG,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC;QAEvG,IAAI,YAAY,GAA0C,EAAE,CAAC;QAC7D,KAAK,IAAI,KAAK,IAAI,IAAI,CAAC,eAAe,EAAE;YACtC,YAAY,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC,IAAI,CAAC;SACvC;QAED,IAAI,cAAc,GAA4C,EAAE,CAAC;QACjE,KAAK,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,IAAI,OAAO,EAAE;YAC1C,KAAK,IAAI,CAAC,YAAY,EAAE,YAAY,CAAC,IAAI,QAAQ,CAAC,cAAc,EAAE;gBAChE,cAAc,CAAC,IAAA,WAAI,EAAC,QAAQ,EAAE,YAAY,CAAC,CAAC,GAAG,YAAY,CAAC;aAC7D;SACF;QAED,IAAI,MAAM,GAA0B;YAClC,6EAA6E;YAC7E,YAAY;YACZ,aAAa;YACb,cAAc;YACd,cAAc;YACd,oBAAoB,EAAE,IAAI,CAAC,oBAAoB,EAAE;YACjD,OAAO,EAAE,IAAI,CAAC,IAAI;YAClB,OAAO,EAAE,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;gBAC9B,WAAW,EAAE,MAAM,CAAC,OAAO,CAAC,IAAI;gBAChC,IAAI,EAAE,IAAI,CAAC,IAAI;gBACf,YAAY,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC;qBAC7B,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;oBACT,IAAI,EAAE,CAAC,CAAC,IAAI;oBACZ,IAAI,EAAE,CAAC,CAAC,IAAI;iBACb,CAAC,CAAC;oBACH,oEAAoE;oBACpE,+DAA+D;oBAC/D,6BAA6B;qBAC5B,OAAO,EAAE;aACb,CAAC,CAAC;YAEH,yEAAyE;YACzE,4BAA4B;YAC5B,YAAY,EAAE,IAAI,CAAC,YAAY,EAAE;YACjC,eAAe,EAAE,IAAI,CAAC,eAAe,EAAE;YACvC,OAAO,EAAE,IAAI,CAAC,OAAO;YACrB,kBAAkB,EAAE,IAAI,CAAC,WAAW,EAAE;SACvC,CAAC;QAEF,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,eAAe;QACb,OAAO,IAAI,CAAC,UAAU,CAAC,eAAe,CAAC;IACzC,CAAC;IAED,iBAAiB;QACf,OAAO,IAAI,CAAC,UAAU,CAAC,iBAAiB,EAAE,CAAC;IAC7C,CAAC;IAED,WAAW;QACT,OAAO,IAAI,CAAC,UAAU,CAAC,WAAW,EAAE,CAAC;IACvC,CAAC;CACF;AA3SC;IADC,IAAA,4BAAO,GAAE;wDAMT;AA2CD;IADC,IAAA,4BAAO,GAAE;uDAgBT;AAUD;IADC,IAAA,4BAAO,GAAE;2DAcT;AAGD;IADC,IAAA,4BAAO,GAAE;uDAOT;AAGD;IADC,wBAAI;qDAIJ;AAGD;IADC,wBAAI;mDAaJ;AAGD;IADC,IAAA,4BAAO,GAAE;4DAUT;AAiFD;IADC,IAAA,4BAAO,GAAE;mDAMT;AAuFH,MAAqB,SAAU,SAAQ,iBAAqB;IAC1D,YAAY,sBAA8B,EAAE,MAAa,EAAE,OAAiB;QAC1E,IAAI,EAAE,OAAO,EAAE,WAAW,EAAE,GAAG,KAAK,CAAC,sBAAsB,EAAE,IAAA,6BAAmB,EAAC,OAAO,CAAC,CAAC,CAAC;QAC3F,KAAK,CAAC,MAAM,EAAE,OAAO,EAAE,uBAAuB,EAAE,WAAW,CAAC,CAAC;IAC/D,CAAC;CACF;AALD,4BAKC;AAED,SAAS,YAAY,CAAC,GAAU,EAAE,OAA4B;IAC5D,IAAI,OAAO,EAAE;QACX,OAAO,iBAAiB,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;KACxC;AACH,CAAC;AAED,SAAS,iBAAiB,CAAC,GAAU,EAAE,OAAgB;IACrD,IAAI,WAAW,GAAG,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC,cAAc,CAAC,EAAE,CAAC,CAAC;IACzD,OAAO,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC;IACjC,OAAO,WAAW,CAAC;AACrB,CAAC;AAED,SAAS,wBAAwB;IAC/B,OAAO,IAAA,gBAAW,EAAC,IAAA,WAAI,EAAC,SAAS,EAAE,wBAAwB,CAAC,CAAC;SAC1D,GAAG,CAAC,QAAQ,CAAC,EAAE;QACd,IAAI,QAAQ,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE;YAC5B,iEAAiE;YACjE,OAAO,OAAO,CAAC,IAAA,WAAI,EAAC,SAAS,EAAE,wBAAwB,EAAE,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC;SAC7E;IACH,CAAC,CAAC;SACD,MAAM,CAAC,OAAO,CAAC;SACf,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;AACvC,CAAC","sourcesContent":["import { Node as BroccoliNode } from 'broccoli-node-api';\nimport mergeTrees from 'broccoli-merge-trees';\nimport {\n Stage,\n PackageCache,\n OutputPaths,\n BuildStage,\n Asset,\n EmberAsset,\n AppAdapter,\n AppBuilder,\n EmberENV,\n Package,\n AddonPackage,\n Engine,\n} from '@embroider/core';\nimport V1InstanceCache from './v1-instance-cache';\nimport V1App from './v1-app';\nimport walkSync from 'walk-sync';\nimport { join } from 'path';\nimport { JSDOM } from 'jsdom';\nimport { V1Config } from './v1-config';\nimport { statSync, readdirSync } from 'fs';\nimport Options, { optionsWithDefaults } from './options';\nimport { CompatResolverOptions } from './resolver-transform';\nimport { activePackageRules, PackageRules } from './dependency-rules';\nimport flatMap from 'lodash/flatMap';\nimport { Memoize } from 'typescript-memoize';\nimport { sync as resolveSync } from 'resolve';\nimport { MacrosConfig } from '@embroider/macros/src/node';\nimport bind from 'bind-decorator';\nimport { pathExistsSync } from 'fs-extra';\nimport type { Transform } from 'babel-plugin-ember-template-compilation';\nimport type { Options as ResolverTransformOptions } from './resolver-transform';\nimport type { Options as AdjustImportsOptions } from './babel-plugin-adjust-imports';\nimport type { PluginItem } from '@babel/core';\n\ninterface TreeNames {\n appJS: BroccoliNode;\n htmlTree: BroccoliNode;\n publicTree: BroccoliNode | undefined;\n configTree: BroccoliNode;\n}\n\n// This runs at broccoli-pipeline-construction time, whereas our actual\n// CompatAppAdapter instance only becomes available during tree-building\n// time.\nfunction setup(legacyEmberAppInstance: object, options: Required<Options>) {\n let oldPackage = V1InstanceCache.forApp(legacyEmberAppInstance, options).app;\n\n let { appJS } = oldPackage.processAppJS();\n let htmlTree = oldPackage.htmlTree;\n let publicTree = oldPackage.publicTree;\n let configTree = oldPackage.config;\n let appBootTree = oldPackage.appBoot;\n\n if (options.extraPublicTrees.length > 0) {\n publicTree = mergeTrees([publicTree, ...options.extraPublicTrees].filter(Boolean) as BroccoliNode[]);\n }\n\n let inTrees = {\n appJS,\n htmlTree,\n publicTree,\n configTree,\n appBootTree,\n };\n\n let instantiate = async (root: string, appSrcDir: string, packageCache: PackageCache) => {\n let appPackage = packageCache.get(appSrcDir);\n let adapter = new CompatAppAdapter(\n root,\n appPackage,\n options,\n oldPackage,\n configTree,\n packageCache.get(join(root, 'node_modules', '@embroider', 'synthesized-vendor')),\n packageCache.get(join(root, 'node_modules', '@embroider', 'synthesized-styles'))\n );\n\n return new AppBuilder<TreeNames>(\n root,\n appPackage,\n adapter,\n options,\n MacrosConfig.for(legacyEmberAppInstance, appSrcDir)\n );\n };\n\n return { inTrees, instantiate };\n}\n\nclass CompatAppAdapter implements AppAdapter<TreeNames, CompatResolverOptions> {\n constructor(\n private root: string,\n private appPackage: Package,\n private options: Required<Options>,\n private oldPackage: V1App,\n private configTree: V1Config,\n private synthVendor: Package,\n private synthStyles: Package\n ) {}\n\n appJSSrcDir(treePaths: OutputPaths<TreeNames>) {\n return treePaths.appJS;\n }\n\n @Memoize()\n fastbootJSSrcDir(_treePaths: OutputPaths<TreeNames>) {\n let target = join(this.oldPackage.root, 'fastboot');\n if (pathExistsSync(target)) {\n return target;\n }\n }\n\n get env() {\n return this.oldPackage.env;\n }\n\n assets(treePaths: OutputPaths<TreeNames>): Asset[] {\n let assets: Asset[] = [];\n\n // Everything in our traditional public tree is an on-disk asset\n if (treePaths.publicTree) {\n walkSync\n .entries(treePaths.publicTree, {\n directories: false,\n })\n .forEach(entry => {\n assets.push({\n kind: 'on-disk',\n relativePath: entry.relativePath,\n sourcePath: entry.fullPath,\n mtime: entry.mtime as unknown as number, // https://github.com/joliss/node-walk-sync/pull/38\n size: entry.size,\n });\n });\n }\n\n // ember-cli traditionally outputs a dummy testem.js file to prevent\n // spurious errors when running tests under \"ember s\".\n if (this.oldPackage.shouldBuildTests) {\n let testemAsset = this.findTestemAsset();\n if (testemAsset) {\n assets.push(testemAsset);\n }\n }\n\n for (let asset of this.emberEntrypoints(treePaths.htmlTree)) {\n assets.push(asset);\n }\n\n return assets;\n }\n\n @Memoize()\n findTestemAsset(): Asset | undefined {\n let sourcePath;\n try {\n sourcePath = resolveSync('ember-cli/lib/broccoli/testem.js', { basedir: this.root });\n } catch (err) {}\n if (sourcePath) {\n let stat = statSync(sourcePath);\n return {\n kind: 'on-disk',\n relativePath: 'testem.js',\n sourcePath,\n mtime: stat.mtime.getTime(),\n size: stat.size,\n };\n }\n }\n\n developingAddons(): string[] {\n if (this.oldPackage.owningAddon) {\n return [this.oldPackage.owningAddon.root];\n }\n return [];\n }\n\n @Memoize()\n activeAddonChildren(pkg: Package = this.appPackage): AddonPackage[] {\n let result = (pkg.dependencies.filter(this.isActiveAddon) as AddonPackage[]).filter(\n // When looking for child addons, we want to ignore 'peerDependencies' of\n // a given package, to align with how ember-cli resolves addons. So here\n // we only include dependencies that definitely appear in one of the other\n // sections.\n addon => pkg.packageJSON.dependencies?.[addon.name] || pkg.packageJSON.devDependencies?.[addon.name]\n );\n if (pkg === this.appPackage) {\n let extras = [this.synthVendor, this.synthStyles].filter(this.isActiveAddon) as AddonPackage[];\n result = [...result, ...extras];\n }\n return result.sort(this.orderAddons);\n }\n\n @Memoize()\n get allActiveAddons(): AddonPackage[] {\n let result = this.appPackage.findDescendants(this.isActiveAddon) as AddonPackage[];\n let extras = [this.synthVendor, this.synthStyles].filter(this.isActiveAddon) as AddonPackage[];\n let extraDescendants = flatMap(extras, dep => dep.findDescendants(this.isActiveAddon)) as AddonPackage[];\n result = [...result, ...extras, ...extraDescendants];\n return result.sort(this.orderAddons);\n }\n\n @bind\n private isActiveAddon(pkg: Package): boolean {\n // todo: filter by addon-provided hook\n return pkg.isEmberPackage();\n }\n\n @bind\n private orderAddons(depA: Package, depB: Package): number {\n let depAIdx = 0;\n let depBIdx = 0;\n\n if (depA && depA.meta && depA.isV2Addon()) {\n depAIdx = depA.meta['order-index'] || 0;\n }\n if (depB && depB.meta && depB.isV2Addon()) {\n depBIdx = depB.meta['order-index'] || 0;\n }\n\n return depAIdx - depBIdx;\n }\n\n @Memoize()\n resolvableExtensions(): string[] {\n // webpack's default is ['.wasm', '.mjs', '.js', '.json']. Keeping that\n // subset in that order is sensible, since many third-party libraries will\n // expect it to work that way.\n //\n // For TS, we defer to ember-cli-babel, and the setting for\n // \"enableTypescriptTransform\" can be set with and without\n // ember-cli-typescript\n return ['.wasm', '.mjs', '.js', '.json', '.ts', '.hbs', '.hbs.js'];\n }\n\n private *emberEntrypoints(htmlTreePath: string): IterableIterator<Asset> {\n let classicEntrypoints = [\n { entrypoint: 'index.html', includeTests: false },\n { entrypoint: 'tests/index.html', includeTests: true },\n ];\n if (!this.oldPackage.shouldBuildTests) {\n classicEntrypoints.pop();\n }\n for (let { entrypoint, includeTests } of classicEntrypoints) {\n let sourcePath = join(htmlTreePath, entrypoint);\n let stats = statSync(sourcePath);\n let asset: EmberAsset = {\n kind: 'ember',\n relativePath: entrypoint,\n includeTests,\n sourcePath,\n mtime: stats.mtime.getTime(),\n size: stats.size,\n rootURL: this.rootURL(),\n prepare: (dom: JSDOM) => {\n let scripts = [...dom.window.document.querySelectorAll('script')];\n let styles = [...dom.window.document.querySelectorAll('link[rel=\"stylesheet\"]')] as HTMLLinkElement[];\n\n return {\n javascript: definitelyReplace(dom, this.oldPackage.findAppScript(scripts, entrypoint)),\n styles: definitelyReplace(dom, this.oldPackage.findAppStyles(styles, entrypoint)),\n implicitScripts: definitelyReplace(dom, this.oldPackage.findVendorScript(scripts, entrypoint)),\n implicitStyles: definitelyReplace(dom, this.oldPackage.findVendorStyles(styles, entrypoint)),\n testJavascript: maybeReplace(dom, this.oldPackage.findTestScript(scripts)),\n implicitTestScripts: maybeReplace(dom, this.oldPackage.findTestSupportScript(scripts)),\n implicitTestStyles: maybeReplace(dom, this.oldPackage.findTestSupportStyles(styles)),\n };\n },\n };\n yield asset;\n }\n }\n\n autoRun(): boolean {\n return this.oldPackage.autoRun;\n }\n\n appBoot(): string | undefined {\n return this.oldPackage.appBoot.readAppBoot();\n }\n\n mainModule(): string {\n return 'app';\n }\n\n mainModuleConfig(): unknown {\n return this.configTree.readConfig().APP;\n }\n\n emberENV(): EmberENV {\n return this.configTree.readConfig().EmberENV;\n }\n\n modulePrefix(): string {\n return this.configTree.readConfig().modulePrefix;\n }\n\n podModulePrefix(): string | undefined {\n return this.configTree.readConfig().podModulePrefix;\n }\n\n rootURL(): string {\n return this.configTree.readConfig().rootURL;\n }\n\n templateCompilerPath(): string {\n return 'ember-source/vendor/ember/ember-template-compiler';\n }\n\n strictV2Format() {\n return false;\n }\n\n @Memoize()\n private activeRules() {\n return activePackageRules(this.options.packageRules.concat(defaultAddonPackageRules()), [\n this.appPackage,\n ...this.allActiveAddons.filter(p => p.meta['auto-upgraded']),\n ]);\n }\n\n hbsTransforms(resolverConfig: CompatResolverOptions): Transform[] {\n if (\n this.options.staticComponents ||\n this.options.staticHelpers ||\n this.options.staticModifiers ||\n (globalThis as any).embroider_audit\n ) {\n let opts: ResolverTransformOptions = {\n appRoot: resolverConfig.appRoot,\n };\n return [[require.resolve('./resolver-transform'), opts]];\n } else {\n return [];\n }\n }\n\n jsPlugins(resolverConfig: CompatResolverOptions): PluginItem[] {\n let pluginConfig: AdjustImportsOptions = {\n appRoot: resolverConfig.appRoot,\n };\n return [[require.resolve('./babel-plugin-adjust-imports'), pluginConfig]];\n }\n\n resolverConfig(engines: Engine[]): CompatResolverOptions {\n let renamePackages = Object.assign({}, ...this.allActiveAddons.map(dep => dep.meta['renamed-packages']));\n let renameModules = Object.assign({}, ...this.allActiveAddons.map(dep => dep.meta['renamed-modules']));\n\n let activeAddons: CompatResolverOptions['activeAddons'] = {};\n for (let addon of this.allActiveAddons) {\n activeAddons[addon.name] = addon.root;\n }\n\n let relocatedFiles: CompatResolverOptions['relocatedFiles'] = {};\n for (let { destPath, appFiles } of engines) {\n for (let [relativePath, originalPath] of appFiles.relocatedFiles) {\n relocatedFiles[join(destPath, relativePath)] = originalPath;\n }\n }\n\n let config: CompatResolverOptions = {\n // this part is the base ModuleResolverOptions as required by @embroider/core\n activeAddons,\n renameModules,\n renamePackages,\n relocatedFiles,\n resolvableExtensions: this.resolvableExtensions(),\n appRoot: this.root,\n engines: engines.map(engine => ({\n packageName: engine.package.name,\n root: this.root,\n activeAddons: [...engine.addons]\n .map(a => ({\n name: a.name,\n root: a.root,\n }))\n // the traditional order is the order in which addons will run, such\n // that the last one wins. Our resolver's order is the order to\n // search, so first one wins.\n .reverse(),\n })),\n\n // this is the additional stufff that @embroider/compat adds on top to do\n // global template resolving\n modulePrefix: this.modulePrefix(),\n podModulePrefix: this.podModulePrefix(),\n options: this.options,\n activePackageRules: this.activeRules(),\n };\n\n return config;\n }\n\n htmlbarsPlugins(): Transform[] {\n return this.oldPackage.htmlbarsPlugins;\n }\n\n babelMajorVersion() {\n return this.oldPackage.babelMajorVersion();\n }\n\n babelConfig() {\n return this.oldPackage.babelConfig();\n }\n}\n\nexport default class CompatApp extends BuildStage<TreeNames> {\n constructor(legacyEmberAppInstance: object, addons: Stage, options?: Options) {\n let { inTrees, instantiate } = setup(legacyEmberAppInstance, optionsWithDefaults(options));\n super(addons, inTrees, '@embroider/compat/app', instantiate);\n }\n}\n\nfunction maybeReplace(dom: JSDOM, element: Element | undefined): Node | undefined {\n if (element) {\n return definitelyReplace(dom, element);\n }\n}\n\nfunction definitelyReplace(dom: JSDOM, element: Element): Node {\n let placeholder = dom.window.document.createTextNode('');\n element.replaceWith(placeholder);\n return placeholder;\n}\n\nfunction defaultAddonPackageRules(): PackageRules[] {\n return readdirSync(join(__dirname, 'addon-dependency-rules'))\n .map(filename => {\n if (filename.endsWith('.js')) {\n // eslint-disable-next-line @typescript-eslint/no-require-imports\n return require(join(__dirname, 'addon-dependency-rules', filename)).default;\n }\n })\n .filter(Boolean)\n .reduce((a, b) => a.concat(b), []);\n}\n"]}
|
|
@@ -6,5 +6,5 @@ export interface PipelineOptions<PackagerOptions> extends Options {
|
|
|
6
6
|
onOutputPath?: (outputPath: string) => void;
|
|
7
7
|
variants?: Variant[];
|
|
8
8
|
}
|
|
9
|
-
export declare function stableWorkspaceDir(appRoot: string): string;
|
|
9
|
+
export declare function stableWorkspaceDir(appRoot: string, environment: string): string;
|
|
10
10
|
export default function defaultPipeline<PackagerOptions>(emberApp: EmberAppInstance, packager?: PackagerConstructor<PackagerOptions>, options?: PipelineOptions<PackagerOptions>): Node;
|
package/src/default-pipeline.js
CHANGED
|
@@ -12,9 +12,10 @@ const broccoli_merge_trees_1 = __importDefault(require("broccoli-merge-trees"));
|
|
|
12
12
|
const crypto_1 = require("crypto");
|
|
13
13
|
const path_1 = require("path");
|
|
14
14
|
const pkg_up_1 = require("pkg-up");
|
|
15
|
-
function stableWorkspaceDir(appRoot) {
|
|
15
|
+
function stableWorkspaceDir(appRoot, environment) {
|
|
16
16
|
let hash = (0, crypto_1.createHash)('md5');
|
|
17
17
|
hash.update((0, path_1.dirname)((0, pkg_up_1.sync)({ cwd: appRoot })));
|
|
18
|
+
hash.update(environment);
|
|
18
19
|
return (0, path_1.join)(core_2.tmpdir, 'embroider', hash.digest('hex').slice(0, 6));
|
|
19
20
|
}
|
|
20
21
|
exports.stableWorkspaceDir = stableWorkspaceDir;
|
|
@@ -29,7 +30,7 @@ function defaultPipeline(emberApp, packager, options = {}) {
|
|
|
29
30
|
options.workspaceDir = process.env.SAVE_WORKSPACE;
|
|
30
31
|
}
|
|
31
32
|
else {
|
|
32
|
-
options.workspaceDir = stableWorkspaceDir(emberApp.project.root);
|
|
33
|
+
options.workspaceDir = stableWorkspaceDir(emberApp.project.root, emberApp.env);
|
|
33
34
|
}
|
|
34
35
|
emberApp.project.ui.write(`Building into ${options.workspaceDir}\n`);
|
|
35
36
|
addons = new _1.Addons(emberApp, options);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"default-pipeline.js","sourceRoot":"","sources":["default-pipeline.ts"],"names":[],"mappings":";;;;;;AAAA,wBAAyE;AACzE,0CAAmG;AACnG,0CAAyC;AAEzC,kFAA8C;AAC9C,gFAA8C;AAC9C,mCAAoC;AACpC,+BAAqC;AACrC,mCAA2C;AAQ3C,SAAgB,kBAAkB,CAAC,OAAe;
|
|
1
|
+
{"version":3,"file":"default-pipeline.js","sourceRoot":"","sources":["default-pipeline.ts"],"names":[],"mappings":"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","sourcesContent":["import { App, Addons as CompatAddons, Options, PrebuiltAddons } from '.';\nimport { toBroccoliPlugin, PackagerConstructor, Variant, EmberAppInstance } from '@embroider/core';\nimport { tmpdir } from '@embroider/core';\nimport { Node } from 'broccoli-node-api';\nimport writeFile from 'broccoli-file-creator';\nimport mergeTrees from 'broccoli-merge-trees';\nimport { createHash } from 'crypto';\nimport { join, dirname } from 'path';\nimport { sync as pkgUpSync } from 'pkg-up';\n\nexport interface PipelineOptions<PackagerOptions> extends Options {\n packagerOptions?: PackagerOptions;\n onOutputPath?: (outputPath: string) => void;\n variants?: Variant[];\n}\n\nexport function stableWorkspaceDir(appRoot: string, environment: string) {\n let hash = createHash('md5');\n hash.update(dirname(pkgUpSync({ cwd: appRoot })!));\n hash.update(environment);\n return join(tmpdir, 'embroider', hash.digest('hex').slice(0, 6));\n}\n\nexport default function defaultPipeline<PackagerOptions>(\n emberApp: EmberAppInstance,\n packager?: PackagerConstructor<PackagerOptions>,\n options: PipelineOptions<PackagerOptions> = {}\n): Node {\n let outputPath: string;\n let addons;\n\n if (process.env.REUSE_WORKSPACE) {\n addons = new PrebuiltAddons(emberApp, options, process.env.REUSE_WORKSPACE);\n } else {\n if (process.env.SAVE_WORKSPACE) {\n options.workspaceDir = process.env.SAVE_WORKSPACE;\n } else {\n options.workspaceDir = stableWorkspaceDir(emberApp.project.root, emberApp.env);\n }\n\n emberApp.project.ui.write(`Building into ${options.workspaceDir}\\n`);\n addons = new CompatAddons(emberApp, options);\n addons.ready().then(result => {\n outputPath = result.outputPath;\n });\n }\n\n if (process.env.STAGE1_ONLY) {\n return mergeTrees([addons.tree, writeFile('.stage1-output', () => outputPath)]);\n }\n\n let embroiderApp = new App(emberApp, addons, options);\n\n if (process.env.STAGE2_ONLY || !packager) {\n return mergeTrees([embroiderApp.tree, writeFile('.stage2-output', () => outputPath)]);\n }\n\n let BroccoliPackager = toBroccoliPlugin(packager);\n let variants = (options && options.variants) || defaultVariants(emberApp);\n return new BroccoliPackager(embroiderApp, variants, options && options.packagerOptions);\n}\n\nfunction hasFastboot(emberApp: EmberAppInstance | EmberAppInstance) {\n return emberApp.project.addons.find(a => a.name === 'ember-cli-fastboot');\n}\n\nfunction defaultVariants(emberApp: EmberAppInstance): Variant[] {\n let variants: Variant[] = [];\n if (emberApp.env === 'production') {\n variants.push({\n name: 'browser',\n runtime: 'browser',\n optimizeForProduction: true,\n });\n if (hasFastboot(emberApp)) {\n variants.push({\n name: 'fastboot',\n runtime: 'fastboot',\n optimizeForProduction: true,\n });\n }\n } else {\n variants.push({\n name: 'dev',\n runtime: hasFastboot(emberApp) ? 'all' : 'browser',\n optimizeForProduction: false,\n });\n }\n return variants;\n}\n"]}
|