@embroider/compat 3.5.6-unstable.26f34c4 → 3.5.6
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 +6 -6
- package/src/audit/babel-visitor.js +1 -7
- package/src/audit/babel-visitor.js.map +1 -1
- package/src/audit.d.ts +53 -6
- package/src/audit.js +276 -92
- package/src/audit.js.map +1 -1
- package/src/babel-plugin-adjust-imports.js +1 -1
- package/src/babel-plugin-adjust-imports.js.map +1 -1
- package/src/compat-adapters/@ember-data/debug.d.ts +6 -0
- package/src/compat-adapters/@ember-data/debug.js +22 -0
- package/src/compat-adapters/@ember-data/debug.js.map +1 -0
- package/src/compat-adapters/@ember-data/store.d.ts +5 -1
- package/src/compat-adapters/@ember-data/store.js +15 -3
- package/src/compat-adapters/@ember-data/store.js.map +1 -1
- package/src/compat-addons.js +1 -1
- package/src/compat-addons.js.map +1 -1
- package/src/compat-app-builder.d.ts +31 -9
- package/src/compat-app-builder.js +856 -101
- package/src/compat-app-builder.js.map +1 -1
- package/src/compat-app.d.ts +10 -2
- package/src/compat-app.js +73 -52
- package/src/compat-app.js.map +1 -1
- package/src/default-pipeline.d.ts +2 -2
- package/src/default-pipeline.js +0 -21
- package/src/default-pipeline.js.map +1 -1
- package/src/empty-package-tree.js +6 -0
- package/src/empty-package-tree.js.map +1 -1
- package/src/index.d.ts +1 -1
- package/src/index.js +1 -2
- package/src/index.js.map +1 -1
- package/src/options.d.ts +0 -2
- package/src/options.js +0 -2
- package/src/options.js.map +1 -1
- package/src/resolver-transform.js +0 -3
- package/src/resolver-transform.js.map +1 -1
- package/src/standalone-addon-build.js +4 -4
- package/src/standalone-addon-build.js.map +1 -1
- package/src/v1-appboot.d.ts +14 -0
- package/src/v1-appboot.js +47 -0
- package/src/v1-appboot.js.map +1 -0
- package/src/v1-config.d.ts +8 -0
- package/src/v1-config.js +51 -1
- package/src/v1-config.js.map +1 -1
- package/src/compat-adapters/ember-fetch.d.ts +0 -5
- package/src/compat-adapters/ember-fetch.js +0 -19
- package/src/compat-adapters/ember-fetch.js.map +0 -1
- package/src/content-for-config.d.ts +0 -11
- package/src/content-for-config.js +0 -66
- package/src/content-for-config.js.map +0 -1
- package/src/http-audit.d.ts +0 -13
- package/src/http-audit.js +0 -45
- package/src/http-audit.js.map +0 -1
- package/src/module-visitor.d.ts +0 -52
- package/src/module-visitor.js +0 -285
- package/src/module-visitor.js.map +0 -1
package/src/compat-app.js
CHANGED
|
@@ -18,8 +18,8 @@ const broccoli_funnel_1 = __importDefault(require("broccoli-funnel"));
|
|
|
18
18
|
const broccoli_merge_trees_1 = __importDefault(require("broccoli-merge-trees"));
|
|
19
19
|
const broccoli_source_1 = require("broccoli-source");
|
|
20
20
|
const resolve_1 = __importDefault(require("resolve"));
|
|
21
|
-
const content_for_config_1 = __importDefault(require("./content-for-config"));
|
|
22
21
|
const v1_config_1 = require("./v1-config");
|
|
22
|
+
const v1_appboot_1 = require("./v1-appboot");
|
|
23
23
|
const fs_extra_1 = require("fs-extra");
|
|
24
24
|
const add_to_tree_1 = __importDefault(require("./add-to-tree"));
|
|
25
25
|
const dummy_package_1 = __importDefault(require("./dummy-package"));
|
|
@@ -27,12 +27,12 @@ const node_1 = require("@embroider/macros/src/node");
|
|
|
27
27
|
const resolve_package_path_1 = __importDefault(require("resolve-package-path"));
|
|
28
28
|
const broccoli_concat_1 = __importDefault(require("broccoli-concat"));
|
|
29
29
|
const mapKeys_1 = __importDefault(require("lodash/mapKeys"));
|
|
30
|
+
const synthesize_template_only_components_1 = __importDefault(require("./synthesize-template-only-components"));
|
|
30
31
|
const detect_babel_plugins_1 = require("./detect-babel-plugins");
|
|
31
32
|
const prepare_htmlbars_ast_plugins_1 = __importDefault(require("./prepare-htmlbars-ast-plugins"));
|
|
32
33
|
const fs_1 = require("fs");
|
|
33
34
|
const semver_1 = __importDefault(require("semver"));
|
|
34
35
|
const compat_app_builder_1 = require("./compat-app-builder");
|
|
35
|
-
const walk_sync_1 = __importDefault(require("walk-sync"));
|
|
36
36
|
// This runs at broccoli-pipeline-construction time, whereas the
|
|
37
37
|
// CompatAppBuilder instance only becomes available during tree-building time.
|
|
38
38
|
class CompatApp {
|
|
@@ -113,21 +113,20 @@ class CompatApp {
|
|
|
113
113
|
return new v1_config_1.V1Config(this.configTree, 'test');
|
|
114
114
|
}
|
|
115
115
|
}
|
|
116
|
-
get contentFor() {
|
|
117
|
-
const configPaths = [
|
|
118
|
-
{ file: '/index.html', path: (0, path_1.join)('environments', `${this.legacyEmberAppInstance.env}.json`) },
|
|
119
|
-
];
|
|
120
|
-
if (this.shouldBuildTests)
|
|
121
|
-
configPaths.push({ file: '/tests/index.html', path: (0, path_1.join)('environments', `test.json`) });
|
|
122
|
-
return new content_for_config_1.default(this.configTree, {
|
|
123
|
-
availableContentForTypes: this.options.availableContentForTypes,
|
|
124
|
-
configPaths,
|
|
125
|
-
pattern: this.filteredPatternsByContentFor.contentFor,
|
|
126
|
-
});
|
|
127
|
-
}
|
|
128
116
|
get autoRun() {
|
|
129
117
|
return this.legacyEmberAppInstance.options.autoRun;
|
|
130
118
|
}
|
|
119
|
+
get appBoot() {
|
|
120
|
+
let env = this.legacyEmberAppInstance.env;
|
|
121
|
+
let appBootContentTree = new v1_appboot_1.WriteV1AppBoot();
|
|
122
|
+
let patterns = this.configReplacePatterns;
|
|
123
|
+
appBootContentTree = new this.configReplace(appBootContentTree, this.configTree, {
|
|
124
|
+
configPath: (0, path_1.join)('environments', `${env}.json`),
|
|
125
|
+
files: ['config/app-boot.js'],
|
|
126
|
+
patterns,
|
|
127
|
+
});
|
|
128
|
+
return new v1_appboot_1.ReadV1AppBoot(appBootContentTree);
|
|
129
|
+
}
|
|
131
130
|
get storeConfigInMeta() {
|
|
132
131
|
return this.legacyEmberAppInstance.options.storeConfigInMeta;
|
|
133
132
|
}
|
|
@@ -138,13 +137,6 @@ class CompatApp {
|
|
|
138
137
|
storeConfigInMeta: this.storeConfigInMeta,
|
|
139
138
|
});
|
|
140
139
|
}
|
|
141
|
-
get filteredPatternsByContentFor() {
|
|
142
|
-
const filter = '/{{content-for [\'"](.+?)["\']}}/g';
|
|
143
|
-
return {
|
|
144
|
-
contentFor: this.configReplacePatterns.find((pattern) => filter.includes(pattern.match.toString())),
|
|
145
|
-
others: this.configReplacePatterns.filter((pattern) => !filter.includes(pattern.match.toString())),
|
|
146
|
-
};
|
|
147
|
-
}
|
|
148
140
|
get htmlTree() {
|
|
149
141
|
if (this.legacyEmberAppInstance.tests) {
|
|
150
142
|
return (0, broccoli_merge_trees_1.default)([this.indexTree, this.testIndexTree]);
|
|
@@ -164,7 +156,7 @@ class CompatApp {
|
|
|
164
156
|
return new this.configReplace(index, this.configTree, {
|
|
165
157
|
configPath: (0, path_1.join)('environments', `${this.legacyEmberAppInstance.env}.json`),
|
|
166
158
|
files: [indexFilePath],
|
|
167
|
-
patterns: this.
|
|
159
|
+
patterns: this.configReplacePatterns,
|
|
168
160
|
annotation: 'ConfigReplace/indexTree',
|
|
169
161
|
});
|
|
170
162
|
}
|
|
@@ -178,7 +170,7 @@ class CompatApp {
|
|
|
178
170
|
return new this.configReplace(index, this.configTree, {
|
|
179
171
|
configPath: (0, path_1.join)('environments', `test.json`),
|
|
180
172
|
files: ['tests/index.html'],
|
|
181
|
-
patterns: this.
|
|
173
|
+
patterns: this.configReplacePatterns,
|
|
182
174
|
annotation: 'ConfigReplace/testIndexTree',
|
|
183
175
|
});
|
|
184
176
|
}
|
|
@@ -369,28 +361,6 @@ class CompatApp {
|
|
|
369
361
|
(0, fs_extra_1.ensureDirSync)((0, path_1.dirname)(destPath));
|
|
370
362
|
(0, fs_extra_1.copySync)(sourcePath, destPath);
|
|
371
363
|
}
|
|
372
|
-
if (this.shouldBuildTests) {
|
|
373
|
-
(0, fs_extra_1.writeFileSync)((0, path_1.join)(outputPath, 'testem.js'), `/*
|
|
374
|
-
* This is dummy file that exists for the sole purpose
|
|
375
|
-
* of allowing tests to run directly in the browser as
|
|
376
|
-
* well as by Testem.
|
|
377
|
-
*
|
|
378
|
-
* Testem is configured to run tests directly against
|
|
379
|
-
* the test build of index.html, which requires a
|
|
380
|
-
* snippet to load the testem.js file:
|
|
381
|
-
* <script src="/testem.js"></script>
|
|
382
|
-
* This has to go before the qunit framework and app
|
|
383
|
-
* tests are loaded.
|
|
384
|
-
*
|
|
385
|
-
* Testem internally supplies this file. However, if you
|
|
386
|
-
* run the tests directly in the browser (localhost:8000/tests),
|
|
387
|
-
* this file does not exist.
|
|
388
|
-
*
|
|
389
|
-
* Hence the purpose of this fake file. This file is served
|
|
390
|
-
* directly from the express server to satisify the script load.
|
|
391
|
-
*/`);
|
|
392
|
-
this._publicAssets['/testem.js'] = './testem.js';
|
|
393
|
-
}
|
|
394
364
|
let remapAsset = this.remapAsset.bind(this);
|
|
395
365
|
let addonMeta = {
|
|
396
366
|
type: 'addon',
|
|
@@ -453,7 +423,7 @@ class CompatApp {
|
|
|
453
423
|
};
|
|
454
424
|
let assetPath = (0, path_1.join)(outputPath, 'assets');
|
|
455
425
|
if ((0, fs_extra_1.pathExistsSync)(assetPath)) {
|
|
456
|
-
for (let file of (0,
|
|
426
|
+
for (let file of (0, fs_extra_1.readdirSync)(assetPath)) {
|
|
457
427
|
addonMeta['public-assets'][`./assets/${file}`] = `/assets/${file}`;
|
|
458
428
|
}
|
|
459
429
|
}
|
|
@@ -570,8 +540,17 @@ class CompatApp {
|
|
|
570
540
|
let appTree = this.appTree;
|
|
571
541
|
let testsTree = this.testsTree;
|
|
572
542
|
let lintTree = this.lintTree;
|
|
543
|
+
let config = new v1_config_1.WriteV1Config(this.config, this.storeConfigInMeta, this.testConfig);
|
|
544
|
+
let patterns = this.configReplacePatterns;
|
|
545
|
+
let configReplaced = new this.configReplace(config, this.configTree, {
|
|
546
|
+
configPath: (0, path_1.join)('environments', `${this.legacyEmberAppInstance.env}.json`),
|
|
547
|
+
files: ['config/environment.js'],
|
|
548
|
+
patterns,
|
|
549
|
+
});
|
|
573
550
|
let trees = [];
|
|
574
551
|
trees.push(appTree);
|
|
552
|
+
trees.push(new synthesize_template_only_components_1.default(appTree, { allowedPaths: ['components'], templateExtensions: ['.hbs'] }));
|
|
553
|
+
trees.push(configReplaced);
|
|
575
554
|
if (testsTree) {
|
|
576
555
|
trees.push(testsTree);
|
|
577
556
|
}
|
|
@@ -582,6 +561,41 @@ class CompatApp {
|
|
|
582
561
|
appJS: (0, broccoli_merge_trees_1.default)(trees, { overwrite: true }),
|
|
583
562
|
};
|
|
584
563
|
}
|
|
564
|
+
withoutRootURL(src) {
|
|
565
|
+
let rootURL = this.config.readConfig().rootURL;
|
|
566
|
+
if ((src.startsWith(rootURL) && rootURL) || (!rootURL && !src.startsWith('/'))) {
|
|
567
|
+
src = '/' + src.slice(rootURL.length);
|
|
568
|
+
}
|
|
569
|
+
else if (src.startsWith('/' + rootURL)) {
|
|
570
|
+
src = src.slice(rootURL.length);
|
|
571
|
+
}
|
|
572
|
+
return src;
|
|
573
|
+
}
|
|
574
|
+
findAppScript(scripts, entrypoint) {
|
|
575
|
+
let appJS = scripts.find(script => this.withoutRootURL(script.src) === this.legacyEmberAppInstance.options.outputPaths.app.js);
|
|
576
|
+
return throwIfMissing(appJS, this.legacyEmberAppInstance.options.outputPaths.app.js, scripts.map(s => s.src), entrypoint, 'app javascript');
|
|
577
|
+
}
|
|
578
|
+
findAppStyles(styles, entrypoint) {
|
|
579
|
+
let style = styles.find(style => this.withoutRootURL(style.href) === this.legacyEmberAppInstance.options.outputPaths.app.css.app);
|
|
580
|
+
return throwIfMissing(style, this.legacyEmberAppInstance.options.outputPaths.app.css.app, styles.map(s => s.href), entrypoint, 'app css');
|
|
581
|
+
}
|
|
582
|
+
findVendorScript(scripts, entrypoint) {
|
|
583
|
+
let vendor = scripts.find(script => this.withoutRootURL(script.src) === this.legacyEmberAppInstance.options.outputPaths.vendor.js);
|
|
584
|
+
return throwIfMissing(vendor, this.legacyEmberAppInstance.options.outputPaths.vendor.js, scripts.map(s => s.src), entrypoint, 'vendor javascript');
|
|
585
|
+
}
|
|
586
|
+
findVendorStyles(styles, entrypoint) {
|
|
587
|
+
let vendorStyle = styles.find(style => this.withoutRootURL(style.href) === this.legacyEmberAppInstance.options.outputPaths.vendor.css);
|
|
588
|
+
return throwIfMissing(vendorStyle, this.legacyEmberAppInstance.options.outputPaths.vendor.css, styles.map(s => s.href), entrypoint, 'vendor css');
|
|
589
|
+
}
|
|
590
|
+
findTestSupportStyles(styles) {
|
|
591
|
+
return styles.find(style => this.withoutRootURL(style.href) === this.legacyEmberAppInstance.options.outputPaths.testSupport.css);
|
|
592
|
+
}
|
|
593
|
+
findTestSupportScript(scripts) {
|
|
594
|
+
return scripts.find(script => this.withoutRootURL(script.src) === this.legacyEmberAppInstance.options.outputPaths.testSupport.js.testSupport);
|
|
595
|
+
}
|
|
596
|
+
findTestScript(scripts) {
|
|
597
|
+
return scripts.find(script => this.withoutRootURL(script.src) === this.legacyEmberAppInstance.options.outputPaths.tests.js);
|
|
598
|
+
}
|
|
585
599
|
constructor(legacyEmberAppInstance, _options) {
|
|
586
600
|
this.legacyEmberAppInstance = legacyEmberAppInstance;
|
|
587
601
|
this.annotation = '@embroider/compat/app';
|
|
@@ -611,7 +625,6 @@ class CompatApp {
|
|
|
611
625
|
inTrees(prevStageTree) {
|
|
612
626
|
let publicTree = this.publicTree;
|
|
613
627
|
let configTree = this.config;
|
|
614
|
-
let contentForTree = this.contentFor;
|
|
615
628
|
if (this.options.extraPublicTrees.length > 0) {
|
|
616
629
|
publicTree = (0, broccoli_merge_trees_1.default)([publicTree, ...this.options.extraPublicTrees].filter(Boolean));
|
|
617
630
|
}
|
|
@@ -620,7 +633,7 @@ class CompatApp {
|
|
|
620
633
|
htmlTree: this.htmlTree,
|
|
621
634
|
publicTree,
|
|
622
635
|
configTree,
|
|
623
|
-
|
|
636
|
+
appBootTree: this.appBoot,
|
|
624
637
|
prevStageTree,
|
|
625
638
|
};
|
|
626
639
|
}
|
|
@@ -636,11 +649,11 @@ class CompatApp {
|
|
|
636
649
|
return packageCache.get(this.root);
|
|
637
650
|
}
|
|
638
651
|
}
|
|
639
|
-
async instantiate(root, packageCache, configTree
|
|
652
|
+
async instantiate(root, packageCache, configTree) {
|
|
640
653
|
let origAppPkg = this.appPackage();
|
|
641
654
|
let movedAppPkg = packageCache.withRewrittenDeps(origAppPkg);
|
|
642
655
|
let workingDir = (0, core_1.locateEmbroiderWorkingDir)(this.root);
|
|
643
|
-
return new compat_app_builder_1.CompatAppBuilder(root, origAppPkg, movedAppPkg, this.options, this, configTree,
|
|
656
|
+
return new compat_app_builder_1.CompatAppBuilder(root, origAppPkg, movedAppPkg, this.options, this, configTree, packageCache.get((0, path_1.join)(workingDir, 'rewritten-packages', '@embroider', 'synthesized-vendor')), packageCache.get((0, path_1.join)(workingDir, 'rewritten-packages', '@embroider', 'synthesized-styles')));
|
|
644
657
|
}
|
|
645
658
|
asStage(prevStage) {
|
|
646
659
|
let resolve;
|
|
@@ -651,7 +664,7 @@ class CompatApp {
|
|
|
651
664
|
if (!this.active) {
|
|
652
665
|
let { outputPath } = await prevStage.ready();
|
|
653
666
|
let packageCache = core_1.RewrittenPackageCache.shared('embroider', this.root);
|
|
654
|
-
this.active = await this.instantiate(outputPath, packageCache, inTrees.configTree
|
|
667
|
+
this.active = await this.instantiate(outputPath, packageCache, inTrees.configTree);
|
|
655
668
|
resolve({ outputPath });
|
|
656
669
|
}
|
|
657
670
|
await this.active.build(treePaths);
|
|
@@ -694,7 +707,7 @@ __decorate([
|
|
|
694
707
|
], CompatApp.prototype, "testConfig", null);
|
|
695
708
|
__decorate([
|
|
696
709
|
(0, typescript_memoize_1.Memoize)()
|
|
697
|
-
], CompatApp.prototype, "
|
|
710
|
+
], CompatApp.prototype, "appBoot", null);
|
|
698
711
|
__decorate([
|
|
699
712
|
(0, typescript_memoize_1.Memoize)()
|
|
700
713
|
], CompatApp.prototype, "configReplacePatterns", null);
|
|
@@ -713,4 +726,12 @@ __decorate([
|
|
|
713
726
|
__decorate([
|
|
714
727
|
(0, typescript_memoize_1.Memoize)()
|
|
715
728
|
], CompatApp.prototype, "appPackage", null);
|
|
729
|
+
function throwIfMissing(asset, needle, haystack, entryfile, context) {
|
|
730
|
+
if (!asset) {
|
|
731
|
+
throw new Error(`Could not find ${context}: "${needle}" in ${entryfile}. Found the following instead:\n${haystack
|
|
732
|
+
.map(asset => ` - ${asset}`)
|
|
733
|
+
.join('\n')}\n\nFor more information about this error: https://github.com/thoov/stitch/wiki/Could-not-find-asset-in-entry-file-error-help`);
|
|
734
|
+
}
|
|
735
|
+
return asset;
|
|
736
|
+
}
|
|
716
737
|
//# sourceMappingURL=compat-app.js.map
|
package/src/compat-app.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"compat-app.js","sourceRoot":"","sources":["compat-app.ts"],"names":[],"mappings":"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","sourcesContent":["import type { Node as BroccoliNode } from 'broccoli-node-api';\nimport type { Stage, Package } from '@embroider/core';\nimport { PackageCache, WaitForTrees, RewrittenPackageCache, locateEmbroiderWorkingDir } from '@embroider/core';\nimport type Options from './options';\nimport { optionsWithDefaults } from './options';\nimport { Memoize } from 'typescript-memoize';\nimport { sync as pkgUpSync } from 'pkg-up';\nimport { join, dirname, isAbsolute, sep } from 'path';\nimport buildFunnel from 'broccoli-funnel';\nimport mergeTrees from 'broccoli-merge-trees';\nimport { WatchedDir } from 'broccoli-source';\nimport resolve from 'resolve';\nimport ContentForConfig from './content-for-config';\nimport { V1Config } from './v1-config';\nimport type { AddonMeta, EmberAppInstance, OutputFileToInputFileMap, PackageInfo } from '@embroider/core';\nimport { writeJSONSync, ensureDirSync, copySync, pathExistsSync, existsSync, writeFileSync } from 'fs-extra';\nimport AddToTree from './add-to-tree';\nimport DummyPackage from './dummy-package';\nimport type { TransformOptions } from '@babel/core';\nimport { isEmbroiderMacrosPlugin, MacrosConfig } from '@embroider/macros/src/node';\nimport resolvePackagePath from 'resolve-package-path';\nimport Concat from 'broccoli-concat';\nimport mapKeys from 'lodash/mapKeys';\nimport { isEmberAutoImportDynamic, isInlinePrecompilePlugin } from './detect-babel-plugins';\nimport loadAstPlugins from './prepare-htmlbars-ast-plugins';\nimport { readFileSync } from 'fs';\nimport semver from 'semver';\nimport type { Transform } from 'babel-plugin-ember-template-compilation';\nimport { CompatAppBuilder } from './compat-app-builder';\nimport walkSync from 'walk-sync';\n\ninterface Group {\n outputFiles: OutputFileToInputFileMap;\n implicitKey: '_implicitStyles' | '_implicitScripts';\n vendorOutputPath: 'string';\n}\n\n// This runs at broccoli-pipeline-construction time, whereas the\n// CompatAppBuilder instance only becomes available during tree-building time.\nexport default class CompatApp {\n private annotation = '@embroider/compat/app';\n private active: CompatAppBuilder | undefined;\n readonly options: Required<Options>;\n\n private _publicAssets: { [filePath: string]: string } = Object.create(null);\n private _implicitScripts: string[] = [];\n private _implicitStyles: string[] = [];\n\n private get isDummy(): boolean {\n return this.legacyEmberAppInstance.project.pkg.keywords?.includes('ember-addon') ?? false;\n }\n\n get name(): string {\n if (this.isDummy) {\n // here we accept the ember-cli behavior\n return this.legacyEmberAppInstance.name;\n } else {\n // always the name from package.json. Not the one that apps may have weirdly\n // customized.\n return this.legacyEmberAppInstance.project.pkg.name;\n }\n }\n\n get env(): string {\n return this.legacyEmberAppInstance.env;\n }\n\n @Memoize()\n get root(): string {\n if (this.isDummy) {\n // this is the Known Hack for finding the true root of the dummy app.\n return join(this.legacyEmberAppInstance.project.configPath(), '..', '..');\n } else {\n return dirname(pkgUpSync({ cwd: this.legacyEmberAppInstance.project.root })!);\n }\n }\n\n @Memoize()\n private get emberCLILocation() {\n const emberCLIPackage = resolvePackagePath('ember-cli', this.root);\n\n if (emberCLIPackage === null) {\n throw new Error(`Embroider: cannot resolve ember-cli's package.json`);\n }\n\n return dirname(emberCLIPackage);\n }\n\n @Memoize()\n get hasCompiledStyles() {\n return semver.gte(JSON.parse(readFileSync(`${this.emberCLILocation}/package.json`, 'utf8')).version, '3.18.0');\n }\n\n private requireFromEmberCLI(specifier: string) {\n // eslint-disable-next-line @typescript-eslint/no-require-imports\n return require(resolve.sync(specifier, { basedir: this.emberCLILocation }));\n }\n\n private get configReplace() {\n return this.requireFromEmberCLI('broccoli-config-replace');\n }\n\n private get configLoader() {\n return this.requireFromEmberCLI('broccoli-config-loader');\n }\n\n private get appUtils() {\n return this.requireFromEmberCLI('./lib/utilities/ember-app-utils');\n }\n\n @Memoize()\n get addonTreeCache(): Map<string, BroccoliNode> {\n return new Map();\n }\n\n @Memoize()\n get preprocessRegistry() {\n return this.requireFromEmberCLI('ember-cli-preprocess-registry/preprocessors');\n }\n\n get shouldBuildTests(): boolean {\n return this.legacyEmberAppInstance.tests || false;\n }\n\n configPath(): string {\n return this.legacyEmberAppInstance.project.configPath();\n }\n\n private get configTree() {\n return new this.configLoader(dirname(this.configPath()), {\n env: this.legacyEmberAppInstance.env,\n tests: this.legacyEmberAppInstance.tests || false,\n project: this.legacyEmberAppInstance.project,\n });\n }\n\n @Memoize()\n private get config(): V1Config {\n return new V1Config(this.configTree, this.legacyEmberAppInstance.env);\n }\n\n @Memoize()\n get testConfig(): V1Config | undefined {\n if (this.shouldBuildTests) {\n return new V1Config(this.configTree, 'test');\n }\n }\n\n @Memoize()\n private get contentFor(): ContentForConfig {\n const configPaths = [\n { file: '/index.html', path: join('environments', `${this.legacyEmberAppInstance.env}.json`) },\n ];\n if (this.shouldBuildTests) configPaths.push({ file: '/tests/index.html', path: join('environments', `test.json`) });\n return new ContentForConfig(this.configTree, {\n availableContentForTypes: this.options.availableContentForTypes,\n configPaths,\n pattern: this.filteredPatternsByContentFor.contentFor,\n });\n }\n\n get autoRun(): boolean {\n return this.legacyEmberAppInstance.options.autoRun;\n }\n\n private get storeConfigInMeta(): boolean {\n return this.legacyEmberAppInstance.options.storeConfigInMeta;\n }\n\n @Memoize()\n private get configReplacePatterns() {\n return this.appUtils.configReplacePatterns({\n addons: this.legacyEmberAppInstance.project.addons,\n autoRun: this.autoRun,\n storeConfigInMeta: this.storeConfigInMeta,\n });\n }\n\n private get filteredPatternsByContentFor() {\n const filter = '/{{content-for [\\'\"](.+?)[\"\\']}}/g';\n return {\n contentFor: this.configReplacePatterns.find((pattern: any) => filter.includes(pattern.match.toString())),\n others: this.configReplacePatterns.filter((pattern: any) => !filter.includes(pattern.match.toString())),\n };\n }\n\n private get htmlTree() {\n if (this.legacyEmberAppInstance.tests) {\n return mergeTrees([this.indexTree, this.testIndexTree]);\n } else {\n return this.indexTree;\n }\n }\n\n private get indexTree() {\n let indexFilePath = this.legacyEmberAppInstance.options.outputPaths.app.html;\n let index = buildFunnel(this.legacyEmberAppInstance.trees.app, {\n allowEmpty: true,\n include: [`index.html`],\n getDestinationPath: () => indexFilePath,\n annotation: 'app/index.html',\n });\n return new this.configReplace(index, this.configTree, {\n configPath: join('environments', `${this.legacyEmberAppInstance.env}.json`),\n files: [indexFilePath],\n patterns: this.filteredPatternsByContentFor.others,\n annotation: 'ConfigReplace/indexTree',\n });\n }\n\n private get testIndexTree() {\n let index = buildFunnel(this.legacyEmberAppInstance.trees.tests, {\n allowEmpty: true,\n include: [`index.html`],\n destDir: 'tests',\n annotation: 'tests/index.html',\n });\n return new this.configReplace(index, this.configTree, {\n configPath: join('environments', `test.json`),\n files: ['tests/index.html'],\n patterns: this.filteredPatternsByContentFor.others,\n annotation: 'ConfigReplace/testIndexTree',\n });\n }\n\n @Memoize()\n babelConfig(): TransformOptions {\n // this finds all the built-in babel configuration that comes with ember-cli-babel\n const babelAddon = (this.legacyEmberAppInstance.project as any).findAddonByName('ember-cli-babel');\n const babelConfig = babelAddon.buildBabelOptions({\n 'ember-cli-babel': {\n ...this.legacyEmberAppInstance.options['ember-cli-babel'],\n includeExternalHelpers: true,\n compileModules: false,\n disableDebugTooling: false,\n disablePresetEnv: false,\n disableEmberModulesAPIPolyfill: false,\n },\n });\n\n let plugins = babelConfig.plugins as any[];\n let presets = babelConfig.presets;\n\n // this finds any custom babel configuration that's on the app (either\n // because the app author explicitly added some, or because addons have\n // pushed plugins into it).\n let appBabel = this.legacyEmberAppInstance.options.babel;\n if (appBabel) {\n if (appBabel.plugins) {\n plugins = appBabel.plugins.concat(plugins);\n }\n if (appBabel.presets) {\n presets = appBabel.presets.concat(presets);\n }\n }\n\n plugins = plugins.filter(p => {\n // even if the app was using @embroider/macros, we drop it from the config\n // here in favor of our globally-configured one.\n return (\n !isEmbroiderMacrosPlugin(p) &&\n // similarly, if the app was already using an inline template compiler\n // babel plugin, we remove it here because we have our own\n // always-installed version of that (v2 addons are allowed to assume it\n // will be present in the final app build, the app doesn't get to turn\n // that off or configure it.)\n !isInlinePrecompilePlugin(p) &&\n !isEmberAutoImportDynamic(p)\n );\n });\n\n const config: TransformOptions = {\n babelrc: false,\n plugins,\n presets,\n // this is here because broccoli-middleware can't render a codeFrame full\n // of terminal codes. It would be nice to add something like\n // https://github.com/mmalecki/ansispan to broccoli-middleware so we can\n // leave color enabled.\n highlightCode: false,\n };\n\n return config;\n }\n\n @Memoize()\n babelMajorVersion(): 7 {\n let babelAddon = this.legacyEmberAppInstance.project.addons.find((a: any) => a.name === 'ember-cli-babel');\n if (babelAddon) {\n let babelAddonMajor = Number(babelAddon.pkg.version.split('.')[0]);\n let babelMajor: number | undefined = babelAddonMajor;\n if (babelAddonMajor >= 8) {\n // `ember-cli-babel` v8 breaks lockstep with Babel, because it now\n // defines `@babel/core` as a peer dependency, so we need to check the\n // project's version of `@babel/core`:\n let babelVersion = this.legacyEmberAppInstance.project.pkg.devDependencies?.['@babel/core'];\n if (babelVersion) {\n babelMajor = semver.coerce(babelVersion)?.major;\n } else {\n babelMajor = 7;\n }\n }\n if (babelMajor !== 7) {\n throw new Error('`@embroider/compat` only supports apps and addons that use Babel v7.');\n }\n return babelMajor;\n }\n // if we didn't have our own babel plugin at all, it's safe to parse our\n // code with 7.\n return 7;\n }\n\n @Memoize()\n private transformedNodeFiles(): Map<string, string> {\n // any app.imports from node_modules that need custom transforms will need\n // to get copied into our own synthesized vendor package. app.imports from\n // node_modules that *don't* need custom transforms can just stay where they\n // are.\n let transformed = new Map();\n for (let transformConfig of this.legacyEmberAppInstance._customTransformsMap.values()) {\n for (let filename of transformConfig.files as string[]) {\n let preresolved = this.preresolvedNodeFile(filename);\n if (preresolved) {\n transformed.set(filename, preresolved);\n }\n }\n }\n return transformed;\n }\n\n private preresolvedNodeFile(filename: string) {\n // this regex is an exact copy of how ember-cli does this, so we align.\n let match = filename.match(/^node_modules\\/((@[^/]+\\/)?[^/]+)\\//);\n if (match) {\n // ember-cli has already done its own resolution of\n // `app.import('node_modules/something/...')`, so we go find its answer.\n for (let { name, path } of this.legacyEmberAppInstance._nodeModules.values()) {\n if (match[1] === name) {\n return filename.replace(match[0], path + sep);\n }\n }\n throw new Error(`bug: expected ember-cli to already have a resolved path for asset ${filename}`);\n }\n }\n\n private combinedVendor(addonTrees: BroccoliNode[]): BroccoliNode {\n let trees = addonTrees.map(tree =>\n buildFunnel(tree, {\n allowEmpty: true,\n srcDir: 'vendor',\n destDir: 'vendor',\n })\n );\n if (this.vendorTree) {\n trees.push(\n buildFunnel(this.vendorTree, {\n destDir: 'vendor',\n })\n );\n }\n\n const tree = mergeTrees(trees, { overwrite: true });\n\n const outputGroups: Group[] = [\n // scripts\n {\n outputFiles: this.legacyEmberAppInstance._scriptOutputFiles,\n implicitKey: '_implicitScripts',\n vendorOutputPath: this.legacyEmberAppInstance.options.outputPaths.vendor.js,\n },\n // styles\n {\n outputFiles: this.legacyEmberAppInstance._styleOutputFiles,\n implicitKey: '_implicitStyles',\n vendorOutputPath: this.legacyEmberAppInstance.options.outputPaths.vendor.css,\n },\n ];\n\n const concatentations = [];\n\n // support: app.import / outputFile / using\n for (let entry of outputGroups) {\n const { outputFiles, implicitKey, vendorOutputPath } = entry;\n for (let importPath of Object.keys(outputFiles)) {\n const headerFiles = outputFiles[importPath];\n\n if (importPath === vendorOutputPath) {\n // these are the default ember-cli output files vendor.js or\n // vendor.css. Let embroider handle these.\n this[implicitKey] = headerFiles;\n } else if (headerFiles.length === 0) {\n // something went really wrong, open an issue\n throw new Error('Embroider: EWUT');\n } else if (headerFiles.length === 1) {\n // app.import(x, { outputFile: y }); where only one app.imports had this outputFile\n //\n // No concat needed. Simply serialize the remapping in the addon's\n // manifest, this ensures it is included in the final output with no extra work.\n this._publicAssets[headerFiles[0]] = importPath;\n } else {\n // app.import(x, { outputFile: y }); where multiple app.imports share one outputFile\n // Concat needed. Perform concat, and include the outputFile in the\n // addon's manifest. This ensures it is included in the final output\n this._publicAssets[importPath] = importPath;\n\n concatentations.push(\n new Concat(tree, {\n headerFiles,\n outputFile: importPath,\n annotation: `Package ${importPath}`,\n separator: '\\n;',\n sourceMapConfig: this.legacyEmberAppInstance.options['sourcemaps'],\n })\n );\n }\n }\n }\n\n this.addOtherAssets();\n return mergeTrees([tree, ...concatentations], { overwrite: true });\n }\n\n private addOtherAssets() {\n for (let asset of this.legacyEmberAppInstance.otherAssetPaths) {\n this._publicAssets[`${asset.src}/${asset.file}`] = `${asset.dest}/${asset.file}`;\n }\n }\n\n private addNodeAssets(inputTree: BroccoliNode): BroccoliNode {\n let transformedNodeFiles = this.transformedNodeFiles();\n\n return new AddToTree(inputTree, outputPath => {\n for (let [localDestPath, sourcePath] of transformedNodeFiles) {\n let destPath = join(outputPath, localDestPath);\n ensureDirSync(dirname(destPath));\n copySync(sourcePath, destPath);\n }\n\n if (this.shouldBuildTests) {\n writeFileSync(\n join(outputPath, 'testem.js'),\n `/*\n * This is dummy file that exists for the sole purpose\n * of allowing tests to run directly in the browser as\n * well as by Testem.\n *\n * Testem is configured to run tests directly against\n * the test build of index.html, which requires a\n * snippet to load the testem.js file:\n * <script src=\"/testem.js\"></script>\n * This has to go before the qunit framework and app\n * tests are loaded.\n *\n * Testem internally supplies this file. However, if you\n * run the tests directly in the browser (localhost:8000/tests),\n * this file does not exist.\n *\n * Hence the purpose of this fake file. This file is served\n * directly from the express server to satisify the script load.\n*/`\n );\n this._publicAssets['/testem.js'] = './testem.js';\n }\n\n let remapAsset = this.remapAsset.bind(this);\n\n let addonMeta: AddonMeta = {\n type: 'addon',\n version: 2,\n 'implicit-scripts': this._implicitScripts.map(remapAsset),\n 'implicit-styles': this._implicitStyles.map(remapAsset),\n 'implicit-test-scripts': this.legacyEmberAppInstance.legacyTestFilesToAppend.map(remapAsset),\n 'implicit-test-styles': this.legacyEmberAppInstance.vendorTestStaticStyles.map(remapAsset),\n 'public-assets': mapKeys(this._publicAssets, (_, key) => remapAsset(key)),\n };\n let meta: PackageInfo = {\n name: '@embroider/synthesized-vendor',\n version: '0.0.0',\n keywords: ['ember-addon'],\n 'ember-addon': addonMeta,\n };\n writeJSONSync(join(outputPath, 'package.json'), meta, { spaces: 2 });\n });\n }\n\n synthesizeVendorPackage(addonTrees: BroccoliNode[]): BroccoliNode {\n return this.applyCustomTransforms(this.addNodeAssets(this.combinedVendor(addonTrees)));\n }\n\n private combinedStyles(addonTrees: BroccoliNode[]): BroccoliNode {\n let trees: BroccoliNode[] = addonTrees.map(tree =>\n buildFunnel(tree, {\n allowEmpty: true,\n srcDir: '_app_styles_',\n })\n );\n let appStyles = this.legacyEmberAppInstance.trees.styles as BroccoliNode | undefined;\n if (appStyles) {\n // Workaround for https://github.com/ember-cli/ember-cli/issues/9020\n //\n // The default app styles tree is unwatched and relies on side effects\n // elsewhere in ember-cli's build pipeline to actually get rebuilds to\n // work. Here we need it to actually be watched properly if we want to\n // rely on it, particularly when using BROCCOLI_ENABLED_MEMOIZE.\n if ((appStyles as any)._watched === false && (appStyles as any)._directoryPath) {\n appStyles = new WatchedDir((appStyles as any)._directoryPath);\n }\n trees.push(appStyles);\n }\n return mergeTrees(trees, { overwrite: true, annotation: 'embroider-v1-app-combined-styles' });\n }\n\n synthesizeStylesPackage(addonTrees: BroccoliNode[]): BroccoliNode {\n let options = {\n // we're deliberately not allowing this to be customized. It's an\n // internal implementation detail, and respecting outputPaths here is\n // unnecessary complexity. The corresponding code that adjusts the HTML\n // <link> is in updateHTML in app.ts.\n outputPaths: { app: `/assets/${this.name}.css` },\n registry: this.legacyEmberAppInstance.registry,\n minifyCSS: this.legacyEmberAppInstance.options.minifyCSS.options,\n };\n\n let nestedInput = buildFunnel(this.combinedStyles(addonTrees), { destDir: 'app/styles' });\n let styles = this.preprocessors.preprocessCss(nestedInput, '/app/styles', '/assets', options);\n\n return new AddToTree(styles, outputPath => {\n let addonMeta: AddonMeta = {\n type: 'addon',\n version: 2,\n 'public-assets': {},\n };\n let assetPath = join(outputPath, 'assets');\n if (pathExistsSync(assetPath)) {\n for (let file of walkSync(assetPath, { directories: false })) {\n addonMeta['public-assets']![`./assets/${file}`] = `/assets/${file}`;\n }\n }\n let meta: PackageInfo = {\n name: '@embroider/synthesized-styles',\n version: '0.0.0',\n keywords: ['ember-addon'],\n 'ember-addon': addonMeta,\n };\n writeJSONSync(join(outputPath, 'package.json'), meta, { spaces: 2 });\n });\n }\n\n // this is taken nearly verbatim from ember-cli.\n private applyCustomTransforms(externalTree: BroccoliNode) {\n for (let customTransformEntry of this.legacyEmberAppInstance._customTransformsMap) {\n let transformName = customTransformEntry[0];\n let transformConfig = customTransformEntry[1];\n\n let transformTree = buildFunnel(externalTree, {\n files: transformConfig.files,\n annotation: `Funnel (custom transform: ${transformName})`,\n });\n\n externalTree = mergeTrees([externalTree, transformConfig.callback(transformTree, transformConfig.options)], {\n annotation: `TreeMerger (custom transform: ${transformName})`,\n overwrite: true,\n });\n }\n return externalTree;\n }\n\n private remapAsset(asset: string) {\n if (this.transformedNodeFiles().has(asset)) {\n // transformed node assets become local paths, because we have copied\n // those ones into our synthesized vendor package.\n return './' + asset;\n }\n let preresolved = this.preresolvedNodeFile(asset);\n if (preresolved) {\n // non-transformed node assets point directly at their pre-resolved\n // original files (this is an absolute path).\n return preresolved;\n }\n // non node assets are local paths. They need an explicit `/` or `.` at\n // the start.\n if (asset.startsWith('.') || isAbsolute(asset)) {\n return asset;\n }\n return './' + asset;\n }\n\n private preprocessJS(tree: BroccoliNode): BroccoliNode {\n // we're saving all our babel compilation for the final stage packager\n this.legacyEmberAppInstance.registry.remove('js', 'ember-cli-babel');\n\n // auto-import is supported natively so we don't need it here\n this.legacyEmberAppInstance.registry.remove('js', 'ember-auto-import-analyzer');\n\n tree = buildFunnel(tree, { destDir: this.name });\n\n tree = this.preprocessors.preprocessJs(tree, `/`, '/', {\n annotation: 'v1-app-preprocess-js',\n registry: this.legacyEmberAppInstance.registry,\n });\n\n tree = buildFunnel(tree, { srcDir: this.name });\n\n return tree;\n }\n\n get htmlbarsPlugins(): Transform[] {\n let plugins = loadAstPlugins(this.legacyEmberAppInstance.registry);\n // even if the app was using @embroider/macros, we drop it from the config\n // here in favor of our globally-configured one.\n plugins = plugins.filter((p: any) => !isEmbroiderMacrosPlugin(p));\n return plugins;\n }\n\n // our own appTree. Not to be confused with the one that combines the app js\n // from all addons too.\n private get appTree(): BroccoliNode {\n return this.preprocessJS(\n buildFunnel(this.legacyEmberAppInstance.trees.app, {\n exclude: ['styles/**', '*.html'],\n })\n );\n }\n\n private get testsTree(): BroccoliNode | undefined {\n if (this.shouldBuildTests && this.legacyEmberAppInstance.trees.tests) {\n return this.preprocessJS(\n buildFunnel(this.legacyEmberAppInstance.trees.tests, {\n destDir: 'tests',\n })\n );\n }\n }\n\n private get lintTree(): BroccoliNode | undefined {\n if (this.shouldBuildTests) {\n return this.legacyEmberAppInstance.getLintTests();\n }\n }\n\n private get vendorTree(): BroccoliNode | undefined {\n return this.ensureTree(this.legacyEmberAppInstance.trees.vendor);\n }\n\n private ensureTree(maybeTree: string | BroccoliNode | undefined): BroccoliNode | undefined {\n if (typeof maybeTree === 'string') {\n // this is deliberately mimicking how ember-cli does it. We don't use\n // `this.root` on purpose, because that can differ from what ember-cli\n // considers the project.root. And we don't use path.resolve even though\n // that seems possibly more correct, because ember-cli always assumes the\n // input is relative.\n let resolvedPath = join(this.legacyEmberAppInstance.project.root, maybeTree);\n if (existsSync(resolvedPath)) {\n return new WatchedDir(maybeTree);\n } else {\n return undefined;\n }\n }\n return maybeTree;\n }\n\n @Memoize()\n private get preprocessors(): Preprocessors {\n return this.requireFromEmberCLI('ember-cli-preprocess-registry/preprocessors');\n }\n\n private get publicTree(): BroccoliNode | undefined {\n return this.ensureTree(this.legacyEmberAppInstance.trees.public);\n }\n\n private processAppJS(): { appJS: BroccoliNode } {\n let appTree = this.appTree;\n let testsTree = this.testsTree;\n let lintTree = this.lintTree;\n\n let trees: BroccoliNode[] = [];\n trees.push(appTree);\n\n if (testsTree) {\n trees.push(testsTree);\n }\n if (lintTree) {\n trees.push(lintTree);\n }\n return {\n appJS: mergeTrees(trees, { overwrite: true }),\n };\n }\n\n readonly macrosConfig: MacrosConfig;\n\n constructor(readonly legacyEmberAppInstance: EmberAppInstance, _options?: Options) {\n this.options = optionsWithDefaults(_options);\n\n this.macrosConfig = MacrosConfig.for(legacyEmberAppInstance, this.root);\n if (this.env !== 'production') {\n this.macrosConfig.enablePackageDevelopment(this.root);\n this.macrosConfig.enableRuntimeMode();\n if (this.isDummy) {\n // dummy apps automatically put their owning addon under development too\n this.macrosConfig.enablePackageDevelopment(\n dirname(pkgUpSync({ cwd: this.legacyEmberAppInstance.project.root })!)\n );\n }\n }\n\n // this uses globalConfig because it's a way for packages to ask \"is\n // Embroider doing this build?\". So it's necessarily global, not scoped to\n // any subgraph of dependencies.\n this.macrosConfig.setGlobalConfig(__filename, `@embroider/core`, {\n // this is hard-coded to true because it literally means \"embroider is\n // building this Ember app\". You can see non-true when using the Embroider\n // macros in a classic build.\n active: true,\n });\n }\n\n private inTrees(prevStageTree: BroccoliNode) {\n let publicTree = this.publicTree;\n let configTree = this.config;\n let contentForTree = this.contentFor;\n\n if (this.options.extraPublicTrees.length > 0) {\n publicTree = mergeTrees([publicTree, ...this.options.extraPublicTrees].filter(Boolean) as BroccoliNode[]);\n }\n\n return {\n appJS: this.processAppJS().appJS,\n htmlTree: this.htmlTree,\n publicTree,\n configTree,\n contentForTree,\n prevStageTree,\n };\n }\n\n @Memoize()\n appPackage(): Package {\n // this is deliberately not RewrittenPackageCache, because it's supposed to\n // be the original copy of the app with all the original dependencies.\n let packageCache = PackageCache.shared('embroider', this.root);\n if (this.isDummy) {\n return new DummyPackage(\n this.root,\n this.legacyEmberAppInstance.project.root,\n packageCache as unknown as PackageCache // TODO: cast won't be needed when refactor is complete\n );\n } else {\n return packageCache.get(this.root);\n }\n }\n\n private async instantiate(\n root: string,\n packageCache: RewrittenPackageCache,\n configTree: V1Config,\n contentForTree: ContentForConfig\n ) {\n let origAppPkg = this.appPackage();\n let movedAppPkg = packageCache.withRewrittenDeps(origAppPkg);\n let workingDir = locateEmbroiderWorkingDir(this.root);\n return new CompatAppBuilder(\n root,\n origAppPkg,\n movedAppPkg,\n this.options,\n this,\n configTree,\n contentForTree,\n packageCache.get(join(workingDir, 'rewritten-packages', '@embroider', 'synthesized-vendor')),\n packageCache.get(join(workingDir, 'rewritten-packages', '@embroider', 'synthesized-styles'))\n );\n }\n\n asStage(prevStage: Stage): Stage {\n let resolve: (result: { outputPath: string }) => void;\n let promise: Promise<{ outputPath: string }> = new Promise(r => (resolve = r));\n\n let tree = () => {\n let inTrees = this.inTrees(prevStage.tree);\n return new WaitForTrees(inTrees, this.annotation, async treePaths => {\n if (!this.active) {\n let { outputPath } = await prevStage.ready();\n let packageCache = RewrittenPackageCache.shared('embroider', this.root);\n this.active = await this.instantiate(outputPath, packageCache, inTrees.configTree, inTrees.contentForTree);\n resolve({ outputPath });\n }\n await this.active.build(treePaths);\n });\n };\n\n return {\n get inputPath() {\n return prevStage.inputPath;\n },\n ready: async () => {\n return await promise;\n },\n get tree() {\n return tree();\n },\n };\n }\n}\n\ninterface Preprocessors {\n preprocessJs(tree: BroccoliNode, a: string, b: string, options: object): BroccoliNode;\n preprocessCss(tree: BroccoliNode, a: string, b: string, options: object): BroccoliNode;\n}\n"]}
|
|
1
|
+
{"version":3,"file":"compat-app.js","sourceRoot":"","sources":["compat-app.ts"],"names":[],"mappings":"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","sourcesContent":["import type { Node as BroccoliNode } from 'broccoli-node-api';\nimport type { Stage, Package } from '@embroider/core';\nimport { PackageCache, WaitForTrees, RewrittenPackageCache, locateEmbroiderWorkingDir } from '@embroider/core';\nimport type Options from './options';\nimport { optionsWithDefaults } from './options';\nimport { Memoize } from 'typescript-memoize';\nimport { sync as pkgUpSync } from 'pkg-up';\nimport { join, dirname, isAbsolute, sep } from 'path';\nimport buildFunnel from 'broccoli-funnel';\nimport mergeTrees from 'broccoli-merge-trees';\nimport { WatchedDir } from 'broccoli-source';\nimport resolve from 'resolve';\nimport { V1Config, WriteV1Config } from './v1-config';\nimport { WriteV1AppBoot, ReadV1AppBoot } from './v1-appboot';\nimport type { AddonMeta, EmberAppInstance, OutputFileToInputFileMap, PackageInfo } from '@embroider/core';\nimport { writeJSONSync, ensureDirSync, copySync, readdirSync, pathExistsSync, existsSync } from 'fs-extra';\nimport AddToTree from './add-to-tree';\nimport DummyPackage from './dummy-package';\nimport type { TransformOptions } from '@babel/core';\nimport { isEmbroiderMacrosPlugin, MacrosConfig } from '@embroider/macros/src/node';\nimport resolvePackagePath from 'resolve-package-path';\nimport Concat from 'broccoli-concat';\nimport mapKeys from 'lodash/mapKeys';\nimport SynthesizeTemplateOnlyComponents from './synthesize-template-only-components';\nimport { isEmberAutoImportDynamic, isInlinePrecompilePlugin } from './detect-babel-plugins';\nimport loadAstPlugins from './prepare-htmlbars-ast-plugins';\nimport { readFileSync } from 'fs';\nimport semver from 'semver';\nimport type { Transform } from 'babel-plugin-ember-template-compilation';\nimport { CompatAppBuilder } from './compat-app-builder';\n\ninterface Group {\n outputFiles: OutputFileToInputFileMap;\n implicitKey: '_implicitStyles' | '_implicitScripts';\n vendorOutputPath: 'string';\n}\n\n// This runs at broccoli-pipeline-construction time, whereas the\n// CompatAppBuilder instance only becomes available during tree-building time.\nexport default class CompatApp {\n private annotation = '@embroider/compat/app';\n private active: CompatAppBuilder | undefined;\n readonly options: Required<Options>;\n\n private _publicAssets: { [filePath: string]: string } = Object.create(null);\n private _implicitScripts: string[] = [];\n private _implicitStyles: string[] = [];\n\n private get isDummy(): boolean {\n return this.legacyEmberAppInstance.project.pkg.keywords?.includes('ember-addon') ?? false;\n }\n\n get name(): string {\n if (this.isDummy) {\n // here we accept the ember-cli behavior\n return this.legacyEmberAppInstance.name;\n } else {\n // always the name from package.json. Not the one that apps may have weirdly\n // customized.\n return this.legacyEmberAppInstance.project.pkg.name;\n }\n }\n\n get env(): string {\n return this.legacyEmberAppInstance.env;\n }\n\n @Memoize()\n get root(): string {\n if (this.isDummy) {\n // this is the Known Hack for finding the true root of the dummy app.\n return join(this.legacyEmberAppInstance.project.configPath(), '..', '..');\n } else {\n return dirname(pkgUpSync({ cwd: this.legacyEmberAppInstance.project.root })!);\n }\n }\n\n @Memoize()\n private get emberCLILocation() {\n const emberCLIPackage = resolvePackagePath('ember-cli', this.root);\n\n if (emberCLIPackage === null) {\n throw new Error(`Embroider: cannot resolve ember-cli's package.json`);\n }\n\n return dirname(emberCLIPackage);\n }\n\n @Memoize()\n get hasCompiledStyles() {\n return semver.gte(JSON.parse(readFileSync(`${this.emberCLILocation}/package.json`, 'utf8')).version, '3.18.0');\n }\n\n private requireFromEmberCLI(specifier: string) {\n // eslint-disable-next-line @typescript-eslint/no-require-imports\n return require(resolve.sync(specifier, { basedir: this.emberCLILocation }));\n }\n\n private get configReplace() {\n return this.requireFromEmberCLI('broccoli-config-replace');\n }\n\n private get configLoader() {\n return this.requireFromEmberCLI('broccoli-config-loader');\n }\n\n private get appUtils() {\n return this.requireFromEmberCLI('./lib/utilities/ember-app-utils');\n }\n\n @Memoize()\n get addonTreeCache(): Map<string, BroccoliNode> {\n return new Map();\n }\n\n @Memoize()\n get preprocessRegistry() {\n return this.requireFromEmberCLI('ember-cli-preprocess-registry/preprocessors');\n }\n\n get shouldBuildTests(): boolean {\n return this.legacyEmberAppInstance.tests || false;\n }\n\n configPath(): string {\n return this.legacyEmberAppInstance.project.configPath();\n }\n\n private get configTree() {\n return new this.configLoader(dirname(this.configPath()), {\n env: this.legacyEmberAppInstance.env,\n tests: this.legacyEmberAppInstance.tests || false,\n project: this.legacyEmberAppInstance.project,\n });\n }\n\n @Memoize()\n private get config(): V1Config {\n return new V1Config(this.configTree, this.legacyEmberAppInstance.env);\n }\n\n @Memoize()\n get testConfig(): V1Config | undefined {\n if (this.shouldBuildTests) {\n return new V1Config(this.configTree, 'test');\n }\n }\n\n get autoRun(): boolean {\n return this.legacyEmberAppInstance.options.autoRun;\n }\n\n @Memoize()\n get appBoot(): ReadV1AppBoot {\n let env = this.legacyEmberAppInstance.env;\n let appBootContentTree = new WriteV1AppBoot();\n\n let patterns = this.configReplacePatterns;\n\n appBootContentTree = new this.configReplace(appBootContentTree, this.configTree, {\n configPath: join('environments', `${env}.json`),\n files: ['config/app-boot.js'],\n patterns,\n });\n\n return new ReadV1AppBoot(appBootContentTree);\n }\n\n private get storeConfigInMeta(): boolean {\n return this.legacyEmberAppInstance.options.storeConfigInMeta;\n }\n\n @Memoize()\n private get configReplacePatterns() {\n return this.appUtils.configReplacePatterns({\n addons: this.legacyEmberAppInstance.project.addons,\n autoRun: this.autoRun,\n storeConfigInMeta: this.storeConfigInMeta,\n });\n }\n\n private get htmlTree() {\n if (this.legacyEmberAppInstance.tests) {\n return mergeTrees([this.indexTree, this.testIndexTree]);\n } else {\n return this.indexTree;\n }\n }\n\n private get indexTree() {\n let indexFilePath = this.legacyEmberAppInstance.options.outputPaths.app.html;\n let index = buildFunnel(this.legacyEmberAppInstance.trees.app, {\n allowEmpty: true,\n include: [`index.html`],\n getDestinationPath: () => indexFilePath,\n annotation: 'app/index.html',\n });\n return new this.configReplace(index, this.configTree, {\n configPath: join('environments', `${this.legacyEmberAppInstance.env}.json`),\n files: [indexFilePath],\n patterns: this.configReplacePatterns,\n annotation: 'ConfigReplace/indexTree',\n });\n }\n\n private get testIndexTree() {\n let index = buildFunnel(this.legacyEmberAppInstance.trees.tests, {\n allowEmpty: true,\n include: [`index.html`],\n destDir: 'tests',\n annotation: 'tests/index.html',\n });\n return new this.configReplace(index, this.configTree, {\n configPath: join('environments', `test.json`),\n files: ['tests/index.html'],\n patterns: this.configReplacePatterns,\n annotation: 'ConfigReplace/testIndexTree',\n });\n }\n\n @Memoize()\n babelConfig(): TransformOptions {\n // this finds all the built-in babel configuration that comes with ember-cli-babel\n const babelAddon = (this.legacyEmberAppInstance.project as any).findAddonByName('ember-cli-babel');\n const babelConfig = babelAddon.buildBabelOptions({\n 'ember-cli-babel': {\n ...this.legacyEmberAppInstance.options['ember-cli-babel'],\n includeExternalHelpers: true,\n compileModules: false,\n disableDebugTooling: false,\n disablePresetEnv: false,\n disableEmberModulesAPIPolyfill: false,\n },\n });\n\n let plugins = babelConfig.plugins as any[];\n let presets = babelConfig.presets;\n\n // this finds any custom babel configuration that's on the app (either\n // because the app author explicitly added some, or because addons have\n // pushed plugins into it).\n let appBabel = this.legacyEmberAppInstance.options.babel;\n if (appBabel) {\n if (appBabel.plugins) {\n plugins = appBabel.plugins.concat(plugins);\n }\n if (appBabel.presets) {\n presets = appBabel.presets.concat(presets);\n }\n }\n\n plugins = plugins.filter(p => {\n // even if the app was using @embroider/macros, we drop it from the config\n // here in favor of our globally-configured one.\n return (\n !isEmbroiderMacrosPlugin(p) &&\n // similarly, if the app was already using an inline template compiler\n // babel plugin, we remove it here because we have our own\n // always-installed version of that (v2 addons are allowed to assume it\n // will be present in the final app build, the app doesn't get to turn\n // that off or configure it.)\n !isInlinePrecompilePlugin(p) &&\n !isEmberAutoImportDynamic(p)\n );\n });\n\n const config: TransformOptions = {\n babelrc: false,\n plugins,\n presets,\n // this is here because broccoli-middleware can't render a codeFrame full\n // of terminal codes. It would be nice to add something like\n // https://github.com/mmalecki/ansispan to broccoli-middleware so we can\n // leave color enabled.\n highlightCode: false,\n };\n\n return config;\n }\n\n @Memoize()\n babelMajorVersion(): 7 {\n let babelAddon = this.legacyEmberAppInstance.project.addons.find((a: any) => a.name === 'ember-cli-babel');\n if (babelAddon) {\n let babelAddonMajor = Number(babelAddon.pkg.version.split('.')[0]);\n let babelMajor: number | undefined = babelAddonMajor;\n if (babelAddonMajor >= 8) {\n // `ember-cli-babel` v8 breaks lockstep with Babel, because it now\n // defines `@babel/core` as a peer dependency, so we need to check the\n // project's version of `@babel/core`:\n let babelVersion = this.legacyEmberAppInstance.project.pkg.devDependencies?.['@babel/core'];\n if (babelVersion) {\n babelMajor = semver.coerce(babelVersion)?.major;\n } else {\n babelMajor = 7;\n }\n }\n if (babelMajor !== 7) {\n throw new Error('`@embroider/compat` only supports apps and addons that use Babel v7.');\n }\n return babelMajor;\n }\n // if we didn't have our own babel plugin at all, it's safe to parse our\n // code with 7.\n return 7;\n }\n\n @Memoize()\n private transformedNodeFiles(): Map<string, string> {\n // any app.imports from node_modules that need custom transforms will need\n // to get copied into our own synthesized vendor package. app.imports from\n // node_modules that *don't* need custom transforms can just stay where they\n // are.\n let transformed = new Map();\n for (let transformConfig of this.legacyEmberAppInstance._customTransformsMap.values()) {\n for (let filename of transformConfig.files as string[]) {\n let preresolved = this.preresolvedNodeFile(filename);\n if (preresolved) {\n transformed.set(filename, preresolved);\n }\n }\n }\n return transformed;\n }\n\n private preresolvedNodeFile(filename: string) {\n // this regex is an exact copy of how ember-cli does this, so we align.\n let match = filename.match(/^node_modules\\/((@[^/]+\\/)?[^/]+)\\//);\n if (match) {\n // ember-cli has already done its own resolution of\n // `app.import('node_modules/something/...')`, so we go find its answer.\n for (let { name, path } of this.legacyEmberAppInstance._nodeModules.values()) {\n if (match[1] === name) {\n return filename.replace(match[0], path + sep);\n }\n }\n throw new Error(`bug: expected ember-cli to already have a resolved path for asset ${filename}`);\n }\n }\n\n private combinedVendor(addonTrees: BroccoliNode[]): BroccoliNode {\n let trees = addonTrees.map(tree =>\n buildFunnel(tree, {\n allowEmpty: true,\n srcDir: 'vendor',\n destDir: 'vendor',\n })\n );\n if (this.vendorTree) {\n trees.push(\n buildFunnel(this.vendorTree, {\n destDir: 'vendor',\n })\n );\n }\n\n const tree = mergeTrees(trees, { overwrite: true });\n\n const outputGroups: Group[] = [\n // scripts\n {\n outputFiles: this.legacyEmberAppInstance._scriptOutputFiles,\n implicitKey: '_implicitScripts',\n vendorOutputPath: this.legacyEmberAppInstance.options.outputPaths.vendor.js,\n },\n // styles\n {\n outputFiles: this.legacyEmberAppInstance._styleOutputFiles,\n implicitKey: '_implicitStyles',\n vendorOutputPath: this.legacyEmberAppInstance.options.outputPaths.vendor.css,\n },\n ];\n\n const concatentations = [];\n\n // support: app.import / outputFile / using\n for (let entry of outputGroups) {\n const { outputFiles, implicitKey, vendorOutputPath } = entry;\n for (let importPath of Object.keys(outputFiles)) {\n const headerFiles = outputFiles[importPath];\n\n if (importPath === vendorOutputPath) {\n // these are the default ember-cli output files vendor.js or\n // vendor.css. Let embroider handle these.\n this[implicitKey] = headerFiles;\n } else if (headerFiles.length === 0) {\n // something went really wrong, open an issue\n throw new Error('Embroider: EWUT');\n } else if (headerFiles.length === 1) {\n // app.import(x, { outputFile: y }); where only one app.imports had this outputFile\n //\n // No concat needed. Simply serialize the remapping in the addon's\n // manifest, this ensures it is included in the final output with no extra work.\n this._publicAssets[headerFiles[0]] = importPath;\n } else {\n // app.import(x, { outputFile: y }); where multiple app.imports share one outputFile\n // Concat needed. Perform concat, and include the outputFile in the\n // addon's manifest. This ensures it is included in the final output\n this._publicAssets[importPath] = importPath;\n\n concatentations.push(\n new Concat(tree, {\n headerFiles,\n outputFile: importPath,\n annotation: `Package ${importPath}`,\n separator: '\\n;',\n sourceMapConfig: this.legacyEmberAppInstance.options['sourcemaps'],\n })\n );\n }\n }\n }\n\n this.addOtherAssets();\n return mergeTrees([tree, ...concatentations], { overwrite: true });\n }\n\n private addOtherAssets() {\n for (let asset of this.legacyEmberAppInstance.otherAssetPaths) {\n this._publicAssets[`${asset.src}/${asset.file}`] = `${asset.dest}/${asset.file}`;\n }\n }\n\n private addNodeAssets(inputTree: BroccoliNode): BroccoliNode {\n let transformedNodeFiles = this.transformedNodeFiles();\n\n return new AddToTree(inputTree, outputPath => {\n for (let [localDestPath, sourcePath] of transformedNodeFiles) {\n let destPath = join(outputPath, localDestPath);\n ensureDirSync(dirname(destPath));\n copySync(sourcePath, destPath);\n }\n\n let remapAsset = this.remapAsset.bind(this);\n\n let addonMeta: AddonMeta = {\n type: 'addon',\n version: 2,\n 'implicit-scripts': this._implicitScripts.map(remapAsset),\n 'implicit-styles': this._implicitStyles.map(remapAsset),\n 'implicit-test-scripts': this.legacyEmberAppInstance.legacyTestFilesToAppend.map(remapAsset),\n 'implicit-test-styles': this.legacyEmberAppInstance.vendorTestStaticStyles.map(remapAsset),\n 'public-assets': mapKeys(this._publicAssets, (_, key) => remapAsset(key)),\n };\n let meta: PackageInfo = {\n name: '@embroider/synthesized-vendor',\n version: '0.0.0',\n keywords: ['ember-addon'],\n 'ember-addon': addonMeta,\n };\n writeJSONSync(join(outputPath, 'package.json'), meta, { spaces: 2 });\n });\n }\n\n synthesizeVendorPackage(addonTrees: BroccoliNode[]): BroccoliNode {\n return this.applyCustomTransforms(this.addNodeAssets(this.combinedVendor(addonTrees)));\n }\n\n private combinedStyles(addonTrees: BroccoliNode[]): BroccoliNode {\n let trees: BroccoliNode[] = addonTrees.map(tree =>\n buildFunnel(tree, {\n allowEmpty: true,\n srcDir: '_app_styles_',\n })\n );\n let appStyles = this.legacyEmberAppInstance.trees.styles as BroccoliNode | undefined;\n if (appStyles) {\n // Workaround for https://github.com/ember-cli/ember-cli/issues/9020\n //\n // The default app styles tree is unwatched and relies on side effects\n // elsewhere in ember-cli's build pipeline to actually get rebuilds to\n // work. Here we need it to actually be watched properly if we want to\n // rely on it, particularly when using BROCCOLI_ENABLED_MEMOIZE.\n if ((appStyles as any)._watched === false && (appStyles as any)._directoryPath) {\n appStyles = new WatchedDir((appStyles as any)._directoryPath);\n }\n trees.push(appStyles);\n }\n return mergeTrees(trees, { overwrite: true, annotation: 'embroider-v1-app-combined-styles' });\n }\n\n synthesizeStylesPackage(addonTrees: BroccoliNode[]): BroccoliNode {\n let options = {\n // we're deliberately not allowing this to be customized. It's an\n // internal implementation detail, and respecting outputPaths here is\n // unnecessary complexity. The corresponding code that adjusts the HTML\n // <link> is in updateHTML in app.ts.\n outputPaths: { app: `/assets/${this.name}.css` },\n registry: this.legacyEmberAppInstance.registry,\n minifyCSS: this.legacyEmberAppInstance.options.minifyCSS.options,\n };\n\n let nestedInput = buildFunnel(this.combinedStyles(addonTrees), { destDir: 'app/styles' });\n let styles = this.preprocessors.preprocessCss(nestedInput, '/app/styles', '/assets', options);\n\n return new AddToTree(styles, outputPath => {\n let addonMeta: AddonMeta = {\n type: 'addon',\n version: 2,\n 'public-assets': {},\n };\n let assetPath = join(outputPath, 'assets');\n if (pathExistsSync(assetPath)) {\n for (let file of readdirSync(assetPath)) {\n addonMeta['public-assets']![`./assets/${file}`] = `/assets/${file}`;\n }\n }\n let meta: PackageInfo = {\n name: '@embroider/synthesized-styles',\n version: '0.0.0',\n keywords: ['ember-addon'],\n 'ember-addon': addonMeta,\n };\n writeJSONSync(join(outputPath, 'package.json'), meta, { spaces: 2 });\n });\n }\n\n // this is taken nearly verbatim from ember-cli.\n private applyCustomTransforms(externalTree: BroccoliNode) {\n for (let customTransformEntry of this.legacyEmberAppInstance._customTransformsMap) {\n let transformName = customTransformEntry[0];\n let transformConfig = customTransformEntry[1];\n\n let transformTree = buildFunnel(externalTree, {\n files: transformConfig.files,\n annotation: `Funnel (custom transform: ${transformName})`,\n });\n\n externalTree = mergeTrees([externalTree, transformConfig.callback(transformTree, transformConfig.options)], {\n annotation: `TreeMerger (custom transform: ${transformName})`,\n overwrite: true,\n });\n }\n return externalTree;\n }\n\n private remapAsset(asset: string) {\n if (this.transformedNodeFiles().has(asset)) {\n // transformed node assets become local paths, because we have copied\n // those ones into our synthesized vendor package.\n return './' + asset;\n }\n let preresolved = this.preresolvedNodeFile(asset);\n if (preresolved) {\n // non-transformed node assets point directly at their pre-resolved\n // original files (this is an absolute path).\n return preresolved;\n }\n // non node assets are local paths. They need an explicit `/` or `.` at\n // the start.\n if (asset.startsWith('.') || isAbsolute(asset)) {\n return asset;\n }\n return './' + asset;\n }\n\n private preprocessJS(tree: BroccoliNode): BroccoliNode {\n // we're saving all our babel compilation for the final stage packager\n this.legacyEmberAppInstance.registry.remove('js', 'ember-cli-babel');\n\n // auto-import is supported natively so we don't need it here\n this.legacyEmberAppInstance.registry.remove('js', 'ember-auto-import-analyzer');\n\n tree = buildFunnel(tree, { destDir: this.name });\n\n tree = this.preprocessors.preprocessJs(tree, `/`, '/', {\n annotation: 'v1-app-preprocess-js',\n registry: this.legacyEmberAppInstance.registry,\n });\n\n tree = buildFunnel(tree, { srcDir: this.name });\n\n return tree;\n }\n\n get htmlbarsPlugins(): Transform[] {\n let plugins = loadAstPlugins(this.legacyEmberAppInstance.registry);\n // even if the app was using @embroider/macros, we drop it from the config\n // here in favor of our globally-configured one.\n plugins = plugins.filter((p: any) => !isEmbroiderMacrosPlugin(p));\n return plugins;\n }\n\n // our own appTree. Not to be confused with the one that combines the app js\n // from all addons too.\n private get appTree(): BroccoliNode {\n return this.preprocessJS(\n buildFunnel(this.legacyEmberAppInstance.trees.app, {\n exclude: ['styles/**', '*.html'],\n })\n );\n }\n\n private get testsTree(): BroccoliNode | undefined {\n if (this.shouldBuildTests && this.legacyEmberAppInstance.trees.tests) {\n return this.preprocessJS(\n buildFunnel(this.legacyEmberAppInstance.trees.tests, {\n destDir: 'tests',\n })\n );\n }\n }\n\n private get lintTree(): BroccoliNode | undefined {\n if (this.shouldBuildTests) {\n return this.legacyEmberAppInstance.getLintTests();\n }\n }\n\n private get vendorTree(): BroccoliNode | undefined {\n return this.ensureTree(this.legacyEmberAppInstance.trees.vendor);\n }\n\n private ensureTree(maybeTree: string | BroccoliNode | undefined): BroccoliNode | undefined {\n if (typeof maybeTree === 'string') {\n // this is deliberately mimicking how ember-cli does it. We don't use\n // `this.root` on purpose, because that can differ from what ember-cli\n // considers the project.root. And we don't use path.resolve even though\n // that seems possibly more correct, because ember-cli always assumes the\n // input is relative.\n let resolvedPath = join(this.legacyEmberAppInstance.project.root, maybeTree);\n if (existsSync(resolvedPath)) {\n return new WatchedDir(maybeTree);\n } else {\n return undefined;\n }\n }\n return maybeTree;\n }\n\n @Memoize()\n private get preprocessors(): Preprocessors {\n return this.requireFromEmberCLI('ember-cli-preprocess-registry/preprocessors');\n }\n\n private get publicTree(): BroccoliNode | undefined {\n return this.ensureTree(this.legacyEmberAppInstance.trees.public);\n }\n\n private processAppJS(): { appJS: BroccoliNode } {\n let appTree = this.appTree;\n let testsTree = this.testsTree;\n let lintTree = this.lintTree;\n let config = new WriteV1Config(this.config, this.storeConfigInMeta, this.testConfig);\n let patterns = this.configReplacePatterns;\n let configReplaced = new this.configReplace(config, this.configTree, {\n configPath: join('environments', `${this.legacyEmberAppInstance.env}.json`),\n files: ['config/environment.js'],\n patterns,\n });\n\n let trees: BroccoliNode[] = [];\n trees.push(appTree);\n trees.push(\n new SynthesizeTemplateOnlyComponents(appTree, { allowedPaths: ['components'], templateExtensions: ['.hbs'] })\n );\n\n trees.push(configReplaced);\n if (testsTree) {\n trees.push(testsTree);\n }\n if (lintTree) {\n trees.push(lintTree);\n }\n return {\n appJS: mergeTrees(trees, { overwrite: true }),\n };\n }\n\n private withoutRootURL(src: string) {\n let rootURL = this.config.readConfig().rootURL;\n if ((src.startsWith(rootURL) && rootURL) || (!rootURL && !src.startsWith('/'))) {\n src = '/' + src.slice(rootURL.length);\n } else if (src.startsWith('/' + rootURL)) {\n src = src.slice(rootURL.length);\n }\n return src;\n }\n\n findAppScript(scripts: HTMLScriptElement[], entrypoint: string): HTMLScriptElement {\n let appJS = scripts.find(\n script => this.withoutRootURL(script.src) === this.legacyEmberAppInstance.options.outputPaths.app.js\n );\n return throwIfMissing(\n appJS,\n this.legacyEmberAppInstance.options.outputPaths.app.js,\n scripts.map(s => s.src),\n entrypoint,\n 'app javascript'\n );\n }\n\n findAppStyles(styles: HTMLLinkElement[], entrypoint: string): HTMLLinkElement {\n let style = styles.find(\n style => this.withoutRootURL(style.href) === this.legacyEmberAppInstance.options.outputPaths.app.css.app\n );\n return throwIfMissing(\n style,\n this.legacyEmberAppInstance.options.outputPaths.app.css.app,\n styles.map(s => s.href),\n entrypoint,\n 'app css'\n );\n }\n\n findVendorScript(scripts: HTMLScriptElement[], entrypoint: string): HTMLScriptElement {\n let vendor = scripts.find(\n script => this.withoutRootURL(script.src) === this.legacyEmberAppInstance.options.outputPaths.vendor.js\n );\n return throwIfMissing(\n vendor,\n this.legacyEmberAppInstance.options.outputPaths.vendor.js,\n scripts.map(s => s.src),\n entrypoint,\n 'vendor javascript'\n );\n }\n\n findVendorStyles(styles: HTMLLinkElement[], entrypoint: string): HTMLLinkElement {\n let vendorStyle = styles.find(\n style => this.withoutRootURL(style.href) === this.legacyEmberAppInstance.options.outputPaths.vendor.css\n );\n return throwIfMissing(\n vendorStyle,\n this.legacyEmberAppInstance.options.outputPaths.vendor.css,\n styles.map(s => s.href),\n entrypoint,\n 'vendor css'\n );\n }\n\n findTestSupportStyles(styles: HTMLLinkElement[]): HTMLLinkElement | undefined {\n return styles.find(\n style => this.withoutRootURL(style.href) === this.legacyEmberAppInstance.options.outputPaths.testSupport.css\n );\n }\n\n findTestSupportScript(scripts: HTMLScriptElement[]): HTMLScriptElement | undefined {\n return scripts.find(\n script =>\n this.withoutRootURL(script.src) === this.legacyEmberAppInstance.options.outputPaths.testSupport.js.testSupport\n );\n }\n\n findTestScript(scripts: HTMLScriptElement[]): HTMLScriptElement | undefined {\n return scripts.find(\n script => this.withoutRootURL(script.src) === this.legacyEmberAppInstance.options.outputPaths.tests.js\n );\n }\n\n readonly macrosConfig: MacrosConfig;\n\n constructor(readonly legacyEmberAppInstance: EmberAppInstance, _options?: Options) {\n this.options = optionsWithDefaults(_options);\n\n this.macrosConfig = MacrosConfig.for(legacyEmberAppInstance, this.root);\n if (this.env !== 'production') {\n this.macrosConfig.enablePackageDevelopment(this.root);\n this.macrosConfig.enableRuntimeMode();\n if (this.isDummy) {\n // dummy apps automatically put their owning addon under development too\n this.macrosConfig.enablePackageDevelopment(\n dirname(pkgUpSync({ cwd: this.legacyEmberAppInstance.project.root })!)\n );\n }\n }\n\n // this uses globalConfig because it's a way for packages to ask \"is\n // Embroider doing this build?\". So it's necessarily global, not scoped to\n // any subgraph of dependencies.\n this.macrosConfig.setGlobalConfig(__filename, `@embroider/core`, {\n // this is hard-coded to true because it literally means \"embroider is\n // building this Ember app\". You can see non-true when using the Embroider\n // macros in a classic build.\n active: true,\n });\n }\n\n private inTrees(prevStageTree: BroccoliNode) {\n let publicTree = this.publicTree;\n let configTree = this.config;\n\n if (this.options.extraPublicTrees.length > 0) {\n publicTree = mergeTrees([publicTree, ...this.options.extraPublicTrees].filter(Boolean) as BroccoliNode[]);\n }\n\n return {\n appJS: this.processAppJS().appJS,\n htmlTree: this.htmlTree,\n publicTree,\n configTree,\n appBootTree: this.appBoot,\n prevStageTree,\n };\n }\n\n @Memoize()\n appPackage(): Package {\n // this is deliberately not RewrittenPackageCache, because it's supposed to\n // be the original copy of the app with all the original dependencies.\n let packageCache = PackageCache.shared('embroider', this.root);\n if (this.isDummy) {\n return new DummyPackage(\n this.root,\n this.legacyEmberAppInstance.project.root,\n packageCache as unknown as PackageCache // TODO: cast won't be needed when refactor is complete\n );\n } else {\n return packageCache.get(this.root);\n }\n }\n\n private async instantiate(root: string, packageCache: RewrittenPackageCache, configTree: V1Config) {\n let origAppPkg = this.appPackage();\n let movedAppPkg = packageCache.withRewrittenDeps(origAppPkg);\n let workingDir = locateEmbroiderWorkingDir(this.root);\n return new CompatAppBuilder(\n root,\n origAppPkg,\n movedAppPkg,\n this.options,\n this,\n configTree,\n packageCache.get(join(workingDir, 'rewritten-packages', '@embroider', 'synthesized-vendor')),\n packageCache.get(join(workingDir, 'rewritten-packages', '@embroider', 'synthesized-styles'))\n );\n }\n\n asStage(prevStage: Stage): Stage {\n let resolve: (result: { outputPath: string }) => void;\n let promise: Promise<{ outputPath: string }> = new Promise(r => (resolve = r));\n\n let tree = () => {\n let inTrees = this.inTrees(prevStage.tree);\n return new WaitForTrees(inTrees, this.annotation, async treePaths => {\n if (!this.active) {\n let { outputPath } = await prevStage.ready();\n let packageCache = RewrittenPackageCache.shared('embroider', this.root);\n this.active = await this.instantiate(outputPath, packageCache, inTrees.configTree);\n resolve({ outputPath });\n }\n await this.active.build(treePaths);\n });\n };\n\n return {\n get inputPath() {\n return prevStage.inputPath;\n },\n ready: async () => {\n return await promise;\n },\n get tree() {\n return tree();\n },\n };\n }\n}\n\ninterface Preprocessors {\n preprocessJs(tree: BroccoliNode, a: string, b: string, options: object): BroccoliNode;\n preprocessCss(tree: BroccoliNode, a: string, b: string, options: object): BroccoliNode;\n}\n\nfunction throwIfMissing<T>(\n asset: T | undefined,\n needle: string,\n haystack: string[],\n entryfile: string,\n context: string\n): T {\n if (!asset) {\n throw new Error(\n `Could not find ${context}: \"${needle}\" in ${entryfile}. Found the following instead:\\n${haystack\n .map(asset => ` - ${asset}`)\n .join(\n '\\n'\n )}\\n\\nFor more information about this error: https://github.com/thoov/stitch/wiki/Could-not-find-asset-in-entry-file-error-help`\n );\n }\n\n return asset;\n}\n"]}
|
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
import type Options from '
|
|
1
|
+
import type { Options } from '.';
|
|
2
2
|
import type { PackagerConstructor, Variant, EmberAppInstance } from '@embroider/core';
|
|
3
3
|
import type { Node } from 'broccoli-node-api';
|
|
4
4
|
export interface PipelineOptions<PackagerOptions> extends Options {
|
|
5
5
|
packagerOptions?: PackagerOptions;
|
|
6
|
+
onOutputPath?: (outputPath: string) => void;
|
|
6
7
|
variants?: Variant[];
|
|
7
8
|
}
|
|
8
9
|
export declare function stableWorkspaceDir(appRoot: string, environment: string): string;
|
|
9
10
|
export default function defaultPipeline<PackagerOptions>(emberApp: EmberAppInstance, packager?: PackagerConstructor<PackagerOptions>, options?: PipelineOptions<PackagerOptions>): Node;
|
|
10
|
-
export declare function prebuild(emberApp: EmberAppInstance, options?: Options): Node;
|
package/src/default-pipeline.js
CHANGED
|
@@ -5,8 +5,6 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
6
|
exports.stableWorkspaceDir = stableWorkspaceDir;
|
|
7
7
|
exports.default = defaultPipeline;
|
|
8
|
-
exports.prebuild = prebuild;
|
|
9
|
-
const options_1 = require("./options");
|
|
10
8
|
const _1 = require(".");
|
|
11
9
|
const core_1 = require("@embroider/core");
|
|
12
10
|
const core_2 = require("@embroider/core");
|
|
@@ -39,25 +37,6 @@ function defaultPipeline(emberApp, packager, options = {}) {
|
|
|
39
37
|
let variants = (options && options.variants) || defaultVariants(emberApp);
|
|
40
38
|
return new BroccoliPackager(embroiderApp.asStage(addons), variants, options && options.packagerOptions);
|
|
41
39
|
}
|
|
42
|
-
const defaultPrebuildOptions = {
|
|
43
|
-
...options_1.recommendedOptions.optimized,
|
|
44
|
-
amdCompatibility: {
|
|
45
|
-
es: [],
|
|
46
|
-
},
|
|
47
|
-
};
|
|
48
|
-
function prebuild(emberApp, options) {
|
|
49
|
-
let outputPath;
|
|
50
|
-
let addons;
|
|
51
|
-
let embroiderApp = new _1.App(emberApp, { ...defaultPrebuildOptions, ...options });
|
|
52
|
-
addons = new _1.Addons(embroiderApp);
|
|
53
|
-
addons.ready().then(result => {
|
|
54
|
-
outputPath = result.outputPath;
|
|
55
|
-
});
|
|
56
|
-
if (process.env.STAGE1_ONLY) {
|
|
57
|
-
return (0, broccoli_merge_trees_1.default)([addons.tree, (0, broccoli_file_creator_1.default)('.stage1-output', () => outputPath)]);
|
|
58
|
-
}
|
|
59
|
-
return (0, broccoli_merge_trees_1.default)([embroiderApp.asStage(addons).tree, (0, broccoli_file_creator_1.default)('.stage2-output', () => outputPath)]);
|
|
60
|
-
}
|
|
61
40
|
function hasFastboot(emberApp) {
|
|
62
41
|
return emberApp.project.addons.find(a => a.name === 'ember-cli-fastboot');
|
|
63
42
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"default-pipeline.js","sourceRoot":"","sources":["default-pipeline.ts"],"names":[],"mappings":";;;;;AAkBA,gDAKC;AAED,kCA0BC;
|
|
1
|
+
{"version":3,"file":"default-pipeline.js","sourceRoot":"","sources":["default-pipeline.ts"],"names":[],"mappings":";;;;;AAkBA,gDAKC;AAED,kCA0BC;AAlDD,wBAAgD;AAEhD,0CAAmD;AACnD,0CAAyC;AAEzC,kFAA8C;AAC9C,gFAA8C;AAC9C,mCAAoC;AACpC,+BAAqC;AACrC,mCAA2C;AAQ3C,SAAgB,kBAAkB,CAAC,OAAe,EAAE,WAAmB;IACrE,IAAI,IAAI,GAAG,IAAA,mBAAU,EAAC,KAAK,CAAC,CAAC;IAC7B,IAAI,CAAC,MAAM,CAAC,IAAA,cAAO,EAAC,IAAA,aAAS,EAAC,EAAE,GAAG,EAAE,OAAO,EAAE,CAAE,CAAC,CAAC,CAAC;IACnD,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;IACzB,OAAO,IAAA,WAAI,EAAC,aAAM,EAAE,WAAW,EAAE,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;AACnE,CAAC;AAED,SAAwB,eAAe,CACrC,QAA0B,EAC1B,QAA+C,EAC/C,UAA4C,EAAE;IAE9C,IAAI,UAAkB,CAAC;IACvB,IAAI,MAAM,CAAC;IAEX,IAAI,YAAY,GAAG,IAAI,MAAG,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;IAE9C,MAAM,GAAG,IAAI,SAAY,CAAC,YAAY,CAAC,CAAC;IACxC,MAAM,CAAC,KAAK,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE;QAC3B,UAAU,GAAG,MAAM,CAAC,UAAU,CAAC;IACjC,CAAC,CAAC,CAAC;IAEH,IAAI,OAAO,CAAC,GAAG,CAAC,WAAW,EAAE,CAAC;QAC5B,OAAO,IAAA,8BAAU,EAAC,CAAC,MAAM,CAAC,IAAI,EAAE,IAAA,+BAAS,EAAC,gBAAgB,EAAE,GAAG,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;IAClF,CAAC;IAED,IAAI,OAAO,CAAC,GAAG,CAAC,WAAW,IAAI,CAAC,QAAQ,EAAE,CAAC;QACzC,OAAO,IAAA,8BAAU,EAAC,CAAC,YAAY,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,IAAA,+BAAS,EAAC,gBAAgB,EAAE,GAAG,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;IACxG,CAAC;IAED,IAAI,gBAAgB,GAAG,IAAA,uBAAgB,EAAC,QAAQ,CAAC,CAAC;IAClD,IAAI,QAAQ,GAAG,CAAC,OAAO,IAAI,OAAO,CAAC,QAAQ,CAAC,IAAI,eAAe,CAAC,QAAQ,CAAC,CAAC;IAC1E,OAAO,IAAI,gBAAgB,CAAC,YAAY,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,QAAQ,EAAE,OAAO,IAAI,OAAO,CAAC,eAAe,CAAC,CAAC;AAC1G,CAAC;AAED,SAAS,WAAW,CAAC,QAA6C;IAChE,OAAO,QAAQ,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,oBAAoB,CAAC,CAAC;AAC5E,CAAC;AAED,SAAS,eAAe,CAAC,QAA0B;IACjD,IAAI,QAAQ,GAAc,EAAE,CAAC;IAC7B,IAAI,QAAQ,CAAC,GAAG,KAAK,YAAY,EAAE,CAAC;QAClC,QAAQ,CAAC,IAAI,CAAC;YACZ,IAAI,EAAE,SAAS;YACf,OAAO,EAAE,SAAS;YAClB,qBAAqB,EAAE,IAAI;SAC5B,CAAC,CAAC;QACH,IAAI,WAAW,CAAC,QAAQ,CAAC,EAAE,CAAC;YAC1B,QAAQ,CAAC,IAAI,CAAC;gBACZ,IAAI,EAAE,UAAU;gBAChB,OAAO,EAAE,UAAU;gBACnB,qBAAqB,EAAE,IAAI;aAC5B,CAAC,CAAC;QACL,CAAC;IACH,CAAC;SAAM,CAAC;QACN,QAAQ,CAAC,IAAI,CAAC;YACZ,IAAI,EAAE,KAAK;YACX,OAAO,EAAE,WAAW,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS;YAClD,qBAAqB,EAAE,KAAK;SAC7B,CAAC,CAAC;IACL,CAAC;IACD,OAAO,QAAQ,CAAC;AAClB,CAAC","sourcesContent":["import type { Options } from '.';\nimport { App, Addons as CompatAddons } from '.';\nimport type { PackagerConstructor, Variant, EmberAppInstance } from '@embroider/core';\nimport { toBroccoliPlugin } from '@embroider/core';\nimport { tmpdir } from '@embroider/core';\nimport type { 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 let embroiderApp = new App(emberApp, options);\n\n addons = new CompatAddons(embroiderApp);\n addons.ready().then(result => {\n outputPath = result.outputPath;\n });\n\n if (process.env.STAGE1_ONLY) {\n return mergeTrees([addons.tree, writeFile('.stage1-output', () => outputPath)]);\n }\n\n if (process.env.STAGE2_ONLY || !packager) {\n return mergeTrees([embroiderApp.asStage(addons).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.asStage(addons), 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"]}
|
|
@@ -21,6 +21,12 @@ class default_1 extends broccoli_plugin_1.default {
|
|
|
21
21
|
(0, fs_extra_1.writeJSONSync)((0, path_1.join)(this.outputPath, 'package.json'), {
|
|
22
22
|
name: this.originalPackage.name,
|
|
23
23
|
version: this.originalPackage.version,
|
|
24
|
+
keywords: ['ember-addon'],
|
|
25
|
+
'ember-addon': {
|
|
26
|
+
version: 2,
|
|
27
|
+
type: 'addon',
|
|
28
|
+
'auto-upgraded': true,
|
|
29
|
+
},
|
|
24
30
|
'//': 'This empty package was created by embroider. See https://github.com/embroider-build/embroider/blob/main/docs/empty-package-output.md',
|
|
25
31
|
});
|
|
26
32
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"empty-package-tree.js","sourceRoot":"","sources":["empty-package-tree.ts"],"names":[],"mappings":";;;;;AACA,sEAAqC;AACrC,uCAAyC;AACzC,+BAA4B;AAE5B,eAAqB,SAAQ,yBAAM;IAGjC,YAAoB,eAAwB;QAC1C,KAAK,CAAC,EAAE,EAAE;YACR,UAAU,EAAE,oBAAoB;YAChC,gBAAgB,EAAE,IAAI;YACtB,UAAU,EAAE,KAAK;SAClB,CAAC,CAAC;QALe,oBAAe,GAAf,eAAe,CAAS;QAFpC,UAAK,GAAG,KAAK,CAAC;IAQtB,CAAC;IACD,KAAK;QACH,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;YAChB,IAAA,wBAAa,EAAC,IAAA,WAAI,EAAC,IAAI,CAAC,UAAU,EAAE,cAAc,CAAC,EAAE;gBACnD,IAAI,EAAE,IAAI,CAAC,eAAe,CAAC,IAAI;gBAC/B,OAAO,EAAE,IAAI,CAAC,eAAe,CAAC,OAAO;gBACrC,IAAI,EAAE,sIAAsI;aAC7I,CAAC,CAAC;QACL,CAAC;IACH,CAAC;CACF;
|
|
1
|
+
{"version":3,"file":"empty-package-tree.js","sourceRoot":"","sources":["empty-package-tree.ts"],"names":[],"mappings":";;;;;AACA,sEAAqC;AACrC,uCAAyC;AACzC,+BAA4B;AAE5B,eAAqB,SAAQ,yBAAM;IAGjC,YAAoB,eAAwB;QAC1C,KAAK,CAAC,EAAE,EAAE;YACR,UAAU,EAAE,oBAAoB;YAChC,gBAAgB,EAAE,IAAI;YACtB,UAAU,EAAE,KAAK;SAClB,CAAC,CAAC;QALe,oBAAe,GAAf,eAAe,CAAS;QAFpC,UAAK,GAAG,KAAK,CAAC;IAQtB,CAAC;IACD,KAAK;QACH,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;YAChB,IAAA,wBAAa,EAAC,IAAA,WAAI,EAAC,IAAI,CAAC,UAAU,EAAE,cAAc,CAAC,EAAE;gBACnD,IAAI,EAAE,IAAI,CAAC,eAAe,CAAC,IAAI;gBAC/B,OAAO,EAAE,IAAI,CAAC,eAAe,CAAC,OAAO;gBACrC,QAAQ,EAAE,CAAC,aAAa,CAAC;gBACzB,aAAa,EAAE;oBACb,OAAO,EAAE,CAAC;oBACV,IAAI,EAAE,OAAO;oBACb,eAAe,EAAE,IAAI;iBACtB;gBACD,IAAI,EAAE,sIAAsI;aAC7I,CAAC,CAAC;QACL,CAAC;IACH,CAAC;CACF;AAzBD,4BAyBC","sourcesContent":["import type { Package } from '@embroider/core';\nimport Plugin from 'broccoli-plugin';\nimport { writeJSONSync } from 'fs-extra';\nimport { join } from 'path';\n\nexport default class extends Plugin {\n private built = false;\n\n constructor(private originalPackage: Package) {\n super([], {\n annotation: 'empty-package-tree',\n persistentOutput: true,\n needsCache: false,\n });\n }\n build() {\n if (!this.built) {\n writeJSONSync(join(this.outputPath, 'package.json'), {\n name: this.originalPackage.name,\n version: this.originalPackage.version,\n keywords: ['ember-addon'],\n 'ember-addon': {\n version: 2,\n type: 'addon',\n 'auto-upgraded': true,\n },\n '//': 'This empty package was created by embroider. See https://github.com/embroider-build/embroider/blob/main/docs/empty-package-output.md',\n });\n }\n }\n}\n"]}
|
package/src/index.d.ts
CHANGED
|
@@ -2,5 +2,5 @@ export { default as App } from './compat-app';
|
|
|
2
2
|
export { default as Addons } from './compat-addons';
|
|
3
3
|
export { default as Options, recommendedOptions } from './options';
|
|
4
4
|
export { default as V1Addon } from './v1-addon';
|
|
5
|
-
export { default as compatBuild,
|
|
5
|
+
export { default as compatBuild, PipelineOptions } from './default-pipeline';
|
|
6
6
|
export { PackageRules, ModuleRules } from './dependency-rules';
|