UNPKG

ember-source

Version:

A JavaScript framework for creating ambitious web applications

47 lines (40 loc) 1.15 kB
import { trackLocals } from './utils.js'; /** @module ember */ const keywordNames = new Set(['array', 'eq', 'element', 'and', 'fn', 'hash', 'neq', 'gt', 'gte', 'lt', 'lte', 'not', 'on', 'or']); const importSource = { on: '@ember/modifier' }; /** A Glimmer2 AST transformation that makes importable keywords work @private @class TransformActionSyntax */ function autoImportBuiltins(env) { let { hasLocal, visitor } = trackLocals(env); return { name: 'auto-import-built-ins', visitor: { ...visitor, PathExpression(node) { if (!keywordNames.has(node.original)) return; if (hasLocal(node.original)) return; rewriteKeyword(env, node, node.original, importSource[node.original] || '@ember/helper'); } } }; } function rewriteKeyword(env, node, name, moduleSpecifier) { if (env.meta?.jsutils) { node.original = env.meta.jsutils.bindImport(moduleSpecifier, name, node, { nameHint: `__keyword__${name}` }); } else if (env.meta?.emberRuntime) { node.original = env.meta.emberRuntime.lookupKeyword(name); } } export { autoImportBuiltins as default };