@embroider/compat 1.4.0 → 1.5.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/package.json +4 -4
- package/src/resolver.js +1 -1
- package/src/resolver.js.map +1 -1
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@embroider/compat",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.5.0",
|
|
4
4
|
"private": false,
|
|
5
5
|
"description": "Backward compatibility layer for the Embroider build system.",
|
|
6
6
|
"repository": {
|
|
@@ -29,8 +29,8 @@
|
|
|
29
29
|
"@babel/plugin-syntax-dynamic-import": "^7.8.3",
|
|
30
30
|
"@babel/preset-env": "^7.14.5",
|
|
31
31
|
"@babel/traverse": "^7.14.5",
|
|
32
|
-
"@embroider/macros": "1.
|
|
33
|
-
"@embroider/shared-internals": "1.
|
|
32
|
+
"@embroider/macros": "1.5.0",
|
|
33
|
+
"@embroider/shared-internals": "1.5.0",
|
|
34
34
|
"@types/babel__code-frame": "^7.0.2",
|
|
35
35
|
"@types/yargs": "^17.0.3",
|
|
36
36
|
"assert-never": "^1.1.0",
|
|
@@ -84,7 +84,7 @@
|
|
|
84
84
|
"typescript": "*"
|
|
85
85
|
},
|
|
86
86
|
"peerDependencies": {
|
|
87
|
-
"@embroider/core": "1.
|
|
87
|
+
"@embroider/core": "1.5.0"
|
|
88
88
|
},
|
|
89
89
|
"engines": {
|
|
90
90
|
"node": "12.* || 14.* || >= 16"
|
package/src/resolver.js
CHANGED
package/src/resolver.js.map
CHANGED
|
@@ -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 default class CompatResolver implements Resolver {\n private dependencies: Map<string, Resolution[]> = new Map();\n private templateCompiler: TemplateCompiler | undefined;\n private auditMode = false;\n\n _parallelBabel: {\n requireFile: string;\n buildUsing: string;\n params: RehydrationParams;\n };\n\n constructor(private params: RehydrationParams) {\n this.params.options = extractOptions(this.params.options);\n this._parallelBabel = {\n requireFile: __filename,\n buildUsing: 'rehydrate',\n params,\n };\n }\n\n enter(moduleName: string) {\n let rules = this.findComponentRules(moduleName);\n let deps: Resolution[];\n if (rules?.dependsOnComponents) {\n deps = rules.dependsOnComponents.map(snippet => this.resolveComponentSnippet(snippet, rules!, moduleName));\n } else {\n deps = [];\n }\n this.dependencies.set(moduleName, deps);\n }\n\n private add(resolution: Resolution, from: string) {\n // this \"!\" is safe because we always `enter()` a module before hitting this\n this.dependencies.get(from)!.push(resolution);\n return resolution;\n }\n\n private findComponentRules(absPath: string): PreprocessedComponentRule | undefined {\n let rules = this.rules.components.get(absPath);\n if (rules) {\n return rules;\n }\n\n // co-located templates aren't visible to the resolver, because they never\n // get resolved from a template (they are always handled directly by the\n // corresponding JS module, which the resolver *does* see). This means their\n // paths won't ever be in `this.rules.components`. But we do want them to\n // \"inherit\" the rules that are attached to their corresonding JS module.\n if (absPath.endsWith('.hbs')) {\n let stem = absPath.slice(0, -4);\n for (let ext of this.adjustImportsOptions.resolvableExtensions) {\n if (ext !== '.hbs') {\n let rules = this.rules.components.get(stem + ext);\n if (rules) {\n return rules;\n }\n }\n }\n }\n return undefined;\n }\n\n private isIgnoredComponent(dasherizedName: string) {\n return this.rules.ignoredComponents.includes(dasherizedName);\n }\n\n @Memoize()\n get adjustImportsOptions(): AdjustImportsOptions {\n const { params } = this;\n return 'adjustImportsOptionsPath' in params\n ? // eslint-disable-next-line @typescript-eslint/no-require-imports\n require(params.adjustImportsOptionsPath)\n : params.adjustImportsOptions;\n }\n\n @Memoize()\n private get rules() {\n if (!this.templateCompiler) {\n throw new Error(\n `Bug: Resolver needs to get linked into a TemplateCompiler before it can understand packageRules`\n );\n }\n\n // keyed by their first resolved dependency's runtimeName.\n let components: Map<string, PreprocessedComponentRule> = new Map();\n\n // keyed by our own dasherized interpretation of the component's name.\n let ignoredComponents: string[] = [];\n\n // we're not responsible for filtering out rules for inactive packages here,\n // that is done before getting to us. So we should assume these are all in\n // force.\n for (let rule of this.params.activePackageRules) {\n if (rule.components) {\n for (let [snippet, componentRules] of Object.entries(rule.components)) {\n if (componentRules.safeToIgnore) {\n ignoredComponents.push(this.standardDasherize(snippet, rule));\n continue;\n }\n let resolvedDep = this.resolveComponentSnippet(snippet, rule).modules[0];\n let processedRules = preprocessComponentRule(componentRules);\n\n // we always register our rules on the component's own first resolved\n // module, which must be a module in the app's module namespace.\n components.set(resolvedDep.absPath, processedRules);\n\n // if there's a custom layout, we also need to register our rules on\n // those templates.\n if (componentRules.layout) {\n if (componentRules.layout.appPath) {\n components.set(join(this.params.root, componentRules.layout.appPath), processedRules);\n } else if (componentRules.layout.addonPath) {\n for (let root of rule.roots) {\n components.set(join(root, componentRules.layout.addonPath), processedRules);\n }\n } else {\n throw new Error(\n `layout property in component rule must contain either appPath or addonPath: ${JSON.stringify(\n rule,\n null,\n 2\n )}`\n );\n }\n }\n }\n }\n if (rule.appTemplates) {\n for (let [path, templateRules] of Object.entries(rule.appTemplates)) {\n let processedRules = preprocessComponentRule(templateRules);\n components.set(join(this.params.root, path), processedRules);\n }\n }\n if (rule.addonTemplates) {\n for (let [path, templateRules] of Object.entries(rule.addonTemplates)) {\n let processedRules = preprocessComponentRule(templateRules);\n for (let root of rule.roots) {\n components.set(join(root, path), processedRules);\n }\n }\n }\n }\n return { components, ignoredComponents };\n }\n\n resolveComponentSnippet(\n snippet: string,\n rule: PackageRules | ModuleRules,\n from = 'rule-snippet.hbs'\n ): ResolutionResult & { type: 'component' } {\n if (!this.templateCompiler) {\n throw new Error(`bug: tried to use resolveComponentSnippet without a templateCompiler`);\n }\n let name = this.standardDasherize(snippet, rule);\n let found = this.tryComponent(name, from, false);\n if (found && found.type === 'component') {\n return found;\n }\n throw new Error(`unable to locate component ${snippet} referred to in rule ${JSON.stringify(rule, null, 2)}`);\n }\n\n private standardDasherize(snippet: string, rule: PackageRules | ModuleRules): string {\n if (!this.templateCompiler) {\n throw new Error(`bug: tried to use resolveComponentSnippet without a templateCompiler`);\n }\n let ast: ASTv1.Template | ASTv1.Program;\n try {\n ast = this.templateCompiler.parse('snippet.hbs', snippet) as unknown as ASTv1.Template | ASTv1.Program;\n } catch (err) {\n throw new Error(`unable to parse component snippet \"${snippet}\" from rule ${JSON.stringify(rule, null, 2)}`);\n }\n if ((ast.type === 'Program' || ast.type === 'Template') && ast.body.length > 0) {\n let first = ast.body[0];\n const isMustachePath = first.type === 'MustacheStatement' && first.path.type === 'PathExpression';\n const isComponent =\n isMustachePath && ((first as ASTv1.MustacheStatement).path as ASTv1.PathExpression).original === 'component';\n const hasStringParam =\n isComponent &&\n Array.isArray((first as ASTv1.MustacheStatement).params) &&\n (first as ASTv1.MustacheStatement).params[0].type === 'StringLiteral';\n if (isMustachePath && isComponent && hasStringParam) {\n return ((first as ASTv1.MustacheStatement).params[0] as ASTv1.StringLiteral).value;\n }\n if (isMustachePath) {\n return ((first as ASTv1.MustacheStatement).path as ASTv1.PathExpression).original;\n }\n if (first.type === 'ElementNode') {\n return dasherize(first.tag);\n }\n }\n throw new Error(`cannot identify a component in rule snippet: \"${snippet}\"`);\n }\n\n astTransformer(templateCompiler: TemplateCompiler): unknown {\n this.templateCompiler = templateCompiler;\n if (this.staticComponentsEnabled || this.staticHelpersEnabled || this.staticModifiersEnabled) {\n return makeResolverTransform(this);\n }\n }\n\n // called by our audit tool. Forces staticComponents, staticHelpers and staticModifiers\n // to activate so we can audit their behavior, while making their errors silent\n // until we can gather them up at the end of the build for the audit results.\n enableAuditMode() {\n this.auditMode = true;\n }\n\n errorsIn(moduleName: string): ResolutionFail[] {\n let deps = this.dependencies.get(moduleName);\n if (deps) {\n return deps.filter(d => d.type === 'error') as ResolutionFail[];\n } else {\n return [];\n }\n }\n\n dependenciesOf(moduleName: string): ResolvedDep[] {\n let flatDeps: Map<string, ResolvedDep> = new Map();\n let deps = this.dependencies.get(moduleName);\n if (deps) {\n for (let dep of deps) {\n if (dep.type === 'error') {\n if (!this.auditMode && !this.params.options.allowUnsafeDynamicComponents) {\n let e: ResolverDependencyError = new Error(\n `${dep.message}: ${dep.detail} in ${humanReadableFile(this.params.root, moduleName)}`\n );\n e.isTemplateResolverError = true;\n e.loc = dep.loc;\n e.moduleName = moduleName;\n throw e;\n }\n } else {\n for (let entry of dep.modules) {\n let { runtimeName } = entry;\n flatDeps.set(runtimeName, entry);\n }\n }\n }\n }\n return [...flatDeps.values()];\n }\n\n resolveImport(path: string, from: string): { runtimeName: string; absPath: string } | undefined {\n let absPath;\n try {\n absPath = resolve.sync(path, {\n basedir: dirname(from),\n extensions: this.adjustImportsOptions.resolvableExtensions,\n });\n } catch (err) {\n return;\n }\n if (absPath) {\n let runtimeName = this.absPathToRuntimeName(absPath);\n if (runtimeName) {\n return { runtimeName, absPath };\n }\n }\n }\n\n @Memoize()\n private get resolvableExtensionsPattern() {\n return extensionsPattern(this.adjustImportsOptions.resolvableExtensions);\n }\n\n absPathToRuntimePath(absPath: string, owningPackage?: { root: string; name: string }) {\n let pkg = owningPackage || PackageCache.shared('embroider-stage3', this.params.root).ownerOfFile(absPath);\n if (pkg) {\n let packageRuntimeName = pkg.name;\n for (let [runtimeName, realName] of Object.entries(this.adjustImportsOptions.renamePackages)) {\n if (realName === packageRuntimeName) {\n packageRuntimeName = runtimeName;\n break;\n }\n }\n return join(packageRuntimeName, relative(pkg.root, absPath)).split(sep).join('/');\n } else if (absPath.startsWith(this.params.root)) {\n return join(this.params.modulePrefix, relative(this.params.root, absPath)).split(sep).join('/');\n } else {\n throw new Error(`bug: can't figure out the runtime name for ${absPath}`);\n }\n }\n\n absPathToRuntimeName(absPath: string, owningPackage?: { root: string; name: string }) {\n return this.absPathToRuntimePath(absPath, owningPackage)\n .replace(this.resolvableExtensionsPattern, '')\n .replace(/\\/index$/, '');\n }\n\n private get staticComponentsEnabled(): boolean {\n return this.params.options.staticComponents || this.auditMode;\n }\n\n private get staticHelpersEnabled(): boolean {\n return this.params.options.staticHelpers || this.auditMode;\n }\n\n private get staticModifiersEnabled(): boolean {\n return this.params.options.staticModifiers || this.auditMode;\n }\n\n private tryHelper(path: string, from: string): Resolution | null {\n let parts = path.split('@');\n if (parts.length > 1 && parts[0].length > 0) {\n let cache = PackageCache.shared('embroider-stage3', this.params.root);\n let packageName = parts[0];\n let renamed = this.adjustImportsOptions.renamePackages[packageName];\n if (renamed) {\n packageName = renamed;\n }\n return this._tryHelper(parts[1], from, cache.resolve(packageName, cache.ownerOfFile(from)!));\n } else {\n return this._tryHelper(path, from, this.appPackage);\n }\n }\n\n private _tryHelper(path: string, from: string, targetPackage: Package | AppPackagePlaceholder): Resolution | null {\n for (let extension of this.adjustImportsOptions.resolvableExtensions) {\n let absPath = join(targetPackage.root, 'helpers', path) + extension;\n if (pathExistsSync(absPath)) {\n return {\n type: 'helper',\n modules: [\n {\n runtimeName: this.absPathToRuntimeName(absPath, targetPackage),\n path: explicitRelative(dirname(from), absPath),\n absPath,\n },\n ],\n };\n }\n }\n return null;\n }\n\n private tryModifier(path: string, from: string): Resolution | null {\n let parts = path.split('@');\n if (parts.length > 1 && parts[0].length > 0) {\n let cache = PackageCache.shared('embroider-stage3', this.params.root);\n let packageName = parts[0];\n let renamed = this.adjustImportsOptions.renamePackages[packageName];\n if (renamed) {\n packageName = renamed;\n }\n return this._tryModifier(parts[1], from, cache.resolve(packageName, cache.ownerOfFile(from)!));\n } else {\n return this._tryModifier(path, from, this.appPackage);\n }\n }\n\n private _tryModifier(path: string, from: string, targetPackage: Package | AppPackagePlaceholder): Resolution | null {\n for (let extension of this.adjustImportsOptions.resolvableExtensions) {\n let absPath = join(targetPackage.root, 'modifiers', path) + extension;\n if (pathExistsSync(absPath)) {\n return {\n type: 'modifier',\n modules: [\n {\n runtimeName: this.absPathToRuntimeName(absPath, targetPackage),\n path: explicitRelative(dirname(from), absPath),\n absPath,\n },\n ],\n };\n }\n }\n return null;\n }\n\n @Memoize()\n private get appPackage(): AppPackagePlaceholder {\n return { root: this.params.root, name: this.params.modulePrefix };\n }\n\n private tryComponent(path: string, from: string, withRuleLookup = true): Resolution | null {\n let parts = path.split('@');\n if (parts.length > 1 && parts[0].length > 0) {\n let cache = PackageCache.shared('embroider-stage3', this.params.root);\n let packageName = parts[0];\n let renamed = this.adjustImportsOptions.renamePackages[packageName];\n if (renamed) {\n packageName = renamed;\n }\n return this._tryComponent(parts[1], from, withRuleLookup, cache.resolve(packageName, cache.ownerOfFile(from)!));\n } else {\n return this._tryComponent(path, from, withRuleLookup, this.appPackage);\n }\n }\n\n private _tryComponent(\n path: string,\n from: string,\n withRuleLookup: boolean,\n targetPackage: Package | AppPackagePlaceholder\n ): Resolution | null {\n // The order here is important! We always put our .hbs paths first here, so\n // that if we have an hbs file of our own, that will be the first resolved\n // dependency. The first resolved dependency is special because we use that\n // as a key into the rules, and we want to be able to find our rules when\n // checking from our own template (among other times).\n\n let extensions = ['.hbs', ...this.adjustImportsOptions.resolvableExtensions.filter((e: string) => e !== '.hbs')];\n\n let componentModules = [] as string[];\n\n // first, the various places our template might be\n for (let extension of extensions) {\n let absPath = join(targetPackage.root, 'templates', 'components', path) + extension;\n if (pathExistsSync(absPath)) {\n componentModules.push(absPath);\n break;\n }\n\n absPath = join(targetPackage.root, 'components', path, 'template') + extension;\n if (pathExistsSync(absPath)) {\n componentModules.push(absPath);\n break;\n }\n\n if (\n typeof this.params.podModulePrefix !== 'undefined' &&\n this.params.podModulePrefix !== '' &&\n targetPackage === this.appPackage\n ) {\n let podPrefix = this.params.podModulePrefix.replace(this.params.modulePrefix, '');\n\n absPath = join(targetPackage.root, podPrefix, 'components', path, 'template') + extension;\n if (pathExistsSync(absPath)) {\n componentModules.push(absPath);\n break;\n }\n }\n }\n\n // then the various places our javascript might be\n for (let extension of extensions) {\n if (extension === '.hbs') {\n continue;\n }\n\n let absPath = join(targetPackage.root, 'components', path, 'index') + extension;\n if (pathExistsSync(absPath)) {\n componentModules.push(absPath);\n break;\n }\n\n absPath = join(targetPackage.root, 'components', path) + extension;\n if (pathExistsSync(absPath)) {\n componentModules.push(absPath);\n break;\n }\n\n absPath = join(targetPackage.root, 'components', path, 'component') + extension;\n if (pathExistsSync(absPath)) {\n componentModules.push(absPath);\n break;\n }\n\n if (\n typeof this.params.podModulePrefix !== 'undefined' &&\n this.params.podModulePrefix !== '' &&\n targetPackage === this.appPackage\n ) {\n let podPrefix = this.params.podModulePrefix.replace(this.params.modulePrefix, '');\n\n absPath = join(targetPackage.root, podPrefix, 'components', path, 'component') + extension;\n if (pathExistsSync(absPath)) {\n componentModules.push(absPath);\n break;\n }\n }\n }\n\n if (componentModules.length > 0) {\n let componentRules;\n if (withRuleLookup) {\n componentRules = this.findComponentRules(componentModules[0]);\n }\n return {\n type: 'component',\n modules: componentModules.map(absPath => ({\n path: explicitRelative(dirname(from), absPath),\n absPath,\n runtimeName: this.absPathToRuntimeName(absPath, targetPackage),\n })),\n yieldsComponents: componentRules ? componentRules.yieldsSafeComponents : [],\n yieldsArguments: componentRules ? componentRules.yieldsArguments : [],\n argumentsAreComponents: componentRules ? componentRules.argumentsAreComponents : [],\n };\n }\n\n return null;\n }\n\n resolveSubExpression(path: string, from: string, loc: Loc): Resolution | null {\n if (!this.staticHelpersEnabled) {\n return null;\n }\n let found = this.tryHelper(path, from);\n if (found) {\n return this.add(found, from);\n }\n if (builtInHelpers.includes(path)) {\n return null;\n }\n return this.add(\n {\n type: 'error',\n message: `Missing helper`,\n detail: path,\n loc,\n },\n from\n );\n }\n\n resolveMustache(path: string, hasArgs: boolean, from: string, loc: Loc): Resolution | null {\n if (this.staticHelpersEnabled) {\n let found = this.tryHelper(path, from);\n if (found) {\n return this.add(found, from);\n }\n }\n if (this.staticComponentsEnabled) {\n let found = this.tryComponent(path, from);\n if (found) {\n return this.add(found, from);\n }\n }\n if (\n hasArgs &&\n this.staticComponentsEnabled &&\n this.staticHelpersEnabled &&\n !builtInHelpers.includes(path) &&\n !this.isIgnoredComponent(path)\n ) {\n return this.add(\n {\n type: 'error',\n message: `Missing component or helper`,\n detail: path,\n loc,\n },\n from\n );\n } else {\n return null;\n }\n }\n\n resolveElementModifierStatement(path: string, from: string, loc: Loc): Resolution | null {\n if (!this.staticModifiersEnabled) {\n return null;\n }\n let found = this.tryModifier(path, from);\n if (found) {\n return this.add(found, from);\n }\n if (builtInModifiers.includes(path)) {\n return null;\n }\n return this.add(\n {\n type: 'error',\n message: `Missing modifier`,\n detail: path,\n loc,\n },\n from\n );\n }\n\n resolveElement(tagName: string, from: string, loc: Loc): Resolution | null {\n if (!this.staticComponentsEnabled) {\n return null;\n }\n\n if (tagName[0] === tagName[0].toLowerCase()) {\n // starts with lower case, so this can't be a component we need to\n // globally resolve\n return null;\n }\n\n let dName = dasherize(tagName);\n\n if (builtInComponents.includes(dName)) {\n return null;\n }\n\n let found = this.tryComponent(dName, from);\n if (found) {\n return this.add(found, from);\n }\n\n if (this.isIgnoredComponent(dName)) {\n return null;\n }\n\n return this.add(\n {\n type: 'error',\n message: `Missing component`,\n detail: tagName,\n loc,\n },\n from\n );\n }\n\n resolveComponentHelper(\n component: ComponentLocator,\n from: string,\n loc: Loc,\n impliedBecause?: { componentName: string; argumentName: string }\n ): Resolution | null {\n if (!this.staticComponentsEnabled) {\n return null;\n }\n\n let message;\n if (impliedBecause) {\n message = `argument \"${impliedBecause.argumentName}\" to component \"${impliedBecause.componentName}\" is treated as a component, but the value you're passing is dynamic`;\n } else {\n message = `Unsafe dynamic component`;\n }\n\n if (component.type === 'other') {\n return this.add(\n {\n type: 'error',\n message,\n detail: `cannot statically analyze this expression`,\n loc,\n },\n from\n );\n }\n if (component.type === 'path') {\n let ownComponentRules = this.findComponentRules(from);\n if (ownComponentRules && ownComponentRules.safeInteriorPaths.includes(component.path)) {\n return null;\n }\n return this.add(\n {\n type: 'error',\n message,\n detail: component.path,\n loc,\n },\n from\n );\n }\n\n if (builtInComponents.includes(component.path)) {\n return null;\n }\n\n let found = this.tryComponent(component.path, from);\n if (found) {\n return this.add(found, from);\n }\n return this.add(\n {\n type: 'error',\n message: `Missing component`,\n detail: component.path,\n loc,\n },\n from\n );\n }\n\n 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 {\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 default class CompatResolver implements Resolver {\n private dependencies: Map<string, Resolution[]> = new Map();\n private templateCompiler: TemplateCompiler | undefined;\n private auditMode = false;\n\n _parallelBabel: {\n requireFile: string;\n buildUsing: string;\n params: RehydrationParams;\n };\n\n constructor(private params: RehydrationParams) {\n this.params.options = extractOptions(this.params.options);\n this._parallelBabel = {\n requireFile: __filename,\n buildUsing: 'rehydrate',\n params,\n };\n }\n\n enter(moduleName: string) {\n let rules = this.findComponentRules(moduleName);\n let deps: Resolution[];\n if (rules?.dependsOnComponents) {\n deps = rules.dependsOnComponents.map(snippet => this.resolveComponentSnippet(snippet, rules!, moduleName));\n } else {\n deps = [];\n }\n this.dependencies.set(moduleName, deps);\n }\n\n private add(resolution: Resolution, from: string) {\n // this \"!\" is safe because we always `enter()` a module before hitting this\n this.dependencies.get(from)!.push(resolution);\n return resolution;\n }\n\n private findComponentRules(absPath: string): PreprocessedComponentRule | undefined {\n let rules = this.rules.components.get(absPath);\n if (rules) {\n return rules;\n }\n\n // co-located templates aren't visible to the resolver, because they never\n // get resolved from a template (they are always handled directly by the\n // corresponding JS module, which the resolver *does* see). This means their\n // paths won't ever be in `this.rules.components`. But we do want them to\n // \"inherit\" the rules that are attached to their corresonding JS module.\n if (absPath.endsWith('.hbs')) {\n let stem = absPath.slice(0, -4);\n for (let ext of this.adjustImportsOptions.resolvableExtensions) {\n if (ext !== '.hbs') {\n let rules = this.rules.components.get(stem + ext);\n if (rules) {\n return rules;\n }\n }\n }\n }\n return undefined;\n }\n\n private isIgnoredComponent(dasherizedName: string) {\n return this.rules.ignoredComponents.includes(dasherizedName);\n }\n\n @Memoize()\n get adjustImportsOptions(): AdjustImportsOptions {\n const { params } = this;\n return 'adjustImportsOptionsPath' in params\n ? // eslint-disable-next-line @typescript-eslint/no-require-imports\n require(params.adjustImportsOptionsPath)\n : params.adjustImportsOptions;\n }\n\n @Memoize()\n private get rules() {\n if (!this.templateCompiler) {\n throw new Error(\n `Bug: Resolver needs to get linked into a TemplateCompiler before it can understand packageRules`\n );\n }\n\n // keyed by their first resolved dependency's runtimeName.\n let components: Map<string, PreprocessedComponentRule> = new Map();\n\n // keyed by our own dasherized interpretation of the component's name.\n let ignoredComponents: string[] = [];\n\n // we're not responsible for filtering out rules for inactive packages here,\n // that is done before getting to us. So we should assume these are all in\n // force.\n for (let rule of this.params.activePackageRules) {\n if (rule.components) {\n for (let [snippet, componentRules] of Object.entries(rule.components)) {\n if (componentRules.safeToIgnore) {\n ignoredComponents.push(this.standardDasherize(snippet, rule));\n continue;\n }\n let resolvedDep = this.resolveComponentSnippet(snippet, rule).modules[0];\n let processedRules = preprocessComponentRule(componentRules);\n\n // we always register our rules on the component's own first resolved\n // module, which must be a module in the app's module namespace.\n components.set(resolvedDep.absPath, processedRules);\n\n // if there's a custom layout, we also need to register our rules on\n // those templates.\n if (componentRules.layout) {\n if (componentRules.layout.appPath) {\n components.set(join(this.params.root, componentRules.layout.appPath), processedRules);\n } else if (componentRules.layout.addonPath) {\n for (let root of rule.roots) {\n components.set(join(root, componentRules.layout.addonPath), processedRules);\n }\n } else {\n throw new Error(\n `layout property in component rule must contain either appPath or addonPath: ${JSON.stringify(\n rule,\n null,\n 2\n )}`\n );\n }\n }\n }\n }\n if (rule.appTemplates) {\n for (let [path, templateRules] of Object.entries(rule.appTemplates)) {\n let processedRules = preprocessComponentRule(templateRules);\n components.set(join(this.params.root, path), processedRules);\n }\n }\n if (rule.addonTemplates) {\n for (let [path, templateRules] of Object.entries(rule.addonTemplates)) {\n let processedRules = preprocessComponentRule(templateRules);\n for (let root of rule.roots) {\n components.set(join(root, path), processedRules);\n }\n }\n }\n }\n return { components, ignoredComponents };\n }\n\n resolveComponentSnippet(\n snippet: string,\n rule: PackageRules | ModuleRules,\n from = 'rule-snippet.hbs'\n ): ResolutionResult & { type: 'component' } {\n if (!this.templateCompiler) {\n throw new Error(`bug: tried to use resolveComponentSnippet without a templateCompiler`);\n }\n let name = this.standardDasherize(snippet, rule);\n let found = this.tryComponent(name, from, false);\n if (found && found.type === 'component') {\n return found;\n }\n throw new Error(`unable to locate component ${snippet} referred to in rule ${JSON.stringify(rule, null, 2)}`);\n }\n\n private standardDasherize(snippet: string, rule: PackageRules | ModuleRules): string {\n if (!this.templateCompiler) {\n throw new Error(`bug: tried to use resolveComponentSnippet without a templateCompiler`);\n }\n let ast: ASTv1.Template | ASTv1.Program;\n try {\n ast = this.templateCompiler.parse('snippet.hbs', snippet) as unknown as ASTv1.Template | ASTv1.Program;\n } catch (err) {\n throw new Error(`unable to parse component snippet \"${snippet}\" from rule ${JSON.stringify(rule, null, 2)}`);\n }\n if ((ast.type === 'Program' || ast.type === 'Template') && ast.body.length > 0) {\n let first = ast.body[0];\n const isMustachePath = first.type === 'MustacheStatement' && first.path.type === 'PathExpression';\n const isComponent =\n isMustachePath && ((first as ASTv1.MustacheStatement).path as ASTv1.PathExpression).original === 'component';\n const hasStringParam =\n isComponent &&\n Array.isArray((first as ASTv1.MustacheStatement).params) &&\n (first as ASTv1.MustacheStatement).params[0].type === 'StringLiteral';\n if (isMustachePath && isComponent && hasStringParam) {\n return ((first as ASTv1.MustacheStatement).params[0] as ASTv1.StringLiteral).value;\n }\n if (isMustachePath) {\n return ((first as ASTv1.MustacheStatement).path as ASTv1.PathExpression).original;\n }\n if (first.type === 'ElementNode') {\n return dasherize(first.tag);\n }\n }\n throw new Error(`cannot identify a component in rule snippet: \"${snippet}\"`);\n }\n\n astTransformer(templateCompiler: TemplateCompiler): unknown {\n this.templateCompiler = templateCompiler;\n if (this.staticComponentsEnabled || this.staticHelpersEnabled || this.staticModifiersEnabled) {\n return makeResolverTransform(this);\n }\n }\n\n // called by our audit tool. Forces staticComponents, staticHelpers and staticModifiers\n // to activate so we can audit their behavior, while making their errors silent\n // until we can gather them up at the end of the build for the audit results.\n enableAuditMode() {\n this.auditMode = true;\n }\n\n errorsIn(moduleName: string): ResolutionFail[] {\n let deps = this.dependencies.get(moduleName);\n if (deps) {\n return deps.filter(d => d.type === 'error') as ResolutionFail[];\n } else {\n return [];\n }\n }\n\n dependenciesOf(moduleName: string): ResolvedDep[] {\n let flatDeps: Map<string, ResolvedDep> = new Map();\n let deps = this.dependencies.get(moduleName);\n if (deps) {\n for (let dep of deps) {\n if (dep.type === 'error') {\n if (!this.auditMode && !this.params.options.allowUnsafeDynamicComponents) {\n let e: ResolverDependencyError = new Error(\n `${dep.message}: ${dep.detail} in ${humanReadableFile(this.params.root, moduleName)}`\n );\n e.isTemplateResolverError = true;\n e.loc = dep.loc;\n e.moduleName = moduleName;\n throw e;\n }\n } else {\n for (let entry of dep.modules) {\n let { runtimeName } = entry;\n flatDeps.set(runtimeName, entry);\n }\n }\n }\n }\n return [...flatDeps.values()];\n }\n\n resolveImport(path: string, from: string): { runtimeName: string; absPath: string } | undefined {\n let absPath;\n try {\n absPath = resolve.sync(path, {\n basedir: dirname(from),\n extensions: this.adjustImportsOptions.resolvableExtensions,\n });\n } catch (err) {\n return;\n }\n if (absPath) {\n let runtimeName = this.absPathToRuntimeName(absPath);\n if (runtimeName) {\n return { runtimeName, absPath };\n }\n }\n }\n\n @Memoize()\n private get resolvableExtensionsPattern() {\n return extensionsPattern(this.adjustImportsOptions.resolvableExtensions);\n }\n\n absPathToRuntimePath(absPath: string, owningPackage?: { root: string; name: string }) {\n let pkg = owningPackage || PackageCache.shared('embroider-stage3', this.params.root).ownerOfFile(absPath);\n if (pkg) {\n let packageRuntimeName = pkg.name;\n for (let [runtimeName, realName] of Object.entries(this.adjustImportsOptions.renamePackages)) {\n if (realName === packageRuntimeName) {\n packageRuntimeName = runtimeName;\n break;\n }\n }\n return join(packageRuntimeName, relative(pkg.root, absPath)).split(sep).join('/');\n } else if (absPath.startsWith(this.params.root)) {\n return join(this.params.modulePrefix, relative(this.params.root, absPath)).split(sep).join('/');\n } else {\n throw new Error(`bug: can't figure out the runtime name for ${absPath}`);\n }\n }\n\n absPathToRuntimeName(absPath: string, owningPackage?: { root: string; name: string }) {\n return this.absPathToRuntimePath(absPath, owningPackage)\n .replace(this.resolvableExtensionsPattern, '')\n .replace(/\\/index$/, '');\n }\n\n private get staticComponentsEnabled(): boolean {\n return this.params.options.staticComponents || this.auditMode;\n }\n\n private get staticHelpersEnabled(): boolean {\n return this.params.options.staticHelpers || this.auditMode;\n }\n\n private get staticModifiersEnabled(): boolean {\n return this.params.options.staticModifiers || this.auditMode;\n }\n\n private tryHelper(path: string, from: string): Resolution | null {\n let parts = path.split('@');\n if (parts.length > 1 && parts[0].length > 0) {\n let cache = PackageCache.shared('embroider-stage3', this.params.root);\n let packageName = parts[0];\n let renamed = this.adjustImportsOptions.renamePackages[packageName];\n if (renamed) {\n packageName = renamed;\n }\n return this._tryHelper(parts[1], from, cache.resolve(packageName, cache.ownerOfFile(from)!));\n } else {\n return this._tryHelper(path, from, this.appPackage);\n }\n }\n\n private _tryHelper(path: string, from: string, targetPackage: Package | AppPackagePlaceholder): Resolution | null {\n for (let extension of this.adjustImportsOptions.resolvableExtensions) {\n let absPath = join(targetPackage.root, 'helpers', path) + extension;\n if (pathExistsSync(absPath)) {\n return {\n type: 'helper',\n modules: [\n {\n runtimeName: this.absPathToRuntimeName(absPath, targetPackage),\n path: explicitRelative(dirname(from), absPath),\n absPath,\n },\n ],\n };\n }\n }\n return null;\n }\n\n private tryModifier(path: string, from: string): Resolution | null {\n let parts = path.split('@');\n if (parts.length > 1 && parts[0].length > 0) {\n let cache = PackageCache.shared('embroider-stage3', this.params.root);\n let packageName = parts[0];\n let renamed = this.adjustImportsOptions.renamePackages[packageName];\n if (renamed) {\n packageName = renamed;\n }\n return this._tryModifier(parts[1], from, cache.resolve(packageName, cache.ownerOfFile(from)!));\n } else {\n return this._tryModifier(path, from, this.appPackage);\n }\n }\n\n private _tryModifier(path: string, from: string, targetPackage: Package | AppPackagePlaceholder): Resolution | null {\n for (let extension of this.adjustImportsOptions.resolvableExtensions) {\n let absPath = join(targetPackage.root, 'modifiers', path) + extension;\n if (pathExistsSync(absPath)) {\n return {\n type: 'modifier',\n modules: [\n {\n runtimeName: this.absPathToRuntimeName(absPath, targetPackage),\n path: explicitRelative(dirname(from), absPath),\n absPath,\n },\n ],\n };\n }\n }\n return null;\n }\n\n @Memoize()\n private get appPackage(): AppPackagePlaceholder {\n return { root: this.params.root, name: this.params.modulePrefix };\n }\n\n private tryComponent(path: string, from: string, withRuleLookup = true): Resolution | null {\n let parts = path.split('@');\n if (parts.length > 1 && parts[0].length > 0) {\n let cache = PackageCache.shared('embroider-stage3', this.params.root);\n let packageName = parts[0];\n let renamed = this.adjustImportsOptions.renamePackages[packageName];\n if (renamed) {\n packageName = renamed;\n }\n return this._tryComponent(parts[1], from, withRuleLookup, cache.resolve(packageName, cache.ownerOfFile(from)!));\n } else {\n return this._tryComponent(path, from, withRuleLookup, this.appPackage);\n }\n }\n\n private _tryComponent(\n path: string,\n from: string,\n withRuleLookup: boolean,\n targetPackage: Package | AppPackagePlaceholder\n ): Resolution | null {\n // The order here is important! We always put our .hbs paths first here, so\n // that if we have an hbs file of our own, that will be the first resolved\n // dependency. The first resolved dependency is special because we use that\n // as a key into the rules, and we want to be able to find our rules when\n // checking from our own template (among other times).\n\n let extensions = ['.hbs', ...this.adjustImportsOptions.resolvableExtensions.filter((e: string) => e !== '.hbs')];\n\n let componentModules = [] as string[];\n\n // first, the various places our template might be\n for (let extension of extensions) {\n let absPath = join(targetPackage.root, 'templates', 'components', path) + extension;\n if (pathExistsSync(absPath)) {\n componentModules.push(absPath);\n break;\n }\n\n absPath = join(targetPackage.root, 'components', path, 'template') + extension;\n if (pathExistsSync(absPath)) {\n componentModules.push(absPath);\n break;\n }\n\n if (\n typeof this.params.podModulePrefix !== 'undefined' &&\n this.params.podModulePrefix !== '' &&\n targetPackage === this.appPackage\n ) {\n let podPrefix = this.params.podModulePrefix.replace(this.params.modulePrefix, '');\n\n absPath = join(targetPackage.root, podPrefix, 'components', path, 'template') + extension;\n if (pathExistsSync(absPath)) {\n componentModules.push(absPath);\n break;\n }\n }\n }\n\n // then the various places our javascript might be\n for (let extension of extensions) {\n if (extension === '.hbs') {\n continue;\n }\n\n let absPath = join(targetPackage.root, 'components', path, 'index') + extension;\n if (pathExistsSync(absPath)) {\n componentModules.push(absPath);\n break;\n }\n\n absPath = join(targetPackage.root, 'components', path) + extension;\n if (pathExistsSync(absPath)) {\n componentModules.push(absPath);\n break;\n }\n\n absPath = join(targetPackage.root, 'components', path, 'component') + extension;\n if (pathExistsSync(absPath)) {\n componentModules.push(absPath);\n break;\n }\n\n if (\n typeof this.params.podModulePrefix !== 'undefined' &&\n this.params.podModulePrefix !== '' &&\n targetPackage === this.appPackage\n ) {\n let podPrefix = this.params.podModulePrefix.replace(this.params.modulePrefix, '');\n\n absPath = join(targetPackage.root, podPrefix, 'components', path, 'component') + extension;\n if (pathExistsSync(absPath)) {\n componentModules.push(absPath);\n break;\n }\n }\n }\n\n if (componentModules.length > 0) {\n let componentRules;\n if (withRuleLookup) {\n componentRules = this.findComponentRules(componentModules[0]);\n }\n return {\n type: 'component',\n modules: componentModules.map(absPath => ({\n path: explicitRelative(dirname(from), absPath),\n absPath,\n runtimeName: this.absPathToRuntimeName(absPath, targetPackage),\n })),\n yieldsComponents: componentRules ? componentRules.yieldsSafeComponents : [],\n yieldsArguments: componentRules ? componentRules.yieldsArguments : [],\n argumentsAreComponents: componentRules ? componentRules.argumentsAreComponents : [],\n };\n }\n\n return null;\n }\n\n resolveSubExpression(path: string, from: string, loc: Loc): Resolution | null {\n if (!this.staticHelpersEnabled) {\n return null;\n }\n let found = this.tryHelper(path, from);\n if (found) {\n return this.add(found, from);\n }\n if (builtInHelpers.includes(path)) {\n return null;\n }\n return this.add(\n {\n type: 'error',\n message: `Missing helper`,\n detail: path,\n loc,\n },\n from\n );\n }\n\n resolveMustache(path: string, hasArgs: boolean, from: string, loc: Loc): Resolution | null {\n if (this.staticHelpersEnabled) {\n let found = this.tryHelper(path, from);\n if (found) {\n return this.add(found, from);\n }\n }\n if (this.staticComponentsEnabled) {\n let found = this.tryComponent(path, from);\n if (found) {\n return this.add(found, from);\n }\n }\n if (\n hasArgs &&\n this.staticComponentsEnabled &&\n this.staticHelpersEnabled &&\n !builtInHelpers.includes(path) &&\n !this.isIgnoredComponent(path)\n ) {\n return this.add(\n {\n type: 'error',\n message: `Missing component or helper`,\n detail: path,\n loc,\n },\n from\n );\n } else {\n return null;\n }\n }\n\n resolveElementModifierStatement(path: string, from: string, loc: Loc): Resolution | null {\n if (!this.staticModifiersEnabled) {\n return null;\n }\n let found = this.tryModifier(path, from);\n if (found) {\n return this.add(found, from);\n }\n if (builtInModifiers.includes(path)) {\n return null;\n }\n return this.add(\n {\n type: 'error',\n message: `Missing modifier`,\n detail: path,\n loc,\n },\n from\n );\n }\n\n resolveElement(tagName: string, from: string, loc: Loc): Resolution | null {\n if (!this.staticComponentsEnabled) {\n return null;\n }\n\n if (tagName[0] === tagName[0].toLowerCase()) {\n // starts with lower case, so this can't be a component we need to\n // globally resolve\n return null;\n }\n\n let dName = dasherize(tagName);\n\n if (builtInComponents.includes(dName)) {\n return null;\n }\n\n let found = this.tryComponent(dName, from);\n if (found) {\n return this.add(found, from);\n }\n\n if (this.isIgnoredComponent(dName)) {\n return null;\n }\n\n return this.add(\n {\n type: 'error',\n message: `Missing component`,\n detail: tagName,\n loc,\n },\n from\n );\n }\n\n resolveComponentHelper(\n component: ComponentLocator,\n from: string,\n loc: Loc,\n impliedBecause?: { componentName: string; argumentName: string }\n ): Resolution | null {\n if (!this.staticComponentsEnabled) {\n return null;\n }\n\n let message;\n if (impliedBecause) {\n message = `argument \"${impliedBecause.argumentName}\" to component \"${impliedBecause.componentName}\" is treated as a component, but the value you're passing is dynamic`;\n } else {\n message = `Unsafe dynamic component`;\n }\n\n if (component.type === 'other') {\n return this.add(\n {\n type: 'error',\n message,\n detail: `cannot statically analyze this expression`,\n loc,\n },\n from\n );\n }\n if (component.type === 'path') {\n let ownComponentRules = this.findComponentRules(from);\n if (ownComponentRules && ownComponentRules.safeInteriorPaths.includes(component.path)) {\n return null;\n }\n return this.add(\n {\n type: 'error',\n message,\n detail: component.path,\n loc,\n },\n from\n );\n }\n\n if (builtInComponents.includes(component.path)) {\n return null;\n }\n\n let found = this.tryComponent(component.path, from);\n if (found) {\n return this.add(found, from);\n }\n return this.add(\n {\n type: 'error',\n message: `Missing component`,\n detail: component.path,\n loc,\n },\n from\n );\n }\n\n 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"]}
|