@embroider/compat 1.8.3 → 2.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (36) hide show
  1. package/package.json +7 -8
  2. package/src/audit/capture.d.ts +1 -0
  3. package/src/compat-adapters/ember-cli-fastboot.d.ts +1 -1
  4. package/src/compat-adapters/ember-cli-fastboot.js.map +1 -1
  5. package/src/compat-addons.js +10 -1
  6. package/src/compat-addons.js.map +1 -1
  7. package/src/compat-app.js +12 -38
  8. package/src/compat-app.js.map +1 -1
  9. package/src/dasherize-component-name.d.ts +1 -0
  10. package/src/dasherize-component-name.js +10 -1
  11. package/src/dasherize-component-name.js.map +1 -1
  12. package/src/default-pipeline.js +2 -2
  13. package/src/default-pipeline.js.map +1 -1
  14. package/src/dependency-rules.js +6 -1
  15. package/src/dependency-rules.js.map +1 -1
  16. package/src/{template-compiler-broccoli-plugin.d.ts → hbs-to-js-broccoli-plugin.d.ts} +2 -4
  17. package/src/hbs-to-js-broccoli-plugin.js +39 -0
  18. package/src/hbs-to-js-broccoli-plugin.js.map +1 -0
  19. package/src/moved-package-cache.js +5 -1
  20. package/src/moved-package-cache.js.map +1 -1
  21. package/src/resolver-transform.d.ts +11 -27
  22. package/src/resolver-transform.js +163 -65
  23. package/src/resolver-transform.js.map +1 -1
  24. package/src/resolver.d.ts +26 -27
  25. package/src/resolver.js +125 -169
  26. package/src/resolver.js.map +1 -1
  27. package/src/synthesize-template-only-components.js +8 -8
  28. package/src/synthesize-template-only-components.js.map +1 -1
  29. package/src/v1-addon.d.ts +2 -26
  30. package/src/v1-addon.js +29 -68
  31. package/src/v1-addon.js.map +1 -1
  32. package/src/v1-app.d.ts +3 -2
  33. package/src/v1-app.js +11 -3
  34. package/src/v1-app.js.map +1 -1
  35. package/src/template-compiler-broccoli-plugin.js +0 -28
  36. package/src/template-compiler-broccoli-plugin.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"resolver.js","sourceRoot":"","sources":["resolver.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n ActivePackageRules,\n ComponentRules,\n ModuleRules,\n PackageRules,\n PreprocessedComponentRule,\n preprocessComponentRule,\n} from './dependency-rules';\nimport {\n Package,\n PackageCache,\n Resolver,\n TemplateCompiler,\n explicitRelative,\n extensionsPattern,\n} from '@embroider/core';\nimport { dirname, join, relative, sep } from 'path';\n\nimport { Options as AdjustImportsOptions } from '@embroider/core/src/babel-plugin-adjust-imports';\nimport { Memoize } from 'typescript-memoize';\nimport Options from './options';\nimport { ResolvedDep } from '@embroider/core/src/resolver';\nimport { dasherize } from './dasherize-component-name';\nimport { makeResolverTransform } from './resolver-transform';\nimport { pathExistsSync } from 'fs-extra';\nimport resolve from 'resolve';\nimport type { ASTv1 } from '@glimmer/syntax';\n\nexport interface ComponentResolution {\n type: 'component';\n modules: ResolvedDep[];\n yieldsComponents: Required<ComponentRules>['yieldsSafeComponents'];\n yieldsArguments: Required<ComponentRules>['yieldsArguments'];\n argumentsAreComponents: string[];\n}\n\nexport interface HelperResolution {\n type: 'helper';\n modules: ResolvedDep[];\n}\n\nexport interface ModifierResolution {\n type: 'modifier';\n modules: ResolvedDep[];\n}\n\nexport type ResolutionResult = ComponentResolution | HelperResolution | ModifierResolution;\n\nexport interface ResolutionFail {\n type: 'error';\n message: string;\n detail: string;\n loc: Loc;\n}\n\ninterface ResolverDependencyError extends Error {\n isTemplateResolverError?: boolean;\n loc?: Loc;\n moduleName?: string;\n}\n\nexport type Resolution = ResolutionResult | ResolutionFail;\n\nexport interface Loc {\n start: { line: number; column: number };\n end: { line: number; column: number };\n}\n\n// TODO: this depends on the ember version. And it's probably missing some\n// private-but-used values.\nconst builtInHelpers = [\n '-get-dynamic-var',\n '-in-element',\n 'in-element',\n '-with-dynamic-vars',\n 'action',\n 'array',\n 'component',\n 'concat',\n 'debugger',\n 'each',\n 'each-in',\n 'fn',\n 'get',\n 'has-block',\n 'has-block-params',\n 'hasBlock',\n 'hasBlockParams',\n 'hash',\n 'helper',\n 'if',\n 'input',\n 'let',\n 'link-to',\n 'loc',\n 'log',\n 'modifier',\n 'mount',\n 'mut',\n 'on',\n 'outlet',\n 'partial',\n 'query-params',\n 'readonly',\n 'textarea',\n 'unbound',\n 'unless',\n 'with',\n 'yield',\n];\n\nconst builtInComponents = ['input', 'link-to', 'textarea'];\nconst builtInModifiers = ['action', 'on'];\n\n// this is a subset of the full Options. We care about serializability, and we\n// only needs parts that are easily serializable, which is why we don't keep the\n// whole thing.\ntype ResolverOptions = Pick<\n Required<Options>,\n 'staticHelpers' | 'staticModifiers' | 'staticComponents' | 'allowUnsafeDynamicComponents'\n>;\n\nfunction extractOptions(options: Required<Options> | ResolverOptions): ResolverOptions {\n return {\n staticHelpers: options.staticHelpers,\n staticModifiers: options.staticModifiers,\n staticComponents: options.staticComponents,\n allowUnsafeDynamicComponents: options.allowUnsafeDynamicComponents,\n };\n}\n\ninterface RehydrationParamsBase {\n root: string;\n modulePrefix: string;\n podModulePrefix?: string;\n options: ResolverOptions;\n activePackageRules: ActivePackageRules[];\n}\n\ninterface RehydrationParamsWithFile extends RehydrationParamsBase {\n adjustImportsOptionsPath: string;\n}\n\ninterface RehydrationParamsWithOptions extends RehydrationParamsBase {\n adjustImportsOptions: AdjustImportsOptions;\n}\n\ntype RehydrationParams = RehydrationParamsWithFile | RehydrationParamsWithOptions;\n\nexport function rehydrate(params: RehydrationParams) {\n return new CompatResolver(params);\n}\n\nexport interface AuditMessage {\n message: string;\n detail: string;\n loc: Loc;\n source: string;\n filename: string;\n}\n\nexport default class CompatResolver implements Resolver {\n private dependencies: Map<string, Resolution[]> = new Map();\n private templateCompiler: TemplateCompiler | undefined;\n private auditHandler: undefined | ((msg: AuditMessage) => void);\n private currentContents: string | undefined;\n\n _parallelBabel: {\n requireFile: string;\n buildUsing: string;\n params: RehydrationParams;\n };\n\n constructor(private params: RehydrationParams) {\n this.params.options = extractOptions(this.params.options);\n this._parallelBabel = {\n requireFile: __filename,\n buildUsing: 'rehydrate',\n params,\n };\n if ((globalThis as any).embroider_audit) {\n this.auditHandler = (globalThis as any).embroider_audit;\n }\n }\n\n enter(moduleName: string, contents: string) {\n let rules = this.findComponentRules(moduleName);\n let deps: Resolution[];\n if (rules?.dependsOnComponents) {\n deps = rules.dependsOnComponents.map(snippet => this.resolveComponentSnippet(snippet, rules!, moduleName));\n } else {\n deps = [];\n }\n this.dependencies.set(moduleName, deps);\n this.currentContents = contents;\n }\n\n private add(resolution: Resolution, from: string) {\n // this \"!\" is safe because we always `enter()` a module before hitting this\n this.dependencies.get(from)!.push(resolution);\n return resolution;\n }\n\n private findComponentRules(absPath: string): PreprocessedComponentRule | undefined {\n let rules = this.rules.components.get(absPath);\n if (rules) {\n return rules;\n }\n\n // co-located templates aren't visible to the resolver, because they never\n // get resolved from a template (they are always handled directly by the\n // corresponding JS module, which the resolver *does* see). This means their\n // paths won't ever be in `this.rules.components`. But we do want them to\n // \"inherit\" the rules that are attached to their corresonding JS module.\n if (absPath.endsWith('.hbs')) {\n let stem = absPath.slice(0, -4);\n for (let ext of this.adjustImportsOptions.resolvableExtensions) {\n if (ext !== '.hbs') {\n let rules = this.rules.components.get(stem + ext);\n if (rules) {\n return rules;\n }\n }\n }\n }\n return undefined;\n }\n\n private isIgnoredComponent(dasherizedName: string) {\n return this.rules.ignoredComponents.includes(dasherizedName);\n }\n\n @Memoize()\n get adjustImportsOptions(): AdjustImportsOptions {\n const { params } = this;\n return 'adjustImportsOptionsPath' in params\n ? // eslint-disable-next-line @typescript-eslint/no-require-imports\n require(params.adjustImportsOptionsPath)\n : params.adjustImportsOptions;\n }\n\n @Memoize()\n private get rules() {\n if (!this.templateCompiler) {\n throw new Error(\n `Bug: Resolver needs to get linked into a TemplateCompiler before it can understand packageRules`\n );\n }\n\n // keyed by their first resolved dependency's runtimeName.\n let components: Map<string, PreprocessedComponentRule> = new Map();\n\n // keyed by our own dasherized interpretation of the component's name.\n let ignoredComponents: string[] = [];\n\n // we're not responsible for filtering out rules for inactive packages here,\n // that is done before getting to us. So we should assume these are all in\n // force.\n for (let rule of this.params.activePackageRules) {\n if (rule.components) {\n for (let [snippet, componentRules] of Object.entries(rule.components)) {\n if (componentRules.safeToIgnore) {\n ignoredComponents.push(this.standardDasherize(snippet, rule));\n continue;\n }\n let resolvedDep = this.resolveComponentSnippet(snippet, rule).modules[0];\n let processedRules = preprocessComponentRule(componentRules);\n\n // we always register our rules on the component's own first resolved\n // module, which must be a module in the app's module namespace.\n components.set(resolvedDep.absPath, processedRules);\n\n // if there's a custom layout, we also need to register our rules on\n // those templates.\n if (componentRules.layout) {\n if (componentRules.layout.appPath) {\n components.set(join(this.params.root, componentRules.layout.appPath), processedRules);\n } else if (componentRules.layout.addonPath) {\n for (let root of rule.roots) {\n components.set(join(root, componentRules.layout.addonPath), processedRules);\n }\n } else {\n throw new Error(\n `layout property in component rule must contain either appPath or addonPath: ${JSON.stringify(\n rule,\n null,\n 2\n )}`\n );\n }\n }\n }\n }\n if (rule.appTemplates) {\n for (let [path, templateRules] of Object.entries(rule.appTemplates)) {\n let processedRules = preprocessComponentRule(templateRules);\n components.set(join(this.params.root, path), processedRules);\n }\n }\n if (rule.addonTemplates) {\n for (let [path, templateRules] of Object.entries(rule.addonTemplates)) {\n let processedRules = preprocessComponentRule(templateRules);\n for (let root of rule.roots) {\n components.set(join(root, path), processedRules);\n }\n }\n }\n }\n return { components, ignoredComponents };\n }\n\n resolveComponentSnippet(\n snippet: string,\n rule: PackageRules | ModuleRules,\n from = 'rule-snippet.hbs'\n ): ResolutionResult & { type: 'component' } {\n if (!this.templateCompiler) {\n throw new Error(`bug: tried to use resolveComponentSnippet without a templateCompiler`);\n }\n let name = this.standardDasherize(snippet, rule);\n let found = this.tryComponent(name, from, false);\n if (found && found.type === 'component') {\n return found;\n }\n throw new Error(`unable to locate component ${snippet} referred to in rule ${JSON.stringify(rule, null, 2)}`);\n }\n\n private standardDasherize(snippet: string, rule: PackageRules | ModuleRules): string {\n if (!this.templateCompiler) {\n throw new Error(`bug: tried to use resolveComponentSnippet without a templateCompiler`);\n }\n let ast: ASTv1.Template | ASTv1.Program;\n try {\n ast = this.templateCompiler.parse('snippet.hbs', snippet) as unknown as ASTv1.Template | ASTv1.Program;\n } catch (err) {\n throw new Error(`unable to parse component snippet \"${snippet}\" from rule ${JSON.stringify(rule, null, 2)}`);\n }\n if ((ast.type === 'Program' || ast.type === 'Template') && ast.body.length > 0) {\n let first = ast.body[0];\n const isMustachePath = first.type === 'MustacheStatement' && first.path.type === 'PathExpression';\n const isComponent =\n isMustachePath && ((first as ASTv1.MustacheStatement).path as ASTv1.PathExpression).original === 'component';\n const hasStringParam =\n isComponent &&\n Array.isArray((first as ASTv1.MustacheStatement).params) &&\n (first as ASTv1.MustacheStatement).params[0].type === 'StringLiteral';\n if (isMustachePath && isComponent && hasStringParam) {\n return ((first as ASTv1.MustacheStatement).params[0] as ASTv1.StringLiteral).value;\n }\n if (isMustachePath) {\n return ((first as ASTv1.MustacheStatement).path as ASTv1.PathExpression).original;\n }\n if (first.type === 'ElementNode') {\n return dasherize(first.tag);\n }\n }\n throw new Error(`cannot identify a component in rule snippet: \"${snippet}\"`);\n }\n\n astTransformer(templateCompiler: TemplateCompiler): unknown {\n this.templateCompiler = templateCompiler;\n if (this.staticComponentsEnabled || this.staticHelpersEnabled || this.staticModifiersEnabled) {\n return makeResolverTransform(this);\n }\n }\n\n dependenciesOf(moduleName: string): ResolvedDep[] {\n let flatDeps: Map<string, ResolvedDep> = new Map();\n let deps = this.dependencies.get(moduleName);\n if (deps) {\n for (let dep of deps) {\n if (dep.type === 'error') {\n if (!this.auditHandler && !this.params.options.allowUnsafeDynamicComponents) {\n let e: ResolverDependencyError = new Error(\n `${dep.message}: ${dep.detail} in ${humanReadableFile(this.params.root, moduleName)}`\n );\n e.isTemplateResolverError = true;\n e.loc = dep.loc;\n e.moduleName = moduleName;\n throw e;\n }\n if (this.auditHandler) {\n this.auditHandler({\n message: dep.message,\n filename: moduleName,\n detail: dep.detail,\n loc: dep.loc,\n source: this.currentContents!,\n });\n }\n } else {\n for (let entry of dep.modules) {\n let { runtimeName } = entry;\n flatDeps.set(runtimeName, entry);\n }\n }\n }\n }\n return [...flatDeps.values()];\n }\n\n resolveImport(path: string, from: string): { runtimeName: string; absPath: string } | undefined {\n let absPath;\n try {\n absPath = resolve.sync(path, {\n basedir: dirname(from),\n extensions: this.adjustImportsOptions.resolvableExtensions,\n });\n } catch (err) {\n return;\n }\n if (absPath) {\n let runtimeName = this.absPathToRuntimeName(absPath);\n if (runtimeName) {\n return { runtimeName, absPath };\n }\n }\n }\n\n @Memoize()\n private get resolvableExtensionsPattern() {\n return extensionsPattern(this.adjustImportsOptions.resolvableExtensions);\n }\n\n absPathToRuntimePath(absPath: string, owningPackage?: { root: string; name: string }) {\n let pkg = owningPackage || PackageCache.shared('embroider-stage3', this.params.root).ownerOfFile(absPath);\n if (pkg) {\n let packageRuntimeName = pkg.name;\n for (let [runtimeName, realName] of Object.entries(this.adjustImportsOptions.renamePackages)) {\n if (realName === packageRuntimeName) {\n packageRuntimeName = runtimeName;\n break;\n }\n }\n return join(packageRuntimeName, relative(pkg.root, absPath)).split(sep).join('/');\n } else if (absPath.startsWith(this.params.root)) {\n return join(this.params.modulePrefix, relative(this.params.root, absPath)).split(sep).join('/');\n } else {\n throw new Error(`bug: can't figure out the runtime name for ${absPath}`);\n }\n }\n\n absPathToRuntimeName(absPath: string, owningPackage?: { root: string; name: string }) {\n return this.absPathToRuntimePath(absPath, owningPackage)\n .replace(this.resolvableExtensionsPattern, '')\n .replace(/\\/index$/, '');\n }\n\n private get staticComponentsEnabled(): boolean {\n return this.params.options.staticComponents || Boolean(this.auditHandler);\n }\n\n private get staticHelpersEnabled(): boolean {\n return this.params.options.staticHelpers || Boolean(this.auditHandler);\n }\n\n private get staticModifiersEnabled(): boolean {\n return this.params.options.staticModifiers || Boolean(this.auditHandler);\n }\n\n private tryHelper(path: string, from: string): Resolution | null {\n let parts = path.split('@');\n if (parts.length > 1 && parts[0].length > 0) {\n let cache = PackageCache.shared('embroider-stage3', this.params.root);\n let packageName = parts[0];\n let renamed = this.adjustImportsOptions.renamePackages[packageName];\n if (renamed) {\n packageName = renamed;\n }\n let owner = cache.ownerOfFile(from)!;\n let targetPackage = owner.name === packageName ? owner : cache.resolve(packageName, owner);\n return this._tryHelper(parts[1], from, targetPackage);\n } else {\n return this._tryHelper(path, from, this.appPackage);\n }\n }\n\n private _tryHelper(path: string, from: string, targetPackage: Package | AppPackagePlaceholder): Resolution | null {\n for (let extension of this.adjustImportsOptions.resolvableExtensions) {\n let absPath = join(targetPackage.root, 'helpers', path) + extension;\n if (pathExistsSync(absPath)) {\n return {\n type: 'helper',\n modules: [\n {\n runtimeName: this.absPathToRuntimeName(absPath, targetPackage),\n path: explicitRelative(dirname(from), absPath),\n absPath,\n },\n ],\n };\n }\n }\n return null;\n }\n\n private tryModifier(path: string, from: string): Resolution | null {\n let parts = path.split('@');\n if (parts.length > 1 && parts[0].length > 0) {\n let cache = PackageCache.shared('embroider-stage3', this.params.root);\n let packageName = parts[0];\n let renamed = this.adjustImportsOptions.renamePackages[packageName];\n if (renamed) {\n packageName = renamed;\n }\n let owner = cache.ownerOfFile(from)!;\n let targetPackage = owner.name === packageName ? owner : cache.resolve(packageName, owner);\n return this._tryModifier(parts[1], from, targetPackage);\n } else {\n return this._tryModifier(path, from, this.appPackage);\n }\n }\n\n private _tryModifier(path: string, from: string, targetPackage: Package | AppPackagePlaceholder): Resolution | null {\n for (let extension of this.adjustImportsOptions.resolvableExtensions) {\n let absPath = join(targetPackage.root, 'modifiers', path) + extension;\n if (pathExistsSync(absPath)) {\n return {\n type: 'modifier',\n modules: [\n {\n runtimeName: this.absPathToRuntimeName(absPath, targetPackage),\n path: explicitRelative(dirname(from), absPath),\n absPath,\n },\n ],\n };\n }\n }\n return null;\n }\n\n @Memoize()\n private get appPackage(): AppPackagePlaceholder {\n return { root: this.params.root, name: this.params.modulePrefix };\n }\n\n private tryComponent(path: string, from: string, withRuleLookup = true): Resolution | null {\n let parts = path.split('@');\n if (parts.length > 1 && parts[0].length > 0) {\n let cache = PackageCache.shared('embroider-stage3', this.params.root);\n let packageName = parts[0];\n let renamed = this.adjustImportsOptions.renamePackages[packageName];\n if (renamed) {\n packageName = renamed;\n }\n let owner = cache.ownerOfFile(from)!;\n let targetPackage = owner.name === packageName ? owner : cache.resolve(packageName, owner);\n\n return this._tryComponent(parts[1], from, withRuleLookup, targetPackage);\n } else {\n return this._tryComponent(path, from, withRuleLookup, this.appPackage);\n }\n }\n\n private _tryComponent(\n path: string,\n from: string,\n withRuleLookup: boolean,\n targetPackage: Package | AppPackagePlaceholder\n ): Resolution | null {\n // The order here is important! We always put our .hbs paths first here, so\n // that if we have an hbs file of our own, that will be the first resolved\n // dependency. The first resolved dependency is special because we use that\n // as a key into the rules, and we want to be able to find our rules when\n // checking from our own template (among other times).\n\n let extensions = ['.hbs', ...this.adjustImportsOptions.resolvableExtensions.filter((e: string) => e !== '.hbs')];\n\n let componentModules = [] as string[];\n\n // first, the various places our template might be\n for (let extension of extensions) {\n let absPath = join(targetPackage.root, 'templates', 'components', path) + extension;\n if (pathExistsSync(absPath)) {\n componentModules.push(absPath);\n break;\n }\n\n absPath = join(targetPackage.root, 'components', path, 'template') + extension;\n if (pathExistsSync(absPath)) {\n componentModules.push(absPath);\n break;\n }\n\n if (\n typeof this.params.podModulePrefix !== 'undefined' &&\n this.params.podModulePrefix !== '' &&\n targetPackage === this.appPackage\n ) {\n let podPrefix = this.params.podModulePrefix.replace(this.params.modulePrefix, '');\n\n absPath = join(targetPackage.root, podPrefix, 'components', path, 'template') + extension;\n if (pathExistsSync(absPath)) {\n componentModules.push(absPath);\n break;\n }\n }\n }\n\n // then the various places our javascript might be\n for (let extension of extensions) {\n if (extension === '.hbs') {\n continue;\n }\n\n let absPath = join(targetPackage.root, 'components', path, 'index') + extension;\n if (pathExistsSync(absPath)) {\n componentModules.push(absPath);\n break;\n }\n\n absPath = join(targetPackage.root, 'components', path) + extension;\n if (pathExistsSync(absPath)) {\n componentModules.push(absPath);\n break;\n }\n\n absPath = join(targetPackage.root, 'components', path, 'component') + extension;\n if (pathExistsSync(absPath)) {\n componentModules.push(absPath);\n break;\n }\n\n if (\n typeof this.params.podModulePrefix !== 'undefined' &&\n this.params.podModulePrefix !== '' &&\n targetPackage === this.appPackage\n ) {\n let podPrefix = this.params.podModulePrefix.replace(this.params.modulePrefix, '');\n\n absPath = join(targetPackage.root, podPrefix, 'components', path, 'component') + extension;\n if (pathExistsSync(absPath)) {\n componentModules.push(absPath);\n break;\n }\n }\n }\n\n if (componentModules.length > 0) {\n let componentRules;\n if (withRuleLookup) {\n componentRules = this.findComponentRules(componentModules[0]);\n }\n return {\n type: 'component',\n modules: componentModules.map(absPath => ({\n path: explicitRelative(dirname(from), absPath),\n absPath,\n runtimeName: this.absPathToRuntimeName(absPath, targetPackage),\n })),\n yieldsComponents: componentRules ? componentRules.yieldsSafeComponents : [],\n yieldsArguments: componentRules ? componentRules.yieldsArguments : [],\n argumentsAreComponents: componentRules ? componentRules.argumentsAreComponents : [],\n };\n }\n\n return null;\n }\n\n resolveSubExpression(path: string, from: string, loc: Loc): Resolution | null {\n if (!this.staticHelpersEnabled) {\n return null;\n }\n let found = this.tryHelper(path, from);\n if (found) {\n return this.add(found, from);\n }\n if (builtInHelpers.includes(path)) {\n return null;\n }\n return this.add(\n {\n type: 'error',\n message: `Missing helper`,\n detail: path,\n loc,\n },\n from\n );\n }\n\n resolveMustache(path: string, hasArgs: boolean, from: string, loc: Loc): Resolution | null {\n if (this.staticHelpersEnabled) {\n let found = this.tryHelper(path, from);\n if (found) {\n return this.add(found, from);\n }\n }\n if (this.staticComponentsEnabled) {\n let found = this.tryComponent(path, from);\n if (found) {\n return this.add(found, from);\n }\n }\n if (\n hasArgs &&\n this.staticComponentsEnabled &&\n this.staticHelpersEnabled &&\n !builtInHelpers.includes(path) &&\n !this.isIgnoredComponent(path)\n ) {\n return this.add(\n {\n type: 'error',\n message: `Missing component or helper`,\n detail: path,\n loc,\n },\n from\n );\n } else {\n return null;\n }\n }\n\n resolveElementModifierStatement(path: string, from: string, loc: Loc): Resolution | null {\n if (!this.staticModifiersEnabled) {\n return null;\n }\n let found = this.tryModifier(path, from);\n if (found) {\n return this.add(found, from);\n }\n if (builtInModifiers.includes(path)) {\n return null;\n }\n return this.add(\n {\n type: 'error',\n message: `Missing modifier`,\n detail: path,\n loc,\n },\n from\n );\n }\n\n resolveElement(tagName: string, from: string, loc: Loc): Resolution | null {\n if (!this.staticComponentsEnabled) {\n return null;\n }\n\n if (tagName[0] === tagName[0].toLowerCase()) {\n // starts with lower case, so this can't be a component we need to\n // globally resolve\n return null;\n }\n\n let dName = dasherize(tagName);\n\n if (builtInComponents.includes(dName)) {\n return null;\n }\n\n let found = this.tryComponent(dName, from);\n if (found) {\n return this.add(found, from);\n }\n\n if (this.isIgnoredComponent(dName)) {\n return null;\n }\n\n return this.add(\n {\n type: 'error',\n message: `Missing component`,\n detail: tagName,\n loc,\n },\n from\n );\n }\n\n resolveComponentHelper(\n component: ComponentLocator,\n from: string,\n loc: Loc,\n impliedBecause?: { componentName: string; argumentName: string }\n ): Resolution | null {\n if (!this.staticComponentsEnabled) {\n return null;\n }\n\n let message;\n if (impliedBecause) {\n message = `argument \"${impliedBecause.argumentName}\" to component \"${impliedBecause.componentName}\" is treated as a component, but the value you're passing is dynamic`;\n } else {\n message = `Unsafe dynamic component`;\n }\n\n if (component.type === 'other') {\n return this.add(\n {\n type: 'error',\n message,\n detail: `cannot statically analyze this expression`,\n loc,\n },\n from\n );\n }\n if (component.type === 'path') {\n let ownComponentRules = this.findComponentRules(from);\n if (ownComponentRules && ownComponentRules.safeInteriorPaths.includes(component.path)) {\n return null;\n }\n return this.add(\n {\n type: 'error',\n message,\n detail: component.path,\n loc,\n },\n from\n );\n }\n\n if (builtInComponents.includes(component.path)) {\n return null;\n }\n\n let found = this.tryComponent(component.path, from);\n if (found) {\n return this.add(found, from);\n }\n return this.add(\n {\n type: 'error',\n message: `Missing component`,\n detail: component.path,\n loc,\n },\n from\n );\n }\n\n resolveDynamicHelper(helper: ComponentLocator, from: string, loc: Loc): Resolution | null {\n if (!this.staticHelpersEnabled) {\n return null;\n }\n\n if (helper.type === 'literal') {\n let helperName = helper.path;\n if (builtInHelpers.includes(helperName)) {\n return null;\n }\n\n let found = this.tryHelper(helperName, from);\n if (found) {\n return this.add(found, from);\n }\n return this.add(\n {\n type: 'error',\n message: `Missing helper`,\n detail: helperName,\n loc,\n },\n from\n );\n } else {\n return this.add(\n {\n type: 'error',\n message: 'Unsafe dynamic helper',\n detail: `cannot statically analyze this expression`,\n loc,\n },\n from\n );\n }\n }\n\n resolveDynamicModifier(modifier: ComponentLocator, from: string, loc: Loc): Resolution | null {\n if (!this.staticModifiersEnabled) {\n return null;\n }\n\n if (modifier.type === 'literal') {\n let modifierName = modifier.path;\n if (builtInModifiers.includes(modifierName)) {\n return null;\n }\n\n let found = this.tryModifier(modifierName, from);\n if (found) {\n return this.add(found, from);\n }\n return this.add(\n {\n type: 'error',\n message: `Missing modifier`,\n detail: modifierName,\n loc,\n },\n from\n );\n } else {\n return this.add(\n {\n type: 'error',\n message: 'Unsafe dynamic modifier',\n detail: `cannot statically analyze this expression`,\n loc,\n },\n from\n );\n }\n }\n}\n\nfunction humanReadableFile(root: string, file: string) {\n if (!root.endsWith('/')) {\n root += '/';\n }\n if (file.startsWith(root)) {\n return file.slice(root.length);\n }\n return file;\n}\n\n// we don't have a real Package for the app itself because the resolver has work\n// to do before we have even written out the app's own package.json and\n// therefore made it into a fully functional Package.\ninterface AppPackagePlaceholder {\n root: string;\n name: string;\n}\n\nexport type ComponentLocator =\n | {\n type: 'literal';\n path: string;\n }\n | {\n type: 'path';\n path: string;\n }\n | {\n type: 'other';\n };\n"]}
