@embroider/compat 1.8.3 → 1.9.0

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 CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@embroider/compat",
3
- "version": "1.8.3",
3
+ "version": "1.9.0",
4
4
  "private": false,
5
5
  "description": "Backward compatibility layer for the Embroider build system.",
6
6
  "repository": {
@@ -29,7 +29,7 @@
29
29
  "@babel/plugin-syntax-dynamic-import": "^7.8.3",
30
30
  "@babel/preset-env": "^7.14.5",
31
31
  "@babel/traverse": "^7.14.5",
32
- "@embroider/macros": "1.8.3",
32
+ "@embroider/macros": "1.9.0",
33
33
  "@embroider/shared-internals": "1.8.3",
34
34
  "@types/babel__code-frame": "^7.0.2",
35
35
  "@types/yargs": "^17.0.3",
@@ -85,7 +85,7 @@
85
85
  "typescript": "*"
86
86
  },
87
87
  "peerDependencies": {
88
- "@embroider/core": "1.8.3"
88
+ "@embroider/core": "^1.8.3"
89
89
  },
90
90
  "engines": {
91
91
  "node": "12.* || 14.* || >= 16"
@@ -1,11 +1,7 @@
1
1
  "use strict";
2
2
  var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
3
  if (k2 === undefined) k2 = k;
4
- var desc = Object.getOwnPropertyDescriptor(m, k);
5
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
- desc = { enumerable: true, get: function() { return m[k]; } };
7
- }
8
- Object.defineProperty(o, k2, desc);
4
+ Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
9
5
  }) : (function(o, m, k, k2) {
10
6
  if (k2 === undefined) k2 = k;
11
7
  o[k2] = m[k];
@@ -1 +1 @@
1
- {"version":3,"file":"build.js","sourceRoot":"","sources":["build.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,kDAA0B;AAC1B,sDAAoC;AAEpC,uCAA0C;AAEnC,KAAK,UAAU,QAAQ,CAAC,OAA0B;IACvD,IAAI,EAAE,OAAO,EAAE,GAAG,EAAE,GAAG,wDAAa,iBAAa,CAAC,IAAI,CAAC,WAAW,EAAE,EAAE,OAAO,EAAE,OAAO,CAAC,GAAG,EAAE,CAAC,GAAC,CAAC;IAC/F,OAAO,CAAC,GAAG,CAAC,WAAW,GAAG,MAAM,CAAC;IACjC,IAAI,OAAO,GAAG,IAAI,uBAAa,EAAE,CAAC;IAClC,IAAI,IAAI,GAAG,EAAE,GAAG,EAAE,OAAO,CAAC,GAAG,EAAE,EAAE,GAAG,EAAE,OAAO,CAAC,GAAG,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,EAAE,IAAI,EAAE,OAAO,CAAC,IAAI,EAAE,CAAC;IAC9F,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;IAC3B,mEAAmE;IACnE,8CAA8C;IAC9C,OAAO,CAAC,GAAG,GAAG,OAAO,CAAC,IAAI,GAAG,OAAO,CAAC,KAAK,GAAG,OAAO,CAAC,GAAG,CAAC;IACzD,IAAI;QACF,IAAI,MAAM,GAAG,MAAM,GAAG,CAAC;YACrB,OAAO,EAAE,CAAC,OAAO,CAAC;YAClB,YAAY,EAAE,OAAO;YACrB,WAAW,EAAE,OAAO;SACrB,CAAC,CAAC;QACH,IAAI,QAAQ,GAAG,OAAO,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC;QACrE,mEAAmE;QACnE,IAAI,QAAQ,IAAI,IAAI,IAAI,QAAQ,KAAK,CAAC,EAAE;YACtC,MAAM,IAAI,UAAU,CAClB,GAAG,eAAK,CAAC,MAAM,CAAC,uBAAuB,CAAC,qDAAqD,OAAO,CAAC,MAAM,EAAE,CAC9G,CAAC;SACH;KACF;YAAS;QACR,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACxB,OAAO,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC;QACvB,OAAO,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;QACzB,OAAO,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;KAC5B;AACH,CAAC;AA5BD,4BA4BC;AAED,MAAa,UAAW,SAAQ,KAAK;IAEnC,YAAY,WAAmB;QAC7B,KAAK,CAAC,WAAW,CAAC,CAAC;QAFrB,iBAAY,GAAG,IAAI,CAAC;IAGpB,CAAC;CACF;AALD,gCAKC;AAED,SAAgB,YAAY,CAAC,GAAQ;IACnC,OAAO,GAAG,aAAH,GAAG,uBAAH,GAAG,CAAE,YAAY,CAAC;AAC3B,CAAC;AAFD,oCAEC","sourcesContent":["import chalk from 'chalk';\nimport resolveModule from 'resolve';\nimport { AuditBuildOptions } from '../audit';\nimport { CaptureStream } from './capture';\n\nexport async function buildApp(options: AuditBuildOptions): Promise<void> {\n let { default: cli } = await import(resolveModule.sync('ember-cli', { basedir: options.app }));\n process.env.STAGE2_ONLY = 'true';\n let capture = new CaptureStream();\n let orig = { cwd: process.cwd(), log: console.log, error: console.error, warn: console.warn };\n process.chdir(options.app);\n // this is icky, but too many things in the build don't respect the\n // `outputStream`, etc, options we pass below.\n console.log = console.warn = console.error = capture.log;\n try {\n let result = await cli({\n cliArgs: ['build'],\n outputStream: capture,\n errorStream: capture,\n });\n let exitCode = typeof result === 'object' ? result.exitCode : result;\n // an undefined exit code means success, because of course it does.\n if (exitCode != null && exitCode !== 0) {\n throw new BuildError(\n `${chalk.yellow('Unable to begin audit')} because the build failed. Build output follows:\\n${capture.output}`\n );\n }\n } finally {\n process.chdir(orig.cwd);\n console.log = orig.log;\n console.warn = orig.warn;\n console.error = orig.error;\n }\n}\n\nexport class BuildError extends Error {\n isBuildError = true;\n constructor(buildOutput: string) {\n super(buildOutput);\n }\n}\n\nexport function isBuildError(err: any): err is BuildError {\n return err?.isBuildError;\n}\n"]}
1
+ {"version":3,"file":"build.js","sourceRoot":"","sources":["build.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;AAAA,kDAA0B;AAC1B,sDAAoC;AAEpC,uCAA0C;AAEnC,KAAK,UAAU,QAAQ,CAAC,OAA0B;IACvD,IAAI,EAAE,OAAO,EAAE,GAAG,EAAE,GAAG,wDAAa,iBAAa,CAAC,IAAI,CAAC,WAAW,EAAE,EAAE,OAAO,EAAE,OAAO,CAAC,GAAG,EAAE,CAAC,GAAC,CAAC;IAC/F,OAAO,CAAC,GAAG,CAAC,WAAW,GAAG,MAAM,CAAC;IACjC,IAAI,OAAO,GAAG,IAAI,uBAAa,EAAE,CAAC;IAClC,IAAI,IAAI,GAAG,EAAE,GAAG,EAAE,OAAO,CAAC,GAAG,EAAE,EAAE,GAAG,EAAE,OAAO,CAAC,GAAG,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,EAAE,IAAI,EAAE,OAAO,CAAC,IAAI,EAAE,CAAC;IAC9F,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;IAC3B,mEAAmE;IACnE,8CAA8C;IAC9C,OAAO,CAAC,GAAG,GAAG,OAAO,CAAC,IAAI,GAAG,OAAO,CAAC,KAAK,GAAG,OAAO,CAAC,GAAG,CAAC;IACzD,IAAI;QACF,IAAI,MAAM,GAAG,MAAM,GAAG,CAAC;YACrB,OAAO,EAAE,CAAC,OAAO,CAAC;YAClB,YAAY,EAAE,OAAO;YACrB,WAAW,EAAE,OAAO;SACrB,CAAC,CAAC;QACH,IAAI,QAAQ,GAAG,OAAO,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC;QACrE,mEAAmE;QACnE,IAAI,QAAQ,IAAI,IAAI,IAAI,QAAQ,KAAK,CAAC,EAAE;YACtC,MAAM,IAAI,UAAU,CAClB,GAAG,eAAK,CAAC,MAAM,CAAC,uBAAuB,CAAC,qDAAqD,OAAO,CAAC,MAAM,EAAE,CAC9G,CAAC;SACH;KACF;YAAS;QACR,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACxB,OAAO,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC;QACvB,OAAO,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;QACzB,OAAO,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;KAC5B;AACH,CAAC;AA5BD,4BA4BC;AAED,MAAa,UAAW,SAAQ,KAAK;IAEnC,YAAY,WAAmB;QAC7B,KAAK,CAAC,WAAW,CAAC,CAAC;QAFrB,iBAAY,GAAG,IAAI,CAAC;IAGpB,CAAC;CACF;AALD,gCAKC;AAED,SAAgB,YAAY,CAAC,GAAQ;IACnC,OAAO,GAAG,aAAH,GAAG,uBAAH,GAAG,CAAE,YAAY,CAAC;AAC3B,CAAC;AAFD,oCAEC","sourcesContent":["import chalk from 'chalk';\nimport resolveModule from 'resolve';\nimport { AuditBuildOptions } from '../audit';\nimport { CaptureStream } from './capture';\n\nexport async function buildApp(options: AuditBuildOptions): Promise<void> {\n let { default: cli } = await import(resolveModule.sync('ember-cli', { basedir: options.app }));\n process.env.STAGE2_ONLY = 'true';\n let capture = new CaptureStream();\n let orig = { cwd: process.cwd(), log: console.log, error: console.error, warn: console.warn };\n process.chdir(options.app);\n // this is icky, but too many things in the build don't respect the\n // `outputStream`, etc, options we pass below.\n console.log = console.warn = console.error = capture.log;\n try {\n let result = await cli({\n cliArgs: ['build'],\n outputStream: capture,\n errorStream: capture,\n });\n let exitCode = typeof result === 'object' ? result.exitCode : result;\n // an undefined exit code means success, because of course it does.\n if (exitCode != null && exitCode !== 0) {\n throw new BuildError(\n `${chalk.yellow('Unable to begin audit')} because the build failed. Build output follows:\\n${capture.output}`\n );\n }\n } finally {\n process.chdir(orig.cwd);\n console.log = orig.log;\n console.warn = orig.warn;\n console.error = orig.error;\n }\n}\n\nexport class BuildError extends Error {\n isBuildError = true;\n constructor(buildOutput: string) {\n super(buildOutput);\n }\n}\n\nexport function isBuildError(err: any): err is BuildError {\n return err?.isBuildError;\n}\n"]}
@@ -93,7 +93,7 @@ class CompatAddons {
93
93
  // the app is inside our addon. We must not copy the app as part of
94
94
  // the addon, because that would overwrite the real app build.
95
95
  ignore.push(rel);
96
- if (rel === 'tests/dummy') {
96
+ if (rel === `tests${path_1.sep}dummy`) {
97
97
  // special case: classic dummy apps are weird because they put the
98
98
  // tests (which are truly part of the app, not the addon) inside the
99
99
  // addon instead of inside the app.
@@ -113,6 +113,15 @@ class CompatAddons {
113
113
  // shell for its real module namespace.
114
114
  (0, fs_extra_1.copySync)((0, path_1.join)(destination, 'package.json'), (0, path_1.join)(newPkg.root, 'package.json'));
115
115
  }
116
+ }
117
+ });
118
+ // this has to be a separate pass over the packages because
119
+ // linkNonCopiedDeps resolves dependencies, so we want all the packages
120
+ // already in their new places before they start trying to resolve each
121
+ // other.
122
+ [...this.packageCache.moved.values()].forEach((newPkg, index) => {
123
+ if (!this.didBuild || // always copy on the first build
124
+ (newPkg.mayRebuild && changedMap.get(movedAddons[index]))) {
116
125
  // for engines, this isn't the mangled destination (we don't need
117
126
  // resolvable node_modules there), this is the empty shell of their real
118
127
  // location
@@ -1 +1 @@
1
- {"version":3,"file":"compat-addons.js","sourceRoot":"","sources":["compat-addons.ts"],"names":[],"mappings":"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","sourcesContent":["import { Node } from 'broccoli-node-api';\nimport { join, relative, dirname, isAbsolute } from 'path';\nimport { emptyDirSync, ensureSymlinkSync, ensureDirSync, realpathSync, copySync, writeJSONSync } from 'fs-extra';\nimport { Stage, Package, PackageCache, WaitForTrees, mangledEngineRoot } from '@embroider/core';\nimport V1InstanceCache from './v1-instance-cache';\nimport { MovedPackageCache } from './moved-package-cache';\nimport { Memoize } from 'typescript-memoize';\nimport buildCompatAddon from './build-compat-addon';\nimport Options, { optionsWithDefaults } from './options';\nimport V1App from './v1-app';\nimport TreeSync from 'tree-sync';\nimport { WatchedDir } from 'broccoli-source';\n\n// This build stage expects to be run with broccoli memoization enabled in order\n// to get good rebuild performance. We turn it on by default here, but you can\n// still explicitly turn it off by setting the env var to \"false\".\n//\n// As for safetly mutating process.env: broccoli doesn't read this until a Node\n// executes its build hook, so as far as I can tell there's no way we could set\n// this too late.\nif (typeof process.env.BROCCOLI_ENABLED_MEMOIZE === 'undefined') {\n process.env.BROCCOLI_ENABLED_MEMOIZE = 'true';\n}\n\nexport default class CompatAddons implements Stage {\n private didBuild = false;\n private destDir: string;\n private packageCache: MovedPackageCache;\n private treeSyncMap: WeakMap<Package, TreeSync>;\n private v1Cache: V1InstanceCache;\n readonly inputPath: string;\n\n constructor(legacyEmberAppInstance: object, maybeOptions?: Options) {\n let options = optionsWithDefaults(maybeOptions);\n let v1Cache = V1InstanceCache.forApp(legacyEmberAppInstance, options);\n\n // we want this to be stable across builds, because it becomes part of the\n // path to all of the files that the stage3 packager sees, and we want to\n // benefit from on-disk caching in stage3 packagers.\n ensureDirSync(options.workspaceDir!);\n this.destDir = realpathSync(options.workspaceDir!);\n\n this.packageCache = v1Cache.app.packageCache.moveAddons(this.destDir);\n this.inputPath = v1Cache.app.root;\n this.treeSyncMap = new WeakMap();\n this.v1Cache = v1Cache;\n }\n\n get tree(): Node {\n let movedAddons = [...this.packageCache.moved.keys()].map(oldPkg => buildCompatAddon(oldPkg, this.v1Cache));\n\n // these get watched so that EMBROIDER_REBUILD_ADDONS will still work\n // correctly, even for v2 addons that have no v1 addon deps and therefore\n // don't need to be moved. We don't consume these trees in our build step,\n // we only do this to trigger rebuilds to happen.\n let watchedUnmovedAddons = [...this.packageCache.unmovedAddons]\n .filter(pkg => pkg.mayRebuild)\n .map(pkg => new WatchedDir(pkg.root));\n\n let { synthVendor, synthStyles } = this.getSyntheticPackages(this.v1Cache.app, movedAddons);\n return new WaitForTrees(\n { movedAddons, synthVendor, synthStyles, watchedUnmovedAddons },\n '@embroider/compat/addons',\n this.build.bind(this)\n );\n }\n\n async ready(): Promise<{ outputPath: string; packageCache: PackageCache }> {\n await this.deferReady.promise;\n writeJSONSync(join(this.destDir, '.embroider-reuse.json'), {\n appDestDir: relative(this.destDir, this.packageCache.appRoot),\n });\n return {\n outputPath: this.packageCache.appRoot,\n packageCache: this.packageCache,\n };\n }\n\n private get appDestDir(): string {\n return this.packageCache.appRoot;\n }\n\n private get app(): Package {\n return this.packageCache.app;\n }\n\n private async build(\n {\n movedAddons,\n synthVendor,\n synthStyles,\n }: {\n movedAddons: string[];\n synthVendor: string;\n synthStyles: string;\n },\n changedMap: Map<string, boolean>\n ) {\n // empty the directory only on the first pass\n if (!this.didBuild) {\n emptyDirSync(this.destDir);\n }\n\n [...this.packageCache.moved.entries()].forEach(([oldPkg, newPkg], index) => {\n let treeInstance = this.treeSyncMap.get(newPkg);\n\n // we need to pull metadata off the oldPkg, not the newPkg, because the\n // newPkg doesn't actually have anything in it yet (including\n // package.json)\n let isEngine = oldPkg.isEngine();\n\n // Engines get built not into their real package name, but a mangled one.\n // Their real one needs to be free for us to merge all their dependencies\n // into.\n let destination = isEngine ? mangledEngineRoot(newPkg) : newPkg.root;\n\n if (!treeInstance) {\n let ignore = ['**/node_modules'];\n\n let rel = relative(destination, this.appDestDir);\n if (!rel.startsWith('..') && !isAbsolute(rel)) {\n // the app is inside our addon. We must not copy the app as part of\n // the addon, because that would overwrite the real app build.\n ignore.push(rel);\n\n if (rel === 'tests/dummy') {\n // special case: classic dummy apps are weird because they put the\n // tests (which are truly part of the app, not the addon) inside the\n // addon instead of inside the app.\n ignore.push('tests');\n }\n }\n\n treeInstance = new TreeSync(movedAddons[index], destination, {\n ignore,\n });\n\n this.treeSyncMap.set(newPkg, treeInstance);\n }\n\n if (\n !this.didBuild || // always copy on the first build\n (newPkg.mayRebuild && changedMap.get(movedAddons[index]))\n ) {\n treeInstance.sync();\n if (!this.didBuild && isEngine) {\n // The first time we encounter an engine, we also create the empty\n // shell for its real module namespace.\n copySync(join(destination, 'package.json'), join(newPkg.root, 'package.json'));\n }\n\n // for engines, this isn't the mangled destination (we don't need\n // resolvable node_modules there), this is the empty shell of their real\n // location\n this.linkNonCopiedDeps(newPkg, newPkg.root);\n }\n });\n\n this.linkNonCopiedDeps(this.app, this.appDestDir);\n await this.packageCache.updatePreexistingResolvableSymlinks();\n\n if (changedMap && changedMap.get(synthVendor)) {\n copySync(synthVendor, join(this.appDestDir, 'node_modules', '@embroider', 'synthesized-vendor'), {\n dereference: true,\n overwrite: true,\n });\n }\n\n if (changedMap && changedMap.get(synthStyles)) {\n copySync(synthStyles, join(this.appDestDir, 'node_modules', '@embroider', 'synthesized-styles'), {\n dereference: true,\n overwrite: true,\n });\n }\n\n if (!this.didBuild) {\n this.handleNonResolvableDeps();\n }\n this.didBuild = true;\n this.deferReady.resolve();\n }\n\n private handleNonResolvableDeps() {\n // non-resolvable deps in addons\n for (let [oldPkg, newPkg] of this.packageCache.moved.entries()) {\n if (!oldPkg.nonResolvableDeps) {\n continue;\n }\n for (let dep of oldPkg.nonResolvableDeps.values()) {\n let moved = this.packageCache.moved.get(dep);\n if (moved) {\n dep = moved;\n }\n let target = join(newPkg.root, 'node_modules', dep.name);\n ensureDirSync(dirname(target));\n ensureSymlinkSync(dep.root, target, 'dir');\n }\n }\n // non-resolvable deps in app\n if (this.packageCache.app.nonResolvableDeps) {\n for (let dep of this.packageCache.app.nonResolvableDeps.values()) {\n let moved = this.packageCache.moved.get(dep);\n if (moved) {\n dep = moved;\n }\n let target = join(this.appDestDir, 'node_modules', dep.name);\n ensureDirSync(dirname(target));\n ensureSymlinkSync(dep.root, target, 'dir');\n }\n }\n }\n\n private getSyntheticPackages(v1App: V1App, movedAddons: Node[]): { synthVendor: Node; synthStyles: Node } {\n let index = 0;\n let upgradedAddonTrees = [];\n for (let [oldPkg] of this.packageCache.moved.entries()) {\n if (!oldPkg.isV2Ember()) {\n upgradedAddonTrees.push(movedAddons[index]);\n }\n index++;\n }\n return {\n synthVendor: v1App.synthesizeVendorPackage(upgradedAddonTrees),\n synthStyles: v1App.synthesizeStylesPackage(upgradedAddonTrees),\n };\n }\n\n @Memoize()\n private get deferReady() {\n let resolve: Function;\n let promise: Promise<void> = new Promise(r => (resolve = r));\n return { resolve: resolve!, promise };\n }\n\n @Memoize()\n private isMoved(pkg: Package) {\n for (let candidate of this.packageCache.moved.values()) {\n if (candidate === pkg) {\n return true;\n }\n }\n return false;\n }\n\n private linkNonCopiedDeps(pkg: Package, destRoot: string) {\n for (let dep of pkg.dependencies) {\n if (!this.isMoved(dep)) {\n ensureSymlinkSync(dep.root, join(destRoot, 'node_modules', dep.packageJSON.name));\n }\n }\n }\n}\n"]}
1
+ {"version":3,"file":"compat-addons.js","sourceRoot":"","sources":["compat-addons.ts"],"names":[],"mappings":";;;;;;;;;;;AACA,+BAAgE;AAChE,uCAAiH;AACjH,0CAAgG;AAChG,4EAAkD;AAElD,2DAA6C;AAC7C,8EAAoD;AACpD,uCAAyD;AAEzD,0DAAiC;AACjC,qDAA6C;AAE7C,gFAAgF;AAChF,8EAA8E;AAC9E,kEAAkE;AAClE,EAAE;AACF,+EAA+E;AAC/E,+EAA+E;AAC/E,iBAAiB;AACjB,IAAI,OAAO,OAAO,CAAC,GAAG,CAAC,wBAAwB,KAAK,WAAW,EAAE;IAC/D,OAAO,CAAC,GAAG,CAAC,wBAAwB,GAAG,MAAM,CAAC;CAC/C;AAED,MAAqB,YAAY;IAQ/B,YAAY,sBAA8B,EAAE,YAAsB;QAP1D,aAAQ,GAAG,KAAK,CAAC;QAQvB,IAAI,OAAO,GAAG,IAAA,6BAAmB,EAAC,YAAY,CAAC,CAAC;QAChD,IAAI,OAAO,GAAG,2BAAe,CAAC,MAAM,CAAC,sBAAsB,EAAE,OAAO,CAAC,CAAC;QAEtE,0EAA0E;QAC1E,yEAAyE;QACzE,oDAAoD;QACpD,IAAA,wBAAa,EAAC,OAAO,CAAC,YAAa,CAAC,CAAC;QACrC,IAAI,CAAC,OAAO,GAAG,IAAA,uBAAY,EAAC,OAAO,CAAC,YAAa,CAAC,CAAC;QAEnD,IAAI,CAAC,YAAY,GAAG,OAAO,CAAC,GAAG,CAAC,YAAY,CAAC,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QACtE,IAAI,CAAC,SAAS,GAAG,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC;QAClC,IAAI,CAAC,WAAW,GAAG,IAAI,OAAO,EAAE,CAAC;QACjC,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;IACzB,CAAC;IAED,IAAI,IAAI;QACN,IAAI,WAAW,GAAG,CAAC,GAAG,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,IAAA,4BAAgB,EAAC,MAAM,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC;QAE5G,qEAAqE;QACrE,yEAAyE;QACzE,0EAA0E;QAC1E,iDAAiD;QACjD,IAAI,oBAAoB,GAAG,CAAC,GAAG,IAAI,CAAC,YAAY,CAAC,aAAa,CAAC;aAC5D,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,UAAU,CAAC;aAC7B,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,4BAAU,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC;QAExC,IAAI,EAAE,WAAW,EAAE,WAAW,EAAE,GAAG,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,WAAW,CAAC,CAAC;QAC5F,OAAO,IAAI,mBAAY,CACrB,EAAE,WAAW,EAAE,WAAW,EAAE,WAAW,EAAE,oBAAoB,EAAE,EAC/D,0BAA0B,EAC1B,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CACtB,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,KAAK;QACT,MAAM,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC;QAC9B,IAAA,wBAAa,EAAC,IAAA,WAAI,EAAC,IAAI,CAAC,OAAO,EAAE,uBAAuB,CAAC,EAAE;YACzD,UAAU,EAAE,IAAA,eAAQ,EAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC;SAC9D,CAAC,CAAC;QACH,OAAO;YACL,UAAU,EAAE,IAAI,CAAC,YAAY,CAAC,OAAO;YACrC,YAAY,EAAE,IAAI,CAAC,YAAY;SAChC,CAAC;IACJ,CAAC;IAED,IAAY,UAAU;QACpB,OAAO,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC;IACnC,CAAC;IAED,IAAY,GAAG;QACb,OAAO,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC;IAC/B,CAAC;IAEO,KAAK,CAAC,KAAK,CACjB,EACE,WAAW,EACX,WAAW,EACX,WAAW,GAKZ,EACD,UAAgC;QAEhC,6CAA6C;QAC7C,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE;YAClB,IAAA,uBAAY,EAAC,IAAI,CAAC,OAAO,CAAC,CAAC;SAC5B;QAED,CAAC,GAAG,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,KAAK,EAAE,EAAE;YACzE,IAAI,YAAY,GAAG,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;YAEhD,uEAAuE;YACvE,6DAA6D;YAC7D,gBAAgB;YAChB,IAAI,QAAQ,GAAG,MAAM,CAAC,QAAQ,EAAE,CAAC;YAEjC,yEAAyE;YACzE,yEAAyE;YACzE,QAAQ;YACR,IAAI,WAAW,GAAG,QAAQ,CAAC,CAAC,CAAC,IAAA,wBAAiB,EAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC;YAErE,IAAI,CAAC,YAAY,EAAE;gBACjB,IAAI,MAAM,GAAG,CAAC,iBAAiB,CAAC,CAAC;gBAEjC,IAAI,GAAG,GAAG,IAAA,eAAQ,EAAC,WAAW,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;gBACjD,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,IAAA,iBAAU,EAAC,GAAG,CAAC,EAAE;oBAC7C,mEAAmE;oBACnE,8DAA8D;oBAC9D,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;oBAEjB,IAAI,GAAG,KAAK,QAAQ,UAAG,OAAO,EAAE;wBAC9B,kEAAkE;wBAClE,oEAAoE;wBACpE,mCAAmC;wBACnC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;qBACtB;iBACF;gBAED,YAAY,GAAG,IAAI,mBAAQ,CAAC,WAAW,CAAC,KAAK,CAAC,EAAE,WAAW,EAAE;oBAC3D,MAAM;iBACP,CAAC,CAAC;gBAEH,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC;aAC5C;YAED,IACE,CAAC,IAAI,CAAC,QAAQ,IAAI,iCAAiC;gBACnD,CAAC,MAAM,CAAC,UAAU,IAAI,UAAU,CAAC,GAAG,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,CAAC,EACzD;gBACA,YAAY,CAAC,IAAI,EAAE,CAAC;gBACpB,IAAI,CAAC,IAAI,CAAC,QAAQ,IAAI,QAAQ,EAAE;oBAC9B,kEAAkE;oBAClE,uCAAuC;oBACvC,IAAA,mBAAQ,EAAC,IAAA,WAAI,EAAC,WAAW,EAAE,cAAc,CAAC,EAAE,IAAA,WAAI,EAAC,MAAM,CAAC,IAAI,EAAE,cAAc,CAAC,CAAC,CAAC;iBAChF;aACF;QACH,CAAC,CAAC,CAAC;QAEH,2DAA2D;QAC3D,uEAAuE;QACvE,uEAAuE;QACvE,SAAS;QACT,CAAC,GAAG,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE;YAC9D,IACE,CAAC,IAAI,CAAC,QAAQ,IAAI,iCAAiC;gBACnD,CAAC,MAAM,CAAC,UAAU,IAAI,UAAU,CAAC,GAAG,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,CAAC,EACzD;gBACA,iEAAiE;gBACjE,wEAAwE;gBACxE,WAAW;gBACX,IAAI,CAAC,iBAAiB,CAAC,MAAM,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC;aAC7C;QACH,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;QAClD,MAAM,IAAI,CAAC,YAAY,CAAC,mCAAmC,EAAE,CAAC;QAE9D,IAAI,UAAU,IAAI,UAAU,CAAC,GAAG,CAAC,WAAW,CAAC,EAAE;YAC7C,IAAA,mBAAQ,EAAC,WAAW,EAAE,IAAA,WAAI,EAAC,IAAI,CAAC,UAAU,EAAE,cAAc,EAAE,YAAY,EAAE,oBAAoB,CAAC,EAAE;gBAC/F,WAAW,EAAE,IAAI;gBACjB,SAAS,EAAE,IAAI;aAChB,CAAC,CAAC;SACJ;QAED,IAAI,UAAU,IAAI,UAAU,CAAC,GAAG,CAAC,WAAW,CAAC,EAAE;YAC7C,IAAA,mBAAQ,EAAC,WAAW,EAAE,IAAA,WAAI,EAAC,IAAI,CAAC,UAAU,EAAE,cAAc,EAAE,YAAY,EAAE,oBAAoB,CAAC,EAAE;gBAC/F,WAAW,EAAE,IAAI;gBACjB,SAAS,EAAE,IAAI;aAChB,CAAC,CAAC;SACJ;QAED,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE;YAClB,IAAI,CAAC,uBAAuB,EAAE,CAAC;SAChC;QACD,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;QACrB,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE,CAAC;IAC5B,CAAC;IAEO,uBAAuB;QAC7B,gCAAgC;QAChC,KAAK,IAAI,CAAC,MAAM,EAAE,MAAM,CAAC,IAAI,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,OAAO,EAAE,EAAE;YAC9D,IAAI,CAAC,MAAM,CAAC,iBAAiB,EAAE;gBAC7B,SAAS;aACV;YACD,KAAK,IAAI,GAAG,IAAI,MAAM,CAAC,iBAAiB,CAAC,MAAM,EAAE,EAAE;gBACjD,IAAI,KAAK,GAAG,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;gBAC7C,IAAI,KAAK,EAAE;oBACT,GAAG,GAAG,KAAK,CAAC;iBACb;gBACD,IAAI,MAAM,GAAG,IAAA,WAAI,EAAC,MAAM,CAAC,IAAI,EAAE,cAAc,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;gBACzD,IAAA,wBAAa,EAAC,IAAA,cAAO,EAAC,MAAM,CAAC,CAAC,CAAC;gBAC/B,IAAA,4BAAiB,EAAC,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,CAAC,CAAC;aAC5C;SACF;QACD,6BAA6B;QAC7B,IAAI,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,iBAAiB,EAAE;YAC3C,KAAK,IAAI,GAAG,IAAI,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,iBAAiB,CAAC,MAAM,EAAE,EAAE;gBAChE,IAAI,KAAK,GAAG,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;gBAC7C,IAAI,KAAK,EAAE;oBACT,GAAG,GAAG,KAAK,CAAC;iBACb;gBACD,IAAI,MAAM,GAAG,IAAA,WAAI,EAAC,IAAI,CAAC,UAAU,EAAE,cAAc,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;gBAC7D,IAAA,wBAAa,EAAC,IAAA,cAAO,EAAC,MAAM,CAAC,CAAC,CAAC;gBAC/B,IAAA,4BAAiB,EAAC,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,CAAC,CAAC;aAC5C;SACF;IACH,CAAC;IAEO,oBAAoB,CAAC,KAAY,EAAE,WAAmB;QAC5D,IAAI,KAAK,GAAG,CAAC,CAAC;QACd,IAAI,kBAAkB,GAAG,EAAE,CAAC;QAC5B,KAAK,IAAI,CAAC,MAAM,CAAC,IAAI,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,OAAO,EAAE,EAAE;YACtD,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE,EAAE;gBACvB,kBAAkB,CAAC,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,CAAC;aAC7C;YACD,KAAK,EAAE,CAAC;SACT;QACD,OAAO;YACL,WAAW,EAAE,KAAK,CAAC,uBAAuB,CAAC,kBAAkB,CAAC;YAC9D,WAAW,EAAE,KAAK,CAAC,uBAAuB,CAAC,kBAAkB,CAAC;SAC/D,CAAC;IACJ,CAAC;IAGD,IAAY,UAAU;QACpB,IAAI,OAAiB,CAAC;QACtB,IAAI,OAAO,GAAkB,IAAI,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,OAAO,GAAG,CAAC,CAAC,CAAC,CAAC;QAC7D,OAAO,EAAE,OAAO,EAAE,OAAQ,EAAE,OAAO,EAAE,CAAC;IACxC,CAAC;IAGO,OAAO,CAAC,GAAY;QAC1B,KAAK,IAAI,SAAS,IAAI,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,MAAM,EAAE,EAAE;YACtD,IAAI,SAAS,KAAK,GAAG,EAAE;gBACrB,OAAO,IAAI,CAAC;aACb;SACF;QACD,OAAO,KAAK,CAAC;IACf,CAAC;IAEO,iBAAiB,CAAC,GAAY,EAAE,QAAgB;QACtD,KAAK,IAAI,GAAG,IAAI,GAAG,CAAC,YAAY,EAAE;YAChC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE;gBACtB,IAAA,4BAAiB,EAAC,GAAG,CAAC,IAAI,EAAE,IAAA,WAAI,EAAC,QAAQ,EAAE,cAAc,EAAE,GAAG,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC;aACnF;SACF;IACH,CAAC;CACF;AAvBC;IADC,IAAA,4BAAO,GAAE;8CAKT;AAGD;IADC,IAAA,4BAAO,GAAE;2CAQT;AArOH,+BA8OC","sourcesContent":["import { Node } from 'broccoli-node-api';\nimport { join, relative, dirname, isAbsolute, sep } from 'path';\nimport { emptyDirSync, ensureSymlinkSync, ensureDirSync, realpathSync, copySync, writeJSONSync } from 'fs-extra';\nimport { Stage, Package, PackageCache, WaitForTrees, mangledEngineRoot } from '@embroider/core';\nimport V1InstanceCache from './v1-instance-cache';\nimport { MovedPackageCache } from './moved-package-cache';\nimport { Memoize } from 'typescript-memoize';\nimport buildCompatAddon from './build-compat-addon';\nimport Options, { optionsWithDefaults } from './options';\nimport V1App from './v1-app';\nimport TreeSync from 'tree-sync';\nimport { WatchedDir } from 'broccoli-source';\n\n// This build stage expects to be run with broccoli memoization enabled in order\n// to get good rebuild performance. We turn it on by default here, but you can\n// still explicitly turn it off by setting the env var to \"false\".\n//\n// As for safetly mutating process.env: broccoli doesn't read this until a Node\n// executes its build hook, so as far as I can tell there's no way we could set\n// this too late.\nif (typeof process.env.BROCCOLI_ENABLED_MEMOIZE === 'undefined') {\n process.env.BROCCOLI_ENABLED_MEMOIZE = 'true';\n}\n\nexport default class CompatAddons implements Stage {\n private didBuild = false;\n private destDir: string;\n private packageCache: MovedPackageCache;\n private treeSyncMap: WeakMap<Package, TreeSync>;\n private v1Cache: V1InstanceCache;\n readonly inputPath: string;\n\n constructor(legacyEmberAppInstance: object, maybeOptions?: Options) {\n let options = optionsWithDefaults(maybeOptions);\n let v1Cache = V1InstanceCache.forApp(legacyEmberAppInstance, options);\n\n // we want this to be stable across builds, because it becomes part of the\n // path to all of the files that the stage3 packager sees, and we want to\n // benefit from on-disk caching in stage3 packagers.\n ensureDirSync(options.workspaceDir!);\n this.destDir = realpathSync(options.workspaceDir!);\n\n this.packageCache = v1Cache.app.packageCache.moveAddons(this.destDir);\n this.inputPath = v1Cache.app.root;\n this.treeSyncMap = new WeakMap();\n this.v1Cache = v1Cache;\n }\n\n get tree(): Node {\n let movedAddons = [...this.packageCache.moved.keys()].map(oldPkg => buildCompatAddon(oldPkg, this.v1Cache));\n\n // these get watched so that EMBROIDER_REBUILD_ADDONS will still work\n // correctly, even for v2 addons that have no v1 addon deps and therefore\n // don't need to be moved. We don't consume these trees in our build step,\n // we only do this to trigger rebuilds to happen.\n let watchedUnmovedAddons = [...this.packageCache.unmovedAddons]\n .filter(pkg => pkg.mayRebuild)\n .map(pkg => new WatchedDir(pkg.root));\n\n let { synthVendor, synthStyles } = this.getSyntheticPackages(this.v1Cache.app, movedAddons);\n return new WaitForTrees(\n { movedAddons, synthVendor, synthStyles, watchedUnmovedAddons },\n '@embroider/compat/addons',\n this.build.bind(this)\n );\n }\n\n async ready(): Promise<{ outputPath: string; packageCache: PackageCache }> {\n await this.deferReady.promise;\n writeJSONSync(join(this.destDir, '.embroider-reuse.json'), {\n appDestDir: relative(this.destDir, this.packageCache.appRoot),\n });\n return {\n outputPath: this.packageCache.appRoot,\n packageCache: this.packageCache,\n };\n }\n\n private get appDestDir(): string {\n return this.packageCache.appRoot;\n }\n\n private get app(): Package {\n return this.packageCache.app;\n }\n\n private async build(\n {\n movedAddons,\n synthVendor,\n synthStyles,\n }: {\n movedAddons: string[];\n synthVendor: string;\n synthStyles: string;\n },\n changedMap: Map<string, boolean>\n ) {\n // empty the directory only on the first pass\n if (!this.didBuild) {\n emptyDirSync(this.destDir);\n }\n\n [...this.packageCache.moved.entries()].forEach(([oldPkg, newPkg], index) => {\n let treeInstance = this.treeSyncMap.get(newPkg);\n\n // we need to pull metadata off the oldPkg, not the newPkg, because the\n // newPkg doesn't actually have anything in it yet (including\n // package.json)\n let isEngine = oldPkg.isEngine();\n\n // Engines get built not into their real package name, but a mangled one.\n // Their real one needs to be free for us to merge all their dependencies\n // into.\n let destination = isEngine ? mangledEngineRoot(newPkg) : newPkg.root;\n\n if (!treeInstance) {\n let ignore = ['**/node_modules'];\n\n let rel = relative(destination, this.appDestDir);\n if (!rel.startsWith('..') && !isAbsolute(rel)) {\n // the app is inside our addon. We must not copy the app as part of\n // the addon, because that would overwrite the real app build.\n ignore.push(rel);\n\n if (rel === `tests${sep}dummy`) {\n // special case: classic dummy apps are weird because they put the\n // tests (which are truly part of the app, not the addon) inside the\n // addon instead of inside the app.\n ignore.push('tests');\n }\n }\n\n treeInstance = new TreeSync(movedAddons[index], destination, {\n ignore,\n });\n\n this.treeSyncMap.set(newPkg, treeInstance);\n }\n\n if (\n !this.didBuild || // always copy on the first build\n (newPkg.mayRebuild && changedMap.get(movedAddons[index]))\n ) {\n treeInstance.sync();\n if (!this.didBuild && isEngine) {\n // The first time we encounter an engine, we also create the empty\n // shell for its real module namespace.\n copySync(join(destination, 'package.json'), join(newPkg.root, 'package.json'));\n }\n }\n });\n\n // this has to be a separate pass over the packages because\n // linkNonCopiedDeps resolves dependencies, so we want all the packages\n // already in their new places before they start trying to resolve each\n // other.\n [...this.packageCache.moved.values()].forEach((newPkg, index) => {\n if (\n !this.didBuild || // always copy on the first build\n (newPkg.mayRebuild && changedMap.get(movedAddons[index]))\n ) {\n // for engines, this isn't the mangled destination (we don't need\n // resolvable node_modules there), this is the empty shell of their real\n // location\n this.linkNonCopiedDeps(newPkg, newPkg.root);\n }\n });\n\n this.linkNonCopiedDeps(this.app, this.appDestDir);\n await this.packageCache.updatePreexistingResolvableSymlinks();\n\n if (changedMap && changedMap.get(synthVendor)) {\n copySync(synthVendor, join(this.appDestDir, 'node_modules', '@embroider', 'synthesized-vendor'), {\n dereference: true,\n overwrite: true,\n });\n }\n\n if (changedMap && changedMap.get(synthStyles)) {\n copySync(synthStyles, join(this.appDestDir, 'node_modules', '@embroider', 'synthesized-styles'), {\n dereference: true,\n overwrite: true,\n });\n }\n\n if (!this.didBuild) {\n this.handleNonResolvableDeps();\n }\n this.didBuild = true;\n this.deferReady.resolve();\n }\n\n private handleNonResolvableDeps() {\n // non-resolvable deps in addons\n for (let [oldPkg, newPkg] of this.packageCache.moved.entries()) {\n if (!oldPkg.nonResolvableDeps) {\n continue;\n }\n for (let dep of oldPkg.nonResolvableDeps.values()) {\n let moved = this.packageCache.moved.get(dep);\n if (moved) {\n dep = moved;\n }\n let target = join(newPkg.root, 'node_modules', dep.name);\n ensureDirSync(dirname(target));\n ensureSymlinkSync(dep.root, target, 'dir');\n }\n }\n // non-resolvable deps in app\n if (this.packageCache.app.nonResolvableDeps) {\n for (let dep of this.packageCache.app.nonResolvableDeps.values()) {\n let moved = this.packageCache.moved.get(dep);\n if (moved) {\n dep = moved;\n }\n let target = join(this.appDestDir, 'node_modules', dep.name);\n ensureDirSync(dirname(target));\n ensureSymlinkSync(dep.root, target, 'dir');\n }\n }\n }\n\n private getSyntheticPackages(v1App: V1App, movedAddons: Node[]): { synthVendor: Node; synthStyles: Node } {\n let index = 0;\n let upgradedAddonTrees = [];\n for (let [oldPkg] of this.packageCache.moved.entries()) {\n if (!oldPkg.isV2Ember()) {\n upgradedAddonTrees.push(movedAddons[index]);\n }\n index++;\n }\n return {\n synthVendor: v1App.synthesizeVendorPackage(upgradedAddonTrees),\n synthStyles: v1App.synthesizeStylesPackage(upgradedAddonTrees),\n };\n }\n\n @Memoize()\n private get deferReady() {\n let resolve: Function;\n let promise: Promise<void> = new Promise(r => (resolve = r));\n return { resolve: resolve!, promise };\n }\n\n @Memoize()\n private isMoved(pkg: Package) {\n for (let candidate of this.packageCache.moved.values()) {\n if (candidate === pkg) {\n return true;\n }\n }\n return false;\n }\n\n private linkNonCopiedDeps(pkg: Package, destRoot: string) {\n for (let dep of pkg.dependencies) {\n if (!this.isMoved(dep)) {\n ensureSymlinkSync(dep.root, join(destRoot, 'node_modules', dep.packageJSON.name));\n }\n }\n }\n}\n"]}
package/src/compat-app.js CHANGED
@@ -170,21 +170,11 @@ class CompatAppAdapter {
170
170
  // webpack's default is ['.wasm', '.mjs', '.js', '.json']. Keeping that
171
171
  // subset in that order is sensible, since many third-party libraries will
172
172
  // expect it to work that way.
173
- let extensions = ['.wasm', '.mjs', '.js', '.json', '.hbs'];
174
- // for now, this is hard-coded. If we see ember-cli-typescript, ts files are
175
- // resolvable. Once we implement a preprocessor-registration build hook,
176
- // this logic can be pushed down first into `@embroider/compat` (which can
177
- // generate the appropriate hooks when it upcompiles ember-cli-typescript),
178
- // and then later into ember-cli-typescript itself (which can ship a v2
179
- // version with the hook).
180
173
  //
181
- // Typescript is a slightly weird example of a preprocessor because it gets
182
- // implemented in babel, so all we realy need to do is make the extension
183
- // resolvable and there's no other "loader" or anything to apply.
184
- if (this.activeAddonChildren().find(pkg => pkg.name === 'ember-cli-typescript')) {
185
- extensions.unshift('.ts');
186
- }
187
- return extensions;
174
+ // For TS, we defer to ember-cli-babel, and the setting for
175
+ // "enableTypescriptTransform" can be set with and without
176
+ // ember-cli-typescript
177
+ return ['.wasm', '.mjs', '.js', '.json', '.hbs', '.ts'];
188
178
  }
189
179
  *emberEntrypoints(htmlTreePath) {
190
180
  let classicEntrypoints = [
@@ -1 +1 @@
1
- {"version":3,"file":"compat-app.js","sourceRoot":"","sources":["compat-app.ts"],"names":[],"mappings":"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","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 TemplateCompilerPlugins,\n Resolver,\n NodeTemplateCompiler,\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/shared-internals';\nimport { Options as AdjustImportsOptions } from '@embroider/core/src/babel-plugin-adjust-imports';\nimport { getEmberExports } from '@embroider/core/src/load-ember-template-compiler';\n\nimport semver from 'semver';\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 let extensions = ['.wasm', '.mjs', '.js', '.json', '.hbs'];\n\n // for now, this is hard-coded. If we see ember-cli-typescript, ts files are\n // resolvable. Once we implement a preprocessor-registration build hook,\n // this logic can be pushed down first into `@embroider/compat` (which can\n // generate the appropriate hooks when it upcompiles ember-cli-typescript),\n // and then later into ember-cli-typescript itself (which can ship a v2\n // version with the hook).\n //\n // Typescript is a slightly weird example of a preprocessor because it gets\n // implemented in babel, so all we realy need to do is make the extension\n // resolvable and there's no other \"loader\" or anything to apply.\n if (this.activeAddonChildren().find(pkg => pkg.name === 'ember-cli-typescript')) {\n extensions.unshift('.ts');\n }\n\n return extensions;\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 templateResolver(): Resolver {\n return new CompatResolver({\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 });\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 let emberSource = this.activeAddonChildren().find(a => a.name === 'ember-source')!;\n let emberNeedsModulesPolyfill = semver.satisfies(emberSource.version, '<3.27.0-beta.0', {\n includePrerelease: true,\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 emberNeedsModulesPolyfill,\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 let resolver = new CompatResolver({\n root: this.root,\n modulePrefix: this.modulePrefix(),\n options: this.options,\n activePackageRules: this.activeRules(),\n adjustImportsOptions: this.makeAdjustImportOptions(false),\n });\n\n const compilerPath = resolveSync(this.templateCompilerPath(), { basedir: this.root });\n const { cacheKey: compilerChecksum } = getEmberExports(compilerPath);\n // It's ok that this isn't a fully configured template compiler. We're only\n // using it to parse component snippets out of rules.\n resolver.astTransformer(\n new NodeTemplateCompiler({\n compilerPath,\n compilerChecksum,\n\n EmberENV: {},\n plugins: {},\n })\n );\n return resolver;\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(): TemplateCompilerPlugins {\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":"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","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 TemplateCompilerPlugins,\n Resolver,\n NodeTemplateCompiler,\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/shared-internals';\nimport { Options as AdjustImportsOptions } from '@embroider/core/src/babel-plugin-adjust-imports';\nimport { getEmberExports } from '@embroider/core/src/load-ember-template-compiler';\n\nimport semver from 'semver';\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 templateResolver(): Resolver {\n return new CompatResolver({\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 });\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 let emberSource = this.activeAddonChildren().find(a => a.name === 'ember-source')!;\n let emberNeedsModulesPolyfill = semver.satisfies(emberSource.version, '<3.27.0-beta.0', {\n includePrerelease: true,\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 emberNeedsModulesPolyfill,\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 let resolver = new CompatResolver({\n root: this.root,\n modulePrefix: this.modulePrefix(),\n options: this.options,\n activePackageRules: this.activeRules(),\n adjustImportsOptions: this.makeAdjustImportOptions(false),\n });\n\n const compilerPath = resolveSync(this.templateCompilerPath(), { basedir: this.root });\n const { cacheKey: compilerChecksum } = getEmberExports(compilerPath);\n // It's ok that this isn't a fully configured template compiler. We're only\n // using it to parse component snippets out of rules.\n resolver.astTransformer(\n new NodeTemplateCompiler({\n compilerPath,\n compilerChecksum,\n\n EmberENV: {},\n plugins: {},\n })\n );\n return resolver;\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(): TemplateCompilerPlugins {\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"]}
package/src/resolver.js CHANGED
@@ -56,6 +56,7 @@ const builtInHelpers = [
56
56
  'readonly',
57
57
  'textarea',
58
58
  'unbound',
59
+ 'unique-id',
59
60
  'unless',
60
61
  'with',
61
62
  'yield',
@@ -1 +1 @@
1
- {"version":3,"file":"resolver.js","sourceRoot":"","sources":["resolver.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n ActivePackageRules,\n ComponentRules,\n ModuleRules,\n PackageRules,\n PreprocessedComponentRule,\n preprocessComponentRule,\n} from './dependency-rules';\nimport {\n Package,\n PackageCache,\n Resolver,\n TemplateCompiler,\n explicitRelative,\n extensionsPattern,\n} from '@embroider/core';\nimport { dirname, join, relative, sep } from 'path';\n\nimport { Options as AdjustImportsOptions } from '@embroider/core/src/babel-plugin-adjust-imports';\nimport { Memoize } from 'typescript-memoize';\nimport Options from './options';\nimport { ResolvedDep } from '@embroider/core/src/resolver';\nimport { dasherize } from './dasherize-component-name';\nimport { makeResolverTransform } from './resolver-transform';\nimport { pathExistsSync } from 'fs-extra';\nimport resolve from 'resolve';\nimport type { ASTv1 } from '@glimmer/syntax';\n\nexport interface ComponentResolution {\n type: 'component';\n modules: ResolvedDep[];\n yieldsComponents: Required<ComponentRules>['yieldsSafeComponents'];\n yieldsArguments: Required<ComponentRules>['yieldsArguments'];\n argumentsAreComponents: string[];\n}\n\nexport interface HelperResolution {\n type: 'helper';\n modules: ResolvedDep[];\n}\n\nexport interface ModifierResolution {\n type: 'modifier';\n modules: ResolvedDep[];\n}\n\nexport type ResolutionResult = ComponentResolution | HelperResolution | ModifierResolution;\n\nexport interface ResolutionFail {\n type: 'error';\n message: string;\n detail: string;\n loc: Loc;\n}\n\ninterface ResolverDependencyError extends Error {\n isTemplateResolverError?: boolean;\n loc?: Loc;\n moduleName?: string;\n}\n\nexport type Resolution = ResolutionResult | ResolutionFail;\n\nexport interface Loc {\n start: { line: number; column: number };\n end: { line: number; column: number };\n}\n\n// TODO: this depends on the ember version. And it's probably missing some\n// private-but-used values.\nconst builtInHelpers = [\n '-get-dynamic-var',\n '-in-element',\n 'in-element',\n '-with-dynamic-vars',\n 'action',\n 'array',\n 'component',\n 'concat',\n 'debugger',\n 'each',\n 'each-in',\n 'fn',\n 'get',\n 'has-block',\n 'has-block-params',\n 'hasBlock',\n 'hasBlockParams',\n 'hash',\n 'helper',\n 'if',\n 'input',\n 'let',\n 'link-to',\n 'loc',\n 'log',\n 'modifier',\n 'mount',\n 'mut',\n 'on',\n 'outlet',\n 'partial',\n 'query-params',\n 'readonly',\n 'textarea',\n 'unbound',\n 'unless',\n 'with',\n 'yield',\n];\n\nconst builtInComponents = ['input', 'link-to', 'textarea'];\nconst builtInModifiers = ['action', 'on'];\n\n// this is a subset of the full Options. We care about serializability, and we\n// only needs parts that are easily serializable, which is why we don't keep the\n// whole thing.\ntype ResolverOptions = Pick<\n Required<Options>,\n 'staticHelpers' | 'staticModifiers' | 'staticComponents' | 'allowUnsafeDynamicComponents'\n>;\n\nfunction extractOptions(options: Required<Options> | ResolverOptions): ResolverOptions {\n return {\n staticHelpers: options.staticHelpers,\n staticModifiers: options.staticModifiers,\n staticComponents: options.staticComponents,\n allowUnsafeDynamicComponents: options.allowUnsafeDynamicComponents,\n };\n}\n\ninterface RehydrationParamsBase {\n root: string;\n modulePrefix: string;\n podModulePrefix?: string;\n options: ResolverOptions;\n activePackageRules: ActivePackageRules[];\n}\n\ninterface RehydrationParamsWithFile extends RehydrationParamsBase {\n adjustImportsOptionsPath: string;\n}\n\ninterface RehydrationParamsWithOptions extends RehydrationParamsBase {\n adjustImportsOptions: AdjustImportsOptions;\n}\n\ntype RehydrationParams = RehydrationParamsWithFile | RehydrationParamsWithOptions;\n\nexport function rehydrate(params: RehydrationParams) {\n return new CompatResolver(params);\n}\n\nexport interface AuditMessage {\n message: string;\n detail: string;\n loc: Loc;\n source: string;\n filename: string;\n}\n\nexport default class CompatResolver implements Resolver {\n private dependencies: Map<string, Resolution[]> = new Map();\n private templateCompiler: TemplateCompiler | undefined;\n private auditHandler: undefined | ((msg: AuditMessage) => void);\n private currentContents: string | undefined;\n\n _parallelBabel: {\n requireFile: string;\n buildUsing: string;\n params: RehydrationParams;\n };\n\n constructor(private params: RehydrationParams) {\n this.params.options = extractOptions(this.params.options);\n this._parallelBabel = {\n requireFile: __filename,\n buildUsing: 'rehydrate',\n params,\n };\n if ((globalThis as any).embroider_audit) {\n this.auditHandler = (globalThis as any).embroider_audit;\n }\n }\n\n enter(moduleName: string, contents: string) {\n let rules = this.findComponentRules(moduleName);\n let deps: Resolution[];\n if (rules?.dependsOnComponents) {\n deps = rules.dependsOnComponents.map(snippet => this.resolveComponentSnippet(snippet, rules!, moduleName));\n } else {\n deps = [];\n }\n this.dependencies.set(moduleName, deps);\n this.currentContents = contents;\n }\n\n private add(resolution: Resolution, from: string) {\n // this \"!\" is safe because we always `enter()` a module before hitting this\n this.dependencies.get(from)!.push(resolution);\n return resolution;\n }\n\n private findComponentRules(absPath: string): PreprocessedComponentRule | undefined {\n let rules = this.rules.components.get(absPath);\n if (rules) {\n return rules;\n }\n\n // co-located templates aren't visible to the resolver, because they never\n // get resolved from a template (they are always handled directly by the\n // corresponding JS module, which the resolver *does* see). This means their\n // paths won't ever be in `this.rules.components`. But we do want them to\n // \"inherit\" the rules that are attached to their corresonding JS module.\n if (absPath.endsWith('.hbs')) {\n let stem = absPath.slice(0, -4);\n for (let ext of this.adjustImportsOptions.resolvableExtensions) {\n if (ext !== '.hbs') {\n let rules = this.rules.components.get(stem + ext);\n if (rules) {\n return rules;\n }\n }\n }\n }\n return undefined;\n }\n\n private isIgnoredComponent(dasherizedName: string) {\n return this.rules.ignoredComponents.includes(dasherizedName);\n }\n\n @Memoize()\n get adjustImportsOptions(): AdjustImportsOptions {\n const { params } = this;\n return 'adjustImportsOptionsPath' in params\n ? // eslint-disable-next-line @typescript-eslint/no-require-imports\n require(params.adjustImportsOptionsPath)\n : params.adjustImportsOptions;\n }\n\n @Memoize()\n private get rules() {\n if (!this.templateCompiler) {\n throw new Error(\n `Bug: Resolver needs to get linked into a TemplateCompiler before it can understand packageRules`\n );\n }\n\n // keyed by their first resolved dependency's runtimeName.\n let components: Map<string, PreprocessedComponentRule> = new Map();\n\n // keyed by our own dasherized interpretation of the component's name.\n let ignoredComponents: string[] = [];\n\n // we're not responsible for filtering out rules for inactive packages here,\n // that is done before getting to us. So we should assume these are all in\n // force.\n for (let rule of this.params.activePackageRules) {\n if (rule.components) {\n for (let [snippet, componentRules] of Object.entries(rule.components)) {\n if (componentRules.safeToIgnore) {\n ignoredComponents.push(this.standardDasherize(snippet, rule));\n continue;\n }\n let resolvedDep = this.resolveComponentSnippet(snippet, rule).modules[0];\n let processedRules = preprocessComponentRule(componentRules);\n\n // we always register our rules on the component's own first resolved\n // module, which must be a module in the app's module namespace.\n components.set(resolvedDep.absPath, processedRules);\n\n // if there's a custom layout, we also need to register our rules on\n // those templates.\n if (componentRules.layout) {\n if (componentRules.layout.appPath) {\n components.set(join(this.params.root, componentRules.layout.appPath), processedRules);\n } else if (componentRules.layout.addonPath) {\n for (let root of rule.roots) {\n components.set(join(root, componentRules.layout.addonPath), processedRules);\n }\n } else {\n throw new Error(\n `layout property in component rule must contain either appPath or addonPath: ${JSON.stringify(\n rule,\n null,\n 2\n )}`\n );\n }\n }\n }\n }\n if (rule.appTemplates) {\n for (let [path, templateRules] of Object.entries(rule.appTemplates)) {\n let processedRules = preprocessComponentRule(templateRules);\n components.set(join(this.params.root, path), processedRules);\n }\n }\n if (rule.addonTemplates) {\n for (let [path, templateRules] of Object.entries(rule.addonTemplates)) {\n let processedRules = preprocessComponentRule(templateRules);\n for (let root of rule.roots) {\n components.set(join(root, path), processedRules);\n }\n }\n }\n }\n return { components, ignoredComponents };\n }\n\n resolveComponentSnippet(\n snippet: string,\n rule: PackageRules | ModuleRules,\n from = 'rule-snippet.hbs'\n ): ResolutionResult & { type: 'component' } {\n if (!this.templateCompiler) {\n throw new Error(`bug: tried to use resolveComponentSnippet without a templateCompiler`);\n }\n let name = this.standardDasherize(snippet, rule);\n let found = this.tryComponent(name, from, false);\n if (found && found.type === 'component') {\n return found;\n }\n throw new Error(`unable to locate component ${snippet} referred to in rule ${JSON.stringify(rule, null, 2)}`);\n }\n\n private standardDasherize(snippet: string, rule: PackageRules | ModuleRules): string {\n if (!this.templateCompiler) {\n throw new Error(`bug: tried to use resolveComponentSnippet without a templateCompiler`);\n }\n let ast: ASTv1.Template | ASTv1.Program;\n try {\n ast = this.templateCompiler.parse('snippet.hbs', snippet) as unknown as ASTv1.Template | ASTv1.Program;\n } catch (err) {\n throw new Error(`unable to parse component snippet \"${snippet}\" from rule ${JSON.stringify(rule, null, 2)}`);\n }\n if ((ast.type === 'Program' || ast.type === 'Template') && ast.body.length > 0) {\n let first = ast.body[0];\n const isMustachePath = first.type === 'MustacheStatement' && first.path.type === 'PathExpression';\n const isComponent =\n isMustachePath && ((first as ASTv1.MustacheStatement).path as ASTv1.PathExpression).original === 'component';\n const hasStringParam =\n isComponent &&\n Array.isArray((first as ASTv1.MustacheStatement).params) &&\n (first as ASTv1.MustacheStatement).params[0].type === 'StringLiteral';\n if (isMustachePath && isComponent && hasStringParam) {\n return ((first as ASTv1.MustacheStatement).params[0] as ASTv1.StringLiteral).value;\n }\n if (isMustachePath) {\n return ((first as ASTv1.MustacheStatement).path as ASTv1.PathExpression).original;\n }\n if (first.type === 'ElementNode') {\n return dasherize(first.tag);\n }\n }\n throw new Error(`cannot identify a component in rule snippet: \"${snippet}\"`);\n }\n\n astTransformer(templateCompiler: TemplateCompiler): unknown {\n this.templateCompiler = templateCompiler;\n if (this.staticComponentsEnabled || this.staticHelpersEnabled || this.staticModifiersEnabled) {\n return makeResolverTransform(this);\n }\n }\n\n dependenciesOf(moduleName: string): ResolvedDep[] {\n let flatDeps: Map<string, ResolvedDep> = new Map();\n let deps = this.dependencies.get(moduleName);\n if (deps) {\n for (let dep of deps) {\n if (dep.type === 'error') {\n if (!this.auditHandler && !this.params.options.allowUnsafeDynamicComponents) {\n let e: ResolverDependencyError = new Error(\n `${dep.message}: ${dep.detail} in ${humanReadableFile(this.params.root, moduleName)}`\n );\n e.isTemplateResolverError = true;\n e.loc = dep.loc;\n e.moduleName = moduleName;\n throw e;\n }\n if (this.auditHandler) {\n this.auditHandler({\n message: dep.message,\n filename: moduleName,\n detail: dep.detail,\n loc: dep.loc,\n source: this.currentContents!,\n });\n }\n } else {\n for (let entry of dep.modules) {\n let { runtimeName } = entry;\n flatDeps.set(runtimeName, entry);\n }\n }\n }\n }\n return [...flatDeps.values()];\n }\n\n resolveImport(path: string, from: string): { runtimeName: string; absPath: string } | undefined {\n let absPath;\n try {\n absPath = resolve.sync(path, {\n basedir: dirname(from),\n extensions: this.adjustImportsOptions.resolvableExtensions,\n });\n } catch (err) {\n return;\n }\n if (absPath) {\n let runtimeName = this.absPathToRuntimeName(absPath);\n if (runtimeName) {\n return { runtimeName, absPath };\n }\n }\n }\n\n @Memoize()\n private get resolvableExtensionsPattern() {\n return extensionsPattern(this.adjustImportsOptions.resolvableExtensions);\n }\n\n absPathToRuntimePath(absPath: string, owningPackage?: { root: string; name: string }) {\n let pkg = owningPackage || PackageCache.shared('embroider-stage3', this.params.root).ownerOfFile(absPath);\n if (pkg) {\n let packageRuntimeName = pkg.name;\n for (let [runtimeName, realName] of Object.entries(this.adjustImportsOptions.renamePackages)) {\n if (realName === packageRuntimeName) {\n packageRuntimeName = runtimeName;\n break;\n }\n }\n return join(packageRuntimeName, relative(pkg.root, absPath)).split(sep).join('/');\n } else if (absPath.startsWith(this.params.root)) {\n return join(this.params.modulePrefix, relative(this.params.root, absPath)).split(sep).join('/');\n } else {\n throw new Error(`bug: can't figure out the runtime name for ${absPath}`);\n }\n }\n\n absPathToRuntimeName(absPath: string, owningPackage?: { root: string; name: string }) {\n return this.absPathToRuntimePath(absPath, owningPackage)\n .replace(this.resolvableExtensionsPattern, '')\n .replace(/\\/index$/, '');\n }\n\n private get staticComponentsEnabled(): boolean {\n return this.params.options.staticComponents || Boolean(this.auditHandler);\n }\n\n private get staticHelpersEnabled(): boolean {\n return this.params.options.staticHelpers || Boolean(this.auditHandler);\n }\n\n private get staticModifiersEnabled(): boolean {\n return this.params.options.staticModifiers || Boolean(this.auditHandler);\n }\n\n private tryHelper(path: string, from: string): Resolution | null {\n let parts = path.split('@');\n if (parts.length > 1 && parts[0].length > 0) {\n let cache = PackageCache.shared('embroider-stage3', this.params.root);\n let packageName = parts[0];\n let renamed = this.adjustImportsOptions.renamePackages[packageName];\n if (renamed) {\n packageName = renamed;\n }\n let owner = cache.ownerOfFile(from)!;\n let targetPackage = owner.name === packageName ? owner : cache.resolve(packageName, owner);\n return this._tryHelper(parts[1], from, targetPackage);\n } else {\n return this._tryHelper(path, from, this.appPackage);\n }\n }\n\n private _tryHelper(path: string, from: string, targetPackage: Package | AppPackagePlaceholder): Resolution | null {\n for (let extension of this.adjustImportsOptions.resolvableExtensions) {\n let absPath = join(targetPackage.root, 'helpers', path) + extension;\n if (pathExistsSync(absPath)) {\n return {\n type: 'helper',\n modules: [\n {\n runtimeName: this.absPathToRuntimeName(absPath, targetPackage),\n path: explicitRelative(dirname(from), absPath),\n absPath,\n },\n ],\n };\n }\n }\n return null;\n }\n\n private tryModifier(path: string, from: string): Resolution | null {\n let parts = path.split('@');\n if (parts.length > 1 && parts[0].length > 0) {\n let cache = PackageCache.shared('embroider-stage3', this.params.root);\n let packageName = parts[0];\n let renamed = this.adjustImportsOptions.renamePackages[packageName];\n if (renamed) {\n packageName = renamed;\n }\n let owner = cache.ownerOfFile(from)!;\n let targetPackage = owner.name === packageName ? owner : cache.resolve(packageName, owner);\n return this._tryModifier(parts[1], from, targetPackage);\n } else {\n return this._tryModifier(path, from, this.appPackage);\n }\n }\n\n private _tryModifier(path: string, from: string, targetPackage: Package | AppPackagePlaceholder): Resolution | null {\n for (let extension of this.adjustImportsOptions.resolvableExtensions) {\n let absPath = join(targetPackage.root, 'modifiers', path) + extension;\n if (pathExistsSync(absPath)) {\n return {\n type: 'modifier',\n modules: [\n {\n runtimeName: this.absPathToRuntimeName(absPath, targetPackage),\n path: explicitRelative(dirname(from), absPath),\n absPath,\n },\n ],\n };\n }\n }\n return null;\n }\n\n @Memoize()\n private get appPackage(): AppPackagePlaceholder {\n return { root: this.params.root, name: this.params.modulePrefix };\n }\n\n private tryComponent(path: string, from: string, withRuleLookup = true): Resolution | null {\n let parts = path.split('@');\n if (parts.length > 1 && parts[0].length > 0) {\n let cache = PackageCache.shared('embroider-stage3', this.params.root);\n let packageName = parts[0];\n let renamed = this.adjustImportsOptions.renamePackages[packageName];\n if (renamed) {\n packageName = renamed;\n }\n let owner = cache.ownerOfFile(from)!;\n let targetPackage = owner.name === packageName ? owner : cache.resolve(packageName, owner);\n\n return this._tryComponent(parts[1], from, withRuleLookup, targetPackage);\n } else {\n return this._tryComponent(path, from, withRuleLookup, this.appPackage);\n }\n }\n\n private _tryComponent(\n path: string,\n from: string,\n withRuleLookup: boolean,\n targetPackage: Package | AppPackagePlaceholder\n ): Resolution | null {\n // The order here is important! We always put our .hbs paths first here, so\n // that if we have an hbs file of our own, that will be the first resolved\n // dependency. The first resolved dependency is special because we use that\n // as a key into the rules, and we want to be able to find our rules when\n // checking from our own template (among other times).\n\n let extensions = ['.hbs', ...this.adjustImportsOptions.resolvableExtensions.filter((e: string) => e !== '.hbs')];\n\n let componentModules = [] as string[];\n\n // first, the various places our template might be\n for (let extension of extensions) {\n let absPath = join(targetPackage.root, 'templates', 'components', path) + extension;\n if (pathExistsSync(absPath)) {\n componentModules.push(absPath);\n break;\n }\n\n absPath = join(targetPackage.root, 'components', path, 'template') + extension;\n if (pathExistsSync(absPath)) {\n componentModules.push(absPath);\n break;\n }\n\n if (\n typeof this.params.podModulePrefix !== 'undefined' &&\n this.params.podModulePrefix !== '' &&\n targetPackage === this.appPackage\n ) {\n let podPrefix = this.params.podModulePrefix.replace(this.params.modulePrefix, '');\n\n absPath = join(targetPackage.root, podPrefix, 'components', path, 'template') + extension;\n if (pathExistsSync(absPath)) {\n componentModules.push(absPath);\n break;\n }\n }\n }\n\n // then the various places our javascript might be\n for (let extension of extensions) {\n if (extension === '.hbs') {\n continue;\n }\n\n let absPath = join(targetPackage.root, 'components', path, 'index') + extension;\n if (pathExistsSync(absPath)) {\n componentModules.push(absPath);\n break;\n }\n\n absPath = join(targetPackage.root, 'components', path) + extension;\n if (pathExistsSync(absPath)) {\n componentModules.push(absPath);\n break;\n }\n\n absPath = join(targetPackage.root, 'components', path, 'component') + extension;\n if (pathExistsSync(absPath)) {\n componentModules.push(absPath);\n break;\n }\n\n if (\n typeof this.params.podModulePrefix !== 'undefined' &&\n this.params.podModulePrefix !== '' &&\n targetPackage === this.appPackage\n ) {\n let podPrefix = this.params.podModulePrefix.replace(this.params.modulePrefix, '');\n\n absPath = join(targetPackage.root, podPrefix, 'components', path, 'component') + extension;\n if (pathExistsSync(absPath)) {\n componentModules.push(absPath);\n break;\n }\n }\n }\n\n if (componentModules.length > 0) {\n let componentRules;\n if (withRuleLookup) {\n componentRules = this.findComponentRules(componentModules[0]);\n }\n return {\n type: 'component',\n modules: componentModules.map(absPath => ({\n path: explicitRelative(dirname(from), absPath),\n absPath,\n runtimeName: this.absPathToRuntimeName(absPath, targetPackage),\n })),\n yieldsComponents: componentRules ? componentRules.yieldsSafeComponents : [],\n yieldsArguments: componentRules ? componentRules.yieldsArguments : [],\n argumentsAreComponents: componentRules ? componentRules.argumentsAreComponents : [],\n };\n }\n\n return null;\n }\n\n resolveSubExpression(path: string, from: string, loc: Loc): Resolution | null {\n if (!this.staticHelpersEnabled) {\n return null;\n }\n let found = this.tryHelper(path, from);\n if (found) {\n return this.add(found, from);\n }\n if (builtInHelpers.includes(path)) {\n return null;\n }\n return this.add(\n {\n type: 'error',\n message: `Missing helper`,\n detail: path,\n loc,\n },\n from\n );\n }\n\n resolveMustache(path: string, hasArgs: boolean, from: string, loc: Loc): Resolution | null {\n if (this.staticHelpersEnabled) {\n let found = this.tryHelper(path, from);\n if (found) {\n return this.add(found, from);\n }\n }\n if (this.staticComponentsEnabled) {\n let found = this.tryComponent(path, from);\n if (found) {\n return this.add(found, from);\n }\n }\n if (\n hasArgs &&\n this.staticComponentsEnabled &&\n this.staticHelpersEnabled &&\n !builtInHelpers.includes(path) &&\n !this.isIgnoredComponent(path)\n ) {\n return this.add(\n {\n type: 'error',\n message: `Missing component or helper`,\n detail: path,\n loc,\n },\n from\n );\n } else {\n return null;\n }\n }\n\n resolveElementModifierStatement(path: string, from: string, loc: Loc): Resolution | null {\n if (!this.staticModifiersEnabled) {\n return null;\n }\n let found = this.tryModifier(path, from);\n if (found) {\n return this.add(found, from);\n }\n if (builtInModifiers.includes(path)) {\n return null;\n }\n return this.add(\n {\n type: 'error',\n message: `Missing modifier`,\n detail: path,\n loc,\n },\n from\n );\n }\n\n resolveElement(tagName: string, from: string, loc: Loc): Resolution | null {\n if (!this.staticComponentsEnabled) {\n return null;\n }\n\n if (tagName[0] === tagName[0].toLowerCase()) {\n // starts with lower case, so this can't be a component we need to\n // globally resolve\n return null;\n }\n\n let dName = dasherize(tagName);\n\n if (builtInComponents.includes(dName)) {\n return null;\n }\n\n let found = this.tryComponent(dName, from);\n if (found) {\n return this.add(found, from);\n }\n\n if (this.isIgnoredComponent(dName)) {\n return null;\n }\n\n return this.add(\n {\n type: 'error',\n message: `Missing component`,\n detail: tagName,\n loc,\n },\n from\n );\n }\n\n resolveComponentHelper(\n component: ComponentLocator,\n from: string,\n loc: Loc,\n impliedBecause?: { componentName: string; argumentName: string }\n ): Resolution | null {\n if (!this.staticComponentsEnabled) {\n return null;\n }\n\n let message;\n if (impliedBecause) {\n message = `argument \"${impliedBecause.argumentName}\" to component \"${impliedBecause.componentName}\" is treated as a component, but the value you're passing is dynamic`;\n } else {\n message = `Unsafe dynamic component`;\n }\n\n if (component.type === 'other') {\n return this.add(\n {\n type: 'error',\n message,\n detail: `cannot statically analyze this expression`,\n loc,\n },\n from\n );\n }\n if (component.type === 'path') {\n let ownComponentRules = this.findComponentRules(from);\n if (ownComponentRules && ownComponentRules.safeInteriorPaths.includes(component.path)) {\n return null;\n }\n return this.add(\n {\n type: 'error',\n message,\n detail: component.path,\n loc,\n },\n from\n );\n }\n\n if (builtInComponents.includes(component.path)) {\n return null;\n }\n\n let found = this.tryComponent(component.path, from);\n if (found) {\n return this.add(found, from);\n }\n return this.add(\n {\n type: 'error',\n message: `Missing component`,\n detail: component.path,\n loc,\n },\n from\n );\n }\n\n resolveDynamicHelper(helper: ComponentLocator, from: string, loc: Loc): Resolution | null {\n if (!this.staticHelpersEnabled) {\n return null;\n }\n\n if (helper.type === 'literal') {\n let helperName = helper.path;\n if (builtInHelpers.includes(helperName)) {\n return null;\n }\n\n let found = this.tryHelper(helperName, from);\n if (found) {\n return this.add(found, from);\n }\n return this.add(\n {\n type: 'error',\n message: `Missing helper`,\n detail: helperName,\n loc,\n },\n from\n );\n } else {\n return this.add(\n {\n type: 'error',\n message: 'Unsafe dynamic helper',\n detail: `cannot statically analyze this expression`,\n loc,\n },\n from\n );\n }\n }\n\n resolveDynamicModifier(modifier: ComponentLocator, from: string, loc: Loc): Resolution | null {\n if (!this.staticModifiersEnabled) {\n return null;\n }\n\n if (modifier.type === 'literal') {\n let modifierName = modifier.path;\n if (builtInModifiers.includes(modifierName)) {\n return null;\n }\n\n let found = this.tryModifier(modifierName, from);\n if (found) {\n return this.add(found, from);\n }\n return this.add(\n {\n type: 'error',\n message: `Missing modifier`,\n detail: modifierName,\n loc,\n },\n from\n );\n } else {\n return this.add(\n {\n type: 'error',\n message: 'Unsafe dynamic modifier',\n detail: `cannot statically analyze this expression`,\n loc,\n },\n from\n );\n }\n }\n}\n\nfunction humanReadableFile(root: string, file: string) {\n if (!root.endsWith('/')) {\n root += '/';\n }\n if (file.startsWith(root)) {\n return file.slice(root.length);\n }\n return file;\n}\n\n// we don't have a real Package for the app itself because the resolver has work\n// to do before we have even written out the app's own package.json and\n// therefore made it into a fully functional Package.\ninterface AppPackagePlaceholder {\n root: string;\n name: string;\n}\n\nexport type ComponentLocator =\n | {\n type: 'literal';\n path: string;\n }\n | {\n type: 'path';\n path: string;\n }\n | {\n type: 'other';\n };\n"]}
1
+ {"version":3,"file":"resolver.js","sourceRoot":"","sources":["resolver.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,yDAO4B;AAC5B,0CAOyB;AACzB,+BAAoD;AAGpD,2DAA6C;AAG7C,yEAAuD;AACvD,6DAA6D;AAC7D,uCAA0C;AAC1C,sDAA8B;AA2C9B,0EAA0E;AAC1E,2BAA2B;AAC3B,MAAM,cAAc,GAAG;IACrB,kBAAkB;IAClB,aAAa;IACb,YAAY;IACZ,oBAAoB;IACpB,QAAQ;IACR,OAAO;IACP,WAAW;IACX,QAAQ;IACR,UAAU;IACV,MAAM;IACN,SAAS;IACT,IAAI;IACJ,KAAK;IACL,WAAW;IACX,kBAAkB;IAClB,UAAU;IACV,gBAAgB;IAChB,MAAM;IACN,QAAQ;IACR,IAAI;IACJ,OAAO;IACP,KAAK;IACL,SAAS;IACT,KAAK;IACL,KAAK;IACL,UAAU;IACV,OAAO;IACP,KAAK;IACL,IAAI;IACJ,QAAQ;IACR,SAAS;IACT,cAAc;IACd,UAAU;IACV,UAAU;IACV,SAAS;IACT,WAAW;IACX,QAAQ;IACR,MAAM;IACN,OAAO;CACR,CAAC;AAEF,MAAM,iBAAiB,GAAG,CAAC,OAAO,EAAE,SAAS,EAAE,UAAU,CAAC,CAAC;AAC3D,MAAM,gBAAgB,GAAG,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;AAU1C,SAAS,cAAc,CAAC,OAA4C;IAClE,OAAO;QACL,aAAa,EAAE,OAAO,CAAC,aAAa;QACpC,eAAe,EAAE,OAAO,CAAC,eAAe;QACxC,gBAAgB,EAAE,OAAO,CAAC,gBAAgB;QAC1C,4BAA4B,EAAE,OAAO,CAAC,4BAA4B;KACnE,CAAC;AACJ,CAAC;AAoBD,SAAgB,SAAS,CAAC,MAAyB;IACjD,OAAO,IAAI,cAAc,CAAC,MAAM,CAAC,CAAC;AACpC,CAAC;AAFD,8BAEC;AAUD,MAAqB,cAAc;IAYjC,YAAoB,MAAyB;QAAzB,WAAM,GAAN,MAAM,CAAmB;QAXrC,iBAAY,GAA8B,IAAI,GAAG,EAAE,CAAC;QAY1D,IAAI,CAAC,MAAM,CAAC,OAAO,GAAG,cAAc,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;QAC1D,IAAI,CAAC,cAAc,GAAG;YACpB,WAAW,EAAE,UAAU;YACvB,UAAU,EAAE,WAAW;YACvB,MAAM;SACP,CAAC;QACF,IAAK,UAAkB,CAAC,eAAe,EAAE;YACvC,IAAI,CAAC,YAAY,GAAI,UAAkB,CAAC,eAAe,CAAC;SACzD;IACH,CAAC;IAED,KAAK,CAAC,UAAkB,EAAE,QAAgB;QACxC,IAAI,KAAK,GAAG,IAAI,CAAC,kBAAkB,CAAC,UAAU,CAAC,CAAC;QAChD,IAAI,IAAkB,CAAC;QACvB,IAAI,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,mBAAmB,EAAE;YAC9B,IAAI,GAAG,KAAK,CAAC,mBAAmB,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC,IAAI,CAAC,uBAAuB,CAAC,OAAO,EAAE,KAAM,EAAE,UAAU,CAAC,CAAC,CAAC;SAC5G;aAAM;YACL,IAAI,GAAG,EAAE,CAAC;SACX;QACD,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC;QACxC,IAAI,CAAC,eAAe,GAAG,QAAQ,CAAC;IAClC,CAAC;IAEO,GAAG,CAAC,UAAsB,EAAE,IAAY;QAC9C,4EAA4E;QAC5E,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,IAAI,CAAE,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QAC9C,OAAO,UAAU,CAAC;IACpB,CAAC;IAEO,kBAAkB,CAAC,OAAe;QACxC,IAAI,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;QAC/C,IAAI,KAAK,EAAE;YACT,OAAO,KAAK,CAAC;SACd;QAED,0EAA0E;QAC1E,wEAAwE;QACxE,4EAA4E;QAC5E,yEAAyE;QACzE,yEAAyE;QACzE,IAAI,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE;YAC5B,IAAI,IAAI,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;YAChC,KAAK,IAAI,GAAG,IAAI,IAAI,CAAC,oBAAoB,CAAC,oBAAoB,EAAE;gBAC9D,IAAI,GAAG,KAAK,MAAM,EAAE;oBAClB,IAAI,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,GAAG,GAAG,CAAC,CAAC;oBAClD,IAAI,KAAK,EAAE;wBACT,OAAO,KAAK,CAAC;qBACd;iBACF;aACF;SACF;QACD,OAAO,SAAS,CAAC;IACnB,CAAC;IAEO,kBAAkB,CAAC,cAAsB;QAC/C,OAAO,IAAI,CAAC,KAAK,CAAC,iBAAiB,CAAC,QAAQ,CAAC,cAAc,CAAC,CAAC;IAC/D,CAAC;IAGD,IAAI,oBAAoB;QACtB,MAAM,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC;QACxB,OAAO,0BAA0B,IAAI,MAAM;YACzC,CAAC,CAAC,iEAAiE;gBACjE,OAAO,CAAC,MAAM,CAAC,wBAAwB,CAAC;YAC1C,CAAC,CAAC,MAAM,CAAC,oBAAoB,CAAC;IAClC,CAAC;IAGD,IAAY,KAAK;QACf,IAAI,CAAC,IAAI,CAAC,gBAAgB,EAAE;YAC1B,MAAM,IAAI,KAAK,CACb,iGAAiG,CAClG,CAAC;SACH;QAED,0DAA0D;QAC1D,IAAI,UAAU,GAA2C,IAAI,GAAG,EAAE,CAAC;QAEnE,sEAAsE;QACtE,IAAI,iBAAiB,GAAa,EAAE,CAAC;QAErC,4EAA4E;QAC5E,0EAA0E;QAC1E,SAAS;QACT,KAAK,IAAI,IAAI,IAAI,IAAI,CAAC,MAAM,CAAC,kBAAkB,EAAE;YAC/C,IAAI,IAAI,CAAC,UAAU,EAAE;gBACnB,KAAK,IAAI,CAAC,OAAO,EAAE,cAAc,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE;oBACrE,IAAI,cAAc,CAAC,YAAY,EAAE;wBAC/B,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,iBAAiB,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC,CAAC;wBAC9D,SAAS;qBACV;oBACD,IAAI,WAAW,GAAG,IAAI,CAAC,uBAAuB,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;oBACzE,IAAI,cAAc,GAAG,IAAA,0CAAuB,EAAC,cAAc,CAAC,CAAC;oBAE7D,qEAAqE;oBACrE,gEAAgE;oBAChE,UAAU,CAAC,GAAG,CAAC,WAAW,CAAC,OAAO,EAAE,cAAc,CAAC,CAAC;oBAEpD,oEAAoE;oBACpE,mBAAmB;oBACnB,IAAI,cAAc,CAAC,MAAM,EAAE;wBACzB,IAAI,cAAc,CAAC,MAAM,CAAC,OAAO,EAAE;4BACjC,UAAU,CAAC,GAAG,CAAC,IAAA,WAAI,EAAC,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,cAAc,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,cAAc,CAAC,CAAC;yBACvF;6BAAM,IAAI,cAAc,CAAC,MAAM,CAAC,SAAS,EAAE;4BAC1C,KAAK,IAAI,IAAI,IAAI,IAAI,CAAC,KAAK,EAAE;gCAC3B,UAAU,CAAC,GAAG,CAAC,IAAA,WAAI,EAAC,IAAI,EAAE,cAAc,CAAC,MAAM,CAAC,SAAS,CAAC,EAAE,cAAc,CAAC,CAAC;6BAC7E;yBACF;6BAAM;4BACL,MAAM,IAAI,KAAK,CACb,+EAA+E,IAAI,CAAC,SAAS,CAC3F,IAAI,EACJ,IAAI,EACJ,CAAC,CACF,EAAE,CACJ,CAAC;yBACH;qBACF;iBACF;aACF;YACD,IAAI,IAAI,CAAC,YAAY,EAAE;gBACrB,KAAK,IAAI,CAAC,IAAI,EAAE,aAAa,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,YAAY,CAAC,EAAE;oBACnE,IAAI,cAAc,GAAG,IAAA,0CAAuB,EAAC,aAAa,CAAC,CAAC;oBAC5D,UAAU,CAAC,GAAG,CAAC,IAAA,WAAI,EAAC,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,EAAE,cAAc,CAAC,CAAC;iBAC9D;aACF;YACD,IAAI,IAAI,CAAC,cAAc,EAAE;gBACvB,KAAK,IAAI,CAAC,IAAI,EAAE,aAAa,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,cAAc,CAAC,EAAE;oBACrE,IAAI,cAAc,GAAG,IAAA,0CAAuB,EAAC,aAAa,CAAC,CAAC;oBAC5D,KAAK,IAAI,IAAI,IAAI,IAAI,CAAC,KAAK,EAAE;wBAC3B,UAAU,CAAC,GAAG,CAAC,IAAA,WAAI,EAAC,IAAI,EAAE,IAAI,CAAC,EAAE,cAAc,CAAC,CAAC;qBAClD;iBACF;aACF;SACF;QACD,OAAO,EAAE,UAAU,EAAE,iBAAiB,EAAE,CAAC;IAC3C,CAAC;IAED,uBAAuB,CACrB,OAAe,EACf,IAAgC,EAChC,IAAI,GAAG,kBAAkB;QAEzB,IAAI,CAAC,IAAI,CAAC,gBAAgB,EAAE;YAC1B,MAAM,IAAI,KAAK,CAAC,sEAAsE,CAAC,CAAC;SACzF;QACD,IAAI,IAAI,GAAG,IAAI,CAAC,iBAAiB,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;QACjD,IAAI,KAAK,GAAG,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC;QACjD,IAAI,KAAK,IAAI,KAAK,CAAC,IAAI,KAAK,WAAW,EAAE;YACvC,OAAO,KAAK,CAAC;SACd;QACD,MAAM,IAAI,KAAK,CAAC,8BAA8B,OAAO,wBAAwB,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC;IAChH,CAAC;IAEO,iBAAiB,CAAC,OAAe,EAAE,IAAgC;QACzE,IAAI,CAAC,IAAI,CAAC,gBAAgB,EAAE;YAC1B,MAAM,IAAI,KAAK,CAAC,sEAAsE,CAAC,CAAC;SACzF;QACD,IAAI,GAAmC,CAAC;QACxC,IAAI;YACF,GAAG,GAAG,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC,aAAa,EAAE,OAAO,CAA8C,CAAC;SACxG;QAAC,OAAO,GAAG,EAAE;YACZ,MAAM,IAAI,KAAK,CAAC,sCAAsC,OAAO,eAAe,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC;SAC9G;QACD,IAAI,CAAC,GAAG,CAAC,IAAI,KAAK,SAAS,IAAI,GAAG,CAAC,IAAI,KAAK,UAAU,CAAC,IAAI,GAAG,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE;YAC9E,IAAI,KAAK,GAAG,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YACxB,MAAM,cAAc,GAAG,KAAK,CAAC,IAAI,KAAK,mBAAmB,IAAI,KAAK,CAAC,IAAI,CAAC,IAAI,KAAK,gBAAgB,CAAC;YAClG,MAAM,WAAW,GACf,cAAc,IAAM,KAAiC,CAAC,IAA6B,CAAC,QAAQ,KAAK,WAAW,CAAC;YAC/G,MAAM,cAAc,GAClB,WAAW;gBACX,KAAK,CAAC,OAAO,CAAE,KAAiC,CAAC,MAAM,CAAC;gBACvD,KAAiC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,KAAK,eAAe,CAAC;YACxE,IAAI,cAAc,IAAI,WAAW,IAAI,cAAc,EAAE;gBACnD,OAAS,KAAiC,CAAC,MAAM,CAAC,CAAC,CAAyB,CAAC,KAAK,CAAC;aACpF;YACD,IAAI,cAAc,EAAE;gBAClB,OAAS,KAAiC,CAAC,IAA6B,CAAC,QAAQ,CAAC;aACnF;YACD,IAAI,KAAK,CAAC,IAAI,KAAK,aAAa,EAAE;gBAChC,OAAO,IAAA,oCAAS,EAAC,KAAK,CAAC,GAAG,CAAC,CAAC;aAC7B;SACF;QACD,MAAM,IAAI,KAAK,CAAC,iDAAiD,OAAO,GAAG,CAAC,CAAC;IAC/E,CAAC;IAED,cAAc,CAAC,gBAAkC;QAC/C,IAAI,CAAC,gBAAgB,GAAG,gBAAgB,CAAC;QACzC,IAAI,IAAI,CAAC,uBAAuB,IAAI,IAAI,CAAC,oBAAoB,IAAI,IAAI,CAAC,sBAAsB,EAAE;YAC5F,OAAO,IAAA,0CAAqB,EAAC,IAAI,CAAC,CAAC;SACpC;IACH,CAAC;IAED,cAAc,CAAC,UAAkB;QAC/B,IAAI,QAAQ,GAA6B,IAAI,GAAG,EAAE,CAAC;QACnD,IAAI,IAAI,GAAG,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;QAC7C,IAAI,IAAI,EAAE;YACR,KAAK,IAAI,GAAG,IAAI,IAAI,EAAE;gBACpB,IAAI,GAAG,CAAC,IAAI,KAAK,OAAO,EAAE;oBACxB,IAAI,CAAC,IAAI,CAAC,YAAY,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,4BAA4B,EAAE;wBAC3E,IAAI,CAAC,GAA4B,IAAI,KAAK,CACxC,GAAG,GAAG,CAAC,OAAO,KAAK,GAAG,CAAC,MAAM,OAAO,iBAAiB,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,UAAU,CAAC,EAAE,CACtF,CAAC;wBACF,CAAC,CAAC,uBAAuB,GAAG,IAAI,CAAC;wBACjC,CAAC,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,CAAC;wBAChB,CAAC,CAAC,UAAU,GAAG,UAAU,CAAC;wBAC1B,MAAM,CAAC,CAAC;qBACT;oBACD,IAAI,IAAI,CAAC,YAAY,EAAE;wBACrB,IAAI,CAAC,YAAY,CAAC;4BAChB,OAAO,EAAE,GAAG,CAAC,OAAO;4BACpB,QAAQ,EAAE,UAAU;4BACpB,MAAM,EAAE,GAAG,CAAC,MAAM;4BAClB,GAAG,EAAE,GAAG,CAAC,GAAG;4BACZ,MAAM,EAAE,IAAI,CAAC,eAAgB;yBAC9B,CAAC,CAAC;qBACJ;iBACF;qBAAM;oBACL,KAAK,IAAI,KAAK,IAAI,GAAG,CAAC,OAAO,EAAE;wBAC7B,IAAI,EAAE,WAAW,EAAE,GAAG,KAAK,CAAC;wBAC5B,QAAQ,CAAC,GAAG,CAAC,WAAW,EAAE,KAAK,CAAC,CAAC;qBAClC;iBACF;aACF;SACF;QACD,OAAO,CAAC,GAAG,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC;IAChC,CAAC;IAED,aAAa,CAAC,IAAY,EAAE,IAAY;QACtC,IAAI,OAAO,CAAC;QACZ,IAAI;YACF,OAAO,GAAG,iBAAO,CAAC,IAAI,CAAC,IAAI,EAAE;gBAC3B,OAAO,EAAE,IAAA,cAAO,EAAC,IAAI,CAAC;gBACtB,UAAU,EAAE,IAAI,CAAC,oBAAoB,CAAC,oBAAoB;aAC3D,CAAC,CAAC;SACJ;QAAC,OAAO,GAAG,EAAE;YACZ,OAAO;SACR;QACD,IAAI,OAAO,EAAE;YACX,IAAI,WAAW,GAAG,IAAI,CAAC,oBAAoB,CAAC,OAAO,CAAC,CAAC;YACrD,IAAI,WAAW,EAAE;gBACf,OAAO,EAAE,WAAW,EAAE,OAAO,EAAE,CAAC;aACjC;SACF;IACH,CAAC;IAGD,IAAY,2BAA2B;QACrC,OAAO,IAAA,wBAAiB,EAAC,IAAI,CAAC,oBAAoB,CAAC,oBAAoB,CAAC,CAAC;IAC3E,CAAC;IAED,oBAAoB,CAAC,OAAe,EAAE,aAA8C;QAClF,IAAI,GAAG,GAAG,aAAa,IAAI,mBAAY,CAAC,MAAM,CAAC,kBAAkB,EAAE,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;QAC1G,IAAI,GAAG,EAAE;YACP,IAAI,kBAAkB,GAAG,GAAG,CAAC,IAAI,CAAC;YAClC,KAAK,IAAI,CAAC,WAAW,EAAE,QAAQ,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,oBAAoB,CAAC,cAAc,CAAC,EAAE;gBAC5F,IAAI,QAAQ,KAAK,kBAAkB,EAAE;oBACnC,kBAAkB,GAAG,WAAW,CAAC;oBACjC,MAAM;iBACP;aACF;YACD,OAAO,IAAA,WAAI,EAAC,kBAAkB,EAAE,IAAA,eAAQ,EAAC,GAAG,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,UAAG,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;SACnF;aAAM,IAAI,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE;YAC/C,OAAO,IAAA,WAAI,EAAC,IAAI,CAAC,MAAM,CAAC,YAAY,EAAE,IAAA,eAAQ,EAAC,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,UAAG,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;SACjG;aAAM;YACL,MAAM,IAAI,KAAK,CAAC,8CAA8C,OAAO,EAAE,CAAC,CAAC;SAC1E;IACH,CAAC;IAED,oBAAoB,CAAC,OAAe,EAAE,aAA8C;QAClF,OAAO,IAAI,CAAC,oBAAoB,CAAC,OAAO,EAAE,aAAa,CAAC;aACrD,OAAO,CAAC,IAAI,CAAC,2BAA2B,EAAE,EAAE,CAAC;aAC7C,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC;IAC7B,CAAC;IAED,IAAY,uBAAuB;QACjC,OAAO,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,gBAAgB,IAAI,OAAO,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;IAC5E,CAAC;IAED,IAAY,oBAAoB;QAC9B,OAAO,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,aAAa,IAAI,OAAO,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;IACzE,CAAC;IAED,IAAY,sBAAsB;QAChC,OAAO,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,eAAe,IAAI,OAAO,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;IAC3E,CAAC;IAEO,SAAS,CAAC,IAAY,EAAE,IAAY;QAC1C,IAAI,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QAC5B,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE;YAC3C,IAAI,KAAK,GAAG,mBAAY,CAAC,MAAM,CAAC,kBAAkB,EAAE,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;YACtE,IAAI,WAAW,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;YAC3B,IAAI,OAAO,GAAG,IAAI,CAAC,oBAAoB,CAAC,cAAc,CAAC,WAAW,CAAC,CAAC;YACpE,IAAI,OAAO,EAAE;gBACX,WAAW,GAAG,OAAO,CAAC;aACvB;YACD,IAAI,KAAK,GAAG,KAAK,CAAC,WAAW,CAAC,IAAI,CAAE,CAAC;YACrC,IAAI,aAAa,GAAG,KAAK,CAAC,IAAI,KAAK,WAAW,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,WAAW,EAAE,KAAK,CAAC,CAAC;YAC3F,OAAO,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,aAAa,CAAC,CAAC;SACvD;aAAM;YACL,OAAO,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;SACrD;IACH,CAAC;IAEO,UAAU,CAAC,IAAY,EAAE,IAAY,EAAE,aAA8C;QAC3F,KAAK,IAAI,SAAS,IAAI,IAAI,CAAC,oBAAoB,CAAC,oBAAoB,EAAE;YACpE,IAAI,OAAO,GAAG,IAAA,WAAI,EAAC,aAAa,CAAC,IAAI,EAAE,SAAS,EAAE,IAAI,CAAC,GAAG,SAAS,CAAC;YACpE,IAAI,IAAA,yBAAc,EAAC,OAAO,CAAC,EAAE;gBAC3B,OAAO;oBACL,IAAI,EAAE,QAAQ;oBACd,OAAO,EAAE;wBACP;4BACE,WAAW,EAAE,IAAI,CAAC,oBAAoB,CAAC,OAAO,EAAE,aAAa,CAAC;4BAC9D,IAAI,EAAE,IAAA,uBAAgB,EAAC,IAAA,cAAO,EAAC,IAAI,CAAC,EAAE,OAAO,CAAC;4BAC9C,OAAO;yBACR;qBACF;iBACF,CAAC;aACH;SACF;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAEO,WAAW,CAAC,IAAY,EAAE,IAAY;QAC5C,IAAI,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QAC5B,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE;YAC3C,IAAI,KAAK,GAAG,mBAAY,CAAC,MAAM,CAAC,kBAAkB,EAAE,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;YACtE,IAAI,WAAW,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;YAC3B,IAAI,OAAO,GAAG,IAAI,CAAC,oBAAoB,CAAC,cAAc,CAAC,WAAW,CAAC,CAAC;YACpE,IAAI,OAAO,EAAE;gBACX,WAAW,GAAG,OAAO,CAAC;aACvB;YACD,IAAI,KAAK,GAAG,KAAK,CAAC,WAAW,CAAC,IAAI,CAAE,CAAC;YACrC,IAAI,aAAa,GAAG,KAAK,CAAC,IAAI,KAAK,WAAW,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,WAAW,EAAE,KAAK,CAAC,CAAC;YAC3F,OAAO,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,aAAa,CAAC,CAAC;SACzD;aAAM;YACL,OAAO,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;SACvD;IACH,CAAC;IAEO,YAAY,CAAC,IAAY,EAAE,IAAY,EAAE,aAA8C;QAC7F,KAAK,IAAI,SAAS,IAAI,IAAI,CAAC,oBAAoB,CAAC,oBAAoB,EAAE;YACpE,IAAI,OAAO,GAAG,IAAA,WAAI,EAAC,aAAa,CAAC,IAAI,EAAE,WAAW,EAAE,IAAI,CAAC,GAAG,SAAS,CAAC;YACtE,IAAI,IAAA,yBAAc,EAAC,OAAO,CAAC,EAAE;gBAC3B,OAAO;oBACL,IAAI,EAAE,UAAU;oBAChB,OAAO,EAAE;wBACP;4BACE,WAAW,EAAE,IAAI,CAAC,oBAAoB,CAAC,OAAO,EAAE,aAAa,CAAC;4BAC9D,IAAI,EAAE,IAAA,uBAAgB,EAAC,IAAA,cAAO,EAAC,IAAI,CAAC,EAAE,OAAO,CAAC;4BAC9C,OAAO;yBACR;qBACF;iBACF,CAAC;aACH;SACF;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAGD,IAAY,UAAU;QACpB,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC,YAAY,EAAE,CAAC;IACpE,CAAC;IAEO,YAAY,CAAC,IAAY,EAAE,IAAY,EAAE,cAAc,GAAG,IAAI;QACpE,IAAI,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QAC5B,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE;YAC3C,IAAI,KAAK,GAAG,mBAAY,CAAC,MAAM,CAAC,kBAAkB,EAAE,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;YACtE,IAAI,WAAW,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;YAC3B,IAAI,OAAO,GAAG,IAAI,CAAC,oBAAoB,CAAC,cAAc,CAAC,WAAW,CAAC,CAAC;YACpE,IAAI,OAAO,EAAE;gBACX,WAAW,GAAG,OAAO,CAAC;aACvB;YACD,IAAI,KAAK,GAAG,KAAK,CAAC,WAAW,CAAC,IAAI,CAAE,CAAC;YACrC,IAAI,aAAa,GAAG,KAAK,CAAC,IAAI,KAAK,WAAW,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,WAAW,EAAE,KAAK,CAAC,CAAC;YAE3F,OAAO,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,cAAc,EAAE,aAAa,CAAC,CAAC;SAC1E;aAAM;YACL,OAAO,IAAI,CAAC,aAAa,CAAC,IAAI,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;SACxE;IACH,CAAC;IAEO,aAAa,CACnB,IAAY,EACZ,IAAY,EACZ,cAAuB,EACvB,aAA8C;QAE9C,2EAA2E;QAC3E,0EAA0E;QAC1E,2EAA2E;QAC3E,yEAAyE;QACzE,sDAAsD;QAEtD,IAAI,UAAU,GAAG,CAAC,MAAM,EAAE,GAAG,IAAI,CAAC,oBAAoB,CAAC,oBAAoB,CAAC,MAAM,CAAC,CAAC,CAAS,EAAE,EAAE,CAAC,CAAC,KAAK,MAAM,CAAC,CAAC,CAAC;QAEjH,IAAI,gBAAgB,GAAG,EAAc,CAAC;QAEtC,kDAAkD;QAClD,KAAK,IAAI,SAAS,IAAI,UAAU,EAAE;YAChC,IAAI,OAAO,GAAG,IAAA,WAAI,EAAC,aAAa,CAAC,IAAI,EAAE,WAAW,EAAE,YAAY,EAAE,IAAI,CAAC,GAAG,SAAS,CAAC;YACpF,IAAI,IAAA,yBAAc,EAAC,OAAO,CAAC,EAAE;gBAC3B,gBAAgB,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;gBAC/B,MAAM;aACP;YAED,OAAO,GAAG,IAAA,WAAI,EAAC,aAAa,CAAC,IAAI,EAAE,YAAY,EAAE,IAAI,EAAE,UAAU,CAAC,GAAG,SAAS,CAAC;YAC/E,IAAI,IAAA,yBAAc,EAAC,OAAO,CAAC,EAAE;gBAC3B,gBAAgB,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;gBAC/B,MAAM;aACP;YAED,IACE,OAAO,IAAI,CAAC,MAAM,CAAC,eAAe,KAAK,WAAW;gBAClD,IAAI,CAAC,MAAM,CAAC,eAAe,KAAK,EAAE;gBAClC,aAAa,KAAK,IAAI,CAAC,UAAU,EACjC;gBACA,IAAI,SAAS,GAAG,IAAI,CAAC,MAAM,CAAC,eAAe,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,YAAY,EAAE,EAAE,CAAC,CAAC;gBAElF,OAAO,GAAG,IAAA,WAAI,EAAC,aAAa,CAAC,IAAI,EAAE,SAAS,EAAE,YAAY,EAAE,IAAI,EAAE,UAAU,CAAC,GAAG,SAAS,CAAC;gBAC1F,IAAI,IAAA,yBAAc,EAAC,OAAO,CAAC,EAAE;oBAC3B,gBAAgB,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;oBAC/B,MAAM;iBACP;aACF;SACF;QAED,kDAAkD;QAClD,KAAK,IAAI,SAAS,IAAI,UAAU,EAAE;YAChC,IAAI,SAAS,KAAK,MAAM,EAAE;gBACxB,SAAS;aACV;YAED,IAAI,OAAO,GAAG,IAAA,WAAI,EAAC,aAAa,CAAC,IAAI,EAAE,YAAY,EAAE,IAAI,EAAE,OAAO,CAAC,GAAG,SAAS,CAAC;YAChF,IAAI,IAAA,yBAAc,EAAC,OAAO,CAAC,EAAE;gBAC3B,gBAAgB,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;gBAC/B,MAAM;aACP;YAED,OAAO,GAAG,IAAA,WAAI,EAAC,aAAa,CAAC,IAAI,EAAE,YAAY,EAAE,IAAI,CAAC,GAAG,SAAS,CAAC;YACnE,IAAI,IAAA,yBAAc,EAAC,OAAO,CAAC,EAAE;gBAC3B,gBAAgB,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;gBAC/B,MAAM;aACP;YAED,OAAO,GAAG,IAAA,WAAI,EAAC,aAAa,CAAC,IAAI,EAAE,YAAY,EAAE,IAAI,EAAE,WAAW,CAAC,GAAG,SAAS,CAAC;YAChF,IAAI,IAAA,yBAAc,EAAC,OAAO,CAAC,EAAE;gBAC3B,gBAAgB,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;gBAC/B,MAAM;aACP;YAED,IACE,OAAO,IAAI,CAAC,MAAM,CAAC,eAAe,KAAK,WAAW;gBAClD,IAAI,CAAC,MAAM,CAAC,eAAe,KAAK,EAAE;gBAClC,aAAa,KAAK,IAAI,CAAC,UAAU,EACjC;gBACA,IAAI,SAAS,GAAG,IAAI,CAAC,MAAM,CAAC,eAAe,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,YAAY,EAAE,EAAE,CAAC,CAAC;gBAElF,OAAO,GAAG,IAAA,WAAI,EAAC,aAAa,CAAC,IAAI,EAAE,SAAS,EAAE,YAAY,EAAE,IAAI,EAAE,WAAW,CAAC,GAAG,SAAS,CAAC;gBAC3F,IAAI,IAAA,yBAAc,EAAC,OAAO,CAAC,EAAE;oBAC3B,gBAAgB,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;oBAC/B,MAAM;iBACP;aACF;SACF;QAED,IAAI,gBAAgB,CAAC,MAAM,GAAG,CAAC,EAAE;YAC/B,IAAI,cAAc,CAAC;YACnB,IAAI,cAAc,EAAE;gBAClB,cAAc,GAAG,IAAI,CAAC,kBAAkB,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,CAAC;aAC/D;YACD,OAAO;gBACL,IAAI,EAAE,WAAW;gBACjB,OAAO,EAAE,gBAAgB,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;oBACxC,IAAI,EAAE,IAAA,uBAAgB,EAAC,IAAA,cAAO,EAAC,IAAI,CAAC,EAAE,OAAO,CAAC;oBAC9C,OAAO;oBACP,WAAW,EAAE,IAAI,CAAC,oBAAoB,CAAC,OAAO,EAAE,aAAa,CAAC;iBAC/D,CAAC,CAAC;gBACH,gBAAgB,EAAE,cAAc,CAAC,CAAC,CAAC,cAAc,CAAC,oBAAoB,CAAC,CAAC,CAAC,EAAE;gBAC3E,eAAe,EAAE,cAAc,CAAC,CAAC,CAAC,cAAc,CAAC,eAAe,CAAC,CAAC,CAAC,EAAE;gBACrE,sBAAsB,EAAE,cAAc,CAAC,CAAC,CAAC,cAAc,CAAC,sBAAsB,CAAC,CAAC,CAAC,EAAE;aACpF,CAAC;SACH;QAED,OAAO,IAAI,CAAC;IACd,CAAC;IAED,oBAAoB,CAAC,IAAY,EAAE,IAAY,EAAE,GAAQ;QACvD,IAAI,CAAC,IAAI,CAAC,oBAAoB,EAAE;YAC9B,OAAO,IAAI,CAAC;SACb;QACD,IAAI,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QACvC,IAAI,KAAK,EAAE;YACT,OAAO,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;SAC9B;QACD,IAAI,cAAc,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE;YACjC,OAAO,IAAI,CAAC;SACb;QACD,OAAO,IAAI,CAAC,GAAG,CACb;YACE,IAAI,EAAE,OAAO;YACb,OAAO,EAAE,gBAAgB;YACzB,MAAM,EAAE,IAAI;YACZ,GAAG;SACJ,EACD,IAAI,CACL,CAAC;IACJ,CAAC;IAED,eAAe,CAAC,IAAY,EAAE,OAAgB,EAAE,IAAY,EAAE,GAAQ;QACpE,IAAI,IAAI,CAAC,oBAAoB,EAAE;YAC7B,IAAI,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;YACvC,IAAI,KAAK,EAAE;gBACT,OAAO,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;aAC9B;SACF;QACD,IAAI,IAAI,CAAC,uBAAuB,EAAE;YAChC,IAAI,KAAK,GAAG,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;YAC1C,IAAI,KAAK,EAAE;gBACT,OAAO,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;aAC9B;SACF;QACD,IACE,OAAO;YACP,IAAI,CAAC,uBAAuB;YAC5B,IAAI,CAAC,oBAAoB;YACzB,CAAC,cAAc,CAAC,QAAQ,CAAC,IAAI,CAAC;YAC9B,CAAC,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,EAC9B;YACA,OAAO,IAAI,CAAC,GAAG,CACb;gBACE,IAAI,EAAE,OAAO;gBACb,OAAO,EAAE,6BAA6B;gBACtC,MAAM,EAAE,IAAI;gBACZ,GAAG;aACJ,EACD,IAAI,CACL,CAAC;SACH;aAAM;YACL,OAAO,IAAI,CAAC;SACb;IACH,CAAC;IAED,+BAA+B,CAAC,IAAY,EAAE,IAAY,EAAE,GAAQ;QAClE,IAAI,CAAC,IAAI,CAAC,sBAAsB,EAAE;YAChC,OAAO,IAAI,CAAC;SACb;QACD,IAAI,KAAK,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QACzC,IAAI,KAAK,EAAE;YACT,OAAO,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;SAC9B;QACD,IAAI,gBAAgB,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE;YACnC,OAAO,IAAI,CAAC;SACb;QACD,OAAO,IAAI,CAAC,GAAG,CACb;YACE,IAAI,EAAE,OAAO;YACb,OAAO,EAAE,kBAAkB;YAC3B,MAAM,EAAE,IAAI;YACZ,GAAG;SACJ,EACD,IAAI,CACL,CAAC;IACJ,CAAC;IAED,cAAc,CAAC,OAAe,EAAE,IAAY,EAAE,GAAQ;QACpD,IAAI,CAAC,IAAI,CAAC,uBAAuB,EAAE;YACjC,OAAO,IAAI,CAAC;SACb;QAED,IAAI,OAAO,CAAC,CAAC,CAAC,KAAK,OAAO,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,EAAE;YAC3C,kEAAkE;YAClE,mBAAmB;YACnB,OAAO,IAAI,CAAC;SACb;QAED,IAAI,KAAK,GAAG,IAAA,oCAAS,EAAC,OAAO,CAAC,CAAC;QAE/B,IAAI,iBAAiB,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE;YACrC,OAAO,IAAI,CAAC;SACb;QAED,IAAI,KAAK,GAAG,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;QAC3C,IAAI,KAAK,EAAE;YACT,OAAO,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;SAC9B;QAED,IAAI,IAAI,CAAC,kBAAkB,CAAC,KAAK,CAAC,EAAE;YAClC,OAAO,IAAI,CAAC;SACb;QAED,OAAO,IAAI,CAAC,GAAG,CACb;YACE,IAAI,EAAE,OAAO;YACb,OAAO,EAAE,mBAAmB;YAC5B,MAAM,EAAE,OAAO;YACf,GAAG;SACJ,EACD,IAAI,CACL,CAAC;IACJ,CAAC;IAED,sBAAsB,CACpB,SAA2B,EAC3B,IAAY,EACZ,GAAQ,EACR,cAAgE;QAEhE,IAAI,CAAC,IAAI,CAAC,uBAAuB,EAAE;YACjC,OAAO,IAAI,CAAC;SACb;QAED,IAAI,OAAO,CAAC;QACZ,IAAI,cAAc,EAAE;YAClB,OAAO,GAAG,aAAa,cAAc,CAAC,YAAY,mBAAmB,cAAc,CAAC,aAAa,sEAAsE,CAAC;SACzK;aAAM;YACL,OAAO,GAAG,0BAA0B,CAAC;SACtC;QAED,IAAI,SAAS,CAAC,IAAI,KAAK,OAAO,EAAE;YAC9B,OAAO,IAAI,CAAC,GAAG,CACb;gBACE,IAAI,EAAE,OAAO;gBACb,OAAO;gBACP,MAAM,EAAE,2CAA2C;gBACnD,GAAG;aACJ,EACD,IAAI,CACL,CAAC;SACH;QACD,IAAI,SAAS,CAAC,IAAI,KAAK,MAAM,EAAE;YAC7B,IAAI,iBAAiB,GAAG,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAC;YACtD,IAAI,iBAAiB,IAAI,iBAAiB,CAAC,iBAAiB,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE;gBACrF,OAAO,IAAI,CAAC;aACb;YACD,OAAO,IAAI,CAAC,GAAG,CACb;gBACE,IAAI,EAAE,OAAO;gBACb,OAAO;gBACP,MAAM,EAAE,SAAS,CAAC,IAAI;gBACtB,GAAG;aACJ,EACD,IAAI,CACL,CAAC;SACH;QAED,IAAI,iBAAiB,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE;YAC9C,OAAO,IAAI,CAAC;SACb;QAED,IAAI,KAAK,GAAG,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QACpD,IAAI,KAAK,EAAE;YACT,OAAO,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;SAC9B;QACD,OAAO,IAAI,CAAC,GAAG,CACb;YACE,IAAI,EAAE,OAAO;YACb,OAAO,EAAE,mBAAmB;YAC5B,MAAM,EAAE,SAAS,CAAC,IAAI;YACtB,GAAG;SACJ,EACD,IAAI,CACL,CAAC;IACJ,CAAC;IAED,oBAAoB,CAAC,MAAwB,EAAE,IAAY,EAAE,GAAQ;QACnE,IAAI,CAAC,IAAI,CAAC,oBAAoB,EAAE;YAC9B,OAAO,IAAI,CAAC;SACb;QAED,IAAI,MAAM,CAAC,IAAI,KAAK,SAAS,EAAE;YAC7B,IAAI,UAAU,GAAG,MAAM,CAAC,IAAI,CAAC;YAC7B,IAAI,cAAc,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE;gBACvC,OAAO,IAAI,CAAC;aACb;YAED,IAAI,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC;YAC7C,IAAI,KAAK,EAAE;gBACT,OAAO,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;aAC9B;YACD,OAAO,IAAI,CAAC,GAAG,CACb;gBACE,IAAI,EAAE,OAAO;gBACb,OAAO,EAAE,gBAAgB;gBACzB,MAAM,EAAE,UAAU;gBAClB,GAAG;aACJ,EACD,IAAI,CACL,CAAC;SACH;aAAM;YACL,OAAO,IAAI,CAAC,GAAG,CACb;gBACE,IAAI,EAAE,OAAO;gBACb,OAAO,EAAE,uBAAuB;gBAChC,MAAM,EAAE,2CAA2C;gBACnD,GAAG;aACJ,EACD,IAAI,CACL,CAAC;SACH;IACH,CAAC;IAED,sBAAsB,CAAC,QAA0B,EAAE,IAAY,EAAE,GAAQ;QACvE,IAAI,CAAC,IAAI,CAAC,sBAAsB,EAAE;YAChC,OAAO,IAAI,CAAC;SACb;QAED,IAAI,QAAQ,CAAC,IAAI,KAAK,SAAS,EAAE;YAC/B,IAAI,YAAY,GAAG,QAAQ,CAAC,IAAI,CAAC;YACjC,IAAI,gBAAgB,CAAC,QAAQ,CAAC,YAAY,CAAC,EAAE;gBAC3C,OAAO,IAAI,CAAC;aACb;YAED,IAAI,KAAK,GAAG,IAAI,CAAC,WAAW,CAAC,YAAY,EAAE,IAAI,CAAC,CAAC;YACjD,IAAI,KAAK,EAAE;gBACT,OAAO,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;aAC9B;YACD,OAAO,IAAI,CAAC,GAAG,CACb;gBACE,IAAI,EAAE,OAAO;gBACb,OAAO,EAAE,kBAAkB;gBAC3B,MAAM,EAAE,YAAY;gBACpB,GAAG;aACJ,EACD,IAAI,CACL,CAAC;SACH;aAAM;YACL,OAAO,IAAI,CAAC,GAAG,CACb;gBACE,IAAI,EAAE,OAAO;gBACb,OAAO,EAAE,yBAAyB;gBAClC,MAAM,EAAE,2CAA2C;gBACnD,GAAG;aACJ,EACD,IAAI,CACL,CAAC;SACH;IACH,CAAC;CACF;AAtqBC;IADC,IAAA,4BAAO,GAAE;0DAOT;AAGD;IADC,IAAA,4BAAO,GAAE;2CAoET;AA+GD;IADC,IAAA,4BAAO,GAAE;iEAGT;AA+GD;IADC,IAAA,4BAAO,GAAE;gDAGT;AAtXH,iCA8uBC;AAED,SAAS,iBAAiB,CAAC,IAAY,EAAE,IAAY;IACnD,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE;QACvB,IAAI,IAAI,GAAG,CAAC;KACb;IACD,IAAI,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE;QACzB,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;KAChC;IACD,OAAO,IAAI,CAAC;AACd,CAAC","sourcesContent":["import {\n ActivePackageRules,\n ComponentRules,\n ModuleRules,\n PackageRules,\n PreprocessedComponentRule,\n preprocessComponentRule,\n} from './dependency-rules';\nimport {\n Package,\n PackageCache,\n Resolver,\n TemplateCompiler,\n explicitRelative,\n extensionsPattern,\n} from '@embroider/core';\nimport { dirname, join, relative, sep } from 'path';\n\nimport { Options as AdjustImportsOptions } from '@embroider/core/src/babel-plugin-adjust-imports';\nimport { Memoize } from 'typescript-memoize';\nimport Options from './options';\nimport { ResolvedDep } from '@embroider/core/src/resolver';\nimport { dasherize } from './dasherize-component-name';\nimport { makeResolverTransform } from './resolver-transform';\nimport { pathExistsSync } from 'fs-extra';\nimport resolve from 'resolve';\nimport type { ASTv1 } from '@glimmer/syntax';\n\nexport interface ComponentResolution {\n type: 'component';\n modules: ResolvedDep[];\n yieldsComponents: Required<ComponentRules>['yieldsSafeComponents'];\n yieldsArguments: Required<ComponentRules>['yieldsArguments'];\n argumentsAreComponents: string[];\n}\n\nexport interface HelperResolution {\n type: 'helper';\n modules: ResolvedDep[];\n}\n\nexport interface ModifierResolution {\n type: 'modifier';\n modules: ResolvedDep[];\n}\n\nexport type ResolutionResult = ComponentResolution | HelperResolution | ModifierResolution;\n\nexport interface ResolutionFail {\n type: 'error';\n message: string;\n detail: string;\n loc: Loc;\n}\n\ninterface ResolverDependencyError extends Error {\n isTemplateResolverError?: boolean;\n loc?: Loc;\n moduleName?: string;\n}\n\nexport type Resolution = ResolutionResult | ResolutionFail;\n\nexport interface Loc {\n start: { line: number; column: number };\n end: { line: number; column: number };\n}\n\n// TODO: this depends on the ember version. And it's probably missing some\n// private-but-used values.\nconst builtInHelpers = [\n '-get-dynamic-var',\n '-in-element',\n 'in-element',\n '-with-dynamic-vars',\n 'action',\n 'array',\n 'component',\n 'concat',\n 'debugger',\n 'each',\n 'each-in',\n 'fn',\n 'get',\n 'has-block',\n 'has-block-params',\n 'hasBlock',\n 'hasBlockParams',\n 'hash',\n 'helper',\n 'if',\n 'input',\n 'let',\n 'link-to',\n 'loc',\n 'log',\n 'modifier',\n 'mount',\n 'mut',\n 'on',\n 'outlet',\n 'partial',\n 'query-params',\n 'readonly',\n 'textarea',\n 'unbound',\n 'unique-id',\n 'unless',\n 'with',\n 'yield',\n];\n\nconst builtInComponents = ['input', 'link-to', 'textarea'];\nconst builtInModifiers = ['action', 'on'];\n\n// this is a subset of the full Options. We care about serializability, and we\n// only needs parts that are easily serializable, which is why we don't keep the\n// whole thing.\ntype ResolverOptions = Pick<\n Required<Options>,\n 'staticHelpers' | 'staticModifiers' | 'staticComponents' | 'allowUnsafeDynamicComponents'\n>;\n\nfunction extractOptions(options: Required<Options> | ResolverOptions): ResolverOptions {\n return {\n staticHelpers: options.staticHelpers,\n staticModifiers: options.staticModifiers,\n staticComponents: options.staticComponents,\n allowUnsafeDynamicComponents: options.allowUnsafeDynamicComponents,\n };\n}\n\ninterface RehydrationParamsBase {\n root: string;\n modulePrefix: string;\n podModulePrefix?: string;\n options: ResolverOptions;\n activePackageRules: ActivePackageRules[];\n}\n\ninterface RehydrationParamsWithFile extends RehydrationParamsBase {\n adjustImportsOptionsPath: string;\n}\n\ninterface RehydrationParamsWithOptions extends RehydrationParamsBase {\n adjustImportsOptions: AdjustImportsOptions;\n}\n\ntype RehydrationParams = RehydrationParamsWithFile | RehydrationParamsWithOptions;\n\nexport function rehydrate(params: RehydrationParams) {\n return new CompatResolver(params);\n}\n\nexport interface AuditMessage {\n message: string;\n detail: string;\n loc: Loc;\n source: string;\n filename: string;\n}\n\nexport default class CompatResolver implements Resolver {\n private dependencies: Map<string, Resolution[]> = new Map();\n private templateCompiler: TemplateCompiler | undefined;\n private auditHandler: undefined | ((msg: AuditMessage) => void);\n private currentContents: string | undefined;\n\n _parallelBabel: {\n requireFile: string;\n buildUsing: string;\n params: RehydrationParams;\n };\n\n constructor(private params: RehydrationParams) {\n this.params.options = extractOptions(this.params.options);\n this._parallelBabel = {\n requireFile: __filename,\n buildUsing: 'rehydrate',\n params,\n };\n if ((globalThis as any).embroider_audit) {\n this.auditHandler = (globalThis as any).embroider_audit;\n }\n }\n\n enter(moduleName: string, contents: string) {\n let rules = this.findComponentRules(moduleName);\n let deps: Resolution[];\n if (rules?.dependsOnComponents) {\n deps = rules.dependsOnComponents.map(snippet => this.resolveComponentSnippet(snippet, rules!, moduleName));\n } else {\n deps = [];\n }\n this.dependencies.set(moduleName, deps);\n this.currentContents = contents;\n }\n\n private add(resolution: Resolution, from: string) {\n // this \"!\" is safe because we always `enter()` a module before hitting this\n this.dependencies.get(from)!.push(resolution);\n return resolution;\n }\n\n private findComponentRules(absPath: string): PreprocessedComponentRule | undefined {\n let rules = this.rules.components.get(absPath);\n if (rules) {\n return rules;\n }\n\n // co-located templates aren't visible to the resolver, because they never\n // get resolved from a template (they are always handled directly by the\n // corresponding JS module, which the resolver *does* see). This means their\n // paths won't ever be in `this.rules.components`. But we do want them to\n // \"inherit\" the rules that are attached to their corresonding JS module.\n if (absPath.endsWith('.hbs')) {\n let stem = absPath.slice(0, -4);\n for (let ext of this.adjustImportsOptions.resolvableExtensions) {\n if (ext !== '.hbs') {\n let rules = this.rules.components.get(stem + ext);\n if (rules) {\n return rules;\n }\n }\n }\n }\n return undefined;\n }\n\n private isIgnoredComponent(dasherizedName: string) {\n return this.rules.ignoredComponents.includes(dasherizedName);\n }\n\n @Memoize()\n get adjustImportsOptions(): AdjustImportsOptions {\n const { params } = this;\n return 'adjustImportsOptionsPath' in params\n ? // eslint-disable-next-line @typescript-eslint/no-require-imports\n require(params.adjustImportsOptionsPath)\n : params.adjustImportsOptions;\n }\n\n @Memoize()\n private get rules() {\n if (!this.templateCompiler) {\n throw new Error(\n `Bug: Resolver needs to get linked into a TemplateCompiler before it can understand packageRules`\n );\n }\n\n // keyed by their first resolved dependency's runtimeName.\n let components: Map<string, PreprocessedComponentRule> = new Map();\n\n // keyed by our own dasherized interpretation of the component's name.\n let ignoredComponents: string[] = [];\n\n // we're not responsible for filtering out rules for inactive packages here,\n // that is done before getting to us. So we should assume these are all in\n // force.\n for (let rule of this.params.activePackageRules) {\n if (rule.components) {\n for (let [snippet, componentRules] of Object.entries(rule.components)) {\n if (componentRules.safeToIgnore) {\n ignoredComponents.push(this.standardDasherize(snippet, rule));\n continue;\n }\n let resolvedDep = this.resolveComponentSnippet(snippet, rule).modules[0];\n let processedRules = preprocessComponentRule(componentRules);\n\n // we always register our rules on the component's own first resolved\n // module, which must be a module in the app's module namespace.\n components.set(resolvedDep.absPath, processedRules);\n\n // if there's a custom layout, we also need to register our rules on\n // those templates.\n if (componentRules.layout) {\n if (componentRules.layout.appPath) {\n components.set(join(this.params.root, componentRules.layout.appPath), processedRules);\n } else if (componentRules.layout.addonPath) {\n for (let root of rule.roots) {\n components.set(join(root, componentRules.layout.addonPath), processedRules);\n }\n } else {\n throw new Error(\n `layout property in component rule must contain either appPath or addonPath: ${JSON.stringify(\n rule,\n null,\n 2\n )}`\n );\n }\n }\n }\n }\n if (rule.appTemplates) {\n for (let [path, templateRules] of Object.entries(rule.appTemplates)) {\n let processedRules = preprocessComponentRule(templateRules);\n components.set(join(this.params.root, path), processedRules);\n }\n }\n if (rule.addonTemplates) {\n for (let [path, templateRules] of Object.entries(rule.addonTemplates)) {\n let processedRules = preprocessComponentRule(templateRules);\n for (let root of rule.roots) {\n components.set(join(root, path), processedRules);\n }\n }\n }\n }\n return { components, ignoredComponents };\n }\n\n resolveComponentSnippet(\n snippet: string,\n rule: PackageRules | ModuleRules,\n from = 'rule-snippet.hbs'\n ): ResolutionResult & { type: 'component' } {\n if (!this.templateCompiler) {\n throw new Error(`bug: tried to use resolveComponentSnippet without a templateCompiler`);\n }\n let name = this.standardDasherize(snippet, rule);\n let found = this.tryComponent(name, from, false);\n if (found && found.type === 'component') {\n return found;\n }\n throw new Error(`unable to locate component ${snippet} referred to in rule ${JSON.stringify(rule, null, 2)}`);\n }\n\n private standardDasherize(snippet: string, rule: PackageRules | ModuleRules): string {\n if (!this.templateCompiler) {\n throw new Error(`bug: tried to use resolveComponentSnippet without a templateCompiler`);\n }\n let ast: ASTv1.Template | ASTv1.Program;\n try {\n ast = this.templateCompiler.parse('snippet.hbs', snippet) as unknown as ASTv1.Template | ASTv1.Program;\n } catch (err) {\n throw new Error(`unable to parse component snippet \"${snippet}\" from rule ${JSON.stringify(rule, null, 2)}`);\n }\n if ((ast.type === 'Program' || ast.type === 'Template') && ast.body.length > 0) {\n let first = ast.body[0];\n const isMustachePath = first.type === 'MustacheStatement' && first.path.type === 'PathExpression';\n const isComponent =\n isMustachePath && ((first as ASTv1.MustacheStatement).path as ASTv1.PathExpression).original === 'component';\n const hasStringParam =\n isComponent &&\n Array.isArray((first as ASTv1.MustacheStatement).params) &&\n (first as ASTv1.MustacheStatement).params[0].type === 'StringLiteral';\n if (isMustachePath && isComponent && hasStringParam) {\n return ((first as ASTv1.MustacheStatement).params[0] as ASTv1.StringLiteral).value;\n }\n if (isMustachePath) {\n return ((first as ASTv1.MustacheStatement).path as ASTv1.PathExpression).original;\n }\n if (first.type === 'ElementNode') {\n return dasherize(first.tag);\n }\n }\n throw new Error(`cannot identify a component in rule snippet: \"${snippet}\"`);\n }\n\n astTransformer(templateCompiler: TemplateCompiler): unknown {\n this.templateCompiler = templateCompiler;\n if (this.staticComponentsEnabled || this.staticHelpersEnabled || this.staticModifiersEnabled) {\n return makeResolverTransform(this);\n }\n }\n\n dependenciesOf(moduleName: string): ResolvedDep[] {\n let flatDeps: Map<string, ResolvedDep> = new Map();\n let deps = this.dependencies.get(moduleName);\n if (deps) {\n for (let dep of deps) {\n if (dep.type === 'error') {\n if (!this.auditHandler && !this.params.options.allowUnsafeDynamicComponents) {\n let e: ResolverDependencyError = new Error(\n `${dep.message}: ${dep.detail} in ${humanReadableFile(this.params.root, moduleName)}`\n );\n e.isTemplateResolverError = true;\n e.loc = dep.loc;\n e.moduleName = moduleName;\n throw e;\n }\n if (this.auditHandler) {\n this.auditHandler({\n message: dep.message,\n filename: moduleName,\n detail: dep.detail,\n loc: dep.loc,\n source: this.currentContents!,\n });\n }\n } else {\n for (let entry of dep.modules) {\n let { runtimeName } = entry;\n flatDeps.set(runtimeName, entry);\n }\n }\n }\n }\n return [...flatDeps.values()];\n }\n\n resolveImport(path: string, from: string): { runtimeName: string; absPath: string } | undefined {\n let absPath;\n try {\n absPath = resolve.sync(path, {\n basedir: dirname(from),\n extensions: this.adjustImportsOptions.resolvableExtensions,\n });\n } catch (err) {\n return;\n }\n if (absPath) {\n let runtimeName = this.absPathToRuntimeName(absPath);\n if (runtimeName) {\n return { runtimeName, absPath };\n }\n }\n }\n\n @Memoize()\n private get resolvableExtensionsPattern() {\n return extensionsPattern(this.adjustImportsOptions.resolvableExtensions);\n }\n\n absPathToRuntimePath(absPath: string, owningPackage?: { root: string; name: string }) {\n let pkg = owningPackage || PackageCache.shared('embroider-stage3', this.params.root).ownerOfFile(absPath);\n if (pkg) {\n let packageRuntimeName = pkg.name;\n for (let [runtimeName, realName] of Object.entries(this.adjustImportsOptions.renamePackages)) {\n if (realName === packageRuntimeName) {\n packageRuntimeName = runtimeName;\n break;\n }\n }\n return join(packageRuntimeName, relative(pkg.root, absPath)).split(sep).join('/');\n } else if (absPath.startsWith(this.params.root)) {\n return join(this.params.modulePrefix, relative(this.params.root, absPath)).split(sep).join('/');\n } else {\n throw new Error(`bug: can't figure out the runtime name for ${absPath}`);\n }\n }\n\n absPathToRuntimeName(absPath: string, owningPackage?: { root: string; name: string }) {\n return this.absPathToRuntimePath(absPath, owningPackage)\n .replace(this.resolvableExtensionsPattern, '')\n .replace(/\\/index$/, '');\n }\n\n private get staticComponentsEnabled(): boolean {\n return this.params.options.staticComponents || Boolean(this.auditHandler);\n }\n\n private get staticHelpersEnabled(): boolean {\n return this.params.options.staticHelpers || Boolean(this.auditHandler);\n }\n\n private get staticModifiersEnabled(): boolean {\n return this.params.options.staticModifiers || Boolean(this.auditHandler);\n }\n\n private tryHelper(path: string, from: string): Resolution | null {\n let parts = path.split('@');\n if (parts.length > 1 && parts[0].length > 0) {\n let cache = PackageCache.shared('embroider-stage3', this.params.root);\n let packageName = parts[0];\n let renamed = this.adjustImportsOptions.renamePackages[packageName];\n if (renamed) {\n packageName = renamed;\n }\n let owner = cache.ownerOfFile(from)!;\n let targetPackage = owner.name === packageName ? owner : cache.resolve(packageName, owner);\n return this._tryHelper(parts[1], from, targetPackage);\n } else {\n return this._tryHelper(path, from, this.appPackage);\n }\n }\n\n private _tryHelper(path: string, from: string, targetPackage: Package | AppPackagePlaceholder): Resolution | null {\n for (let extension of this.adjustImportsOptions.resolvableExtensions) {\n let absPath = join(targetPackage.root, 'helpers', path) + extension;\n if (pathExistsSync(absPath)) {\n return {\n type: 'helper',\n modules: [\n {\n runtimeName: this.absPathToRuntimeName(absPath, targetPackage),\n path: explicitRelative(dirname(from), absPath),\n absPath,\n },\n ],\n };\n }\n }\n return null;\n }\n\n private tryModifier(path: string, from: string): Resolution | null {\n let parts = path.split('@');\n if (parts.length > 1 && parts[0].length > 0) {\n let cache = PackageCache.shared('embroider-stage3', this.params.root);\n let packageName = parts[0];\n let renamed = this.adjustImportsOptions.renamePackages[packageName];\n if (renamed) {\n packageName = renamed;\n }\n let owner = cache.ownerOfFile(from)!;\n let targetPackage = owner.name === packageName ? owner : cache.resolve(packageName, owner);\n return this._tryModifier(parts[1], from, targetPackage);\n } else {\n return this._tryModifier(path, from, this.appPackage);\n }\n }\n\n private _tryModifier(path: string, from: string, targetPackage: Package | AppPackagePlaceholder): Resolution | null {\n for (let extension of this.adjustImportsOptions.resolvableExtensions) {\n let absPath = join(targetPackage.root, 'modifiers', path) + extension;\n if (pathExistsSync(absPath)) {\n return {\n type: 'modifier',\n modules: [\n {\n runtimeName: this.absPathToRuntimeName(absPath, targetPackage),\n path: explicitRelative(dirname(from), absPath),\n absPath,\n },\n ],\n };\n }\n }\n return null;\n }\n\n @Memoize()\n private get appPackage(): AppPackagePlaceholder {\n return { root: this.params.root, name: this.params.modulePrefix };\n }\n\n private tryComponent(path: string, from: string, withRuleLookup = true): Resolution | null {\n let parts = path.split('@');\n if (parts.length > 1 && parts[0].length > 0) {\n let cache = PackageCache.shared('embroider-stage3', this.params.root);\n let packageName = parts[0];\n let renamed = this.adjustImportsOptions.renamePackages[packageName];\n if (renamed) {\n packageName = renamed;\n }\n let owner = cache.ownerOfFile(from)!;\n let targetPackage = owner.name === packageName ? owner : cache.resolve(packageName, owner);\n\n return this._tryComponent(parts[1], from, withRuleLookup, targetPackage);\n } else {\n return this._tryComponent(path, from, withRuleLookup, this.appPackage);\n }\n }\n\n private _tryComponent(\n path: string,\n from: string,\n withRuleLookup: boolean,\n targetPackage: Package | AppPackagePlaceholder\n ): Resolution | null {\n // The order here is important! We always put our .hbs paths first here, so\n // that if we have an hbs file of our own, that will be the first resolved\n // dependency. The first resolved dependency is special because we use that\n // as a key into the rules, and we want to be able to find our rules when\n // checking from our own template (among other times).\n\n let extensions = ['.hbs', ...this.adjustImportsOptions.resolvableExtensions.filter((e: string) => e !== '.hbs')];\n\n let componentModules = [] as string[];\n\n // first, the various places our template might be\n for (let extension of extensions) {\n let absPath = join(targetPackage.root, 'templates', 'components', path) + extension;\n if (pathExistsSync(absPath)) {\n componentModules.push(absPath);\n break;\n }\n\n absPath = join(targetPackage.root, 'components', path, 'template') + extension;\n if (pathExistsSync(absPath)) {\n componentModules.push(absPath);\n break;\n }\n\n if (\n typeof this.params.podModulePrefix !== 'undefined' &&\n this.params.podModulePrefix !== '' &&\n targetPackage === this.appPackage\n ) {\n let podPrefix = this.params.podModulePrefix.replace(this.params.modulePrefix, '');\n\n absPath = join(targetPackage.root, podPrefix, 'components', path, 'template') + extension;\n if (pathExistsSync(absPath)) {\n componentModules.push(absPath);\n break;\n }\n }\n }\n\n // then the various places our javascript might be\n for (let extension of extensions) {\n if (extension === '.hbs') {\n continue;\n }\n\n let absPath = join(targetPackage.root, 'components', path, 'index') + extension;\n if (pathExistsSync(absPath)) {\n componentModules.push(absPath);\n break;\n }\n\n absPath = join(targetPackage.root, 'components', path) + extension;\n if (pathExistsSync(absPath)) {\n componentModules.push(absPath);\n break;\n }\n\n absPath = join(targetPackage.root, 'components', path, 'component') + extension;\n if (pathExistsSync(absPath)) {\n componentModules.push(absPath);\n break;\n }\n\n if (\n typeof this.params.podModulePrefix !== 'undefined' &&\n this.params.podModulePrefix !== '' &&\n targetPackage === this.appPackage\n ) {\n let podPrefix = this.params.podModulePrefix.replace(this.params.modulePrefix, '');\n\n absPath = join(targetPackage.root, podPrefix, 'components', path, 'component') + extension;\n if (pathExistsSync(absPath)) {\n componentModules.push(absPath);\n break;\n }\n }\n }\n\n if (componentModules.length > 0) {\n let componentRules;\n if (withRuleLookup) {\n componentRules = this.findComponentRules(componentModules[0]);\n }\n return {\n type: 'component',\n modules: componentModules.map(absPath => ({\n path: explicitRelative(dirname(from), absPath),\n absPath,\n runtimeName: this.absPathToRuntimeName(absPath, targetPackage),\n })),\n yieldsComponents: componentRules ? componentRules.yieldsSafeComponents : [],\n yieldsArguments: componentRules ? componentRules.yieldsArguments : [],\n argumentsAreComponents: componentRules ? componentRules.argumentsAreComponents : [],\n };\n }\n\n return null;\n }\n\n resolveSubExpression(path: string, from: string, loc: Loc): Resolution | null {\n if (!this.staticHelpersEnabled) {\n return null;\n }\n let found = this.tryHelper(path, from);\n if (found) {\n return this.add(found, from);\n }\n if (builtInHelpers.includes(path)) {\n return null;\n }\n return this.add(\n {\n type: 'error',\n message: `Missing helper`,\n detail: path,\n loc,\n },\n from\n );\n }\n\n resolveMustache(path: string, hasArgs: boolean, from: string, loc: Loc): Resolution | null {\n if (this.staticHelpersEnabled) {\n let found = this.tryHelper(path, from);\n if (found) {\n return this.add(found, from);\n }\n }\n if (this.staticComponentsEnabled) {\n let found = this.tryComponent(path, from);\n if (found) {\n return this.add(found, from);\n }\n }\n if (\n hasArgs &&\n this.staticComponentsEnabled &&\n this.staticHelpersEnabled &&\n !builtInHelpers.includes(path) &&\n !this.isIgnoredComponent(path)\n ) {\n return this.add(\n {\n type: 'error',\n message: `Missing component or helper`,\n detail: path,\n loc,\n },\n from\n );\n } else {\n return null;\n }\n }\n\n resolveElementModifierStatement(path: string, from: string, loc: Loc): Resolution | null {\n if (!this.staticModifiersEnabled) {\n return null;\n }\n let found = this.tryModifier(path, from);\n if (found) {\n return this.add(found, from);\n }\n if (builtInModifiers.includes(path)) {\n return null;\n }\n return this.add(\n {\n type: 'error',\n message: `Missing modifier`,\n detail: path,\n loc,\n },\n from\n );\n }\n\n resolveElement(tagName: string, from: string, loc: Loc): Resolution | null {\n if (!this.staticComponentsEnabled) {\n return null;\n }\n\n if (tagName[0] === tagName[0].toLowerCase()) {\n // starts with lower case, so this can't be a component we need to\n // globally resolve\n return null;\n }\n\n let dName = dasherize(tagName);\n\n if (builtInComponents.includes(dName)) {\n return null;\n }\n\n let found = this.tryComponent(dName, from);\n if (found) {\n return this.add(found, from);\n }\n\n if (this.isIgnoredComponent(dName)) {\n return null;\n }\n\n return this.add(\n {\n type: 'error',\n message: `Missing component`,\n detail: tagName,\n loc,\n },\n from\n );\n }\n\n resolveComponentHelper(\n component: ComponentLocator,\n from: string,\n loc: Loc,\n impliedBecause?: { componentName: string; argumentName: string }\n ): Resolution | null {\n if (!this.staticComponentsEnabled) {\n return null;\n }\n\n let message;\n if (impliedBecause) {\n message = `argument \"${impliedBecause.argumentName}\" to component \"${impliedBecause.componentName}\" is treated as a component, but the value you're passing is dynamic`;\n } else {\n message = `Unsafe dynamic component`;\n }\n\n if (component.type === 'other') {\n return this.add(\n {\n type: 'error',\n message,\n detail: `cannot statically analyze this expression`,\n loc,\n },\n from\n );\n }\n if (component.type === 'path') {\n let ownComponentRules = this.findComponentRules(from);\n if (ownComponentRules && ownComponentRules.safeInteriorPaths.includes(component.path)) {\n return null;\n }\n return this.add(\n {\n type: 'error',\n message,\n detail: component.path,\n loc,\n },\n from\n );\n }\n\n if (builtInComponents.includes(component.path)) {\n return null;\n }\n\n let found = this.tryComponent(component.path, from);\n if (found) {\n return this.add(found, from);\n }\n return this.add(\n {\n type: 'error',\n message: `Missing component`,\n detail: component.path,\n loc,\n },\n from\n );\n }\n\n resolveDynamicHelper(helper: ComponentLocator, from: string, loc: Loc): Resolution | null {\n if (!this.staticHelpersEnabled) {\n return null;\n }\n\n if (helper.type === 'literal') {\n let helperName = helper.path;\n if (builtInHelpers.includes(helperName)) {\n return null;\n }\n\n let found = this.tryHelper(helperName, from);\n if (found) {\n return this.add(found, from);\n }\n return this.add(\n {\n type: 'error',\n message: `Missing helper`,\n detail: helperName,\n loc,\n },\n from\n );\n } else {\n return this.add(\n {\n type: 'error',\n message: 'Unsafe dynamic helper',\n detail: `cannot statically analyze this expression`,\n loc,\n },\n from\n );\n }\n }\n\n resolveDynamicModifier(modifier: ComponentLocator, from: string, loc: Loc): Resolution | null {\n if (!this.staticModifiersEnabled) {\n return null;\n }\n\n if (modifier.type === 'literal') {\n let modifierName = modifier.path;\n if (builtInModifiers.includes(modifierName)) {\n return null;\n }\n\n let found = this.tryModifier(modifierName, from);\n if (found) {\n return this.add(found, from);\n }\n return this.add(\n {\n type: 'error',\n message: `Missing modifier`,\n detail: modifierName,\n loc,\n },\n from\n );\n } else {\n return this.add(\n {\n type: 'error',\n message: 'Unsafe dynamic modifier',\n detail: `cannot statically analyze this expression`,\n loc,\n },\n from\n );\n }\n }\n}\n\nfunction humanReadableFile(root: string, file: string) {\n if (!root.endsWith('/')) {\n root += '/';\n }\n if (file.startsWith(root)) {\n return file.slice(root.length);\n }\n return file;\n}\n\n// we don't have a real Package for the app itself because the resolver has work\n// to do before we have even written out the app's own package.json and\n// therefore made it into a fully functional Package.\ninterface AppPackagePlaceholder {\n root: string;\n name: string;\n}\n\nexport type ComponentLocator =\n | {\n type: 'literal';\n path: string;\n }\n | {\n type: 'path';\n path: string;\n }\n | {\n type: 'other';\n };\n"]}
package/src/v1-app.js CHANGED
@@ -1,11 +1,7 @@
1
1
  "use strict";
2
2
  var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
3
  if (k2 === undefined) k2 = k;
4
- var desc = Object.getOwnPropertyDescriptor(m, k);
5
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
- desc = { enumerable: true, get: function() { return m[k]; } };
7
- }
8
- Object.defineProperty(o, k2, desc);
4
+ Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
9
5
  }) : (function(o, m, k, k2) {
10
6
  if (k2 === undefined) k2 = k;
11
7
  o[k2] = m[k];
@@ -194,6 +190,7 @@ class V1App {
194
190
  const babelAddon = this.app.project.findAddonByName('ember-cli-babel');
195
191
  const babelConfig = babelAddon.buildBabelOptions({
196
192
  'ember-cli-babel': {
193
+ ...this.app.options['ember-cli-babel'],
197
194
  includeExternalHelpers: true,
198
195
  compileModules: false,
199
196
  disableDebugTooling: false,
@@ -277,7 +274,7 @@ class V1App {
277
274
  // `app.import('node_modules/something/...')`, so we go find its answer.
278
275
  for (let { name, path } of this.app._nodeModules.values()) {
279
276
  if (match[1] === name) {
280
- return filename.replace(match[0], path + '/');
277
+ return filename.replace(match[0], path + path_1.sep);
281
278
  }
282
279
  }
283
280
  throw new Error(`bug: expected ember-cli to already have a resolved path for asset ${filename}`);
package/src/v1-app.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"v1-app.js","sourceRoot":"","sources":["v1-app.ts"],"names":[],"mappings":"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","sourcesContent":["import { Memoize } from 'typescript-memoize';\nimport { sync as pkgUpSync } from 'pkg-up';\nimport { join, dirname, isAbsolute } from 'path';\nimport buildFunnel from 'broccoli-funnel';\nimport mergeTrees from 'broccoli-merge-trees';\nimport { WatchedDir } from 'broccoli-source';\nimport resolve from 'resolve';\nimport { Node } from 'broccoli-node-api';\nimport { V1Config, WriteV1Config } from './v1-config';\nimport { WriteV1AppBoot, ReadV1AppBoot } from './v1-appboot';\nimport {\n TemplateCompilerPlugins,\n AddonMeta,\n Package,\n EmberAppInstance,\n OutputFileToInputFileMap,\n PackageInfo,\n AddonInstance,\n} from '@embroider/core';\nimport { writeJSONSync, ensureDirSync, copySync, readdirSync, pathExistsSync, existsSync } from 'fs-extra';\nimport AddToTree from './add-to-tree';\nimport DummyPackage, { OwningAddon } from './dummy-package';\nimport { 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 prepHtmlbarsAstPluginsForUnwrap from './prepare-htmlbars-ast-plugins';\nimport { readFileSync } from 'fs';\nimport type { Options as HTMLBarsOptions } from 'ember-cli-htmlbars';\nimport semver from 'semver';\nimport { MovablePackageCache } from './moved-package-cache';\n\n// This controls and types the interface between our new world and the classic\n// v1 app instance.\n\ntype EmberCliHTMLBarsAddon = AddonInstance & {\n htmlbarsOptions(): HTMLBarsOptions;\n};\n\ninterface Group {\n outputFiles: OutputFileToInputFileMap;\n implicitKey: '_implicitStyles' | '_implicitScripts';\n vendorOutputPath: 'string';\n}\n\nexport default class V1App {\n // used to signal that this is a dummy app owned by a particular addon\n owningAddon: Package | undefined;\n\n static create(app: EmberAppInstance): V1App {\n if (app.project.pkg.keywords?.includes('ember-addon')) {\n // we are a dummy app, which is unfortunately weird and special\n return new V1DummyApp(app);\n } else {\n return new V1App(app);\n }\n }\n\n private _publicAssets: { [filePath: string]: string } = Object.create(null);\n private _implicitScripts: string[] = [];\n private _implicitStyles: string[] = [];\n\n packageCache: MovablePackageCache;\n\n protected constructor(protected app: EmberAppInstance) {\n this.packageCache = new MovablePackageCache(MacrosConfig.for(app, this.root), this.root);\n }\n\n // always the name from package.json. Not the one that apps may have weirdly\n // customized.\n get name(): string {\n return this.app.project.pkg.name;\n }\n\n get env(): string {\n return this.app.env;\n }\n\n @Memoize()\n get root(): string {\n return dirname(pkgUpSync({ cwd: this.app.project.root })!);\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, Node> {\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.app.tests || false;\n }\n\n configPath(): string {\n return this.app.project.configPath();\n }\n\n private get configTree() {\n return new this.configLoader(dirname(this.configPath()), {\n env: this.app.env,\n tests: this.app.tests || false,\n project: this.app.project,\n });\n }\n\n @Memoize()\n get config(): V1Config {\n return new V1Config(this.configTree, this.app.env);\n }\n\n get autoRun(): boolean {\n return this.app.options.autoRun;\n }\n\n @Memoize()\n get appBoot(): ReadV1AppBoot {\n let env = this.app.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.app.options.storeConfigInMeta;\n }\n\n @Memoize()\n private get configReplacePatterns() {\n return this.appUtils.configReplacePatterns({\n addons: this.app.project.addons,\n autoRun: this.autoRun,\n storeConfigInMeta: this.storeConfigInMeta,\n });\n }\n\n get htmlTree() {\n if (this.app.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.app.options.outputPaths.app.html;\n let index = buildFunnel(this.app.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.app.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.app.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.app.project as any).findAddonByName('ember-cli-babel');\n const babelConfig = babelAddon.buildBabelOptions({\n 'ember-cli-babel': {\n includeExternalHelpers: true,\n compileModules: false,\n disableDebugTooling: false,\n disablePresetEnv: false,\n disableEmberModulesAPIPolyfill: false,\n disableDecoratorTransforms: 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.app.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.app.project.addons.find((a: any) => a.name === 'ember-cli-babel');\n if (babelAddon) {\n let major = Number(babelAddon.pkg.version.split('.')[0]);\n if (major !== 7) {\n throw new Error(`@embroider/compat only supports v1 addons that use babel 7`);\n }\n return major;\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.app._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.app._nodeModules.values()) {\n if (match[1] === name) {\n return filename.replace(match[0], path + '/');\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: Node[]): Node {\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.app._scriptOutputFiles,\n implicitKey: '_implicitScripts',\n vendorOutputPath: this.app.options.outputPaths.vendor.js,\n },\n // styles\n {\n outputFiles: this.app._styleOutputFiles,\n implicitKey: '_implicitStyles',\n vendorOutputPath: this.app.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.app.options['sourcemaps'],\n })\n );\n }\n }\n }\n\n this.addOtherAssets();\n return mergeTrees([tree, ...concatentations], { overwrite: true });\n }\n\n addOtherAssets() {\n for (let asset of this.app.otherAssetPaths) {\n this._publicAssets[`${asset.src}/${asset.file}`] = `${asset.dest}/${asset.file}`;\n }\n }\n\n private addNodeAssets(inputTree: Node): Node {\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.app.legacyTestFilesToAppend.map(remapAsset),\n 'implicit-test-styles': this.app.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: Node[]): Node {\n return this.applyCustomTransforms(this.addNodeAssets(this.combinedVendor(addonTrees)));\n }\n\n private combinedStyles(addonTrees: Node[]): Node {\n let trees: Node[] = addonTrees.map(tree =>\n buildFunnel(tree, {\n allowEmpty: true,\n srcDir: '_app_styles_',\n })\n );\n let appStyles = this.app.trees.styles as Node | 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: Node[]): Node {\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.app.registry,\n minifyCSS: this.app.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: Node) {\n for (let customTransformEntry of this.app._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: Node): Node {\n // we're saving all our babel compilation for the final stage packager\n this.app.registry.remove('js', 'ember-cli-babel');\n\n // auto-import is supported natively so we don't need it here\n this.app.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.app.registry,\n });\n\n tree = buildFunnel(tree, { srcDir: this.name });\n\n return tree;\n }\n\n get htmlbarsPlugins(): TemplateCompilerPlugins {\n let addon = this.app.project.addons.find(\n (a: AddonInstance) => a.name === 'ember-cli-htmlbars'\n ) as unknown as EmberCliHTMLBarsAddon;\n let options = addon.htmlbarsOptions();\n if (options?.plugins?.ast) {\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 options.plugins.ast = options.plugins.ast.filter((p: any) => !isEmbroiderMacrosPlugin(p));\n prepHtmlbarsAstPluginsForUnwrap(this.app.registry);\n }\n return options.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(): Node {\n return this.preprocessJS(\n buildFunnel(this.app.trees.app, {\n exclude: ['styles/**', '*.html'],\n })\n );\n }\n\n private get testsTree(): Node | undefined {\n if (this.shouldBuildTests && this.app.trees.tests) {\n return this.preprocessJS(\n buildFunnel(this.app.trees.tests, {\n destDir: 'tests',\n })\n );\n }\n }\n\n private get lintTree(): Node | undefined {\n if (this.shouldBuildTests) {\n return this.app.getLintTests();\n }\n }\n\n get vendorTree(): Node | undefined {\n return this.ensureTree(this.app.trees.vendor);\n }\n\n private ensureTree(maybeTree: string | Node | undefined): Node | 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.app.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 get publicTree(): Node | undefined {\n return this.ensureTree(this.app.trees.public);\n }\n\n processAppJS(): { appJS: Node } {\n let appTree = this.appTree;\n let testsTree = this.testsTree;\n let lintTree = this.lintTree;\n let config = new WriteV1Config(this.config, this.storeConfigInMeta);\n let patterns = this.configReplacePatterns;\n let configReplaced = new this.configReplace(config, this.configTree, {\n configPath: join('environments', `${this.app.env}.json`),\n files: ['config/environment.js'],\n patterns,\n });\n\n let trees: Node[] = [];\n trees.push(appTree);\n trees.push(new SynthesizeTemplateOnlyComponents(appTree, ['components']));\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)) {\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(script => this.withoutRootURL(script.src) === this.app.options.outputPaths.app.js);\n return throwIfMissing(\n appJS,\n this.app.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(style => this.withoutRootURL(style.href) === this.app.options.outputPaths.app.css.app);\n return throwIfMissing(\n style,\n this.app.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(script => this.withoutRootURL(script.src) === this.app.options.outputPaths.vendor.js);\n return throwIfMissing(\n vendor,\n this.app.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(style => this.withoutRootURL(style.href) === this.app.options.outputPaths.vendor.css);\n return throwIfMissing(\n vendorStyle,\n this.app.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(style => this.withoutRootURL(style.href) === this.app.options.outputPaths.testSupport.css);\n }\n\n findTestSupportScript(scripts: HTMLScriptElement[]): HTMLScriptElement | undefined {\n return scripts.find(\n script => this.withoutRootURL(script.src) === this.app.options.outputPaths.testSupport.js.testSupport\n );\n }\n\n findTestScript(scripts: HTMLScriptElement[]): HTMLScriptElement | undefined {\n return scripts.find(script => this.withoutRootURL(script.src) === this.app.options.outputPaths.tests.js);\n }\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\nclass V1DummyApp extends V1App {\n constructor(app: EmberAppInstance) {\n super(app);\n this.owningAddon = new OwningAddon(this.app.project.root, this.packageCache);\n this.packageCache.seed(this.owningAddon);\n this.packageCache.seed(new DummyPackage(this.root, this.owningAddon, this.packageCache));\n }\n\n get name(): string {\n // here we accept the ember-cli behavior\n return this.app.name;\n }\n\n get root(): string {\n // this is the Known Hack for finding the true root of the dummy app.\n return join(this.app.project.configPath(), '..', '..');\n }\n}\n\ninterface Preprocessors {\n preprocessJs(tree: Node, a: string, b: string, options: object): Node;\n preprocessCss(tree: Node, a: string, b: string, options: object): Node;\n}\n"]}
1
+ {"version":3,"file":"v1-app.js","sourceRoot":"","sources":["v1-app.ts"],"names":[],"mappings":"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","sourcesContent":["import { 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 { Node } from 'broccoli-node-api';\nimport { V1Config, WriteV1Config } from './v1-config';\nimport { WriteV1AppBoot, ReadV1AppBoot } from './v1-appboot';\nimport {\n TemplateCompilerPlugins,\n AddonMeta,\n Package,\n EmberAppInstance,\n OutputFileToInputFileMap,\n PackageInfo,\n AddonInstance,\n} from '@embroider/core';\nimport { writeJSONSync, ensureDirSync, copySync, readdirSync, pathExistsSync, existsSync } from 'fs-extra';\nimport AddToTree from './add-to-tree';\nimport DummyPackage, { OwningAddon } from './dummy-package';\nimport { 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 prepHtmlbarsAstPluginsForUnwrap from './prepare-htmlbars-ast-plugins';\nimport { readFileSync } from 'fs';\nimport type { Options as HTMLBarsOptions } from 'ember-cli-htmlbars';\nimport semver from 'semver';\nimport { MovablePackageCache } from './moved-package-cache';\n\n// This controls and types the interface between our new world and the classic\n// v1 app instance.\n\ntype EmberCliHTMLBarsAddon = AddonInstance & {\n htmlbarsOptions(): HTMLBarsOptions;\n};\n\ninterface Group {\n outputFiles: OutputFileToInputFileMap;\n implicitKey: '_implicitStyles' | '_implicitScripts';\n vendorOutputPath: 'string';\n}\n\nexport default class V1App {\n // used to signal that this is a dummy app owned by a particular addon\n owningAddon: Package | undefined;\n\n static create(app: EmberAppInstance): V1App {\n if (app.project.pkg.keywords?.includes('ember-addon')) {\n // we are a dummy app, which is unfortunately weird and special\n return new V1DummyApp(app);\n } else {\n return new V1App(app);\n }\n }\n\n private _publicAssets: { [filePath: string]: string } = Object.create(null);\n private _implicitScripts: string[] = [];\n private _implicitStyles: string[] = [];\n\n packageCache: MovablePackageCache;\n\n protected constructor(protected app: EmberAppInstance) {\n this.packageCache = new MovablePackageCache(MacrosConfig.for(app, this.root), this.root);\n }\n\n // always the name from package.json. Not the one that apps may have weirdly\n // customized.\n get name(): string {\n return this.app.project.pkg.name;\n }\n\n get env(): string {\n return this.app.env;\n }\n\n @Memoize()\n get root(): string {\n return dirname(pkgUpSync({ cwd: this.app.project.root })!);\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, Node> {\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.app.tests || false;\n }\n\n configPath(): string {\n return this.app.project.configPath();\n }\n\n private get configTree() {\n return new this.configLoader(dirname(this.configPath()), {\n env: this.app.env,\n tests: this.app.tests || false,\n project: this.app.project,\n });\n }\n\n @Memoize()\n get config(): V1Config {\n return new V1Config(this.configTree, this.app.env);\n }\n\n get autoRun(): boolean {\n return this.app.options.autoRun;\n }\n\n @Memoize()\n get appBoot(): ReadV1AppBoot {\n let env = this.app.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.app.options.storeConfigInMeta;\n }\n\n @Memoize()\n private get configReplacePatterns() {\n return this.appUtils.configReplacePatterns({\n addons: this.app.project.addons,\n autoRun: this.autoRun,\n storeConfigInMeta: this.storeConfigInMeta,\n });\n }\n\n get htmlTree() {\n if (this.app.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.app.options.outputPaths.app.html;\n let index = buildFunnel(this.app.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.app.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.app.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.app.project as any).findAddonByName('ember-cli-babel');\n const babelConfig = babelAddon.buildBabelOptions({\n 'ember-cli-babel': {\n ...this.app.options['ember-cli-babel'],\n includeExternalHelpers: true,\n compileModules: false,\n disableDebugTooling: false,\n disablePresetEnv: false,\n disableEmberModulesAPIPolyfill: false,\n disableDecoratorTransforms: 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.app.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.app.project.addons.find((a: any) => a.name === 'ember-cli-babel');\n if (babelAddon) {\n let major = Number(babelAddon.pkg.version.split('.')[0]);\n if (major !== 7) {\n throw new Error(`@embroider/compat only supports v1 addons that use babel 7`);\n }\n return major;\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.app._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.app._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: Node[]): Node {\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.app._scriptOutputFiles,\n implicitKey: '_implicitScripts',\n vendorOutputPath: this.app.options.outputPaths.vendor.js,\n },\n // styles\n {\n outputFiles: this.app._styleOutputFiles,\n implicitKey: '_implicitStyles',\n vendorOutputPath: this.app.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.app.options['sourcemaps'],\n })\n );\n }\n }\n }\n\n this.addOtherAssets();\n return mergeTrees([tree, ...concatentations], { overwrite: true });\n }\n\n addOtherAssets() {\n for (let asset of this.app.otherAssetPaths) {\n this._publicAssets[`${asset.src}/${asset.file}`] = `${asset.dest}/${asset.file}`;\n }\n }\n\n private addNodeAssets(inputTree: Node): Node {\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.app.legacyTestFilesToAppend.map(remapAsset),\n 'implicit-test-styles': this.app.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: Node[]): Node {\n return this.applyCustomTransforms(this.addNodeAssets(this.combinedVendor(addonTrees)));\n }\n\n private combinedStyles(addonTrees: Node[]): Node {\n let trees: Node[] = addonTrees.map(tree =>\n buildFunnel(tree, {\n allowEmpty: true,\n srcDir: '_app_styles_',\n })\n );\n let appStyles = this.app.trees.styles as Node | 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: Node[]): Node {\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.app.registry,\n minifyCSS: this.app.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: Node) {\n for (let customTransformEntry of this.app._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: Node): Node {\n // we're saving all our babel compilation for the final stage packager\n this.app.registry.remove('js', 'ember-cli-babel');\n\n // auto-import is supported natively so we don't need it here\n this.app.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.app.registry,\n });\n\n tree = buildFunnel(tree, { srcDir: this.name });\n\n return tree;\n }\n\n get htmlbarsPlugins(): TemplateCompilerPlugins {\n let addon = this.app.project.addons.find(\n (a: AddonInstance) => a.name === 'ember-cli-htmlbars'\n ) as unknown as EmberCliHTMLBarsAddon;\n let options = addon.htmlbarsOptions();\n if (options?.plugins?.ast) {\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 options.plugins.ast = options.plugins.ast.filter((p: any) => !isEmbroiderMacrosPlugin(p));\n prepHtmlbarsAstPluginsForUnwrap(this.app.registry);\n }\n return options.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(): Node {\n return this.preprocessJS(\n buildFunnel(this.app.trees.app, {\n exclude: ['styles/**', '*.html'],\n })\n );\n }\n\n private get testsTree(): Node | undefined {\n if (this.shouldBuildTests && this.app.trees.tests) {\n return this.preprocessJS(\n buildFunnel(this.app.trees.tests, {\n destDir: 'tests',\n })\n );\n }\n }\n\n private get lintTree(): Node | undefined {\n if (this.shouldBuildTests) {\n return this.app.getLintTests();\n }\n }\n\n get vendorTree(): Node | undefined {\n return this.ensureTree(this.app.trees.vendor);\n }\n\n private ensureTree(maybeTree: string | Node | undefined): Node | 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.app.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 get publicTree(): Node | undefined {\n return this.ensureTree(this.app.trees.public);\n }\n\n processAppJS(): { appJS: Node } {\n let appTree = this.appTree;\n let testsTree = this.testsTree;\n let lintTree = this.lintTree;\n let config = new WriteV1Config(this.config, this.storeConfigInMeta);\n let patterns = this.configReplacePatterns;\n let configReplaced = new this.configReplace(config, this.configTree, {\n configPath: join('environments', `${this.app.env}.json`),\n files: ['config/environment.js'],\n patterns,\n });\n\n let trees: Node[] = [];\n trees.push(appTree);\n trees.push(new SynthesizeTemplateOnlyComponents(appTree, ['components']));\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)) {\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(script => this.withoutRootURL(script.src) === this.app.options.outputPaths.app.js);\n return throwIfMissing(\n appJS,\n this.app.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(style => this.withoutRootURL(style.href) === this.app.options.outputPaths.app.css.app);\n return throwIfMissing(\n style,\n this.app.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(script => this.withoutRootURL(script.src) === this.app.options.outputPaths.vendor.js);\n return throwIfMissing(\n vendor,\n this.app.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(style => this.withoutRootURL(style.href) === this.app.options.outputPaths.vendor.css);\n return throwIfMissing(\n vendorStyle,\n this.app.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(style => this.withoutRootURL(style.href) === this.app.options.outputPaths.testSupport.css);\n }\n\n findTestSupportScript(scripts: HTMLScriptElement[]): HTMLScriptElement | undefined {\n return scripts.find(\n script => this.withoutRootURL(script.src) === this.app.options.outputPaths.testSupport.js.testSupport\n );\n }\n\n findTestScript(scripts: HTMLScriptElement[]): HTMLScriptElement | undefined {\n return scripts.find(script => this.withoutRootURL(script.src) === this.app.options.outputPaths.tests.js);\n }\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\nclass V1DummyApp extends V1App {\n constructor(app: EmberAppInstance) {\n super(app);\n this.owningAddon = new OwningAddon(this.app.project.root, this.packageCache);\n this.packageCache.seed(this.owningAddon);\n this.packageCache.seed(new DummyPackage(this.root, this.owningAddon, this.packageCache));\n }\n\n get name(): string {\n // here we accept the ember-cli behavior\n return this.app.name;\n }\n\n get root(): string {\n // this is the Known Hack for finding the true root of the dummy app.\n return join(this.app.project.configPath(), '..', '..');\n }\n}\n\ninterface Preprocessors {\n preprocessJs(tree: Node, a: string, b: string, options: object): Node;\n preprocessCss(tree: Node, a: string, b: string, options: object): Node;\n}\n"]}