{"version":3,"names":["virtualTypes","require","_debug","_index","_index2","_t","t","cache","_generator","NodePath_ancestry","NodePath_inference","NodePath_replacement","NodePath_evaluation","NodePath_conversion","NodePath_introspection","_context","NodePath_context","NodePath_removal","NodePath_modification","NodePath_family","NodePath_comments","NodePath_virtual_types_validator","validate","debug","buildDebug","REMOVED","exports","SHOULD_STOP","SHOULD_SKIP","NodePath_Final","default","NodePath","constructor","hub","parent","contexts","state","opts","_traverseFlags","skipKeys","parentPath","container","listKey","key","node","type","_store","data","context","scope","removed","v","shouldStop","shouldSkip","get","Error","targetNode","paths","getOrCreateCachedPaths","path","set","setup","call","getScope","isScope","Scope","setData","val","Object","create","getData","def","undefined","hasNode","buildCodeFrameError","msg","SyntaxError","buildError","traverse","visitor","getPathLocation","parts","inList","unshift","join","message","enabled","toString","generator","code","parentKey","methods","findParent","find","getFunctionParent","getStatementParent","getEarliestCommonAncestorFrom","getDeepestCommonAncestorFrom","getAncestry","isAncestor","isDescendant","inType","getTypeAnnotation","isBaseType","couldBeBaseType","baseTypeStrictlyMatches","isGenericType","replaceWithMultiple","replaceWithSourceString","replaceWith","replaceExpressionWithStatements","replaceInline","evaluateTruthy","evaluate","toComputedKey","ensureBlock","unwrapFunctionEnvironment","arrowFunctionToExpression","splitExportDeclaration","ensureFunctionName","matchesPattern","isStatic","isNodeType","canHaveVariableDeclarationOrExpression","canSwapBetweenExpressionAndStatement","isCompletionRecord","isStatementOrBlock","referencesImport","getSource","willIMaybeExecuteBefore","_guessExecutionStatusRelativeTo","resolve","isConstantExpression","isInStrictMode","isDenylisted","visit","skip","skipKey","stop","setContext","requeue","requeueComputedKeyAndDecorators","remove","insertBefore","insertAfter","unshiftContainer","pushContainer","getOpposite","getCompletionRecords","getSibling","getPrevSibling","getNextSibling","getAllNextSiblings","getAllPrevSiblings","getAssignmentIdentifiers","getBindingIdentifiers","getOuterBindingIdentifiers","getBindingIdentifierPaths","getOuterBindingIdentifierPaths","shareCommentsWithSiblings","addComment","addComments","assign","prototype","arrowFunctionToShadowed","String","has","is","isnt","equals","hoist","updateSiblingKeys","isBlacklisted","setScope","resync","popContext","pushContext","setKey","_guessExecutionStatusRelativeToDifferentFunctions","_getTypeAnnotation","_replaceWith","_resolve","_call","_resyncParent","_resyncKey","_resyncList","_resyncRemoved","_getQueueContexts","_removeFromScope","_callRemovalHooks","_remove","_markRemoved","_assertUnremoved","_containerInsert","_containerInsertBefore","_containerInsertAfter","_verifyNodeList","_getKey","_getPattern","TYPES","typeKey","fn","TypeError","keys","includes","push"],"sources":["../../src/path/index.ts"],"sourcesContent":["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;\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;\n // TraversalContext is configured by setContext\n declare context: TraversalContext;\n declare scope: Scope;\n\n contexts: Array = [];\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 | null = null;\n parentPath: NodePath_Final | null = null;\n container: t.Node | Array | 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 _store: Map | 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(parent, parentPath);\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(this: NodePath_Final, visitor: Visitor, 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;\n}\n\ntype NodePathMixins = Omit;\n\ninterface NodePath\n extends InstanceType,\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 | null;\n}\n\n// This trick is necessary so that\n// NodePath_Final is the same as NodePath_Final | NodePath_Final\ntype NodePath_Final = T extends any\n ? NodePath\n : never;\n\nexport { NodePath_Final as default, type NodePath as NodePath_Internal };\n"],"mappings":"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","ignoreList":[]}