@embroider/compat 3.6.2-unstable.a691d39 → 3.6.2-unstable.aa52b09

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.
@@ -1 +1 @@
1
- {"version":3,"file":"compat-app-builder.js","sourceRoot":"","sources":["compat-app-builder.ts"],"names":[],"mappings":"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","sourcesContent":["import type { AddonPackage, Engine, TemplateColocationPluginOptions } from '@embroider/core';\nimport {\n explicitRelative,\n warn,\n jsHandlebarsCompile,\n templateColocationPluginPath,\n cacheBustingPluginVersion,\n cacheBustingPluginPath,\n Resolver,\n locateEmbroiderWorkingDir,\n} from '@embroider/core';\nimport { resolve as resolvePath } from 'path';\nimport type Options from './options';\nimport type { CompatResolverOptions } from './resolver-transform';\nimport type { PackageRules } from './dependency-rules';\nimport { activePackageRules } from './dependency-rules';\nimport flatMap from 'lodash/flatMap';\nimport cloneDeep from 'lodash/cloneDeep';\nimport bind from 'bind-decorator';\nimport { outputJSONSync, writeFileSync, realpathSync } from 'fs-extra';\nimport type { Options as EtcOptions } from 'babel-plugin-ember-template-compilation';\nimport type { Options as ResolverTransformOptions } from './resolver-transform';\nimport type { Options as AdjustImportsOptions } from './babel-plugin-adjust-imports';\nimport { makePortable } from '@embroider/core/src/portable-babel-config';\nimport type { PortableHint } from '@embroider/core/src/portable';\nimport { maybeNodeModuleVersion } from '@embroider/core/src/portable';\nimport { Memoize } from 'typescript-memoize';\nimport { join, dirname } from 'path';\nimport resolve from 'resolve';\nimport type ContentForConfig from './content-for-config';\nimport type { V1Config } from './v1-config';\nimport type { Package } from '@embroider/core';\nimport { readdirSync } from 'fs-extra';\nimport type { TransformOptions } from '@babel/core';\nimport { MacrosConfig } from '@embroider/macros/src/node';\n\nimport type CompatApp from './compat-app';\n\n// This exists during the actual broccoli build step. As opposed to CompatApp,\n// which also exists during pipeline-construction time.\n\nexport class CompatAppBuilder {\n constructor(\n private origAppPackage: Package,\n private appPackageWithMovedDeps: Package,\n private options: Required<Options>,\n private compatApp: CompatApp,\n private configTree: V1Config,\n private contentForTree: ContentForConfig,\n private synthVendor: Package,\n private synthStyles: Package\n ) {}\n\n private activeAddonChildren(pkg: Package): 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 are definitely active due to one of\n // the other sections.\n addon => pkg.categorizeDependency(addon.name) !== 'peerDependencies'\n );\n if (pkg === this.appPackageWithMovedDeps) {\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 private get allActiveAddons(): AddonPackage[] {\n let result = this.appPackageWithMovedDeps.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 // stage1 already took care of converting everything that's actually active\n // into v2 addons. If it's not a v2 addon, we don't want it.\n //\n // We can encounter v1 addons here when there is inactive stuff floating\n // around in the node_modules that accidentally satisfy something like an\n // optional peer dep.\n return pkg.isV2Addon();\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 private resolvableExtensions(): string[] {\n let fromEnv = process.env.EMBROIDER_RESOLVABLE_EXTENSIONS;\n if (fromEnv) {\n return fromEnv.split(',');\n } else {\n return ['.mjs', '.gjs', '.js', '.mts', '.gts', '.ts', '.hbs', '.hbs.js', '.json'];\n }\n }\n\n private modulePrefix(): string {\n return this.configTree.readConfig().modulePrefix;\n }\n\n private podModulePrefix(): string | undefined {\n return this.configTree.readConfig().podModulePrefix;\n }\n\n @Memoize()\n private activeRules() {\n return activePackageRules(this.options.packageRules.concat(defaultAddonPackageRules()), [\n { name: this.origAppPackage.name, version: this.origAppPackage.version, root: this.origAppPackage.root },\n ...this.allActiveAddons.filter(p => p.meta['auto-upgraded']),\n ]);\n }\n\n private resolverConfig(engines: Engine[]): CompatResolverOptions {\n let renamePackages = Object.assign({}, ...this.allActiveAddons.map(dep => dep.meta['renamed-packages']));\n let renameModules = Object.assign({}, ...this.allActiveAddons.map(dep => dep.meta['renamed-modules']));\n\n let options: CompatResolverOptions['options'] = {\n staticHelpers: this.options.staticHelpers,\n staticModifiers: this.options.staticModifiers,\n staticComponents: this.options.staticComponents,\n allowUnsafeDynamicComponents: this.options.allowUnsafeDynamicComponents,\n };\n\n let config: CompatResolverOptions = {\n // this part is the base ModuleResolverOptions as required by @embroider/core\n renameModules,\n renamePackages,\n resolvableExtensions: this.resolvableExtensions(),\n appRoot: this.origAppPackage.root,\n engines: engines.map(engine => ({\n packageName: engine.package.name,\n // we need to use the real path here because webpack requests always use the real path i.e. follow symlinks\n root: realpathSync(engine.package.root),\n fastbootFiles: {},\n activeAddons: [...engine.addons]\n .map(([addon, canResolveFromFile]) => ({\n name: addon.name,\n root: addon.root,\n canResolveFromFile,\n }))\n // the traditional order is the order in which addons will run, such\n // that the last one wins. Our resolver's order is the order to\n // search, so first one wins.\n .reverse(),\n isLazy: engine.package.isLazyEngine(),\n })),\n amdCompatibility: this.options.amdCompatibility,\n\n // this is the additional stufff that @embroider/compat adds on top to do\n // global template resolving\n modulePrefix: this.modulePrefix(),\n splitAtRoutes: this.options.splitAtRoutes,\n podModulePrefix: this.podModulePrefix(),\n activePackageRules: this.activeRules(),\n options,\n autoRun: this.compatApp.autoRun,\n staticAppPaths: this.options.staticAppPaths,\n };\n\n return config;\n }\n\n @Memoize()\n private async babelConfig(resolverConfig: CompatResolverOptions) {\n let babel = cloneDeep(this.compatApp.babelConfig());\n\n if (!babel.plugins) {\n babel.plugins = [];\n }\n\n // Our stage3 code is always allowed to use dynamic import. We may emit it\n // ourself when splitting routes.\n babel.plugins.push(require.resolve('@babel/plugin-syntax-dynamic-import'));\n\n // https://github.com/webpack/webpack/issues/12154\n babel.plugins.push(require.resolve('./rename-require-plugin'));\n\n babel.plugins.push([\n require.resolve('babel-plugin-ember-template-compilation'),\n await this.etcOptions(resolverConfig),\n ]);\n\n // this is @embroider/macros configured for full stage3 resolution\n babel.plugins.push(...this.compatApp.macrosConfig.babelPluginConfig());\n\n let colocationOptions: TemplateColocationPluginOptions = {\n appRoot: this.origAppPackage.root,\n\n // This extra weirdness is a compromise in favor of build performance.\n //\n // 1. When auto-upgrading an addon from v1 to v2, we definitely want to\n // run any custom AST transforms in stage1.\n //\n // 2. In general case, AST transforms are allowed to manipulate Javascript\n // scope. This means that running transforms -- even when we're doing\n // source-to-source compilation that emits handlebars and not wire\n // format -- implies changing .hbs files into .js files.\n //\n // 3. So stage1 may need to rewrite .hbs to .hbs.js (to avoid colliding\n // with an existing co-located .js file).\n //\n // 4. But stage1 doesn't necessarily want to run babel over the\n // corresponding JS file. Most of the time, that's just an\n // unnecessarily expensive second parse. (We only run it in stage1 to\n // eliminate an addon's custom babel plugins, and many addons don't\n // have any.)\n //\n // 5. Therefore, the work of template-colocation gets defered until here,\n // and it may see co-located templates named `.hbs.js` instead of the\n // usual `.hbs.\n templateExtensions: ['.hbs', '.hbs.js'],\n\n // All of the above only applies to auto-upgraded packages that were\n // authored in v1. V2 packages don't get any of this complexity, they're\n // supposed to take care of colocating their own templates explicitly.\n packageGuard: true,\n };\n babel.plugins.push([templateColocationPluginPath, colocationOptions]);\n\n babel.plugins.push([\n require.resolve('./babel-plugin-adjust-imports'),\n (() => {\n let pluginConfig: AdjustImportsOptions = {\n appRoot: resolverConfig.appRoot,\n };\n return pluginConfig;\n })(),\n ]);\n\n // we can use globally shared babel runtime by default\n babel.plugins.push([\n require.resolve('@babel/plugin-transform-runtime'),\n { absoluteRuntime: __dirname, useESModules: true, regenerator: false },\n ]);\n\n const portable = makePortable(babel, { basedir: this.origAppPackage.root }, this.portableHints);\n addCachablePlugin(portable.config);\n return portable;\n }\n\n // recurse to find all active addons that don't cross an engine boundary.\n // Inner engines themselves will be returned, but not those engines' children.\n // The output set's insertion order is the proper ember-cli compatible\n // ordering of the addons.\n private findActiveAddons(pkg: Package, engine: Engine, isChild = false): void {\n for (let child of this.activeAddonChildren(pkg)) {\n if (!child.isEngine()) {\n this.findActiveAddons(child, engine, true);\n }\n let canResolveFrom = resolvePath(pkg.root, 'package.json');\n engine.addons.set(child, canResolveFrom);\n }\n // ensure addons are applied in the correct order, if set (via @embroider/compat/v1-addon)\n if (!isChild) {\n engine.addons = new Map(\n [...engine.addons].sort(([a], [b]) => {\n return (a.meta['order-index'] || 0) - (b.meta['order-index'] || 0);\n })\n );\n }\n }\n\n private partitionEngines(): Engine[] {\n let queue: Engine[] = [\n {\n package: this.appPackageWithMovedDeps,\n addons: new Map(),\n isApp: true,\n modulePrefix: this.modulePrefix(),\n appRelativePath: '.',\n },\n ];\n let done: Engine[] = [];\n let seenEngines: Set<Package> = new Set();\n while (true) {\n let current = queue.shift();\n if (!current) {\n break;\n }\n this.findActiveAddons(current.package, current);\n for (let addon of current.addons.keys()) {\n if (addon.isEngine() && !seenEngines.has(addon)) {\n seenEngines.add(addon);\n queue.push({\n package: addon,\n addons: new Map(),\n isApp: !current,\n modulePrefix: addon.name,\n appRelativePath: explicitRelative(this.origAppPackage.root, addon.root),\n });\n }\n }\n done.push(current);\n }\n return done;\n }\n\n private emberVersion() {\n let pkg = this.activeAddonChildren(this.appPackageWithMovedDeps).find(a => a.name === 'ember-source');\n if (!pkg) {\n throw new Error('no ember version!');\n }\n return pkg.version;\n }\n\n private engines: Engine[] | undefined;\n\n async build() {\n // on the first build, we lock down the macros config. on subsequent builds,\n // this doesn't do anything anyway because it's idempotent.\n this.compatApp.macrosConfig.finalize();\n\n if (!this.engines) {\n this.engines = this.partitionEngines();\n }\n\n let resolverConfig = this.resolverConfig(this.engines);\n let config = this.configTree.readConfig();\n let contentForConfig = this.contentForTree.readContents();\n\n this.addResolverConfig(resolverConfig);\n this.addContentForConfig(contentForConfig);\n this.addEmberEnvConfig(config.EmberENV);\n this.outputAppBootError(config.modulePrefix, config.APP, contentForConfig);\n let babelConfig = await this.babelConfig(resolverConfig);\n this.addBabelConfig(babelConfig);\n this.addMacrosConfig(this.compatApp.macrosConfig.babelPluginConfig()[0]);\n }\n\n private async etcOptions(resolverConfig: CompatResolverOptions): Promise<EtcOptions> {\n let transforms = this.compatApp.htmlbarsPlugins;\n\n let { plugins: macroPlugins, setConfig } = MacrosConfig.transforms();\n setConfig(this.compatApp.macrosConfig);\n for (let macroPlugin of macroPlugins) {\n transforms.push(macroPlugin as any);\n }\n\n if (\n this.options.staticComponents ||\n this.options.staticHelpers ||\n this.options.staticModifiers ||\n (globalThis as any).embroider_audit\n ) {\n let opts: ResolverTransformOptions = {\n appRoot: resolverConfig.appRoot,\n emberVersion: this.emberVersion(),\n };\n transforms.push([require.resolve('./resolver-transform'), opts]);\n }\n\n let resolver = new Resolver(resolverConfig);\n let resolution = await resolver.nodeResolve(\n 'ember-source/vendor/ember/ember-template-compiler',\n resolvePath(this.origAppPackage.root, 'package.json')\n );\n if (resolution.type !== 'real') {\n throw new Error(`bug: unable to resolve ember-template-compiler from ${this.origAppPackage.root}`);\n }\n\n return {\n transforms,\n compilerPath: resolution.filename,\n enableLegacyModules: ['ember-cli-htmlbars', 'ember-cli-htmlbars-inline-precompile', 'htmlbars-inline-precompile'],\n };\n }\n\n @Memoize()\n private get portableHints(): PortableHint[] {\n return this.options.pluginHints.map(hint => {\n let cursor = join(this.origAppPackage.root, 'package.json');\n for (let i = 0; i < hint.resolve.length; i++) {\n let target = hint.resolve[i];\n if (i < hint.resolve.length - 1) {\n target = join(target, 'package.json');\n }\n cursor = resolve.sync(target, { basedir: dirname(cursor) });\n }\n\n return {\n requireFile: cursor,\n useMethod: hint.useMethod,\n packageVersion: maybeNodeModuleVersion(cursor),\n };\n });\n }\n\n private addBabelConfig(pconfig: { config: TransformOptions; isParallelSafe: boolean }) {\n if (!pconfig.isParallelSafe) {\n warn('Your build is slower because some babel plugins are non-serializable');\n }\n writeFileSync(\n join(locateEmbroiderWorkingDir(this.compatApp.root), '_babel_config_.js'),\n `module.exports = ${JSON.stringify(pconfig.config, null, 2)}`,\n 'utf8'\n );\n writeFileSync(\n join(locateEmbroiderWorkingDir(this.compatApp.root), '_babel_filter_.js'),\n babelFilterTemplate({ skipBabel: this.options.skipBabel, appRoot: this.origAppPackage.root }),\n 'utf8'\n );\n }\n\n private addResolverConfig(config: CompatResolverOptions) {\n outputJSONSync(join(locateEmbroiderWorkingDir(this.compatApp.root), 'resolver.json'), config, { spaces: 2 });\n }\n\n private addContentForConfig(contentForConfig: any) {\n outputJSONSync(join(locateEmbroiderWorkingDir(this.compatApp.root), 'content-for.json'), contentForConfig, {\n spaces: 2,\n });\n\n // In addition to outputting content-for.json, we also want to check if content-for 'config-module' has a custom content.\n // If so, it means some classic addons used to provide this custom content, which is no longer supported.\n // Developers can deactivate this check (and the subsequent warning) with useAddonConfigModule\n if (this.compatApp.options.useAddonConfigModule) {\n let modulePrefix = this.configTree.readConfig().modulePrefix;\n\n // This is the default script provided by https://github.com/ember-cli/ember-cli/blob/master/lib/utilities/ember-app-utils.js#L84\n // When storeConfigInMeta is true, this content is always present in the config-module key of content-for.json\n const defaultConfigModule =\n `var prefix = '${modulePrefix}';\\ntry {\\n var metaName = prefix + '/config/environment';\\n var rawConfig = document.querySelector('meta[name=\\\"' + metaName + '\\\"]').getAttribute('content');\\n var config = JSON.parse(decodeURIComponent(rawConfig));\\n\\n var exports = { 'default': config };\\n\\n Object.defineProperty(exports, '__esModule', { value: true });\\n\\n return exports;\\n}\\ncatch(err) {\\n throw new Error('Could not read config from meta tag with name \\\"' + metaName + '\\\".');\\n}\\n`.replace(\n /\\s/g,\n ''\n );\n\n const configModule = contentForConfig['/index.html']['config-module'];\n const diff = configModule.replace(/\\s/g, '').replace(defaultConfigModule, '');\n\n if (diff.length) {\n throw new Error(`\n Your app uses at least one classic addon that provides content-for 'config-module'. This is no longer supported.\n With Embroider, you have full control over the config module, so classic addons no longer need to modify it under the hood.\n The following code is included via content-for 'config-module':\n\n ${configModule}\n\n 1. If you want to keep the same behavior, add it to the app/environment.js.\n 2. Once app/environment.js has the content you need, remove the present error by setting \"useAddonConfigModule\" to false in the build options.\n `);\n }\n }\n }\n\n private addEmberEnvConfig(emberEnvConfig: any) {\n outputJSONSync(join(locateEmbroiderWorkingDir(this.compatApp.root), 'ember-env.json'), emberEnvConfig, {\n spaces: 2,\n });\n }\n\n private addMacrosConfig(macrosConfig: any) {\n outputJSONSync(join(locateEmbroiderWorkingDir(this.compatApp.root), 'macros-config.json'), macrosConfig, {\n spaces: 2,\n });\n }\n\n // Classic addons providing custom content-for \"app-boot\" is no longer supported.\n // The purpose of this error message is to help developers to move the classic addons code.\n // Developers can deactivate it with useAddonAppBoot build option.\n private outputAppBootError(modulePrefix: string, appConfig: any, contentForConfig: any) {\n if (!this.compatApp.options.useAddonAppBoot) {\n return;\n }\n\n // This is the default script provided by\n // https://github.com/ember-cli/ember-cli/blob/master/lib/utilities/ember-app-utils.js#L103\n const defaultAppBoot = `\n if (!runningTests) {\n require(\"${modulePrefix}/app\")[\"default\"].create(${JSON.stringify(appConfig || {})});\n }\n `.replace(/\\s/g, '');\n\n const appBoot = contentForConfig['/index.html']['app-boot'];\n const diff = appBoot.replace(/\\s/g, '').replace(defaultAppBoot, '');\n\n if (diff.length) {\n throw new Error(`\n Your app uses at least one classic addon that provides content-for 'app-boot'. This is no longer supported.\n With Embroider, you have full control over the app-boot script, so classic addons no longer need to modify it under the hood.\n The following code is used for your app boot:\n\n ${appBoot}\n\n 1. If you want to keep the same behavior, copy and paste it to the app-boot script included in app/index.html.\n 2. Once app/index.html has the content you need, remove the present error by setting \"useAddonAppBoot\" to false in the build options.\n `);\n }\n }\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\nconst babelFilterTemplate = jsHandlebarsCompile(`\nconst { babelFilter } = require(${JSON.stringify(require.resolve('@embroider/core'))});\nmodule.exports = babelFilter({{json-stringify skipBabel}}, \"{{js-string-escape appRoot}}\");\n`) as (params: { skipBabel: Options['skipBabel']; appRoot: string }) => string;\n\nfunction addCachablePlugin(babelConfig: TransformOptions) {\n if (Array.isArray(babelConfig.plugins) && babelConfig.plugins.length > 0) {\n const plugins = Object.create(null);\n plugins[cacheBustingPluginPath] = cacheBustingPluginVersion;\n\n for (const plugin of babelConfig.plugins) {\n let absolutePathToPlugin: string;\n if (Array.isArray(plugin) && typeof plugin[0] === 'string') {\n absolutePathToPlugin = plugin[0] as string;\n } else if (typeof plugin === 'string') {\n absolutePathToPlugin = plugin;\n } else {\n throw new Error(`[Embroider] a babel plugin without an absolute path was from: ${plugin}`);\n }\n\n plugins[absolutePathToPlugin] = maybeNodeModuleVersion(absolutePathToPlugin);\n }\n\n babelConfig.plugins.push([\n cacheBustingPluginPath,\n {\n plugins,\n },\n ]);\n }\n}\n"]}
1
+ {"version":3,"file":"compat-app-builder.js","sourceRoot":"","sources":["compat-app-builder.ts"],"names":[],"mappings":";;;;;;;;;;;;AACA,0CAA4D;AAI5D,yDAAwD;AACxD,uCAAyD;AAEzD,2DAAgF;AAChF,2DAA6C;AAC7C,+BAAqC;AACrC,sDAA8B;AAI9B,uCAAuC;AAIvC,qDAA0D;AAC1D,yFAAmF;AAEnF,8EAA8E;AAC9E,uDAAuD;AAEvD,MAAa,gBAAgB;IAC3B,YACU,cAAuB,EACvB,uBAAgC,EAChC,OAA0B,EAC1B,SAAoB,EACpB,UAAoB,EACpB,cAAgC,EAChC,WAAoB,EACpB,WAAoB;QAPpB,mBAAc,GAAd,cAAc,CAAS;QACvB,4BAAuB,GAAvB,uBAAuB,CAAS;QAChC,YAAO,GAAP,OAAO,CAAmB;QAC1B,cAAS,GAAT,SAAS,CAAW;QACpB,eAAU,GAAV,UAAU,CAAU;QACpB,mBAAc,GAAd,cAAc,CAAkB;QAChC,gBAAW,GAAX,WAAW,CAAS;QACpB,gBAAW,GAAX,WAAW,CAAS;IAC3B,CAAC;IAEI,YAAY;QAClB,OAAO,IAAI,CAAC,UAAU,CAAC,UAAU,EAAE,CAAC,YAAY,CAAC;IACnD,CAAC;IAEO,eAAe;QACrB,OAAO,IAAI,CAAC,UAAU,CAAC,UAAU,EAAE,CAAC,eAAe,CAAC;IACtD,CAAC;IAGD,IAAY,cAAc;QACxB,OAAO,IAAA,8CAAoB,EAAC;YAC1B,UAAU,EAAE,IAAI,CAAC,uBAAuB;YACxC,YAAY,EAAE,IAAI,CAAC,YAAY,EAAE;YACjC,eAAe,EAAE,IAAI,CAAC,eAAe,EAAE;YACvC,aAAa,EAAE,IAAI,CAAC,OAAO,CAAC,aAAa;YACzC,cAAc,EAAE,IAAI,CAAC,OAAO,CAAC,cAAc;YAC3C,SAAS,EAAE,IAAI,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,uBAAuB,CAAC,IAAI,EAAE,CAAC,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,WAAW,CAAmB,CAAC,CAAC,CAAC;YACjH,MAAM,EAAE,CAAC,OAA8B,EAAE,eAAe,EAAE,EAAE;gBAC1D,OAAO,CAAC,kBAAkB,GAAG,IAAA,qCAAkB,EAAC,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,MAAM,CAAC,wBAAwB,EAAE,CAAC,EAAE;oBAC5G,EAAE,IAAI,EAAE,IAAI,CAAC,cAAc,CAAC,IAAI,EAAE,OAAO,EAAE,IAAI,CAAC,cAAc,CAAC,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,cAAc,CAAC,IAAI,EAAE;oBACxG,GAAG,eAAe,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;iBACxD,CAAC,CAAC;gBACH,OAAO,CAAC,OAAO,GAAG;oBAChB,aAAa,EAAE,IAAI,CAAC,OAAO,CAAC,aAAa;oBACzC,eAAe,EAAE,IAAI,CAAC,OAAO,CAAC,eAAe;oBAC7C,gBAAgB,EAAE,IAAI,CAAC,OAAO,CAAC,gBAAgB;oBAC/C,4BAA4B,EAAE,IAAI,CAAC,OAAO,CAAC,4BAA4B;iBACxE,CAAC;gBACF,OAAO,OAAO,CAAC;YACjB,CAAC;SACF,CAAC,CAAC;IACL,CAAC;IAED,KAAK,CAAC,KAAK;QACT,4EAA4E;QAC5E,2DAA2D;QAC3D,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,QAAQ,EAAE,CAAC;QAEvC,IAAI,cAAc,GAAG,IAAI,CAAC,cAAc,CAAC;QACzC,IAAI,MAAM,GAAG,IAAI,CAAC,UAAU,CAAC,UAAU,EAAE,CAAC;QAC1C,IAAI,gBAAgB,GAAG,IAAI,CAAC,cAAc,CAAC,YAAY,EAAE,CAAC;QAE1D,IAAI,CAAC,iBAAiB,CAAC,cAAc,CAAC,CAAC;QACvC,IAAI,CAAC,mBAAmB,CAAC,gBAAgB,CAAC,CAAC;QAC3C,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;QACxC,IAAI,CAAC,kBAAkB,CAAC,MAAM,CAAC,YAAY,EAAE,MAAM,CAAC,GAAG,EAAE,gBAAgB,CAAC,CAAC;QAC3E,IAAI,CAAC,cAAc,EAAE,CAAC;IACxB,CAAC;IAGD,IAAY,aAAa;QACvB,OAAO,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE;YACzC,IAAI,MAAM,GAAG,IAAA,WAAI,EAAC,IAAI,CAAC,cAAc,CAAC,IAAI,EAAE,cAAc,CAAC,CAAC;YAC5D,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;gBAC7C,IAAI,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;gBAC7B,IAAI,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;oBAChC,MAAM,GAAG,IAAA,WAAI,EAAC,MAAM,EAAE,cAAc,CAAC,CAAC;gBACxC,CAAC;gBACD,MAAM,GAAG,iBAAO,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE,OAAO,EAAE,IAAA,cAAO,EAAC,MAAM,CAAC,EAAE,CAAC,CAAC;YAC9D,CAAC;YAED,OAAO;gBACL,WAAW,EAAE,MAAM;gBACnB,SAAS,EAAE,IAAI,CAAC,SAAS;gBACzB,cAAc,EAAE,IAAA,iCAAsB,EAAC,MAAM,CAAC;aAC/C,CAAC;QACJ,CAAC,CAAC,CAAC;IACL,CAAC;IAEO,cAAc;QACpB,IAAI,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,iBAAiB,EAAE,CAAC;QACjD,IAAI,kBAAkB,GAAG,IAAI,CAAC,SAAS,CAAC,eAAe,CAAC;QACxD,IAAI,WAAW,GAAG,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,iBAAiB,EAAE,CAAC;QAClE,IAAI,EAAE,OAAO,EAAE,cAAc,EAAE,SAAS,EAAE,GAAG,mBAAY,CAAC,UAAU,EAAE,CAAC;QACvE,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,CAAC;QAEvC,IAAI,MAAM,GAAqB;YAC7B,OAAO;YACP,kBAAkB;YAClB,WAAW;YACX,cAAc,EAAE,cAAqB;SACtC,CAAC;QAEF,IAAI,cAAc,GAAG,IAAI,mBAAQ,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,aAAa,EAAE,CAAC,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;QACnF,IAAI,CAAC,cAAc,CAAC,cAAc,EAAE,CAAC;YACnC,MAAM,IAAI,KAAK,CAAC,mEAAmE,CAAC,CAAC;QACvF,CAAC;QAED,IAAA,wBAAa,EACX,IAAA,WAAI,EAAC,IAAA,gCAAyB,EAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,mBAAmB,CAAC,EACzE;;gDAE0C,IAAI,CAAC,SAAS,CAAC,cAAc,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;OACtF,EACD,MAAM,CACP,CAAC;IACJ,CAAC;IAEO,iBAAiB,CAAC,MAA6B;QACrD,IAAA,yBAAc,EAAC,IAAA,WAAI,EAAC,IAAA,gCAAyB,EAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,eAAe,CAAC,EAAE,MAAM,EAAE,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC,CAAC;IAC/G,CAAC;IAEO,mBAAmB,CAAC,gBAAqB;QAC/C,IAAA,yBAAc,EAAC,IAAA,WAAI,EAAC,IAAA,gCAAyB,EAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,kBAAkB,CAAC,EAAE,gBAAgB,EAAE;YACzG,MAAM,EAAE,CAAC;SACV,CAAC,CAAC;QAEH,yHAAyH;QACzH,yGAAyG;QACzG,8FAA8F;QAC9F,IAAI,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,oBAAoB,EAAE,CAAC;YAChD,IAAI,YAAY,GAAG,IAAI,CAAC,UAAU,CAAC,UAAU,EAAE,CAAC,YAAY,CAAC;YAE7D,iIAAiI;YACjI,8GAA8G;YAC9G,MAAM,mBAAmB,GACvB,iBAAiB,YAAY,kdAAkd,CAAC,OAAO,CACrf,KAAK,EACL,EAAE,CACH,CAAC;YAEJ,MAAM,YAAY,GAAG,gBAAgB,CAAC,aAAa,CAAC,CAAC,eAAe,CAAC,CAAC;YACtE,MAAM,IAAI,GAAG,YAAY,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,mBAAmB,EAAE,EAAE,CAAC,CAAC;YAE9E,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;gBAChB,MAAM,IAAI,KAAK,CAAC;;;;;YAKZ,YAAY;;;;SAIf,CAAC,CAAC;YACL,CAAC;QACH,CAAC;IACH,CAAC;IAEO,iBAAiB,CAAC,cAAmB;QAC3C,IAAA,yBAAc,EAAC,IAAA,WAAI,EAAC,IAAA,gCAAyB,EAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,gBAAgB,CAAC,EAAE,cAAc,EAAE;YACrG,MAAM,EAAE,CAAC;SACV,CAAC,CAAC;IACL,CAAC;IAED,iFAAiF;IACjF,2FAA2F;IAC3F,kEAAkE;IAC1D,kBAAkB,CAAC,YAAoB,EAAE,SAAc,EAAE,gBAAqB;QACpF,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,eAAe,EAAE,CAAC;YAC5C,OAAO;QACT,CAAC;QAED,yCAAyC;QACzC,2FAA2F;QAC3F,MAAM,cAAc,GAAG;;mBAER,YAAY,4BAA4B,IAAI,CAAC,SAAS,CAAC,SAAS,IAAI,EAAE,CAAC;;KAErF,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;QAErB,MAAM,OAAO,GAAG,gBAAgB,CAAC,aAAa,CAAC,CAAC,UAAU,CAAC,CAAC;QAC5D,MAAM,IAAI,GAAG,OAAO,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,cAAc,EAAE,EAAE,CAAC,CAAC;QAEpE,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;YAChB,MAAM,IAAI,KAAK,CAAC;;;;;UAKZ,OAAO;;;;OAIV,CAAC,CAAC;QACL,CAAC;IACH,CAAC;CACF;AA7LD,4CA6LC;AAxKC;IADC,IAAA,4BAAO,GAAE;sDAuBT;AAmBD;IADC,IAAA,4BAAO,GAAE;qDAkBT;AAgHH,SAAS,wBAAwB;IAC/B,OAAO,IAAA,sBAAW,EAAC,IAAA,WAAI,EAAC,SAAS,EAAE,wBAAwB,CAAC,CAAC;SAC1D,GAAG,CAAC,QAAQ,CAAC,EAAE;QACd,IAAI,QAAQ,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;YAC7B,iEAAiE;YACjE,OAAO,OAAO,CAAC,IAAA,WAAI,EAAC,SAAS,EAAE,wBAAwB,EAAE,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC;QAC9E,CAAC;IACH,CAAC,CAAC;SACD,MAAM,CAAC,OAAO,CAAC;SACf,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;AACvC,CAAC","sourcesContent":["import type { AddonPackage } from '@embroider/core';\nimport { locateEmbroiderWorkingDir } from '@embroider/core';\nimport type Options from './options';\nimport type { CompatResolverOptions } from './resolver-transform';\nimport type { PackageRules } from './dependency-rules';\nimport { activePackageRules } from './dependency-rules';\nimport { outputJSONSync, writeFileSync } from 'fs-extra';\nimport type { PortableHint } from '@embroider/core/src/portable';\nimport { maybeNodeModuleVersion, Portable } from '@embroider/core/src/portable';\nimport { Memoize } from 'typescript-memoize';\nimport { join, dirname } from 'path';\nimport resolve from 'resolve';\nimport type ContentForConfig from './content-for-config';\nimport type { V1Config } from './v1-config';\nimport type { Package } from '@embroider/core';\nimport { readdirSync } from 'fs-extra';\n\nimport type CompatApp from './compat-app';\nimport type { CompatBabelState } from './babel';\nimport { MacrosConfig } from '@embroider/macros/src/node';\nimport { buildResolverOptions } from '@embroider/core/src/module-resolver-options';\n\n// This exists during the actual broccoli build step. As opposed to CompatApp,\n// which also exists during pipeline-construction time.\n\nexport class CompatAppBuilder {\n constructor(\n private origAppPackage: Package,\n private appPackageWithMovedDeps: Package,\n private options: Required<Options>,\n private compatApp: CompatApp,\n private configTree: V1Config,\n private contentForTree: ContentForConfig,\n private synthVendor: Package,\n private synthStyles: Package\n ) {}\n\n private modulePrefix(): string {\n return this.configTree.readConfig().modulePrefix;\n }\n\n private podModulePrefix(): string | undefined {\n return this.configTree.readConfig().podModulePrefix;\n }\n\n @Memoize()\n private get resolverConfig(): CompatResolverOptions {\n return buildResolverOptions({\n appPackage: this.appPackageWithMovedDeps,\n modulePrefix: this.modulePrefix(),\n podModulePrefix: this.podModulePrefix(),\n splitAtRoutes: this.options.splitAtRoutes,\n staticAppPaths: this.options.staticAppPaths,\n extraDeps: new Map([[this.appPackageWithMovedDeps.root, [this.synthVendor, this.synthStyles] as AddonPackage[]]]),\n extend: (options: CompatResolverOptions, allActiveAddons) => {\n options.activePackageRules = activePackageRules(this.options.packageRules.concat(defaultAddonPackageRules()), [\n { name: this.origAppPackage.name, version: this.origAppPackage.version, root: this.origAppPackage.root },\n ...allActiveAddons.filter(p => p.meta['auto-upgraded']),\n ]);\n options.options = {\n staticHelpers: this.options.staticHelpers,\n staticModifiers: this.options.staticModifiers,\n staticComponents: this.options.staticComponents,\n allowUnsafeDynamicComponents: this.options.allowUnsafeDynamicComponents,\n };\n return options;\n },\n });\n }\n\n async build() {\n // on the first build, we lock down the macros config. on subsequent builds,\n // this doesn't do anything anyway because it's idempotent.\n this.compatApp.macrosConfig.finalize();\n\n let resolverConfig = this.resolverConfig;\n let config = this.configTree.readConfig();\n let contentForConfig = this.contentForTree.readContents();\n\n this.addResolverConfig(resolverConfig);\n this.addContentForConfig(contentForConfig);\n this.addEmberEnvConfig(config.EmberENV);\n this.outputAppBootError(config.modulePrefix, config.APP, contentForConfig);\n this.addBabelCompat();\n }\n\n @Memoize()\n private get portableHints(): PortableHint[] {\n return this.options.pluginHints.map(hint => {\n let cursor = join(this.origAppPackage.root, 'package.json');\n for (let i = 0; i < hint.resolve.length; i++) {\n let target = hint.resolve[i];\n if (i < hint.resolve.length - 1) {\n target = join(target, 'package.json');\n }\n cursor = resolve.sync(target, { basedir: dirname(cursor) });\n }\n\n return {\n requireFile: cursor,\n useMethod: hint.useMethod,\n packageVersion: maybeNodeModuleVersion(cursor),\n };\n });\n }\n\n private addBabelCompat() {\n let plugins = this.compatApp.extraBabelPlugins();\n let templateTransforms = this.compatApp.htmlbarsPlugins;\n let babelMacros = this.compatApp.macrosConfig.babelPluginConfig();\n let { plugins: templateMacros, setConfig } = MacrosConfig.transforms();\n setConfig(this.compatApp.macrosConfig);\n\n let config: CompatBabelState = {\n plugins,\n templateTransforms,\n babelMacros,\n templateMacros: templateMacros as any,\n };\n\n let portableConfig = new Portable({ hints: this.portableHints }).dehydrate(config);\n if (!portableConfig.isParallelSafe) {\n throw new Error(`non-serializble babel plugins or AST transforms found in your app`);\n }\n\n writeFileSync(\n join(locateEmbroiderWorkingDir(this.compatApp.root), '_babel_compat_.js'),\n `\n const { Portable } = require('@embroider/core/src/portable');\n module.exports = new Portable().hydrate(${JSON.stringify(portableConfig.value, null, 2)});\n `,\n 'utf8'\n );\n }\n\n private addResolverConfig(config: CompatResolverOptions) {\n outputJSONSync(join(locateEmbroiderWorkingDir(this.compatApp.root), 'resolver.json'), config, { spaces: 2 });\n }\n\n private addContentForConfig(contentForConfig: any) {\n outputJSONSync(join(locateEmbroiderWorkingDir(this.compatApp.root), 'content-for.json'), contentForConfig, {\n spaces: 2,\n });\n\n // In addition to outputting content-for.json, we also want to check if content-for 'config-module' has a custom content.\n // If so, it means some classic addons used to provide this custom content, which is no longer supported.\n // Developers can deactivate this check (and the subsequent warning) with useAddonConfigModule\n if (this.compatApp.options.useAddonConfigModule) {\n let modulePrefix = this.configTree.readConfig().modulePrefix;\n\n // This is the default script provided by https://github.com/ember-cli/ember-cli/blob/master/lib/utilities/ember-app-utils.js#L84\n // When storeConfigInMeta is true, this content is always present in the config-module key of content-for.json\n const defaultConfigModule =\n `var prefix = '${modulePrefix}';\\ntry {\\n var metaName = prefix + '/config/environment';\\n var rawConfig = document.querySelector('meta[name=\\\"' + metaName + '\\\"]').getAttribute('content');\\n var config = JSON.parse(decodeURIComponent(rawConfig));\\n\\n var exports = { 'default': config };\\n\\n Object.defineProperty(exports, '__esModule', { value: true });\\n\\n return exports;\\n}\\ncatch(err) {\\n throw new Error('Could not read config from meta tag with name \\\"' + metaName + '\\\".');\\n}\\n`.replace(\n /\\s/g,\n ''\n );\n\n const configModule = contentForConfig['/index.html']['config-module'];\n const diff = configModule.replace(/\\s/g, '').replace(defaultConfigModule, '');\n\n if (diff.length) {\n throw new Error(`\n Your app uses at least one classic addon that provides content-for 'config-module'. This is no longer supported.\n With Embroider, you have full control over the config module, so classic addons no longer need to modify it under the hood.\n The following code is included via content-for 'config-module':\n\n ${configModule}\n\n 1. If you want to keep the same behavior, add it to the app/environment.js.\n 2. Once app/environment.js has the content you need, remove the present error by setting \"useAddonConfigModule\" to false in the build options.\n `);\n }\n }\n }\n\n private addEmberEnvConfig(emberEnvConfig: any) {\n outputJSONSync(join(locateEmbroiderWorkingDir(this.compatApp.root), 'ember-env.json'), emberEnvConfig, {\n spaces: 2,\n });\n }\n\n // Classic addons providing custom content-for \"app-boot\" is no longer supported.\n // The purpose of this error message is to help developers to move the classic addons code.\n // Developers can deactivate it with useAddonAppBoot build option.\n private outputAppBootError(modulePrefix: string, appConfig: any, contentForConfig: any) {\n if (!this.compatApp.options.useAddonAppBoot) {\n return;\n }\n\n // This is the default script provided by\n // https://github.com/ember-cli/ember-cli/blob/master/lib/utilities/ember-app-utils.js#L103\n const defaultAppBoot = `\n if (!runningTests) {\n require(\"${modulePrefix}/app\")[\"default\"].create(${JSON.stringify(appConfig || {})});\n }\n `.replace(/\\s/g, '');\n\n const appBoot = contentForConfig['/index.html']['app-boot'];\n const diff = appBoot.replace(/\\s/g, '').replace(defaultAppBoot, '');\n\n if (diff.length) {\n throw new Error(`\n Your app uses at least one classic addon that provides content-for 'app-boot'. This is no longer supported.\n With Embroider, you have full control over the app-boot script, so classic addons no longer need to modify it under the hood.\n The following code is used for your app boot:\n\n ${appBoot}\n\n 1. If you want to keep the same behavior, copy and paste it to the app-boot script included in app/index.html.\n 2. Once app/index.html has the content you need, remove the present error by setting \"useAddonAppBoot\" to false in the build options.\n `);\n }\n }\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"]}
@@ -3,7 +3,7 @@ import type { Stage, Package } from '@embroider/core';
3
3
  import type Options from './options';
