@embroider/macros 1.16.4 → 1.16.5-unstable.3734d9fa

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 (48) hide show
  1. package/README.md +2 -2
  2. package/package.json +7 -7
  3. package/src/babel/dependency-satisfies.js +1 -1
  4. package/src/babel/dependency-satisfies.js.map +1 -1
  5. package/src/babel/each.js +4 -4
  6. package/src/babel/each.js.map +1 -1
  7. package/src/babel/error.js +1 -1
  8. package/src/babel/error.js.map +1 -1
  9. package/src/babel/evaluate-json.js +4 -4
  10. package/src/babel/evaluate-json.js.map +1 -1
  11. package/src/babel/fail-build.js +1 -1
  12. package/src/babel/fail-build.js.map +1 -1
  13. package/src/babel/get-config.js +3 -4
  14. package/src/babel/get-config.js.map +1 -1
  15. package/src/babel/macro-condition.js +2 -3
  16. package/src/babel/macro-condition.js.map +1 -1
  17. package/src/babel/macros-babel-plugin.js +47 -19
  18. package/src/babel/macros-babel-plugin.js.map +1 -1
  19. package/src/babel/module-exists.js +1 -1
  20. package/src/babel/module-exists.js.map +1 -1
  21. package/src/babel/state.d.ts +1 -3
  22. package/src/babel/state.js +1 -19
  23. package/src/babel/state.js.map +1 -1
  24. package/src/ember-addon-main.d.ts +1 -1
  25. package/src/ember-addon-main.js.map +1 -1
  26. package/src/glimmer/ast-transform.js +3 -4
  27. package/src/glimmer/ast-transform.js.map +1 -1
  28. package/src/glimmer/dependency-satisfies.js +1 -1
  29. package/src/glimmer/dependency-satisfies.js.map +1 -1
  30. package/src/glimmer/evaluate.js +1 -1
  31. package/src/glimmer/evaluate.js.map +1 -1
  32. package/src/glimmer/fail-build.js +1 -2
  33. package/src/glimmer/fail-build.js.map +1 -1
  34. package/src/glimmer/get-config.js +1 -1
  35. package/src/glimmer/get-config.js.map +1 -1
  36. package/src/glimmer/literal.js +1 -1
  37. package/src/glimmer/literal.js.map +1 -1
  38. package/src/glimmer/macro-condition.js +6 -7
  39. package/src/glimmer/macro-condition.js.map +1 -1
  40. package/src/glimmer/macro-maybe-attrs.js +1 -2
  41. package/src/glimmer/macro-maybe-attrs.js.map +1 -1
  42. package/src/index.js +11 -12
  43. package/src/index.js.map +1 -1
  44. package/src/macros-config.d.ts +0 -3
  45. package/src/macros-config.js +1 -11
  46. package/src/macros-config.js.map +1 -1
  47. package/src/node.js +2 -2
  48. package/src/node.js.map +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"macros-babel-plugin.js","sourceRoot":"","sources":["macros-babel-plugin.ts"],"names":[],"mappings":"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","sourcesContent":["import type { NodePath } from '@babel/traverse';\nimport type { types as t } from '@babel/core';\nimport type State from './state';\nimport { initState } from './state';\nimport type { Mode as GetConfigMode } from './get-config';\nimport { inlineRuntimeConfig, insertConfig } from './get-config';\nimport macroCondition, { isMacroConditionPath } from './macro-condition';\nimport { isEachPath, insertEach } from './each';\n\nimport error from './error';\nimport failBuild from './fail-build';\nimport { Evaluator, buildLiterals } from './evaluate-json';\nimport type * as Babel from '@babel/core';\n\nexport default function main(context: typeof Babel): unknown {\n let t = context.types;\n let visitor = {\n Program: {\n enter(path: NodePath<t.Program>, state: State) {\n initState(t, path, state);\n },\n exit(_: NodePath<t.Program>, state: State) {\n // @embroider/macros itself has no runtime behaviors and should always be removed\n state.importUtil.removeAllImports('@embroider/macros');\n for (let handler of state.jobs) {\n handler();\n }\n },\n },\n 'IfStatement|ConditionalExpression': {\n enter(path: NodePath<t.IfStatement | t.ConditionalExpression>, state: State) {\n if (isMacroConditionPath(path)) {\n state.calledIdentifiers.add(path.get('test').get('callee').node);\n macroCondition(path, state);\n }\n },\n },\n ForOfStatement: {\n enter(path: NodePath<t.ForOfStatement>, state: State) {\n if (isEachPath(path)) {\n state.calledIdentifiers.add(path.get('right').get('callee').node);\n insertEach(path, state, context);\n }\n },\n },\n FunctionDeclaration: {\n enter(path: NodePath<t.FunctionDeclaration>, state: State) {\n let id = path.get('id');\n if (id.isIdentifier() && id.node.name === 'initializeRuntimeMacrosConfig' && state.opts.mode === 'run-time') {\n let pkg = state.owningPackage();\n if (pkg && pkg.name === '@embroider/macros') {\n inlineRuntimeConfig(path, state, context);\n }\n }\n },\n },\n CallExpression: {\n enter(path: NodePath<t.CallExpression>, state: State) {\n let callee = path.get('callee');\n if (!callee.isIdentifier()) {\n return;\n }\n\n // failBuild is implemented for side-effect, not value, so it's not\n // handled by evaluateMacroCall.\n if (callee.referencesImport('@embroider/macros', 'failBuild')) {\n state.calledIdentifiers.add(callee.node);\n failBuild(path, state);\n return;\n }\n\n if (callee.referencesImport('@embroider/macros', 'importSync')) {\n // we handle importSync in the exit hook\n return;\n }\n\n // getOwnConfig/getGlobalConfig/getConfig needs special handling, so\n // even though it also emits values via evaluateMacroCall when they're\n // needed recursively by other macros, it has its own insertion-handling\n // code that we invoke here.\n //\n // The things that are special include:\n // - automatic collapsing of chained properties, etc\n // - these macros have runtime implementations sometimes, which changes\n // how we rewrite them\n let mode: GetConfigMode | false = callee.referencesImport('@embroider/macros', 'getOwnConfig')\n ? 'own'\n : callee.referencesImport('@embroider/macros', 'getGlobalConfig')\n ? 'getGlobalConfig'\n : callee.referencesImport('@embroider/macros', 'getConfig')\n ? 'package'\n : false;\n if (mode) {\n state.calledIdentifiers.add(callee.node);\n insertConfig(path, state, mode, context);\n return;\n }\n\n // isTesting can have a runtime implementation. At compile time it\n // instead falls through to evaluateMacroCall.\n if (callee.referencesImport('@embroider/macros', 'isTesting') && state.opts.mode === 'run-time') {\n state.calledIdentifiers.add(callee.node);\n callee.replaceWith(state.importUtil.import(callee, state.pathToOurAddon('runtime'), 'isTesting'));\n return;\n }\n\n let result = new Evaluator({ state }).evaluateMacroCall(path);\n if (result.confident) {\n state.calledIdentifiers.add(callee.node);\n path.replaceWith(buildLiterals(result.value, context));\n }\n },\n exit(path: NodePath<t.CallExpression>, state: State) {\n let callee = path.get('callee');\n if (!callee.isIdentifier()) {\n return;\n }\n // importSync doesn't evaluate to a static value, so it's implemented\n // directly here, not in evaluateMacroCall.\n // We intentionally do this on exit here, to allow other transforms to handle importSync before we do\n // For example ember-auto-import needs to do some custom transforms to enable use of dynamic template strings,\n // so its babel plugin needs to see and handle the importSync call first!\n if (callee.referencesImport('@embroider/macros', 'importSync')) {\n if (state.opts.importSyncImplementation === 'eager') {\n let specifier = path.node.arguments[0];\n if (specifier?.type !== 'StringLiteral') {\n throw new Error(`importSync eager mode doesn't implement non string literal arguments yet`);\n }\n path.replaceWith(state.importUtil.import(path, specifier.value, '*'));\n state.calledIdentifiers.add(callee.node);\n } else {\n if (path.scope.hasBinding('require')) {\n path.scope.rename('require');\n }\n let r = t.identifier('require');\n state.generatedRequires.add(r);\n path.replaceWith(\n t.callExpression(state.importUtil.import(path, state.pathToOurAddon('es-compat2'), 'default', 'esc'), [\n t.callExpression(r, path.node.arguments),\n ])\n );\n }\n return;\n }\n },\n },\n ReferencedIdentifier(path: NodePath<t.Identifier>, state: State) {\n for (let candidate of [\n 'dependencySatisfies',\n 'moduleExists',\n 'getConfig',\n 'getOwnConfig',\n 'failBuild',\n // we cannot check importSync, as the babel transform runs on exit, so *after* this check\n // 'importSync',\n 'isDevelopingApp',\n 'isDevelopingThisPackage',\n 'isTesting',\n ]) {\n if (path.referencesImport('@embroider/macros', candidate) && !state.calledIdentifiers.has(path.node)) {\n throw error(path, `You can only use ${candidate} as a function call`);\n }\n }\n\n if (path.referencesImport('@embroider/macros', 'macroCondition') && !state.calledIdentifiers.has(path.node)) {\n throw error(path, `macroCondition can only be used as the predicate of an if statement or ternary expression`);\n }\n\n if (path.referencesImport('@embroider/macros', 'each') && !state.calledIdentifiers.has(path.node)) {\n throw error(\n path,\n `the each() macro can only be used within a for ... of statement, like: for (let x of each(thing)){}`\n );\n }\n\n if (state.opts.owningPackageRoot) {\n // there is only an owningPackageRoot when we are running inside a\n // classic ember-cli build. In the embroider stage3 build, there is no\n // owning package root because we're compiling *all* packages\n // simultaneously.\n //\n // given that we're inside classic ember-cli, stop here without trying\n // to rewrite bare `require`. It's not needed, because both our\n // `importSync` and any user-written bare `require` can both mean the\n // same thing: runtime AMD `require`.\n return;\n }\n\n if (\n state.opts.importSyncImplementation === 'cjs' &&\n path.node.name === 'require' &&\n !state.generatedRequires.has(path.node) &&\n !path.scope.hasBinding('require') &&\n state.owningPackage().isEmberPackage()\n ) {\n // Our importSync macro has been compiled to `require`. But we want to\n // distinguish that from any pre-existing, user-written `require` in an\n // Ember addon, which should retain its *runtime* meaning.\n path.replaceWith(t.memberExpression(t.identifier('window'), path.node));\n }\n },\n };\n\n if ((context as any).types.OptionalMemberExpression) {\n // our getConfig and getOwnConfig macros are supposed to be able to absorb\n // optional chaining. To make that work we need to see the optional chaining\n // before preset-env compiles them away.\n (visitor as any).OptionalMemberExpression = {\n enter(path: NodePath<t.OptionalMemberExpression>, state: State) {\n if (state.opts.mode === 'compile-time') {\n let result = new Evaluator({ state }).evaluate(path);\n if (result.confident) {\n path.replaceWith(buildLiterals(result.value, context));\n }\n }\n },\n };\n }\n\n return { visitor };\n}\n"]}
