@embroider/compat 0.50.0 → 0.50.1

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": "0.50.0",
3
+ "version": "0.50.1",
4
4
  "private": false,
5
5
  "description": "Backward compatibility layer for the Embroider build system.",
6
6
  "repository": {
@@ -29,8 +29,8 @@
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": "0.50.0",
33
- "@embroider/shared-internals": "0.50.0",
32
+ "@embroider/macros": "0.50.1",
33
+ "@embroider/shared-internals": "0.50.1",
34
34
  "@types/babel__code-frame": "^7.0.2",
35
35
  "@types/yargs": "^17.0.3",
36
36
  "assert-never": "^1.1.0",
@@ -85,7 +85,7 @@
85
85
  "typescript": "*"
86
86
  },
87
87
  "peerDependencies": {
88
- "@embroider/core": "0.50.0"
88
+ "@embroider/core": "0.50.1"
89
89
  },
90
90
  "engines": {
91
91
  "node": "12.* || 14.* || >= 16"
package/src/audit-cli.js CHANGED
File without changes
@@ -28,7 +28,7 @@ class CompatAddons {
28
28
  // benefit from on-disk caching in stage3 packagers.
29
29
  (0, fs_extra_1.ensureDirSync)(options.workspaceDir);
30
30
  this.destDir = (0, fs_extra_1.realpathSync)(options.workspaceDir);
31
- this.packageCache = v1Cache.packageCache.moveAddons(v1Cache.app.root, this.destDir);
31
+ this.packageCache = v1Cache.app.packageCache.moveAddons(this.destDir);
32
32
  this.inputPath = v1Cache.app.root;
33
33
  this.treeSyncMap = new WeakMap();
34
34
  this.v1Cache = v1Cache;
@@ -48,15 +48,15 @@ class CompatAddons {
48
48
  async ready() {
49
49
  await this.deferReady.promise;
50
50
  (0, fs_extra_1.writeJSONSync)((0, path_1.join)(this.destDir, '.embroider-reuse.json'), {
51
- appDestDir: (0, path_1.relative)(this.destDir, this.packageCache.appDestDir),
51
+ appDestDir: (0, path_1.relative)(this.destDir, this.packageCache.appRoot),
52
52
  });
53
53
  return {
54
- outputPath: this.packageCache.appDestDir,
54
+ outputPath: this.packageCache.appRoot,
55
55
  packageCache: this.packageCache,
56
56
  };
57
57
  }
58
58
  get appDestDir() {
59
- return this.packageCache.appDestDir;
59
+ return this.packageCache.appRoot;
60
60
  }
61
61
  get app() {
62
62
  return this.packageCache.app;
@@ -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\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.packageCache.moveAddons(v1Cache.app.root, 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.appDestDir),\n });\n return {\n outputPath: this.packageCache.appDestDir,\n packageCache: this.packageCache,\n };\n }\n\n private get appDestDir(): string {\n return this.packageCache.appDestDir;\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":"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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\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"]}
package/src/compat-app.js CHANGED
@@ -49,9 +49,9 @@ function setup(legacyEmberAppInstance, options) {
49
49
  appBootTree,
50
50
  };
51
51
  let instantiate = async (root, appSrcDir, packageCache) => {
52
- let appPackage = packageCache.getApp(appSrcDir);
52
+ let appPackage = packageCache.get(appSrcDir);
53
53
  let adapter = new CompatAppAdapter(root, appPackage, options, oldPackage, configTree, packageCache.get((0, path_1.join)(root, 'node_modules', '@embroider', 'synthesized-vendor')), packageCache.get((0, path_1.join)(root, 'node_modules', '@embroider', 'synthesized-styles')));
54
- return new core_1.AppBuilder(root, appPackage, adapter, options, node_1.MacrosConfig.for(legacyEmberAppInstance));
54
+ return new core_1.AppBuilder(root, appPackage, adapter, options, node_1.MacrosConfig.for(legacyEmberAppInstance, appSrcDir));
55
55
  };
56
56
  return { inTrees, instantiate };
57
57
  }
@@ -303,6 +303,7 @@ class CompatAppAdapter {
303
303
  // persistent caching.
304
304
  externalsDir: (0, path_1.join)(shared_internals_1.tmpdir, 'embroider', 'externals'),
305
305
  emberNeedsModulesPolyfill,
306
+ appRoot: this.root,
306
307
  };
307
308
  }
308
309
  // unlike `templateResolver`, this one brings its own simple TemplateCompiler
@@ -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.getApp(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>(root, appPackage, adapter, options, MacrosConfig.for(legacyEmberAppInstance));\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 };\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 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"]}
@@ -2,15 +2,14 @@ import { PackageCache, Package } from '@embroider/core';
2
2
  import { MacrosConfig } from '@embroider/macros/src/node';
3
3
  export declare class MovablePackageCache extends PackageCache {
4
4
  private macrosConfig;
5
- constructor(macrosConfig: MacrosConfig);
6
- moveAddons(appSrcDir: string, destDir: string): MovedPackageCache;
5
+ constructor(macrosConfig: MacrosConfig, appRoot: string);
6
+ moveAddons(destDir: string): MovedPackageCache;
7
7
  }
8
8
  export declare class MovedPackageCache extends PackageCache {
9
9
  private destDir;
10
10
  private origApp;
11
11
  private macrosConfig;
12
12
  readonly app: Package;
13
- readonly appDestDir: string;
14
13
  private commonSegmentCount;
15
14
  readonly moved: Map<Package, Package>;
16
15
  readonly unmovedAddons: Set<Package>;
@@ -17,13 +17,13 @@ function assertNoTildeExpansion(source, target) {
17
17
  }
18
18
  }