1
+ {"version":3,"file":"resolver.js","sourceRoot":"","sources":["resolver.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n ActivePackageRules,\n ComponentRules,\n ModuleRules,\n PackageRules,\n PreprocessedComponentRule,\n preprocessComponentRule,\n} from './dependency-rules';\nimport { Package, PackageCache, explicitRelative, extensionsPattern } from '@embroider/core';\nimport { dirname, join, relative, sep } from 'path';\n\nimport { Options as AdjustImportsOptions } from '@embroider/core/src/babel-plugin-adjust-imports';\nimport { Memoize } from 'typescript-memoize';\nimport Options from './options';\nimport { dasherize, snippetToDasherizedName } from './dasherize-component-name';\nimport { pathExistsSync } from 'fs-extra';\nimport resolve from 'resolve';\nimport semver from 'semver';\nimport { Options as ResolverTransformOptions } from './resolver-transform';\n\nexport interface ResolvedDep {\n runtimeName: string;\n path: string;\n absPath: string;\n}\n\nexport interface ComponentResolution {\n type: 'component';\n jsModule: ResolvedDep | null;\n hbsModule: ResolvedDep | null;\n yieldsComponents: Required<ComponentRules>['yieldsSafeComponents'];\n yieldsArguments: Required<ComponentRules>['yieldsArguments'];\n argumentsAreComponents: string[];\n nameHint: string;\n}\n\nexport interface HelperResolution {\n type: 'helper';\n module: ResolvedDep;\n nameHint: string;\n}\n\nexport interface ModifierResolution {\n type: 'modifier';\n module: ResolvedDep;\n nameHint: string;\n}\n\nexport type ResolutionResult = ComponentResolution | HelperResolution | ModifierResolution;\n\nexport interface ResolutionFail {\n type: 'error';\n message: string;\n detail: string;\n loc: Loc;\n}\n\ninterface ResolverDependencyError extends Error {\n isTemplateResolverError?: boolean;\n loc?: Loc;\n moduleName?: string;\n}\n\nexport type Resolution = ResolutionResult | ResolutionFail;\n\nexport interface Loc {\n start: { line: number; column: number };\n end: { line: number; column: number };\n}\n\n// TODO: this depends on the ember version. And it's probably missing some\n// private-but-used values.\nconst builtInHelpers = [\n '-get-dynamic-var',\n '-in-element',\n 'in-element',\n '-with-dynamic-vars',\n 'action',\n 'array',\n 'component',\n 'concat',\n 'debugger',\n 'each',\n 'each-in',\n 'fn',\n 'get',\n 'has-block',\n 'has-block-params',\n 'hasBlock',\n 'hasBlockParams',\n 'hash',\n 'helper',\n 'if',\n 'input',\n 'let',\n 'link-to',\n 'loc',\n 'log',\n 'modifier',\n 'mount',\n 'mut',\n 'on',\n 'outlet',\n 'partial',\n 'query-params',\n 'readonly',\n 'textarea',\n 'unbound',\n 'unique-id',\n 'unless',\n 'with',\n 'yield',\n];\n\nconst builtInComponents = ['input', 'link-to', 'textarea'];\nconst builtInModifiers = ['action', 'on'];\n\n// this is a subset of the full Options. We care about serializability, and we\n// only needs parts that are easily serializable, which is why we don't keep the\n// whole thing.\ntype ResolverOptions = Pick<\n Required<Options>,\n 'staticHelpers' | 'staticModifiers' | 'staticComponents' | 'allowUnsafeDynamicComponents'\n>;\n\nfunction extractOptions(options: Required<Options> | ResolverOptions): ResolverOptions {\n return {\n staticHelpers: options.staticHelpers,\n staticModifiers: options.staticModifiers,\n staticComponents: options.staticComponents,\n allowUnsafeDynamicComponents: options.allowUnsafeDynamicComponents,\n };\n}\n\ninterface RehydrationParamsBase {\n root: string;\n modulePrefix: string;\n podModulePrefix?: string;\n options: ResolverOptions;\n emberVersion: string;\n activePackageRules: ActivePackageRules[];\n}\n\ninterface RehydrationParamsWithFile extends RehydrationParamsBase {\n adjustImportsOptionsPath: string;\n}\n\ninterface RehydrationParamsWithOptions extends RehydrationParamsBase {\n adjustImportsOptions: AdjustImportsOptions;\n}\n\ntype RehydrationParams = RehydrationParamsWithFile | RehydrationParamsWithOptions;\n\nexport function rehydrate(params: RehydrationParams) {\n return new CompatResolver(params);\n}\n\nexport interface AuditMessage {\n message: string;\n detail: string;\n loc: Loc;\n source: string;\n filename: string;\n}\n\nexport default class CompatResolver {\n private auditHandler: undefined | ((msg: AuditMessage) => void);\n\n _parallelBabel: {\n requireFile: string;\n buildUsing: string;\n params: RehydrationParams;\n };\n\n constructor(private params: RehydrationParams) {\n this.params.options = extractOptions(this.params.options);\n this._parallelBabel = {\n requireFile: __filename,\n buildUsing: 'rehydrate',\n params,\n };\n if ((globalThis as any).embroider_audit) {\n this.auditHandler = (globalThis as any).embroider_audit;\n }\n }\n\n private findComponentRules(absPath: string): PreprocessedComponentRule | undefined {\n let rules = this.rules.components.get(absPath);\n if (rules) {\n return rules;\n }\n\n // co-located templates aren't visible to the resolver, because they never\n // get resolved from a template (they are always handled directly by the\n // corresponding JS module, which the resolver *does* see). This means their\n // paths won't ever be in `this.rules.components`. But we do want them to\n // \"inherit\" the rules that are attached to their corresonding JS module.\n if (absPath.endsWith('.hbs')) {\n let stem = absPath.slice(0, -4);\n for (let ext of this.adjustImportsOptions.resolvableExtensions) {\n if (ext !== '.hbs') {\n let rules = this.rules.components.get(stem + ext);\n if (rules) {\n return rules;\n }\n }\n }\n }\n return undefined;\n }\n\n private isIgnoredComponent(dasherizedName: string) {\n return this.rules.ignoredComponents.includes(dasherizedName);\n }\n\n @Memoize()\n get adjustImportsOptions(): AdjustImportsOptions {\n const { params } = this;\n return 'adjustImportsOptionsPath' in params\n ? // eslint-disable-next-line @typescript-eslint/no-require-imports\n require(params.adjustImportsOptionsPath)\n : params.adjustImportsOptions;\n }\n\n @Memoize()\n private get rules() {\n // keyed by their first resolved dependency's runtimeName.\n let components: Map<string, PreprocessedComponentRule> = new Map();\n\n // keyed by our own dasherized interpretation of the component's name.\n let ignoredComponents: string[] = [];\n\n // we're not responsible for filtering out rules for inactive packages here,\n // that is done before getting to us. So we should assume these are all in\n // force.\n for (let rule of this.params.activePackageRules) {\n if (rule.components) {\n for (let [snippet, componentRules] of Object.entries(rule.components)) {\n if (componentRules.safeToIgnore) {\n ignoredComponents.push(this.standardDasherize(snippet, rule));\n continue;\n }\n let resolvedSnippet = this.resolveComponentSnippet(snippet, rule);\n\n // cast is OK here because a component must have one or the other\n let resolvedDep = (resolvedSnippet.hbsModule ?? resolvedSnippet.jsModule)!;\n\n let processedRules = preprocessComponentRule(componentRules);\n\n // we always register our rules on the component's own first resolved\n // module, which must be a module in the app's module namespace.\n components.set(resolvedDep.absPath, processedRules);\n\n // if there's a custom layout, we also need to register our rules on\n // those templates.\n if (componentRules.layout) {\n if (componentRules.layout.appPath) {\n components.set(join(this.params.root, componentRules.layout.appPath), processedRules);\n } else if (componentRules.layout.addonPath) {\n for (let root of rule.roots) {\n components.set(join(root, componentRules.layout.addonPath), processedRules);\n }\n } else {\n throw new Error(\n `layout property in component rule must contain either appPath or addonPath: ${JSON.stringify(\n rule,\n null,\n 2\n )}`\n );\n }\n }\n }\n }\n if (rule.appTemplates) {\n for (let [path, templateRules] of Object.entries(rule.appTemplates)) {\n let processedRules = preprocessComponentRule(templateRules);\n components.set(join(this.params.root, path), processedRules);\n }\n }\n if (rule.addonTemplates) {\n for (let [path, templateRules] of Object.entries(rule.addonTemplates)) {\n let processedRules = preprocessComponentRule(templateRules);\n for (let root of rule.roots) {\n components.set(join(root, path), processedRules);\n }\n }\n }\n }\n return { components, ignoredComponents };\n }\n\n resolveComponentSnippet(\n snippet: string,\n rule: PackageRules | ModuleRules,\n from = 'rule-snippet.hbs'\n ): ComponentResolution {\n let name = this.standardDasherize(snippet, rule);\n let found = this.tryComponent(name, from, false);\n if (found && found.type === 'component') {\n return found;\n }\n throw new Error(`unable to locate component ${snippet} referred to in rule ${JSON.stringify(rule, null, 2)}`);\n }\n\n private standardDasherize(snippet: string, rule: PackageRules | ModuleRules): string {\n let name = snippetToDasherizedName(snippet);\n if (name == null) {\n throw new Error(`unable to parse component snippet \"${snippet}\" from rule ${JSON.stringify(rule, null, 2)}`);\n }\n return name;\n }\n\n astTransformer(): undefined | string | [string, unknown] {\n if (this.staticComponentsEnabled || this.staticHelpersEnabled || this.staticModifiersEnabled) {\n let opts: ResolverTransformOptions = {\n resolver: this,\n // lexical invocation of helpers was not reliable before Ember 4.2 due to https://github.com/emberjs/ember.js/pull/19878\n patchHelpersBug: semver.satisfies(this.params.emberVersion, '<4.2.0-beta.0', {\n includePrerelease: true,\n }),\n };\n return [require.resolve('./resolver-transform'), opts];\n }\n }\n\n private humanReadableFile(file: string) {\n if (!this.params.root.endsWith('/')) {\n this.params.root += '/';\n }\n if (file.startsWith(this.params.root)) {\n return file.slice(this.params.root.length);\n }\n return file;\n }\n\n reportError(dep: ResolutionFail, filename: string, source: string) {\n if (!this.auditHandler && !this.params.options.allowUnsafeDynamicComponents) {\n let e: ResolverDependencyError = new Error(\n `${dep.message}: ${dep.detail} in ${this.humanReadableFile(filename)}`\n );\n e.isTemplateResolverError = true;\n e.loc = dep.loc;\n e.moduleName = filename;\n throw e;\n }\n if (this.auditHandler) {\n this.auditHandler({\n message: dep.message,\n filename,\n detail: dep.detail,\n loc: dep.loc,\n source,\n });\n }\n }\n\n resolveImport(path: string, from: string): { runtimeName: string; absPath: string } | undefined {\n let absPath;\n try {\n absPath = resolve.sync(path, {\n basedir: dirname(from),\n extensions: this.adjustImportsOptions.resolvableExtensions,\n });\n } catch (err) {\n return;\n }\n if (absPath) {\n let runtimeName = this.absPathToRuntimeName(absPath);\n if (runtimeName) {\n return { runtimeName, absPath };\n }\n }\n }\n\n @Memoize()\n private get resolvableExtensionsPattern() {\n return extensionsPattern(this.adjustImportsOptions.resolvableExtensions);\n }\n\n private absPathToRuntimePath(absPath: string, owningPackage?: { root: string; name: string }) {\n let pkg = owningPackage || PackageCache.shared('embroider-stage3', this.params.root).ownerOfFile(absPath);\n if (pkg) {\n let packageRuntimeName = pkg.name;\n for (let [runtimeName, realName] of Object.entries(this.adjustImportsOptions.renamePackages)) {\n if (realName === packageRuntimeName) {\n packageRuntimeName = runtimeName;\n break;\n }\n }\n return join(packageRuntimeName, relative(pkg.root, absPath)).split(sep).join('/');\n } else if (absPath.startsWith(this.params.root)) {\n return join(this.params.modulePrefix, relative(this.params.root, absPath)).split(sep).join('/');\n } else {\n throw new Error(`bug: can't figure out the runtime name for ${absPath}`);\n }\n }\n\n absPathToRuntimeName(absPath: string, owningPackage?: { root: string; name: string }) {\n return this.absPathToRuntimePath(absPath, owningPackage)\n .replace(this.resolvableExtensionsPattern, '')\n .replace(/\\/index$/, '');\n }\n\n private get staticComponentsEnabled(): boolean {\n return this.params.options.staticComponents || Boolean(this.auditHandler);\n }\n\n private get staticHelpersEnabled(): boolean {\n return this.params.options.staticHelpers || Boolean(this.auditHandler);\n }\n\n private get staticModifiersEnabled(): boolean {\n return this.params.options.staticModifiers || Boolean(this.auditHandler);\n }\n\n private tryHelper(path: string, from: string): HelperResolution | null {\n let parts = path.split('@');\n if (parts.length > 1 && parts[0].length > 0) {\n let cache = PackageCache.shared('embroider-stage3', this.params.root);\n let packageName = parts[0];\n let renamed = this.adjustImportsOptions.renamePackages[packageName];\n if (renamed) {\n packageName = renamed;\n }\n let owner = cache.ownerOfFile(from)!;\n let targetPackage = owner.name === packageName ? owner : cache.resolve(packageName, owner);\n return this._tryHelper(parts[1], from, targetPackage);\n } else {\n return this._tryHelper(path, from, this.appPackage);\n }\n }\n\n private _tryHelper(\n path: string,\n from: string,\n targetPackage: Package | AppPackagePlaceholder\n ): HelperResolution | null {\n for (let extension of this.adjustImportsOptions.resolvableExtensions) {\n let absPath = join(targetPackage.root, 'helpers', path) + extension;\n if (pathExistsSync(absPath)) {\n return {\n type: 'helper',\n module: {\n runtimeName: this.absPathToRuntimeName(absPath, targetPackage),\n path: explicitRelative(dirname(from), absPath),\n absPath,\n },\n nameHint: path,\n };\n }\n }\n return null;\n }\n\n private tryModifier(path: string, from: string): ModifierResolution | null {\n let parts = path.split('@');\n if (parts.length > 1 && parts[0].length > 0) {\n let cache = PackageCache.shared('embroider-stage3', this.params.root);\n let packageName = parts[0];\n let renamed = this.adjustImportsOptions.renamePackages[packageName];\n if (renamed) {\n packageName = renamed;\n }\n let owner = cache.ownerOfFile(from)!;\n let targetPackage = owner.name === packageName ? owner : cache.resolve(packageName, owner);\n return this._tryModifier(parts[1], from, targetPackage);\n } else {\n return this._tryModifier(path, from, this.appPackage);\n }\n }\n\n private _tryModifier(\n path: string,\n from: string,\n targetPackage: Package | AppPackagePlaceholder\n ): ModifierResolution | null {\n for (let extension of this.adjustImportsOptions.resolvableExtensions) {\n let absPath = join(targetPackage.root, 'modifiers', path) + extension;\n if (pathExistsSync(absPath)) {\n return {\n type: 'modifier',\n module: {\n runtimeName: this.absPathToRuntimeName(absPath, targetPackage),\n path: explicitRelative(dirname(from), absPath),\n absPath,\n },\n nameHint: path,\n };\n }\n }\n return null;\n }\n\n @Memoize()\n private get appPackage(): AppPackagePlaceholder {\n return { root: this.params.root, name: this.params.modulePrefix };\n }\n\n private tryComponent(path: string, from: string, withRuleLookup = true): ComponentResolution | null {\n let parts = path.split('@');\n if (parts.length > 1 && parts[0].length > 0) {\n let cache = PackageCache.shared('embroider-stage3', this.params.root);\n let packageName = parts[0];\n let renamed = this.adjustImportsOptions.renamePackages[packageName];\n if (renamed) {\n packageName = renamed;\n }\n let owner = cache.ownerOfFile(from)!;\n let targetPackage = owner.name === packageName ? owner : cache.resolve(packageName, owner);\n\n return this._tryComponent(parts[1], from, withRuleLookup, targetPackage);\n } else {\n return this._tryComponent(path, from, withRuleLookup, this.appPackage);\n }\n }\n\n private _tryComponent(\n path: string,\n from: string,\n withRuleLookup: boolean,\n targetPackage: Package | AppPackagePlaceholder\n ): ComponentResolution | null {\n let extensions = ['.hbs', ...this.adjustImportsOptions.resolvableExtensions.filter((e: string) => e !== '.hbs')];\n\n let hbsModule: string | undefined;\n let jsModule: string | undefined;\n\n // first, the various places our template might be\n for (let extension of extensions) {\n let absPath = join(targetPackage.root, 'templates', 'components', path) + extension;\n if (pathExistsSync(absPath)) {\n hbsModule = absPath;\n break;\n }\n\n absPath = join(targetPackage.root, 'components', path, 'template') + extension;\n if (pathExistsSync(absPath)) {\n hbsModule = absPath;\n break;\n }\n\n if (\n typeof this.params.podModulePrefix !== 'undefined' &&\n this.params.podModulePrefix !== '' &&\n targetPackage === this.appPackage\n ) {\n let podPrefix = this.params.podModulePrefix.replace(this.params.modulePrefix, '');\n\n absPath = join(targetPackage.root, podPrefix, 'components', path, 'template') + extension;\n if (pathExistsSync(absPath)) {\n hbsModule = absPath;\n break;\n }\n }\n }\n\n // then the various places our javascript might be\n for (let extension of extensions) {\n if (extension === '.hbs') {\n continue;\n }\n\n let absPath = join(targetPackage.root, 'components', path, 'index') + extension;\n if (pathExistsSync(absPath)) {\n jsModule = absPath;\n break;\n }\n\n absPath = join(targetPackage.root, 'components', path) + extension;\n if (pathExistsSync(absPath)) {\n jsModule = absPath;\n break;\n }\n\n absPath = join(targetPackage.root, 'components', path, 'component') + extension;\n if (pathExistsSync(absPath)) {\n jsModule = absPath;\n break;\n }\n\n if (\n typeof this.params.podModulePrefix !== 'undefined' &&\n this.params.podModulePrefix !== '' &&\n targetPackage === this.appPackage\n ) {\n let podPrefix = this.params.podModulePrefix.replace(this.params.modulePrefix, '');\n\n absPath = join(targetPackage.root, podPrefix, 'components', path, 'component') + extension;\n if (pathExistsSync(absPath)) {\n jsModule = absPath;\n break;\n }\n }\n }\n\n if (jsModule == null && hbsModule == null) {\n return null;\n }\n\n let componentRules;\n if (withRuleLookup) {\n // the order here is important. We follow the convention that any rules\n // get attached to the hbsModule if it exists, and only get attached to\n // the jsModule otherwise\n componentRules = this.findComponentRules((hbsModule ?? jsModule)!);\n }\n return {\n type: 'component',\n jsModule: jsModule\n ? {\n path: explicitRelative(dirname(from), jsModule),\n absPath: jsModule,\n runtimeName: this.absPathToRuntimeName(jsModule, targetPackage),\n }\n : null,\n hbsModule: hbsModule\n ? {\n path: explicitRelative(dirname(from), hbsModule),\n absPath: hbsModule,\n runtimeName: this.absPathToRuntimeName(hbsModule, targetPackage),\n }\n : null,\n yieldsComponents: componentRules ? componentRules.yieldsSafeComponents : [],\n yieldsArguments: componentRules ? componentRules.yieldsArguments : [],\n argumentsAreComponents: componentRules ? componentRules.argumentsAreComponents : [],\n nameHint: path,\n };\n }\n\n resolveSubExpression(path: string, from: string, loc: Loc): HelperResolution | ResolutionFail | null {\n if (!this.staticHelpersEnabled) {\n return null;\n }\n let found = this.tryHelper(path, from);\n if (found) {\n return found;\n }\n if (builtInHelpers.includes(path)) {\n return null;\n }\n return {\n type: 'error',\n message: `Missing helper`,\n detail: path,\n loc,\n };\n }\n\n resolveMustache(\n path: string,\n hasArgs: boolean,\n from: string,\n loc: Loc\n ): HelperResolution | ComponentResolution | ResolutionFail | null {\n if (this.staticHelpersEnabled) {\n let found = this.tryHelper(path, from);\n if (found) {\n return found;\n }\n }\n if (this.staticComponentsEnabled) {\n let found = this.tryComponent(path, from);\n if (found) {\n return found;\n }\n }\n if (\n hasArgs &&\n this.staticComponentsEnabled &&\n this.staticHelpersEnabled &&\n !builtInHelpers.includes(path) &&\n !this.isIgnoredComponent(path)\n ) {\n return {\n type: 'error',\n message: `Missing component or helper`,\n detail: path,\n loc,\n };\n } else {\n return null;\n }\n }\n\n resolveElementModifierStatement(path: string, from: string, loc: Loc): ModifierResolution | ResolutionFail | null {\n if (!this.staticModifiersEnabled) {\n return null;\n }\n let found = this.tryModifier(path, from);\n if (found) {\n return found;\n }\n if (builtInModifiers.includes(path)) {\n return null;\n }\n return {\n type: 'error',\n message: `Missing modifier`,\n detail: path,\n loc,\n };\n }\n\n resolveElement(tagName: string, from: string, loc: Loc): ComponentResolution | ResolutionFail | null {\n if (!this.staticComponentsEnabled) {\n return null;\n }\n\n if (tagName[0] === tagName[0].toLowerCase()) {\n // starts with lower case, so this can't be a component we need to\n // globally resolve\n return null;\n }\n\n let dName = dasherize(tagName);\n\n if (builtInComponents.includes(dName)) {\n return null;\n }\n\n let found = this.tryComponent(dName, from);\n if (found) {\n found.nameHint = tagName;\n return found;\n }\n\n if (this.isIgnoredComponent(dName)) {\n return null;\n }\n\n return {\n type: 'error',\n message: `Missing component`,\n detail: tagName,\n loc,\n };\n }\n\n resolveComponentHelper(\n component: ComponentLocator,\n from: string,\n loc: Loc,\n impliedBecause?: { componentName: string; argumentName: string }\n ): ComponentResolution | ResolutionFail | null {\n if (!this.staticComponentsEnabled) {\n return null;\n }\n\n let message;\n if (impliedBecause) {\n message = `argument \"${impliedBecause.argumentName}\" to component \"${impliedBecause.componentName}\" is treated as a component, but the value you're passing is dynamic`;\n } else {\n message = `Unsafe dynamic component`;\n }\n\n if (component.type === 'other') {\n return {\n type: 'error',\n message,\n detail: `cannot statically analyze this expression`,\n loc,\n };\n }\n if (component.type === 'path') {\n let ownComponentRules = this.findComponentRules(from);\n if (ownComponentRules && ownComponentRules.safeInteriorPaths.includes(component.path)) {\n return null;\n }\n return {\n type: 'error',\n message,\n detail: component.path,\n loc,\n };\n }\n\n if (builtInComponents.includes(component.path)) {\n return null;\n }\n\n let found = this.tryComponent(component.path, from);\n if (found) {\n return found;\n }\n return {\n type: 'error',\n message: `Missing component`,\n detail: component.path,\n loc,\n };\n }\n\n resolveDynamicHelper(helper: ComponentLocator, from: string, loc: Loc): HelperResolution | ResolutionFail | null {\n if (!this.staticHelpersEnabled) {\n return null;\n }\n\n if (helper.type === 'literal') {\n let helperName = helper.path;\n if (builtInHelpers.includes(helperName)) {\n return null;\n }\n\n let found = this.tryHelper(helperName, from);\n if (found) {\n return found;\n }\n return {\n type: 'error',\n message: `Missing helper`,\n detail: helperName,\n loc,\n };\n } else {\n return {\n type: 'error',\n message: 'Unsafe dynamic helper',\n detail: `cannot statically analyze this expression`,\n loc,\n };\n }\n }\n\n resolveDynamicModifier(\n modifier: ComponentLocator,\n from: string,\n loc: Loc\n ): ModifierResolution | ResolutionFail | null {\n if (!this.staticModifiersEnabled) {\n return null;\n }\n\n if (modifier.type === 'literal') {\n let modifierName = modifier.path;\n if (builtInModifiers.includes(modifierName)) {\n return null;\n }\n\n let found = this.tryModifier(modifierName, from);\n if (found) {\n return found;\n }\n return {\n type: 'error',\n message: `Missing modifier`,\n detail: modifierName,\n loc,\n };\n } else {\n return {\n type: 'error',\n message: 'Unsafe dynamic modifier',\n detail: `cannot statically analyze this expression`,\n loc,\n };\n }\n }\n}\n\n// we don't have a real Package for the app itself because the resolver has work\n// to do before we have even written out the app's own package.json and\n// therefore made it into a fully functional Package.\ninterface AppPackagePlaceholder {\n root: string;\n name: string;\n}\n\nexport type ComponentLocator =\n | {\n type: 'literal';\n path: string;\n }\n | {\n type: 'path';\n path: string;\n }\n | {\n type: 'other';\n };\n"]}
@@ -10,10 +10,7 @@ const fs_extra_1 = require("fs-extra");
10
10
  const source = `import templateOnlyComponent from '@ember/component/template-only';
11
11
  export default templateOnlyComponent();`;