1
+ {"version":3,"file":"macros-babel-plugin.js","sourceRoot":"","sources":["macros-babel-plugin.ts"],"names":[],"mappings":"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","sourcesContent":["import type { NodePath } from '@babel/traverse';\nimport type { types as t } from '@babel/core';\nimport type State from './state';\nimport { initState } from './state';\nimport type { Mode as GetConfigMode } from './get-config';\nimport { inlineRuntimeConfig, insertConfig } from './get-config';\nimport macroCondition, { isMacroConditionPath } from './macro-condition';\nimport { isEachPath, insertEach } from './each';\n\nimport error from './error';\nimport failBuild from './fail-build';\nimport { Evaluator, buildLiterals } from './evaluate-json';\nimport type * as Babel from '@babel/core';\nimport { existsSync, readdirSync } from 'fs';\nimport { resolve, dirname, join } from 'path';\n\nexport default function main(context: typeof Babel): unknown {\n let t = context.types;\n let visitor = {\n Program: {\n enter(path: NodePath<t.Program>, state: State) {\n initState(t, path, state);\n },\n exit(_: NodePath<t.Program>, state: State) {\n // @embroider/macros itself has no runtime behaviors and should always be removed\n state.importUtil.removeAllImports('@embroider/macros');\n for (let handler of state.jobs) {\n handler();\n }\n },\n },\n 'IfStatement|ConditionalExpression': {\n enter(path: NodePath<t.IfStatement | t.ConditionalExpression>, state: State) {\n if (isMacroConditionPath(path)) {\n state.calledIdentifiers.add(path.get('test').get('callee').node);\n macroCondition(path, state);\n }\n },\n },\n ForOfStatement: {\n enter(path: NodePath<t.ForOfStatement>, state: State) {\n if (isEachPath(path)) {\n state.calledIdentifiers.add(path.get('right').get('callee').node);\n insertEach(path, state, context);\n }\n },\n },\n FunctionDeclaration: {\n enter(path: NodePath<t.FunctionDeclaration>, state: State) {\n let id = path.get('id');\n if (id.isIdentifier() && id.node.name === 'initializeRuntimeMacrosConfig' && state.opts.mode === 'run-time') {\n let pkg = state.owningPackage();\n if (pkg && pkg.name === '@embroider/macros') {\n inlineRuntimeConfig(path, state, context);\n }\n }\n },\n },\n CallExpression: {\n enter(path: NodePath<t.CallExpression>, state: State) {\n let callee = path.get('callee');\n if (!callee.isIdentifier()) {\n return;\n }\n\n // failBuild is implemented for side-effect, not value, so it's not\n // handled by evaluateMacroCall.\n if (callee.referencesImport('@embroider/macros', 'failBuild')) {\n state.calledIdentifiers.add(callee.node);\n failBuild(path, state);\n return;\n }\n\n if (callee.referencesImport('@embroider/macros', 'importSync')) {\n // we handle importSync in the exit hook\n return;\n }\n\n // getOwnConfig/getGlobalConfig/getConfig needs special handling, so\n // even though it also emits values via evaluateMacroCall when they're\n // needed recursively by other macros, it has its own insertion-handling\n // code that we invoke here.\n //\n // The things that are special include:\n // - automatic collapsing of chained properties, etc\n // - these macros have runtime implementations sometimes, which changes\n // how we rewrite them\n let mode: GetConfigMode | false = callee.referencesImport('@embroider/macros', 'getOwnConfig')\n ? 'own'\n : callee.referencesImport('@embroider/macros', 'getGlobalConfig')\n ? 'getGlobalConfig'\n : callee.referencesImport('@embroider/macros', 'getConfig')\n ? 'package'\n : false;\n if (mode) {\n state.calledIdentifiers.add(callee.node);\n insertConfig(path, state, mode, context);\n return;\n }\n\n // isTesting can have a runtime implementation. At compile time it\n // instead falls through to evaluateMacroCall.\n if (callee.referencesImport('@embroider/macros', 'isTesting') && state.opts.mode === 'run-time') {\n state.calledIdentifiers.add(callee.node);\n callee.replaceWith(state.importUtil.import(callee, state.pathToOurAddon('runtime'), 'isTesting'));\n return;\n }\n\n let result = new Evaluator({ state }).evaluateMacroCall(path);\n if (result.confident) {\n state.calledIdentifiers.add(callee.node);\n path.replaceWith(buildLiterals(result.value, context));\n }\n },\n exit(path: NodePath<t.CallExpression>, state: State) {\n let callee = path.get('callee');\n if (!callee.isIdentifier()) {\n return;\n }\n // importSync doesn't evaluate to a static value, so it's implemented\n // directly here, not in evaluateMacroCall.\n // We intentionally do this on exit here, to allow other transforms to handle importSync before we do\n // For example ember-auto-import needs to do some custom transforms to enable use of dynamic template strings,\n // so its babel plugin needs to see and handle the importSync call first!\n if (callee.referencesImport('@embroider/macros', 'importSync')) {\n let specifier = path.node.arguments[0];\n if (specifier?.type !== 'StringLiteral') {\n let relativePath = '';\n let property;\n if (specifier.type === 'TemplateLiteral') {\n relativePath = specifier.quasis[0].value.cooked!;\n property = specifier.expressions[0] as t.Expression;\n }\n // babel might transform template form `../my-path/${id}` to '../my-path/'.concat(id)\n if (\n specifier.type === 'CallExpression' &&\n specifier.callee.type === 'MemberExpression' &&\n specifier.callee.property.type === 'Identifier' &&\n specifier.callee.property.name === 'concat' &&\n specifier.callee.object.type === 'StringLiteral'\n ) {\n relativePath = specifier.callee.object.value;\n property = specifier.arguments[0] as t.Expression;\n }\n if (property && relativePath && relativePath.startsWith('.')) {\n const resolvedPath = resolve(dirname((state as any).filename), relativePath);\n let entries: string[] = [];\n if (existsSync(resolvedPath)) {\n entries = readdirSync(resolvedPath).filter(e => !e.startsWith('.'));\n }\n const obj = t.objectExpression(\n entries.map(e => {\n let key = e.split('.')[0];\n const rest = e.split('.').slice(1, -1);\n if (rest.length) {\n key += `.${rest}`;\n }\n const id = t.callExpression(\n state.importUtil.import(path, state.pathToOurAddon('es-compat2'), 'default', 'esc'),\n [state.importUtil.import(path, join(relativePath, key).replace(/\\\\/g, '/'), '*')]\n );\n return t.objectProperty(t.stringLiteral(key), id);\n })\n );\n const memberExpr = t.memberExpression(obj, property, true);\n path.replaceWith(memberExpr);\n state.calledIdentifiers.add(callee.node);\n return;\n } else {\n throw new Error(\n `importSync eager mode only supports dynamic paths which are relative, must start with a '.', had ${specifier.type}`\n );\n }\n }\n path.replaceWith(\n t.callExpression(state.importUtil.import(path, state.pathToOurAddon('es-compat2'), 'default', 'esc'), [\n state.importUtil.import(path, specifier.value, '*'),\n ])\n );\n state.calledIdentifiers.add(callee.node);\n return;\n }\n },\n },\n ReferencedIdentifier(path: NodePath<t.Identifier>, state: State) {\n for (let candidate of [\n 'dependencySatisfies',\n 'moduleExists',\n 'getConfig',\n 'getOwnConfig',\n 'failBuild',\n // we cannot check importSync, as the babel transform runs on exit, so *after* this check\n // 'importSync',\n 'isDevelopingApp',\n 'isDevelopingThisPackage',\n 'isTesting',\n ]) {\n if (path.referencesImport('@embroider/macros', candidate) && !state.calledIdentifiers.has(path.node)) {\n throw error(path, `You can only use ${candidate} as a function call`);\n }\n }\n\n if (path.referencesImport('@embroider/macros', 'macroCondition') && !state.calledIdentifiers.has(path.node)) {\n throw error(path, `macroCondition can only be used as the predicate of an if statement or ternary expression`);\n }\n\n if (path.referencesImport('@embroider/macros', 'each') && !state.calledIdentifiers.has(path.node)) {\n throw error(\n path,\n `the each() macro can only be used within a for ... of statement, like: for (let x of each(thing)){}`\n );\n }\n\n if (state.opts.owningPackageRoot) {\n // there is only an owningPackageRoot when we are running inside a\n // classic ember-cli build. In the embroider stage3 build, there is no\n // owning package root because we're compiling *all* packages\n // simultaneously.\n //\n // given that we're inside classic ember-cli, stop here without trying\n // to rewrite bare `require`. It's not needed, because both our\n // `importSync` and any user-written bare `require` can both mean the\n // same thing: runtime AMD `require`.\n return;\n }\n\n if (\n state.opts.hideRequires &&\n path.node.name === 'require' &&\n !path.scope.hasBinding('require') &&\n state.owningPackage().isEmberAddon()\n ) {\n // Our importSync macro has been compiled to `require`. But we want to\n // distinguish that from any pre-existing, user-written `require` in an\n // Ember addon, which should retain its *runtime* meaning.\n path.replaceWith(t.memberExpression(t.identifier('window'), path.node));\n }\n },\n };\n\n if ((context as any).types.OptionalMemberExpression) {\n // our getConfig and getOwnConfig macros are supposed to be able to absorb\n // optional chaining. To make that work we need to see the optional chaining\n // before preset-env compiles them away.\n (visitor as any).OptionalMemberExpression = {\n enter(path: NodePath<t.OptionalMemberExpression>, state: State) {\n if (state.opts.mode === 'compile-time') {\n let result = new Evaluator({ state }).evaluate(path);\n if (result.confident) {\n path.replaceWith(buildLiterals(result.value, context));\n }\n }\n },\n };\n }\n\n return { visitor };\n}\n"]}
@@ -3,6 +3,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
3
3
  return (mod && mod.__esModule) ? mod : { "default": mod };
4
4
  };
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.default = moduleExists;
6
7
  const error_1 = __importDefault(require("./error"));
7
8
  const evaluate_json_1 = require("./evaluate-json");
8
9
  const resolve_1 = __importDefault(require("resolve"));
@@ -26,5 +27,4 @@ function moduleExists(path, state) {
26
27
  return false;
27
28
  }
28
29
  }
29
- exports.default = moduleExists;
30
30
  //# sourceMappingURL=module-exists.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"module-exists.js","sourceRoot":"","sources":["module-exists.ts"],"names":[],"mappings":";;;;;AAGA,oDAA4B;AAC5B,mDAA8C;AAC9C,sDAA8B;AAC9B,+BAA+B;AAE/B,SAAwB,YAAY,CAAC,IAAgC,EAAE,KAAY;IACjF,IAAI,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE;QACpC,MAAM,IAAA,eAAK,EAAC,IAAI,EAAE,uDAAuD,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,CAAC,CAAC;KACxG;IACD,IAAI,CAAC,eAAe,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC;IAC5C,IAAI,eAAe,CAAC,IAAI,KAAK,eAAe,EAAE;QAC5C,MAAM,IAAA,eAAK,EAAC,IAAA,2BAAW,EAAC,IAAI,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,6DAA6D,CAAC,CAAC;KACnH;IACD,IAAI;QACF,iBAAO,CAAC,IAAI,CAAC,eAAe,CAAC,KAAK,EAAE,EAAE,OAAO,EAAE,IAAA,cAAO,EAAC,KAAK,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC;QAC5E,OAAO,IAAI,CAAC;KACb;IAAC,OAAO,GAAG,EAAE;QACZ,IAAI,GAAG,CAAC,IAAI,KAAK,kBAAkB,EAAE;YACnC,MAAM,GAAG,CAAC;SACX;QACD,OAAO,KAAK,CAAC;KACd;AACH,CAAC;AAjBD,+BAiBC","sourcesContent":["import type { NodePath } from '@babel/traverse';\nimport type { types as t } from '@babel/core';\nimport type State from './state';\nimport error from './error';\nimport { assertArray } from './evaluate-json';\nimport resolve from 'resolve';\nimport { dirname } from 'path';\n\nexport default function moduleExists(path: NodePath<t.CallExpression>, state: State): boolean {\n if (path.node.arguments.length !== 1) {\n throw error(path, `moduleExists takes exactly one argument, you passed ${path.node.arguments.length}`);\n }\n let [moduleSpecifier] = path.node.arguments;\n if (moduleSpecifier.type !== 'StringLiteral') {\n throw error(assertArray(path.get('arguments'))[0], `the first argument to moduleExists must be a string literal`);\n }\n try {\n resolve.sync(moduleSpecifier.value, { basedir: dirname(state.sourceFile) });\n return true;\n } catch (err) {\n if (err.code !== 'MODULE_NOT_FOUND') {\n throw err;\n }\n return false;\n }\n}\n"]}
1
+ {"version":3,"file":"module-exists.js","sourceRoot":"","sources":["module-exists.ts"],"names":[],"mappings":";;;;;AAQA,+BAiBC;AAtBD,oDAA4B;AAC5B,mDAA8C;AAC9C,sDAA8B;AAC9B,+BAA+B;AAE/B,SAAwB,YAAY,CAAC,IAAgC,EAAE,KAAY;IACjF,IAAI,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACrC,MAAM,IAAA,eAAK,EAAC,IAAI,EAAE,uDAAuD,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,CAAC,CAAC;IACzG,CAAC;IACD,IAAI,CAAC,eAAe,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC;IAC5C,IAAI,eAAe,CAAC,IAAI,KAAK,eAAe,EAAE,CAAC;QAC7C,MAAM,IAAA,eAAK,EAAC,IAAA,2BAAW,EAAC,IAAI,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,6DAA6D,CAAC,CAAC;IACpH,CAAC;IACD,IAAI,CAAC;QACH,iBAAO,CAAC,IAAI,CAAC,eAAe,CAAC,KAAK,EAAE,EAAE,OAAO,EAAE,IAAA,cAAO,EAAC,KAAK,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC;QAC5E,OAAO,IAAI,CAAC;IACd,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,IAAI,GAAG,CAAC,IAAI,KAAK,kBAAkB,EAAE,CAAC;YACpC,MAAM,GAAG,CAAC;QACZ,CAAC;QACD,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC","sourcesContent":["import type { NodePath } from '@babel/traverse';\nimport type { types as t } from '@babel/core';\nimport type State from './state';\nimport error from './error';\nimport { assertArray } from './evaluate-json';\nimport resolve from 'resolve';\nimport { dirname } from 'path';\n\nexport default function moduleExists(path: NodePath<t.CallExpression>, state: State): boolean {\n if (path.node.arguments.length !== 1) {\n throw error(path, `moduleExists takes exactly one argument, you passed ${path.node.arguments.length}`);\n }\n let [moduleSpecifier] = path.node.arguments;\n if (moduleSpecifier.type !== 'StringLiteral') {\n throw error(assertArray(path.get('arguments'))[0], `the first argument to moduleExists must be a string literal`);\n }\n try {\n resolve.sync(moduleSpecifier.value, { basedir: dirname(state.sourceFile) });\n return true;\n } catch (err) {\n if (err.code !== 'MODULE_NOT_FOUND') {\n throw err;\n }\n return false;\n }\n}\n"]}
@@ -5,7 +5,6 @@ import { ImportUtil } from 'babel-import-util';
5
5
  import type * as Babel from '@babel/core';
