@embroider/macros 1.20.4 → 1.20.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/package.json +3 -3
- package/src/babel/app-ember-satisfies.d.ts +1 -0
- package/src/babel/dependency-satisfies.d.ts +1 -0
- package/src/babel/each.d.ts +1 -0
- package/src/babel/error.d.ts +1 -0
- package/src/babel/evaluate-json.d.ts +1 -0
- package/src/babel/evaluate-json.js +1 -1
- package/src/babel/evaluate-json.js.map +1 -1
- package/src/babel/fail-build.d.ts +1 -0
- package/src/babel/get-config.d.ts +1 -0
- package/src/babel/macro-condition.d.ts +1 -0
- package/src/babel/macros-babel-plugin.d.ts +1 -0
- package/src/babel/module-exists.d.ts +1 -0
- package/src/babel/state.d.ts +1 -0
- package/src/babel.d.ts +1 -0
- package/src/ember-addon-main.d.ts +1 -0
- package/src/glimmer/app-ember-satisfies.d.ts +1 -0
- package/src/glimmer/ast-transform.d.ts +1 -0
- package/src/glimmer/dependency-satisfies.d.ts +1 -0
- package/src/glimmer/evaluate.d.ts +1 -0
- package/src/glimmer/fail-build.d.ts +1 -0
- package/src/glimmer/get-config.d.ts +1 -0
- package/src/glimmer/literal.d.ts +1 -0
- package/src/glimmer/macro-condition.d.ts +1 -0
- package/src/glimmer/macro-maybe-attrs.d.ts +1 -0
- package/src/index.d.ts +1 -0
- package/src/macros-config.d.ts +1 -0
- package/src/node.d.ts +1 -0
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@embroider/macros",
|
|
3
|
-
"version": "1.20.
|
|
3
|
+
"version": "1.20.5",
|
|
4
4
|
"private": false,
|
|
5
5
|
"description": "Standardized build-time macros for ember apps.",
|
|
6
6
|
"keywords": [
|
|
@@ -54,8 +54,8 @@
|
|
|
54
54
|
"scenario-tester": "^3.0.1",
|
|
55
55
|
"typescript": "^5.4.5",
|
|
56
56
|
"vitest": "^3.2.4",
|
|
57
|
-
"@embroider/
|
|
58
|
-
"@embroider/
|
|
57
|
+
"@embroider/test-support": "0.36.0",
|
|
58
|
+
"@embroider/core": "4.6.2"
|
|
59
59
|
},
|
|
60
60
|
"peerDependencies": {
|
|
61
61
|
"@glint/template": "^1.0.0"
|
|
@@ -2,3 +2,4 @@ import type { NodePath } from '@babel/traverse';
|
|
|
2
2
|
import type { types as t } from '@babel/core';
|
|
3
3
|
import type State from './state';
|
|
4
4
|
export default function appEmberSatisfies(path: NodePath<t.CallExpression>, state: State): boolean;
|
|
5
|
+
//# sourceMappingURL=app-ember-satisfies.d.ts.map
|
|
@@ -2,3 +2,4 @@ import type { NodePath } from '@babel/traverse';
|
|
|
2
2
|
import type { types as t } from '@babel/core';
|
|
3
3
|
import type State from './state';
|
|
4
4
|
export default function dependencySatisfies(path: NodePath<t.CallExpression>, state: State): boolean;
|
|
5
|
+
//# sourceMappingURL=dependency-satisfies.d.ts.map
|
package/src/babel/each.d.ts
CHANGED
|
@@ -11,3 +11,4 @@ export type EachPath = NodePath<t.ForOfStatement> & {
|
|
|
11
11
|
export declare function isEachPath(path: NodePath<t.ForOfStatement>): path is EachPath;
|
|
12
12
|
export declare function insertEach(path: EachPath, state: State, context: typeof Babel): void;
|
|
13
13
|
export {};
|
|
14
|
+
//# sourceMappingURL=each.d.ts.map
|
package/src/babel/error.d.ts
CHANGED
|
@@ -33,3 +33,4 @@ export declare class Evaluator {
|
|
|
33
33
|
export declare function assertNotArray<T>(input: T | T[]): T;
|
|
34
34
|
export declare function assertArray<T>(input: T | T[]): T[];
|
|
35
35
|
export declare function buildLiterals(value: unknown | undefined, babelContext: typeof Babel): t.Identifier | t.ObjectExpression;
|
|
36
|
+
//# sourceMappingURL=evaluate-json.d.ts.map
|
|
@@ -422,7 +422,7 @@ function buildLiterals(value, babelContext) {
|
|
|
422
422
|
if (typeof value === 'undefined') {
|
|
423
423
|
return babelContext.types.identifier('undefined');
|
|
424
424
|
}
|
|
425
|
-
let statement = babelContext.
|
|
425
|
+
let statement = babelContext.parseSync(`a(${JSON.stringify(value)})`, { configFile: false });
|
|
426
426
|
let expression = statement.program.body[0].expression;
|
|
427
427
|
return expression.arguments[0];
|
|
428
428
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"evaluate-json.js","sourceRoot":"","sources":["evaluate-json.ts"],"names":[],"mappings":"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","sourcesContent":["import type { NodePath } from '@babel/traverse';\nimport type * as Babel from '@babel/core';\nimport type { types as t } from '@babel/core';\nimport type State from './state';\nimport dependencySatisfies from './dependency-satisfies';\nimport appEmberSatisfies from './app-ember-satisfies';\nimport moduleExists from './module-exists';\nimport getConfig from './get-config';\nimport assertNever from 'assert-never';\n\ntype OpValue = string | boolean | number;\n\nconst binops: { [operator: string]: any } = {\n '||': function (a: OpValue, b: OpValue) {\n return a || b;\n },\n '&&': function (a: OpValue, b: OpValue) {\n return a && b;\n },\n '|': function (a: any, b: any) {\n return a | b;\n },\n '^': function (a: any, b: any) {\n return a ^ b;\n },\n '&': function (a: any, b: any) {\n return a & b;\n },\n '==': function (a: OpValue, b: OpValue) {\n // eslint-disable-next-line eqeqeq\n return a == b;\n },\n '!=': function (a: OpValue, b: OpValue) {\n // eslint-disable-next-line eqeqeq\n return a != b;\n },\n '===': function (a: OpValue, b: OpValue) {\n return a === b;\n },\n '!==': function (a: OpValue, b: OpValue) {\n return a !== b;\n },\n '<': function (a: OpValue, b: OpValue) {\n return a < b;\n },\n '>': function (a: OpValue, b: OpValue) {\n return a > b;\n },\n '<=': function (a: OpValue, b: OpValue) {\n return a <= b;\n },\n '>=': function (a: OpValue, b: OpValue) {\n return a >= b;\n },\n '<<': function (a: any, b: any) {\n return a << b;\n },\n '>>': function (a: any, b: any) {\n return a >> b;\n },\n '>>>': function (a: any, b: any) {\n return a >>> b;\n },\n '+': function (a: any, b: any) {\n return a + b;\n },\n '-': function (a: any, b: any) {\n return a - b;\n },\n '*': function (a: any, b: any) {\n return a * b;\n },\n '/': function (a: any, b: any) {\n return a / b;\n },\n '%': function (a: any, b: any) {\n return a % b;\n },\n '??': function (a: any, b: any) {\n if (a === null || a === undefined) {\n return b;\n }\n return a;\n },\n};\n\nconst unops: { [operator: string]: any } = {\n '-': function (a: OpValue) {\n return -a;\n },\n '+': function (a: OpValue) {\n return +a;\n },\n '~': function (a: OpValue) {\n return ~a;\n },\n '!': function (a: OpValue) {\n return !a;\n },\n void: function () {\n return undefined;\n },\n};\n\nexport interface ConfidentResult {\n confident: true;\n value: any;\n hasRuntimeImplementation: boolean;\n}\n\nexport interface UnknownResult {\n confident: false;\n}\n\nexport type EvaluateResult = ConfidentResult | UnknownResult;\n\nexport interface EvaluationEnv {\n knownPaths?: Map<NodePath, EvaluateResult>;\n locals?: { [localVar: string]: any };\n state?: State;\n}\n\nexport class Evaluator {\n private knownPaths: Map<NodePath, EvaluateResult>;\n private locals: { [localVar: string]: any };\n private state: State | undefined;\n\n constructor(env: EvaluationEnv = {}) {\n this.knownPaths = env.knownPaths || new Map();\n this.locals = env.locals || {};\n this.state = env.state;\n }\n\n evaluateMember(\n path: NodePath<t.MemberExpression | t.OptionalMemberExpression>,\n optionalChain: boolean\n ): EvaluateResult {\n let propertyPath = assertNotArray(path.get('property'));\n let property: EvaluateResult;\n if (path.node.computed) {\n property = this.evaluate(propertyPath);\n } else {\n property = this.evaluateKey(propertyPath);\n }\n if (property.confident) {\n let objectPath = path.get('object');\n let object = this.evaluate(objectPath);\n if (object.confident) {\n let confidentObject = object;\n let confidentProperty = property;\n return {\n confident: true,\n get value() {\n if (optionalChain) {\n return confidentObject.value != null\n ? confidentObject.value[confidentProperty.value]\n : confidentObject.value;\n } else {\n return confidentObject.value[confidentProperty.value];\n }\n },\n hasRuntimeImplementation:\n confidentObject.hasRuntimeImplementation || confidentProperty.hasRuntimeImplementation,\n };\n }\n }\n return { confident: false };\n }\n\n evaluateKey(path: NodePath): EvaluateResult {\n let first = this.evaluate(path);\n if (first.confident) {\n return first;\n }\n if (path.isIdentifier()) {\n return { confident: true, value: path.node.name, hasRuntimeImplementation: false };\n }\n return { confident: false };\n }\n\n evaluate(path: NodePath): EvaluateResult {\n let known = this.knownPaths.get(path);\n if (known) {\n return known;\n }\n let result = this.realEvaluate(path);\n return result;\n }\n\n private realEvaluate(path: NodePath): EvaluateResult {\n if (path.isMemberExpression()) {\n return this.evaluateMember(path, false);\n }\n\n // Here we are glossing over the lack of a real OptionalMemberExpression type\n // in our @babel/traverse typings.\n if (path.node.type === 'OptionalMemberExpression') {\n return this.evaluateMember(path as NodePath<t.OptionalMemberExpression>, true);\n }\n\n if (path.isStringLiteral()) {\n return { confident: true, value: path.node.value, hasRuntimeImplementation: false };\n }\n\n if (path.isNumericLiteral()) {\n return { confident: true, value: path.node.value, hasRuntimeImplementation: false };\n }\n\n if (path.isBooleanLiteral()) {\n return { confident: true, value: path.node.value, hasRuntimeImplementation: false };\n }\n\n if (path.isNullLiteral()) {\n return { confident: true, value: null, hasRuntimeImplementation: false };\n }\n\n if (path.isIdentifier() && path.node.name === 'undefined') {\n return { confident: true, value: undefined, hasRuntimeImplementation: false };\n }\n\n if (path.isObjectExpression()) {\n let props = assertArray(path.get('properties')).map(p => {\n if (p.isSpreadElement()) {\n return [{ confident: false }, { confident: false }];\n }\n let key = assertNotArray(p.get('key'));\n let keyEvalValue = this.evaluateKey(key);\n let value = assertNotArray(p.get('value'));\n let valueEvalValue = this.evaluate(value);\n return [keyEvalValue, valueEvalValue];\n });\n for (let [k, v] of props) {\n if (!k.confident || !v.confident) {\n return { confident: false };\n }\n }\n let confidentProps = props as ConfidentResult[][];\n return {\n confident: true,\n get value() {\n let result: any = {};\n for (let [k, v] of confidentProps) {\n result[k.value] = v.value;\n }\n return result;\n },\n hasRuntimeImplementation: confidentProps.some(\n ([key, value]) => key.hasRuntimeImplementation || value.hasRuntimeImplementation\n ),\n };\n }\n\n if (path.isArrayExpression()) {\n let elements = path.get('elements').map(element => {\n return this.evaluate(element as NodePath);\n });\n if (elements.every(element => element.confident)) {\n let confidentElements = elements as ConfidentResult[];\n return {\n confident: true,\n get value() {\n return confidentElements.map(element => element.value);\n },\n hasRuntimeImplementation: confidentElements.some(el => el.hasRuntimeImplementation),\n };\n }\n }\n\n if (path.isAssignmentExpression()) {\n let leftPath = path.get('left');\n if (leftPath.isIdentifier()) {\n let rightPath = path.get('right');\n let right = this.evaluate(rightPath);\n if (right.confident) {\n this.locals[leftPath.node.name] = right.value;\n return right;\n }\n }\n }\n\n if (path.isCallExpression()) {\n let result = this.maybeEvaluateRuntimeConfig(path);\n if (result.confident) {\n return result;\n }\n result = this.evaluateMacroCall(path);\n if (result.confident) {\n return result;\n }\n }\n\n if (path.isLogicalExpression() || path.isBinaryExpression()) {\n let operator = path.node.operator as string;\n if (binops[operator]) {\n let leftOperand = this.evaluate(path.get('left') as NodePath<t.Expression>);\n if (leftOperand.confident) {\n let rightOperand = this.evaluate(path.get('right') as NodePath<t.Expression>);\n if (leftOperand.confident && rightOperand.confident) {\n let value = binops[operator](leftOperand.value, rightOperand.value);\n return {\n confident: true,\n value,\n hasRuntimeImplementation: leftOperand.hasRuntimeImplementation || rightOperand.hasRuntimeImplementation,\n };\n }\n }\n }\n return { confident: false };\n }\n\n if (path.isConditionalExpression()) {\n let test = this.evaluate(path.get('test'));\n if (test.confident) {\n let result = test.value ? this.evaluate(path.get('consequent')) : this.evaluate(path.get('alternate'));\n if (result.confident) {\n return {\n confident: true,\n value: result.value,\n hasRuntimeImplementation: test.hasRuntimeImplementation || result.hasRuntimeImplementation,\n };\n }\n }\n }\n\n if (path.isUnaryExpression()) {\n let operator = path.node.operator as string;\n if (unops[operator]) {\n let operand = this.evaluate(path.get('argument') as NodePath<t.Expression>);\n if (operand.confident) {\n let value = unops[operator](operand.value);\n return { confident: true, value, hasRuntimeImplementation: operand.hasRuntimeImplementation };\n }\n }\n return { confident: false };\n }\n\n if (path.isIdentifier()) {\n if (!this.locals.hasOwnProperty(path.node.name)) {\n return { confident: false };\n }\n return { confident: true, value: this.locals[path.node.name], hasRuntimeImplementation: false };\n }\n\n if (path.isSequenceExpression()) {\n let expressions = path.get('expressions');\n let lastExpression = expressions[expressions.length - 1];\n if (lastExpression) {\n // The value of a sequence expression is only the value of the last\n // expression it contains, all the rest are ignored.\n return this.evaluate(lastExpression);\n }\n }\n\n return { confident: false };\n }\n\n // This handles the presence of our runtime-mode getConfig functions. We want\n // to designate them as { confident: true }, because it's important that we\n // give feedback even in runtime-mode if the developer is trying to pass\n // non-static arguments somewhere they're not supposed to. But we don't\n // actually want to calculate their value here because that has been deferred\n // to runtime. That's why we've made `value` lazy. It lets us check the\n // confidence without actually forcing the value.\n private maybeEvaluateRuntimeConfig(path: NodePath<t.CallExpression>): EvaluateResult {\n if (!this.state) {\n return { confident: false };\n }\n let callee = path.get('callee');\n if (callee.isIdentifier()) {\n // Does the identifier refer to our runtime config?\n if (callee.referencesImport(this.state.pathToOurAddon('runtime'), 'config')) {\n return {\n confident: true,\n get value() {\n throw new Error(`bug in @embroider/macros: didn't expect to need to evaluate this value`);\n },\n hasRuntimeImplementation: true,\n };\n }\n }\n return { confident: false };\n }\n\n evaluateMacroCall(path: NodePath<t.CallExpression>): EvaluateResult {\n if (!this.state) {\n return { confident: false };\n }\n let callee = path.get('callee');\n if (callee.referencesImport('@embroider/macros', 'appEmberSatisfies')) {\n return { confident: true, value: appEmberSatisfies(path, this.state), hasRuntimeImplementation: false };\n }\n if (callee.referencesImport('@embroider/macros', 'dependencySatisfies')) {\n return { confident: true, value: dependencySatisfies(path, this.state), hasRuntimeImplementation: false };\n }\n if (callee.referencesImport('@embroider/macros', 'moduleExists')) {\n return { confident: true, value: moduleExists(path, this.state), hasRuntimeImplementation: false };\n }\n if (callee.referencesImport('@embroider/macros', 'getConfig')) {\n return { confident: true, value: getConfig(path, this.state, 'package'), hasRuntimeImplementation: false };\n }\n if (callee.referencesImport('@embroider/macros', 'getOwnConfig')) {\n return { confident: true, value: getConfig(path, this.state, 'own'), hasRuntimeImplementation: false };\n }\n if (callee.referencesImport('@embroider/macros', 'getGlobalConfig')) {\n // Check for getGlobalConfig().fastboot.isRunning, which is the only pattern in use where config actually needs to have a runtime implementation.\n // For compatibility reasons we will continue to support that. All other cases of macro configs are static now.\n let maybeFastbootMemberExpression = path.parentPath;\n if (\n maybeFastbootMemberExpression.isMemberExpression() ||\n maybeFastbootMemberExpression.isOptionalMemberExpression()\n ) {\n let maybeFastbootProperty = maybeFastbootMemberExpression.isMemberExpression()\n ? maybeFastbootMemberExpression.get('property')\n : maybeFastbootMemberExpression.isOptionalMemberExpression()\n ? maybeFastbootMemberExpression.get('property')\n : assertNever(maybeFastbootMemberExpression);\n\n if (maybeFastbootProperty.isIdentifier() && maybeFastbootProperty.node.name === 'fastboot') {\n return {\n confident: true,\n value: getConfig(path, this.state, 'getGlobalConfig'),\n hasRuntimeImplementation: true,\n };\n }\n }\n\n return {\n confident: true,\n value: getConfig(path, this.state, 'getGlobalConfig'),\n hasRuntimeImplementation: false,\n };\n }\n if (callee.referencesImport('@embroider/macros', 'isDevelopingApp')) {\n return {\n confident: true,\n value: Boolean(\n this.state.opts.appPackageRoot &&\n this.state.opts.isDevelopingPackageRoots.includes(this.state.opts.appPackageRoot)\n ),\n hasRuntimeImplementation: false,\n };\n }\n if (callee.referencesImport('@embroider/macros', 'isDevelopingThisPackage')) {\n return {\n confident: true,\n value: this.state.opts.isDevelopingPackageRoots.includes(this.state.originalOwningPackage().root),\n hasRuntimeImplementation: false,\n };\n }\n if (callee.referencesImport('@embroider/macros', 'isTesting')) {\n let g = getConfig(path, this.state, 'getGlobalConfig') as any;\n let e = g && g['@embroider/macros'];\n let value = Boolean(e && e.isTesting);\n return { confident: true, value, hasRuntimeImplementation: true };\n }\n return { confident: false };\n }\n}\n\n// these next two functions are here because the type definitions we're using\n// don't seem to know exactly which NodePath properties are arrays and which\n// aren't.\nexport function assertNotArray<T>(input: T | T[]): T {\n if (Array.isArray(input)) {\n throw new Error(`bug: not supposed to be an array`);\n }\n return input;\n}\nexport function assertArray<T>(input: T | T[]): T[] {\n if (!Array.isArray(input)) {\n throw new Error(`bug: supposed to be an array`);\n }\n return input;\n}\n\nexport function buildLiterals(\n value: unknown | undefined,\n babelContext: typeof Babel\n): t.Identifier | t.ObjectExpression {\n if (typeof value === 'undefined') {\n return babelContext.types.identifier('undefined');\n }\n let statement = babelContext.parse(`a(${JSON.stringify(value)})`, { configFile: false }) as t.File;\n let expression = (statement.program.body[0] as t.ExpressionStatement).expression as t.CallExpression;\n return expression.arguments[0] as t.ObjectExpression;\n}\n"]}
|
|
1
|
+
{"version":3,"file":"evaluate-json.js","sourceRoot":"","sources":["evaluate-json.ts"],"names":[],"mappings":";;;;;;AA8cA,wCAKC;AACD,kCAKC;AAED,sCAUC;AAjeD,kFAAyD;AACzD,gFAAsD;AACtD,oEAA2C;AAC3C,8DAAqC;AACrC,gEAAuC;AAIvC,MAAM,MAAM,GAAgC;IAC1C,IAAI,EAAE,UAAU,CAAU,EAAE,CAAU;QACpC,OAAO,CAAC,IAAI,CAAC,CAAC;IAChB,CAAC;IACD,IAAI,EAAE,UAAU,CAAU,EAAE,CAAU;QACpC,OAAO,CAAC,IAAI,CAAC,CAAC;IAChB,CAAC;IACD,GAAG,EAAE,UAAU,CAAM,EAAE,CAAM;QAC3B,OAAO,CAAC,GAAG,CAAC,CAAC;IACf,CAAC;IACD,GAAG,EAAE,UAAU,CAAM,EAAE,CAAM;QAC3B,OAAO,CAAC,GAAG,CAAC,CAAC;IACf,CAAC;IACD,GAAG,EAAE,UAAU,CAAM,EAAE,CAAM;QAC3B,OAAO,CAAC,GAAG,CAAC,CAAC;IACf,CAAC;IACD,IAAI,EAAE,UAAU,CAAU,EAAE,CAAU;QACpC,kCAAkC;QAClC,OAAO,CAAC,IAAI,CAAC,CAAC;IAChB,CAAC;IACD,IAAI,EAAE,UAAU,CAAU,EAAE,CAAU;QACpC,kCAAkC;QAClC,OAAO,CAAC,IAAI,CAAC,CAAC;IAChB,CAAC;IACD,KAAK,EAAE,UAAU,CAAU,EAAE,CAAU;QACrC,OAAO,CAAC,KAAK,CAAC,CAAC;IACjB,CAAC;IACD,KAAK,EAAE,UAAU,CAAU,EAAE,CAAU;QACrC,OAAO,CAAC,KAAK,CAAC,CAAC;IACjB,CAAC;IACD,GAAG,EAAE,UAAU,CAAU,EAAE,CAAU;QACnC,OAAO,CAAC,GAAG,CAAC,CAAC;IACf,CAAC;IACD,GAAG,EAAE,UAAU,CAAU,EAAE,CAAU;QACnC,OAAO,CAAC,GAAG,CAAC,CAAC;IACf,CAAC;IACD,IAAI,EAAE,UAAU,CAAU,EAAE,CAAU;QACpC,OAAO,CAAC,IAAI,CAAC,CAAC;IAChB,CAAC;IACD,IAAI,EAAE,UAAU,CAAU,EAAE,CAAU;QACpC,OAAO,CAAC,IAAI,CAAC,CAAC;IAChB,CAAC;IACD,IAAI,EAAE,UAAU,CAAM,EAAE,CAAM;QAC5B,OAAO,CAAC,IAAI,CAAC,CAAC;IAChB,CAAC;IACD,IAAI,EAAE,UAAU,CAAM,EAAE,CAAM;QAC5B,OAAO,CAAC,IAAI,CAAC,CAAC;IAChB,CAAC;IACD,KAAK,EAAE,UAAU,CAAM,EAAE,CAAM;QAC7B,OAAO,CAAC,KAAK,CAAC,CAAC;IACjB,CAAC;IACD,GAAG,EAAE,UAAU,CAAM,EAAE,CAAM;QAC3B,OAAO,CAAC,GAAG,CAAC,CAAC;IACf,CAAC;IACD,GAAG,EAAE,UAAU,CAAM,EAAE,CAAM;QAC3B,OAAO,CAAC,GAAG,CAAC,CAAC;IACf,CAAC;IACD,GAAG,EAAE,UAAU,CAAM,EAAE,CAAM;QAC3B,OAAO,CAAC,GAAG,CAAC,CAAC;IACf,CAAC;IACD,GAAG,EAAE,UAAU,CAAM,EAAE,CAAM;QAC3B,OAAO,CAAC,GAAG,CAAC,CAAC;IACf,CAAC;IACD,GAAG,EAAE,UAAU,CAAM,EAAE,CAAM;QAC3B,OAAO,CAAC,GAAG,CAAC,CAAC;IACf,CAAC;IACD,IAAI,EAAE,UAAU,CAAM,EAAE,CAAM;QAC5B,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,SAAS,EAAE,CAAC;YAClC,OAAO,CAAC,CAAC;QACX,CAAC;QACD,OAAO,CAAC,CAAC;IACX,CAAC;CACF,CAAC;AAEF,MAAM,KAAK,GAAgC;IACzC,GAAG,EAAE,UAAU,CAAU;QACvB,OAAO,CAAC,CAAC,CAAC;IACZ,CAAC;IACD,GAAG,EAAE,UAAU,CAAU;QACvB,OAAO,CAAC,CAAC,CAAC;IACZ,CAAC;IACD,GAAG,EAAE,UAAU,CAAU;QACvB,OAAO,CAAC,CAAC,CAAC;IACZ,CAAC;IACD,GAAG,EAAE,UAAU,CAAU;QACvB,OAAO,CAAC,CAAC,CAAC;IACZ,CAAC;IACD,IAAI,EAAE;QACJ,OAAO,SAAS,CAAC;IACnB,CAAC;CACF,CAAC;AAoBF,MAAa,SAAS;IAKpB,YAAY,MAAqB,EAAE;QACjC,IAAI,CAAC,UAAU,GAAG,GAAG,CAAC,UAAU,IAAI,IAAI,GAAG,EAAE,CAAC;QAC9C,IAAI,CAAC,MAAM,GAAG,GAAG,CAAC,MAAM,IAAI,EAAE,CAAC;QAC/B,IAAI,CAAC,KAAK,GAAG,GAAG,CAAC,KAAK,CAAC;IACzB,CAAC;IAED,cAAc,CACZ,IAA+D,EAC/D,aAAsB;QAEtB,IAAI,YAAY,GAAG,cAAc,CAAC,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC;QACxD,IAAI,QAAwB,CAAC;QAC7B,IAAI,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC;YACvB,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC;QACzC,CAAC;aAAM,CAAC;YACN,QAAQ,GAAG,IAAI,CAAC,WAAW,CAAC,YAAY,CAAC,CAAC;QAC5C,CAAC;QACD,IAAI,QAAQ,CAAC,SAAS,EAAE,CAAC;YACvB,IAAI,UAAU,GAAG,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;YACpC,IAAI,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC;YACvC,IAAI,MAAM,CAAC,SAAS,EAAE,CAAC;gBACrB,IAAI,eAAe,GAAG,MAAM,CAAC;gBAC7B,IAAI,iBAAiB,GAAG,QAAQ,CAAC;gBACjC,OAAO;oBACL,SAAS,EAAE,IAAI;oBACf,IAAI,KAAK;wBACP,IAAI,aAAa,EAAE,CAAC;4BAClB,OAAO,eAAe,CAAC,KAAK,IAAI,IAAI;gCAClC,CAAC,CAAC,eAAe,CAAC,KAAK,CAAC,iBAAiB,CAAC,KAAK,CAAC;gCAChD,CAAC,CAAC,eAAe,CAAC,KAAK,CAAC;wBAC5B,CAAC;6BAAM,CAAC;4BACN,OAAO,eAAe,CAAC,KAAK,CAAC,iBAAiB,CAAC,KAAK,CAAC,CAAC;wBACxD,CAAC;oBACH,CAAC;oBACD,wBAAwB,EACtB,eAAe,CAAC,wBAAwB,IAAI,iBAAiB,CAAC,wBAAwB;iBACzF,CAAC;YACJ,CAAC;QACH,CAAC;QACD,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC;IAC9B,CAAC;IAED,WAAW,CAAC,IAAc;QACxB,IAAI,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;QAChC,IAAI,KAAK,CAAC,SAAS,EAAE,CAAC;YACpB,OAAO,KAAK,CAAC;QACf,CAAC;QACD,IAAI,IAAI,CAAC,YAAY,EAAE,EAAE,CAAC;YACxB,OAAO,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,wBAAwB,EAAE,KAAK,EAAE,CAAC;QACrF,CAAC;QACD,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC;IAC9B,CAAC;IAED,QAAQ,CAAC,IAAc;QACrB,IAAI,KAAK,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QACtC,IAAI,KAAK,EAAE,CAAC;YACV,OAAO,KAAK,CAAC;QACf,CAAC;QACD,IAAI,MAAM,GAAG,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;QACrC,OAAO,MAAM,CAAC;IAChB,CAAC;IAEO,YAAY,CAAC,IAAc;QACjC,IAAI,IAAI,CAAC,kBAAkB,EAAE,EAAE,CAAC;YAC9B,OAAO,IAAI,CAAC,cAAc,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;QAC1C,CAAC;QAED,6EAA6E;QAC7E,kCAAkC;QAClC,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI,KAAK,0BAA0B,EAAE,CAAC;YAClD,OAAO,IAAI,CAAC,cAAc,CAAC,IAA4C,EAAE,IAAI,CAAC,CAAC;QACjF,CAAC;QAED,IAAI,IAAI,CAAC,eAAe,EAAE,EAAE,CAAC;YAC3B,OAAO,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,wBAAwB,EAAE,KAAK,EAAE,CAAC;QACtF,CAAC;QAED,IAAI,IAAI,CAAC,gBAAgB,EAAE,EAAE,CAAC;YAC5B,OAAO,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,wBAAwB,EAAE,KAAK,EAAE,CAAC;QACtF,CAAC;QAED,IAAI,IAAI,CAAC,gBAAgB,EAAE,EAAE,CAAC;YAC5B,OAAO,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,wBAAwB,EAAE,KAAK,EAAE,CAAC;QACtF,CAAC;QAED,IAAI,IAAI,CAAC,aAAa,EAAE,EAAE,CAAC;YACzB,OAAO,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,wBAAwB,EAAE,KAAK,EAAE,CAAC;QAC3E,CAAC;QAED,IAAI,IAAI,CAAC,YAAY,EAAE,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI,KAAK,WAAW,EAAE,CAAC;YAC1D,OAAO,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,SAAS,EAAE,wBAAwB,EAAE,KAAK,EAAE,CAAC;QAChF,CAAC;QAED,IAAI,IAAI,CAAC,kBAAkB,EAAE,EAAE,CAAC;YAC9B,IAAI,KAAK,GAAG,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE;gBACtD,IAAI,CAAC,CAAC,eAAe,EAAE,EAAE,CAAC;oBACxB,OAAO,CAAC,EAAE,SAAS,EAAE,KAAK,EAAE,EAAE,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC,CAAC;gBACtD,CAAC;gBACD,IAAI,GAAG,GAAG,cAAc,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC;gBACvC,IAAI,YAAY,GAAG,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;gBACzC,IAAI,KAAK,GAAG,cAAc,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC;gBAC3C,IAAI,cAAc,GAAG,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;gBAC1C,OAAO,CAAC,YAAY,EAAE,cAAc,CAAC,CAAC;YACxC,CAAC,CAAC,CAAC;YACH,KAAK,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,KAAK,EAAE,CAAC;gBACzB,IAAI,CAAC,CAAC,CAAC,SAAS,IAAI,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC;oBACjC,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC;gBAC9B,CAAC;YACH,CAAC;YACD,IAAI,cAAc,GAAG,KAA4B,CAAC;YAClD,OAAO;gBACL,SAAS,EAAE,IAAI;gBACf,IAAI,KAAK;oBACP,IAAI,MAAM,GAAQ,EAAE,CAAC;oBACrB,KAAK,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,cAAc,EAAE,CAAC;wBAClC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC;oBAC5B,CAAC;oBACD,OAAO,MAAM,CAAC;gBAChB,CAAC;gBACD,wBAAwB,EAAE,cAAc,CAAC,IAAI,CAC3C,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,wBAAwB,IAAI,KAAK,CAAC,wBAAwB,CACjF;aACF,CAAC;QACJ,CAAC;QAED,IAAI,IAAI,CAAC,iBAAiB,EAAE,EAAE,CAAC;YAC7B,IAAI,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE;gBAChD,OAAO,IAAI,CAAC,QAAQ,CAAC,OAAmB,CAAC,CAAC;YAC5C,CAAC,CAAC,CAAC;YACH,IAAI,QAAQ,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE,CAAC;gBACjD,IAAI,iBAAiB,GAAG,QAA6B,CAAC;gBACtD,OAAO;oBACL,SAAS,EAAE,IAAI;oBACf,IAAI,KAAK;wBACP,OAAO,iBAAiB,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;oBACzD,CAAC;oBACD,wBAAwB,EAAE,iBAAiB,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,wBAAwB,CAAC;iBACpF,CAAC;YACJ,CAAC;QACH,CAAC;QAED,IAAI,IAAI,CAAC,sBAAsB,EAAE,EAAE,CAAC;YAClC,IAAI,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;YAChC,IAAI,QAAQ,CAAC,YAAY,EAAE,EAAE,CAAC;gBAC5B,IAAI,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;gBAClC,IAAI,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;gBACrC,IAAI,KAAK,CAAC,SAAS,EAAE,CAAC;oBACpB,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC;oBAC9C,OAAO,KAAK,CAAC;gBACf,CAAC;YACH,CAAC;QACH,CAAC;QAED,IAAI,IAAI,CAAC,gBAAgB,EAAE,EAAE,CAAC;YAC5B,IAAI,MAAM,GAAG,IAAI,CAAC,0BAA0B,CAAC,IAAI,CAAC,CAAC;YACnD,IAAI,MAAM,CAAC,SAAS,EAAE,CAAC;gBACrB,OAAO,MAAM,CAAC;YAChB,CAAC;YACD,MAAM,GAAG,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC;YACtC,IAAI,MAAM,CAAC,SAAS,EAAE,CAAC;gBACrB,OAAO,MAAM,CAAC;YAChB,CAAC;QACH,CAAC;QAED,IAAI,IAAI,CAAC,mBAAmB,EAAE,IAAI,IAAI,CAAC,kBAAkB,EAAE,EAAE,CAAC;YAC5D,IAAI,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,QAAkB,CAAC;YAC5C,IAAI,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC;gBACrB,IAAI,WAAW,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAA2B,CAAC,CAAC;gBAC5E,IAAI,WAAW,CAAC,SAAS,EAAE,CAAC;oBAC1B,IAAI,YAAY,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,CAA2B,CAAC,CAAC;oBAC9E,IAAI,WAAW,CAAC,SAAS,IAAI,YAAY,CAAC,SAAS,EAAE,CAAC;wBACpD,IAAI,KAAK,GAAG,MAAM,CAAC,QAAQ,CAAC,CAAC,WAAW,CAAC,KAAK,EAAE,YAAY,CAAC,KAAK,CAAC,CAAC;wBACpE,OAAO;4BACL,SAAS,EAAE,IAAI;4BACf,KAAK;4BACL,wBAAwB,EAAE,WAAW,CAAC,wBAAwB,IAAI,YAAY,CAAC,wBAAwB;yBACxG,CAAC;oBACJ,CAAC;gBACH,CAAC;YACH,CAAC;YACD,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC;QAC9B,CAAC;QAED,IAAI,IAAI,CAAC,uBAAuB,EAAE,EAAE,CAAC;YACnC,IAAI,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC;YAC3C,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;gBACnB,IAAI,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC,CAAC;gBACvG,IAAI,MAAM,CAAC,SAAS,EAAE,CAAC;oBACrB,OAAO;wBACL,SAAS,EAAE,IAAI;wBACf,KAAK,EAAE,MAAM,CAAC,KAAK;wBACnB,wBAAwB,EAAE,IAAI,CAAC,wBAAwB,IAAI,MAAM,CAAC,wBAAwB;qBAC3F,CAAC;gBACJ,CAAC;YACH,CAAC;QACH,CAAC;QAED,IAAI,IAAI,CAAC,iBAAiB,EAAE,EAAE,CAAC;YAC7B,IAAI,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,QAAkB,CAAC;YAC5C,IAAI,KAAK,CAAC,QAAQ,CAAC,EAAE,CAAC;gBACpB,IAAI,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,UAAU,CAA2B,CAAC,CAAC;gBAC5E,IAAI,OAAO,CAAC,SAAS,EAAE,CAAC;oBACtB,IAAI,KAAK,GAAG,KAAK,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;oBAC3C,OAAO,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,wBAAwB,EAAE,OAAO,CAAC,wBAAwB,EAAE,CAAC;gBAChG,CAAC;YACH,CAAC;YACD,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC;QAC9B,CAAC;QAED,IAAI,IAAI,CAAC,YAAY,EAAE,EAAE,CAAC;YACxB,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;gBAChD,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC;YAC9B,CAAC;YACD,OAAO,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,wBAAwB,EAAE,KAAK,EAAE,CAAC;QAClG,CAAC;QAED,IAAI,IAAI,CAAC,oBAAoB,EAAE,EAAE,CAAC;YAChC,IAAI,WAAW,GAAG,IAAI,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC;YAC1C,IAAI,cAAc,GAAG,WAAW,CAAC,WAAW,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;YACzD,IAAI,cAAc,EAAE,CAAC;gBACnB,mEAAmE;gBACnE,oDAAoD;gBACpD,OAAO,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,CAAC;YACvC,CAAC;QACH,CAAC;QAED,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC;IAC9B,CAAC;IAED,6EAA6E;IAC7E,2EAA2E;IAC3E,wEAAwE;IACxE,uEAAuE;IACvE,6EAA6E;IAC7E,uEAAuE;IACvE,iDAAiD;IACzC,0BAA0B,CAAC,IAAgC;QACjE,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;YAChB,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC;QAC9B,CAAC;QACD,IAAI,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QAChC,IAAI,MAAM,CAAC,YAAY,EAAE,EAAE,CAAC;YAC1B,mDAAmD;YACnD,IAAI,MAAM,CAAC,gBAAgB,CAAC,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,SAAS,CAAC,EAAE,QAAQ,CAAC,EAAE,CAAC;gBAC5E,OAAO;oBACL,SAAS,EAAE,IAAI;oBACf,IAAI,KAAK;wBACP,MAAM,IAAI,KAAK,CAAC,wEAAwE,CAAC,CAAC;oBAC5F,CAAC;oBACD,wBAAwB,EAAE,IAAI;iBAC/B,CAAC;YACJ,CAAC;QACH,CAAC;QACD,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC;IAC9B,CAAC;IAED,iBAAiB,CAAC,IAAgC;QAChD,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;YAChB,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC;QAC9B,CAAC;QACD,IAAI,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QAChC,IAAI,MAAM,CAAC,gBAAgB,CAAC,mBAAmB,EAAE,mBAAmB,CAAC,EAAE,CAAC;YACtE,OAAO,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAA,6BAAiB,EAAC,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,EAAE,wBAAwB,EAAE,KAAK,EAAE,CAAC;QAC1G,CAAC;QACD,IAAI,MAAM,CAAC,gBAAgB,CAAC,mBAAmB,EAAE,qBAAqB,CAAC,EAAE,CAAC;YACxE,OAAO,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAA,8BAAmB,EAAC,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,EAAE,wBAAwB,EAAE,KAAK,EAAE,CAAC;QAC5G,CAAC;QACD,IAAI,MAAM,CAAC,gBAAgB,CAAC,mBAAmB,EAAE,cAAc,CAAC,EAAE,CAAC;YACjE,OAAO,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAA,uBAAY,EAAC,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,EAAE,wBAAwB,EAAE,KAAK,EAAE,CAAC;QACrG,CAAC;QACD,IAAI,MAAM,CAAC,gBAAgB,CAAC,mBAAmB,EAAE,WAAW,CAAC,EAAE,CAAC;YAC9D,OAAO,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAA,oBAAS,EAAC,IAAI,EAAE,IAAI,CAAC,KAAK,EAAE,SAAS,CAAC,EAAE,wBAAwB,EAAE,KAAK,EAAE,CAAC;QAC7G,CAAC;QACD,IAAI,MAAM,CAAC,gBAAgB,CAAC,mBAAmB,EAAE,cAAc,CAAC,EAAE,CAAC;YACjE,OAAO,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAA,oBAAS,EAAC,IAAI,EAAE,IAAI,CAAC,KAAK,EAAE,KAAK,CAAC,EAAE,wBAAwB,EAAE,KAAK,EAAE,CAAC;QACzG,CAAC;QACD,IAAI,MAAM,CAAC,gBAAgB,CAAC,mBAAmB,EAAE,iBAAiB,CAAC,EAAE,CAAC;YACpE,iJAAiJ;YACjJ,+GAA+G;YAC/G,IAAI,6BAA6B,GAAG,IAAI,CAAC,UAAU,CAAC;YACpD,IACE,6BAA6B,CAAC,kBAAkB,EAAE;gBAClD,6BAA6B,CAAC,0BAA0B,EAAE,EAC1D,CAAC;gBACD,IAAI,qBAAqB,GAAG,6BAA6B,CAAC,kBAAkB,EAAE;oBAC5E,CAAC,CAAC,6BAA6B,CAAC,GAAG,CAAC,UAAU,CAAC;oBAC/C,CAAC,CAAC,6BAA6B,CAAC,0BAA0B,EAAE;wBAC5D,CAAC,CAAC,6BAA6B,CAAC,GAAG,CAAC,UAAU,CAAC;wBAC/C,CAAC,CAAC,IAAA,sBAAW,EAAC,6BAA6B,CAAC,CAAC;gBAE/C,IAAI,qBAAqB,CAAC,YAAY,EAAE,IAAI,qBAAqB,CAAC,IAAI,CAAC,IAAI,KAAK,UAAU,EAAE,CAAC;oBAC3F,OAAO;wBACL,SAAS,EAAE,IAAI;wBACf,KAAK,EAAE,IAAA,oBAAS,EAAC,IAAI,EAAE,IAAI,CAAC,KAAK,EAAE,iBAAiB,CAAC;wBACrD,wBAAwB,EAAE,IAAI;qBAC/B,CAAC;gBACJ,CAAC;YACH,CAAC;YAED,OAAO;gBACL,SAAS,EAAE,IAAI;gBACf,KAAK,EAAE,IAAA,oBAAS,EAAC,IAAI,EAAE,IAAI,CAAC,KAAK,EAAE,iBAAiB,CAAC;gBACrD,wBAAwB,EAAE,KAAK;aAChC,CAAC;QACJ,CAAC;QACD,IAAI,MAAM,CAAC,gBAAgB,CAAC,mBAAmB,EAAE,iBAAiB,CAAC,EAAE,CAAC;YACpE,OAAO;gBACL,SAAS,EAAE,IAAI;gBACf,KAAK,EAAE,OAAO,CACZ,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,cAAc;oBAC5B,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,wBAAwB,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,cAAc,CAAC,CACpF;gBACD,wBAAwB,EAAE,KAAK;aAChC,CAAC;QACJ,CAAC;QACD,IAAI,MAAM,CAAC,gBAAgB,CAAC,mBAAmB,EAAE,yBAAyB,CAAC,EAAE,CAAC;YAC5E,OAAO;gBACL,SAAS,EAAE,IAAI;gBACf,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,wBAAwB,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,qBAAqB,EAAE,CAAC,IAAI,CAAC;gBACjG,wBAAwB,EAAE,KAAK;aAChC,CAAC;QACJ,CAAC;QACD,IAAI,MAAM,CAAC,gBAAgB,CAAC,mBAAmB,EAAE,WAAW,CAAC,EAAE,CAAC;YAC9D,IAAI,CAAC,GAAG,IAAA,oBAAS,EAAC,IAAI,EAAE,IAAI,CAAC,KAAK,EAAE,iBAAiB,CAAQ,CAAC;YAC9D,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,mBAAmB,CAAC,CAAC;YACpC,IAAI,KAAK,GAAG,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,SAAS,CAAC,CAAC;YACtC,OAAO,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,wBAAwB,EAAE,IAAI,EAAE,CAAC;QACpE,CAAC;QACD,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC;IAC9B,CAAC;CACF;AA/UD,8BA+UC;AAED,6EAA6E;AAC7E,4EAA4E;AAC5E,UAAU;AACV,SAAgB,cAAc,CAAI,KAAc;IAC9C,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QACzB,MAAM,IAAI,KAAK,CAAC,kCAAkC,CAAC,CAAC;IACtD,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AACD,SAAgB,WAAW,CAAI,KAAc;IAC3C,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QAC1B,MAAM,IAAI,KAAK,CAAC,8BAA8B,CAAC,CAAC;IAClD,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED,SAAgB,aAAa,CAC3B,KAA0B,EAC1B,YAA0B;IAE1B,IAAI,OAAO,KAAK,KAAK,WAAW,EAAE,CAAC;QACjC,OAAO,YAAY,CAAC,KAAK,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC;IACpD,CAAC;IACD,IAAI,SAAS,GAAG,YAAY,CAAC,SAAS,CAAC,KAAK,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,GAAG,EAAE,EAAE,UAAU,EAAE,KAAK,EAAE,CAAW,CAAC;IACvG,IAAI,UAAU,GAAI,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAA2B,CAAC,UAA8B,CAAC;IACrG,OAAO,UAAU,CAAC,SAAS,CAAC,CAAC,CAAuB,CAAC;AACvD,CAAC","sourcesContent":["import type { NodePath } from '@babel/traverse';\nimport type * as Babel from '@babel/core';\nimport type { types as t } from '@babel/core';\nimport type State from './state';\nimport dependencySatisfies from './dependency-satisfies';\nimport appEmberSatisfies from './app-ember-satisfies';\nimport moduleExists from './module-exists';\nimport getConfig from './get-config';\nimport assertNever from 'assert-never';\n\ntype OpValue = string | boolean | number;\n\nconst binops: { [operator: string]: any } = {\n '||': function (a: OpValue, b: OpValue) {\n return a || b;\n },\n '&&': function (a: OpValue, b: OpValue) {\n return a && b;\n },\n '|': function (a: any, b: any) {\n return a | b;\n },\n '^': function (a: any, b: any) {\n return a ^ b;\n },\n '&': function (a: any, b: any) {\n return a & b;\n },\n '==': function (a: OpValue, b: OpValue) {\n // eslint-disable-next-line eqeqeq\n return a == b;\n },\n '!=': function (a: OpValue, b: OpValue) {\n // eslint-disable-next-line eqeqeq\n return a != b;\n },\n '===': function (a: OpValue, b: OpValue) {\n return a === b;\n },\n '!==': function (a: OpValue, b: OpValue) {\n return a !== b;\n },\n '<': function (a: OpValue, b: OpValue) {\n return a < b;\n },\n '>': function (a: OpValue, b: OpValue) {\n return a > b;\n },\n '<=': function (a: OpValue, b: OpValue) {\n return a <= b;\n },\n '>=': function (a: OpValue, b: OpValue) {\n return a >= b;\n },\n '<<': function (a: any, b: any) {\n return a << b;\n },\n '>>': function (a: any, b: any) {\n return a >> b;\n },\n '>>>': function (a: any, b: any) {\n return a >>> b;\n },\n '+': function (a: any, b: any) {\n return a + b;\n },\n '-': function (a: any, b: any) {\n return a - b;\n },\n '*': function (a: any, b: any) {\n return a * b;\n },\n '/': function (a: any, b: any) {\n return a / b;\n },\n '%': function (a: any, b: any) {\n return a % b;\n },\n '??': function (a: any, b: any) {\n if (a === null || a === undefined) {\n return b;\n }\n return a;\n },\n};\n\nconst unops: { [operator: string]: any } = {\n '-': function (a: OpValue) {\n return -a;\n },\n '+': function (a: OpValue) {\n return +a;\n },\n '~': function (a: OpValue) {\n return ~a;\n },\n '!': function (a: OpValue) {\n return !a;\n },\n void: function () {\n return undefined;\n },\n};\n\nexport interface ConfidentResult {\n confident: true;\n value: any;\n hasRuntimeImplementation: boolean;\n}\n\nexport interface UnknownResult {\n confident: false;\n}\n\nexport type EvaluateResult = ConfidentResult | UnknownResult;\n\nexport interface EvaluationEnv {\n knownPaths?: Map<NodePath, EvaluateResult>;\n locals?: { [localVar: string]: any };\n state?: State;\n}\n\nexport class Evaluator {\n private knownPaths: Map<NodePath, EvaluateResult>;\n private locals: { [localVar: string]: any };\n private state: State | undefined;\n\n constructor(env: EvaluationEnv = {}) {\n this.knownPaths = env.knownPaths || new Map();\n this.locals = env.locals || {};\n this.state = env.state;\n }\n\n evaluateMember(\n path: NodePath<t.MemberExpression | t.OptionalMemberExpression>,\n optionalChain: boolean\n ): EvaluateResult {\n let propertyPath = assertNotArray(path.get('property'));\n let property: EvaluateResult;\n if (path.node.computed) {\n property = this.evaluate(propertyPath);\n } else {\n property = this.evaluateKey(propertyPath);\n }\n if (property.confident) {\n let objectPath = path.get('object');\n let object = this.evaluate(objectPath);\n if (object.confident) {\n let confidentObject = object;\n let confidentProperty = property;\n return {\n confident: true,\n get value() {\n if (optionalChain) {\n return confidentObject.value != null\n ? confidentObject.value[confidentProperty.value]\n : confidentObject.value;\n } else {\n return confidentObject.value[confidentProperty.value];\n }\n },\n hasRuntimeImplementation:\n confidentObject.hasRuntimeImplementation || confidentProperty.hasRuntimeImplementation,\n };\n }\n }\n return { confident: false };\n }\n\n evaluateKey(path: NodePath): EvaluateResult {\n let first = this.evaluate(path);\n if (first.confident) {\n return first;\n }\n if (path.isIdentifier()) {\n return { confident: true, value: path.node.name, hasRuntimeImplementation: false };\n }\n return { confident: false };\n }\n\n evaluate(path: NodePath): EvaluateResult {\n let known = this.knownPaths.get(path);\n if (known) {\n return known;\n }\n let result = this.realEvaluate(path);\n return result;\n }\n\n private realEvaluate(path: NodePath): EvaluateResult {\n if (path.isMemberExpression()) {\n return this.evaluateMember(path, false);\n }\n\n // Here we are glossing over the lack of a real OptionalMemberExpression type\n // in our @babel/traverse typings.\n if (path.node.type === 'OptionalMemberExpression') {\n return this.evaluateMember(path as NodePath<t.OptionalMemberExpression>, true);\n }\n\n if (path.isStringLiteral()) {\n return { confident: true, value: path.node.value, hasRuntimeImplementation: false };\n }\n\n if (path.isNumericLiteral()) {\n return { confident: true, value: path.node.value, hasRuntimeImplementation: false };\n }\n\n if (path.isBooleanLiteral()) {\n return { confident: true, value: path.node.value, hasRuntimeImplementation: false };\n }\n\n if (path.isNullLiteral()) {\n return { confident: true, value: null, hasRuntimeImplementation: false };\n }\n\n if (path.isIdentifier() && path.node.name === 'undefined') {\n return { confident: true, value: undefined, hasRuntimeImplementation: false };\n }\n\n if (path.isObjectExpression()) {\n let props = assertArray(path.get('properties')).map(p => {\n if (p.isSpreadElement()) {\n return [{ confident: false }, { confident: false }];\n }\n let key = assertNotArray(p.get('key'));\n let keyEvalValue = this.evaluateKey(key);\n let value = assertNotArray(p.get('value'));\n let valueEvalValue = this.evaluate(value);\n return [keyEvalValue, valueEvalValue];\n });\n for (let [k, v] of props) {\n if (!k.confident || !v.confident) {\n return { confident: false };\n }\n }\n let confidentProps = props as ConfidentResult[][];\n return {\n confident: true,\n get value() {\n let result: any = {};\n for (let [k, v] of confidentProps) {\n result[k.value] = v.value;\n }\n return result;\n },\n hasRuntimeImplementation: confidentProps.some(\n ([key, value]) => key.hasRuntimeImplementation || value.hasRuntimeImplementation\n ),\n };\n }\n\n if (path.isArrayExpression()) {\n let elements = path.get('elements').map(element => {\n return this.evaluate(element as NodePath);\n });\n if (elements.every(element => element.confident)) {\n let confidentElements = elements as ConfidentResult[];\n return {\n confident: true,\n get value() {\n return confidentElements.map(element => element.value);\n },\n hasRuntimeImplementation: confidentElements.some(el => el.hasRuntimeImplementation),\n };\n }\n }\n\n if (path.isAssignmentExpression()) {\n let leftPath = path.get('left');\n if (leftPath.isIdentifier()) {\n let rightPath = path.get('right');\n let right = this.evaluate(rightPath);\n if (right.confident) {\n this.locals[leftPath.node.name] = right.value;\n return right;\n }\n }\n }\n\n if (path.isCallExpression()) {\n let result = this.maybeEvaluateRuntimeConfig(path);\n if (result.confident) {\n return result;\n }\n result = this.evaluateMacroCall(path);\n if (result.confident) {\n return result;\n }\n }\n\n if (path.isLogicalExpression() || path.isBinaryExpression()) {\n let operator = path.node.operator as string;\n if (binops[operator]) {\n let leftOperand = this.evaluate(path.get('left') as NodePath<t.Expression>);\n if (leftOperand.confident) {\n let rightOperand = this.evaluate(path.get('right') as NodePath<t.Expression>);\n if (leftOperand.confident && rightOperand.confident) {\n let value = binops[operator](leftOperand.value, rightOperand.value);\n return {\n confident: true,\n value,\n hasRuntimeImplementation: leftOperand.hasRuntimeImplementation || rightOperand.hasRuntimeImplementation,\n };\n }\n }\n }\n return { confident: false };\n }\n\n if (path.isConditionalExpression()) {\n let test = this.evaluate(path.get('test'));\n if (test.confident) {\n let result = test.value ? this.evaluate(path.get('consequent')) : this.evaluate(path.get('alternate'));\n if (result.confident) {\n return {\n confident: true,\n value: result.value,\n hasRuntimeImplementation: test.hasRuntimeImplementation || result.hasRuntimeImplementation,\n };\n }\n }\n }\n\n if (path.isUnaryExpression()) {\n let operator = path.node.operator as string;\n if (unops[operator]) {\n let operand = this.evaluate(path.get('argument') as NodePath<t.Expression>);\n if (operand.confident) {\n let value = unops[operator](operand.value);\n return { confident: true, value, hasRuntimeImplementation: operand.hasRuntimeImplementation };\n }\n }\n return { confident: false };\n }\n\n if (path.isIdentifier()) {\n if (!this.locals.hasOwnProperty(path.node.name)) {\n return { confident: false };\n }\n return { confident: true, value: this.locals[path.node.name], hasRuntimeImplementation: false };\n }\n\n if (path.isSequenceExpression()) {\n let expressions = path.get('expressions');\n let lastExpression = expressions[expressions.length - 1];\n if (lastExpression) {\n // The value of a sequence expression is only the value of the last\n // expression it contains, all the rest are ignored.\n return this.evaluate(lastExpression);\n }\n }\n\n return { confident: false };\n }\n\n // This handles the presence of our runtime-mode getConfig functions. We want\n // to designate them as { confident: true }, because it's important that we\n // give feedback even in runtime-mode if the developer is trying to pass\n // non-static arguments somewhere they're not supposed to. But we don't\n // actually want to calculate their value here because that has been deferred\n // to runtime. That's why we've made `value` lazy. It lets us check the\n // confidence without actually forcing the value.\n private maybeEvaluateRuntimeConfig(path: NodePath<t.CallExpression>): EvaluateResult {\n if (!this.state) {\n return { confident: false };\n }\n let callee = path.get('callee');\n if (callee.isIdentifier()) {\n // Does the identifier refer to our runtime config?\n if (callee.referencesImport(this.state.pathToOurAddon('runtime'), 'config')) {\n return {\n confident: true,\n get value() {\n throw new Error(`bug in @embroider/macros: didn't expect to need to evaluate this value`);\n },\n hasRuntimeImplementation: true,\n };\n }\n }\n return { confident: false };\n }\n\n evaluateMacroCall(path: NodePath<t.CallExpression>): EvaluateResult {\n if (!this.state) {\n return { confident: false };\n }\n let callee = path.get('callee');\n if (callee.referencesImport('@embroider/macros', 'appEmberSatisfies')) {\n return { confident: true, value: appEmberSatisfies(path, this.state), hasRuntimeImplementation: false };\n }\n if (callee.referencesImport('@embroider/macros', 'dependencySatisfies')) {\n return { confident: true, value: dependencySatisfies(path, this.state), hasRuntimeImplementation: false };\n }\n if (callee.referencesImport('@embroider/macros', 'moduleExists')) {\n return { confident: true, value: moduleExists(path, this.state), hasRuntimeImplementation: false };\n }\n if (callee.referencesImport('@embroider/macros', 'getConfig')) {\n return { confident: true, value: getConfig(path, this.state, 'package'), hasRuntimeImplementation: false };\n }\n if (callee.referencesImport('@embroider/macros', 'getOwnConfig')) {\n return { confident: true, value: getConfig(path, this.state, 'own'), hasRuntimeImplementation: false };\n }\n if (callee.referencesImport('@embroider/macros', 'getGlobalConfig')) {\n // Check for getGlobalConfig().fastboot.isRunning, which is the only pattern in use where config actually needs to have a runtime implementation.\n // For compatibility reasons we will continue to support that. All other cases of macro configs are static now.\n let maybeFastbootMemberExpression = path.parentPath;\n if (\n maybeFastbootMemberExpression.isMemberExpression() ||\n maybeFastbootMemberExpression.isOptionalMemberExpression()\n ) {\n let maybeFastbootProperty = maybeFastbootMemberExpression.isMemberExpression()\n ? maybeFastbootMemberExpression.get('property')\n : maybeFastbootMemberExpression.isOptionalMemberExpression()\n ? maybeFastbootMemberExpression.get('property')\n : assertNever(maybeFastbootMemberExpression);\n\n if (maybeFastbootProperty.isIdentifier() && maybeFastbootProperty.node.name === 'fastboot') {\n return {\n confident: true,\n value: getConfig(path, this.state, 'getGlobalConfig'),\n hasRuntimeImplementation: true,\n };\n }\n }\n\n return {\n confident: true,\n value: getConfig(path, this.state, 'getGlobalConfig'),\n hasRuntimeImplementation: false,\n };\n }\n if (callee.referencesImport('@embroider/macros', 'isDevelopingApp')) {\n return {\n confident: true,\n value: Boolean(\n this.state.opts.appPackageRoot &&\n this.state.opts.isDevelopingPackageRoots.includes(this.state.opts.appPackageRoot)\n ),\n hasRuntimeImplementation: false,\n };\n }\n if (callee.referencesImport('@embroider/macros', 'isDevelopingThisPackage')) {\n return {\n confident: true,\n value: this.state.opts.isDevelopingPackageRoots.includes(this.state.originalOwningPackage().root),\n hasRuntimeImplementation: false,\n };\n }\n if (callee.referencesImport('@embroider/macros', 'isTesting')) {\n let g = getConfig(path, this.state, 'getGlobalConfig') as any;\n let e = g && g['@embroider/macros'];\n let value = Boolean(e && e.isTesting);\n return { confident: true, value, hasRuntimeImplementation: true };\n }\n return { confident: false };\n }\n}\n\n// these next two functions are here because the type definitions we're using\n// don't seem to know exactly which NodePath properties are arrays and which\n// aren't.\nexport function assertNotArray<T>(input: T | T[]): T {\n if (Array.isArray(input)) {\n throw new Error(`bug: not supposed to be an array`);\n }\n return input;\n}\nexport function assertArray<T>(input: T | T[]): T[] {\n if (!Array.isArray(input)) {\n throw new Error(`bug: supposed to be an array`);\n }\n return input;\n}\n\nexport function buildLiterals(\n value: unknown | undefined,\n babelContext: typeof Babel\n): t.Identifier | t.ObjectExpression {\n if (typeof value === 'undefined') {\n return babelContext.types.identifier('undefined');\n }\n let statement = babelContext.parseSync(`a(${JSON.stringify(value)})`, { configFile: false }) as t.File;\n let expression = (statement.program.body[0] as t.ExpressionStatement).expression as t.CallExpression;\n return expression.arguments[0] as t.ObjectExpression;\n}\n"]}
|
|
@@ -6,3 +6,4 @@ export type Mode = 'own' | 'getGlobalConfig' | 'package';
|
|
|
6
6
|
export default function getConfig(path: NodePath<t.CallExpression>, state: State, mode: Mode): unknown;
|
|
7
7
|
export declare function insertConfig(path: NodePath<t.CallExpression>, state: State, mode: Mode, context: typeof Babel): void;
|
|
8
8
|
export declare function inlineRuntimeConfig(path: NodePath<t.FunctionDeclaration>, state: State, context: typeof Babel): void;
|
|
9
|
+
//# sourceMappingURL=get-config.d.ts.map
|
|
@@ -8,3 +8,4 @@ export interface MacroCondition {
|
|
|
8
8
|
}
|
|
9
9
|
export declare function identifyMacroConditionPath(path: NodePath<t.IfStatement | t.ConditionalExpression>): MacroCondition | false;
|
|
10
10
|
export default function macroCondition(macro: MacroCondition, state: State): void;
|
|
11
|
+
//# sourceMappingURL=macro-condition.d.ts.map
|
|
@@ -2,3 +2,4 @@ import type { NodePath } from '@babel/traverse';
|
|
|
2
2
|
import type { types as t } from '@babel/core';
|
|
3
3
|
import type State from './state';
|
|
4
4
|
export default function moduleExists(path: NodePath<t.CallExpression>, state: State): boolean;
|
|
5
|
+
//# sourceMappingURL=module-exists.d.ts.map
|
package/src/babel/state.d.ts
CHANGED
package/src/babel.d.ts
CHANGED
|
@@ -1,2 +1,3 @@
|
|
|
1
1
|
import type { RewrittenPackageCache } from '@embroider/shared-internals';
|
|
2
2
|
export default function dependencySatisfies(node: any, baseDir: string | undefined, moduleName: string, packageCache: RewrittenPackageCache): boolean;
|
|
3
|
+
//# sourceMappingURL=dependency-satisfies.d.ts.map
|
|
@@ -2,3 +2,4 @@ import type { RewrittenPackageCache } from '@embroider/shared-internals';
|
|
|
2
2
|
export default function getConfig(node: any, userConfigs: {
|
|
3
3
|
[packageRoot: string]: unknown;
|
|
4
4
|
}, baseDir: string | undefined, moduleName: string, own: boolean, packageCache: RewrittenPackageCache): any;
|
|
5
|
+
//# sourceMappingURL=get-config.d.ts.map
|
package/src/glimmer/literal.d.ts
CHANGED
|
@@ -4,3 +4,4 @@ export declare function macroIfMustache(node: any, builders: any): any;
|
|
|
4
4
|
export declare function macroUnlessBlock(node: any): any;
|
|
5
5
|
export declare function macroUnlessExpression(node: any, builders: any): any;
|
|
6
6
|
export declare function macroUnlessMustache(node: any, builders: any): any;
|
|
7
|
+
//# sourceMappingURL=macro-condition.d.ts.map
|
package/src/index.d.ts
CHANGED
package/src/macros-config.d.ts
CHANGED
package/src/node.d.ts
CHANGED