12
12
  const templateExtension = '.hbs';
13
- // we don't need to worry about all resolvable extensions in here (like .ts)
14
- // because by the time we see the code it has already been preprocessed down to
15
- // js.
16
- const jsExtension = '.js';
13
+ const jsExtensions = ['.js', '.ts', '.mjs', '.mts'];
17
14
  class SynthesizeTemplateOnlyComponents extends broccoli_plugin_1.default {
18
15
  constructor(tree, allowedPaths) {
19
16
  super([tree], {
@@ -58,15 +55,18 @@ class SynthesizeTemplateOnlyComponents extends broccoli_plugin_1.default {
58
55
  }
59
56
  exports.default = SynthesizeTemplateOnlyComponents;
60
57
  function crawl(dir) {
61
- let needed = new Set();
62
- let seen = new Set();
58
+ const needed = new Set();
59
+ const seen = new Set();
63
60
  if ((0, fs_extra_1.pathExistsSync)(dir)) {
64
61
  for (let file of (0, walk_sync_1.default)(dir, { directories: false })) {
65
62
  if (file.endsWith(templateExtension)) {
66
63
  needed.add(file.slice(0, -1 * templateExtension.length));
67
64
  }
68
- else if (file.endsWith(jsExtension)) {
69
- seen.add(file.slice(0, -1 * jsExtension.length));
65
+ else {
66
+ const jsExtension = jsExtensions.find(ext => file.endsWith(ext));
67
+ if (jsExtension) {
68
+ seen.add(file.slice(0, -1 * jsExtension.length));
69
+ }
70
70
  }
71
71
  }
72
72
  }
@@ -1 +1 @@
1
- {"version":3,"file":"synthesize-template-only-components.js","sourceRoot":"","sources":["synthesize-template-only-components.ts"],"names":[],"mappings":";;;;;AAAA,sEAAqC;AAErC,+BAAsC;AACtC,0DAAiC;AACjC,uCAAkE;AAElE,MAAM,MAAM,GAAG;wCACyB,CAAC;AAEzC,MAAM,iBAAiB,GAAG,MAAM,CAAC;AAEjC,4EAA4E;AAC5E,+EAA+E;AAC/E,MAAM;AACN,MAAM,WAAW,GAAG,KAAK,CAAC;AAE1B,MAAqB,gCAAiC,SAAQ,yBAAM;IAGlE,YAAY,IAAU,EAAU,YAAsB;QACpD,KAAK,CAAC,CAAC,IAAI,CAAC,EAAE;YACZ,UAAU,EAAE,uCAAuC,YAAY,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE;YAC3E,gBAAgB,EAAE,IAAI;YACtB,UAAU,EAAE,KAAK;SAClB,CAAC,CAAC;QAL2B,iBAAY,GAAZ,YAAY,CAAU;QAF9C,YAAO,GAAG,IAAI,GAAG,EAAiB,CAAC;IAQ3C,CAAC;IAED,KAAK,CAAC,KAAK;QACT,KAAK,IAAI,GAAG,IAAI,IAAI,CAAC,YAAY,EAAE;YACjC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,KAAK,CAAC,IAAA,WAAI,EAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;YAC5D,KAAK,IAAI,IAAI,IAAI,MAAM,EAAE;gBACvB,IAAI,QAAQ,GAAG,IAAA,WAAI,EAAC,IAAI,CAAC,UAAU,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC;gBAChD,IAAI,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE;oBAClB,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;iBACvB;qBAAM;oBACL,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;iBACpB;aACF;SACF;IACH,CAAC;IACO,GAAG,CAAC,QAAgB;QAC1B,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE;YAC/B,uEAAuE;YACvE,uEAAuE;YACvE,+CAA+C;YAC/C,IAAI,IAAA,eAAQ,EAAC,QAAQ,CAAC,KAAK,UAAU,EAAE;gBACrC,IAAA,yBAAc,EAAC,QAAQ,GAAG,KAAK,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;aAClD;YACD,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;SAC5B;IACH,CAAC;IAEO,MAAM,CAAC,QAAgB;QAC7B,IAAI,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE;YAC9B,IAAA,iBAAM,EAAC,QAAQ,GAAG,KAAK,CAAC,CAAC;YACzB,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;SAC/B;IACH,CAAC;CACF;AA1CD,mDA0CC;AAED,SAAS,KAAK,CAAC,GAAW;IACxB,IAAI,MAAM,GAAG,IAAI,GAAG,EAAU,CAAC;IAC/B,IAAI,IAAI,GAAG,IAAI,GAAG,EAAU,CAAC;IAC7B,IAAI,IAAA,yBAAc,EAAC,GAAG,CAAC,EAAE;QACvB,KAAK,IAAI,IAAI,IAAI,IAAA,mBAAQ,EAAC,GAAG,EAAE,EAAE,WAAW,EAAE,KAAK,EAAE,CAAC,EAAE;YACtD,IAAI,IAAI,CAAC,QAAQ,CAAC,iBAAiB,CAAC,EAAE;gBACpC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,iBAAiB,CAAC,MAAM,CAAC,CAAC,CAAC;aAC1D;iBAAM,IAAI,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,EAAE;gBACrC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC;aAClD;SACF;KACF;IACD,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC;AAC1B,CAAC","sourcesContent":["import Plugin from 'broccoli-plugin';\nimport { Node } from 'broccoli-node-api';\nimport { join, basename } from 'path';\nimport walkSync from 'walk-sync';\nimport { remove, outputFileSync, pathExistsSync } from 'fs-extra';\n\nconst source = `import templateOnlyComponent from '@ember/component/template-only';\nexport default templateOnlyComponent();`;\n\nconst templateExtension = '.hbs';\n\n// we don't need to worry about all resolvable extensions in here (like .ts)\n// because by the time we see the code it has already been preprocessed down to\n// js.\nconst jsExtension = '.js';\n\nexport default class SynthesizeTemplateOnlyComponents extends Plugin {\n private emitted = new Set() as Set<string>;\n\n constructor(tree: Node, private allowedPaths: string[]) {\n super([tree], {\n annotation: `synthesize-template-only-components:${allowedPaths.join(':')}`,\n persistentOutput: true,\n needsCache: false,\n });\n }\n\n async build() {\n for (let dir of this.allowedPaths) {\n let { needed, seen } = crawl(join(this.inputPaths[0], dir));\n for (let file of needed) {\n let fullName = join(this.outputPath, dir, file);\n if (seen.has(file)) {\n this.remove(fullName);\n } else {\n this.add(fullName);\n }\n }\n }\n }\n private add(filename: string) {\n if (!this.emitted.has(filename)) {\n // special case: ember-cli doesn't allow template-only components named\n // \"template.hbs\" because there are too many people doing a \"pods-like\"\n // layout that happens to match that pattern.🤮\n if (basename(filename) !== 'template') {\n outputFileSync(filename + '.js', source, 'utf8');\n }\n this.emitted.add(filename);\n }\n }\n\n private remove(filename: string) {\n if (this.emitted.has(filename)) {\n remove(filename + '.js');\n this.emitted.delete(filename);\n }\n }\n}\n\nfunction crawl(dir: string) {\n let needed = new Set<string>();\n let seen = new Set<string>();\n if (pathExistsSync(dir)) {\n for (let file of walkSync(dir, { directories: false })) {\n if (file.endsWith(templateExtension)) {\n needed.add(file.slice(0, -1 * templateExtension.length));\n } else if (file.endsWith(jsExtension)) {\n seen.add(file.slice(0, -1 * jsExtension.length));\n }\n }\n }\n return { needed, seen };\n}\n"]}
1
+ {"version":3,"file":"synthesize-template-only-components.js","sourceRoot":"","sources":["synthesize-template-only-components.ts"],"names":[],"mappings":"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","sourcesContent":["import Plugin from 'broccoli-plugin';\nimport { Node } from 'broccoli-node-api';\nimport { join, basename } from 'path';\nimport walkSync from 'walk-sync';\nimport { remove, outputFileSync, pathExistsSync } from 'fs-extra';\n\nconst source = `import templateOnlyComponent from '@ember/component/template-only';\nexport default templateOnlyComponent();`;\n\nconst templateExtension = '.hbs';\n\nconst jsExtensions = ['.js', '.ts', '.mjs', '.mts'];\n\nexport default class SynthesizeTemplateOnlyComponents extends Plugin {\n private emitted = new Set() as Set<string>;\n\n constructor(tree: Node, private allowedPaths: string[]) {\n super([tree], {\n annotation: `synthesize-template-only-components:${allowedPaths.join(':')}`,\n persistentOutput: true,\n needsCache: false,\n });\n }\n\n async build() {\n for (let dir of this.allowedPaths) {\n let { needed, seen } = crawl(join(this.inputPaths[0], dir));\n for (let file of needed) {\n let fullName = join(this.outputPath, dir, file);\n if (seen.has(file)) {\n this.remove(fullName);\n } else {\n this.add(fullName);\n }\n }\n }\n }\n private add(filename: string) {\n if (!this.emitted.has(filename)) {\n // special case: ember-cli doesn't allow template-only components named\n // \"template.hbs\" because there are too many people doing a \"pods-like\"\n // layout that happens to match that pattern.🤮\n if (basename(filename) !== 'template') {\n outputFileSync(filename + '.js', source, 'utf8');\n }\n this.emitted.add(filename);\n }\n }\n\n private remove(filename: string) {\n if (this.emitted.has(filename)) {\n remove(filename + '.js');\n this.emitted.delete(filename);\n }\n }\n}\n\nfunction crawl(dir: string) {\n const needed = new Set<string>();\n const seen = new Set<string>();\n if (pathExistsSync(dir)) {\n for (let file of walkSync(dir, { directories: false })) {\n if (file.endsWith(templateExtension)) {\n needed.add(file.slice(0, -1 * templateExtension.length));\n } else {\n const jsExtension = jsExtensions.find(ext => file.endsWith(ext));\n if (jsExtension) {\n seen.add(file.slice(0, -1 * jsExtension.length));\n }\n }\n }\n }\n return { needed, seen };\n}\n"]}
package/src/v1-addon.d.ts CHANGED
@@ -1,30 +1,7 @@
1
1
  import { Node } from 'broccoli-node-api';
2
- import { AddonMeta, NodeTemplateCompiler, PackageCache, Resolver, AddonInstance, AddonTreePath } from '@embroider/core';
2
+ import { AddonMeta, PackageCache, AddonInstance, AddonTreePath } from '@embroider/core';
3
3
  import Options from './options';
4
4
  import V1App from './v1-app';
5
- import { ResolvedDep } from '@embroider/core/src/resolver';
6
- /**
7
- * Creating a interface here just to keep the Resolver's structure as it is.
8
- */
9
- interface ResolverParams {
10
- root: string;
11
- modulePrefix: string;
12
- }
13
- export declare function resolver(params: ResolverParams): V1AddonCompatResolver;
14
- declare class V1AddonCompatResolver implements Resolver {
15
- params: ResolverParams;
16
- _parallelBabel: {
17
- requireFile: string;
18
- buildUsing: string;
19
- params: ResolverParams;
20
- };
21
- constructor(params: ResolverParams);
22
- astTransformer(_templateCompiler: NodeTemplateCompiler): unknown;
23
- dependenciesOf(_moduleName: string): ResolvedDep[];
24
- absPathToRuntimePath(absPath: string): string;
25
- absPathToRuntimeName(absPath: string): string;
26
- get adjustImportsOptions(): Resolver['adjustImportsOptions'];
27
- }
28
5
  export default class V1Addon {
29
6
  protected addonInstance: AddonInstance;
30
7
  protected addonOptions: Required<Options>;
@@ -33,8 +10,7 @@ export default class V1Addon {
33
10
  private orderIdx;
34
11
  constructor(addonInstance: AddonInstance, addonOptions: Required<Options>, app: V1App, packageCache: PackageCache, orderIdx: number);
35
12
  reduceInstances(instances: V1Addon[]): V1Addon[];
36
- private get templateCompiler();
37
- templateResolver(): Resolver;
13
+ private get templateCompilerBabelPlugin();
38
14
  private updateRegistry;
39
15
  private needsInlineHBS;
40
16
  private needsCustomBabel;
package/src/v1-addon.js CHANGED
@@ -9,7 +9,6 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
9
9
  return (mod && mod.__esModule) ? mod : { "default": mod };
10
10
  };
11
11
  Object.defineProperty(exports, "__esModule", { value: true });
12
- exports.resolver = void 0;
13
12
  const typescript_memoize_1 = require("typescript-memoize");
14
13
  const path_1 = require("path");
15
14
  const pkg_up_1 = require("pkg-up");
@@ -30,9 +29,8 @@ const modules_compat_1 = __importDefault(require("./modules-compat"));
30
29
  const broccoli_file_creator_1 = __importDefault(require("broccoli-file-creator"));
31
30
  const synthesize_template_only_components_1 = __importDefault(require("./synthesize-template-only-components"));
32
31
  const detect_babel_plugins_1 = require("./detect-babel-plugins");
33
- const template_compiler_broccoli_plugin_1 = __importDefault(require("./template-compiler-broccoli-plugin"));
32
+ const hbs_to_js_broccoli_plugin_1 = __importDefault(require("./hbs-to-js-broccoli-plugin"));
34
33
  const lodash_1 = require("lodash");
35
- const load_ember_template_compiler_1 = require("@embroider/core/src/load-ember-template-compiler");
36
34
  const prepare_htmlbars_ast_plugins_1 = __importDefault(require("./prepare-htmlbars-ast-plugins"));
37
35
  const get_real_addon_1 = __importDefault(require("./get-real-addon"));
38
36
  const stockTreeNames = Object.freeze([
@@ -73,40 +71,6 @@ const defaultMethods = {
73
71
  };
74
72
  const appPublicationDir = '_app_';
75
73
  const fastbootPublicationDir = '_fastboot_';
76
- function resolver(params) {
77
- return new V1AddonCompatResolver(params);
78
- }
79
- exports.resolver = resolver;
80
- class V1AddonCompatResolver {
81
- constructor(params) {
82
- this.params = params;
83
- this._parallelBabel = {
84
- requireFile: __filename,
85
- buildUsing: 'resolver',
86
- params,
87
- };
88
- }
89
- astTransformer(_templateCompiler) {
90
- return;
91
- }
92
- dependenciesOf(_moduleName) {
93
- return [];
94
- }
95
- absPathToRuntimePath(absPath) {
96
- if ((0, path_1.isAbsolute)(absPath)) {
97
- return absPath;
98
- }
99
- return (0, path_1.join)(this.params.modulePrefix, absPath);
100
- }
101
- absPathToRuntimeName(absPath) {
102
- return this.absPathToRuntimePath(absPath)
103
- .replace((0, core_1.extensionsPattern)(['.js', '.hbs']), '')
104
- .replace(/\/index$/, '');
105
- }
106
- get adjustImportsOptions() {
107
- throw new Error(`bug: the addon compat resolver only supports absPath mapping`);
108
- }
109
- }
110
74
  // This controls and types the interface between our new world and the classic
111
75
  // v1 addon instance.
112
76
  class V1Addon {
@@ -140,7 +104,7 @@ class V1Addon {
140
104
  return instances;
141
105
  }
142
106
  // this is only defined when there are custom AST transforms that need it
143
- get templateCompiler() {
107
+ get templateCompilerBabelPlugin() {
144
108
  var _a;
145
109
  let htmlbars = this.addonInstance.addons.find(a => a.name === 'ember-cli-htmlbars');
146
110
  if (htmlbars) {
@@ -150,31 +114,31 @@ class V1Addon {
150
114
  options.plugins.ast = options.plugins.ast.filter((p) => !(0, node_1.isEmbroiderMacrosPlugin)(p));
151
115
  (0, prepare_htmlbars_ast_plugins_1.default)(this.addonInstance.registry);
152
116
  if (options.plugins.ast.length > 0) {
153
- const { cacheKey: compilerChecksum } = (0, load_ember_template_compiler_1.getEmberExports)(options.templateCompilerPath);
154
- return new core_1.NodeTemplateCompiler({
117
+ let opts = {
155
118
  compilerPath: options.templateCompilerPath,
156
- compilerChecksum,
157
- EmberENV: {},
158
- plugins: options.plugins,
159
- resolver: this.templateResolver(),
160
- });
119
+ targetFormat: 'hbs',
120
+ enableLegacyModules: [
121
+ 'ember-cli-htmlbars',
122
+ 'ember-cli-htmlbars-inline-precompile',
123
+ 'htmlbars-inline-precompile',
124
+ ],
125
+ transforms: options.plugins.ast,
126
+ };
127
+ return [require.resolve('babel-plugin-ember-template-compilation'), opts];
161
128
  }
162
129
  }
163
130
  }
164
131
  }
165
- templateResolver() {
166
- return resolver({
167
- root: this.app.root,
168
- modulePrefix: this.moduleName,
169
- });
170
- }
171
132
  updateRegistry(registry) {
172
133
  // auto-import gets disabled because we support it natively
173
134
  registry.remove('js', 'ember-auto-import-analyzer');
174
135
  // here we're replacing the stock template compiler with our own. Ours
175
- // leaves hbs files as hbs, not js. The only transformation it is supposed
176
- // to do is applying any custom AST transforms and reserializing the results
177
- // back to HBS.
136
+ // doesn't compile all the way to wire format -- it does source-to-source
137
+ // transformation just to process custom AST transforms, while leaving the
138
+ // template as a template. It does turn HBS files into equivalent JS files
139
+ // (because in the general case, AST transforms may need to emit values in
140
+ // Javascript scope), but those JS files will contain HBS strings, not wire
141
+ // format.
178
142
  //
179
143
  // Even when no AST transforms are registered, we'll still need to register
180
144
  // a no-op transform here to avoid an exception coming out of ember-cli like
@@ -186,8 +150,8 @@ class V1Addon {
186
150
  ext: 'hbs',
187
151
  _addon: this,
188
152
  toTree(tree) {
189
- if (this._addon.templateCompiler) {
190
- return new template_compiler_broccoli_plugin_1.default(tree, this._addon.templateCompiler);
153
+ if (this._addon.templateCompilerBabelPlugin) {
154
+ return new hbs_to_js_broccoli_plugin_1.default(tree);
191
155
  }
192
156
  else {
193
157
  // when there are no custom AST transforms, we don't need to do
@@ -222,7 +186,7 @@ class V1Addon {
222
186
  // we need to run custom inline hbs preprocessing if there are custom hbs
223
187
  // plugins and there are inline hbs templates
224
188
  needsInlineHBS() {
225
- if (!this.templateCompiler) {
189
+ if (!this.templateCompilerBabelPlugin) {
226
190
  // no custom transforms
227
191
  return false;
228
192
  }
@@ -433,6 +397,11 @@ class V1Addon {
433
397
  // Namespace the tree being passed to preprocessJs with the moduleName
434
398
  // to mimic classic build
435
399
  tree = (0, broccoli_funnel_1.default)(tree, { destDir: this.moduleName });
400
+ if (this.addonInstance.shouldCompileTemplates() && ((_a = this.addonInstance.registry.load('template')) === null || _a === void 0 ? void 0 : _a.length) > 0) {
401
+ tree = this.app.preprocessRegistry.preprocessTemplates(tree, {
402
+ registry: this.addonInstance.registry,
403
+ });
404
+ }
436
405
  tree = this.addonInstance.preprocessJs(tree, '/', this.moduleName, {
437
406
  registry: this.addonInstance.registry,
438
407
  });
@@ -441,11 +410,6 @@ class V1Addon {
441
410
  tree = (0, broccoli_funnel_1.default)(tree, {
442
411
  srcDir: this.moduleName,
443
412
  });
444
- if (this.addonInstance.shouldCompileTemplates() && ((_a = this.addonInstance.registry.load('template')) === null || _a === void 0 ? void 0 : _a.length) > 0) {
445
- tree = this.app.preprocessRegistry.preprocessTemplates(tree, {
446
- registry: this.addonInstance.registry,
447
- });
448
- }
449
413
  return tree;
450
414
  }
451
415
  updateBabelConfig() {
@@ -489,8 +453,8 @@ class V1Addon {
489
453
  }
490
454
  }
491
455
  }
492
- if (this.templateCompiler) {
493
- babelConfig.plugins.push(this.templateCompiler.inlineTransformsBabelPlugin());
456
+ if (this.templateCompilerBabelPlugin) {
457
+ babelConfig.plugins.push(this.templateCompilerBabelPlugin);
494
458
  }
495
459
  }
496
460
  get v2Tree() {
@@ -961,10 +925,7 @@ class V1Addon {
961
925
  }
962
926
  __decorate([
963
927
  (0, typescript_memoize_1.Memoize)()
964
- ], V1Addon.prototype, "templateCompiler", null);
965
- __decorate([
966
- (0, typescript_memoize_1.Memoize)()
967
- ], V1Addon.prototype, "templateResolver", null);
928
+ ], V1Addon.prototype, "templateCompilerBabelPlugin", null);
968
929
  __decorate([
969
930
  (0, typescript_memoize_1.Memoize)()
970
931
  ], V1Addon.prototype, "root", null);