@babel/traverse 8.0.0-alpha.16 → 8.0.0-alpha.17

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/lib/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../src/path/lib/virtual-types.ts","../src/path/lib/virtual-types-validator.ts","../src/visitors.ts","../src/scope/lib/renamer.ts","../src/scope/binding.ts","../src/cache.ts","../src/scope/index.ts","../src/path/ancestry.ts","../src/path/inference/util.ts","../src/path/inference/inferer-reference.ts","../src/path/inference/inferers.ts","../src/path/inference/index.ts","../src/path/lib/removal-hooks.ts","../src/path/removal.ts","../src/path/modification.ts","../src/path/replacement.ts","../src/path/evaluation.ts","../src/path/conversion.ts","../src/path/introspection.ts","../src/path/family.ts","../src/path/comments.ts","../src/path/index.ts","../src/context.ts","../src/traverse-node.ts","../src/path/context.ts","../src/hub.ts","../src/index.ts"],"sourcesContent":["import type * as t from \"@babel/types\";\n\nexport interface VirtualTypeAliases {\n BindingIdentifier: t.Identifier;\n BlockScoped: t.Node;\n ExistentialTypeParam: t.ExistsTypeAnnotation;\n Expression: t.Expression;\n Flow: t.Flow | t.ImportDeclaration | t.ExportDeclaration | t.ImportSpecifier;\n ForAwaitStatement: t.ForOfStatement;\n Generated: t.Node;\n NumericLiteralTypeAnnotation: t.NumberLiteralTypeAnnotation;\n Pure: t.Node;\n Referenced: t.Node;\n ReferencedIdentifier: t.Identifier | t.JSXIdentifier;\n ReferencedMemberExpression: t.MemberExpression;\n RestProperty: t.RestElement;\n Scope: t.Scopable | t.Pattern;\n SpreadProperty: t.RestElement;\n Statement: t.Statement;\n User: t.Node;\n Var: t.VariableDeclaration;\n}\n\ntype VirtualTypeMapping = readonly (t.Node[\"type\"] | keyof t.Aliases)[] | null;\n\nexport const ReferencedIdentifier: VirtualTypeMapping = [\n \"Identifier\",\n \"JSXIdentifier\",\n] as const;\n\nexport const ReferencedMemberExpression: VirtualTypeMapping = [\n \"MemberExpression\",\n] as const;\n\nexport const BindingIdentifier: VirtualTypeMapping = [\"Identifier\"] as const;\n\nexport const Statement: VirtualTypeMapping = [\"Statement\"] as const;\n\nexport const Expression: VirtualTypeMapping = [\"Expression\"] as const;\n\nexport const Scope: VirtualTypeMapping = [\"Scopable\", \"Pattern\"] as const;\n\nexport const Referenced: VirtualTypeMapping = null;\n\nexport const BlockScoped: VirtualTypeMapping = null;\n\nexport const Var: VirtualTypeMapping = [\"VariableDeclaration\"];\n\nexport const User: VirtualTypeMapping = null;\n\nexport const Generated: VirtualTypeMapping = null;\n\nexport const Pure: VirtualTypeMapping = null;\n\nexport const Flow: VirtualTypeMapping = [\n \"Flow\",\n \"ImportDeclaration\",\n \"ExportDeclaration\",\n \"ImportSpecifier\",\n] as const;\n\n// TODO: 7.0 Backwards Compat\nexport const RestProperty: VirtualTypeMapping = [\"RestElement\"] as const;\n\nexport const SpreadProperty: VirtualTypeMapping = [\"RestElement\"] as const;\n\nexport const ExistentialTypeParam: VirtualTypeMapping = [\n \"ExistsTypeAnnotation\",\n] as const;\n\nexport const NumericLiteralTypeAnnotation: VirtualTypeMapping = [\n \"NumberLiteralTypeAnnotation\",\n] as const;\n\nexport const ForAwaitStatement: VirtualTypeMapping = [\n \"ForOfStatement\",\n] as const;\n","import type NodePath from \"../index.ts\";\nimport {\n isBinding,\n isBlockScoped as nodeIsBlockScoped,\n isExportDeclaration,\n isExpression as nodeIsExpression,\n isFlow as nodeIsFlow,\n isForStatement,\n isForXStatement,\n isIdentifier,\n isImportDeclaration,\n isImportSpecifier,\n isJSXIdentifier,\n isJSXMemberExpression,\n isMemberExpression,\n isRestElement as nodeIsRestElement,\n isReferenced as nodeIsReferenced,\n isScope as nodeIsScope,\n isStatement as nodeIsStatement,\n isVar as nodeIsVar,\n isVariableDeclaration,\n react,\n isForOfStatement,\n} from \"@babel/types\";\nimport type * as t from \"@babel/types\";\nconst { isCompatTag } = react;\nimport type { VirtualTypeAliases } from \"./virtual-types.ts\";\n\ntype Opts<Obj> = Partial<{\n [Prop in keyof Obj]: Obj[Prop] extends t.Node\n ? t.Node\n : Obj[Prop] extends t.Node[]\n ? t.Node[]\n : Obj[Prop];\n}>;\n\nexport interface VirtualTypeNodePathValidators {\n isBindingIdentifier(\n this: NodePath,\n opts?: Opts<VirtualTypeAliases[\"BindingIdentifier\"]>,\n ): this is NodePath<VirtualTypeAliases[\"BindingIdentifier\"]>;\n isBlockScoped(opts?: Opts<VirtualTypeAliases[\"BlockScoped\"]>): boolean;\n /**\n * @deprecated\n */\n isExistentialTypeParam(\n this: NodePath,\n opts?: Opts<VirtualTypeAliases[\"ExistentialTypeParam\"]>,\n ): this is NodePath<VirtualTypeAliases[\"ExistentialTypeParam\"]>;\n isExpression(\n this: NodePath,\n opts?: Opts<VirtualTypeAliases[\"Expression\"]>,\n ): this is NodePath<t.Expression>;\n isFlow(\n this: NodePath,\n opts?: Opts<VirtualTypeAliases[\"Flow\"]>,\n ): this is NodePath<t.Flow>;\n isForAwaitStatement(\n this: NodePath,\n opts?: Opts<VirtualTypeAliases[\"ForAwaitStatement\"]>,\n ): this is NodePath<VirtualTypeAliases[\"ForAwaitStatement\"]>;\n isGenerated(opts?: VirtualTypeAliases[\"Generated\"]): boolean;\n /**\n * @deprecated\n */\n isNumericLiteralTypeAnnotation(\n opts?: VirtualTypeAliases[\"NumericLiteralTypeAnnotation\"],\n ): void;\n isPure(opts?: VirtualTypeAliases[\"Pure\"]): boolean;\n isReferenced(opts?: VirtualTypeAliases[\"Referenced\"]): boolean;\n isReferencedIdentifier(\n this: NodePath,\n opts?: Opts<VirtualTypeAliases[\"ReferencedIdentifier\"]>,\n ): this is NodePath<VirtualTypeAliases[\"ReferencedIdentifier\"]>;\n isReferencedMemberExpression(\n this: NodePath,\n opts?: Opts<VirtualTypeAliases[\"ReferencedMemberExpression\"]>,\n ): this is NodePath<VirtualTypeAliases[\"ReferencedMemberExpression\"]>;\n isRestProperty(\n this: NodePath,\n opts?: Opts<VirtualTypeAliases[\"RestProperty\"]>,\n ): this is NodePath<t.RestProperty>;\n isScope(\n this: NodePath,\n opts?: Opts<VirtualTypeAliases[\"Scope\"]>,\n ): this is NodePath<VirtualTypeAliases[\"Scope\"]>;\n isSpreadProperty(\n this: NodePath,\n opts?: Opts<VirtualTypeAliases[\"SpreadProperty\"]>,\n ): this is NodePath<t.SpreadProperty>;\n isStatement(\n this: NodePath,\n opts?: Opts<VirtualTypeAliases[\"Statement\"]>,\n ): this is NodePath<t.Statement>;\n isUser(opts?: VirtualTypeAliases[\"User\"]): boolean;\n isVar(\n this: NodePath,\n opts?: Opts<VirtualTypeAliases[\"Var\"]>,\n ): this is NodePath<VirtualTypeAliases[\"Var\"]>;\n}\n\nexport function isReferencedIdentifier(this: NodePath, opts?: any): boolean {\n const { node, parent } = this;\n if (!isIdentifier(node, opts) && !isJSXMemberExpression(parent, opts)) {\n if (isJSXIdentifier(node, opts)) {\n if (isCompatTag(node.name)) return false;\n } else {\n // not a JSXIdentifier or an Identifier\n return false;\n }\n }\n\n // check if node is referenced\n return nodeIsReferenced(node, parent, this.parentPath.parent);\n}\n\nexport function isReferencedMemberExpression(this: NodePath): boolean {\n const { node, parent } = this;\n return isMemberExpression(node) && nodeIsReferenced(node, parent);\n}\n\nexport function isBindingIdentifier(this: NodePath): boolean {\n const { node, parent } = this;\n const grandparent = this.parentPath.parent;\n return isIdentifier(node) && isBinding(node, parent, grandparent);\n}\n\nexport function isStatement(this: NodePath): boolean {\n const { node, parent } = this;\n if (nodeIsStatement(node)) {\n if (isVariableDeclaration(node)) {\n if (isForXStatement(parent, { left: node })) return false;\n if (isForStatement(parent, { init: node })) return false;\n }\n\n return true;\n } else {\n return false;\n }\n}\n\nexport function isExpression(this: NodePath): boolean {\n if (this.isIdentifier()) {\n return this.isReferencedIdentifier();\n } else {\n return nodeIsExpression(this.node);\n }\n}\n\nexport function isScope(this: NodePath): boolean {\n return nodeIsScope(this.node, this.parent);\n}\n\nexport function isReferenced(this: NodePath): boolean {\n return nodeIsReferenced(this.node, this.parent);\n}\n\nexport function isBlockScoped(this: NodePath): boolean {\n return nodeIsBlockScoped(this.node);\n}\n\nexport function isVar(this: NodePath): boolean {\n return nodeIsVar(this.node);\n}\n\nexport function isUser(this: NodePath): boolean {\n return this.node && !!this.node.loc;\n}\n\nexport function isGenerated(this: NodePath): boolean {\n return !this.isUser();\n}\n\nexport function isPure(this: NodePath, constantsOnly?: boolean): boolean {\n return this.scope.isPure(this.node, constantsOnly);\n}\n\nexport function isFlow(this: NodePath): boolean {\n const { node } = this;\n if (nodeIsFlow(node)) {\n return true;\n } else if (isImportDeclaration(node)) {\n return node.importKind === \"type\" || node.importKind === \"typeof\";\n } else if (isExportDeclaration(node)) {\n return node.exportKind === \"type\";\n } else if (isImportSpecifier(node)) {\n return node.importKind === \"type\" || node.importKind === \"typeof\";\n } else {\n return false;\n }\n}\n\n// TODO: 7.0 Backwards Compat\nexport function isRestProperty(this: NodePath): boolean {\n return nodeIsRestElement(this.node) && this.parentPath?.isObjectPattern();\n}\n\nexport function isSpreadProperty(this: NodePath): boolean {\n return nodeIsRestElement(this.node) && this.parentPath?.isObjectExpression();\n}\n\nexport function isForAwaitStatement(this: NodePath): boolean {\n return isForOfStatement(this.node, { await: true });\n}\n\nif (!process.env.BABEL_8_BREAKING && !USE_ESM) {\n // eslint-disable-next-line no-restricted-globals\n exports.isExistentialTypeParam = function isExistentialTypeParam(\n this: NodePath,\n ): void {\n throw new Error(\n \"`path.isExistentialTypeParam` has been renamed to `path.isExistsTypeAnnotation()` in Babel 7.\",\n );\n };\n\n // eslint-disable-next-line no-restricted-globals\n exports.isNumericLiteralTypeAnnotation =\n function isNumericLiteralTypeAnnotation(this: NodePath): void {\n throw new Error(\n \"`path.isNumericLiteralTypeAnnotation()` has been renamed to `path.isNumberLiteralTypeAnnotation()` in Babel 7.\",\n );\n };\n}\n","import * as virtualTypes from \"./path/lib/virtual-types.ts\";\nimport * as virtualTypesValidators from \"./path/lib/virtual-types-validator.ts\";\nimport type { Node } from \"@babel/types\";\nimport {\n DEPRECATED_KEYS,\n DEPRECATED_ALIASES,\n FLIPPED_ALIAS_KEYS,\n TYPES,\n __internal__deprecationWarning as deprecationWarning,\n} from \"@babel/types\";\nimport type { ExplodedVisitor, NodePath, Visitor } from \"./index.ts\";\nimport type { ExplVisitNode, VisitNodeFunction, VisitPhase } from \"./types.ts\";\nimport { requeueComputedKeyAndDecorators } from \"./path/context.ts\";\n\ntype VIRTUAL_TYPES = keyof typeof virtualTypes;\nfunction isVirtualType(type: string): type is VIRTUAL_TYPES {\n return type in virtualTypes;\n}\nexport type VisitWrapper<S = any> = (\n stateName: string | undefined,\n visitorType: VisitPhase,\n callback: VisitNodeFunction<S, Node>,\n) => VisitNodeFunction<S, Node>;\n\nexport function isExplodedVisitor(\n visitor: Visitor,\n): visitor is ExplodedVisitor {\n // @ts-expect-error _exploded is not defined on non-exploded Visitor\n return visitor?._exploded;\n}\n\n// We need to name this function `explode$1` because otherwise rollup-plugin-dts\n// will generate a `namespace traverse { var explode: typeof explode; }` when\n// bundling @babel/traverse's index.d.ts.\n// TODO: Just call it `explode` once https://github.com/Swatinem/rollup-plugin-dts/issues/307\n// is fixed.\nexport { explode$1 as explode };\n/**\n * explode() will take a visitor object with all of the various shorthands\n * that we support, and validates & normalizes it into a common format, ready\n * to be used in traversal\n *\n * The various shorthands are:\n * * `Identifier() { ... }` -> `Identifier: { enter() { ... } }`\n * * `\"Identifier|NumericLiteral\": { ... }` -> `Identifier: { ... }, NumericLiteral: { ... }`\n * * Aliases in `@babel/types`: e.g. `Property: { ... }` -> `ObjectProperty: { ... }, ClassProperty: { ... }`\n * Other normalizations are:\n * * Visitors of virtual types are wrapped, so that they are only visited when\n * their dynamic check passes\n * * `enter` and `exit` functions are wrapped in arrays, to ease merging of\n * visitors\n */\nfunction explode$1<S>(visitor: Visitor<S>): ExplodedVisitor<S> {\n if (isExplodedVisitor(visitor)) return visitor;\n // @ts-expect-error `visitor` will be cast to ExplodedVisitor by this function\n visitor._exploded = true;\n\n // normalise pipes\n for (const nodeType of Object.keys(visitor) as (keyof Visitor)[]) {\n if (shouldIgnoreKey(nodeType)) continue;\n\n const parts: Array<string> = nodeType.split(\"|\");\n if (parts.length === 1) continue;\n\n const fns = visitor[nodeType];\n delete visitor[nodeType];\n\n for (const part of parts) {\n // @ts-expect-error part will be verified by `verify` later\n visitor[part] = fns;\n }\n }\n\n // verify data structure\n verify$1(visitor);\n\n // make sure there's no __esModule type since this is because we're using loose mode\n // and it sets __esModule to be enumerable on all modules :(\n // @ts-expect-error ESModule interop\n delete visitor.__esModule;\n\n // ensure visitors are objects\n ensureEntranceObjects(visitor);\n\n // ensure enter/exit callbacks are arrays\n ensureCallbackArrays(visitor);\n\n // add type wrappers\n for (const nodeType of Object.keys(visitor)) {\n if (shouldIgnoreKey(nodeType)) continue;\n\n if (!isVirtualType(nodeType)) continue;\n\n // wrap all the functions\n const fns = visitor[nodeType];\n for (const type of Object.keys(fns)) {\n // @ts-expect-error normalised as VisitNodeObject\n fns[type] = wrapCheck(nodeType, fns[type]);\n }\n\n // clear it from the visitor\n delete visitor[nodeType];\n\n const types = virtualTypes[nodeType];\n if (types !== null) {\n for (const type of types) {\n // merge the visitor if necessary or just put it back in\n if (visitor[type]) {\n mergePair(visitor[type], fns);\n } else {\n // @ts-expect-error Expression produces too complex union\n visitor[type] = fns;\n }\n }\n } else {\n mergePair(visitor, fns);\n }\n }\n\n // add aliases\n for (const nodeType of Object.keys(visitor) as (keyof Visitor)[]) {\n if (shouldIgnoreKey(nodeType)) continue;\n\n let aliases = FLIPPED_ALIAS_KEYS[nodeType];\n\n if (nodeType in DEPRECATED_KEYS) {\n const deprecatedKey = DEPRECATED_KEYS[nodeType];\n deprecationWarning(nodeType, deprecatedKey, \"Visitor \");\n aliases = [deprecatedKey];\n } else if (nodeType in DEPRECATED_ALIASES) {\n const deprecatedAlias =\n DEPRECATED_ALIASES[nodeType as keyof typeof DEPRECATED_ALIASES];\n deprecationWarning(nodeType, deprecatedAlias, \"Visitor \");\n aliases = FLIPPED_ALIAS_KEYS[deprecatedAlias];\n }\n\n if (!aliases) continue;\n\n const fns = visitor[nodeType];\n // clear it from the visitor\n delete visitor[nodeType];\n\n for (const alias of aliases) {\n const existing = visitor[alias];\n if (existing) {\n mergePair(existing, fns);\n } else {\n visitor[alias] = { ...fns };\n }\n }\n }\n\n for (const nodeType of Object.keys(visitor)) {\n if (shouldIgnoreKey(nodeType)) continue;\n\n ensureCallbackArrays(\n // @ts-expect-error nodeType must present in visitor after previous validations\n visitor[nodeType],\n );\n }\n\n // @ts-expect-error explosion has been performed\n return visitor as ExplodedVisitor;\n}\n\n// We need to name this function `verify$1` because otherwise rollup-plugin-dts\n// will generate a `namespace traverse { var verify: typeof verify; }` when\n// bundling @babel/traverse's index.d.ts.\n// TODO: Just call it `verify` once https://github.com/Swatinem/rollup-plugin-dts/issues/307\n// is fixed.\nexport { verify$1 as verify };\nfunction verify$1(visitor: Visitor) {\n // @ts-expect-error _verified is not defined on non-verified Visitor.\n // TODO: unify _verified and _exploded.\n if (visitor._verified) return;\n\n if (typeof visitor === \"function\") {\n throw new Error(\n \"You passed `traverse()` a function when it expected a visitor object, \" +\n \"are you sure you didn't mean `{ enter: Function }`?\",\n );\n }\n\n for (const nodeType of Object.keys(visitor) as (keyof Visitor)[]) {\n if (nodeType === \"enter\" || nodeType === \"exit\") {\n validateVisitorMethods(nodeType, visitor[nodeType]);\n }\n\n if (shouldIgnoreKey(nodeType)) continue;\n\n if (!TYPES.includes(nodeType)) {\n throw new Error(\n `You gave us a visitor for the node type ${nodeType} but it's not a valid type in @babel/traverse ${PACKAGE_JSON.version}`,\n );\n }\n\n const visitors = visitor[nodeType];\n if (typeof visitors === \"object\") {\n for (const visitorKey of Object.keys(visitors)) {\n if (visitorKey === \"enter\" || visitorKey === \"exit\") {\n // verify that it just contains functions\n validateVisitorMethods(\n `${nodeType}.${visitorKey}`,\n visitors[visitorKey],\n );\n } else {\n throw new Error(\n \"You passed `traverse()` a visitor object with the property \" +\n `${nodeType} that has the invalid property ${visitorKey}`,\n );\n }\n }\n }\n }\n\n // @ts-expect-error _verified is not defined on non-verified Visitor.\n // TODO: unify _verified and _exploded.\n visitor._verified = true;\n}\n\nfunction validateVisitorMethods(\n path: string,\n val: any,\n): asserts val is Function | Function[] {\n const fns = [].concat(val);\n for (const fn of fns) {\n if (typeof fn !== \"function\") {\n throw new TypeError(\n `Non-function found defined in ${path} with type ${typeof fn}`,\n );\n }\n }\n}\n\nexport function merge<State>(\n visitors: Visitor<State>[],\n): ExplodedVisitor<State>;\nexport function merge(\n visitors: Visitor<unknown>[],\n states?: any[],\n wrapper?: Function | null,\n): ExplodedVisitor<unknown>;\nexport function merge(\n visitors: any[],\n states: any[] = [],\n wrapper?: VisitWrapper | null,\n): ExplodedVisitor {\n const mergedVisitor: ExplodedVisitor = { _verified: true, _exploded: true };\n if (!process.env.BABEL_8_BREAKING) {\n // For compatibility with old Babel versions, we must hide _verified and _exploded.\n // Otherwise, old versions of the validator will throw sayng that `true` is not\n // a function, because it tries to validate it as a visitor.\n Object.defineProperty(mergedVisitor, \"_exploded\", { enumerable: false });\n Object.defineProperty(mergedVisitor, \"_verified\", { enumerable: false });\n }\n\n for (let i = 0; i < visitors.length; i++) {\n const visitor = explode$1(visitors[i]);\n const state = states[i];\n\n let topVisitor: ExplVisitNode<unknown, Node> = visitor;\n if (state || wrapper) {\n topVisitor = wrapWithStateOrWrapper(topVisitor, state, wrapper);\n }\n mergePair(mergedVisitor, topVisitor);\n\n for (const key of Object.keys(visitor) as (keyof ExplodedVisitor)[]) {\n if (shouldIgnoreKey(key)) continue;\n\n let typeVisitor = visitor[key];\n\n // if we have state or wrapper then overload the callbacks to take it\n if (state || wrapper) {\n typeVisitor = wrapWithStateOrWrapper(typeVisitor, state, wrapper);\n }\n\n const nodeVisitor = (mergedVisitor[key] ||= {});\n mergePair(nodeVisitor, typeVisitor);\n }\n }\n\n return mergedVisitor;\n}\n\nfunction wrapWithStateOrWrapper<State>(\n oldVisitor: ExplVisitNode<State, Node>,\n state: State | null,\n wrapper?: VisitWrapper<State> | null,\n): ExplVisitNode<State, Node> {\n const newVisitor: ExplVisitNode<State, Node> = {};\n\n for (const phase of [\"enter\", \"exit\"] as VisitPhase[]) {\n let fns = oldVisitor[phase];\n\n // not an enter/exit array of callbacks\n if (!Array.isArray(fns)) continue;\n\n fns = fns.map(function (fn) {\n let newFn = fn;\n\n if (state) {\n newFn = function (path: NodePath) {\n fn.call(state, path, state);\n };\n }\n\n if (wrapper) {\n // @ts-expect-error Fixme: actually PluginPass.key (aka pluginAlias)?\n newFn = wrapper(state?.key, phase, newFn);\n }\n\n // Override toString in case this function is printed, we want to print the wrapped function, same as we do in `wrapCheck`\n if (newFn !== fn) {\n newFn.toString = () => fn.toString();\n }\n\n return newFn;\n });\n\n newVisitor[phase] = fns;\n }\n\n return newVisitor;\n}\n\nfunction ensureEntranceObjects(obj: Visitor) {\n for (const key of Object.keys(obj) as (keyof Visitor)[]) {\n if (shouldIgnoreKey(key)) continue;\n\n const fns = obj[key];\n if (typeof fns === \"function\") {\n // @ts-expect-error: Expression produces a union type that is too complex to represent.\n obj[key] = { enter: fns };\n }\n }\n}\n\nfunction ensureCallbackArrays(obj: Visitor) {\n if (obj.enter && !Array.isArray(obj.enter)) obj.enter = [obj.enter];\n if (obj.exit && !Array.isArray(obj.exit)) obj.exit = [obj.exit];\n}\n\nfunction wrapCheck(nodeType: VIRTUAL_TYPES, fn: Function) {\n const fnKey = `is${nodeType}`;\n // @ts-expect-error we know virtualTypesValidators will contain `fnKey`, but TS doesn't\n const validator = virtualTypesValidators[fnKey];\n const newFn = function (this: unknown, path: NodePath) {\n if (validator.call(path)) {\n return fn.apply(this, arguments);\n }\n };\n newFn.toString = () => fn.toString();\n return newFn;\n}\n\nfunction shouldIgnoreKey(key: string): key is\n | `_${string}` // ` // Comment to fix syntax highlighting in vscode\n | \"enter\"\n | \"exit\"\n | \"shouldSkip\"\n | \"denylist\"\n | \"noScope\"\n | \"skipKeys\"\n | \"blacklist\" {\n // internal/hidden key\n if (key[0] === \"_\") return true;\n\n // ignore function keys\n if (key === \"enter\" || key === \"exit\" || key === \"shouldSkip\") return true;\n\n // ignore other options\n if (key === \"denylist\" || key === \"noScope\" || key === \"skipKeys\") {\n return true;\n }\n\n if (!process.env.BABEL_8_BREAKING) {\n if (key === \"blacklist\") {\n return true;\n }\n }\n\n return false;\n}\n\n/*\nfunction mergePair(\n dest: ExplVisitNode<unknown, Node>,\n src: ExplVisitNode<unknown, Node>,\n);\n*/\nfunction mergePair(dest: any, src: any) {\n for (const phase of [\"enter\", \"exit\"] as VisitPhase[]) {\n if (!src[phase]) continue;\n dest[phase] = [].concat(dest[phase] || [], src[phase]);\n }\n}\n\n// environmentVisitor should be used when traversing the whole class and not for specific class elements/methods.\n// For perf reasons, the environmentVisitor might be traversed with `{ noScope: true }`, which means `path.scope` is undefined.\n// Avoid using `path.scope` here\nconst _environmentVisitor: Visitor = {\n FunctionParent(path) {\n // arrows are not skipped because they inherit the context.\n if (path.isArrowFunctionExpression()) return;\n\n path.skip();\n if (path.isMethod()) {\n if (\n !process.env.BABEL_8_BREAKING &&\n !path.requeueComputedKeyAndDecorators\n ) {\n // See https://github.com/babel/babel/issues/16694\n requeueComputedKeyAndDecorators.call(path);\n } else {\n path.requeueComputedKeyAndDecorators();\n }\n }\n },\n Property(path) {\n if (path.isObjectProperty()) return;\n path.skip();\n if (\n !process.env.BABEL_8_BREAKING &&\n !path.requeueComputedKeyAndDecorators\n ) {\n // See https://github.com/babel/babel/issues/16694\n requeueComputedKeyAndDecorators.call(path);\n } else {\n path.requeueComputedKeyAndDecorators();\n }\n },\n};\n\nexport function environmentVisitor<S>(visitor: Visitor<S>): Visitor<S> {\n return merge([_environmentVisitor, visitor]);\n}\n","import type Binding from \"../binding.ts\";\nimport * as t from \"@babel/types\";\nimport type { NodePath, Visitor } from \"../../index.ts\";\nimport { traverseNode } from \"../../traverse-node.ts\";\nimport { explode } from \"../../visitors.ts\";\nimport { getAssignmentIdentifiers, type Identifier } from \"@babel/types\";\nimport { requeueComputedKeyAndDecorators } from \"../../path/context.ts\";\n\nconst renameVisitor: Visitor<Renamer> = {\n ReferencedIdentifier({ node }, state) {\n if (node.name === state.oldName) {\n node.name = state.newName;\n }\n },\n\n Scope(path, state) {\n if (\n !path.scope.bindingIdentifierEquals(\n state.oldName,\n state.binding.identifier,\n )\n ) {\n path.skip();\n if (path.isMethod()) {\n if (\n !process.env.BABEL_8_BREAKING &&\n !path.requeueComputedKeyAndDecorators\n ) {\n // See https://github.com/babel/babel/issues/16694\n requeueComputedKeyAndDecorators.call(path);\n } else {\n path.requeueComputedKeyAndDecorators();\n }\n }\n }\n },\n\n ObjectProperty({ node, scope }, state) {\n const { name } = node.key as Identifier;\n if (\n node.shorthand &&\n // In destructuring the identifier is already renamed by the\n // AssignmentExpression|Declaration|VariableDeclarator visitor,\n // while in object literals it's renamed later by the\n // ReferencedIdentifier visitor.\n (name === state.oldName || name === state.newName) &&\n // Ignore shadowed bindings\n scope.getBindingIdentifier(name) === state.binding.identifier\n ) {\n node.shorthand = false;\n if (!process.env.BABEL_8_BREAKING) {\n if (node.extra?.shorthand) node.extra.shorthand = false;\n }\n }\n },\n\n \"AssignmentExpression|Declaration|VariableDeclarator\"(\n path: NodePath<\n t.AssignmentExpression | t.Declaration | t.VariableDeclarator\n >,\n state,\n ) {\n if (path.isVariableDeclaration()) return;\n const ids = path.isAssignmentExpression()\n ? // See https://github.com/babel/babel/issues/16694\n getAssignmentIdentifiers(path.node)\n : path.getOuterBindingIdentifiers();\n\n for (const name in ids) {\n if (name === state.oldName) ids[name].name = state.newName;\n }\n },\n};\n\nexport default class Renamer {\n constructor(binding: Binding, oldName: string, newName: string) {\n this.newName = newName;\n this.oldName = oldName;\n this.binding = binding;\n }\n\n declare oldName: string;\n declare newName: string;\n declare binding: Binding;\n\n maybeConvertFromExportDeclaration(parentDeclar: NodePath) {\n const maybeExportDeclar = parentDeclar.parentPath;\n\n if (!maybeExportDeclar.isExportDeclaration()) {\n return;\n }\n\n if (maybeExportDeclar.isExportDefaultDeclaration()) {\n const { declaration } = maybeExportDeclar.node;\n if (t.isDeclaration(declaration) && !declaration.id) {\n return;\n }\n }\n\n if (maybeExportDeclar.isExportAllDeclaration()) {\n return;\n }\n\n maybeExportDeclar.splitExportDeclaration();\n }\n\n maybeConvertFromClassFunctionDeclaration(path: NodePath) {\n return path; // TODO\n\n // // retain the `name` of a class/function declaration\n\n // if (!path.isFunctionDeclaration() && !path.isClassDeclaration()) return;\n // if (this.binding.kind !== \"hoisted\") return;\n\n // path.node.id = identifier(this.oldName);\n // path.node._blockHoist = 3;\n\n // path.replaceWith(\n // variableDeclaration(\"let\", [\n // variableDeclarator(identifier(this.newName), toExpression(path.node)),\n // ]),\n // );\n }\n\n maybeConvertFromClassFunctionExpression(path: NodePath) {\n return path; // TODO\n\n // // retain the `name` of a class/function expression\n\n // if (!path.isFunctionExpression() && !path.isClassExpression()) return;\n // if (this.binding.kind !== \"local\") return;\n\n // path.node.id = identifier(this.oldName);\n\n // this.binding.scope.parent.push({\n // id: identifier(this.newName),\n // });\n\n // path.replaceWith(\n // assignmentExpression(\"=\", identifier(this.newName), path.node),\n // );\n }\n\n rename(/* Babel 7 - block?: t.Pattern | t.Scopable */) {\n const { binding, oldName, newName } = this;\n const { scope, path } = binding;\n\n const parentDeclar = path.find(\n path =>\n path.isDeclaration() ||\n path.isFunctionExpression() ||\n path.isClassExpression(),\n );\n if (parentDeclar) {\n const bindingIds = parentDeclar.getOuterBindingIdentifiers();\n if (bindingIds[oldName] === binding.identifier) {\n // When we are renaming an exported identifier, we need to ensure that\n // the exported binding keeps the old name.\n this.maybeConvertFromExportDeclaration(parentDeclar);\n }\n }\n\n const blockToTraverse = process.env.BABEL_8_BREAKING\n ? scope.block\n : (arguments[0] as t.Pattern | t.Scopable) || scope.block;\n\n // When blockToTraverse is a SwitchStatement, the discriminant\n // is not part of the current scope and thus should be skipped.\n\n // const foo = {\n // get [x]() {\n // return x;\n // },\n // };\n const skipKeys: Record<string, true> = { discriminant: true };\n if (t.isMethod(blockToTraverse)) {\n if (blockToTraverse.computed) {\n skipKeys.key = true;\n }\n if (!t.isObjectMethod(blockToTraverse)) {\n skipKeys.decorators = true;\n }\n }\n\n traverseNode(\n blockToTraverse,\n explode(renameVisitor),\n scope,\n this,\n scope.path,\n skipKeys,\n );\n\n if (process.env.BABEL_8_BREAKING) {\n scope.removeOwnBinding(oldName);\n scope.bindings[newName] = binding;\n this.binding.identifier.name = newName;\n } else if (!arguments[0]) {\n scope.removeOwnBinding(oldName);\n scope.bindings[newName] = binding;\n this.binding.identifier.name = newName;\n }\n\n if (parentDeclar) {\n this.maybeConvertFromClassFunctionDeclaration(path);\n this.maybeConvertFromClassFunctionExpression(path);\n }\n }\n}\n","import type NodePath from \"../path/index.ts\";\nimport type * as t from \"@babel/types\";\nimport type Scope from \"./index.ts\";\n\nexport type BindingKind =\n | \"var\" /* var declarator */\n | \"let\" /* let declarator, class declaration id, catch clause parameters */\n | \"const\" /* const/using declarator */\n | \"module\" /* import specifiers */\n | \"hoisted\" /* function declaration id */\n | \"param\" /* function declaration parameters */\n | \"local\" /* function expression id, class expression id */\n | \"unknown\"; /* export specifiers */\n/**\n * This class is responsible for a binding inside of a scope.\n *\n * It tracks the following:\n *\n * * Node path.\n * * Amount of times referenced by other nodes.\n * * Paths to nodes that reassign or modify this binding.\n * * The kind of binding. (Is it a parameter, declaration etc)\n */\n\nexport default class Binding {\n identifier: t.Identifier;\n scope: Scope;\n path: NodePath;\n kind: BindingKind;\n\n constructor({\n identifier,\n scope,\n path,\n kind,\n }: {\n identifier: t.Identifier;\n scope: Scope;\n path: NodePath;\n kind: BindingKind;\n }) {\n this.identifier = identifier;\n this.scope = scope;\n this.path = path;\n this.kind = kind;\n\n if ((kind === \"var\" || kind === \"hoisted\") && isDeclaredInLoop(path)) {\n this.reassign(path);\n }\n\n this.clearValue();\n }\n\n constantViolations: Array<NodePath> = [];\n constant: boolean = true;\n\n referencePaths: Array<NodePath> = [];\n referenced: boolean = false;\n references: number = 0;\n\n declare hasDeoptedValue: boolean;\n declare hasValue: boolean;\n declare value: any;\n\n deoptValue() {\n this.clearValue();\n this.hasDeoptedValue = true;\n }\n\n setValue(value: any) {\n if (this.hasDeoptedValue) return;\n this.hasValue = true;\n this.value = value;\n }\n\n clearValue() {\n this.hasDeoptedValue = false;\n this.hasValue = false;\n this.value = null;\n }\n\n /**\n * Register a constant violation with the provided `path`.\n */\n\n reassign(path: NodePath) {\n this.constant = false;\n if (this.constantViolations.includes(path)) {\n return;\n }\n this.constantViolations.push(path);\n }\n\n /**\n * Increment the amount of references to this binding.\n */\n\n reference(path: NodePath) {\n if (this.referencePaths.includes(path)) {\n return;\n }\n this.referenced = true;\n this.references++;\n this.referencePaths.push(path);\n }\n\n /**\n * Decrement the amount of references to this binding.\n */\n\n dereference() {\n this.references--;\n this.referenced = !!this.references;\n }\n}\n\nfunction isDeclaredInLoop(path: NodePath) {\n for (\n let { parentPath, key } = path;\n parentPath;\n { parentPath, key } = parentPath\n ) {\n if (parentPath.isFunctionParent()) return false;\n if (\n parentPath.isWhile() ||\n parentPath.isForXStatement() ||\n (parentPath.isForStatement() && key === \"body\")\n ) {\n return true;\n }\n }\n return false;\n}\n","import type { Node } from \"@babel/types\";\nimport type NodePath from \"./path/index.ts\";\nimport type Scope from \"./scope/index.ts\";\nimport type { HubInterface } from \"./hub.ts\";\n\nlet pathsCache: WeakMap<\n HubInterface | typeof nullHub,\n WeakMap<Node, Map<Node, NodePath>>\n> = new WeakMap();\nexport { pathsCache as path };\nexport let scope: WeakMap<Node, Scope> = new WeakMap();\n\nexport function clear() {\n clearPath();\n clearScope();\n}\n\nexport function clearPath() {\n pathsCache = new WeakMap();\n}\n\nexport function clearScope() {\n scope = new WeakMap();\n}\n\n// NodePath#hub can be null, but it's not a valid weakmap key because it\n// cannot be collected by GC. Use an object, knowing tht it will not be\n// collected anyway. It's not a memory leak because pathsCache.get(nullHub)\n// is itself a weakmap, so its entries can still be collected.\nconst nullHub = Object.freeze({} as const);\n\nexport function getCachedPaths(hub: HubInterface | null, parent: Node) {\n if (!process.env.BABEL_8_BREAKING) {\n // Only use Hub as part of the cache key in Babel 8, because it is a\n // breaking change (it causes incompatibilities with older `@babel/core`\n // versions: see https://github.com/babel/babel/pull/15759)\n hub = null;\n }\n return pathsCache.get(hub ?? nullHub)?.get(parent);\n}\n\nexport function getOrCreateCachedPaths(hub: HubInterface | null, parent: Node) {\n if (!process.env.BABEL_8_BREAKING) {\n hub = null;\n }\n\n let parents = pathsCache.get(hub ?? nullHub);\n if (!parents) pathsCache.set(hub ?? nullHub, (parents = new WeakMap()));\n\n let paths = parents.get(parent);\n if (!paths) parents.set(parent, (paths = new Map()));\n\n return paths;\n}\n","import Renamer from \"./lib/renamer.ts\";\nimport type NodePath from \"../path/index.ts\";\nimport traverse from \"../index.ts\";\nimport Binding from \"./binding.ts\";\nimport type { BindingKind } from \"./binding.ts\";\nimport globals from \"globals\";\nimport {\n NOT_LOCAL_BINDING,\n assignmentExpression,\n callExpression,\n cloneNode,\n getBindingIdentifiers,\n identifier,\n isArrayExpression,\n isBinary,\n isCallExpression,\n isClass,\n isClassBody,\n isClassDeclaration,\n isExportAllDeclaration,\n isExportDefaultDeclaration,\n isExportNamedDeclaration,\n isFunctionDeclaration,\n isIdentifier,\n isImportDeclaration,\n isLiteral,\n isMemberExpression,\n isMethod,\n isModuleSpecifier,\n isNullLiteral,\n isObjectExpression,\n isProperty,\n isPureish,\n isRegExpLiteral,\n isSuper,\n isTaggedTemplateExpression,\n isTemplateLiteral,\n isThisExpression,\n isUnaryExpression,\n isVariableDeclaration,\n expressionStatement,\n matchesPattern,\n memberExpression,\n numericLiteral,\n toIdentifier,\n variableDeclaration,\n variableDeclarator,\n isRecordExpression,\n isTupleExpression,\n isObjectProperty,\n isTopicReference,\n isMetaProperty,\n isPrivateName,\n isExportDeclaration,\n buildUndefinedNode,\n sequenceExpression,\n} from \"@babel/types\";\nimport * as t from \"@babel/types\";\nimport { scope as scopeCache } from \"../cache.ts\";\nimport type { Visitor } from \"../types.ts\";\nimport { isExplodedVisitor } from \"../visitors.ts\";\n\ntype NodePart = string | number | boolean;\n// Recursively gathers the identifying names of a node.\nfunction gatherNodeParts(node: t.Node, parts: NodePart[]) {\n switch (node?.type) {\n default:\n if (isImportDeclaration(node) || isExportDeclaration(node)) {\n if (\n (isExportAllDeclaration(node) ||\n isExportNamedDeclaration(node) ||\n isImportDeclaration(node)) &&\n node.source\n ) {\n gatherNodeParts(node.source, parts);\n } else if (\n (isExportNamedDeclaration(node) || isImportDeclaration(node)) &&\n node.specifiers?.length\n ) {\n for (const e of node.specifiers) gatherNodeParts(e, parts);\n } else if (\n (isExportDefaultDeclaration(node) ||\n isExportNamedDeclaration(node)) &&\n node.declaration\n ) {\n gatherNodeParts(node.declaration, parts);\n }\n } else if (isModuleSpecifier(node)) {\n // todo(flow->ts): should condition instead be:\n // ```\n // t.isExportSpecifier(node) ||\n // t.isImportDefaultSpecifier(node) ||\n // t.isImportNamespaceSpecifier(node) ||\n // t.isImportSpecifier(node)\n // ```\n // allowing only nodes with `.local`?\n // @ts-expect-error todo(flow->ts)\n gatherNodeParts(node.local, parts);\n } else if (\n isLiteral(node) &&\n !isNullLiteral(node) &&\n !isRegExpLiteral(node) &&\n !isTemplateLiteral(node)\n ) {\n parts.push(node.value);\n }\n break;\n\n case \"MemberExpression\":\n case \"OptionalMemberExpression\":\n case \"JSXMemberExpression\":\n gatherNodeParts(node.object, parts);\n gatherNodeParts(node.property, parts);\n break;\n\n case \"Identifier\":\n case \"JSXIdentifier\":\n parts.push(node.name);\n break;\n\n case \"CallExpression\":\n case \"OptionalCallExpression\":\n case \"NewExpression\":\n gatherNodeParts(node.callee, parts);\n break;\n\n case \"ObjectExpression\":\n case \"ObjectPattern\":\n for (const e of node.properties) {\n gatherNodeParts(e, parts);\n }\n break;\n\n case \"SpreadElement\":\n case \"RestElement\":\n gatherNodeParts(node.argument, parts);\n break;\n\n case \"ObjectProperty\":\n case \"ObjectMethod\":\n case \"ClassProperty\":\n case \"ClassMethod\":\n case \"ClassPrivateProperty\":\n case \"ClassPrivateMethod\":\n gatherNodeParts(node.key, parts);\n break;\n\n case \"ThisExpression\":\n parts.push(\"this\");\n break;\n\n case \"Super\":\n parts.push(\"super\");\n break;\n\n case \"Import\":\n parts.push(\"import\");\n break;\n\n case \"DoExpression\":\n parts.push(\"do\");\n break;\n\n case \"YieldExpression\":\n parts.push(\"yield\");\n gatherNodeParts(node.argument, parts);\n break;\n\n case \"AwaitExpression\":\n parts.push(\"await\");\n gatherNodeParts(node.argument, parts);\n break;\n\n case \"AssignmentExpression\":\n gatherNodeParts(node.left, parts);\n break;\n\n case \"VariableDeclarator\":\n gatherNodeParts(node.id, parts);\n break;\n\n case \"FunctionExpression\":\n case \"FunctionDeclaration\":\n case \"ClassExpression\":\n case \"ClassDeclaration\":\n gatherNodeParts(node.id, parts);\n break;\n\n case \"PrivateName\":\n gatherNodeParts(node.id, parts);\n break;\n\n case \"ParenthesizedExpression\":\n gatherNodeParts(node.expression, parts);\n break;\n\n case \"UnaryExpression\":\n case \"UpdateExpression\":\n gatherNodeParts(node.argument, parts);\n break;\n\n case \"MetaProperty\":\n gatherNodeParts(node.meta, parts);\n gatherNodeParts(node.property, parts);\n break;\n\n case \"JSXElement\":\n gatherNodeParts(node.openingElement, parts);\n break;\n\n case \"JSXOpeningElement\":\n gatherNodeParts(node.name, parts);\n break;\n\n case \"JSXFragment\":\n gatherNodeParts(node.openingFragment, parts);\n break;\n\n case \"JSXOpeningFragment\":\n parts.push(\"Fragment\");\n break;\n\n case \"JSXNamespacedName\":\n gatherNodeParts(node.namespace, parts);\n gatherNodeParts(node.name, parts);\n break;\n }\n}\n\n//\ninterface CollectVisitorState {\n assignments: NodePath<t.AssignmentExpression>[];\n references: NodePath<t.Identifier | t.JSXIdentifier>[];\n constantViolations: NodePath[];\n}\n\nconst collectorVisitor: Visitor<CollectVisitorState> = {\n ForStatement(path) {\n const declar = path.get(\"init\");\n // delegate block scope handling to the `BlockScoped` method\n if (declar.isVar()) {\n const { scope } = path;\n const parentScope = scope.getFunctionParent() || scope.getProgramParent();\n parentScope.registerBinding(\"var\", declar);\n }\n },\n\n Declaration(path) {\n // delegate block scope handling to the `BlockScoped` method\n if (path.isBlockScoped()) return;\n\n // delegate import handing to the `ImportDeclaration` method\n if (path.isImportDeclaration()) return;\n\n // this will be hit again once we traverse into it after this iteration\n if (path.isExportDeclaration()) return;\n\n // we've ran into a declaration!\n const parent =\n path.scope.getFunctionParent() || path.scope.getProgramParent();\n parent.registerDeclaration(path);\n },\n\n ImportDeclaration(path) {\n // import may only appear in the top level or inside a module/namespace (for TS/flow)\n const parent = path.scope.getBlockParent();\n\n parent.registerDeclaration(path);\n },\n\n TSImportEqualsDeclaration(path) {\n const parent = path.scope.getBlockParent();\n\n parent.registerDeclaration(path);\n },\n\n ReferencedIdentifier(path, state) {\n if (t.isTSQualifiedName(path.parent) && path.parent.right === path.node) {\n return;\n }\n if (path.parentPath.isTSImportEqualsDeclaration()) return;\n state.references.push(path);\n },\n\n ForXStatement(path, state) {\n const left = path.get(\"left\");\n if (left.isPattern() || left.isIdentifier()) {\n state.constantViolations.push(path);\n }\n // delegate block scope handling to the `BlockScoped` method\n else if (left.isVar()) {\n const { scope } = path;\n const parentScope = scope.getFunctionParent() || scope.getProgramParent();\n parentScope.registerBinding(\"var\", left);\n }\n },\n\n ExportDeclaration: {\n exit(path) {\n const { node, scope } = path;\n // ExportAllDeclaration does not have `declaration`\n if (isExportAllDeclaration(node)) return;\n const declar = node.declaration;\n if (isClassDeclaration(declar) || isFunctionDeclaration(declar)) {\n const id = declar.id;\n if (!id) return;\n\n const binding = scope.getBinding(id.name);\n binding?.reference(path);\n } else if (isVariableDeclaration(declar)) {\n for (const decl of declar.declarations) {\n for (const name of Object.keys(getBindingIdentifiers(decl))) {\n const binding = scope.getBinding(name);\n binding?.reference(path);\n }\n }\n }\n },\n },\n\n LabeledStatement(path) {\n path.scope.getBlockParent().registerDeclaration(path);\n },\n\n AssignmentExpression(path, state) {\n state.assignments.push(path);\n },\n\n UpdateExpression(path, state) {\n state.constantViolations.push(path);\n },\n\n UnaryExpression(path, state) {\n if (path.node.operator === \"delete\") {\n state.constantViolations.push(path);\n }\n },\n\n BlockScoped(path) {\n let scope = path.scope;\n if (scope.path === path) scope = scope.parent;\n\n const parent = scope.getBlockParent();\n parent.registerDeclaration(path);\n\n // Register class identifier in class' scope if this is a class declaration.\n if (path.isClassDeclaration() && path.node.id) {\n const id = path.node.id;\n const name = id.name;\n\n path.scope.bindings[name] = path.scope.parent.getBinding(name);\n }\n },\n\n CatchClause(path) {\n path.scope.registerBinding(\"let\", path);\n },\n\n Function(path) {\n const params: Array<NodePath> = path.get(\"params\");\n for (const param of params) {\n path.scope.registerBinding(\"param\", param);\n }\n\n // Register function expression id after params. When the id\n // collides with a function param, the id effectively can't be\n // referenced: here we registered it as a constantViolation\n if (\n path.isFunctionExpression() &&\n path.node.id &&\n // @ts-expect-error Fixme: document symbol ast properties\n !path.node.id[NOT_LOCAL_BINDING]\n ) {\n path.scope.registerBinding(\"local\", path.get(\"id\"), path);\n }\n },\n\n ClassExpression(path) {\n if (\n path.node.id &&\n // @ts-expect-error Fixme: document symbol ast properties\n !path.node.id[NOT_LOCAL_BINDING]\n ) {\n path.scope.registerBinding(\"local\", path.get(\"id\"), path);\n }\n },\n\n TSTypeAnnotation(path) {\n path.skip();\n },\n};\n\nlet uid = 0;\n\nexport type { Binding };\n\nexport { Scope as default };\nclass Scope {\n uid;\n\n path: NodePath;\n block: t.Pattern | t.Scopable;\n\n inited;\n\n labels: Map<string, NodePath<t.LabeledStatement>>;\n bindings: { [name: string]: Binding };\n references: { [name: string]: true };\n globals: { [name: string]: t.Identifier | t.JSXIdentifier };\n uids: { [name: string]: boolean };\n data: { [key: string | symbol]: unknown };\n crawling: boolean;\n\n /**\n * This searches the current \"scope\" and collects all references/bindings\n * within.\n */\n constructor(path: NodePath<t.Pattern | t.Scopable>) {\n const { node } = path;\n const cached = scopeCache.get(node);\n // Sometimes, a scopable path is placed higher in the AST tree.\n // In these cases, have to create a new Scope.\n if (cached?.path === path) {\n return cached;\n }\n scopeCache.set(node, this);\n\n this.uid = uid++;\n\n this.block = node;\n this.path = path;\n\n this.labels = new Map();\n this.inited = false;\n }\n\n /**\n * Globals.\n */\n\n static globals = Object.keys(globals.builtin);\n\n /**\n * Variables available in current context.\n */\n\n static contextVariables = [\"arguments\", \"undefined\", \"Infinity\", \"NaN\"];\n\n get parent() {\n let parent,\n path = this.path;\n do {\n // Skip method scope if coming from inside computed key or decorator expression\n const shouldSkip = path.key === \"key\" || path.listKey === \"decorators\";\n path = path.parentPath;\n if (shouldSkip && path.isMethod()) path = path.parentPath;\n if (path?.isScope()) parent = path;\n } while (path && !parent);\n\n return parent?.scope;\n }\n\n /**\n * Generate a unique identifier and add it to the current scope.\n */\n\n generateDeclaredUidIdentifier(name?: string) {\n const id = this.generateUidIdentifier(name);\n this.push({ id });\n return cloneNode(id);\n }\n\n /**\n * Generate a unique identifier.\n */\n\n generateUidIdentifier(name?: string) {\n return identifier(this.generateUid(name));\n }\n\n /**\n * Generate a unique `_id1` binding.\n */\n\n generateUid(name: string = \"temp\"): string {\n name = toIdentifier(name).replace(/^_+/, \"\").replace(/\\d+$/g, \"\");\n\n let uid;\n let i = 1;\n do {\n uid = `_${name}`;\n if (i > 1) uid += i;\n i++;\n } while (\n this.hasLabel(uid) ||\n this.hasBinding(uid) ||\n this.hasGlobal(uid) ||\n this.hasReference(uid)\n );\n\n const program = this.getProgramParent();\n program.references[uid] = true;\n program.uids[uid] = true;\n\n return uid;\n }\n\n generateUidBasedOnNode(node: t.Node, defaultName?: string) {\n const parts: NodePart[] = [];\n gatherNodeParts(node, parts);\n\n let id = parts.join(\"$\");\n id = id.replace(/^_/, \"\") || defaultName || \"ref\";\n\n return this.generateUid(id.slice(0, 20));\n }\n\n /**\n * Generate a unique identifier based on a node.\n */\n\n generateUidIdentifierBasedOnNode(node: t.Node, defaultName?: string) {\n return identifier(this.generateUidBasedOnNode(node, defaultName));\n }\n\n /**\n * Determine whether evaluating the specific input `node` is a consequenceless reference. ie.\n * evaluating it won't result in potentially arbitrary code from being ran. The following are\n * allowed and determined not to cause side effects:\n *\n * - `this` expressions\n * - `super` expressions\n * - Bound identifiers\n */\n\n isStatic(node: t.Node): boolean {\n if (isThisExpression(node) || isSuper(node) || isTopicReference(node)) {\n return true;\n }\n\n if (isIdentifier(node)) {\n const binding = this.getBinding(node.name);\n if (binding) {\n return binding.constant;\n } else {\n return this.hasBinding(node.name);\n }\n }\n\n return false;\n }\n\n /**\n * Possibly generate a memoised identifier if it is not static and has consequences.\n */\n\n maybeGenerateMemoised(node: t.Node, dontPush?: boolean) {\n if (this.isStatic(node)) {\n return null;\n } else {\n const id = this.generateUidIdentifierBasedOnNode(node);\n if (!dontPush) {\n this.push({ id });\n return cloneNode(id);\n }\n return id;\n }\n }\n\n checkBlockScopedCollisions(\n local: Binding,\n kind: BindingKind,\n name: string,\n id: any,\n ) {\n // ignore parameters\n if (kind === \"param\") return;\n\n // Ignore existing binding if it's the name of the current function or\n // class expression\n if (local.kind === \"local\") return;\n\n const duplicate =\n // don't allow duplicate bindings to exist alongside\n kind === \"let\" ||\n local.kind === \"let\" ||\n local.kind === \"const\" ||\n local.kind === \"module\" ||\n // don't allow a local of param with a kind of let\n (local.kind === \"param\" && kind === \"const\");\n\n if (duplicate) {\n throw this.path.hub.buildError(\n id,\n `Duplicate declaration \"${name}\"`,\n TypeError,\n );\n }\n }\n\n rename(\n oldName: string,\n newName?: string,\n // prettier-ignore\n /* Babel 7 - block?: t.Pattern | t.Scopable */\n ) {\n const binding = this.getBinding(oldName);\n if (binding) {\n newName ||= this.generateUidIdentifier(oldName).name;\n const renamer = new Renamer(binding, oldName, newName);\n if (process.env.BABEL_8_BREAKING) {\n renamer.rename();\n } else {\n // @ts-ignore(Babel 7 vs Babel 8) TODO: Delete this\n renamer.rename(arguments[2]);\n }\n }\n }\n\n dump() {\n const sep = \"-\".repeat(60);\n console.log(sep);\n let scope: Scope = this;\n do {\n console.log(\"#\", scope.block.type);\n for (const name of Object.keys(scope.bindings)) {\n const binding = scope.bindings[name];\n console.log(\" -\", name, {\n constant: binding.constant,\n references: binding.references,\n violations: binding.constantViolations.length,\n kind: binding.kind,\n });\n }\n } while ((scope = scope.parent));\n console.log(sep);\n }\n\n hasLabel(name: string) {\n return !!this.getLabel(name);\n }\n\n getLabel(name: string) {\n return this.labels.get(name);\n }\n\n registerLabel(path: NodePath<t.LabeledStatement>) {\n this.labels.set(path.node.label.name, path);\n }\n\n registerDeclaration(path: NodePath) {\n if (path.isLabeledStatement()) {\n this.registerLabel(path);\n } else if (path.isFunctionDeclaration()) {\n this.registerBinding(\"hoisted\", path.get(\"id\"), path);\n } else if (path.isVariableDeclaration()) {\n const declarations = path.get(\"declarations\");\n const { kind } = path.node;\n for (const declar of declarations) {\n this.registerBinding(\n kind === \"using\" || kind === \"await using\" ? \"const\" : kind,\n declar,\n );\n }\n } else if (path.isClassDeclaration()) {\n if (path.node.declare) return;\n this.registerBinding(\"let\", path);\n } else if (path.isImportDeclaration()) {\n const isTypeDeclaration =\n path.node.importKind === \"type\" || path.node.importKind === \"typeof\";\n const specifiers = path.get(\"specifiers\");\n for (const specifier of specifiers) {\n const isTypeSpecifier =\n isTypeDeclaration ||\n (specifier.isImportSpecifier() &&\n (specifier.node.importKind === \"type\" ||\n specifier.node.importKind === \"typeof\"));\n\n this.registerBinding(isTypeSpecifier ? \"unknown\" : \"module\", specifier);\n }\n } else if (path.isExportDeclaration()) {\n // todo: improve babel-types\n const declar = path.get(\"declaration\") as NodePath;\n if (\n declar.isClassDeclaration() ||\n declar.isFunctionDeclaration() ||\n declar.isVariableDeclaration()\n ) {\n this.registerDeclaration(declar);\n }\n } else {\n this.registerBinding(\"unknown\", path);\n }\n }\n\n buildUndefinedNode() {\n return buildUndefinedNode();\n }\n\n registerConstantViolation(path: NodePath) {\n const ids = path.getAssignmentIdentifiers();\n for (const name of Object.keys(ids)) {\n this.getBinding(name)?.reassign(path);\n }\n }\n\n registerBinding(\n kind: Binding[\"kind\"],\n path: NodePath,\n bindingPath: NodePath = path,\n ) {\n if (!kind) throw new ReferenceError(\"no `kind`\");\n\n if (path.isVariableDeclaration()) {\n const declarators: Array<NodePath> = path.get(\"declarations\");\n for (const declar of declarators) {\n this.registerBinding(kind, declar);\n }\n return;\n }\n\n const parent = this.getProgramParent();\n const ids = path.getOuterBindingIdentifiers(true);\n\n for (const name of Object.keys(ids)) {\n parent.references[name] = true;\n\n for (const id of ids[name]) {\n const local = this.getOwnBinding(name);\n\n if (local) {\n // same identifier so continue safely as we're likely trying to register it\n // multiple times\n if (local.identifier === id) continue;\n\n this.checkBlockScopedCollisions(local, kind, name, id);\n }\n\n // A redeclaration of an existing variable is a modification\n if (local) {\n local.reassign(bindingPath);\n } else {\n this.bindings[name] = new Binding({\n identifier: id,\n scope: this,\n path: bindingPath,\n kind: kind,\n });\n }\n }\n }\n }\n\n addGlobal(node: t.Identifier | t.JSXIdentifier) {\n this.globals[node.name] = node;\n }\n\n hasUid(name: string): boolean {\n let scope: Scope = this;\n\n do {\n if (scope.uids[name]) return true;\n } while ((scope = scope.parent));\n\n return false;\n }\n\n hasGlobal(name: string): boolean {\n let scope: Scope = this;\n\n do {\n if (scope.globals[name]) return true;\n } while ((scope = scope.parent));\n\n return false;\n }\n\n hasReference(name: string): boolean {\n return !!this.getProgramParent().references[name];\n }\n\n isPure(node: t.Node, constantsOnly?: boolean): boolean {\n if (isIdentifier(node)) {\n const binding = this.getBinding(node.name);\n if (!binding) return false;\n if (constantsOnly) return binding.constant;\n return true;\n } else if (\n isThisExpression(node) ||\n isMetaProperty(node) ||\n isTopicReference(node) ||\n isPrivateName(node)\n ) {\n return true;\n } else if (isClass(node)) {\n if (node.superClass && !this.isPure(node.superClass, constantsOnly)) {\n return false;\n }\n if (node.decorators?.length > 0) {\n return false;\n }\n return this.isPure(node.body, constantsOnly);\n } else if (isClassBody(node)) {\n for (const method of node.body) {\n if (!this.isPure(method, constantsOnly)) return false;\n }\n return true;\n } else if (isBinary(node)) {\n return (\n this.isPure(node.left, constantsOnly) &&\n this.isPure(node.right, constantsOnly)\n );\n } else if (isArrayExpression(node) || isTupleExpression(node)) {\n for (const elem of node.elements) {\n if (elem !== null && !this.isPure(elem, constantsOnly)) return false;\n }\n return true;\n } else if (isObjectExpression(node) || isRecordExpression(node)) {\n for (const prop of node.properties) {\n if (!this.isPure(prop, constantsOnly)) return false;\n }\n return true;\n } else if (isMethod(node)) {\n if (node.computed && !this.isPure(node.key, constantsOnly)) return false;\n if (node.decorators?.length > 0) {\n return false;\n }\n return true;\n } else if (isProperty(node)) {\n // @ts-expect-error todo(flow->ts): computed in not present on private properties\n if (node.computed && !this.isPure(node.key, constantsOnly)) return false;\n if (node.decorators?.length > 0) {\n return false;\n }\n if (isObjectProperty(node) || node.static) {\n if (node.value !== null && !this.isPure(node.value, constantsOnly)) {\n return false;\n }\n }\n return true;\n } else if (isUnaryExpression(node)) {\n return this.isPure(node.argument, constantsOnly);\n } else if (isTemplateLiteral(node)) {\n for (const expression of node.expressions) {\n if (!this.isPure(expression, constantsOnly)) return false;\n }\n return true;\n } else if (isTaggedTemplateExpression(node)) {\n return (\n matchesPattern(node.tag, \"String.raw\") &&\n !this.hasBinding(\"String\", { noGlobals: true }) &&\n this.isPure(node.quasi, constantsOnly)\n );\n } else if (isMemberExpression(node)) {\n return (\n !node.computed &&\n isIdentifier(node.object) &&\n node.object.name === \"Symbol\" &&\n isIdentifier(node.property) &&\n node.property.name !== \"for\" &&\n !this.hasBinding(\"Symbol\", { noGlobals: true })\n );\n } else if (isCallExpression(node)) {\n return (\n matchesPattern(node.callee, \"Symbol.for\") &&\n !this.hasBinding(\"Symbol\", { noGlobals: true }) &&\n node.arguments.length === 1 &&\n t.isStringLiteral(node.arguments[0])\n );\n } else {\n return isPureish(node);\n }\n }\n\n /**\n * Set some arbitrary data on the current scope.\n */\n\n setData(key: string | symbol, val: any) {\n return (this.data[key] = val);\n }\n\n /**\n * Recursively walk up scope tree looking for the data `key`.\n */\n\n getData(key: string | symbol): any {\n let scope: Scope = this;\n do {\n const data = scope.data[key];\n if (data != null) return data;\n } while ((scope = scope.parent));\n }\n\n /**\n * Recursively walk up scope tree looking for the data `key` and if it exists,\n * remove it.\n */\n\n removeData(key: string) {\n let scope: Scope = this;\n do {\n const data = scope.data[key];\n if (data != null) scope.data[key] = null;\n } while ((scope = scope.parent));\n }\n\n init() {\n if (!this.inited) {\n this.inited = true;\n this.crawl();\n }\n }\n\n crawl() {\n const path = this.path;\n\n this.references = Object.create(null);\n this.bindings = Object.create(null);\n this.globals = Object.create(null);\n this.uids = Object.create(null);\n this.data = Object.create(null);\n\n let scope: Scope = this;\n do {\n if (scope.crawling) return;\n if (scope.path.isProgram()) {\n break;\n }\n } while ((scope = scope.parent));\n\n const programParent = scope;\n\n const state: CollectVisitorState = {\n references: [],\n constantViolations: [],\n assignments: [],\n };\n\n this.crawling = true;\n // traverse does not visit the root node, here we explicitly collect\n // root node binding info when the root is not a Program.\n if (path.type !== \"Program\" && isExplodedVisitor(collectorVisitor)) {\n for (const visit of collectorVisitor.enter) {\n visit.call(state, path, state);\n }\n const typeVisitors = collectorVisitor[path.type];\n if (typeVisitors) {\n for (const visit of typeVisitors.enter) {\n visit.call(state, path, state);\n }\n }\n }\n path.traverse(collectorVisitor, state);\n this.crawling = false;\n\n // register assignments\n for (const path of state.assignments) {\n // register undeclared bindings as globals\n const ids = path.getAssignmentIdentifiers();\n for (const name of Object.keys(ids)) {\n if (path.scope.getBinding(name)) continue;\n programParent.addGlobal(ids[name]);\n }\n\n // register as constant violation\n path.scope.registerConstantViolation(path);\n }\n\n // register references\n for (const ref of state.references) {\n const binding = ref.scope.getBinding(ref.node.name);\n if (binding) {\n binding.reference(ref);\n } else {\n programParent.addGlobal(ref.node);\n }\n }\n\n // register constant violations\n for (const path of state.constantViolations) {\n path.scope.registerConstantViolation(path);\n }\n }\n\n push(opts: {\n id: t.ArrayPattern | t.Identifier | t.ObjectPattern;\n init?: t.Expression;\n unique?: boolean;\n _blockHoist?: number | undefined;\n kind?: \"var\" | \"let\" | \"const\";\n }) {\n let path = this.path;\n\n if (path.isPattern()) {\n path = this.getPatternParent().path;\n } else if (!path.isBlockStatement() && !path.isProgram()) {\n path = this.getBlockParent().path;\n }\n\n if (path.isSwitchStatement()) {\n path = (this.getFunctionParent() || this.getProgramParent()).path;\n }\n\n const { init, unique, kind = \"var\", id } = opts;\n\n // When injecting a non-const non-initialized binding inside\n // an IIFE, if the number of call arguments is less than or\n // equal to the number of function parameters, we can safely\n // inject the binding into the parameter list.\n if (\n !init &&\n !unique &&\n (kind === \"var\" || kind === \"let\") &&\n path.isFunction() &&\n // @ts-expect-error ArrowFunctionExpression never has a name\n !path.node.name &&\n isCallExpression(path.parent, { callee: path.node }) &&\n path.parent.arguments.length <= path.node.params.length &&\n isIdentifier(id)\n ) {\n path.pushContainer(\"params\", id);\n path.scope.registerBinding(\n \"param\",\n path.get(\"params\")[path.node.params.length - 1],\n );\n return;\n }\n\n if (path.isLoop() || path.isCatchClause() || path.isFunction()) {\n path.ensureBlock();\n path = path.get(\"body\");\n }\n\n const blockHoist = opts._blockHoist == null ? 2 : opts._blockHoist;\n\n const dataKey = `declaration:${kind}:${blockHoist}`;\n let declarPath = !unique && path.getData(dataKey);\n\n if (!declarPath) {\n const declar = variableDeclaration(kind, []);\n // @ts-expect-error todo(flow->ts): avoid modifying nodes\n declar._blockHoist = blockHoist;\n\n [declarPath] = (path as NodePath<t.BlockStatement>).unshiftContainer(\n \"body\",\n [declar],\n );\n if (!unique) path.setData(dataKey, declarPath);\n }\n\n const declarator = variableDeclarator(id, init);\n const len = declarPath.node.declarations.push(declarator);\n path.scope.registerBinding(kind, declarPath.get(\"declarations\")[len - 1]);\n }\n\n /**\n * Walk up to the top of the scope tree and get the `Program`.\n */\n\n getProgramParent() {\n let scope: Scope = this;\n do {\n if (scope.path.isProgram()) {\n return scope;\n }\n } while ((scope = scope.parent));\n throw new Error(\"Couldn't find a Program\");\n }\n\n /**\n * Walk up the scope tree until we hit either a Function or return null.\n */\n\n getFunctionParent(): Scope | null {\n let scope: Scope = this;\n do {\n if (scope.path.isFunctionParent()) {\n return scope;\n }\n } while ((scope = scope.parent));\n return null;\n }\n\n /**\n * Walk up the scope tree until we hit either a BlockStatement/Loop/Program/Function/Switch or reach the\n * very top and hit Program.\n */\n\n getBlockParent() {\n let scope: Scope = this;\n do {\n if (scope.path.isBlockParent()) {\n return scope;\n }\n } while ((scope = scope.parent));\n throw new Error(\n \"We couldn't find a BlockStatement, For, Switch, Function, Loop or Program...\",\n );\n }\n\n /**\n * Walk up from a pattern scope (function param initializer) until we hit a non-pattern scope,\n * then returns its block parent\n * @returns An ancestry scope whose path is a block parent\n */\n getPatternParent() {\n let scope: Scope = this;\n do {\n if (!scope.path.isPattern()) {\n return scope.getBlockParent();\n }\n } while ((scope = scope.parent.parent));\n throw new Error(\n \"We couldn't find a BlockStatement, For, Switch, Function, Loop or Program...\",\n );\n }\n\n /**\n * Walks the scope tree and gathers **all** bindings.\n */\n\n getAllBindings(): Record<string, Binding> {\n const ids = Object.create(null);\n\n let scope: Scope = this;\n do {\n for (const key of Object.keys(scope.bindings)) {\n if (key in ids === false) {\n ids[key] = scope.bindings[key];\n }\n }\n scope = scope.parent;\n } while (scope);\n\n return ids;\n }\n\n bindingIdentifierEquals(name: string, node: t.Node): boolean {\n return this.getBindingIdentifier(name) === node;\n }\n\n getBinding(name: string): Binding | undefined {\n let scope: Scope = this;\n let previousPath;\n\n do {\n const binding = scope.getOwnBinding(name);\n if (binding) {\n // Check if a pattern is a part of parameter expressions.\n // Note: for performance reason we skip checking previousPath.parentPath.isFunction()\n // because `scope.path` is validated as scope in packages/babel-types/src/validators/isScope.js\n // That is, if a scope path is pattern, its parent must be Function/CatchClause\n\n // Spec 9.2.10.28: The closure created by this expression should not have visibility of\n // declarations in the function body. If the binding is not a `param`-kind (as function parameters)\n // or `local`-kind (as id in function expression),\n // then it must be defined inside the function body, thus it should be skipped\n if (\n previousPath?.isPattern() &&\n binding.kind !== \"param\" &&\n binding.kind !== \"local\"\n ) {\n // do nothing\n } else {\n return binding;\n }\n } else if (\n !binding &&\n name === \"arguments\" &&\n scope.path.isFunction() &&\n !scope.path.isArrowFunctionExpression()\n ) {\n break;\n }\n previousPath = scope.path;\n } while ((scope = scope.parent));\n }\n\n getOwnBinding(name: string): Binding | undefined {\n return this.bindings[name];\n }\n\n // todo: return probably can be undefined…\n getBindingIdentifier(name: string): t.Identifier {\n return this.getBinding(name)?.identifier;\n }\n\n // todo: flow->ts return probably can be undefined\n getOwnBindingIdentifier(name: string): t.Identifier {\n const binding = this.bindings[name];\n return binding?.identifier;\n }\n\n hasOwnBinding(name: string) {\n return !!this.getOwnBinding(name);\n }\n\n // By default, we consider generated UIDs as bindings.\n // This is because they are almost always used to declare variables,\n // and since the scope isn't always up-to-date it's better to assume that\n // there is a variable with that name. The `noUids` option can be used to\n // turn off this behavior, for example if you know that the generate UID\n // was used to declare a variable in a different scope.\n hasBinding(\n name: string,\n opts?: boolean | { noGlobals?: boolean; noUids?: boolean },\n ) {\n if (!name) return false;\n let scope: Scope = this;\n do {\n if (scope.hasOwnBinding(name)) {\n return true;\n }\n } while ((scope = scope.parent));\n\n // TODO: Only accept the object form.\n let noGlobals;\n let noUids;\n if (typeof opts === \"object\") {\n noGlobals = opts.noGlobals;\n noUids = opts.noUids;\n } else if (typeof opts === \"boolean\") {\n noGlobals = opts;\n }\n\n if (!noUids && this.hasUid(name)) return true;\n if (!noGlobals && Scope.globals.includes(name)) return true;\n if (!noGlobals && Scope.contextVariables.includes(name)) return true;\n return false;\n }\n\n parentHasBinding(\n name: string,\n opts?: { noGlobals?: boolean; noUids?: boolean },\n ) {\n return this.parent?.hasBinding(name, opts);\n }\n\n /**\n * Move a binding of `name` to another `scope`.\n */\n\n moveBindingTo(name: string, scope: Scope) {\n const info = this.getBinding(name);\n if (info) {\n info.scope.removeOwnBinding(name);\n info.scope = scope;\n scope.bindings[name] = info;\n }\n }\n\n removeOwnBinding(name: string) {\n delete this.bindings[name];\n }\n\n removeBinding(name: string) {\n // clear literal binding\n this.getBinding(name)?.scope.removeOwnBinding(name);\n\n // clear uids with this name - https://github.com/babel/babel/issues/2101\n let scope: Scope = this;\n do {\n if (scope.uids[name]) {\n scope.uids[name] = false;\n }\n } while ((scope = scope.parent));\n }\n\n /**\n * Hoist all the `var` variable to the beginning of the function/program\n * scope where their binding will be actually defined. For exmaple,\n * { var x = 2 }\n * will be transformed to\n * var x; { x = 2 }\n *\n * @param emit A custom function to emit `var` declarations, for example to\n * emit them in a different scope.\n */\n hoistVariables(\n emit: (id: t.Identifier, hasInit: boolean) => void = id =>\n this.push({ id }),\n ) {\n this.crawl();\n\n const seen = new Set();\n for (const name of Object.keys(this.bindings)) {\n const binding = this.bindings[name];\n if (!binding) continue;\n const { path } = binding;\n if (!path.isVariableDeclarator()) continue;\n const { parent, parentPath } = path;\n\n if (parent.kind !== \"var\" || seen.has(parent)) continue;\n seen.add(path.parent);\n\n let firstId;\n const init = [];\n for (const decl of parent.declarations) {\n firstId ??= decl.id;\n if (decl.init) {\n init.push(assignmentExpression(\"=\", decl.id, decl.init));\n }\n\n const ids = Object.keys(getBindingIdentifiers(decl, false, true, true));\n for (const name of ids) {\n emit(identifier(name), decl.init != null);\n }\n }\n\n // for (var i in test)\n if (parentPath.parentPath.isFor({ left: parent })) {\n parentPath.replaceWith(firstId);\n } else if (init.length === 0) {\n parentPath.remove();\n } else {\n const expr = init.length === 1 ? init[0] : sequenceExpression(init);\n if (parentPath.parentPath.isForStatement({ init: parent })) {\n parentPath.replaceWith(expr);\n } else {\n parentPath.replaceWith(expressionStatement(expr));\n }\n }\n }\n }\n}\n\nif (!process.env.BABEL_8_BREAKING && !USE_ESM) {\n /** @deprecated Not used in our codebase */\n // @ts-expect-error Babel 7 compatibility\n Scope.prototype._renameFromMap = function _renameFromMap(\n map: Record<string | symbol, unknown>,\n oldName: string | symbol,\n newName: string | symbol,\n value: unknown,\n ) {\n if (map[oldName]) {\n map[newName] = value;\n map[oldName] = null;\n }\n };\n\n /**\n * Traverse node with current scope and path.\n *\n * !!! WARNING !!!\n * This method assumes that `this.path` is the NodePath representing `node`.\n * After running the traversal, the `.parentPath` of the NodePaths\n * corresponding to `node`'s children will be set to `this.path`.\n *\n * There is no good reason to use this method, since the only safe way to use\n * it is equivalent to `scope.path.traverse(opts, state)`.\n */\n // @ts-expect-error Babel 7 compatibility\n Scope.prototype.traverse = function <S>(\n this: Scope,\n node: any,\n opts: any,\n state?: S,\n ) {\n traverse(node, opts, this, state, this.path);\n };\n\n /**\n * Generate an `_id1`.\n */\n // @ts-expect-error Babel 7 compatibility\n Scope.prototype._generateUid = function _generateUid(\n name: string,\n i: number,\n ) {\n let id = name;\n if (i > 1) id += i;\n return `_${id}`;\n };\n\n // TODO: (Babel 8) Split i in two parameters, and use an object of flags\n // @ts-expect-error Babel 7 compatibility\n Scope.prototype.toArray = function toArray(\n this: Scope,\n node: t.Node,\n i?: number | boolean,\n arrayLikeIsIterable?: boolean | void,\n ) {\n if (isIdentifier(node)) {\n const binding = this.getBinding(node.name);\n if (binding?.constant && binding.path.isGenericType(\"Array\")) {\n return node;\n }\n }\n\n if (isArrayExpression(node)) {\n return node;\n }\n\n if (isIdentifier(node, { name: \"arguments\" })) {\n return callExpression(\n memberExpression(\n memberExpression(\n memberExpression(identifier(\"Array\"), identifier(\"prototype\")),\n identifier(\"slice\"),\n ),\n identifier(\"call\"),\n ),\n [node],\n );\n }\n\n let helperName;\n const args = [node];\n if (i === true) {\n // Used in array-spread to create an array.\n helperName = \"toConsumableArray\";\n } else if (typeof i === \"number\") {\n args.push(numericLiteral(i));\n\n // Used in array-rest to create an array from a subset of an iterable.\n helperName = \"slicedToArray\";\n // TODO if (this.hub.isLoose(\"es6.forOf\")) helperName += \"-loose\";\n } else {\n // Used in array-rest to create an array\n helperName = \"toArray\";\n }\n\n if (arrayLikeIsIterable) {\n args.unshift(this.path.hub.addHelper(helperName));\n helperName = \"maybeArrayLike\";\n }\n\n // @ts-expect-error todo(flow->ts): t.Node is not valid to use in args, function argument typeneeds to be clarified\n return callExpression(this.path.hub.addHelper(helperName), args);\n };\n\n /**\n * Walks the scope tree and gathers all declarations of `kind`.\n */\n // @ts-expect-error Babel 7 compatibility\n Scope.prototype.getAllBindingsOfKind = function getAllBindingsOfKind(\n ...kinds: string[]\n ): Record<string, Binding> {\n const ids = Object.create(null);\n\n for (const kind of kinds) {\n let scope: Scope = this;\n do {\n for (const name of Object.keys(scope.bindings)) {\n const binding = scope.bindings[name];\n if (binding.kind === kind) ids[name] = binding;\n }\n scope = scope.parent;\n } while (scope);\n }\n\n return ids;\n };\n\n Object.defineProperties(Scope.prototype, {\n parentBlock: {\n configurable: true,\n enumerable: true,\n get(this: Scope) {\n return this.path.parent;\n },\n },\n hub: {\n configurable: true,\n enumerable: true,\n get(this: Scope) {\n return this.path.hub;\n },\n },\n });\n}\n\ntype _Binding = Binding;\n// eslint-disable-next-line @typescript-eslint/no-namespace\nnamespace Scope {\n export type Binding = _Binding;\n}\n","// This file contains that retrieve or validate anything related to the current paths ancestry.\n\nimport { VISITOR_KEYS } from \"@babel/types\";\nimport type * as t from \"@babel/types\";\nimport type NodePath from \"./index.ts\";\n\n/**\n * Starting at the parent path of the current `NodePath` and going up the\n * tree, return the first `NodePath` that causes the provided `callback`\n * to return a truthy value, or `null` if the `callback` never returns a\n * truthy value.\n */\n\nexport function findParent(\n this: NodePath,\n callback: (path: NodePath) => boolean,\n): NodePath | null {\n let path = this;\n while ((path = path.parentPath)) {\n if (callback(path)) return path;\n }\n return null;\n}\n\n/**\n * Starting at current `NodePath` and going up the tree, return the first\n * `NodePath` that causes the provided `callback` to return a truthy value,\n * or `null` if the `callback` never returns a truthy value.\n */\n\nexport function find(\n this: NodePath,\n callback: (path: NodePath) => boolean,\n): NodePath | null {\n let path = this;\n do {\n if (callback(path)) return path;\n } while ((path = path.parentPath));\n return null;\n}\n\n/**\n * Get the parent function of the current path.\n */\n\nexport function getFunctionParent(this: NodePath): NodePath<t.Function> | null {\n return this.findParent(p => p.isFunction()) as NodePath<t.Function> | null;\n}\n\n/**\n * Walk up the tree until we hit a parent node path in a list.\n */\n\nexport function getStatementParent(this: NodePath): NodePath<t.Statement> {\n let path = this;\n\n do {\n if (\n !path.parentPath ||\n (Array.isArray(path.container) && path.isStatement())\n ) {\n break;\n } else {\n path = path.parentPath;\n }\n } while (path);\n\n if (path && (path.isProgram() || path.isFile())) {\n throw new Error(\n \"File/Program node, we can't possibly find a statement parent to this\",\n );\n }\n\n return path as NodePath<t.Statement>;\n}\n\n/**\n * Get the deepest common ancestor and then from it, get the earliest relationship path\n * to that ancestor.\n *\n * Earliest is defined as being \"before\" all the other nodes in terms of list container\n * position and visiting key.\n */\n\nexport function getEarliestCommonAncestorFrom(\n this: NodePath,\n paths: Array<NodePath>,\n): NodePath {\n return this.getDeepestCommonAncestorFrom(\n paths,\n function (deepest, i, ancestries) {\n let earliest;\n const keys = VISITOR_KEYS[deepest.type];\n\n for (const ancestry of ancestries) {\n const path = ancestry[i + 1];\n\n // first path\n if (!earliest) {\n earliest = path;\n continue;\n }\n\n // handle containers\n if (path.listKey && earliest.listKey === path.listKey) {\n // we're in the same container so check if we're earlier\n if (path.key < earliest.key) {\n earliest = path;\n continue;\n }\n }\n\n // handle keys\n const earliestKeyIndex = keys.indexOf(earliest.parentKey);\n const currentKeyIndex = keys.indexOf(path.parentKey);\n if (earliestKeyIndex > currentKeyIndex) {\n // key appears before so it's earlier\n earliest = path;\n }\n }\n\n return earliest;\n },\n );\n}\n\n/**\n * Get the earliest path in the tree where the provided `paths` intersect.\n *\n * TODO: Possible optimisation target.\n */\n\nexport function getDeepestCommonAncestorFrom(\n this: NodePath,\n paths: Array<NodePath>,\n filter?: (deepest: NodePath, i: number, ancestries: NodePath[][]) => NodePath,\n): NodePath {\n if (!paths.length) {\n return this;\n }\n\n if (paths.length === 1) {\n return paths[0];\n }\n\n // minimum depth of the tree so we know the highest node\n let minDepth = Infinity;\n\n // last common ancestor\n let lastCommonIndex, lastCommon;\n\n // get the ancestors of the path, breaking when the parent exceeds ourselves\n const ancestries = paths.map(path => {\n const ancestry: NodePath[] = [];\n\n do {\n ancestry.unshift(path);\n } while ((path = path.parentPath) && path !== this);\n\n // save min depth to avoid going too far in\n if (ancestry.length < minDepth) {\n minDepth = ancestry.length;\n }\n\n return ancestry;\n });\n\n // get the first ancestry so we have a seed to assess all other ancestries with\n const first = ancestries[0];\n\n // check ancestor equality\n depthLoop: for (let i = 0; i < minDepth; i++) {\n const shouldMatch = first[i];\n\n for (const ancestry of ancestries) {\n if (ancestry[i] !== shouldMatch) {\n // we've hit a snag\n break depthLoop;\n }\n }\n\n // next iteration may break so store these so they can be returned\n lastCommonIndex = i;\n lastCommon = shouldMatch;\n }\n\n if (lastCommon) {\n if (filter) {\n return filter(lastCommon, lastCommonIndex, ancestries);\n } else {\n return lastCommon;\n }\n } else {\n throw new Error(\"Couldn't find intersection\");\n }\n}\n\n/**\n * Build an array of node paths containing the entire ancestry of the current node path.\n *\n * NOTE: The current node path is included in this.\n */\n\nexport function getAncestry(this: NodePath): Array<NodePath> {\n let path = this;\n const paths = [];\n do {\n paths.push(path);\n } while ((path = path.parentPath));\n return paths;\n}\n\n/**\n * A helper to find if `this` path is an ancestor of @param maybeDescendant\n */\nexport function isAncestor(this: NodePath, maybeDescendant: NodePath): boolean {\n return maybeDescendant.isDescendant(this);\n}\n\n/**\n * A helper to find if `this` path is a descendant of @param maybeAncestor\n */\nexport function isDescendant(this: NodePath, maybeAncestor: NodePath): boolean {\n return !!this.findParent(parent => parent === maybeAncestor);\n}\n\nexport function inType(this: NodePath, ...candidateTypes: string[]): boolean {\n let path = this;\n while (path) {\n for (const type of candidateTypes) {\n if (path.node.type === type) return true;\n }\n path = path.parentPath;\n }\n\n return false;\n}\n","import {\n createFlowUnionType,\n createTSUnionType,\n createUnionTypeAnnotation,\n isFlowType,\n isTSType,\n} from \"@babel/types\";\nimport type * as t from \"@babel/types\";\n\nexport function createUnionType(\n types: (t.FlowType | t.TSType)[],\n): t.FlowType | t.TSType | undefined {\n if (process.env.BABEL_8_BREAKING) {\n if (types.every(v => isFlowType(v))) {\n return createFlowUnionType(types);\n }\n if (types.every(v => isTSType(v))) {\n return createTSUnionType(types);\n }\n } else {\n if (types.every(v => isFlowType(v))) {\n if (createFlowUnionType) {\n return createFlowUnionType(types);\n }\n\n return createUnionTypeAnnotation(types);\n } else if (types.every(v => isTSType(v))) {\n if (createTSUnionType) {\n return createTSUnionType(types);\n }\n }\n }\n}\n","import type NodePath from \"../index.ts\";\nimport {\n BOOLEAN_NUMBER_BINARY_OPERATORS,\n createTypeAnnotationBasedOnTypeof,\n numberTypeAnnotation,\n voidTypeAnnotation,\n} from \"@babel/types\";\nimport type * as t from \"@babel/types\";\nimport type Binding from \"../../scope/binding.ts\";\n\nimport { createUnionType } from \"./util.ts\";\n\nexport default function (this: NodePath<t.Identifier>, node: t.Identifier) {\n if (!this.isReferenced()) return;\n\n // check if a binding exists of this value and if so then return a union type of all\n // possible types that the binding could be\n const binding = this.scope.getBinding(node.name);\n if (binding) {\n if (binding.identifier.typeAnnotation) {\n return binding.identifier.typeAnnotation;\n } else {\n return getTypeAnnotationBindingConstantViolations(\n binding,\n this,\n node.name,\n );\n }\n }\n\n // built-in values\n if (node.name === \"undefined\") {\n return voidTypeAnnotation();\n } else if (node.name === \"NaN\" || node.name === \"Infinity\") {\n return numberTypeAnnotation();\n } else if (node.name === \"arguments\") {\n // todo\n }\n}\n\nfunction getTypeAnnotationBindingConstantViolations(\n binding: Binding,\n path: NodePath<t.Identifier>,\n name: string,\n) {\n const types = [];\n\n const functionConstantViolations: NodePath[] = [];\n let constantViolations = getConstantViolationsBefore(\n binding,\n path,\n functionConstantViolations,\n );\n\n const testType = getConditionalAnnotation(binding, path, name);\n if (testType) {\n const testConstantViolations = getConstantViolationsBefore(\n binding,\n testType.ifStatement,\n );\n\n // remove constant violations observed before the IfStatement\n constantViolations = constantViolations.filter(\n path => !testConstantViolations.includes(path),\n );\n\n // clear current types and add in observed test type\n types.push(testType.typeAnnotation);\n }\n\n if (constantViolations.length) {\n // pick one constant from each scope which will represent the last possible\n // control flow path that it could've taken/been\n /* This code is broken for the following problems:\n * It thinks that assignments can only happen in scopes.\n * What about conditionals, if statements without block,\n * or guarded assignments.\n * It also checks to see if one of the assignments is in the\n * same scope and uses that as the only \"violation\". However,\n * the binding is returned by `getConstantViolationsBefore` so we for\n * sure always going to return that as the only \"violation\".\n let rawConstantViolations = constantViolations.reverse();\n let visitedScopes = [];\n constantViolations = [];\n for (let violation of (rawConstantViolations: Array<NodePath>)) {\n let violationScope = violation.scope;\n if (visitedScopes.indexOf(violationScope) >= 0) continue;\n\n visitedScopes.push(violationScope);\n constantViolations.push(violation);\n\n if (violationScope === path.scope) {\n constantViolations = [violation];\n break;\n }\n }*/\n\n // add back on function constant violations since we can't track calls\n constantViolations.push(...functionConstantViolations);\n\n // push on inferred types of violated paths\n for (const violation of constantViolations) {\n types.push(violation.getTypeAnnotation());\n }\n }\n\n if (!types.length) {\n return;\n }\n\n return createUnionType(types);\n}\n\nfunction getConstantViolationsBefore(\n binding: Binding,\n path: NodePath,\n functions?: NodePath[],\n) {\n const violations = binding.constantViolations.slice();\n violations.unshift(binding.path);\n return violations.filter(violation => {\n violation = violation.resolve();\n const status = violation._guessExecutionStatusRelativeTo(path);\n if (functions && status === \"unknown\") functions.push(violation);\n return status === \"before\";\n });\n}\n\nfunction inferAnnotationFromBinaryExpression(\n name: string,\n path: NodePath<t.BinaryExpression>,\n) {\n const operator = path.node.operator;\n\n const right = path.get(\"right\").resolve();\n const left = path.get(\"left\").resolve();\n\n let target;\n if (left.isIdentifier({ name })) {\n target = right;\n } else if (right.isIdentifier({ name })) {\n target = left;\n }\n\n if (target) {\n if (operator === \"===\") {\n return target.getTypeAnnotation();\n }\n if (BOOLEAN_NUMBER_BINARY_OPERATORS.includes(operator)) {\n return numberTypeAnnotation();\n }\n\n return;\n }\n\n if (operator !== \"===\" && operator !== \"==\") return;\n\n let typeofPath: NodePath<t.UnaryExpression>;\n let typePath: NodePath<t.Expression>;\n if (left.isUnaryExpression({ operator: \"typeof\" })) {\n typeofPath = left;\n typePath = right as NodePath<t.Expression>;\n } else if (right.isUnaryExpression({ operator: \"typeof\" })) {\n typeofPath = right;\n typePath = left as NodePath<t.Expression>;\n }\n\n if (!typeofPath) return;\n // and that the argument of the typeof path references us!\n if (!typeofPath.get(\"argument\").isIdentifier({ name })) return;\n\n // ensure that the type path is a Literal\n typePath = typePath.resolve() as NodePath<t.Expression>;\n if (!typePath.isLiteral()) return;\n\n // and that it's a string so we can infer it\n // @ts-expect-error todo(flow->ts): value is not defined for NullLiteral and some other\n const typeValue = typePath.node.value;\n if (typeof typeValue !== \"string\") return;\n\n // turn type value into a type annotation\n // @ts-expect-error todo(flow->ts): move validation from helper or relax type constraint to just a string\n return createTypeAnnotationBasedOnTypeof(typeValue);\n}\n\nfunction getParentConditionalPath(\n binding: Binding,\n path: NodePath,\n name: string,\n) {\n let parentPath;\n while ((parentPath = path.parentPath)) {\n if (parentPath.isIfStatement() || parentPath.isConditionalExpression()) {\n if (path.key === \"test\") {\n return;\n }\n\n return parentPath as NodePath<t.IfStatement | t.ConditionalExpression>;\n }\n if (parentPath.isFunction()) {\n if (parentPath.parentPath.scope.getBinding(name) !== binding) return;\n }\n\n path = parentPath;\n }\n}\n\nfunction getConditionalAnnotation<T extends t.Node>(\n binding: Binding,\n path: NodePath<T>,\n name?: string,\n): {\n typeAnnotation: t.FlowType | t.TSType;\n ifStatement: NodePath<t.IfStatement | t.ConditionalExpression>;\n} {\n const ifStatement = getParentConditionalPath(binding, path, name);\n if (!ifStatement) return;\n\n const test = ifStatement.get(\"test\");\n const paths = [test];\n const types = [];\n\n for (let i = 0; i < paths.length; i++) {\n const path = paths[i];\n\n if (path.isLogicalExpression()) {\n if (path.node.operator === \"&&\") {\n paths.push(path.get(\"left\"));\n paths.push(path.get(\"right\"));\n }\n } else if (path.isBinaryExpression()) {\n const type = inferAnnotationFromBinaryExpression(name, path);\n if (type) types.push(type);\n }\n }\n\n if (types.length) {\n return {\n typeAnnotation: createUnionType(types),\n ifStatement,\n };\n }\n\n return getConditionalAnnotation(binding, ifStatement, name);\n}\n","import {\n BOOLEAN_BINARY_OPERATORS,\n BOOLEAN_UNARY_OPERATORS,\n NUMBER_BINARY_OPERATORS,\n NUMBER_UNARY_OPERATORS,\n STRING_UNARY_OPERATORS,\n anyTypeAnnotation,\n arrayTypeAnnotation,\n booleanTypeAnnotation,\n buildMatchMemberExpression,\n genericTypeAnnotation,\n identifier,\n nullLiteralTypeAnnotation,\n numberTypeAnnotation,\n stringTypeAnnotation,\n tupleTypeAnnotation,\n unionTypeAnnotation,\n voidTypeAnnotation,\n isIdentifier,\n} from \"@babel/types\";\nimport type * as t from \"@babel/types\";\n\nexport { default as Identifier } from \"./inferer-reference.ts\";\n\nimport { createUnionType } from \"./util.ts\";\nimport type NodePath from \"../index.ts\";\n\nexport function VariableDeclarator(this: NodePath<t.VariableDeclarator>) {\n if (!this.get(\"id\").isIdentifier()) return;\n return this.get(\"init\").getTypeAnnotation();\n}\n\nexport function TypeCastExpression(node: t.TypeCastExpression) {\n return node.typeAnnotation;\n}\n\nTypeCastExpression.validParent = true;\n\nexport function TSAsExpression(node: t.TSAsExpression) {\n return node.typeAnnotation;\n}\n\nTSAsExpression.validParent = true;\n\nexport function TSNonNullExpression(this: NodePath<t.TSNonNullExpression>) {\n return this.get(\"expression\").getTypeAnnotation();\n}\n\nexport function NewExpression(\n this: NodePath<t.NewExpression>,\n node: t.NewExpression,\n) {\n if (node.callee.type === \"Identifier\") {\n // only resolve identifier callee\n return genericTypeAnnotation(node.callee);\n }\n}\n\nexport function TemplateLiteral() {\n return stringTypeAnnotation();\n}\n\nexport function UnaryExpression(node: t.UnaryExpression) {\n const operator = node.operator;\n\n if (operator === \"void\") {\n return voidTypeAnnotation();\n } else if (NUMBER_UNARY_OPERATORS.includes(operator)) {\n return numberTypeAnnotation();\n } else if (STRING_UNARY_OPERATORS.includes(operator)) {\n return stringTypeAnnotation();\n } else if (BOOLEAN_UNARY_OPERATORS.includes(operator)) {\n return booleanTypeAnnotation();\n }\n}\n\nexport function BinaryExpression(\n this: NodePath<t.BinaryExpression>,\n node: t.BinaryExpression,\n) {\n const operator = node.operator;\n\n if (NUMBER_BINARY_OPERATORS.includes(operator)) {\n return numberTypeAnnotation();\n } else if (BOOLEAN_BINARY_OPERATORS.includes(operator)) {\n return booleanTypeAnnotation();\n } else if (operator === \"+\") {\n const right = this.get(\"right\");\n const left = this.get(\"left\");\n\n if (left.isBaseType(\"number\") && right.isBaseType(\"number\")) {\n // both numbers so this will be a number\n return numberTypeAnnotation();\n } else if (left.isBaseType(\"string\") || right.isBaseType(\"string\")) {\n // one is a string so the result will be a string\n return stringTypeAnnotation();\n }\n\n // unsure if left and right are strings or numbers so stay on the safe side\n return unionTypeAnnotation([\n stringTypeAnnotation(),\n numberTypeAnnotation(),\n ]);\n }\n}\n\nexport function LogicalExpression(this: NodePath<t.LogicalExpression>) {\n const argumentTypes = [\n this.get(\"left\").getTypeAnnotation(),\n this.get(\"right\").getTypeAnnotation(),\n ];\n\n return createUnionType(argumentTypes);\n}\n\nexport function ConditionalExpression(this: NodePath<t.ConditionalExpression>) {\n const argumentTypes = [\n this.get(\"consequent\").getTypeAnnotation(),\n this.get(\"alternate\").getTypeAnnotation(),\n ];\n\n return createUnionType(argumentTypes);\n}\n\nexport function SequenceExpression(this: NodePath<t.SequenceExpression>) {\n return this.get(\"expressions\").pop().getTypeAnnotation();\n}\n\nexport function ParenthesizedExpression(\n this: NodePath<t.ParenthesizedExpression>,\n) {\n return this.get(\"expression\").getTypeAnnotation();\n}\n\nexport function AssignmentExpression(this: NodePath<t.AssignmentExpression>) {\n return this.get(\"right\").getTypeAnnotation();\n}\n\nexport function UpdateExpression(\n this: NodePath<t.UpdateExpression>,\n node: t.UpdateExpression,\n) {\n const operator = node.operator;\n if (operator === \"++\" || operator === \"--\") {\n return numberTypeAnnotation();\n }\n}\n\nexport function StringLiteral() {\n return stringTypeAnnotation();\n}\n\nexport function NumericLiteral() {\n return numberTypeAnnotation();\n}\n\nexport function BooleanLiteral() {\n return booleanTypeAnnotation();\n}\n\nexport function NullLiteral() {\n return nullLiteralTypeAnnotation();\n}\n\nexport function RegExpLiteral() {\n return genericTypeAnnotation(identifier(\"RegExp\"));\n}\n\nexport function ObjectExpression() {\n return genericTypeAnnotation(identifier(\"Object\"));\n}\n\nexport function ArrayExpression() {\n return genericTypeAnnotation(identifier(\"Array\"));\n}\n\nexport function RestElement() {\n return ArrayExpression();\n}\n\nRestElement.validParent = true;\n\nfunction Func() {\n return genericTypeAnnotation(identifier(\"Function\"));\n}\n\nexport {\n Func as FunctionExpression,\n Func as ArrowFunctionExpression,\n Func as FunctionDeclaration,\n Func as ClassExpression,\n Func as ClassDeclaration,\n};\n\nconst isArrayFrom = buildMatchMemberExpression(\"Array.from\");\nconst isObjectKeys = buildMatchMemberExpression(\"Object.keys\");\nconst isObjectValues = buildMatchMemberExpression(\"Object.values\");\nconst isObjectEntries = buildMatchMemberExpression(\"Object.entries\");\nexport function CallExpression(this: NodePath<t.CallExpression>) {\n const { callee } = this.node;\n if (isObjectKeys(callee)) {\n return arrayTypeAnnotation(stringTypeAnnotation());\n } else if (\n isArrayFrom(callee) ||\n isObjectValues(callee) ||\n // Detect \"var foo = Array()\" calls so we can optimize for arrays vs iterables.\n isIdentifier(callee, { name: \"Array\" })\n ) {\n return arrayTypeAnnotation(anyTypeAnnotation());\n } else if (isObjectEntries(callee)) {\n return arrayTypeAnnotation(\n tupleTypeAnnotation([stringTypeAnnotation(), anyTypeAnnotation()]),\n );\n }\n\n return resolveCall(this.get(\"callee\"));\n}\n\nexport function TaggedTemplateExpression(\n this: NodePath<t.TaggedTemplateExpression>,\n) {\n return resolveCall(this.get(\"tag\"));\n}\n\nfunction resolveCall(callee: NodePath) {\n callee = callee.resolve();\n\n if (callee.isFunction()) {\n const { node } = callee;\n if (node.async) {\n if (node.generator) {\n return genericTypeAnnotation(identifier(\"AsyncIterator\"));\n } else {\n return genericTypeAnnotation(identifier(\"Promise\"));\n }\n } else {\n if (node.generator) {\n return genericTypeAnnotation(identifier(\"Iterator\"));\n } else if (callee.node.returnType) {\n return callee.node.returnType;\n } else {\n // todo: get union type of all return arguments\n }\n }\n }\n}\n","import type NodePath from \"../index.ts\";\nimport * as inferers from \"./inferers.ts\";\nimport {\n anyTypeAnnotation,\n isAnyTypeAnnotation,\n isArrayTypeAnnotation,\n isBooleanTypeAnnotation,\n isEmptyTypeAnnotation,\n isFlowBaseAnnotation,\n isGenericTypeAnnotation,\n isIdentifier,\n isMixedTypeAnnotation,\n isNumberTypeAnnotation,\n isStringTypeAnnotation,\n isTSArrayType,\n isTSTypeAnnotation,\n isTSTypeReference,\n isTupleTypeAnnotation,\n isTypeAnnotation,\n isUnionTypeAnnotation,\n isVoidTypeAnnotation,\n stringTypeAnnotation,\n voidTypeAnnotation,\n} from \"@babel/types\";\nimport type * as t from \"@babel/types\";\n\n/**\n * Infer the type of the current `NodePath`.\n */\n\nexport function getTypeAnnotation(this: NodePath): t.FlowType | t.TSType {\n let type = this.getData(\"typeAnnotation\");\n if (type != null) {\n return type;\n }\n type = _getTypeAnnotation.call(this) || anyTypeAnnotation();\n if (isTypeAnnotation(type) || isTSTypeAnnotation(type)) {\n type = type.typeAnnotation;\n }\n this.setData(\"typeAnnotation\", type);\n return type;\n}\n\n// Used to avoid infinite recursion in cases like\n// var b, c; if (0) { c = 1; b = c; } c = b;\n// It also works with indirect recursion.\nconst typeAnnotationInferringNodes = new WeakSet();\n\n/**\n * todo: split up this method\n */\n\nexport function _getTypeAnnotation(this: NodePath): any {\n const node = this.node;\n\n if (!node) {\n // handle initializerless variables, add in checks for loop initializers too\n if (this.key === \"init\" && this.parentPath.isVariableDeclarator()) {\n const declar = this.parentPath.parentPath;\n const declarParent = declar.parentPath;\n\n // for (let NODE in bar) {}\n if (declar.key === \"left\" && declarParent.isForInStatement()) {\n return stringTypeAnnotation();\n }\n\n // for (let NODE of bar) {}\n if (declar.key === \"left\" && declarParent.isForOfStatement()) {\n return anyTypeAnnotation();\n }\n\n return voidTypeAnnotation();\n } else {\n return;\n }\n }\n\n // @ts-expect-error typeAnnotation may not index node\n if (node.typeAnnotation) {\n // @ts-expect-error typeAnnotation may not index node\n return node.typeAnnotation;\n }\n\n if (typeAnnotationInferringNodes.has(node)) {\n // Bail out from type inference to avoid infinite loops\n return;\n }\n typeAnnotationInferringNodes.add(node);\n\n try {\n let inferer =\n // @ts-expect-error inferers do not cover all AST types\n inferers[node.type];\n if (inferer) {\n return inferer.call(this, node);\n }\n\n // @ts-expect-error inferers do not cover all AST types\n inferer = inferers[this.parentPath.type];\n if (inferer?.validParent) {\n return this.parentPath.getTypeAnnotation();\n }\n } finally {\n typeAnnotationInferringNodes.delete(node);\n }\n}\n\nexport function isBaseType(\n this: NodePath,\n baseName: string,\n soft?: boolean,\n): boolean {\n return _isBaseType(baseName, this.getTypeAnnotation(), soft);\n}\n\nfunction _isBaseType(\n baseName: string,\n type?: t.FlowType | t.TSType,\n soft?: boolean,\n): boolean {\n if (baseName === \"string\") {\n return isStringTypeAnnotation(type);\n } else if (baseName === \"number\") {\n return isNumberTypeAnnotation(type);\n } else if (baseName === \"boolean\") {\n return isBooleanTypeAnnotation(type);\n } else if (baseName === \"any\") {\n return isAnyTypeAnnotation(type);\n } else if (baseName === \"mixed\") {\n return isMixedTypeAnnotation(type);\n } else if (baseName === \"empty\") {\n return isEmptyTypeAnnotation(type);\n } else if (baseName === \"void\") {\n return isVoidTypeAnnotation(type);\n } else {\n if (soft) {\n return false;\n } else {\n throw new Error(`Unknown base type ${baseName}`);\n }\n }\n}\n\nexport function couldBeBaseType(this: NodePath, name: string): boolean {\n const type = this.getTypeAnnotation();\n if (isAnyTypeAnnotation(type)) return true;\n\n if (isUnionTypeAnnotation(type)) {\n for (const type2 of type.types) {\n if (isAnyTypeAnnotation(type2) || _isBaseType(name, type2, true)) {\n return true;\n }\n }\n return false;\n } else {\n return _isBaseType(name, type, true);\n }\n}\n\nexport function baseTypeStrictlyMatches(\n this: NodePath,\n rightArg: NodePath,\n): boolean {\n const left = this.getTypeAnnotation();\n const right = rightArg.getTypeAnnotation();\n\n if (!isAnyTypeAnnotation(left) && isFlowBaseAnnotation(left)) {\n return right.type === left.type;\n }\n return false;\n}\n\nexport function isGenericType(this: NodePath, genericName: string): boolean {\n const type = this.getTypeAnnotation();\n if (genericName === \"Array\") {\n // T[]\n if (\n isTSArrayType(type) ||\n isArrayTypeAnnotation(type) ||\n isTupleTypeAnnotation(type)\n ) {\n return true;\n }\n }\n return (\n (isGenericTypeAnnotation(type) &&\n isIdentifier(type.id, {\n name: genericName,\n })) ||\n (isTSTypeReference(type) &&\n isIdentifier(type.typeName, {\n name: genericName,\n }))\n );\n}\n","// this file contains hooks that handle ancestry cleanup of parent nodes when removing children\n\nimport type NodePath from \"../index.ts\";\nimport type * as t from \"@babel/types\";\n/**\n * Pre hooks should be used for either rejecting removal or delegating removal\n */\n\nexport const hooks = [\n function (self: NodePath, parent: NodePath) {\n const removeParent =\n // while (NODE);\n // removing the test of a while/switch, we can either just remove it entirely *or* turn the\n // `test` into `true` unlikely that the latter will ever be what's wanted so we just remove\n // the loop to avoid infinite recursion\n (self.key === \"test\" && (parent.isWhile() || parent.isSwitchCase())) ||\n // export NODE;\n // just remove a declaration for an export as this is no longer valid\n (self.key === \"declaration\" && parent.isExportDeclaration()) ||\n // label: NODE\n // stray labeled statement with no body\n (self.key === \"body\" && parent.isLabeledStatement()) ||\n // let NODE;\n // remove an entire declaration if there are no declarators left\n (self.listKey === \"declarations\" &&\n parent.isVariableDeclaration() &&\n parent.node.declarations.length === 1) ||\n // NODE;\n // remove the entire expression statement if there's no expression\n (self.key === \"expression\" && parent.isExpressionStatement());\n\n if (removeParent) {\n parent.remove();\n return true;\n }\n },\n\n function (self: NodePath, parent: NodePath) {\n if (parent.isSequenceExpression() && parent.node.expressions.length === 1) {\n // (node, NODE);\n // we've just removed the second element of a sequence expression so let's turn that sequence\n // expression into a regular expression\n parent.replaceWith(parent.node.expressions[0]);\n return true;\n }\n },\n\n function (self: NodePath, parent: NodePath) {\n if (parent.isBinary()) {\n // left + NODE;\n // NODE + right;\n // we're in a binary expression, better remove it and replace it with the last expression\n if (self.key === \"left\") {\n parent.replaceWith(parent.node.right);\n } else {\n // key === \"right\"\n parent.replaceWith(parent.node.left);\n }\n return true;\n }\n },\n\n function (self: NodePath, parent: NodePath) {\n if (\n (parent.isIfStatement() && self.key === \"consequent\") ||\n (self.key === \"body\" &&\n (parent.isLoop() || parent.isArrowFunctionExpression()))\n ) {\n self.replaceWith({\n type: \"BlockStatement\",\n body: [],\n } as t.BlockStatement);\n return true;\n }\n },\n];\n","// This file contains methods responsible for removing a node.\n\nimport { hooks } from \"./lib/removal-hooks.ts\";\nimport { getCachedPaths } from \"../cache.ts\";\nimport { _replaceWith } from \"./replacement.ts\";\nimport type NodePath from \"./index.ts\";\nimport { REMOVED, SHOULD_SKIP } from \"./index.ts\";\nimport { getBindingIdentifiers } from \"@babel/types\";\nimport { updateSiblingKeys } from \"./modification.ts\";\nimport { resync } from \"./context.ts\";\n\nexport function remove(this: NodePath) {\n _assertUnremoved.call(this);\n\n resync.call(this);\n\n if (_callRemovalHooks.call(this)) {\n _markRemoved.call(this);\n return;\n }\n\n if (!this.opts?.noScope) {\n _removeFromScope.call(this);\n }\n\n this.shareCommentsWithSiblings();\n _remove.call(this);\n _markRemoved.call(this);\n}\n\nexport function _removeFromScope(this: NodePath) {\n const bindings = getBindingIdentifiers(this.node, false, false, true);\n Object.keys(bindings).forEach(name => this.scope.removeBinding(name));\n}\n\nexport function _callRemovalHooks(this: NodePath) {\n if (this.parentPath) {\n for (const fn of hooks) {\n if (fn(this, this.parentPath)) return true;\n }\n }\n}\n\nexport function _remove(this: NodePath) {\n if (Array.isArray(this.container)) {\n this.container.splice(this.key as number, 1);\n updateSiblingKeys.call(this, this.key as number, -1);\n } else {\n _replaceWith.call(this, null);\n }\n}\n\nexport function _markRemoved(this: NodePath) {\n // this.shouldSkip = true; this.removed = true;\n this._traverseFlags |= SHOULD_SKIP | REMOVED;\n if (this.parent) {\n getCachedPaths(this.hub, this.parent).delete(this.node);\n }\n this.node = null;\n}\n\nexport function _assertUnremoved(this: NodePath) {\n if (this.removed) {\n throw this.buildCodeFrameError(\n \"NodePath has been removed so is read-only.\",\n );\n }\n}\n","// This file contains methods that modify the path/node in some ways.\n\nimport { getCachedPaths } from \"../cache.ts\";\nimport NodePath from \"./index.ts\";\nimport { _getQueueContexts, pushContext, setScope } from \"./context.ts\";\nimport { _assertUnremoved } from \"./removal.ts\";\nimport {\n arrowFunctionExpression,\n assertExpression,\n assignmentExpression,\n blockStatement,\n callExpression,\n cloneNode,\n expressionStatement,\n isAssignmentExpression,\n isCallExpression,\n isExportNamedDeclaration,\n isExpression,\n isIdentifier,\n isSequenceExpression,\n isSuper,\n thisExpression,\n} from \"@babel/types\";\nimport type * as t from \"@babel/types\";\nimport type Scope from \"../scope/index.ts\";\n\n/**\n * Insert the provided nodes before the current one.\n */\n\nexport function insertBefore(\n this: NodePath,\n nodes_: t.Node | t.Node[],\n): NodePath[] {\n _assertUnremoved.call(this);\n\n const nodes = _verifyNodeList.call(this, nodes_);\n\n const { parentPath, parent } = this;\n\n if (\n parentPath.isExpressionStatement() ||\n parentPath.isLabeledStatement() ||\n // https://github.com/babel/babel/issues/15293\n // When Babel transforms `export class String { field }`, the class properties plugin will inject the defineProperty\n // helper, which depends on the builtins e.g. String, Number, Symbol, etc. To prevent them from being shadowed by local\n // exports, the helper injector replaces the named export into `class _String { field }; export { _String as String }`,\n // with `parentPath` here changed to the moved ClassDeclaration, causing rare inconsistency between `parent` and `parentPath`.\n // Here we retrieve the parent type from the `parent` property. This is a temporary fix and we should revisit when\n // helpers should get injected.\n isExportNamedDeclaration(parent) ||\n (parentPath.isExportDefaultDeclaration() && this.isDeclaration())\n ) {\n return parentPath.insertBefore(nodes);\n } else if (\n (this.isNodeType(\"Expression\") && !this.isJSXElement()) ||\n (parentPath.isForStatement() && this.key === \"init\")\n ) {\n if (this.node) nodes.push(this.node);\n // @ts-expect-error todo(flow->ts): check that nodes is an array of statements\n return this.replaceExpressionWithStatements(nodes);\n } else if (Array.isArray(this.container)) {\n return _containerInsertBefore.call(this, nodes);\n } else if (this.isStatementOrBlock()) {\n const node = this.node as t.Statement;\n const shouldInsertCurrentNode =\n node &&\n (!this.isExpressionStatement() ||\n (node as t.ExpressionStatement).expression != null);\n\n this.replaceWith(blockStatement(shouldInsertCurrentNode ? [node] : []));\n return (this as NodePath<t.BlockStatement>).unshiftContainer(\n \"body\",\n // @ts-expect-error Fixme: refine nodes to t.BlockStatement[\"body\"] when this is a BlockStatement path\n nodes,\n );\n } else {\n throw new Error(\n \"We don't know what to do with this node type. \" +\n \"We were previously a Statement but we can't fit in here?\",\n );\n }\n}\n\nexport function _containerInsert<N extends t.Node>(\n this: NodePath,\n from: number,\n nodes: N[],\n): NodePath<N>[] {\n updateSiblingKeys.call(this, from, nodes.length);\n\n const paths: NodePath<N>[] = [];\n\n // @ts-expect-error todo(flow->ts): this.container could be a NodePath\n this.container.splice(from, 0, ...nodes);\n for (let i = 0; i < nodes.length; i++) {\n const to = from + i;\n const path = this.getSibling(to) as NodePath<N>;\n paths.push(path);\n\n if (this.context?.queue) {\n pushContext.call(path, this.context);\n }\n }\n\n const contexts = _getQueueContexts.call(this);\n\n for (const path of paths) {\n setScope.call(path);\n path.debug(\"Inserted.\");\n\n for (const context of contexts) {\n context.maybeQueue(path, true);\n }\n }\n\n return paths;\n}\n\nexport function _containerInsertBefore<N extends t.Node>(\n this: NodePath,\n nodes: N[],\n) {\n return _containerInsert.call(this, this.key as number, nodes);\n}\n\nexport function _containerInsertAfter<N extends t.Node>(\n this: NodePath,\n nodes: N[],\n) {\n return _containerInsert.call(this, (this.key as number) + 1, nodes);\n}\n\nconst last = <T>(arr: T[]) => arr[arr.length - 1];\n\nfunction isHiddenInSequenceExpression(path: NodePath): boolean {\n return (\n isSequenceExpression(path.parent) &&\n (last(path.parent.expressions) !== path.node ||\n isHiddenInSequenceExpression(path.parentPath))\n );\n}\n\nfunction isAlmostConstantAssignment(\n node: t.Node,\n scope: Scope,\n): node is t.AssignmentExpression & { left: t.Identifier } {\n if (!isAssignmentExpression(node) || !isIdentifier(node.left)) {\n return false;\n }\n\n // Not every scope can contain variables. For example, we might be in\n // a ClassScope either in the ClassHeritage or in a computed key.\n const blockScope = scope.getBlockParent();\n\n // If the variable is defined in the current scope and only assigned here,\n // we can be sure that its value won't change.\n return (\n blockScope.hasOwnBinding(node.left.name) &&\n blockScope.getOwnBinding(node.left.name).constantViolations.length <= 1\n );\n}\n\n/**\n * Insert the provided nodes after the current one. When inserting nodes after an\n * expression, ensure that the completion record is correct by pushing the current node.\n */\n\nexport function insertAfter(\n this: NodePath,\n nodes_: t.Node | t.Node[],\n): NodePath[] {\n _assertUnremoved.call(this);\n\n if (this.isSequenceExpression()) {\n return last(this.get(\"expressions\")).insertAfter(nodes_);\n }\n\n const nodes = _verifyNodeList.call(this, nodes_);\n\n const { parentPath, parent } = this;\n if (\n parentPath.isExpressionStatement() ||\n parentPath.isLabeledStatement() ||\n // see insertBefore\n isExportNamedDeclaration(parent) ||\n (parentPath.isExportDefaultDeclaration() && this.isDeclaration())\n ) {\n return parentPath.insertAfter(\n nodes.map(node => {\n // Usually after an expression we can safely insert another expression:\n // A.insertAfter(B)\n // foo = A; -> foo = (A, B);\n // If A is an expression statement, it isn't safe anymore so we need to\n // convert B to an expression statement\n // A; -> A; B // No semicolon! It could break if followed by [!\n return isExpression(node) ? expressionStatement(node) : node;\n }),\n );\n } else if (\n (this.isNodeType(\"Expression\") &&\n !this.isJSXElement() &&\n !parentPath.isJSXElement()) ||\n (parentPath.isForStatement() && this.key === \"init\")\n ) {\n const self = this as NodePath<t.Expression | t.VariableDeclaration>;\n if (self.node) {\n const node = self.node;\n let { scope } = this;\n\n if (scope.path.isPattern()) {\n assertExpression(node);\n\n self.replaceWith(callExpression(arrowFunctionExpression([], node), []));\n (self.get(\"callee.body\") as NodePath<t.Expression>).insertAfter(nodes);\n return [self];\n }\n\n if (isHiddenInSequenceExpression(self)) {\n nodes.unshift(node);\n }\n // We need to preserve the value of this expression.\n else if (isCallExpression(node) && isSuper(node.callee)) {\n nodes.unshift(node);\n // `super(...)` always evaluates to `this`.\n nodes.push(thisExpression());\n } else if (isAlmostConstantAssignment(node, scope)) {\n nodes.unshift(node);\n nodes.push(cloneNode(node.left));\n } else if (scope.isPure(node, true)) {\n // Insert the nodes before rather than after; it's not observable.\n nodes.push(node);\n } else {\n // Inserting after the computed key of a method should insert the\n // temporary binding in the method's parent's scope.\n if (parentPath.isMethod({ computed: true, key: node })) {\n scope = scope.parent;\n }\n const temp = scope.generateDeclaredUidIdentifier();\n nodes.unshift(\n expressionStatement(\n // @ts-expect-error todo(flow->ts): This can be a variable\n // declaration in the \"init\" of a for statement, but that's\n // invalid here.\n assignmentExpression(\"=\", cloneNode(temp), node),\n ),\n );\n nodes.push(expressionStatement(cloneNode(temp)));\n }\n }\n // @ts-expect-error todo(flow->ts): check that nodes is an array of statements\n return this.replaceExpressionWithStatements(nodes);\n } else if (Array.isArray(this.container)) {\n return _containerInsertAfter.call(this, nodes);\n } else if (this.isStatementOrBlock()) {\n const node = this.node as t.Statement;\n const shouldInsertCurrentNode =\n node &&\n (!this.isExpressionStatement() ||\n (node as t.ExpressionStatement).expression != null);\n\n this.replaceWith(blockStatement(shouldInsertCurrentNode ? [node] : []));\n // @ts-expect-error Fixme: refine nodes to t.BlockStatement[\"body\"] when this is a BlockStatement path\n return this.pushContainer(\"body\", nodes);\n } else {\n throw new Error(\n \"We don't know what to do with this node type. \" +\n \"We were previously a Statement but we can't fit in here?\",\n );\n }\n}\n\n/**\n * Update all sibling node paths after `fromIndex` by `incrementBy`.\n */\n\nexport function updateSiblingKeys(\n this: NodePath,\n fromIndex: number,\n incrementBy: number,\n) {\n if (!this.parent) return;\n\n const paths = getCachedPaths(this.hub, this.parent) || ([] as never[]);\n\n for (const [, path] of paths) {\n if (\n typeof path.key === \"number\" &&\n path.container === this.container &&\n path.key >= fromIndex\n ) {\n path.key += incrementBy;\n }\n }\n}\n\nexport function _verifyNodeList<N extends t.Node>(\n this: NodePath,\n nodes: N | N[],\n): N[] {\n if (!nodes) {\n return [];\n }\n\n if (!Array.isArray(nodes)) {\n nodes = [nodes];\n }\n\n for (let i = 0; i < nodes.length; i++) {\n const node = nodes[i];\n let msg;\n\n if (!node) {\n msg = \"has falsy node\";\n } else if (typeof node !== \"object\") {\n msg = \"contains a non-object node\";\n } else if (!node.type) {\n msg = \"without a type\";\n } else if (node instanceof NodePath) {\n msg = \"has a NodePath when it expected a raw object\";\n }\n\n if (msg) {\n const type = Array.isArray(node) ? \"array\" : typeof node;\n throw new Error(\n `Node list ${msg} with the index of ${i} and type of ${type}`,\n );\n }\n }\n\n return nodes;\n}\n\nexport function unshiftContainer<N extends t.Node, K extends keyof N & string>(\n this: NodePath<N>,\n listKey: K,\n nodes: N[K] extends (infer E)[]\n ? E | E[]\n : // todo: refine to t.Node[]\n // ? E extends t.Node\n // ? E | E[]\n // : never\n never,\n) {\n // todo: NodePaths<Nodes>\n _assertUnremoved.call(this);\n\n // @ts-expect-error fixme\n nodes = _verifyNodeList.call(this, nodes);\n\n // get the first path and insert our nodes before it, if it doesn't exist then it\n // doesn't matter, our nodes will be inserted anyway\n const path = NodePath.get({\n parentPath: this,\n parent: this.node,\n container: (this.node as N)[listKey] as unknown as t.Node | t.Node[],\n listKey,\n key: 0,\n }).setContext(this.context);\n\n return _containerInsertBefore.call(\n path,\n // @ts-expect-error typings needed to narrow down nodes as t.Node[]\n nodes,\n );\n}\n\nexport function pushContainer<\n P extends NodePath,\n K extends string & keyof P[\"node\"],\n>(\n this: P,\n listKey: K,\n nodes: P[\"node\"][K] extends (infer E)[]\n ? E | E[]\n : // todo: refine to t.Node[]\n // ? E extends t.Node\n // ? E | E[]\n // : never\n never,\n) {\n _assertUnremoved.call(this);\n\n const verifiedNodes = _verifyNodeList.call(\n this,\n // @ts-expect-error refine typings\n nodes,\n );\n\n // get an invisible path that represents the last node + 1 and replace it with our\n // nodes, effectively inlining it\n\n const container = (this.node as P[\"node\"])[listKey] as t.Node[];\n const path = NodePath.get({\n parentPath: this,\n parent: this.node,\n container: container as unknown as t.Node | t.Node[],\n listKey,\n key: container.length,\n }).setContext(this.context);\n\n return path.replaceWithMultiple(verifiedNodes);\n}\n\nimport PathHoister from \"./lib/hoister.ts\" with { if: \"!process.env.BABEL_8_BREAKING && !USE_ESM\" };\nif (!process.env.BABEL_8_BREAKING && !USE_ESM) {\n /**\n * Hoist the current node to the highest scope possible and return a UID\n * referencing it.\n */\n // eslint-disable-next-line no-restricted-globals\n exports.hoist = function hoist<T extends t.Node>(\n this: NodePath<T>,\n scope: Scope = this.scope,\n ) {\n const hoister = new PathHoister<T>(this, scope);\n return hoister.run();\n };\n}\n","// This file contains methods responsible for replacing a node with another.\n\nimport { codeFrameColumns } from \"@babel/code-frame\";\nimport traverse from \"../index.ts\";\nimport NodePath from \"./index.ts\";\nimport { getCachedPaths } from \"../cache.ts\";\nimport { _verifyNodeList, _containerInsertAfter } from \"./modification.ts\";\nimport { parse } from \"@babel/parser\";\nimport {\n FUNCTION_TYPES,\n arrowFunctionExpression,\n assignmentExpression,\n awaitExpression,\n blockStatement,\n buildUndefinedNode,\n callExpression,\n cloneNode,\n conditionalExpression,\n expressionStatement,\n getBindingIdentifiers,\n identifier,\n inheritLeadingComments,\n inheritTrailingComments,\n inheritsComments,\n isBlockStatement,\n isEmptyStatement,\n isExpression,\n isExpressionStatement,\n isIfStatement,\n isProgram,\n isStatement,\n isVariableDeclaration,\n removeComments,\n returnStatement,\n sequenceExpression,\n validate,\n yieldExpression,\n} from \"@babel/types\";\nimport type * as t from \"@babel/types\";\nimport { resync, setScope } from \"./context.ts\";\n\n/**\n * Replace a node with an array of multiple. This method performs the following steps:\n *\n * - Inherit the comments of first provided node with that of the current node.\n * - Insert the provided nodes after the current node.\n * - Remove the current node.\n */\n\nexport function replaceWithMultiple(\n this: NodePath,\n nodes: t.Node | t.Node[],\n): NodePath[] {\n resync.call(this);\n\n nodes = _verifyNodeList.call(this, nodes);\n inheritLeadingComments(nodes[0], this.node);\n inheritTrailingComments(nodes[nodes.length - 1], this.node);\n getCachedPaths(this.hub, this.parent)?.delete(this.node);\n this.node =\n // @ts-expect-error this.key must present in this.container\n this.container[this.key] = null;\n const paths = this.insertAfter(nodes);\n\n if (this.node) {\n this.requeue();\n } else {\n this.remove();\n }\n return paths;\n}\n\n/**\n * Parse a string as an expression and replace the current node with the result.\n *\n * NOTE: This is typically not a good idea to use. Building source strings when\n * transforming ASTs is an antipattern and SHOULD NOT be encouraged. Even if it's\n * easier to use, your transforms will be extremely brittle.\n */\n\nexport function replaceWithSourceString(this: NodePath, replacement: string) {\n resync.call(this);\n let ast: t.File;\n\n try {\n replacement = `(${replacement})`;\n ast = parse(replacement);\n } catch (err) {\n const loc = err.loc;\n if (loc) {\n err.message +=\n \" - make sure this is an expression.\\n\" +\n codeFrameColumns(replacement, {\n start: {\n line: loc.line,\n column: loc.column + 1,\n },\n });\n err.code = \"BABEL_REPLACE_SOURCE_ERROR\";\n }\n throw err;\n }\n\n const expressionAST = (ast.program.body[0] as t.ExpressionStatement)\n .expression;\n traverse.removeProperties(expressionAST);\n return this.replaceWith(expressionAST);\n}\n\n/**\n * Replace the current node with another.\n */\nexport function replaceWith<R extends t.Node>(\n this: NodePath,\n replacementPath: R,\n): [NodePath<R>];\nexport function replaceWith<R extends NodePath>(\n this: NodePath,\n replacementPath: R,\n): [R];\nexport function replaceWith(\n this: NodePath,\n replacementPath: t.Node | NodePath,\n): [NodePath] {\n resync.call(this);\n\n if (this.removed) {\n throw new Error(\"You can't replace this node, we've already removed it\");\n }\n\n let replacement: t.Node =\n replacementPath instanceof NodePath\n ? replacementPath.node\n : replacementPath;\n\n if (!replacement) {\n throw new Error(\n \"You passed `path.replaceWith()` a falsy node, use `path.remove()` instead\",\n );\n }\n\n if (this.node === replacement) {\n return [this];\n }\n\n if (this.isProgram() && !isProgram(replacement)) {\n throw new Error(\n \"You can only replace a Program root node with another Program node\",\n );\n }\n\n if (Array.isArray(replacement)) {\n throw new Error(\n \"Don't use `path.replaceWith()` with an array of nodes, use `path.replaceWithMultiple()`\",\n );\n }\n\n if (typeof replacement === \"string\") {\n throw new Error(\n \"Don't use `path.replaceWith()` with a source string, use `path.replaceWithSourceString()`\",\n );\n }\n\n let nodePath = \"\";\n\n if (this.isNodeType(\"Statement\") && isExpression(replacement)) {\n if (\n !this.canHaveVariableDeclarationOrExpression() &&\n !this.canSwapBetweenExpressionAndStatement(replacement) &&\n !this.parentPath.isExportDefaultDeclaration()\n ) {\n // replacing a statement with an expression so wrap it in an expression statement\n replacement = expressionStatement(replacement);\n nodePath = \"expression\";\n }\n }\n\n if (this.isNodeType(\"Expression\") && isStatement(replacement)) {\n if (\n !this.canHaveVariableDeclarationOrExpression() &&\n !this.canSwapBetweenExpressionAndStatement(replacement)\n ) {\n // replacing an expression with a statement so let's explode it\n return this.replaceExpressionWithStatements([replacement]) as [NodePath];\n }\n }\n\n const oldNode = this.node;\n if (oldNode) {\n inheritsComments(replacement, oldNode);\n removeComments(oldNode);\n }\n\n // replace the node\n _replaceWith.call(this, replacement);\n this.type = replacement.type;\n\n // potentially create new scope\n setScope.call(this);\n\n // requeue for visiting\n this.requeue();\n\n return [nodePath ? this.get(nodePath) : this];\n}\n\nexport function _replaceWith(this: NodePath, node: t.Node) {\n if (!this.container) {\n throw new ReferenceError(\"Container is falsy\");\n }\n\n if (this.inList) {\n // @ts-expect-error todo(flow->ts): check if validate accepts a numeric key\n validate(this.parent, this.key, [node]);\n } else {\n validate(this.parent, this.key as string, node);\n }\n\n this.debug(`Replace with ${node?.type}`);\n getCachedPaths(this.hub, this.parent)?.set(node, this).delete(this.node);\n\n this.node =\n // @ts-expect-error this.key must present in this.container\n this.container[this.key] = node;\n}\n\n/**\n * This method takes an array of statements nodes and then explodes it\n * into expressions. This method retains completion records which is\n * extremely important to retain original semantics.\n */\n\nexport function replaceExpressionWithStatements(\n this: NodePath,\n nodes: Array<t.Statement>,\n) {\n resync.call(this);\n\n const declars: t.Identifier[] = [];\n const nodesAsSingleExpression = gatherSequenceExpressions(nodes, declars);\n if (nodesAsSingleExpression) {\n for (const id of declars) this.scope.push({ id });\n return this.replaceWith(nodesAsSingleExpression)[0].get(\"expressions\");\n }\n\n const functionParent = this.getFunctionParent();\n const isParentAsync = functionParent?.node.async;\n const isParentGenerator = functionParent?.node.generator;\n\n const container = arrowFunctionExpression([], blockStatement(nodes));\n\n this.replaceWith(callExpression(container, []));\n // replaceWith changes the type of \"this\", but it isn't trackable by TS\n type ThisType = NodePath<\n t.CallExpression & {\n callee: t.ArrowFunctionExpression & { body: t.BlockStatement };\n }\n >;\n\n // hoist variable declaration in do block\n // `(do { var x = 1; x;})` -> `var x; (() => { x = 1; return x; })()`\n const callee = (this as ThisType).get(\"callee\");\n callee.get(\"body\").scope.hoistVariables(id => this.scope.push({ id }));\n\n // add implicit returns to all ending expression statements\n const completionRecords: Array<NodePath> = callee.getCompletionRecords();\n for (const path of completionRecords) {\n if (!path.isExpressionStatement()) continue;\n\n const loop = path.findParent(path => path.isLoop());\n if (loop) {\n let uid = loop.getData(\"expressionReplacementReturnUid\");\n\n if (!uid) {\n uid = callee.scope.generateDeclaredUidIdentifier(\"ret\");\n callee\n .get(\"body\")\n .pushContainer(\"body\", returnStatement(cloneNode(uid)));\n loop.setData(\"expressionReplacementReturnUid\", uid);\n } else {\n uid = identifier(uid.name);\n }\n\n path\n .get(\"expression\")\n .replaceWith(\n assignmentExpression(\"=\", cloneNode(uid), path.node.expression),\n );\n } else {\n path.replaceWith(returnStatement(path.node.expression));\n }\n }\n\n // This is an IIFE, so we don't need to worry about the noNewArrows assumption\n callee.arrowFunctionToExpression();\n // Fixme: we can not `assert this is NodePath<t.FunctionExpression>` in `arrowFunctionToExpression`\n // because it is not a class method known at compile time.\n const newCallee = callee as unknown as NodePath<t.FunctionExpression>;\n\n // (() => await xxx)() -> await (async () => await xxx)();\n const needToAwaitFunction =\n isParentAsync &&\n traverse.hasType(\n (this.get(\"callee.body\") as NodePath<t.BlockStatement>).node,\n \"AwaitExpression\",\n FUNCTION_TYPES,\n );\n const needToYieldFunction =\n isParentGenerator &&\n traverse.hasType(\n (this.get(\"callee.body\") as NodePath<t.BlockStatement>).node,\n \"YieldExpression\",\n FUNCTION_TYPES,\n );\n if (needToAwaitFunction) {\n newCallee.set(\"async\", true);\n // yield* will await the generator return result\n if (!needToYieldFunction) {\n this.replaceWith(awaitExpression((this as ThisType).node));\n }\n }\n if (needToYieldFunction) {\n newCallee.set(\"generator\", true);\n this.replaceWith(yieldExpression((this as ThisType).node, true));\n }\n\n return newCallee.get(\"body.body\");\n}\n\nfunction gatherSequenceExpressions(\n nodes: ReadonlyArray<t.Node>,\n declars: Array<t.Identifier>,\n) {\n const exprs: t.Expression[] = [];\n let ensureLastUndefined = true;\n\n for (const node of nodes) {\n // if we encounter emptyStatement before a non-emptyStatement\n // we want to disregard that\n if (!isEmptyStatement(node)) {\n ensureLastUndefined = false;\n }\n\n if (isExpression(node)) {\n exprs.push(node);\n } else if (isExpressionStatement(node)) {\n exprs.push(node.expression);\n } else if (isVariableDeclaration(node)) {\n if (node.kind !== \"var\") return; // bailed\n\n for (const declar of node.declarations) {\n const bindings = getBindingIdentifiers(declar);\n for (const key of Object.keys(bindings)) {\n declars.push(cloneNode(bindings[key]));\n }\n\n if (declar.init) {\n exprs.push(assignmentExpression(\"=\", declar.id, declar.init));\n }\n }\n\n ensureLastUndefined = true;\n } else if (isIfStatement(node)) {\n const consequent = node.consequent\n ? gatherSequenceExpressions([node.consequent], declars)\n : buildUndefinedNode();\n const alternate = node.alternate\n ? gatherSequenceExpressions([node.alternate], declars)\n : buildUndefinedNode();\n if (!consequent || !alternate) return; // bailed\n\n exprs.push(conditionalExpression(node.test, consequent, alternate));\n } else if (isBlockStatement(node)) {\n const body = gatherSequenceExpressions(node.body, declars);\n if (!body) return; // bailed\n\n exprs.push(body);\n } else if (isEmptyStatement(node)) {\n // empty statement so ensure the last item is undefined if we're last\n // checks if emptyStatement is first\n if (nodes.indexOf(node) === 0) {\n ensureLastUndefined = true;\n }\n } else {\n // bailed, we can't turn this statement into an expression\n return;\n }\n }\n\n if (ensureLastUndefined) exprs.push(buildUndefinedNode());\n\n if (exprs.length === 1) {\n return exprs[0];\n } else {\n return sequenceExpression(exprs);\n }\n}\n\nexport function replaceInline(this: NodePath, nodes: t.Node | Array<t.Node>) {\n resync.call(this);\n\n if (Array.isArray(nodes)) {\n if (Array.isArray(this.container)) {\n nodes = _verifyNodeList.call(this, nodes);\n const paths = _containerInsertAfter.call(this, nodes);\n this.remove();\n return paths;\n } else {\n return this.replaceWithMultiple(nodes);\n }\n } else {\n return this.replaceWith(nodes);\n }\n}\n","import type NodePath from \"./index.ts\";\nimport type * as t from \"@babel/types\";\n\n// This file contains Babels metainterpreter that can evaluate static code.\n\nconst VALID_OBJECT_CALLEES = [\"Number\", \"String\", \"Math\"] as const;\nconst VALID_IDENTIFIER_CALLEES = [\n \"isFinite\",\n \"isNaN\",\n \"parseFloat\",\n \"parseInt\",\n \"decodeURI\",\n \"decodeURIComponent\",\n \"encodeURI\",\n \"encodeURIComponent\",\n process.env.BABEL_8_BREAKING ? \"btoa\" : null,\n process.env.BABEL_8_BREAKING ? \"atob\" : null,\n] as const;\n\nconst INVALID_METHODS = [\"random\"] as const;\n\nfunction isValidObjectCallee(\n val: string,\n): val is (typeof VALID_OBJECT_CALLEES)[number] {\n return VALID_OBJECT_CALLEES.includes(\n // @ts-expect-error val is a string\n val,\n );\n}\n\nfunction isValidIdentifierCallee(\n val: string,\n): val is (typeof VALID_IDENTIFIER_CALLEES)[number] {\n return VALID_IDENTIFIER_CALLEES.includes(\n // @ts-expect-error val is a string\n val,\n );\n}\n\nfunction isInvalidMethod(val: string): val is (typeof INVALID_METHODS)[number] {\n return INVALID_METHODS.includes(\n // @ts-expect-error val is a string\n val,\n );\n}\n\n/**\n * Walk the input `node` and statically evaluate if it's truthy.\n *\n * Returning `true` when we're sure that the expression will evaluate to a\n * truthy value, `false` if we're sure that it will evaluate to a falsy\n * value and `undefined` if we aren't sure. Because of this please do not\n * rely on coercion when using this method and check with === if it's false.\n *\n * For example do:\n *\n * if (t.evaluateTruthy(node) === false) falsyLogic();\n *\n * **AND NOT**\n *\n * if (!t.evaluateTruthy(node)) falsyLogic();\n *\n */\n\nexport function evaluateTruthy(this: NodePath): boolean {\n const res = this.evaluate();\n if (res.confident) return !!res.value;\n}\n\ntype State = {\n confident: boolean;\n deoptPath: NodePath | null;\n seen: Map<t.Node, Result>;\n};\n\ntype Result = {\n resolved: boolean;\n value?: any;\n};\n/**\n * Deopts the evaluation\n */\nfunction deopt(path: NodePath, state: State) {\n if (!state.confident) return;\n state.deoptPath = path;\n state.confident = false;\n}\n\nconst Globals = new Map([\n [\"undefined\", undefined],\n [\"Infinity\", Infinity],\n [\"NaN\", NaN],\n]);\n\n/**\n * We wrap the _evaluate method so we can track `seen` nodes, we push an item\n * to the map before we actually evaluate it so we can deopt on self recursive\n * nodes such as:\n *\n * var g = a ? 1 : 2,\n * a = g * this.foo\n */\nfunction evaluateCached(path: NodePath, state: State): any {\n const { node } = path;\n const { seen } = state;\n\n if (seen.has(node)) {\n const existing = seen.get(node);\n if (existing.resolved) {\n return existing.value;\n } else {\n deopt(path, state);\n return;\n }\n } else {\n const item: Result = { resolved: false };\n seen.set(node, item);\n\n const val = _evaluate(path, state);\n if (state.confident) {\n item.resolved = true;\n item.value = val;\n }\n return val;\n }\n}\n\nfunction _evaluate(path: NodePath, state: State): any {\n if (!state.confident) return;\n\n if (path.isSequenceExpression()) {\n const exprs = path.get(\"expressions\");\n return evaluateCached(exprs[exprs.length - 1], state);\n }\n\n if (\n path.isStringLiteral() ||\n path.isNumericLiteral() ||\n path.isBooleanLiteral()\n ) {\n return path.node.value;\n }\n\n if (path.isNullLiteral()) {\n return null;\n }\n\n if (path.isTemplateLiteral()) {\n return evaluateQuasis(path, path.node.quasis, state);\n }\n\n if (\n path.isTaggedTemplateExpression() &&\n path.get(\"tag\").isMemberExpression()\n ) {\n const object = path.get(\"tag.object\") as NodePath;\n const {\n // @ts-expect-error todo(flow->ts): possible bug, object is can be any expression and so name might be undefined\n node: { name },\n } = object;\n const property = path.get(\"tag.property\") as NodePath;\n\n if (\n object.isIdentifier() &&\n name === \"String\" &&\n // todo(flow->ts): was changed from getBinding(name, true)\n // should this be hasBinding(name, true) as the binding is never used later?\n !path.scope.getBinding(name) &&\n property.isIdentifier() &&\n property.node.name === \"raw\"\n ) {\n return evaluateQuasis(path, path.node.quasi.quasis, state, true);\n }\n }\n\n if (path.isConditionalExpression()) {\n const testResult = evaluateCached(path.get(\"test\"), state);\n if (!state.confident) return;\n if (testResult) {\n return evaluateCached(path.get(\"consequent\"), state);\n } else {\n return evaluateCached(path.get(\"alternate\"), state);\n }\n }\n\n if (path.isExpressionWrapper()) {\n // TypeCastExpression, ExpressionStatement etc\n return evaluateCached(path.get(\"expression\"), state);\n }\n\n // \"foo\".length, \"foo\"[0]\n if (\n path.isMemberExpression() &&\n !path.parentPath.isCallExpression({ callee: path.node })\n ) {\n const property = path.get(\"property\");\n const object = path.get(\"object\");\n\n if (object.isLiteral()) {\n // @ts-expect-error todo(flow->ts): instead of typeof - would it be better to check type of ast node?\n const value = object.node.value;\n const type = typeof value;\n\n let key = null;\n if (path.node.computed) {\n key = evaluateCached(property, state);\n if (!state.confident) return;\n } else if (property.isIdentifier()) {\n key = property.node.name;\n }\n if (\n (type === \"number\" || type === \"string\") &&\n key != null &&\n (typeof key === \"number\" || typeof key === \"string\")\n ) {\n return value[key];\n }\n }\n }\n\n if (path.isReferencedIdentifier()) {\n const binding = path.scope.getBinding(path.node.name);\n\n if (binding) {\n if (\n binding.constantViolations.length > 0 ||\n path.node.start < binding.path.node.end\n ) {\n deopt(binding.path, state);\n return;\n }\n if (binding.hasValue) {\n return binding.value;\n }\n }\n\n const name = path.node.name;\n if (Globals.has(name)) {\n if (!binding) {\n return Globals.get(name);\n }\n deopt(binding.path, state);\n return;\n }\n\n const resolved = path.resolve();\n if (resolved === path) {\n deopt(path, state);\n return;\n } else {\n return evaluateCached(resolved, state);\n }\n }\n\n if (path.isUnaryExpression({ prefix: true })) {\n if (path.node.operator === \"void\") {\n // we don't need to evaluate the argument to know what this will return\n return undefined;\n }\n\n const argument = path.get(\"argument\");\n if (\n path.node.operator === \"typeof\" &&\n (argument.isFunction() || argument.isClass())\n ) {\n return \"function\";\n }\n\n const arg = evaluateCached(argument, state);\n if (!state.confident) return;\n switch (path.node.operator) {\n case \"!\":\n return !arg;\n case \"+\":\n return +arg;\n case \"-\":\n return -arg;\n case \"~\":\n return ~arg;\n case \"typeof\":\n return typeof arg;\n }\n }\n\n if (path.isArrayExpression()) {\n const arr = [];\n const elems: Array<NodePath> = path.get(\"elements\");\n for (const elem of elems) {\n const elemValue = elem.evaluate();\n\n if (elemValue.confident) {\n arr.push(elemValue.value);\n } else {\n deopt(elemValue.deopt, state);\n return;\n }\n }\n return arr;\n }\n\n if (path.isObjectExpression()) {\n const obj = {};\n const props = path.get(\"properties\");\n for (const prop of props) {\n if (prop.isObjectMethod() || prop.isSpreadElement()) {\n deopt(prop, state);\n return;\n }\n const keyPath = prop.get(\"key\");\n let key;\n if (prop.node.computed) {\n key = keyPath.evaluate();\n if (!key.confident) {\n deopt(key.deopt, state);\n return;\n }\n key = key.value;\n } else if (keyPath.isIdentifier()) {\n key = keyPath.node.name;\n } else {\n key = (\n keyPath.node as t.StringLiteral | t.NumericLiteral | t.BigIntLiteral\n ).value;\n }\n const valuePath = prop.get(\"value\");\n let value = valuePath.evaluate();\n if (!value.confident) {\n deopt(value.deopt, state);\n return;\n }\n value = value.value;\n // @ts-expect-error key is any type\n obj[key] = value;\n }\n return obj;\n }\n\n if (path.isLogicalExpression()) {\n // If we are confident that the left side of an && is false, or the left\n // side of an || is true, we can be confident about the entire expression\n const wasConfident = state.confident;\n const left = evaluateCached(path.get(\"left\"), state);\n const leftConfident = state.confident;\n state.confident = wasConfident;\n const right = evaluateCached(path.get(\"right\"), state);\n const rightConfident = state.confident;\n\n switch (path.node.operator) {\n case \"||\":\n // TODO consider having a \"truthy type\" that doesn't bail on\n // left uncertainty but can still evaluate to truthy.\n state.confident = leftConfident && (!!left || rightConfident);\n if (!state.confident) return;\n\n return left || right;\n case \"&&\":\n state.confident = leftConfident && (!left || rightConfident);\n if (!state.confident) return;\n\n return left && right;\n case \"??\":\n state.confident = leftConfident && (left != null || rightConfident);\n if (!state.confident) return;\n\n return left ?? right;\n }\n }\n\n if (path.isBinaryExpression()) {\n const left = evaluateCached(path.get(\"left\"), state);\n if (!state.confident) return;\n const right = evaluateCached(path.get(\"right\"), state);\n if (!state.confident) return;\n\n switch (path.node.operator) {\n case \"-\":\n return left - right;\n case \"+\":\n return left + right;\n case \"/\":\n return left / right;\n case \"*\":\n return left * right;\n case \"%\":\n return left % right;\n case \"**\":\n return left ** right;\n case \"<\":\n return left < right;\n case \">\":\n return left > right;\n case \"<=\":\n return left <= right;\n case \">=\":\n return left >= right;\n case \"==\":\n return left == right; // eslint-disable-line eqeqeq\n case \"!=\":\n return left != right; // eslint-disable-line eqeqeq\n case \"===\":\n return left === right;\n case \"!==\":\n return left !== right;\n case \"|\":\n return left | right;\n case \"&\":\n return left & right;\n case \"^\":\n return left ^ right;\n case \"<<\":\n return left << right;\n case \">>\":\n return left >> right;\n case \">>>\":\n return left >>> right;\n }\n }\n\n if (path.isCallExpression()) {\n const callee = path.get(\"callee\");\n let context;\n let func;\n\n // Number(1);\n if (\n callee.isIdentifier() &&\n !path.scope.getBinding(callee.node.name) &&\n (isValidObjectCallee(callee.node.name) ||\n isValidIdentifierCallee(callee.node.name))\n ) {\n func = global[callee.node.name];\n }\n\n if (callee.isMemberExpression()) {\n const object = callee.get(\"object\");\n const property = callee.get(\"property\");\n\n // Math.min(1, 2)\n if (\n object.isIdentifier() &&\n property.isIdentifier() &&\n isValidObjectCallee(object.node.name) &&\n !isInvalidMethod(property.node.name)\n ) {\n context = global[object.node.name];\n const key = property.node.name;\n if (Object.hasOwn(context, key)) {\n func = context[key as keyof typeof context];\n }\n }\n\n // \"abc\".charCodeAt(4)\n if (object.isLiteral() && property.isIdentifier()) {\n // @ts-expect-error todo(flow->ts): consider checking ast node type instead of value type (StringLiteral and NumberLiteral)\n const type = typeof object.node.value;\n if (type === \"string\" || type === \"number\") {\n // @ts-expect-error todo(flow->ts): consider checking ast node type instead of value type\n context = object.node.value;\n func = context[property.node.name];\n }\n }\n }\n\n if (func) {\n const args = path.get(\"arguments\").map(arg => evaluateCached(arg, state));\n if (!state.confident) return;\n\n return func.apply(context, args);\n }\n }\n\n deopt(path, state);\n}\n\nfunction evaluateQuasis(\n path: NodePath<t.TaggedTemplateExpression | t.TemplateLiteral>,\n quasis: Array<any>,\n state: State,\n raw = false,\n) {\n let str = \"\";\n\n let i = 0;\n const exprs: Array<NodePath<t.Node>> = path.isTemplateLiteral()\n ? path.get(\"expressions\")\n : path.get(\"quasi.expressions\");\n\n for (const elem of quasis) {\n // not confident, evaluated an expression we don't like\n if (!state.confident) break;\n\n // add on element\n str += raw ? elem.value.raw : elem.value.cooked;\n\n // add on interpolated expression if it's present\n const expr = exprs[i++];\n if (expr) str += String(evaluateCached(expr, state));\n }\n\n if (!state.confident) return;\n return str;\n}\n\n/**\n * Walk the input `node` and statically evaluate it.\n *\n * Returns an object in the form `{ confident, value, deopt }`. `confident`\n * indicates whether or not we had to drop out of evaluating the expression\n * because of hitting an unknown node that we couldn't confidently find the\n * value of, in which case `deopt` is the path of said node.\n *\n * Example:\n *\n * t.evaluate(parse(\"5 + 5\")) // { confident: true, value: 10 }\n * t.evaluate(parse(\"!true\")) // { confident: true, value: false }\n * t.evaluate(parse(\"foo + foo\")) // { confident: false, value: undefined, deopt: NodePath }\n *\n */\n\nexport function evaluate(this: NodePath): {\n confident: boolean;\n value: any;\n deopt?: NodePath;\n} {\n const state: State = {\n confident: true,\n deoptPath: null,\n seen: new Map(),\n };\n let value = evaluateCached(this, state);\n if (!state.confident) value = undefined;\n\n return {\n confident: state.confident,\n deopt: state.deoptPath,\n value: value,\n };\n}\n","// This file contains methods that convert the path node into another node or some other type of data.\n\nimport {\n arrowFunctionExpression,\n assignmentExpression,\n binaryExpression,\n blockStatement,\n callExpression,\n conditionalExpression,\n expressionStatement,\n identifier,\n isIdentifier,\n jsxIdentifier,\n logicalExpression,\n LOGICAL_OPERATORS,\n memberExpression,\n metaProperty,\n numericLiteral,\n objectExpression,\n restElement,\n returnStatement,\n sequenceExpression,\n spreadElement,\n stringLiteral,\n super as _super,\n thisExpression,\n toExpression,\n unaryExpression,\n toBindingIdentifierName,\n isFunction,\n isAssignmentPattern,\n isRestElement,\n getFunctionName,\n cloneNode,\n variableDeclaration,\n variableDeclarator,\n exportNamedDeclaration,\n exportSpecifier,\n inherits,\n} from \"@babel/types\";\nimport type * as t from \"@babel/types\";\nimport template from \"@babel/template\";\nimport { environmentVisitor } from \"../visitors.ts\";\nimport type NodePath from \"./index.ts\";\nimport type { Visitor } from \"../types.ts\";\nimport { setup } from \"./context.ts\";\n\nexport function toComputedKey(this: NodePath) {\n let key;\n if (this.isMemberExpression()) {\n key = this.node.property;\n } else if (this.isProperty() || this.isMethod()) {\n key = this.node.key;\n } else {\n throw new ReferenceError(\"todo\");\n }\n\n // @ts-expect-error todo(flow->ts) computed does not exist in ClassPrivateProperty\n if (!this.node.computed) {\n if (isIdentifier(key)) key = stringLiteral(key.name);\n }\n\n return key;\n}\n\nexport function ensureBlock(\n this: NodePath<\n t.Loop | t.WithStatement | t.Function | t.LabeledStatement | t.CatchClause\n >,\n): void {\n const body = this.get(\"body\");\n const bodyNode = body.node;\n\n if (Array.isArray(body)) {\n throw new Error(\"Can't convert array path to a block statement\");\n }\n if (!bodyNode) {\n throw new Error(\"Can't convert node without a body\");\n }\n\n if (body.isBlockStatement()) {\n // @ts-expect-error TS throws because ensureBlock returns the body node path\n // however, we don't use the return value and treat it as a transform and\n // assertion utilities. For better type inference we annotate it as an\n // assertion method\n // TODO: Unify the implementation with the type definition\n return bodyNode;\n }\n\n const statements: Array<t.Statement> = [];\n\n let stringPath = \"body\";\n let key;\n let listKey;\n if (body.isStatement()) {\n listKey = \"body\";\n key = 0;\n statements.push(body.node);\n } else {\n stringPath += \".body.0\";\n if (this.isFunction()) {\n key = \"argument\";\n statements.push(returnStatement(body.node as t.Expression));\n } else {\n key = \"expression\";\n statements.push(expressionStatement(body.node as t.Expression));\n }\n }\n\n this.node.body = blockStatement(statements);\n const parentPath = this.get(stringPath) as NodePath;\n setup.call(\n body,\n parentPath,\n listKey\n ? // @ts-expect-error listKey must present in parent path\n parentPath.node[listKey]\n : parentPath.node,\n listKey,\n key,\n );\n\n // @ts-expect-error TS throws because ensureBlock returns the body node path\n // however, we don't use the return value and treat it as a transform and\n // assertion utilities. For better type inference we annotate it as an\n // assertion method\n // TODO: Unify the implementation with the type definition\n return this.node;\n}\n\nif (!process.env.BABEL_8_BREAKING && !USE_ESM) {\n /**\n * Keeping this for backward-compatibility. You should use arrowFunctionToExpression() for >=7.x.\n */\n // eslint-disable-next-line no-restricted-globals\n exports.arrowFunctionToShadowed = function (this: NodePath) {\n if (!this.isArrowFunctionExpression()) return;\n\n this.arrowFunctionToExpression();\n };\n}\n\n/**\n * Given an arbitrary function, process its content as if it were an arrow function, moving references\n * to \"this\", \"arguments\", \"super\", and such into the function's parent scope. This method is useful if\n * you have wrapped some set of items in an IIFE or other function, but want \"this\", \"arguments\", and super\"\n * to continue behaving as expected.\n */\nexport function unwrapFunctionEnvironment(this: NodePath) {\n if (\n !this.isArrowFunctionExpression() &&\n !this.isFunctionExpression() &&\n !this.isFunctionDeclaration()\n ) {\n throw this.buildCodeFrameError(\n \"Can only unwrap the environment of a function.\",\n );\n }\n\n hoistFunctionEnvironment(this);\n}\n\nfunction setType<N extends t.Node, T extends N[\"type\"]>(\n path: NodePath<N>,\n type: T,\n): asserts path is NodePath<Extract<N, { type: T }>> {\n path.node.type = type;\n}\n\n/**\n * Convert a given arrow function into a normal ES5 function expression.\n */\nexport function arrowFunctionToExpression(\n this: NodePath<t.ArrowFunctionExpression>,\n {\n allowInsertArrow = true,\n allowInsertArrowWithRest = allowInsertArrow,\n noNewArrows = process.env.BABEL_8_BREAKING\n ? // TODO(Babel 8): Consider defaulting to `false` for spec compliance\n true\n : !arguments[0]?.specCompliant,\n }: {\n allowInsertArrow?: boolean | void;\n allowInsertArrowWithRest?: boolean | void;\n noNewArrows?: boolean;\n } = {},\n): NodePath<\n Exclude<t.Function, t.Method | t.ArrowFunctionExpression> | t.CallExpression\n> {\n if (!this.isArrowFunctionExpression()) {\n throw (this as NodePath).buildCodeFrameError(\n \"Cannot convert non-arrow function to a function expression.\",\n );\n }\n\n let self = this;\n if (!noNewArrows) {\n // @ts-expect-error This is technicallynot valid on arrow functions\n // because it adds an .id property, but we are going to convert it\n // to a function expression anyway\n self = self.ensureFunctionName(false) ?? self;\n }\n\n const { thisBinding, fnPath: fn } = hoistFunctionEnvironment(\n self,\n noNewArrows,\n allowInsertArrow,\n allowInsertArrowWithRest,\n );\n\n fn.ensureBlock();\n setType(fn, \"FunctionExpression\");\n\n if (!noNewArrows) {\n const checkBinding = thisBinding\n ? null\n : fn.scope.generateUidIdentifier(\"arrowCheckId\");\n if (checkBinding) {\n fn.parentPath.scope.push({\n id: checkBinding,\n init: objectExpression([]),\n });\n }\n\n fn.get(\"body\").unshiftContainer(\n \"body\",\n expressionStatement(\n callExpression(this.hub.addHelper(\"newArrowCheck\"), [\n thisExpression(),\n checkBinding\n ? identifier(checkBinding.name)\n : identifier(thisBinding),\n ]),\n ),\n );\n\n fn.replaceWith(\n callExpression(memberExpression(fn.node, identifier(\"bind\")), [\n checkBinding ? identifier(checkBinding.name) : thisExpression(),\n ]),\n );\n\n return fn.get(\"callee.object\");\n }\n\n return fn;\n}\n\nconst getSuperCallsVisitor = environmentVisitor<{\n allSuperCalls: NodePath<t.CallExpression>[];\n}>({\n CallExpression(child, { allSuperCalls }) {\n if (!child.get(\"callee\").isSuper()) return;\n allSuperCalls.push(child);\n },\n});\n\n/**\n * Given a function, traverse its contents, and if there are references to \"this\", \"arguments\", \"super\",\n * or \"new.target\", ensure that these references reference the parent environment around this function.\n *\n * @returns `thisBinding`: the name of the injected reference to `this`; for example \"_this\"\n * @returns `fnPath`: the new path to the function node. This is different from the fnPath\n * parameter when the function node is wrapped in another node.\n */\nfunction hoistFunctionEnvironment(\n fnPath: NodePath<t.Function>,\n // TODO(Babel 8): Consider defaulting to `false` for spec compliance\n noNewArrows: boolean | void = true,\n allowInsertArrow: boolean | void = true,\n allowInsertArrowWithRest: boolean | void = true,\n): { thisBinding: string; fnPath: NodePath<t.Function> } {\n let arrowParent;\n let thisEnvFn: NodePath<t.Function> = fnPath.findParent(p => {\n if (p.isArrowFunctionExpression()) {\n arrowParent ??= p;\n return false;\n }\n return (\n p.isFunction() ||\n p.isProgram() ||\n p.isClassProperty({ static: false }) ||\n p.isClassPrivateProperty({ static: false })\n );\n }) as NodePath<t.Function>;\n const inConstructor = thisEnvFn.isClassMethod({ kind: \"constructor\" });\n\n if (thisEnvFn.isClassProperty() || thisEnvFn.isClassPrivateProperty()) {\n if (arrowParent) {\n thisEnvFn = arrowParent;\n } else if (allowInsertArrow) {\n // It's safe to wrap this function in another and not hoist to the\n // top level because the 'this' binding is constant in class\n // properties (since 'super()' has already been called), so we don't\n // need to capture/reassign it at the top level.\n fnPath.replaceWith(\n callExpression(\n arrowFunctionExpression([], toExpression(fnPath.node)),\n [],\n ),\n );\n thisEnvFn = fnPath.get(\"callee\") as NodePath<t.ArrowFunctionExpression>;\n fnPath = thisEnvFn.get(\"body\") as NodePath<t.FunctionExpression>;\n } else {\n throw fnPath.buildCodeFrameError(\n \"Unable to transform arrow inside class property\",\n );\n }\n }\n\n const { thisPaths, argumentsPaths, newTargetPaths, superProps, superCalls } =\n getScopeInformation(fnPath);\n\n // Convert all super() calls in the constructor, if super is used in an arrow.\n if (inConstructor && superCalls.length > 0) {\n if (!allowInsertArrow) {\n throw superCalls[0].buildCodeFrameError(\n \"When using '@babel/plugin-transform-arrow-functions', \" +\n \"it's not possible to compile `super()` in an arrow function without compiling classes.\\n\" +\n \"Please add '@babel/plugin-transform-classes' to your Babel configuration.\",\n );\n }\n if (!allowInsertArrowWithRest) {\n // preset-env with target `since 2017` enables `transform-parameters` without `transform-classes`.\n throw superCalls[0].buildCodeFrameError(\n \"When using '@babel/plugin-transform-parameters', \" +\n \"it's not possible to compile `super()` in an arrow function with default or rest parameters without compiling classes.\\n\" +\n \"Please add '@babel/plugin-transform-classes' to your Babel configuration.\",\n );\n }\n const allSuperCalls: NodePath<t.CallExpression>[] = [];\n thisEnvFn.traverse(getSuperCallsVisitor, { allSuperCalls });\n const superBinding = getSuperBinding(thisEnvFn);\n allSuperCalls.forEach(superCall => {\n const callee = identifier(superBinding);\n callee.loc = superCall.node.callee.loc;\n\n superCall.get(\"callee\").replaceWith(callee);\n });\n }\n\n // Convert all \"arguments\" references in the arrow to point at the alias.\n if (argumentsPaths.length > 0) {\n const argumentsBinding = getBinding(thisEnvFn, \"arguments\", () => {\n const args = () => identifier(\"arguments\");\n if (thisEnvFn.scope.path.isProgram()) {\n return conditionalExpression(\n binaryExpression(\n \"===\",\n unaryExpression(\"typeof\", args()),\n stringLiteral(\"undefined\"),\n ),\n thisEnvFn.scope.buildUndefinedNode(),\n args(),\n );\n } else {\n return args();\n }\n });\n\n argumentsPaths.forEach(argumentsChild => {\n const argsRef = identifier(argumentsBinding);\n argsRef.loc = argumentsChild.node.loc;\n\n argumentsChild.replaceWith(argsRef);\n });\n }\n\n // Convert all \"new.target\" references in the arrow to point at the alias.\n if (newTargetPaths.length > 0) {\n const newTargetBinding = getBinding(thisEnvFn, \"newtarget\", () =>\n metaProperty(identifier(\"new\"), identifier(\"target\")),\n );\n\n newTargetPaths.forEach(targetChild => {\n const targetRef = identifier(newTargetBinding);\n targetRef.loc = targetChild.node.loc;\n\n targetChild.replaceWith(targetRef);\n });\n }\n\n // Convert all \"super.prop\" references to point at aliases.\n if (superProps.length > 0) {\n if (!allowInsertArrow) {\n throw superProps[0].buildCodeFrameError(\n \"When using '@babel/plugin-transform-arrow-functions', \" +\n \"it's not possible to compile `super.prop` in an arrow function without compiling classes.\\n\" +\n \"Please add '@babel/plugin-transform-classes' to your Babel configuration.\",\n );\n }\n\n const flatSuperProps: NodePath<t.MemberExpression>[] = superProps.reduce(\n (acc, superProp) => acc.concat(standardizeSuperProperty(superProp)),\n [],\n );\n\n flatSuperProps.forEach(superProp => {\n const key = superProp.node.computed\n ? \"\"\n : // @ts-expect-error super property must not contain private name\n superProp.get(\"property\").node.name;\n\n const superParentPath = superProp.parentPath;\n\n const isAssignment = superParentPath.isAssignmentExpression({\n left: superProp.node,\n });\n const isCall = superParentPath.isCallExpression({\n callee: superProp.node,\n });\n const isTaggedTemplate = superParentPath.isTaggedTemplateExpression({\n tag: superProp.node,\n });\n const superBinding = getSuperPropBinding(thisEnvFn, isAssignment, key);\n\n const args: t.Expression[] = [];\n if (superProp.node.computed) {\n // SuperProperty must not be a private name\n args.push(superProp.get(\"property\").node as t.Expression);\n }\n\n if (isAssignment) {\n const value = superParentPath.node.right;\n args.push(value);\n }\n\n const call = callExpression(identifier(superBinding), args);\n\n if (isCall) {\n superParentPath.unshiftContainer(\"arguments\", thisExpression());\n superProp.replaceWith(memberExpression(call, identifier(\"call\")));\n\n thisPaths.push(\n superParentPath.get(\"arguments.0\") as NodePath<t.ThisExpression>,\n );\n } else if (isAssignment) {\n // Replace not only the super.prop, but the whole assignment\n superParentPath.replaceWith(call);\n } else if (isTaggedTemplate) {\n superProp.replaceWith(\n callExpression(memberExpression(call, identifier(\"bind\"), false), [\n thisExpression(),\n ]),\n );\n\n thisPaths.push(\n superProp.get(\"arguments.0\") as NodePath<t.ThisExpression>,\n );\n } else {\n superProp.replaceWith(call);\n }\n });\n }\n\n // Convert all \"this\" references in the arrow to point at the alias.\n let thisBinding: string | null;\n if (thisPaths.length > 0 || !noNewArrows) {\n thisBinding = getThisBinding(thisEnvFn, inConstructor);\n\n if (\n noNewArrows ||\n // In subclass constructors, still need to rewrite because \"this\" can't be bound in spec mode\n // because it might not have been initialized yet.\n (inConstructor && hasSuperClass(thisEnvFn))\n ) {\n thisPaths.forEach(thisChild => {\n const thisRef = thisChild.isJSX()\n ? jsxIdentifier(thisBinding)\n : identifier(thisBinding);\n\n thisRef.loc = thisChild.node.loc;\n thisChild.replaceWith(thisRef);\n });\n\n if (!noNewArrows) thisBinding = null;\n }\n }\n\n return { thisBinding, fnPath };\n}\n\ntype LogicalOp = Parameters<typeof logicalExpression>[0];\ntype BinaryOp = Parameters<typeof binaryExpression>[0];\n\nfunction isLogicalOp(op: string): op is LogicalOp {\n return LOGICAL_OPERATORS.includes(op);\n}\n\nfunction standardizeSuperProperty(\n superProp: NodePath<t.MemberExpression>,\n):\n | [NodePath<t.MemberExpression>]\n | [NodePath<t.MemberExpression>, NodePath<t.MemberExpression>] {\n if (\n superProp.parentPath.isAssignmentExpression() &&\n superProp.parentPath.node.operator !== \"=\"\n ) {\n const assignmentPath = superProp.parentPath;\n\n const op = assignmentPath.node.operator.slice(0, -1) as\n | LogicalOp\n | BinaryOp;\n\n const value = assignmentPath.node.right;\n\n const isLogicalAssignment = isLogicalOp(op);\n\n if (superProp.node.computed) {\n // from: super[foo] **= 4;\n // to: super[tmp = foo] = super[tmp] ** 4;\n\n // from: super[foo] ??= 4;\n // to: super[tmp = foo] ?? super[tmp] = 4;\n\n const tmp = superProp.scope.generateDeclaredUidIdentifier(\"tmp\");\n\n const object = superProp.node.object;\n const property = superProp.node.property as t.Expression;\n\n assignmentPath\n .get(\"left\")\n .replaceWith(\n memberExpression(\n object,\n assignmentExpression(\"=\", tmp, property),\n true /* computed */,\n ),\n );\n\n assignmentPath\n .get(\"right\")\n .replaceWith(\n rightExpression(\n isLogicalAssignment ? \"=\" : op,\n memberExpression(object, identifier(tmp.name), true /* computed */),\n value,\n ),\n );\n } else {\n // from: super.foo **= 4;\n // to: super.foo = super.foo ** 4;\n\n // from: super.foo ??= 4;\n // to: super.foo ?? super.foo = 4;\n\n const object = superProp.node.object;\n const property = superProp.node.property as t.Identifier;\n\n assignmentPath\n .get(\"left\")\n .replaceWith(memberExpression(object, property));\n\n assignmentPath\n .get(\"right\")\n .replaceWith(\n rightExpression(\n isLogicalAssignment ? \"=\" : op,\n memberExpression(object, identifier(property.name)),\n value,\n ),\n );\n }\n\n if (isLogicalAssignment) {\n assignmentPath.replaceWith(\n logicalExpression(\n op,\n assignmentPath.node.left as t.MemberExpression,\n assignmentPath.node.right,\n ),\n );\n } else {\n assignmentPath.node.operator = \"=\";\n }\n\n return [\n assignmentPath.get(\"left\") as NodePath<t.MemberExpression>,\n assignmentPath.get(\"right\").get(\"left\") as NodePath<t.MemberExpression>,\n ];\n } else if (superProp.parentPath.isUpdateExpression()) {\n const updateExpr = superProp.parentPath;\n\n const tmp = superProp.scope.generateDeclaredUidIdentifier(\"tmp\");\n const computedKey = superProp.node.computed\n ? superProp.scope.generateDeclaredUidIdentifier(\"prop\")\n : null;\n\n const parts: t.Expression[] = [\n assignmentExpression(\n \"=\",\n tmp,\n memberExpression(\n superProp.node.object,\n computedKey\n ? assignmentExpression(\n \"=\",\n computedKey,\n superProp.node.property as t.Expression,\n )\n : superProp.node.property,\n superProp.node.computed,\n ),\n ),\n assignmentExpression(\n \"=\",\n memberExpression(\n superProp.node.object,\n computedKey ? identifier(computedKey.name) : superProp.node.property,\n superProp.node.computed,\n ),\n binaryExpression(\n // map `++` to `+`, and `--` to `-`\n superProp.parentPath.node.operator[0] as \"+\" | \"-\",\n identifier(tmp.name),\n numericLiteral(1),\n ),\n ),\n ];\n\n if (!superProp.parentPath.node.prefix) {\n parts.push(identifier(tmp.name));\n }\n\n updateExpr.replaceWith(sequenceExpression(parts));\n\n const left = updateExpr.get(\n \"expressions.0.right\",\n ) as NodePath<t.MemberExpression>;\n const right = updateExpr.get(\n \"expressions.1.left\",\n ) as NodePath<t.MemberExpression>;\n return [left, right];\n }\n\n return [superProp];\n\n function rightExpression(\n op: BinaryOp | \"=\",\n left: t.MemberExpression,\n right: t.Expression,\n ) {\n if (op === \"=\") {\n return assignmentExpression(\"=\", left, right);\n } else {\n return binaryExpression(op, left, right);\n }\n }\n}\n\nfunction hasSuperClass(thisEnvFn: NodePath<t.Function>) {\n return (\n thisEnvFn.isClassMethod() &&\n !!(thisEnvFn.parentPath.parentPath.node as t.Class).superClass\n );\n}\n\nconst assignSuperThisVisitor = environmentVisitor<{\n supers: WeakSet<t.CallExpression>;\n thisBinding: string;\n}>({\n CallExpression(child, { supers, thisBinding }) {\n if (!child.get(\"callee\").isSuper()) return;\n if (supers.has(child.node)) return;\n supers.add(child.node);\n\n child.replaceWithMultiple([\n child.node,\n assignmentExpression(\"=\", identifier(thisBinding), identifier(\"this\")),\n ]);\n },\n});\n\n// Create a binding that evaluates to the \"this\" of the given function.\nfunction getThisBinding(\n thisEnvFn: NodePath<t.Function>,\n inConstructor: boolean,\n) {\n return getBinding(thisEnvFn, \"this\", thisBinding => {\n if (!inConstructor || !hasSuperClass(thisEnvFn)) return thisExpression();\n\n thisEnvFn.traverse(assignSuperThisVisitor, {\n supers: new WeakSet(),\n thisBinding,\n });\n });\n}\n\n// Create a binding for a function that will call \"super()\" with arguments passed through.\nfunction getSuperBinding(thisEnvFn: NodePath<t.Function>) {\n return getBinding(thisEnvFn, \"supercall\", () => {\n const argsBinding = thisEnvFn.scope.generateUidIdentifier(\"args\");\n return arrowFunctionExpression(\n [restElement(argsBinding)],\n callExpression(_super(), [spreadElement(identifier(argsBinding.name))]),\n );\n });\n}\n\n// Create a binding for a function that will call \"super.foo\" or \"super[foo]\".\nfunction getSuperPropBinding(\n thisEnvFn: NodePath<t.Function>,\n isAssignment: boolean,\n propName: string,\n) {\n const op = isAssignment ? \"set\" : \"get\";\n\n return getBinding(thisEnvFn, `superprop_${op}:${propName || \"\"}`, () => {\n const argsList = [];\n\n let fnBody;\n if (propName) {\n // () => super.foo\n fnBody = memberExpression(_super(), identifier(propName));\n } else {\n const method = thisEnvFn.scope.generateUidIdentifier(\"prop\");\n // (method) => super[method]\n argsList.unshift(method);\n fnBody = memberExpression(\n _super(),\n identifier(method.name),\n true /* computed */,\n );\n }\n\n if (isAssignment) {\n const valueIdent = thisEnvFn.scope.generateUidIdentifier(\"value\");\n argsList.push(valueIdent);\n\n fnBody = assignmentExpression(\"=\", fnBody, identifier(valueIdent.name));\n }\n\n return arrowFunctionExpression(argsList, fnBody);\n });\n}\n\nfunction getBinding(\n thisEnvFn: NodePath,\n key: string,\n init: (name: string) => t.Expression,\n) {\n const cacheKey = \"binding:\" + key;\n let data: string | undefined = thisEnvFn.getData(cacheKey);\n if (!data) {\n const id = thisEnvFn.scope.generateUidIdentifier(key);\n data = id.name;\n thisEnvFn.setData(cacheKey, data);\n\n thisEnvFn.scope.push({\n id: id,\n init: init(data),\n });\n }\n\n return data;\n}\n\ntype ScopeInfo = {\n thisPaths: NodePath<t.ThisExpression | t.JSXIdentifier>[];\n superCalls: NodePath<t.CallExpression>[];\n superProps: NodePath<t.MemberExpression>[];\n argumentsPaths: NodePath<t.Identifier | t.JSXIdentifier>[];\n newTargetPaths: NodePath<t.MetaProperty>[];\n};\n\nconst getScopeInformationVisitor = environmentVisitor<ScopeInfo>({\n ThisExpression(child, { thisPaths }) {\n thisPaths.push(child);\n },\n JSXIdentifier(child, { thisPaths }) {\n if (child.node.name !== \"this\") return;\n if (\n !child.parentPath.isJSXMemberExpression({ object: child.node }) &&\n !child.parentPath.isJSXOpeningElement({ name: child.node })\n ) {\n return;\n }\n\n thisPaths.push(child);\n },\n CallExpression(child, { superCalls }) {\n if (child.get(\"callee\").isSuper()) superCalls.push(child);\n },\n MemberExpression(child, { superProps }) {\n if (child.get(\"object\").isSuper()) superProps.push(child);\n },\n Identifier(child, { argumentsPaths }) {\n if (!child.isReferencedIdentifier({ name: \"arguments\" })) return;\n\n let curr = child.scope;\n do {\n if (curr.hasOwnBinding(\"arguments\")) {\n curr.rename(\"arguments\");\n return;\n }\n if (curr.path.isFunction() && !curr.path.isArrowFunctionExpression()) {\n break;\n }\n } while ((curr = curr.parent));\n\n argumentsPaths.push(child);\n },\n MetaProperty(child, { newTargetPaths }) {\n if (!child.get(\"meta\").isIdentifier({ name: \"new\" })) return;\n if (!child.get(\"property\").isIdentifier({ name: \"target\" })) return;\n\n newTargetPaths.push(child);\n },\n});\n\nfunction getScopeInformation(fnPath: NodePath) {\n const thisPaths: ScopeInfo[\"thisPaths\"] = [];\n const argumentsPaths: ScopeInfo[\"argumentsPaths\"] = [];\n const newTargetPaths: ScopeInfo[\"newTargetPaths\"] = [];\n const superProps: ScopeInfo[\"superProps\"] = [];\n const superCalls: ScopeInfo[\"superCalls\"] = [];\n\n fnPath.traverse(getScopeInformationVisitor, {\n thisPaths,\n argumentsPaths,\n newTargetPaths,\n superProps,\n superCalls,\n });\n\n return {\n thisPaths,\n argumentsPaths,\n newTargetPaths,\n superProps,\n superCalls,\n };\n}\n\nexport function splitExportDeclaration(\n this: NodePath<t.ExportDefaultDeclaration | t.ExportNamedDeclaration>,\n): NodePath<t.Declaration> {\n if (!this.isExportDeclaration() || this.isExportAllDeclaration()) {\n throw new Error(\"Only default and named export declarations can be split.\");\n }\n if (this.isExportNamedDeclaration() && this.get(\"specifiers\").length > 0) {\n throw new Error(\"It doesn't make sense to split exported specifiers.\");\n }\n\n const declaration = this.get(\"declaration\");\n\n if (this.isExportDefaultDeclaration()) {\n const standaloneDeclaration =\n declaration.isFunctionDeclaration() || declaration.isClassDeclaration();\n const exportExpr =\n declaration.isFunctionExpression() || declaration.isClassExpression();\n\n const scope = declaration.isScope()\n ? declaration.scope.parent\n : declaration.scope;\n\n // @ts-expect-error id is not defined in expressions other than function/class\n let id = declaration.node.id;\n let needBindingRegistration = false;\n\n if (!id) {\n needBindingRegistration = true;\n\n id = scope.generateUidIdentifier(\"default\");\n\n if (standaloneDeclaration || exportExpr) {\n declaration.node.id = cloneNode(id);\n }\n } else if (exportExpr && scope.hasBinding(id.name)) {\n needBindingRegistration = true;\n\n id = scope.generateUidIdentifier(id.name);\n }\n\n const updatedDeclaration = standaloneDeclaration\n ? declaration.node\n : variableDeclaration(\"var\", [\n variableDeclarator(\n cloneNode(id),\n // @ts-expect-error When `standaloneDeclaration` is false, declaration must not be a Function/ClassDeclaration\n declaration.node,\n ),\n ]);\n\n const updatedExportDeclaration = exportNamedDeclaration(null, [\n exportSpecifier(cloneNode(id), identifier(\"default\")),\n ]);\n\n this.insertAfter(updatedExportDeclaration);\n this.replaceWith(updatedDeclaration);\n\n if (needBindingRegistration) {\n scope.registerDeclaration(this);\n }\n\n return this;\n } else if (this.get(\"specifiers\").length > 0) {\n throw new Error(\"It doesn't make sense to split exported specifiers.\");\n }\n\n const bindingIdentifiers = declaration.getOuterBindingIdentifiers();\n\n const specifiers = Object.keys(bindingIdentifiers).map(name => {\n return exportSpecifier(identifier(name), identifier(name));\n });\n\n const aliasDeclar = exportNamedDeclaration(null, specifiers);\n\n this.insertAfter(aliasDeclar);\n this.replaceWith(declaration.node);\n return this;\n}\n\nconst refersOuterBindingVisitor: Visitor<{\n needsRename: boolean;\n name: string;\n}> = {\n \"ReferencedIdentifier|BindingIdentifier\"(\n path: NodePath<t.Identifier>,\n state,\n ) {\n // check if this node matches our function id\n if (path.node.name !== state.name) return;\n state.needsRename = true;\n path.stop();\n },\n Scope(path, state) {\n if (path.scope.hasOwnBinding(state.name)) {\n path.skip();\n }\n },\n};\n\nexport function ensureFunctionName<\n N extends t.FunctionExpression | t.ClassExpression,\n>(this: NodePath<N>, supportUnicodeId: boolean): null | NodePath<N> {\n if (this.node.id) return this;\n\n const res = getFunctionName(this.node, this.parent);\n if (res == null) return this;\n let { name } = res;\n\n if (!supportUnicodeId && /[\\uD800-\\uDFFF]/.test(name)) {\n return null;\n }\n\n if (name.startsWith(\"get \") || name.startsWith(\"set \")) {\n // TODO: Remove this to support naming getters and setters\n return null;\n }\n\n name = toBindingIdentifierName(name.replace(/[/ ]/g, \"_\"));\n const id = identifier(name);\n inherits(id, res.originalNode);\n\n const state = { needsRename: false, name };\n\n // check to see if we have a local binding of the id we're setting inside of\n // the function, this is important as there are caveats associated\n\n const { scope } = this;\n const binding = scope.getOwnBinding(name);\n if (binding) {\n if (binding.kind === \"param\") {\n // safari will blow up in strict mode with code like:\n //\n // let t = function t(t) {};\n //\n // with the error:\n //\n // Cannot declare a parameter named 't' as it shadows the name of a\n // strict mode function.\n //\n // this isn't to the spec and they've invented this behaviour which is\n // **extremely** annoying so we avoid setting the name if it has a param\n // with the same id\n state.needsRename = true;\n } else {\n // otherwise it's defined somewhere in scope like:\n //\n // let t = function () {\n // let t = 2;\n // };\n //\n // so we can safely just set the id and move along as it shadows the\n // bound function id\n }\n } else if (scope.parent.hasBinding(name) || scope.hasGlobal(name)) {\n this.traverse(refersOuterBindingVisitor, state);\n }\n\n if (!state.needsRename) {\n this.node.id = id;\n scope.getProgramParent().references[id.name] = true;\n return this;\n }\n\n if (scope.hasBinding(id.name) && !scope.hasGlobal(id.name)) {\n // we can just munge the local binding\n scope.rename(id.name);\n this.node.id = id;\n scope.getProgramParent().references[id.name] = true;\n return this;\n }\n\n // TODO: we don't currently support wrapping class expressions\n if (!isFunction(this.node)) return null;\n\n // need to add a wrapper since we can't change the references\n\n const key = scope.generateUidIdentifier(id.name);\n // shim in dummy params to retain function arity, if you try to read the\n // source then you'll get the original since it's proxied so it's all good\n const params = [];\n for (let i = 0, len = getFunctionArity(this.node); i < len; i++) {\n params.push(scope.generateUidIdentifier(\"x\"));\n }\n const call = template.expression.ast`\n (function (${key}) {\n function ${id}(${params}) {\n return ${cloneNode(key)}.apply(this, arguments);\n }\n\n ${cloneNode(id)}.toString = function () {\n return ${cloneNode(key)}.toString();\n }\n\n return ${cloneNode(id)};\n })(${toExpression(this.node)})\n ` as t.CallExpression;\n\n return this.replaceWith(call)[0].get(\"arguments.0\") as NodePath<N>;\n}\n\nfunction getFunctionArity(node: t.Function): number {\n const count = node.params.findIndex(\n param => isAssignmentPattern(param) || isRestElement(param),\n );\n return count === -1 ? node.params.length : count;\n}\n","// This file contains methods responsible for introspecting the current path for certain values.\n\nimport type NodePath from \"./index.ts\";\nimport {\n STATEMENT_OR_BLOCK_KEYS,\n VISITOR_KEYS,\n isBlockStatement,\n isExpression,\n isIdentifier,\n isLiteral,\n isStringLiteral,\n isType,\n matchesPattern as _matchesPattern,\n} from \"@babel/types\";\nimport type * as t from \"@babel/types\";\n\n/**\n * Match the current node if it matches the provided `pattern`.\n *\n * For example, given the match `React.createClass` it would match the\n * parsed nodes of `React.createClass` and `React[\"createClass\"]`.\n */\n\nexport function matchesPattern(\n this: NodePath,\n pattern: string,\n allowPartial?: boolean,\n): boolean {\n return _matchesPattern(this.node, pattern, allowPartial);\n}\n\nif (!process.env.BABEL_8_BREAKING && !USE_ESM) {\n /**\n * Check whether we have the input `key`. If the `key` references an array then we check\n * if the array has any items, otherwise we just check if it's falsy.\n */\n // eslint-disable-next-line no-restricted-globals\n exports.has = function has<N extends t.Node>(\n this: NodePath<N>,\n key: keyof N,\n ): boolean {\n const val = (this.node as N)?.[key];\n if (val && Array.isArray(val)) {\n return !!val.length;\n } else {\n return !!val;\n }\n };\n}\n\nexport function isStatic(this: NodePath): boolean {\n return this.scope.isStatic(this.node);\n}\n\nif (!process.env.BABEL_8_BREAKING && !USE_ESM) {\n /**\n * Alias of `has`.\n */\n // eslint-disable-next-line no-restricted-globals\n exports.is = exports.has;\n\n /**\n * Opposite of `has`.\n */\n // eslint-disable-next-line no-restricted-globals\n exports.isnt = function isnt<N extends t.Node>(\n this: NodePath<N>,\n key: keyof N,\n ): boolean {\n // @ts-expect-error Babel 7\n return !this.has(key);\n };\n\n /**\n * Check whether the path node `key` strict equals `value`.\n */\n // eslint-disable-next-line no-restricted-globals\n exports.equals = function equals<N extends t.Node>(\n this: NodePath<N>,\n key: keyof N,\n value: any,\n ): boolean {\n return (this.node as N)[key] === value;\n };\n}\n\n/**\n * Check the type against our stored internal type of the node. This is handy when a node has\n * been removed yet we still internally know the type and need it to calculate node replacement.\n */\n\nexport function isNodeType(this: NodePath, type: string): boolean {\n return isType(this.type, type);\n}\n\n/**\n * This checks whether or not we're in one of the following positions:\n *\n * for (KEY in right);\n * for (KEY;;);\n *\n * This is because these spots allow VariableDeclarations AND normal expressions so we need\n * to tell the path replacement that it's ok to replace this with an expression.\n */\n\nexport function canHaveVariableDeclarationOrExpression(this: NodePath) {\n return (\n (this.key === \"init\" || this.key === \"left\") && this.parentPath.isFor()\n );\n}\n\n/**\n * This checks whether we are swapping an arrow function's body between an\n * expression and a block statement (or vice versa).\n *\n * This is because arrow functions may implicitly return an expression, which\n * is the same as containing a block statement.\n */\n\nexport function canSwapBetweenExpressionAndStatement(\n this: NodePath,\n replacement: t.Node,\n): boolean {\n if (this.key !== \"body\" || !this.parentPath.isArrowFunctionExpression()) {\n return false;\n }\n\n if (this.isExpression()) {\n return isBlockStatement(replacement);\n } else if (this.isBlockStatement()) {\n return isExpression(replacement);\n }\n\n return false;\n}\n\n/**\n * Check whether the current path references a completion record\n */\n\nexport function isCompletionRecord(\n this: NodePath,\n allowInsideFunction?: boolean,\n): boolean {\n let path = this;\n let first = true;\n\n do {\n const { type, container } = path;\n\n // we're in a function so can't be a completion record\n if (!first && (path.isFunction() || type === \"StaticBlock\")) {\n return !!allowInsideFunction;\n }\n\n first = false;\n\n // check to see if we're the last item in the container and if we are\n // we're a completion record!\n if (Array.isArray(container) && path.key !== container.length - 1) {\n return false;\n }\n } while (\n (path = path.parentPath) &&\n !path.isProgram() &&\n !path.isDoExpression()\n );\n\n return true;\n}\n\n/**\n * Check whether or not the current `key` allows either a single statement or block statement\n * so we can explode it if necessary.\n */\n\nexport function isStatementOrBlock(this: NodePath): boolean {\n if (\n this.parentPath.isLabeledStatement() ||\n isBlockStatement(this.container as t.Node)\n ) {\n return false;\n } else {\n return STATEMENT_OR_BLOCK_KEYS.includes(this.key as string);\n }\n}\n\n/**\n * Check if the currently assigned path references the `importName` of `moduleSource`.\n */\n\nexport function referencesImport(\n this: NodePath,\n moduleSource: string,\n importName: string,\n): boolean {\n if (!this.isReferencedIdentifier()) {\n if (\n (this.isJSXMemberExpression() &&\n this.node.property.name === importName) ||\n ((this.isMemberExpression() || this.isOptionalMemberExpression()) &&\n (this.node.computed\n ? isStringLiteral(this.node.property, { value: importName })\n : (this.node.property as t.Identifier).name === importName))\n ) {\n const object = (\n this as NodePath<t.MemberExpression | t.OptionalMemberExpression>\n ).get(\"object\");\n return (\n object.isReferencedIdentifier() &&\n object.referencesImport(moduleSource, \"*\")\n );\n }\n\n return false;\n }\n\n const binding = this.scope.getBinding((this.node as t.Identifier).name);\n if (!binding || binding.kind !== \"module\") return false;\n\n const path = binding.path;\n const parent = path.parentPath;\n if (!parent.isImportDeclaration()) return false;\n\n // check moduleSource\n if (parent.node.source.value === moduleSource) {\n if (!importName) return true;\n } else {\n return false;\n }\n\n if (path.isImportDefaultSpecifier() && importName === \"default\") {\n return true;\n }\n\n if (path.isImportNamespaceSpecifier() && importName === \"*\") {\n return true;\n }\n\n if (\n path.isImportSpecifier() &&\n isIdentifier(path.node.imported, { name: importName })\n ) {\n return true;\n }\n\n return false;\n}\n\n/**\n * Get the source code associated with this node.\n */\n\nexport function getSource(this: NodePath): string {\n const node = this.node;\n if (node.end) {\n const code = this.hub.getCode();\n if (code) return code.slice(node.start, node.end);\n }\n return \"\";\n}\n\nexport function willIMaybeExecuteBefore(\n this: NodePath,\n target: NodePath,\n): boolean {\n return this._guessExecutionStatusRelativeTo(target) !== \"after\";\n}\n\nfunction getOuterFunction(path: NodePath) {\n return path.isProgram()\n ? path\n : (\n path.parentPath.scope.getFunctionParent() ||\n path.parentPath.scope.getProgramParent()\n ).path;\n}\n\nfunction isExecutionUncertain(type: t.Node[\"type\"], key: string) {\n switch (type) {\n // a && FOO\n // a || FOO\n case \"LogicalExpression\":\n return key === \"right\";\n\n // a ? FOO : FOO\n // if (a) FOO; else FOO;\n case \"ConditionalExpression\":\n case \"IfStatement\":\n return key === \"consequent\" || key === \"alternate\";\n\n // while (a) FOO;\n case \"WhileStatement\":\n case \"DoWhileStatement\":\n case \"ForInStatement\":\n case \"ForOfStatement\":\n return key === \"body\";\n\n // for (a; b; FOO) FOO;\n case \"ForStatement\":\n return key === \"body\" || key === \"update\";\n\n // switch (a) { FOO }\n case \"SwitchStatement\":\n return key === \"cases\";\n\n // try { a } catch FOO finally { b }\n case \"TryStatement\":\n return key === \"handler\";\n\n // var [ x = FOO ]\n case \"AssignmentPattern\":\n return key === \"right\";\n\n // a?.[FOO]\n case \"OptionalMemberExpression\":\n return key === \"property\";\n\n // a?.(FOO)\n case \"OptionalCallExpression\":\n return key === \"arguments\";\n\n default:\n return false;\n }\n}\n\nfunction isExecutionUncertainInList(paths: NodePath[], maxIndex: number) {\n for (let i = 0; i < maxIndex; i++) {\n const path = paths[i];\n if (isExecutionUncertain(path.parent.type, path.parentKey)) {\n return true;\n }\n }\n return false;\n}\n\n// TODO(Babel 8)\n// This can be { before: boolean, after: boolean, unknown: boolean }.\n// This allows transforms like the tdz one to treat cases when the status\n// is both before and unknown/after like if it were before.\ntype RelativeExecutionStatus = \"before\" | \"after\" | \"unknown\";\n\n// Used to avoid infinite recursion in cases like\n// function f() { if (false) f(); }\n// f();\n// It also works with indirect recursion.\nconst SYMBOL_CHECKING = Symbol();\n\ntype ExecutionStatusCache = Map<\n t.Node,\n Map<t.Node, RelativeExecutionStatus | typeof SYMBOL_CHECKING>\n>;\n\n/**\n * Given a `target` check the execution status of it relative to the current path.\n *\n * \"Execution status\" simply refers to where or not we **think** this will execute\n * before or after the input `target` element.\n */\n\nexport function _guessExecutionStatusRelativeTo(\n this: NodePath,\n target: NodePath,\n): RelativeExecutionStatus {\n return _guessExecutionStatusRelativeToCached(this, target, new Map());\n}\n\nfunction _guessExecutionStatusRelativeToCached(\n base: NodePath,\n target: NodePath,\n cache: ExecutionStatusCache,\n): RelativeExecutionStatus {\n // check if the two paths are in different functions, we can't track execution of these\n const funcParent = {\n this: getOuterFunction(base),\n target: getOuterFunction(target),\n };\n\n // here we check the `node` equality as sometimes we may have different paths for the\n // same node due to path thrashing\n if (funcParent.target.node !== funcParent.this.node) {\n return _guessExecutionStatusRelativeToDifferentFunctionsCached(\n base,\n funcParent.target,\n cache,\n );\n }\n\n const paths = {\n target: target.getAncestry(),\n this: base.getAncestry(),\n };\n\n // If this is an ancestor of the target path,\n // e.g. f(g); where this is f and target is g.\n if (paths.target.includes(base)) return \"after\";\n if (paths.this.includes(target)) return \"before\";\n\n // get ancestor where the branches intersect\n let commonPath;\n const commonIndex = { target: 0, this: 0 };\n\n while (!commonPath && commonIndex.this < paths.this.length) {\n const path = paths.this[commonIndex.this];\n commonIndex.target = paths.target.indexOf(path);\n if (commonIndex.target >= 0) {\n commonPath = path;\n } else {\n commonIndex.this++;\n }\n }\n\n if (!commonPath) {\n throw new Error(\n \"Internal Babel error - The two compared nodes\" +\n \" don't appear to belong to the same program.\",\n );\n }\n\n if (\n isExecutionUncertainInList(paths.this, commonIndex.this - 1) ||\n isExecutionUncertainInList(paths.target, commonIndex.target - 1)\n ) {\n return \"unknown\";\n }\n\n const divergence = {\n this: paths.this[commonIndex.this - 1],\n target: paths.target[commonIndex.target - 1],\n };\n\n // container list so let's see which one is after the other\n // e.g. [ THIS, TARGET ]\n if (\n divergence.target.listKey &&\n divergence.this.listKey &&\n divergence.target.container === divergence.this.container\n ) {\n return divergence.target.key > divergence.this.key ? \"before\" : \"after\";\n }\n\n // otherwise we're associated by a parent node, check which key comes before the other\n const keys = VISITOR_KEYS[commonPath.type];\n const keyPosition = {\n this: keys.indexOf(divergence.this.parentKey),\n target: keys.indexOf(divergence.target.parentKey),\n };\n return keyPosition.target > keyPosition.this ? \"before\" : \"after\";\n}\n\nfunction _guessExecutionStatusRelativeToDifferentFunctionsInternal(\n base: NodePath,\n target: NodePath,\n cache: ExecutionStatusCache,\n): RelativeExecutionStatus {\n if (!target.isFunctionDeclaration()) {\n if (\n _guessExecutionStatusRelativeToCached(base, target, cache) === \"before\"\n ) {\n return \"before\";\n }\n return \"unknown\";\n } else if (target.parentPath.isExportDeclaration()) {\n return \"unknown\";\n }\n\n // so we're in a completely different function, if this is a function declaration\n // then we can be a bit smarter and handle cases where the function is either\n // a. not called at all (part of an export)\n // b. called directly\n const binding = target.scope.getBinding(target.node.id.name);\n\n // no references!\n if (!binding.references) return \"before\";\n\n const referencePaths: Array<NodePath> = binding.referencePaths;\n\n let allStatus;\n\n // verify that all the calls have the same execution status\n for (const path of referencePaths) {\n // if a reference is a child of the function we're checking against then we can\n // safely ignore it\n const childOfFunction = !!path.find(path => path.node === target.node);\n if (childOfFunction) continue;\n\n if (path.key !== \"callee\" || !path.parentPath.isCallExpression()) {\n // This function is passed as a reference, so we don't\n // know when it will be called.\n return \"unknown\";\n }\n\n const status = _guessExecutionStatusRelativeToCached(base, path, cache);\n\n if (allStatus && allStatus !== status) {\n return \"unknown\";\n } else {\n allStatus = status;\n }\n }\n\n return allStatus;\n}\n\nfunction _guessExecutionStatusRelativeToDifferentFunctionsCached(\n base: NodePath,\n target: NodePath,\n cache: ExecutionStatusCache,\n): RelativeExecutionStatus {\n let nodeMap = cache.get(base.node);\n let cached;\n\n if (!nodeMap) {\n cache.set(base.node, (nodeMap = new Map()));\n } else if ((cached = nodeMap.get(target.node))) {\n if (cached === SYMBOL_CHECKING) {\n return \"unknown\";\n }\n return cached;\n }\n\n nodeMap.set(target.node, SYMBOL_CHECKING);\n\n const result = _guessExecutionStatusRelativeToDifferentFunctionsInternal(\n base,\n target,\n cache,\n );\n\n nodeMap.set(target.node, result);\n return result;\n}\n\n/**\n * Resolve a \"pointer\" `NodePath` to it's absolute path.\n */\nexport function resolve(\n this: NodePath,\n dangerous?: boolean,\n resolved?: NodePath[],\n) {\n return _resolve.call(this, dangerous, resolved) || this;\n}\n\nexport function _resolve(\n this: NodePath,\n dangerous?: boolean,\n resolved?: NodePath[],\n): NodePath | undefined | null {\n // detect infinite recursion\n // todo: possibly have a max length on this just to be safe\n if (resolved?.includes(this)) return;\n\n // we store all the paths we've \"resolved\" in this array to prevent infinite recursion\n resolved = resolved || [];\n resolved.push(this);\n\n if (this.isVariableDeclarator()) {\n if (this.get(\"id\").isIdentifier()) {\n return this.get(\"init\").resolve(dangerous, resolved);\n } else {\n // otherwise it's a request for a pattern and that's a bit more tricky\n }\n } else if (this.isReferencedIdentifier()) {\n const binding = this.scope.getBinding(this.node.name);\n if (!binding) return;\n\n // reassigned so we can't really resolve it\n if (!binding.constant) return;\n\n // todo - lookup module in dependency graph\n if (binding.kind === \"module\") return;\n\n if (binding.path !== this) {\n const ret = binding.path.resolve(dangerous, resolved);\n // If the identifier resolves to parent node then we can't really resolve it.\n if (this.find(parent => parent.node === ret.node)) return;\n return ret;\n }\n } else if (this.isTypeCastExpression()) {\n // @ ts-ignore todo: babel-types\n return this.get(\"expression\").resolve(dangerous, resolved);\n } else if (dangerous && this.isMemberExpression()) {\n // this is dangerous, as non-direct target assignments will mutate it's state\n // making this resolution inaccurate\n\n const targetKey = this.toComputedKey();\n if (!isLiteral(targetKey)) return;\n\n // @ts-expect-error todo(flow->ts): NullLiteral\n const targetName = targetKey.value;\n\n const target = this.get(\"object\").resolve(dangerous, resolved);\n\n if (target.isObjectExpression()) {\n const props = target.get(\"properties\");\n for (const prop of props as any[]) {\n if (!prop.isProperty()) continue;\n\n const key = prop.get(\"key\");\n\n // { foo: obj }\n let match =\n prop.isnt(\"computed\") && key.isIdentifier({ name: targetName });\n\n // { \"foo\": \"obj\" } or { [\"foo\"]: \"obj\" }\n match = match || key.isLiteral({ value: targetName });\n\n if (match) return prop.get(\"value\").resolve(dangerous, resolved);\n }\n } else if (target.isArrayExpression() && !isNaN(+targetName)) {\n const elems = target.get(\"elements\");\n const elem = elems[targetName];\n if (elem) return elem.resolve(dangerous, resolved);\n }\n }\n}\n\nexport function isConstantExpression(this: NodePath): boolean {\n if (this.isIdentifier()) {\n const binding = this.scope.getBinding(this.node.name);\n if (!binding) return false;\n return binding.constant;\n }\n\n if (this.isLiteral()) {\n if (this.isRegExpLiteral()) {\n return false;\n }\n\n if (this.isTemplateLiteral()) {\n return this.get(\"expressions\").every(expression =>\n expression.isConstantExpression(),\n );\n }\n\n return true;\n }\n\n if (this.isUnaryExpression()) {\n if (this.node.operator !== \"void\") {\n return false;\n }\n\n return this.get(\"argument\").isConstantExpression();\n }\n\n if (this.isBinaryExpression()) {\n const { operator } = this.node;\n return (\n operator !== \"in\" &&\n operator !== \"instanceof\" &&\n this.get(\"left\").isConstantExpression() &&\n this.get(\"right\").isConstantExpression()\n );\n }\n\n if (this.isMemberExpression()) {\n return (\n !this.node.computed &&\n this.get(\"object\").isIdentifier({ name: \"Symbol\" }) &&\n !this.scope.hasBinding(\"Symbol\", { noGlobals: true })\n );\n }\n\n if (this.isCallExpression()) {\n return (\n this.node.arguments.length === 1 &&\n this.get(\"callee\").matchesPattern(\"Symbol.for\") &&\n !this.scope.hasBinding(\"Symbol\", { noGlobals: true }) &&\n this.get(\"arguments\")[0].isStringLiteral()\n );\n }\n\n return false;\n}\n\nexport function isInStrictMode(this: NodePath) {\n const start = this.isProgram() ? this : this.parentPath;\n\n const strictParent = start.find(path => {\n if (path.isProgram({ sourceType: \"module\" })) return true;\n\n if (path.isClass()) return true;\n\n if (\n path.isArrowFunctionExpression() &&\n !path.get(\"body\").isBlockStatement()\n ) {\n return false;\n }\n\n let body: t.BlockStatement | t.Program;\n if (path.isFunction()) {\n body = path.node.body as t.BlockStatement;\n } else if (path.isProgram()) {\n // @ts-expect-error TODO: TS thinks that `path` here cannot be\n // Program due to the `isProgram()` check at the beginning of\n // the function\n body = path.node;\n } else {\n return false;\n }\n\n for (const directive of body.directives) {\n if (directive.value.value === \"use strict\") {\n return true;\n }\n }\n });\n\n return !!strictParent;\n}\n","// This file contains methods responsible for dealing with/retrieving children or siblings.\n\nimport type TraversalContext from \"../context.ts\";\nimport NodePath from \"./index.ts\";\nimport {\n getAssignmentIdentifiers as _getAssignmentIdentifiers,\n getBindingIdentifiers as _getBindingIdentifiers,\n getOuterBindingIdentifiers as _getOuterBindingIdentifiers,\n numericLiteral,\n unaryExpression,\n} from \"@babel/types\";\nimport type * as t from \"@babel/types\";\n\nconst NORMAL_COMPLETION = 0;\nconst BREAK_COMPLETION = 1;\n\ntype Completion = {\n path: NodePath;\n type: 0 | 1;\n};\n\ntype CompletionContext = {\n // whether the current context allows `break` statement. When it allows, we have\n // to search all the statements for potential `break`\n canHaveBreak: boolean;\n // whether the statement is an immediate descendant of a switch case clause\n inCaseClause: boolean;\n // whether the `break` statement record should be populated to upper level\n // when a `break` statement is an immediate descendant of a block statement, e.g.\n // `{ break }`, it can influence the control flow in the upper levels.\n shouldPopulateBreak: boolean;\n};\n\nfunction NormalCompletion(path: NodePath): Completion {\n return { type: NORMAL_COMPLETION, path };\n}\n\nfunction BreakCompletion(path: NodePath): Completion {\n return { type: BREAK_COMPLETION, path };\n}\n\nexport function getOpposite(this: NodePath): NodePath | null {\n if (this.key === \"left\") {\n return this.getSibling(\"right\");\n } else if (this.key === \"right\") {\n return this.getSibling(\"left\");\n }\n return null;\n}\n\nfunction addCompletionRecords(\n path: NodePath | null | undefined,\n records: Completion[],\n context: CompletionContext,\n): Completion[] {\n if (path) {\n records.push(..._getCompletionRecords(path, context));\n }\n return records;\n}\n\nfunction completionRecordForSwitch(\n cases: NodePath<t.SwitchCase>[],\n records: Completion[],\n context: CompletionContext,\n): Completion[] {\n // https://tc39.es/ecma262/#sec-runtime-semantics-caseblockevaluation\n let lastNormalCompletions: Completion[] = [];\n for (let i = 0; i < cases.length; i++) {\n const casePath = cases[i];\n const caseCompletions = _getCompletionRecords(casePath, context);\n const normalCompletions = [];\n const breakCompletions = [];\n for (const c of caseCompletions) {\n if (c.type === NORMAL_COMPLETION) {\n normalCompletions.push(c);\n }\n if (c.type === BREAK_COMPLETION) {\n breakCompletions.push(c);\n }\n }\n if (normalCompletions.length) {\n lastNormalCompletions = normalCompletions;\n }\n records.push(...breakCompletions);\n }\n records.push(...lastNormalCompletions);\n return records;\n}\n\nfunction normalCompletionToBreak(completions: Completion[]) {\n completions.forEach(c => {\n c.type = BREAK_COMPLETION;\n });\n}\n\n/**\n * Determine how we should handle the break statement for break completions\n *\n * @param {Completion[]} completions\n * @param {boolean} reachable Whether the break statement is reachable after\n we mark the normal completions _before_ the given break completions as the final\n completions. For example,\n `{ 0 }; break;` is transformed to `{ return 0 }; break;`, the `break` here is unreachable\n and thus can be removed without consequences. We may in the future reserve them instead since\n we do not consistently remove unreachable statements _after_ break\n `{ var x = 0 }; break;` is transformed to `{ var x = 0 }; return void 0;`, the `break` is reachable\n because we can not wrap variable declaration under a return statement\n */\nfunction replaceBreakStatementInBreakCompletion(\n completions: Completion[],\n reachable: boolean,\n) {\n completions.forEach(c => {\n if (c.path.isBreakStatement({ label: null })) {\n if (reachable) {\n c.path.replaceWith(unaryExpression(\"void\", numericLiteral(0)));\n } else {\n c.path.remove();\n }\n }\n });\n}\n\nfunction getStatementListCompletion(\n paths: NodePath[],\n context: CompletionContext,\n): Completion[] {\n const completions = [];\n if (context.canHaveBreak) {\n let lastNormalCompletions = [];\n for (let i = 0; i < paths.length; i++) {\n const path = paths[i];\n const newContext = { ...context, inCaseClause: false };\n if (\n path.isBlockStatement() &&\n (context.inCaseClause || // case test: { break }\n context.shouldPopulateBreak) // case test: { { break } }\n ) {\n newContext.shouldPopulateBreak = true;\n } else {\n newContext.shouldPopulateBreak = false;\n }\n const statementCompletions = _getCompletionRecords(path, newContext);\n if (\n statementCompletions.length > 0 &&\n // we can stop search `paths` when we have seen a `path` that is\n // effectively a `break` statement. Examples are\n // - `break`\n // - `if (true) { 1; break } else { 2; break }`\n // - `{ break }```\n // In other words, the paths after this `path` are unreachable\n statementCompletions.every(c => c.type === BREAK_COMPLETION)\n ) {\n if (\n lastNormalCompletions.length > 0 &&\n statementCompletions.every(c =>\n c.path.isBreakStatement({ label: null }),\n )\n ) {\n // when a break completion has a path as BreakStatement, it must be `{ break }`\n // whose completion value we can not determine, otherwise it would have been\n // replaced by `replaceBreakStatementInBreakCompletion`\n // When we have seen normal completions from the last statement\n // it is safe to stop populating break and mark normal completions as break\n normalCompletionToBreak(lastNormalCompletions);\n completions.push(...lastNormalCompletions);\n // Declarations have empty completion record, however they can not be nested\n // directly in return statement, i.e. `return (var a = 1)` is invalid.\n if (lastNormalCompletions.some(c => c.path.isDeclaration())) {\n completions.push(...statementCompletions);\n replaceBreakStatementInBreakCompletion(\n statementCompletions,\n /* reachable */ true,\n );\n }\n replaceBreakStatementInBreakCompletion(\n statementCompletions,\n /* reachable */ false,\n );\n } else {\n completions.push(...statementCompletions);\n if (!context.shouldPopulateBreak) {\n replaceBreakStatementInBreakCompletion(\n statementCompletions,\n /* reachable */ true,\n );\n }\n }\n break;\n }\n if (i === paths.length - 1) {\n completions.push(...statementCompletions);\n } else {\n lastNormalCompletions = [];\n for (let i = 0; i < statementCompletions.length; i++) {\n const c = statementCompletions[i];\n if (c.type === BREAK_COMPLETION) {\n completions.push(c);\n }\n if (c.type === NORMAL_COMPLETION) {\n lastNormalCompletions.push(c);\n }\n }\n }\n }\n } else if (paths.length) {\n // When we are in a context where `break` must not exist, we can skip linear\n // search on statement lists and assume that the last\n // non-variable-declaration statement determines the completion.\n for (let i = paths.length - 1; i >= 0; i--) {\n const pathCompletions = _getCompletionRecords(paths[i], context);\n if (\n pathCompletions.length > 1 ||\n (pathCompletions.length === 1 &&\n !pathCompletions[0].path.isVariableDeclaration())\n ) {\n completions.push(...pathCompletions);\n break;\n }\n }\n }\n return completions;\n}\n\nfunction _getCompletionRecords(\n path: NodePath,\n context: CompletionContext,\n): Completion[] {\n let records: Completion[] = [];\n if (path.isIfStatement()) {\n records = addCompletionRecords(path.get(\"consequent\"), records, context);\n records = addCompletionRecords(path.get(\"alternate\"), records, context);\n } else if (\n path.isDoExpression() ||\n path.isFor() ||\n path.isWhile() ||\n path.isLabeledStatement()\n ) {\n return addCompletionRecords(path.get(\"body\"), records, context);\n } else if (path.isProgram() || path.isBlockStatement()) {\n return getStatementListCompletion(path.get(\"body\"), context);\n } else if (path.isFunction()) {\n return _getCompletionRecords(path.get(\"body\"), context);\n } else if (path.isTryStatement()) {\n records = addCompletionRecords(path.get(\"block\"), records, context);\n records = addCompletionRecords(path.get(\"handler\"), records, context);\n } else if (path.isCatchClause()) {\n return addCompletionRecords(path.get(\"body\"), records, context);\n } else if (path.isSwitchStatement()) {\n return completionRecordForSwitch(path.get(\"cases\"), records, context);\n } else if (path.isSwitchCase()) {\n return getStatementListCompletion(path.get(\"consequent\"), {\n canHaveBreak: true,\n shouldPopulateBreak: false,\n inCaseClause: true,\n });\n } else if (path.isBreakStatement()) {\n records.push(BreakCompletion(path));\n } else {\n records.push(NormalCompletion(path));\n }\n\n return records;\n}\n\n/**\n * Retrieve the completion records of a given path.\n * Note: to ensure proper support on `break` statement, this method\n * will manipulate the AST around the break statement. Do not call the method\n * twice for the same path.\n *\n * @export\n * @param {NodePath} this\n * @returns {NodePath[]} Completion records\n */\nexport function getCompletionRecords(this: NodePath): NodePath[] {\n const records = _getCompletionRecords(this, {\n canHaveBreak: false,\n shouldPopulateBreak: false,\n inCaseClause: false,\n });\n return records.map(r => r.path);\n}\n\nexport function getSibling(this: NodePath, key: string | number): NodePath {\n return NodePath.get({\n parentPath: this.parentPath,\n parent: this.parent,\n container: this.container,\n listKey: this.listKey,\n key: key,\n }).setContext(this.context);\n}\n\nexport function getPrevSibling(this: NodePath): NodePath {\n // @ts-expect-error todo(flow->ts) this.key could be a string\n return this.getSibling(this.key - 1);\n}\n\nexport function getNextSibling(this: NodePath): NodePath {\n // @ts-expect-error todo(flow->ts) this.key could be a string\n return this.getSibling(this.key + 1);\n}\n\nexport function getAllNextSiblings(this: NodePath): NodePath[] {\n // @ts-expect-error todo(flow->ts) this.key could be a string\n let _key: number = this.key;\n let sibling = this.getSibling(++_key);\n const siblings = [];\n while (sibling.node) {\n siblings.push(sibling);\n sibling = this.getSibling(++_key);\n }\n return siblings;\n}\n\nexport function getAllPrevSiblings(this: NodePath): NodePath[] {\n // @ts-expect-error todo(flow->ts) this.key could be a string\n let _key: number = this.key;\n let sibling = this.getSibling(--_key);\n const siblings = [];\n while (sibling.node) {\n siblings.push(sibling);\n sibling = this.getSibling(--_key);\n }\n return siblings;\n}\n\n// convert \"1\" to 1 (string index to number index)\ntype MaybeToIndex<T extends string> = T extends `${bigint}` ? number : T;\n\ntype Pattern<Obj extends string, Prop extends string> = `${Obj}.${Prop}`;\n\n// split \"body.body.1\" to [\"body\", \"body\", 1]\ntype Split<P extends string> =\n P extends Pattern<infer O, infer U>\n ? [MaybeToIndex<O>, ...Split<U>]\n : [MaybeToIndex<P>];\n\n// traverse the Node with tuple path [\"body\", \"body\", 1]\n// Path should be created with Split\ntype Trav<\n Node extends t.Node | t.Node[],\n Path extends unknown[],\n> = Path extends [infer K, ...infer R]\n ? K extends keyof Node\n ? Node[K] extends t.Node | t.Node[]\n ? R extends []\n ? Node[K]\n : Trav<Node[K], R>\n : never\n : never\n : never;\n\ntype ToNodePath<T> =\n T extends Array<t.Node | null | undefined>\n ? Array<NodePath<T[number]>>\n : T extends t.Node | null | undefined\n ? NodePath<T>\n : never;\n\nfunction get<T extends NodePath, K extends keyof T[\"node\"]>(\n this: T,\n key: K,\n context?: boolean | TraversalContext,\n): T extends any\n ? T[\"node\"][K] extends Array<t.Node | null | undefined>\n ? Array<NodePath<T[\"node\"][K][number]>>\n : T[\"node\"][K] extends t.Node | null | undefined\n ? NodePath<T[\"node\"][K]>\n : never\n : never;\n\nfunction get<T extends NodePath, K extends string>(\n this: T,\n key: K,\n context?: boolean | TraversalContext,\n): T extends any ? ToNodePath<Trav<T[\"node\"], Split<K>>> : never;\n\nfunction get(\n this: NodePath,\n key: string,\n context?: true | TraversalContext,\n): NodePath | NodePath[];\n\nfunction get(\n this: NodePath,\n key: string,\n context: true | TraversalContext = true,\n): NodePath | NodePath[] {\n if (context === true) context = this.context;\n const parts = key.split(\".\");\n if (parts.length === 1) {\n // \"foo\"\n // @ts-expect-error key may not index T\n return _getKey.call(this, key, context);\n } else {\n // \"foo.bar\"\n return _getPattern.call(this, parts, context);\n }\n}\n\nexport { get };\n\nexport function _getKey<T extends t.Node>(\n this: NodePath<T>,\n key: keyof T & string,\n context?: TraversalContext,\n): NodePath | NodePath[] {\n const node = this.node as T;\n const container = node[key];\n\n if (Array.isArray(container)) {\n // requested a container so give them all the paths\n return container.map((_, i) => {\n return NodePath.get({\n listKey: key,\n parentPath: this,\n parent: node,\n container: container,\n key: i,\n }).setContext(context);\n });\n } else {\n return NodePath.get({\n parentPath: this,\n parent: node,\n container: node,\n key: key,\n }).setContext(context);\n }\n}\n\nexport function _getPattern(\n this: NodePath,\n parts: string[],\n context?: TraversalContext,\n): NodePath | NodePath[] {\n let path: NodePath | NodePath[] = this;\n for (const part of parts) {\n if (part === \".\") {\n // @ts-expect-error todo(flow-ts): Can path be an array here?\n path = path.parentPath;\n } else {\n if (Array.isArray(path)) {\n // @ts-expect-error part may not index path\n path = path[part];\n } else {\n path = path.get(part, context);\n }\n }\n }\n return path;\n}\n\nexport function getAssignmentIdentifiers(this: NodePath) {\n return _getAssignmentIdentifiers(this.node);\n}\n\nfunction getBindingIdentifiers(\n duplicates: true,\n): Record<string, t.Identifier[]>;\nfunction getBindingIdentifiers(\n duplicates?: false,\n): Record<string, t.Identifier>;\nfunction getBindingIdentifiers(\n duplicates: boolean,\n): Record<string, t.Identifier[] | t.Identifier>;\n\nfunction getBindingIdentifiers(\n this: NodePath,\n duplicates?: boolean,\n): Record<string, t.Identifier[] | t.Identifier> {\n return _getBindingIdentifiers(this.node, duplicates);\n}\n\nexport { getBindingIdentifiers };\n\nfunction getOuterBindingIdentifiers(\n duplicates: true,\n): Record<string, t.Identifier[]>;\nfunction getOuterBindingIdentifiers(\n duplicates?: false,\n): Record<string, t.Identifier>;\nfunction getOuterBindingIdentifiers(\n duplicates: boolean,\n): Record<string, t.Identifier[] | t.Identifier>;\n\nfunction getOuterBindingIdentifiers(\n this: NodePath,\n duplicates?: boolean,\n): Record<string, t.Identifier[] | t.Identifier> {\n return _getOuterBindingIdentifiers(this.node, duplicates);\n}\n\nexport { getOuterBindingIdentifiers };\n\nfunction getBindingIdentifierPaths(\n duplicates: true,\n outerOnly?: boolean,\n): Record<string, NodePath<t.Identifier>[]>;\nfunction getBindingIdentifierPaths(\n duplicates: false,\n outerOnly?: boolean,\n): Record<string, NodePath<t.Identifier>>;\nfunction getBindingIdentifierPaths(\n duplicates?: boolean,\n outerOnly?: boolean,\n): Record<string, NodePath<t.Identifier> | NodePath<t.Identifier>[]>;\n\n// original source - https://github.com/babel/babel/blob/main/packages/babel-types/src/retrievers/getBindingIdentifiers.js\n// path.getBindingIdentifiers returns nodes where the following re-implementation returns paths\nfunction getBindingIdentifierPaths(\n this: NodePath,\n duplicates: boolean = false,\n outerOnly: boolean = false,\n): Record<string, NodePath<t.Identifier> | NodePath<t.Identifier>[]> {\n const path = this;\n const search = [path];\n const ids = Object.create(null);\n\n while (search.length) {\n const id = search.shift();\n if (!id) continue;\n if (!id.node) continue;\n\n const keys = _getBindingIdentifiers.keys[id.node.type];\n\n if (id.isIdentifier()) {\n if (duplicates) {\n const _ids = (ids[id.node.name] = ids[id.node.name] || []);\n _ids.push(id);\n } else {\n ids[id.node.name] = id;\n }\n continue;\n }\n\n if (id.isExportDeclaration()) {\n const declaration = id.get(\"declaration\");\n if (declaration.isDeclaration()) {\n search.push(declaration);\n }\n continue;\n }\n\n if (outerOnly) {\n if (id.isFunctionDeclaration()) {\n search.push(id.get(\"id\"));\n continue;\n }\n if (id.isFunctionExpression()) {\n continue;\n }\n }\n\n if (keys) {\n for (let i = 0; i < keys.length; i++) {\n const key = keys[i];\n const child = id.get(key);\n if (Array.isArray(child)) {\n search.push(...child);\n } else if (child.node) {\n search.push(child);\n }\n }\n }\n }\n\n return ids;\n}\n\nexport { getBindingIdentifierPaths };\n\nfunction getOuterBindingIdentifierPaths(\n duplicates: true,\n): Record<string, NodePath<t.Identifier>[]>;\nfunction getOuterBindingIdentifierPaths(\n duplicates?: false,\n): Record<string, NodePath<t.Identifier>>;\nfunction getOuterBindingIdentifierPaths(\n duplicates?: boolean,\n): Record<string, NodePath<t.Identifier> | NodePath<t.Identifier>[]>;\n\nfunction getOuterBindingIdentifierPaths(\n this: NodePath,\n duplicates: boolean = false,\n) {\n return this.getBindingIdentifierPaths(duplicates, true);\n}\n\nexport { getOuterBindingIdentifierPaths };\n","// This file contains methods responsible for dealing with comments.\nimport type * as t from \"@babel/types\";\nimport type NodePath from \"./index.ts\";\nimport {\n addComment as _addComment,\n addComments as _addComments,\n} from \"@babel/types\";\n\n/**\n * Share comments amongst siblings.\n */\n\nexport function shareCommentsWithSiblings(this: NodePath) {\n // NOTE: this assumes numbered keys\n if (typeof this.key === \"string\") return;\n\n const node = this.node;\n if (!node) return;\n\n const trailing = node.trailingComments;\n const leading = node.leadingComments;\n if (!trailing && !leading) return;\n\n const prev = this.getSibling(this.key - 1);\n const next = this.getSibling(this.key + 1);\n const hasPrev = Boolean(prev.node);\n const hasNext = Boolean(next.node);\n\n if (hasPrev) {\n if (leading) {\n prev.addComments(\n \"trailing\",\n removeIfExisting(leading, prev.node.trailingComments),\n );\n }\n if (trailing && !hasNext) prev.addComments(\"trailing\", trailing);\n }\n if (hasNext) {\n if (trailing) {\n next.addComments(\n \"leading\",\n removeIfExisting(trailing, next.node.leadingComments),\n );\n }\n if (leading && !hasPrev) next.addComments(\"leading\", leading);\n }\n}\n\nfunction removeIfExisting<T>(list: T[], toRemove?: T[]): T[] {\n if (!toRemove?.length) return list;\n const set = new Set(toRemove);\n return list.filter(el => {\n return !set.has(el);\n });\n}\n\nexport function addComment(\n this: NodePath,\n type: t.CommentTypeShorthand,\n content: string,\n line?: boolean,\n) {\n _addComment(this.node, type, content, line);\n}\n\n/**\n * Give node `comments` of the specified `type`.\n */\n\nexport function addComments(\n this: NodePath,\n type: t.CommentTypeShorthand,\n comments: t.Comment[],\n) {\n _addComments(this.node, type, comments);\n}\n","import type { HubInterface } from \"../hub.ts\";\nimport type TraversalContext from \"../context.ts\";\nimport type { ExplodedTraverseOptions } from \"../index.ts\";\nimport * as virtualTypes from \"./lib/virtual-types.ts\";\nimport buildDebug from \"debug\";\nimport traverse from \"../index.ts\";\nimport type { Visitor } from \"../types.ts\";\nimport Scope from \"../scope/index.ts\";\nimport { validate } from \"@babel/types\";\nimport * as t from \"@babel/types\";\nimport * as cache from \"../cache.ts\";\nimport generator from \"@babel/generator\";\n\n// NodePath is split across many files.\nimport * as NodePath_ancestry from \"./ancestry.ts\";\nimport * as NodePath_inference from \"./inference/index.ts\";\nimport * as NodePath_replacement from \"./replacement.ts\";\nimport * as NodePath_evaluation from \"./evaluation.ts\";\nimport * as NodePath_conversion from \"./conversion.ts\";\nimport * as NodePath_introspection from \"./introspection.ts\";\nimport * as NodePath_context from \"./context.ts\";\nimport * as NodePath_removal from \"./removal.ts\";\nimport * as NodePath_modification from \"./modification.ts\";\nimport * as NodePath_family from \"./family.ts\";\nimport * as NodePath_comments from \"./comments.ts\";\nimport * as NodePath_virtual_types_validator from \"./lib/virtual-types-validator.ts\";\nimport type { NodePathAssertions } from \"./generated/asserts.ts\";\nimport type { NodePathValidators } from \"./generated/validators.ts\";\nimport { setup } from \"./context.ts\";\n\nconst debug = buildDebug(\"babel\");\n\nexport const REMOVED = 1 << 0;\nexport const SHOULD_STOP = 1 << 1;\nexport const SHOULD_SKIP = 1 << 2;\n\ndeclare const bit: import(\"../../../../scripts/babel-plugin-bit-decorator/types.d.ts\").BitDecorator<any>;\n\nconst NodePath_Final = class NodePath {\n constructor(hub: HubInterface, parent: t.Node | null) {\n this.parent = parent;\n this.hub = hub;\n this.data = null;\n\n this.context = null;\n this.scope = null;\n }\n\n declare parent: t.Node;\n declare hub: HubInterface;\n declare data: Record<string | symbol, unknown>;\n // TraversalContext is configured by setContext\n declare context: TraversalContext;\n declare scope: Scope;\n\n contexts: Array<TraversalContext> = [];\n state: any = null;\n opts: ExplodedTraverseOptions | null = null;\n\n @bit.storage _traverseFlags: number;\n @bit(REMOVED) accessor removed = false;\n @bit(SHOULD_STOP) accessor shouldStop = false;\n @bit(SHOULD_SKIP) accessor shouldSkip = false;\n\n skipKeys: Record<string, boolean> | null = null;\n parentPath: NodePath_Final | null = null;\n container: t.Node | Array<t.Node> | null = null;\n listKey: string | null = null;\n key: string | number | null = null;\n node: t.Node | null = null;\n type: t.Node[\"type\"] | null = null;\n\n static get({\n hub,\n parentPath,\n parent,\n container,\n listKey,\n key,\n }: {\n hub?: HubInterface;\n parentPath: NodePath_Final | null;\n parent: t.Node;\n container: t.Node | t.Node[];\n listKey?: string;\n key: string | number;\n }): NodePath_Final {\n if (!hub && parentPath) {\n hub = parentPath.hub;\n }\n\n if (!parent) {\n throw new Error(\"To get a node path the parent needs to exist\");\n }\n\n const targetNode =\n // @ts-expect-error key must present in container\n container[key];\n\n const paths = cache.getOrCreateCachedPaths(hub, parent);\n\n let path = paths.get(targetNode);\n if (!path) {\n path = new NodePath(hub, parent) as NodePath_Final;\n if (targetNode) paths.set(targetNode, path);\n }\n\n setup.call(path, parentPath, container, listKey, key);\n\n return path;\n }\n\n getScope(this: NodePath_Final, scope: Scope): Scope {\n return this.isScope() ? new Scope(this) : scope;\n }\n\n setData(key: string | symbol, val: any): any {\n if (this.data == null) {\n this.data = Object.create(null);\n }\n return (this.data[key] = val);\n }\n\n getData(key: string | symbol, def?: any): any {\n if (this.data == null) {\n this.data = Object.create(null);\n }\n let val = this.data[key];\n if (val === undefined && def !== undefined) val = this.data[key] = def;\n return val;\n }\n\n hasNode(): boolean {\n return this.node != null;\n }\n\n buildCodeFrameError(\n msg: string,\n Error: new () => Error = SyntaxError,\n ): Error {\n return this.hub.buildError(this.node, msg, Error);\n }\n\n traverse<T>(this: NodePath_Final, visitor: Visitor<T>, state: T): void;\n traverse(this: NodePath_Final, visitor: Visitor): void;\n traverse(this: NodePath_Final, visitor: any, state?: any) {\n traverse(this.node, visitor, this.scope, state, this);\n }\n\n set(key: string, node: any) {\n validate(this.node, key, node);\n // @ts-expect-error key must present in this.node\n this.node[key] = node;\n }\n\n getPathLocation(this: NodePath_Final): string {\n const parts = [];\n let path: NodePath_Final = this;\n do {\n let key = path.key;\n if (path.inList) key = `${path.listKey}[${key}]`;\n parts.unshift(key);\n } while ((path = path.parentPath));\n return parts.join(\".\");\n }\n\n debug(this: NodePath_Final, message: string) {\n if (!debug.enabled) return;\n debug(`${this.getPathLocation()} ${this.type}: ${message}`);\n }\n\n toString() {\n return generator(this.node).code;\n }\n\n get inList() {\n return !!this.listKey;\n }\n\n set inList(inList) {\n if (!inList) {\n this.listKey = null;\n }\n // ignore inList = true as it should depend on `listKey`\n }\n\n get parentKey(): string {\n return (this.listKey || this.key) as string;\n }\n};\n\nconst methods = {\n // NodePath_ancestry\n findParent: NodePath_ancestry.findParent,\n find: NodePath_ancestry.find,\n getFunctionParent: NodePath_ancestry.getFunctionParent,\n getStatementParent: NodePath_ancestry.getStatementParent,\n getEarliestCommonAncestorFrom:\n NodePath_ancestry.getEarliestCommonAncestorFrom,\n getDeepestCommonAncestorFrom: NodePath_ancestry.getDeepestCommonAncestorFrom,\n getAncestry: NodePath_ancestry.getAncestry,\n isAncestor: NodePath_ancestry.isAncestor,\n isDescendant: NodePath_ancestry.isDescendant,\n inType: NodePath_ancestry.inType,\n\n // NodePath_inference\n getTypeAnnotation: NodePath_inference.getTypeAnnotation,\n isBaseType: NodePath_inference.isBaseType,\n couldBeBaseType: NodePath_inference.couldBeBaseType,\n baseTypeStrictlyMatches: NodePath_inference.baseTypeStrictlyMatches,\n isGenericType: NodePath_inference.isGenericType,\n\n // NodePath_replacement\n replaceWithMultiple: NodePath_replacement.replaceWithMultiple,\n replaceWithSourceString: NodePath_replacement.replaceWithSourceString,\n replaceWith: NodePath_replacement.replaceWith,\n replaceExpressionWithStatements:\n NodePath_replacement.replaceExpressionWithStatements,\n replaceInline: NodePath_replacement.replaceInline,\n\n // NodePath_evaluation\n evaluateTruthy: NodePath_evaluation.evaluateTruthy,\n evaluate: NodePath_evaluation.evaluate,\n\n // NodePath_conversion\n toComputedKey: NodePath_conversion.toComputedKey,\n ensureBlock: NodePath_conversion.ensureBlock,\n unwrapFunctionEnvironment: NodePath_conversion.unwrapFunctionEnvironment,\n arrowFunctionToExpression: NodePath_conversion.arrowFunctionToExpression,\n splitExportDeclaration: NodePath_conversion.splitExportDeclaration,\n ensureFunctionName: NodePath_conversion.ensureFunctionName,\n\n // NodePath_introspection\n matchesPattern: NodePath_introspection.matchesPattern,\n isStatic: NodePath_introspection.isStatic,\n isNodeType: NodePath_introspection.isNodeType,\n canHaveVariableDeclarationOrExpression:\n NodePath_introspection.canHaveVariableDeclarationOrExpression,\n canSwapBetweenExpressionAndStatement:\n NodePath_introspection.canSwapBetweenExpressionAndStatement,\n isCompletionRecord: NodePath_introspection.isCompletionRecord,\n isStatementOrBlock: NodePath_introspection.isStatementOrBlock,\n referencesImport: NodePath_introspection.referencesImport,\n getSource: NodePath_introspection.getSource,\n willIMaybeExecuteBefore: NodePath_introspection.willIMaybeExecuteBefore,\n _guessExecutionStatusRelativeTo:\n NodePath_introspection._guessExecutionStatusRelativeTo,\n resolve: NodePath_introspection.resolve,\n isConstantExpression: NodePath_introspection.isConstantExpression,\n isInStrictMode: NodePath_introspection.isInStrictMode,\n\n // NodePath_context\n isDenylisted: NodePath_context.isDenylisted,\n visit: NodePath_context.visit,\n skip: NodePath_context.skip,\n skipKey: NodePath_context.skipKey,\n stop: NodePath_context.stop,\n setContext: NodePath_context.setContext,\n requeue: NodePath_context.requeue,\n requeueComputedKeyAndDecorators:\n NodePath_context.requeueComputedKeyAndDecorators,\n\n // NodePath_removal\n remove: NodePath_removal.remove,\n\n // NodePath_modification\n insertBefore: NodePath_modification.insertBefore,\n insertAfter: NodePath_modification.insertAfter,\n unshiftContainer: NodePath_modification.unshiftContainer,\n pushContainer: NodePath_modification.pushContainer,\n\n // NodePath_family\n getOpposite: NodePath_family.getOpposite,\n getCompletionRecords: NodePath_family.getCompletionRecords,\n getSibling: NodePath_family.getSibling,\n getPrevSibling: NodePath_family.getPrevSibling,\n getNextSibling: NodePath_family.getNextSibling,\n getAllNextSiblings: NodePath_family.getAllNextSiblings,\n getAllPrevSiblings: NodePath_family.getAllPrevSiblings,\n get: NodePath_family.get,\n getAssignmentIdentifiers: NodePath_family.getAssignmentIdentifiers,\n getBindingIdentifiers: NodePath_family.getBindingIdentifiers,\n getOuterBindingIdentifiers: NodePath_family.getOuterBindingIdentifiers,\n getBindingIdentifierPaths: NodePath_family.getBindingIdentifierPaths,\n getOuterBindingIdentifierPaths:\n NodePath_family.getOuterBindingIdentifierPaths,\n\n // NodePath_comments\n shareCommentsWithSiblings: NodePath_comments.shareCommentsWithSiblings,\n addComment: NodePath_comments.addComment,\n addComments: NodePath_comments.addComments,\n};\n\nObject.assign(NodePath_Final.prototype, methods);\n\nif (!process.env.BABEL_8_BREAKING && !USE_ESM) {\n // String(x) is workaround for rollup\n\n // @ts-expect-error babel 7 only\n NodePath_Final.prototype.arrowFunctionToShadowed =\n // @ts-expect-error babel 7 only\n NodePath_conversion[String(\"arrowFunctionToShadowed\")];\n\n Object.assign(NodePath_Final.prototype, {\n // @ts-expect-error Babel 7 only\n has: NodePath_introspection[String(\"has\")],\n // @ts-expect-error Babel 7 only\n is: NodePath_introspection[String(\"is\")],\n // @ts-expect-error Babel 7 only\n isnt: NodePath_introspection[String(\"isnt\")],\n // @ts-expect-error Babel 7 only\n equals: NodePath_introspection[String(\"equals\")],\n // @ts-expect-error Babel 7 only\n hoist: NodePath_modification[String(\"hoist\")],\n updateSiblingKeys: NodePath_modification.updateSiblingKeys,\n call: NodePath_context.call,\n // @ts-expect-error Babel 7 only\n isBlacklisted: NodePath_context[String(\"isBlacklisted\")],\n setScope: NodePath_context.setScope,\n resync: NodePath_context.resync,\n popContext: NodePath_context.popContext,\n pushContext: NodePath_context.pushContext,\n setup: NodePath_context.setup,\n setKey: NodePath_context.setKey,\n });\n}\n\nif (!process.env.BABEL_8_BREAKING) {\n // @ts-expect-error The original _guessExecutionStatusRelativeToDifferentFunctions only worked for paths in\n // different functions, but _guessExecutionStatusRelativeTo works as a replacement in those cases.\n NodePath_Final.prototype._guessExecutionStatusRelativeToDifferentFunctions =\n NodePath_introspection._guessExecutionStatusRelativeTo;\n\n // @ts-expect-error The original _guessExecutionStatusRelativeToDifferentFunctions only worked for paths in\n // different functions, but _guessExecutionStatusRelativeTo works as a replacement in those cases.\n NodePath_Final.prototype._guessExecutionStatusRelativeToDifferentFunctions =\n NodePath_introspection._guessExecutionStatusRelativeTo;\n\n Object.assign(NodePath_Final.prototype, {\n // NodePath_inference\n _getTypeAnnotation: NodePath_inference._getTypeAnnotation,\n\n // NodePath_replacement\n _replaceWith: NodePath_replacement._replaceWith,\n\n // NodePath_introspection\n _resolve: NodePath_introspection._resolve,\n\n // NodePath_context\n _call: NodePath_context._call,\n _resyncParent: NodePath_context._resyncParent,\n _resyncKey: NodePath_context._resyncKey,\n _resyncList: NodePath_context._resyncList,\n _resyncRemoved: NodePath_context._resyncRemoved,\n _getQueueContexts: NodePath_context._getQueueContexts,\n\n // NodePath_removal\n _removeFromScope: NodePath_removal._removeFromScope,\n _callRemovalHooks: NodePath_removal._callRemovalHooks,\n _remove: NodePath_removal._remove,\n _markRemoved: NodePath_removal._markRemoved,\n _assertUnremoved: NodePath_removal._assertUnremoved,\n\n // NodePath_modification\n _containerInsert: NodePath_modification._containerInsert,\n _containerInsertBefore: NodePath_modification._containerInsertBefore,\n _containerInsertAfter: NodePath_modification._containerInsertAfter,\n _verifyNodeList: NodePath_modification._verifyNodeList,\n\n // NodePath_family\n _getKey: NodePath_family._getKey,\n _getPattern: NodePath_family._getPattern,\n });\n}\n\n// we can not use `import { TYPES } from \"@babel/types\"` here\n// because the transformNamedBabelTypesImportToDestructuring plugin in babel.config.js\n// does not offer live bindings for `TYPES`\n// we can change to `import { TYPES }` when we are publishing ES modules only\nfor (const type of t.TYPES) {\n const typeKey = `is${type}`;\n // @ts-expect-error typeKey must present in t\n const fn = t[typeKey];\n // @ts-expect-error augmenting NodePath prototype\n NodePath_Final.prototype[typeKey] = function (opts: any) {\n return fn(this.node, opts);\n };\n\n // @ts-expect-error augmenting NodePath prototype\n NodePath_Final.prototype[`assert${type}`] = function (opts: any) {\n if (!fn(this.node, opts)) {\n throw new TypeError(`Expected node path of type ${type}`);\n }\n };\n}\n\n// Register virtual types validators after base types validators\nObject.assign(NodePath_Final.prototype, NodePath_virtual_types_validator);\n\nfor (const type of Object.keys(virtualTypes) as (keyof typeof virtualTypes)[]) {\n if (type[0] === \"_\") continue;\n if (!t.TYPES.includes(type)) t.TYPES.push(type);\n}\n\ninterface NodePathOverwrites {\n // We need to re-define these predicate and assertion\n // methods here, because we cannot refine `this` in\n // a function declaration.\n // See https://github.com/microsoft/TypeScript/issues/38150\n\n /**\n * NOTE: This assertion doesn't narrow the type on unions of\n * NodePaths, due to https://github.com/microsoft/TypeScript/issues/44212\n *\n * @see ./conversion.ts for implementation.\n */\n ensureBlock(\n this: NodePath_Final,\n ): asserts this is NodePath_Final<\n (\n | t.Loop\n | t.WithStatement\n | t.Function\n | t.LabeledStatement\n | t.CatchClause\n ) & { body: t.BlockStatement }\n >;\n /**\n * @see ./introspection.ts for implementation.\n */\n isStatementOrBlock(\n this: NodePath_Final,\n ): this is NodePath_Final<t.Statement | t.Block>;\n}\n\ntype NodePathMixins = Omit<typeof methods, keyof NodePathOverwrites>;\n\ninterface NodePath<T extends t.Node>\n extends InstanceType<typeof NodePath_Final>,\n NodePathAssertions,\n NodePathValidators,\n NodePathMixins,\n NodePathOverwrites {\n type: T[\"type\"] | null;\n node: T;\n parent: t.ParentMaps[T[\"type\"]];\n parentPath: t.ParentMaps[T[\"type\"]] extends null\n ? null\n : NodePath_Final<t.ParentMaps[T[\"type\"]]> | null;\n}\n\n// This trick is necessary so that\n// NodePath_Final<A | B> is the same as NodePath_Final<A> | NodePath_Final<B>\ntype NodePath_Final<T extends t.Node = t.Node> = T extends any\n ? NodePath<T>\n : never;\n\nexport { NodePath_Final as default, type NodePath as NodePath_Internal };\n","import NodePath from \"./path/index.ts\";\nimport { VISITOR_KEYS } from \"@babel/types\";\nimport type Scope from \"./scope/index.ts\";\nimport type { ExplodedTraverseOptions } from \"./index.ts\";\nimport type * as t from \"@babel/types\";\nimport type { Visitor } from \"./types.ts\";\nimport { popContext, pushContext, resync } from \"./path/context.ts\";\n\nexport default class TraversalContext<S = unknown> {\n constructor(\n scope: Scope,\n opts: ExplodedTraverseOptions<S>,\n state: S,\n parentPath: NodePath,\n ) {\n this.parentPath = parentPath;\n this.scope = scope;\n this.state = state;\n this.opts = opts;\n }\n\n declare parentPath: NodePath;\n declare scope: Scope;\n declare state: S;\n declare opts: ExplodedTraverseOptions<S>;\n queue: Array<NodePath> | null = null;\n priorityQueue: Array<NodePath> | null = null;\n\n /**\n * This method does a simple check to determine whether or not we really need to attempt\n * visit a node. This will prevent us from constructing a NodePath.\n */\n\n shouldVisit(node: t.Node): boolean {\n const opts = this.opts as Visitor;\n if (opts.enter || opts.exit) return true;\n\n // check if we have a visitor for this node\n if (opts[node.type]) return true;\n\n // check if we're going to traverse into this node\n const keys: Array<string> | undefined = VISITOR_KEYS[node.type];\n if (!keys?.length) return false;\n\n // we need to traverse into this node so ensure that it has children to traverse into!\n for (const key of keys) {\n if (\n // @ts-expect-error key is from visitor keys\n node[key]\n ) {\n return true;\n }\n }\n\n return false;\n }\n\n create(\n node: t.Node,\n container: t.Node | t.Node[],\n key: string | number,\n listKey?: string,\n ): NodePath {\n // We don't need to `.setContext()` here, since `.visitQueue()` already\n // calls `.pushContext`.\n return NodePath.get({\n parentPath: this.parentPath,\n parent: node,\n container,\n key: key,\n listKey,\n });\n }\n\n maybeQueue(path: NodePath, notPriority?: boolean) {\n if (this.queue) {\n if (notPriority) {\n this.queue.push(path);\n } else {\n this.priorityQueue.push(path);\n }\n }\n }\n\n visitMultiple(container: t.Node[], parent: t.Node, listKey: string) {\n // nothing to traverse!\n if (container.length === 0) return false;\n\n const queue = [];\n\n // build up initial queue\n for (let key = 0; key < container.length; key++) {\n const node = container[key];\n if (node && this.shouldVisit(node)) {\n queue.push(this.create(parent, container, key, listKey));\n }\n }\n\n return this.visitQueue(queue);\n }\n\n visitSingle(node: t.Node, key: string): boolean {\n if (\n this.shouldVisit(\n // @ts-expect-error key may not index node\n node[key],\n )\n ) {\n return this.visitQueue([this.create(node, node, key)]);\n } else {\n return false;\n }\n }\n\n visitQueue(queue: Array<NodePath>): boolean {\n // set queue\n this.queue = queue;\n this.priorityQueue = [];\n\n const visited = new WeakSet();\n let stop = false;\n let visitIndex = 0;\n\n // visit the queue\n for (; visitIndex < queue.length; ) {\n const path = queue[visitIndex];\n visitIndex++;\n resync.call(path);\n\n if (\n path.contexts.length === 0 ||\n path.contexts[path.contexts.length - 1] !== this\n ) {\n // The context might already have been pushed when this path was inserted and queued.\n // If we always re-pushed here, we could get duplicates and risk leaving contexts\n // on the stack after the traversal has completed, which could break things.\n pushContext.call(path, this);\n }\n\n // this path no longer belongs to the tree\n if (path.key === null) continue;\n\n // ensure we don't visit the same node twice\n const { node } = path;\n if (visited.has(node)) continue;\n if (node) visited.add(node);\n\n if (path.visit()) {\n stop = true;\n break;\n }\n\n if (this.priorityQueue.length) {\n stop = this.visitQueue(this.priorityQueue);\n this.priorityQueue = [];\n this.queue = queue;\n if (stop) break;\n }\n }\n\n // pop contexts\n for (let i = 0; i < visitIndex; i++) {\n popContext.call(queue[i]);\n }\n\n // clear queue\n this.queue = null;\n\n return stop;\n }\n\n visit(node: t.Node, key: string) {\n // @ts-expect-error key may not index node\n const nodes = node[key] as t.Node | t.Node[] | null;\n if (!nodes) return false;\n\n if (Array.isArray(nodes)) {\n return this.visitMultiple(nodes, node, key);\n } else {\n return this.visitSingle(node, key);\n }\n }\n}\n","import TraversalContext from \"./context.ts\";\nimport type { ExplodedTraverseOptions } from \"./index.ts\";\nimport type NodePath from \"./path/index.ts\";\nimport type Scope from \"./scope/index.ts\";\nimport type * as t from \"@babel/types\";\nimport { VISITOR_KEYS } from \"@babel/types\";\n\n/**\n * Traverse the children of given node\n * @param {Node} node\n * @param {TraverseOptions} opts The traverse options used to create a new traversal context\n * @param {scope} scope A traversal scope used to create a new traversal context. When opts.noScope is true, scope should not be provided\n * @param {any} state A user data storage provided as the second callback argument for traversal visitors\n * @param {NodePath} path A NodePath of given node\n * @param {Record<string, boolean>} skipKeys A map from key names to whether that should be skipped during traversal. The skipKeys are applied to every descendants\n * @returns {boolean} Whether the traversal stops early\n\n * @note This function does not visit the given `node`.\n */\nexport function traverseNode<S = unknown>(\n node: t.Node,\n opts: ExplodedTraverseOptions<S>,\n scope?: Scope,\n state?: S,\n path?: NodePath,\n skipKeys?: Record<string, boolean>,\n visitSelf?: boolean,\n): boolean {\n const keys = VISITOR_KEYS[node.type];\n if (!keys) return false;\n\n const context = new TraversalContext<S>(scope, opts, state, path);\n if (visitSelf) {\n if (skipKeys?.[path.parentKey]) return false;\n return context.visitQueue([path]);\n }\n\n for (const key of keys) {\n if (skipKeys?.[key]) continue;\n if (context.visit(node, key)) {\n return true;\n }\n }\n\n return false;\n}\n","// This file contains methods responsible for maintaining a TraversalContext.\n\nimport { traverseNode } from \"../traverse-node.ts\";\nimport { SHOULD_SKIP, SHOULD_STOP } from \"./index.ts\";\nimport { _markRemoved } from \"./removal.ts\";\nimport type TraversalContext from \"../context.ts\";\nimport type { VisitPhase } from \"../types.ts\";\nimport type NodePath from \"./index.ts\";\nimport * as t from \"@babel/types\";\n\nexport function call(this: NodePath, key: VisitPhase): boolean {\n const opts = this.opts;\n\n this.debug(key);\n\n if (this.node) {\n if (_call.call(this, opts[key])) return true;\n }\n\n if (this.node) {\n return _call.call(this, opts[this.node.type]?.[key]);\n }\n\n return false;\n}\n\nexport function _call(this: NodePath, fns?: Array<Function>): boolean {\n if (!fns) return false;\n\n for (const fn of fns) {\n if (!fn) continue;\n\n const node = this.node;\n if (!node) return true;\n\n const ret = fn.call(this.state, this, this.state);\n if (ret && typeof ret === \"object\" && typeof ret.then === \"function\") {\n throw new Error(\n `You appear to be using a plugin with an async traversal visitor, ` +\n `which your current version of Babel does not support. ` +\n `If you're using a published plugin, you may need to upgrade ` +\n `your @babel/core version.`,\n );\n }\n if (ret) {\n throw new Error(`Unexpected return value from visitor method ${fn}`);\n }\n\n // node has been replaced, it will have been requeued\n if (this.node !== node) return true;\n\n // this.shouldSkip || this.shouldStop || this.removed\n if (this._traverseFlags > 0) return true;\n }\n\n return false;\n}\n\nexport function isDenylisted(this: NodePath): boolean {\n // @ts-expect-error TODO(Babel 8): Remove blacklist\n const denylist = this.opts.denylist ?? this.opts.blacklist;\n return denylist?.includes(this.node.type);\n}\n\nif (!process.env.BABEL_8_BREAKING && !USE_ESM) {\n // eslint-disable-next-line no-restricted-globals\n exports.isBlacklisted = isDenylisted;\n}\n\nfunction restoreContext(path: NodePath, context: TraversalContext) {\n if (path.context !== context) {\n path.context = context;\n path.state = context.state;\n path.opts = context.opts;\n }\n}\n\nexport function visit(this: NodePath): boolean {\n if (!this.node) {\n return false;\n }\n\n if (this.isDenylisted()) {\n return false;\n }\n\n if (this.opts.shouldSkip?.(this)) {\n return false;\n }\n\n const currentContext = this.context;\n // Note: We need to check \"this.shouldSkip\" first because\n // another visitor can set it to true. Usually .shouldSkip is false\n // before calling the enter visitor, but it can be true in case of\n // a requeued node (e.g. by .replaceWith()) that is then marked\n // with .skip().\n if (this.shouldSkip || call.call(this, \"enter\")) {\n this.debug(\"Skip...\");\n return this.shouldStop;\n }\n restoreContext(this, currentContext);\n\n this.debug(\"Recursing into...\");\n this.shouldStop = traverseNode(\n this.node,\n this.opts,\n this.scope,\n this.state,\n this,\n this.skipKeys,\n );\n\n restoreContext(this, currentContext);\n\n call.call(this, \"exit\");\n\n return this.shouldStop;\n}\n\nexport function skip(this: NodePath) {\n this.shouldSkip = true;\n}\n\nexport function skipKey(this: NodePath, key: string) {\n if (this.skipKeys == null) {\n this.skipKeys = {};\n }\n this.skipKeys[key] = true;\n}\n\nexport function stop(this: NodePath) {\n // this.shouldSkip = true; this.shouldStop = true;\n this._traverseFlags |= SHOULD_SKIP | SHOULD_STOP;\n}\n\nexport function setScope(this: NodePath) {\n if (this.opts?.noScope) return;\n\n let path = this.parentPath;\n\n if (\n // Skip method scope if is computed method key or decorator expression\n ((this.key === \"key\" || this.listKey === \"decorators\") &&\n path.isMethod()) ||\n // Skip switch scope if for discriminant (`x` in `switch (x) {}`).\n (this.key === \"discriminant\" && path.isSwitchStatement())\n ) {\n path = path.parentPath;\n }\n\n let target;\n while (path && !target) {\n if (path.opts?.noScope) return;\n\n target = path.scope;\n path = path.parentPath;\n }\n\n this.scope = this.getScope(target);\n this.scope?.init();\n}\n\nexport function setContext<S = unknown>(\n this: NodePath,\n context?: TraversalContext<S>,\n) {\n if (this.skipKeys != null) {\n this.skipKeys = {};\n }\n // this.shouldSkip = false; this.shouldStop = false; this.removed = false;\n this._traverseFlags = 0;\n\n if (context) {\n this.context = context;\n this.state = context.state;\n // Discard the S type parameter from context.opts\n this.opts = context.opts as typeof this.opts;\n }\n\n setScope.call(this);\n\n return this;\n}\n\n/**\n * Here we resync the node paths `key` and `container`. If they've changed according\n * to what we have stored internally then we attempt to resync by crawling and looking\n * for the new values.\n */\n\nexport function resync(this: NodePath) {\n if (this.removed) return;\n\n _resyncParent.call(this);\n _resyncList.call(this);\n _resyncKey.call(this);\n //this._resyncRemoved();\n}\n\nexport function _resyncParent(this: NodePath) {\n if (this.parentPath) {\n this.parent = this.parentPath.node;\n }\n}\n\nexport function _resyncKey(this: NodePath) {\n if (!this.container) return;\n\n if (\n this.node ===\n // @ts-expect-error this.key should present in this.container\n this.container[this.key]\n ) {\n return;\n }\n\n // grrr, path key is out of sync. this is likely due to a modification to the AST\n // not done through our path APIs\n\n if (Array.isArray(this.container)) {\n for (let i = 0; i < this.container.length; i++) {\n if (this.container[i] === this.node) {\n setKey.call(this, i);\n return;\n }\n }\n } else {\n for (const key of Object.keys(this.container)) {\n // @ts-expect-error this.key should present in this.container\n if (this.container[key] === this.node) {\n setKey.call(this, key);\n return;\n }\n }\n }\n\n // ¯\\_(ツ)_/¯ who knows where it's gone lol\n this.key = null;\n}\n\nexport function _resyncList(this: NodePath) {\n if (!this.parent || !this.inList) return;\n\n const newContainer =\n // @ts-expect-error this.listKey should present in this.parent\n this.parent[this.listKey];\n if (this.container === newContainer) return;\n\n // container is out of sync. this is likely the result of it being reassigned\n this.container = newContainer || null;\n}\n\nexport function _resyncRemoved(this: NodePath) {\n if (\n this.key == null ||\n !this.container ||\n // @ts-expect-error this.key should present in this.container\n this.container[this.key] !== this.node\n ) {\n _markRemoved.call(this);\n }\n}\n\nexport function popContext(this: NodePath) {\n this.contexts.pop();\n if (this.contexts.length > 0) {\n this.setContext(this.contexts[this.contexts.length - 1]);\n } else {\n this.setContext(undefined);\n }\n}\n\nexport function pushContext(this: NodePath, context: TraversalContext) {\n this.contexts.push(context);\n this.setContext(context);\n}\n\nexport function setup(\n this: NodePath,\n parentPath: NodePath | undefined,\n container: t.Node | t.Node[],\n listKey: string,\n key: string | number,\n) {\n this.listKey = listKey;\n this.container = container;\n\n this.parentPath = parentPath || this.parentPath;\n setKey.call(this, key);\n}\n\nexport function setKey(this: NodePath, key: string | number) {\n this.key = key;\n this.node =\n // @ts-expect-error this.key must present in this.container\n this.container[this.key];\n this.type = this.node?.type;\n}\n\nexport function requeue(this: NodePath, pathToQueue = this) {\n if (pathToQueue.removed) return;\n\n // If a path is skipped, and then replaced with a\n // new one, the new one shouldn't probably be skipped.\n if (process.env.BABEL_8_BREAKING) {\n pathToQueue.shouldSkip = false;\n }\n\n // TODO(loganfsmyth): This should be switched back to queue in parent contexts\n // automatically once #2892 and #4135 have been resolved. See #4140.\n // let contexts = this._getQueueContexts();\n const contexts = this.contexts;\n\n for (const context of contexts) {\n context.maybeQueue(pathToQueue);\n }\n}\n\nexport function requeueComputedKeyAndDecorators(\n this: NodePath<t.Method | t.Property>,\n) {\n const { context, node } = this;\n if (!t.isPrivate(node) && node.computed) {\n context.maybeQueue(this.get(\"key\"));\n }\n if (node.decorators) {\n for (const decorator of this.get(\"decorators\")) {\n context.maybeQueue(decorator);\n }\n }\n}\n\nexport function _getQueueContexts(this: NodePath) {\n let path = this;\n let contexts = this.contexts;\n while (!contexts.length) {\n path = path.parentPath;\n if (!path) break;\n contexts = path.contexts;\n }\n return contexts;\n}\n","import type Scope from \"./scope/index.ts\";\nimport type { Node } from \"@babel/types\";\n\nexport interface HubInterface {\n getCode(): string | void;\n getScope(): Scope | void;\n addHelper(name: string): any;\n buildError(node: Node, msg: string, Error: new () => Error): Error;\n}\n\nexport default class Hub implements HubInterface {\n getCode() {}\n\n getScope() {}\n\n addHelper() {\n throw new Error(\"Helpers are not supported by the default hub.\");\n }\n\n buildError(node: Node, msg: string, Error = TypeError): Error {\n return new Error(msg);\n }\n}\n","import \"./path/context.ts\"; // We have some cycles, this ensures correct order to avoid TDZ\nimport * as visitors from \"./visitors.ts\";\nimport {\n VISITOR_KEYS,\n removeProperties,\n type RemovePropertiesOptions,\n traverseFast,\n} from \"@babel/types\";\nimport type * as t from \"@babel/types\";\nimport * as cache from \"./cache.ts\";\nimport type NodePath from \"./path/index.ts\";\nimport type { default as Scope, Binding } from \"./scope/index.ts\";\nimport type { ExplodedVisitor, Visitor, VisitorBase } from \"./types.ts\";\nimport { traverseNode } from \"./traverse-node.ts\";\n\nexport type { ExplodedVisitor, Visitor, VisitorBase, Binding };\nexport { default as NodePath } from \"./path/index.ts\";\nexport { default as Scope } from \"./scope/index.ts\";\nexport { default as Hub } from \"./hub.ts\";\nexport type { HubInterface } from \"./hub.ts\";\n\nexport { visitors };\n\nexport type TraverseOptions<S = t.Node> = {\n scope?: Scope;\n noScope?: boolean;\n denylist?: string[];\n shouldSkip?: (node: NodePath) => boolean;\n} & Visitor<S>;\n\nexport type ExplodedTraverseOptions<S = t.Node> = TraverseOptions<S> &\n ExplodedVisitor<S>;\n\nfunction traverse<S>(\n parent: t.Node,\n opts: TraverseOptions<S>,\n scope: Scope | undefined,\n state: S,\n parentPath?: NodePath,\n visitSelf?: boolean,\n): void;\n\nfunction traverse(\n parent: t.Node,\n opts: TraverseOptions,\n scope?: Scope,\n state?: any,\n parentPath?: NodePath,\n visitSelf?: boolean,\n): void;\n\nfunction traverse<Options extends TraverseOptions>(\n parent: t.Node,\n // @ts-expect-error provide {} as default value for Options\n opts: Options = {},\n scope?: Scope,\n state?: any,\n parentPath?: NodePath,\n visitSelf?: boolean,\n) {\n if (!parent) return;\n\n if (!opts.noScope && !scope) {\n if (parent.type !== \"Program\" && parent.type !== \"File\") {\n throw new Error(\n \"You must pass a scope and parentPath unless traversing a Program/File. \" +\n `Instead of that you tried to traverse a ${parent.type} node without ` +\n \"passing scope and parentPath.\",\n );\n }\n }\n\n if (!parentPath && visitSelf) {\n throw new Error(\"visitSelf can only be used when providing a NodePath.\");\n }\n\n if (!VISITOR_KEYS[parent.type]) {\n return;\n }\n\n visitors.explode(opts as Visitor);\n\n traverseNode(\n parent,\n opts as ExplodedVisitor,\n scope,\n state,\n parentPath,\n /* skipKeys */ null,\n visitSelf,\n );\n}\n\nexport default traverse;\n\ntraverse.visitors = visitors;\ntraverse.verify = visitors.verify;\ntraverse.explode = visitors.explode;\n\ntraverse.cheap = function (node: t.Node, enter: (node: t.Node) => void) {\n traverseFast(node, enter);\n return;\n};\n\ntraverse.node = function (\n node: t.Node,\n opts: ExplodedTraverseOptions,\n scope?: Scope,\n state?: any,\n path?: NodePath,\n skipKeys?: Record<string, boolean>,\n) {\n traverseNode(node, opts, scope, state, path, skipKeys);\n // traverse.node always returns undefined\n};\n\ntraverse.clearNode = function (node: t.Node, opts?: RemovePropertiesOptions) {\n removeProperties(node, opts);\n};\n\ntraverse.removeProperties = function (\n tree: t.Node,\n opts?: RemovePropertiesOptions,\n) {\n traverseFast(tree, traverse.clearNode, opts);\n return tree;\n};\n\ntype HasDenylistedTypeState = {\n has: boolean;\n type: t.Node[\"type\"];\n};\nfunction hasDenylistedType(path: NodePath, state: HasDenylistedTypeState) {\n if (path.node.type === state.type) {\n state.has = true;\n path.stop();\n }\n}\n\ntraverse.hasType = function (\n tree: t.Node,\n type: t.Node[\"type\"],\n denylistTypes?: Array<string>,\n): boolean {\n // the node we're searching in is denylisted\n if (denylistTypes?.includes(tree.type)) return false;\n\n // the type we're looking for is the same as the passed node\n if (tree.type === type) return true;\n\n const state: HasDenylistedTypeState = {\n has: false,\n type: type,\n };\n\n traverse(\n tree,\n {\n noScope: true,\n denylist: denylistTypes,\n enter: hasDenylistedType,\n },\n null,\n state,\n );\n\n return state.has;\n};\n\ntraverse.cache = cache;\n"],"names":["ReferencedIdentifier","ReferencedMemberExpression","BindingIdentifier","Statement","Expression","Scope","Referenced","BlockScoped","Var","User","Generated","Pure","Flow","RestProperty","SpreadProperty","ExistentialTypeParam","NumericLiteralTypeAnnotation","ForAwaitStatement","isBinding","isBlockScoped","nodeIsBlockScoped","isExportDeclaration","isExpression","nodeIsExpression","isFlow","nodeIsFlow","isForStatement","isForXStatement","isIdentifier","isImportDeclaration","isImportSpecifier","isJSXIdentifier","isJSXMemberExpression","isMemberExpression","isRestElement","nodeIsRestElement","isReferenced","nodeIsReferenced","isScope","nodeIsScope","isStatement","nodeIsStatement","isVar","nodeIsVar","isVariableDeclaration","react","isForOfStatement","_t","isCompatTag","isReferencedIdentifier","opts","node","parent","name","parentPath","isReferencedMemberExpression","isBindingIdentifier","grandparent","left","init","isUser","loc","isGenerated","isPure","constantsOnly","scope","importKind","exportKind","isRestProperty","isObjectPattern","isSpreadProperty","isObjectExpression","isForAwaitStatement","await","DEPRECATED_KEYS","DEPRECATED_ALIASES","FLIPPED_ALIAS_KEYS","TYPES","__internal__deprecationWarning","deprecationWarning","isVirtualType","type","virtualTypes","isExplodedVisitor","visitor","_exploded","explode$1","nodeType","Object","keys","shouldIgnoreKey","parts","split","length","fns","part","verify$1","__esModule","ensureEntranceObjects","ensureCallbackArrays","wrapCheck","types","mergePair","aliases","deprecatedKey","deprecatedAlias","alias","existing","assign","_verified","Error","validateVisitorMethods","includes","visitors","visitorKey","path","val","concat","fn","TypeError","merge","states","wrapper","mergedVisitor","i","state","topVisitor","wrapWithStateOrWrapper","key","typeVisitor","nodeVisitor","oldVisitor","newVisitor","phase","Array","isArray","map","newFn","call","toString","obj","enter","exit","fnKey","validator","virtualTypesValidators","apply","arguments","dest","src","_environmentVisitor","FunctionParent","isArrowFunctionExpression","skip","isMethod","requeueComputedKeyAndDecorators","Property","isObjectProperty","environmentVisitor","getAssignmentIdentifiers","renameVisitor","oldName","newName","bindingIdentifierEquals","binding","identifier","ObjectProperty","shorthand","getBindingIdentifier","AssignmentExpression|Declaration|VariableDeclarator","ids","isAssignmentExpression","getOuterBindingIdentifiers","Renamer","constructor","maybeConvertFromExportDeclaration","parentDeclar","maybeExportDeclar","isExportDefaultDeclaration","declaration","t","isDeclaration","id","isExportAllDeclaration","splitExportDeclaration","maybeConvertFromClassFunctionDeclaration","maybeConvertFromClassFunctionExpression","rename","find","isFunctionExpression","isClassExpression","bindingIds","blockToTraverse","block","skipKeys","discriminant","computed","isObjectMethod","decorators","traverseNode","explode","removeOwnBinding","bindings","Binding","kind","isDeclaredInLoop","reassign","clearValue","constantViolations","constant","referencePaths","referenced","references","deoptValue","hasDeoptedValue","setValue","value","hasValue","push","reference","dereference","isFunctionParent","isWhile","pathsCache","WeakMap","clear","clearPath","clearScope","nullHub","freeze","getCachedPaths","hub","get","getOrCreateCachedPaths","parents","set","paths","Map","NOT_LOCAL_BINDING","assignmentExpression","callExpression","cloneNode","getBindingIdentifiers","isArrayExpression","isBinary","isCallExpression","isClass","isClassBody","isClassDeclaration","isExportNamedDeclaration","isFunctionDeclaration","isLiteral","isModuleSpecifier","isNullLiteral","isProperty","isPureish","isRegExpLiteral","isSuper","isTaggedTemplateExpression","isTemplateLiteral","isThisExpression","isUnaryExpression","expressionStatement","matchesPattern","memberExpression","numericLiteral","toIdentifier","variableDeclaration","variableDeclarator","isRecordExpression","isTupleExpression","isTopicReference","isMetaProperty","isPrivateName","buildUndefinedNode","sequenceExpression","gatherNodeParts","source","specifiers","e","local","object","property","callee","properties","argument","expression","meta","openingElement","openingFragment","namespace","collectorVisitor","ForStatement","declar","parentScope","getFunctionParent","getProgramParent","registerBinding","Declaration","registerDeclaration","ImportDeclaration","getBlockParent","TSImportEqualsDeclaration","isTSQualifiedName","right","isTSImportEqualsDeclaration","ForXStatement","isPattern","ExportDeclaration","getBinding","decl","declarations","LabeledStatement","AssignmentExpression","assignments","UpdateExpression","UnaryExpression","operator","CatchClause","Function","params","param","ClassExpression","TSTypeAnnotation","uid","inited","labels","globals","uids","data","crawling","cached","scopeCache","builtin","contextVariables","shouldSkip","listKey","generateDeclaredUidIdentifier","generateUidIdentifier","generateUid","replace","hasLabel","hasBinding","hasGlobal","hasReference","program","generateUidBasedOnNode","defaultName","join","slice","generateUidIdentifierBasedOnNode","isStatic","maybeGenerateMemoised","dontPush","checkBlockScopedCollisions","duplicate","buildError","renamer","dump","sep","repeat","console","log","violations","getLabel","registerLabel","label","isLabeledStatement","declare","isTypeDeclaration","specifier","isTypeSpecifier","registerConstantViolation","bindingPath","ReferenceError","declarators","getOwnBinding","addGlobal","hasUid","superClass","body","method","elem","elements","prop","static","expressions","tag","noGlobals","quasi","isStringLiteral","setData","getData","removeData","crawl","create","isProgram","programParent","visit","typeVisitors","traverse","ref","getPatternParent","isBlockStatement","isSwitchStatement","unique","isFunction","pushContainer","isLoop","isCatchClause","ensureBlock","blockHoist","_blockHoist","dataKey","declarPath","unshiftContainer","declarator","len","isBlockParent","getAllBindings","previousPath","getOwnBindingIdentifier","hasOwnBinding","noUids","parentHasBinding","moveBindingTo","info","removeBinding","hoistVariables","emit","seen","Set","isVariableDeclarator","has","add","firstId","isFor","replaceWith","remove","expr","VISITOR_KEYS","findParent","callback","p","getStatementParent","container","isFile","getEarliestCommonAncestorFrom","getDeepestCommonAncestorFrom","deepest","ancestries","earliest","ancestry","earliestKeyIndex","indexOf","parentKey","currentKeyIndex","filter","minDepth","Infinity","lastCommonIndex","lastCommon","unshift","first","depthLoop","shouldMatch","getAncestry","isAncestor","maybeDescendant","isDescendant","maybeAncestor","inType","candidateTypes","createFlowUnionType","createTSUnionType","createUnionTypeAnnotation","isFlowType","isTSType","createUnionType","every","v","BOOLEAN_NUMBER_BINARY_OPERATORS","createTypeAnnotationBasedOnTypeof","numberTypeAnnotation","voidTypeAnnotation","typeAnnotation","getTypeAnnotationBindingConstantViolations","functionConstantViolations","getConstantViolationsBefore","testType","getConditionalAnnotation","testConstantViolations","ifStatement","violation","getTypeAnnotation","functions","resolve","status","_guessExecutionStatusRelativeTo","inferAnnotationFromBinaryExpression","target","typeofPath","typePath","typeValue","getParentConditionalPath","isIfStatement","isConditionalExpression","test","isLogicalExpression","isBinaryExpression","BOOLEAN_BINARY_OPERATORS","BOOLEAN_UNARY_OPERATORS","NUMBER_BINARY_OPERATORS","NUMBER_UNARY_OPERATORS","STRING_UNARY_OPERATORS","anyTypeAnnotation","arrayTypeAnnotation","booleanTypeAnnotation","buildMatchMemberExpression","genericTypeAnnotation","nullLiteralTypeAnnotation","stringTypeAnnotation","tupleTypeAnnotation","unionTypeAnnotation","VariableDeclarator","TypeCastExpression","validParent","TSAsExpression","TSNonNullExpression","NewExpression","TemplateLiteral","BinaryExpression","isBaseType","LogicalExpression","argumentTypes","ConditionalExpression","SequenceExpression","pop","ParenthesizedExpression","StringLiteral","NumericLiteral","BooleanLiteral","NullLiteral","RegExpLiteral","ObjectExpression","ArrayExpression","RestElement","Func","isArrayFrom","isObjectKeys","isObjectValues","isObjectEntries","CallExpression","resolveCall","TaggedTemplateExpression","async","generator","returnType","isAnyTypeAnnotation","isArrayTypeAnnotation","isBooleanTypeAnnotation","isEmptyTypeAnnotation","isFlowBaseAnnotation","isGenericTypeAnnotation","isMixedTypeAnnotation","isNumberTypeAnnotation","isStringTypeAnnotation","isTSArrayType","isTSTypeAnnotation","isTSTypeReference","isTupleTypeAnnotation","isTypeAnnotation","isUnionTypeAnnotation","isVoidTypeAnnotation","_getTypeAnnotation","typeAnnotationInferringNodes","WeakSet","declarParent","isForInStatement","inferer","inferers","delete","baseName","soft","_isBaseType","couldBeBaseType","type2","baseTypeStrictlyMatches","rightArg","isGenericType","genericName","typeName","hooks","self","removeParent","isSwitchCase","isExpressionStatement","isSequenceExpression","_assertUnremoved","resync","_callRemovalHooks","_markRemoved","noScope","_removeFromScope","shareCommentsWithSiblings","_remove","forEach","splice","updateSiblingKeys","_replaceWith","_traverseFlags","SHOULD_SKIP","REMOVED","removed","buildCodeFrameError","arrowFunctionExpression","assertExpression","blockStatement","thisExpression","insertBefore","nodes_","nodes","_verifyNodeList","isNodeType","isJSXElement","replaceExpressionWithStatements","_containerInsertBefore","isStatementOrBlock","shouldInsertCurrentNode","_containerInsert","from","to","getSibling","context","queue","pushContext","contexts","_getQueueContexts","setScope","debug","maybeQueue","_containerInsertAfter","last","arr","isHiddenInSequenceExpression","isAlmostConstantAssignment","blockScope","insertAfter","temp","fromIndex","incrementBy","msg","NodePath","setContext","verifiedNodes","replaceWithMultiple","FUNCTION_TYPES","awaitExpression","conditionalExpression","inheritLeadingComments","inheritTrailingComments","inheritsComments","isEmptyStatement","removeComments","returnStatement","validate","yieldExpression","requeue","replaceWithSourceString","replacement","ast","parse","err","message","codeFrameColumns","start","line","column","code","expressionAST","removeProperties","replacementPath","nodePath","canHaveVariableDeclarationOrExpression","canSwapBetweenExpressionAndStatement","oldNode","inList","declars","nodesAsSingleExpression","gatherSequenceExpressions","functionParent","isParentAsync","isParentGenerator","completionRecords","getCompletionRecords","loop","arrowFunctionToExpression","newCallee","needToAwaitFunction","hasType","needToYieldFunction","exprs","ensureLastUndefined","consequent","alternate","replaceInline","VALID_OBJECT_CALLEES","VALID_IDENTIFIER_CALLEES","INVALID_METHODS","isValidObjectCallee","isValidIdentifierCallee","isInvalidMethod","evaluateTruthy","res","evaluate","confident","deopt","deoptPath","Globals","undefined","NaN","evaluateCached","resolved","item","_evaluate","isNumericLiteral","isBooleanLiteral","evaluateQuasis","quasis","testResult","isExpressionWrapper","end","prefix","arg","elems","elemValue","props","isSpreadElement","keyPath","valuePath","wasConfident","leftConfident","rightConfident","func","global","hasOwn","args","raw","str","cooked","String","binaryExpression","jsxIdentifier","logicalExpression","LOGICAL_OPERATORS","metaProperty","objectExpression","restElement","spreadElement","stringLiteral","super","_super","toExpression","unaryExpression","toBindingIdentifierName","isAssignmentPattern","getFunctionName","exportNamedDeclaration","exportSpecifier","inherits","toComputedKey","bodyNode","statements","stringPath","setup","unwrapFunctionEnvironment","hoistFunctionEnvironment","setType","allowInsertArrow","allowInsertArrowWithRest","noNewArrows","ensureFunctionName","thisBinding","fnPath","checkBinding","addHelper","getSuperCallsVisitor","child","allSuperCalls","arrowParent","thisEnvFn","isClassProperty","isClassPrivateProperty","inConstructor","isClassMethod","thisPaths","argumentsPaths","newTargetPaths","superProps","superCalls","getScopeInformation","superBinding","getSuperBinding","superCall","argumentsBinding","argumentsChild","argsRef","newTargetBinding","targetChild","targetRef","flatSuperProps","reduce","acc","superProp","standardizeSuperProperty","superParentPath","isAssignment","isCall","isTaggedTemplate","getSuperPropBinding","getThisBinding","hasSuperClass","thisChild","thisRef","isJSX","isLogicalOp","op","assignmentPath","isLogicalAssignment","tmp","rightExpression","isUpdateExpression","updateExpr","computedKey","assignSuperThisVisitor","supers","argsBinding","propName","argsList","fnBody","valueIdent","cacheKey","getScopeInformationVisitor","ThisExpression","JSXIdentifier","isJSXOpeningElement","MemberExpression","Identifier","curr","MetaProperty","standaloneDeclaration","exportExpr","needBindingRegistration","updatedDeclaration","updatedExportDeclaration","bindingIdentifiers","aliasDeclar","refersOuterBindingVisitor","ReferencedIdentifier|BindingIdentifier","needsRename","stop","supportUnicodeId","startsWith","originalNode","getFunctionArity","template","count","findIndex","STATEMENT_OR_BLOCK_KEYS","isType","_matchesPattern","pattern","allowPartial","isCompletionRecord","allowInsideFunction","isDoExpression","referencesImport","moduleSource","importName","isOptionalMemberExpression","isImportDefaultSpecifier","isImportNamespaceSpecifier","imported","getSource","getCode","willIMaybeExecuteBefore","getOuterFunction","isExecutionUncertain","isExecutionUncertainInList","maxIndex","SYMBOL_CHECKING","Symbol","_guessExecutionStatusRelativeToCached","base","cache","funcParent","this","_guessExecutionStatusRelativeToDifferentFunctionsCached","commonPath","commonIndex","divergence","keyPosition","_guessExecutionStatusRelativeToDifferentFunctionsInternal","allStatus","childOfFunction","nodeMap","result","dangerous","_resolve","ret","isTypeCastExpression","targetKey","targetName","match","isnt","isNaN","isConstantExpression","isInStrictMode","strictParent","sourceType","directive","directives","_getAssignmentIdentifiers","_getBindingIdentifiers","_getOuterBindingIdentifiers","NORMAL_COMPLETION","BREAK_COMPLETION","NormalCompletion","BreakCompletion","getOpposite","addCompletionRecords","records","_getCompletionRecords","completionRecordForSwitch","cases","lastNormalCompletions","casePath","caseCompletions","normalCompletions","breakCompletions","c","normalCompletionToBreak","completions","replaceBreakStatementInBreakCompletion","reachable","isBreakStatement","getStatementListCompletion","canHaveBreak","newContext","inCaseClause","shouldPopulateBreak","statementCompletions","some","pathCompletions","isTryStatement","r","getPrevSibling","getNextSibling","getAllNextSiblings","_key","sibling","siblings","getAllPrevSiblings","_getKey","_getPattern","_","duplicates","getBindingIdentifierPaths","outerOnly","search","shift","_ids","getOuterBindingIdentifierPaths","addComment","_addComment","addComments","_addComments","trailing","trailingComments","leading","leadingComments","prev","next","hasPrev","Boolean","hasNext","removeIfExisting","list","toRemove","el","content","comments","buildDebug","SHOULD_STOP","NodePath_Final","shouldStop","targetNode","getScope","def","hasNode","SyntaxError","getPathLocation","enabled","methods","NodePath_ancestry","NodePath_inference","NodePath_replacement","NodePath_evaluation","NodePath_conversion","NodePath_introspection","isDenylisted","NodePath_context","skipKey","NodePath_removal","NodePath_modification","NodePath_family","NodePath_comments","prototype","typeKey","NodePath_virtual_types_validator","TraversalContext","priorityQueue","shouldVisit","notPriority","visitMultiple","visitQueue","visitSingle","visited","visitIndex","popContext","visitSelf","_call","then","denylist","blacklist","restoreContext","currentContext","_resyncParent","_resyncList","_resyncKey","setKey","newContainer","pathToQueue","isPrivate","decorator","Hub","traverseFast","verify","cheap","clearNode","tree","hasDenylistedType","denylistTypes"],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sources":["../src/path/lib/virtual-types.ts","../src/path/lib/virtual-types-validator.ts","../src/visitors.ts","../src/scope/lib/renamer.ts","../src/scope/binding.ts","../src/cache.ts","../src/scope/index.ts","../src/path/ancestry.ts","../src/path/inference/util.ts","../src/path/inference/inferer-reference.ts","../src/path/inference/inferers.ts","../src/path/inference/index.ts","../src/path/lib/removal-hooks.ts","../src/path/removal.ts","../src/path/modification.ts","../src/path/replacement.ts","../src/path/evaluation.ts","../src/path/conversion.ts","../src/path/introspection.ts","../src/path/family.ts","../src/path/comments.ts","../src/path/index.ts","../src/context.ts","../src/traverse-node.ts","../src/path/context.ts","../src/hub.ts","../src/index.ts"],"sourcesContent":["import type * as t from \"@babel/types\";\n\nexport interface VirtualTypeAliases {\n BindingIdentifier: t.Identifier;\n BlockScoped: t.Node;\n ExistentialTypeParam: t.ExistsTypeAnnotation;\n Expression: t.Expression;\n Flow: t.Flow | t.ImportDeclaration | t.ExportDeclaration | t.ImportSpecifier;\n ForAwaitStatement: t.ForOfStatement;\n Generated: t.Node;\n NumericLiteralTypeAnnotation: t.NumberLiteralTypeAnnotation;\n Pure: t.Node;\n Referenced: t.Node;\n ReferencedIdentifier: t.Identifier | t.JSXIdentifier;\n ReferencedMemberExpression: t.MemberExpression;\n RestProperty: t.RestElement;\n Scope: t.Scopable | t.Pattern;\n SpreadProperty: t.RestElement;\n Statement: t.Statement;\n User: t.Node;\n Var: t.VariableDeclaration;\n}\n\ntype VirtualTypeMapping = readonly (t.Node[\"type\"] | keyof t.Aliases)[] | null;\n\nexport const ReferencedIdentifier: VirtualTypeMapping = [\n \"Identifier\",\n \"JSXIdentifier\",\n] as const;\n\nexport const ReferencedMemberExpression: VirtualTypeMapping = [\n \"MemberExpression\",\n] as const;\n\nexport const BindingIdentifier: VirtualTypeMapping = [\"Identifier\"] as const;\n\nexport const Statement: VirtualTypeMapping = [\"Statement\"] as const;\n\nexport const Expression: VirtualTypeMapping = [\"Expression\"] as const;\n\nexport const Scope: VirtualTypeMapping = [\"Scopable\", \"Pattern\"] as const;\n\nexport const Referenced: VirtualTypeMapping = null;\n\nexport const BlockScoped: VirtualTypeMapping = null;\n\nexport const Var: VirtualTypeMapping = [\"VariableDeclaration\"];\n\nexport const User: VirtualTypeMapping = null;\n\nexport const Generated: VirtualTypeMapping = null;\n\nexport const Pure: VirtualTypeMapping = null;\n\nexport const Flow: VirtualTypeMapping = [\n \"Flow\",\n \"ImportDeclaration\",\n \"ExportDeclaration\",\n \"ImportSpecifier\",\n] as const;\n\n// TODO: 7.0 Backwards Compat\nexport const RestProperty: VirtualTypeMapping = [\"RestElement\"] as const;\n\nexport const SpreadProperty: VirtualTypeMapping = [\"RestElement\"] as const;\n\nexport const ExistentialTypeParam: VirtualTypeMapping = [\n \"ExistsTypeAnnotation\",\n] as const;\n\nexport const NumericLiteralTypeAnnotation: VirtualTypeMapping = [\n \"NumberLiteralTypeAnnotation\",\n] as const;\n\nexport const ForAwaitStatement: VirtualTypeMapping = [\n \"ForOfStatement\",\n] as const;\n","import type NodePath from \"../index.ts\";\nimport {\n isBinding,\n isBlockScoped as nodeIsBlockScoped,\n isExportDeclaration,\n isExpression as nodeIsExpression,\n isFlow as nodeIsFlow,\n isForStatement,\n isForXStatement,\n isIdentifier,\n isImportDeclaration,\n isImportSpecifier,\n isJSXIdentifier,\n isJSXMemberExpression,\n isMemberExpression,\n isRestElement as nodeIsRestElement,\n isReferenced as nodeIsReferenced,\n isScope as nodeIsScope,\n isStatement as nodeIsStatement,\n isVar as nodeIsVar,\n isVariableDeclaration,\n react,\n isForOfStatement,\n} from \"@babel/types\";\nimport type * as t from \"@babel/types\";\nconst { isCompatTag } = react;\nimport type { VirtualTypeAliases } from \"./virtual-types.ts\";\n\ntype Opts<Obj> = Partial<{\n [Prop in keyof Obj]: Obj[Prop] extends t.Node\n ? t.Node\n : Obj[Prop] extends t.Node[]\n ? t.Node[]\n : Obj[Prop];\n}>;\n\nexport interface VirtualTypeNodePathValidators {\n isBindingIdentifier(\n this: NodePath,\n opts?: Opts<VirtualTypeAliases[\"BindingIdentifier\"]>,\n ): this is NodePath<VirtualTypeAliases[\"BindingIdentifier\"]>;\n isBlockScoped(opts?: Opts<VirtualTypeAliases[\"BlockScoped\"]>): boolean;\n /**\n * @deprecated\n */\n isExistentialTypeParam(\n this: NodePath,\n opts?: Opts<VirtualTypeAliases[\"ExistentialTypeParam\"]>,\n ): this is NodePath<VirtualTypeAliases[\"ExistentialTypeParam\"]>;\n isExpression(\n this: NodePath,\n opts?: Opts<VirtualTypeAliases[\"Expression\"]>,\n ): this is NodePath<t.Expression>;\n isFlow(\n this: NodePath,\n opts?: Opts<VirtualTypeAliases[\"Flow\"]>,\n ): this is NodePath<t.Flow>;\n isForAwaitStatement(\n this: NodePath,\n opts?: Opts<VirtualTypeAliases[\"ForAwaitStatement\"]>,\n ): this is NodePath<VirtualTypeAliases[\"ForAwaitStatement\"]>;\n isGenerated(opts?: VirtualTypeAliases[\"Generated\"]): boolean;\n /**\n * @deprecated\n */\n isNumericLiteralTypeAnnotation(\n opts?: VirtualTypeAliases[\"NumericLiteralTypeAnnotation\"],\n ): void;\n isPure(opts?: VirtualTypeAliases[\"Pure\"]): boolean;\n isReferenced(opts?: VirtualTypeAliases[\"Referenced\"]): boolean;\n isReferencedIdentifier(\n this: NodePath,\n opts?: Opts<VirtualTypeAliases[\"ReferencedIdentifier\"]>,\n ): this is NodePath<VirtualTypeAliases[\"ReferencedIdentifier\"]>;\n isReferencedMemberExpression(\n this: NodePath,\n opts?: Opts<VirtualTypeAliases[\"ReferencedMemberExpression\"]>,\n ): this is NodePath<VirtualTypeAliases[\"ReferencedMemberExpression\"]>;\n isRestProperty(\n this: NodePath,\n opts?: Opts<VirtualTypeAliases[\"RestProperty\"]>,\n ): this is NodePath<t.RestProperty>;\n isScope(\n this: NodePath,\n opts?: Opts<VirtualTypeAliases[\"Scope\"]>,\n ): this is NodePath<VirtualTypeAliases[\"Scope\"]>;\n isSpreadProperty(\n this: NodePath,\n opts?: Opts<VirtualTypeAliases[\"SpreadProperty\"]>,\n ): this is NodePath<t.SpreadProperty>;\n isStatement(\n this: NodePath,\n opts?: Opts<VirtualTypeAliases[\"Statement\"]>,\n ): this is NodePath<t.Statement>;\n isUser(opts?: VirtualTypeAliases[\"User\"]): boolean;\n isVar(\n this: NodePath,\n opts?: Opts<VirtualTypeAliases[\"Var\"]>,\n ): this is NodePath<VirtualTypeAliases[\"Var\"]>;\n}\n\nexport function isReferencedIdentifier(this: NodePath, opts?: any): boolean {\n const { node, parent } = this;\n if (!isIdentifier(node, opts) && !isJSXMemberExpression(parent, opts)) {\n if (isJSXIdentifier(node, opts)) {\n if (isCompatTag(node.name)) return false;\n } else {\n // not a JSXIdentifier or an Identifier\n return false;\n }\n }\n\n // check if node is referenced\n return nodeIsReferenced(node, parent, this.parentPath.parent);\n}\n\nexport function isReferencedMemberExpression(this: NodePath): boolean {\n const { node, parent } = this;\n return isMemberExpression(node) && nodeIsReferenced(node, parent);\n}\n\nexport function isBindingIdentifier(this: NodePath): boolean {\n const { node, parent } = this;\n const grandparent = this.parentPath.parent;\n return isIdentifier(node) && isBinding(node, parent, grandparent);\n}\n\nexport function isStatement(this: NodePath): boolean {\n const { node, parent } = this;\n if (nodeIsStatement(node)) {\n if (isVariableDeclaration(node)) {\n if (isForXStatement(parent, { left: node })) return false;\n if (isForStatement(parent, { init: node })) return false;\n }\n\n return true;\n } else {\n return false;\n }\n}\n\nexport function isExpression(this: NodePath): boolean {\n if (this.isIdentifier()) {\n return this.isReferencedIdentifier();\n } else {\n return nodeIsExpression(this.node);\n }\n}\n\nexport function isScope(this: NodePath): boolean {\n return nodeIsScope(this.node, this.parent);\n}\n\nexport function isReferenced(this: NodePath): boolean {\n return nodeIsReferenced(this.node, this.parent);\n}\n\nexport function isBlockScoped(this: NodePath): boolean {\n return nodeIsBlockScoped(this.node);\n}\n\nexport function isVar(this: NodePath): boolean {\n return nodeIsVar(this.node);\n}\n\nexport function isUser(this: NodePath): boolean {\n return this.node && !!this.node.loc;\n}\n\nexport function isGenerated(this: NodePath): boolean {\n return !this.isUser();\n}\n\nexport function isPure(this: NodePath, constantsOnly?: boolean): boolean {\n return this.scope.isPure(this.node, constantsOnly);\n}\n\nexport function isFlow(this: NodePath): boolean {\n const { node } = this;\n if (nodeIsFlow(node)) {\n return true;\n } else if (isImportDeclaration(node)) {\n return node.importKind === \"type\" || node.importKind === \"typeof\";\n } else if (isExportDeclaration(node)) {\n return node.exportKind === \"type\";\n } else if (isImportSpecifier(node)) {\n return node.importKind === \"type\" || node.importKind === \"typeof\";\n } else {\n return false;\n }\n}\n\n// TODO: 7.0 Backwards Compat\nexport function isRestProperty(this: NodePath): boolean {\n return nodeIsRestElement(this.node) && this.parentPath?.isObjectPattern();\n}\n\nexport function isSpreadProperty(this: NodePath): boolean {\n return nodeIsRestElement(this.node) && this.parentPath?.isObjectExpression();\n}\n\nexport function isForAwaitStatement(this: NodePath): boolean {\n return isForOfStatement(this.node, { await: true });\n}\n\nif (!process.env.BABEL_8_BREAKING && !USE_ESM) {\n // eslint-disable-next-line no-restricted-globals\n exports.isExistentialTypeParam = function isExistentialTypeParam(\n this: NodePath,\n ): void {\n throw new Error(\n \"`path.isExistentialTypeParam` has been renamed to `path.isExistsTypeAnnotation()` in Babel 7.\",\n );\n };\n\n // eslint-disable-next-line no-restricted-globals\n exports.isNumericLiteralTypeAnnotation =\n function isNumericLiteralTypeAnnotation(this: NodePath): void {\n throw new Error(\n \"`path.isNumericLiteralTypeAnnotation()` has been renamed to `path.isNumberLiteralTypeAnnotation()` in Babel 7.\",\n );\n };\n}\n","import * as virtualTypes from \"./path/lib/virtual-types.ts\";\nimport * as virtualTypesValidators from \"./path/lib/virtual-types-validator.ts\";\nimport type { Node } from \"@babel/types\";\nimport {\n DEPRECATED_KEYS,\n DEPRECATED_ALIASES,\n FLIPPED_ALIAS_KEYS,\n TYPES,\n __internal__deprecationWarning as deprecationWarning,\n} from \"@babel/types\";\nimport type { ExplodedVisitor, NodePath, Visitor } from \"./index.ts\";\nimport type { ExplVisitNode, VisitNodeFunction, VisitPhase } from \"./types.ts\";\nimport { requeueComputedKeyAndDecorators } from \"./path/context.ts\";\n\ntype VIRTUAL_TYPES = keyof typeof virtualTypes;\nfunction isVirtualType(type: string): type is VIRTUAL_TYPES {\n return type in virtualTypes;\n}\nexport type VisitWrapper<S = any> = (\n stateName: string | undefined,\n visitorType: VisitPhase,\n callback: VisitNodeFunction<S, Node>,\n) => VisitNodeFunction<S, Node>;\n\nexport function isExplodedVisitor(\n visitor: Visitor,\n): visitor is ExplodedVisitor {\n // @ts-expect-error _exploded is not defined on non-exploded Visitor\n return visitor?._exploded;\n}\n\n// We need to name this function `explode$1` because otherwise rollup-plugin-dts\n// will generate a `namespace traverse { var explode: typeof explode; }` when\n// bundling @babel/traverse's index.d.ts.\n// TODO: Just call it `explode` once https://github.com/Swatinem/rollup-plugin-dts/issues/307\n// is fixed.\nexport { explode$1 as explode };\n/**\n * explode() will take a visitor object with all of the various shorthands\n * that we support, and validates & normalizes it into a common format, ready\n * to be used in traversal\n *\n * The various shorthands are:\n * * `Identifier() { ... }` -> `Identifier: { enter() { ... } }`\n * * `\"Identifier|NumericLiteral\": { ... }` -> `Identifier: { ... }, NumericLiteral: { ... }`\n * * Aliases in `@babel/types`: e.g. `Property: { ... }` -> `ObjectProperty: { ... }, ClassProperty: { ... }`\n * Other normalizations are:\n * * Visitors of virtual types are wrapped, so that they are only visited when\n * their dynamic check passes\n * * `enter` and `exit` functions are wrapped in arrays, to ease merging of\n * visitors\n */\nfunction explode$1<S>(visitor: Visitor<S>): ExplodedVisitor<S> {\n if (isExplodedVisitor(visitor)) return visitor;\n // @ts-expect-error `visitor` will be cast to ExplodedVisitor by this function\n visitor._exploded = true;\n\n // normalise pipes\n for (const nodeType of Object.keys(visitor) as (keyof Visitor)[]) {\n if (shouldIgnoreKey(nodeType)) continue;\n\n const parts: Array<string> = nodeType.split(\"|\");\n if (parts.length === 1) continue;\n\n const fns = visitor[nodeType];\n delete visitor[nodeType];\n\n for (const part of parts) {\n // @ts-expect-error part will be verified by `verify` later\n visitor[part] = fns;\n }\n }\n\n // verify data structure\n verify$1(visitor);\n\n // make sure there's no __esModule type since this is because we're using loose mode\n // and it sets __esModule to be enumerable on all modules :(\n // @ts-expect-error ESModule interop\n delete visitor.__esModule;\n\n // ensure visitors are objects\n ensureEntranceObjects(visitor);\n\n // ensure enter/exit callbacks are arrays\n ensureCallbackArrays(visitor);\n\n // add type wrappers\n for (const nodeType of Object.keys(visitor)) {\n if (shouldIgnoreKey(nodeType)) continue;\n\n if (!isVirtualType(nodeType)) continue;\n\n // wrap all the functions\n const fns = visitor[nodeType];\n for (const type of Object.keys(fns)) {\n // @ts-expect-error normalised as VisitNodeObject\n fns[type] = wrapCheck(nodeType, fns[type]);\n }\n\n // clear it from the visitor\n delete visitor[nodeType];\n\n const types = virtualTypes[nodeType];\n if (types !== null) {\n for (const type of types) {\n // merge the visitor if necessary or just put it back in\n if (visitor[type]) {\n mergePair(visitor[type], fns);\n } else {\n // @ts-expect-error Expression produces too complex union\n visitor[type] = fns;\n }\n }\n } else {\n mergePair(visitor, fns);\n }\n }\n\n // add aliases\n for (const nodeType of Object.keys(visitor) as (keyof Visitor)[]) {\n if (shouldIgnoreKey(nodeType)) continue;\n\n let aliases = FLIPPED_ALIAS_KEYS[nodeType];\n\n if (nodeType in DEPRECATED_KEYS) {\n const deprecatedKey = DEPRECATED_KEYS[nodeType];\n deprecationWarning(nodeType, deprecatedKey, \"Visitor \");\n aliases = [deprecatedKey];\n } else if (nodeType in DEPRECATED_ALIASES) {\n const deprecatedAlias =\n DEPRECATED_ALIASES[nodeType as keyof typeof DEPRECATED_ALIASES];\n deprecationWarning(nodeType, deprecatedAlias, \"Visitor \");\n aliases = FLIPPED_ALIAS_KEYS[deprecatedAlias];\n }\n\n if (!aliases) continue;\n\n const fns = visitor[nodeType];\n // clear it from the visitor\n delete visitor[nodeType];\n\n for (const alias of aliases) {\n const existing = visitor[alias];\n if (existing) {\n mergePair(existing, fns);\n } else {\n visitor[alias] = { ...fns };\n }\n }\n }\n\n for (const nodeType of Object.keys(visitor)) {\n if (shouldIgnoreKey(nodeType)) continue;\n\n ensureCallbackArrays(\n // @ts-expect-error nodeType must present in visitor after previous validations\n visitor[nodeType],\n );\n }\n\n // @ts-expect-error explosion has been performed\n return visitor as ExplodedVisitor;\n}\n\n// We need to name this function `verify$1` because otherwise rollup-plugin-dts\n// will generate a `namespace traverse { var verify: typeof verify; }` when\n// bundling @babel/traverse's index.d.ts.\n// TODO: Just call it `verify` once https://github.com/Swatinem/rollup-plugin-dts/issues/307\n// is fixed.\nexport { verify$1 as verify };\nfunction verify$1(visitor: Visitor) {\n // @ts-expect-error _verified is not defined on non-verified Visitor.\n // TODO: unify _verified and _exploded.\n if (visitor._verified) return;\n\n if (typeof visitor === \"function\") {\n throw new Error(\n \"You passed `traverse()` a function when it expected a visitor object, \" +\n \"are you sure you didn't mean `{ enter: Function }`?\",\n );\n }\n\n for (const nodeType of Object.keys(visitor) as (keyof Visitor)[]) {\n if (nodeType === \"enter\" || nodeType === \"exit\") {\n validateVisitorMethods(nodeType, visitor[nodeType]);\n }\n\n if (shouldIgnoreKey(nodeType)) continue;\n\n if (!TYPES.includes(nodeType)) {\n throw new Error(\n `You gave us a visitor for the node type ${nodeType} but it's not a valid type in @babel/traverse ${PACKAGE_JSON.version}`,\n );\n }\n\n const visitors = visitor[nodeType];\n if (typeof visitors === \"object\") {\n for (const visitorKey of Object.keys(visitors)) {\n if (visitorKey === \"enter\" || visitorKey === \"exit\") {\n // verify that it just contains functions\n validateVisitorMethods(\n `${nodeType}.${visitorKey}`,\n visitors[visitorKey],\n );\n } else {\n throw new Error(\n \"You passed `traverse()` a visitor object with the property \" +\n `${nodeType} that has the invalid property ${visitorKey}`,\n );\n }\n }\n }\n }\n\n // @ts-expect-error _verified is not defined on non-verified Visitor.\n // TODO: unify _verified and _exploded.\n visitor._verified = true;\n}\n\nfunction validateVisitorMethods(\n path: string,\n val: any,\n): asserts val is Function | Function[] {\n const fns = [].concat(val);\n for (const fn of fns) {\n if (typeof fn !== \"function\") {\n throw new TypeError(\n `Non-function found defined in ${path} with type ${typeof fn}`,\n );\n }\n }\n}\n\nexport function merge<State>(\n visitors: Visitor<State>[],\n): ExplodedVisitor<State>;\nexport function merge(\n visitors: Visitor<unknown>[],\n states?: any[],\n wrapper?: Function | null,\n): ExplodedVisitor<unknown>;\nexport function merge(\n visitors: any[],\n states: any[] = [],\n wrapper?: VisitWrapper | null,\n): ExplodedVisitor {\n const mergedVisitor: ExplodedVisitor = { _verified: true, _exploded: true };\n if (!process.env.BABEL_8_BREAKING) {\n // For compatibility with old Babel versions, we must hide _verified and _exploded.\n // Otherwise, old versions of the validator will throw sayng that `true` is not\n // a function, because it tries to validate it as a visitor.\n Object.defineProperty(mergedVisitor, \"_exploded\", { enumerable: false });\n Object.defineProperty(mergedVisitor, \"_verified\", { enumerable: false });\n }\n\n for (let i = 0; i < visitors.length; i++) {\n const visitor = explode$1(visitors[i]);\n const state = states[i];\n\n let topVisitor: ExplVisitNode<unknown, Node> = visitor;\n if (state || wrapper) {\n topVisitor = wrapWithStateOrWrapper(topVisitor, state, wrapper);\n }\n mergePair(mergedVisitor, topVisitor);\n\n for (const key of Object.keys(visitor) as (keyof ExplodedVisitor)[]) {\n if (shouldIgnoreKey(key)) continue;\n\n let typeVisitor = visitor[key];\n\n // if we have state or wrapper then overload the callbacks to take it\n if (state || wrapper) {\n typeVisitor = wrapWithStateOrWrapper(typeVisitor, state, wrapper);\n }\n\n const nodeVisitor = (mergedVisitor[key] ||= {});\n mergePair(nodeVisitor, typeVisitor);\n }\n }\n\n return mergedVisitor;\n}\n\nfunction wrapWithStateOrWrapper<State>(\n oldVisitor: ExplVisitNode<State, Node>,\n state: State | null,\n wrapper?: VisitWrapper<State> | null,\n): ExplVisitNode<State, Node> {\n const newVisitor: ExplVisitNode<State, Node> = {};\n\n for (const phase of [\"enter\", \"exit\"] as VisitPhase[]) {\n let fns = oldVisitor[phase];\n\n // not an enter/exit array of callbacks\n if (!Array.isArray(fns)) continue;\n\n fns = fns.map(function (fn) {\n let newFn = fn;\n\n if (state) {\n newFn = function (path: NodePath) {\n fn.call(state, path, state);\n };\n }\n\n if (wrapper) {\n // @ts-expect-error Fixme: actually PluginPass.key (aka pluginAlias)?\n newFn = wrapper(state?.key, phase, newFn);\n }\n\n // Override toString in case this function is printed, we want to print the wrapped function, same as we do in `wrapCheck`\n if (newFn !== fn) {\n newFn.toString = () => fn.toString();\n }\n\n return newFn;\n });\n\n newVisitor[phase] = fns;\n }\n\n return newVisitor;\n}\n\nfunction ensureEntranceObjects(obj: Visitor) {\n for (const key of Object.keys(obj) as (keyof Visitor)[]) {\n if (shouldIgnoreKey(key)) continue;\n\n const fns = obj[key];\n if (typeof fns === \"function\") {\n // @ts-expect-error: Expression produces a union type that is too complex to represent.\n obj[key] = { enter: fns };\n }\n }\n}\n\nfunction ensureCallbackArrays(obj: Visitor) {\n if (obj.enter && !Array.isArray(obj.enter)) obj.enter = [obj.enter];\n if (obj.exit && !Array.isArray(obj.exit)) obj.exit = [obj.exit];\n}\n\nfunction wrapCheck(nodeType: VIRTUAL_TYPES, fn: Function) {\n const fnKey = `is${nodeType}`;\n // @ts-expect-error we know virtualTypesValidators will contain `fnKey`, but TS doesn't\n const validator = virtualTypesValidators[fnKey];\n const newFn = function (this: unknown, path: NodePath) {\n if (validator.call(path)) {\n return fn.apply(this, arguments);\n }\n };\n newFn.toString = () => fn.toString();\n return newFn;\n}\n\nfunction shouldIgnoreKey(key: string): key is\n | `_${string}` // ` // Comment to fix syntax highlighting in vscode\n | \"enter\"\n | \"exit\"\n | \"shouldSkip\"\n | \"denylist\"\n | \"noScope\"\n | \"skipKeys\"\n | \"blacklist\" {\n // internal/hidden key\n if (key[0] === \"_\") return true;\n\n // ignore function keys\n if (key === \"enter\" || key === \"exit\" || key === \"shouldSkip\") return true;\n\n // ignore other options\n if (key === \"denylist\" || key === \"noScope\" || key === \"skipKeys\") {\n return true;\n }\n\n if (!process.env.BABEL_8_BREAKING) {\n if (key === \"blacklist\") {\n return true;\n }\n }\n\n return false;\n}\n\n/*\nfunction mergePair(\n dest: ExplVisitNode<unknown, Node>,\n src: ExplVisitNode<unknown, Node>,\n);\n*/\nfunction mergePair(dest: any, src: any) {\n for (const phase of [\"enter\", \"exit\"] as VisitPhase[]) {\n if (!src[phase]) continue;\n dest[phase] = [].concat(dest[phase] || [], src[phase]);\n }\n}\n\n// environmentVisitor should be used when traversing the whole class and not for specific class elements/methods.\n// For perf reasons, the environmentVisitor might be traversed with `{ noScope: true }`, which means `path.scope` is undefined.\n// Avoid using `path.scope` here\nconst _environmentVisitor: Visitor = {\n FunctionParent(path) {\n // arrows are not skipped because they inherit the context.\n if (path.isArrowFunctionExpression()) return;\n\n path.skip();\n if (path.isMethod()) {\n if (\n !process.env.BABEL_8_BREAKING &&\n !path.requeueComputedKeyAndDecorators\n ) {\n // See https://github.com/babel/babel/issues/16694\n requeueComputedKeyAndDecorators.call(path);\n } else {\n path.requeueComputedKeyAndDecorators();\n }\n }\n },\n Property(path) {\n if (path.isObjectProperty()) return;\n path.skip();\n if (\n !process.env.BABEL_8_BREAKING &&\n !path.requeueComputedKeyAndDecorators\n ) {\n // See https://github.com/babel/babel/issues/16694\n requeueComputedKeyAndDecorators.call(path);\n } else {\n path.requeueComputedKeyAndDecorators();\n }\n },\n};\n\nexport function environmentVisitor<S>(visitor: Visitor<S>): Visitor<S> {\n return merge([_environmentVisitor, visitor]);\n}\n","import type Binding from \"../binding.ts\";\nimport * as t from \"@babel/types\";\nimport type { NodePath, Visitor } from \"../../index.ts\";\nimport { traverseNode } from \"../../traverse-node.ts\";\nimport { explode } from \"../../visitors.ts\";\nimport { getAssignmentIdentifiers, type Identifier } from \"@babel/types\";\nimport { requeueComputedKeyAndDecorators } from \"../../path/context.ts\";\n\nconst renameVisitor: Visitor<Renamer> = {\n ReferencedIdentifier({ node }, state) {\n if (node.name === state.oldName) {\n node.name = state.newName;\n }\n },\n\n Scope(path, state) {\n if (\n !path.scope.bindingIdentifierEquals(\n state.oldName,\n state.binding.identifier,\n )\n ) {\n path.skip();\n if (path.isMethod()) {\n if (\n !process.env.BABEL_8_BREAKING &&\n !path.requeueComputedKeyAndDecorators\n ) {\n // See https://github.com/babel/babel/issues/16694\n requeueComputedKeyAndDecorators.call(path);\n } else {\n path.requeueComputedKeyAndDecorators();\n }\n }\n }\n },\n\n ObjectProperty({ node, scope }, state) {\n const { name } = node.key as Identifier;\n if (\n node.shorthand &&\n // In destructuring the identifier is already renamed by the\n // AssignmentExpression|Declaration|VariableDeclarator visitor,\n // while in object literals it's renamed later by the\n // ReferencedIdentifier visitor.\n (name === state.oldName || name === state.newName) &&\n // Ignore shadowed bindings\n scope.getBindingIdentifier(name) === state.binding.identifier\n ) {\n node.shorthand = false;\n if (!process.env.BABEL_8_BREAKING) {\n if (node.extra?.shorthand) node.extra.shorthand = false;\n }\n }\n },\n\n \"AssignmentExpression|Declaration|VariableDeclarator\"(\n path: NodePath<\n t.AssignmentExpression | t.Declaration | t.VariableDeclarator\n >,\n state,\n ) {\n if (path.isVariableDeclaration()) return;\n const ids = path.isAssignmentExpression()\n ? // See https://github.com/babel/babel/issues/16694\n getAssignmentIdentifiers(path.node)\n : path.getOuterBindingIdentifiers();\n\n for (const name in ids) {\n if (name === state.oldName) ids[name].name = state.newName;\n }\n },\n};\n\nexport default class Renamer {\n constructor(binding: Binding, oldName: string, newName: string) {\n this.newName = newName;\n this.oldName = oldName;\n this.binding = binding;\n }\n\n declare oldName: string;\n declare newName: string;\n declare binding: Binding;\n\n maybeConvertFromExportDeclaration(parentDeclar: NodePath) {\n const maybeExportDeclar = parentDeclar.parentPath;\n\n if (!maybeExportDeclar.isExportDeclaration()) {\n return;\n }\n\n if (maybeExportDeclar.isExportDefaultDeclaration()) {\n const { declaration } = maybeExportDeclar.node;\n if (t.isDeclaration(declaration) && !declaration.id) {\n return;\n }\n }\n\n if (maybeExportDeclar.isExportAllDeclaration()) {\n return;\n }\n\n maybeExportDeclar.splitExportDeclaration();\n }\n\n maybeConvertFromClassFunctionDeclaration(path: NodePath) {\n return path; // TODO\n\n // // retain the `name` of a class/function declaration\n\n // if (!path.isFunctionDeclaration() && !path.isClassDeclaration()) return;\n // if (this.binding.kind !== \"hoisted\") return;\n\n // path.node.id = identifier(this.oldName);\n // path.node._blockHoist = 3;\n\n // path.replaceWith(\n // variableDeclaration(\"let\", [\n // variableDeclarator(identifier(this.newName), toExpression(path.node)),\n // ]),\n // );\n }\n\n maybeConvertFromClassFunctionExpression(path: NodePath) {\n return path; // TODO\n\n // // retain the `name` of a class/function expression\n\n // if (!path.isFunctionExpression() && !path.isClassExpression()) return;\n // if (this.binding.kind !== \"local\") return;\n\n // path.node.id = identifier(this.oldName);\n\n // this.binding.scope.parent.push({\n // id: identifier(this.newName),\n // });\n\n // path.replaceWith(\n // assignmentExpression(\"=\", identifier(this.newName), path.node),\n // );\n }\n\n rename(/* Babel 7 - block?: t.Pattern | t.Scopable */) {\n const { binding, oldName, newName } = this;\n const { scope, path } = binding;\n\n const parentDeclar = path.find(\n path =>\n path.isDeclaration() ||\n path.isFunctionExpression() ||\n path.isClassExpression(),\n );\n if (parentDeclar) {\n const bindingIds = parentDeclar.getOuterBindingIdentifiers();\n if (bindingIds[oldName] === binding.identifier) {\n // When we are renaming an exported identifier, we need to ensure that\n // the exported binding keeps the old name.\n this.maybeConvertFromExportDeclaration(parentDeclar);\n }\n }\n\n const blockToTraverse = process.env.BABEL_8_BREAKING\n ? scope.block\n : (arguments[0] as t.Pattern | t.Scopable) || scope.block;\n\n // When blockToTraverse is a SwitchStatement, the discriminant\n // is not part of the current scope and thus should be skipped.\n\n // const foo = {\n // get [x]() {\n // return x;\n // },\n // };\n const skipKeys: Record<string, true> = { discriminant: true };\n if (t.isMethod(blockToTraverse)) {\n if (blockToTraverse.computed) {\n skipKeys.key = true;\n }\n if (!t.isObjectMethod(blockToTraverse)) {\n skipKeys.decorators = true;\n }\n }\n\n traverseNode(\n blockToTraverse,\n explode(renameVisitor),\n scope,\n this,\n scope.path,\n skipKeys,\n );\n\n if (process.env.BABEL_8_BREAKING) {\n scope.removeOwnBinding(oldName);\n scope.bindings[newName] = binding;\n this.binding.identifier.name = newName;\n } else if (!arguments[0]) {\n scope.removeOwnBinding(oldName);\n scope.bindings[newName] = binding;\n this.binding.identifier.name = newName;\n }\n\n if (parentDeclar) {\n this.maybeConvertFromClassFunctionDeclaration(path);\n this.maybeConvertFromClassFunctionExpression(path);\n }\n }\n}\n","import type NodePath from \"../path/index.ts\";\nimport type * as t from \"@babel/types\";\nimport type Scope from \"./index.ts\";\n\nexport type BindingKind =\n | \"var\" /* var declarator */\n | \"let\" /* let declarator, class declaration id, catch clause parameters */\n | \"const\" /* const/using declarator */\n | \"module\" /* import specifiers */\n | \"hoisted\" /* function declaration id */\n | \"param\" /* function declaration parameters */\n | \"local\" /* function expression id, class expression id */\n | \"unknown\"; /* export specifiers */\n/**\n * This class is responsible for a binding inside of a scope.\n *\n * It tracks the following:\n *\n * * Node path.\n * * Amount of times referenced by other nodes.\n * * Paths to nodes that reassign or modify this binding.\n * * The kind of binding. (Is it a parameter, declaration etc)\n */\n\nexport default class Binding {\n identifier: t.Identifier;\n scope: Scope;\n path: NodePath;\n kind: BindingKind;\n\n constructor({\n identifier,\n scope,\n path,\n kind,\n }: {\n identifier: t.Identifier;\n scope: Scope;\n path: NodePath;\n kind: BindingKind;\n }) {\n this.identifier = identifier;\n this.scope = scope;\n this.path = path;\n this.kind = kind;\n\n if ((kind === \"var\" || kind === \"hoisted\") && isDeclaredInLoop(path)) {\n this.reassign(path);\n }\n\n this.clearValue();\n }\n\n constantViolations: Array<NodePath> = [];\n constant: boolean = true;\n\n referencePaths: Array<NodePath> = [];\n referenced: boolean = false;\n references: number = 0;\n\n declare hasDeoptedValue: boolean;\n declare hasValue: boolean;\n declare value: any;\n\n deoptValue() {\n this.clearValue();\n this.hasDeoptedValue = true;\n }\n\n setValue(value: any) {\n if (this.hasDeoptedValue) return;\n this.hasValue = true;\n this.value = value;\n }\n\n clearValue() {\n this.hasDeoptedValue = false;\n this.hasValue = false;\n this.value = null;\n }\n\n /**\n * Register a constant violation with the provided `path`.\n */\n\n reassign(path: NodePath) {\n this.constant = false;\n if (this.constantViolations.includes(path)) {\n return;\n }\n this.constantViolations.push(path);\n }\n\n /**\n * Increment the amount of references to this binding.\n */\n\n reference(path: NodePath) {\n if (this.referencePaths.includes(path)) {\n return;\n }\n this.referenced = true;\n this.references++;\n this.referencePaths.push(path);\n }\n\n /**\n * Decrement the amount of references to this binding.\n */\n\n dereference() {\n this.references--;\n this.referenced = !!this.references;\n }\n}\n\nfunction isDeclaredInLoop(path: NodePath) {\n for (\n let { parentPath, key } = path;\n parentPath;\n { parentPath, key } = parentPath\n ) {\n if (parentPath.isFunctionParent()) return false;\n if (\n parentPath.isWhile() ||\n parentPath.isForXStatement() ||\n (parentPath.isForStatement() && key === \"body\")\n ) {\n return true;\n }\n }\n return false;\n}\n","import type { Node } from \"@babel/types\";\nimport type NodePath from \"./path/index.ts\";\nimport type Scope from \"./scope/index.ts\";\nimport type { HubInterface } from \"./hub.ts\";\n\nlet pathsCache: WeakMap<\n HubInterface | typeof nullHub,\n WeakMap<Node, Map<Node, NodePath>>\n> = new WeakMap();\nexport { pathsCache as path };\nexport let scope: WeakMap<Node, Scope> = new WeakMap();\n\nexport function clear() {\n clearPath();\n clearScope();\n}\n\nexport function clearPath() {\n pathsCache = new WeakMap();\n}\n\nexport function clearScope() {\n scope = new WeakMap();\n}\n\n// NodePath#hub can be null, but it's not a valid weakmap key because it\n// cannot be collected by GC. Use an object, knowing tht it will not be\n// collected anyway. It's not a memory leak because pathsCache.get(nullHub)\n// is itself a weakmap, so its entries can still be collected.\nconst nullHub = Object.freeze({} as const);\n\nexport function getCachedPaths(hub: HubInterface | null, parent: Node) {\n if (!process.env.BABEL_8_BREAKING) {\n // Only use Hub as part of the cache key in Babel 8, because it is a\n // breaking change (it causes incompatibilities with older `@babel/core`\n // versions: see https://github.com/babel/babel/pull/15759)\n hub = null;\n }\n return pathsCache.get(hub ?? nullHub)?.get(parent);\n}\n\nexport function getOrCreateCachedPaths(hub: HubInterface | null, parent: Node) {\n if (!process.env.BABEL_8_BREAKING) {\n hub = null;\n }\n\n let parents = pathsCache.get(hub ?? nullHub);\n if (!parents) pathsCache.set(hub ?? nullHub, (parents = new WeakMap()));\n\n let paths = parents.get(parent);\n if (!paths) parents.set(parent, (paths = new Map()));\n\n return paths;\n}\n","import Renamer from \"./lib/renamer.ts\";\nimport type NodePath from \"../path/index.ts\";\nimport traverse from \"../index.ts\";\nimport Binding from \"./binding.ts\";\nimport type { BindingKind } from \"./binding.ts\";\nimport globals from \"globals\";\nimport {\n NOT_LOCAL_BINDING,\n assignmentExpression,\n callExpression,\n cloneNode,\n getBindingIdentifiers,\n identifier,\n isArrayExpression,\n isBinary,\n isCallExpression,\n isClass,\n isClassBody,\n isClassDeclaration,\n isExportAllDeclaration,\n isExportDefaultDeclaration,\n isExportNamedDeclaration,\n isFunctionDeclaration,\n isIdentifier,\n isImportDeclaration,\n isLiteral,\n isMemberExpression,\n isMethod,\n isModuleSpecifier,\n isNullLiteral,\n isObjectExpression,\n isProperty,\n isPureish,\n isRegExpLiteral,\n isSuper,\n isTaggedTemplateExpression,\n isTemplateLiteral,\n isThisExpression,\n isUnaryExpression,\n isVariableDeclaration,\n expressionStatement,\n matchesPattern,\n memberExpression,\n numericLiteral,\n toIdentifier,\n variableDeclaration,\n variableDeclarator,\n isRecordExpression,\n isTupleExpression,\n isObjectProperty,\n isTopicReference,\n isMetaProperty,\n isPrivateName,\n isExportDeclaration,\n buildUndefinedNode,\n sequenceExpression,\n} from \"@babel/types\";\nimport * as t from \"@babel/types\";\nimport { scope as scopeCache } from \"../cache.ts\";\nimport type { Visitor } from \"../types.ts\";\nimport { isExplodedVisitor } from \"../visitors.ts\";\n\ntype NodePart = string | number | boolean;\n// Recursively gathers the identifying names of a node.\nfunction gatherNodeParts(node: t.Node, parts: NodePart[]) {\n switch (node?.type) {\n default:\n if (isImportDeclaration(node) || isExportDeclaration(node)) {\n if (\n (isExportAllDeclaration(node) ||\n isExportNamedDeclaration(node) ||\n isImportDeclaration(node)) &&\n node.source\n ) {\n gatherNodeParts(node.source, parts);\n } else if (\n (isExportNamedDeclaration(node) || isImportDeclaration(node)) &&\n node.specifiers?.length\n ) {\n for (const e of node.specifiers) gatherNodeParts(e, parts);\n } else if (\n (isExportDefaultDeclaration(node) ||\n isExportNamedDeclaration(node)) &&\n node.declaration\n ) {\n gatherNodeParts(node.declaration, parts);\n }\n } else if (isModuleSpecifier(node)) {\n // todo(flow->ts): should condition instead be:\n // ```\n // t.isExportSpecifier(node) ||\n // t.isImportDefaultSpecifier(node) ||\n // t.isImportNamespaceSpecifier(node) ||\n // t.isImportSpecifier(node)\n // ```\n // allowing only nodes with `.local`?\n // @ts-expect-error todo(flow->ts)\n gatherNodeParts(node.local, parts);\n } else if (\n isLiteral(node) &&\n !isNullLiteral(node) &&\n !isRegExpLiteral(node) &&\n !isTemplateLiteral(node)\n ) {\n parts.push(node.value);\n }\n break;\n\n case \"MemberExpression\":\n case \"OptionalMemberExpression\":\n case \"JSXMemberExpression\":\n gatherNodeParts(node.object, parts);\n gatherNodeParts(node.property, parts);\n break;\n\n case \"Identifier\":\n case \"JSXIdentifier\":\n parts.push(node.name);\n break;\n\n case \"CallExpression\":\n case \"OptionalCallExpression\":\n case \"NewExpression\":\n gatherNodeParts(node.callee, parts);\n break;\n\n case \"ObjectExpression\":\n case \"ObjectPattern\":\n for (const e of node.properties) {\n gatherNodeParts(e, parts);\n }\n break;\n\n case \"SpreadElement\":\n case \"RestElement\":\n gatherNodeParts(node.argument, parts);\n break;\n\n case \"ObjectProperty\":\n case \"ObjectMethod\":\n case \"ClassProperty\":\n case \"ClassMethod\":\n case \"ClassPrivateProperty\":\n case \"ClassPrivateMethod\":\n gatherNodeParts(node.key, parts);\n break;\n\n case \"ThisExpression\":\n parts.push(\"this\");\n break;\n\n case \"Super\":\n parts.push(\"super\");\n break;\n\n case \"Import\":\n parts.push(\"import\");\n break;\n\n case \"DoExpression\":\n parts.push(\"do\");\n break;\n\n case \"YieldExpression\":\n parts.push(\"yield\");\n gatherNodeParts(node.argument, parts);\n break;\n\n case \"AwaitExpression\":\n parts.push(\"await\");\n gatherNodeParts(node.argument, parts);\n break;\n\n case \"AssignmentExpression\":\n gatherNodeParts(node.left, parts);\n break;\n\n case \"VariableDeclarator\":\n gatherNodeParts(node.id, parts);\n break;\n\n case \"FunctionExpression\":\n case \"FunctionDeclaration\":\n case \"ClassExpression\":\n case \"ClassDeclaration\":\n gatherNodeParts(node.id, parts);\n break;\n\n case \"PrivateName\":\n gatherNodeParts(node.id, parts);\n break;\n\n case \"ParenthesizedExpression\":\n gatherNodeParts(node.expression, parts);\n break;\n\n case \"UnaryExpression\":\n case \"UpdateExpression\":\n gatherNodeParts(node.argument, parts);\n break;\n\n case \"MetaProperty\":\n gatherNodeParts(node.meta, parts);\n gatherNodeParts(node.property, parts);\n break;\n\n case \"JSXElement\":\n gatherNodeParts(node.openingElement, parts);\n break;\n\n case \"JSXOpeningElement\":\n gatherNodeParts(node.name, parts);\n break;\n\n case \"JSXFragment\":\n gatherNodeParts(node.openingFragment, parts);\n break;\n\n case \"JSXOpeningFragment\":\n parts.push(\"Fragment\");\n break;\n\n case \"JSXNamespacedName\":\n gatherNodeParts(node.namespace, parts);\n gatherNodeParts(node.name, parts);\n break;\n }\n}\n\n//\ninterface CollectVisitorState {\n assignments: NodePath<t.AssignmentExpression>[];\n references: NodePath<t.Identifier | t.JSXIdentifier>[];\n constantViolations: NodePath[];\n}\n\nconst collectorVisitor: Visitor<CollectVisitorState> = {\n ForStatement(path) {\n const declar = path.get(\"init\");\n // delegate block scope handling to the `BlockScoped` method\n if (declar.isVar()) {\n const { scope } = path;\n const parentScope = scope.getFunctionParent() || scope.getProgramParent();\n parentScope.registerBinding(\"var\", declar);\n }\n },\n\n Declaration(path) {\n // delegate block scope handling to the `BlockScoped` method\n if (path.isBlockScoped()) return;\n\n // delegate import handing to the `ImportDeclaration` method\n if (path.isImportDeclaration()) return;\n\n // this will be hit again once we traverse into it after this iteration\n if (path.isExportDeclaration()) return;\n\n // we've ran into a declaration!\n const parent =\n path.scope.getFunctionParent() || path.scope.getProgramParent();\n parent.registerDeclaration(path);\n },\n\n ImportDeclaration(path) {\n // import may only appear in the top level or inside a module/namespace (for TS/flow)\n const parent = path.scope.getBlockParent();\n\n parent.registerDeclaration(path);\n },\n\n TSImportEqualsDeclaration(path) {\n const parent = path.scope.getBlockParent();\n\n parent.registerDeclaration(path);\n },\n\n ReferencedIdentifier(path, state) {\n if (t.isTSQualifiedName(path.parent) && path.parent.right === path.node) {\n return;\n }\n if (path.parentPath.isTSImportEqualsDeclaration()) return;\n state.references.push(path);\n },\n\n ForXStatement(path, state) {\n const left = path.get(\"left\");\n if (left.isPattern() || left.isIdentifier()) {\n state.constantViolations.push(path);\n }\n // delegate block scope handling to the `BlockScoped` method\n else if (left.isVar()) {\n const { scope } = path;\n const parentScope = scope.getFunctionParent() || scope.getProgramParent();\n parentScope.registerBinding(\"var\", left);\n }\n },\n\n ExportDeclaration: {\n exit(path) {\n const { node, scope } = path;\n // ExportAllDeclaration does not have `declaration`\n if (isExportAllDeclaration(node)) return;\n const declar = node.declaration;\n if (isClassDeclaration(declar) || isFunctionDeclaration(declar)) {\n const id = declar.id;\n if (!id) return;\n\n const binding = scope.getBinding(id.name);\n binding?.reference(path);\n } else if (isVariableDeclaration(declar)) {\n for (const decl of declar.declarations) {\n for (const name of Object.keys(getBindingIdentifiers(decl))) {\n const binding = scope.getBinding(name);\n binding?.reference(path);\n }\n }\n }\n },\n },\n\n LabeledStatement(path) {\n path.scope.getBlockParent().registerDeclaration(path);\n },\n\n AssignmentExpression(path, state) {\n state.assignments.push(path);\n },\n\n UpdateExpression(path, state) {\n state.constantViolations.push(path);\n },\n\n UnaryExpression(path, state) {\n if (path.node.operator === \"delete\") {\n state.constantViolations.push(path);\n }\n },\n\n BlockScoped(path) {\n let scope = path.scope;\n if (scope.path === path) scope = scope.parent;\n\n const parent = scope.getBlockParent();\n parent.registerDeclaration(path);\n\n // Register class identifier in class' scope if this is a class declaration.\n if (path.isClassDeclaration() && path.node.id) {\n const id = path.node.id;\n const name = id.name;\n\n path.scope.bindings[name] = path.scope.parent.getBinding(name);\n }\n },\n\n CatchClause(path) {\n path.scope.registerBinding(\"let\", path);\n },\n\n Function(path) {\n const params: Array<NodePath> = path.get(\"params\");\n for (const param of params) {\n path.scope.registerBinding(\"param\", param);\n }\n\n // Register function expression id after params. When the id\n // collides with a function param, the id effectively can't be\n // referenced: here we registered it as a constantViolation\n if (\n path.isFunctionExpression() &&\n path.node.id &&\n // @ts-expect-error Fixme: document symbol ast properties\n !path.node.id[NOT_LOCAL_BINDING]\n ) {\n path.scope.registerBinding(\"local\", path.get(\"id\"), path);\n }\n },\n\n ClassExpression(path) {\n if (\n path.node.id &&\n // @ts-expect-error Fixme: document symbol ast properties\n !path.node.id[NOT_LOCAL_BINDING]\n ) {\n path.scope.registerBinding(\"local\", path.get(\"id\"), path);\n }\n },\n\n TSTypeAnnotation(path) {\n path.skip();\n },\n};\n\nlet uid = 0;\n\nexport type { Binding };\n\nexport { Scope as default };\nclass Scope {\n uid;\n\n path: NodePath;\n block: t.Pattern | t.Scopable;\n\n inited;\n\n labels: Map<string, NodePath<t.LabeledStatement>>;\n bindings: { [name: string]: Binding };\n references: { [name: string]: true };\n globals: { [name: string]: t.Identifier | t.JSXIdentifier };\n uids: { [name: string]: boolean };\n data: { [key: string | symbol]: unknown };\n crawling: boolean;\n\n /**\n * This searches the current \"scope\" and collects all references/bindings\n * within.\n */\n constructor(path: NodePath<t.Pattern | t.Scopable>) {\n const { node } = path;\n const cached = scopeCache.get(node);\n // Sometimes, a scopable path is placed higher in the AST tree.\n // In these cases, have to create a new Scope.\n if (cached?.path === path) {\n return cached;\n }\n scopeCache.set(node, this);\n\n this.uid = uid++;\n\n this.block = node;\n this.path = path;\n\n this.labels = new Map();\n this.inited = false;\n }\n\n /**\n * Globals.\n */\n\n static globals = Object.keys(globals.builtin);\n\n /**\n * Variables available in current context.\n */\n\n static contextVariables = [\"arguments\", \"undefined\", \"Infinity\", \"NaN\"];\n\n get parent() {\n let parent,\n path = this.path;\n do {\n // Skip method scope if coming from inside computed key or decorator expression\n const shouldSkip = path.key === \"key\" || path.listKey === \"decorators\";\n path = path.parentPath;\n if (shouldSkip && path.isMethod()) path = path.parentPath;\n if (path?.isScope()) parent = path;\n } while (path && !parent);\n\n return parent?.scope;\n }\n\n /**\n * Generate a unique identifier and add it to the current scope.\n */\n\n generateDeclaredUidIdentifier(name?: string) {\n const id = this.generateUidIdentifier(name);\n this.push({ id });\n return cloneNode(id);\n }\n\n /**\n * Generate a unique identifier.\n */\n\n generateUidIdentifier(name?: string) {\n return identifier(this.generateUid(name));\n }\n\n /**\n * Generate a unique `_id1` binding.\n */\n\n generateUid(name: string = \"temp\"): string {\n name = toIdentifier(name).replace(/^_+/, \"\").replace(/\\d+$/g, \"\");\n\n let uid;\n let i = 1;\n do {\n uid = `_${name}`;\n if (i > 1) uid += i;\n i++;\n } while (\n this.hasLabel(uid) ||\n this.hasBinding(uid) ||\n this.hasGlobal(uid) ||\n this.hasReference(uid)\n );\n\n const program = this.getProgramParent();\n program.references[uid] = true;\n program.uids[uid] = true;\n\n return uid;\n }\n\n generateUidBasedOnNode(node: t.Node, defaultName?: string) {\n const parts: NodePart[] = [];\n gatherNodeParts(node, parts);\n\n let id = parts.join(\"$\");\n id = id.replace(/^_/, \"\") || defaultName || \"ref\";\n\n return this.generateUid(id.slice(0, 20));\n }\n\n /**\n * Generate a unique identifier based on a node.\n */\n\n generateUidIdentifierBasedOnNode(node: t.Node, defaultName?: string) {\n return identifier(this.generateUidBasedOnNode(node, defaultName));\n }\n\n /**\n * Determine whether evaluating the specific input `node` is a consequenceless reference. ie.\n * evaluating it won't result in potentially arbitrary code from being ran. The following are\n * allowed and determined not to cause side effects:\n *\n * - `this` expressions\n * - `super` expressions\n * - Bound identifiers\n */\n\n isStatic(node: t.Node): boolean {\n if (isThisExpression(node) || isSuper(node) || isTopicReference(node)) {\n return true;\n }\n\n if (isIdentifier(node)) {\n const binding = this.getBinding(node.name);\n if (binding) {\n return binding.constant;\n } else {\n return this.hasBinding(node.name);\n }\n }\n\n return false;\n }\n\n /**\n * Possibly generate a memoised identifier if it is not static and has consequences.\n */\n\n maybeGenerateMemoised(node: t.Node, dontPush?: boolean) {\n if (this.isStatic(node)) {\n return null;\n } else {\n const id = this.generateUidIdentifierBasedOnNode(node);\n if (!dontPush) {\n this.push({ id });\n return cloneNode(id);\n }\n return id;\n }\n }\n\n checkBlockScopedCollisions(\n local: Binding,\n kind: BindingKind,\n name: string,\n id: any,\n ) {\n // ignore parameters\n if (kind === \"param\") return;\n\n // Ignore existing binding if it's the name of the current function or\n // class expression\n if (local.kind === \"local\") return;\n\n const duplicate =\n // don't allow duplicate bindings to exist alongside\n kind === \"let\" ||\n local.kind === \"let\" ||\n local.kind === \"const\" ||\n local.kind === \"module\" ||\n // don't allow a local of param with a kind of let\n (local.kind === \"param\" && kind === \"const\");\n\n if (duplicate) {\n throw this.path.hub.buildError(\n id,\n `Duplicate declaration \"${name}\"`,\n TypeError,\n );\n }\n }\n\n rename(\n oldName: string,\n newName?: string,\n // prettier-ignore\n /* Babel 7 - block?: t.Pattern | t.Scopable */\n ) {\n const binding = this.getBinding(oldName);\n if (binding) {\n newName ||= this.generateUidIdentifier(oldName).name;\n const renamer = new Renamer(binding, oldName, newName);\n if (process.env.BABEL_8_BREAKING) {\n renamer.rename();\n } else {\n // @ts-ignore(Babel 7 vs Babel 8) TODO: Delete this\n renamer.rename(arguments[2]);\n }\n }\n }\n\n dump() {\n const sep = \"-\".repeat(60);\n console.log(sep);\n let scope: Scope = this;\n do {\n console.log(\"#\", scope.block.type);\n for (const name of Object.keys(scope.bindings)) {\n const binding = scope.bindings[name];\n console.log(\" -\", name, {\n constant: binding.constant,\n references: binding.references,\n violations: binding.constantViolations.length,\n kind: binding.kind,\n });\n }\n } while ((scope = scope.parent));\n console.log(sep);\n }\n\n hasLabel(name: string) {\n return !!this.getLabel(name);\n }\n\n getLabel(name: string) {\n return this.labels.get(name);\n }\n\n registerLabel(path: NodePath<t.LabeledStatement>) {\n this.labels.set(path.node.label.name, path);\n }\n\n registerDeclaration(path: NodePath) {\n if (path.isLabeledStatement()) {\n this.registerLabel(path);\n } else if (path.isFunctionDeclaration()) {\n this.registerBinding(\"hoisted\", path.get(\"id\"), path);\n } else if (path.isVariableDeclaration()) {\n const declarations = path.get(\"declarations\");\n const { kind } = path.node;\n for (const declar of declarations) {\n this.registerBinding(\n kind === \"using\" || kind === \"await using\" ? \"const\" : kind,\n declar,\n );\n }\n } else if (path.isClassDeclaration()) {\n if (path.node.declare) return;\n this.registerBinding(\"let\", path);\n } else if (path.isImportDeclaration()) {\n const isTypeDeclaration =\n path.node.importKind === \"type\" || path.node.importKind === \"typeof\";\n const specifiers = path.get(\"specifiers\");\n for (const specifier of specifiers) {\n const isTypeSpecifier =\n isTypeDeclaration ||\n (specifier.isImportSpecifier() &&\n (specifier.node.importKind === \"type\" ||\n specifier.node.importKind === \"typeof\"));\n\n this.registerBinding(isTypeSpecifier ? \"unknown\" : \"module\", specifier);\n }\n } else if (path.isExportDeclaration()) {\n // todo: improve babel-types\n const declar = path.get(\"declaration\") as NodePath;\n if (\n declar.isClassDeclaration() ||\n declar.isFunctionDeclaration() ||\n declar.isVariableDeclaration()\n ) {\n this.registerDeclaration(declar);\n }\n } else {\n this.registerBinding(\"unknown\", path);\n }\n }\n\n buildUndefinedNode() {\n return buildUndefinedNode();\n }\n\n registerConstantViolation(path: NodePath) {\n const ids = path.getAssignmentIdentifiers();\n for (const name of Object.keys(ids)) {\n this.getBinding(name)?.reassign(path);\n }\n }\n\n registerBinding(\n kind: Binding[\"kind\"],\n path: NodePath,\n bindingPath: NodePath = path,\n ) {\n if (!kind) throw new ReferenceError(\"no `kind`\");\n\n if (path.isVariableDeclaration()) {\n const declarators: Array<NodePath> = path.get(\"declarations\");\n for (const declar of declarators) {\n this.registerBinding(kind, declar);\n }\n return;\n }\n\n const parent = this.getProgramParent();\n const ids = path.getOuterBindingIdentifiers(true);\n\n for (const name of Object.keys(ids)) {\n parent.references[name] = true;\n\n for (const id of ids[name]) {\n const local = this.getOwnBinding(name);\n\n if (local) {\n // same identifier so continue safely as we're likely trying to register it\n // multiple times\n if (local.identifier === id) continue;\n\n this.checkBlockScopedCollisions(local, kind, name, id);\n }\n\n // A redeclaration of an existing variable is a modification\n if (local) {\n local.reassign(bindingPath);\n } else {\n this.bindings[name] = new Binding({\n identifier: id,\n scope: this,\n path: bindingPath,\n kind: kind,\n });\n }\n }\n }\n }\n\n addGlobal(node: t.Identifier | t.JSXIdentifier) {\n this.globals[node.name] = node;\n }\n\n hasUid(name: string): boolean {\n let scope: Scope = this;\n\n do {\n if (scope.uids[name]) return true;\n } while ((scope = scope.parent));\n\n return false;\n }\n\n hasGlobal(name: string): boolean {\n let scope: Scope = this;\n\n do {\n if (scope.globals[name]) return true;\n } while ((scope = scope.parent));\n\n return false;\n }\n\n hasReference(name: string): boolean {\n return !!this.getProgramParent().references[name];\n }\n\n isPure(node: t.Node, constantsOnly?: boolean): boolean {\n if (isIdentifier(node)) {\n const binding = this.getBinding(node.name);\n if (!binding) return false;\n if (constantsOnly) return binding.constant;\n return true;\n } else if (\n isThisExpression(node) ||\n isMetaProperty(node) ||\n isTopicReference(node) ||\n isPrivateName(node)\n ) {\n return true;\n } else if (isClass(node)) {\n if (node.superClass && !this.isPure(node.superClass, constantsOnly)) {\n return false;\n }\n if (node.decorators?.length > 0) {\n return false;\n }\n return this.isPure(node.body, constantsOnly);\n } else if (isClassBody(node)) {\n for (const method of node.body) {\n if (!this.isPure(method, constantsOnly)) return false;\n }\n return true;\n } else if (isBinary(node)) {\n return (\n this.isPure(node.left, constantsOnly) &&\n this.isPure(node.right, constantsOnly)\n );\n } else if (isArrayExpression(node) || isTupleExpression(node)) {\n for (const elem of node.elements) {\n if (elem !== null && !this.isPure(elem, constantsOnly)) return false;\n }\n return true;\n } else if (isObjectExpression(node) || isRecordExpression(node)) {\n for (const prop of node.properties) {\n if (!this.isPure(prop, constantsOnly)) return false;\n }\n return true;\n } else if (isMethod(node)) {\n if (node.computed && !this.isPure(node.key, constantsOnly)) return false;\n if (node.decorators?.length > 0) {\n return false;\n }\n return true;\n } else if (isProperty(node)) {\n // @ts-expect-error todo(flow->ts): computed in not present on private properties\n if (node.computed && !this.isPure(node.key, constantsOnly)) return false;\n if (node.decorators?.length > 0) {\n return false;\n }\n if (isObjectProperty(node) || node.static) {\n if (node.value !== null && !this.isPure(node.value, constantsOnly)) {\n return false;\n }\n }\n return true;\n } else if (isUnaryExpression(node)) {\n return this.isPure(node.argument, constantsOnly);\n } else if (isTemplateLiteral(node)) {\n for (const expression of node.expressions) {\n if (!this.isPure(expression, constantsOnly)) return false;\n }\n return true;\n } else if (isTaggedTemplateExpression(node)) {\n return (\n matchesPattern(node.tag, \"String.raw\") &&\n !this.hasBinding(\"String\", { noGlobals: true }) &&\n this.isPure(node.quasi, constantsOnly)\n );\n } else if (isMemberExpression(node)) {\n return (\n !node.computed &&\n isIdentifier(node.object) &&\n node.object.name === \"Symbol\" &&\n isIdentifier(node.property) &&\n node.property.name !== \"for\" &&\n !this.hasBinding(\"Symbol\", { noGlobals: true })\n );\n } else if (isCallExpression(node)) {\n return (\n matchesPattern(node.callee, \"Symbol.for\") &&\n !this.hasBinding(\"Symbol\", { noGlobals: true }) &&\n node.arguments.length === 1 &&\n t.isStringLiteral(node.arguments[0])\n );\n } else {\n return isPureish(node);\n }\n }\n\n /**\n * Set some arbitrary data on the current scope.\n */\n\n setData(key: string | symbol, val: any) {\n return (this.data[key] = val);\n }\n\n /**\n * Recursively walk up scope tree looking for the data `key`.\n */\n\n getData(key: string | symbol): any {\n let scope: Scope = this;\n do {\n const data = scope.data[key];\n if (data != null) return data;\n } while ((scope = scope.parent));\n }\n\n /**\n * Recursively walk up scope tree looking for the data `key` and if it exists,\n * remove it.\n */\n\n removeData(key: string) {\n let scope: Scope = this;\n do {\n const data = scope.data[key];\n if (data != null) scope.data[key] = null;\n } while ((scope = scope.parent));\n }\n\n init() {\n if (!this.inited) {\n this.inited = true;\n this.crawl();\n }\n }\n\n crawl() {\n const path = this.path;\n\n this.references = Object.create(null);\n this.bindings = Object.create(null);\n this.globals = Object.create(null);\n this.uids = Object.create(null);\n this.data = Object.create(null);\n\n let scope: Scope = this;\n do {\n if (scope.crawling) return;\n if (scope.path.isProgram()) {\n break;\n }\n } while ((scope = scope.parent));\n\n const programParent = scope;\n\n const state: CollectVisitorState = {\n references: [],\n constantViolations: [],\n assignments: [],\n };\n\n this.crawling = true;\n // traverse does not visit the root node, here we explicitly collect\n // root node binding info when the root is not a Program.\n if (path.type !== \"Program\" && isExplodedVisitor(collectorVisitor)) {\n for (const visit of collectorVisitor.enter) {\n visit.call(state, path, state);\n }\n const typeVisitors = collectorVisitor[path.type];\n if (typeVisitors) {\n for (const visit of typeVisitors.enter) {\n visit.call(state, path, state);\n }\n }\n }\n path.traverse(collectorVisitor, state);\n this.crawling = false;\n\n // register assignments\n for (const path of state.assignments) {\n // register undeclared bindings as globals\n const ids = path.getAssignmentIdentifiers();\n for (const name of Object.keys(ids)) {\n if (path.scope.getBinding(name)) continue;\n programParent.addGlobal(ids[name]);\n }\n\n // register as constant violation\n path.scope.registerConstantViolation(path);\n }\n\n // register references\n for (const ref of state.references) {\n const binding = ref.scope.getBinding(ref.node.name);\n if (binding) {\n binding.reference(ref);\n } else {\n programParent.addGlobal(ref.node);\n }\n }\n\n // register constant violations\n for (const path of state.constantViolations) {\n path.scope.registerConstantViolation(path);\n }\n }\n\n push(opts: {\n id: t.ArrayPattern | t.Identifier | t.ObjectPattern;\n init?: t.Expression;\n unique?: boolean;\n _blockHoist?: number | undefined;\n kind?: \"var\" | \"let\" | \"const\";\n }) {\n let path = this.path;\n\n if (path.isPattern()) {\n path = this.getPatternParent().path;\n } else if (!path.isBlockStatement() && !path.isProgram()) {\n path = this.getBlockParent().path;\n }\n\n if (path.isSwitchStatement()) {\n path = (this.getFunctionParent() || this.getProgramParent()).path;\n }\n\n const { init, unique, kind = \"var\", id } = opts;\n\n // When injecting a non-const non-initialized binding inside\n // an IIFE, if the number of call arguments is less than or\n // equal to the number of function parameters, we can safely\n // inject the binding into the parameter list.\n if (\n !init &&\n !unique &&\n (kind === \"var\" || kind === \"let\") &&\n path.isFunction() &&\n // @ts-expect-error ArrowFunctionExpression never has a name\n !path.node.name &&\n isCallExpression(path.parent, { callee: path.node }) &&\n path.parent.arguments.length <= path.node.params.length &&\n isIdentifier(id)\n ) {\n path.pushContainer(\"params\", id);\n path.scope.registerBinding(\n \"param\",\n path.get(\"params\")[path.node.params.length - 1],\n );\n return;\n }\n\n if (path.isLoop() || path.isCatchClause() || path.isFunction()) {\n path.ensureBlock();\n path = path.get(\"body\");\n }\n\n const blockHoist = opts._blockHoist == null ? 2 : opts._blockHoist;\n\n const dataKey = `declaration:${kind}:${blockHoist}`;\n let declarPath = !unique && path.getData(dataKey);\n\n if (!declarPath) {\n const declar = variableDeclaration(kind, []);\n // @ts-expect-error todo(flow->ts): avoid modifying nodes\n declar._blockHoist = blockHoist;\n\n [declarPath] = (path as NodePath<t.BlockStatement>).unshiftContainer(\n \"body\",\n [declar],\n );\n if (!unique) path.setData(dataKey, declarPath);\n }\n\n const declarator = variableDeclarator(id, init);\n const len = declarPath.node.declarations.push(declarator);\n path.scope.registerBinding(kind, declarPath.get(\"declarations\")[len - 1]);\n }\n\n /**\n * Walk up to the top of the scope tree and get the `Program`.\n */\n\n getProgramParent() {\n let scope: Scope = this;\n do {\n if (scope.path.isProgram()) {\n return scope;\n }\n } while ((scope = scope.parent));\n throw new Error(\"Couldn't find a Program\");\n }\n\n /**\n * Walk up the scope tree until we hit either a Function or return null.\n */\n\n getFunctionParent(): Scope | null {\n let scope: Scope = this;\n do {\n if (scope.path.isFunctionParent()) {\n return scope;\n }\n } while ((scope = scope.parent));\n return null;\n }\n\n /**\n * Walk up the scope tree until we hit either a BlockStatement/Loop/Program/Function/Switch or reach the\n * very top and hit Program.\n */\n\n getBlockParent() {\n let scope: Scope = this;\n do {\n if (scope.path.isBlockParent()) {\n return scope;\n }\n } while ((scope = scope.parent));\n throw new Error(\n \"We couldn't find a BlockStatement, For, Switch, Function, Loop or Program...\",\n );\n }\n\n /**\n * Walk up from a pattern scope (function param initializer) until we hit a non-pattern scope,\n * then returns its block parent\n * @returns An ancestry scope whose path is a block parent\n */\n getPatternParent() {\n let scope: Scope = this;\n do {\n if (!scope.path.isPattern()) {\n return scope.getBlockParent();\n }\n } while ((scope = scope.parent.parent));\n throw new Error(\n \"We couldn't find a BlockStatement, For, Switch, Function, Loop or Program...\",\n );\n }\n\n /**\n * Walks the scope tree and gathers **all** bindings.\n */\n\n getAllBindings(): Record<string, Binding> {\n const ids = Object.create(null);\n\n let scope: Scope = this;\n do {\n for (const key of Object.keys(scope.bindings)) {\n if (key in ids === false) {\n ids[key] = scope.bindings[key];\n }\n }\n scope = scope.parent;\n } while (scope);\n\n return ids;\n }\n\n bindingIdentifierEquals(name: string, node: t.Node): boolean {\n return this.getBindingIdentifier(name) === node;\n }\n\n getBinding(name: string): Binding | undefined {\n let scope: Scope = this;\n let previousPath;\n\n do {\n const binding = scope.getOwnBinding(name);\n if (binding) {\n // Check if a pattern is a part of parameter expressions.\n // Note: for performance reason we skip checking previousPath.parentPath.isFunction()\n // because `scope.path` is validated as scope in packages/babel-types/src/validators/isScope.js\n // That is, if a scope path is pattern, its parent must be Function/CatchClause\n\n // Spec 9.2.10.28: The closure created by this expression should not have visibility of\n // declarations in the function body. If the binding is not a `param`-kind (as function parameters)\n // or `local`-kind (as id in function expression),\n // then it must be defined inside the function body, thus it should be skipped\n if (\n previousPath?.isPattern() &&\n binding.kind !== \"param\" &&\n binding.kind !== \"local\"\n ) {\n // do nothing\n } else {\n return binding;\n }\n } else if (\n !binding &&\n name === \"arguments\" &&\n scope.path.isFunction() &&\n !scope.path.isArrowFunctionExpression()\n ) {\n break;\n }\n previousPath = scope.path;\n } while ((scope = scope.parent));\n }\n\n getOwnBinding(name: string): Binding | undefined {\n return this.bindings[name];\n }\n\n // todo: return probably can be undefined…\n getBindingIdentifier(name: string): t.Identifier {\n return this.getBinding(name)?.identifier;\n }\n\n // todo: flow->ts return probably can be undefined\n getOwnBindingIdentifier(name: string): t.Identifier {\n const binding = this.bindings[name];\n return binding?.identifier;\n }\n\n hasOwnBinding(name: string) {\n return !!this.getOwnBinding(name);\n }\n\n // By default, we consider generated UIDs as bindings.\n // This is because they are almost always used to declare variables,\n // and since the scope isn't always up-to-date it's better to assume that\n // there is a variable with that name. The `noUids` option can be used to\n // turn off this behavior, for example if you know that the generate UID\n // was used to declare a variable in a different scope.\n hasBinding(\n name: string,\n opts?: boolean | { noGlobals?: boolean; noUids?: boolean },\n ) {\n if (!name) return false;\n let scope: Scope = this;\n do {\n if (scope.hasOwnBinding(name)) {\n return true;\n }\n } while ((scope = scope.parent));\n\n // TODO: Only accept the object form.\n let noGlobals;\n let noUids;\n if (typeof opts === \"object\") {\n noGlobals = opts.noGlobals;\n noUids = opts.noUids;\n } else if (typeof opts === \"boolean\") {\n noGlobals = opts;\n }\n\n if (!noUids && this.hasUid(name)) return true;\n if (!noGlobals && Scope.globals.includes(name)) return true;\n if (!noGlobals && Scope.contextVariables.includes(name)) return true;\n return false;\n }\n\n parentHasBinding(\n name: string,\n opts?: { noGlobals?: boolean; noUids?: boolean },\n ) {\n return this.parent?.hasBinding(name, opts);\n }\n\n /**\n * Move a binding of `name` to another `scope`.\n */\n\n moveBindingTo(name: string, scope: Scope) {\n const info = this.getBinding(name);\n if (info) {\n info.scope.removeOwnBinding(name);\n info.scope = scope;\n scope.bindings[name] = info;\n }\n }\n\n removeOwnBinding(name: string) {\n delete this.bindings[name];\n }\n\n removeBinding(name: string) {\n // clear literal binding\n this.getBinding(name)?.scope.removeOwnBinding(name);\n\n // clear uids with this name - https://github.com/babel/babel/issues/2101\n let scope: Scope = this;\n do {\n if (scope.uids[name]) {\n scope.uids[name] = false;\n }\n } while ((scope = scope.parent));\n }\n\n /**\n * Hoist all the `var` variable to the beginning of the function/program\n * scope where their binding will be actually defined. For exmaple,\n * { var x = 2 }\n * will be transformed to\n * var x; { x = 2 }\n *\n * @param emit A custom function to emit `var` declarations, for example to\n * emit them in a different scope.\n */\n hoistVariables(\n emit: (id: t.Identifier, hasInit: boolean) => void = id =>\n this.push({ id }),\n ) {\n this.crawl();\n\n const seen = new Set();\n for (const name of Object.keys(this.bindings)) {\n const binding = this.bindings[name];\n if (!binding) continue;\n const { path } = binding;\n if (!path.isVariableDeclarator()) continue;\n const { parent, parentPath } = path;\n\n if (parent.kind !== \"var\" || seen.has(parent)) continue;\n seen.add(path.parent);\n\n let firstId;\n const init = [];\n for (const decl of parent.declarations) {\n firstId ??= decl.id;\n if (decl.init) {\n init.push(assignmentExpression(\"=\", decl.id, decl.init));\n }\n\n const ids = Object.keys(getBindingIdentifiers(decl, false, true, true));\n for (const name of ids) {\n emit(identifier(name), decl.init != null);\n }\n }\n\n // for (var i in test)\n if (parentPath.parentPath.isFor({ left: parent })) {\n parentPath.replaceWith(firstId);\n } else if (init.length === 0) {\n parentPath.remove();\n } else {\n const expr = init.length === 1 ? init[0] : sequenceExpression(init);\n if (parentPath.parentPath.isForStatement({ init: parent })) {\n parentPath.replaceWith(expr);\n } else {\n parentPath.replaceWith(expressionStatement(expr));\n }\n }\n }\n }\n}\n\nif (!process.env.BABEL_8_BREAKING && !USE_ESM) {\n /** @deprecated Not used in our codebase */\n // @ts-expect-error Babel 7 compatibility\n Scope.prototype._renameFromMap = function _renameFromMap(\n map: Record<string | symbol, unknown>,\n oldName: string | symbol,\n newName: string | symbol,\n value: unknown,\n ) {\n if (map[oldName]) {\n map[newName] = value;\n map[oldName] = null;\n }\n };\n\n /**\n * Traverse node with current scope and path.\n *\n * !!! WARNING !!!\n * This method assumes that `this.path` is the NodePath representing `node`.\n * After running the traversal, the `.parentPath` of the NodePaths\n * corresponding to `node`'s children will be set to `this.path`.\n *\n * There is no good reason to use this method, since the only safe way to use\n * it is equivalent to `scope.path.traverse(opts, state)`.\n */\n // @ts-expect-error Babel 7 compatibility\n Scope.prototype.traverse = function <S>(\n this: Scope,\n node: any,\n opts: any,\n state?: S,\n ) {\n traverse(node, opts, this, state, this.path);\n };\n\n /**\n * Generate an `_id1`.\n */\n // @ts-expect-error Babel 7 compatibility\n Scope.prototype._generateUid = function _generateUid(\n name: string,\n i: number,\n ) {\n let id = name;\n if (i > 1) id += i;\n return `_${id}`;\n };\n\n // TODO: (Babel 8) Split i in two parameters, and use an object of flags\n // @ts-expect-error Babel 7 compatibility\n Scope.prototype.toArray = function toArray(\n this: Scope,\n node: t.Node,\n i?: number | boolean,\n arrayLikeIsIterable?: boolean | void,\n ) {\n if (isIdentifier(node)) {\n const binding = this.getBinding(node.name);\n if (binding?.constant && binding.path.isGenericType(\"Array\")) {\n return node;\n }\n }\n\n if (isArrayExpression(node)) {\n return node;\n }\n\n if (isIdentifier(node, { name: \"arguments\" })) {\n return callExpression(\n memberExpression(\n memberExpression(\n memberExpression(identifier(\"Array\"), identifier(\"prototype\")),\n identifier(\"slice\"),\n ),\n identifier(\"call\"),\n ),\n [node],\n );\n }\n\n let helperName;\n const args = [node];\n if (i === true) {\n // Used in array-spread to create an array.\n helperName = \"toConsumableArray\";\n } else if (typeof i === \"number\") {\n args.push(numericLiteral(i));\n\n // Used in array-rest to create an array from a subset of an iterable.\n helperName = \"slicedToArray\";\n // TODO if (this.hub.isLoose(\"es6.forOf\")) helperName += \"-loose\";\n } else {\n // Used in array-rest to create an array\n helperName = \"toArray\";\n }\n\n if (arrayLikeIsIterable) {\n args.unshift(this.path.hub.addHelper(helperName));\n helperName = \"maybeArrayLike\";\n }\n\n // @ts-expect-error todo(flow->ts): t.Node is not valid to use in args, function argument typeneeds to be clarified\n return callExpression(this.path.hub.addHelper(helperName), args);\n };\n\n /**\n * Walks the scope tree and gathers all declarations of `kind`.\n */\n // @ts-expect-error Babel 7 compatibility\n Scope.prototype.getAllBindingsOfKind = function getAllBindingsOfKind(\n ...kinds: string[]\n ): Record<string, Binding> {\n const ids = Object.create(null);\n\n for (const kind of kinds) {\n let scope: Scope = this;\n do {\n for (const name of Object.keys(scope.bindings)) {\n const binding = scope.bindings[name];\n if (binding.kind === kind) ids[name] = binding;\n }\n scope = scope.parent;\n } while (scope);\n }\n\n return ids;\n };\n\n Object.defineProperties(Scope.prototype, {\n parentBlock: {\n configurable: true,\n enumerable: true,\n get(this: Scope) {\n return this.path.parent;\n },\n },\n hub: {\n configurable: true,\n enumerable: true,\n get(this: Scope) {\n return this.path.hub;\n },\n },\n });\n}\n\ntype _Binding = Binding;\n// eslint-disable-next-line @typescript-eslint/no-namespace\nnamespace Scope {\n export type Binding = _Binding;\n}\n","// This file contains that retrieve or validate anything related to the current paths ancestry.\n\nimport { VISITOR_KEYS } from \"@babel/types\";\nimport type * as t from \"@babel/types\";\nimport type NodePath from \"./index.ts\";\n\n/**\n * Starting at the parent path of the current `NodePath` and going up the\n * tree, return the first `NodePath` that causes the provided `callback`\n * to return a truthy value, or `null` if the `callback` never returns a\n * truthy value.\n */\n\nexport function findParent(\n this: NodePath,\n callback: (path: NodePath) => boolean,\n): NodePath | null {\n let path = this;\n while ((path = path.parentPath)) {\n if (callback(path)) return path;\n }\n return null;\n}\n\n/**\n * Starting at current `NodePath` and going up the tree, return the first\n * `NodePath` that causes the provided `callback` to return a truthy value,\n * or `null` if the `callback` never returns a truthy value.\n */\n\nexport function find(\n this: NodePath,\n callback: (path: NodePath) => boolean,\n): NodePath | null {\n let path = this;\n do {\n if (callback(path)) return path;\n } while ((path = path.parentPath));\n return null;\n}\n\n/**\n * Get the parent function of the current path.\n */\n\nexport function getFunctionParent(this: NodePath): NodePath<t.Function> | null {\n return this.findParent(p => p.isFunction()) as NodePath<t.Function> | null;\n}\n\n/**\n * Walk up the tree until we hit a parent node path in a list.\n */\n\nexport function getStatementParent(this: NodePath): NodePath<t.Statement> {\n let path = this;\n\n do {\n if (\n !path.parentPath ||\n (Array.isArray(path.container) && path.isStatement())\n ) {\n break;\n } else {\n path = path.parentPath;\n }\n } while (path);\n\n if (path && (path.isProgram() || path.isFile())) {\n throw new Error(\n \"File/Program node, we can't possibly find a statement parent to this\",\n );\n }\n\n return path as NodePath<t.Statement>;\n}\n\n/**\n * Get the deepest common ancestor and then from it, get the earliest relationship path\n * to that ancestor.\n *\n * Earliest is defined as being \"before\" all the other nodes in terms of list container\n * position and visiting key.\n */\n\nexport function getEarliestCommonAncestorFrom(\n this: NodePath,\n paths: Array<NodePath>,\n): NodePath {\n return this.getDeepestCommonAncestorFrom(\n paths,\n function (deepest, i, ancestries) {\n let earliest;\n const keys = VISITOR_KEYS[deepest.type];\n\n for (const ancestry of ancestries) {\n const path = ancestry[i + 1];\n\n // first path\n if (!earliest) {\n earliest = path;\n continue;\n }\n\n // handle containers\n if (path.listKey && earliest.listKey === path.listKey) {\n // we're in the same container so check if we're earlier\n if (path.key < earliest.key) {\n earliest = path;\n continue;\n }\n }\n\n // handle keys\n const earliestKeyIndex = keys.indexOf(earliest.parentKey);\n const currentKeyIndex = keys.indexOf(path.parentKey);\n if (earliestKeyIndex > currentKeyIndex) {\n // key appears before so it's earlier\n earliest = path;\n }\n }\n\n return earliest;\n },\n );\n}\n\n/**\n * Get the earliest path in the tree where the provided `paths` intersect.\n *\n * TODO: Possible optimisation target.\n */\n\nexport function getDeepestCommonAncestorFrom(\n this: NodePath,\n paths: Array<NodePath>,\n filter?: (deepest: NodePath, i: number, ancestries: NodePath[][]) => NodePath,\n): NodePath {\n if (!paths.length) {\n return this;\n }\n\n if (paths.length === 1) {\n return paths[0];\n }\n\n // minimum depth of the tree so we know the highest node\n let minDepth = Infinity;\n\n // last common ancestor\n let lastCommonIndex, lastCommon;\n\n // get the ancestors of the path, breaking when the parent exceeds ourselves\n const ancestries = paths.map(path => {\n const ancestry: NodePath[] = [];\n\n do {\n ancestry.unshift(path);\n } while ((path = path.parentPath) && path !== this);\n\n // save min depth to avoid going too far in\n if (ancestry.length < minDepth) {\n minDepth = ancestry.length;\n }\n\n return ancestry;\n });\n\n // get the first ancestry so we have a seed to assess all other ancestries with\n const first = ancestries[0];\n\n // check ancestor equality\n depthLoop: for (let i = 0; i < minDepth; i++) {\n const shouldMatch = first[i];\n\n for (const ancestry of ancestries) {\n if (ancestry[i] !== shouldMatch) {\n // we've hit a snag\n break depthLoop;\n }\n }\n\n // next iteration may break so store these so they can be returned\n lastCommonIndex = i;\n lastCommon = shouldMatch;\n }\n\n if (lastCommon) {\n if (filter) {\n return filter(lastCommon, lastCommonIndex, ancestries);\n } else {\n return lastCommon;\n }\n } else {\n throw new Error(\"Couldn't find intersection\");\n }\n}\n\n/**\n * Build an array of node paths containing the entire ancestry of the current node path.\n *\n * NOTE: The current node path is included in this.\n */\n\nexport function getAncestry(this: NodePath): Array<NodePath> {\n let path = this;\n const paths = [];\n do {\n paths.push(path);\n } while ((path = path.parentPath));\n return paths;\n}\n\n/**\n * A helper to find if `this` path is an ancestor of @param maybeDescendant\n */\nexport function isAncestor(this: NodePath, maybeDescendant: NodePath): boolean {\n return maybeDescendant.isDescendant(this);\n}\n\n/**\n * A helper to find if `this` path is a descendant of @param maybeAncestor\n */\nexport function isDescendant(this: NodePath, maybeAncestor: NodePath): boolean {\n return !!this.findParent(parent => parent === maybeAncestor);\n}\n\nexport function inType(this: NodePath, ...candidateTypes: string[]): boolean {\n let path = this;\n while (path) {\n for (const type of candidateTypes) {\n if (path.node.type === type) return true;\n }\n path = path.parentPath;\n }\n\n return false;\n}\n","import {\n createFlowUnionType,\n createTSUnionType,\n createUnionTypeAnnotation,\n isFlowType,\n isTSType,\n} from \"@babel/types\";\nimport type * as t from \"@babel/types\";\n\nexport function createUnionType(\n types: (t.FlowType | t.TSType)[],\n): t.FlowType | t.TSType | undefined {\n if (process.env.BABEL_8_BREAKING) {\n if (types.every(v => isFlowType(v))) {\n return createFlowUnionType(types);\n }\n if (types.every(v => isTSType(v))) {\n return createTSUnionType(types);\n }\n } else {\n if (types.every(v => isFlowType(v))) {\n if (createFlowUnionType) {\n return createFlowUnionType(types);\n }\n\n return createUnionTypeAnnotation(types);\n } else if (types.every(v => isTSType(v))) {\n if (createTSUnionType) {\n return createTSUnionType(types);\n }\n }\n }\n}\n","import type NodePath from \"../index.ts\";\nimport {\n BOOLEAN_NUMBER_BINARY_OPERATORS,\n createTypeAnnotationBasedOnTypeof,\n numberTypeAnnotation,\n voidTypeAnnotation,\n} from \"@babel/types\";\nimport type * as t from \"@babel/types\";\nimport type Binding from \"../../scope/binding.ts\";\n\nimport { createUnionType } from \"./util.ts\";\n\nexport default function (this: NodePath<t.Identifier>, node: t.Identifier) {\n if (!this.isReferenced()) return;\n\n // check if a binding exists of this value and if so then return a union type of all\n // possible types that the binding could be\n const binding = this.scope.getBinding(node.name);\n if (binding) {\n if (binding.identifier.typeAnnotation) {\n return binding.identifier.typeAnnotation;\n } else {\n return getTypeAnnotationBindingConstantViolations(\n binding,\n this,\n node.name,\n );\n }\n }\n\n // built-in values\n if (node.name === \"undefined\") {\n return voidTypeAnnotation();\n } else if (node.name === \"NaN\" || node.name === \"Infinity\") {\n return numberTypeAnnotation();\n } else if (node.name === \"arguments\") {\n // todo\n }\n}\n\nfunction getTypeAnnotationBindingConstantViolations(\n binding: Binding,\n path: NodePath<t.Identifier>,\n name: string,\n) {\n const types = [];\n\n const functionConstantViolations: NodePath[] = [];\n let constantViolations = getConstantViolationsBefore(\n binding,\n path,\n functionConstantViolations,\n );\n\n const testType = getConditionalAnnotation(binding, path, name);\n if (testType) {\n const testConstantViolations = getConstantViolationsBefore(\n binding,\n testType.ifStatement,\n );\n\n // remove constant violations observed before the IfStatement\n constantViolations = constantViolations.filter(\n path => !testConstantViolations.includes(path),\n );\n\n // clear current types and add in observed test type\n types.push(testType.typeAnnotation);\n }\n\n if (constantViolations.length) {\n // pick one constant from each scope which will represent the last possible\n // control flow path that it could've taken/been\n /* This code is broken for the following problems:\n * It thinks that assignments can only happen in scopes.\n * What about conditionals, if statements without block,\n * or guarded assignments.\n * It also checks to see if one of the assignments is in the\n * same scope and uses that as the only \"violation\". However,\n * the binding is returned by `getConstantViolationsBefore` so we for\n * sure always going to return that as the only \"violation\".\n let rawConstantViolations = constantViolations.reverse();\n let visitedScopes = [];\n constantViolations = [];\n for (let violation of (rawConstantViolations: Array<NodePath>)) {\n let violationScope = violation.scope;\n if (visitedScopes.indexOf(violationScope) >= 0) continue;\n\n visitedScopes.push(violationScope);\n constantViolations.push(violation);\n\n if (violationScope === path.scope) {\n constantViolations = [violation];\n break;\n }\n }*/\n\n // add back on function constant violations since we can't track calls\n constantViolations.push(...functionConstantViolations);\n\n // push on inferred types of violated paths\n for (const violation of constantViolations) {\n types.push(violation.getTypeAnnotation());\n }\n }\n\n if (!types.length) {\n return;\n }\n\n return createUnionType(types);\n}\n\nfunction getConstantViolationsBefore(\n binding: Binding,\n path: NodePath,\n functions?: NodePath[],\n) {\n const violations = binding.constantViolations.slice();\n violations.unshift(binding.path);\n return violations.filter(violation => {\n violation = violation.resolve();\n const status = violation._guessExecutionStatusRelativeTo(path);\n if (functions && status === \"unknown\") functions.push(violation);\n return status === \"before\";\n });\n}\n\nfunction inferAnnotationFromBinaryExpression(\n name: string,\n path: NodePath<t.BinaryExpression>,\n) {\n const operator = path.node.operator;\n\n const right = path.get(\"right\").resolve();\n const left = path.get(\"left\").resolve();\n\n let target;\n if (left.isIdentifier({ name })) {\n target = right;\n } else if (right.isIdentifier({ name })) {\n target = left;\n }\n\n if (target) {\n if (operator === \"===\") {\n return target.getTypeAnnotation();\n }\n if (BOOLEAN_NUMBER_BINARY_OPERATORS.includes(operator)) {\n return numberTypeAnnotation();\n }\n\n return;\n }\n\n if (operator !== \"===\" && operator !== \"==\") return;\n\n let typeofPath: NodePath<t.UnaryExpression>;\n let typePath: NodePath<t.Expression>;\n if (left.isUnaryExpression({ operator: \"typeof\" })) {\n typeofPath = left;\n typePath = right as NodePath<t.Expression>;\n } else if (right.isUnaryExpression({ operator: \"typeof\" })) {\n typeofPath = right;\n typePath = left as NodePath<t.Expression>;\n }\n\n if (!typeofPath) return;\n // and that the argument of the typeof path references us!\n if (!typeofPath.get(\"argument\").isIdentifier({ name })) return;\n\n // ensure that the type path is a Literal\n typePath = typePath.resolve() as NodePath<t.Expression>;\n if (!typePath.isLiteral()) return;\n\n // and that it's a string so we can infer it\n // @ts-expect-error todo(flow->ts): value is not defined for NullLiteral and some other\n const typeValue = typePath.node.value;\n if (typeof typeValue !== \"string\") return;\n\n // turn type value into a type annotation\n // @ts-expect-error todo(flow->ts): move validation from helper or relax type constraint to just a string\n return createTypeAnnotationBasedOnTypeof(typeValue);\n}\n\nfunction getParentConditionalPath(\n binding: Binding,\n path: NodePath,\n name: string,\n) {\n let parentPath;\n while ((parentPath = path.parentPath)) {\n if (parentPath.isIfStatement() || parentPath.isConditionalExpression()) {\n if (path.key === \"test\") {\n return;\n }\n\n return parentPath as NodePath<t.IfStatement | t.ConditionalExpression>;\n }\n if (parentPath.isFunction()) {\n if (parentPath.parentPath.scope.getBinding(name) !== binding) return;\n }\n\n path = parentPath;\n }\n}\n\nfunction getConditionalAnnotation<T extends t.Node>(\n binding: Binding,\n path: NodePath<T>,\n name?: string,\n): {\n typeAnnotation: t.FlowType | t.TSType;\n ifStatement: NodePath<t.IfStatement | t.ConditionalExpression>;\n} {\n const ifStatement = getParentConditionalPath(binding, path, name);\n if (!ifStatement) return;\n\n const test = ifStatement.get(\"test\");\n const paths = [test];\n const types = [];\n\n for (let i = 0; i < paths.length; i++) {\n const path = paths[i];\n\n if (path.isLogicalExpression()) {\n if (path.node.operator === \"&&\") {\n paths.push(path.get(\"left\"));\n paths.push(path.get(\"right\"));\n }\n } else if (path.isBinaryExpression()) {\n const type = inferAnnotationFromBinaryExpression(name, path);\n if (type) types.push(type);\n }\n }\n\n if (types.length) {\n return {\n typeAnnotation: createUnionType(types),\n ifStatement,\n };\n }\n\n return getConditionalAnnotation(binding, ifStatement, name);\n}\n","import {\n BOOLEAN_BINARY_OPERATORS,\n BOOLEAN_UNARY_OPERATORS,\n NUMBER_BINARY_OPERATORS,\n NUMBER_UNARY_OPERATORS,\n STRING_UNARY_OPERATORS,\n anyTypeAnnotation,\n arrayTypeAnnotation,\n booleanTypeAnnotation,\n buildMatchMemberExpression,\n genericTypeAnnotation,\n identifier,\n nullLiteralTypeAnnotation,\n numberTypeAnnotation,\n stringTypeAnnotation,\n tupleTypeAnnotation,\n unionTypeAnnotation,\n voidTypeAnnotation,\n isIdentifier,\n} from \"@babel/types\";\nimport type * as t from \"@babel/types\";\n\nexport { default as Identifier } from \"./inferer-reference.ts\";\n\nimport { createUnionType } from \"./util.ts\";\nimport type NodePath from \"../index.ts\";\n\nexport function VariableDeclarator(this: NodePath<t.VariableDeclarator>) {\n if (!this.get(\"id\").isIdentifier()) return;\n return this.get(\"init\").getTypeAnnotation();\n}\n\nexport function TypeCastExpression(node: t.TypeCastExpression) {\n return node.typeAnnotation;\n}\n\nTypeCastExpression.validParent = true;\n\nexport function TSAsExpression(node: t.TSAsExpression) {\n return node.typeAnnotation;\n}\n\nTSAsExpression.validParent = true;\n\nexport function TSNonNullExpression(this: NodePath<t.TSNonNullExpression>) {\n return this.get(\"expression\").getTypeAnnotation();\n}\n\nexport function NewExpression(\n this: NodePath<t.NewExpression>,\n node: t.NewExpression,\n) {\n if (node.callee.type === \"Identifier\") {\n // only resolve identifier callee\n return genericTypeAnnotation(node.callee);\n }\n}\n\nexport function TemplateLiteral() {\n return stringTypeAnnotation();\n}\n\nexport function UnaryExpression(node: t.UnaryExpression) {\n const operator = node.operator;\n\n if (operator === \"void\") {\n return voidTypeAnnotation();\n } else if (NUMBER_UNARY_OPERATORS.includes(operator)) {\n return numberTypeAnnotation();\n } else if (STRING_UNARY_OPERATORS.includes(operator)) {\n return stringTypeAnnotation();\n } else if (BOOLEAN_UNARY_OPERATORS.includes(operator)) {\n return booleanTypeAnnotation();\n }\n}\n\nexport function BinaryExpression(\n this: NodePath<t.BinaryExpression>,\n node: t.BinaryExpression,\n) {\n const operator = node.operator;\n\n if (NUMBER_BINARY_OPERATORS.includes(operator)) {\n return numberTypeAnnotation();\n } else if (BOOLEAN_BINARY_OPERATORS.includes(operator)) {\n return booleanTypeAnnotation();\n } else if (operator === \"+\") {\n const right = this.get(\"right\");\n const left = this.get(\"left\");\n\n if (left.isBaseType(\"number\") && right.isBaseType(\"number\")) {\n // both numbers so this will be a number\n return numberTypeAnnotation();\n } else if (left.isBaseType(\"string\") || right.isBaseType(\"string\")) {\n // one is a string so the result will be a string\n return stringTypeAnnotation();\n }\n\n // unsure if left and right are strings or numbers so stay on the safe side\n return unionTypeAnnotation([\n stringTypeAnnotation(),\n numberTypeAnnotation(),\n ]);\n }\n}\n\nexport function LogicalExpression(this: NodePath<t.LogicalExpression>) {\n const argumentTypes = [\n this.get(\"left\").getTypeAnnotation(),\n this.get(\"right\").getTypeAnnotation(),\n ];\n\n return createUnionType(argumentTypes);\n}\n\nexport function ConditionalExpression(this: NodePath<t.ConditionalExpression>) {\n const argumentTypes = [\n this.get(\"consequent\").getTypeAnnotation(),\n this.get(\"alternate\").getTypeAnnotation(),\n ];\n\n return createUnionType(argumentTypes);\n}\n\nexport function SequenceExpression(this: NodePath<t.SequenceExpression>) {\n return this.get(\"expressions\").pop().getTypeAnnotation();\n}\n\nexport function ParenthesizedExpression(\n this: NodePath<t.ParenthesizedExpression>,\n) {\n return this.get(\"expression\").getTypeAnnotation();\n}\n\nexport function AssignmentExpression(this: NodePath<t.AssignmentExpression>) {\n return this.get(\"right\").getTypeAnnotation();\n}\n\nexport function UpdateExpression(\n this: NodePath<t.UpdateExpression>,\n node: t.UpdateExpression,\n) {\n const operator = node.operator;\n if (operator === \"++\" || operator === \"--\") {\n return numberTypeAnnotation();\n }\n}\n\nexport function StringLiteral() {\n return stringTypeAnnotation();\n}\n\nexport function NumericLiteral() {\n return numberTypeAnnotation();\n}\n\nexport function BooleanLiteral() {\n return booleanTypeAnnotation();\n}\n\nexport function NullLiteral() {\n return nullLiteralTypeAnnotation();\n}\n\nexport function RegExpLiteral() {\n return genericTypeAnnotation(identifier(\"RegExp\"));\n}\n\nexport function ObjectExpression() {\n return genericTypeAnnotation(identifier(\"Object\"));\n}\n\nexport function ArrayExpression() {\n return genericTypeAnnotation(identifier(\"Array\"));\n}\n\nexport function RestElement() {\n return ArrayExpression();\n}\n\nRestElement.validParent = true;\n\nfunction Func() {\n return genericTypeAnnotation(identifier(\"Function\"));\n}\n\nexport {\n Func as FunctionExpression,\n Func as ArrowFunctionExpression,\n Func as FunctionDeclaration,\n Func as ClassExpression,\n Func as ClassDeclaration,\n};\n\nconst isArrayFrom = buildMatchMemberExpression(\"Array.from\");\nconst isObjectKeys = buildMatchMemberExpression(\"Object.keys\");\nconst isObjectValues = buildMatchMemberExpression(\"Object.values\");\nconst isObjectEntries = buildMatchMemberExpression(\"Object.entries\");\nexport function CallExpression(this: NodePath<t.CallExpression>) {\n const { callee } = this.node;\n if (isObjectKeys(callee)) {\n return arrayTypeAnnotation(stringTypeAnnotation());\n } else if (\n isArrayFrom(callee) ||\n isObjectValues(callee) ||\n // Detect \"var foo = Array()\" calls so we can optimize for arrays vs iterables.\n isIdentifier(callee, { name: \"Array\" })\n ) {\n return arrayTypeAnnotation(anyTypeAnnotation());\n } else if (isObjectEntries(callee)) {\n return arrayTypeAnnotation(\n tupleTypeAnnotation([stringTypeAnnotation(), anyTypeAnnotation()]),\n );\n }\n\n return resolveCall(this.get(\"callee\"));\n}\n\nexport function TaggedTemplateExpression(\n this: NodePath<t.TaggedTemplateExpression>,\n) {\n return resolveCall(this.get(\"tag\"));\n}\n\nfunction resolveCall(callee: NodePath) {\n callee = callee.resolve();\n\n if (callee.isFunction()) {\n const { node } = callee;\n if (node.async) {\n if (node.generator) {\n return genericTypeAnnotation(identifier(\"AsyncIterator\"));\n } else {\n return genericTypeAnnotation(identifier(\"Promise\"));\n }\n } else {\n if (node.generator) {\n return genericTypeAnnotation(identifier(\"Iterator\"));\n } else if (callee.node.returnType) {\n return callee.node.returnType;\n } else {\n // todo: get union type of all return arguments\n }\n }\n }\n}\n","import type NodePath from \"../index.ts\";\nimport * as inferers from \"./inferers.ts\";\nimport {\n anyTypeAnnotation,\n isAnyTypeAnnotation,\n isArrayTypeAnnotation,\n isBooleanTypeAnnotation,\n isEmptyTypeAnnotation,\n isFlowBaseAnnotation,\n isGenericTypeAnnotation,\n isIdentifier,\n isMixedTypeAnnotation,\n isNumberTypeAnnotation,\n isStringTypeAnnotation,\n isTSArrayType,\n isTSTypeAnnotation,\n isTSTypeReference,\n isTupleTypeAnnotation,\n isTypeAnnotation,\n isUnionTypeAnnotation,\n isVoidTypeAnnotation,\n stringTypeAnnotation,\n voidTypeAnnotation,\n} from \"@babel/types\";\nimport type * as t from \"@babel/types\";\n\n/**\n * Infer the type of the current `NodePath`.\n */\n\nexport function getTypeAnnotation(this: NodePath): t.FlowType | t.TSType {\n let type = this.getData(\"typeAnnotation\");\n if (type != null) {\n return type;\n }\n type = _getTypeAnnotation.call(this) || anyTypeAnnotation();\n if (isTypeAnnotation(type) || isTSTypeAnnotation(type)) {\n type = type.typeAnnotation;\n }\n this.setData(\"typeAnnotation\", type);\n return type;\n}\n\n// Used to avoid infinite recursion in cases like\n// var b, c; if (0) { c = 1; b = c; } c = b;\n// It also works with indirect recursion.\nconst typeAnnotationInferringNodes = new WeakSet();\n\n/**\n * todo: split up this method\n */\n\nexport function _getTypeAnnotation(this: NodePath): any {\n const node = this.node;\n\n if (!node) {\n // handle initializerless variables, add in checks for loop initializers too\n if (this.key === \"init\" && this.parentPath.isVariableDeclarator()) {\n const declar = this.parentPath.parentPath;\n const declarParent = declar.parentPath;\n\n // for (let NODE in bar) {}\n if (declar.key === \"left\" && declarParent.isForInStatement()) {\n return stringTypeAnnotation();\n }\n\n // for (let NODE of bar) {}\n if (declar.key === \"left\" && declarParent.isForOfStatement()) {\n return anyTypeAnnotation();\n }\n\n return voidTypeAnnotation();\n } else {\n return;\n }\n }\n\n // @ts-expect-error typeAnnotation may not index node\n if (node.typeAnnotation) {\n // @ts-expect-error typeAnnotation may not index node\n return node.typeAnnotation;\n }\n\n if (typeAnnotationInferringNodes.has(node)) {\n // Bail out from type inference to avoid infinite loops\n return;\n }\n typeAnnotationInferringNodes.add(node);\n\n try {\n let inferer =\n // @ts-expect-error inferers do not cover all AST types\n inferers[node.type];\n if (inferer) {\n return inferer.call(this, node);\n }\n\n // @ts-expect-error inferers do not cover all AST types\n inferer = inferers[this.parentPath.type];\n if (inferer?.validParent) {\n return this.parentPath.getTypeAnnotation();\n }\n } finally {\n typeAnnotationInferringNodes.delete(node);\n }\n}\n\nexport function isBaseType(\n this: NodePath,\n baseName: string,\n soft?: boolean,\n): boolean {\n return _isBaseType(baseName, this.getTypeAnnotation(), soft);\n}\n\nfunction _isBaseType(\n baseName: string,\n type?: t.FlowType | t.TSType,\n soft?: boolean,\n): boolean {\n if (baseName === \"string\") {\n return isStringTypeAnnotation(type);\n } else if (baseName === \"number\") {\n return isNumberTypeAnnotation(type);\n } else if (baseName === \"boolean\") {\n return isBooleanTypeAnnotation(type);\n } else if (baseName === \"any\") {\n return isAnyTypeAnnotation(type);\n } else if (baseName === \"mixed\") {\n return isMixedTypeAnnotation(type);\n } else if (baseName === \"empty\") {\n return isEmptyTypeAnnotation(type);\n } else if (baseName === \"void\") {\n return isVoidTypeAnnotation(type);\n } else {\n if (soft) {\n return false;\n } else {\n throw new Error(`Unknown base type ${baseName}`);\n }\n }\n}\n\nexport function couldBeBaseType(this: NodePath, name: string): boolean {\n const type = this.getTypeAnnotation();\n if (isAnyTypeAnnotation(type)) return true;\n\n if (isUnionTypeAnnotation(type)) {\n for (const type2 of type.types) {\n if (isAnyTypeAnnotation(type2) || _isBaseType(name, type2, true)) {\n return true;\n }\n }\n return false;\n } else {\n return _isBaseType(name, type, true);\n }\n}\n\nexport function baseTypeStrictlyMatches(\n this: NodePath,\n rightArg: NodePath,\n): boolean {\n const left = this.getTypeAnnotation();\n const right = rightArg.getTypeAnnotation();\n\n if (!isAnyTypeAnnotation(left) && isFlowBaseAnnotation(left)) {\n return right.type === left.type;\n }\n return false;\n}\n\nexport function isGenericType(this: NodePath, genericName: string): boolean {\n const type = this.getTypeAnnotation();\n if (genericName === \"Array\") {\n // T[]\n if (\n isTSArrayType(type) ||\n isArrayTypeAnnotation(type) ||\n isTupleTypeAnnotation(type)\n ) {\n return true;\n }\n }\n return (\n (isGenericTypeAnnotation(type) &&\n isIdentifier(type.id, {\n name: genericName,\n })) ||\n (isTSTypeReference(type) &&\n isIdentifier(type.typeName, {\n name: genericName,\n }))\n );\n}\n","// this file contains hooks that handle ancestry cleanup of parent nodes when removing children\n\nimport type NodePath from \"../index.ts\";\nimport type * as t from \"@babel/types\";\n/**\n * Pre hooks should be used for either rejecting removal or delegating removal\n */\n\nexport const hooks = [\n function (self: NodePath, parent: NodePath) {\n const removeParent =\n // while (NODE);\n // removing the test of a while/switch, we can either just remove it entirely *or* turn the\n // `test` into `true` unlikely that the latter will ever be what's wanted so we just remove\n // the loop to avoid infinite recursion\n (self.key === \"test\" && (parent.isWhile() || parent.isSwitchCase())) ||\n // export NODE;\n // just remove a declaration for an export as this is no longer valid\n (self.key === \"declaration\" && parent.isExportDeclaration()) ||\n // label: NODE\n // stray labeled statement with no body\n (self.key === \"body\" && parent.isLabeledStatement()) ||\n // let NODE;\n // remove an entire declaration if there are no declarators left\n (self.listKey === \"declarations\" &&\n parent.isVariableDeclaration() &&\n parent.node.declarations.length === 1) ||\n // NODE;\n // remove the entire expression statement if there's no expression\n (self.key === \"expression\" && parent.isExpressionStatement());\n\n if (removeParent) {\n parent.remove();\n return true;\n }\n },\n\n function (self: NodePath, parent: NodePath) {\n if (parent.isSequenceExpression() && parent.node.expressions.length === 1) {\n // (node, NODE);\n // we've just removed the second element of a sequence expression so let's turn that sequence\n // expression into a regular expression\n parent.replaceWith(parent.node.expressions[0]);\n return true;\n }\n },\n\n function (self: NodePath, parent: NodePath) {\n if (parent.isBinary()) {\n // left + NODE;\n // NODE + right;\n // we're in a binary expression, better remove it and replace it with the last expression\n if (self.key === \"left\") {\n parent.replaceWith(parent.node.right);\n } else {\n // key === \"right\"\n parent.replaceWith(parent.node.left);\n }\n return true;\n }\n },\n\n function (self: NodePath, parent: NodePath) {\n if (\n (parent.isIfStatement() && self.key === \"consequent\") ||\n (self.key === \"body\" &&\n (parent.isLoop() || parent.isArrowFunctionExpression()))\n ) {\n self.replaceWith({\n type: \"BlockStatement\",\n body: [],\n } as t.BlockStatement);\n return true;\n }\n },\n];\n","// This file contains methods responsible for removing a node.\n\nimport { hooks } from \"./lib/removal-hooks.ts\";\nimport { getCachedPaths } from \"../cache.ts\";\nimport { _replaceWith } from \"./replacement.ts\";\nimport type NodePath from \"./index.ts\";\nimport { REMOVED, SHOULD_SKIP } from \"./index.ts\";\nimport { getBindingIdentifiers } from \"@babel/types\";\nimport { updateSiblingKeys } from \"./modification.ts\";\nimport { resync } from \"./context.ts\";\n\nexport function remove(this: NodePath) {\n _assertUnremoved.call(this);\n\n resync.call(this);\n\n if (_callRemovalHooks.call(this)) {\n _markRemoved.call(this);\n return;\n }\n\n if (!this.opts?.noScope) {\n _removeFromScope.call(this);\n }\n\n this.shareCommentsWithSiblings();\n _remove.call(this);\n _markRemoved.call(this);\n}\n\nexport function _removeFromScope(this: NodePath) {\n const bindings = getBindingIdentifiers(this.node, false, false, true);\n Object.keys(bindings).forEach(name => this.scope.removeBinding(name));\n}\n\nexport function _callRemovalHooks(this: NodePath) {\n if (this.parentPath) {\n for (const fn of hooks) {\n if (fn(this, this.parentPath)) return true;\n }\n }\n}\n\nexport function _remove(this: NodePath) {\n if (Array.isArray(this.container)) {\n this.container.splice(this.key as number, 1);\n updateSiblingKeys.call(this, this.key as number, -1);\n } else {\n _replaceWith.call(this, null);\n }\n}\n\nexport function _markRemoved(this: NodePath) {\n // this.shouldSkip = true; this.removed = true;\n this._traverseFlags |= SHOULD_SKIP | REMOVED;\n if (this.parent) {\n getCachedPaths(this.hub, this.parent).delete(this.node);\n }\n this.node = null;\n}\n\nexport function _assertUnremoved(this: NodePath) {\n if (this.removed) {\n throw this.buildCodeFrameError(\n \"NodePath has been removed so is read-only.\",\n );\n }\n}\n","// This file contains methods that modify the path/node in some ways.\n\nimport { getCachedPaths } from \"../cache.ts\";\nimport NodePath from \"./index.ts\";\nimport { _getQueueContexts, pushContext, setScope } from \"./context.ts\";\nimport { _assertUnremoved } from \"./removal.ts\";\nimport {\n arrowFunctionExpression,\n assertExpression,\n assignmentExpression,\n blockStatement,\n callExpression,\n cloneNode,\n expressionStatement,\n isAssignmentExpression,\n isCallExpression,\n isExportNamedDeclaration,\n isExpression,\n isIdentifier,\n isSequenceExpression,\n isSuper,\n thisExpression,\n} from \"@babel/types\";\nimport type * as t from \"@babel/types\";\nimport type Scope from \"../scope/index.ts\";\n\n/**\n * Insert the provided nodes before the current one.\n */\n\nexport function insertBefore(\n this: NodePath,\n nodes_: t.Node | t.Node[],\n): NodePath[] {\n _assertUnremoved.call(this);\n\n const nodes = _verifyNodeList.call(this, nodes_);\n\n const { parentPath, parent } = this;\n\n if (\n parentPath.isExpressionStatement() ||\n parentPath.isLabeledStatement() ||\n // https://github.com/babel/babel/issues/15293\n // When Babel transforms `export class String { field }`, the class properties plugin will inject the defineProperty\n // helper, which depends on the builtins e.g. String, Number, Symbol, etc. To prevent them from being shadowed by local\n // exports, the helper injector replaces the named export into `class _String { field }; export { _String as String }`,\n // with `parentPath` here changed to the moved ClassDeclaration, causing rare inconsistency between `parent` and `parentPath`.\n // Here we retrieve the parent type from the `parent` property. This is a temporary fix and we should revisit when\n // helpers should get injected.\n isExportNamedDeclaration(parent) ||\n (parentPath.isExportDefaultDeclaration() && this.isDeclaration())\n ) {\n return parentPath.insertBefore(nodes);\n } else if (\n (this.isNodeType(\"Expression\") && !this.isJSXElement()) ||\n (parentPath.isForStatement() && this.key === \"init\")\n ) {\n if (this.node) nodes.push(this.node);\n // @ts-expect-error todo(flow->ts): check that nodes is an array of statements\n return this.replaceExpressionWithStatements(nodes);\n } else if (Array.isArray(this.container)) {\n return _containerInsertBefore.call(this, nodes);\n } else if (this.isStatementOrBlock()) {\n const node = this.node as t.Statement;\n const shouldInsertCurrentNode =\n node &&\n (!this.isExpressionStatement() ||\n (node as t.ExpressionStatement).expression != null);\n\n this.replaceWith(blockStatement(shouldInsertCurrentNode ? [node] : []));\n return (this as NodePath<t.BlockStatement>).unshiftContainer(\n \"body\",\n // @ts-expect-error Fixme: refine nodes to t.BlockStatement[\"body\"] when this is a BlockStatement path\n nodes,\n );\n } else {\n throw new Error(\n \"We don't know what to do with this node type. \" +\n \"We were previously a Statement but we can't fit in here?\",\n );\n }\n}\n\nexport function _containerInsert<N extends t.Node>(\n this: NodePath,\n from: number,\n nodes: N[],\n): NodePath<N>[] {\n updateSiblingKeys.call(this, from, nodes.length);\n\n const paths: NodePath<N>[] = [];\n\n // @ts-expect-error todo(flow->ts): this.container could be a NodePath\n this.container.splice(from, 0, ...nodes);\n for (let i = 0; i < nodes.length; i++) {\n const to = from + i;\n const path = this.getSibling(to) as NodePath<N>;\n paths.push(path);\n\n if (this.context?.queue) {\n pushContext.call(path, this.context);\n }\n }\n\n const contexts = _getQueueContexts.call(this);\n\n for (const path of paths) {\n setScope.call(path);\n path.debug(\"Inserted.\");\n\n for (const context of contexts) {\n context.maybeQueue(path, true);\n }\n }\n\n return paths;\n}\n\nexport function _containerInsertBefore<N extends t.Node>(\n this: NodePath,\n nodes: N[],\n) {\n return _containerInsert.call(this, this.key as number, nodes);\n}\n\nexport function _containerInsertAfter<N extends t.Node>(\n this: NodePath,\n nodes: N[],\n) {\n return _containerInsert.call(this, (this.key as number) + 1, nodes);\n}\n\nconst last = <T>(arr: T[]) => arr[arr.length - 1];\n\nfunction isHiddenInSequenceExpression(path: NodePath): boolean {\n return (\n isSequenceExpression(path.parent) &&\n (last(path.parent.expressions) !== path.node ||\n isHiddenInSequenceExpression(path.parentPath))\n );\n}\n\nfunction isAlmostConstantAssignment(\n node: t.Node,\n scope: Scope,\n): node is t.AssignmentExpression & { left: t.Identifier } {\n if (!isAssignmentExpression(node) || !isIdentifier(node.left)) {\n return false;\n }\n\n // Not every scope can contain variables. For example, we might be in\n // a ClassScope either in the ClassHeritage or in a computed key.\n const blockScope = scope.getBlockParent();\n\n // If the variable is defined in the current scope and only assigned here,\n // we can be sure that its value won't change.\n return (\n blockScope.hasOwnBinding(node.left.name) &&\n blockScope.getOwnBinding(node.left.name).constantViolations.length <= 1\n );\n}\n\n/**\n * Insert the provided nodes after the current one. When inserting nodes after an\n * expression, ensure that the completion record is correct by pushing the current node.\n */\n\nexport function insertAfter(\n this: NodePath,\n nodes_: t.Node | t.Node[],\n): NodePath[] {\n _assertUnremoved.call(this);\n\n if (this.isSequenceExpression()) {\n return last(this.get(\"expressions\")).insertAfter(nodes_);\n }\n\n const nodes = _verifyNodeList.call(this, nodes_);\n\n const { parentPath, parent } = this;\n if (\n parentPath.isExpressionStatement() ||\n parentPath.isLabeledStatement() ||\n // see insertBefore\n isExportNamedDeclaration(parent) ||\n (parentPath.isExportDefaultDeclaration() && this.isDeclaration())\n ) {\n return parentPath.insertAfter(\n nodes.map(node => {\n // Usually after an expression we can safely insert another expression:\n // A.insertAfter(B)\n // foo = A; -> foo = (A, B);\n // If A is an expression statement, it isn't safe anymore so we need to\n // convert B to an expression statement\n // A; -> A; B // No semicolon! It could break if followed by [!\n return isExpression(node) ? expressionStatement(node) : node;\n }),\n );\n } else if (\n (this.isNodeType(\"Expression\") &&\n !this.isJSXElement() &&\n !parentPath.isJSXElement()) ||\n (parentPath.isForStatement() && this.key === \"init\")\n ) {\n const self = this as NodePath<t.Expression | t.VariableDeclaration>;\n if (self.node) {\n const node = self.node;\n let { scope } = this;\n\n if (scope.path.isPattern()) {\n assertExpression(node);\n\n self.replaceWith(callExpression(arrowFunctionExpression([], node), []));\n (self.get(\"callee.body\") as NodePath<t.Expression>).insertAfter(nodes);\n return [self];\n }\n\n if (isHiddenInSequenceExpression(self)) {\n nodes.unshift(node);\n }\n // We need to preserve the value of this expression.\n else if (isCallExpression(node) && isSuper(node.callee)) {\n nodes.unshift(node);\n // `super(...)` always evaluates to `this`.\n nodes.push(thisExpression());\n } else if (isAlmostConstantAssignment(node, scope)) {\n nodes.unshift(node);\n nodes.push(cloneNode(node.left));\n } else if (scope.isPure(node, true)) {\n // Insert the nodes before rather than after; it's not observable.\n nodes.push(node);\n } else {\n // Inserting after the computed key of a method should insert the\n // temporary binding in the method's parent's scope.\n if (parentPath.isMethod({ computed: true, key: node })) {\n scope = scope.parent;\n }\n const temp = scope.generateDeclaredUidIdentifier();\n nodes.unshift(\n expressionStatement(\n // @ts-expect-error todo(flow->ts): This can be a variable\n // declaration in the \"init\" of a for statement, but that's\n // invalid here.\n assignmentExpression(\"=\", cloneNode(temp), node),\n ),\n );\n nodes.push(expressionStatement(cloneNode(temp)));\n }\n }\n // @ts-expect-error todo(flow->ts): check that nodes is an array of statements\n return this.replaceExpressionWithStatements(nodes);\n } else if (Array.isArray(this.container)) {\n return _containerInsertAfter.call(this, nodes);\n } else if (this.isStatementOrBlock()) {\n const node = this.node as t.Statement;\n const shouldInsertCurrentNode =\n node &&\n (!this.isExpressionStatement() ||\n (node as t.ExpressionStatement).expression != null);\n\n this.replaceWith(blockStatement(shouldInsertCurrentNode ? [node] : []));\n // @ts-expect-error Fixme: refine nodes to t.BlockStatement[\"body\"] when this is a BlockStatement path\n return this.pushContainer(\"body\", nodes);\n } else {\n throw new Error(\n \"We don't know what to do with this node type. \" +\n \"We were previously a Statement but we can't fit in here?\",\n );\n }\n}\n\n/**\n * Update all sibling node paths after `fromIndex` by `incrementBy`.\n */\n\nexport function updateSiblingKeys(\n this: NodePath,\n fromIndex: number,\n incrementBy: number,\n) {\n if (!this.parent) return;\n\n const paths = getCachedPaths(this.hub, this.parent) || ([] as never[]);\n\n for (const [, path] of paths) {\n if (\n typeof path.key === \"number\" &&\n path.container === this.container &&\n path.key >= fromIndex\n ) {\n path.key += incrementBy;\n }\n }\n}\n\nexport function _verifyNodeList<N extends t.Node>(\n this: NodePath,\n nodes: N | N[],\n): N[] {\n if (!nodes) {\n return [];\n }\n\n if (!Array.isArray(nodes)) {\n nodes = [nodes];\n }\n\n for (let i = 0; i < nodes.length; i++) {\n const node = nodes[i];\n let msg;\n\n if (!node) {\n msg = \"has falsy node\";\n } else if (typeof node !== \"object\") {\n msg = \"contains a non-object node\";\n } else if (!node.type) {\n msg = \"without a type\";\n } else if (node instanceof NodePath) {\n msg = \"has a NodePath when it expected a raw object\";\n }\n\n if (msg) {\n const type = Array.isArray(node) ? \"array\" : typeof node;\n throw new Error(\n `Node list ${msg} with the index of ${i} and type of ${type}`,\n );\n }\n }\n\n return nodes;\n}\n\nexport function unshiftContainer<N extends t.Node, K extends keyof N & string>(\n this: NodePath<N>,\n listKey: K,\n nodes: N[K] extends (infer E)[]\n ? E | E[]\n : // todo: refine to t.Node[]\n // ? E extends t.Node\n // ? E | E[]\n // : never\n never,\n) {\n // todo: NodePaths<Nodes>\n _assertUnremoved.call(this);\n\n // @ts-expect-error fixme\n nodes = _verifyNodeList.call(this, nodes);\n\n // get the first path and insert our nodes before it, if it doesn't exist then it\n // doesn't matter, our nodes will be inserted anyway\n const path = NodePath.get({\n parentPath: this,\n parent: this.node,\n container: (this.node as N)[listKey] as unknown as t.Node | t.Node[],\n listKey,\n key: 0,\n }).setContext(this.context);\n\n return _containerInsertBefore.call(\n path,\n // @ts-expect-error typings needed to narrow down nodes as t.Node[]\n nodes,\n );\n}\n\nexport function pushContainer<\n P extends NodePath,\n K extends string & keyof P[\"node\"],\n>(\n this: P,\n listKey: K,\n nodes: P[\"node\"][K] extends (infer E)[]\n ? E | E[]\n : // todo: refine to t.Node[]\n // ? E extends t.Node\n // ? E | E[]\n // : never\n never,\n) {\n _assertUnremoved.call(this);\n\n const verifiedNodes = _verifyNodeList.call(\n this,\n // @ts-expect-error refine typings\n nodes,\n );\n\n // get an invisible path that represents the last node + 1 and replace it with our\n // nodes, effectively inlining it\n\n const container = (this.node as P[\"node\"])[listKey] as t.Node[];\n const path = NodePath.get({\n parentPath: this,\n parent: this.node,\n container: container as unknown as t.Node | t.Node[],\n listKey,\n key: container.length,\n }).setContext(this.context);\n\n return path.replaceWithMultiple(verifiedNodes);\n}\n\nimport PathHoister from \"./lib/hoister.ts\" with { if: \"!process.env.BABEL_8_BREAKING && !USE_ESM\" };\nif (!process.env.BABEL_8_BREAKING && !USE_ESM) {\n /**\n * Hoist the current node to the highest scope possible and return a UID\n * referencing it.\n */\n // eslint-disable-next-line no-restricted-globals\n exports.hoist = function hoist<T extends t.Node>(\n this: NodePath<T>,\n scope: Scope = this.scope,\n ) {\n const hoister = new PathHoister<T>(this, scope);\n return hoister.run();\n };\n}\n","// This file contains methods responsible for replacing a node with another.\n\nimport { codeFrameColumns } from \"@babel/code-frame\";\nimport traverse from \"../index.ts\";\nimport NodePath from \"./index.ts\";\nimport { getCachedPaths } from \"../cache.ts\";\nimport { _verifyNodeList, _containerInsertAfter } from \"./modification.ts\";\nimport { parse } from \"@babel/parser\";\nimport {\n FUNCTION_TYPES,\n arrowFunctionExpression,\n assignmentExpression,\n awaitExpression,\n blockStatement,\n buildUndefinedNode,\n callExpression,\n cloneNode,\n conditionalExpression,\n expressionStatement,\n getBindingIdentifiers,\n identifier,\n inheritLeadingComments,\n inheritTrailingComments,\n inheritsComments,\n isBlockStatement,\n isEmptyStatement,\n isExpression,\n isExpressionStatement,\n isIfStatement,\n isProgram,\n isStatement,\n isVariableDeclaration,\n removeComments,\n returnStatement,\n sequenceExpression,\n validate,\n yieldExpression,\n} from \"@babel/types\";\nimport type * as t from \"@babel/types\";\nimport { resync, setScope } from \"./context.ts\";\n\n/**\n * Replace a node with an array of multiple. This method performs the following steps:\n *\n * - Inherit the comments of first provided node with that of the current node.\n * - Insert the provided nodes after the current node.\n * - Remove the current node.\n */\n\nexport function replaceWithMultiple(\n this: NodePath,\n nodes: t.Node | t.Node[],\n): NodePath[] {\n resync.call(this);\n\n nodes = _verifyNodeList.call(this, nodes);\n inheritLeadingComments(nodes[0], this.node);\n inheritTrailingComments(nodes[nodes.length - 1], this.node);\n getCachedPaths(this.hub, this.parent)?.delete(this.node);\n this.node =\n // @ts-expect-error this.key must present in this.container\n this.container[this.key] = null;\n const paths = this.insertAfter(nodes);\n\n if (this.node) {\n this.requeue();\n } else {\n this.remove();\n }\n return paths;\n}\n\n/**\n * Parse a string as an expression and replace the current node with the result.\n *\n * NOTE: This is typically not a good idea to use. Building source strings when\n * transforming ASTs is an antipattern and SHOULD NOT be encouraged. Even if it's\n * easier to use, your transforms will be extremely brittle.\n */\n\nexport function replaceWithSourceString(this: NodePath, replacement: string) {\n resync.call(this);\n let ast: t.File;\n\n try {\n replacement = `(${replacement})`;\n ast = parse(replacement);\n } catch (err) {\n const loc = err.loc;\n if (loc) {\n err.message +=\n \" - make sure this is an expression.\\n\" +\n codeFrameColumns(replacement, {\n start: {\n line: loc.line,\n column: loc.column + 1,\n },\n });\n err.code = \"BABEL_REPLACE_SOURCE_ERROR\";\n }\n throw err;\n }\n\n const expressionAST = (ast.program.body[0] as t.ExpressionStatement)\n .expression;\n traverse.removeProperties(expressionAST);\n return this.replaceWith(expressionAST);\n}\n\n/**\n * Replace the current node with another.\n */\nexport function replaceWith<R extends t.Node>(\n this: NodePath,\n replacementPath: R,\n): [NodePath<R>];\nexport function replaceWith<R extends NodePath>(\n this: NodePath,\n replacementPath: R,\n): [R];\nexport function replaceWith(\n this: NodePath,\n replacementPath: t.Node | NodePath,\n): [NodePath] {\n resync.call(this);\n\n if (this.removed) {\n throw new Error(\"You can't replace this node, we've already removed it\");\n }\n\n let replacement: t.Node =\n replacementPath instanceof NodePath\n ? replacementPath.node\n : replacementPath;\n\n if (!replacement) {\n throw new Error(\n \"You passed `path.replaceWith()` a falsy node, use `path.remove()` instead\",\n );\n }\n\n if (this.node === replacement) {\n return [this];\n }\n\n if (this.isProgram() && !isProgram(replacement)) {\n throw new Error(\n \"You can only replace a Program root node with another Program node\",\n );\n }\n\n if (Array.isArray(replacement)) {\n throw new Error(\n \"Don't use `path.replaceWith()` with an array of nodes, use `path.replaceWithMultiple()`\",\n );\n }\n\n if (typeof replacement === \"string\") {\n throw new Error(\n \"Don't use `path.replaceWith()` with a source string, use `path.replaceWithSourceString()`\",\n );\n }\n\n let nodePath = \"\";\n\n if (this.isNodeType(\"Statement\") && isExpression(replacement)) {\n if (\n !this.canHaveVariableDeclarationOrExpression() &&\n !this.canSwapBetweenExpressionAndStatement(replacement) &&\n !this.parentPath.isExportDefaultDeclaration()\n ) {\n // replacing a statement with an expression so wrap it in an expression statement\n replacement = expressionStatement(replacement);\n nodePath = \"expression\";\n }\n }\n\n if (this.isNodeType(\"Expression\") && isStatement(replacement)) {\n if (\n !this.canHaveVariableDeclarationOrExpression() &&\n !this.canSwapBetweenExpressionAndStatement(replacement)\n ) {\n // replacing an expression with a statement so let's explode it\n return this.replaceExpressionWithStatements([replacement]) as [NodePath];\n }\n }\n\n const oldNode = this.node;\n if (oldNode) {\n inheritsComments(replacement, oldNode);\n removeComments(oldNode);\n }\n\n // replace the node\n _replaceWith.call(this, replacement);\n this.type = replacement.type;\n\n // potentially create new scope\n setScope.call(this);\n\n // requeue for visiting\n this.requeue();\n\n return [nodePath ? this.get(nodePath) : this];\n}\n\nexport function _replaceWith(this: NodePath, node: t.Node) {\n if (!this.container) {\n throw new ReferenceError(\"Container is falsy\");\n }\n\n if (this.inList) {\n // @ts-expect-error todo(flow->ts): check if validate accepts a numeric key\n validate(this.parent, this.key, [node]);\n } else {\n validate(this.parent, this.key as string, node);\n }\n\n this.debug(`Replace with ${node?.type}`);\n getCachedPaths(this.hub, this.parent)?.set(node, this).delete(this.node);\n\n this.node =\n // @ts-expect-error this.key must present in this.container\n this.container[this.key] = node;\n}\n\n/**\n * This method takes an array of statements nodes and then explodes it\n * into expressions. This method retains completion records which is\n * extremely important to retain original semantics.\n */\n\nexport function replaceExpressionWithStatements(\n this: NodePath,\n nodes: Array<t.Statement>,\n) {\n resync.call(this);\n\n const declars: t.Identifier[] = [];\n const nodesAsSingleExpression = gatherSequenceExpressions(nodes, declars);\n if (nodesAsSingleExpression) {\n for (const id of declars) this.scope.push({ id });\n return this.replaceWith(nodesAsSingleExpression)[0].get(\"expressions\");\n }\n\n const functionParent = this.getFunctionParent();\n const isParentAsync = functionParent?.node.async;\n const isParentGenerator = functionParent?.node.generator;\n\n const container = arrowFunctionExpression([], blockStatement(nodes));\n\n this.replaceWith(callExpression(container, []));\n // replaceWith changes the type of \"this\", but it isn't trackable by TS\n type ThisType = NodePath<\n t.CallExpression & {\n callee: t.ArrowFunctionExpression & { body: t.BlockStatement };\n }\n >;\n\n // hoist variable declaration in do block\n // `(do { var x = 1; x;})` -> `var x; (() => { x = 1; return x; })()`\n const callee = (this as ThisType).get(\"callee\");\n callee.get(\"body\").scope.hoistVariables(id => this.scope.push({ id }));\n\n // add implicit returns to all ending expression statements\n const completionRecords: Array<NodePath> = callee.getCompletionRecords();\n for (const path of completionRecords) {\n if (!path.isExpressionStatement()) continue;\n\n const loop = path.findParent(path => path.isLoop());\n if (loop) {\n let uid = loop.getData(\"expressionReplacementReturnUid\");\n\n if (!uid) {\n uid = callee.scope.generateDeclaredUidIdentifier(\"ret\");\n callee\n .get(\"body\")\n .pushContainer(\"body\", returnStatement(cloneNode(uid)));\n loop.setData(\"expressionReplacementReturnUid\", uid);\n } else {\n uid = identifier(uid.name);\n }\n\n path\n .get(\"expression\")\n .replaceWith(\n assignmentExpression(\"=\", cloneNode(uid), path.node.expression),\n );\n } else {\n path.replaceWith(returnStatement(path.node.expression));\n }\n }\n\n // This is an IIFE, so we don't need to worry about the noNewArrows assumption\n callee.arrowFunctionToExpression();\n // Fixme: we can not `assert this is NodePath<t.FunctionExpression>` in `arrowFunctionToExpression`\n // because it is not a class method known at compile time.\n const newCallee = callee as unknown as NodePath<t.FunctionExpression>;\n\n // (() => await xxx)() -> await (async () => await xxx)();\n const needToAwaitFunction =\n isParentAsync &&\n traverse.hasType(\n (this.get(\"callee.body\") as NodePath<t.BlockStatement>).node,\n \"AwaitExpression\",\n FUNCTION_TYPES,\n );\n const needToYieldFunction =\n isParentGenerator &&\n traverse.hasType(\n (this.get(\"callee.body\") as NodePath<t.BlockStatement>).node,\n \"YieldExpression\",\n FUNCTION_TYPES,\n );\n if (needToAwaitFunction) {\n newCallee.set(\"async\", true);\n // yield* will await the generator return result\n if (!needToYieldFunction) {\n this.replaceWith(awaitExpression((this as ThisType).node));\n }\n }\n if (needToYieldFunction) {\n newCallee.set(\"generator\", true);\n this.replaceWith(yieldExpression((this as ThisType).node, true));\n }\n\n return newCallee.get(\"body.body\");\n}\n\nfunction gatherSequenceExpressions(\n nodes: ReadonlyArray<t.Node>,\n declars: Array<t.Identifier>,\n) {\n const exprs: t.Expression[] = [];\n let ensureLastUndefined = true;\n\n for (const node of nodes) {\n // if we encounter emptyStatement before a non-emptyStatement\n // we want to disregard that\n if (!isEmptyStatement(node)) {\n ensureLastUndefined = false;\n }\n\n if (isExpression(node)) {\n exprs.push(node);\n } else if (isExpressionStatement(node)) {\n exprs.push(node.expression);\n } else if (isVariableDeclaration(node)) {\n if (node.kind !== \"var\") return; // bailed\n\n for (const declar of node.declarations) {\n const bindings = getBindingIdentifiers(declar);\n for (const key of Object.keys(bindings)) {\n declars.push(cloneNode(bindings[key]));\n }\n\n if (declar.init) {\n exprs.push(assignmentExpression(\"=\", declar.id, declar.init));\n }\n }\n\n ensureLastUndefined = true;\n } else if (isIfStatement(node)) {\n const consequent = node.consequent\n ? gatherSequenceExpressions([node.consequent], declars)\n : buildUndefinedNode();\n const alternate = node.alternate\n ? gatherSequenceExpressions([node.alternate], declars)\n : buildUndefinedNode();\n if (!consequent || !alternate) return; // bailed\n\n exprs.push(conditionalExpression(node.test, consequent, alternate));\n } else if (isBlockStatement(node)) {\n const body = gatherSequenceExpressions(node.body, declars);\n if (!body) return; // bailed\n\n exprs.push(body);\n } else if (isEmptyStatement(node)) {\n // empty statement so ensure the last item is undefined if we're last\n // checks if emptyStatement is first\n if (nodes.indexOf(node) === 0) {\n ensureLastUndefined = true;\n }\n } else {\n // bailed, we can't turn this statement into an expression\n return;\n }\n }\n\n if (ensureLastUndefined) exprs.push(buildUndefinedNode());\n\n if (exprs.length === 1) {\n return exprs[0];\n } else {\n return sequenceExpression(exprs);\n }\n}\n\nexport function replaceInline(this: NodePath, nodes: t.Node | Array<t.Node>) {\n resync.call(this);\n\n if (Array.isArray(nodes)) {\n if (Array.isArray(this.container)) {\n nodes = _verifyNodeList.call(this, nodes);\n const paths = _containerInsertAfter.call(this, nodes);\n this.remove();\n return paths;\n } else {\n return this.replaceWithMultiple(nodes);\n }\n } else {\n return this.replaceWith(nodes);\n }\n}\n","import type NodePath from \"./index.ts\";\nimport type * as t from \"@babel/types\";\n\n// This file contains Babels metainterpreter that can evaluate static code.\n\nconst VALID_OBJECT_CALLEES = [\"Number\", \"String\", \"Math\"] as const;\nconst VALID_IDENTIFIER_CALLEES = [\n \"isFinite\",\n \"isNaN\",\n \"parseFloat\",\n \"parseInt\",\n \"decodeURI\",\n \"decodeURIComponent\",\n \"encodeURI\",\n \"encodeURIComponent\",\n process.env.BABEL_8_BREAKING ? \"btoa\" : null,\n process.env.BABEL_8_BREAKING ? \"atob\" : null,\n] as const;\n\nconst INVALID_METHODS = [\"random\"] as const;\n\nfunction isValidObjectCallee(\n val: string,\n): val is (typeof VALID_OBJECT_CALLEES)[number] {\n return VALID_OBJECT_CALLEES.includes(\n // @ts-expect-error val is a string\n val,\n );\n}\n\nfunction isValidIdentifierCallee(\n val: string,\n): val is (typeof VALID_IDENTIFIER_CALLEES)[number] {\n return VALID_IDENTIFIER_CALLEES.includes(\n // @ts-expect-error val is a string\n val,\n );\n}\n\nfunction isInvalidMethod(val: string): val is (typeof INVALID_METHODS)[number] {\n return INVALID_METHODS.includes(\n // @ts-expect-error val is a string\n val,\n );\n}\n\n/**\n * Walk the input `node` and statically evaluate if it's truthy.\n *\n * Returning `true` when we're sure that the expression will evaluate to a\n * truthy value, `false` if we're sure that it will evaluate to a falsy\n * value and `undefined` if we aren't sure. Because of this please do not\n * rely on coercion when using this method and check with === if it's false.\n *\n * For example do:\n *\n * if (t.evaluateTruthy(node) === false) falsyLogic();\n *\n * **AND NOT**\n *\n * if (!t.evaluateTruthy(node)) falsyLogic();\n *\n */\n\nexport function evaluateTruthy(this: NodePath): boolean {\n const res = this.evaluate();\n if (res.confident) return !!res.value;\n}\n\ntype State = {\n confident: boolean;\n deoptPath: NodePath | null;\n seen: Map<t.Node, Result>;\n};\n\ntype Result = {\n resolved: boolean;\n value?: any;\n};\n/**\n * Deopts the evaluation\n */\nfunction deopt(path: NodePath, state: State) {\n if (!state.confident) return;\n state.deoptPath = path;\n state.confident = false;\n}\n\nconst Globals = new Map([\n [\"undefined\", undefined],\n [\"Infinity\", Infinity],\n [\"NaN\", NaN],\n]);\n\n/**\n * We wrap the _evaluate method so we can track `seen` nodes, we push an item\n * to the map before we actually evaluate it so we can deopt on self recursive\n * nodes such as:\n *\n * var g = a ? 1 : 2,\n * a = g * this.foo\n */\nfunction evaluateCached(path: NodePath, state: State): any {\n const { node } = path;\n const { seen } = state;\n\n if (seen.has(node)) {\n const existing = seen.get(node);\n if (existing.resolved) {\n return existing.value;\n } else {\n deopt(path, state);\n return;\n }\n } else {\n const item: Result = { resolved: false };\n seen.set(node, item);\n\n const val = _evaluate(path, state);\n if (state.confident) {\n item.resolved = true;\n item.value = val;\n }\n return val;\n }\n}\n\nfunction _evaluate(path: NodePath, state: State): any {\n if (!state.confident) return;\n\n if (path.isSequenceExpression()) {\n const exprs = path.get(\"expressions\");\n return evaluateCached(exprs[exprs.length - 1], state);\n }\n\n if (\n path.isStringLiteral() ||\n path.isNumericLiteral() ||\n path.isBooleanLiteral()\n ) {\n return path.node.value;\n }\n\n if (path.isNullLiteral()) {\n return null;\n }\n\n if (path.isTemplateLiteral()) {\n return evaluateQuasis(path, path.node.quasis, state);\n }\n\n if (\n path.isTaggedTemplateExpression() &&\n path.get(\"tag\").isMemberExpression()\n ) {\n const object = path.get(\"tag.object\") as NodePath;\n const {\n // @ts-expect-error todo(flow->ts): possible bug, object is can be any expression and so name might be undefined\n node: { name },\n } = object;\n const property = path.get(\"tag.property\") as NodePath;\n\n if (\n object.isIdentifier() &&\n name === \"String\" &&\n // todo(flow->ts): was changed from getBinding(name, true)\n // should this be hasBinding(name, true) as the binding is never used later?\n !path.scope.getBinding(name) &&\n property.isIdentifier() &&\n property.node.name === \"raw\"\n ) {\n return evaluateQuasis(path, path.node.quasi.quasis, state, true);\n }\n }\n\n if (path.isConditionalExpression()) {\n const testResult = evaluateCached(path.get(\"test\"), state);\n if (!state.confident) return;\n if (testResult) {\n return evaluateCached(path.get(\"consequent\"), state);\n } else {\n return evaluateCached(path.get(\"alternate\"), state);\n }\n }\n\n if (path.isExpressionWrapper()) {\n // TypeCastExpression, ExpressionStatement etc\n return evaluateCached(path.get(\"expression\"), state);\n }\n\n // \"foo\".length, \"foo\"[0]\n if (\n path.isMemberExpression() &&\n !path.parentPath.isCallExpression({ callee: path.node })\n ) {\n const property = path.get(\"property\");\n const object = path.get(\"object\");\n\n if (object.isLiteral()) {\n // @ts-expect-error todo(flow->ts): instead of typeof - would it be better to check type of ast node?\n const value = object.node.value;\n const type = typeof value;\n\n let key = null;\n if (path.node.computed) {\n key = evaluateCached(property, state);\n if (!state.confident) return;\n } else if (property.isIdentifier()) {\n key = property.node.name;\n }\n if (\n (type === \"number\" || type === \"string\") &&\n key != null &&\n (typeof key === \"number\" || typeof key === \"string\")\n ) {\n return value[key];\n }\n }\n }\n\n if (path.isReferencedIdentifier()) {\n const binding = path.scope.getBinding(path.node.name);\n\n if (binding) {\n if (\n binding.constantViolations.length > 0 ||\n path.node.start < binding.path.node.end\n ) {\n deopt(binding.path, state);\n return;\n }\n const bindingPathScope = binding.path.scope;\n if (binding.kind === \"var\" && bindingPathScope !== binding.scope) {\n let hasUnsafeBlock =\n !bindingPathScope.path.parentPath.isBlockStatement();\n for (let scope = bindingPathScope.parent; scope; scope = scope.parent) {\n if (scope === path.scope) {\n if (hasUnsafeBlock) {\n deopt(binding.path, state);\n return;\n }\n break;\n }\n if (scope.path.parentPath?.isBlockStatement()) {\n hasUnsafeBlock = true;\n }\n }\n }\n if (binding.hasValue) {\n return binding.value;\n }\n }\n\n const name = path.node.name;\n if (Globals.has(name)) {\n if (!binding) {\n return Globals.get(name);\n }\n deopt(binding.path, state);\n return;\n }\n\n const resolved = path.resolve();\n if (resolved === path) {\n deopt(path, state);\n return;\n } else {\n return evaluateCached(resolved, state);\n }\n }\n\n if (path.isUnaryExpression({ prefix: true })) {\n if (path.node.operator === \"void\") {\n // we don't need to evaluate the argument to know what this will return\n return undefined;\n }\n\n const argument = path.get(\"argument\");\n if (\n path.node.operator === \"typeof\" &&\n (argument.isFunction() || argument.isClass())\n ) {\n return \"function\";\n }\n\n const arg = evaluateCached(argument, state);\n if (!state.confident) return;\n switch (path.node.operator) {\n case \"!\":\n return !arg;\n case \"+\":\n return +arg;\n case \"-\":\n return -arg;\n case \"~\":\n return ~arg;\n case \"typeof\":\n return typeof arg;\n }\n }\n\n if (path.isArrayExpression()) {\n const arr = [];\n const elems: Array<NodePath> = path.get(\"elements\");\n for (const elem of elems) {\n const elemValue = elem.evaluate();\n\n if (elemValue.confident) {\n arr.push(elemValue.value);\n } else {\n deopt(elemValue.deopt, state);\n return;\n }\n }\n return arr;\n }\n\n if (path.isObjectExpression()) {\n const obj = {};\n const props = path.get(\"properties\");\n for (const prop of props) {\n if (prop.isObjectMethod() || prop.isSpreadElement()) {\n deopt(prop, state);\n return;\n }\n const keyPath = prop.get(\"key\");\n let key;\n if (prop.node.computed) {\n key = keyPath.evaluate();\n if (!key.confident) {\n deopt(key.deopt, state);\n return;\n }\n key = key.value;\n } else if (keyPath.isIdentifier()) {\n key = keyPath.node.name;\n } else {\n key = (\n keyPath.node as t.StringLiteral | t.NumericLiteral | t.BigIntLiteral\n ).value;\n }\n const valuePath = prop.get(\"value\");\n let value = valuePath.evaluate();\n if (!value.confident) {\n deopt(value.deopt, state);\n return;\n }\n value = value.value;\n // @ts-expect-error key is any type\n obj[key] = value;\n }\n return obj;\n }\n\n if (path.isLogicalExpression()) {\n // If we are confident that the left side of an && is false, or the left\n // side of an || is true, we can be confident about the entire expression\n const wasConfident = state.confident;\n const left = evaluateCached(path.get(\"left\"), state);\n const leftConfident = state.confident;\n state.confident = wasConfident;\n const right = evaluateCached(path.get(\"right\"), state);\n const rightConfident = state.confident;\n\n switch (path.node.operator) {\n case \"||\":\n // TODO consider having a \"truthy type\" that doesn't bail on\n // left uncertainty but can still evaluate to truthy.\n state.confident = leftConfident && (!!left || rightConfident);\n if (!state.confident) return;\n\n return left || right;\n case \"&&\":\n state.confident = leftConfident && (!left || rightConfident);\n if (!state.confident) return;\n\n return left && right;\n case \"??\":\n state.confident = leftConfident && (left != null || rightConfident);\n if (!state.confident) return;\n\n return left ?? right;\n }\n }\n\n if (path.isBinaryExpression()) {\n const left = evaluateCached(path.get(\"left\"), state);\n if (!state.confident) return;\n const right = evaluateCached(path.get(\"right\"), state);\n if (!state.confident) return;\n\n switch (path.node.operator) {\n case \"-\":\n return left - right;\n case \"+\":\n return left + right;\n case \"/\":\n return left / right;\n case \"*\":\n return left * right;\n case \"%\":\n return left % right;\n case \"**\":\n return left ** right;\n case \"<\":\n return left < right;\n case \">\":\n return left > right;\n case \"<=\":\n return left <= right;\n case \">=\":\n return left >= right;\n case \"==\":\n return left == right; // eslint-disable-line eqeqeq\n case \"!=\":\n return left != right; // eslint-disable-line eqeqeq\n case \"===\":\n return left === right;\n case \"!==\":\n return left !== right;\n case \"|\":\n return left | right;\n case \"&\":\n return left & right;\n case \"^\":\n return left ^ right;\n case \"<<\":\n return left << right;\n case \">>\":\n return left >> right;\n case \">>>\":\n return left >>> right;\n }\n }\n\n if (path.isCallExpression()) {\n const callee = path.get(\"callee\");\n let context;\n let func;\n\n // Number(1);\n if (\n callee.isIdentifier() &&\n !path.scope.getBinding(callee.node.name) &&\n (isValidObjectCallee(callee.node.name) ||\n isValidIdentifierCallee(callee.node.name))\n ) {\n func = global[callee.node.name];\n }\n\n if (callee.isMemberExpression()) {\n const object = callee.get(\"object\");\n const property = callee.get(\"property\");\n\n // Math.min(1, 2)\n if (\n object.isIdentifier() &&\n property.isIdentifier() &&\n isValidObjectCallee(object.node.name) &&\n !isInvalidMethod(property.node.name)\n ) {\n context = global[object.node.name];\n const key = property.node.name;\n if (Object.hasOwn(context, key)) {\n func = context[key as keyof typeof context];\n }\n }\n\n // \"abc\".charCodeAt(4)\n if (object.isLiteral() && property.isIdentifier()) {\n // @ts-expect-error todo(flow->ts): consider checking ast node type instead of value type (StringLiteral and NumberLiteral)\n const type = typeof object.node.value;\n if (type === \"string\" || type === \"number\") {\n // @ts-expect-error todo(flow->ts): consider checking ast node type instead of value type\n context = object.node.value;\n func = context[property.node.name];\n }\n }\n }\n\n if (func) {\n const args = path.get(\"arguments\").map(arg => evaluateCached(arg, state));\n if (!state.confident) return;\n\n return func.apply(context, args);\n }\n }\n\n deopt(path, state);\n}\n\nfunction evaluateQuasis(\n path: NodePath<t.TaggedTemplateExpression | t.TemplateLiteral>,\n quasis: Array<any>,\n state: State,\n raw = false,\n) {\n let str = \"\";\n\n let i = 0;\n const exprs: Array<NodePath<t.Node>> = path.isTemplateLiteral()\n ? path.get(\"expressions\")\n : path.get(\"quasi.expressions\");\n\n for (const elem of quasis) {\n // not confident, evaluated an expression we don't like\n if (!state.confident) break;\n\n // add on element\n str += raw ? elem.value.raw : elem.value.cooked;\n\n // add on interpolated expression if it's present\n const expr = exprs[i++];\n if (expr) str += String(evaluateCached(expr, state));\n }\n\n if (!state.confident) return;\n return str;\n}\n\n/**\n * Walk the input `node` and statically evaluate it.\n *\n * Returns an object in the form `{ confident, value, deopt }`. `confident`\n * indicates whether or not we had to drop out of evaluating the expression\n * because of hitting an unknown node that we couldn't confidently find the\n * value of, in which case `deopt` is the path of said node.\n *\n * Example:\n *\n * t.evaluate(parse(\"5 + 5\")) // { confident: true, value: 10 }\n * t.evaluate(parse(\"!true\")) // { confident: true, value: false }\n * t.evaluate(parse(\"foo + foo\")) // { confident: false, value: undefined, deopt: NodePath }\n *\n */\n\nexport function evaluate(this: NodePath): {\n confident: boolean;\n value: any;\n deopt?: NodePath;\n} {\n const state: State = {\n confident: true,\n deoptPath: null,\n seen: new Map(),\n };\n let value = evaluateCached(this, state);\n if (!state.confident) value = undefined;\n\n return {\n confident: state.confident,\n deopt: state.deoptPath,\n value: value,\n };\n}\n","// This file contains methods that convert the path node into another node or some other type of data.\n\nimport {\n arrowFunctionExpression,\n assignmentExpression,\n binaryExpression,\n blockStatement,\n callExpression,\n conditionalExpression,\n expressionStatement,\n identifier,\n isIdentifier,\n jsxIdentifier,\n logicalExpression,\n LOGICAL_OPERATORS,\n memberExpression,\n metaProperty,\n numericLiteral,\n objectExpression,\n restElement,\n returnStatement,\n sequenceExpression,\n spreadElement,\n stringLiteral,\n super as _super,\n thisExpression,\n toExpression,\n unaryExpression,\n toBindingIdentifierName,\n isFunction,\n isAssignmentPattern,\n isRestElement,\n getFunctionName,\n cloneNode,\n variableDeclaration,\n variableDeclarator,\n exportNamedDeclaration,\n exportSpecifier,\n inherits,\n} from \"@babel/types\";\nimport type * as t from \"@babel/types\";\nimport template from \"@babel/template\";\nimport { environmentVisitor } from \"../visitors.ts\";\nimport type NodePath from \"./index.ts\";\nimport type { Visitor } from \"../types.ts\";\nimport { setup } from \"./context.ts\";\n\nexport function toComputedKey(this: NodePath) {\n let key;\n if (this.isMemberExpression()) {\n key = this.node.property;\n } else if (this.isProperty() || this.isMethod()) {\n key = this.node.key;\n } else {\n throw new ReferenceError(\"todo\");\n }\n\n // @ts-expect-error todo(flow->ts) computed does not exist in ClassPrivateProperty\n if (!this.node.computed) {\n if (isIdentifier(key)) key = stringLiteral(key.name);\n }\n\n return key;\n}\n\nexport function ensureBlock(\n this: NodePath<\n t.Loop | t.WithStatement | t.Function | t.LabeledStatement | t.CatchClause\n >,\n): void {\n const body = this.get(\"body\");\n const bodyNode = body.node;\n\n if (Array.isArray(body)) {\n throw new Error(\"Can't convert array path to a block statement\");\n }\n if (!bodyNode) {\n throw new Error(\"Can't convert node without a body\");\n }\n\n if (body.isBlockStatement()) {\n // @ts-expect-error TS throws because ensureBlock returns the body node path\n // however, we don't use the return value and treat it as a transform and\n // assertion utilities. For better type inference we annotate it as an\n // assertion method\n // TODO: Unify the implementation with the type definition\n return bodyNode;\n }\n\n const statements: Array<t.Statement> = [];\n\n let stringPath = \"body\";\n let key;\n let listKey;\n if (body.isStatement()) {\n listKey = \"body\";\n key = 0;\n statements.push(body.node);\n } else {\n stringPath += \".body.0\";\n if (this.isFunction()) {\n key = \"argument\";\n statements.push(returnStatement(body.node as t.Expression));\n } else {\n key = \"expression\";\n statements.push(expressionStatement(body.node as t.Expression));\n }\n }\n\n this.node.body = blockStatement(statements);\n const parentPath = this.get(stringPath) as NodePath;\n setup.call(\n body,\n parentPath,\n listKey\n ? // @ts-expect-error listKey must present in parent path\n parentPath.node[listKey]\n : parentPath.node,\n listKey,\n key,\n );\n\n // @ts-expect-error TS throws because ensureBlock returns the body node path\n // however, we don't use the return value and treat it as a transform and\n // assertion utilities. For better type inference we annotate it as an\n // assertion method\n // TODO: Unify the implementation with the type definition\n return this.node;\n}\n\nif (!process.env.BABEL_8_BREAKING && !USE_ESM) {\n /**\n * Keeping this for backward-compatibility. You should use arrowFunctionToExpression() for >=7.x.\n */\n // eslint-disable-next-line no-restricted-globals\n exports.arrowFunctionToShadowed = function (this: NodePath) {\n if (!this.isArrowFunctionExpression()) return;\n\n this.arrowFunctionToExpression();\n };\n}\n\n/**\n * Given an arbitrary function, process its content as if it were an arrow function, moving references\n * to \"this\", \"arguments\", \"super\", and such into the function's parent scope. This method is useful if\n * you have wrapped some set of items in an IIFE or other function, but want \"this\", \"arguments\", and super\"\n * to continue behaving as expected.\n */\nexport function unwrapFunctionEnvironment(this: NodePath) {\n if (\n !this.isArrowFunctionExpression() &&\n !this.isFunctionExpression() &&\n !this.isFunctionDeclaration()\n ) {\n throw this.buildCodeFrameError(\n \"Can only unwrap the environment of a function.\",\n );\n }\n\n hoistFunctionEnvironment(this);\n}\n\nfunction setType<N extends t.Node, T extends N[\"type\"]>(\n path: NodePath<N>,\n type: T,\n): asserts path is NodePath<Extract<N, { type: T }>> {\n path.node.type = type;\n}\n\n/**\n * Convert a given arrow function into a normal ES5 function expression.\n */\nexport function arrowFunctionToExpression(\n this: NodePath<t.ArrowFunctionExpression>,\n {\n allowInsertArrow = true,\n allowInsertArrowWithRest = allowInsertArrow,\n noNewArrows = process.env.BABEL_8_BREAKING\n ? // TODO(Babel 8): Consider defaulting to `false` for spec compliance\n true\n : !arguments[0]?.specCompliant,\n }: {\n allowInsertArrow?: boolean | void;\n allowInsertArrowWithRest?: boolean | void;\n noNewArrows?: boolean;\n } = {},\n): NodePath<\n Exclude<t.Function, t.Method | t.ArrowFunctionExpression> | t.CallExpression\n> {\n if (!this.isArrowFunctionExpression()) {\n throw (this as NodePath).buildCodeFrameError(\n \"Cannot convert non-arrow function to a function expression.\",\n );\n }\n\n let self = this;\n if (!noNewArrows) {\n // @ts-expect-error This is technicallynot valid on arrow functions\n // because it adds an .id property, but we are going to convert it\n // to a function expression anyway\n self = self.ensureFunctionName(false) ?? self;\n }\n\n const { thisBinding, fnPath: fn } = hoistFunctionEnvironment(\n self,\n noNewArrows,\n allowInsertArrow,\n allowInsertArrowWithRest,\n );\n\n fn.ensureBlock();\n setType(fn, \"FunctionExpression\");\n\n if (!noNewArrows) {\n const checkBinding = thisBinding\n ? null\n : fn.scope.generateUidIdentifier(\"arrowCheckId\");\n if (checkBinding) {\n fn.parentPath.scope.push({\n id: checkBinding,\n init: objectExpression([]),\n });\n }\n\n fn.get(\"body\").unshiftContainer(\n \"body\",\n expressionStatement(\n callExpression(this.hub.addHelper(\"newArrowCheck\"), [\n thisExpression(),\n checkBinding\n ? identifier(checkBinding.name)\n : identifier(thisBinding),\n ]),\n ),\n );\n\n fn.replaceWith(\n callExpression(memberExpression(fn.node, identifier(\"bind\")), [\n checkBinding ? identifier(checkBinding.name) : thisExpression(),\n ]),\n );\n\n return fn.get(\"callee.object\");\n }\n\n return fn;\n}\n\nconst getSuperCallsVisitor = environmentVisitor<{\n allSuperCalls: NodePath<t.CallExpression>[];\n}>({\n CallExpression(child, { allSuperCalls }) {\n if (!child.get(\"callee\").isSuper()) return;\n allSuperCalls.push(child);\n },\n});\n\n/**\n * Given a function, traverse its contents, and if there are references to \"this\", \"arguments\", \"super\",\n * or \"new.target\", ensure that these references reference the parent environment around this function.\n *\n * @returns `thisBinding`: the name of the injected reference to `this`; for example \"_this\"\n * @returns `fnPath`: the new path to the function node. This is different from the fnPath\n * parameter when the function node is wrapped in another node.\n */\nfunction hoistFunctionEnvironment(\n fnPath: NodePath<t.Function>,\n // TODO(Babel 8): Consider defaulting to `false` for spec compliance\n noNewArrows: boolean | void = true,\n allowInsertArrow: boolean | void = true,\n allowInsertArrowWithRest: boolean | void = true,\n): { thisBinding: string; fnPath: NodePath<t.Function> } {\n let arrowParent;\n let thisEnvFn: NodePath<t.Function> = fnPath.findParent(p => {\n if (p.isArrowFunctionExpression()) {\n arrowParent ??= p;\n return false;\n }\n return (\n p.isFunction() ||\n p.isProgram() ||\n p.isClassProperty({ static: false }) ||\n p.isClassPrivateProperty({ static: false })\n );\n }) as NodePath<t.Function>;\n const inConstructor = thisEnvFn.isClassMethod({ kind: \"constructor\" });\n\n if (thisEnvFn.isClassProperty() || thisEnvFn.isClassPrivateProperty()) {\n if (arrowParent) {\n thisEnvFn = arrowParent;\n } else if (allowInsertArrow) {\n // It's safe to wrap this function in another and not hoist to the\n // top level because the 'this' binding is constant in class\n // properties (since 'super()' has already been called), so we don't\n // need to capture/reassign it at the top level.\n fnPath.replaceWith(\n callExpression(\n arrowFunctionExpression([], toExpression(fnPath.node)),\n [],\n ),\n );\n thisEnvFn = fnPath.get(\"callee\") as NodePath<t.ArrowFunctionExpression>;\n fnPath = thisEnvFn.get(\"body\") as NodePath<t.FunctionExpression>;\n } else {\n throw fnPath.buildCodeFrameError(\n \"Unable to transform arrow inside class property\",\n );\n }\n }\n\n const { thisPaths, argumentsPaths, newTargetPaths, superProps, superCalls } =\n getScopeInformation(fnPath);\n\n // Convert all super() calls in the constructor, if super is used in an arrow.\n if (inConstructor && superCalls.length > 0) {\n if (!allowInsertArrow) {\n throw superCalls[0].buildCodeFrameError(\n \"When using '@babel/plugin-transform-arrow-functions', \" +\n \"it's not possible to compile `super()` in an arrow function without compiling classes.\\n\" +\n \"Please add '@babel/plugin-transform-classes' to your Babel configuration.\",\n );\n }\n if (!allowInsertArrowWithRest) {\n // preset-env with target `since 2017` enables `transform-parameters` without `transform-classes`.\n throw superCalls[0].buildCodeFrameError(\n \"When using '@babel/plugin-transform-parameters', \" +\n \"it's not possible to compile `super()` in an arrow function with default or rest parameters without compiling classes.\\n\" +\n \"Please add '@babel/plugin-transform-classes' to your Babel configuration.\",\n );\n }\n const allSuperCalls: NodePath<t.CallExpression>[] = [];\n thisEnvFn.traverse(getSuperCallsVisitor, { allSuperCalls });\n const superBinding = getSuperBinding(thisEnvFn);\n allSuperCalls.forEach(superCall => {\n const callee = identifier(superBinding);\n callee.loc = superCall.node.callee.loc;\n\n superCall.get(\"callee\").replaceWith(callee);\n });\n }\n\n // Convert all \"arguments\" references in the arrow to point at the alias.\n if (argumentsPaths.length > 0) {\n const argumentsBinding = getBinding(thisEnvFn, \"arguments\", () => {\n const args = () => identifier(\"arguments\");\n if (thisEnvFn.scope.path.isProgram()) {\n return conditionalExpression(\n binaryExpression(\n \"===\",\n unaryExpression(\"typeof\", args()),\n stringLiteral(\"undefined\"),\n ),\n thisEnvFn.scope.buildUndefinedNode(),\n args(),\n );\n } else {\n return args();\n }\n });\n\n argumentsPaths.forEach(argumentsChild => {\n const argsRef = identifier(argumentsBinding);\n argsRef.loc = argumentsChild.node.loc;\n\n argumentsChild.replaceWith(argsRef);\n });\n }\n\n // Convert all \"new.target\" references in the arrow to point at the alias.\n if (newTargetPaths.length > 0) {\n const newTargetBinding = getBinding(thisEnvFn, \"newtarget\", () =>\n metaProperty(identifier(\"new\"), identifier(\"target\")),\n );\n\n newTargetPaths.forEach(targetChild => {\n const targetRef = identifier(newTargetBinding);\n targetRef.loc = targetChild.node.loc;\n\n targetChild.replaceWith(targetRef);\n });\n }\n\n // Convert all \"super.prop\" references to point at aliases.\n if (superProps.length > 0) {\n if (!allowInsertArrow) {\n throw superProps[0].buildCodeFrameError(\n \"When using '@babel/plugin-transform-arrow-functions', \" +\n \"it's not possible to compile `super.prop` in an arrow function without compiling classes.\\n\" +\n \"Please add '@babel/plugin-transform-classes' to your Babel configuration.\",\n );\n }\n\n const flatSuperProps: NodePath<t.MemberExpression>[] = superProps.reduce(\n (acc, superProp) => acc.concat(standardizeSuperProperty(superProp)),\n [],\n );\n\n flatSuperProps.forEach(superProp => {\n const key = superProp.node.computed\n ? \"\"\n : // @ts-expect-error super property must not contain private name\n superProp.get(\"property\").node.name;\n\n const superParentPath = superProp.parentPath;\n\n const isAssignment = superParentPath.isAssignmentExpression({\n left: superProp.node,\n });\n const isCall = superParentPath.isCallExpression({\n callee: superProp.node,\n });\n const isTaggedTemplate = superParentPath.isTaggedTemplateExpression({\n tag: superProp.node,\n });\n const superBinding = getSuperPropBinding(thisEnvFn, isAssignment, key);\n\n const args: t.Expression[] = [];\n if (superProp.node.computed) {\n // SuperProperty must not be a private name\n args.push(superProp.get(\"property\").node as t.Expression);\n }\n\n if (isAssignment) {\n const value = superParentPath.node.right;\n args.push(value);\n }\n\n const call = callExpression(identifier(superBinding), args);\n\n if (isCall) {\n superParentPath.unshiftContainer(\"arguments\", thisExpression());\n superProp.replaceWith(memberExpression(call, identifier(\"call\")));\n\n thisPaths.push(\n superParentPath.get(\"arguments.0\") as NodePath<t.ThisExpression>,\n );\n } else if (isAssignment) {\n // Replace not only the super.prop, but the whole assignment\n superParentPath.replaceWith(call);\n } else if (isTaggedTemplate) {\n superProp.replaceWith(\n callExpression(memberExpression(call, identifier(\"bind\"), false), [\n thisExpression(),\n ]),\n );\n\n thisPaths.push(\n superProp.get(\"arguments.0\") as NodePath<t.ThisExpression>,\n );\n } else {\n superProp.replaceWith(call);\n }\n });\n }\n\n // Convert all \"this\" references in the arrow to point at the alias.\n let thisBinding: string | null;\n if (thisPaths.length > 0 || !noNewArrows) {\n thisBinding = getThisBinding(thisEnvFn, inConstructor);\n\n if (\n noNewArrows ||\n // In subclass constructors, still need to rewrite because \"this\" can't be bound in spec mode\n // because it might not have been initialized yet.\n (inConstructor && hasSuperClass(thisEnvFn))\n ) {\n thisPaths.forEach(thisChild => {\n const thisRef = thisChild.isJSX()\n ? jsxIdentifier(thisBinding)\n : identifier(thisBinding);\n\n thisRef.loc = thisChild.node.loc;\n thisChild.replaceWith(thisRef);\n });\n\n if (!noNewArrows) thisBinding = null;\n }\n }\n\n return { thisBinding, fnPath };\n}\n\ntype LogicalOp = Parameters<typeof logicalExpression>[0];\ntype BinaryOp = Parameters<typeof binaryExpression>[0];\n\nfunction isLogicalOp(op: string): op is LogicalOp {\n return LOGICAL_OPERATORS.includes(op);\n}\n\nfunction standardizeSuperProperty(\n superProp: NodePath<t.MemberExpression>,\n):\n | [NodePath<t.MemberExpression>]\n | [NodePath<t.MemberExpression>, NodePath<t.MemberExpression>] {\n if (\n superProp.parentPath.isAssignmentExpression() &&\n superProp.parentPath.node.operator !== \"=\"\n ) {\n const assignmentPath = superProp.parentPath;\n\n const op = assignmentPath.node.operator.slice(0, -1) as\n | LogicalOp\n | BinaryOp;\n\n const value = assignmentPath.node.right;\n\n const isLogicalAssignment = isLogicalOp(op);\n\n if (superProp.node.computed) {\n // from: super[foo] **= 4;\n // to: super[tmp = foo] = super[tmp] ** 4;\n\n // from: super[foo] ??= 4;\n // to: super[tmp = foo] ?? super[tmp] = 4;\n\n const tmp = superProp.scope.generateDeclaredUidIdentifier(\"tmp\");\n\n const object = superProp.node.object;\n const property = superProp.node.property as t.Expression;\n\n assignmentPath\n .get(\"left\")\n .replaceWith(\n memberExpression(\n object,\n assignmentExpression(\"=\", tmp, property),\n true /* computed */,\n ),\n );\n\n assignmentPath\n .get(\"right\")\n .replaceWith(\n rightExpression(\n isLogicalAssignment ? \"=\" : op,\n memberExpression(object, identifier(tmp.name), true /* computed */),\n value,\n ),\n );\n } else {\n // from: super.foo **= 4;\n // to: super.foo = super.foo ** 4;\n\n // from: super.foo ??= 4;\n // to: super.foo ?? super.foo = 4;\n\n const object = superProp.node.object;\n const property = superProp.node.property as t.Identifier;\n\n assignmentPath\n .get(\"left\")\n .replaceWith(memberExpression(object, property));\n\n assignmentPath\n .get(\"right\")\n .replaceWith(\n rightExpression(\n isLogicalAssignment ? \"=\" : op,\n memberExpression(object, identifier(property.name)),\n value,\n ),\n );\n }\n\n if (isLogicalAssignment) {\n assignmentPath.replaceWith(\n logicalExpression(\n op,\n assignmentPath.node.left as t.MemberExpression,\n assignmentPath.node.right,\n ),\n );\n } else {\n assignmentPath.node.operator = \"=\";\n }\n\n return [\n assignmentPath.get(\"left\") as NodePath<t.MemberExpression>,\n assignmentPath.get(\"right\").get(\"left\") as NodePath<t.MemberExpression>,\n ];\n } else if (superProp.parentPath.isUpdateExpression()) {\n const updateExpr = superProp.parentPath;\n\n const tmp = superProp.scope.generateDeclaredUidIdentifier(\"tmp\");\n const computedKey = superProp.node.computed\n ? superProp.scope.generateDeclaredUidIdentifier(\"prop\")\n : null;\n\n const parts: t.Expression[] = [\n assignmentExpression(\n \"=\",\n tmp,\n memberExpression(\n superProp.node.object,\n computedKey\n ? assignmentExpression(\n \"=\",\n computedKey,\n superProp.node.property as t.Expression,\n )\n : superProp.node.property,\n superProp.node.computed,\n ),\n ),\n assignmentExpression(\n \"=\",\n memberExpression(\n superProp.node.object,\n computedKey ? identifier(computedKey.name) : superProp.node.property,\n superProp.node.computed,\n ),\n binaryExpression(\n // map `++` to `+`, and `--` to `-`\n superProp.parentPath.node.operator[0] as \"+\" | \"-\",\n identifier(tmp.name),\n numericLiteral(1),\n ),\n ),\n ];\n\n if (!superProp.parentPath.node.prefix) {\n parts.push(identifier(tmp.name));\n }\n\n updateExpr.replaceWith(sequenceExpression(parts));\n\n const left = updateExpr.get(\n \"expressions.0.right\",\n ) as NodePath<t.MemberExpression>;\n const right = updateExpr.get(\n \"expressions.1.left\",\n ) as NodePath<t.MemberExpression>;\n return [left, right];\n }\n\n return [superProp];\n\n function rightExpression(\n op: BinaryOp | \"=\",\n left: t.MemberExpression,\n right: t.Expression,\n ) {\n if (op === \"=\") {\n return assignmentExpression(\"=\", left, right);\n } else {\n return binaryExpression(op, left, right);\n }\n }\n}\n\nfunction hasSuperClass(thisEnvFn: NodePath<t.Function>) {\n return (\n thisEnvFn.isClassMethod() &&\n !!(thisEnvFn.parentPath.parentPath.node as t.Class).superClass\n );\n}\n\nconst assignSuperThisVisitor = environmentVisitor<{\n supers: WeakSet<t.CallExpression>;\n thisBinding: string;\n}>({\n CallExpression(child, { supers, thisBinding }) {\n if (!child.get(\"callee\").isSuper()) return;\n if (supers.has(child.node)) return;\n supers.add(child.node);\n\n child.replaceWithMultiple([\n child.node,\n assignmentExpression(\"=\", identifier(thisBinding), identifier(\"this\")),\n ]);\n },\n});\n\n// Create a binding that evaluates to the \"this\" of the given function.\nfunction getThisBinding(\n thisEnvFn: NodePath<t.Function>,\n inConstructor: boolean,\n) {\n return getBinding(thisEnvFn, \"this\", thisBinding => {\n if (!inConstructor || !hasSuperClass(thisEnvFn)) return thisExpression();\n\n thisEnvFn.traverse(assignSuperThisVisitor, {\n supers: new WeakSet(),\n thisBinding,\n });\n });\n}\n\n// Create a binding for a function that will call \"super()\" with arguments passed through.\nfunction getSuperBinding(thisEnvFn: NodePath<t.Function>) {\n return getBinding(thisEnvFn, \"supercall\", () => {\n const argsBinding = thisEnvFn.scope.generateUidIdentifier(\"args\");\n return arrowFunctionExpression(\n [restElement(argsBinding)],\n callExpression(_super(), [spreadElement(identifier(argsBinding.name))]),\n );\n });\n}\n\n// Create a binding for a function that will call \"super.foo\" or \"super[foo]\".\nfunction getSuperPropBinding(\n thisEnvFn: NodePath<t.Function>,\n isAssignment: boolean,\n propName: string,\n) {\n const op = isAssignment ? \"set\" : \"get\";\n\n return getBinding(thisEnvFn, `superprop_${op}:${propName || \"\"}`, () => {\n const argsList = [];\n\n let fnBody;\n if (propName) {\n // () => super.foo\n fnBody = memberExpression(_super(), identifier(propName));\n } else {\n const method = thisEnvFn.scope.generateUidIdentifier(\"prop\");\n // (method) => super[method]\n argsList.unshift(method);\n fnBody = memberExpression(\n _super(),\n identifier(method.name),\n true /* computed */,\n );\n }\n\n if (isAssignment) {\n const valueIdent = thisEnvFn.scope.generateUidIdentifier(\"value\");\n argsList.push(valueIdent);\n\n fnBody = assignmentExpression(\"=\", fnBody, identifier(valueIdent.name));\n }\n\n return arrowFunctionExpression(argsList, fnBody);\n });\n}\n\nfunction getBinding(\n thisEnvFn: NodePath,\n key: string,\n init: (name: string) => t.Expression,\n) {\n const cacheKey = \"binding:\" + key;\n let data: string | undefined = thisEnvFn.getData(cacheKey);\n if (!data) {\n const id = thisEnvFn.scope.generateUidIdentifier(key);\n data = id.name;\n thisEnvFn.setData(cacheKey, data);\n\n thisEnvFn.scope.push({\n id: id,\n init: init(data),\n });\n }\n\n return data;\n}\n\ntype ScopeInfo = {\n thisPaths: NodePath<t.ThisExpression | t.JSXIdentifier>[];\n superCalls: NodePath<t.CallExpression>[];\n superProps: NodePath<t.MemberExpression>[];\n argumentsPaths: NodePath<t.Identifier | t.JSXIdentifier>[];\n newTargetPaths: NodePath<t.MetaProperty>[];\n};\n\nconst getScopeInformationVisitor = environmentVisitor<ScopeInfo>({\n ThisExpression(child, { thisPaths }) {\n thisPaths.push(child);\n },\n JSXIdentifier(child, { thisPaths }) {\n if (child.node.name !== \"this\") return;\n if (\n !child.parentPath.isJSXMemberExpression({ object: child.node }) &&\n !child.parentPath.isJSXOpeningElement({ name: child.node })\n ) {\n return;\n }\n\n thisPaths.push(child);\n },\n CallExpression(child, { superCalls }) {\n if (child.get(\"callee\").isSuper()) superCalls.push(child);\n },\n MemberExpression(child, { superProps }) {\n if (child.get(\"object\").isSuper()) superProps.push(child);\n },\n Identifier(child, { argumentsPaths }) {\n if (!child.isReferencedIdentifier({ name: \"arguments\" })) return;\n\n let curr = child.scope;\n do {\n if (curr.hasOwnBinding(\"arguments\")) {\n curr.rename(\"arguments\");\n return;\n }\n if (curr.path.isFunction() && !curr.path.isArrowFunctionExpression()) {\n break;\n }\n } while ((curr = curr.parent));\n\n argumentsPaths.push(child);\n },\n MetaProperty(child, { newTargetPaths }) {\n if (!child.get(\"meta\").isIdentifier({ name: \"new\" })) return;\n if (!child.get(\"property\").isIdentifier({ name: \"target\" })) return;\n\n newTargetPaths.push(child);\n },\n});\n\nfunction getScopeInformation(fnPath: NodePath) {\n const thisPaths: ScopeInfo[\"thisPaths\"] = [];\n const argumentsPaths: ScopeInfo[\"argumentsPaths\"] = [];\n const newTargetPaths: ScopeInfo[\"newTargetPaths\"] = [];\n const superProps: ScopeInfo[\"superProps\"] = [];\n const superCalls: ScopeInfo[\"superCalls\"] = [];\n\n fnPath.traverse(getScopeInformationVisitor, {\n thisPaths,\n argumentsPaths,\n newTargetPaths,\n superProps,\n superCalls,\n });\n\n return {\n thisPaths,\n argumentsPaths,\n newTargetPaths,\n superProps,\n superCalls,\n };\n}\n\nexport function splitExportDeclaration(\n this: NodePath<t.ExportDefaultDeclaration | t.ExportNamedDeclaration>,\n): NodePath<t.Declaration> {\n if (!this.isExportDeclaration() || this.isExportAllDeclaration()) {\n throw new Error(\"Only default and named export declarations can be split.\");\n }\n if (this.isExportNamedDeclaration() && this.get(\"specifiers\").length > 0) {\n throw new Error(\"It doesn't make sense to split exported specifiers.\");\n }\n\n const declaration = this.get(\"declaration\");\n\n if (this.isExportDefaultDeclaration()) {\n const standaloneDeclaration =\n declaration.isFunctionDeclaration() || declaration.isClassDeclaration();\n const exportExpr =\n declaration.isFunctionExpression() || declaration.isClassExpression();\n\n const scope = declaration.isScope()\n ? declaration.scope.parent\n : declaration.scope;\n\n // @ts-expect-error id is not defined in expressions other than function/class\n let id = declaration.node.id;\n let needBindingRegistration = false;\n\n if (!id) {\n needBindingRegistration = true;\n\n id = scope.generateUidIdentifier(\"default\");\n\n if (standaloneDeclaration || exportExpr) {\n declaration.node.id = cloneNode(id);\n }\n } else if (exportExpr && scope.hasBinding(id.name)) {\n needBindingRegistration = true;\n\n id = scope.generateUidIdentifier(id.name);\n }\n\n const updatedDeclaration = standaloneDeclaration\n ? declaration.node\n : variableDeclaration(\"var\", [\n variableDeclarator(\n cloneNode(id),\n // @ts-expect-error When `standaloneDeclaration` is false, declaration must not be a Function/ClassDeclaration\n declaration.node,\n ),\n ]);\n\n const updatedExportDeclaration = exportNamedDeclaration(null, [\n exportSpecifier(cloneNode(id), identifier(\"default\")),\n ]);\n\n this.insertAfter(updatedExportDeclaration);\n this.replaceWith(updatedDeclaration);\n\n if (needBindingRegistration) {\n scope.registerDeclaration(this);\n }\n\n return this;\n } else if (this.get(\"specifiers\").length > 0) {\n throw new Error(\"It doesn't make sense to split exported specifiers.\");\n }\n\n const bindingIdentifiers = declaration.getOuterBindingIdentifiers();\n\n const specifiers = Object.keys(bindingIdentifiers).map(name => {\n return exportSpecifier(identifier(name), identifier(name));\n });\n\n const aliasDeclar = exportNamedDeclaration(null, specifiers);\n\n this.insertAfter(aliasDeclar);\n this.replaceWith(declaration.node);\n return this;\n}\n\nconst refersOuterBindingVisitor: Visitor<{\n needsRename: boolean;\n name: string;\n}> = {\n \"ReferencedIdentifier|BindingIdentifier\"(\n path: NodePath<t.Identifier>,\n state,\n ) {\n // check if this node matches our function id\n if (path.node.name !== state.name) return;\n state.needsRename = true;\n path.stop();\n },\n Scope(path, state) {\n if (path.scope.hasOwnBinding(state.name)) {\n path.skip();\n }\n },\n};\n\nexport function ensureFunctionName<\n N extends t.FunctionExpression | t.ClassExpression,\n>(this: NodePath<N>, supportUnicodeId: boolean): null | NodePath<N> {\n if (this.node.id) return this;\n\n const res = getFunctionName(this.node, this.parent);\n if (res == null) return this;\n let { name } = res;\n\n if (!supportUnicodeId && /[\\uD800-\\uDFFF]/.test(name)) {\n return null;\n }\n\n if (name.startsWith(\"get \") || name.startsWith(\"set \")) {\n // TODO: Remove this to support naming getters and setters\n return null;\n }\n\n name = toBindingIdentifierName(name.replace(/[/ ]/g, \"_\"));\n const id = identifier(name);\n inherits(id, res.originalNode);\n\n const state = { needsRename: false, name };\n\n // check to see if we have a local binding of the id we're setting inside of\n // the function, this is important as there are caveats associated\n\n const { scope } = this;\n const binding = scope.getOwnBinding(name);\n if (binding) {\n if (binding.kind === \"param\") {\n // safari will blow up in strict mode with code like:\n //\n // let t = function t(t) {};\n //\n // with the error:\n //\n // Cannot declare a parameter named 't' as it shadows the name of a\n // strict mode function.\n //\n // this isn't to the spec and they've invented this behaviour which is\n // **extremely** annoying so we avoid setting the name if it has a param\n // with the same id\n state.needsRename = true;\n } else {\n // otherwise it's defined somewhere in scope like:\n //\n // let t = function () {\n // let t = 2;\n // };\n //\n // so we can safely just set the id and move along as it shadows the\n // bound function id\n }\n } else if (scope.parent.hasBinding(name) || scope.hasGlobal(name)) {\n this.traverse(refersOuterBindingVisitor, state);\n }\n\n if (!state.needsRename) {\n this.node.id = id;\n scope.getProgramParent().references[id.name] = true;\n return this;\n }\n\n if (scope.hasBinding(id.name) && !scope.hasGlobal(id.name)) {\n // we can just munge the local binding\n scope.rename(id.name);\n this.node.id = id;\n scope.getProgramParent().references[id.name] = true;\n return this;\n }\n\n // TODO: we don't currently support wrapping class expressions\n if (!isFunction(this.node)) return null;\n\n // need to add a wrapper since we can't change the references\n\n const key = scope.generateUidIdentifier(id.name);\n // shim in dummy params to retain function arity, if you try to read the\n // source then you'll get the original since it's proxied so it's all good\n const params = [];\n for (let i = 0, len = getFunctionArity(this.node); i < len; i++) {\n params.push(scope.generateUidIdentifier(\"x\"));\n }\n const call = template.expression.ast`\n (function (${key}) {\n function ${id}(${params}) {\n return ${cloneNode(key)}.apply(this, arguments);\n }\n\n ${cloneNode(id)}.toString = function () {\n return ${cloneNode(key)}.toString();\n }\n\n return ${cloneNode(id)};\n })(${toExpression(this.node)})\n ` as t.CallExpression;\n\n return this.replaceWith(call)[0].get(\"arguments.0\") as NodePath<N>;\n}\n\nfunction getFunctionArity(node: t.Function): number {\n const count = node.params.findIndex(\n param => isAssignmentPattern(param) || isRestElement(param),\n );\n return count === -1 ? node.params.length : count;\n}\n","// This file contains methods responsible for introspecting the current path for certain values.\n\nimport type NodePath from \"./index.ts\";\nimport {\n STATEMENT_OR_BLOCK_KEYS,\n VISITOR_KEYS,\n isBlockStatement,\n isExpression,\n isIdentifier,\n isLiteral,\n isStringLiteral,\n isType,\n matchesPattern as _matchesPattern,\n} from \"@babel/types\";\nimport type * as t from \"@babel/types\";\n\n/**\n * Match the current node if it matches the provided `pattern`.\n *\n * For example, given the match `React.createClass` it would match the\n * parsed nodes of `React.createClass` and `React[\"createClass\"]`.\n */\n\nexport function matchesPattern(\n this: NodePath,\n pattern: string,\n allowPartial?: boolean,\n): boolean {\n return _matchesPattern(this.node, pattern, allowPartial);\n}\n\nif (!process.env.BABEL_8_BREAKING && !USE_ESM) {\n /**\n * Check whether we have the input `key`. If the `key` references an array then we check\n * if the array has any items, otherwise we just check if it's falsy.\n */\n // eslint-disable-next-line no-restricted-globals\n exports.has = function has<N extends t.Node>(\n this: NodePath<N>,\n key: keyof N,\n ): boolean {\n const val = (this.node as N)?.[key];\n if (val && Array.isArray(val)) {\n return !!val.length;\n } else {\n return !!val;\n }\n };\n}\n\nexport function isStatic(this: NodePath): boolean {\n return this.scope.isStatic(this.node);\n}\n\nif (!process.env.BABEL_8_BREAKING && !USE_ESM) {\n /**\n * Alias of `has`.\n */\n // eslint-disable-next-line no-restricted-globals\n exports.is = exports.has;\n\n /**\n * Opposite of `has`.\n */\n // eslint-disable-next-line no-restricted-globals\n exports.isnt = function isnt<N extends t.Node>(\n this: NodePath<N>,\n key: keyof N,\n ): boolean {\n // @ts-expect-error Babel 7\n return !this.has(key);\n };\n\n /**\n * Check whether the path node `key` strict equals `value`.\n */\n // eslint-disable-next-line no-restricted-globals\n exports.equals = function equals<N extends t.Node>(\n this: NodePath<N>,\n key: keyof N,\n value: any,\n ): boolean {\n return (this.node as N)[key] === value;\n };\n}\n\n/**\n * Check the type against our stored internal type of the node. This is handy when a node has\n * been removed yet we still internally know the type and need it to calculate node replacement.\n */\n\nexport function isNodeType(this: NodePath, type: string): boolean {\n return isType(this.type, type);\n}\n\n/**\n * This checks whether or not we're in one of the following positions:\n *\n * for (KEY in right);\n * for (KEY;;);\n *\n * This is because these spots allow VariableDeclarations AND normal expressions so we need\n * to tell the path replacement that it's ok to replace this with an expression.\n */\n\nexport function canHaveVariableDeclarationOrExpression(this: NodePath) {\n return (\n (this.key === \"init\" || this.key === \"left\") && this.parentPath.isFor()\n );\n}\n\n/**\n * This checks whether we are swapping an arrow function's body between an\n * expression and a block statement (or vice versa).\n *\n * This is because arrow functions may implicitly return an expression, which\n * is the same as containing a block statement.\n */\n\nexport function canSwapBetweenExpressionAndStatement(\n this: NodePath,\n replacement: t.Node,\n): boolean {\n if (this.key !== \"body\" || !this.parentPath.isArrowFunctionExpression()) {\n return false;\n }\n\n if (this.isExpression()) {\n return isBlockStatement(replacement);\n } else if (this.isBlockStatement()) {\n return isExpression(replacement);\n }\n\n return false;\n}\n\n/**\n * Check whether the current path references a completion record\n */\n\nexport function isCompletionRecord(\n this: NodePath,\n allowInsideFunction?: boolean,\n): boolean {\n let path = this;\n let first = true;\n\n do {\n const { type, container } = path;\n\n // we're in a function so can't be a completion record\n if (!first && (path.isFunction() || type === \"StaticBlock\")) {\n return !!allowInsideFunction;\n }\n\n first = false;\n\n // check to see if we're the last item in the container and if we are\n // we're a completion record!\n if (Array.isArray(container) && path.key !== container.length - 1) {\n return false;\n }\n } while (\n (path = path.parentPath) &&\n !path.isProgram() &&\n !path.isDoExpression()\n );\n\n return true;\n}\n\n/**\n * Check whether or not the current `key` allows either a single statement or block statement\n * so we can explode it if necessary.\n */\n\nexport function isStatementOrBlock(this: NodePath): boolean {\n if (\n this.parentPath.isLabeledStatement() ||\n isBlockStatement(this.container as t.Node)\n ) {\n return false;\n } else {\n return STATEMENT_OR_BLOCK_KEYS.includes(this.key as string);\n }\n}\n\n/**\n * Check if the currently assigned path references the `importName` of `moduleSource`.\n */\n\nexport function referencesImport(\n this: NodePath,\n moduleSource: string,\n importName: string,\n): boolean {\n if (!this.isReferencedIdentifier()) {\n if (\n (this.isJSXMemberExpression() &&\n this.node.property.name === importName) ||\n ((this.isMemberExpression() || this.isOptionalMemberExpression()) &&\n (this.node.computed\n ? isStringLiteral(this.node.property, { value: importName })\n : (this.node.property as t.Identifier).name === importName))\n ) {\n const object = (\n this as NodePath<t.MemberExpression | t.OptionalMemberExpression>\n ).get(\"object\");\n return (\n object.isReferencedIdentifier() &&\n object.referencesImport(moduleSource, \"*\")\n );\n }\n\n return false;\n }\n\n const binding = this.scope.getBinding((this.node as t.Identifier).name);\n if (!binding || binding.kind !== \"module\") return false;\n\n const path = binding.path;\n const parent = path.parentPath;\n if (!parent.isImportDeclaration()) return false;\n\n // check moduleSource\n if (parent.node.source.value === moduleSource) {\n if (!importName) return true;\n } else {\n return false;\n }\n\n if (path.isImportDefaultSpecifier() && importName === \"default\") {\n return true;\n }\n\n if (path.isImportNamespaceSpecifier() && importName === \"*\") {\n return true;\n }\n\n if (\n path.isImportSpecifier() &&\n isIdentifier(path.node.imported, { name: importName })\n ) {\n return true;\n }\n\n return false;\n}\n\n/**\n * Get the source code associated with this node.\n */\n\nexport function getSource(this: NodePath): string {\n const node = this.node;\n if (node.end) {\n const code = this.hub.getCode();\n if (code) return code.slice(node.start, node.end);\n }\n return \"\";\n}\n\nexport function willIMaybeExecuteBefore(\n this: NodePath,\n target: NodePath,\n): boolean {\n return this._guessExecutionStatusRelativeTo(target) !== \"after\";\n}\n\nfunction getOuterFunction(path: NodePath) {\n return path.isProgram()\n ? path\n : (\n path.parentPath.scope.getFunctionParent() ||\n path.parentPath.scope.getProgramParent()\n ).path;\n}\n\nfunction isExecutionUncertain(type: t.Node[\"type\"], key: string) {\n switch (type) {\n // a && FOO\n // a || FOO\n case \"LogicalExpression\":\n return key === \"right\";\n\n // a ? FOO : FOO\n // if (a) FOO; else FOO;\n case \"ConditionalExpression\":\n case \"IfStatement\":\n return key === \"consequent\" || key === \"alternate\";\n\n // while (a) FOO;\n case \"WhileStatement\":\n case \"DoWhileStatement\":\n case \"ForInStatement\":\n case \"ForOfStatement\":\n return key === \"body\";\n\n // for (a; b; FOO) FOO;\n case \"ForStatement\":\n return key === \"body\" || key === \"update\";\n\n // switch (a) { FOO }\n case \"SwitchStatement\":\n return key === \"cases\";\n\n // try { a } catch FOO finally { b }\n case \"TryStatement\":\n return key === \"handler\";\n\n // var [ x = FOO ]\n case \"AssignmentPattern\":\n return key === \"right\";\n\n // a?.[FOO]\n case \"OptionalMemberExpression\":\n return key === \"property\";\n\n // a?.(FOO)\n case \"OptionalCallExpression\":\n return key === \"arguments\";\n\n default:\n return false;\n }\n}\n\nfunction isExecutionUncertainInList(paths: NodePath[], maxIndex: number) {\n for (let i = 0; i < maxIndex; i++) {\n const path = paths[i];\n if (isExecutionUncertain(path.parent.type, path.parentKey)) {\n return true;\n }\n }\n return false;\n}\n\n// TODO(Babel 8)\n// This can be { before: boolean, after: boolean, unknown: boolean }.\n// This allows transforms like the tdz one to treat cases when the status\n// is both before and unknown/after like if it were before.\ntype RelativeExecutionStatus = \"before\" | \"after\" | \"unknown\";\n\n// Used to avoid infinite recursion in cases like\n// function f() { if (false) f(); }\n// f();\n// It also works with indirect recursion.\nconst SYMBOL_CHECKING = Symbol();\n\ntype ExecutionStatusCache = Map<\n t.Node,\n Map<t.Node, RelativeExecutionStatus | typeof SYMBOL_CHECKING>\n>;\n\n/**\n * Given a `target` check the execution status of it relative to the current path.\n *\n * \"Execution status\" simply refers to where or not we **think** this will execute\n * before or after the input `target` element.\n */\n\nexport function _guessExecutionStatusRelativeTo(\n this: NodePath,\n target: NodePath,\n): RelativeExecutionStatus {\n return _guessExecutionStatusRelativeToCached(this, target, new Map());\n}\n\nfunction _guessExecutionStatusRelativeToCached(\n base: NodePath,\n target: NodePath,\n cache: ExecutionStatusCache,\n): RelativeExecutionStatus {\n // check if the two paths are in different functions, we can't track execution of these\n const funcParent = {\n this: getOuterFunction(base),\n target: getOuterFunction(target),\n };\n\n // here we check the `node` equality as sometimes we may have different paths for the\n // same node due to path thrashing\n if (funcParent.target.node !== funcParent.this.node) {\n return _guessExecutionStatusRelativeToDifferentFunctionsCached(\n base,\n funcParent.target,\n cache,\n );\n }\n\n const paths = {\n target: target.getAncestry(),\n this: base.getAncestry(),\n };\n\n // If this is an ancestor of the target path,\n // e.g. f(g); where this is f and target is g.\n if (paths.target.includes(base)) return \"after\";\n if (paths.this.includes(target)) return \"before\";\n\n // get ancestor where the branches intersect\n let commonPath;\n const commonIndex = { target: 0, this: 0 };\n\n while (!commonPath && commonIndex.this < paths.this.length) {\n const path = paths.this[commonIndex.this];\n commonIndex.target = paths.target.indexOf(path);\n if (commonIndex.target >= 0) {\n commonPath = path;\n } else {\n commonIndex.this++;\n }\n }\n\n if (!commonPath) {\n throw new Error(\n \"Internal Babel error - The two compared nodes\" +\n \" don't appear to belong to the same program.\",\n );\n }\n\n if (\n isExecutionUncertainInList(paths.this, commonIndex.this - 1) ||\n isExecutionUncertainInList(paths.target, commonIndex.target - 1)\n ) {\n return \"unknown\";\n }\n\n const divergence = {\n this: paths.this[commonIndex.this - 1],\n target: paths.target[commonIndex.target - 1],\n };\n\n // container list so let's see which one is after the other\n // e.g. [ THIS, TARGET ]\n if (\n divergence.target.listKey &&\n divergence.this.listKey &&\n divergence.target.container === divergence.this.container\n ) {\n return divergence.target.key > divergence.this.key ? \"before\" : \"after\";\n }\n\n // otherwise we're associated by a parent node, check which key comes before the other\n const keys = VISITOR_KEYS[commonPath.type];\n const keyPosition = {\n this: keys.indexOf(divergence.this.parentKey),\n target: keys.indexOf(divergence.target.parentKey),\n };\n return keyPosition.target > keyPosition.this ? \"before\" : \"after\";\n}\n\nfunction _guessExecutionStatusRelativeToDifferentFunctionsInternal(\n base: NodePath,\n target: NodePath,\n cache: ExecutionStatusCache,\n): RelativeExecutionStatus {\n if (!target.isFunctionDeclaration()) {\n if (\n _guessExecutionStatusRelativeToCached(base, target, cache) === \"before\"\n ) {\n return \"before\";\n }\n return \"unknown\";\n } else if (target.parentPath.isExportDeclaration()) {\n return \"unknown\";\n }\n\n // so we're in a completely different function, if this is a function declaration\n // then we can be a bit smarter and handle cases where the function is either\n // a. not called at all (part of an export)\n // b. called directly\n const binding = target.scope.getBinding(target.node.id.name);\n\n // no references!\n if (!binding.references) return \"before\";\n\n const referencePaths: Array<NodePath> = binding.referencePaths;\n\n let allStatus;\n\n // verify that all the calls have the same execution status\n for (const path of referencePaths) {\n // if a reference is a child of the function we're checking against then we can\n // safely ignore it\n const childOfFunction = !!path.find(path => path.node === target.node);\n if (childOfFunction) continue;\n\n if (path.key !== \"callee\" || !path.parentPath.isCallExpression()) {\n // This function is passed as a reference, so we don't\n // know when it will be called.\n return \"unknown\";\n }\n\n const status = _guessExecutionStatusRelativeToCached(base, path, cache);\n\n if (allStatus && allStatus !== status) {\n return \"unknown\";\n } else {\n allStatus = status;\n }\n }\n\n return allStatus;\n}\n\nfunction _guessExecutionStatusRelativeToDifferentFunctionsCached(\n base: NodePath,\n target: NodePath,\n cache: ExecutionStatusCache,\n): RelativeExecutionStatus {\n let nodeMap = cache.get(base.node);\n let cached;\n\n if (!nodeMap) {\n cache.set(base.node, (nodeMap = new Map()));\n } else if ((cached = nodeMap.get(target.node))) {\n if (cached === SYMBOL_CHECKING) {\n return \"unknown\";\n }\n return cached;\n }\n\n nodeMap.set(target.node, SYMBOL_CHECKING);\n\n const result = _guessExecutionStatusRelativeToDifferentFunctionsInternal(\n base,\n target,\n cache,\n );\n\n nodeMap.set(target.node, result);\n return result;\n}\n\n/**\n * Resolve a \"pointer\" `NodePath` to it's absolute path.\n */\nexport function resolve(\n this: NodePath,\n dangerous?: boolean,\n resolved?: NodePath[],\n) {\n return _resolve.call(this, dangerous, resolved) || this;\n}\n\nexport function _resolve(\n this: NodePath,\n dangerous?: boolean,\n resolved?: NodePath[],\n): NodePath | undefined | null {\n // detect infinite recursion\n // todo: possibly have a max length on this just to be safe\n if (resolved?.includes(this)) return;\n\n // we store all the paths we've \"resolved\" in this array to prevent infinite recursion\n resolved = resolved || [];\n resolved.push(this);\n\n if (this.isVariableDeclarator()) {\n if (this.get(\"id\").isIdentifier()) {\n return this.get(\"init\").resolve(dangerous, resolved);\n } else {\n // otherwise it's a request for a pattern and that's a bit more tricky\n }\n } else if (this.isReferencedIdentifier()) {\n const binding = this.scope.getBinding(this.node.name);\n if (!binding) return;\n\n // reassigned so we can't really resolve it\n if (!binding.constant) return;\n\n // todo - lookup module in dependency graph\n if (binding.kind === \"module\") return;\n\n if (binding.path !== this) {\n const ret = binding.path.resolve(dangerous, resolved);\n // If the identifier resolves to parent node then we can't really resolve it.\n if (this.find(parent => parent.node === ret.node)) return;\n return ret;\n }\n } else if (this.isTypeCastExpression()) {\n // @ ts-ignore todo: babel-types\n return this.get(\"expression\").resolve(dangerous, resolved);\n } else if (dangerous && this.isMemberExpression()) {\n // this is dangerous, as non-direct target assignments will mutate it's state\n // making this resolution inaccurate\n\n const targetKey = this.toComputedKey();\n if (!isLiteral(targetKey)) return;\n\n // @ts-expect-error todo(flow->ts): NullLiteral\n const targetName = targetKey.value;\n\n const target = this.get(\"object\").resolve(dangerous, resolved);\n\n if (target.isObjectExpression()) {\n const props = target.get(\"properties\");\n for (const prop of props as any[]) {\n if (!prop.isProperty()) continue;\n\n const key = prop.get(\"key\");\n\n // { foo: obj }\n let match =\n prop.isnt(\"computed\") && key.isIdentifier({ name: targetName });\n\n // { \"foo\": \"obj\" } or { [\"foo\"]: \"obj\" }\n match = match || key.isLiteral({ value: targetName });\n\n if (match) return prop.get(\"value\").resolve(dangerous, resolved);\n }\n } else if (target.isArrayExpression() && !isNaN(+targetName)) {\n const elems = target.get(\"elements\");\n const elem = elems[targetName];\n if (elem) return elem.resolve(dangerous, resolved);\n }\n }\n}\n\nexport function isConstantExpression(this: NodePath): boolean {\n if (this.isIdentifier()) {\n const binding = this.scope.getBinding(this.node.name);\n if (!binding) return false;\n return binding.constant;\n }\n\n if (this.isLiteral()) {\n if (this.isRegExpLiteral()) {\n return false;\n }\n\n if (this.isTemplateLiteral()) {\n return this.get(\"expressions\").every(expression =>\n expression.isConstantExpression(),\n );\n }\n\n return true;\n }\n\n if (this.isUnaryExpression()) {\n if (this.node.operator !== \"void\") {\n return false;\n }\n\n return this.get(\"argument\").isConstantExpression();\n }\n\n if (this.isBinaryExpression()) {\n const { operator } = this.node;\n return (\n operator !== \"in\" &&\n operator !== \"instanceof\" &&\n this.get(\"left\").isConstantExpression() &&\n this.get(\"right\").isConstantExpression()\n );\n }\n\n if (this.isMemberExpression()) {\n return (\n !this.node.computed &&\n this.get(\"object\").isIdentifier({ name: \"Symbol\" }) &&\n !this.scope.hasBinding(\"Symbol\", { noGlobals: true })\n );\n }\n\n if (this.isCallExpression()) {\n return (\n this.node.arguments.length === 1 &&\n this.get(\"callee\").matchesPattern(\"Symbol.for\") &&\n !this.scope.hasBinding(\"Symbol\", { noGlobals: true }) &&\n this.get(\"arguments\")[0].isStringLiteral()\n );\n }\n\n return false;\n}\n\nexport function isInStrictMode(this: NodePath) {\n const start = this.isProgram() ? this : this.parentPath;\n\n const strictParent = start.find(path => {\n if (path.isProgram({ sourceType: \"module\" })) return true;\n\n if (path.isClass()) return true;\n\n if (\n path.isArrowFunctionExpression() &&\n !path.get(\"body\").isBlockStatement()\n ) {\n return false;\n }\n\n let body: t.BlockStatement | t.Program;\n if (path.isFunction()) {\n body = path.node.body as t.BlockStatement;\n } else if (path.isProgram()) {\n // @ts-expect-error TODO: TS thinks that `path` here cannot be\n // Program due to the `isProgram()` check at the beginning of\n // the function\n body = path.node;\n } else {\n return false;\n }\n\n for (const directive of body.directives) {\n if (directive.value.value === \"use strict\") {\n return true;\n }\n }\n });\n\n return !!strictParent;\n}\n","// This file contains methods responsible for dealing with/retrieving children or siblings.\n\nimport type TraversalContext from \"../context.ts\";\nimport NodePath from \"./index.ts\";\nimport {\n getAssignmentIdentifiers as _getAssignmentIdentifiers,\n getBindingIdentifiers as _getBindingIdentifiers,\n getOuterBindingIdentifiers as _getOuterBindingIdentifiers,\n numericLiteral,\n unaryExpression,\n} from \"@babel/types\";\nimport type * as t from \"@babel/types\";\n\nconst NORMAL_COMPLETION = 0;\nconst BREAK_COMPLETION = 1;\n\ntype Completion = {\n path: NodePath;\n type: 0 | 1;\n};\n\ntype CompletionContext = {\n // whether the current context allows `break` statement. When it allows, we have\n // to search all the statements for potential `break`\n canHaveBreak: boolean;\n // whether the statement is an immediate descendant of a switch case clause\n inCaseClause: boolean;\n // whether the `break` statement record should be populated to upper level\n // when a `break` statement is an immediate descendant of a block statement, e.g.\n // `{ break }`, it can influence the control flow in the upper levels.\n shouldPopulateBreak: boolean;\n};\n\nfunction NormalCompletion(path: NodePath): Completion {\n return { type: NORMAL_COMPLETION, path };\n}\n\nfunction BreakCompletion(path: NodePath): Completion {\n return { type: BREAK_COMPLETION, path };\n}\n\nexport function getOpposite(this: NodePath): NodePath | null {\n if (this.key === \"left\") {\n return this.getSibling(\"right\");\n } else if (this.key === \"right\") {\n return this.getSibling(\"left\");\n }\n return null;\n}\n\nfunction addCompletionRecords(\n path: NodePath | null | undefined,\n records: Completion[],\n context: CompletionContext,\n): Completion[] {\n if (path) {\n records.push(..._getCompletionRecords(path, context));\n }\n return records;\n}\n\nfunction completionRecordForSwitch(\n cases: NodePath<t.SwitchCase>[],\n records: Completion[],\n context: CompletionContext,\n): Completion[] {\n // https://tc39.es/ecma262/#sec-runtime-semantics-caseblockevaluation\n let lastNormalCompletions: Completion[] = [];\n for (let i = 0; i < cases.length; i++) {\n const casePath = cases[i];\n const caseCompletions = _getCompletionRecords(casePath, context);\n const normalCompletions = [];\n const breakCompletions = [];\n for (const c of caseCompletions) {\n if (c.type === NORMAL_COMPLETION) {\n normalCompletions.push(c);\n }\n if (c.type === BREAK_COMPLETION) {\n breakCompletions.push(c);\n }\n }\n if (normalCompletions.length) {\n lastNormalCompletions = normalCompletions;\n }\n records.push(...breakCompletions);\n }\n records.push(...lastNormalCompletions);\n return records;\n}\n\nfunction normalCompletionToBreak(completions: Completion[]) {\n completions.forEach(c => {\n c.type = BREAK_COMPLETION;\n });\n}\n\n/**\n * Determine how we should handle the break statement for break completions\n *\n * @param {Completion[]} completions\n * @param {boolean} reachable Whether the break statement is reachable after\n we mark the normal completions _before_ the given break completions as the final\n completions. For example,\n `{ 0 }; break;` is transformed to `{ return 0 }; break;`, the `break` here is unreachable\n and thus can be removed without consequences. We may in the future reserve them instead since\n we do not consistently remove unreachable statements _after_ break\n `{ var x = 0 }; break;` is transformed to `{ var x = 0 }; return void 0;`, the `break` is reachable\n because we can not wrap variable declaration under a return statement\n */\nfunction replaceBreakStatementInBreakCompletion(\n completions: Completion[],\n reachable: boolean,\n) {\n completions.forEach(c => {\n if (c.path.isBreakStatement({ label: null })) {\n if (reachable) {\n c.path.replaceWith(unaryExpression(\"void\", numericLiteral(0)));\n } else {\n c.path.remove();\n }\n }\n });\n}\n\nfunction getStatementListCompletion(\n paths: NodePath[],\n context: CompletionContext,\n): Completion[] {\n const completions = [];\n if (context.canHaveBreak) {\n let lastNormalCompletions = [];\n for (let i = 0; i < paths.length; i++) {\n const path = paths[i];\n const newContext = { ...context, inCaseClause: false };\n if (\n path.isBlockStatement() &&\n (context.inCaseClause || // case test: { break }\n context.shouldPopulateBreak) // case test: { { break } }\n ) {\n newContext.shouldPopulateBreak = true;\n } else {\n newContext.shouldPopulateBreak = false;\n }\n const statementCompletions = _getCompletionRecords(path, newContext);\n if (\n statementCompletions.length > 0 &&\n // we can stop search `paths` when we have seen a `path` that is\n // effectively a `break` statement. Examples are\n // - `break`\n // - `if (true) { 1; break } else { 2; break }`\n // - `{ break }```\n // In other words, the paths after this `path` are unreachable\n statementCompletions.every(c => c.type === BREAK_COMPLETION)\n ) {\n if (\n lastNormalCompletions.length > 0 &&\n statementCompletions.every(c =>\n c.path.isBreakStatement({ label: null }),\n )\n ) {\n // when a break completion has a path as BreakStatement, it must be `{ break }`\n // whose completion value we can not determine, otherwise it would have been\n // replaced by `replaceBreakStatementInBreakCompletion`\n // When we have seen normal completions from the last statement\n // it is safe to stop populating break and mark normal completions as break\n normalCompletionToBreak(lastNormalCompletions);\n completions.push(...lastNormalCompletions);\n // Declarations have empty completion record, however they can not be nested\n // directly in return statement, i.e. `return (var a = 1)` is invalid.\n if (lastNormalCompletions.some(c => c.path.isDeclaration())) {\n completions.push(...statementCompletions);\n replaceBreakStatementInBreakCompletion(\n statementCompletions,\n /* reachable */ true,\n );\n }\n replaceBreakStatementInBreakCompletion(\n statementCompletions,\n /* reachable */ false,\n );\n } else {\n completions.push(...statementCompletions);\n if (!context.shouldPopulateBreak) {\n replaceBreakStatementInBreakCompletion(\n statementCompletions,\n /* reachable */ true,\n );\n }\n }\n break;\n }\n if (i === paths.length - 1) {\n completions.push(...statementCompletions);\n } else {\n lastNormalCompletions = [];\n for (let i = 0; i < statementCompletions.length; i++) {\n const c = statementCompletions[i];\n if (c.type === BREAK_COMPLETION) {\n completions.push(c);\n }\n if (c.type === NORMAL_COMPLETION) {\n lastNormalCompletions.push(c);\n }\n }\n }\n }\n } else if (paths.length) {\n // When we are in a context where `break` must not exist, we can skip linear\n // search on statement lists and assume that the last\n // non-variable-declaration statement determines the completion.\n for (let i = paths.length - 1; i >= 0; i--) {\n const pathCompletions = _getCompletionRecords(paths[i], context);\n if (\n pathCompletions.length > 1 ||\n (pathCompletions.length === 1 &&\n !pathCompletions[0].path.isVariableDeclaration())\n ) {\n completions.push(...pathCompletions);\n break;\n }\n }\n }\n return completions;\n}\n\nfunction _getCompletionRecords(\n path: NodePath,\n context: CompletionContext,\n): Completion[] {\n let records: Completion[] = [];\n if (path.isIfStatement()) {\n records = addCompletionRecords(path.get(\"consequent\"), records, context);\n records = addCompletionRecords(path.get(\"alternate\"), records, context);\n } else if (\n path.isDoExpression() ||\n path.isFor() ||\n path.isWhile() ||\n path.isLabeledStatement()\n ) {\n return addCompletionRecords(path.get(\"body\"), records, context);\n } else if (path.isProgram() || path.isBlockStatement()) {\n return getStatementListCompletion(path.get(\"body\"), context);\n } else if (path.isFunction()) {\n return _getCompletionRecords(path.get(\"body\"), context);\n } else if (path.isTryStatement()) {\n records = addCompletionRecords(path.get(\"block\"), records, context);\n records = addCompletionRecords(path.get(\"handler\"), records, context);\n } else if (path.isCatchClause()) {\n return addCompletionRecords(path.get(\"body\"), records, context);\n } else if (path.isSwitchStatement()) {\n return completionRecordForSwitch(path.get(\"cases\"), records, context);\n } else if (path.isSwitchCase()) {\n return getStatementListCompletion(path.get(\"consequent\"), {\n canHaveBreak: true,\n shouldPopulateBreak: false,\n inCaseClause: true,\n });\n } else if (path.isBreakStatement()) {\n records.push(BreakCompletion(path));\n } else {\n records.push(NormalCompletion(path));\n }\n\n return records;\n}\n\n/**\n * Retrieve the completion records of a given path.\n * Note: to ensure proper support on `break` statement, this method\n * will manipulate the AST around the break statement. Do not call the method\n * twice for the same path.\n *\n * @export\n * @param {NodePath} this\n * @returns {NodePath[]} Completion records\n */\nexport function getCompletionRecords(this: NodePath): NodePath[] {\n const records = _getCompletionRecords(this, {\n canHaveBreak: false,\n shouldPopulateBreak: false,\n inCaseClause: false,\n });\n return records.map(r => r.path);\n}\n\nexport function getSibling(this: NodePath, key: string | number): NodePath {\n return NodePath.get({\n parentPath: this.parentPath,\n parent: this.parent,\n container: this.container,\n listKey: this.listKey,\n key: key,\n }).setContext(this.context);\n}\n\nexport function getPrevSibling(this: NodePath): NodePath {\n // @ts-expect-error todo(flow->ts) this.key could be a string\n return this.getSibling(this.key - 1);\n}\n\nexport function getNextSibling(this: NodePath): NodePath {\n // @ts-expect-error todo(flow->ts) this.key could be a string\n return this.getSibling(this.key + 1);\n}\n\nexport function getAllNextSiblings(this: NodePath): NodePath[] {\n // @ts-expect-error todo(flow->ts) this.key could be a string\n let _key: number = this.key;\n let sibling = this.getSibling(++_key);\n const siblings = [];\n while (sibling.node) {\n siblings.push(sibling);\n sibling = this.getSibling(++_key);\n }\n return siblings;\n}\n\nexport function getAllPrevSiblings(this: NodePath): NodePath[] {\n // @ts-expect-error todo(flow->ts) this.key could be a string\n let _key: number = this.key;\n let sibling = this.getSibling(--_key);\n const siblings = [];\n while (sibling.node) {\n siblings.push(sibling);\n sibling = this.getSibling(--_key);\n }\n return siblings;\n}\n\n// convert \"1\" to 1 (string index to number index)\ntype MaybeToIndex<T extends string> = T extends `${bigint}` ? number : T;\n\ntype Pattern<Obj extends string, Prop extends string> = `${Obj}.${Prop}`;\n\n// split \"body.body.1\" to [\"body\", \"body\", 1]\ntype Split<P extends string> =\n P extends Pattern<infer O, infer U>\n ? [MaybeToIndex<O>, ...Split<U>]\n : [MaybeToIndex<P>];\n\n// traverse the Node with tuple path [\"body\", \"body\", 1]\n// Path should be created with Split\ntype Trav<\n Node extends t.Node | t.Node[],\n Path extends unknown[],\n> = Path extends [infer K, ...infer R]\n ? K extends keyof Node\n ? Node[K] extends t.Node | t.Node[]\n ? R extends []\n ? Node[K]\n : Trav<Node[K], R>\n : never\n : never\n : never;\n\ntype ToNodePath<T> =\n T extends Array<t.Node | null | undefined>\n ? Array<NodePath<T[number]>>\n : T extends t.Node | null | undefined\n ? NodePath<T>\n : never;\n\nfunction get<T extends NodePath, K extends keyof T[\"node\"]>(\n this: T,\n key: K,\n context?: boolean | TraversalContext,\n): T extends any\n ? T[\"node\"][K] extends Array<t.Node | null | undefined>\n ? Array<NodePath<T[\"node\"][K][number]>>\n : T[\"node\"][K] extends t.Node | null | undefined\n ? NodePath<T[\"node\"][K]>\n : never\n : never;\n\nfunction get<T extends NodePath, K extends string>(\n this: T,\n key: K,\n context?: boolean | TraversalContext,\n): T extends any ? ToNodePath<Trav<T[\"node\"], Split<K>>> : never;\n\nfunction get(\n this: NodePath,\n key: string,\n context?: true | TraversalContext,\n): NodePath | NodePath[];\n\nfunction get(\n this: NodePath,\n key: string,\n context: true | TraversalContext = true,\n): NodePath | NodePath[] {\n if (context === true) context = this.context;\n const parts = key.split(\".\");\n if (parts.length === 1) {\n // \"foo\"\n // @ts-expect-error key may not index T\n return _getKey.call(this, key, context);\n } else {\n // \"foo.bar\"\n return _getPattern.call(this, parts, context);\n }\n}\n\nexport { get };\n\nexport function _getKey<T extends t.Node>(\n this: NodePath<T>,\n key: keyof T & string,\n context?: TraversalContext,\n): NodePath | NodePath[] {\n const node = this.node as T;\n const container = node[key];\n\n if (Array.isArray(container)) {\n // requested a container so give them all the paths\n return container.map((_, i) => {\n return NodePath.get({\n listKey: key,\n parentPath: this,\n parent: node,\n container: container,\n key: i,\n }).setContext(context);\n });\n } else {\n return NodePath.get({\n parentPath: this,\n parent: node,\n container: node,\n key: key,\n }).setContext(context);\n }\n}\n\nexport function _getPattern(\n this: NodePath,\n parts: string[],\n context?: TraversalContext,\n): NodePath | NodePath[] {\n let path: NodePath | NodePath[] = this;\n for (const part of parts) {\n if (part === \".\") {\n // @ts-expect-error todo(flow-ts): Can path be an array here?\n path = path.parentPath;\n } else {\n if (Array.isArray(path)) {\n // @ts-expect-error part may not index path\n path = path[part];\n } else {\n path = path.get(part, context);\n }\n }\n }\n return path;\n}\n\nexport function getAssignmentIdentifiers(this: NodePath) {\n return _getAssignmentIdentifiers(this.node);\n}\n\nfunction getBindingIdentifiers(\n duplicates: true,\n): Record<string, t.Identifier[]>;\nfunction getBindingIdentifiers(\n duplicates?: false,\n): Record<string, t.Identifier>;\nfunction getBindingIdentifiers(\n duplicates: boolean,\n): Record<string, t.Identifier[] | t.Identifier>;\n\nfunction getBindingIdentifiers(\n this: NodePath,\n duplicates?: boolean,\n): Record<string, t.Identifier[] | t.Identifier> {\n return _getBindingIdentifiers(this.node, duplicates);\n}\n\nexport { getBindingIdentifiers };\n\nfunction getOuterBindingIdentifiers(\n duplicates: true,\n): Record<string, t.Identifier[]>;\nfunction getOuterBindingIdentifiers(\n duplicates?: false,\n): Record<string, t.Identifier>;\nfunction getOuterBindingIdentifiers(\n duplicates: boolean,\n): Record<string, t.Identifier[] | t.Identifier>;\n\nfunction getOuterBindingIdentifiers(\n this: NodePath,\n duplicates?: boolean,\n): Record<string, t.Identifier[] | t.Identifier> {\n return _getOuterBindingIdentifiers(this.node, duplicates);\n}\n\nexport { getOuterBindingIdentifiers };\n\nfunction getBindingIdentifierPaths(\n duplicates: true,\n outerOnly?: boolean,\n): Record<string, NodePath<t.Identifier>[]>;\nfunction getBindingIdentifierPaths(\n duplicates: false,\n outerOnly?: boolean,\n): Record<string, NodePath<t.Identifier>>;\nfunction getBindingIdentifierPaths(\n duplicates?: boolean,\n outerOnly?: boolean,\n): Record<string, NodePath<t.Identifier> | NodePath<t.Identifier>[]>;\n\n// original source - https://github.com/babel/babel/blob/main/packages/babel-types/src/retrievers/getBindingIdentifiers.js\n// path.getBindingIdentifiers returns nodes where the following re-implementation returns paths\nfunction getBindingIdentifierPaths(\n this: NodePath,\n duplicates: boolean = false,\n outerOnly: boolean = false,\n): Record<string, NodePath<t.Identifier> | NodePath<t.Identifier>[]> {\n const path = this;\n const search = [path];\n const ids = Object.create(null);\n\n while (search.length) {\n const id = search.shift();\n if (!id) continue;\n if (!id.node) continue;\n\n const keys = _getBindingIdentifiers.keys[id.node.type];\n\n if (id.isIdentifier()) {\n if (duplicates) {\n const _ids = (ids[id.node.name] = ids[id.node.name] || []);\n _ids.push(id);\n } else {\n ids[id.node.name] = id;\n }\n continue;\n }\n\n if (id.isExportDeclaration()) {\n const declaration = id.get(\"declaration\");\n if (declaration.isDeclaration()) {\n search.push(declaration);\n }\n continue;\n }\n\n if (outerOnly) {\n if (id.isFunctionDeclaration()) {\n search.push(id.get(\"id\"));\n continue;\n }\n if (id.isFunctionExpression()) {\n continue;\n }\n }\n\n if (keys) {\n for (let i = 0; i < keys.length; i++) {\n const key = keys[i];\n const child = id.get(key);\n if (Array.isArray(child)) {\n search.push(...child);\n } else if (child.node) {\n search.push(child);\n }\n }\n }\n }\n\n return ids;\n}\n\nexport { getBindingIdentifierPaths };\n\nfunction getOuterBindingIdentifierPaths(\n duplicates: true,\n): Record<string, NodePath<t.Identifier>[]>;\nfunction getOuterBindingIdentifierPaths(\n duplicates?: false,\n): Record<string, NodePath<t.Identifier>>;\nfunction getOuterBindingIdentifierPaths(\n duplicates?: boolean,\n): Record<string, NodePath<t.Identifier> | NodePath<t.Identifier>[]>;\n\nfunction getOuterBindingIdentifierPaths(\n this: NodePath,\n duplicates: boolean = false,\n) {\n return this.getBindingIdentifierPaths(duplicates, true);\n}\n\nexport { getOuterBindingIdentifierPaths };\n","// This file contains methods responsible for dealing with comments.\nimport type * as t from \"@babel/types\";\nimport type NodePath from \"./index.ts\";\nimport {\n addComment as _addComment,\n addComments as _addComments,\n} from \"@babel/types\";\n\n/**\n * Share comments amongst siblings.\n */\n\nexport function shareCommentsWithSiblings(this: NodePath) {\n // NOTE: this assumes numbered keys\n if (typeof this.key === \"string\") return;\n\n const node = this.node;\n if (!node) return;\n\n const trailing = node.trailingComments;\n const leading = node.leadingComments;\n if (!trailing && !leading) return;\n\n const prev = this.getSibling(this.key - 1);\n const next = this.getSibling(this.key + 1);\n const hasPrev = Boolean(prev.node);\n const hasNext = Boolean(next.node);\n\n if (hasPrev) {\n if (leading) {\n prev.addComments(\n \"trailing\",\n removeIfExisting(leading, prev.node.trailingComments),\n );\n }\n if (trailing && !hasNext) prev.addComments(\"trailing\", trailing);\n }\n if (hasNext) {\n if (trailing) {\n next.addComments(\n \"leading\",\n removeIfExisting(trailing, next.node.leadingComments),\n );\n }\n if (leading && !hasPrev) next.addComments(\"leading\", leading);\n }\n}\n\nfunction removeIfExisting<T>(list: T[], toRemove?: T[]): T[] {\n if (!toRemove?.length) return list;\n const set = new Set(toRemove);\n return list.filter(el => {\n return !set.has(el);\n });\n}\n\nexport function addComment(\n this: NodePath,\n type: t.CommentTypeShorthand,\n content: string,\n line?: boolean,\n) {\n _addComment(this.node, type, content, line);\n}\n\n/**\n * Give node `comments` of the specified `type`.\n */\n\nexport function addComments(\n this: NodePath,\n type: t.CommentTypeShorthand,\n comments: t.Comment[],\n) {\n _addComments(this.node, type, comments);\n}\n","import type { HubInterface } from \"../hub.ts\";\nimport type TraversalContext from \"../context.ts\";\nimport type { ExplodedTraverseOptions } from \"../index.ts\";\nimport * as virtualTypes from \"./lib/virtual-types.ts\";\nimport buildDebug from \"debug\";\nimport traverse from \"../index.ts\";\nimport type { Visitor } from \"../types.ts\";\nimport Scope from \"../scope/index.ts\";\nimport { validate } from \"@babel/types\";\nimport * as t from \"@babel/types\";\nimport * as cache from \"../cache.ts\";\nimport generator from \"@babel/generator\";\n\n// NodePath is split across many files.\nimport * as NodePath_ancestry from \"./ancestry.ts\";\nimport * as NodePath_inference from \"./inference/index.ts\";\nimport * as NodePath_replacement from \"./replacement.ts\";\nimport * as NodePath_evaluation from \"./evaluation.ts\";\nimport * as NodePath_conversion from \"./conversion.ts\";\nimport * as NodePath_introspection from \"./introspection.ts\";\nimport * as NodePath_context from \"./context.ts\";\nimport * as NodePath_removal from \"./removal.ts\";\nimport * as NodePath_modification from \"./modification.ts\";\nimport * as NodePath_family from \"./family.ts\";\nimport * as NodePath_comments from \"./comments.ts\";\nimport * as NodePath_virtual_types_validator from \"./lib/virtual-types-validator.ts\";\nimport type { NodePathAssertions } from \"./generated/asserts.ts\";\nimport type { NodePathValidators } from \"./generated/validators.ts\";\nimport { setup } from \"./context.ts\";\n\nconst debug = buildDebug(\"babel\");\n\nexport const REMOVED = 1 << 0;\nexport const SHOULD_STOP = 1 << 1;\nexport const SHOULD_SKIP = 1 << 2;\n\ndeclare const bit: import(\"../../../../scripts/babel-plugin-bit-decorator/types.d.ts\").BitDecorator<any>;\n\nconst NodePath_Final = class NodePath {\n constructor(hub: HubInterface, parent: t.Node | null) {\n this.parent = parent;\n this.hub = hub;\n this.data = null;\n\n this.context = null;\n this.scope = null;\n }\n\n declare parent: t.Node;\n declare hub: HubInterface;\n declare data: Record<string | symbol, unknown>;\n // TraversalContext is configured by setContext\n declare context: TraversalContext;\n declare scope: Scope;\n\n contexts: Array<TraversalContext> = [];\n state: any = null;\n opts: ExplodedTraverseOptions | null = null;\n\n @bit.storage _traverseFlags: number;\n @bit(REMOVED) accessor removed = false;\n @bit(SHOULD_STOP) accessor shouldStop = false;\n @bit(SHOULD_SKIP) accessor shouldSkip = false;\n\n skipKeys: Record<string, boolean> | null = null;\n parentPath: NodePath_Final | null = null;\n container: t.Node | Array<t.Node> | null = null;\n listKey: string | null = null;\n key: string | number | null = null;\n node: t.Node | null = null;\n type: t.Node[\"type\"] | null = null;\n\n static get({\n hub,\n parentPath,\n parent,\n container,\n listKey,\n key,\n }: {\n hub?: HubInterface;\n parentPath: NodePath_Final | null;\n parent: t.Node;\n container: t.Node | t.Node[];\n listKey?: string;\n key: string | number;\n }): NodePath_Final {\n if (!hub && parentPath) {\n hub = parentPath.hub;\n }\n\n if (!parent) {\n throw new Error(\"To get a node path the parent needs to exist\");\n }\n\n const targetNode =\n // @ts-expect-error key must present in container\n container[key];\n\n const paths = cache.getOrCreateCachedPaths(hub, parent);\n\n let path = paths.get(targetNode);\n if (!path) {\n path = new NodePath(hub, parent) as NodePath_Final;\n if (targetNode) paths.set(targetNode, path);\n }\n\n setup.call(path, parentPath, container, listKey, key);\n\n return path;\n }\n\n getScope(this: NodePath_Final, scope: Scope): Scope {\n return this.isScope() ? new Scope(this) : scope;\n }\n\n setData(key: string | symbol, val: any): any {\n if (this.data == null) {\n this.data = Object.create(null);\n }\n return (this.data[key] = val);\n }\n\n getData(key: string | symbol, def?: any): any {\n if (this.data == null) {\n this.data = Object.create(null);\n }\n let val = this.data[key];\n if (val === undefined && def !== undefined) val = this.data[key] = def;\n return val;\n }\n\n hasNode(): boolean {\n return this.node != null;\n }\n\n buildCodeFrameError(\n msg: string,\n Error: new () => Error = SyntaxError,\n ): Error {\n return this.hub.buildError(this.node, msg, Error);\n }\n\n traverse<T>(this: NodePath_Final, visitor: Visitor<T>, state: T): void;\n traverse(this: NodePath_Final, visitor: Visitor): void;\n traverse(this: NodePath_Final, visitor: any, state?: any) {\n traverse(this.node, visitor, this.scope, state, this);\n }\n\n set(key: string, node: any) {\n validate(this.node, key, node);\n // @ts-expect-error key must present in this.node\n this.node[key] = node;\n }\n\n getPathLocation(this: NodePath_Final): string {\n const parts = [];\n let path: NodePath_Final = this;\n do {\n let key = path.key;\n if (path.inList) key = `${path.listKey}[${key}]`;\n parts.unshift(key);\n } while ((path = path.parentPath));\n return parts.join(\".\");\n }\n\n debug(this: NodePath_Final, message: string) {\n if (!debug.enabled) return;\n debug(`${this.getPathLocation()} ${this.type}: ${message}`);\n }\n\n toString() {\n return generator(this.node).code;\n }\n\n get inList() {\n return !!this.listKey;\n }\n\n set inList(inList) {\n if (!inList) {\n this.listKey = null;\n }\n // ignore inList = true as it should depend on `listKey`\n }\n\n get parentKey(): string {\n return (this.listKey || this.key) as string;\n }\n};\n\nconst methods = {\n // NodePath_ancestry\n findParent: NodePath_ancestry.findParent,\n find: NodePath_ancestry.find,\n getFunctionParent: NodePath_ancestry.getFunctionParent,\n getStatementParent: NodePath_ancestry.getStatementParent,\n getEarliestCommonAncestorFrom:\n NodePath_ancestry.getEarliestCommonAncestorFrom,\n getDeepestCommonAncestorFrom: NodePath_ancestry.getDeepestCommonAncestorFrom,\n getAncestry: NodePath_ancestry.getAncestry,\n isAncestor: NodePath_ancestry.isAncestor,\n isDescendant: NodePath_ancestry.isDescendant,\n inType: NodePath_ancestry.inType,\n\n // NodePath_inference\n getTypeAnnotation: NodePath_inference.getTypeAnnotation,\n isBaseType: NodePath_inference.isBaseType,\n couldBeBaseType: NodePath_inference.couldBeBaseType,\n baseTypeStrictlyMatches: NodePath_inference.baseTypeStrictlyMatches,\n isGenericType: NodePath_inference.isGenericType,\n\n // NodePath_replacement\n replaceWithMultiple: NodePath_replacement.replaceWithMultiple,\n replaceWithSourceString: NodePath_replacement.replaceWithSourceString,\n replaceWith: NodePath_replacement.replaceWith,\n replaceExpressionWithStatements:\n NodePath_replacement.replaceExpressionWithStatements,\n replaceInline: NodePath_replacement.replaceInline,\n\n // NodePath_evaluation\n evaluateTruthy: NodePath_evaluation.evaluateTruthy,\n evaluate: NodePath_evaluation.evaluate,\n\n // NodePath_conversion\n toComputedKey: NodePath_conversion.toComputedKey,\n ensureBlock: NodePath_conversion.ensureBlock,\n unwrapFunctionEnvironment: NodePath_conversion.unwrapFunctionEnvironment,\n arrowFunctionToExpression: NodePath_conversion.arrowFunctionToExpression,\n splitExportDeclaration: NodePath_conversion.splitExportDeclaration,\n ensureFunctionName: NodePath_conversion.ensureFunctionName,\n\n // NodePath_introspection\n matchesPattern: NodePath_introspection.matchesPattern,\n isStatic: NodePath_introspection.isStatic,\n isNodeType: NodePath_introspection.isNodeType,\n canHaveVariableDeclarationOrExpression:\n NodePath_introspection.canHaveVariableDeclarationOrExpression,\n canSwapBetweenExpressionAndStatement:\n NodePath_introspection.canSwapBetweenExpressionAndStatement,\n isCompletionRecord: NodePath_introspection.isCompletionRecord,\n isStatementOrBlock: NodePath_introspection.isStatementOrBlock,\n referencesImport: NodePath_introspection.referencesImport,\n getSource: NodePath_introspection.getSource,\n willIMaybeExecuteBefore: NodePath_introspection.willIMaybeExecuteBefore,\n _guessExecutionStatusRelativeTo:\n NodePath_introspection._guessExecutionStatusRelativeTo,\n resolve: NodePath_introspection.resolve,\n isConstantExpression: NodePath_introspection.isConstantExpression,\n isInStrictMode: NodePath_introspection.isInStrictMode,\n\n // NodePath_context\n isDenylisted: NodePath_context.isDenylisted,\n visit: NodePath_context.visit,\n skip: NodePath_context.skip,\n skipKey: NodePath_context.skipKey,\n stop: NodePath_context.stop,\n setContext: NodePath_context.setContext,\n requeue: NodePath_context.requeue,\n requeueComputedKeyAndDecorators:\n NodePath_context.requeueComputedKeyAndDecorators,\n\n // NodePath_removal\n remove: NodePath_removal.remove,\n\n // NodePath_modification\n insertBefore: NodePath_modification.insertBefore,\n insertAfter: NodePath_modification.insertAfter,\n unshiftContainer: NodePath_modification.unshiftContainer,\n pushContainer: NodePath_modification.pushContainer,\n\n // NodePath_family\n getOpposite: NodePath_family.getOpposite,\n getCompletionRecords: NodePath_family.getCompletionRecords,\n getSibling: NodePath_family.getSibling,\n getPrevSibling: NodePath_family.getPrevSibling,\n getNextSibling: NodePath_family.getNextSibling,\n getAllNextSiblings: NodePath_family.getAllNextSiblings,\n getAllPrevSiblings: NodePath_family.getAllPrevSiblings,\n get: NodePath_family.get,\n getAssignmentIdentifiers: NodePath_family.getAssignmentIdentifiers,\n getBindingIdentifiers: NodePath_family.getBindingIdentifiers,\n getOuterBindingIdentifiers: NodePath_family.getOuterBindingIdentifiers,\n getBindingIdentifierPaths: NodePath_family.getBindingIdentifierPaths,\n getOuterBindingIdentifierPaths:\n NodePath_family.getOuterBindingIdentifierPaths,\n\n // NodePath_comments\n shareCommentsWithSiblings: NodePath_comments.shareCommentsWithSiblings,\n addComment: NodePath_comments.addComment,\n addComments: NodePath_comments.addComments,\n};\n\nObject.assign(NodePath_Final.prototype, methods);\n\nif (!process.env.BABEL_8_BREAKING && !USE_ESM) {\n // String(x) is workaround for rollup\n\n // @ts-expect-error babel 7 only\n NodePath_Final.prototype.arrowFunctionToShadowed =\n // @ts-expect-error babel 7 only\n NodePath_conversion[String(\"arrowFunctionToShadowed\")];\n\n Object.assign(NodePath_Final.prototype, {\n // @ts-expect-error Babel 7 only\n has: NodePath_introspection[String(\"has\")],\n // @ts-expect-error Babel 7 only\n is: NodePath_introspection[String(\"is\")],\n // @ts-expect-error Babel 7 only\n isnt: NodePath_introspection[String(\"isnt\")],\n // @ts-expect-error Babel 7 only\n equals: NodePath_introspection[String(\"equals\")],\n // @ts-expect-error Babel 7 only\n hoist: NodePath_modification[String(\"hoist\")],\n updateSiblingKeys: NodePath_modification.updateSiblingKeys,\n call: NodePath_context.call,\n // @ts-expect-error Babel 7 only\n isBlacklisted: NodePath_context[String(\"isBlacklisted\")],\n setScope: NodePath_context.setScope,\n resync: NodePath_context.resync,\n popContext: NodePath_context.popContext,\n pushContext: NodePath_context.pushContext,\n setup: NodePath_context.setup,\n setKey: NodePath_context.setKey,\n });\n}\n\nif (!process.env.BABEL_8_BREAKING) {\n // @ts-expect-error The original _guessExecutionStatusRelativeToDifferentFunctions only worked for paths in\n // different functions, but _guessExecutionStatusRelativeTo works as a replacement in those cases.\n NodePath_Final.prototype._guessExecutionStatusRelativeToDifferentFunctions =\n NodePath_introspection._guessExecutionStatusRelativeTo;\n\n // @ts-expect-error The original _guessExecutionStatusRelativeToDifferentFunctions only worked for paths in\n // different functions, but _guessExecutionStatusRelativeTo works as a replacement in those cases.\n NodePath_Final.prototype._guessExecutionStatusRelativeToDifferentFunctions =\n NodePath_introspection._guessExecutionStatusRelativeTo;\n\n Object.assign(NodePath_Final.prototype, {\n // NodePath_inference\n _getTypeAnnotation: NodePath_inference._getTypeAnnotation,\n\n // NodePath_replacement\n _replaceWith: NodePath_replacement._replaceWith,\n\n // NodePath_introspection\n _resolve: NodePath_introspection._resolve,\n\n // NodePath_context\n _call: NodePath_context._call,\n _resyncParent: NodePath_context._resyncParent,\n _resyncKey: NodePath_context._resyncKey,\n _resyncList: NodePath_context._resyncList,\n _resyncRemoved: NodePath_context._resyncRemoved,\n _getQueueContexts: NodePath_context._getQueueContexts,\n\n // NodePath_removal\n _removeFromScope: NodePath_removal._removeFromScope,\n _callRemovalHooks: NodePath_removal._callRemovalHooks,\n _remove: NodePath_removal._remove,\n _markRemoved: NodePath_removal._markRemoved,\n _assertUnremoved: NodePath_removal._assertUnremoved,\n\n // NodePath_modification\n _containerInsert: NodePath_modification._containerInsert,\n _containerInsertBefore: NodePath_modification._containerInsertBefore,\n _containerInsertAfter: NodePath_modification._containerInsertAfter,\n _verifyNodeList: NodePath_modification._verifyNodeList,\n\n // NodePath_family\n _getKey: NodePath_family._getKey,\n _getPattern: NodePath_family._getPattern,\n });\n}\n\n// we can not use `import { TYPES } from \"@babel/types\"` here\n// because the transformNamedBabelTypesImportToDestructuring plugin in babel.config.js\n// does not offer live bindings for `TYPES`\n// we can change to `import { TYPES }` when we are publishing ES modules only\nfor (const type of t.TYPES) {\n const typeKey = `is${type}`;\n // @ts-expect-error typeKey must present in t\n const fn = t[typeKey];\n // @ts-expect-error augmenting NodePath prototype\n NodePath_Final.prototype[typeKey] = function (opts: any) {\n return fn(this.node, opts);\n };\n\n // @ts-expect-error augmenting NodePath prototype\n NodePath_Final.prototype[`assert${type}`] = function (opts: any) {\n if (!fn(this.node, opts)) {\n throw new TypeError(`Expected node path of type ${type}`);\n }\n };\n}\n\n// Register virtual types validators after base types validators\nObject.assign(NodePath_Final.prototype, NodePath_virtual_types_validator);\n\nfor (const type of Object.keys(virtualTypes) as (keyof typeof virtualTypes)[]) {\n if (type[0] === \"_\") continue;\n if (!t.TYPES.includes(type)) t.TYPES.push(type);\n}\n\ninterface NodePathOverwrites {\n // We need to re-define these predicate and assertion\n // methods here, because we cannot refine `this` in\n // a function declaration.\n // See https://github.com/microsoft/TypeScript/issues/38150\n\n /**\n * NOTE: This assertion doesn't narrow the type on unions of\n * NodePaths, due to https://github.com/microsoft/TypeScript/issues/44212\n *\n * @see ./conversion.ts for implementation.\n */\n ensureBlock(\n this: NodePath_Final,\n ): asserts this is NodePath_Final<\n (\n | t.Loop\n | t.WithStatement\n | t.Function\n | t.LabeledStatement\n | t.CatchClause\n ) & { body: t.BlockStatement }\n >;\n /**\n * @see ./introspection.ts for implementation.\n */\n isStatementOrBlock(\n this: NodePath_Final,\n ): this is NodePath_Final<t.Statement | t.Block>;\n}\n\ntype NodePathMixins = Omit<typeof methods, keyof NodePathOverwrites>;\n\ninterface NodePath<T extends t.Node>\n extends InstanceType<typeof NodePath_Final>,\n NodePathAssertions,\n NodePathValidators,\n NodePathMixins,\n NodePathOverwrites {\n type: T[\"type\"] | null;\n node: T;\n parent: t.ParentMaps[T[\"type\"]];\n parentPath: t.ParentMaps[T[\"type\"]] extends null\n ? null\n : NodePath_Final<t.ParentMaps[T[\"type\"]]> | null;\n}\n\n// This trick is necessary so that\n// NodePath_Final<A | B> is the same as NodePath_Final<A> | NodePath_Final<B>\ntype NodePath_Final<T extends t.Node = t.Node> = T extends any\n ? NodePath<T>\n : never;\n\nexport { NodePath_Final as default, type NodePath as NodePath_Internal };\n","import NodePath from \"./path/index.ts\";\nimport { VISITOR_KEYS } from \"@babel/types\";\nimport type Scope from \"./scope/index.ts\";\nimport type { ExplodedTraverseOptions } from \"./index.ts\";\nimport type * as t from \"@babel/types\";\nimport type { Visitor } from \"./types.ts\";\nimport { popContext, pushContext, resync } from \"./path/context.ts\";\n\nexport default class TraversalContext<S = unknown> {\n constructor(\n scope: Scope,\n opts: ExplodedTraverseOptions<S>,\n state: S,\n parentPath: NodePath,\n ) {\n this.parentPath = parentPath;\n this.scope = scope;\n this.state = state;\n this.opts = opts;\n }\n\n declare parentPath: NodePath;\n declare scope: Scope;\n declare state: S;\n declare opts: ExplodedTraverseOptions<S>;\n queue: Array<NodePath> | null = null;\n priorityQueue: Array<NodePath> | null = null;\n\n /**\n * This method does a simple check to determine whether or not we really need to attempt\n * visit a node. This will prevent us from constructing a NodePath.\n */\n\n shouldVisit(node: t.Node): boolean {\n const opts = this.opts as Visitor;\n if (opts.enter || opts.exit) return true;\n\n // check if we have a visitor for this node\n if (opts[node.type]) return true;\n\n // check if we're going to traverse into this node\n const keys: Array<string> | undefined = VISITOR_KEYS[node.type];\n if (!keys?.length) return false;\n\n // we need to traverse into this node so ensure that it has children to traverse into!\n for (const key of keys) {\n if (\n // @ts-expect-error key is from visitor keys\n node[key]\n ) {\n return true;\n }\n }\n\n return false;\n }\n\n create(\n node: t.Node,\n container: t.Node | t.Node[],\n key: string | number,\n listKey?: string,\n ): NodePath {\n // We don't need to `.setContext()` here, since `.visitQueue()` already\n // calls `.pushContext`.\n return NodePath.get({\n parentPath: this.parentPath,\n parent: node,\n container,\n key: key,\n listKey,\n });\n }\n\n maybeQueue(path: NodePath, notPriority?: boolean) {\n if (this.queue) {\n if (notPriority) {\n this.queue.push(path);\n } else {\n this.priorityQueue.push(path);\n }\n }\n }\n\n visitMultiple(container: t.Node[], parent: t.Node, listKey: string) {\n // nothing to traverse!\n if (container.length === 0) return false;\n\n const queue = [];\n\n // build up initial queue\n for (let key = 0; key < container.length; key++) {\n const node = container[key];\n if (node && this.shouldVisit(node)) {\n queue.push(this.create(parent, container, key, listKey));\n }\n }\n\n return this.visitQueue(queue);\n }\n\n visitSingle(node: t.Node, key: string): boolean {\n if (\n this.shouldVisit(\n // @ts-expect-error key may not index node\n node[key],\n )\n ) {\n return this.visitQueue([this.create(node, node, key)]);\n } else {\n return false;\n }\n }\n\n visitQueue(queue: Array<NodePath>): boolean {\n // set queue\n this.queue = queue;\n this.priorityQueue = [];\n\n const visited = new WeakSet();\n let stop = false;\n let visitIndex = 0;\n\n // visit the queue\n for (; visitIndex < queue.length; ) {\n const path = queue[visitIndex];\n visitIndex++;\n resync.call(path);\n\n if (\n path.contexts.length === 0 ||\n path.contexts[path.contexts.length - 1] !== this\n ) {\n // The context might already have been pushed when this path was inserted and queued.\n // If we always re-pushed here, we could get duplicates and risk leaving contexts\n // on the stack after the traversal has completed, which could break things.\n pushContext.call(path, this);\n }\n\n // this path no longer belongs to the tree\n if (path.key === null) continue;\n\n // ensure we don't visit the same node twice\n const { node } = path;\n if (visited.has(node)) continue;\n if (node) visited.add(node);\n\n if (path.visit()) {\n stop = true;\n break;\n }\n\n if (this.priorityQueue.length) {\n stop = this.visitQueue(this.priorityQueue);\n this.priorityQueue = [];\n this.queue = queue;\n if (stop) break;\n }\n }\n\n // pop contexts\n for (let i = 0; i < visitIndex; i++) {\n popContext.call(queue[i]);\n }\n\n // clear queue\n this.queue = null;\n\n return stop;\n }\n\n visit(node: t.Node, key: string) {\n // @ts-expect-error key may not index node\n const nodes = node[key] as t.Node | t.Node[] | null;\n if (!nodes) return false;\n\n if (Array.isArray(nodes)) {\n return this.visitMultiple(nodes, node, key);\n } else {\n return this.visitSingle(node, key);\n }\n }\n}\n","import TraversalContext from \"./context.ts\";\nimport type { ExplodedTraverseOptions } from \"./index.ts\";\nimport type NodePath from \"./path/index.ts\";\nimport type Scope from \"./scope/index.ts\";\nimport type * as t from \"@babel/types\";\nimport { VISITOR_KEYS } from \"@babel/types\";\n\n/**\n * Traverse the children of given node\n * @param {Node} node\n * @param {TraverseOptions} opts The traverse options used to create a new traversal context\n * @param {scope} scope A traversal scope used to create a new traversal context. When opts.noScope is true, scope should not be provided\n * @param {any} state A user data storage provided as the second callback argument for traversal visitors\n * @param {NodePath} path A NodePath of given node\n * @param {Record<string, boolean>} skipKeys A map from key names to whether that should be skipped during traversal. The skipKeys are applied to every descendants\n * @returns {boolean} Whether the traversal stops early\n\n * @note This function does not visit the given `node`.\n */\nexport function traverseNode<S = unknown>(\n node: t.Node,\n opts: ExplodedTraverseOptions<S>,\n scope?: Scope,\n state?: S,\n path?: NodePath,\n skipKeys?: Record<string, boolean>,\n visitSelf?: boolean,\n): boolean {\n const keys = VISITOR_KEYS[node.type];\n if (!keys) return false;\n\n const context = new TraversalContext<S>(scope, opts, state, path);\n if (visitSelf) {\n if (skipKeys?.[path.parentKey]) return false;\n return context.visitQueue([path]);\n }\n\n for (const key of keys) {\n if (skipKeys?.[key]) continue;\n if (context.visit(node, key)) {\n return true;\n }\n }\n\n return false;\n}\n","// This file contains methods responsible for maintaining a TraversalContext.\n\nimport { traverseNode } from \"../traverse-node.ts\";\nimport { SHOULD_SKIP, SHOULD_STOP } from \"./index.ts\";\nimport { _markRemoved } from \"./removal.ts\";\nimport type TraversalContext from \"../context.ts\";\nimport type { VisitPhase } from \"../types.ts\";\nimport type NodePath from \"./index.ts\";\nimport * as t from \"@babel/types\";\n\nexport function call(this: NodePath, key: VisitPhase): boolean {\n const opts = this.opts;\n\n this.debug(key);\n\n if (this.node) {\n if (_call.call(this, opts[key])) return true;\n }\n\n if (this.node) {\n return _call.call(this, opts[this.node.type]?.[key]);\n }\n\n return false;\n}\n\nexport function _call(this: NodePath, fns?: Array<Function>): boolean {\n if (!fns) return false;\n\n for (const fn of fns) {\n if (!fn) continue;\n\n const node = this.node;\n if (!node) return true;\n\n const ret = fn.call(this.state, this, this.state);\n if (ret && typeof ret === \"object\" && typeof ret.then === \"function\") {\n throw new Error(\n `You appear to be using a plugin with an async traversal visitor, ` +\n `which your current version of Babel does not support. ` +\n `If you're using a published plugin, you may need to upgrade ` +\n `your @babel/core version.`,\n );\n }\n if (ret) {\n throw new Error(`Unexpected return value from visitor method ${fn}`);\n }\n\n // node has been replaced, it will have been requeued\n if (this.node !== node) return true;\n\n // this.shouldSkip || this.shouldStop || this.removed\n if (this._traverseFlags > 0) return true;\n }\n\n return false;\n}\n\nexport function isDenylisted(this: NodePath): boolean {\n // @ts-expect-error TODO(Babel 8): Remove blacklist\n const denylist = this.opts.denylist ?? this.opts.blacklist;\n return denylist?.includes(this.node.type);\n}\n\nif (!process.env.BABEL_8_BREAKING && !USE_ESM) {\n // eslint-disable-next-line no-restricted-globals\n exports.isBlacklisted = isDenylisted;\n}\n\nfunction restoreContext(path: NodePath, context: TraversalContext) {\n if (path.context !== context) {\n path.context = context;\n path.state = context.state;\n path.opts = context.opts;\n }\n}\n\nexport function visit(this: NodePath): boolean {\n if (!this.node) {\n return false;\n }\n\n if (this.isDenylisted()) {\n return false;\n }\n\n if (this.opts.shouldSkip?.(this)) {\n return false;\n }\n\n const currentContext = this.context;\n // Note: We need to check \"this.shouldSkip\" first because\n // another visitor can set it to true. Usually .shouldSkip is false\n // before calling the enter visitor, but it can be true in case of\n // a requeued node (e.g. by .replaceWith()) that is then marked\n // with .skip().\n if (this.shouldSkip || call.call(this, \"enter\")) {\n this.debug(\"Skip...\");\n return this.shouldStop;\n }\n restoreContext(this, currentContext);\n\n this.debug(\"Recursing into...\");\n this.shouldStop = traverseNode(\n this.node,\n this.opts,\n this.scope,\n this.state,\n this,\n this.skipKeys,\n );\n\n restoreContext(this, currentContext);\n\n call.call(this, \"exit\");\n\n return this.shouldStop;\n}\n\nexport function skip(this: NodePath) {\n this.shouldSkip = true;\n}\n\nexport function skipKey(this: NodePath, key: string) {\n if (this.skipKeys == null) {\n this.skipKeys = {};\n }\n this.skipKeys[key] = true;\n}\n\nexport function stop(this: NodePath) {\n // this.shouldSkip = true; this.shouldStop = true;\n this._traverseFlags |= SHOULD_SKIP | SHOULD_STOP;\n}\n\nexport function setScope(this: NodePath) {\n if (this.opts?.noScope) return;\n\n let path = this.parentPath;\n\n if (\n // Skip method scope if is computed method key or decorator expression\n ((this.key === \"key\" || this.listKey === \"decorators\") &&\n path.isMethod()) ||\n // Skip switch scope if for discriminant (`x` in `switch (x) {}`).\n (this.key === \"discriminant\" && path.isSwitchStatement())\n ) {\n path = path.parentPath;\n }\n\n let target;\n while (path && !target) {\n if (path.opts?.noScope) return;\n\n target = path.scope;\n path = path.parentPath;\n }\n\n this.scope = this.getScope(target);\n this.scope?.init();\n}\n\nexport function setContext<S = unknown>(\n this: NodePath,\n context?: TraversalContext<S>,\n) {\n if (this.skipKeys != null) {\n this.skipKeys = {};\n }\n // this.shouldSkip = false; this.shouldStop = false; this.removed = false;\n this._traverseFlags = 0;\n\n if (context) {\n this.context = context;\n this.state = context.state;\n // Discard the S type parameter from context.opts\n this.opts = context.opts as typeof this.opts;\n }\n\n setScope.call(this);\n\n return this;\n}\n\n/**\n * Here we resync the node paths `key` and `container`. If they've changed according\n * to what we have stored internally then we attempt to resync by crawling and looking\n * for the new values.\n */\n\nexport function resync(this: NodePath) {\n if (this.removed) return;\n\n _resyncParent.call(this);\n _resyncList.call(this);\n _resyncKey.call(this);\n //this._resyncRemoved();\n}\n\nexport function _resyncParent(this: NodePath) {\n if (this.parentPath) {\n this.parent = this.parentPath.node;\n }\n}\n\nexport function _resyncKey(this: NodePath) {\n if (!this.container) return;\n\n if (\n this.node ===\n // @ts-expect-error this.key should present in this.container\n this.container[this.key]\n ) {\n return;\n }\n\n // grrr, path key is out of sync. this is likely due to a modification to the AST\n // not done through our path APIs\n\n if (Array.isArray(this.container)) {\n for (let i = 0; i < this.container.length; i++) {\n if (this.container[i] === this.node) {\n setKey.call(this, i);\n return;\n }\n }\n } else {\n for (const key of Object.keys(this.container)) {\n // @ts-expect-error this.key should present in this.container\n if (this.container[key] === this.node) {\n setKey.call(this, key);\n return;\n }\n }\n }\n\n // ¯\\_(ツ)_/¯ who knows where it's gone lol\n this.key = null;\n}\n\nexport function _resyncList(this: NodePath) {\n if (!this.parent || !this.inList) return;\n\n const newContainer =\n // @ts-expect-error this.listKey should present in this.parent\n this.parent[this.listKey];\n if (this.container === newContainer) return;\n\n // container is out of sync. this is likely the result of it being reassigned\n this.container = newContainer || null;\n}\n\nexport function _resyncRemoved(this: NodePath) {\n if (\n this.key == null ||\n !this.container ||\n // @ts-expect-error this.key should present in this.container\n this.container[this.key] !== this.node\n ) {\n _markRemoved.call(this);\n }\n}\n\nexport function popContext(this: NodePath) {\n this.contexts.pop();\n if (this.contexts.length > 0) {\n this.setContext(this.contexts[this.contexts.length - 1]);\n } else {\n this.setContext(undefined);\n }\n}\n\nexport function pushContext(this: NodePath, context: TraversalContext) {\n this.contexts.push(context);\n this.setContext(context);\n}\n\nexport function setup(\n this: NodePath,\n parentPath: NodePath | undefined,\n container: t.Node | t.Node[],\n listKey: string,\n key: string | number,\n) {\n this.listKey = listKey;\n this.container = container;\n\n this.parentPath = parentPath || this.parentPath;\n setKey.call(this, key);\n}\n\nexport function setKey(this: NodePath, key: string | number) {\n this.key = key;\n this.node =\n // @ts-expect-error this.key must present in this.container\n this.container[this.key];\n this.type = this.node?.type;\n}\n\nexport function requeue(this: NodePath, pathToQueue = this) {\n if (pathToQueue.removed) return;\n\n // If a path is skipped, and then replaced with a\n // new one, the new one shouldn't probably be skipped.\n if (process.env.BABEL_8_BREAKING) {\n pathToQueue.shouldSkip = false;\n }\n\n // TODO(loganfsmyth): This should be switched back to queue in parent contexts\n // automatically once #2892 and #4135 have been resolved. See #4140.\n // let contexts = this._getQueueContexts();\n const contexts = this.contexts;\n\n for (const context of contexts) {\n context.maybeQueue(pathToQueue);\n }\n}\n\nexport function requeueComputedKeyAndDecorators(\n this: NodePath<t.Method | t.Property>,\n) {\n const { context, node } = this;\n if (!t.isPrivate(node) && node.computed) {\n context.maybeQueue(this.get(\"key\"));\n }\n if (node.decorators) {\n for (const decorator of this.get(\"decorators\")) {\n context.maybeQueue(decorator);\n }\n }\n}\n\nexport function _getQueueContexts(this: NodePath) {\n let path = this;\n let contexts = this.contexts;\n while (!contexts.length) {\n path = path.parentPath;\n if (!path) break;\n contexts = path.contexts;\n }\n return contexts;\n}\n","import type Scope from \"./scope/index.ts\";\nimport type { Node } from \"@babel/types\";\n\nexport interface HubInterface {\n getCode(): string | void;\n getScope(): Scope | void;\n addHelper(name: string): any;\n buildError(node: Node, msg: string, Error: new () => Error): Error;\n}\n\nexport default class Hub implements HubInterface {\n getCode() {}\n\n getScope() {}\n\n addHelper() {\n throw new Error(\"Helpers are not supported by the default hub.\");\n }\n\n buildError(node: Node, msg: string, Error = TypeError): Error {\n return new Error(msg);\n }\n}\n","import \"./path/context.ts\"; // We have some cycles, this ensures correct order to avoid TDZ\nimport * as visitors from \"./visitors.ts\";\nimport {\n VISITOR_KEYS,\n removeProperties,\n type RemovePropertiesOptions,\n traverseFast,\n} from \"@babel/types\";\nimport type * as t from \"@babel/types\";\nimport * as cache from \"./cache.ts\";\nimport type NodePath from \"./path/index.ts\";\nimport type { default as Scope, Binding } from \"./scope/index.ts\";\nimport type { ExplodedVisitor, Visitor, VisitorBase } from \"./types.ts\";\nimport { traverseNode } from \"./traverse-node.ts\";\n\nexport type { ExplodedVisitor, Visitor, VisitorBase, Binding };\nexport { default as NodePath } from \"./path/index.ts\";\nexport { default as Scope } from \"./scope/index.ts\";\nexport { default as Hub } from \"./hub.ts\";\nexport type { HubInterface } from \"./hub.ts\";\n\nexport { visitors };\n\nexport type TraverseOptions<S = t.Node> = {\n scope?: Scope;\n noScope?: boolean;\n denylist?: string[];\n shouldSkip?: (node: NodePath) => boolean;\n} & Visitor<S>;\n\nexport type ExplodedTraverseOptions<S = t.Node> = TraverseOptions<S> &\n ExplodedVisitor<S>;\n\nfunction traverse<S>(\n parent: t.Node,\n opts: TraverseOptions<S>,\n scope: Scope | undefined,\n state: S,\n parentPath?: NodePath,\n visitSelf?: boolean,\n): void;\n\nfunction traverse(\n parent: t.Node,\n opts: TraverseOptions,\n scope?: Scope,\n state?: any,\n parentPath?: NodePath,\n visitSelf?: boolean,\n): void;\n\nfunction traverse<Options extends TraverseOptions>(\n parent: t.Node,\n // @ts-expect-error provide {} as default value for Options\n opts: Options = {},\n scope?: Scope,\n state?: any,\n parentPath?: NodePath,\n visitSelf?: boolean,\n) {\n if (!parent) return;\n\n if (!opts.noScope && !scope) {\n if (parent.type !== \"Program\" && parent.type !== \"File\") {\n throw new Error(\n \"You must pass a scope and parentPath unless traversing a Program/File. \" +\n `Instead of that you tried to traverse a ${parent.type} node without ` +\n \"passing scope and parentPath.\",\n );\n }\n }\n\n if (!parentPath && visitSelf) {\n throw new Error(\"visitSelf can only be used when providing a NodePath.\");\n }\n\n if (!VISITOR_KEYS[parent.type]) {\n return;\n }\n\n visitors.explode(opts as Visitor);\n\n traverseNode(\n parent,\n opts as ExplodedVisitor,\n scope,\n state,\n parentPath,\n /* skipKeys */ null,\n visitSelf,\n );\n}\n\nexport default traverse;\n\ntraverse.visitors = visitors;\ntraverse.verify = visitors.verify;\ntraverse.explode = visitors.explode;\n\ntraverse.cheap = function (node: t.Node, enter: (node: t.Node) => void) {\n traverseFast(node, enter);\n return;\n};\n\ntraverse.node = function (\n node: t.Node,\n opts: ExplodedTraverseOptions,\n scope?: Scope,\n state?: any,\n path?: NodePath,\n skipKeys?: Record<string, boolean>,\n) {\n traverseNode(node, opts, scope, state, path, skipKeys);\n // traverse.node always returns undefined\n};\n\ntraverse.clearNode = function (node: t.Node, opts?: RemovePropertiesOptions) {\n removeProperties(node, opts);\n};\n\ntraverse.removeProperties = function (\n tree: t.Node,\n opts?: RemovePropertiesOptions,\n) {\n traverseFast(tree, traverse.clearNode, opts);\n return tree;\n};\n\ntype HasDenylistedTypeState = {\n has: boolean;\n type: t.Node[\"type\"];\n};\nfunction hasDenylistedType(path: NodePath, state: HasDenylistedTypeState) {\n if (path.node.type === state.type) {\n state.has = true;\n path.stop();\n }\n}\n\ntraverse.hasType = function (\n tree: t.Node,\n type: t.Node[\"type\"],\n denylistTypes?: Array<string>,\n): boolean {\n // the node we're searching in is denylisted\n if (denylistTypes?.includes(tree.type)) return false;\n\n // the type we're looking for is the same as the passed node\n if (tree.type === type) return true;\n\n const state: HasDenylistedTypeState = {\n has: false,\n type: type,\n };\n\n traverse(\n tree,\n {\n noScope: true,\n denylist: denylistTypes,\n enter: hasDenylistedType,\n },\n null,\n state,\n );\n\n return state.has;\n};\n\ntraverse.cache = cache;\n"],"names":["ReferencedIdentifier","ReferencedMemberExpression","BindingIdentifier","Statement","Expression","Scope","Referenced","BlockScoped","Var","User","Generated","Pure","Flow","RestProperty","SpreadProperty","ExistentialTypeParam","NumericLiteralTypeAnnotation","ForAwaitStatement","isBinding","isBlockScoped","nodeIsBlockScoped","isExportDeclaration","isExpression","nodeIsExpression","isFlow","nodeIsFlow","isForStatement","isForXStatement","isIdentifier","isImportDeclaration","isImportSpecifier","isJSXIdentifier","isJSXMemberExpression","isMemberExpression","isRestElement","nodeIsRestElement","isReferenced","nodeIsReferenced","isScope","nodeIsScope","isStatement","nodeIsStatement","isVar","nodeIsVar","isVariableDeclaration","react","isForOfStatement","_t","isCompatTag","isReferencedIdentifier","opts","node","parent","name","parentPath","isReferencedMemberExpression","isBindingIdentifier","grandparent","left","init","isUser","loc","isGenerated","isPure","constantsOnly","scope","importKind","exportKind","isRestProperty","isObjectPattern","isSpreadProperty","isObjectExpression","isForAwaitStatement","await","DEPRECATED_KEYS","DEPRECATED_ALIASES","FLIPPED_ALIAS_KEYS","TYPES","__internal__deprecationWarning","deprecationWarning","isVirtualType","type","virtualTypes","isExplodedVisitor","visitor","_exploded","explode$1","nodeType","Object","keys","shouldIgnoreKey","parts","split","length","fns","part","verify$1","__esModule","ensureEntranceObjects","ensureCallbackArrays","wrapCheck","types","mergePair","aliases","deprecatedKey","deprecatedAlias","alias","existing","assign","_verified","Error","validateVisitorMethods","includes","visitors","visitorKey","path","val","concat","fn","TypeError","merge","states","wrapper","mergedVisitor","i","state","topVisitor","wrapWithStateOrWrapper","key","typeVisitor","nodeVisitor","oldVisitor","newVisitor","phase","Array","isArray","map","newFn","call","toString","obj","enter","exit","fnKey","validator","virtualTypesValidators","apply","arguments","dest","src","_environmentVisitor","FunctionParent","isArrowFunctionExpression","skip","isMethod","requeueComputedKeyAndDecorators","Property","isObjectProperty","environmentVisitor","getAssignmentIdentifiers","renameVisitor","oldName","newName","bindingIdentifierEquals","binding","identifier","ObjectProperty","shorthand","getBindingIdentifier","AssignmentExpression|Declaration|VariableDeclarator","ids","isAssignmentExpression","getOuterBindingIdentifiers","Renamer","constructor","maybeConvertFromExportDeclaration","parentDeclar","maybeExportDeclar","isExportDefaultDeclaration","declaration","t","isDeclaration","id","isExportAllDeclaration","splitExportDeclaration","maybeConvertFromClassFunctionDeclaration","maybeConvertFromClassFunctionExpression","rename","find","isFunctionExpression","isClassExpression","bindingIds","blockToTraverse","block","skipKeys","discriminant","computed","isObjectMethod","decorators","traverseNode","explode","removeOwnBinding","bindings","Binding","kind","isDeclaredInLoop","reassign","clearValue","constantViolations","constant","referencePaths","referenced","references","deoptValue","hasDeoptedValue","setValue","value","hasValue","push","reference","dereference","isFunctionParent","isWhile","pathsCache","WeakMap","clear","clearPath","clearScope","nullHub","freeze","getCachedPaths","hub","get","getOrCreateCachedPaths","parents","set","paths","Map","NOT_LOCAL_BINDING","assignmentExpression","callExpression","cloneNode","getBindingIdentifiers","isArrayExpression","isBinary","isCallExpression","isClass","isClassBody","isClassDeclaration","isExportNamedDeclaration","isFunctionDeclaration","isLiteral","isModuleSpecifier","isNullLiteral","isProperty","isPureish","isRegExpLiteral","isSuper","isTaggedTemplateExpression","isTemplateLiteral","isThisExpression","isUnaryExpression","expressionStatement","matchesPattern","memberExpression","numericLiteral","toIdentifier","variableDeclaration","variableDeclarator","isRecordExpression","isTupleExpression","isTopicReference","isMetaProperty","isPrivateName","buildUndefinedNode","sequenceExpression","gatherNodeParts","source","specifiers","e","local","object","property","callee","properties","argument","expression","meta","openingElement","openingFragment","namespace","collectorVisitor","ForStatement","declar","parentScope","getFunctionParent","getProgramParent","registerBinding","Declaration","registerDeclaration","ImportDeclaration","getBlockParent","TSImportEqualsDeclaration","isTSQualifiedName","right","isTSImportEqualsDeclaration","ForXStatement","isPattern","ExportDeclaration","getBinding","decl","declarations","LabeledStatement","AssignmentExpression","assignments","UpdateExpression","UnaryExpression","operator","CatchClause","Function","params","param","ClassExpression","TSTypeAnnotation","uid","inited","labels","globals","uids","data","crawling","cached","scopeCache","builtin","contextVariables","shouldSkip","listKey","generateDeclaredUidIdentifier","generateUidIdentifier","generateUid","replace","hasLabel","hasBinding","hasGlobal","hasReference","program","generateUidBasedOnNode","defaultName","join","slice","generateUidIdentifierBasedOnNode","isStatic","maybeGenerateMemoised","dontPush","checkBlockScopedCollisions","duplicate","buildError","renamer","dump","sep","repeat","console","log","violations","getLabel","registerLabel","label","isLabeledStatement","declare","isTypeDeclaration","specifier","isTypeSpecifier","registerConstantViolation","bindingPath","ReferenceError","declarators","getOwnBinding","addGlobal","hasUid","superClass","body","method","elem","elements","prop","static","expressions","tag","noGlobals","quasi","isStringLiteral","setData","getData","removeData","crawl","create","isProgram","programParent","visit","typeVisitors","traverse","ref","getPatternParent","isBlockStatement","isSwitchStatement","unique","isFunction","pushContainer","isLoop","isCatchClause","ensureBlock","blockHoist","_blockHoist","dataKey","declarPath","unshiftContainer","declarator","len","isBlockParent","getAllBindings","previousPath","getOwnBindingIdentifier","hasOwnBinding","noUids","parentHasBinding","moveBindingTo","info","removeBinding","hoistVariables","emit","seen","Set","isVariableDeclarator","has","add","firstId","isFor","replaceWith","remove","expr","VISITOR_KEYS","findParent","callback","p","getStatementParent","container","isFile","getEarliestCommonAncestorFrom","getDeepestCommonAncestorFrom","deepest","ancestries","earliest","ancestry","earliestKeyIndex","indexOf","parentKey","currentKeyIndex","filter","minDepth","Infinity","lastCommonIndex","lastCommon","unshift","first","depthLoop","shouldMatch","getAncestry","isAncestor","maybeDescendant","isDescendant","maybeAncestor","inType","candidateTypes","createFlowUnionType","createTSUnionType","createUnionTypeAnnotation","isFlowType","isTSType","createUnionType","every","v","BOOLEAN_NUMBER_BINARY_OPERATORS","createTypeAnnotationBasedOnTypeof","numberTypeAnnotation","voidTypeAnnotation","typeAnnotation","getTypeAnnotationBindingConstantViolations","functionConstantViolations","getConstantViolationsBefore","testType","getConditionalAnnotation","testConstantViolations","ifStatement","violation","getTypeAnnotation","functions","resolve","status","_guessExecutionStatusRelativeTo","inferAnnotationFromBinaryExpression","target","typeofPath","typePath","typeValue","getParentConditionalPath","isIfStatement","isConditionalExpression","test","isLogicalExpression","isBinaryExpression","BOOLEAN_BINARY_OPERATORS","BOOLEAN_UNARY_OPERATORS","NUMBER_BINARY_OPERATORS","NUMBER_UNARY_OPERATORS","STRING_UNARY_OPERATORS","anyTypeAnnotation","arrayTypeAnnotation","booleanTypeAnnotation","buildMatchMemberExpression","genericTypeAnnotation","nullLiteralTypeAnnotation","stringTypeAnnotation","tupleTypeAnnotation","unionTypeAnnotation","VariableDeclarator","TypeCastExpression","validParent","TSAsExpression","TSNonNullExpression","NewExpression","TemplateLiteral","BinaryExpression","isBaseType","LogicalExpression","argumentTypes","ConditionalExpression","SequenceExpression","pop","ParenthesizedExpression","StringLiteral","NumericLiteral","BooleanLiteral","NullLiteral","RegExpLiteral","ObjectExpression","ArrayExpression","RestElement","Func","isArrayFrom","isObjectKeys","isObjectValues","isObjectEntries","CallExpression","resolveCall","TaggedTemplateExpression","async","generator","returnType","isAnyTypeAnnotation","isArrayTypeAnnotation","isBooleanTypeAnnotation","isEmptyTypeAnnotation","isFlowBaseAnnotation","isGenericTypeAnnotation","isMixedTypeAnnotation","isNumberTypeAnnotation","isStringTypeAnnotation","isTSArrayType","isTSTypeAnnotation","isTSTypeReference","isTupleTypeAnnotation","isTypeAnnotation","isUnionTypeAnnotation","isVoidTypeAnnotation","_getTypeAnnotation","typeAnnotationInferringNodes","WeakSet","declarParent","isForInStatement","inferer","inferers","delete","baseName","soft","_isBaseType","couldBeBaseType","type2","baseTypeStrictlyMatches","rightArg","isGenericType","genericName","typeName","hooks","self","removeParent","isSwitchCase","isExpressionStatement","isSequenceExpression","_assertUnremoved","resync","_callRemovalHooks","_markRemoved","noScope","_removeFromScope","shareCommentsWithSiblings","_remove","forEach","splice","updateSiblingKeys","_replaceWith","_traverseFlags","SHOULD_SKIP","REMOVED","removed","buildCodeFrameError","arrowFunctionExpression","assertExpression","blockStatement","thisExpression","insertBefore","nodes_","nodes","_verifyNodeList","isNodeType","isJSXElement","replaceExpressionWithStatements","_containerInsertBefore","isStatementOrBlock","shouldInsertCurrentNode","_containerInsert","from","to","getSibling","context","queue","pushContext","contexts","_getQueueContexts","setScope","debug","maybeQueue","_containerInsertAfter","last","arr","isHiddenInSequenceExpression","isAlmostConstantAssignment","blockScope","insertAfter","temp","fromIndex","incrementBy","msg","NodePath","setContext","verifiedNodes","replaceWithMultiple","FUNCTION_TYPES","awaitExpression","conditionalExpression","inheritLeadingComments","inheritTrailingComments","inheritsComments","isEmptyStatement","removeComments","returnStatement","validate","yieldExpression","requeue","replaceWithSourceString","replacement","ast","parse","err","message","codeFrameColumns","start","line","column","code","expressionAST","removeProperties","replacementPath","nodePath","canHaveVariableDeclarationOrExpression","canSwapBetweenExpressionAndStatement","oldNode","inList","declars","nodesAsSingleExpression","gatherSequenceExpressions","functionParent","isParentAsync","isParentGenerator","completionRecords","getCompletionRecords","loop","arrowFunctionToExpression","newCallee","needToAwaitFunction","hasType","needToYieldFunction","exprs","ensureLastUndefined","consequent","alternate","replaceInline","VALID_OBJECT_CALLEES","VALID_IDENTIFIER_CALLEES","INVALID_METHODS","isValidObjectCallee","isValidIdentifierCallee","isInvalidMethod","evaluateTruthy","res","evaluate","confident","deopt","deoptPath","Globals","undefined","NaN","evaluateCached","resolved","item","_evaluate","isNumericLiteral","isBooleanLiteral","evaluateQuasis","quasis","testResult","isExpressionWrapper","end","bindingPathScope","hasUnsafeBlock","prefix","arg","elems","elemValue","props","isSpreadElement","keyPath","valuePath","wasConfident","leftConfident","rightConfident","func","global","hasOwn","args","raw","str","cooked","String","binaryExpression","jsxIdentifier","logicalExpression","LOGICAL_OPERATORS","metaProperty","objectExpression","restElement","spreadElement","stringLiteral","super","_super","toExpression","unaryExpression","toBindingIdentifierName","isAssignmentPattern","getFunctionName","exportNamedDeclaration","exportSpecifier","inherits","toComputedKey","bodyNode","statements","stringPath","setup","unwrapFunctionEnvironment","hoistFunctionEnvironment","setType","allowInsertArrow","allowInsertArrowWithRest","noNewArrows","ensureFunctionName","thisBinding","fnPath","checkBinding","addHelper","getSuperCallsVisitor","child","allSuperCalls","arrowParent","thisEnvFn","isClassProperty","isClassPrivateProperty","inConstructor","isClassMethod","thisPaths","argumentsPaths","newTargetPaths","superProps","superCalls","getScopeInformation","superBinding","getSuperBinding","superCall","argumentsBinding","argumentsChild","argsRef","newTargetBinding","targetChild","targetRef","flatSuperProps","reduce","acc","superProp","standardizeSuperProperty","superParentPath","isAssignment","isCall","isTaggedTemplate","getSuperPropBinding","getThisBinding","hasSuperClass","thisChild","thisRef","isJSX","isLogicalOp","op","assignmentPath","isLogicalAssignment","tmp","rightExpression","isUpdateExpression","updateExpr","computedKey","assignSuperThisVisitor","supers","argsBinding","propName","argsList","fnBody","valueIdent","cacheKey","getScopeInformationVisitor","ThisExpression","JSXIdentifier","isJSXOpeningElement","MemberExpression","Identifier","curr","MetaProperty","standaloneDeclaration","exportExpr","needBindingRegistration","updatedDeclaration","updatedExportDeclaration","bindingIdentifiers","aliasDeclar","refersOuterBindingVisitor","ReferencedIdentifier|BindingIdentifier","needsRename","stop","supportUnicodeId","startsWith","originalNode","getFunctionArity","template","count","findIndex","STATEMENT_OR_BLOCK_KEYS","isType","_matchesPattern","pattern","allowPartial","isCompletionRecord","allowInsideFunction","isDoExpression","referencesImport","moduleSource","importName","isOptionalMemberExpression","isImportDefaultSpecifier","isImportNamespaceSpecifier","imported","getSource","getCode","willIMaybeExecuteBefore","getOuterFunction","isExecutionUncertain","isExecutionUncertainInList","maxIndex","SYMBOL_CHECKING","Symbol","_guessExecutionStatusRelativeToCached","base","cache","funcParent","this","_guessExecutionStatusRelativeToDifferentFunctionsCached","commonPath","commonIndex","divergence","keyPosition","_guessExecutionStatusRelativeToDifferentFunctionsInternal","allStatus","childOfFunction","nodeMap","result","dangerous","_resolve","ret","isTypeCastExpression","targetKey","targetName","match","isnt","isNaN","isConstantExpression","isInStrictMode","strictParent","sourceType","directive","directives","_getAssignmentIdentifiers","_getBindingIdentifiers","_getOuterBindingIdentifiers","NORMAL_COMPLETION","BREAK_COMPLETION","NormalCompletion","BreakCompletion","getOpposite","addCompletionRecords","records","_getCompletionRecords","completionRecordForSwitch","cases","lastNormalCompletions","casePath","caseCompletions","normalCompletions","breakCompletions","c","normalCompletionToBreak","completions","replaceBreakStatementInBreakCompletion","reachable","isBreakStatement","getStatementListCompletion","canHaveBreak","newContext","inCaseClause","shouldPopulateBreak","statementCompletions","some","pathCompletions","isTryStatement","r","getPrevSibling","getNextSibling","getAllNextSiblings","_key","sibling","siblings","getAllPrevSiblings","_getKey","_getPattern","_","duplicates","getBindingIdentifierPaths","outerOnly","search","shift","_ids","getOuterBindingIdentifierPaths","addComment","_addComment","addComments","_addComments","trailing","trailingComments","leading","leadingComments","prev","next","hasPrev","Boolean","hasNext","removeIfExisting","list","toRemove","el","content","comments","buildDebug","SHOULD_STOP","NodePath_Final","shouldStop","targetNode","getScope","def","hasNode","SyntaxError","getPathLocation","enabled","methods","NodePath_ancestry","NodePath_inference","NodePath_replacement","NodePath_evaluation","NodePath_conversion","NodePath_introspection","isDenylisted","NodePath_context","skipKey","NodePath_removal","NodePath_modification","NodePath_family","NodePath_comments","prototype","typeKey","NodePath_virtual_types_validator","TraversalContext","priorityQueue","shouldVisit","notPriority","visitMultiple","visitQueue","visitSingle","visited","visitIndex","popContext","visitSelf","_call","then","denylist","blacklist","restoreContext","currentContext","_resyncParent","_resyncList","_resyncKey","setKey","newContainer","pathToQueue","isPrivate","decorator","Hub","traverseFast","verify","cheap","clearNode","tree","hasDenylistedType","denylistTypes"],"mappings":"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"}