6
6
  export default interface State {
7
7
  importUtil: ImportUtil;
8
- generatedRequires: Set<Node>;
9
8
  removed: Set<Node>;
10
9
  calledIdentifiers: Set<Node>;
11
10
  jobs: (() => void)[];
@@ -14,7 +13,6 @@ export default interface State {
14
13
  pathToOurAddon(moduleName: string): string;
15
14
  owningPackage(): Package;
16
15
  originalOwningPackage(): Package;
17
- cloneDeep(node: Node): Node;
18
16
  opts: {
19
17
  userConfigs: {
20
18
  [pkgRoot: string]: unknown;
@@ -26,8 +24,8 @@ export default interface State {
26
24
  isDevelopingPackageRoots: string[];
27
25
  appPackageRoot: string;
28
26
  embroiderMacrosConfigMarker: true;
27
+ hideRequires: boolean;
29
28
  mode: 'compile-time' | 'run-time';
30
- importSyncImplementation: 'cjs' | 'eager';
31
29
  };
32
30
  }
33
31
  export declare function initState(t: typeof Babel.types, path: NodePath<Babel.types.Program>, state: State): void;
@@ -1,17 +1,11 @@
1
1
  "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
2
  Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.initState = void 0;
7
- const cloneDeepWith_1 = __importDefault(require("lodash/cloneDeepWith"));
8
- const cloneDeep_1 = __importDefault(require("lodash/cloneDeep"));
3
+ exports.initState = initState;
9
4
  const path_1 = require("path");
10
5
  const shared_internals_1 = require("@embroider/shared-internals");
11
6
  const babel_import_util_1 = require("babel-import-util");
12
7
  function initState(t, path, state) {
13
8
  state.importUtil = new babel_import_util_1.ImportUtil(t, path);
14
- state.generatedRequires = new Set();
15
9
  state.jobs = [];
16
10
  state.removed = new Set();
17
11
  state.calledIdentifiers = new Set();
@@ -20,9 +14,7 @@ function initState(t, path, state) {
20
14
  state.pathToOurAddon = pathToAddon;
21
15
  state.owningPackage = owningPackage;
22
16
  state.originalOwningPackage = originalOwningPackage;
23
- state.cloneDeep = cloneDeep;
24
17
  }
25
- exports.initState = initState;
26
18
  const runtimeAddonPath = (0, path_1.resolve)((0, path_1.join)(__dirname, '..', 'addon'));
27
19
  function pathToAddon(moduleName) {
28
20
  if (!this.opts.owningPackageRoot) {
@@ -52,14 +44,4 @@ function originalOwningPackage() {
52
44
  let pkg = this.owningPackage();
53
45
  return this.packageCache.original(pkg);
54
46
  }
55
- function cloneDeep(node) {
56
- let state = this;
57
- return (0, cloneDeepWith_1.default)(node, function (value) {
58
- if (state.generatedRequires.has(value)) {
59
- let cloned = (0, cloneDeep_1.default)(value);
60
- state.generatedRequires.add(cloned);
61
- return cloned;
62
- }
63
- });
64
- }
65
47
  //# sourceMappingURL=state.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"state.js","sourceRoot":"","sources":["state.ts"],"names":[],"mappings":";;;;;;AACA,yEAAiD;AACjD,iEAA+C;AAC/C,+BAA8C;AAE9C,kEAAgG;AAChG,yDAA+C;AA+C/C,SAAgB,SAAS,CAAC,CAAqB,EAAE,IAAmC,EAAE,KAAY;IAChG,KAAK,CAAC,UAAU,GAAG,IAAI,8BAAU,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;IAC3C,KAAK,CAAC,iBAAiB,GAAG,IAAI,GAAG,EAAE,CAAC;IACpC,KAAK,CAAC,IAAI,GAAG,EAAE,CAAC;IAChB,KAAK,CAAC,OAAO,GAAG,IAAI,GAAG,EAAE,CAAC;IAC1B,KAAK,CAAC,iBAAiB,GAAG,IAAI,GAAG,EAAE,CAAC;IACpC,KAAK,CAAC,YAAY,GAAG,wCAAqB,CAAC,MAAM,CAAC,WAAW,EAAE,KAAK,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;IAC1F,KAAK,CAAC,UAAU,GAAG,KAAK,CAAC,IAAI,CAAC,iBAAiB,IAAI,IAAA,2BAAQ,EAAE,IAAI,CAAC,GAAW,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IAClG,KAAK,CAAC,cAAc,GAAG,WAAW,CAAC;IACnC,KAAK,CAAC,aAAa,GAAG,aAAa,CAAC;IACpC,KAAK,CAAC,qBAAqB,GAAG,qBAAqB,CAAC;IACpD,KAAK,CAAC,SAAS,GAAG,SAAS,CAAC;AAC9B,CAAC;AAZD,8BAYC;AAED,MAAM,gBAAgB,GAAG,IAAA,cAAO,EAAC,IAAA,WAAI,EAAC,SAAS,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC;AAEjE,SAAS,WAAW,CAAc,UAAkB;IAClD,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,iBAAiB,EAAE;QAChC,kEAAkE;QAClE,OAAO,IAAA,mCAAgB,EAAC,IAAA,cAAO,EAAC,IAAI,CAAC,UAAU,CAAC,EAAE,IAAA,WAAI,EAAC,gBAAgB,EAAE,UAAU,CAAC,CAAC,CAAC;KACvF;SAAM;QACL,sEAAsE;QACtE,aAAa;QACb,EAAE;QACF,qEAAqE;QACrE,yEAAyE;QACzE,4EAA4E;QAC5E,0EAA0E;QAC1E,eAAe;QACf,OAAO,qBAAqB,UAAU,EAAE,CAAC;KAC1C;AACH,CAAC;AAED,SAAS,aAAa;IACpB,IAAI,GAAG,GAAG,IAAI,CAAC,YAAY,CAAC,WAAW,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;IACzD,IAAI,CAAC,GAAG,EAAE;QACR,MAAM,IAAI,KAAK,CAAC,uDAAuD,IAAI,CAAC,UAAU,EAAE,CAAC,CAAC;KAC3F;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAED,SAAS,qBAAqB;IAC5B,IAAI,GAAG,GAAG,IAAI,CAAC,aAAa,EAAE,CAAC;IAC/B,OAAO,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;AACzC,CAAC;AAED,SAAS,SAAS,CAAc,IAAU;IACxC,IAAI,KAAK,GAAG,IAAI,CAAC;IACjB,OAAO,IAAA,uBAAa,EAAC,IAAI,EAAE,UAAU,KAAU;QAC7C,IAAI,KAAK,CAAC,iBAAiB,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE;YACtC,IAAI,MAAM,GAAG,IAAA,mBAAe,EAAC,KAAK,CAAC,CAAC;YACpC,KAAK,CAAC,iBAAiB,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;YACpC,OAAO,MAAM,CAAC;SACf;IACH,CAAC,CAAC,CAAC;AACL,CAAC","sourcesContent":["import type { NodePath, Node } from '@babel/traverse';\nimport cloneDeepWith from 'lodash/cloneDeepWith';\nimport lodashCloneDeep from 'lodash/cloneDeep';\nimport { join, dirname, resolve } from 'path';\nimport type { Package } from '@embroider/shared-internals';\nimport { cleanUrl, explicitRelative, RewrittenPackageCache } from '@embroider/shared-internals';\nimport { ImportUtil } from 'babel-import-util';\nimport type * as Babel from '@babel/core';\n\nexport default interface State {\n importUtil: ImportUtil;\n generatedRequires: Set<Node>;\n removed: Set<Node>;\n calledIdentifiers: Set<Node>;\n jobs: (() => void)[];\n packageCache: RewrittenPackageCache;\n sourceFile: string;\n pathToOurAddon(moduleName: string): string;\n owningPackage(): Package;\n originalOwningPackage(): Package;\n cloneDeep(node: Node): Node;\n\n opts: {\n userConfigs: {\n [pkgRoot: string]: unknown;\n };\n globalConfig: {\n [key: string]: unknown;\n };\n // we set this when we're running inside classic ember-cli, because in that\n // case we don't have finer-grained info available about where the files\n // we're processing are globally located. When running in embroider, we\n // don't set this, because each file is visible at its full\n // globally-relevant path.\n owningPackageRoot: string | undefined;\n\n // list of packages that are under active development, represented by the\n // path to their package root directory\n isDevelopingPackageRoots: string[];\n\n // the package root directory of the app. Needed so that we can get\n // consistent answers to `isDevelopingApp` and `isDeveopingThisPackage`, as\n // well as consistent handling of Package devDependencies vs dependencies.\n appPackageRoot: string;\n\n embroiderMacrosConfigMarker: true;\n\n mode: 'compile-time' | 'run-time';\n\n importSyncImplementation: 'cjs' | 'eager';\n };\n}\n\nexport function initState(t: typeof Babel.types, path: NodePath<Babel.types.Program>, state: State) {\n state.importUtil = new ImportUtil(t, path);\n state.generatedRequires = new Set();\n state.jobs = [];\n state.removed = new Set();\n state.calledIdentifiers = new Set();\n state.packageCache = RewrittenPackageCache.shared('embroider', state.opts.appPackageRoot);\n state.sourceFile = state.opts.owningPackageRoot || cleanUrl((path.hub as any).file.opts.filename);\n state.pathToOurAddon = pathToAddon;\n state.owningPackage = owningPackage;\n state.originalOwningPackage = originalOwningPackage;\n state.cloneDeep = cloneDeep;\n}\n\nconst runtimeAddonPath = resolve(join(__dirname, '..', 'addon'));\n\nfunction pathToAddon(this: State, moduleName: string): string {\n if (!this.opts.owningPackageRoot) {\n // running inside embroider, so make a relative path to the module\n return explicitRelative(dirname(this.sourceFile), join(runtimeAddonPath, moduleName));\n } else {\n // running inside a classic build, so use a classic-compatible runtime\n // specifier.\n //\n // CAUTION: the module we're pointing at here gets merged between all\n // present versions of @embroider/macros, and one will win. So if you are\n // introducing incompatible changes to its API, you need to change this name\n // (by tacking on a version number, etc) and rename the corresponding file\n // in ../addon.\n return `@embroider/macros/${moduleName}`;\n }\n}\n\nfunction owningPackage(this: State): Package {\n let pkg = this.packageCache.ownerOfFile(this.sourceFile);\n if (!pkg) {\n throw new Error(`unable to determine which npm package owns the file ${this.sourceFile}`);\n }\n return pkg;\n}\n\nfunction originalOwningPackage(this: State): Package {\n let pkg = this.owningPackage();\n return this.packageCache.original(pkg);\n}\n\nfunction cloneDeep(this: State, node: Node): Node {\n let state = this;\n return cloneDeepWith(node, function (value: any) {\n if (state.generatedRequires.has(value)) {\n let cloned = lodashCloneDeep(value);\n state.generatedRequires.add(cloned);\n return cloned;\n }\n });\n}\n"]}
1
+ {"version":3,"file":"state.js","sourceRoot":"","sources":["state.ts"],"names":[],"mappings":";;AAiDA,8BAUC;AA1DD,+BAA8C;AAE9C,kEAAgG;AAChG,yDAA+C;AA6C/C,SAAgB,SAAS,CAAC,CAAqB,EAAE,IAAmC,EAAE,KAAY;IAChG,KAAK,CAAC,UAAU,GAAG,IAAI,8BAAU,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;IAC3C,KAAK,CAAC,IAAI,GAAG,EAAE,CAAC;IAChB,KAAK,CAAC,OAAO,GAAG,IAAI,GAAG,EAAE,CAAC;IAC1B,KAAK,CAAC,iBAAiB,GAAG,IAAI,GAAG,EAAE,CAAC;IACpC,KAAK,CAAC,YAAY,GAAG,wCAAqB,CAAC,MAAM,CAAC,WAAW,EAAE,KAAK,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;IAC1F,KAAK,CAAC,UAAU,GAAG,KAAK,CAAC,IAAI,CAAC,iBAAiB,IAAI,IAAA,2BAAQ,EAAE,IAAI,CAAC,GAAW,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IAClG,KAAK,CAAC,cAAc,GAAG,WAAW,CAAC;IACnC,KAAK,CAAC,aAAa,GAAG,aAAa,CAAC;IACpC,KAAK,CAAC,qBAAqB,GAAG,qBAAqB,CAAC;AACtD,CAAC;AAED,MAAM,gBAAgB,GAAG,IAAA,cAAO,EAAC,IAAA,WAAI,EAAC,SAAS,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC;AAEjE,SAAS,WAAW,CAAc,UAAkB;IAClD,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,iBAAiB,EAAE,CAAC;QACjC,kEAAkE;QAClE,OAAO,IAAA,mCAAgB,EAAC,IAAA,cAAO,EAAC,IAAI,CAAC,UAAU,CAAC,EAAE,IAAA,WAAI,EAAC,gBAAgB,EAAE,UAAU,CAAC,CAAC,CAAC;IACxF,CAAC;SAAM,CAAC;QACN,sEAAsE;QACtE,aAAa;QACb,EAAE;QACF,qEAAqE;QACrE,yEAAyE;QACzE,4EAA4E;QAC5E,0EAA0E;QAC1E,eAAe;QACf,OAAO,qBAAqB,UAAU,EAAE,CAAC;IAC3C,CAAC;AACH,CAAC;AAED,SAAS,aAAa;IACpB,IAAI,GAAG,GAAG,IAAI,CAAC,YAAY,CAAC,WAAW,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;IACzD,IAAI,CAAC,GAAG,EAAE,CAAC;QACT,MAAM,IAAI,KAAK,CAAC,uDAAuD,IAAI,CAAC,UAAU,EAAE,CAAC,CAAC;IAC5F,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAED,SAAS,qBAAqB;IAC5B,IAAI,GAAG,GAAG,IAAI,CAAC,aAAa,EAAE,CAAC;IAC/B,OAAO,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;AACzC,CAAC","sourcesContent":["import type { NodePath, Node } from '@babel/traverse';\nimport { join, dirname, resolve } from 'path';\nimport type { Package } from '@embroider/shared-internals';\nimport { cleanUrl, explicitRelative, RewrittenPackageCache } from '@embroider/shared-internals';\nimport { ImportUtil } from 'babel-import-util';\nimport type * as Babel from '@babel/core';\n\nexport default interface State {\n importUtil: ImportUtil;\n removed: Set<Node>;\n calledIdentifiers: Set<Node>;\n jobs: (() => void)[];\n packageCache: RewrittenPackageCache;\n sourceFile: string;\n pathToOurAddon(moduleName: string): string;\n owningPackage(): Package;\n originalOwningPackage(): Package;\n\n opts: {\n userConfigs: {\n [pkgRoot: string]: unknown;\n };\n globalConfig: {\n [key: string]: unknown;\n };\n // we set this when we're running inside classic ember-cli, because in that\n // case we don't have finer-grained info available about where the files\n // we're processing are globally located. When running in embroider, we\n // don't set this, because each file is visible at its full\n // globally-relevant path.\n owningPackageRoot: string | undefined;\n\n // list of packages that are under active development, represented by the\n // path to their package root directory\n isDevelopingPackageRoots: string[];\n\n // the package root directory of the app. Needed so that we can get\n // consistent answers to `isDevelopingApp` and `isDeveopingThisPackage`, as\n // well as consistent handling of Package devDependencies vs dependencies.\n appPackageRoot: string;\n\n embroiderMacrosConfigMarker: true;\n\n hideRequires: boolean;\n\n mode: 'compile-time' | 'run-time';\n };\n}\n\nexport function initState(t: typeof Babel.types, path: NodePath<Babel.types.Program>, state: State) {\n state.importUtil = new ImportUtil(t, path);\n state.jobs = [];\n state.removed = new Set();\n state.calledIdentifiers = new Set();\n state.packageCache = RewrittenPackageCache.shared('embroider', state.opts.appPackageRoot);\n state.sourceFile = state.opts.owningPackageRoot || cleanUrl((path.hub as any).file.opts.filename);\n state.pathToOurAddon = pathToAddon;\n state.owningPackage = owningPackage;\n state.originalOwningPackage = originalOwningPackage;\n}\n\nconst runtimeAddonPath = resolve(join(__dirname, '..', 'addon'));\n\nfunction pathToAddon(this: State, moduleName: string): string {\n if (!this.opts.owningPackageRoot) {\n // running inside embroider, so make a relative path to the module\n return explicitRelative(dirname(this.sourceFile), join(runtimeAddonPath, moduleName));\n } else {\n // running inside a classic build, so use a classic-compatible runtime\n // specifier.\n //\n // CAUTION: the module we're pointing at here gets merged between all\n // present versions of @embroider/macros, and one will win. So if you are\n // introducing incompatible changes to its API, you need to change this name\n // (by tacking on a version number, etc) and rename the corresponding file\n // in ../addon.\n return `@embroider/macros/${moduleName}`;\n }\n}\n\nfunction owningPackage(this: State): Package {\n let pkg = this.packageCache.ownerOfFile(this.sourceFile);\n if (!pkg) {\n throw new Error(`unable to determine which npm package owns the file ${this.sourceFile}`);\n }\n return pkg;\n}\n\nfunction originalOwningPackage(this: State): Package {\n let pkg = this.owningPackage();\n return this.packageCache.original(pkg);\n}\n"]}
@@ -2,7 +2,7 @@ declare const _default: {
2
2
  name: string;
3
3
  included(this: any, parent: any): void;
4
4
  installBabelPlugin(this: any, appOrAddonInstance: any): void;
5
- setupPreprocessorRegistry(this: any, type: 'parent' | 'self', registry: any): void;
5
+ setupPreprocessorRegistry(this: any, type: "parent" | "self", registry: any): void;
6
6
  options: {};
7
7
  };
8
8
  export = _default;
@@ -1 +1 @@
1
- {"version":3,"file":"ember-addon-main.js","sourceRoot":"","sources":["ember-addon-main.ts"],"names":[],"mappings":"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","sourcesContent":["import type { AppInstance } from '@embroider/shared-internals';\nimport { join } from 'path';\nimport type { BuildPluginParams } from './glimmer/ast-transform';\nimport { MacrosConfig, isEmbroiderMacrosPlugin } from './node';\n\nlet hasWrappedToTree = false;\n\nexport = {\n name: '@embroider/macros',\n included(this: any, parent: any) {\n this._super.included.apply(this, arguments);\n this.options.babel = { plugins: [] };\n let parentOptions = (parent.options = parent.options || {});\n let ownOptions = (parentOptions['@embroider/macros'] = parentOptions['@embroider/macros'] || {});\n\n let appInstance: AppInstance = this._findHost();\n let macrosConfig = getMacrosConfig(appInstance);\n this.setMacrosConfig(macrosConfig);\n\n // if parent is an addon it has root. If it's an app it has project.root.\n let source = parent.root || parent.project.root;\n\n if (ownOptions.setOwnConfig) {\n macrosConfig.setOwnConfig(source, ownOptions.setOwnConfig);\n }\n\n if (ownOptions.setConfig) {\n for (let [packageName, config] of Object.entries(ownOptions.setConfig)) {\n macrosConfig.setConfig(source, packageName, config as object);\n }\n }\n\n if (appInstance.env !== 'production') {\n // tell the macros our app is under development\n macrosConfig.enablePackageDevelopment(getAppRoot(appInstance));\n // also tell them our root project is under development. This can be\n // different, in the case where this is an addon and the app is the dummy\n // app.\n macrosConfig.enablePackageDevelopment(appInstance.project.root);\n // keep the macros in runtime mode for development & testing\n macrosConfig.enableRuntimeMode();\n }\n\n // add our babel plugin to our parent's babel\n this.installBabelPlugin(parent);\n\n // and to our own babel, because we may need to inline runtime config into\n // our source code\n this.installBabelPlugin(this);\n\n appInstance.import('vendor/embroider-macros-test-support.js', { type: 'test' });\n\n const originalToTree = appInstance.toTree;\n\n if (!hasWrappedToTree) {\n // When we're used inside the traditional ember-cli build pipeline without\n // Embroider, we unfortunately need to hook into here uncleanly because we\n // need to delineate the point in time after which writing macro config is\n // forbidden and consuming it becomes allowed. There's no existing hook with\n // that timing.\n appInstance.toTree = function (...args) {\n macrosConfig.finalize();\n return originalToTree.apply(appInstance, args);\n };\n hasWrappedToTree = true;\n }\n },\n\n // Other addons are allowed to call this. It's needed if an addon needs to\n // emit code containing macros into that addon's parent (via a babel plugin,\n // for exmple). This is only an issue in classic builds, under embroider all\n // babel plugins should be thought of as *language extensions* that are\n // available everywhere, we don't scope them so narrowly so this probably\n // doesn't come up.\n installBabelPlugin(this: any, appOrAddonInstance: any) {\n let babelOptions = (appOrAddonInstance.options.babel = appOrAddonInstance.options.babel || {});\n let babelPlugins = (babelOptions.plugins = babelOptions.plugins || []);\n if (!babelPlugins.some(isEmbroiderMacrosPlugin)) {\n let appInstance = this._findHost();\n babelPlugins.unshift(...getMacrosConfig(appInstance).babelPluginConfig(appOrAddonInstance));\n }\n },\n\n setupPreprocessorRegistry(this: any, type: 'parent' | 'self', registry: any) {\n if (type === 'parent') {\n // the htmlbars-ast-plugins are split into two parts because order is\n // important. Weirdly, they appear to run in the reverse order that you\n // register them here.\n //\n // MacrosConfig.astPlugins is static because in classic ember-cli, at this\n // point there's not yet an appInstance, so we defer getting it and\n // calling setConfig until our included hook.\n let { plugins, setConfig, lazyParams } = MacrosConfig.astPlugins((this as any).parent.root);\n this.setMacrosConfig = setConfig;\n plugins.forEach((plugin, index) => {\n let name = `@embroider/macros/${index}`;\n let baseDir = join(__dirname, '..');\n\n let params: BuildPluginParams = {\n name,\n firstTransformParams: lazyParams,\n methodName: index === 0 ? 'makeSecondTransform' : 'makeFirstTransform',\n baseDir,\n };\n\n registry.add('htmlbars-ast-plugin', {\n name,\n plugin,\n parallelBabel: {\n requireFile: join(__dirname, 'glimmer', 'ast-transform.js'),\n buildUsing: 'buildPlugin',\n params,\n },\n baseDir: () => baseDir,\n });\n });\n }\n },\n\n options: {},\n};\n\n// this can differ from appInstance.project.root because Dummy apps are terrible\nfunction getAppRoot(appInstance: AppInstance): string {\n return join(appInstance.project.configPath(), '..', '..');\n}\n\nfunction getMacrosConfig(appInstance: AppInstance): MacrosConfig {\n let appRoot = join(appInstance.project.configPath(), '..', '..');\n return MacrosConfig.for(appInstance, appRoot);\n}\n"]}
1
+ {"version":3,"file":"ember-addon-main.js","sourceRoot":"","sources":["ember-addon-main.ts"],"names":[],"mappings":"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","sourcesContent":["import type { AppInstance } from '@embroider/shared-internals';\nimport { join } from 'path';\nimport type { BuildPluginParams } from './glimmer/ast-transform';\nimport { MacrosConfig, isEmbroiderMacrosPlugin } from './node';\n\nlet hasWrappedToTree = false;\n\nexport = {\n name: '@embroider/macros',\n included(this: any, parent: any) {\n this._super.included.apply(this, arguments);\n this.options.babel = { plugins: [] };\n let parentOptions = (parent.options = parent.options || {});\n let ownOptions = (parentOptions['@embroider/macros'] = parentOptions['@embroider/macros'] || {});\n\n let appInstance: AppInstance = this._findHost();\n let macrosConfig = getMacrosConfig(appInstance);\n this.setMacrosConfig(macrosConfig);\n\n // if parent is an addon it has root. If it's an app it has project.root.\n let source = parent.root || parent.project.root;\n\n if (ownOptions.setOwnConfig) {\n macrosConfig.setOwnConfig(source, ownOptions.setOwnConfig);\n }\n\n if (ownOptions.setConfig) {\n for (let [packageName, config] of Object.entries(ownOptions.setConfig)) {\n macrosConfig.setConfig(source, packageName, config as object);\n }\n }\n\n if (appInstance.env !== 'production') {\n // tell the macros our app is under development\n macrosConfig.enablePackageDevelopment(getAppRoot(appInstance));\n // also tell them our root project is under development. This can be\n // different, in the case where this is an addon and the app is the dummy\n // app.\n macrosConfig.enablePackageDevelopment(appInstance.project.root);\n // keep the macros in runtime mode for development & testing\n macrosConfig.enableRuntimeMode();\n }\n\n // add our babel plugin to our parent's babel\n this.installBabelPlugin(parent);\n\n // and to our own babel, because we may need to inline runtime config into\n // our source code\n this.installBabelPlugin(this);\n\n appInstance.import('vendor/embroider-macros-test-support.js', { type: 'test' });\n\n const originalToTree = appInstance.toTree;\n\n if (!hasWrappedToTree) {\n // When we're used inside the traditional ember-cli build pipeline without\n // Embroider, we unfortunately need to hook into here uncleanly because we\n // need to delineate the point in time after which writing macro config is\n // forbidden and consuming it becomes allowed. There's no existing hook with\n // that timing.\n appInstance.toTree = function (...args) {\n macrosConfig.finalize();\n return originalToTree.apply(appInstance, args);\n };\n hasWrappedToTree = true;\n }\n },\n\n // Other addons are allowed to call this. It's needed if an addon needs to\n // emit code containing macros into that addon's parent (via a babel plugin,\n // for exmple). This is only an issue in classic builds, under embroider all\n // babel plugins should be thought of as *language extensions* that are\n // available everywhere, we don't scope them so narrowly so this probably\n // doesn't come up.\n installBabelPlugin(this: any, appOrAddonInstance: any) {\n let babelOptions = (appOrAddonInstance.options.babel = appOrAddonInstance.options.babel || {});\n let babelPlugins = (babelOptions.plugins = babelOptions.plugins || []);\n if (!babelPlugins.some(isEmbroiderMacrosPlugin)) {\n let appInstance = this._findHost();\n babelPlugins.unshift(...getMacrosConfig(appInstance).babelPluginConfig(appOrAddonInstance));\n }\n },\n\n setupPreprocessorRegistry(this: any, type: 'parent' | 'self', registry: any) {\n if (type === 'parent') {\n // the htmlbars-ast-plugins are split into two parts because order is\n // important. Weirdly, they appear to run in the reverse order that you\n // register them here.\n //\n // MacrosConfig.astPlugins is static because in classic ember-cli, at this\n // point there's not yet an appInstance, so we defer getting it and\n // calling setConfig until our included hook.\n let { plugins, setConfig, lazyParams } = MacrosConfig.astPlugins((this as any).parent.root);\n this.setMacrosConfig = setConfig;\n plugins.forEach((plugin, index) => {\n let name = `@embroider/macros/${index}`;\n let baseDir = join(__dirname, '..');\n\n let params: BuildPluginParams = {\n name,\n firstTransformParams: lazyParams,\n methodName: index === 0 ? 'makeSecondTransform' : 'makeFirstTransform',\n baseDir,\n };\n\n registry.add('htmlbars-ast-plugin', {\n name,\n plugin,\n parallelBabel: {\n requireFile: join(__dirname, 'glimmer', 'ast-transform.js'),\n buildUsing: 'buildPlugin',\n params,\n },\n baseDir: () => baseDir,\n });\n });\n }\n },\n\n options: {},\n};\n\n// this can differ from appInstance.project.root because Dummy apps are terrible\nfunction getAppRoot(appInstance: AppInstance): string {\n return join(appInstance.project.configPath(), '..', '..');\n}\n\nfunction getMacrosConfig(appInstance: AppInstance): MacrosConfig {\n let appRoot = join(appInstance.project.configPath(), '..', '..');\n return MacrosConfig.for(appInstance, appRoot);\n}\n"]}
@@ -3,7 +3,9 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
3
3
  return (mod && mod.__esModule) ? mod : { "default": mod };
4
4
  };
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.makeSecondTransform = exports.makeFirstTransform = exports.buildPlugin = void 0;
6
+ exports.buildPlugin = buildPlugin;
7
+ exports.makeFirstTransform = makeFirstTransform;
8
+ exports.makeSecondTransform = makeSecondTransform;
7
9
  const literal_1 = __importDefault(require("./literal"));
8
10
  const get_config_1 = __importDefault(require("./get-config"));
9
11
  const dependency_satisfies_1 = __importDefault(require("./dependency-satisfies"));
@@ -20,7 +22,6 @@ function buildPlugin(params) {
20
22
  baseDir: () => params.baseDir,
21
23
  };
22
24
  }
23
- exports.buildPlugin = buildPlugin;
24
25
  function makeFirstTransform(opts) {
25
26
  function embroiderFirstMacrosTransform(env) {
26
27
  if (!opts.packageRoot && !env.filename) {
@@ -88,7 +89,6 @@ function makeFirstTransform(opts) {
88
89
  };
89
90
  return embroiderFirstMacrosTransform;
90
91
  }
91
- exports.makeFirstTransform = makeFirstTransform;
92
92
  function makeSecondTransform() {
93
93
  function embroiderSecondMacrosTransform(env) {
94
94
  let scopeStack = [];
@@ -187,7 +187,6 @@ function makeSecondTransform() {
187
187
  };
188
188
  return embroiderSecondMacrosTransform;
189
189
  }
190
- exports.makeSecondTransform = makeSecondTransform;
191
190
  function inScope(scopeStack, name) {
192
191
  for (let scope of scopeStack) {
193
192
  if (scope.includes(name)) {
@@ -1 +1 @@
1
- {"version":3,"file":"ast-transform.js","sourceRoot":"","sources":["ast-transform.ts"],"names":[],"mappings":";;;;;;AAAA,wDAAgC;AAChC,8DAAqC;AACrC,kFAAyD;AACzD,2DAAiD;AACjD,uDAO2B;AAC3B,6CAAyC;AACzC,kEAAoE;AA4BpE,SAAgB,WAAW,CAAC,MAAyB;IACnD,OAAO;QACL,IAAI,EAAE,MAAM,CAAC,IAAI;QACjB,MAAM,EACJ,MAAM,CAAC,UAAU,KAAK,oBAAoB;YACxC,CAAC,CAAC,kBAAkB,CAAC,MAAM,CAAC,oBAAoB,CAAC;YACjD,CAAC,CAAC,mBAAmB,EAAE;QAC3B,OAAO,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,OAAO;KAC9B,CAAC;AACJ,CAAC;AATD,kCASC;AAED,SAAgB,kBAAkB,CAAC,IAA0B;IAC3D,SAAS,6BAA6B,CAAC,GAItC;QACC,IAAI,CAAC,IAAI,CAAC,WAAW,IAAI,CAAC,GAAG,CAAC,QAAQ,EAAE;YACtC,MAAM,IAAI,KAAK,CAAC,gFAAgF,CAAC,CAAC;SACnG;QAED,IAAI,YAAY,GAAG,wCAAqB,CAAC,MAAM,CAAC,WAAW,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;QAE3E,IAAI,UAAU,GAAe,EAAE,CAAC;QAEhC,8EAA8E;QAC9E,kDAAkD;QAClD,MAAM,UAAU,GAAG,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC;QAEzE,OAAO;YACL,IAAI,EAAE,yBAAyB;YAE/B,OAAO,EAAE;gBACP,GAAG,aAAa,CAAC,GAAG,EAAE,UAAU,CAAC;gBACjC,aAAa,CAAC,IAAS,EAAE,MAAiC;oBACxD,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI,KAAK,gBAAgB,EAAE;wBACvC,OAAO;qBACR;oBAED,IAAI,OAAO,CAAC,UAAU,EAAE,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,EAAE;wBAC1C,OAAO;qBACR;oBAED,IAAI,IAAI,CAAC,IAAI,CAAC,QAAQ,KAAK,mBAAmB,EAAE;wBAC9C,OAAO,IAAA,iBAAO,EACZ,IAAA,oBAAS,EAAC,IAAI,EAAE,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,WAAW,EAAE,UAAU,EAAE,IAAI,EAAE,YAAY,CAAC,EAC/E,GAAG,CAAC,MAAM,CAAC,QAAQ,CACpB,CAAC;qBACH;oBACD,IAAI,IAAI,CAAC,IAAI,CAAC,QAAQ,KAAK,gBAAgB,EAAE;wBAC3C,OAAO,IAAA,iBAAO,EACZ,IAAA,oBAAS,EAAC,IAAI,EAAE,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,WAAW,EAAE,UAAU,EAAE,KAAK,EAAE,YAAY,CAAC,EAChF,GAAG,CAAC,MAAM,CAAC,QAAQ,CACpB,CAAC;qBACH;oBACD,IAAI,IAAI,CAAC,IAAI,CAAC,QAAQ,KAAK,0BAA0B,EAAE;wBACrD,MAAM,WAAW,GAAG,IAAA,iBAAO,EACzB,IAAA,8BAAmB,EAAC,IAAI,EAAE,IAAI,CAAC,WAAW,EAAE,UAAU,EAAE,YAAY,CAAC,EACrE,GAAG,CAAC,MAAM,CAAC,QAAQ,CACpB,CAAC;wBACF,4GAA4G;wBAC5G,uFAAuF;wBACvF,IAAI,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,KAAK,IAAI,EAAE;4BAC7C,OAAO,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,gBAAgB,EAAE,CAAC,WAAW,CAAC,CAAC,CAAC;yBACnE;wBACD,OAAO,WAAW,CAAC;qBACpB;gBACH,CAAC;gBACD,iBAAiB,CAAC,IAAS;oBACzB,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI,KAAK,gBAAgB,EAAE;wBACvC,OAAO;qBACR;oBAED,IAAI,OAAO,CAAC,UAAU,EAAE,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,EAAE;wBAC1C,OAAO;qBACR;oBACD,IAAI,IAAI,CAAC,IAAI,CAAC,QAAQ,KAAK,mBAAmB,EAAE;wBAC9C,OAAO,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC,QAAQ,CACjC,IAAA,iBAAO,EACL,IAAA,oBAAS,EAAC,IAAI,EAAE,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,WAAW,EAAE,UAAU,EAAE,IAAI,EAAE,YAAY,CAAC,EAC/E,GAAG,CAAC,MAAM,CAAC,QAAQ,CACpB,CACF,CAAC;qBACH;oBACD,IAAI,IAAI,CAAC,IAAI,CAAC,QAAQ,KAAK,gBAAgB,EAAE;wBAC3C,OAAO,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC,QAAQ,CACjC,IAAA,iBAAO,EACL,IAAA,oBAAS,EAAC,IAAI,EAAE,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,WAAW,EAAE,UAAU,EAAE,KAAK,EAAE,YAAY,CAAC,EAChF,GAAG,CAAC,MAAM,CAAC,QAAQ,CACpB,CACF,CAAC;qBACH;oBACD,IAAI,IAAI,CAAC,IAAI,CAAC,QAAQ,KAAK,0BAA0B,EAAE;wBACrD,OAAO,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC,QAAQ,CACjC,IAAA,iBAAO,EAAC,IAAA,8BAAmB,EAAC,IAAI,EAAE,IAAI,CAAC,WAAW,EAAE,UAAU,EAAE,YAAY,CAAC,EAAE,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC,CACpG,CAAC;qBACH;gBACH,CAAC;aACF;SACF,CAAC;IACJ,CAAC;IACA,6BAAqC,CAAC,wBAAwB,GAAG,IAAI,CAAC;IACtE,6BAAqC,CAAC,aAAa,GAAG;QACrD,WAAW,EAAE,UAAU;QACvB,UAAU,EAAE,oBAAoB;QAChC,IAAI,MAAM;YACR,OAAO,IAAI,CAAC;QACd,CAAC;KACF,CAAC;IACF,OAAO,6BAA6B,CAAC;AACvC,CAAC;AAnGD,gDAmGC;AAED,SAAgB,mBAAmB;IACjC,SAAS,8BAA8B,CAAC,GAAkC;QACxE,IAAI,UAAU,GAAe,EAAE,CAAC;QAChC,OAAO;YACL,IAAI,EAAE,0BAA0B;YAEhC,OAAO,EAAE;gBACP,GAAG,aAAa,CAAC,GAAG,EAAE,UAAU,CAAC;gBACjC,cAAc,CAAC,IAAS;oBACtB,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI,KAAK,gBAAgB,EAAE;wBACvC,OAAO;qBACR;oBAED,IAAI,OAAO,CAAC,UAAU,EAAE,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,EAAE;wBAC1C,OAAO;qBACR;oBACD,IAAI,IAAI,CAAC,IAAI,CAAC,QAAQ,KAAK,IAAI,EAAE;wBAC/B,OAAO,IAAA,8BAAY,EAAC,IAAI,CAAC,CAAC;qBAC3B;oBACD,IAAI,IAAI,CAAC,IAAI,CAAC,QAAQ,KAAK,QAAQ,EAAE;wBACnC,OAAO,IAAA,kCAAgB,EAAC,IAAI,CAAC,CAAC;qBAC/B;gBACH,CAAC;gBACD,aAAa,CAAC,IAAS;oBACrB,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI,KAAK,gBAAgB,EAAE;wBACvC,OAAO;qBACR;oBAED,IAAI,OAAO,CAAC,UAAU,EAAE,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,EAAE;wBAC1C,OAAO;qBACR;oBACD,IAAI,IAAI,CAAC,IAAI,CAAC,QAAQ,KAAK,IAAI,EAAE;wBAC/B,OAAO,IAAA,mCAAiB,EAAC,IAAI,EAAE,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;qBACrD;oBACD,IAAI,IAAI,CAAC,IAAI,CAAC,QAAQ,KAAK,QAAQ,EAAE;wBACnC,OAAO,IAAA,uCAAqB,EAAC,IAAI,EAAE,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;qBACzD;oBACD,IAAI,IAAI,CAAC,IAAI,CAAC,QAAQ,KAAK,gBAAgB,EAAE;wBAC3C,IAAA,sBAAS,EAAC,IAAI,CAAC,CAAC;qBACjB;gBACH,CAAC;gBACD,WAAW,CAAC,IAAS;oBACnB,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,QAAa,EAAE,EAAE;wBACvD,IACE,QAAQ,CAAC,IAAI,CAAC,IAAI,KAAK,eAAe;4BACtC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,KAAK,gBAAgB;4BAC5C,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,KAAK,IAAI,EACpC;4BACA,QAAQ,CAAC,IAAI,GAAG,IAAA,mCAAiB,EAAC,QAAQ,CAAC,IAAI,EAAE,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;4BACtE,IAAI,QAAQ,CAAC,IAAI,CAAC,IAAI,KAAK,kBAAkB,EAAE;gCAC7C,OAAO,KAAK,CAAC;6BACd;yBACF;wBACD,IACE,QAAQ,CAAC,IAAI,CAAC,IAAI,KAAK,eAAe;4BACtC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,KAAK,gBAAgB;4BAC5C,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,KAAK,QAAQ,EACxC;4BACA,QAAQ,CAAC,IAAI,GAAG,IAAA,uCAAqB,EAAC,QAAQ,CAAC,IAAI,EAAE,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;4BAC1E,IAAI,QAAQ,CAAC,IAAI,CAAC,IAAI,KAAK,kBAAkB,EAAE;gCAC7C,OAAO,KAAK,CAAC;6BACd;yBACF;wBACD,IAAI,QAAQ,CAAC,IAAI,CAAC,IAAI,KAAK,gBAAgB,EAAE;4BAC3C,OAAO,IAAI,CAAC;yBACb;wBAED,IAAI,OAAO,CAAC,UAAU,EAAE,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,EAAE;4BAC1C,OAAO,IAAI,CAAC;yBACb;wBACD,IAAI,QAAQ,CAAC,IAAI,CAAC,QAAQ,KAAK,iBAAiB,EAAE;4BAChD,IAAA,8BAAU,EAAC,IAAI,EAAE,QAAQ,EAAE,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;yBACjD;6BAAM;4BACL,OAAO,IAAI,CAAC;yBACb;oBACH,CAAC,CAAC,CAAC;gBACL,CAAC;gBACD,iBAAiB,CAAC,IAAS;oBACzB,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI,KAAK,gBAAgB,EAAE;wBACvC,OAAO;qBACR;oBAED,IAAI,OAAO,CAAC,UAAU,EAAE,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,EAAE;wBAC1C,OAAO;qBACR;oBACD,IAAI,IAAI,CAAC,IAAI,CAAC,QAAQ,KAAK,IAAI,EAAE;wBAC/B,OAAO,IAAA,iCAAe,EAAC,IAAI,EAAE,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;qBACnD;oBACD,IAAI,IAAI,CAAC,IAAI,CAAC,QAAQ,KAAK,QAAQ,EAAE;wBACnC,OAAO,IAAA,qCAAmB,EAAC,IAAI,EAAE,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;qBACvD;oBACD,IAAI,IAAI,CAAC,IAAI,CAAC,QAAQ,KAAK,gBAAgB,EAAE;wBAC3C,IAAA,sBAAS,EAAC,IAAI,CAAC,CAAC;qBACjB;gBACH,CAAC;aACF;SACF,CAAC;IACJ,CAAC;IACA,8BAAsC,CAAC,wBAAwB,GAAG,IAAI,CAAC;IACvE,8BAAsC,CAAC,aAAa,GAAG;QACtD,WAAW,EAAE,UAAU;QACvB,UAAU,EAAE,qBAAqB;QACjC,MAAM,EAAE,SAAS;KAClB,CAAC;IACF,OAAO,8BAA8B,CAAC;AACxC,CAAC;AAzGD,kDAyGC;AAED,SAAS,OAAO,CAAC,UAAsB,EAAE,IAAY;IACnD,KAAK,IAAI,KAAK,IAAI,UAAU,EAAE;QAC5B,IAAI,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE;YACxB,OAAO,IAAI,CAAC;SACb;KACF;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED,SAAS,MAAM,CAAC,IAAS;IACvB,IAAI,CAAC,IAAI;QAAE,OAAO;IAElB,OAAO,MAAM,IAAI,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AACzD,CAAC;AAED,SAAS,aAAa,CAAC,GAAQ,EAAE,UAAsB;IACrD,SAAS,KAAK,CAAC,IAAS;QACtB,IAAI,IAAI,CAAC,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE;YAC/B,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;SACnC;IACH,CAAC;IACD,SAAS,IAAI,CAAC,IAAS;QACrB,IAAI,IAAI,CAAC,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE;YAC/B,UAAU,CAAC,GAAG,EAAE,CAAC;SAClB;IACH,CAAC;IAED,IAAI,WAAW,GAAG,UAAU,IAAI,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC;IACpD,IAAI,WAAW,EAAE;QACf,OAAO;YACL,QAAQ,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE;YACzB,KAAK,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE;SACvB,CAAC;KACH;SAAM;QACL,OAAO;YACL,OAAO,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE;SACzB,CAAC;KACH;AACH,CAAC","sourcesContent":["import literal from './literal';\nimport getConfig from './get-config';\nimport dependencySatisfies from './dependency-satisfies';\nimport { maybeAttrs } from './macro-maybe-attrs';\nimport {\n macroIfBlock,\n macroIfExpression,\n macroIfMustache,\n macroUnlessBlock,\n macroUnlessExpression,\n macroUnlessMustache,\n} from './macro-condition';\nimport { failBuild } from './fail-build';\nimport { RewrittenPackageCache } from '@embroider/shared-internals';\n\nexport interface BuildPluginParams {\n // Glimmer requires this on ast transforms.\n name: string;\n\n // this is the location of @embroider/macros itself. Glimmer requires this on\n // ast transforms.\n baseDir: string;\n\n methodName: string;\n\n firstTransformParams: FirstTransformParams;\n}\n\nexport interface FirstTransformParams {\n // this is the location of the particular package (app or addon) that is\n // depending on @embroider/macros *if* we're in a classic build. Under\n // embroider the build is global and there's no single packageRoot.\n packageRoot: string | undefined;\n\n // this is the path to the topmost package\n appRoot: string;\n\n // this holds all the actual user configs that were sent into the macros\n configs: { [packageRoot: string]: object };\n}\n\nexport function buildPlugin(params: BuildPluginParams) {\n return {\n name: params.name,\n plugin:\n params.methodName === 'makeFirstTransform'\n ? makeFirstTransform(params.firstTransformParams)\n : makeSecondTransform(),\n baseDir: () => params.baseDir,\n };\n}\n\nexport function makeFirstTransform(opts: FirstTransformParams) {\n function embroiderFirstMacrosTransform(env: {\n syntax: { builders: any };\n meta: { moduleName: string };\n filename: string;\n }) {\n if (!opts.packageRoot && !env.filename) {\n throw new Error(`bug in @embroider/macros. Running without packageRoot but don't have filename.`);\n }\n\n let packageCache = RewrittenPackageCache.shared('embroider', opts.appRoot);\n\n let scopeStack: string[][] = [];\n\n // packageRoot is set when we run inside classic ember-cli. Otherwise we're in\n // Embroider, where we can use absolute filenames.\n const moduleName = opts.packageRoot ? env.meta.moduleName : env.filename;\n\n return {\n name: '@embroider/macros/first',\n\n visitor: {\n ...scopeVisitors(env, scopeStack),\n SubExpression(node: any, walker: { parent: { node: any } }) {\n if (node.path.type !== 'PathExpression') {\n return;\n }\n\n if (inScope(scopeStack, headOf(node.path))) {\n return;\n }\n\n if (node.path.original === 'macroGetOwnConfig') {\n return literal(\n getConfig(node, opts.configs, opts.packageRoot, moduleName, true, packageCache),\n env.syntax.builders\n );\n }\n if (node.path.original === 'macroGetConfig') {\n return literal(\n getConfig(node, opts.configs, opts.packageRoot, moduleName, false, packageCache),\n env.syntax.builders\n );\n }\n if (node.path.original === 'macroDependencySatisfies') {\n const staticValue = literal(\n dependencySatisfies(node, opts.packageRoot, moduleName, packageCache),\n env.syntax.builders\n );\n // If this is a macro expression by itself, then turn it into a macroCondition for the second pass to prune.\n // Otherwise assume it's being composed with another macro and evaluate it as a literal\n if (walker.parent.node.path.original === 'if') {\n return env.syntax.builders.sexpr('macroCondition', [staticValue]);\n }\n return staticValue;\n }\n },\n MustacheStatement(node: any) {\n if (node.path.type !== 'PathExpression') {\n return;\n }\n\n if (inScope(scopeStack, headOf(node.path))) {\n return;\n }\n if (node.path.original === 'macroGetOwnConfig') {\n return env.syntax.builders.mustache(\n literal(\n getConfig(node, opts.configs, opts.packageRoot, moduleName, true, packageCache),\n env.syntax.builders\n )\n );\n }\n if (node.path.original === 'macroGetConfig') {\n return env.syntax.builders.mustache(\n literal(\n getConfig(node, opts.configs, opts.packageRoot, moduleName, false, packageCache),\n env.syntax.builders\n )\n );\n }\n if (node.path.original === 'macroDependencySatisfies') {\n return env.syntax.builders.mustache(\n literal(dependencySatisfies(node, opts.packageRoot, moduleName, packageCache), env.syntax.builders)\n );\n }\n },\n },\n };\n }\n (embroiderFirstMacrosTransform as any).embroiderMacrosASTMarker = true;\n (embroiderFirstMacrosTransform as any).parallelBabel = {\n requireFile: __filename,\n buildUsing: 'makeFirstTransform',\n get params(): FirstTransformParams {\n return opts;\n },\n };\n return embroiderFirstMacrosTransform;\n}\n\nexport function makeSecondTransform() {\n function embroiderSecondMacrosTransform(env: { syntax: { builders: any } }) {\n let scopeStack: string[][] = [];\n return {\n name: '@embroider/macros/second',\n\n visitor: {\n ...scopeVisitors(env, scopeStack),\n BlockStatement(node: any) {\n if (node.path.type !== 'PathExpression') {\n return;\n }\n\n if (inScope(scopeStack, headOf(node.path))) {\n return;\n }\n if (node.path.original === 'if') {\n return macroIfBlock(node);\n }\n if (node.path.original === 'unless') {\n return macroUnlessBlock(node);\n }\n },\n SubExpression(node: any) {\n if (node.path.type !== 'PathExpression') {\n return;\n }\n\n if (inScope(scopeStack, headOf(node.path))) {\n return;\n }\n if (node.path.original === 'if') {\n return macroIfExpression(node, env.syntax.builders);\n }\n if (node.path.original === 'unless') {\n return macroUnlessExpression(node, env.syntax.builders);\n }\n if (node.path.original === 'macroFailBuild') {\n failBuild(node);\n }\n },\n ElementNode(node: any) {\n node.modifiers = node.modifiers.filter((modifier: any) => {\n if (\n modifier.path.type === 'SubExpression' &&\n modifier.path.path.type === 'PathExpression' &&\n modifier.path.path.original === 'if'\n ) {\n modifier.path = macroIfExpression(modifier.path, env.syntax.builders);\n if (modifier.path.type === 'UndefinedLiteral') {\n return false;\n }\n }\n if (\n modifier.path.type === 'SubExpression' &&\n modifier.path.path.type === 'PathExpression' &&\n modifier.path.path.original === 'unless'\n ) {\n modifier.path = macroUnlessExpression(modifier.path, env.syntax.builders);\n if (modifier.path.type === 'UndefinedLiteral') {\n return false;\n }\n }\n if (modifier.path.type !== 'PathExpression') {\n return true;\n }\n\n if (inScope(scopeStack, headOf(node.path))) {\n return true;\n }\n if (modifier.path.original === 'macroMaybeAttrs') {\n maybeAttrs(node, modifier, env.syntax.builders);\n } else {\n return true;\n }\n });\n },\n MustacheStatement(node: any) {\n if (node.path.type !== 'PathExpression') {\n return;\n }\n\n if (inScope(scopeStack, headOf(node.path))) {\n return;\n }\n if (node.path.original === 'if') {\n return macroIfMustache(node, env.syntax.builders);\n }\n if (node.path.original === 'unless') {\n return macroUnlessMustache(node, env.syntax.builders);\n }\n if (node.path.original === 'macroFailBuild') {\n failBuild(node);\n }\n },\n },\n };\n }\n (embroiderSecondMacrosTransform as any).embroiderMacrosASTMarker = true;\n (embroiderSecondMacrosTransform as any).parallelBabel = {\n requireFile: __filename,\n buildUsing: 'makeSecondTransform',\n params: undefined,\n };\n return embroiderSecondMacrosTransform;\n}\n\nfunction inScope(scopeStack: string[][], name: string) {\n for (let scope of scopeStack) {\n if (scope.includes(name)) {\n return true;\n }\n }\n return false;\n}\n\nfunction headOf(path: any) {\n if (!path) return;\n\n return 'head' in path ? path.head.name : path.parts[0];\n}\n\nfunction scopeVisitors(env: any, scopeStack: string[][]) {\n function enter(node: any) {\n if (node.blockParams.length > 0) {\n scopeStack.push(node.blockParams);\n }\n }\n function exit(node: any) {\n if (node.blockParams.length > 0) {\n scopeStack.pop();\n }\n }\n\n let hasTemplate = 'template' in env.syntax.builders;\n if (hasTemplate) {\n return {\n Template: { enter, exit },\n Block: { enter, exit },\n };\n } else {\n return {\n Program: { enter, exit },\n };\n }\n}\n"]}
1
+ {"version":3,"file":"ast-transform.js","sourceRoot":"","sources":["ast-transform.ts"],"names":[],"mappings":"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","sourcesContent":["import literal from './literal';\nimport getConfig from './get-config';\nimport dependencySatisfies from './dependency-satisfies';\nimport { maybeAttrs } from './macro-maybe-attrs';\nimport {\n macroIfBlock,\n macroIfExpression,\n macroIfMustache,\n macroUnlessBlock,\n macroUnlessExpression,\n macroUnlessMustache,\n} from './macro-condition';\nimport { failBuild } from './fail-build';\nimport { RewrittenPackageCache } from '@embroider/shared-internals';\n\nexport interface BuildPluginParams {\n // Glimmer requires this on ast transforms.\n name: string;\n\n // this is the location of @embroider/macros itself. Glimmer requires this on\n // ast transforms.\n baseDir: string;\n\n methodName: string;\n\n firstTransformParams: FirstTransformParams;\n}\n\nexport interface FirstTransformParams {\n // this is the location of the particular package (app or addon) that is\n // depending on @embroider/macros *if* we're in a classic build. Under\n // embroider the build is global and there's no single packageRoot.\n packageRoot: string | undefined;\n\n // this is the path to the topmost package\n appRoot: string;\n\n // this holds all the actual user configs that were sent into the macros\n configs: { [packageRoot: string]: object };\n}\n\nexport function buildPlugin(params: BuildPluginParams) {\n return {\n name: params.name,\n plugin:\n params.methodName === 'makeFirstTransform'\n ? makeFirstTransform(params.firstTransformParams)\n : makeSecondTransform(),\n baseDir: () => params.baseDir,\n };\n}\n\nexport function makeFirstTransform(opts: FirstTransformParams) {\n function embroiderFirstMacrosTransform(env: {\n syntax: { builders: any };\n meta: { moduleName: string };\n filename: string;\n }) {\n if (!opts.packageRoot && !env.filename) {\n throw new Error(`bug in @embroider/macros. Running without packageRoot but don't have filename.`);\n }\n\n let packageCache = RewrittenPackageCache.shared('embroider', opts.appRoot);\n\n let scopeStack: string[][] = [];\n\n // packageRoot is set when we run inside classic ember-cli. Otherwise we're in\n // Embroider, where we can use absolute filenames.\n const moduleName = opts.packageRoot ? env.meta.moduleName : env.filename;\n\n return {\n name: '@embroider/macros/first',\n\n visitor: {\n ...scopeVisitors(env, scopeStack),\n SubExpression(node: any, walker: { parent: { node: any } }) {\n if (node.path.type !== 'PathExpression') {\n return;\n }\n\n if (inScope(scopeStack, headOf(node.path))) {\n return;\n }\n\n if (node.path.original === 'macroGetOwnConfig') {\n return literal(\n getConfig(node, opts.configs, opts.packageRoot, moduleName, true, packageCache),\n env.syntax.builders\n );\n }\n if (node.path.original === 'macroGetConfig') {\n return literal(\n getConfig(node, opts.configs, opts.packageRoot, moduleName, false, packageCache),\n env.syntax.builders\n );\n }\n if (node.path.original === 'macroDependencySatisfies') {\n const staticValue = literal(\n dependencySatisfies(node, opts.packageRoot, moduleName, packageCache),\n env.syntax.builders\n );\n // If this is a macro expression by itself, then turn it into a macroCondition for the second pass to prune.\n // Otherwise assume it's being composed with another macro and evaluate it as a literal\n if (walker.parent.node.path.original === 'if') {\n return env.syntax.builders.sexpr('macroCondition', [staticValue]);\n }\n return staticValue;\n }\n },\n MustacheStatement(node: any) {\n if (node.path.type !== 'PathExpression') {\n return;\n }\n\n if (inScope(scopeStack, headOf(node.path))) {\n return;\n }\n if (node.path.original === 'macroGetOwnConfig') {\n return env.syntax.builders.mustache(\n literal(\n getConfig(node, opts.configs, opts.packageRoot, moduleName, true, packageCache),\n env.syntax.builders\n )\n );\n }\n if (node.path.original === 'macroGetConfig') {\n return env.syntax.builders.mustache(\n literal(\n getConfig(node, opts.configs, opts.packageRoot, moduleName, false, packageCache),\n env.syntax.builders\n )\n );\n }\n if (node.path.original === 'macroDependencySatisfies') {\n return env.syntax.builders.mustache(\n literal(dependencySatisfies(node, opts.packageRoot, moduleName, packageCache), env.syntax.builders)\n );\n }\n },\n },\n };\n }\n (embroiderFirstMacrosTransform as any).embroiderMacrosASTMarker = true;\n (embroiderFirstMacrosTransform as any).parallelBabel = {\n requireFile: __filename,\n buildUsing: 'makeFirstTransform',\n get params(): FirstTransformParams {\n return opts;\n },\n };\n return embroiderFirstMacrosTransform;\n}\n\nexport function makeSecondTransform() {\n function embroiderSecondMacrosTransform(env: { syntax: { builders: any } }) {\n let scopeStack: string[][] = [];\n return {\n name: '@embroider/macros/second',\n\n visitor: {\n ...scopeVisitors(env, scopeStack),\n BlockStatement(node: any) {\n if (node.path.type !== 'PathExpression') {\n return;\n }\n\n if (inScope(scopeStack, headOf(node.path))) {\n return;\n }\n if (node.path.original === 'if') {\n return macroIfBlock(node);\n }\n if (node.path.original === 'unless') {\n return macroUnlessBlock(node);\n }\n },\n SubExpression(node: any) {\n if (node.path.type !== 'PathExpression') {\n return;\n }\n\n if (inScope(scopeStack, headOf(node.path))) {\n return;\n }\n if (node.path.original === 'if') {\n return macroIfExpression(node, env.syntax.builders);\n }\n if (node.path.original === 'unless') {\n return macroUnlessExpression(node, env.syntax.builders);\n }\n if (node.path.original === 'macroFailBuild') {\n failBuild(node);\n }\n },\n ElementNode(node: any) {\n node.modifiers = node.modifiers.filter((modifier: any) => {\n if (\n modifier.path.type === 'SubExpression' &&\n modifier.path.path.type === 'PathExpression' &&\n modifier.path.path.original === 'if'\n ) {\n modifier.path = macroIfExpression(modifier.path, env.syntax.builders);\n if (modifier.path.type === 'UndefinedLiteral') {\n return false;\n }\n }\n if (\n modifier.path.type === 'SubExpression' &&\n modifier.path.path.type === 'PathExpression' &&\n modifier.path.path.original === 'unless'\n ) {\n modifier.path = macroUnlessExpression(modifier.path, env.syntax.builders);\n if (modifier.path.type === 'UndefinedLiteral') {\n return false;\n }\n }\n if (modifier.path.type !== 'PathExpression') {\n return true;\n }\n\n if (inScope(scopeStack, headOf(node.path))) {\n return true;\n }\n if (modifier.path.original === 'macroMaybeAttrs') {\n maybeAttrs(node, modifier, env.syntax.builders);\n } else {\n return true;\n }\n });\n },\n MustacheStatement(node: any) {\n if (node.path.type !== 'PathExpression') {\n return;\n }\n\n if (inScope(scopeStack, headOf(node.path))) {\n return;\n }\n if (node.path.original === 'if') {\n return macroIfMustache(node, env.syntax.builders);\n }\n if (node.path.original === 'unless') {\n return macroUnlessMustache(node, env.syntax.builders);\n }\n if (node.path.original === 'macroFailBuild') {\n failBuild(node);\n }\n },\n },\n };\n }\n (embroiderSecondMacrosTransform as any).embroiderMacrosASTMarker = true;\n (embroiderSecondMacrosTransform as any).parallelBabel = {\n requireFile: __filename,\n buildUsing: 'makeSecondTransform',\n params: undefined,\n };\n return embroiderSecondMacrosTransform;\n}\n\nfunction inScope(scopeStack: string[][], name: string) {\n for (let scope of scopeStack) {\n if (scope.includes(name)) {\n return true;\n }\n }\n return false;\n}\n\nfunction headOf(path: any) {\n if (!path) return;\n\n return 'head' in path ? path.head.name : path.parts[0];\n}\n\nfunction scopeVisitors(env: any, scopeStack: string[][]) {\n function enter(node: any) {\n if (node.blockParams.length > 0) {\n scopeStack.push(node.blockParams);\n }\n }\n function exit(node: any) {\n if (node.blockParams.length > 0) {\n scopeStack.pop();\n }\n }\n\n let hasTemplate = 'template' in env.syntax.builders;\n if (hasTemplate) {\n return {\n Template: { enter, exit },\n Block: { enter, exit },\n };\n } else {\n return {\n Program: { enter, exit },\n };\n }\n}\n"]}
@@ -1,5 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.default = dependencySatisfies;
3
4
  const semver_1 = require("semver");
4
5
  function dependencySatisfies(node,
5
6
  // when we're running in traditional ember-cli, baseDir is configured and we
@@ -33,5 +34,4 @@ baseDir, moduleName, packageCache) {
33
34
  }
34
35
  return false;
35
36
  }
36
- exports.default = dependencySatisfies;
37
37
  //# sourceMappingURL=dependency-satisfies.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"dependency-satisfies.js","sourceRoot":"","sources":["dependency-satisfies.ts"],"names":[],"mappings":";;AAAA,mCAAmC;AAGnC,SAAwB,mBAAmB,CACzC,IAAS;AACT,4EAA4E;AAC5E,8EAA8E;AAC9E,8EAA8E;AAC9E,wEAAwE;AACxE,OAA2B,EAC3B,UAAkB,EAClB,YAAmC;IAEnC,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE;QAC5B,MAAM,IAAI,KAAK,CAAC,+DAA+D,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC;KACtG;IAED,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAM,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,eAAe,CAAC,EAAE;QAC9D,MAAM,IAAI,KAAK,CAAC,mEAAmE,CAAC,CAAC;KACtF;IAED,IAAI,WAAW,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;IACvC,IAAI,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;IAEjC,IAAI,EAAE,GAAG,YAAY,CAAC,WAAW,CAAC,OAAO,IAAI,UAAU,CAAC,CAAC;IACzD,IAAI,CAAC,CAAA,EAAE,aAAF,EAAE,uBAAF,EAAE,CAAE,aAAa,CAAC,WAAW,CAAC,CAAA,EAAE;QACnC,OAAO,KAAK,CAAC;KACd;IAED,IAAI,GAAG,CAAC;IACR,IAAI;QACF,GAAG,GAAG,YAAY,CAAC,OAAO,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC;KAC7C;IAAC,OAAO,GAAG,EAAE;QACZ,sEAAsE;KACvE;IAED,IAAI,GAAG,EAAE;QACP,OAAO,IAAA,kBAAS,EAAC,GAAG,CAAC,OAAO,EAAE,KAAK,EAAE;YACnC,iBAAiB,EAAE,IAAI;SACxB,CAAC,CAAC;KACJ;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAvCD,sCAuCC","sourcesContent":["import { satisfies } from 'semver';\nimport type { RewrittenPackageCache } from '@embroider/shared-internals';\n\nexport default function dependencySatisfies(\n node: any,\n // when we're running in traditional ember-cli, baseDir is configured and we\n // do all lookups relative to that (single) package. But when we're running in\n // embroider stage3 we process all packages simultaneously, so baseDir is left\n // unconfigured and moduleName will be the full path to the source file.\n baseDir: string | undefined,\n moduleName: string,\n packageCache: RewrittenPackageCache\n) {\n if (node.params.length !== 2) {\n throw new Error(`macroDependencySatisfies requires two arguments, you passed ${node.params.length}`);\n }\n\n if (!node.params.every((p: any) => p.type === 'StringLiteral')) {\n throw new Error(`all arguments to macroDependencySatisfies must be string literals`);\n }\n\n let packageName = node.params[0].value;\n let range = node.params[1].value;\n\n let us = packageCache.ownerOfFile(baseDir || moduleName);\n if (!us?.hasDependency(packageName)) {\n return false;\n }\n\n let pkg;\n try {\n pkg = packageCache.resolve(packageName, us);\n } catch (err) {\n // it's not an error if we can't resolve it, we just don't satisfy it.\n }\n\n if (pkg) {\n return satisfies(pkg.version, range, {\n includePrerelease: true,\n });\n }\n return false;\n}\n"]}
1
+ {"version":3,"file":"dependency-satisfies.js","sourceRoot":"","sources":["dependency-satisfies.ts"],"names":[],"mappings":";;AAGA,sCAuCC;AA1CD,mCAAmC;AAGnC,SAAwB,mBAAmB,CACzC,IAAS;AACT,4EAA4E;AAC5E,8EAA8E;AAC9E,8EAA8E;AAC9E,wEAAwE;AACxE,OAA2B,EAC3B,UAAkB,EAClB,YAAmC;IAEnC,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC7B,MAAM,IAAI,KAAK,CAAC,+DAA+D,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC;IACvG,CAAC;IAED,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAM,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,eAAe,CAAC,EAAE,CAAC;QAC/D,MAAM,IAAI,KAAK,CAAC,mEAAmE,CAAC,CAAC;IACvF,CAAC;IAED,IAAI,WAAW,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;IACvC,IAAI,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;IAEjC,IAAI,EAAE,GAAG,YAAY,CAAC,WAAW,CAAC,OAAO,IAAI,UAAU,CAAC,CAAC;IACzD,IAAI,CAAC,CAAA,EAAE,aAAF,EAAE,uBAAF,EAAE,CAAE,aAAa,CAAC,WAAW,CAAC,CAAA,EAAE,CAAC;QACpC,OAAO,KAAK,CAAC;IACf,CAAC;IAED,IAAI,GAAG,CAAC;IACR,IAAI,CAAC;QACH,GAAG,GAAG,YAAY,CAAC,OAAO,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC;IAC9C,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,sEAAsE;IACxE,CAAC;IAED,IAAI,GAAG,EAAE,CAAC;QACR,OAAO,IAAA,kBAAS,EAAC,GAAG,CAAC,OAAO,EAAE,KAAK,EAAE;YACnC,iBAAiB,EAAE,IAAI;SACxB,CAAC,CAAC;IACL,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC","sourcesContent":["import { satisfies } from 'semver';\nimport type { RewrittenPackageCache } from '@embroider/shared-internals';\n\nexport default function dependencySatisfies(\n node: any,\n // when we're running in traditional ember-cli, baseDir is configured and we\n // do all lookups relative to that (single) package. But when we're running in\n // embroider stage3 we process all packages simultaneously, so baseDir is left\n // unconfigured and moduleName will be the full path to the source file.\n baseDir: string | undefined,\n moduleName: string,\n packageCache: RewrittenPackageCache\n) {\n if (node.params.length !== 2) {\n throw new Error(`macroDependencySatisfies requires two arguments, you passed ${node.params.length}`);\n }\n\n if (!node.params.every((p: any) => p.type === 'StringLiteral')) {\n throw new Error(`all arguments to macroDependencySatisfies must be string literals`);\n }\n\n let packageName = node.params[0].value;\n let range = node.params[1].value;\n\n let us = packageCache.ownerOfFile(baseDir || moduleName);\n if (!us?.hasDependency(packageName)) {\n return false;\n }\n\n let pkg;\n try {\n pkg = packageCache.resolve(packageName, us);\n } catch (err) {\n // it's not an error if we can't resolve it, we just don't satisfy it.\n }\n\n if (pkg) {\n return satisfies(pkg.version, range, {\n includePrerelease: true,\n });\n }\n return false;\n}\n"]}
@@ -1,5 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.default = evaluate;
3
4
  function evaluate(node) {
4
5
  switch (node.type) {
5
6
  case 'StringLiteral':
@@ -12,5 +13,4 @@ function evaluate(node) {
12
13
  return { confident: false };
13
14
  }
14
15
  }
15
- exports.default = evaluate;
16
16
  //# sourceMappingURL=evaluate.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"evaluate.js","sourceRoot":"","sources":["evaluate.ts"],"names":[],"mappings":";;AAAA,SAAwB,QAAQ,CAAC,IAAS;IACxC,QAAQ,IAAI,CAAC,IAAI,EAAE;QACjB,KAAK,eAAe,CAAC;QACrB,KAAK,eAAe,CAAC;QACrB,KAAK,gBAAgB,CAAC;QACtB,KAAK,aAAa,CAAC;QACnB,KAAK,kBAAkB;YACrB,OAAO,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC;QAChD;YACE,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC;KAC/B;AACH,CAAC;AAXD,2BAWC","sourcesContent":["export default function evaluate(node: any): { confident: true; value: any } | { confident: false } {\n switch (node.type) {\n case 'StringLiteral':\n case 'NumberLiteral':\n case 'BooleanLiteral':\n case 'NullLiteral':\n case 'UndefinedLiteral':\n return { confident: true, value: node.value };\n default:\n return { confident: false };\n }\n}\n"]}
1
+ {"version":3,"file":"evaluate.js","sourceRoot":"","sources":["evaluate.ts"],"names":[],"mappings":";;AAAA,2BAWC;AAXD,SAAwB,QAAQ,CAAC,IAAS;IACxC,QAAQ,IAAI,CAAC,IAAI,EAAE,CAAC;QAClB,KAAK,eAAe,CAAC;QACrB,KAAK,eAAe,CAAC;QACrB,KAAK,gBAAgB,CAAC;QACtB,KAAK,aAAa,CAAC;QACnB,KAAK,kBAAkB;YACrB,OAAO,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC;QAChD;YACE,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC;IAChC,CAAC;AACH,CAAC","sourcesContent":["export default function evaluate(node: any): { confident: true; value: any } | { confident: false } {\n switch (node.type) {\n case 'StringLiteral':\n case 'NumberLiteral':\n case 'BooleanLiteral':\n case 'NullLiteral':\n case 'UndefinedLiteral':\n return { confident: true, value: node.value };\n default:\n return { confident: false };\n }\n}\n"]}
@@ -3,7 +3,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
3
3
  return (mod && mod.__esModule) ? mod : { "default": mod };
4
4
  };
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.failBuild = void 0;
6
+ exports.failBuild = failBuild;
7
7
  const util_1 = require("util");
8
8
  const evaluate_1 = __importDefault(require("./evaluate"));
9
9
  function failBuild(node) {
@@ -19,5 +19,4 @@ function failBuild(node) {
19
19
  let [message, ...rest] = values;
20
20
  throw new Error((0, util_1.format)(`failBuild: ${message.value}`, ...rest.map((r) => r.value)));
21
21
  }
22
- exports.failBuild = failBuild;
23
22
  //# sourceMappingURL=fail-build.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"fail-build.js","sourceRoot":"","sources":["fail-build.ts"],"names":[],"mappings":";;;;;;AAAA,+BAA8B;AAC9B,0DAAkC;AAElC,SAAgB,SAAS,CAAC,IAAS;IACjC,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE;QAC1B,MAAM,IAAI,KAAK,CAAC,+CAA+C,CAAC,CAAC;KAClE;IAED,IAAI,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,kBAAQ,CAAC,CAAC;IACvC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;QACtC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,SAAS,EAAE;YACxB,MAAM,IAAI,KAAK,CAAC,YAAY,CAAC,iDAAiD,CAAC,CAAC;SACjF;KACF;IACD,IAAI,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC,GAAG,MAAM,CAAC;IAChC,MAAM,IAAI,KAAK,CAAC,IAAA,aAAM,EAAC,cAAc,OAAO,CAAC,KAAK,EAAE,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAM,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AAC3F,CAAC;AAbD,8BAaC","sourcesContent":["import { format } from 'util';\nimport evaluate from './evaluate';\n\nexport function failBuild(node: any) {\n if (node.params.length < 1) {\n throw new Error(`macroFailBuild requires at least one argument`);\n }\n\n let values = node.params.map(evaluate);\n for (let i = 0; i < values.length; i++) {\n if (!values[i].confident) {\n throw new Error(`argument ${i} to macroFailBuild is not statically analyzable`);\n }\n }\n let [message, ...rest] = values;\n throw new Error(format(`failBuild: ${message.value}`, ...rest.map((r: any) => r.value)));\n}\n"]}
1
+ {"version":3,"file":"fail-build.js","sourceRoot":"","sources":["fail-build.ts"],"names":[],"mappings":";;;;;AAGA,8BAaC;AAhBD,+BAA8B;AAC9B,0DAAkC;AAElC,SAAgB,SAAS,CAAC,IAAS;IACjC,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC3B,MAAM,IAAI,KAAK,CAAC,+CAA+C,CAAC,CAAC;IACnE,CAAC;IAED,IAAI,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,kBAAQ,CAAC,CAAC;IACvC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACvC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC;YACzB,MAAM,IAAI,KAAK,CAAC,YAAY,CAAC,iDAAiD,CAAC,CAAC;QAClF,CAAC;IACH,CAAC;IACD,IAAI,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC,GAAG,MAAM,CAAC;IAChC,MAAM,IAAI,KAAK,CAAC,IAAA,aAAM,EAAC,cAAc,OAAO,CAAC,KAAK,EAAE,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAM,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AAC3F,CAAC","sourcesContent":["import { format } from 'util';\nimport evaluate from './evaluate';\n\nexport function failBuild(node: any) {\n if (node.params.length < 1) {\n throw new Error(`macroFailBuild requires at least one argument`);\n }\n\n let values = node.params.map(evaluate);\n for (let i = 0; i < values.length; i++) {\n if (!values[i].confident) {\n throw new Error(`argument ${i} to macroFailBuild is not statically analyzable`);\n }\n }\n let [message, ...rest] = values;\n throw new Error(format(`failBuild: ${message.value}`, ...rest.map((r: any) => r.value)));\n}\n"]}
@@ -1,5 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.default = getConfig;
3
4
  function getConfig(node, userConfigs,
4
5
  // when we're running in traditional ember-cli, baseDir is configured and we
5
6
  // do all lookups relative to that (single) package. But when we're running in
@@ -34,5 +35,4 @@ baseDir, moduleName, own, packageCache) {
34
35
  }
35
36
  return targetConfig;
36
37
  }
37
- exports.default = getConfig;
38
38
  //# sourceMappingURL=get-config.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"get-config.js","sourceRoot":"","sources":["get-config.ts"],"names":[],"mappings":";;AAEA,SAAwB,SAAS,CAC/B,IAAS,EACT,WAA+C;AAC/C,4EAA4E;AAC5E,8EAA8E;AAC9E,8EAA8E;AAC9E,wEAAwE;AACxE,OAA2B,EAC3B,UAAkB,EAClB,GAAY,EACZ,YAAmC;IAEnC,IAAI,YAAY,CAAC;IACjB,IAAI,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;IACjC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAM,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,eAAe,CAAC,EAAE;QACzD,MAAM,IAAI,KAAK,CAAC,oBAAoB,GAAG,CAAC,CAAC,CAAC,mBAAmB,CAAC,CAAC,CAAC,gBAAgB,0BAA0B,CAAC,CAAC;KAC7G;IAED,IAAI,EAAE,GAAG,YAAY,CAAC,WAAW,CAAC,OAAO,IAAI,UAAU,CAAC,CAAC;IACzD,IAAI,CAAC,EAAE,EAAE;QACP,OAAO,SAAS,CAAC;KAClB;IAED,IAAI,GAAG,EAAE;QACP,EAAE,GAAG,YAAY,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;QAC/B,YAAY,GAAG,WAAW,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;KACrC;SAAM;QACL,IAAI,WAAW,GAAG,MAAM,CAAC,KAAK,EAAE,CAAC;QACjC,IAAI,CAAC,WAAW,EAAE;YAChB,MAAM,IAAI,KAAK,CAAC,+CAA+C,CAAC,CAAC;SAClE;QACD,IAAI,SAAS,GAAG,YAAY,CAAC,OAAO,CAAC,WAAW,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;QAC5D,SAAS,GAAG,YAAY,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;QAC7C,YAAY,GAAG,WAAW,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;KAC5C;IACD,OAAO,OAAO,YAAY,KAAK,QAAQ,IAAI,YAAY,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE;QAC5E,IAAI,GAAG,GAAG,MAAM,CAAC,KAAK,EAAE,CAAC;QACzB,YAAY,GAAG,YAAY,CAAC,GAAG,CAAC,KAAK,CAAQ,CAAC;KAC/C;IACD,OAAO,YAAY,CAAC;AACtB,CAAC;AAxCD,4BAwCC","sourcesContent":["import type { RewrittenPackageCache } from '@embroider/shared-internals';\n\nexport default function getConfig(\n node: any,\n userConfigs: { [packageRoot: string]: unknown },\n // when we're running in traditional ember-cli, baseDir is configured and we\n // do all lookups relative to that (single) package. But when we're running in\n // embroider stage3 we process all packages simultaneously, so baseDir is left\n // unconfigured and moduleName will be the full path to the source file.\n baseDir: string | undefined,\n moduleName: string,\n own: boolean,\n packageCache: RewrittenPackageCache\n) {\n let targetConfig;\n let params = node.params.slice();\n if (!params.every((p: any) => p.type === 'StringLiteral')) {\n throw new Error(`all arguments to ${own ? 'macroGetOwnConfig' : 'macroGetConfig'} must be string literals`);\n }\n\n let us = packageCache.ownerOfFile(baseDir || moduleName);\n if (!us) {\n return undefined;\n }\n\n if (own) {\n us = packageCache.original(us);\n targetConfig = userConfigs[us.root];\n } else {\n let packageName = params.shift();\n if (!packageName) {\n throw new Error(`macroGetConfig requires at least one argument`);\n }\n let targetPkg = packageCache.resolve(packageName.value, us);\n targetPkg = packageCache.original(targetPkg);\n targetConfig = userConfigs[targetPkg.root];\n }\n while (typeof targetConfig === 'object' && targetConfig && params.length > 0) {\n let key = params.shift();\n targetConfig = targetConfig[key.value] as any;\n }\n return targetConfig;\n}\n"]}
1
+ {"version":3,"file":"get-config.js","sourceRoot":"","sources":["get-config.ts"],"names":[],"mappings":";;AAEA,4BAwCC;AAxCD,SAAwB,SAAS,CAC/B,IAAS,EACT,WAA+C;AAC/C,4EAA4E;AAC5E,8EAA8E;AAC9E,8EAA8E;AAC9E,wEAAwE;AACxE,OAA2B,EAC3B,UAAkB,EAClB,GAAY,EACZ,YAAmC;IAEnC,IAAI,YAAY,CAAC;IACjB,IAAI,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;IACjC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAM,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,eAAe,CAAC,EAAE,CAAC;QAC1D,MAAM,IAAI,KAAK,CAAC,oBAAoB,GAAG,CAAC,CAAC,CAAC,mBAAmB,CAAC,CAAC,CAAC,gBAAgB,0BAA0B,CAAC,CAAC;IAC9G,CAAC;IAED,IAAI,EAAE,GAAG,YAAY,CAAC,WAAW,CAAC,OAAO,IAAI,UAAU,CAAC,CAAC;IACzD,IAAI,CAAC,EAAE,EAAE,CAAC;QACR,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,IAAI,GAAG,EAAE,CAAC;QACR,EAAE,GAAG,YAAY,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;QAC/B,YAAY,GAAG,WAAW,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;IACtC,CAAC;SAAM,CAAC;QACN,IAAI,WAAW,GAAG,MAAM,CAAC,KAAK,EAAE,CAAC;QACjC,IAAI,CAAC,WAAW,EAAE,CAAC;YACjB,MAAM,IAAI,KAAK,CAAC,+CAA+C,CAAC,CAAC;QACnE,CAAC;QACD,IAAI,SAAS,GAAG,YAAY,CAAC,OAAO,CAAC,WAAW,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;QAC5D,SAAS,GAAG,YAAY,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;QAC7C,YAAY,GAAG,WAAW,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;IAC7C,CAAC;IACD,OAAO,OAAO,YAAY,KAAK,QAAQ,IAAI,YAAY,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC7E,IAAI,GAAG,GAAG,MAAM,CAAC,KAAK,EAAE,CAAC;QACzB,YAAY,GAAG,YAAY,CAAC,GAAG,CAAC,KAAK,CAAQ,CAAC;IAChD,CAAC;IACD,OAAO,YAAY,CAAC;AACtB,CAAC","sourcesContent":["import type { RewrittenPackageCache } from '@embroider/shared-internals';\n\nexport default function getConfig(\n node: any,\n userConfigs: { [packageRoot: string]: unknown },\n // when we're running in traditional ember-cli, baseDir is configured and we\n // do all lookups relative to that (single) package. But when we're running in\n // embroider stage3 we process all packages simultaneously, so baseDir is left\n // unconfigured and moduleName will be the full path to the source file.\n baseDir: string | undefined,\n moduleName: string,\n own: boolean,\n packageCache: RewrittenPackageCache\n) {\n let targetConfig;\n let params = node.params.slice();\n if (!params.every((p: any) => p.type === 'StringLiteral')) {\n throw new Error(`all arguments to ${own ? 'macroGetOwnConfig' : 'macroGetConfig'} must be string literals`);\n }\n\n let us = packageCache.ownerOfFile(baseDir || moduleName);\n if (!us) {\n return undefined;\n }\n\n if (own) {\n us = packageCache.original(us);\n targetConfig = userConfigs[us.root];\n } else {\n let packageName = params.shift();\n if (!packageName) {\n throw new Error(`macroGetConfig requires at least one argument`);\n }\n let targetPkg = packageCache.resolve(packageName.value, us);\n targetPkg = packageCache.original(targetPkg);\n targetConfig = userConfigs[targetPkg.root];\n }\n while (typeof targetConfig === 'object' && targetConfig && params.length > 0) {\n let key = params.shift();\n targetConfig = targetConfig[key.value] as any;\n }\n return targetConfig;\n}\n"]}
@@ -1,5 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.default = literal;
3
4
  function literal(value, builders) {
4
5
  if (typeof value === 'number') {
5
6
  return builders.number(value);
@@ -24,5 +25,4 @@ function literal(value, builders) {
24
25
  }
25
26
  throw new Error(`don't know how to emit a literal form of value ${value}`);
26
27
  }
27
- exports.default = literal;
28
28
  //# sourceMappingURL=literal.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"literal.js","sourceRoot":"","sources":["literal.ts"],"names":[],"mappings":";;AAAA,SAAwB,OAAO,CAAC,KAAU,EAAE,QAAa;IACvD,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;QAC7B,OAAO,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;KAC/B;IACD,IAAI,OAAO,KAAK,KAAK,SAAS,EAAE;QAC9B,OAAO,QAAQ,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;KAChC;IACD,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;QAC7B,OAAO,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;KAC/B;IACD,IAAI,KAAK,KAAK,IAAI,EAAE;QAClB,OAAO,QAAQ,CAAC,IAAI,EAAE,CAAC;KACxB;IACD,IAAI,KAAK,KAAK,SAAS,EAAE;QACvB,OAAO,QAAQ,CAAC,SAAS,EAAE,CAAC;KAC7B;IACD,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;QACxB,OAAO,QAAQ,CAAC,KAAK,CACnB,OAAO,EACP,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC,OAAO,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC,CACjD,CAAC;KACH;IACD,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;QAC7B,OAAO,QAAQ,CAAC,KAAK,CACnB,MAAM,EACN,SAAS,EACT,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,CAC7F,CAAC;KACH;IAED,MAAM,IAAI,KAAK,CAAC,kDAAkD,KAAK,EAAE,CAAC,CAAC;AAC7E,CAAC;AA/BD,0BA+BC","sourcesContent":["export default function literal(value: any, builders: any): any {\n if (typeof value === 'number') {\n return builders.number(value);\n }\n if (typeof value === 'boolean') {\n return builders.boolean(value);\n }\n if (typeof value === 'string') {\n return builders.string(value);\n }\n if (value === null) {\n return builders.null();\n }\n if (value === undefined) {\n return builders.undefined();\n }\n if (Array.isArray(value)) {\n return builders.sexpr(\n 'array',\n value.map(element => literal(element, builders))\n );\n }\n if (typeof value === 'object') {\n return builders.sexpr(\n 'hash',\n undefined,\n builders.hash(Object.entries(value).map(([k, v]) => builders.pair(k, literal(v, builders))))\n );\n }\n\n throw new Error(`don't know how to emit a literal form of value ${value}`);\n}\n"]}
1
+ {"version":3,"file":"literal.js","sourceRoot":"","sources":["literal.ts"],"names":[],"mappings":";;AAAA,0BA+BC;AA/BD,SAAwB,OAAO,CAAC,KAAU,EAAE,QAAa;IACvD,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAC9B,OAAO,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IAChC,CAAC;IACD,IAAI,OAAO,KAAK,KAAK,SAAS,EAAE,CAAC;QAC/B,OAAO,QAAQ,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;IACjC,CAAC;IACD,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAC9B,OAAO,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IAChC,CAAC;IACD,IAAI,KAAK,KAAK,IAAI,EAAE,CAAC;QACnB,OAAO,QAAQ,CAAC,IAAI,EAAE,CAAC;IACzB,CAAC;IACD,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;QACxB,OAAO,QAAQ,CAAC,SAAS,EAAE,CAAC;IAC9B,CAAC;IACD,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QACzB,OAAO,QAAQ,CAAC,KAAK,CACnB,OAAO,EACP,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC,OAAO,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC,CACjD,CAAC;IACJ,CAAC;IACD,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAC9B,OAAO,QAAQ,CAAC,KAAK,CACnB,MAAM,EACN,SAAS,EACT,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,CAC7F,CAAC;IACJ,CAAC;IAED,MAAM,IAAI,KAAK,CAAC,kDAAkD,KAAK,EAAE,CAAC,CAAC;AAC7E,CAAC","sourcesContent":["export default function literal(value: any, builders: any): any {\n if (typeof value === 'number') {\n return builders.number(value);\n }\n if (typeof value === 'boolean') {\n return builders.boolean(value);\n }\n if (typeof value === 'string') {\n return builders.string(value);\n }\n if (value === null) {\n return builders.null();\n }\n if (value === undefined) {\n return builders.undefined();\n }\n if (Array.isArray(value)) {\n return builders.sexpr(\n 'array',\n value.map(element => literal(element, builders))\n );\n }\n if (typeof value === 'object') {\n return builders.sexpr(\n 'hash',\n undefined,\n builders.hash(Object.entries(value).map(([k, v]) => builders.pair(k, literal(v, builders))))\n );\n }\n\n throw new Error(`don't know how to emit a literal form of value ${value}`);\n}\n"]}
@@ -3,7 +3,12 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
3
3
  return (mod && mod.__esModule) ? mod : { "default": mod };
4
4
  };
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.macroUnlessMustache = exports.macroUnlessExpression = exports.macroUnlessBlock = exports.macroIfMustache = exports.macroIfExpression = exports.macroIfBlock = void 0;
6
+ exports.macroIfBlock = macroIfBlock;
7
+ exports.macroIfExpression = macroIfExpression;
8
+ exports.macroIfMustache = macroIfMustache;
9
+ exports.macroUnlessBlock = macroUnlessBlock;
10
+ exports.macroUnlessExpression = macroUnlessExpression;
11
+ exports.macroUnlessMustache = macroUnlessMustache;
7
12
  const evaluate_1 = __importDefault(require("./evaluate"));
8
13
  function macroIfBlock(node) {
9
14
  let condition = node.params[0];
@@ -29,7 +34,6 @@ function macroIfBlock(node) {
29
34
  }
30
35
  }
31
36
  }
32
- exports.macroIfBlock = macroIfBlock;
33
37
  function macroIfExpression(node, builders) {
34
38
  let condition = node.params[0];
35
39
  if (!condition || condition.type !== 'SubExpression' || condition.path.original !== 'macroCondition') {
@@ -49,7 +53,6 @@ function macroIfExpression(node, builders) {
49
53
  return node.params[2] || builders.undefined();
50
54
  }
51
55
  }
52
- exports.macroIfExpression = macroIfExpression;
53
56
  function macroIfMustache(node, builders) {
54
57
  let result = macroIfExpression(node, builders);
55
58
  if (result === node) {
@@ -60,7 +63,6 @@ function macroIfMustache(node, builders) {
60
63
  }
61
64
  return builders.mustache(result);
62
65
  }
63
- exports.macroIfMustache = macroIfMustache;
64
66
  function macroUnlessBlock(node) {
65
67
  let condition = node.params[0];
66
68
  if (!condition || condition.type !== 'SubExpression' || condition.path.original !== 'macroCondition') {
@@ -85,7 +87,6 @@ function macroUnlessBlock(node) {
85
87
  return node.program.body;
86
88
  }
87
89
  }
88
- exports.macroUnlessBlock = macroUnlessBlock;
89
90
  function macroUnlessExpression(node, builders) {
90
91
  let condition = node.params[0];
91
92
  if (!condition || condition.type !== 'SubExpression' || condition.path.original !== 'macroCondition') {
@@ -105,7 +106,6 @@ function macroUnlessExpression(node, builders) {
105
106
  return node.params[1];
106
107
  }
107
108
  }
108
- exports.macroUnlessExpression = macroUnlessExpression;
109
109
  function macroUnlessMustache(node, builders) {
110
110
  let result = macroUnlessExpression(node, builders);
111
111
  if (result === node) {
@@ -116,5 +116,4 @@ function macroUnlessMustache(node, builders) {
116
116
  }
117
117
  return builders.mustache(result);
118
118
  }
119
- exports.macroUnlessMustache = macroUnlessMustache;
120
119
  //# sourceMappingURL=macro-condition.js.map