4
4
  import { V1Config } from './v1-config';
5
5
  import type { EmberAppInstance } from '@embroider/core';
6
- import type { TransformOptions } from '@babel/core';
6
+ import type { PluginItem } from '@babel/core';
7
7
  import { MacrosConfig } from '@embroider/macros/src/node';
8
8
  import type { Transform } from 'babel-plugin-ember-template-compilation';
9
9
  export default class CompatApp {
@@ -35,7 +35,7 @@ export default class CompatApp {
35
35
  private get storeConfigInMeta();
36
36
  private get configReplacePatterns();
37
37
  private get filteredPatternsByContentFor();
38
- babelConfig(): TransformOptions;
38
+ extraBabelPlugins(): PluginItem[];
39
39
  babelMajorVersion(): 7;
40
40
  private transformedNodeFiles;
41
41
  private preresolvedNodeFile;
package/src/compat-app.js CHANGED
@@ -142,56 +142,29 @@ class CompatApp {
142
142
  others: this.configReplacePatterns.filter((pattern) => !filter.includes(pattern.match.toString())),
143
143
  };
144
144
  }
145
- babelConfig() {
146
- // this finds all the built-in babel configuration that comes with ember-cli-babel
147
- const babelAddon = this.legacyEmberAppInstance.project.findAddonByName('ember-cli-babel');
148
- const babelConfig = babelAddon.buildBabelOptions({
149
- 'ember-cli-babel': {
150
- ...this.legacyEmberAppInstance.options['ember-cli-babel'],
151
- includeExternalHelpers: true,
152
- compileModules: false,
153
- disableDebugTooling: false,
154
- disablePresetEnv: false,
155
- disableEmberModulesAPIPolyfill: false,
156
- },
157
- });
158
- let plugins = babelConfig.plugins;
159
- let presets = babelConfig.presets;
160
- // this finds any custom babel configuration that's on the app (either
161
- // because the app author explicitly added some, or because addons have
162
- // pushed plugins into it).
145
+ extraBabelPlugins() {
146
+ // this finds any custom babel plugins on the app (either because the app
147
+ // author explicitly added some, or because addons have pushed plugins into
148
+ // it).
163
149
  let appBabel = this.legacyEmberAppInstance.options.babel;
164
150
  if (appBabel) {
165
151
  if (appBabel.plugins) {
166
- plugins = appBabel.plugins.concat(plugins);
167
- }
168
- if (appBabel.presets) {
169
- presets = appBabel.presets.concat(presets);
152
+ return appBabel.plugins.filter(p => {
153
+ // even if the app was using @embroider/macros, we drop it from the config
154
+ // here in favor of our globally-configured one.
155
+ return (!(0, node_1.isEmbroiderMacrosPlugin)(p) &&
156
+ // similarly, if the app was already using an inline template compiler
157
+ // babel plugin, we remove it here because we have our own
158
+ // always-installed version of that (v2 addons are allowed to assume it
159
+ // will be present in the final app build, the app doesn't get to turn
160
+ // that off or configure it.)
161
+ !(0, detect_babel_plugins_1.isInlinePrecompilePlugin)(p) &&
162
+ !(0, detect_babel_plugins_1.isEmberAutoImportDynamic)(p) &&
163
+ !(0, detect_babel_plugins_1.isHtmlbarColocation)(p));
164
+ });
170
165
  }
171
166
  }
172
- plugins = plugins.filter(p => {
173
- // even if the app was using @embroider/macros, we drop it from the config
174
- // here in favor of our globally-configured one.
175
- return (!(0, node_1.isEmbroiderMacrosPlugin)(p) &&
176
- // similarly, if the app was already using an inline template compiler
177
- // babel plugin, we remove it here because we have our own
178
- // always-installed version of that (v2 addons are allowed to assume it
179
- // will be present in the final app build, the app doesn't get to turn
180
- // that off or configure it.)
181
- !(0, detect_babel_plugins_1.isInlinePrecompilePlugin)(p) &&
182
- !(0, detect_babel_plugins_1.isEmberAutoImportDynamic)(p));
183
- });
184
- const config = {
185
- babelrc: false,
186
- plugins,
187
- presets,
188
- // this is here because broccoli-middleware can't render a codeFrame full
189
- // of terminal codes. It would be nice to add something like
190
- // https://github.com/mmalecki/ansispan to broccoli-middleware so we can
191
- // leave color enabled.
192
- highlightCode: false,
193
- };
194
- return config;
167
+ return [];
195
168
  }
196
169
  babelMajorVersion() {
197
170
  var _a, _b;
@@ -602,7 +575,7 @@ __decorate([
602
575
  ], CompatApp.prototype, "configReplacePatterns", null);
603
576
  __decorate([
604
577
  (0, typescript_memoize_1.Memoize)()
605
- ], CompatApp.prototype, "babelConfig", null);
578
+ ], CompatApp.prototype, "extraBabelPlugins", null);
606
579
  __decorate([
607
580
  (0, typescript_memoize_1.Memoize)()
608
581
  ], CompatApp.prototype, "babelMajorVersion", null);
@@ -1 +1 @@
1
- {"version":3,"file":"compat-app.js","sourceRoot":"","sources":["compat-app.ts"],"names":[],"mappings":";;;;;;;;;;;AAEA,0CAA+G;AAE/G,uCAAgD;AAChD,2DAA6C;AAC7C,mCAA2C;AAC3C,+BAAsD;AACtD,sEAA0C;AAC1C,gFAA8C;AAC9C,qDAA6C;AAC7C,sDAA8B;AAC9B,8EAAoD;AACpD,2CAAuC;AAEvC,uCAA6G;AAC7G,gEAAsC;AACtC,oEAA2C;AAE3C,qDAAmF;AACnF,gFAAsD;AACtD,sEAAqC;AACrC,6DAAqC;AACrC,iEAA4F;AAC5F,kGAA4D;AAC5D,2BAAkC;AAClC,oDAA4B;AAE5B,6DAAwD;AACxD,0DAAiC;AAQjC,gEAAgE;AAChE,8EAA8E;AAC9E,MAAqB,SAAS;IAS5B,IAAY,OAAO;;QACjB,OAAO,MAAA,MAAA,IAAI,CAAC,sBAAsB,CAAC,OAAO,CAAC,GAAG,CAAC,QAAQ,0CAAE,QAAQ,CAAC,aAAa,CAAC,mCAAI,KAAK,CAAC;IAC5F,CAAC;IAED,IAAI,IAAI;QACN,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;YACjB,wCAAwC;YACxC,OAAO,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC;QAC1C,CAAC;aAAM,CAAC;YACN,4EAA4E;YAC5E,cAAc;YACd,OAAO,IAAI,CAAC,sBAAsB,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC;QACtD,CAAC;IACH,CAAC;IAED,IAAI,GAAG;QACL,OAAO,IAAI,CAAC,sBAAsB,CAAC,GAAG,CAAC;IACzC,CAAC;IAGD,IAAI,IAAI;QACN,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;YACjB,qEAAqE;YACrE,OAAO,IAAA,WAAI,EAAC,IAAI,CAAC,sBAAsB,CAAC,OAAO,CAAC,UAAU,EAAE,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;QAC5E,CAAC;aAAM,CAAC;YACN,OAAO,IAAA,cAAO,EAAC,IAAA,aAAS,EAAC,EAAE,GAAG,EAAE,IAAI,CAAC,sBAAsB,CAAC,OAAO,CAAC,IAAI,EAAE,CAAE,CAAC,CAAC;QAChF,CAAC;IACH,CAAC;IAGD,IAAY,gBAAgB;QAC1B,MAAM,eAAe,GAAG,IAAA,8BAAkB,EAAC,WAAW,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;QAEnE,IAAI,eAAe,KAAK,IAAI,EAAE,CAAC;YAC7B,MAAM,IAAI,KAAK,CAAC,oDAAoD,CAAC,CAAC;QACxE,CAAC;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,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,sBAAsB,CAAC,KAAK,IAAI,KAAK,CAAC;IACpD,CAAC;IAED,UAAU;QACR,OAAO,IAAI,CAAC,sBAAsB,CAAC,OAAO,CAAC,UAAU,EAAE,CAAC;IAC1D,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,sBAAsB,CAAC,GAAG;YACpC,KAAK,EAAE,IAAI,CAAC,sBAAsB,CAAC,KAAK,IAAI,KAAK;YACjD,OAAO,EAAE,IAAI,CAAC,sBAAsB,CAAC,OAAO;SAC7C,CAAC,CAAC;IACL,CAAC;IAGD,IAAY,MAAM;QAChB,OAAO,IAAI,oBAAQ,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,sBAAsB,CAAC,GAAG,CAAC,CAAC;IACxE,CAAC;IAGD,IAAI,UAAU;QACZ,IAAI,IAAI,CAAC,gBAAgB,EAAE,CAAC;YAC1B,OAAO,IAAI,oBAAQ,CAAC,IAAI,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC;QAC/C,CAAC;IACH,CAAC;IAGD,IAAY,UAAU;QACpB,MAAM,WAAW,GAAG;YAClB,EAAE,IAAI,EAAE,aAAa,EAAE,IAAI,EAAE,IAAA,WAAI,EAAC,cAAc,EAAE,GAAG,IAAI,CAAC,sBAAsB,CAAC,GAAG,OAAO,CAAC,EAAE;SAC/F,CAAC;QACF,IAAI,IAAI,CAAC,gBAAgB;YAAE,WAAW,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,mBAAmB,EAAE,IAAI,EAAE,IAAA,WAAI,EAAC,cAAc,EAAE,WAAW,CAAC,EAAE,CAAC,CAAC;QACpH,OAAO,IAAI,4BAAgB,CAAC,IAAI,CAAC,UAAU,EAAE;YAC3C,wBAAwB,EAAE,IAAI,CAAC,OAAO,CAAC,wBAAwB;YAC/D,WAAW;YACX,OAAO,EAAE,IAAI,CAAC,4BAA4B,CAAC,UAAU;SACtD,CAAC,CAAC;IACL,CAAC;IAED,IAAI,OAAO;QACT,OAAO,IAAI,CAAC,sBAAsB,CAAC,OAAO,CAAC,OAAO,CAAC;IACrD,CAAC;IAED,IAAY,iBAAiB;QAC3B,OAAO,IAAI,CAAC,sBAAsB,CAAC,OAAO,CAAC,iBAAiB,CAAC;IAC/D,CAAC;IAGD,IAAY,qBAAqB;QAC/B,OAAO,IAAI,CAAC,QAAQ,CAAC,qBAAqB,CAAC;YACzC,MAAM,EAAE,IAAI,CAAC,sBAAsB,CAAC,OAAO,CAAC,MAAM;YAClD,OAAO,EAAE,IAAI,CAAC,OAAO;YACrB,iBAAiB,EAAE,IAAI,CAAC,iBAAiB;SAC1C,CAAC,CAAC;IACL,CAAC;IAED,IAAY,4BAA4B;QACtC,MAAM,MAAM,GAAG,oCAAoC,CAAC;QACpD,OAAO;YACL,UAAU,EAAE,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,CAAC,OAAY,EAAE,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC,CAAC;YACxG,MAAM,EAAE,IAAI,CAAC,qBAAqB,CAAC,MAAM,CAAC,CAAC,OAAY,EAAE,EAAE,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC,CAAC;SACxG,CAAC;IACJ,CAAC;IAGD,WAAW;QACT,kFAAkF;QAClF,MAAM,UAAU,GAAI,IAAI,CAAC,sBAAsB,CAAC,OAAe,CAAC,eAAe,CAAC,iBAAiB,CAAC,CAAC;QACnG,MAAM,WAAW,GAAG,UAAU,CAAC,iBAAiB,CAAC;YAC/C,iBAAiB,EAAE;gBACjB,GAAG,IAAI,CAAC,sBAAsB,CAAC,OAAO,CAAC,iBAAiB,CAAC;gBACzD,sBAAsB,EAAE,IAAI;gBAC5B,cAAc,EAAE,KAAK;gBACrB,mBAAmB,EAAE,KAAK;gBAC1B,gBAAgB,EAAE,KAAK;gBACvB,8BAA8B,EAAE,KAAK;aACtC;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,sBAAsB,CAAC,OAAO,CAAC,KAAK,CAAC;QACzD,IAAI,QAAQ,EAAE,CAAC;YACb,IAAI,QAAQ,CAAC,OAAO,EAAE,CAAC;gBACrB,OAAO,GAAG,QAAQ,CAAC,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;YAC7C,CAAC;YACD,IAAI,QAAQ,CAAC,OAAO,EAAE,CAAC;gBACrB,OAAO,GAAG,QAAQ,CAAC,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;YAC7C,CAAC;QACH,CAAC;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,IAAA,+CAAwB,EAAC,CAAC,CAAC;gBAC5B,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,sBAAsB,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAM,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,iBAAiB,CAAC,CAAC;QAC3G,IAAI,UAAU,EAAE,CAAC;YACf,IAAI,eAAe,GAAG,MAAM,CAAC,UAAU,CAAC,GAAG,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YACnE,IAAI,UAAU,GAAuB,eAAe,CAAC;YACrD,IAAI,eAAe,IAAI,CAAC,EAAE,CAAC;gBACzB,kEAAkE;gBAClE,sEAAsE;gBACtE,sCAAsC;gBACtC,IAAI,YAAY,GAAG,MAAA,IAAI,CAAC,sBAAsB,CAAC,OAAO,CAAC,GAAG,CAAC,eAAe,0CAAG,aAAa,CAAC,CAAC;gBAC5F,IAAI,YAAY,EAAE,CAAC;oBACjB,UAAU,GAAG,MAAA,gBAAM,CAAC,MAAM,CAAC,YAAY,CAAC,0CAAE,KAAK,CAAC;gBAClD,CAAC;qBAAM,CAAC;oBACN,UAAU,GAAG,CAAC,CAAC;gBACjB,CAAC;YACH,CAAC;YACD,IAAI,UAAU,KAAK,CAAC,EAAE,CAAC;gBACrB,MAAM,IAAI,KAAK,CAAC,sEAAsE,CAAC,CAAC;YAC1F,CAAC;YACD,OAAO,UAAU,CAAC;QACpB,CAAC;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,sBAAsB,CAAC,oBAAoB,CAAC,MAAM,EAAE,EAAE,CAAC;YACtF,KAAK,IAAI,QAAQ,IAAI,eAAe,CAAC,KAAiB,EAAE,CAAC;gBACvD,IAAI,WAAW,GAAG,IAAI,CAAC,mBAAmB,CAAC,QAAQ,CAAC,CAAC;gBACrD,IAAI,WAAW,EAAE,CAAC;oBAChB,WAAW,CAAC,GAAG,CAAC,QAAQ,EAAE,WAAW,CAAC,CAAC;gBACzC,CAAC;YACH,CAAC;QACH,CAAC;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,CAAC;YACV,mDAAmD;YACnD,wEAAwE;YACxE,KAAK,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,IAAI,CAAC,sBAAsB,CAAC,YAAY,CAAC,MAAM,EAAE,EAAE,CAAC;gBAC7E,IAAI,KAAK,CAAC,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC;oBACtB,OAAO,QAAQ,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,IAAI,GAAG,UAAG,CAAC,CAAC;gBAChD,CAAC;YACH,CAAC;YACD,MAAM,IAAI,KAAK,CAAC,qEAAqE,QAAQ,EAAE,CAAC,CAAC;QACnG,CAAC;IACH,CAAC;IAEO,cAAc,CAAC,UAA0B;QAC/C,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,CAAC;YACpB,KAAK,CAAC,IAAI,CACR,IAAA,yBAAW,EAAC,IAAI,CAAC,UAAU,EAAE;gBAC3B,OAAO,EAAE,QAAQ;aAClB,CAAC,CACH,CAAC;QACJ,CAAC;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,sBAAsB,CAAC,kBAAkB;gBAC3D,WAAW,EAAE,kBAAkB;gBAC/B,gBAAgB,EAAE,IAAI,CAAC,sBAAsB,CAAC,OAAO,CAAC,WAAW,CAAC,MAAM,CAAC,EAAE;aAC5E;YACD,SAAS;YACT;gBACE,WAAW,EAAE,IAAI,CAAC,sBAAsB,CAAC,iBAAiB;gBAC1D,WAAW,EAAE,iBAAiB;gBAC9B,gBAAgB,EAAE,IAAI,CAAC,sBAAsB,CAAC,OAAO,CAAC,WAAW,CAAC,MAAM,CAAC,GAAG;aAC7E;SACF,CAAC;QAEF,MAAM,eAAe,GAAG,EAAE,CAAC;QAE3B,2CAA2C;QAC3C,KAAK,IAAI,KAAK,IAAI,YAAY,EAAE,CAAC;YAC/B,MAAM,EAAE,WAAW,EAAE,WAAW,EAAE,gBAAgB,EAAE,GAAG,KAAK,CAAC;YAC7D,KAAK,IAAI,UAAU,IAAI,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE,CAAC;gBAChD,MAAM,WAAW,GAAG,WAAW,CAAC,UAAU,CAAC,CAAC;gBAE5C,IAAI,UAAU,KAAK,gBAAgB,EAAE,CAAC;oBACpC,4DAA4D;oBAC5D,0CAA0C;oBAC1C,IAAI,CAAC,WAAW,CAAC,GAAG,WAAW,CAAC;gBAClC,CAAC;qBAAM,IAAI,WAAW,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;oBACpC,6CAA6C;oBAC7C,MAAM,IAAI,KAAK,CAAC,iBAAiB,CAAC,CAAC;gBACrC,CAAC;qBAAM,IAAI,WAAW,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;oBACpC,mFAAmF;oBACnF,EAAE;oBACF,kEAAkE;oBAClE,gFAAgF;oBAChF,IAAI,CAAC,aAAa,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,GAAG,UAAU,CAAC;gBAClD,CAAC;qBAAM,CAAC;oBACN,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,sBAAsB,CAAC,OAAO,CAAC,YAAY,CAAC;qBACnE,CAAC,CACH,CAAC;gBACJ,CAAC;YACH,CAAC;QACH,CAAC;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;IAEO,cAAc;QACpB,KAAK,IAAI,KAAK,IAAI,IAAI,CAAC,sBAAsB,CAAC,eAAe,EAAE,CAAC;YAC9D,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;QACnF,CAAC;IACH,CAAC;IAEO,aAAa,CAAC,SAAuB;QAC3C,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,CAAC;gBAC7D,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;YACjC,CAAC;YAED,IAAI,IAAI,CAAC,gBAAgB,EAAE,CAAC;gBAC1B,IAAA,wBAAa,EACX,IAAA,WAAI,EAAC,UAAU,EAAE,WAAW,CAAC,EAC7B;;;;;;;;;;;;;;;;;;GAkBP,CACM,CAAC;gBACF,IAAI,CAAC,aAAa,CAAC,YAAY,CAAC,GAAG,aAAa,CAAC;YACnD,CAAC;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,sBAAsB,CAAC,uBAAuB,CAAC,GAAG,CAAC,UAAU,CAAC;gBAC5F,sBAAsB,EAAE,IAAI,CAAC,sBAAsB,CAAC,sBAAsB,CAAC,GAAG,CAAC,UAAU,CAAC;gBAC1F,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,UAA0B;QAChD,OAAO,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,cAAc,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;IACzF,CAAC;IAEO,cAAc,CAAC,UAA0B;QAC/C,IAAI,KAAK,GAAmB,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAChD,IAAA,yBAAW,EAAC,IAAI,EAAE;YAChB,UAAU,EAAE,IAAI;YAChB,MAAM,EAAE,cAAc;SACvB,CAAC,CACH,CAAC;QACF,IAAI,SAAS,GAAG,IAAI,CAAC,sBAAsB,CAAC,KAAK,CAAC,MAAkC,CAAC;QACrF,IAAI,SAAS,EAAE,CAAC;YACd,oEAAoE;YACpE,EAAE;YACF,sEAAsE;YACtE,sEAAsE;YACtE,sEAAsE;YACtE,gEAAgE;YAChE,IAAK,SAAiB,CAAC,QAAQ,KAAK,KAAK,IAAK,SAAiB,CAAC,cAAc,EAAE,CAAC;gBAC/E,SAAS,GAAG,IAAI,4BAAU,CAAE,SAAiB,CAAC,cAAc,CAAC,CAAC;YAChE,CAAC;YACD,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QACxB,CAAC;QACD,OAAO,IAAA,8BAAU,EAAC,KAAK,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,UAAU,EAAE,kCAAkC,EAAE,CAAC,CAAC;IAChG,CAAC;IAED,uBAAuB,CAAC,UAA0B;QAChD,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,sBAAsB,CAAC,QAAQ;YAC9C,SAAS,EAAE,IAAI,CAAC,sBAAsB,CAAC,OAAO,CAAC,SAAS,CAAC,OAAO;SACjE,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,CAAC;gBAC9B,KAAK,IAAI,IAAI,IAAI,IAAA,mBAAQ,EAAC,SAAS,EAAE,EAAE,WAAW,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC;oBAC7D,SAAS,CAAC,eAAe,CAAE,CAAC,YAAY,IAAI,EAAE,CAAC,GAAG,WAAW,IAAI,EAAE,CAAC;gBACtE,CAAC;YACH,CAAC;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,YAA0B;QACtD,KAAK,IAAI,oBAAoB,IAAI,IAAI,CAAC,sBAAsB,CAAC,oBAAoB,EAAE,CAAC;YAClF,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;QACL,CAAC;QACD,OAAO,YAAY,CAAC;IACtB,CAAC;IAEO,UAAU,CAAC,KAAa;QAC9B,IAAI,IAAI,CAAC,oBAAoB,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC;YAC3C,qEAAqE;YACrE,kDAAkD;YAClD,OAAO,IAAI,GAAG,KAAK,CAAC;QACtB,CAAC;QACD,IAAI,WAAW,GAAG,IAAI,CAAC,mBAAmB,CAAC,KAAK,CAAC,CAAC;QAClD,IAAI,WAAW,EAAE,CAAC;YAChB,mEAAmE;YACnE,6CAA6C;YAC7C,OAAO,WAAW,CAAC;QACrB,CAAC;QACD,uEAAuE;QACvE,aAAa;QACb,IAAI,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,IAAA,iBAAU,EAAC,KAAK,CAAC,EAAE,CAAC;YAC/C,OAAO,KAAK,CAAC;QACf,CAAC;QACD,OAAO,IAAI,GAAG,KAAK,CAAC;IACtB,CAAC;IAED,IAAI,eAAe;QACjB,IAAI,OAAO,GAAG,IAAA,sCAAc,EAAC,IAAI,CAAC,sBAAsB,CAAC,QAAQ,CAAC,CAAC;QACnE,0EAA0E;QAC1E,gDAAgD;QAChD,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAM,EAAE,EAAE,CAAC,CAAC,IAAA,8BAAuB,EAAC,CAAC,CAAC,CAAC,CAAC;QAClE,OAAO,OAAO,CAAC;IACjB,CAAC;IAED,IAAY,UAAU;QACpB,OAAO,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,sBAAsB,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;IACnE,CAAC;IAEO,UAAU,CAAC,SAA4C;QAC7D,IAAI,OAAO,SAAS,KAAK,QAAQ,EAAE,CAAC;YAClC,qEAAqE;YACrE,sEAAsE;YACtE,wEAAwE;YACxE,yEAAyE;YACzE,qBAAqB;YACrB,IAAI,YAAY,GAAG,IAAA,WAAI,EAAC,IAAI,CAAC,sBAAsB,CAAC,OAAO,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;YAC7E,IAAI,IAAA,qBAAU,EAAC,YAAY,CAAC,EAAE,CAAC;gBAC7B,OAAO,IAAI,4BAAU,CAAC,SAAS,CAAC,CAAC;YACnC,CAAC;iBAAM,CAAC;gBACN,OAAO,SAAS,CAAC;YACnB,CAAC;QACH,CAAC;QACD,OAAO,SAAS,CAAC;IACnB,CAAC;IAGD,IAAY,aAAa;QACvB,OAAO,IAAI,CAAC,mBAAmB,CAAC,6CAA6C,CAAC,CAAC;IACjF,CAAC;IAID,YAAqB,sBAAwC,EAAE,QAAkB;QAA5D,2BAAsB,GAAtB,sBAAsB,CAAkB;QA5hBrD,eAAU,GAAG,uBAAuB,CAAC;QAIrC,kBAAa,GAAmC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QACpE,qBAAgB,GAAa,EAAE,CAAC;QAChC,oBAAe,GAAa,EAAE,CAAC;QAuhBrC,IAAI,CAAC,OAAO,GAAG,IAAA,6BAAmB,EAAC,QAAQ,CAAC,CAAC;QAE7C,IAAI,CAAC,YAAY,GAAG,mBAAY,CAAC,GAAG,CAAC,sBAAsB,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;QACxE,IAAI,IAAI,CAAC,GAAG,KAAK,YAAY,EAAE,CAAC;YAC9B,IAAI,CAAC,YAAY,CAAC,wBAAwB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACtD,IAAI,CAAC,YAAY,CAAC,iBAAiB,EAAE,CAAC;YACtC,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;gBACjB,wEAAwE;gBACxE,IAAI,CAAC,YAAY,CAAC,wBAAwB,CACxC,IAAA,cAAO,EAAC,IAAA,aAAS,EAAC,EAAE,GAAG,EAAE,IAAI,CAAC,sBAAsB,CAAC,OAAO,CAAC,IAAI,EAAE,CAAE,CAAC,CACvE,CAAC;YACJ,CAAC;QACH,CAAC;QAED,oEAAoE;QACpE,0EAA0E;QAC1E,gCAAgC;QAChC,IAAI,CAAC,YAAY,CAAC,eAAe,CAAC,UAAU,EAAE,iBAAiB,EAAE;YAC/D,sEAAsE;YACtE,0EAA0E;YAC1E,6BAA6B;YAC7B,MAAM,EAAE,IAAI;SACb,CAAC,CAAC;IACL,CAAC;IAEO,OAAO,CAAC,aAA2B;QACzC,IAAI,UAAU,GAAG,IAAI,CAAC,MAAM,CAAC;QAC7B,IAAI,cAAc,GAAG,IAAI,CAAC,UAAU,CAAC;QAErC,OAAO;YACL,UAAU;YACV,cAAc;YACd,aAAa;SACd,CAAC;IACJ,CAAC;IAGD,UAAU;QACR,2EAA2E;QAC3E,sEAAsE;QACtE,IAAI,YAAY,GAAG,mBAAY,CAAC,MAAM,CAAC,WAAW,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;QAC/D,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;YACjB,OAAO,IAAI,uBAAY,CACrB,IAAI,CAAC,IAAI,EACT,IAAI,CAAC,sBAAsB,CAAC,OAAO,CAAC,IAAI,EACxC,YAAuC,CAAC,uDAAuD;aAChG,CAAC;QACJ,CAAC;aAAM,CAAC;YACN,OAAO,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACrC,CAAC;IACH,CAAC;IAEO,KAAK,CAAC,WAAW,CACvB,YAAmC,EACnC,UAAoB,EACpB,cAAgC;QAEhC,IAAI,UAAU,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC;QACnC,IAAI,WAAW,GAAG,YAAY,CAAC,iBAAiB,CAAC,UAAU,CAAC,CAAC;QAC7D,IAAI,UAAU,GAAG,IAAA,gCAAyB,EAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACtD,OAAO,IAAI,qCAAgB,CACzB,UAAU,EACV,WAAW,EACX,IAAI,CAAC,OAAO,EACZ,IAAI,EACJ,UAAU,EACV,cAAc,EACd,YAAY,CAAC,GAAG,CAAC,IAAA,WAAI,EAAC,UAAU,EAAE,oBAAoB,EAAE,YAAY,EAAE,oBAAoB,CAAC,CAAC,EAC5F,YAAY,CAAC,GAAG,CAAC,IAAA,WAAI,EAAC,UAAU,EAAE,oBAAoB,EAAE,YAAY,EAAE,oBAAoB,CAAC,CAAC,CAC7F,CAAC;IACJ,CAAC;IAED,OAAO,CAAC,SAAgB;QACtB,IAAI,OAAiD,CAAC;QACtD,IAAI,OAAO,GAAoC,IAAI,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,OAAO,GAAG,CAAC,CAAC,CAAC,CAAC;QAE/E,IAAI,IAAI,GAAG,GAAG,EAAE;YACd,IAAI,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;YAC3C,OAAO,IAAI,mBAAY,CAAC,OAAO,EAAE,IAAI,CAAC,UAAU,EAAE,KAAK,EAAC,UAAU,EAAC,EAAE;gBACnE,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;oBACjB,IAAI,EAAE,UAAU,EAAE,GAAG,MAAM,SAAS,CAAC,KAAK,EAAE,CAAC;oBAC7C,IAAI,YAAY,GAAG,4BAAqB,CAAC,MAAM,CAAC,WAAW,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;oBACxE,IAAI,CAAC,MAAM,GAAG,MAAM,IAAI,CAAC,WAAW,CAAC,YAAY,EAAE,OAAO,CAAC,UAAU,EAAE,OAAO,CAAC,cAAc,CAAC,CAAC;oBAC/F,OAAO,CAAC,EAAE,UAAU,EAAE,CAAC,CAAC;gBAC1B,CAAC;gBACD,MAAM,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;YAC5B,CAAC,CAAC,CAAC;QACL,CAAC,CAAC;QAEF,OAAO;YACL,IAAI,SAAS;gBACX,OAAO,SAAS,CAAC,SAAS,CAAC;YAC7B,CAAC;YACD,KAAK,EAAE,KAAK,IAAI,EAAE;gBAChB,OAAO,MAAM,OAAO,CAAC;YACvB,CAAC;YACD,IAAI,IAAI;gBACN,OAAO,IAAI,EAAE,CAAC;YAChB,CAAC;SACF,CAAC;IACJ,CAAC;CACF;AAnoBD,4BAmoBC;AAtmBC;IADC,IAAA,4BAAO,GAAE;qCAQT;AAGD;IADC,IAAA,4BAAO,GAAE;iDAST;AAGD;IADC,IAAA,4BAAO,GAAE;kDAGT;AAgBD;IADC,IAAA,4BAAO,GAAE;+CAGT;AAGD;IADC,IAAA,4BAAO,GAAE;mDAGT;AAmBD;IADC,IAAA,4BAAO,GAAE;uCAGT;AAGD;IADC,IAAA,4BAAO,GAAE;2CAKT;AAGD;IADC,IAAA,4BAAO,GAAE;2CAWT;AAWD;IADC,IAAA,4BAAO,GAAE;sDAOT;AAWD;IADC,IAAA,4BAAO,GAAE;4CA0DT;AAGD;IADC,IAAA,4BAAO,GAAE;kDAyBT;AAGO;IADP,IAAA,4BAAO,GAAE;qDAgBT;AAiSD;IADC,IAAA,4BAAO,GAAE;8CAGT;AA0CD;IADC,IAAA,4BAAO,GAAE;2CAcT","sourcesContent":["import type { Node as BroccoliNode } from 'broccoli-node-api';\nimport type { Stage, Package } from '@embroider/core';\nimport { PackageCache, WaitForTrees, RewrittenPackageCache, locateEmbroiderWorkingDir } from '@embroider/core';\nimport type Options from './options';\nimport { optionsWithDefaults } from './options';\nimport { Memoize } from 'typescript-memoize';\nimport { sync as pkgUpSync } from 'pkg-up';\nimport { join, dirname, isAbsolute, sep } from 'path';\nimport buildFunnel from 'broccoli-funnel';\nimport mergeTrees from 'broccoli-merge-trees';\nimport { WatchedDir } from 'broccoli-source';\nimport resolve from 'resolve';\nimport ContentForConfig from './content-for-config';\nimport { V1Config } from './v1-config';\nimport type { AddonMeta, EmberAppInstance, OutputFileToInputFileMap, PackageInfo } from '@embroider/core';\nimport { writeJSONSync, ensureDirSync, copySync, pathExistsSync, existsSync, writeFileSync } from 'fs-extra';\nimport AddToTree from './add-to-tree';\nimport DummyPackage from './dummy-package';\nimport type { TransformOptions } from '@babel/core';\nimport { isEmbroiderMacrosPlugin, MacrosConfig } from '@embroider/macros/src/node';\nimport resolvePackagePath from 'resolve-package-path';\nimport Concat from 'broccoli-concat';\nimport mapKeys from 'lodash/mapKeys';\nimport { isEmberAutoImportDynamic, isInlinePrecompilePlugin } from './detect-babel-plugins';\nimport loadAstPlugins from './prepare-htmlbars-ast-plugins';\nimport { readFileSync } from 'fs';\nimport semver from 'semver';\nimport type { Transform } from 'babel-plugin-ember-template-compilation';\nimport { CompatAppBuilder } from './compat-app-builder';\nimport walkSync from 'walk-sync';\n\ninterface Group {\n outputFiles: OutputFileToInputFileMap;\n implicitKey: '_implicitStyles' | '_implicitScripts';\n vendorOutputPath: 'string';\n}\n\n// This runs at broccoli-pipeline-construction time, whereas the\n// CompatAppBuilder instance only becomes available during tree-building time.\nexport default class CompatApp {\n private annotation = '@embroider/compat/app';\n private active: CompatAppBuilder | undefined;\n readonly options: Required<Options>;\n\n private _publicAssets: { [filePath: string]: string } = Object.create(null);\n private _implicitScripts: string[] = [];\n private _implicitStyles: string[] = [];\n\n private get isDummy(): boolean {\n return this.legacyEmberAppInstance.project.pkg.keywords?.includes('ember-addon') ?? false;\n }\n\n get name(): string {\n if (this.isDummy) {\n // here we accept the ember-cli behavior\n return this.legacyEmberAppInstance.name;\n } else {\n // always the name from package.json. Not the one that apps may have weirdly\n // customized.\n return this.legacyEmberAppInstance.project.pkg.name;\n }\n }\n\n get env(): string {\n return this.legacyEmberAppInstance.env;\n }\n\n @Memoize()\n get root(): string {\n if (this.isDummy) {\n // this is the Known Hack for finding the true root of the dummy app.\n return join(this.legacyEmberAppInstance.project.configPath(), '..', '..');\n } else {\n return dirname(pkgUpSync({ cwd: this.legacyEmberAppInstance.project.root })!);\n }\n }\n\n @Memoize()\n private get emberCLILocation() {\n const emberCLIPackage = resolvePackagePath('ember-cli', this.root);\n\n if (emberCLIPackage === null) {\n throw new Error(`Embroider: cannot resolve ember-cli's package.json`);\n }\n\n return dirname(emberCLIPackage);\n }\n\n @Memoize()\n get hasCompiledStyles() {\n return semver.gte(JSON.parse(readFileSync(`${this.emberCLILocation}/package.json`, 'utf8')).version, '3.18.0');\n }\n\n private requireFromEmberCLI(specifier: string) {\n // eslint-disable-next-line @typescript-eslint/no-require-imports\n return require(resolve.sync(specifier, { basedir: this.emberCLILocation }));\n }\n\n private get configLoader() {\n return this.requireFromEmberCLI('broccoli-config-loader');\n }\n\n private get appUtils() {\n return this.requireFromEmberCLI('./lib/utilities/ember-app-utils');\n }\n\n @Memoize()\n get addonTreeCache(): Map<string, BroccoliNode> {\n return new Map();\n }\n\n @Memoize()\n get preprocessRegistry() {\n return this.requireFromEmberCLI('ember-cli-preprocess-registry/preprocessors');\n }\n\n get shouldBuildTests(): boolean {\n return this.legacyEmberAppInstance.tests || false;\n }\n\n configPath(): string {\n return this.legacyEmberAppInstance.project.configPath();\n }\n\n private get configTree() {\n return new this.configLoader(dirname(this.configPath()), {\n env: this.legacyEmberAppInstance.env,\n tests: this.legacyEmberAppInstance.tests || false,\n project: this.legacyEmberAppInstance.project,\n });\n }\n\n @Memoize()\n private get config(): V1Config {\n return new V1Config(this.configTree, this.legacyEmberAppInstance.env);\n }\n\n @Memoize()\n get testConfig(): V1Config | undefined {\n if (this.shouldBuildTests) {\n return new V1Config(this.configTree, 'test');\n }\n }\n\n @Memoize()\n private get contentFor(): ContentForConfig {\n const configPaths = [\n { file: '/index.html', path: join('environments', `${this.legacyEmberAppInstance.env}.json`) },\n ];\n if (this.shouldBuildTests) configPaths.push({ file: '/tests/index.html', path: join('environments', `test.json`) });\n return new ContentForConfig(this.configTree, {\n availableContentForTypes: this.options.availableContentForTypes,\n configPaths,\n pattern: this.filteredPatternsByContentFor.contentFor,\n });\n }\n\n get autoRun(): boolean {\n return this.legacyEmberAppInstance.options.autoRun;\n }\n\n private get storeConfigInMeta(): boolean {\n return this.legacyEmberAppInstance.options.storeConfigInMeta;\n }\n\n @Memoize()\n private get configReplacePatterns() {\n return this.appUtils.configReplacePatterns({\n addons: this.legacyEmberAppInstance.project.addons,\n autoRun: this.autoRun,\n storeConfigInMeta: this.storeConfigInMeta,\n });\n }\n\n private get filteredPatternsByContentFor() {\n const filter = '/{{content-for [\\'\"](.+?)[\"\\']}}/g';\n return {\n contentFor: this.configReplacePatterns.find((pattern: any) => filter.includes(pattern.match.toString())),\n others: this.configReplacePatterns.filter((pattern: any) => !filter.includes(pattern.match.toString())),\n };\n }\n\n @Memoize()\n babelConfig(): TransformOptions {\n // this finds all the built-in babel configuration that comes with ember-cli-babel\n const babelAddon = (this.legacyEmberAppInstance.project as any).findAddonByName('ember-cli-babel');\n const babelConfig = babelAddon.buildBabelOptions({\n 'ember-cli-babel': {\n ...this.legacyEmberAppInstance.options['ember-cli-babel'],\n includeExternalHelpers: true,\n compileModules: false,\n disableDebugTooling: false,\n disablePresetEnv: false,\n disableEmberModulesAPIPolyfill: false,\n },\n });\n\n let plugins = babelConfig.plugins as any[];\n let presets = babelConfig.presets;\n\n // this finds any custom babel configuration that's on the app (either\n // because the app author explicitly added some, or because addons have\n // pushed plugins into it).\n let appBabel = this.legacyEmberAppInstance.options.babel;\n if (appBabel) {\n if (appBabel.plugins) {\n plugins = appBabel.plugins.concat(plugins);\n }\n if (appBabel.presets) {\n presets = appBabel.presets.concat(presets);\n }\n }\n\n plugins = plugins.filter(p => {\n // even if the app was using @embroider/macros, we drop it from the config\n // here in favor of our globally-configured one.\n return (\n !isEmbroiderMacrosPlugin(p) &&\n // similarly, if the app was already using an inline template compiler\n // babel plugin, we remove it here because we have our own\n // always-installed version of that (v2 addons are allowed to assume it\n // will be present in the final app build, the app doesn't get to turn\n // that off or configure it.)\n !isInlinePrecompilePlugin(p) &&\n !isEmberAutoImportDynamic(p)\n );\n });\n\n const config: TransformOptions = {\n babelrc: false,\n plugins,\n presets,\n // this is here because broccoli-middleware can't render a codeFrame full\n // of terminal codes. It would be nice to add something like\n // https://github.com/mmalecki/ansispan to broccoli-middleware so we can\n // leave color enabled.\n highlightCode: false,\n };\n\n return config;\n }\n\n @Memoize()\n babelMajorVersion(): 7 {\n let babelAddon = this.legacyEmberAppInstance.project.addons.find((a: any) => a.name === 'ember-cli-babel');\n if (babelAddon) {\n let babelAddonMajor = Number(babelAddon.pkg.version.split('.')[0]);\n let babelMajor: number | undefined = babelAddonMajor;\n if (babelAddonMajor >= 8) {\n // `ember-cli-babel` v8 breaks lockstep with Babel, because it now\n // defines `@babel/core` as a peer dependency, so we need to check the\n // project's version of `@babel/core`:\n let babelVersion = this.legacyEmberAppInstance.project.pkg.devDependencies?.['@babel/core'];\n if (babelVersion) {\n babelMajor = semver.coerce(babelVersion)?.major;\n } else {\n babelMajor = 7;\n }\n }\n if (babelMajor !== 7) {\n throw new Error('`@embroider/compat` only supports apps and addons that use Babel v7.');\n }\n return babelMajor;\n }\n // if we didn't have our own babel plugin at all, it's safe to parse our\n // code with 7.\n return 7;\n }\n\n @Memoize()\n private transformedNodeFiles(): Map<string, string> {\n // any app.imports from node_modules that need custom transforms will need\n // to get copied into our own synthesized vendor package. app.imports from\n // node_modules that *don't* need custom transforms can just stay where they\n // are.\n let transformed = new Map();\n for (let transformConfig of this.legacyEmberAppInstance._customTransformsMap.values()) {\n for (let filename of transformConfig.files as string[]) {\n let preresolved = this.preresolvedNodeFile(filename);\n if (preresolved) {\n transformed.set(filename, preresolved);\n }\n }\n }\n return transformed;\n }\n\n private preresolvedNodeFile(filename: string) {\n // this regex is an exact copy of how ember-cli does this, so we align.\n let match = filename.match(/^node_modules\\/((@[^/]+\\/)?[^/]+)\\//);\n if (match) {\n // ember-cli has already done its own resolution of\n // `app.import('node_modules/something/...')`, so we go find its answer.\n for (let { name, path } of this.legacyEmberAppInstance._nodeModules.values()) {\n if (match[1] === name) {\n return filename.replace(match[0], path + sep);\n }\n }\n throw new Error(`bug: expected ember-cli to already have a resolved path for asset ${filename}`);\n }\n }\n\n private combinedVendor(addonTrees: BroccoliNode[]): BroccoliNode {\n let trees = addonTrees.map(tree =>\n buildFunnel(tree, {\n allowEmpty: true,\n srcDir: 'vendor',\n destDir: 'vendor',\n })\n );\n if (this.vendorTree) {\n trees.push(\n buildFunnel(this.vendorTree, {\n destDir: 'vendor',\n })\n );\n }\n\n const tree = mergeTrees(trees, { overwrite: true });\n\n const outputGroups: Group[] = [\n // scripts\n {\n outputFiles: this.legacyEmberAppInstance._scriptOutputFiles,\n implicitKey: '_implicitScripts',\n vendorOutputPath: this.legacyEmberAppInstance.options.outputPaths.vendor.js,\n },\n // styles\n {\n outputFiles: this.legacyEmberAppInstance._styleOutputFiles,\n implicitKey: '_implicitStyles',\n vendorOutputPath: this.legacyEmberAppInstance.options.outputPaths.vendor.css,\n },\n ];\n\n const concatentations = [];\n\n // support: app.import / outputFile / using\n for (let entry of outputGroups) {\n const { outputFiles, implicitKey, vendorOutputPath } = entry;\n for (let importPath of Object.keys(outputFiles)) {\n const headerFiles = outputFiles[importPath];\n\n if (importPath === vendorOutputPath) {\n // these are the default ember-cli output files vendor.js or\n // vendor.css. Let embroider handle these.\n this[implicitKey] = headerFiles;\n } else if (headerFiles.length === 0) {\n // something went really wrong, open an issue\n throw new Error('Embroider: EWUT');\n } else if (headerFiles.length === 1) {\n // app.import(x, { outputFile: y }); where only one app.imports had this outputFile\n //\n // No concat needed. Simply serialize the remapping in the addon's\n // manifest, this ensures it is included in the final output with no extra work.\n this._publicAssets[headerFiles[0]] = importPath;\n } else {\n // app.import(x, { outputFile: y }); where multiple app.imports share one outputFile\n // Concat needed. Perform concat, and include the outputFile in the\n // addon's manifest. This ensures it is included in the final output\n this._publicAssets[importPath] = importPath;\n\n concatentations.push(\n new Concat(tree, {\n headerFiles,\n outputFile: importPath,\n annotation: `Package ${importPath}`,\n separator: '\\n;',\n sourceMapConfig: this.legacyEmberAppInstance.options['sourcemaps'],\n })\n );\n }\n }\n }\n\n this.addOtherAssets();\n return mergeTrees([tree, ...concatentations], { overwrite: true });\n }\n\n private addOtherAssets() {\n for (let asset of this.legacyEmberAppInstance.otherAssetPaths) {\n this._publicAssets[`${asset.src}/${asset.file}`] = `${asset.dest}/${asset.file}`;\n }\n }\n\n private addNodeAssets(inputTree: BroccoliNode): BroccoliNode {\n let transformedNodeFiles = this.transformedNodeFiles();\n\n return new AddToTree(inputTree, outputPath => {\n for (let [localDestPath, sourcePath] of transformedNodeFiles) {\n let destPath = join(outputPath, localDestPath);\n ensureDirSync(dirname(destPath));\n copySync(sourcePath, destPath);\n }\n\n if (this.shouldBuildTests) {\n writeFileSync(\n join(outputPath, 'testem.js'),\n `/*\n * This is dummy file that exists for the sole purpose\n * of allowing tests to run directly in the browser as\n * well as by Testem.\n *\n * Testem is configured to run tests directly against\n * the test build of index.html, which requires a\n * snippet to load the testem.js file:\n * <script src=\"/testem.js\"></script>\n * This has to go before the qunit framework and app\n * tests are loaded.\n *\n * Testem internally supplies this file. However, if you\n * run the tests directly in the browser (localhost:8000/tests),\n * this file does not exist.\n *\n * Hence the purpose of this fake file. This file is served\n * directly from the express server to satisify the script load.\n*/`\n );\n this._publicAssets['/testem.js'] = './testem.js';\n }\n\n let remapAsset = this.remapAsset.bind(this);\n\n let addonMeta: AddonMeta = {\n type: 'addon',\n version: 2,\n 'implicit-scripts': this._implicitScripts.map(remapAsset),\n 'implicit-styles': this._implicitStyles.map(remapAsset),\n 'implicit-test-scripts': this.legacyEmberAppInstance.legacyTestFilesToAppend.map(remapAsset),\n 'implicit-test-styles': this.legacyEmberAppInstance.vendorTestStaticStyles.map(remapAsset),\n 'public-assets': mapKeys(this._publicAssets, (_, key) => remapAsset(key)),\n };\n let meta: PackageInfo = {\n name: '@embroider/synthesized-vendor',\n version: '0.0.0',\n keywords: ['ember-addon'],\n 'ember-addon': addonMeta,\n };\n writeJSONSync(join(outputPath, 'package.json'), meta, { spaces: 2 });\n });\n }\n\n synthesizeVendorPackage(addonTrees: BroccoliNode[]): BroccoliNode {\n return this.applyCustomTransforms(this.addNodeAssets(this.combinedVendor(addonTrees)));\n }\n\n private combinedStyles(addonTrees: BroccoliNode[]): BroccoliNode {\n let trees: BroccoliNode[] = addonTrees.map(tree =>\n buildFunnel(tree, {\n allowEmpty: true,\n srcDir: '_app_styles_',\n })\n );\n let appStyles = this.legacyEmberAppInstance.trees.styles as BroccoliNode | undefined;\n if (appStyles) {\n // Workaround for https://github.com/ember-cli/ember-cli/issues/9020\n //\n // The default app styles tree is unwatched and relies on side effects\n // elsewhere in ember-cli's build pipeline to actually get rebuilds to\n // work. Here we need it to actually be watched properly if we want to\n // rely on it, particularly when using BROCCOLI_ENABLED_MEMOIZE.\n if ((appStyles as any)._watched === false && (appStyles as any)._directoryPath) {\n appStyles = new WatchedDir((appStyles as any)._directoryPath);\n }\n trees.push(appStyles);\n }\n return mergeTrees(trees, { overwrite: true, annotation: 'embroider-v1-app-combined-styles' });\n }\n\n synthesizeStylesPackage(addonTrees: BroccoliNode[]): BroccoliNode {\n let options = {\n // we're deliberately not allowing this to be customized. It's an\n // internal implementation detail, and respecting outputPaths here is\n // unnecessary complexity. The corresponding code that adjusts the HTML\n // <link> is in updateHTML in app.ts.\n outputPaths: { app: `/assets/${this.name}.css` },\n registry: this.legacyEmberAppInstance.registry,\n minifyCSS: this.legacyEmberAppInstance.options.minifyCSS.options,\n };\n\n let nestedInput = buildFunnel(this.combinedStyles(addonTrees), { destDir: 'app/styles' });\n let styles = this.preprocessors.preprocessCss(nestedInput, '/app/styles', '/assets', options);\n\n return new AddToTree(styles, outputPath => {\n let addonMeta: AddonMeta = {\n type: 'addon',\n version: 2,\n 'public-assets': {},\n };\n let assetPath = join(outputPath, 'assets');\n if (pathExistsSync(assetPath)) {\n for (let file of walkSync(assetPath, { directories: false })) {\n addonMeta['public-assets']![`./assets/${file}`] = `/assets/${file}`;\n }\n }\n let meta: PackageInfo = {\n name: '@embroider/synthesized-styles',\n version: '0.0.0',\n keywords: ['ember-addon'],\n 'ember-addon': addonMeta,\n };\n writeJSONSync(join(outputPath, 'package.json'), meta, { spaces: 2 });\n });\n }\n\n // this is taken nearly verbatim from ember-cli.\n private applyCustomTransforms(externalTree: BroccoliNode) {\n for (let customTransformEntry of this.legacyEmberAppInstance._customTransformsMap) {\n let transformName = customTransformEntry[0];\n let transformConfig = customTransformEntry[1];\n\n let transformTree = buildFunnel(externalTree, {\n files: transformConfig.files,\n annotation: `Funnel (custom transform: ${transformName})`,\n });\n\n externalTree = mergeTrees([externalTree, transformConfig.callback(transformTree, transformConfig.options)], {\n annotation: `TreeMerger (custom transform: ${transformName})`,\n overwrite: true,\n });\n }\n return externalTree;\n }\n\n private remapAsset(asset: string) {\n if (this.transformedNodeFiles().has(asset)) {\n // transformed node assets become local paths, because we have copied\n // those ones into our synthesized vendor package.\n return './' + asset;\n }\n let preresolved = this.preresolvedNodeFile(asset);\n if (preresolved) {\n // non-transformed node assets point directly at their pre-resolved\n // original files (this is an absolute path).\n return preresolved;\n }\n // non node assets are local paths. They need an explicit `/` or `.` at\n // the start.\n if (asset.startsWith('.') || isAbsolute(asset)) {\n return asset;\n }\n return './' + asset;\n }\n\n get htmlbarsPlugins(): Transform[] {\n let plugins = loadAstPlugins(this.legacyEmberAppInstance.registry);\n // even if the app was using @embroider/macros, we drop it from the config\n // here in favor of our globally-configured one.\n plugins = plugins.filter((p: any) => !isEmbroiderMacrosPlugin(p));\n return plugins;\n }\n\n private get vendorTree(): BroccoliNode | undefined {\n return this.ensureTree(this.legacyEmberAppInstance.trees.vendor);\n }\n\n private ensureTree(maybeTree: string | BroccoliNode | undefined): BroccoliNode | undefined {\n if (typeof maybeTree === 'string') {\n // this is deliberately mimicking how ember-cli does it. We don't use\n // `this.root` on purpose, because that can differ from what ember-cli\n // considers the project.root. And we don't use path.resolve even though\n // that seems possibly more correct, because ember-cli always assumes the\n // input is relative.\n let resolvedPath = join(this.legacyEmberAppInstance.project.root, maybeTree);\n if (existsSync(resolvedPath)) {\n return new WatchedDir(maybeTree);\n } else {\n return undefined;\n }\n }\n return maybeTree;\n }\n\n @Memoize()\n private get preprocessors(): Preprocessors {\n return this.requireFromEmberCLI('ember-cli-preprocess-registry/preprocessors');\n }\n\n readonly macrosConfig: MacrosConfig;\n\n constructor(readonly legacyEmberAppInstance: EmberAppInstance, _options?: Options) {\n this.options = optionsWithDefaults(_options);\n\n this.macrosConfig = MacrosConfig.for(legacyEmberAppInstance, this.root);\n if (this.env !== 'production') {\n this.macrosConfig.enablePackageDevelopment(this.root);\n this.macrosConfig.enableRuntimeMode();\n if (this.isDummy) {\n // dummy apps automatically put their owning addon under development too\n this.macrosConfig.enablePackageDevelopment(\n dirname(pkgUpSync({ cwd: this.legacyEmberAppInstance.project.root })!)\n );\n }\n }\n\n // this uses globalConfig because it's a way for packages to ask \"is\n // Embroider doing this build?\". So it's necessarily global, not scoped to\n // any subgraph of dependencies.\n this.macrosConfig.setGlobalConfig(__filename, `@embroider/core`, {\n // this is hard-coded to true because it literally means \"embroider is\n // building this Ember app\". You can see non-true when using the Embroider\n // macros in a classic build.\n active: true,\n });\n }\n\n private inTrees(prevStageTree: BroccoliNode) {\n let configTree = this.config;\n let contentForTree = this.contentFor;\n\n return {\n configTree,\n contentForTree,\n prevStageTree,\n };\n }\n\n @Memoize()\n appPackage(): Package {\n // this is deliberately not RewrittenPackageCache, because it's supposed to\n // be the original copy of the app with all the original dependencies.\n let packageCache = PackageCache.shared('embroider', this.root);\n if (this.isDummy) {\n return new DummyPackage(\n this.root,\n this.legacyEmberAppInstance.project.root,\n packageCache as unknown as PackageCache // TODO: cast won't be needed when refactor is complete\n );\n } else {\n return packageCache.get(this.root);\n }\n }\n\n private async instantiate(\n packageCache: RewrittenPackageCache,\n configTree: V1Config,\n contentForTree: ContentForConfig\n ) {\n let origAppPkg = this.appPackage();\n let movedAppPkg = packageCache.withRewrittenDeps(origAppPkg);\n let workingDir = locateEmbroiderWorkingDir(this.root);\n return new CompatAppBuilder(\n origAppPkg,\n movedAppPkg,\n this.options,\n this,\n configTree,\n contentForTree,\n packageCache.get(join(workingDir, 'rewritten-packages', '@embroider', 'synthesized-vendor')),\n packageCache.get(join(workingDir, 'rewritten-packages', '@embroider', 'synthesized-styles'))\n );\n }\n\n asStage(prevStage: Stage): Stage {\n let resolve: (result: { outputPath: string }) => void;\n let promise: Promise<{ outputPath: string }> = new Promise(r => (resolve = r));\n\n let tree = () => {\n let inTrees = this.inTrees(prevStage.tree);\n return new WaitForTrees(inTrees, this.annotation, async _treePaths => {\n if (!this.active) {\n let { outputPath } = await prevStage.ready();\n let packageCache = RewrittenPackageCache.shared('embroider', this.root);\n this.active = await this.instantiate(packageCache, inTrees.configTree, inTrees.contentForTree);\n resolve({ outputPath });\n }\n await this.active.build();\n });\n };\n\n return {\n get inputPath() {\n return prevStage.inputPath;\n },\n ready: async () => {\n return await promise;\n },\n get tree() {\n return tree();\n },\n };\n }\n}\n\ninterface Preprocessors {\n preprocessJs(tree: BroccoliNode, a: string, b: string, options: object): BroccoliNode;\n preprocessCss(tree: BroccoliNode, a: string, b: string, options: object): BroccoliNode;\n}\n"]}
1
+ {"version":3,"file":"compat-app.js","sourceRoot":"","sources":["compat-app.ts"],"names":[],"mappings":"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","sourcesContent":["import type { Node as BroccoliNode } from 'broccoli-node-api';\nimport type { Stage, Package } from '@embroider/core';\nimport { PackageCache, WaitForTrees, RewrittenPackageCache, locateEmbroiderWorkingDir } from '@embroider/core';\nimport type Options from './options';\nimport { optionsWithDefaults } from './options';\nimport { Memoize } from 'typescript-memoize';\nimport { sync as pkgUpSync } from 'pkg-up';\nimport { join, dirname, isAbsolute, sep } from 'path';\nimport buildFunnel from 'broccoli-funnel';\nimport mergeTrees from 'broccoli-merge-trees';\nimport { WatchedDir } from 'broccoli-source';\nimport resolve from 'resolve';\nimport ContentForConfig from './content-for-config';\nimport { V1Config } from './v1-config';\nimport type { AddonMeta, EmberAppInstance, OutputFileToInputFileMap, PackageInfo } from '@embroider/core';\nimport { writeJSONSync, ensureDirSync, copySync, pathExistsSync, existsSync, writeFileSync } from 'fs-extra';\nimport AddToTree from './add-to-tree';\nimport DummyPackage from './dummy-package';\nimport type { PluginItem, TransformOptions } from '@babel/core';\nimport { isEmbroiderMacrosPlugin, MacrosConfig } from '@embroider/macros/src/node';\nimport resolvePackagePath from 'resolve-package-path';\nimport Concat from 'broccoli-concat';\nimport mapKeys from 'lodash/mapKeys';\nimport { isEmberAutoImportDynamic, isHtmlbarColocation, isInlinePrecompilePlugin } from './detect-babel-plugins';\nimport loadAstPlugins from './prepare-htmlbars-ast-plugins';\nimport { readFileSync } from 'fs';\nimport semver from 'semver';\nimport type { Transform } from 'babel-plugin-ember-template-compilation';\nimport { CompatAppBuilder } from './compat-app-builder';\nimport walkSync from 'walk-sync';\n\ninterface Group {\n outputFiles: OutputFileToInputFileMap;\n implicitKey: '_implicitStyles' | '_implicitScripts';\n vendorOutputPath: 'string';\n}\n\n// This runs at broccoli-pipeline-construction time, whereas the\n// CompatAppBuilder instance only becomes available during tree-building time.\nexport default class CompatApp {\n private annotation = '@embroider/compat/app';\n private active: CompatAppBuilder | undefined;\n readonly options: Required<Options>;\n\n private _publicAssets: { [filePath: string]: string } = Object.create(null);\n private _implicitScripts: string[] = [];\n private _implicitStyles: string[] = [];\n\n private get isDummy(): boolean {\n return this.legacyEmberAppInstance.project.pkg.keywords?.includes('ember-addon') ?? false;\n }\n\n get name(): string {\n if (this.isDummy) {\n // here we accept the ember-cli behavior\n return this.legacyEmberAppInstance.name;\n } else {\n // always the name from package.json. Not the one that apps may have weirdly\n // customized.\n return this.legacyEmberAppInstance.project.pkg.name;\n }\n }\n\n get env(): string {\n return this.legacyEmberAppInstance.env;\n }\n\n @Memoize()\n get root(): string {\n if (this.isDummy) {\n // this is the Known Hack for finding the true root of the dummy app.\n return join(this.legacyEmberAppInstance.project.configPath(), '..', '..');\n } else {\n return dirname(pkgUpSync({ cwd: this.legacyEmberAppInstance.project.root })!);\n }\n }\n\n @Memoize()\n private get emberCLILocation() {\n const emberCLIPackage = resolvePackagePath('ember-cli', this.root);\n\n if (emberCLIPackage === null) {\n throw new Error(`Embroider: cannot resolve ember-cli's package.json`);\n }\n\n return dirname(emberCLIPackage);\n }\n\n @Memoize()\n get hasCompiledStyles() {\n return semver.gte(JSON.parse(readFileSync(`${this.emberCLILocation}/package.json`, 'utf8')).version, '3.18.0');\n }\n\n private requireFromEmberCLI(specifier: string) {\n // eslint-disable-next-line @typescript-eslint/no-require-imports\n return require(resolve.sync(specifier, { basedir: this.emberCLILocation }));\n }\n\n private get configLoader() {\n return this.requireFromEmberCLI('broccoli-config-loader');\n }\n\n private get appUtils() {\n return this.requireFromEmberCLI('./lib/utilities/ember-app-utils');\n }\n\n @Memoize()\n get addonTreeCache(): Map<string, BroccoliNode> {\n return new Map();\n }\n\n @Memoize()\n get preprocessRegistry() {\n return this.requireFromEmberCLI('ember-cli-preprocess-registry/preprocessors');\n }\n\n get shouldBuildTests(): boolean {\n return this.legacyEmberAppInstance.tests || false;\n }\n\n configPath(): string {\n return this.legacyEmberAppInstance.project.configPath();\n }\n\n private get configTree() {\n return new this.configLoader(dirname(this.configPath()), {\n env: this.legacyEmberAppInstance.env,\n tests: this.legacyEmberAppInstance.tests || false,\n project: this.legacyEmberAppInstance.project,\n });\n }\n\n @Memoize()\n private get config(): V1Config {\n return new V1Config(this.configTree, this.legacyEmberAppInstance.env);\n }\n\n @Memoize()\n get testConfig(): V1Config | undefined {\n if (this.shouldBuildTests) {\n return new V1Config(this.configTree, 'test');\n }\n }\n\n @Memoize()\n private get contentFor(): ContentForConfig {\n const configPaths = [\n { file: '/index.html', path: join('environments', `${this.legacyEmberAppInstance.env}.json`) },\n ];\n if (this.shouldBuildTests) configPaths.push({ file: '/tests/index.html', path: join('environments', `test.json`) });\n return new ContentForConfig(this.configTree, {\n availableContentForTypes: this.options.availableContentForTypes,\n configPaths,\n pattern: this.filteredPatternsByContentFor.contentFor,\n });\n }\n\n get autoRun(): boolean {\n return this.legacyEmberAppInstance.options.autoRun;\n }\n\n private get storeConfigInMeta(): boolean {\n return this.legacyEmberAppInstance.options.storeConfigInMeta;\n }\n\n @Memoize()\n private get configReplacePatterns() {\n return this.appUtils.configReplacePatterns({\n addons: this.legacyEmberAppInstance.project.addons,\n autoRun: this.autoRun,\n storeConfigInMeta: this.storeConfigInMeta,\n });\n }\n\n private get filteredPatternsByContentFor() {\n const filter = '/{{content-for [\\'\"](.+?)[\"\\']}}/g';\n return {\n contentFor: this.configReplacePatterns.find((pattern: any) => filter.includes(pattern.match.toString())),\n others: this.configReplacePatterns.filter((pattern: any) => !filter.includes(pattern.match.toString())),\n };\n }\n\n @Memoize()\n extraBabelPlugins(): PluginItem[] {\n // this finds any custom babel plugins on the app (either because the app\n // author explicitly added some, or because addons have pushed plugins into\n // it).\n let appBabel: TransformOptions = this.legacyEmberAppInstance.options.babel;\n if (appBabel) {\n if (appBabel.plugins) {\n return appBabel.plugins.filter(p => {\n // even if the app was using @embroider/macros, we drop it from the config\n // here in favor of our globally-configured one.\n return (\n !isEmbroiderMacrosPlugin(p) &&\n // similarly, if the app was already using an inline template compiler\n // babel plugin, we remove it here because we have our own\n // always-installed version of that (v2 addons are allowed to assume it\n // will be present in the final app build, the app doesn't get to turn\n // that off or configure it.)\n !isInlinePrecompilePlugin(p) &&\n !isEmberAutoImportDynamic(p) &&\n !isHtmlbarColocation(p)\n );\n });\n }\n }\n return [];\n }\n\n @Memoize()\n babelMajorVersion(): 7 {\n let babelAddon = this.legacyEmberAppInstance.project.addons.find((a: any) => a.name === 'ember-cli-babel');\n if (babelAddon) {\n let babelAddonMajor = Number(babelAddon.pkg.version.split('.')[0]);\n let babelMajor: number | undefined = babelAddonMajor;\n if (babelAddonMajor >= 8) {\n // `ember-cli-babel` v8 breaks lockstep with Babel, because it now\n // defines `@babel/core` as a peer dependency, so we need to check the\n // project's version of `@babel/core`:\n let babelVersion = this.legacyEmberAppInstance.project.pkg.devDependencies?.['@babel/core'];\n if (babelVersion) {\n babelMajor = semver.coerce(babelVersion)?.major;\n } else {\n babelMajor = 7;\n }\n }\n if (babelMajor !== 7) {\n throw new Error('`@embroider/compat` only supports apps and addons that use Babel v7.');\n }\n return babelMajor;\n }\n // if we didn't have our own babel plugin at all, it's safe to parse our\n // code with 7.\n return 7;\n }\n\n @Memoize()\n private transformedNodeFiles(): Map<string, string> {\n // any app.imports from node_modules that need custom transforms will need\n // to get copied into our own synthesized vendor package. app.imports from\n // node_modules that *don't* need custom transforms can just stay where they\n // are.\n let transformed = new Map();\n for (let transformConfig of this.legacyEmberAppInstance._customTransformsMap.values()) {\n for (let filename of transformConfig.files as string[]) {\n let preresolved = this.preresolvedNodeFile(filename);\n if (preresolved) {\n transformed.set(filename, preresolved);\n }\n }\n }\n return transformed;\n }\n\n private preresolvedNodeFile(filename: string) {\n // this regex is an exact copy of how ember-cli does this, so we align.\n let match = filename.match(/^node_modules\\/((@[^/]+\\/)?[^/]+)\\//);\n if (match) {\n // ember-cli has already done its own resolution of\n // `app.import('node_modules/something/...')`, so we go find its answer.\n for (let { name, path } of this.legacyEmberAppInstance._nodeModules.values()) {\n if (match[1] === name) {\n return filename.replace(match[0], path + sep);\n }\n }\n throw new Error(`bug: expected ember-cli to already have a resolved path for asset ${filename}`);\n }\n }\n\n private combinedVendor(addonTrees: BroccoliNode[]): BroccoliNode {\n let trees = addonTrees.map(tree =>\n buildFunnel(tree, {\n allowEmpty: true,\n srcDir: 'vendor',\n destDir: 'vendor',\n })\n );\n if (this.vendorTree) {\n trees.push(\n buildFunnel(this.vendorTree, {\n destDir: 'vendor',\n })\n );\n }\n\n const tree = mergeTrees(trees, { overwrite: true });\n\n const outputGroups: Group[] = [\n // scripts\n {\n outputFiles: this.legacyEmberAppInstance._scriptOutputFiles,\n implicitKey: '_implicitScripts',\n vendorOutputPath: this.legacyEmberAppInstance.options.outputPaths.vendor.js,\n },\n // styles\n {\n outputFiles: this.legacyEmberAppInstance._styleOutputFiles,\n implicitKey: '_implicitStyles',\n vendorOutputPath: this.legacyEmberAppInstance.options.outputPaths.vendor.css,\n },\n ];\n\n const concatentations = [];\n\n // support: app.import / outputFile / using\n for (let entry of outputGroups) {\n const { outputFiles, implicitKey, vendorOutputPath } = entry;\n for (let importPath of Object.keys(outputFiles)) {\n const headerFiles = outputFiles[importPath];\n\n if (importPath === vendorOutputPath) {\n // these are the default ember-cli output files vendor.js or\n // vendor.css. Let embroider handle these.\n this[implicitKey] = headerFiles;\n } else if (headerFiles.length === 0) {\n // something went really wrong, open an issue\n throw new Error('Embroider: EWUT');\n } else if (headerFiles.length === 1) {\n // app.import(x, { outputFile: y }); where only one app.imports had this outputFile\n //\n // No concat needed. Simply serialize the remapping in the addon's\n // manifest, this ensures it is included in the final output with no extra work.\n this._publicAssets[headerFiles[0]] = importPath;\n } else {\n // app.import(x, { outputFile: y }); where multiple app.imports share one outputFile\n // Concat needed. Perform concat, and include the outputFile in the\n // addon's manifest. This ensures it is included in the final output\n this._publicAssets[importPath] = importPath;\n\n concatentations.push(\n new Concat(tree, {\n headerFiles,\n outputFile: importPath,\n annotation: `Package ${importPath}`,\n separator: '\\n;',\n sourceMapConfig: this.legacyEmberAppInstance.options['sourcemaps'],\n })\n );\n }\n }\n }\n\n this.addOtherAssets();\n return mergeTrees([tree, ...concatentations], { overwrite: true });\n }\n\n private addOtherAssets() {\n for (let asset of this.legacyEmberAppInstance.otherAssetPaths) {\n this._publicAssets[`${asset.src}/${asset.file}`] = `${asset.dest}/${asset.file}`;\n }\n }\n\n private addNodeAssets(inputTree: BroccoliNode): BroccoliNode {\n let transformedNodeFiles = this.transformedNodeFiles();\n\n return new AddToTree(inputTree, outputPath => {\n for (let [localDestPath, sourcePath] of transformedNodeFiles) {\n let destPath = join(outputPath, localDestPath);\n ensureDirSync(dirname(destPath));\n copySync(sourcePath, destPath);\n }\n\n if (this.shouldBuildTests) {\n writeFileSync(\n join(outputPath, 'testem.js'),\n `/*\n * This is dummy file that exists for the sole purpose\n * of allowing tests to run directly in the browser as\n * well as by Testem.\n *\n * Testem is configured to run tests directly against\n * the test build of index.html, which requires a\n * snippet to load the testem.js file:\n * <script src=\"/testem.js\"></script>\n * This has to go before the qunit framework and app\n * tests are loaded.\n *\n * Testem internally supplies this file. However, if you\n * run the tests directly in the browser (localhost:8000/tests),\n * this file does not exist.\n *\n * Hence the purpose of this fake file. This file is served\n * directly from the express server to satisify the script load.\n*/`\n );\n this._publicAssets['/testem.js'] = './testem.js';\n }\n\n let remapAsset = this.remapAsset.bind(this);\n\n let addonMeta: AddonMeta = {\n type: 'addon',\n version: 2,\n 'implicit-scripts': this._implicitScripts.map(remapAsset),\n 'implicit-styles': this._implicitStyles.map(remapAsset),\n 'implicit-test-scripts': this.legacyEmberAppInstance.legacyTestFilesToAppend.map(remapAsset),\n 'implicit-test-styles': this.legacyEmberAppInstance.vendorTestStaticStyles.map(remapAsset),\n 'public-assets': mapKeys(this._publicAssets, (_, key) => remapAsset(key)),\n };\n let meta: PackageInfo = {\n name: '@embroider/synthesized-vendor',\n version: '0.0.0',\n keywords: ['ember-addon'],\n 'ember-addon': addonMeta,\n };\n writeJSONSync(join(outputPath, 'package.json'), meta, { spaces: 2 });\n });\n }\n\n synthesizeVendorPackage(addonTrees: BroccoliNode[]): BroccoliNode {\n return this.applyCustomTransforms(this.addNodeAssets(this.combinedVendor(addonTrees)));\n }\n\n private combinedStyles(addonTrees: BroccoliNode[]): BroccoliNode {\n let trees: BroccoliNode[] = addonTrees.map(tree =>\n buildFunnel(tree, {\n allowEmpty: true,\n srcDir: '_app_styles_',\n })\n );\n let appStyles = this.legacyEmberAppInstance.trees.styles as BroccoliNode | undefined;\n if (appStyles) {\n // Workaround for https://github.com/ember-cli/ember-cli/issues/9020\n //\n // The default app styles tree is unwatched and relies on side effects\n // elsewhere in ember-cli's build pipeline to actually get rebuilds to\n // work. Here we need it to actually be watched properly if we want to\n // rely on it, particularly when using BROCCOLI_ENABLED_MEMOIZE.\n if ((appStyles as any)._watched === false && (appStyles as any)._directoryPath) {\n appStyles = new WatchedDir((appStyles as any)._directoryPath);\n }\n trees.push(appStyles);\n }\n return mergeTrees(trees, { overwrite: true, annotation: 'embroider-v1-app-combined-styles' });\n }\n\n synthesizeStylesPackage(addonTrees: BroccoliNode[]): BroccoliNode {\n let options = {\n // we're deliberately not allowing this to be customized. It's an\n // internal implementation detail, and respecting outputPaths here is\n // unnecessary complexity. The corresponding code that adjusts the HTML\n // <link> is in updateHTML in app.ts.\n outputPaths: { app: `/assets/${this.name}.css` },\n registry: this.legacyEmberAppInstance.registry,\n minifyCSS: this.legacyEmberAppInstance.options.minifyCSS.options,\n };\n\n let nestedInput = buildFunnel(this.combinedStyles(addonTrees), { destDir: 'app/styles' });\n let styles = this.preprocessors.preprocessCss(nestedInput, '/app/styles', '/assets', options);\n\n return new AddToTree(styles, outputPath => {\n let addonMeta: AddonMeta = {\n type: 'addon',\n version: 2,\n 'public-assets': {},\n };\n let assetPath = join(outputPath, 'assets');\n if (pathExistsSync(assetPath)) {\n for (let file of walkSync(assetPath, { directories: false })) {\n addonMeta['public-assets']![`./assets/${file}`] = `/assets/${file}`;\n }\n }\n let meta: PackageInfo = {\n name: '@embroider/synthesized-styles',\n version: '0.0.0',\n keywords: ['ember-addon'],\n 'ember-addon': addonMeta,\n };\n writeJSONSync(join(outputPath, 'package.json'), meta, { spaces: 2 });\n });\n }\n\n // this is taken nearly verbatim from ember-cli.\n private applyCustomTransforms(externalTree: BroccoliNode) {\n for (let customTransformEntry of this.legacyEmberAppInstance._customTransformsMap) {\n let transformName = customTransformEntry[0];\n let transformConfig = customTransformEntry[1];\n\n let transformTree = buildFunnel(externalTree, {\n files: transformConfig.files,\n annotation: `Funnel (custom transform: ${transformName})`,\n });\n\n externalTree = mergeTrees([externalTree, transformConfig.callback(transformTree, transformConfig.options)], {\n annotation: `TreeMerger (custom transform: ${transformName})`,\n overwrite: true,\n });\n }\n return externalTree;\n }\n\n private remapAsset(asset: string) {\n if (this.transformedNodeFiles().has(asset)) {\n // transformed node assets become local paths, because we have copied\n // those ones into our synthesized vendor package.\n return './' + asset;\n }\n let preresolved = this.preresolvedNodeFile(asset);\n if (preresolved) {\n // non-transformed node assets point directly at their pre-resolved\n // original files (this is an absolute path).\n return preresolved;\n }\n // non node assets are local paths. They need an explicit `/` or `.` at\n // the start.\n if (asset.startsWith('.') || isAbsolute(asset)) {\n return asset;\n }\n return './' + asset;\n }\n\n get htmlbarsPlugins(): Transform[] {\n let plugins = loadAstPlugins(this.legacyEmberAppInstance.registry);\n // even if the app was using @embroider/macros, we drop it from the config\n // here in favor of our globally-configured one.\n plugins = plugins.filter((p: any) => !isEmbroiderMacrosPlugin(p));\n return plugins;\n }\n\n private get vendorTree(): BroccoliNode | undefined {\n return this.ensureTree(this.legacyEmberAppInstance.trees.vendor);\n }\n\n private ensureTree(maybeTree: string | BroccoliNode | undefined): BroccoliNode | undefined {\n if (typeof maybeTree === 'string') {\n // this is deliberately mimicking how ember-cli does it. We don't use\n // `this.root` on purpose, because that can differ from what ember-cli\n // considers the project.root. And we don't use path.resolve even though\n // that seems possibly more correct, because ember-cli always assumes the\n // input is relative.\n let resolvedPath = join(this.legacyEmberAppInstance.project.root, maybeTree);\n if (existsSync(resolvedPath)) {\n return new WatchedDir(maybeTree);\n } else {\n return undefined;\n }\n }\n return maybeTree;\n }\n\n @Memoize()\n private get preprocessors(): Preprocessors {\n return this.requireFromEmberCLI('ember-cli-preprocess-registry/preprocessors');\n }\n\n readonly macrosConfig: MacrosConfig;\n\n constructor(readonly legacyEmberAppInstance: EmberAppInstance, _options?: Options) {\n this.options = optionsWithDefaults(_options);\n\n this.macrosConfig = MacrosConfig.for(legacyEmberAppInstance, this.root);\n if (this.env !== 'production') {\n this.macrosConfig.enablePackageDevelopment(this.root);\n this.macrosConfig.enableRuntimeMode();\n if (this.isDummy) {\n // dummy apps automatically put their owning addon under development too\n this.macrosConfig.enablePackageDevelopment(\n dirname(pkgUpSync({ cwd: this.legacyEmberAppInstance.project.root })!)\n );\n }\n }\n\n // this uses globalConfig because it's a way for packages to ask \"is\n // Embroider doing this build?\". So it's necessarily global, not scoped to\n // any subgraph of dependencies.\n this.macrosConfig.setGlobalConfig(__filename, `@embroider/core`, {\n // this is hard-coded to true because it literally means \"embroider is\n // building this Ember app\". You can see non-true when using the Embroider\n // macros in a classic build.\n active: true,\n });\n }\n\n private inTrees(prevStageTree: BroccoliNode) {\n let configTree = this.config;\n let contentForTree = this.contentFor;\n\n return {\n configTree,\n contentForTree,\n prevStageTree,\n };\n }\n\n @Memoize()\n appPackage(): Package {\n // this is deliberately not RewrittenPackageCache, because it's supposed to\n // be the original copy of the app with all the original dependencies.\n let packageCache = PackageCache.shared('embroider', this.root);\n if (this.isDummy) {\n return new DummyPackage(\n this.root,\n this.legacyEmberAppInstance.project.root,\n packageCache as unknown as PackageCache // TODO: cast won't be needed when refactor is complete\n );\n } else {\n return packageCache.get(this.root);\n }\n }\n\n private async instantiate(\n packageCache: RewrittenPackageCache,\n configTree: V1Config,\n contentForTree: ContentForConfig\n ) {\n let origAppPkg = this.appPackage();\n let movedAppPkg = packageCache.withRewrittenDeps(origAppPkg);\n let workingDir = locateEmbroiderWorkingDir(this.root);\n return new CompatAppBuilder(\n origAppPkg,\n movedAppPkg,\n this.options,\n this,\n configTree,\n contentForTree,\n packageCache.get(join(workingDir, 'rewritten-packages', '@embroider', 'synthesized-vendor')),\n packageCache.get(join(workingDir, 'rewritten-packages', '@embroider', 'synthesized-styles'))\n );\n }\n\n asStage(prevStage: Stage): Stage {\n let resolve: (result: { outputPath: string }) => void;\n let promise: Promise<{ outputPath: string }> = new Promise(r => (resolve = r));\n\n let tree = () => {\n let inTrees = this.inTrees(prevStage.tree);\n return new WaitForTrees(inTrees, this.annotation, async _treePaths => {\n if (!this.active) {\n let { outputPath } = await prevStage.ready();\n let packageCache = RewrittenPackageCache.shared('embroider', this.root);\n this.active = await this.instantiate(packageCache, inTrees.configTree, inTrees.contentForTree);\n resolve({ outputPath });\n }\n await this.active.build();\n });\n };\n\n return {\n get inputPath() {\n return prevStage.inputPath;\n },\n ready: async () => {\n return await promise;\n },\n get tree() {\n return tree();\n },\n };\n }\n}\n\ninterface Preprocessors {\n preprocessJs(tree: BroccoliNode, a: string, b: string, options: object): BroccoliNode;\n preprocessCss(tree: BroccoliNode, a: string, b: string, options: object): BroccoliNode;\n}\n"]}
@@ -3,3 +3,4 @@ export declare function isEmberAutoImportDynamic(item: PluginItem): boolean;
3
3
  export declare function isCompactReexports(item: PluginItem): boolean;
4
4
  export declare function isColocationPlugin(item: PluginItem): boolean;
5
5
  export declare function isInlinePrecompilePlugin(item: PluginItem): boolean;
6
+ export declare function isHtmlbarColocation(item: PluginItem): boolean;
@@ -4,6 +4,7 @@ exports.isEmberAutoImportDynamic = isEmberAutoImportDynamic;
4
4
  exports.isCompactReexports = isCompactReexports;
5
5
  exports.isColocationPlugin = isColocationPlugin;
6
6
  exports.isInlinePrecompilePlugin = isInlinePrecompilePlugin;
7
+ exports.isHtmlbarColocation = isHtmlbarColocation;
7
8
  const path_1 = require("path");
8
9
  function isEmberAutoImportDynamic(item) {
9
10
  let pluginPath;
@@ -62,6 +63,19 @@ function isInlinePrecompilePlugin(item) {
62
63
  }
63
64
  return false;
64
65
  }
66
+ function isHtmlbarColocation(item) {
67
+ let pluginPath;
68
+ if (typeof item === 'string') {
69
+ pluginPath = item;
70
+ }
71
+ else if (Array.isArray(item) && item.length > 0 && typeof item[0] === 'string') {
72
+ pluginPath = item[0];
73
+ }
74
+ else {
75
+ return false;
76
+ }
77
+ return pluginPath.includes((0, path_1.join)(path_1.sep, 'ember-cli-htmlbars', path_1.sep, 'lib', path_1.sep, 'colocated-babel-plugin'));
78
+ }
65
79
  function matchesSourceFile(filename) {
66
80
  return Boolean(htmlbarPathMatches.find(match => filename.endsWith(match)));
67
81
  }
@@ -1 +1 @@
1
- {"version":3,"file":"detect-babel-plugins.js","sourceRoot":"","sources":["detect-babel-plugins.ts"],"names":[],"mappings":";;AAGA,4DAWC;AAED,gDAWC;AAED,gDAWC;AAGD,4DAgBC;AA1DD,+BAAiC;AAEjC,SAAgB,wBAAwB,CAAC,IAAgB;IACvD,IAAI,UAAkB,CAAC;IACvB,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE,CAAC;QAC7B,UAAU,GAAG,IAAI,CAAC;IACpB,CAAC;SAAM,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,IAAI,OAAO,IAAI,CAAC,CAAC,CAAC,KAAK,QAAQ,EAAE,CAAC;QACjF,UAAU,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;IACvB,CAAC;SAAM,CAAC;QACN,OAAO,KAAK,CAAC;IACf,CAAC;IAED,OAAO,UAAU,CAAC,QAAQ,CAAC,IAAA,WAAI,EAAC,UAAG,EAAE,mBAAmB,EAAE,UAAG,CAAC,CAAC,CAAC;AAClE,CAAC;AAED,SAAgB,kBAAkB,CAAC,IAAgB;IACjD,IAAI,UAAkB,CAAC;IACvB,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE,CAAC;QAC7B,UAAU,GAAG,IAAI,CAAC;IACpB,CAAC;SAAM,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,IAAI,OAAO,IAAI,CAAC,CAAC,CAAC,KAAK,QAAQ,EAAE,CAAC;QACjF,UAAU,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;IACvB,CAAC;SAAM,CAAC;QACN,OAAO,KAAK,CAAC;IACf,CAAC;IAED,OAAO,UAAU,CAAC,QAAQ,CAAC,IAAA,WAAI,EAAC,gCAAgC,EAAE,UAAG,CAAC,CAAC,CAAC;AAC1E,CAAC;AAED,SAAgB,kBAAkB,CAAC,IAAgB;IACjD,IAAI,UAAkB,CAAC;IACvB,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE,CAAC;QAC7B,UAAU,GAAG,IAAI,CAAC;IACpB,CAAC;SAAM,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,IAAI,OAAO,IAAI,CAAC,CAAC,CAAC,KAAK,QAAQ,EAAE,CAAC;QACjF,UAAU,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;IACvB,CAAC;SAAM,CAAC;QACN,OAAO,KAAK,CAAC;IACf,CAAC;IAED,OAAO,UAAU,CAAC,QAAQ,CAAC,IAAA,WAAI,EAAC,oBAAoB,EAAE,KAAK,EAAE,wBAAwB,EAAE,UAAG,CAAC,CAAC,CAAC;AAC/F,CAAC;AAED,0EAA0E;AAC1E,SAAgB,wBAAwB,CAAC,IAAgB;IACvD,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE,CAAC;QAC7B,OAAO,iBAAiB,CAAC,IAAI,CAAC,CAAC;IACjC,CAAC;IACD,IAAI,aAAa,CAAC,IAAI,CAAC,IAAK,IAAY,CAAC,cAAc,EAAE,CAAC;QACxD,OAAO,iBAAiB,CAAE,IAAY,CAAC,cAAc,CAAC,WAAW,CAAC,CAAC;IACrE,CAAC;IACD,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC3C,IAAI,OAAO,IAAI,CAAC,CAAC,CAAC,KAAK,QAAQ,EAAE,CAAC;YAChC,OAAO,iBAAiB,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;QACpC,CAAC;QACD,IAAI,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAK,IAAI,CAAC,CAAC,CAAS,CAAC,cAAc,EAAE,CAAC;YAC9D,OAAO,iBAAiB,CAAE,IAAI,CAAC,CAAC,CAAS,CAAC,cAAc,CAAC,WAAW,CAAC,CAAC;QACxE,CAAC;IACH,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED,SAAS,iBAAiB,CAAC,QAAgB;IACzC,OAAO,OAAO,CAAC,kBAAkB,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AAC7E,CAAC;AAED,SAAS,aAAa,CAAC,IAAS;IAC9B,OAAO,IAAI,IAAI,CAAC,OAAO,IAAI,KAAK,QAAQ,IAAI,OAAO,IAAI,KAAK,UAAU,CAAC,CAAC;AAC1E,CAAC;AAED,MAAM,kBAAkB,GAAG;IACzB,CAAC,4BAA4B,EAAE,UAAU,CAAC,CAAC,IAAI,CAAC,UAAG,CAAC;IACpD,CAAC,4BAA4B,EAAE,KAAK,EAAE,wBAAwB,CAAC,CAAC,IAAI,CAAC,UAAG,CAAC;IACzE,CAAC,4BAA4B,EAAE,OAAO,CAAC,CAAC,IAAI,CAAC,UAAG,CAAC;IACjD,CAAC,4BAA4B,EAAE,KAAK,EAAE,qBAAqB,CAAC,CAAC,IAAI,CAAC,UAAG,CAAC;IACtE,CAAC,oBAAoB,EAAE,UAAU,CAAC,CAAC,IAAI,CAAC,UAAG,CAAC;IAC5C,CAAC,oBAAoB,EAAE,KAAK,EAAE,wBAAwB,CAAC,CAAC,IAAI,CAAC,UAAG,CAAC;IACjE,CAAC,oBAAoB,EAAE,OAAO,CAAC,CAAC,IAAI,CAAC,UAAG,CAAC;IACzC,CAAC,oBAAoB,EAAE,KAAK,EAAE,qBAAqB,CAAC,CAAC,IAAI,CAAC,UAAG,CAAC;IAC9D,CAAC,yCAAyC,EAAE,KAAK,EAAE,cAAc,CAAC,CAAC,IAAI,CAAC,UAAG,CAAC;CAC7E,CAAC","sourcesContent":["import type { PluginItem } from '@babel/core';\nimport { join, sep } from 'path';\n\nexport function isEmberAutoImportDynamic(item: PluginItem): boolean {\n let pluginPath: string;\n if (typeof item === 'string') {\n pluginPath = item;\n } else if (Array.isArray(item) && item.length > 0 && typeof item[0] === 'string') {\n pluginPath = item[0];\n } else {\n return false;\n }\n\n return pluginPath.includes(join(sep, 'ember-auto-import', sep));\n}\n\nexport function isCompactReexports(item: PluginItem): boolean {\n let pluginPath: string;\n if (typeof item === 'string') {\n pluginPath = item;\n } else if (Array.isArray(item) && item.length > 0 && typeof item[0] === 'string') {\n pluginPath = item[0];\n } else {\n return false;\n }\n\n return pluginPath.includes(join('babel-plugin-compact-reexports', sep));\n}\n\nexport function isColocationPlugin(item: PluginItem): boolean {\n let pluginPath: string;\n if (typeof item === 'string') {\n pluginPath = item;\n } else if (Array.isArray(item) && item.length > 0 && typeof item[0] === 'string') {\n pluginPath = item[0];\n } else {\n return false;\n }\n\n return pluginPath.includes(join('ember-cli-htmlbars', 'lib', 'colocated-babel-plugin', sep));\n}\n\n// tests for the classic ember-cli-htmlbars-inline-precompile babel plugin\nexport function isInlinePrecompilePlugin(item: PluginItem) {\n if (typeof item === 'string') {\n return matchesSourceFile(item);\n }\n if (hasProperties(item) && (item as any)._parallelBabel) {\n return matchesSourceFile((item as any)._parallelBabel.requireFile);\n }\n if (Array.isArray(item) && item.length > 0) {\n if (typeof item[0] === 'string') {\n return matchesSourceFile(item[0]);\n }\n if (hasProperties(item[0]) && (item[0] as any)._parallelBabel) {\n return matchesSourceFile((item[0] as any)._parallelBabel.requireFile);\n }\n }\n return false;\n}\n\nfunction matchesSourceFile(filename: string) {\n return Boolean(htmlbarPathMatches.find(match => filename.endsWith(match)));\n}\n\nfunction hasProperties(item: any) {\n return item && (typeof item === 'object' || typeof item === 'function');\n}\n\nconst htmlbarPathMatches = [\n ['htmlbars-inline-precompile', 'index.js'].join(sep),\n ['htmlbars-inline-precompile', 'lib', 'require-from-worker.js'].join(sep),\n ['htmlbars-inline-precompile', 'index'].join(sep),\n ['htmlbars-inline-precompile', 'lib', 'require-from-worker'].join(sep),\n ['ember-cli-htmlbars', 'index.js'].join(sep),\n ['ember-cli-htmlbars', 'lib', 'require-from-worker.js'].join(sep),\n ['ember-cli-htmlbars', 'index'].join(sep),\n ['ember-cli-htmlbars', 'lib', 'require-from-worker'].join(sep),\n ['babel-plugin-ember-template-compilation', 'src', 'node-main.js'].join(sep),\n];\n"]}
1
+ {"version":3,"file":"detect-babel-plugins.js","sourceRoot":"","sources":["detect-babel-plugins.ts"],"names":[],"mappings":"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","sourcesContent":["import type { PluginItem } from '@babel/core';\nimport { join, sep } from 'path';\n\nexport function isEmberAutoImportDynamic(item: PluginItem): boolean {\n let pluginPath: string;\n if (typeof item === 'string') {\n pluginPath = item;\n } else if (Array.isArray(item) && item.length > 0 && typeof item[0] === 'string') {\n pluginPath = item[0];\n } else {\n return false;\n }\n\n return pluginPath.includes(join(sep, 'ember-auto-import', sep));\n}\n\nexport function isCompactReexports(item: PluginItem): boolean {\n let pluginPath: string;\n if (typeof item === 'string') {\n pluginPath = item;\n } else if (Array.isArray(item) && item.length > 0 && typeof item[0] === 'string') {\n pluginPath = item[0];\n } else {\n return false;\n }\n\n return pluginPath.includes(join('babel-plugin-compact-reexports', sep));\n}\n\nexport function isColocationPlugin(item: PluginItem): boolean {\n let pluginPath: string;\n if (typeof item === 'string') {\n pluginPath = item;\n } else if (Array.isArray(item) && item.length > 0 && typeof item[0] === 'string') {\n pluginPath = item[0];\n } else {\n return false;\n }\n\n return pluginPath.includes(join('ember-cli-htmlbars', 'lib', 'colocated-babel-plugin', sep));\n}\n\n// tests for the classic ember-cli-htmlbars-inline-precompile babel plugin\nexport function isInlinePrecompilePlugin(item: PluginItem) {\n if (typeof item === 'string') {\n return matchesSourceFile(item);\n }\n if (hasProperties(item) && (item as any)._parallelBabel) {\n return matchesSourceFile((item as any)._parallelBabel.requireFile);\n }\n if (Array.isArray(item) && item.length > 0) {\n if (typeof item[0] === 'string') {\n return matchesSourceFile(item[0]);\n }\n if (hasProperties(item[0]) && (item[0] as any)._parallelBabel) {\n return matchesSourceFile((item[0] as any)._parallelBabel.requireFile);\n }\n }\n return false;\n}\n\nexport function isHtmlbarColocation(item: PluginItem): boolean {\n let pluginPath: string;\n if (typeof item === 'string') {\n pluginPath = item;\n } else if (Array.isArray(item) && item.length > 0 && typeof item[0] === 'string') {\n pluginPath = item[0];\n } else {\n return false;\n }\n\n return pluginPath.includes(join(sep, 'ember-cli-htmlbars', sep, 'lib', sep, 'colocated-babel-plugin'));\n}\n\nfunction matchesSourceFile(filename: string) {\n return Boolean(htmlbarPathMatches.find(match => filename.endsWith(match)));\n}\n\nfunction hasProperties(item: any) {\n return item && (typeof item === 'object' || typeof item === 'function');\n}\n\nconst htmlbarPathMatches = [\n ['htmlbars-inline-precompile', 'index.js'].join(sep),\n ['htmlbars-inline-precompile', 'lib', 'require-from-worker.js'].join(sep),\n ['htmlbars-inline-precompile', 'index'].join(sep),\n ['htmlbars-inline-precompile', 'lib', 'require-from-worker'].join(sep),\n ['ember-cli-htmlbars', 'index.js'].join(sep),\n ['ember-cli-htmlbars', 'lib', 'require-from-worker.js'].join(sep),\n ['ember-cli-htmlbars', 'index'].join(sep),\n ['ember-cli-htmlbars', 'lib', 'require-from-worker'].join(sep),\n ['babel-plugin-ember-template-compilation', 'src', 'node-main.js'].join(sep),\n];\n"]}
@@ -14,7 +14,6 @@ const dependency_rules_1 = require("./dependency-rules");
14
14
  const typescript_memoize_1 = require("typescript-memoize");
15
15
  const assert_never_1 = __importDefault(require("assert-never"));
16
16
  const path_1 = require("path");
17
- const fs_extra_1 = require("fs-extra");
18
17
  const dasherize_component_name_1 = require("./dasherize-component-name");
19
18
  const core_1 = require("@embroider/core");
20
19
  const lodash_1 = require("lodash");
@@ -806,7 +805,8 @@ __decorate([
806
805
  ], TemplateResolver.prototype, "rules", null);
807
806
  // This is the AST transform that resolves components, helpers and modifiers at build time
808
807
  function makeResolverTransform({ appRoot, emberVersion }) {
809
- let config = (0, fs_extra_1.readJSONSync)((0, path_1.join)((0, core_1.locateEmbroiderWorkingDir)(appRoot), 'resolver.json'));
808
+ let loader = new core_1.ResolverLoader(appRoot);
809
+ let config = loader.resolver.options;
810
810
  const resolverTransform = env => {
811
811
  if (env.strictMode) {
812
812
  return {