19
19
  class MovablePackageCache extends core_1.PackageCache {
20
- constructor(macrosConfig) {
21
- super();
20
+ constructor(macrosConfig, appRoot) {
21
+ super(appRoot);
22
22
  this.macrosConfig = macrosConfig;
23
23
  }
24
- moveAddons(appSrcDir, destDir) {
24
+ moveAddons(destDir) {
25
25
  // start with the plain old app package
26
- let origApp = this.getApp(appSrcDir);
26
+ let origApp = this.get(this.appRoot);
27
27
  // discover the set of all packages that will need to be moved into the
28
28
  // workspace
29
29
  let movedSet = new MovedSet(origApp);
@@ -33,16 +33,18 @@ class MovablePackageCache extends core_1.PackageCache {
33
33
  exports.MovablePackageCache = MovablePackageCache;
34
34
  class MovedPackageCache extends core_1.PackageCache {
35
35
  constructor(rootCache, resolutionCache, destDir, movedSet, origApp, macrosConfig) {
36
- super();
36
+ // this is the initial appRoot, which we can't know until just below here
37
+ super('not-the-real-root');
37
38
  this.destDir = destDir;
38
39
  this.origApp = origApp;
39
40
  this.macrosConfig = macrosConfig;
40
41
  this.moved = new Map();
41
42
  // that gives us our common segment count, which enables localPath mapping
42
43
  this.commonSegmentCount = movedSet.commonSegmentCount;
43
- // so we can now determine where the app will go inside the workspace
44
- this.appDestDir = this.localPath(origApp.root);
45
- this.macrosConfig.packageMoved(origApp.root, this.appDestDir);
44
+ // so we can now determine where the app will go inside the workspace. THIS
45
+ // is where we fix 'not-the-real-root' from above.
46
+ this.appRoot = this.localPath(origApp.root);
47
+ this.macrosConfig.packageMoved(origApp.root, this.appRoot);
46
48
  for (let originalPkg of movedSet.packages) {
47
49
  // Update our rootCache so we don't need to rediscover moved packages
48
50
  let movedPkg;
@@ -1 +1 @@
1
- {"version":3,"file":"moved-package-cache.js","sourceRoot":"","sources":["moved-package-cache.ts"],"names":[],"mappings":"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","sourcesContent":["import { join, sep, isAbsolute } from 'path';\nimport { ensureSymlinkSync, readdirSync, realpathSync, lstatSync } from 'fs-extra';\nimport { Memoize } from 'typescript-memoize';\nimport { PackageCache, Package, getOrCreate } from '@embroider/core';\nimport { MacrosConfig } from '@embroider/macros/src/node';\n\nfunction assertNoTildeExpansion(source: string, target: string) {\n if (target.includes('~')) {\n throw new Error(\n `The symbolic link: ${source}'s target: ${target} contained a bash expansion '~' which is not supported.`\n );\n }\n}\nexport class MovablePackageCache extends PackageCache {\n constructor(private macrosConfig: MacrosConfig) {\n super();\n }\n\n moveAddons(appSrcDir: string, destDir: string): MovedPackageCache {\n // start with the plain old app package\n let origApp = this.getApp(appSrcDir);\n\n // discover the set of all packages that will need to be moved into the\n // workspace\n let movedSet = new MovedSet(origApp);\n\n return new MovedPackageCache(this.rootCache, this.resolutionCache, destDir, movedSet, origApp, this.macrosConfig);\n }\n}\n\nexport class MovedPackageCache extends PackageCache {\n readonly app!: Package;\n readonly appDestDir: string;\n private commonSegmentCount: number;\n readonly moved: Map<Package, Package> = new Map();\n readonly unmovedAddons: Set<Package>;\n\n constructor(\n rootCache: PackageCache['rootCache'],\n resolutionCache: PackageCache['resolutionCache'],\n private destDir: string,\n movedSet: MovedSet,\n private origApp: Package,\n private macrosConfig: MacrosConfig\n ) {\n super();\n\n // that gives us our common segment count, which enables localPath mapping\n this.commonSegmentCount = movedSet.commonSegmentCount;\n\n // so we can now determine where the app will go inside the workspace\n this.appDestDir = this.localPath(origApp.root);\n this.macrosConfig.packageMoved(origApp.root, this.appDestDir);\n\n for (let originalPkg of movedSet.packages) {\n // Update our rootCache so we don't need to rediscover moved packages\n let movedPkg;\n if (originalPkg === origApp) {\n // this wraps the original app package with one that will use moved\n // dependencies. The app itself hasn't moved yet, which is why a proxy\n // is needed at this level.\n movedPkg = packageProxy(origApp, (pkg: Package) => this.moved.get(pkg) || pkg);\n this.app = movedPkg;\n rootCache.set(movedPkg.root, movedPkg);\n } else {\n movedPkg = this.movedPackage(originalPkg);\n this.moved.set(originalPkg, movedPkg);\n this.macrosConfig.packageMoved(originalPkg.root, movedPkg.root);\n }\n\n // Update our resolutionCache so we still know as much about the moved\n // packages as we did before we moved them, without redoing package\n // resolution.\n let resolutions = new Map();\n for (let dep of originalPkg.dependencies) {\n if (movedSet.packages.has(dep)) {\n resolutions.set(dep.name, this.movedPackage(dep));\n } else {\n resolutions.set(dep.name, dep);\n }\n }\n resolutionCache.set(movedPkg, resolutions);\n }\n this.rootCache = rootCache;\n this.resolutionCache = resolutionCache;\n this.unmovedAddons = movedSet.unmovedAddons;\n }\n\n private movedPackage(originalPkg: Package): Package {\n let newRoot = this.localPath(originalPkg.root);\n return getOrCreate(this.rootCache, newRoot, () => new (originalPkg.constructor as any)(newRoot, this, false));\n }\n\n private localPath(filename: string) {\n return join(this.destDir, ...pathSegments(filename).slice(this.commonSegmentCount));\n }\n\n // hunt for symlinks that may be needed to do node_modules resolution from the\n // given path.\n async updatePreexistingResolvableSymlinks(): Promise<void> {\n let roots = this.originalRoots();\n [...this.candidateDirs()].map(path => {\n let links = symlinksInNodeModules(path);\n for (let { source, target } of links) {\n let pkg = roots.get(target);\n if (pkg) {\n // we found a symlink that points at a package that was copied.\n // Replicate it in the new structure pointing at the new package.\n ensureSymlinkSync(pkg.root, this.localPath(source));\n }\n }\n });\n }\n\n // places that might have symlinks we need to mimic\n private candidateDirs(): Set<string> {\n let candidates = new Set() as Set<string>;\n let originalPackages = [this.origApp, ...this.moved.keys()];\n for (let pkg of originalPackages) {\n let segments = pathSegments(pkg.root);\n\n let candidate = join(pkg.root, 'node_modules');\n candidates.add(candidate);\n\n for (let i = segments.length - 1; i >= this.commonSegmentCount; i--) {\n if (segments[i - 1] !== 'node_modules') {\n let candidate = '/' + join(...segments.slice(0, i), 'node_modules');\n if (candidates.has(candidate)) {\n break;\n }\n candidates.add(candidate);\n }\n }\n }\n return candidates;\n }\n\n private originalRoots(): Map<string, Package> {\n let originalRoots = new Map();\n for (let [originalPackage, movedPackage] of this.moved.entries()) {\n originalRoots.set(originalPackage.root, movedPackage);\n }\n return originalRoots;\n }\n}\n\nfunction maybeReaddirSync(path: string) {\n try {\n return readdirSync(path);\n } catch (err) {\n if (err.code !== 'ENOTDIR' && err.code !== 'ENOENT') {\n throw err;\n }\n return [];\n }\n}\n\nfunction isSymlink(path: string): boolean {\n try {\n let stat = lstatSync(path);\n return stat.isSymbolicLink();\n } catch (err) {\n if (err.code !== 'ENOTDIR' && err.code !== 'ENOENT') {\n throw err;\n }\n\n return false;\n }\n}\n\nfunction symlinksInNodeModules(path: string): { source: string; target: string }[] {\n let results: { source: string; target: string }[] = [];\n\n // handles the full `node_modules` being symlinked (this is uncommon, but sometimes\n // be useful for test harnesses to avoid multiple `npm install` invocations)\n let parentIsSymlink = isSymlink(path);\n\n let names = maybeReaddirSync(path);\n\n names.map(name => {\n let source = join(path, name);\n let stats = lstatSync(source);\n if (parentIsSymlink || stats.isSymbolicLink()) {\n let target = realpathSync(source);\n assertNoTildeExpansion(source, target);\n\n results.push({ source, target });\n } else if (stats.isDirectory() && name.startsWith('@')) {\n // handle symlinked scope names (e.g. symlinking `@myorghere` to a shared location)\n let isSourceSymlink = isSymlink(source);\n let innerNames = maybeReaddirSync(source);\n\n innerNames.map(innerName => {\n let innerSource = join(source, innerName);\n let innerStats = lstatSync(innerSource);\n if (parentIsSymlink || isSourceSymlink || innerStats.isSymbolicLink()) {\n let target = realpathSync(innerSource);\n assertNoTildeExpansion(innerSource, target);\n\n results.push({ source: innerSource, target });\n }\n });\n }\n });\n\n return results;\n}\n\nfunction pathSegments(filename: string) {\n let segments = filename.split(sep);\n if (isAbsolute(filename)) {\n segments.shift();\n }\n return segments;\n}\n\nclass MovedSet {\n private mustMove: Map<Package, boolean> = new Map();\n unmovedAddons: Set<Package> = new Set();\n\n constructor(private app: Package) {\n this.check(app);\n }\n\n private check(pkg: Package): boolean {\n if (this.mustMove.has(pkg)) {\n return this.mustMove.get(pkg)!;\n }\n\n // non-ember packages don't need to move\n if (pkg !== this.app && !pkg.isEmberPackage()) {\n this.mustMove.set(pkg, false);\n return false;\n }\n\n let mustMove =\n // The app always moves (because we need a place to mash all the\n // addon-provided \"app-js\" trees),\n pkg === this.app ||\n // For the same reason, engines need to move (we need a place to mash all\n // their child addon's provided app-js trees into)\n pkg.isEngine() ||\n // any other ember package that isn't native v2 must move because we've\n // got to rewrite them\n !pkg.isV2Ember();\n\n // this is a partial answer. After we check our children, our own `mustMove`\n // may change from false to true. But it's OK that our children see false in\n // that case, because they don't need to move on our behalf.\n //\n // We need to already be in the `this.mustMove` cache at this moment in\n // order to avoid infinite recursion if any of our children end up depending\n // back on us.\n this.mustMove.set(pkg, mustMove);\n\n for (let dep of pkg.dependencies) {\n // or if any of your deps need to move\n mustMove = this.check(dep) || mustMove;\n }\n this.mustMove.set(pkg, mustMove);\n\n if (!mustMove) {\n this.unmovedAddons.add(pkg);\n }\n\n return mustMove;\n }\n\n @Memoize()\n get packages(): Set<Package> {\n let result = new Set() as Set<Package>;\n for (let [pkg, mustMove] of this.mustMove) {\n if (mustMove) {\n result.add(pkg);\n }\n }\n return result;\n }\n\n // the npm structure we're shadowing could have a dependency nearly anywhere\n // on disk. We want to maintain their relations to each other. So we must find\n // the point in the filesystem that contains all of them, which could even be\n // \"/\" (for example, if you npm-linked a dependency that lives in /tmp).\n //\n // The commonSegmentCount is how many leading path segments are shared by all\n // our packages.\n @Memoize()\n get commonSegmentCount(): number {\n return [...this.packages].reduce((longestPrefix, pkg) => {\n let candidate = pathSegments(pkg.root);\n let shorter, longer;\n if (longestPrefix.length > candidate.length) {\n shorter = candidate;\n longer = longestPrefix;\n } else {\n shorter = longestPrefix;\n longer = candidate;\n }\n let i = 0;\n for (; i < shorter.length; i++) {\n if (shorter[i] !== longer[i]) {\n break;\n }\n }\n return shorter.slice(0, i);\n }, pathSegments(this.app.root)).length;\n }\n}\n\nfunction packageProxy(pkg: Package, getMovedPackage: (pkg: Package) => Package) {\n let p: Package = new Proxy(pkg, {\n get(pkg: Package, prop: string | number | symbol) {\n if (prop === 'dependencies') {\n return pkg.dependencies.map(getMovedPackage);\n }\n if (prop === 'nonResolvableDeps') {\n if (!pkg.nonResolvableDeps) {\n return pkg.nonResolvableDeps;\n }\n return new Map([...pkg.nonResolvableDeps.values()].map(dep => [dep.name, getMovedPackage(dep)]));\n }\n if (prop === 'findDescendants') {\n return pkg.findDescendants.bind(p);\n }\n return (pkg as any)[prop];\n },\n });\n return p;\n}\n"]}
1
+ {"version":3,"file":"moved-package-cache.js","sourceRoot":"","sources":["moved-package-cache.ts"],"names":[],"mappings":"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","sourcesContent":["import { join, sep, isAbsolute } from 'path';\nimport { ensureSymlinkSync, readdirSync, realpathSync, lstatSync } from 'fs-extra';\nimport { Memoize } from 'typescript-memoize';\nimport { PackageCache, Package, getOrCreate } from '@embroider/core';\nimport { MacrosConfig } from '@embroider/macros/src/node';\n\nfunction assertNoTildeExpansion(source: string, target: string) {\n if (target.includes('~')) {\n throw new Error(\n `The symbolic link: ${source}'s target: ${target} contained a bash expansion '~' which is not supported.`\n );\n }\n}\nexport class MovablePackageCache extends PackageCache {\n constructor(private macrosConfig: MacrosConfig, appRoot: string) {\n super(appRoot);\n }\n\n moveAddons(destDir: string): MovedPackageCache {\n // start with the plain old app package\n let origApp = this.get(this.appRoot);\n\n // discover the set of all packages that will need to be moved into the\n // workspace\n let movedSet = new MovedSet(origApp);\n\n return new MovedPackageCache(this.rootCache, this.resolutionCache, destDir, movedSet, origApp, this.macrosConfig);\n }\n}\n\nexport class MovedPackageCache extends PackageCache {\n readonly app!: Package;\n private commonSegmentCount: number;\n readonly moved: Map<Package, Package> = new Map();\n readonly unmovedAddons: Set<Package>;\n\n constructor(\n rootCache: PackageCache['rootCache'],\n resolutionCache: PackageCache['resolutionCache'],\n private destDir: string,\n movedSet: MovedSet,\n private origApp: Package,\n private macrosConfig: MacrosConfig\n ) {\n // this is the initial appRoot, which we can't know until just below here\n super('not-the-real-root');\n\n // that gives us our common segment count, which enables localPath mapping\n this.commonSegmentCount = movedSet.commonSegmentCount;\n\n // so we can now determine where the app will go inside the workspace. THIS\n // is where we fix 'not-the-real-root' from above.\n this.appRoot = this.localPath(origApp.root);\n\n this.macrosConfig.packageMoved(origApp.root, this.appRoot);\n\n for (let originalPkg of movedSet.packages) {\n // Update our rootCache so we don't need to rediscover moved packages\n let movedPkg;\n if (originalPkg === origApp) {\n // this wraps the original app package with one that will use moved\n // dependencies. The app itself hasn't moved yet, which is why a proxy\n // is needed at this level.\n movedPkg = packageProxy(origApp, (pkg: Package) => this.moved.get(pkg) || pkg);\n this.app = movedPkg;\n rootCache.set(movedPkg.root, movedPkg);\n } else {\n movedPkg = this.movedPackage(originalPkg);\n this.moved.set(originalPkg, movedPkg);\n this.macrosConfig.packageMoved(originalPkg.root, movedPkg.root);\n }\n\n // Update our resolutionCache so we still know as much about the moved\n // packages as we did before we moved them, without redoing package\n // resolution.\n let resolutions = new Map();\n for (let dep of originalPkg.dependencies) {\n if (movedSet.packages.has(dep)) {\n resolutions.set(dep.name, this.movedPackage(dep));\n } else {\n resolutions.set(dep.name, dep);\n }\n }\n resolutionCache.set(movedPkg, resolutions);\n }\n this.rootCache = rootCache;\n this.resolutionCache = resolutionCache;\n this.unmovedAddons = movedSet.unmovedAddons;\n }\n\n private movedPackage(originalPkg: Package): Package {\n let newRoot = this.localPath(originalPkg.root);\n return getOrCreate(this.rootCache, newRoot, () => new (originalPkg.constructor as any)(newRoot, this, false));\n }\n\n private localPath(filename: string) {\n return join(this.destDir, ...pathSegments(filename).slice(this.commonSegmentCount));\n }\n\n // hunt for symlinks that may be needed to do node_modules resolution from the\n // given path.\n async updatePreexistingResolvableSymlinks(): Promise<void> {\n let roots = this.originalRoots();\n [...this.candidateDirs()].map(path => {\n let links = symlinksInNodeModules(path);\n for (let { source, target } of links) {\n let pkg = roots.get(target);\n if (pkg) {\n // we found a symlink that points at a package that was copied.\n // Replicate it in the new structure pointing at the new package.\n ensureSymlinkSync(pkg.root, this.localPath(source));\n }\n }\n });\n }\n\n // places that might have symlinks we need to mimic\n private candidateDirs(): Set<string> {\n let candidates = new Set() as Set<string>;\n let originalPackages = [this.origApp, ...this.moved.keys()];\n for (let pkg of originalPackages) {\n let segments = pathSegments(pkg.root);\n\n let candidate = join(pkg.root, 'node_modules');\n candidates.add(candidate);\n\n for (let i = segments.length - 1; i >= this.commonSegmentCount; i--) {\n if (segments[i - 1] !== 'node_modules') {\n let candidate = '/' + join(...segments.slice(0, i), 'node_modules');\n if (candidates.has(candidate)) {\n break;\n }\n candidates.add(candidate);\n }\n }\n }\n return candidates;\n }\n\n private originalRoots(): Map<string, Package> {\n let originalRoots = new Map();\n for (let [originalPackage, movedPackage] of this.moved.entries()) {\n originalRoots.set(originalPackage.root, movedPackage);\n }\n return originalRoots;\n }\n}\n\nfunction maybeReaddirSync(path: string) {\n try {\n return readdirSync(path);\n } catch (err) {\n if (err.code !== 'ENOTDIR' && err.code !== 'ENOENT') {\n throw err;\n }\n return [];\n }\n}\n\nfunction isSymlink(path: string): boolean {\n try {\n let stat = lstatSync(path);\n return stat.isSymbolicLink();\n } catch (err) {\n if (err.code !== 'ENOTDIR' && err.code !== 'ENOENT') {\n throw err;\n }\n\n return false;\n }\n}\n\nfunction symlinksInNodeModules(path: string): { source: string; target: string }[] {\n let results: { source: string; target: string }[] = [];\n\n // handles the full `node_modules` being symlinked (this is uncommon, but sometimes\n // be useful for test harnesses to avoid multiple `npm install` invocations)\n let parentIsSymlink = isSymlink(path);\n\n let names = maybeReaddirSync(path);\n\n names.map(name => {\n let source = join(path, name);\n let stats = lstatSync(source);\n if (parentIsSymlink || stats.isSymbolicLink()) {\n let target = realpathSync(source);\n assertNoTildeExpansion(source, target);\n\n results.push({ source, target });\n } else if (stats.isDirectory() && name.startsWith('@')) {\n // handle symlinked scope names (e.g. symlinking `@myorghere` to a shared location)\n let isSourceSymlink = isSymlink(source);\n let innerNames = maybeReaddirSync(source);\n\n innerNames.map(innerName => {\n let innerSource = join(source, innerName);\n let innerStats = lstatSync(innerSource);\n if (parentIsSymlink || isSourceSymlink || innerStats.isSymbolicLink()) {\n let target = realpathSync(innerSource);\n assertNoTildeExpansion(innerSource, target);\n\n results.push({ source: innerSource, target });\n }\n });\n }\n });\n\n return results;\n}\n\nfunction pathSegments(filename: string) {\n let segments = filename.split(sep);\n if (isAbsolute(filename)) {\n segments.shift();\n }\n return segments;\n}\n\nclass MovedSet {\n private mustMove: Map<Package, boolean> = new Map();\n unmovedAddons: Set<Package> = new Set();\n\n constructor(private app: Package) {\n this.check(app);\n }\n\n private check(pkg: Package): boolean {\n if (this.mustMove.has(pkg)) {\n return this.mustMove.get(pkg)!;\n }\n\n // non-ember packages don't need to move\n if (pkg !== this.app && !pkg.isEmberPackage()) {\n this.mustMove.set(pkg, false);\n return false;\n }\n\n let mustMove =\n // The app always moves (because we need a place to mash all the\n // addon-provided \"app-js\" trees),\n pkg === this.app ||\n // For the same reason, engines need to move (we need a place to mash all\n // their child addon's provided app-js trees into)\n pkg.isEngine() ||\n // any other ember package that isn't native v2 must move because we've\n // got to rewrite them\n !pkg.isV2Ember();\n\n // this is a partial answer. After we check our children, our own `mustMove`\n // may change from false to true. But it's OK that our children see false in\n // that case, because they don't need to move on our behalf.\n //\n // We need to already be in the `this.mustMove` cache at this moment in\n // order to avoid infinite recursion if any of our children end up depending\n // back on us.\n this.mustMove.set(pkg, mustMove);\n\n for (let dep of pkg.dependencies) {\n // or if any of your deps need to move\n mustMove = this.check(dep) || mustMove;\n }\n this.mustMove.set(pkg, mustMove);\n\n if (!mustMove) {\n this.unmovedAddons.add(pkg);\n }\n\n return mustMove;\n }\n\n @Memoize()\n get packages(): Set<Package> {\n let result = new Set() as Set<Package>;\n for (let [pkg, mustMove] of this.mustMove) {\n if (mustMove) {\n result.add(pkg);\n }\n }\n return result;\n }\n\n // the npm structure we're shadowing could have a dependency nearly anywhere\n // on disk. We want to maintain their relations to each other. So we must find\n // the point in the filesystem that contains all of them, which could even be\n // \"/\" (for example, if you npm-linked a dependency that lives in /tmp).\n //\n // The commonSegmentCount is how many leading path segments are shared by all\n // our packages.\n @Memoize()\n get commonSegmentCount(): number {\n return [...this.packages].reduce((longestPrefix, pkg) => {\n let candidate = pathSegments(pkg.root);\n let shorter, longer;\n if (longestPrefix.length > candidate.length) {\n shorter = candidate;\n longer = longestPrefix;\n } else {\n shorter = longestPrefix;\n longer = candidate;\n }\n let i = 0;\n for (; i < shorter.length; i++) {\n if (shorter[i] !== longer[i]) {\n break;\n }\n }\n return shorter.slice(0, i);\n }, pathSegments(this.app.root)).length;\n }\n}\n\nfunction packageProxy(pkg: Package, getMovedPackage: (pkg: Package) => Package) {\n let p: Package = new Proxy(pkg, {\n get(pkg: Package, prop: string | number | symbol) {\n if (prop === 'dependencies') {\n return pkg.dependencies.map(getMovedPackage);\n }\n if (prop === 'nonResolvableDeps') {\n if (!pkg.nonResolvableDeps) {\n return pkg.nonResolvableDeps;\n }\n return new Map([...pkg.nonResolvableDeps.values()].map(dep => [dep.name, getMovedPackage(dep)]));\n }\n if (prop === 'findDescendants') {\n return pkg.findDescendants.bind(p);\n }\n return (pkg as any)[prop];\n },\n });\n return p;\n}\n"]}
@@ -29,13 +29,12 @@ class PrebuiltAddons {
29
29
  exports.default = PrebuiltAddons;
30
30
  class RehomedPackageCache extends core_1.PackageCache {
31
31
  constructor(appSrcDir, appDestDir) {
32
- super();
32
+ super(appDestDir);
33
33
  this.appSrcDir = appSrcDir;
34
- this.appDestDir = appDestDir;
35
34
  }
36
35
  basedir(pkg) {
37
36
  if (pkg.root === this.appSrcDir) {
38
- return this.appDestDir;
37
+ return this.appRoot;
39
38
  }
40
39
  return super.basedir(pkg);
41
40
  }
@@ -1 +1 @@
1
- {"version":3,"file":"prebuilt-addons.js","sourceRoot":"","sources":["prebuilt-addons.ts"],"names":[],"mappings":";;;;;AAAA,0CAA+D;AAC/D,uCAAsD;AACtD,qDAA+C;AAE/C,+BAA4B;AAC5B,uCAAyD;AACzD,4EAAkD;AAElD,MAAqB,cAAc;IAMjC,YAAY,sBAA8B,EAAE,YAAiC,EAAE,YAAoB;QACjG,IAAI,OAAO,GAAG,IAAA,6BAAmB,EAAC,YAAY,CAAC,CAAC;QAChD,IAAI,OAAO,GAAG,2BAAe,CAAC,MAAM,CAAC,sBAAsB,EAAE,OAAO,CAAC,CAAC;QACtE,IAAI,CAAC,SAAS,GAAG,IAAA,uBAAY,EAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QAChD,IAAI,EAAE,UAAU,EAAE,GAAG,IAAA,uBAAY,EAAC,IAAA,WAAI,EAAC,YAAY,EAAE,uBAAuB,CAAC,CAAC,CAAC;QAC/E,IAAI,CAAC,UAAU,GAAG,IAAA,uBAAY,EAAC,IAAA,WAAI,EAAC,YAAY,EAAE,UAAU,CAAC,CAAC,CAAC;QAC/D,IAAI,CAAC,YAAY,GAAG,IAAI,mBAAmB,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;QAC7E,IAAI,CAAC,IAAI,GAAG,IAAI,8BAAY,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IAC/C,CAAC;IAED,KAAK,CAAC,KAAK;QACT,OAAO;YACL,YAAY,EAAE,IAAI,CAAC,YAAY;YAC/B,UAAU,EAAE,IAAI,CAAC,UAAU;SAC5B,CAAC;IACJ,CAAC;CACF;AAtBD,iCAsBC;AAED,MAAM,mBAAoB,SAAQ,mBAAY;IAC5C,YAAoB,SAAiB,EAAU,UAAkB;QAC/D,KAAK,EAAE,CAAC;QADU,cAAS,GAAT,SAAS,CAAQ;QAAU,eAAU,GAAV,UAAU,CAAQ;IAEjE,CAAC;IACD,OAAO,CAAC,GAAY;QAClB,IAAI,GAAG,CAAC,IAAI,KAAK,IAAI,CAAC,SAAS,EAAE;YAC/B,OAAO,IAAI,CAAC,UAAU,CAAC;SACxB;QACD,OAAO,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;IAC5B,CAAC;CACF","sourcesContent":["import { Stage, Package, PackageCache } from '@embroider/core';\nimport { realpathSync, readJSONSync } from 'fs-extra';\nimport { UnwatchedDir } from 'broccoli-source';\nimport { Node } from 'broccoli-node-api';\nimport { join } from 'path';\nimport Options, { optionsWithDefaults } from './options';\nimport V1InstanceCache from './v1-instance-cache';\n\nexport default class PrebuiltAddons implements Stage {\n private packageCache: PackageCache;\n private appDestDir: string;\n readonly inputPath: string;\n readonly tree: Node;\n\n constructor(legacyEmberAppInstance: object, maybeOptions: Options | undefined, workspaceDir: string) {\n let options = optionsWithDefaults(maybeOptions);\n let v1Cache = V1InstanceCache.forApp(legacyEmberAppInstance, options);\n this.inputPath = realpathSync(v1Cache.app.root);\n let { appDestDir } = readJSONSync(join(workspaceDir, '.embroider-reuse.json'));\n this.appDestDir = realpathSync(join(workspaceDir, appDestDir));\n this.packageCache = new RehomedPackageCache(this.inputPath, this.appDestDir);\n this.tree = new UnwatchedDir(this.inputPath);\n }\n\n async ready(): Promise<{ packageCache: PackageCache; outputPath: string }> {\n return {\n packageCache: this.packageCache,\n outputPath: this.appDestDir,\n };\n }\n}\n\nclass RehomedPackageCache extends PackageCache {\n constructor(private appSrcDir: string, private appDestDir: string) {\n super();\n }\n basedir(pkg: Package): string {\n if (pkg.root === this.appSrcDir) {\n return this.appDestDir;\n }\n return super.basedir(pkg);\n }\n}\n"]}
1
+ {"version":3,"file":"prebuilt-addons.js","sourceRoot":"","sources":["prebuilt-addons.ts"],"names":[],"mappings":";;;;;AAAA,0CAA+D;AAC/D,uCAAsD;AACtD,qDAA+C;AAE/C,+BAA4B;AAC5B,uCAAyD;AACzD,4EAAkD;AAElD,MAAqB,cAAc;IAMjC,YAAY,sBAA8B,EAAE,YAAiC,EAAE,YAAoB;QACjG,IAAI,OAAO,GAAG,IAAA,6BAAmB,EAAC,YAAY,CAAC,CAAC;QAChD,IAAI,OAAO,GAAG,2BAAe,CAAC,MAAM,CAAC,sBAAsB,EAAE,OAAO,CAAC,CAAC;QACtE,IAAI,CAAC,SAAS,GAAG,IAAA,uBAAY,EAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QAChD,IAAI,EAAE,UAAU,EAAE,GAAG,IAAA,uBAAY,EAAC,IAAA,WAAI,EAAC,YAAY,EAAE,uBAAuB,CAAC,CAAC,CAAC;QAC/E,IAAI,CAAC,UAAU,GAAG,IAAA,uBAAY,EAAC,IAAA,WAAI,EAAC,YAAY,EAAE,UAAU,CAAC,CAAC,CAAC;QAC/D,IAAI,CAAC,YAAY,GAAG,IAAI,mBAAmB,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;QAC7E,IAAI,CAAC,IAAI,GAAG,IAAI,8BAAY,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IAC/C,CAAC;IAED,KAAK,CAAC,KAAK;QACT,OAAO;YACL,YAAY,EAAE,IAAI,CAAC,YAAY;YAC/B,UAAU,EAAE,IAAI,CAAC,UAAU;SAC5B,CAAC;IACJ,CAAC;CACF;AAtBD,iCAsBC;AAED,MAAM,mBAAoB,SAAQ,mBAAY;IAC5C,YAAoB,SAAiB,EAAE,UAAkB;QACvD,KAAK,CAAC,UAAU,CAAC,CAAC;QADA,cAAS,GAAT,SAAS,CAAQ;IAErC,CAAC;IACD,OAAO,CAAC,GAAY;QAClB,IAAI,GAAG,CAAC,IAAI,KAAK,IAAI,CAAC,SAAS,EAAE;YAC/B,OAAO,IAAI,CAAC,OAAO,CAAC;SACrB;QACD,OAAO,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;IAC5B,CAAC;CACF","sourcesContent":["import { Stage, Package, PackageCache } from '@embroider/core';\nimport { realpathSync, readJSONSync } from 'fs-extra';\nimport { UnwatchedDir } from 'broccoli-source';\nimport { Node } from 'broccoli-node-api';\nimport { join } from 'path';\nimport Options, { optionsWithDefaults } from './options';\nimport V1InstanceCache from './v1-instance-cache';\n\nexport default class PrebuiltAddons implements Stage {\n private packageCache: PackageCache;\n private appDestDir: string;\n readonly inputPath: string;\n readonly tree: Node;\n\n constructor(legacyEmberAppInstance: object, maybeOptions: Options | undefined, workspaceDir: string) {\n let options = optionsWithDefaults(maybeOptions);\n let v1Cache = V1InstanceCache.forApp(legacyEmberAppInstance, options);\n this.inputPath = realpathSync(v1Cache.app.root);\n let { appDestDir } = readJSONSync(join(workspaceDir, '.embroider-reuse.json'));\n this.appDestDir = realpathSync(join(workspaceDir, appDestDir));\n this.packageCache = new RehomedPackageCache(this.inputPath, this.appDestDir);\n this.tree = new UnwatchedDir(this.inputPath);\n }\n\n async ready(): Promise<{ packageCache: PackageCache; outputPath: string }> {\n return {\n packageCache: this.packageCache,\n outputPath: this.appDestDir,\n };\n }\n}\n\nclass RehomedPackageCache extends PackageCache {\n constructor(private appSrcDir: string, appDestDir: string) {\n super(appDestDir);\n }\n basedir(pkg: Package): string {\n if (pkg.root === this.appSrcDir) {\n return this.appRoot;\n }\n return super.basedir(pkg);\n }\n}\n"]}
package/src/resolver.js CHANGED
@@ -298,7 +298,7 @@ class CompatResolver {
298
298
  return (0, core_1.extensionsPattern)(this.adjustImportsOptions.resolvableExtensions);
299
299
  }
300
300
  absPathToRuntimePath(absPath, owningPackage) {
301
- let pkg = owningPackage || core_1.PackageCache.shared('embroider-stage3').ownerOfFile(absPath);
301
+ let pkg = owningPackage || core_1.PackageCache.shared('embroider-stage3', this.params.root).ownerOfFile(absPath);
302
302
  if (pkg) {
303
303
  let packageRuntimeName = pkg.name;
304
304
  for (let [runtimeName, realName] of Object.entries(this.adjustImportsOptions.renamePackages)) {
@@ -333,7 +333,7 @@ class CompatResolver {
333
333
  tryHelper(path, from) {
334
334
  let parts = path.split('@');
335
335
  if (parts.length > 1 && parts[0].length > 0) {
336
- let cache = core_1.PackageCache.shared('embroider-stage3');
336
+ let cache = core_1.PackageCache.shared('embroider-stage3', this.params.root);
337
337
  let packageName = parts[0];
338
338
  let renamed = this.adjustImportsOptions.renamePackages[packageName];
339
339
  if (renamed) {
@@ -366,7 +366,7 @@ class CompatResolver {
366
366
  tryModifier(path, from) {
367
367
  let parts = path.split('@');
368
368
  if (parts.length > 1 && parts[0].length > 0) {
369
- let cache = core_1.PackageCache.shared('embroider-stage3');
369
+ let cache = core_1.PackageCache.shared('embroider-stage3', this.params.root);
370
370
  let packageName = parts[0];
371
371
  let renamed = this.adjustImportsOptions.renamePackages[packageName];
372
372
  if (renamed) {
@@ -402,7 +402,7 @@ class CompatResolver {
402
402
  tryComponent(path, from, withRuleLookup = true) {
403
403
  let parts = path.split('@');
404
404
  if (parts.length > 1 && parts[0].length > 0) {
405
- let cache = core_1.PackageCache.shared('embroider-stage3');
405
+ let cache = core_1.PackageCache.shared('embroider-stage3', this.params.root);
406
406
  let packageName = parts[0];
407
407
  let renamed = this.adjustImportsOptions.renamePackages[packageName];
408
408
  if (renamed) {
@@ -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 'if',\n 'input',\n 'let',\n 'link-to',\n 'loc',\n 'log',\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'];\n\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 default class CompatResolver implements Resolver {\n private dependencies: Map<string, Resolution[]> = new Map();\n private templateCompiler: TemplateCompiler | undefined;\n private auditMode = false;\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 }\n\n enter(moduleName: 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 }\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 // called by our audit tool. Forces staticComponents, staticHelpers and staticModifiers\n // to activate so we can audit their behavior, while making their errors silent\n // until we can gather them up at the end of the build for the audit results.\n enableAuditMode() {\n this.auditMode = true;\n }\n\n errorsIn(moduleName: string): ResolutionFail[] {\n let deps = this.dependencies.get(moduleName);\n if (deps) {\n return deps.filter(d => d.type === 'error') as ResolutionFail[];\n } else {\n return [];\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.auditMode && !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 } 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').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 || this.auditMode;\n }\n\n private get staticHelpersEnabled(): boolean {\n return this.params.options.staticHelpers || this.auditMode;\n }\n\n private get staticModifiersEnabled(): boolean {\n return this.params.options.staticModifiers || this.auditMode;\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');\n let packageName = parts[0];\n let renamed = this.adjustImportsOptions.renamePackages[packageName];\n if (renamed) {\n packageName = renamed;\n }\n return this._tryHelper(parts[1], from, cache.resolve(packageName, cache.ownerOfFile(from)!));\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');\n let packageName = parts[0];\n let renamed = this.adjustImportsOptions.renamePackages[packageName];\n if (renamed) {\n packageName = renamed;\n }\n return this._tryModifier(parts[1], from, cache.resolve(packageName, cache.ownerOfFile(from)!));\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');\n let packageName = parts[0];\n let renamed = this.adjustImportsOptions.renamePackages[packageName];\n if (renamed) {\n packageName = renamed;\n }\n return this._tryComponent(parts[1], from, withRuleLookup, cache.resolve(packageName, cache.ownerOfFile(from)!));\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\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":"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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 'if',\n 'input',\n 'let',\n 'link-to',\n 'loc',\n 'log',\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'];\n\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 default class CompatResolver implements Resolver {\n private dependencies: Map<string, Resolution[]> = new Map();\n private templateCompiler: TemplateCompiler | undefined;\n private auditMode = false;\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 }\n\n enter(moduleName: 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 }\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 // called by our audit tool. Forces staticComponents, staticHelpers and staticModifiers\n // to activate so we can audit their behavior, while making their errors silent\n // until we can gather them up at the end of the build for the audit results.\n enableAuditMode() {\n this.auditMode = true;\n }\n\n errorsIn(moduleName: string): ResolutionFail[] {\n let deps = this.dependencies.get(moduleName);\n if (deps) {\n return deps.filter(d => d.type === 'error') as ResolutionFail[];\n } else {\n return [];\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.auditMode && !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 } 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 || this.auditMode;\n }\n\n private get staticHelpersEnabled(): boolean {\n return this.params.options.staticHelpers || this.auditMode;\n }\n\n private get staticModifiersEnabled(): boolean {\n return this.params.options.staticModifiers || this.auditMode;\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 return this._tryHelper(parts[1], from, cache.resolve(packageName, cache.ownerOfFile(from)!));\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 return this._tryModifier(parts[1], from, cache.resolve(packageName, cache.ownerOfFile(from)!));\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 return this._tryComponent(parts[1], from, withRuleLookup, cache.resolve(packageName, cache.ownerOfFile(from)!));\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\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.d.ts CHANGED
@@ -1,17 +1,18 @@
1
1
  import { Node } from 'broccoli-node-api';
2
2
  import { V1Config } from './v1-config';
3
3
  import { ReadV1AppBoot } from './v1-appboot';
4
- import { PackageCache, TemplateCompilerPlugins, Package, EmberAppInstance } from '@embroider/core';
4
+ import { TemplateCompilerPlugins, Package, EmberAppInstance } from '@embroider/core';
5
5
  import { TransformOptions } from '@babel/core';
6
+ import { MovablePackageCache } from './moved-package-cache';
6
7
  export default class V1App {
7
8
  protected app: EmberAppInstance;
8
- protected packageCache: PackageCache;
9
9
  owningAddon: Package | undefined;
10
- static create(app: EmberAppInstance, packageCache: PackageCache): V1App;
10
+ static create(app: EmberAppInstance): V1App;
11
11
  private _publicAssets;
12
12
  private _implicitScripts;
13
13
  private _implicitStyles;
14
- protected constructor(app: EmberAppInstance, packageCache: PackageCache);
14
+ packageCache: MovablePackageCache;
15
+ protected constructor(app: EmberAppInstance);
15
16
  get name(): string;
16
17
  get env(): string;
17
18
  get root(): string;
package/src/v1-app.js CHANGED
@@ -50,22 +50,23 @@ const detect_babel_plugins_1 = require("./detect-babel-plugins");
50
50
  const prepare_htmlbars_ast_plugins_1 = __importDefault(require("./prepare-htmlbars-ast-plugins"));
51
51
  const fs_1 = require("fs");
52
52
  const semver_1 = __importDefault(require("semver"));
53
+ const moved_package_cache_1 = require("./moved-package-cache");
53
54
  class V1App {
54
- constructor(app, packageCache) {
55
+ constructor(app) {
55
56
  this.app = app;
56
- this.packageCache = packageCache;
57
57
  this._publicAssets = Object.create(null);
58
58
  this._implicitScripts = [];
59
59
  this._implicitStyles = [];
60
+ this.packageCache = new moved_package_cache_1.MovablePackageCache(node_1.MacrosConfig.for(app, this.root), this.root);
60
61
  }
61
- static create(app, packageCache) {
62
+ static create(app) {
62
63
  var _a;
63
64
  if ((_a = app.project.pkg.keywords) === null || _a === void 0 ? void 0 : _a.includes('ember-addon')) {
64
65
  // we are a dummy app, which is unfortunately weird and special
65
- return new V1DummyApp(app, packageCache);
66
+ return new V1DummyApp(app);
66
67
  }
67
68
  else {
68
- return new V1App(app, packageCache);
69
+ return new V1App(app);
69
70
  }
70
71
  }
71
72
  // always the name from package.json. Not the one that apps may have weirdly
@@ -642,9 +643,9 @@ function throwIfMissing(asset, needle, haystack, entryfile, context) {
642
643
  return asset;
643
644
  }
644
645
  class V1DummyApp extends V1App {
645
- constructor(app, packageCache) {
646
- super(app, packageCache);
647
- this.owningAddon = new dummy_package_1.OwningAddon(this.app.project.root, packageCache);
646
+ constructor(app) {
647
+ super(app);
648
+ this.owningAddon = new dummy_package_1.OwningAddon(this.app.project.root, this.packageCache);
648
649
  this.packageCache.seed(this.owningAddon);
649
650
  this.packageCache.seed(new dummy_package_1.default(this.root, this.owningAddon, this.packageCache));
650
651
  }
package/src/v1-app.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"v1-app.js","sourceRoot":"","sources":["v1-app.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,2DAA6C;AAC7C,mCAA2C;AAC3C,+BAAiD;AACjD,sEAA0C;AAC1C,gFAA8C;AAC9C,qDAA6C;AAC7C,sDAA8B;AAE9B,2CAAsD;AACtD,6CAA6D;AAC7D,0CAUyB;AACzB,uCAA2G;AAC3G,gEAAsC;AACtC,iEAA4D;AAE5D,qDAAqE;AACrE,gFAAsD;AACtD,sEAAqC;AACrC,6DAAqC;AACrC,gHAAqF;AACrF,iEAAkE;AAClE,kGAA6E;AAC7E,2BAAkC;AAElC,oDAA4B;AAe5B,MAAqB,KAAK;IAiBxB,YAAgC,GAAqB,EAAY,YAA0B;QAA3D,QAAG,GAAH,GAAG,CAAkB;QAAY,iBAAY,GAAZ,YAAY,CAAc;QAJnF,kBAAa,GAAmC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QACpE,qBAAgB,GAAa,EAAE,CAAC;QAChC,oBAAe,GAAa,EAAE,CAAC;IAEuD,CAAC;IAb/F,MAAM,CAAC,MAAM,CAAC,GAAqB,EAAE,YAA0B;;QAC7D,IAAI,MAAA,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,QAAQ,0CAAE,QAAQ,CAAC,aAAa,CAAC,EAAE;YACrD,+DAA+D;YAC/D,OAAO,IAAI,UAAU,CAAC,GAAG,EAAE,YAAY,CAAC,CAAC;SAC1C;aAAM;YACL,OAAO,IAAI,KAAK,CAAC,GAAG,EAAE,YAAY,CAAC,CAAC;SACrC;IACH,CAAC;IAQD,4EAA4E;IAC5E,cAAc;IACd,IAAI,IAAI;QACN,OAAO,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC;IACnC,CAAC;IAED,IAAI,GAAG;QACL,OAAO,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC;IACtB,CAAC;IAGD,IAAI,IAAI;QACN,OAAO,IAAA,cAAO,EAAC,IAAA,aAAS,EAAC,EAAE,GAAG,EAAE,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,EAAE,CAAE,CAAC,CAAC;IAC7D,CAAC;IAGD,IAAY,gBAAgB;QAC1B,MAAM,eAAe,GAAG,IAAA,8BAAkB,EAAC,WAAW,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;QAEnE,IAAI,eAAe,KAAK,IAAI,EAAE;YAC5B,MAAM,IAAI,KAAK,CAAC,oDAAoD,CAAC,CAAC;SACvE;QAED,OAAO,IAAA,cAAO,EAAC,eAAe,CAAC,CAAC;IAClC,CAAC;IAGD,IAAI,iBAAiB;QACnB,OAAO,gBAAM,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,IAAA,iBAAY,EAAC,GAAG,IAAI,CAAC,gBAAgB,eAAe,EAAE,MAAM,CAAC,CAAC,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;IACjH,CAAC;IAEO,mBAAmB,CAAC,SAAiB;QAC3C,iEAAiE;QACjE,OAAO,OAAO,CAAC,iBAAO,CAAC,IAAI,CAAC,SAAS,EAAE,EAAE,OAAO,EAAE,IAAI,CAAC,gBAAgB,EAAE,CAAC,CAAC,CAAC;IAC9E,CAAC;IAED,IAAY,aAAa;QACvB,OAAO,IAAI,CAAC,mBAAmB,CAAC,yBAAyB,CAAC,CAAC;IAC7D,CAAC;IAED,IAAY,YAAY;QACtB,OAAO,IAAI,CAAC,mBAAmB,CAAC,wBAAwB,CAAC,CAAC;IAC5D,CAAC;IAED,IAAY,QAAQ;QAClB,OAAO,IAAI,CAAC,mBAAmB,CAAC,iCAAiC,CAAC,CAAC;IACrE,CAAC;IAGD,IAAI,cAAc;QAChB,OAAO,IAAI,GAAG,EAAE,CAAC;IACnB,CAAC;IAGD,IAAI,kBAAkB;QACpB,OAAO,IAAI,CAAC,mBAAmB,CAAC,6CAA6C,CAAC,CAAC;IACjF,CAAC;IAED,IAAI,gBAAgB;QAClB,OAAO,IAAI,CAAC,GAAG,CAAC,KAAK,IAAI,KAAK,CAAC;IACjC,CAAC;IAED,UAAU;QACR,OAAO,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,UAAU,EAAE,CAAC;IACvC,CAAC;IAED,IAAY,UAAU;QACpB,OAAO,IAAI,IAAI,CAAC,YAAY,CAAC,IAAA,cAAO,EAAC,IAAI,CAAC,UAAU,EAAE,CAAC,EAAE;YACvD,GAAG,EAAE,IAAI,CAAC,GAAG,CAAC,GAAG;YACjB,KAAK,EAAE,IAAI,CAAC,GAAG,CAAC,KAAK,IAAI,KAAK;YAC9B,OAAO,EAAE,IAAI,CAAC,GAAG,CAAC,OAAO;SAC1B,CAAC,CAAC;IACL,CAAC;IAGD,IAAI,MAAM;QACR,OAAO,IAAI,oBAAQ,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IACrD,CAAC;IAED,IAAI,OAAO;QACT,OAAO,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,OAAO,CAAC;IAClC,CAAC;IAGD,IAAI,OAAO;QACT,IAAI,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC;QACvB,IAAI,kBAAkB,GAAG,IAAI,2BAAc,EAAE,CAAC;QAE9C,IAAI,QAAQ,GAAG,IAAI,CAAC,qBAAqB,CAAC;QAE1C,kBAAkB,GAAG,IAAI,IAAI,CAAC,aAAa,CAAC,kBAAkB,EAAE,IAAI,CAAC,UAAU,EAAE;YAC/E,UAAU,EAAE,IAAA,WAAI,EAAC,cAAc,EAAE,GAAG,GAAG,OAAO,CAAC;YAC/C,KAAK,EAAE,CAAC,oBAAoB,CAAC;YAC7B,QAAQ;SACT,CAAC,CAAC;QAEH,OAAO,IAAI,0BAAa,CAAC,kBAAkB,CAAC,CAAC;IAC/C,CAAC;IAED,IAAY,iBAAiB;QAC3B,OAAO,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,iBAAiB,CAAC;IAC5C,CAAC;IAGD,IAAY,qBAAqB;QAC/B,OAAO,IAAI,CAAC,QAAQ,CAAC,qBAAqB,CAAC;YACzC,MAAM,EAAE,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,MAAM;YAC/B,OAAO,EAAE,IAAI,CAAC,OAAO;YACrB,iBAAiB,EAAE,IAAI,CAAC,iBAAiB;SAC1C,CAAC,CAAC;IACL,CAAC;IAED,IAAI,QAAQ;QACV,IAAI,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE;YAClB,OAAO,IAAA,8BAAU,EAAC,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC;SACzD;aAAM;YACL,OAAO,IAAI,CAAC,SAAS,CAAC;SACvB;IACH,CAAC;IAED,IAAY,SAAS;QACnB,IAAI,aAAa,GAAG,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC;QAC1D,IAAI,KAAK,GAAG,IAAA,yBAAW,EAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,EAAE;YAC1C,UAAU,EAAE,IAAI;YAChB,OAAO,EAAE,CAAC,YAAY,CAAC;YACvB,kBAAkB,EAAE,GAAG,EAAE,CAAC,aAAa;YACvC,UAAU,EAAE,gBAAgB;SAC7B,CAAC,CAAC;QACH,OAAO,IAAI,IAAI,CAAC,aAAa,CAAC,KAAK,EAAE,IAAI,CAAC,UAAU,EAAE;YACpD,UAAU,EAAE,IAAA,WAAI,EAAC,cAAc,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,OAAO,CAAC;YACxD,KAAK,EAAE,CAAC,aAAa,CAAC;YACtB,QAAQ,EAAE,IAAI,CAAC,qBAAqB;YACpC,UAAU,EAAE,yBAAyB;SACtC,CAAC,CAAC;IACL,CAAC;IAED,IAAY,aAAa;QACvB,IAAI,KAAK,GAAG,IAAA,yBAAW,EAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,EAAE;YAC5C,UAAU,EAAE,IAAI;YAChB,OAAO,EAAE,CAAC,YAAY,CAAC;YACvB,OAAO,EAAE,OAAO;YAChB,UAAU,EAAE,kBAAkB;SAC/B,CAAC,CAAC;QACH,OAAO,IAAI,IAAI,CAAC,aAAa,CAAC,KAAK,EAAE,IAAI,CAAC,UAAU,EAAE;YACpD,UAAU,EAAE,IAAA,WAAI,EAAC,cAAc,EAAE,WAAW,CAAC;YAC7C,KAAK,EAAE,CAAC,kBAAkB,CAAC;YAC3B,QAAQ,EAAE,IAAI,CAAC,qBAAqB;YACpC,UAAU,EAAE,6BAA6B;SAC1C,CAAC,CAAC;IACL,CAAC;IAGD,WAAW;QACT,kFAAkF;QAClF,MAAM,UAAU,GAAI,IAAI,CAAC,GAAG,CAAC,OAAe,CAAC,eAAe,CAAC,iBAAiB,CAAC,CAAC;QAChF,MAAM,WAAW,GAAG,UAAU,CAAC,iBAAiB,CAAC;YAC/C,iBAAiB,EAAE;gBACjB,sBAAsB,EAAE,IAAI;gBAC5B,cAAc,EAAE,KAAK;gBACrB,mBAAmB,EAAE,KAAK;gBAC1B,gBAAgB,EAAE,KAAK;gBACvB,8BAA8B,EAAE,KAAK;gBACrC,0BAA0B,EAAE,KAAK;aAClC;SACF,CAAC,CAAC;QAEH,IAAI,OAAO,GAAG,WAAW,CAAC,OAAgB,CAAC;QAC3C,IAAI,OAAO,GAAG,WAAW,CAAC,OAAO,CAAC;QAElC,sEAAsE;QACtE,uEAAuE;QACvE,2BAA2B;QAC3B,IAAI,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,KAAK,CAAC;QACtC,IAAI,QAAQ,EAAE;YACZ,IAAI,QAAQ,CAAC,OAAO,EAAE;gBACpB,OAAO,GAAG,QAAQ,CAAC,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;aAC5C;YACD,IAAI,QAAQ,CAAC,OAAO,EAAE;gBACpB,OAAO,GAAG,QAAQ,CAAC,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;aAC5C;SACF;QAED,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE;YAC3B,0EAA0E;YAC1E,gDAAgD;YAChD,OAAO,CACL,CAAC,IAAA,8BAAuB,EAAC,CAAC,CAAC;gBAC3B,sEAAsE;gBACtE,0DAA0D;gBAC1D,uEAAuE;gBACvE,sEAAsE;gBACtE,6BAA6B;gBAC7B,CAAC,uBAAgB,CAAC,wBAAwB,CAAC,CAAC,CAAC;gBAC7C,CAAC,IAAA,+CAAwB,EAAC,CAAC,CAAC,CAC7B,CAAC;QACJ,CAAC,CAAC,CAAC;QAEH,MAAM,MAAM,GAAqB;YAC/B,OAAO,EAAE,KAAK;YACd,OAAO;YACP,OAAO;YACP,yEAAyE;YACzE,4DAA4D;YAC5D,wEAAwE;YACxE,uBAAuB;YACvB,aAAa,EAAE,KAAK;SACrB,CAAC;QAEF,OAAO,MAAM,CAAC;IAChB,CAAC;IAGD,iBAAiB;QACf,IAAI,UAAU,GAAG,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAM,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,iBAAiB,CAAC,CAAC;QACxF,IAAI,UAAU,EAAE;YACd,IAAI,KAAK,GAAG,MAAM,CAAC,UAAU,CAAC,GAAG,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YACzD,IAAI,KAAK,KAAK,CAAC,EAAE;gBACf,MAAM,IAAI,KAAK,CAAC,4DAA4D,CAAC,CAAC;aAC/E;YACD,OAAO,KAAK,CAAC;SACd;QACD,wEAAwE;QACxE,eAAe;QACf,OAAO,CAAC,CAAC;IACX,CAAC;IAGO,oBAAoB;QAC1B,0EAA0E;QAC1E,0EAA0E;QAC1E,4EAA4E;QAC5E,OAAO;QACP,IAAI,WAAW,GAAG,IAAI,GAAG,EAAE,CAAC;QAC5B,KAAK,IAAI,eAAe,IAAI,IAAI,CAAC,GAAG,CAAC,oBAAoB,CAAC,MAAM,EAAE,EAAE;YAClE,KAAK,IAAI,QAAQ,IAAI,eAAe,CAAC,KAAiB,EAAE;gBACtD,IAAI,WAAW,GAAG,IAAI,CAAC,mBAAmB,CAAC,QAAQ,CAAC,CAAC;gBACrD,IAAI,WAAW,EAAE;oBACf,WAAW,CAAC,GAAG,CAAC,QAAQ,EAAE,WAAW,CAAC,CAAC;iBACxC;aACF;SACF;QACD,OAAO,WAAW,CAAC;IACrB,CAAC;IAEO,mBAAmB,CAAC,QAAgB;QAC1C,uEAAuE;QACvE,IAAI,KAAK,GAAG,QAAQ,CAAC,KAAK,CAAC,qCAAqC,CAAC,CAAC;QAClE,IAAI,KAAK,EAAE;YACT,mDAAmD;YACnD,wEAAwE;YACxE,KAAK,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,IAAI,CAAC,GAAG,CAAC,YAAY,CAAC,MAAM,EAAE,EAAE;gBACzD,IAAI,KAAK,CAAC,CAAC,CAAC,KAAK,IAAI,EAAE;oBACrB,OAAO,QAAQ,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,IAAI,GAAG,GAAG,CAAC,CAAC;iBAC/C;aACF;YACD,MAAM,IAAI,KAAK,CAAC,qEAAqE,QAAQ,EAAE,CAAC,CAAC;SAClG;IACH,CAAC;IAEO,cAAc,CAAC,UAAkB;QACvC,IAAI,KAAK,GAAG,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAChC,IAAA,yBAAW,EAAC,IAAI,EAAE;YAChB,UAAU,EAAE,IAAI;YAChB,MAAM,EAAE,QAAQ;YAChB,OAAO,EAAE,QAAQ;SAClB,CAAC,CACH,CAAC;QACF,IAAI,IAAI,CAAC,UAAU,EAAE;YACnB,KAAK,CAAC,IAAI,CACR,IAAA,yBAAW,EAAC,IAAI,CAAC,UAAU,EAAE;gBAC3B,OAAO,EAAE,QAAQ;aAClB,CAAC,CACH,CAAC;SACH;QAED,MAAM,IAAI,GAAG,IAAA,8BAAU,EAAC,KAAK,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QAEpD,MAAM,YAAY,GAAY;YAC5B,UAAU;YACV;gBACE,WAAW,EAAE,IAAI,CAAC,GAAG,CAAC,kBAAkB;gBACxC,WAAW,EAAE,kBAAkB;gBAC/B,gBAAgB,EAAE,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,WAAW,CAAC,MAAM,CAAC,EAAE;aACzD;YACD,SAAS;YACT;gBACE,WAAW,EAAE,IAAI,CAAC,GAAG,CAAC,iBAAiB;gBACvC,WAAW,EAAE,iBAAiB;gBAC9B,gBAAgB,EAAE,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,WAAW,CAAC,MAAM,CAAC,GAAG;aAC1D;SACF,CAAC;QAEF,MAAM,eAAe,GAAG,EAAE,CAAC;QAE3B,2CAA2C;QAC3C,KAAK,IAAI,KAAK,IAAI,YAAY,EAAE;YAC9B,MAAM,EAAE,WAAW,EAAE,WAAW,EAAE,gBAAgB,EAAE,GAAG,KAAK,CAAC;YAC7D,KAAK,IAAI,UAAU,IAAI,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE;gBAC/C,MAAM,WAAW,GAAG,WAAW,CAAC,UAAU,CAAC,CAAC;gBAE5C,IAAI,UAAU,KAAK,gBAAgB,EAAE;oBACnC,4DAA4D;oBAC5D,0CAA0C;oBAC1C,IAAI,CAAC,WAAW,CAAC,GAAG,WAAW,CAAC;iBACjC;qBAAM,IAAI,WAAW,CAAC,MAAM,KAAK,CAAC,EAAE;oBACnC,6CAA6C;oBAC7C,MAAM,IAAI,KAAK,CAAC,iBAAiB,CAAC,CAAC;iBACpC;qBAAM,IAAI,WAAW,CAAC,MAAM,KAAK,CAAC,EAAE;oBACnC,mFAAmF;oBACnF,EAAE;oBACF,kEAAkE;oBAClE,gFAAgF;oBAChF,IAAI,CAAC,aAAa,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,GAAG,UAAU,CAAC;iBACjD;qBAAM;oBACL,oFAAoF;oBACpF,mEAAmE;oBACnE,oEAAoE;oBACpE,IAAI,CAAC,aAAa,CAAC,UAAU,CAAC,GAAG,UAAU,CAAC;oBAE5C,eAAe,CAAC,IAAI,CAClB,IAAI,yBAAM,CAAC,IAAI,EAAE;wBACf,WAAW;wBACX,UAAU,EAAE,UAAU;wBACtB,UAAU,EAAE,WAAW,UAAU,EAAE;wBACnC,SAAS,EAAE,KAAK;wBAChB,eAAe,EAAE,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,YAAY,CAAC;qBAChD,CAAC,CACH,CAAC;iBACH;aACF;SACF;QAED,IAAI,CAAC,cAAc,EAAE,CAAC;QACtB,OAAO,IAAA,8BAAU,EAAC,CAAC,IAAI,EAAE,GAAG,eAAe,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IACrE,CAAC;IAED,cAAc;QACZ,KAAK,IAAI,KAAK,IAAI,IAAI,CAAC,GAAG,CAAC,eAAe,EAAE;YAC1C,IAAI,CAAC,aAAa,CAAC,GAAG,KAAK,CAAC,GAAG,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC,GAAG,GAAG,KAAK,CAAC,IAAI,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC;SAClF;IACH,CAAC;IAEO,aAAa,CAAC,SAAe;QACnC,IAAI,oBAAoB,GAAG,IAAI,CAAC,oBAAoB,EAAE,CAAC;QAEvD,OAAO,IAAI,qBAAS,CAAC,SAAS,EAAE,UAAU,CAAC,EAAE;YAC3C,KAAK,IAAI,CAAC,aAAa,EAAE,UAAU,CAAC,IAAI,oBAAoB,EAAE;gBAC5D,IAAI,QAAQ,GAAG,IAAA,WAAI,EAAC,UAAU,EAAE,aAAa,CAAC,CAAC;gBAC/C,IAAA,wBAAa,EAAC,IAAA,cAAO,EAAC,QAAQ,CAAC,CAAC,CAAC;gBACjC,IAAA,mBAAQ,EAAC,UAAU,EAAE,QAAQ,CAAC,CAAC;aAChC;YAED,IAAI,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAE5C,IAAI,SAAS,GAAc;gBACzB,IAAI,EAAE,OAAO;gBACb,OAAO,EAAE,CAAC;gBACV,kBAAkB,EAAE,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,UAAU,CAAC;gBACzD,iBAAiB,EAAE,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,UAAU,CAAC;gBACvD,uBAAuB,EAAE,IAAI,CAAC,GAAG,CAAC,uBAAuB,CAAC,GAAG,CAAC,UAAU,CAAC;gBACzE,sBAAsB,EAAE,IAAI,CAAC,GAAG,CAAC,sBAAsB,CAAC,GAAG,CAAC,UAAU,CAAC;gBACvE,eAAe,EAAE,IAAA,iBAAO,EAAC,IAAI,CAAC,aAAa,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,EAAE,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;aAC1E,CAAC;YACF,IAAI,IAAI,GAAgB;gBACtB,IAAI,EAAE,+BAA+B;gBACrC,OAAO,EAAE,OAAO;gBAChB,QAAQ,EAAE,CAAC,aAAa,CAAC;gBACzB,aAAa,EAAE,SAAS;aACzB,CAAC;YACF,IAAA,wBAAa,EAAC,IAAA,WAAI,EAAC,UAAU,EAAE,cAAc,CAAC,EAAE,IAAI,EAAE,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC,CAAC;QACvE,CAAC,CAAC,CAAC;IACL,CAAC;IAED,uBAAuB,CAAC,UAAkB;QACxC,OAAO,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,cAAc,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;IACzF,CAAC;IAEO,cAAc,CAAC,UAAkB;QACvC,IAAI,KAAK,GAAW,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CACxC,IAAA,yBAAW,EAAC,IAAI,EAAE;YAChB,UAAU,EAAE,IAAI;YAChB,MAAM,EAAE,cAAc;SACvB,CAAC,CACH,CAAC;QACF,IAAI,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,MAA0B,CAAC;QAC1D,IAAI,SAAS,EAAE;YACb,oEAAoE;YACpE,EAAE;YACF,sEAAsE;YACtE,sEAAsE;YACtE,sEAAsE;YACtE,gEAAgE;YAChE,IAAK,SAAiB,CAAC,QAAQ,KAAK,KAAK,IAAK,SAAiB,CAAC,cAAc,EAAE;gBAC9E,SAAS,GAAG,IAAI,4BAAU,CAAE,SAAiB,CAAC,cAAc,CAAC,CAAC;aAC/D;YACD,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;SACvB;QACD,OAAO,IAAA,8BAAU,EAAC,KAAK,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,UAAU,EAAE,kCAAkC,EAAE,CAAC,CAAC;IAChG,CAAC;IAED,uBAAuB,CAAC,UAAkB;QACxC,IAAI,OAAO,GAAG;YACZ,iEAAiE;YACjE,qEAAqE;YACrE,uEAAuE;YACvE,qCAAqC;YACrC,WAAW,EAAE,EAAE,GAAG,EAAE,WAAW,IAAI,CAAC,IAAI,MAAM,EAAE;YAChD,QAAQ,EAAE,IAAI,CAAC,GAAG,CAAC,QAAQ;YAC3B,SAAS,EAAE,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,SAAS,CAAC,OAAO;SAC9C,CAAC;QAEF,IAAI,WAAW,GAAG,IAAA,yBAAW,EAAC,IAAI,CAAC,cAAc,CAAC,UAAU,CAAC,EAAE,EAAE,OAAO,EAAE,YAAY,EAAE,CAAC,CAAC;QAC1F,IAAI,MAAM,GAAG,IAAI,CAAC,aAAa,CAAC,aAAa,CAAC,WAAW,EAAE,aAAa,EAAE,SAAS,EAAE,OAAO,CAAC,CAAC;QAE9F,OAAO,IAAI,qBAAS,CAAC,MAAM,EAAE,UAAU,CAAC,EAAE;YACxC,IAAI,SAAS,GAAc;gBACzB,IAAI,EAAE,OAAO;gBACb,OAAO,EAAE,CAAC;gBACV,eAAe,EAAE,EAAE;aACpB,CAAC;YACF,IAAI,SAAS,GAAG,IAAA,WAAI,EAAC,UAAU,EAAE,QAAQ,CAAC,CAAC;YAC3C,IAAI,IAAA,yBAAc,EAAC,SAAS,CAAC,EAAE;gBAC7B,KAAK,IAAI,IAAI,IAAI,IAAA,sBAAW,EAAC,SAAS,CAAC,EAAE;oBACvC,SAAS,CAAC,eAAe,CAAE,CAAC,YAAY,IAAI,EAAE,CAAC,GAAG,WAAW,IAAI,EAAE,CAAC;iBACrE;aACF;YACD,IAAI,IAAI,GAAgB;gBACtB,IAAI,EAAE,+BAA+B;gBACrC,OAAO,EAAE,OAAO;gBAChB,QAAQ,EAAE,CAAC,aAAa,CAAC;gBACzB,aAAa,EAAE,SAAS;aACzB,CAAC;YACF,IAAA,wBAAa,EAAC,IAAA,WAAI,EAAC,UAAU,EAAE,cAAc,CAAC,EAAE,IAAI,EAAE,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC,CAAC;QACvE,CAAC,CAAC,CAAC;IACL,CAAC;IAED,gDAAgD;IACxC,qBAAqB,CAAC,YAAkB;QAC9C,KAAK,IAAI,oBAAoB,IAAI,IAAI,CAAC,GAAG,CAAC,oBAAoB,EAAE;YAC9D,IAAI,aAAa,GAAG,oBAAoB,CAAC,CAAC,CAAC,CAAC;YAC5C,IAAI,eAAe,GAAG,oBAAoB,CAAC,CAAC,CAAC,CAAC;YAE9C,IAAI,aAAa,GAAG,IAAA,yBAAW,EAAC,YAAY,EAAE;gBAC5C,KAAK,EAAE,eAAe,CAAC,KAAK;gBAC5B,UAAU,EAAE,6BAA6B,aAAa,GAAG;aAC1D,CAAC,CAAC;YAEH,YAAY,GAAG,IAAA,8BAAU,EAAC,CAAC,YAAY,EAAE,eAAe,CAAC,QAAQ,CAAC,aAAa,EAAE,eAAe,CAAC,OAAO,CAAC,CAAC,EAAE;gBAC1G,UAAU,EAAE,iCAAiC,aAAa,GAAG;gBAC7D,SAAS,EAAE,IAAI;aAChB,CAAC,CAAC;SACJ;QACD,OAAO,YAAY,CAAC;IACtB,CAAC;IAEO,UAAU,CAAC,KAAa;QAC9B,IAAI,IAAI,CAAC,oBAAoB,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE;YAC1C,qEAAqE;YACrE,kDAAkD;YAClD,OAAO,IAAI,GAAG,KAAK,CAAC;SACrB;QACD,IAAI,WAAW,GAAG,IAAI,CAAC,mBAAmB,CAAC,KAAK,CAAC,CAAC;QAClD,IAAI,WAAW,EAAE;YACf,mEAAmE;YACnE,6CAA6C;YAC7C,OAAO,WAAW,CAAC;SACpB;QACD,uEAAuE;QACvE,aAAa;QACb,IAAI,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,IAAA,iBAAU,EAAC,KAAK,CAAC,EAAE;YAC9C,OAAO,KAAK,CAAC;SACd;QACD,OAAO,IAAI,GAAG,KAAK,CAAC;IACtB,CAAC;IAEO,YAAY,CAAC,IAAU;QAC7B,sEAAsE;QACtE,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,EAAE,iBAAiB,CAAC,CAAC;QAElD,6DAA6D;QAC7D,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,EAAE,4BAA4B,CAAC,CAAC;QAE7D,OAAO,IAAI,CAAC,aAAa,CAAC,YAAY,CAAC,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE;YACrD,UAAU,EAAE,sBAAsB;YAClC,QAAQ,EAAE,IAAI,CAAC,GAAG,CAAC,QAAQ;SAC5B,CAAC,CAAC;IACL,CAAC;IAED,IAAI,eAAe;;QACjB,IAAI,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CACtC,CAAC,CAAgB,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,oBAAoB,CAClB,CAAC;QACtC,IAAI,OAAO,GAAG,KAAK,CAAC,eAAe,EAAE,CAAC;QACtC,IAAI,MAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,OAAO,0CAAE,GAAG,EAAE;YACzB,0EAA0E;YAC1E,gDAAgD;YAChD,OAAO,CAAC,OAAO,CAAC,GAAG,GAAG,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAM,EAAE,EAAE,CAAC,CAAC,IAAA,8BAAuB,EAAC,CAAC,CAAC,CAAC,CAAC;YAC1F,IAAA,sCAA+B,EAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;SACpD;QACD,OAAO,MAAA,OAAO,CAAC,OAAO,mCAAI,EAAE,CAAC;IAC/B,CAAC;IAED,4EAA4E;IAC5E,uBAAuB;IACvB,IAAY,OAAO;QACjB,OAAO,IAAI,CAAC,YAAY,CACtB,IAAA,yBAAW,EAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,EAAE;YAC9B,OAAO,EAAE,CAAC,WAAW,EAAE,QAAQ,CAAC;SACjC,CAAC,CACH,CAAC;IACJ,CAAC;IAED,IAAY,SAAS;QACnB,IAAI,IAAI,CAAC,gBAAgB,IAAI,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,EAAE;YACjD,OAAO,IAAI,CAAC,YAAY,CACtB,IAAA,yBAAW,EAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,EAAE;gBAChC,OAAO,EAAE,OAAO;aACjB,CAAC,CACH,CAAC;SACH;IACH,CAAC;IAED,IAAY,QAAQ;QAClB,IAAI,IAAI,CAAC,gBAAgB,EAAE;YACzB,OAAO,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE,CAAC;SAChC;IACH,CAAC;IAED,IAAI,UAAU;QACZ,OAAO,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;IAChD,CAAC;IAEO,UAAU,CAAC,SAAoC;QACrD,IAAI,OAAO,SAAS,KAAK,QAAQ,EAAE;YACjC,qEAAqE;YACrE,sEAAsE;YACtE,wEAAwE;YACxE,yEAAyE;YACzE,qBAAqB;YACrB,IAAI,YAAY,GAAG,IAAA,WAAI,EAAC,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;YAC1D,IAAI,IAAA,qBAAU,EAAC,YAAY,CAAC,EAAE;gBAC5B,OAAO,IAAI,4BAAU,CAAC,SAAS,CAAC,CAAC;aAClC;iBAAM;gBACL,OAAO,SAAS,CAAC;aAClB;SACF;QACD,OAAO,SAAS,CAAC;IACnB,CAAC;IAGD,IAAY,aAAa;QACvB,OAAO,IAAI,CAAC,mBAAmB,CAAC,6CAA6C,CAAC,CAAC;IACjF,CAAC;IAED,IAAI,UAAU;QACZ,OAAO,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;IAChD,CAAC;IAED,YAAY;QACV,IAAI,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC;QAC3B,IAAI,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC;QAC/B,IAAI,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC;QAC7B,IAAI,MAAM,GAAG,IAAI,yBAAa,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,iBAAiB,CAAC,CAAC;QACpE,IAAI,QAAQ,GAAG,IAAI,CAAC,qBAAqB,CAAC;QAC1C,IAAI,cAAc,GAAG,IAAI,IAAI,CAAC,aAAa,CAAC,MAAM,EAAE,IAAI,CAAC,UAAU,EAAE;YACnE,UAAU,EAAE,IAAA,WAAI,EAAC,cAAc,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,OAAO,CAAC;YACxD,KAAK,EAAE,CAAC,uBAAuB,CAAC;YAChC,QAAQ;SACT,CAAC,CAAC;QAEH,IAAI,KAAK,GAAW,EAAE,CAAC;QACvB,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QACpB,KAAK,CAAC,IAAI,CAAC,IAAI,6CAAgC,CAAC,OAAO,EAAE,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;QAE1E,KAAK,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;QAC3B,IAAI,SAAS,EAAE;YACb,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;SACvB;QACD,IAAI,QAAQ,EAAE;YACZ,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;SACtB;QACD,OAAO;YACL,KAAK,EAAE,IAAA,8BAAU,EAAC,KAAK,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC;SAC9C,CAAC;IACJ,CAAC;IAEO,cAAc,CAAC,GAAW;QAChC,IAAI,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC,OAAO,CAAC;QAC/C,IAAI,GAAG,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE;YAC3B,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;SACvC;aAAM,IAAI,GAAG,CAAC,UAAU,CAAC,GAAG,GAAG,OAAO,CAAC,EAAE;YACxC,GAAG,GAAG,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;SACjC;QACD,OAAO,GAAG,CAAC;IACb,CAAC;IAED,aAAa,CAAC,OAA4B,EAAE,UAAkB;QAC5D,IAAI,KAAK,GAAG,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,WAAW,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAC5G,OAAO,cAAc,CACnB,KAAK,EACL,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,WAAW,CAAC,GAAG,CAAC,EAAE,EACnC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,EACvB,UAAU,EACV,gBAAgB,CACjB,CAAC;IACJ,CAAC;IAED,aAAa,CAAC,MAAyB,EAAE,UAAkB;QACzD,IAAI,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,WAAW,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QAC/G,OAAO,cAAc,CACnB,KAAK,EACL,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,WAAW,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,EACxC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,EACvB,UAAU,EACV,SAAS,CACV,CAAC;IACJ,CAAC;IAED,gBAAgB,CAAC,OAA4B,EAAE,UAAkB;QAC/D,IAAI,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,WAAW,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;QAChH,OAAO,cAAc,CACnB,MAAM,EACN,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,WAAW,CAAC,MAAM,CAAC,EAAE,EACtC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,EACvB,UAAU,EACV,mBAAmB,CACpB,CAAC;IACJ,CAAC;IAED,gBAAgB,CAAC,MAAyB,EAAE,UAAkB;QAC5D,IAAI,WAAW,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,WAAW,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QACpH,OAAO,cAAc,CACnB,WAAW,EACX,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,WAAW,CAAC,MAAM,CAAC,GAAG,EACvC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,EACvB,UAAU,EACV,YAAY,CACb,CAAC;IACJ,CAAC;IAED,qBAAqB,CAAC,MAAyB;QAC7C,OAAO,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,WAAW,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;IAChH,CAAC;IAED,qBAAqB,CAAC,OAA4B;QAChD,OAAO,OAAO,CAAC,IAAI,CACjB,MAAM,CAAC,EAAE,CAAC,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,WAAW,CAAC,WAAW,CAAC,EAAE,CAAC,WAAW,CACtG,CAAC;IACJ,CAAC;IAED,cAAc,CAAC,OAA4B;QACzC,OAAO,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,WAAW,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;IAC3G,CAAC;CACF;AAloBC;IADC,IAAA,4BAAO,GAAE;iCAGT;AAGD;IADC,IAAA,4BAAO,GAAE;6CAST;AAGD;IADC,IAAA,4BAAO,GAAE;8CAGT;AAoBD;IADC,IAAA,4BAAO,GAAE;2CAGT;AAGD;IADC,IAAA,4BAAO,GAAE;+CAGT;AAmBD;IADC,IAAA,4BAAO,GAAE;mCAGT;AAOD;IADC,IAAA,4BAAO,GAAE;oCAcT;AAOD;IADC,IAAA,4BAAO,GAAE;kDAOT;AA0CD;IADC,IAAA,4BAAO,GAAE;wCA0DT;AAGD;IADC,IAAA,4BAAO,GAAE;8CAaT;AAGD;IADC,IAAA,4BAAO,GAAE;iDAgBT;AAoTD;IADC,IAAA,4BAAO,GAAE;0CAGT;AA3jBH,wBAgqBC;AAED,SAAS,cAAc,CACrB,KAAoB,EACpB,MAAc,EACd,QAAkB,EAClB,SAAiB,EACjB,OAAe;IAEf,IAAI,CAAC,KAAK,EAAE;QACV,MAAM,IAAI,KAAK,CACb,kBAAkB,OAAO,MAAM,MAAM,QAAQ,SAAS,mCAAmC,QAAQ;aAC9F,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,MAAM,KAAK,EAAE,CAAC;aAC3B,IAAI,CACH,IAAI,CACL,+HAA+H,CACnI,CAAC;KACH;IAED,OAAO,KAAK,CAAC;AACf,CAAC;AAED,MAAM,UAAW,SAAQ,KAAK;IAC5B,YAAY,GAAqB,EAAE,YAA0B;QAC3D,KAAK,CAAC,GAAG,EAAE,YAAY,CAAC,CAAC;QACzB,IAAI,CAAC,WAAW,GAAG,IAAI,2BAAW,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,EAAE,YAAY,CAAC,CAAC;QACxE,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QACzC,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,uBAAY,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC;IAC3F,CAAC;IAED,IAAI,IAAI;QACN,wCAAwC;QACxC,OAAO,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC;IACvB,CAAC;IAED,IAAI,IAAI;QACN,qEAAqE;QACrE,OAAO,IAAA,WAAI,EAAC,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,UAAU,EAAE,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;IACzD,CAAC;CACF","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 PackageCache,\n TemplateCompiler,\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 } 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 } 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';\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, packageCache: PackageCache): 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, packageCache);\n } else {\n return new V1App(app, packageCache);\n }\n }\n\n private _publicAssets: { [filePath: string]: string } = Object.create(null);\n private _implicitScripts: string[] = [];\n private _implicitStyles: string[] = [];\n\n protected constructor(protected app: EmberAppInstance, protected packageCache: PackageCache) {}\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 !TemplateCompiler.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 return this.preprocessors.preprocessJs(tree, `/`, '/', {\n annotation: 'v1-app-preprocess-js',\n registry: this.app.registry,\n });\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, packageCache: PackageCache) {\n super(app, packageCache);\n this.owningAddon = new OwningAddon(this.app.project.root, 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 } 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 TemplateCompiler,\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 } 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 !TemplateCompiler.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 return this.preprocessors.preprocessJs(tree, `/`, '/', {\n annotation: 'v1-app-preprocess-js',\n registry: this.app.registry,\n });\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,6 +1,5 @@
1
1
  import V1App from './v1-app';
2
2
  import V1Addon from './v1-addon';
3
- import { MovablePackageCache } from './moved-package-cache';
4
3
  import Options from './options';
5
4
  export default class V1InstanceCache {
6
5
  private options;
@@ -8,7 +7,6 @@ export default class V1InstanceCache {
8
7
  static forApp(emberApp: object, options: Required<Options>): V1InstanceCache;
9
8
  private addons;
10
9
  app: V1App;
11
- packageCache: MovablePackageCache;
12
10
  orderIdx: number;
13
11
  private constructor();
14
12
  private adapterClass;
@@ -10,9 +10,7 @@ const v1_app_1 = __importDefault(require("./v1-app"));
10
10
  const v1_addon_1 = __importDefault(require("./v1-addon"));
11
11
  const fs_extra_1 = require("fs-extra");
12
12
  const core_1 = require("@embroider/core");
13
- const moved_package_cache_1 = require("./moved-package-cache");
14
13
  const isEqual_1 = __importDefault(require("lodash/isEqual"));
15
- const node_1 = require("@embroider/macros/src/node");
16
14
  class V1InstanceCache {
17
15
  constructor(oldApp, options) {
18
16
  this.options = options;
@@ -20,8 +18,7 @@ class V1InstanceCache {
20
18
  // There can be many because a single copy of an addon may be consumed by many
21
19
  // other packages and each gets an instance.
22
20
  this.addons = new Map();
23
- this.packageCache = new moved_package_cache_1.MovablePackageCache(node_1.MacrosConfig.for(oldApp));
24
- this.app = v1_app_1.default.create(oldApp, this.packageCache);
21
+ this.app = v1_app_1.default.create(oldApp);
25
22
  this.orderIdx = 0;
26
23
  // no reason to do this on demand because oldApp already eagerly loaded
27
24
  // all descendants
@@ -62,7 +59,7 @@ class V1InstanceCache {
62
59
  addAddon(addonInstance) {
63
60
  this.orderIdx += 1;
64
61
  let Klass = this.adapterClass(addonInstance);
65
- let v1Addon = new Klass(addonInstance, this.options, this.app, this.packageCache, this.orderIdx);
62
+ let v1Addon = new Klass(addonInstance, this.options, this.app, this.app.packageCache, this.orderIdx);
66
63
  let pkgs = (0, core_1.getOrCreate)(this.addons, v1Addon.root, () => []);
67
64
  pkgs.push(v1Addon);
68
65
  addonInstance.addons.forEach(a => this.addAddon(a));
@@ -1 +1 @@
1
- {"version":3,"file":"v1-instance-cache.js","sourceRoot":"","sources":["v1-instance-cache.ts"],"names":[],"mappings":"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","sourcesContent":["// All access to class ember-cli-provided Addon and EmberApp instances of v1\n// packages is supposed to go through here. This lets us control the boundary\n// between the new and old words.\n\nimport V1App from './v1-app';\nimport V1Addon, { V1AddonConstructor } from './v1-addon';\nimport { pathExistsSync } from 'fs-extra';\nimport { AddonInstance, getOrCreate } from '@embroider/core';\nimport { MovablePackageCache } from './moved-package-cache';\nimport Options from './options';\nimport isEqual from 'lodash/isEqual';\nimport { MacrosConfig } from '@embroider/macros/src/node';\n\nexport default class V1InstanceCache {\n static caches: WeakMap<object, V1InstanceCache> = new WeakMap();\n\n static forApp(emberApp: object, options: Required<Options>): V1InstanceCache {\n let instance = getOrCreate(this.caches, emberApp, () => new this(emberApp, options));\n if (!isEqual(instance.options, options)) {\n throw new Error(`attempted double set of app Options`);\n }\n return instance;\n }\n\n // maps from package root directories to known V1 instances of that packages.\n // There can be many because a single copy of an addon may be consumed by many\n // other packages and each gets an instance.\n private addons: Map<string, V1Addon[]> = new Map();\n\n app: V1App;\n packageCache: MovablePackageCache;\n orderIdx: number;\n\n private constructor(oldApp: any, private options: Required<Options>) {\n this.packageCache = new MovablePackageCache(MacrosConfig.for(oldApp));\n this.app = V1App.create(oldApp, this.packageCache);\n this.orderIdx = 0;\n\n // no reason to do this on demand because oldApp already eagerly loaded\n // all descendants\n (oldApp.project.addons as AddonInstance[]).forEach(addon => {\n this.addAddon(addon);\n });\n }\n\n private adapterClass(addonInstance: AddonInstance): V1AddonConstructor {\n let packageName = addonInstance.pkg.name;\n // if the user registered something (including \"null\", which allows\n // disabling the built-in adapters), that takes precedence.\n let AdapterClass = this.options.compatAdapters.get(packageName);\n\n if (AdapterClass === null) {\n return V1Addon;\n }\n\n if (!AdapterClass) {\n let path = `${__dirname}/compat-adapters/${packageName}.js`;\n if (pathExistsSync(path)) {\n // eslint-disable-next-line @typescript-eslint/no-require-imports\n AdapterClass = require(path).default;\n }\n }\n\n if (!AdapterClass) {\n return V1Addon;\n }\n\n if (AdapterClass.shouldApplyAdapter) {\n return AdapterClass.shouldApplyAdapter(addonInstance) ? AdapterClass : V1Addon;\n }\n\n return AdapterClass;\n }\n\n private addAddon(addonInstance: AddonInstance) {\n this.orderIdx += 1;\n let Klass = this.adapterClass(addonInstance);\n let v1Addon = new Klass(addonInstance, this.options, this.app, this.packageCache, this.orderIdx);\n let pkgs = getOrCreate(this.addons, v1Addon.root, () => []);\n pkgs.push(v1Addon);\n addonInstance.addons.forEach(a => this.addAddon(a));\n }\n\n getAddons(root: string): V1Addon[] {\n return this.addons.get(root) || [];\n }\n}\n"]}
1
+ {"version":3,"file":"v1-instance-cache.js","sourceRoot":"","sources":["v1-instance-cache.ts"],"names":[],"mappings":"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","sourcesContent":["// All access to class ember-cli-provided Addon and EmberApp instances of v1\n// packages is supposed to go through here. This lets us control the boundary\n// between the new and old words.\n\nimport V1App from './v1-app';\nimport V1Addon, { V1AddonConstructor } from './v1-addon';\nimport { pathExistsSync } from 'fs-extra';\nimport { AddonInstance, getOrCreate } from '@embroider/core';\nimport Options from './options';\nimport isEqual from 'lodash/isEqual';\n\nexport default class V1InstanceCache {\n static caches: WeakMap<object, V1InstanceCache> = new WeakMap();\n\n static forApp(emberApp: object, options: Required<Options>): V1InstanceCache {\n let instance = getOrCreate(this.caches, emberApp, () => new this(emberApp, options));\n if (!isEqual(instance.options, options)) {\n throw new Error(`attempted double set of app Options`);\n }\n return instance;\n }\n\n // maps from package root directories to known V1 instances of that packages.\n // There can be many because a single copy of an addon may be consumed by many\n // other packages and each gets an instance.\n private addons: Map<string, V1Addon[]> = new Map();\n\n app: V1App;\n orderIdx: number;\n\n private constructor(oldApp: any, private options: Required<Options>) {\n this.app = V1App.create(oldApp);\n this.orderIdx = 0;\n\n // no reason to do this on demand because oldApp already eagerly loaded\n // all descendants\n (oldApp.project.addons as AddonInstance[]).forEach(addon => {\n this.addAddon(addon);\n });\n }\n\n private adapterClass(addonInstance: AddonInstance): V1AddonConstructor {\n let packageName = addonInstance.pkg.name;\n // if the user registered something (including \"null\", which allows\n // disabling the built-in adapters), that takes precedence.\n let AdapterClass = this.options.compatAdapters.get(packageName);\n\n if (AdapterClass === null) {\n return V1Addon;\n }\n\n if (!AdapterClass) {\n let path = `${__dirname}/compat-adapters/${packageName}.js`;\n if (pathExistsSync(path)) {\n // eslint-disable-next-line @typescript-eslint/no-require-imports\n AdapterClass = require(path).default;\n }\n }\n\n if (!AdapterClass) {\n return V1Addon;\n }\n\n if (AdapterClass.shouldApplyAdapter) {\n return AdapterClass.shouldApplyAdapter(addonInstance) ? AdapterClass : V1Addon;\n }\n\n return AdapterClass;\n }\n\n private addAddon(addonInstance: AddonInstance) {\n this.orderIdx += 1;\n let Klass = this.adapterClass(addonInstance);\n let v1Addon = new Klass(addonInstance, this.options, this.app, this.app.packageCache, this.orderIdx);\n let pkgs = getOrCreate(this.addons, v1Addon.root, () => []);\n pkgs.push(v1Addon);\n addonInstance.addons.forEach(a => this.addAddon(a));\n }\n\n getAddons(root: string): V1Addon[] {\n return this.addons.get(root) || [];\n }\n}\n"]}