babel-plugin-essor 0.0.0
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/LICENSE +20 -0
- package/README.md +0 -0
- package/dist/index.cjs +15564 -0
- package/dist/index.cjs.map +1 -0
- package/dist/index.d.cts +5 -0
- package/dist/index.d.ts +5 -0
- package/dist/index.js +15556 -0
- package/dist/index.js.map +1 -0
- package/package.json +44 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../node_modules/.pnpm/tsup@8.0.2_postcss@8.4.38_typescript@5.4.3/node_modules/tsup/assets/cjs_shims.js","../../../node_modules/.pnpm/@babel+types@7.24.0/node_modules/@babel/types/src/utils/shallowEqual.ts","../../../node_modules/.pnpm/@babel+types@7.24.0/node_modules/@babel/types/src/utils/deprecationWarning.ts","../../../node_modules/.pnpm/@babel+types@7.24.0/node_modules/@babel/types/src/validators/generated/index.ts","../../../node_modules/.pnpm/@babel+types@7.24.0/node_modules/@babel/types/src/validators/matchesPattern.ts","../../../node_modules/.pnpm/@babel+types@7.24.0/node_modules/@babel/types/src/validators/buildMatchMemberExpression.ts","../../../node_modules/.pnpm/@babel+types@7.24.0/node_modules/@babel/types/src/validators/react/isReactComponent.ts","../../../node_modules/.pnpm/@babel+types@7.24.0/node_modules/@babel/types/src/validators/react/isCompatTag.ts","../../../node_modules/.pnpm/to-fast-properties@2.0.0/node_modules/to-fast-properties/index.js","../../../node_modules/.pnpm/@babel+types@7.24.0/node_modules/@babel/types/src/validators/isType.ts","../../../node_modules/.pnpm/@babel+types@7.24.0/node_modules/@babel/types/src/validators/isPlaceholderType.ts","../../../node_modules/.pnpm/@babel+types@7.24.0/node_modules/@babel/types/src/validators/is.ts","../../../node_modules/.pnpm/@babel+helper-validator-identifier@7.22.20/node_modules/@babel/helper-validator-identifier/src/identifier.ts","../../../node_modules/.pnpm/@babel+helper-validator-identifier@7.22.20/node_modules/@babel/helper-validator-identifier/src/keyword.ts","../../../node_modules/.pnpm/@babel+helper-validator-identifier@7.22.20/node_modules/@babel/helper-validator-identifier/src/index.ts","../../../node_modules/.pnpm/@babel+types@7.24.0/node_modules/@babel/types/src/validators/isValidIdentifier.ts","../../../node_modules/.pnpm/@babel+helper-string-parser@7.23.4/node_modules/@babel/helper-string-parser/src/index.ts","../../../node_modules/.pnpm/@babel+types@7.24.0/node_modules/@babel/types/src/constants/index.ts","../../../node_modules/.pnpm/@babel+types@7.24.0/node_modules/@babel/types/src/definitions/utils.ts","../../../node_modules/.pnpm/@babel+types@7.24.0/node_modules/@babel/types/src/definitions/core.ts","../../../node_modules/.pnpm/@babel+types@7.24.0/node_modules/@babel/types/src/definitions/flow.ts","../../../node_modules/.pnpm/@babel+types@7.24.0/node_modules/@babel/types/src/definitions/jsx.ts","../../../node_modules/.pnpm/@babel+types@7.24.0/node_modules/@babel/types/src/definitions/placeholders.ts","../../../node_modules/.pnpm/@babel+types@7.24.0/node_modules/@babel/types/src/definitions/misc.ts","../../../node_modules/.pnpm/@babel+types@7.24.0/node_modules/@babel/types/src/definitions/experimental.ts","../../../node_modules/.pnpm/@babel+types@7.24.0/node_modules/@babel/types/src/definitions/typescript.ts","../../../node_modules/.pnpm/@babel+types@7.24.0/node_modules/@babel/types/src/definitions/deprecated-aliases.ts","../../../node_modules/.pnpm/@babel+types@7.24.0/node_modules/@babel/types/src/definitions/index.ts","../../../node_modules/.pnpm/@babel+types@7.24.0/node_modules/@babel/types/src/validators/validate.ts","../../../node_modules/.pnpm/@babel+types@7.24.0/node_modules/@babel/types/src/builders/validateNode.ts","../../../node_modules/.pnpm/@babel+types@7.24.0/node_modules/@babel/types/src/builders/generated/index.ts","../../../node_modules/.pnpm/@babel+types@7.24.0/node_modules/@babel/types/src/utils/react/cleanJSXElementLiteralChild.ts","../../../node_modules/.pnpm/@babel+types@7.24.0/node_modules/@babel/types/src/builders/react/buildChildren.ts","../../../node_modules/.pnpm/@babel+types@7.24.0/node_modules/@babel/types/src/validators/isNode.ts","../../../node_modules/.pnpm/@babel+types@7.24.0/node_modules/@babel/types/src/asserts/assertNode.ts","../../../node_modules/.pnpm/@babel+types@7.24.0/node_modules/@babel/types/src/asserts/generated/index.ts","../../../node_modules/.pnpm/@babel+types@7.24.0/node_modules/@babel/types/src/builders/flow/createTypeAnnotationBasedOnTypeof.ts","../../../node_modules/.pnpm/@babel+types@7.24.0/node_modules/@babel/types/src/modifications/flow/removeTypeDuplicates.ts","../../../node_modules/.pnpm/@babel+types@7.24.0/node_modules/@babel/types/src/builders/flow/createFlowUnionType.ts","../../../node_modules/.pnpm/@babel+types@7.24.0/node_modules/@babel/types/src/modifications/typescript/removeTypeDuplicates.ts","../../../node_modules/.pnpm/@babel+types@7.24.0/node_modules/@babel/types/src/builders/typescript/createTSUnionType.ts","../../../node_modules/.pnpm/@babel+types@7.24.0/node_modules/@babel/types/src/builders/generated/uppercase.js","../../../node_modules/.pnpm/@babel+types@7.24.0/node_modules/@babel/types/src/builders/productions.ts","../../../node_modules/.pnpm/@babel+types@7.24.0/node_modules/@babel/types/src/clone/cloneNode.ts","../../../node_modules/.pnpm/@babel+types@7.24.0/node_modules/@babel/types/src/clone/clone.ts","../../../node_modules/.pnpm/@babel+types@7.24.0/node_modules/@babel/types/src/clone/cloneDeep.ts","../../../node_modules/.pnpm/@babel+types@7.24.0/node_modules/@babel/types/src/clone/cloneDeepWithoutLoc.ts","../../../node_modules/.pnpm/@babel+types@7.24.0/node_modules/@babel/types/src/clone/cloneWithoutLoc.ts","../../../node_modules/.pnpm/@babel+types@7.24.0/node_modules/@babel/types/src/comments/addComments.ts","../../../node_modules/.pnpm/@babel+types@7.24.0/node_modules/@babel/types/src/comments/addComment.ts","../../../node_modules/.pnpm/@babel+types@7.24.0/node_modules/@babel/types/src/utils/inherit.ts","../../../node_modules/.pnpm/@babel+types@7.24.0/node_modules/@babel/types/src/comments/inheritInnerComments.ts","../../../node_modules/.pnpm/@babel+types@7.24.0/node_modules/@babel/types/src/comments/inheritLeadingComments.ts","../../../node_modules/.pnpm/@babel+types@7.24.0/node_modules/@babel/types/src/comments/inheritTrailingComments.ts","../../../node_modules/.pnpm/@babel+types@7.24.0/node_modules/@babel/types/src/comments/inheritsComments.ts","../../../node_modules/.pnpm/@babel+types@7.24.0/node_modules/@babel/types/src/comments/removeComments.ts","../../../node_modules/.pnpm/@babel+types@7.24.0/node_modules/@babel/types/src/constants/generated/index.ts","../../../node_modules/.pnpm/@babel+types@7.24.0/node_modules/@babel/types/src/converters/toBlock.ts","../../../node_modules/.pnpm/@babel+types@7.24.0/node_modules/@babel/types/src/converters/ensureBlock.ts","../../../node_modules/.pnpm/@babel+types@7.24.0/node_modules/@babel/types/src/converters/toIdentifier.ts","../../../node_modules/.pnpm/@babel+types@7.24.0/node_modules/@babel/types/src/converters/toBindingIdentifierName.ts","../../../node_modules/.pnpm/@babel+types@7.24.0/node_modules/@babel/types/src/converters/toComputedKey.ts","../../../node_modules/.pnpm/@babel+types@7.24.0/node_modules/@babel/types/src/converters/toExpression.ts","../../../node_modules/.pnpm/@babel+types@7.24.0/node_modules/@babel/types/src/traverse/traverseFast.ts","../../../node_modules/.pnpm/@babel+types@7.24.0/node_modules/@babel/types/src/modifications/removeProperties.ts","../../../node_modules/.pnpm/@babel+types@7.24.0/node_modules/@babel/types/src/modifications/removePropertiesDeep.ts","../../../node_modules/.pnpm/@babel+types@7.24.0/node_modules/@babel/types/src/converters/toKeyAlias.ts","../../../node_modules/.pnpm/@babel+types@7.24.0/node_modules/@babel/types/src/converters/toStatement.ts","../../../node_modules/.pnpm/@babel+types@7.24.0/node_modules/@babel/types/src/converters/valueToNode.ts","../../../node_modules/.pnpm/@babel+types@7.24.0/node_modules/@babel/types/src/modifications/appendToMemberExpression.ts","../../../node_modules/.pnpm/@babel+types@7.24.0/node_modules/@babel/types/src/modifications/inherits.ts","../../../node_modules/.pnpm/@babel+types@7.24.0/node_modules/@babel/types/src/modifications/prependToMemberExpression.ts","../../../node_modules/.pnpm/@babel+types@7.24.0/node_modules/@babel/types/src/retrievers/getBindingIdentifiers.ts","../../../node_modules/.pnpm/@babel+types@7.24.0/node_modules/@babel/types/src/retrievers/getOuterBindingIdentifiers.ts","../../../node_modules/.pnpm/@babel+types@7.24.0/node_modules/@babel/types/src/traverse/traverse.ts","../../../node_modules/.pnpm/@babel+types@7.24.0/node_modules/@babel/types/src/validators/isBinding.ts","../../../node_modules/.pnpm/@babel+types@7.24.0/node_modules/@babel/types/src/validators/isLet.ts","../../../node_modules/.pnpm/@babel+types@7.24.0/node_modules/@babel/types/src/validators/isBlockScoped.ts","../../../node_modules/.pnpm/@babel+types@7.24.0/node_modules/@babel/types/src/validators/isImmutable.ts","../../../node_modules/.pnpm/@babel+types@7.24.0/node_modules/@babel/types/src/validators/isNodesEquivalent.ts","../../../node_modules/.pnpm/@babel+types@7.24.0/node_modules/@babel/types/src/validators/isReferenced.ts","../../../node_modules/.pnpm/@babel+types@7.24.0/node_modules/@babel/types/src/validators/isScope.ts","../../../node_modules/.pnpm/@babel+types@7.24.0/node_modules/@babel/types/src/validators/isSpecifierDefault.ts","../../../node_modules/.pnpm/@babel+types@7.24.0/node_modules/@babel/types/src/validators/isValidES3Identifier.ts","../../../node_modules/.pnpm/@babel+types@7.24.0/node_modules/@babel/types/src/validators/isVar.ts","../../../node_modules/.pnpm/@babel+types@7.24.0/node_modules/@babel/types/src/converters/gatherSequenceExpressions.ts","../../../node_modules/.pnpm/@babel+types@7.24.0/node_modules/@babel/types/src/converters/toSequenceExpression.ts","../../../node_modules/.pnpm/@babel+types@7.24.0/node_modules/@babel/types/src/index.ts","../src/index.ts","../src/transform.ts","../src/shared.ts","../src/jsx-transform.ts","../src/constants.ts","../src/signal/props.ts","../src/signal/symbol.ts","../src/signal/pattern.ts","../src/signal/import.ts"],"sourcesContent":["// Shim globals in cjs bundle\n// There's a weird bug that esbuild will always inject importMetaUrl\n// if we export it as `const importMetaUrl = ... __filename ...`\n// But using a function will not cause this issue\n\nconst getImportMetaUrl = () =>\n typeof document === 'undefined'\n ? new URL('file:' + __filename).href\n : (document.currentScript && document.currentScript.src) ||\n new URL('main.js', document.baseURI).href\n\nexport const importMetaUrl = /* @__PURE__ */ getImportMetaUrl()\n","export default function shallowEqual<T extends object>(\n actual: object,\n expected: T,\n): actual is T {\n const keys = Object.keys(expected) as (keyof T)[];\n\n for (const key of keys) {\n if (\n // @ts-expect-error maybe we should check whether key exists first\n actual[key] !== expected[key]\n ) {\n return false;\n }\n }\n\n return true;\n}\n","const warnings = new Set();\n\nexport default function deprecationWarning(\n oldName: string,\n newName: string,\n prefix: string = \"\",\n) {\n if (warnings.has(oldName)) return;\n warnings.add(oldName);\n\n const { internal, trace } = captureShortStackTrace(1, 2);\n if (internal) {\n // If usage comes from an internal package, there is no point in warning because\n // 1. The new version of the package will already use the new API\n // 2. When the deprecation will become an error (in a future major version), users\n // will have to update every package anyway.\n return;\n }\n console.warn(\n `${prefix}\\`${oldName}\\` has been deprecated, please migrate to \\`${newName}\\`\\n${trace}`,\n );\n}\n\nfunction captureShortStackTrace(skip: number, length: number) {\n const { stackTraceLimit, prepareStackTrace } = Error;\n let stackTrace: NodeJS.CallSite[];\n // We add 1 to also take into account this function.\n Error.stackTraceLimit = 1 + skip + length;\n Error.prepareStackTrace = function (err, stack) {\n stackTrace = stack;\n };\n new Error().stack;\n Error.stackTraceLimit = stackTraceLimit;\n Error.prepareStackTrace = prepareStackTrace;\n\n if (!stackTrace) return { internal: false, trace: \"\" };\n\n const shortStackTrace = stackTrace.slice(1 + skip, 1 + skip + length);\n return {\n internal: /[\\\\/]@babel[\\\\/]/.test(shortStackTrace[1].getFileName()),\n trace: shortStackTrace.map(frame => ` at ${frame}`).join(\"\\n\"),\n };\n}\n","/*\n * This file is auto-generated! Do not modify it directly.\n * To re-generate run 'make build'\n */\n\n/* eslint-disable no-fallthrough */\n\nimport shallowEqual from \"../../utils/shallowEqual.ts\";\nimport type * as t from \"../../index.ts\";\nimport deprecationWarning from \"../../utils/deprecationWarning.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 function isArrayExpression(\n node: t.Node | null | undefined,\n opts?: Opts<t.ArrayExpression> | null,\n): node is t.ArrayExpression {\n if (!node) return false;\n\n if (node.type !== \"ArrayExpression\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isAssignmentExpression(\n node: t.Node | null | undefined,\n opts?: Opts<t.AssignmentExpression> | null,\n): node is t.AssignmentExpression {\n if (!node) return false;\n\n if (node.type !== \"AssignmentExpression\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isBinaryExpression(\n node: t.Node | null | undefined,\n opts?: Opts<t.BinaryExpression> | null,\n): node is t.BinaryExpression {\n if (!node) return false;\n\n if (node.type !== \"BinaryExpression\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isInterpreterDirective(\n node: t.Node | null | undefined,\n opts?: Opts<t.InterpreterDirective> | null,\n): node is t.InterpreterDirective {\n if (!node) return false;\n\n if (node.type !== \"InterpreterDirective\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isDirective(\n node: t.Node | null | undefined,\n opts?: Opts<t.Directive> | null,\n): node is t.Directive {\n if (!node) return false;\n\n if (node.type !== \"Directive\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isDirectiveLiteral(\n node: t.Node | null | undefined,\n opts?: Opts<t.DirectiveLiteral> | null,\n): node is t.DirectiveLiteral {\n if (!node) return false;\n\n if (node.type !== \"DirectiveLiteral\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isBlockStatement(\n node: t.Node | null | undefined,\n opts?: Opts<t.BlockStatement> | null,\n): node is t.BlockStatement {\n if (!node) return false;\n\n if (node.type !== \"BlockStatement\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isBreakStatement(\n node: t.Node | null | undefined,\n opts?: Opts<t.BreakStatement> | null,\n): node is t.BreakStatement {\n if (!node) return false;\n\n if (node.type !== \"BreakStatement\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isCallExpression(\n node: t.Node | null | undefined,\n opts?: Opts<t.CallExpression> | null,\n): node is t.CallExpression {\n if (!node) return false;\n\n if (node.type !== \"CallExpression\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isCatchClause(\n node: t.Node | null | undefined,\n opts?: Opts<t.CatchClause> | null,\n): node is t.CatchClause {\n if (!node) return false;\n\n if (node.type !== \"CatchClause\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isConditionalExpression(\n node: t.Node | null | undefined,\n opts?: Opts<t.ConditionalExpression> | null,\n): node is t.ConditionalExpression {\n if (!node) return false;\n\n if (node.type !== \"ConditionalExpression\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isContinueStatement(\n node: t.Node | null | undefined,\n opts?: Opts<t.ContinueStatement> | null,\n): node is t.ContinueStatement {\n if (!node) return false;\n\n if (node.type !== \"ContinueStatement\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isDebuggerStatement(\n node: t.Node | null | undefined,\n opts?: Opts<t.DebuggerStatement> | null,\n): node is t.DebuggerStatement {\n if (!node) return false;\n\n if (node.type !== \"DebuggerStatement\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isDoWhileStatement(\n node: t.Node | null | undefined,\n opts?: Opts<t.DoWhileStatement> | null,\n): node is t.DoWhileStatement {\n if (!node) return false;\n\n if (node.type !== \"DoWhileStatement\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isEmptyStatement(\n node: t.Node | null | undefined,\n opts?: Opts<t.EmptyStatement> | null,\n): node is t.EmptyStatement {\n if (!node) return false;\n\n if (node.type !== \"EmptyStatement\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isExpressionStatement(\n node: t.Node | null | undefined,\n opts?: Opts<t.ExpressionStatement> | null,\n): node is t.ExpressionStatement {\n if (!node) return false;\n\n if (node.type !== \"ExpressionStatement\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isFile(\n node: t.Node | null | undefined,\n opts?: Opts<t.File> | null,\n): node is t.File {\n if (!node) return false;\n\n if (node.type !== \"File\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isForInStatement(\n node: t.Node | null | undefined,\n opts?: Opts<t.ForInStatement> | null,\n): node is t.ForInStatement {\n if (!node) return false;\n\n if (node.type !== \"ForInStatement\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isForStatement(\n node: t.Node | null | undefined,\n opts?: Opts<t.ForStatement> | null,\n): node is t.ForStatement {\n if (!node) return false;\n\n if (node.type !== \"ForStatement\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isFunctionDeclaration(\n node: t.Node | null | undefined,\n opts?: Opts<t.FunctionDeclaration> | null,\n): node is t.FunctionDeclaration {\n if (!node) return false;\n\n if (node.type !== \"FunctionDeclaration\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isFunctionExpression(\n node: t.Node | null | undefined,\n opts?: Opts<t.FunctionExpression> | null,\n): node is t.FunctionExpression {\n if (!node) return false;\n\n if (node.type !== \"FunctionExpression\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isIdentifier(\n node: t.Node | null | undefined,\n opts?: Opts<t.Identifier> | null,\n): node is t.Identifier {\n if (!node) return false;\n\n if (node.type !== \"Identifier\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isIfStatement(\n node: t.Node | null | undefined,\n opts?: Opts<t.IfStatement> | null,\n): node is t.IfStatement {\n if (!node) return false;\n\n if (node.type !== \"IfStatement\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isLabeledStatement(\n node: t.Node | null | undefined,\n opts?: Opts<t.LabeledStatement> | null,\n): node is t.LabeledStatement {\n if (!node) return false;\n\n if (node.type !== \"LabeledStatement\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isStringLiteral(\n node: t.Node | null | undefined,\n opts?: Opts<t.StringLiteral> | null,\n): node is t.StringLiteral {\n if (!node) return false;\n\n if (node.type !== \"StringLiteral\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isNumericLiteral(\n node: t.Node | null | undefined,\n opts?: Opts<t.NumericLiteral> | null,\n): node is t.NumericLiteral {\n if (!node) return false;\n\n if (node.type !== \"NumericLiteral\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isNullLiteral(\n node: t.Node | null | undefined,\n opts?: Opts<t.NullLiteral> | null,\n): node is t.NullLiteral {\n if (!node) return false;\n\n if (node.type !== \"NullLiteral\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isBooleanLiteral(\n node: t.Node | null | undefined,\n opts?: Opts<t.BooleanLiteral> | null,\n): node is t.BooleanLiteral {\n if (!node) return false;\n\n if (node.type !== \"BooleanLiteral\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isRegExpLiteral(\n node: t.Node | null | undefined,\n opts?: Opts<t.RegExpLiteral> | null,\n): node is t.RegExpLiteral {\n if (!node) return false;\n\n if (node.type !== \"RegExpLiteral\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isLogicalExpression(\n node: t.Node | null | undefined,\n opts?: Opts<t.LogicalExpression> | null,\n): node is t.LogicalExpression {\n if (!node) return false;\n\n if (node.type !== \"LogicalExpression\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isMemberExpression(\n node: t.Node | null | undefined,\n opts?: Opts<t.MemberExpression> | null,\n): node is t.MemberExpression {\n if (!node) return false;\n\n if (node.type !== \"MemberExpression\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isNewExpression(\n node: t.Node | null | undefined,\n opts?: Opts<t.NewExpression> | null,\n): node is t.NewExpression {\n if (!node) return false;\n\n if (node.type !== \"NewExpression\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isProgram(\n node: t.Node | null | undefined,\n opts?: Opts<t.Program> | null,\n): node is t.Program {\n if (!node) return false;\n\n if (node.type !== \"Program\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isObjectExpression(\n node: t.Node | null | undefined,\n opts?: Opts<t.ObjectExpression> | null,\n): node is t.ObjectExpression {\n if (!node) return false;\n\n if (node.type !== \"ObjectExpression\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isObjectMethod(\n node: t.Node | null | undefined,\n opts?: Opts<t.ObjectMethod> | null,\n): node is t.ObjectMethod {\n if (!node) return false;\n\n if (node.type !== \"ObjectMethod\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isObjectProperty(\n node: t.Node | null | undefined,\n opts?: Opts<t.ObjectProperty> | null,\n): node is t.ObjectProperty {\n if (!node) return false;\n\n if (node.type !== \"ObjectProperty\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isRestElement(\n node: t.Node | null | undefined,\n opts?: Opts<t.RestElement> | null,\n): node is t.RestElement {\n if (!node) return false;\n\n if (node.type !== \"RestElement\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isReturnStatement(\n node: t.Node | null | undefined,\n opts?: Opts<t.ReturnStatement> | null,\n): node is t.ReturnStatement {\n if (!node) return false;\n\n if (node.type !== \"ReturnStatement\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isSequenceExpression(\n node: t.Node | null | undefined,\n opts?: Opts<t.SequenceExpression> | null,\n): node is t.SequenceExpression {\n if (!node) return false;\n\n if (node.type !== \"SequenceExpression\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isParenthesizedExpression(\n node: t.Node | null | undefined,\n opts?: Opts<t.ParenthesizedExpression> | null,\n): node is t.ParenthesizedExpression {\n if (!node) return false;\n\n if (node.type !== \"ParenthesizedExpression\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isSwitchCase(\n node: t.Node | null | undefined,\n opts?: Opts<t.SwitchCase> | null,\n): node is t.SwitchCase {\n if (!node) return false;\n\n if (node.type !== \"SwitchCase\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isSwitchStatement(\n node: t.Node | null | undefined,\n opts?: Opts<t.SwitchStatement> | null,\n): node is t.SwitchStatement {\n if (!node) return false;\n\n if (node.type !== \"SwitchStatement\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isThisExpression(\n node: t.Node | null | undefined,\n opts?: Opts<t.ThisExpression> | null,\n): node is t.ThisExpression {\n if (!node) return false;\n\n if (node.type !== \"ThisExpression\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isThrowStatement(\n node: t.Node | null | undefined,\n opts?: Opts<t.ThrowStatement> | null,\n): node is t.ThrowStatement {\n if (!node) return false;\n\n if (node.type !== \"ThrowStatement\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isTryStatement(\n node: t.Node | null | undefined,\n opts?: Opts<t.TryStatement> | null,\n): node is t.TryStatement {\n if (!node) return false;\n\n if (node.type !== \"TryStatement\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isUnaryExpression(\n node: t.Node | null | undefined,\n opts?: Opts<t.UnaryExpression> | null,\n): node is t.UnaryExpression {\n if (!node) return false;\n\n if (node.type !== \"UnaryExpression\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isUpdateExpression(\n node: t.Node | null | undefined,\n opts?: Opts<t.UpdateExpression> | null,\n): node is t.UpdateExpression {\n if (!node) return false;\n\n if (node.type !== \"UpdateExpression\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isVariableDeclaration(\n node: t.Node | null | undefined,\n opts?: Opts<t.VariableDeclaration> | null,\n): node is t.VariableDeclaration {\n if (!node) return false;\n\n if (node.type !== \"VariableDeclaration\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isVariableDeclarator(\n node: t.Node | null | undefined,\n opts?: Opts<t.VariableDeclarator> | null,\n): node is t.VariableDeclarator {\n if (!node) return false;\n\n if (node.type !== \"VariableDeclarator\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isWhileStatement(\n node: t.Node | null | undefined,\n opts?: Opts<t.WhileStatement> | null,\n): node is t.WhileStatement {\n if (!node) return false;\n\n if (node.type !== \"WhileStatement\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isWithStatement(\n node: t.Node | null | undefined,\n opts?: Opts<t.WithStatement> | null,\n): node is t.WithStatement {\n if (!node) return false;\n\n if (node.type !== \"WithStatement\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isAssignmentPattern(\n node: t.Node | null | undefined,\n opts?: Opts<t.AssignmentPattern> | null,\n): node is t.AssignmentPattern {\n if (!node) return false;\n\n if (node.type !== \"AssignmentPattern\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isArrayPattern(\n node: t.Node | null | undefined,\n opts?: Opts<t.ArrayPattern> | null,\n): node is t.ArrayPattern {\n if (!node) return false;\n\n if (node.type !== \"ArrayPattern\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isArrowFunctionExpression(\n node: t.Node | null | undefined,\n opts?: Opts<t.ArrowFunctionExpression> | null,\n): node is t.ArrowFunctionExpression {\n if (!node) return false;\n\n if (node.type !== \"ArrowFunctionExpression\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isClassBody(\n node: t.Node | null | undefined,\n opts?: Opts<t.ClassBody> | null,\n): node is t.ClassBody {\n if (!node) return false;\n\n if (node.type !== \"ClassBody\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isClassExpression(\n node: t.Node | null | undefined,\n opts?: Opts<t.ClassExpression> | null,\n): node is t.ClassExpression {\n if (!node) return false;\n\n if (node.type !== \"ClassExpression\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isClassDeclaration(\n node: t.Node | null | undefined,\n opts?: Opts<t.ClassDeclaration> | null,\n): node is t.ClassDeclaration {\n if (!node) return false;\n\n if (node.type !== \"ClassDeclaration\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isExportAllDeclaration(\n node: t.Node | null | undefined,\n opts?: Opts<t.ExportAllDeclaration> | null,\n): node is t.ExportAllDeclaration {\n if (!node) return false;\n\n if (node.type !== \"ExportAllDeclaration\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isExportDefaultDeclaration(\n node: t.Node | null | undefined,\n opts?: Opts<t.ExportDefaultDeclaration> | null,\n): node is t.ExportDefaultDeclaration {\n if (!node) return false;\n\n if (node.type !== \"ExportDefaultDeclaration\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isExportNamedDeclaration(\n node: t.Node | null | undefined,\n opts?: Opts<t.ExportNamedDeclaration> | null,\n): node is t.ExportNamedDeclaration {\n if (!node) return false;\n\n if (node.type !== \"ExportNamedDeclaration\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isExportSpecifier(\n node: t.Node | null | undefined,\n opts?: Opts<t.ExportSpecifier> | null,\n): node is t.ExportSpecifier {\n if (!node) return false;\n\n if (node.type !== \"ExportSpecifier\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isForOfStatement(\n node: t.Node | null | undefined,\n opts?: Opts<t.ForOfStatement> | null,\n): node is t.ForOfStatement {\n if (!node) return false;\n\n if (node.type !== \"ForOfStatement\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isImportDeclaration(\n node: t.Node | null | undefined,\n opts?: Opts<t.ImportDeclaration> | null,\n): node is t.ImportDeclaration {\n if (!node) return false;\n\n if (node.type !== \"ImportDeclaration\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isImportDefaultSpecifier(\n node: t.Node | null | undefined,\n opts?: Opts<t.ImportDefaultSpecifier> | null,\n): node is t.ImportDefaultSpecifier {\n if (!node) return false;\n\n if (node.type !== \"ImportDefaultSpecifier\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isImportNamespaceSpecifier(\n node: t.Node | null | undefined,\n opts?: Opts<t.ImportNamespaceSpecifier> | null,\n): node is t.ImportNamespaceSpecifier {\n if (!node) return false;\n\n if (node.type !== \"ImportNamespaceSpecifier\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isImportSpecifier(\n node: t.Node | null | undefined,\n opts?: Opts<t.ImportSpecifier> | null,\n): node is t.ImportSpecifier {\n if (!node) return false;\n\n if (node.type !== \"ImportSpecifier\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isImportExpression(\n node: t.Node | null | undefined,\n opts?: Opts<t.ImportExpression> | null,\n): node is t.ImportExpression {\n if (!node) return false;\n\n if (node.type !== \"ImportExpression\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isMetaProperty(\n node: t.Node | null | undefined,\n opts?: Opts<t.MetaProperty> | null,\n): node is t.MetaProperty {\n if (!node) return false;\n\n if (node.type !== \"MetaProperty\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isClassMethod(\n node: t.Node | null | undefined,\n opts?: Opts<t.ClassMethod> | null,\n): node is t.ClassMethod {\n if (!node) return false;\n\n if (node.type !== \"ClassMethod\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isObjectPattern(\n node: t.Node | null | undefined,\n opts?: Opts<t.ObjectPattern> | null,\n): node is t.ObjectPattern {\n if (!node) return false;\n\n if (node.type !== \"ObjectPattern\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isSpreadElement(\n node: t.Node | null | undefined,\n opts?: Opts<t.SpreadElement> | null,\n): node is t.SpreadElement {\n if (!node) return false;\n\n if (node.type !== \"SpreadElement\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isSuper(\n node: t.Node | null | undefined,\n opts?: Opts<t.Super> | null,\n): node is t.Super {\n if (!node) return false;\n\n if (node.type !== \"Super\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isTaggedTemplateExpression(\n node: t.Node | null | undefined,\n opts?: Opts<t.TaggedTemplateExpression> | null,\n): node is t.TaggedTemplateExpression {\n if (!node) return false;\n\n if (node.type !== \"TaggedTemplateExpression\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isTemplateElement(\n node: t.Node | null | undefined,\n opts?: Opts<t.TemplateElement> | null,\n): node is t.TemplateElement {\n if (!node) return false;\n\n if (node.type !== \"TemplateElement\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isTemplateLiteral(\n node: t.Node | null | undefined,\n opts?: Opts<t.TemplateLiteral> | null,\n): node is t.TemplateLiteral {\n if (!node) return false;\n\n if (node.type !== \"TemplateLiteral\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isYieldExpression(\n node: t.Node | null | undefined,\n opts?: Opts<t.YieldExpression> | null,\n): node is t.YieldExpression {\n if (!node) return false;\n\n if (node.type !== \"YieldExpression\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isAwaitExpression(\n node: t.Node | null | undefined,\n opts?: Opts<t.AwaitExpression> | null,\n): node is t.AwaitExpression {\n if (!node) return false;\n\n if (node.type !== \"AwaitExpression\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isImport(\n node: t.Node | null | undefined,\n opts?: Opts<t.Import> | null,\n): node is t.Import {\n if (!node) return false;\n\n if (node.type !== \"Import\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isBigIntLiteral(\n node: t.Node | null | undefined,\n opts?: Opts<t.BigIntLiteral> | null,\n): node is t.BigIntLiteral {\n if (!node) return false;\n\n if (node.type !== \"BigIntLiteral\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isExportNamespaceSpecifier(\n node: t.Node | null | undefined,\n opts?: Opts<t.ExportNamespaceSpecifier> | null,\n): node is t.ExportNamespaceSpecifier {\n if (!node) return false;\n\n if (node.type !== \"ExportNamespaceSpecifier\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isOptionalMemberExpression(\n node: t.Node | null | undefined,\n opts?: Opts<t.OptionalMemberExpression> | null,\n): node is t.OptionalMemberExpression {\n if (!node) return false;\n\n if (node.type !== \"OptionalMemberExpression\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isOptionalCallExpression(\n node: t.Node | null | undefined,\n opts?: Opts<t.OptionalCallExpression> | null,\n): node is t.OptionalCallExpression {\n if (!node) return false;\n\n if (node.type !== \"OptionalCallExpression\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isClassProperty(\n node: t.Node | null | undefined,\n opts?: Opts<t.ClassProperty> | null,\n): node is t.ClassProperty {\n if (!node) return false;\n\n if (node.type !== \"ClassProperty\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isClassAccessorProperty(\n node: t.Node | null | undefined,\n opts?: Opts<t.ClassAccessorProperty> | null,\n): node is t.ClassAccessorProperty {\n if (!node) return false;\n\n if (node.type !== \"ClassAccessorProperty\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isClassPrivateProperty(\n node: t.Node | null | undefined,\n opts?: Opts<t.ClassPrivateProperty> | null,\n): node is t.ClassPrivateProperty {\n if (!node) return false;\n\n if (node.type !== \"ClassPrivateProperty\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isClassPrivateMethod(\n node: t.Node | null | undefined,\n opts?: Opts<t.ClassPrivateMethod> | null,\n): node is t.ClassPrivateMethod {\n if (!node) return false;\n\n if (node.type !== \"ClassPrivateMethod\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isPrivateName(\n node: t.Node | null | undefined,\n opts?: Opts<t.PrivateName> | null,\n): node is t.PrivateName {\n if (!node) return false;\n\n if (node.type !== \"PrivateName\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isStaticBlock(\n node: t.Node | null | undefined,\n opts?: Opts<t.StaticBlock> | null,\n): node is t.StaticBlock {\n if (!node) return false;\n\n if (node.type !== \"StaticBlock\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isAnyTypeAnnotation(\n node: t.Node | null | undefined,\n opts?: Opts<t.AnyTypeAnnotation> | null,\n): node is t.AnyTypeAnnotation {\n if (!node) return false;\n\n if (node.type !== \"AnyTypeAnnotation\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isArrayTypeAnnotation(\n node: t.Node | null | undefined,\n opts?: Opts<t.ArrayTypeAnnotation> | null,\n): node is t.ArrayTypeAnnotation {\n if (!node) return false;\n\n if (node.type !== \"ArrayTypeAnnotation\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isBooleanTypeAnnotation(\n node: t.Node | null | undefined,\n opts?: Opts<t.BooleanTypeAnnotation> | null,\n): node is t.BooleanTypeAnnotation {\n if (!node) return false;\n\n if (node.type !== \"BooleanTypeAnnotation\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isBooleanLiteralTypeAnnotation(\n node: t.Node | null | undefined,\n opts?: Opts<t.BooleanLiteralTypeAnnotation> | null,\n): node is t.BooleanLiteralTypeAnnotation {\n if (!node) return false;\n\n if (node.type !== \"BooleanLiteralTypeAnnotation\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isNullLiteralTypeAnnotation(\n node: t.Node | null | undefined,\n opts?: Opts<t.NullLiteralTypeAnnotation> | null,\n): node is t.NullLiteralTypeAnnotation {\n if (!node) return false;\n\n if (node.type !== \"NullLiteralTypeAnnotation\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isClassImplements(\n node: t.Node | null | undefined,\n opts?: Opts<t.ClassImplements> | null,\n): node is t.ClassImplements {\n if (!node) return false;\n\n if (node.type !== \"ClassImplements\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isDeclareClass(\n node: t.Node | null | undefined,\n opts?: Opts<t.DeclareClass> | null,\n): node is t.DeclareClass {\n if (!node) return false;\n\n if (node.type !== \"DeclareClass\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isDeclareFunction(\n node: t.Node | null | undefined,\n opts?: Opts<t.DeclareFunction> | null,\n): node is t.DeclareFunction {\n if (!node) return false;\n\n if (node.type !== \"DeclareFunction\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isDeclareInterface(\n node: t.Node | null | undefined,\n opts?: Opts<t.DeclareInterface> | null,\n): node is t.DeclareInterface {\n if (!node) return false;\n\n if (node.type !== \"DeclareInterface\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isDeclareModule(\n node: t.Node | null | undefined,\n opts?: Opts<t.DeclareModule> | null,\n): node is t.DeclareModule {\n if (!node) return false;\n\n if (node.type !== \"DeclareModule\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isDeclareModuleExports(\n node: t.Node | null | undefined,\n opts?: Opts<t.DeclareModuleExports> | null,\n): node is t.DeclareModuleExports {\n if (!node) return false;\n\n if (node.type !== \"DeclareModuleExports\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isDeclareTypeAlias(\n node: t.Node | null | undefined,\n opts?: Opts<t.DeclareTypeAlias> | null,\n): node is t.DeclareTypeAlias {\n if (!node) return false;\n\n if (node.type !== \"DeclareTypeAlias\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isDeclareOpaqueType(\n node: t.Node | null | undefined,\n opts?: Opts<t.DeclareOpaqueType> | null,\n): node is t.DeclareOpaqueType {\n if (!node) return false;\n\n if (node.type !== \"DeclareOpaqueType\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isDeclareVariable(\n node: t.Node | null | undefined,\n opts?: Opts<t.DeclareVariable> | null,\n): node is t.DeclareVariable {\n if (!node) return false;\n\n if (node.type !== \"DeclareVariable\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isDeclareExportDeclaration(\n node: t.Node | null | undefined,\n opts?: Opts<t.DeclareExportDeclaration> | null,\n): node is t.DeclareExportDeclaration {\n if (!node) return false;\n\n if (node.type !== \"DeclareExportDeclaration\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isDeclareExportAllDeclaration(\n node: t.Node | null | undefined,\n opts?: Opts<t.DeclareExportAllDeclaration> | null,\n): node is t.DeclareExportAllDeclaration {\n if (!node) return false;\n\n if (node.type !== \"DeclareExportAllDeclaration\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isDeclaredPredicate(\n node: t.Node | null | undefined,\n opts?: Opts<t.DeclaredPredicate> | null,\n): node is t.DeclaredPredicate {\n if (!node) return false;\n\n if (node.type !== \"DeclaredPredicate\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isExistsTypeAnnotation(\n node: t.Node | null | undefined,\n opts?: Opts<t.ExistsTypeAnnotation> | null,\n): node is t.ExistsTypeAnnotation {\n if (!node) return false;\n\n if (node.type !== \"ExistsTypeAnnotation\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isFunctionTypeAnnotation(\n node: t.Node | null | undefined,\n opts?: Opts<t.FunctionTypeAnnotation> | null,\n): node is t.FunctionTypeAnnotation {\n if (!node) return false;\n\n if (node.type !== \"FunctionTypeAnnotation\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isFunctionTypeParam(\n node: t.Node | null | undefined,\n opts?: Opts<t.FunctionTypeParam> | null,\n): node is t.FunctionTypeParam {\n if (!node) return false;\n\n if (node.type !== \"FunctionTypeParam\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isGenericTypeAnnotation(\n node: t.Node | null | undefined,\n opts?: Opts<t.GenericTypeAnnotation> | null,\n): node is t.GenericTypeAnnotation {\n if (!node) return false;\n\n if (node.type !== \"GenericTypeAnnotation\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isInferredPredicate(\n node: t.Node | null | undefined,\n opts?: Opts<t.InferredPredicate> | null,\n): node is t.InferredPredicate {\n if (!node) return false;\n\n if (node.type !== \"InferredPredicate\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isInterfaceExtends(\n node: t.Node | null | undefined,\n opts?: Opts<t.InterfaceExtends> | null,\n): node is t.InterfaceExtends {\n if (!node) return false;\n\n if (node.type !== \"InterfaceExtends\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isInterfaceDeclaration(\n node: t.Node | null | undefined,\n opts?: Opts<t.InterfaceDeclaration> | null,\n): node is t.InterfaceDeclaration {\n if (!node) return false;\n\n if (node.type !== \"InterfaceDeclaration\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isInterfaceTypeAnnotation(\n node: t.Node | null | undefined,\n opts?: Opts<t.InterfaceTypeAnnotation> | null,\n): node is t.InterfaceTypeAnnotation {\n if (!node) return false;\n\n if (node.type !== \"InterfaceTypeAnnotation\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isIntersectionTypeAnnotation(\n node: t.Node | null | undefined,\n opts?: Opts<t.IntersectionTypeAnnotation> | null,\n): node is t.IntersectionTypeAnnotation {\n if (!node) return false;\n\n if (node.type !== \"IntersectionTypeAnnotation\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isMixedTypeAnnotation(\n node: t.Node | null | undefined,\n opts?: Opts<t.MixedTypeAnnotation> | null,\n): node is t.MixedTypeAnnotation {\n if (!node) return false;\n\n if (node.type !== \"MixedTypeAnnotation\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isEmptyTypeAnnotation(\n node: t.Node | null | undefined,\n opts?: Opts<t.EmptyTypeAnnotation> | null,\n): node is t.EmptyTypeAnnotation {\n if (!node) return false;\n\n if (node.type !== \"EmptyTypeAnnotation\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isNullableTypeAnnotation(\n node: t.Node | null | undefined,\n opts?: Opts<t.NullableTypeAnnotation> | null,\n): node is t.NullableTypeAnnotation {\n if (!node) return false;\n\n if (node.type !== \"NullableTypeAnnotation\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isNumberLiteralTypeAnnotation(\n node: t.Node | null | undefined,\n opts?: Opts<t.NumberLiteralTypeAnnotation> | null,\n): node is t.NumberLiteralTypeAnnotation {\n if (!node) return false;\n\n if (node.type !== \"NumberLiteralTypeAnnotation\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isNumberTypeAnnotation(\n node: t.Node | null | undefined,\n opts?: Opts<t.NumberTypeAnnotation> | null,\n): node is t.NumberTypeAnnotation {\n if (!node) return false;\n\n if (node.type !== \"NumberTypeAnnotation\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isObjectTypeAnnotation(\n node: t.Node | null | undefined,\n opts?: Opts<t.ObjectTypeAnnotation> | null,\n): node is t.ObjectTypeAnnotation {\n if (!node) return false;\n\n if (node.type !== \"ObjectTypeAnnotation\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isObjectTypeInternalSlot(\n node: t.Node | null | undefined,\n opts?: Opts<t.ObjectTypeInternalSlot> | null,\n): node is t.ObjectTypeInternalSlot {\n if (!node) return false;\n\n if (node.type !== \"ObjectTypeInternalSlot\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isObjectTypeCallProperty(\n node: t.Node | null | undefined,\n opts?: Opts<t.ObjectTypeCallProperty> | null,\n): node is t.ObjectTypeCallProperty {\n if (!node) return false;\n\n if (node.type !== \"ObjectTypeCallProperty\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isObjectTypeIndexer(\n node: t.Node | null | undefined,\n opts?: Opts<t.ObjectTypeIndexer> | null,\n): node is t.ObjectTypeIndexer {\n if (!node) return false;\n\n if (node.type !== \"ObjectTypeIndexer\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isObjectTypeProperty(\n node: t.Node | null | undefined,\n opts?: Opts<t.ObjectTypeProperty> | null,\n): node is t.ObjectTypeProperty {\n if (!node) return false;\n\n if (node.type !== \"ObjectTypeProperty\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isObjectTypeSpreadProperty(\n node: t.Node | null | undefined,\n opts?: Opts<t.ObjectTypeSpreadProperty> | null,\n): node is t.ObjectTypeSpreadProperty {\n if (!node) return false;\n\n if (node.type !== \"ObjectTypeSpreadProperty\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isOpaqueType(\n node: t.Node | null | undefined,\n opts?: Opts<t.OpaqueType> | null,\n): node is t.OpaqueType {\n if (!node) return false;\n\n if (node.type !== \"OpaqueType\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isQualifiedTypeIdentifier(\n node: t.Node | null | undefined,\n opts?: Opts<t.QualifiedTypeIdentifier> | null,\n): node is t.QualifiedTypeIdentifier {\n if (!node) return false;\n\n if (node.type !== \"QualifiedTypeIdentifier\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isStringLiteralTypeAnnotation(\n node: t.Node | null | undefined,\n opts?: Opts<t.StringLiteralTypeAnnotation> | null,\n): node is t.StringLiteralTypeAnnotation {\n if (!node) return false;\n\n if (node.type !== \"StringLiteralTypeAnnotation\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isStringTypeAnnotation(\n node: t.Node | null | undefined,\n opts?: Opts<t.StringTypeAnnotation> | null,\n): node is t.StringTypeAnnotation {\n if (!node) return false;\n\n if (node.type !== \"StringTypeAnnotation\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isSymbolTypeAnnotation(\n node: t.Node | null | undefined,\n opts?: Opts<t.SymbolTypeAnnotation> | null,\n): node is t.SymbolTypeAnnotation {\n if (!node) return false;\n\n if (node.type !== \"SymbolTypeAnnotation\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isThisTypeAnnotation(\n node: t.Node | null | undefined,\n opts?: Opts<t.ThisTypeAnnotation> | null,\n): node is t.ThisTypeAnnotation {\n if (!node) return false;\n\n if (node.type !== \"ThisTypeAnnotation\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isTupleTypeAnnotation(\n node: t.Node | null | undefined,\n opts?: Opts<t.TupleTypeAnnotation> | null,\n): node is t.TupleTypeAnnotation {\n if (!node) return false;\n\n if (node.type !== \"TupleTypeAnnotation\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isTypeofTypeAnnotation(\n node: t.Node | null | undefined,\n opts?: Opts<t.TypeofTypeAnnotation> | null,\n): node is t.TypeofTypeAnnotation {\n if (!node) return false;\n\n if (node.type !== \"TypeofTypeAnnotation\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isTypeAlias(\n node: t.Node | null | undefined,\n opts?: Opts<t.TypeAlias> | null,\n): node is t.TypeAlias {\n if (!node) return false;\n\n if (node.type !== \"TypeAlias\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isTypeAnnotation(\n node: t.Node | null | undefined,\n opts?: Opts<t.TypeAnnotation> | null,\n): node is t.TypeAnnotation {\n if (!node) return false;\n\n if (node.type !== \"TypeAnnotation\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isTypeCastExpression(\n node: t.Node | null | undefined,\n opts?: Opts<t.TypeCastExpression> | null,\n): node is t.TypeCastExpression {\n if (!node) return false;\n\n if (node.type !== \"TypeCastExpression\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isTypeParameter(\n node: t.Node | null | undefined,\n opts?: Opts<t.TypeParameter> | null,\n): node is t.TypeParameter {\n if (!node) return false;\n\n if (node.type !== \"TypeParameter\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isTypeParameterDeclaration(\n node: t.Node | null | undefined,\n opts?: Opts<t.TypeParameterDeclaration> | null,\n): node is t.TypeParameterDeclaration {\n if (!node) return false;\n\n if (node.type !== \"TypeParameterDeclaration\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isTypeParameterInstantiation(\n node: t.Node | null | undefined,\n opts?: Opts<t.TypeParameterInstantiation> | null,\n): node is t.TypeParameterInstantiation {\n if (!node) return false;\n\n if (node.type !== \"TypeParameterInstantiation\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isUnionTypeAnnotation(\n node: t.Node | null | undefined,\n opts?: Opts<t.UnionTypeAnnotation> | null,\n): node is t.UnionTypeAnnotation {\n if (!node) return false;\n\n if (node.type !== \"UnionTypeAnnotation\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isVariance(\n node: t.Node | null | undefined,\n opts?: Opts<t.Variance> | null,\n): node is t.Variance {\n if (!node) return false;\n\n if (node.type !== \"Variance\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isVoidTypeAnnotation(\n node: t.Node | null | undefined,\n opts?: Opts<t.VoidTypeAnnotation> | null,\n): node is t.VoidTypeAnnotation {\n if (!node) return false;\n\n if (node.type !== \"VoidTypeAnnotation\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isEnumDeclaration(\n node: t.Node | null | undefined,\n opts?: Opts<t.EnumDeclaration> | null,\n): node is t.EnumDeclaration {\n if (!node) return false;\n\n if (node.type !== \"EnumDeclaration\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isEnumBooleanBody(\n node: t.Node | null | undefined,\n opts?: Opts<t.EnumBooleanBody> | null,\n): node is t.EnumBooleanBody {\n if (!node) return false;\n\n if (node.type !== \"EnumBooleanBody\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isEnumNumberBody(\n node: t.Node | null | undefined,\n opts?: Opts<t.EnumNumberBody> | null,\n): node is t.EnumNumberBody {\n if (!node) return false;\n\n if (node.type !== \"EnumNumberBody\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isEnumStringBody(\n node: t.Node | null | undefined,\n opts?: Opts<t.EnumStringBody> | null,\n): node is t.EnumStringBody {\n if (!node) return false;\n\n if (node.type !== \"EnumStringBody\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isEnumSymbolBody(\n node: t.Node | null | undefined,\n opts?: Opts<t.EnumSymbolBody> | null,\n): node is t.EnumSymbolBody {\n if (!node) return false;\n\n if (node.type !== \"EnumSymbolBody\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isEnumBooleanMember(\n node: t.Node | null | undefined,\n opts?: Opts<t.EnumBooleanMember> | null,\n): node is t.EnumBooleanMember {\n if (!node) return false;\n\n if (node.type !== \"EnumBooleanMember\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isEnumNumberMember(\n node: t.Node | null | undefined,\n opts?: Opts<t.EnumNumberMember> | null,\n): node is t.EnumNumberMember {\n if (!node) return false;\n\n if (node.type !== \"EnumNumberMember\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isEnumStringMember(\n node: t.Node | null | undefined,\n opts?: Opts<t.EnumStringMember> | null,\n): node is t.EnumStringMember {\n if (!node) return false;\n\n if (node.type !== \"EnumStringMember\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isEnumDefaultedMember(\n node: t.Node | null | undefined,\n opts?: Opts<t.EnumDefaultedMember> | null,\n): node is t.EnumDefaultedMember {\n if (!node) return false;\n\n if (node.type !== \"EnumDefaultedMember\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isIndexedAccessType(\n node: t.Node | null | undefined,\n opts?: Opts<t.IndexedAccessType> | null,\n): node is t.IndexedAccessType {\n if (!node) return false;\n\n if (node.type !== \"IndexedAccessType\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isOptionalIndexedAccessType(\n node: t.Node | null | undefined,\n opts?: Opts<t.OptionalIndexedAccessType> | null,\n): node is t.OptionalIndexedAccessType {\n if (!node) return false;\n\n if (node.type !== \"OptionalIndexedAccessType\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isJSXAttribute(\n node: t.Node | null | undefined,\n opts?: Opts<t.JSXAttribute> | null,\n): node is t.JSXAttribute {\n if (!node) return false;\n\n if (node.type !== \"JSXAttribute\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isJSXClosingElement(\n node: t.Node | null | undefined,\n opts?: Opts<t.JSXClosingElement> | null,\n): node is t.JSXClosingElement {\n if (!node) return false;\n\n if (node.type !== \"JSXClosingElement\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isJSXElement(\n node: t.Node | null | undefined,\n opts?: Opts<t.JSXElement> | null,\n): node is t.JSXElement {\n if (!node) return false;\n\n if (node.type !== \"JSXElement\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isJSXEmptyExpression(\n node: t.Node | null | undefined,\n opts?: Opts<t.JSXEmptyExpression> | null,\n): node is t.JSXEmptyExpression {\n if (!node) return false;\n\n if (node.type !== \"JSXEmptyExpression\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isJSXExpressionContainer(\n node: t.Node | null | undefined,\n opts?: Opts<t.JSXExpressionContainer> | null,\n): node is t.JSXExpressionContainer {\n if (!node) return false;\n\n if (node.type !== \"JSXExpressionContainer\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isJSXSpreadChild(\n node: t.Node | null | undefined,\n opts?: Opts<t.JSXSpreadChild> | null,\n): node is t.JSXSpreadChild {\n if (!node) return false;\n\n if (node.type !== \"JSXSpreadChild\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isJSXIdentifier(\n node: t.Node | null | undefined,\n opts?: Opts<t.JSXIdentifier> | null,\n): node is t.JSXIdentifier {\n if (!node) return false;\n\n if (node.type !== \"JSXIdentifier\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isJSXMemberExpression(\n node: t.Node | null | undefined,\n opts?: Opts<t.JSXMemberExpression> | null,\n): node is t.JSXMemberExpression {\n if (!node) return false;\n\n if (node.type !== \"JSXMemberExpression\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isJSXNamespacedName(\n node: t.Node | null | undefined,\n opts?: Opts<t.JSXNamespacedName> | null,\n): node is t.JSXNamespacedName {\n if (!node) return false;\n\n if (node.type !== \"JSXNamespacedName\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isJSXOpeningElement(\n node: t.Node | null | undefined,\n opts?: Opts<t.JSXOpeningElement> | null,\n): node is t.JSXOpeningElement {\n if (!node) return false;\n\n if (node.type !== \"JSXOpeningElement\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isJSXSpreadAttribute(\n node: t.Node | null | undefined,\n opts?: Opts<t.JSXSpreadAttribute> | null,\n): node is t.JSXSpreadAttribute {\n if (!node) return false;\n\n if (node.type !== \"JSXSpreadAttribute\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isJSXText(\n node: t.Node | null | undefined,\n opts?: Opts<t.JSXText> | null,\n): node is t.JSXText {\n if (!node) return false;\n\n if (node.type !== \"JSXText\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isJSXFragment(\n node: t.Node | null | undefined,\n opts?: Opts<t.JSXFragment> | null,\n): node is t.JSXFragment {\n if (!node) return false;\n\n if (node.type !== \"JSXFragment\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isJSXOpeningFragment(\n node: t.Node | null | undefined,\n opts?: Opts<t.JSXOpeningFragment> | null,\n): node is t.JSXOpeningFragment {\n if (!node) return false;\n\n if (node.type !== \"JSXOpeningFragment\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isJSXClosingFragment(\n node: t.Node | null | undefined,\n opts?: Opts<t.JSXClosingFragment> | null,\n): node is t.JSXClosingFragment {\n if (!node) return false;\n\n if (node.type !== \"JSXClosingFragment\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isNoop(\n node: t.Node | null | undefined,\n opts?: Opts<t.Noop> | null,\n): node is t.Noop {\n if (!node) return false;\n\n if (node.type !== \"Noop\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isPlaceholder(\n node: t.Node | null | undefined,\n opts?: Opts<t.Placeholder> | null,\n): node is t.Placeholder {\n if (!node) return false;\n\n if (node.type !== \"Placeholder\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isV8IntrinsicIdentifier(\n node: t.Node | null | undefined,\n opts?: Opts<t.V8IntrinsicIdentifier> | null,\n): node is t.V8IntrinsicIdentifier {\n if (!node) return false;\n\n if (node.type !== \"V8IntrinsicIdentifier\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isArgumentPlaceholder(\n node: t.Node | null | undefined,\n opts?: Opts<t.ArgumentPlaceholder> | null,\n): node is t.ArgumentPlaceholder {\n if (!node) return false;\n\n if (node.type !== \"ArgumentPlaceholder\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isBindExpression(\n node: t.Node | null | undefined,\n opts?: Opts<t.BindExpression> | null,\n): node is t.BindExpression {\n if (!node) return false;\n\n if (node.type !== \"BindExpression\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isImportAttribute(\n node: t.Node | null | undefined,\n opts?: Opts<t.ImportAttribute> | null,\n): node is t.ImportAttribute {\n if (!node) return false;\n\n if (node.type !== \"ImportAttribute\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isDecorator(\n node: t.Node | null | undefined,\n opts?: Opts<t.Decorator> | null,\n): node is t.Decorator {\n if (!node) return false;\n\n if (node.type !== \"Decorator\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isDoExpression(\n node: t.Node | null | undefined,\n opts?: Opts<t.DoExpression> | null,\n): node is t.DoExpression {\n if (!node) return false;\n\n if (node.type !== \"DoExpression\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isExportDefaultSpecifier(\n node: t.Node | null | undefined,\n opts?: Opts<t.ExportDefaultSpecifier> | null,\n): node is t.ExportDefaultSpecifier {\n if (!node) return false;\n\n if (node.type !== \"ExportDefaultSpecifier\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isRecordExpression(\n node: t.Node | null | undefined,\n opts?: Opts<t.RecordExpression> | null,\n): node is t.RecordExpression {\n if (!node) return false;\n\n if (node.type !== \"RecordExpression\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isTupleExpression(\n node: t.Node | null | undefined,\n opts?: Opts<t.TupleExpression> | null,\n): node is t.TupleExpression {\n if (!node) return false;\n\n if (node.type !== \"TupleExpression\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isDecimalLiteral(\n node: t.Node | null | undefined,\n opts?: Opts<t.DecimalLiteral> | null,\n): node is t.DecimalLiteral {\n if (!node) return false;\n\n if (node.type !== \"DecimalLiteral\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isModuleExpression(\n node: t.Node | null | undefined,\n opts?: Opts<t.ModuleExpression> | null,\n): node is t.ModuleExpression {\n if (!node) return false;\n\n if (node.type !== \"ModuleExpression\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isTopicReference(\n node: t.Node | null | undefined,\n opts?: Opts<t.TopicReference> | null,\n): node is t.TopicReference {\n if (!node) return false;\n\n if (node.type !== \"TopicReference\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isPipelineTopicExpression(\n node: t.Node | null | undefined,\n opts?: Opts<t.PipelineTopicExpression> | null,\n): node is t.PipelineTopicExpression {\n if (!node) return false;\n\n if (node.type !== \"PipelineTopicExpression\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isPipelineBareFunction(\n node: t.Node | null | undefined,\n opts?: Opts<t.PipelineBareFunction> | null,\n): node is t.PipelineBareFunction {\n if (!node) return false;\n\n if (node.type !== \"PipelineBareFunction\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isPipelinePrimaryTopicReference(\n node: t.Node | null | undefined,\n opts?: Opts<t.PipelinePrimaryTopicReference> | null,\n): node is t.PipelinePrimaryTopicReference {\n if (!node) return false;\n\n if (node.type !== \"PipelinePrimaryTopicReference\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isTSParameterProperty(\n node: t.Node | null | undefined,\n opts?: Opts<t.TSParameterProperty> | null,\n): node is t.TSParameterProperty {\n if (!node) return false;\n\n if (node.type !== \"TSParameterProperty\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isTSDeclareFunction(\n node: t.Node | null | undefined,\n opts?: Opts<t.TSDeclareFunction> | null,\n): node is t.TSDeclareFunction {\n if (!node) return false;\n\n if (node.type !== \"TSDeclareFunction\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isTSDeclareMethod(\n node: t.Node | null | undefined,\n opts?: Opts<t.TSDeclareMethod> | null,\n): node is t.TSDeclareMethod {\n if (!node) return false;\n\n if (node.type !== \"TSDeclareMethod\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isTSQualifiedName(\n node: t.Node | null | undefined,\n opts?: Opts<t.TSQualifiedName> | null,\n): node is t.TSQualifiedName {\n if (!node) return false;\n\n if (node.type !== \"TSQualifiedName\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isTSCallSignatureDeclaration(\n node: t.Node | null | undefined,\n opts?: Opts<t.TSCallSignatureDeclaration> | null,\n): node is t.TSCallSignatureDeclaration {\n if (!node) return false;\n\n if (node.type !== \"TSCallSignatureDeclaration\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isTSConstructSignatureDeclaration(\n node: t.Node | null | undefined,\n opts?: Opts<t.TSConstructSignatureDeclaration> | null,\n): node is t.TSConstructSignatureDeclaration {\n if (!node) return false;\n\n if (node.type !== \"TSConstructSignatureDeclaration\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isTSPropertySignature(\n node: t.Node | null | undefined,\n opts?: Opts<t.TSPropertySignature> | null,\n): node is t.TSPropertySignature {\n if (!node) return false;\n\n if (node.type !== \"TSPropertySignature\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isTSMethodSignature(\n node: t.Node | null | undefined,\n opts?: Opts<t.TSMethodSignature> | null,\n): node is t.TSMethodSignature {\n if (!node) return false;\n\n if (node.type !== \"TSMethodSignature\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isTSIndexSignature(\n node: t.Node | null | undefined,\n opts?: Opts<t.TSIndexSignature> | null,\n): node is t.TSIndexSignature {\n if (!node) return false;\n\n if (node.type !== \"TSIndexSignature\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isTSAnyKeyword(\n node: t.Node | null | undefined,\n opts?: Opts<t.TSAnyKeyword> | null,\n): node is t.TSAnyKeyword {\n if (!node) return false;\n\n if (node.type !== \"TSAnyKeyword\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isTSBooleanKeyword(\n node: t.Node | null | undefined,\n opts?: Opts<t.TSBooleanKeyword> | null,\n): node is t.TSBooleanKeyword {\n if (!node) return false;\n\n if (node.type !== \"TSBooleanKeyword\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isTSBigIntKeyword(\n node: t.Node | null | undefined,\n opts?: Opts<t.TSBigIntKeyword> | null,\n): node is t.TSBigIntKeyword {\n if (!node) return false;\n\n if (node.type !== \"TSBigIntKeyword\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isTSIntrinsicKeyword(\n node: t.Node | null | undefined,\n opts?: Opts<t.TSIntrinsicKeyword> | null,\n): node is t.TSIntrinsicKeyword {\n if (!node) return false;\n\n if (node.type !== \"TSIntrinsicKeyword\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isTSNeverKeyword(\n node: t.Node | null | undefined,\n opts?: Opts<t.TSNeverKeyword> | null,\n): node is t.TSNeverKeyword {\n if (!node) return false;\n\n if (node.type !== \"TSNeverKeyword\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isTSNullKeyword(\n node: t.Node | null | undefined,\n opts?: Opts<t.TSNullKeyword> | null,\n): node is t.TSNullKeyword {\n if (!node) return false;\n\n if (node.type !== \"TSNullKeyword\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isTSNumberKeyword(\n node: t.Node | null | undefined,\n opts?: Opts<t.TSNumberKeyword> | null,\n): node is t.TSNumberKeyword {\n if (!node) return false;\n\n if (node.type !== \"TSNumberKeyword\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isTSObjectKeyword(\n node: t.Node | null | undefined,\n opts?: Opts<t.TSObjectKeyword> | null,\n): node is t.TSObjectKeyword {\n if (!node) return false;\n\n if (node.type !== \"TSObjectKeyword\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isTSStringKeyword(\n node: t.Node | null | undefined,\n opts?: Opts<t.TSStringKeyword> | null,\n): node is t.TSStringKeyword {\n if (!node) return false;\n\n if (node.type !== \"TSStringKeyword\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isTSSymbolKeyword(\n node: t.Node | null | undefined,\n opts?: Opts<t.TSSymbolKeyword> | null,\n): node is t.TSSymbolKeyword {\n if (!node) return false;\n\n if (node.type !== \"TSSymbolKeyword\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isTSUndefinedKeyword(\n node: t.Node | null | undefined,\n opts?: Opts<t.TSUndefinedKeyword> | null,\n): node is t.TSUndefinedKeyword {\n if (!node) return false;\n\n if (node.type !== \"TSUndefinedKeyword\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isTSUnknownKeyword(\n node: t.Node | null | undefined,\n opts?: Opts<t.TSUnknownKeyword> | null,\n): node is t.TSUnknownKeyword {\n if (!node) return false;\n\n if (node.type !== \"TSUnknownKeyword\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isTSVoidKeyword(\n node: t.Node | null | undefined,\n opts?: Opts<t.TSVoidKeyword> | null,\n): node is t.TSVoidKeyword {\n if (!node) return false;\n\n if (node.type !== \"TSVoidKeyword\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isTSThisType(\n node: t.Node | null | undefined,\n opts?: Opts<t.TSThisType> | null,\n): node is t.TSThisType {\n if (!node) return false;\n\n if (node.type !== \"TSThisType\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isTSFunctionType(\n node: t.Node | null | undefined,\n opts?: Opts<t.TSFunctionType> | null,\n): node is t.TSFunctionType {\n if (!node) return false;\n\n if (node.type !== \"TSFunctionType\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isTSConstructorType(\n node: t.Node | null | undefined,\n opts?: Opts<t.TSConstructorType> | null,\n): node is t.TSConstructorType {\n if (!node) return false;\n\n if (node.type !== \"TSConstructorType\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isTSTypeReference(\n node: t.Node | null | undefined,\n opts?: Opts<t.TSTypeReference> | null,\n): node is t.TSTypeReference {\n if (!node) return false;\n\n if (node.type !== \"TSTypeReference\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isTSTypePredicate(\n node: t.Node | null | undefined,\n opts?: Opts<t.TSTypePredicate> | null,\n): node is t.TSTypePredicate {\n if (!node) return false;\n\n if (node.type !== \"TSTypePredicate\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isTSTypeQuery(\n node: t.Node | null | undefined,\n opts?: Opts<t.TSTypeQuery> | null,\n): node is t.TSTypeQuery {\n if (!node) return false;\n\n if (node.type !== \"TSTypeQuery\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isTSTypeLiteral(\n node: t.Node | null | undefined,\n opts?: Opts<t.TSTypeLiteral> | null,\n): node is t.TSTypeLiteral {\n if (!node) return false;\n\n if (node.type !== \"TSTypeLiteral\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isTSArrayType(\n node: t.Node | null | undefined,\n opts?: Opts<t.TSArrayType> | null,\n): node is t.TSArrayType {\n if (!node) return false;\n\n if (node.type !== \"TSArrayType\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isTSTupleType(\n node: t.Node | null | undefined,\n opts?: Opts<t.TSTupleType> | null,\n): node is t.TSTupleType {\n if (!node) return false;\n\n if (node.type !== \"TSTupleType\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isTSOptionalType(\n node: t.Node | null | undefined,\n opts?: Opts<t.TSOptionalType> | null,\n): node is t.TSOptionalType {\n if (!node) return false;\n\n if (node.type !== \"TSOptionalType\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isTSRestType(\n node: t.Node | null | undefined,\n opts?: Opts<t.TSRestType> | null,\n): node is t.TSRestType {\n if (!node) return false;\n\n if (node.type !== \"TSRestType\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isTSNamedTupleMember(\n node: t.Node | null | undefined,\n opts?: Opts<t.TSNamedTupleMember> | null,\n): node is t.TSNamedTupleMember {\n if (!node) return false;\n\n if (node.type !== \"TSNamedTupleMember\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isTSUnionType(\n node: t.Node | null | undefined,\n opts?: Opts<t.TSUnionType> | null,\n): node is t.TSUnionType {\n if (!node) return false;\n\n if (node.type !== \"TSUnionType\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isTSIntersectionType(\n node: t.Node | null | undefined,\n opts?: Opts<t.TSIntersectionType> | null,\n): node is t.TSIntersectionType {\n if (!node) return false;\n\n if (node.type !== \"TSIntersectionType\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isTSConditionalType(\n node: t.Node | null | undefined,\n opts?: Opts<t.TSConditionalType> | null,\n): node is t.TSConditionalType {\n if (!node) return false;\n\n if (node.type !== \"TSConditionalType\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isTSInferType(\n node: t.Node | null | undefined,\n opts?: Opts<t.TSInferType> | null,\n): node is t.TSInferType {\n if (!node) return false;\n\n if (node.type !== \"TSInferType\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isTSParenthesizedType(\n node: t.Node | null | undefined,\n opts?: Opts<t.TSParenthesizedType> | null,\n): node is t.TSParenthesizedType {\n if (!node) return false;\n\n if (node.type !== \"TSParenthesizedType\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isTSTypeOperator(\n node: t.Node | null | undefined,\n opts?: Opts<t.TSTypeOperator> | null,\n): node is t.TSTypeOperator {\n if (!node) return false;\n\n if (node.type !== \"TSTypeOperator\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isTSIndexedAccessType(\n node: t.Node | null | undefined,\n opts?: Opts<t.TSIndexedAccessType> | null,\n): node is t.TSIndexedAccessType {\n if (!node) return false;\n\n if (node.type !== \"TSIndexedAccessType\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isTSMappedType(\n node: t.Node | null | undefined,\n opts?: Opts<t.TSMappedType> | null,\n): node is t.TSMappedType {\n if (!node) return false;\n\n if (node.type !== \"TSMappedType\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isTSLiteralType(\n node: t.Node | null | undefined,\n opts?: Opts<t.TSLiteralType> | null,\n): node is t.TSLiteralType {\n if (!node) return false;\n\n if (node.type !== \"TSLiteralType\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isTSExpressionWithTypeArguments(\n node: t.Node | null | undefined,\n opts?: Opts<t.TSExpressionWithTypeArguments> | null,\n): node is t.TSExpressionWithTypeArguments {\n if (!node) return false;\n\n if (node.type !== \"TSExpressionWithTypeArguments\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isTSInterfaceDeclaration(\n node: t.Node | null | undefined,\n opts?: Opts<t.TSInterfaceDeclaration> | null,\n): node is t.TSInterfaceDeclaration {\n if (!node) return false;\n\n if (node.type !== \"TSInterfaceDeclaration\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isTSInterfaceBody(\n node: t.Node | null | undefined,\n opts?: Opts<t.TSInterfaceBody> | null,\n): node is t.TSInterfaceBody {\n if (!node) return false;\n\n if (node.type !== \"TSInterfaceBody\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isTSTypeAliasDeclaration(\n node: t.Node | null | undefined,\n opts?: Opts<t.TSTypeAliasDeclaration> | null,\n): node is t.TSTypeAliasDeclaration {\n if (!node) return false;\n\n if (node.type !== \"TSTypeAliasDeclaration\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isTSInstantiationExpression(\n node: t.Node | null | undefined,\n opts?: Opts<t.TSInstantiationExpression> | null,\n): node is t.TSInstantiationExpression {\n if (!node) return false;\n\n if (node.type !== \"TSInstantiationExpression\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isTSAsExpression(\n node: t.Node | null | undefined,\n opts?: Opts<t.TSAsExpression> | null,\n): node is t.TSAsExpression {\n if (!node) return false;\n\n if (node.type !== \"TSAsExpression\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isTSSatisfiesExpression(\n node: t.Node | null | undefined,\n opts?: Opts<t.TSSatisfiesExpression> | null,\n): node is t.TSSatisfiesExpression {\n if (!node) return false;\n\n if (node.type !== \"TSSatisfiesExpression\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isTSTypeAssertion(\n node: t.Node | null | undefined,\n opts?: Opts<t.TSTypeAssertion> | null,\n): node is t.TSTypeAssertion {\n if (!node) return false;\n\n if (node.type !== \"TSTypeAssertion\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isTSEnumDeclaration(\n node: t.Node | null | undefined,\n opts?: Opts<t.TSEnumDeclaration> | null,\n): node is t.TSEnumDeclaration {\n if (!node) return false;\n\n if (node.type !== \"TSEnumDeclaration\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isTSEnumMember(\n node: t.Node | null | undefined,\n opts?: Opts<t.TSEnumMember> | null,\n): node is t.TSEnumMember {\n if (!node) return false;\n\n if (node.type !== \"TSEnumMember\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isTSModuleDeclaration(\n node: t.Node | null | undefined,\n opts?: Opts<t.TSModuleDeclaration> | null,\n): node is t.TSModuleDeclaration {\n if (!node) return false;\n\n if (node.type !== \"TSModuleDeclaration\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isTSModuleBlock(\n node: t.Node | null | undefined,\n opts?: Opts<t.TSModuleBlock> | null,\n): node is t.TSModuleBlock {\n if (!node) return false;\n\n if (node.type !== \"TSModuleBlock\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isTSImportType(\n node: t.Node | null | undefined,\n opts?: Opts<t.TSImportType> | null,\n): node is t.TSImportType {\n if (!node) return false;\n\n if (node.type !== \"TSImportType\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isTSImportEqualsDeclaration(\n node: t.Node | null | undefined,\n opts?: Opts<t.TSImportEqualsDeclaration> | null,\n): node is t.TSImportEqualsDeclaration {\n if (!node) return false;\n\n if (node.type !== \"TSImportEqualsDeclaration\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isTSExternalModuleReference(\n node: t.Node | null | undefined,\n opts?: Opts<t.TSExternalModuleReference> | null,\n): node is t.TSExternalModuleReference {\n if (!node) return false;\n\n if (node.type !== \"TSExternalModuleReference\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isTSNonNullExpression(\n node: t.Node | null | undefined,\n opts?: Opts<t.TSNonNullExpression> | null,\n): node is t.TSNonNullExpression {\n if (!node) return false;\n\n if (node.type !== \"TSNonNullExpression\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isTSExportAssignment(\n node: t.Node | null | undefined,\n opts?: Opts<t.TSExportAssignment> | null,\n): node is t.TSExportAssignment {\n if (!node) return false;\n\n if (node.type !== \"TSExportAssignment\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isTSNamespaceExportDeclaration(\n node: t.Node | null | undefined,\n opts?: Opts<t.TSNamespaceExportDeclaration> | null,\n): node is t.TSNamespaceExportDeclaration {\n if (!node) return false;\n\n if (node.type !== \"TSNamespaceExportDeclaration\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isTSTypeAnnotation(\n node: t.Node | null | undefined,\n opts?: Opts<t.TSTypeAnnotation> | null,\n): node is t.TSTypeAnnotation {\n if (!node) return false;\n\n if (node.type !== \"TSTypeAnnotation\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isTSTypeParameterInstantiation(\n node: t.Node | null | undefined,\n opts?: Opts<t.TSTypeParameterInstantiation> | null,\n): node is t.TSTypeParameterInstantiation {\n if (!node) return false;\n\n if (node.type !== \"TSTypeParameterInstantiation\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isTSTypeParameterDeclaration(\n node: t.Node | null | undefined,\n opts?: Opts<t.TSTypeParameterDeclaration> | null,\n): node is t.TSTypeParameterDeclaration {\n if (!node) return false;\n\n if (node.type !== \"TSTypeParameterDeclaration\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isTSTypeParameter(\n node: t.Node | null | undefined,\n opts?: Opts<t.TSTypeParameter> | null,\n): node is t.TSTypeParameter {\n if (!node) return false;\n\n if (node.type !== \"TSTypeParameter\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isStandardized(\n node: t.Node | null | undefined,\n opts?: Opts<t.Standardized> | null,\n): node is t.Standardized {\n if (!node) return false;\n\n switch (node.type) {\n case \"ArrayExpression\":\n case \"AssignmentExpression\":\n case \"BinaryExpression\":\n case \"InterpreterDirective\":\n case \"Directive\":\n case \"DirectiveLiteral\":\n case \"BlockStatement\":\n case \"BreakStatement\":\n case \"CallExpression\":\n case \"CatchClause\":\n case \"ConditionalExpression\":\n case \"ContinueStatement\":\n case \"DebuggerStatement\":\n case \"DoWhileStatement\":\n case \"EmptyStatement\":\n case \"ExpressionStatement\":\n case \"File\":\n case \"ForInStatement\":\n case \"ForStatement\":\n case \"FunctionDeclaration\":\n case \"FunctionExpression\":\n case \"Identifier\":\n case \"IfStatement\":\n case \"LabeledStatement\":\n case \"StringLiteral\":\n case \"NumericLiteral\":\n case \"NullLiteral\":\n case \"BooleanLiteral\":\n case \"RegExpLiteral\":\n case \"LogicalExpression\":\n case \"MemberExpression\":\n case \"NewExpression\":\n case \"Program\":\n case \"ObjectExpression\":\n case \"ObjectMethod\":\n case \"ObjectProperty\":\n case \"RestElement\":\n case \"ReturnStatement\":\n case \"SequenceExpression\":\n case \"ParenthesizedExpression\":\n case \"SwitchCase\":\n case \"SwitchStatement\":\n case \"ThisExpression\":\n case \"ThrowStatement\":\n case \"TryStatement\":\n case \"UnaryExpression\":\n case \"UpdateExpression\":\n case \"VariableDeclaration\":\n case \"VariableDeclarator\":\n case \"WhileStatement\":\n case \"WithStatement\":\n case \"AssignmentPattern\":\n case \"ArrayPattern\":\n case \"ArrowFunctionExpression\":\n case \"ClassBody\":\n case \"ClassExpression\":\n case \"ClassDeclaration\":\n case \"ExportAllDeclaration\":\n case \"ExportDefaultDeclaration\":\n case \"ExportNamedDeclaration\":\n case \"ExportSpecifier\":\n case \"ForOfStatement\":\n case \"ImportDeclaration\":\n case \"ImportDefaultSpecifier\":\n case \"ImportNamespaceSpecifier\":\n case \"ImportSpecifier\":\n case \"ImportExpression\":\n case \"MetaProperty\":\n case \"ClassMethod\":\n case \"ObjectPattern\":\n case \"SpreadElement\":\n case \"Super\":\n case \"TaggedTemplateExpression\":\n case \"TemplateElement\":\n case \"TemplateLiteral\":\n case \"YieldExpression\":\n case \"AwaitExpression\":\n case \"Import\":\n case \"BigIntLiteral\":\n case \"ExportNamespaceSpecifier\":\n case \"OptionalMemberExpression\":\n case \"OptionalCallExpression\":\n case \"ClassProperty\":\n case \"ClassAccessorProperty\":\n case \"ClassPrivateProperty\":\n case \"ClassPrivateMethod\":\n case \"PrivateName\":\n case \"StaticBlock\":\n break;\n case \"Placeholder\":\n switch (node.expectedNode) {\n case \"Identifier\":\n case \"StringLiteral\":\n case \"BlockStatement\":\n case \"ClassBody\":\n break;\n default:\n return false;\n }\n break;\n default:\n return false;\n }\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isExpression(\n node: t.Node | null | undefined,\n opts?: Opts<t.Expression> | null,\n): node is t.Expression {\n if (!node) return false;\n\n switch (node.type) {\n case \"ArrayExpression\":\n case \"AssignmentExpression\":\n case \"BinaryExpression\":\n case \"CallExpression\":\n case \"ConditionalExpression\":\n case \"FunctionExpression\":\n case \"Identifier\":\n case \"StringLiteral\":\n case \"NumericLiteral\":\n case \"NullLiteral\":\n case \"BooleanLiteral\":\n case \"RegExpLiteral\":\n case \"LogicalExpression\":\n case \"MemberExpression\":\n case \"NewExpression\":\n case \"ObjectExpression\":\n case \"SequenceExpression\":\n case \"ParenthesizedExpression\":\n case \"ThisExpression\":\n case \"UnaryExpression\":\n case \"UpdateExpression\":\n case \"ArrowFunctionExpression\":\n case \"ClassExpression\":\n case \"ImportExpression\":\n case \"MetaProperty\":\n case \"Super\":\n case \"TaggedTemplateExpression\":\n case \"TemplateLiteral\":\n case \"YieldExpression\":\n case \"AwaitExpression\":\n case \"Import\":\n case \"BigIntLiteral\":\n case \"OptionalMemberExpression\":\n case \"OptionalCallExpression\":\n case \"TypeCastExpression\":\n case \"JSXElement\":\n case \"JSXFragment\":\n case \"BindExpression\":\n case \"DoExpression\":\n case \"RecordExpression\":\n case \"TupleExpression\":\n case \"DecimalLiteral\":\n case \"ModuleExpression\":\n case \"TopicReference\":\n case \"PipelineTopicExpression\":\n case \"PipelineBareFunction\":\n case \"PipelinePrimaryTopicReference\":\n case \"TSInstantiationExpression\":\n case \"TSAsExpression\":\n case \"TSSatisfiesExpression\":\n case \"TSTypeAssertion\":\n case \"TSNonNullExpression\":\n break;\n case \"Placeholder\":\n switch (node.expectedNode) {\n case \"Expression\":\n case \"Identifier\":\n case \"StringLiteral\":\n break;\n default:\n return false;\n }\n break;\n default:\n return false;\n }\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isBinary(\n node: t.Node | null | undefined,\n opts?: Opts<t.Binary> | null,\n): node is t.Binary {\n if (!node) return false;\n\n switch (node.type) {\n case \"BinaryExpression\":\n case \"LogicalExpression\":\n break;\n default:\n return false;\n }\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isScopable(\n node: t.Node | null | undefined,\n opts?: Opts<t.Scopable> | null,\n): node is t.Scopable {\n if (!node) return false;\n\n switch (node.type) {\n case \"BlockStatement\":\n case \"CatchClause\":\n case \"DoWhileStatement\":\n case \"ForInStatement\":\n case \"ForStatement\":\n case \"FunctionDeclaration\":\n case \"FunctionExpression\":\n case \"Program\":\n case \"ObjectMethod\":\n case \"SwitchStatement\":\n case \"WhileStatement\":\n case \"ArrowFunctionExpression\":\n case \"ClassExpression\":\n case \"ClassDeclaration\":\n case \"ForOfStatement\":\n case \"ClassMethod\":\n case \"ClassPrivateMethod\":\n case \"StaticBlock\":\n case \"TSModuleBlock\":\n break;\n case \"Placeholder\":\n if (node.expectedNode === \"BlockStatement\") break;\n default:\n return false;\n }\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isBlockParent(\n node: t.Node | null | undefined,\n opts?: Opts<t.BlockParent> | null,\n): node is t.BlockParent {\n if (!node) return false;\n\n switch (node.type) {\n case \"BlockStatement\":\n case \"CatchClause\":\n case \"DoWhileStatement\":\n case \"ForInStatement\":\n case \"ForStatement\":\n case \"FunctionDeclaration\":\n case \"FunctionExpression\":\n case \"Program\":\n case \"ObjectMethod\":\n case \"SwitchStatement\":\n case \"WhileStatement\":\n case \"ArrowFunctionExpression\":\n case \"ForOfStatement\":\n case \"ClassMethod\":\n case \"ClassPrivateMethod\":\n case \"StaticBlock\":\n case \"TSModuleBlock\":\n break;\n case \"Placeholder\":\n if (node.expectedNode === \"BlockStatement\") break;\n default:\n return false;\n }\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isBlock(\n node: t.Node | null | undefined,\n opts?: Opts<t.Block> | null,\n): node is t.Block {\n if (!node) return false;\n\n switch (node.type) {\n case \"BlockStatement\":\n case \"Program\":\n case \"TSModuleBlock\":\n break;\n case \"Placeholder\":\n if (node.expectedNode === \"BlockStatement\") break;\n default:\n return false;\n }\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isStatement(\n node: t.Node | null | undefined,\n opts?: Opts<t.Statement> | null,\n): node is t.Statement {\n if (!node) return false;\n\n switch (node.type) {\n case \"BlockStatement\":\n case \"BreakStatement\":\n case \"ContinueStatement\":\n case \"DebuggerStatement\":\n case \"DoWhileStatement\":\n case \"EmptyStatement\":\n case \"ExpressionStatement\":\n case \"ForInStatement\":\n case \"ForStatement\":\n case \"FunctionDeclaration\":\n case \"IfStatement\":\n case \"LabeledStatement\":\n case \"ReturnStatement\":\n case \"SwitchStatement\":\n case \"ThrowStatement\":\n case \"TryStatement\":\n case \"VariableDeclaration\":\n case \"WhileStatement\":\n case \"WithStatement\":\n case \"ClassDeclaration\":\n case \"ExportAllDeclaration\":\n case \"ExportDefaultDeclaration\":\n case \"ExportNamedDeclaration\":\n case \"ForOfStatement\":\n case \"ImportDeclaration\":\n case \"DeclareClass\":\n case \"DeclareFunction\":\n case \"DeclareInterface\":\n case \"DeclareModule\":\n case \"DeclareModuleExports\":\n case \"DeclareTypeAlias\":\n case \"DeclareOpaqueType\":\n case \"DeclareVariable\":\n case \"DeclareExportDeclaration\":\n case \"DeclareExportAllDeclaration\":\n case \"InterfaceDeclaration\":\n case \"OpaqueType\":\n case \"TypeAlias\":\n case \"EnumDeclaration\":\n case \"TSDeclareFunction\":\n case \"TSInterfaceDeclaration\":\n case \"TSTypeAliasDeclaration\":\n case \"TSEnumDeclaration\":\n case \"TSModuleDeclaration\":\n case \"TSImportEqualsDeclaration\":\n case \"TSExportAssignment\":\n case \"TSNamespaceExportDeclaration\":\n break;\n case \"Placeholder\":\n switch (node.expectedNode) {\n case \"Statement\":\n case \"Declaration\":\n case \"BlockStatement\":\n break;\n default:\n return false;\n }\n break;\n default:\n return false;\n }\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isTerminatorless(\n node: t.Node | null | undefined,\n opts?: Opts<t.Terminatorless> | null,\n): node is t.Terminatorless {\n if (!node) return false;\n\n switch (node.type) {\n case \"BreakStatement\":\n case \"ContinueStatement\":\n case \"ReturnStatement\":\n case \"ThrowStatement\":\n case \"YieldExpression\":\n case \"AwaitExpression\":\n break;\n default:\n return false;\n }\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isCompletionStatement(\n node: t.Node | null | undefined,\n opts?: Opts<t.CompletionStatement> | null,\n): node is t.CompletionStatement {\n if (!node) return false;\n\n switch (node.type) {\n case \"BreakStatement\":\n case \"ContinueStatement\":\n case \"ReturnStatement\":\n case \"ThrowStatement\":\n break;\n default:\n return false;\n }\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isConditional(\n node: t.Node | null | undefined,\n opts?: Opts<t.Conditional> | null,\n): node is t.Conditional {\n if (!node) return false;\n\n switch (node.type) {\n case \"ConditionalExpression\":\n case \"IfStatement\":\n break;\n default:\n return false;\n }\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isLoop(\n node: t.Node | null | undefined,\n opts?: Opts<t.Loop> | null,\n): node is t.Loop {\n if (!node) return false;\n\n switch (node.type) {\n case \"DoWhileStatement\":\n case \"ForInStatement\":\n case \"ForStatement\":\n case \"WhileStatement\":\n case \"ForOfStatement\":\n break;\n default:\n return false;\n }\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isWhile(\n node: t.Node | null | undefined,\n opts?: Opts<t.While> | null,\n): node is t.While {\n if (!node) return false;\n\n switch (node.type) {\n case \"DoWhileStatement\":\n case \"WhileStatement\":\n break;\n default:\n return false;\n }\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isExpressionWrapper(\n node: t.Node | null | undefined,\n opts?: Opts<t.ExpressionWrapper> | null,\n): node is t.ExpressionWrapper {\n if (!node) return false;\n\n switch (node.type) {\n case \"ExpressionStatement\":\n case \"ParenthesizedExpression\":\n case \"TypeCastExpression\":\n break;\n default:\n return false;\n }\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isFor(\n node: t.Node | null | undefined,\n opts?: Opts<t.For> | null,\n): node is t.For {\n if (!node) return false;\n\n switch (node.type) {\n case \"ForInStatement\":\n case \"ForStatement\":\n case \"ForOfStatement\":\n break;\n default:\n return false;\n }\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isForXStatement(\n node: t.Node | null | undefined,\n opts?: Opts<t.ForXStatement> | null,\n): node is t.ForXStatement {\n if (!node) return false;\n\n switch (node.type) {\n case \"ForInStatement\":\n case \"ForOfStatement\":\n break;\n default:\n return false;\n }\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isFunction(\n node: t.Node | null | undefined,\n opts?: Opts<t.Function> | null,\n): node is t.Function {\n if (!node) return false;\n\n switch (node.type) {\n case \"FunctionDeclaration\":\n case \"FunctionExpression\":\n case \"ObjectMethod\":\n case \"ArrowFunctionExpression\":\n case \"ClassMethod\":\n case \"ClassPrivateMethod\":\n break;\n default:\n return false;\n }\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isFunctionParent(\n node: t.Node | null | undefined,\n opts?: Opts<t.FunctionParent> | null,\n): node is t.FunctionParent {\n if (!node) return false;\n\n switch (node.type) {\n case \"FunctionDeclaration\":\n case \"FunctionExpression\":\n case \"ObjectMethod\":\n case \"ArrowFunctionExpression\":\n case \"ClassMethod\":\n case \"ClassPrivateMethod\":\n case \"StaticBlock\":\n case \"TSModuleBlock\":\n break;\n default:\n return false;\n }\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isPureish(\n node: t.Node | null | undefined,\n opts?: Opts<t.Pureish> | null,\n): node is t.Pureish {\n if (!node) return false;\n\n switch (node.type) {\n case \"FunctionDeclaration\":\n case \"FunctionExpression\":\n case \"StringLiteral\":\n case \"NumericLiteral\":\n case \"NullLiteral\":\n case \"BooleanLiteral\":\n case \"RegExpLiteral\":\n case \"ArrowFunctionExpression\":\n case \"BigIntLiteral\":\n case \"DecimalLiteral\":\n break;\n case \"Placeholder\":\n if (node.expectedNode === \"StringLiteral\") break;\n default:\n return false;\n }\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isDeclaration(\n node: t.Node | null | undefined,\n opts?: Opts<t.Declaration> | null,\n): node is t.Declaration {\n if (!node) return false;\n\n switch (node.type) {\n case \"FunctionDeclaration\":\n case \"VariableDeclaration\":\n case \"ClassDeclaration\":\n case \"ExportAllDeclaration\":\n case \"ExportDefaultDeclaration\":\n case \"ExportNamedDeclaration\":\n case \"ImportDeclaration\":\n case \"DeclareClass\":\n case \"DeclareFunction\":\n case \"DeclareInterface\":\n case \"DeclareModule\":\n case \"DeclareModuleExports\":\n case \"DeclareTypeAlias\":\n case \"DeclareOpaqueType\":\n case \"DeclareVariable\":\n case \"DeclareExportDeclaration\":\n case \"DeclareExportAllDeclaration\":\n case \"InterfaceDeclaration\":\n case \"OpaqueType\":\n case \"TypeAlias\":\n case \"EnumDeclaration\":\n case \"TSDeclareFunction\":\n case \"TSInterfaceDeclaration\":\n case \"TSTypeAliasDeclaration\":\n case \"TSEnumDeclaration\":\n case \"TSModuleDeclaration\":\n break;\n case \"Placeholder\":\n if (node.expectedNode === \"Declaration\") break;\n default:\n return false;\n }\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isPatternLike(\n node: t.Node | null | undefined,\n opts?: Opts<t.PatternLike> | null,\n): node is t.PatternLike {\n if (!node) return false;\n\n switch (node.type) {\n case \"Identifier\":\n case \"RestElement\":\n case \"AssignmentPattern\":\n case \"ArrayPattern\":\n case \"ObjectPattern\":\n case \"TSAsExpression\":\n case \"TSSatisfiesExpression\":\n case \"TSTypeAssertion\":\n case \"TSNonNullExpression\":\n break;\n case \"Placeholder\":\n switch (node.expectedNode) {\n case \"Pattern\":\n case \"Identifier\":\n break;\n default:\n return false;\n }\n break;\n default:\n return false;\n }\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isLVal(\n node: t.Node | null | undefined,\n opts?: Opts<t.LVal> | null,\n): node is t.LVal {\n if (!node) return false;\n\n switch (node.type) {\n case \"Identifier\":\n case \"MemberExpression\":\n case \"RestElement\":\n case \"AssignmentPattern\":\n case \"ArrayPattern\":\n case \"ObjectPattern\":\n case \"TSParameterProperty\":\n case \"TSAsExpression\":\n case \"TSSatisfiesExpression\":\n case \"TSTypeAssertion\":\n case \"TSNonNullExpression\":\n break;\n case \"Placeholder\":\n switch (node.expectedNode) {\n case \"Pattern\":\n case \"Identifier\":\n break;\n default:\n return false;\n }\n break;\n default:\n return false;\n }\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isTSEntityName(\n node: t.Node | null | undefined,\n opts?: Opts<t.TSEntityName> | null,\n): node is t.TSEntityName {\n if (!node) return false;\n\n switch (node.type) {\n case \"Identifier\":\n case \"TSQualifiedName\":\n break;\n case \"Placeholder\":\n if (node.expectedNode === \"Identifier\") break;\n default:\n return false;\n }\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isLiteral(\n node: t.Node | null | undefined,\n opts?: Opts<t.Literal> | null,\n): node is t.Literal {\n if (!node) return false;\n\n switch (node.type) {\n case \"StringLiteral\":\n case \"NumericLiteral\":\n case \"NullLiteral\":\n case \"BooleanLiteral\":\n case \"RegExpLiteral\":\n case \"TemplateLiteral\":\n case \"BigIntLiteral\":\n case \"DecimalLiteral\":\n break;\n case \"Placeholder\":\n if (node.expectedNode === \"StringLiteral\") break;\n default:\n return false;\n }\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isImmutable(\n node: t.Node | null | undefined,\n opts?: Opts<t.Immutable> | null,\n): node is t.Immutable {\n if (!node) return false;\n\n switch (node.type) {\n case \"StringLiteral\":\n case \"NumericLiteral\":\n case \"NullLiteral\":\n case \"BooleanLiteral\":\n case \"BigIntLiteral\":\n case \"JSXAttribute\":\n case \"JSXClosingElement\":\n case \"JSXElement\":\n case \"JSXExpressionContainer\":\n case \"JSXSpreadChild\":\n case \"JSXOpeningElement\":\n case \"JSXText\":\n case \"JSXFragment\":\n case \"JSXOpeningFragment\":\n case \"JSXClosingFragment\":\n case \"DecimalLiteral\":\n break;\n case \"Placeholder\":\n if (node.expectedNode === \"StringLiteral\") break;\n default:\n return false;\n }\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isUserWhitespacable(\n node: t.Node | null | undefined,\n opts?: Opts<t.UserWhitespacable> | null,\n): node is t.UserWhitespacable {\n if (!node) return false;\n\n switch (node.type) {\n case \"ObjectMethod\":\n case \"ObjectProperty\":\n case \"ObjectTypeInternalSlot\":\n case \"ObjectTypeCallProperty\":\n case \"ObjectTypeIndexer\":\n case \"ObjectTypeProperty\":\n case \"ObjectTypeSpreadProperty\":\n break;\n default:\n return false;\n }\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isMethod(\n node: t.Node | null | undefined,\n opts?: Opts<t.Method> | null,\n): node is t.Method {\n if (!node) return false;\n\n switch (node.type) {\n case \"ObjectMethod\":\n case \"ClassMethod\":\n case \"ClassPrivateMethod\":\n break;\n default:\n return false;\n }\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isObjectMember(\n node: t.Node | null | undefined,\n opts?: Opts<t.ObjectMember> | null,\n): node is t.ObjectMember {\n if (!node) return false;\n\n switch (node.type) {\n case \"ObjectMethod\":\n case \"ObjectProperty\":\n break;\n default:\n return false;\n }\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isProperty(\n node: t.Node | null | undefined,\n opts?: Opts<t.Property> | null,\n): node is t.Property {\n if (!node) return false;\n\n switch (node.type) {\n case \"ObjectProperty\":\n case \"ClassProperty\":\n case \"ClassAccessorProperty\":\n case \"ClassPrivateProperty\":\n break;\n default:\n return false;\n }\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isUnaryLike(\n node: t.Node | null | undefined,\n opts?: Opts<t.UnaryLike> | null,\n): node is t.UnaryLike {\n if (!node) return false;\n\n switch (node.type) {\n case \"UnaryExpression\":\n case \"SpreadElement\":\n break;\n default:\n return false;\n }\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isPattern(\n node: t.Node | null | undefined,\n opts?: Opts<t.Pattern> | null,\n): node is t.Pattern {\n if (!node) return false;\n\n switch (node.type) {\n case \"AssignmentPattern\":\n case \"ArrayPattern\":\n case \"ObjectPattern\":\n break;\n case \"Placeholder\":\n if (node.expectedNode === \"Pattern\") break;\n default:\n return false;\n }\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isClass(\n node: t.Node | null | undefined,\n opts?: Opts<t.Class> | null,\n): node is t.Class {\n if (!node) return false;\n\n switch (node.type) {\n case \"ClassExpression\":\n case \"ClassDeclaration\":\n break;\n default:\n return false;\n }\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isImportOrExportDeclaration(\n node: t.Node | null | undefined,\n opts?: Opts<t.ImportOrExportDeclaration> | null,\n): node is t.ImportOrExportDeclaration {\n if (!node) return false;\n\n switch (node.type) {\n case \"ExportAllDeclaration\":\n case \"ExportDefaultDeclaration\":\n case \"ExportNamedDeclaration\":\n case \"ImportDeclaration\":\n break;\n default:\n return false;\n }\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isExportDeclaration(\n node: t.Node | null | undefined,\n opts?: Opts<t.ExportDeclaration> | null,\n): node is t.ExportDeclaration {\n if (!node) return false;\n\n switch (node.type) {\n case \"ExportAllDeclaration\":\n case \"ExportDefaultDeclaration\":\n case \"ExportNamedDeclaration\":\n break;\n default:\n return false;\n }\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isModuleSpecifier(\n node: t.Node | null | undefined,\n opts?: Opts<t.ModuleSpecifier> | null,\n): node is t.ModuleSpecifier {\n if (!node) return false;\n\n switch (node.type) {\n case \"ExportSpecifier\":\n case \"ImportDefaultSpecifier\":\n case \"ImportNamespaceSpecifier\":\n case \"ImportSpecifier\":\n case \"ExportNamespaceSpecifier\":\n case \"ExportDefaultSpecifier\":\n break;\n default:\n return false;\n }\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isAccessor(\n node: t.Node | null | undefined,\n opts?: Opts<t.Accessor> | null,\n): node is t.Accessor {\n if (!node) return false;\n\n switch (node.type) {\n case \"ClassAccessorProperty\":\n break;\n default:\n return false;\n }\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isPrivate(\n node: t.Node | null | undefined,\n opts?: Opts<t.Private> | null,\n): node is t.Private {\n if (!node) return false;\n\n switch (node.type) {\n case \"ClassPrivateProperty\":\n case \"ClassPrivateMethod\":\n case \"PrivateName\":\n break;\n default:\n return false;\n }\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isFlow(\n node: t.Node | null | undefined,\n opts?: Opts<t.Flow> | null,\n): node is t.Flow {\n if (!node) return false;\n\n switch (node.type) {\n case \"AnyTypeAnnotation\":\n case \"ArrayTypeAnnotation\":\n case \"BooleanTypeAnnotation\":\n case \"BooleanLiteralTypeAnnotation\":\n case \"NullLiteralTypeAnnotation\":\n case \"ClassImplements\":\n case \"DeclareClass\":\n case \"DeclareFunction\":\n case \"DeclareInterface\":\n case \"DeclareModule\":\n case \"DeclareModuleExports\":\n case \"DeclareTypeAlias\":\n case \"DeclareOpaqueType\":\n case \"DeclareVariable\":\n case \"DeclareExportDeclaration\":\n case \"DeclareExportAllDeclaration\":\n case \"DeclaredPredicate\":\n case \"ExistsTypeAnnotation\":\n case \"FunctionTypeAnnotation\":\n case \"FunctionTypeParam\":\n case \"GenericTypeAnnotation\":\n case \"InferredPredicate\":\n case \"InterfaceExtends\":\n case \"InterfaceDeclaration\":\n case \"InterfaceTypeAnnotation\":\n case \"IntersectionTypeAnnotation\":\n case \"MixedTypeAnnotation\":\n case \"EmptyTypeAnnotation\":\n case \"NullableTypeAnnotation\":\n case \"NumberLiteralTypeAnnotation\":\n case \"NumberTypeAnnotation\":\n case \"ObjectTypeAnnotation\":\n case \"ObjectTypeInternalSlot\":\n case \"ObjectTypeCallProperty\":\n case \"ObjectTypeIndexer\":\n case \"ObjectTypeProperty\":\n case \"ObjectTypeSpreadProperty\":\n case \"OpaqueType\":\n case \"QualifiedTypeIdentifier\":\n case \"StringLiteralTypeAnnotation\":\n case \"StringTypeAnnotation\":\n case \"SymbolTypeAnnotation\":\n case \"ThisTypeAnnotation\":\n case \"TupleTypeAnnotation\":\n case \"TypeofTypeAnnotation\":\n case \"TypeAlias\":\n case \"TypeAnnotation\":\n case \"TypeCastExpression\":\n case \"TypeParameter\":\n case \"TypeParameterDeclaration\":\n case \"TypeParameterInstantiation\":\n case \"UnionTypeAnnotation\":\n case \"Variance\":\n case \"VoidTypeAnnotation\":\n case \"EnumDeclaration\":\n case \"EnumBooleanBody\":\n case \"EnumNumberBody\":\n case \"EnumStringBody\":\n case \"EnumSymbolBody\":\n case \"EnumBooleanMember\":\n case \"EnumNumberMember\":\n case \"EnumStringMember\":\n case \"EnumDefaultedMember\":\n case \"IndexedAccessType\":\n case \"OptionalIndexedAccessType\":\n break;\n default:\n return false;\n }\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isFlowType(\n node: t.Node | null | undefined,\n opts?: Opts<t.FlowType> | null,\n): node is t.FlowType {\n if (!node) return false;\n\n switch (node.type) {\n case \"AnyTypeAnnotation\":\n case \"ArrayTypeAnnotation\":\n case \"BooleanTypeAnnotation\":\n case \"BooleanLiteralTypeAnnotation\":\n case \"NullLiteralTypeAnnotation\":\n case \"ExistsTypeAnnotation\":\n case \"FunctionTypeAnnotation\":\n case \"GenericTypeAnnotation\":\n case \"InterfaceTypeAnnotation\":\n case \"IntersectionTypeAnnotation\":\n case \"MixedTypeAnnotation\":\n case \"EmptyTypeAnnotation\":\n case \"NullableTypeAnnotation\":\n case \"NumberLiteralTypeAnnotation\":\n case \"NumberTypeAnnotation\":\n case \"ObjectTypeAnnotation\":\n case \"StringLiteralTypeAnnotation\":\n case \"StringTypeAnnotation\":\n case \"SymbolTypeAnnotation\":\n case \"ThisTypeAnnotation\":\n case \"TupleTypeAnnotation\":\n case \"TypeofTypeAnnotation\":\n case \"UnionTypeAnnotation\":\n case \"VoidTypeAnnotation\":\n case \"IndexedAccessType\":\n case \"OptionalIndexedAccessType\":\n break;\n default:\n return false;\n }\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isFlowBaseAnnotation(\n node: t.Node | null | undefined,\n opts?: Opts<t.FlowBaseAnnotation> | null,\n): node is t.FlowBaseAnnotation {\n if (!node) return false;\n\n switch (node.type) {\n case \"AnyTypeAnnotation\":\n case \"BooleanTypeAnnotation\":\n case \"NullLiteralTypeAnnotation\":\n case \"MixedTypeAnnotation\":\n case \"EmptyTypeAnnotation\":\n case \"NumberTypeAnnotation\":\n case \"StringTypeAnnotation\":\n case \"SymbolTypeAnnotation\":\n case \"ThisTypeAnnotation\":\n case \"VoidTypeAnnotation\":\n break;\n default:\n return false;\n }\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isFlowDeclaration(\n node: t.Node | null | undefined,\n opts?: Opts<t.FlowDeclaration> | null,\n): node is t.FlowDeclaration {\n if (!node) return false;\n\n switch (node.type) {\n case \"DeclareClass\":\n case \"DeclareFunction\":\n case \"DeclareInterface\":\n case \"DeclareModule\":\n case \"DeclareModuleExports\":\n case \"DeclareTypeAlias\":\n case \"DeclareOpaqueType\":\n case \"DeclareVariable\":\n case \"DeclareExportDeclaration\":\n case \"DeclareExportAllDeclaration\":\n case \"InterfaceDeclaration\":\n case \"OpaqueType\":\n case \"TypeAlias\":\n break;\n default:\n return false;\n }\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isFlowPredicate(\n node: t.Node | null | undefined,\n opts?: Opts<t.FlowPredicate> | null,\n): node is t.FlowPredicate {\n if (!node) return false;\n\n switch (node.type) {\n case \"DeclaredPredicate\":\n case \"InferredPredicate\":\n break;\n default:\n return false;\n }\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isEnumBody(\n node: t.Node | null | undefined,\n opts?: Opts<t.EnumBody> | null,\n): node is t.EnumBody {\n if (!node) return false;\n\n switch (node.type) {\n case \"EnumBooleanBody\":\n case \"EnumNumberBody\":\n case \"EnumStringBody\":\n case \"EnumSymbolBody\":\n break;\n default:\n return false;\n }\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isEnumMember(\n node: t.Node | null | undefined,\n opts?: Opts<t.EnumMember> | null,\n): node is t.EnumMember {\n if (!node) return false;\n\n switch (node.type) {\n case \"EnumBooleanMember\":\n case \"EnumNumberMember\":\n case \"EnumStringMember\":\n case \"EnumDefaultedMember\":\n break;\n default:\n return false;\n }\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isJSX(\n node: t.Node | null | undefined,\n opts?: Opts<t.JSX> | null,\n): node is t.JSX {\n if (!node) return false;\n\n switch (node.type) {\n case \"JSXAttribute\":\n case \"JSXClosingElement\":\n case \"JSXElement\":\n case \"JSXEmptyExpression\":\n case \"JSXExpressionContainer\":\n case \"JSXSpreadChild\":\n case \"JSXIdentifier\":\n case \"JSXMemberExpression\":\n case \"JSXNamespacedName\":\n case \"JSXOpeningElement\":\n case \"JSXSpreadAttribute\":\n case \"JSXText\":\n case \"JSXFragment\":\n case \"JSXOpeningFragment\":\n case \"JSXClosingFragment\":\n break;\n default:\n return false;\n }\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isMiscellaneous(\n node: t.Node | null | undefined,\n opts?: Opts<t.Miscellaneous> | null,\n): node is t.Miscellaneous {\n if (!node) return false;\n\n switch (node.type) {\n case \"Noop\":\n case \"Placeholder\":\n case \"V8IntrinsicIdentifier\":\n break;\n default:\n return false;\n }\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isTypeScript(\n node: t.Node | null | undefined,\n opts?: Opts<t.TypeScript> | null,\n): node is t.TypeScript {\n if (!node) return false;\n\n switch (node.type) {\n case \"TSParameterProperty\":\n case \"TSDeclareFunction\":\n case \"TSDeclareMethod\":\n case \"TSQualifiedName\":\n case \"TSCallSignatureDeclaration\":\n case \"TSConstructSignatureDeclaration\":\n case \"TSPropertySignature\":\n case \"TSMethodSignature\":\n case \"TSIndexSignature\":\n case \"TSAnyKeyword\":\n case \"TSBooleanKeyword\":\n case \"TSBigIntKeyword\":\n case \"TSIntrinsicKeyword\":\n case \"TSNeverKeyword\":\n case \"TSNullKeyword\":\n case \"TSNumberKeyword\":\n case \"TSObjectKeyword\":\n case \"TSStringKeyword\":\n case \"TSSymbolKeyword\":\n case \"TSUndefinedKeyword\":\n case \"TSUnknownKeyword\":\n case \"TSVoidKeyword\":\n case \"TSThisType\":\n case \"TSFunctionType\":\n case \"TSConstructorType\":\n case \"TSTypeReference\":\n case \"TSTypePredicate\":\n case \"TSTypeQuery\":\n case \"TSTypeLiteral\":\n case \"TSArrayType\":\n case \"TSTupleType\":\n case \"TSOptionalType\":\n case \"TSRestType\":\n case \"TSNamedTupleMember\":\n case \"TSUnionType\":\n case \"TSIntersectionType\":\n case \"TSConditionalType\":\n case \"TSInferType\":\n case \"TSParenthesizedType\":\n case \"TSTypeOperator\":\n case \"TSIndexedAccessType\":\n case \"TSMappedType\":\n case \"TSLiteralType\":\n case \"TSExpressionWithTypeArguments\":\n case \"TSInterfaceDeclaration\":\n case \"TSInterfaceBody\":\n case \"TSTypeAliasDeclaration\":\n case \"TSInstantiationExpression\":\n case \"TSAsExpression\":\n case \"TSSatisfiesExpression\":\n case \"TSTypeAssertion\":\n case \"TSEnumDeclaration\":\n case \"TSEnumMember\":\n case \"TSModuleDeclaration\":\n case \"TSModuleBlock\":\n case \"TSImportType\":\n case \"TSImportEqualsDeclaration\":\n case \"TSExternalModuleReference\":\n case \"TSNonNullExpression\":\n case \"TSExportAssignment\":\n case \"TSNamespaceExportDeclaration\":\n case \"TSTypeAnnotation\":\n case \"TSTypeParameterInstantiation\":\n case \"TSTypeParameterDeclaration\":\n case \"TSTypeParameter\":\n break;\n default:\n return false;\n }\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isTSTypeElement(\n node: t.Node | null | undefined,\n opts?: Opts<t.TSTypeElement> | null,\n): node is t.TSTypeElement {\n if (!node) return false;\n\n switch (node.type) {\n case \"TSCallSignatureDeclaration\":\n case \"TSConstructSignatureDeclaration\":\n case \"TSPropertySignature\":\n case \"TSMethodSignature\":\n case \"TSIndexSignature\":\n break;\n default:\n return false;\n }\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isTSType(\n node: t.Node | null | undefined,\n opts?: Opts<t.TSType> | null,\n): node is t.TSType {\n if (!node) return false;\n\n switch (node.type) {\n case \"TSAnyKeyword\":\n case \"TSBooleanKeyword\":\n case \"TSBigIntKeyword\":\n case \"TSIntrinsicKeyword\":\n case \"TSNeverKeyword\":\n case \"TSNullKeyword\":\n case \"TSNumberKeyword\":\n case \"TSObjectKeyword\":\n case \"TSStringKeyword\":\n case \"TSSymbolKeyword\":\n case \"TSUndefinedKeyword\":\n case \"TSUnknownKeyword\":\n case \"TSVoidKeyword\":\n case \"TSThisType\":\n case \"TSFunctionType\":\n case \"TSConstructorType\":\n case \"TSTypeReference\":\n case \"TSTypePredicate\":\n case \"TSTypeQuery\":\n case \"TSTypeLiteral\":\n case \"TSArrayType\":\n case \"TSTupleType\":\n case \"TSOptionalType\":\n case \"TSRestType\":\n case \"TSUnionType\":\n case \"TSIntersectionType\":\n case \"TSConditionalType\":\n case \"TSInferType\":\n case \"TSParenthesizedType\":\n case \"TSTypeOperator\":\n case \"TSIndexedAccessType\":\n case \"TSMappedType\":\n case \"TSLiteralType\":\n case \"TSExpressionWithTypeArguments\":\n case \"TSImportType\":\n break;\n default:\n return false;\n }\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isTSBaseType(\n node: t.Node | null | undefined,\n opts?: Opts<t.TSBaseType> | null,\n): node is t.TSBaseType {\n if (!node) return false;\n\n switch (node.type) {\n case \"TSAnyKeyword\":\n case \"TSBooleanKeyword\":\n case \"TSBigIntKeyword\":\n case \"TSIntrinsicKeyword\":\n case \"TSNeverKeyword\":\n case \"TSNullKeyword\":\n case \"TSNumberKeyword\":\n case \"TSObjectKeyword\":\n case \"TSStringKeyword\":\n case \"TSSymbolKeyword\":\n case \"TSUndefinedKeyword\":\n case \"TSUnknownKeyword\":\n case \"TSVoidKeyword\":\n case \"TSThisType\":\n case \"TSLiteralType\":\n break;\n default:\n return false;\n }\n\n return opts == null || shallowEqual(node, opts);\n}\n/**\n * @deprecated Use `isNumericLiteral`\n */\nexport function isNumberLiteral(\n node: t.Node | null | undefined,\n opts?: Opts<t.NumberLiteral> | null,\n): boolean {\n deprecationWarning(\"isNumberLiteral\", \"isNumericLiteral\");\n if (!node) return false;\n\n if (node.type !== \"NumberLiteral\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\n/**\n * @deprecated Use `isRegExpLiteral`\n */\nexport function isRegexLiteral(\n node: t.Node | null | undefined,\n opts?: Opts<t.RegexLiteral> | null,\n): boolean {\n deprecationWarning(\"isRegexLiteral\", \"isRegExpLiteral\");\n if (!node) return false;\n\n if (node.type !== \"RegexLiteral\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\n/**\n * @deprecated Use `isRestElement`\n */\nexport function isRestProperty(\n node: t.Node | null | undefined,\n opts?: Opts<t.RestProperty> | null,\n): boolean {\n deprecationWarning(\"isRestProperty\", \"isRestElement\");\n if (!node) return false;\n\n if (node.type !== \"RestProperty\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\n/**\n * @deprecated Use `isSpreadElement`\n */\nexport function isSpreadProperty(\n node: t.Node | null | undefined,\n opts?: Opts<t.SpreadProperty> | null,\n): boolean {\n deprecationWarning(\"isSpreadProperty\", \"isSpreadElement\");\n if (!node) return false;\n\n if (node.type !== \"SpreadProperty\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\n/**\n * @deprecated Use `isImportOrExportDeclaration`\n */\nexport function isModuleDeclaration(\n node: t.Node | null | undefined,\n opts?: Opts<t.ModuleDeclaration> | null,\n): node is t.ImportOrExportDeclaration {\n deprecationWarning(\"isModuleDeclaration\", \"isImportOrExportDeclaration\");\n return isImportOrExportDeclaration(node, opts);\n}\n","import {\n isIdentifier,\n isMemberExpression,\n isStringLiteral,\n isThisExpression,\n} from \"./generated/index.ts\";\nimport type * as t from \"../index.ts\";\n\n/**\n * Determines whether or not the input node `member` matches the\n * input `match`.\n *\n * For example, given the match `React.createClass` it would match the\n * parsed nodes of `React.createClass` and `React[\"createClass\"]`.\n */\nexport default function matchesPattern(\n member: t.Node | null | undefined,\n match: string | string[],\n allowPartial?: boolean,\n): boolean {\n // not a member expression\n if (!isMemberExpression(member)) return false;\n\n const parts = Array.isArray(match) ? match : match.split(\".\");\n const nodes = [];\n\n let node;\n for (node = member; isMemberExpression(node); node = node.object) {\n nodes.push(node.property);\n }\n nodes.push(node);\n\n if (nodes.length < parts.length) return false;\n if (!allowPartial && nodes.length > parts.length) return false;\n\n for (let i = 0, j = nodes.length - 1; i < parts.length; i++, j--) {\n const node = nodes[j];\n let value;\n if (isIdentifier(node)) {\n value = node.name;\n } else if (isStringLiteral(node)) {\n value = node.value;\n } else if (isThisExpression(node)) {\n value = \"this\";\n } else {\n return false;\n }\n\n if (parts[i] !== value) return false;\n }\n\n return true;\n}\n","import matchesPattern from \"./matchesPattern.ts\";\nimport type * as t from \"../index.ts\";\n\n/**\n * Build a function that when called will return whether or not the\n * input `node` `MemberExpression` matches the input `match`.\n *\n * For example, given the match `React.createClass` it would match the\n * parsed nodes of `React.createClass` and `React[\"createClass\"]`.\n */\nexport default function buildMatchMemberExpression(\n match: string,\n allowPartial?: boolean,\n) {\n const parts = match.split(\".\");\n\n return (member: t.Node) => matchesPattern(member, parts, allowPartial);\n}\n","import buildMatchMemberExpression from \"../buildMatchMemberExpression.ts\";\n\nconst isReactComponent = buildMatchMemberExpression(\"React.Component\");\n\nexport default isReactComponent;\n","export default function isCompatTag(tagName?: string): boolean {\n // Must start with a lowercase ASCII letter\n return !!tagName && /^[a-z]/.test(tagName);\n}\n","'use strict';\n\nlet fastProto = null;\n\n// Creates an object with permanently fast properties in V8. See Toon Verwaest's\n// post https://medium.com/@tverwaes/setting-up-prototypes-in-v8-ec9c9491dfe2#5f62\n// for more details. Use %HasFastProperties(object) and the Node.js flag\n// --allow-natives-syntax to check whether an object has fast properties.\nfunction FastObject(o) {\n\t// A prototype object will have \"fast properties\" enabled once it is checked\n\t// against the inline property cache of a function, e.g. fastProto.property:\n\t// https://github.com/v8/v8/blob/6.0.122/test/mjsunit/fast-prototype.js#L48-L63\n\tif (fastProto !== null && typeof fastProto.property) {\n\t\tconst result = fastProto;\n\t\tfastProto = FastObject.prototype = null;\n\t\treturn result;\n\t}\n\tfastProto = FastObject.prototype = o == null ? Object.create(null) : o;\n\treturn new FastObject;\n}\n\n// Initialize the inline property cache of FastObject\nFastObject();\n\nmodule.exports = function toFastproperties(o) {\n\treturn FastObject(o);\n};\n","import { FLIPPED_ALIAS_KEYS, ALIAS_KEYS } from \"../definitions/index.ts\";\nimport type * as t from \"../index.ts\";\n\nexport default function isType<T extends t.Node[\"type\"]>(\n nodeType: string,\n targetType: T,\n): nodeType is T;\n\nexport default function isType(\n nodeType: string | null | undefined,\n targetType: string,\n): boolean;\n\n/**\n * Test if a `nodeType` is a `targetType` or if `targetType` is an alias of `nodeType`.\n */\nexport default function isType(nodeType: string, targetType: string): boolean {\n if (nodeType === targetType) return true;\n\n // If nodeType is nullish, it can't be an alias of targetType.\n if (nodeType == null) return false;\n\n // This is a fast-path. If the test above failed, but an alias key is found, then the\n // targetType was a primary node type, so there's no need to check the aliases.\n // @ts-expect-error targetType may not index ALIAS_KEYS\n if (ALIAS_KEYS[targetType]) return false;\n\n const aliases: Array<string> | undefined = FLIPPED_ALIAS_KEYS[targetType];\n if (aliases) {\n if (aliases[0] === nodeType) return true;\n\n for (const alias of aliases) {\n if (nodeType === alias) return true;\n }\n }\n\n return false;\n}\n","import { PLACEHOLDERS_ALIAS } from \"../definitions/index.ts\";\n\n/**\n * Test if a `placeholderType` is a `targetType` or if `targetType` is an alias of `placeholderType`.\n */\nexport default function isPlaceholderType(\n placeholderType: string,\n targetType: string,\n): boolean {\n if (placeholderType === targetType) return true;\n\n const aliases: Array<string> | undefined =\n PLACEHOLDERS_ALIAS[placeholderType];\n if (aliases) {\n for (const alias of aliases) {\n if (targetType === alias) return true;\n }\n }\n\n return false;\n}\n","import shallowEqual from \"../utils/shallowEqual.ts\";\nimport isType from \"./isType.ts\";\nimport isPlaceholderType from \"./isPlaceholderType.ts\";\nimport { FLIPPED_ALIAS_KEYS } from \"../definitions/index.ts\";\nimport type * as t from \"../index.ts\";\n\nexport default function is<T extends t.Node[\"type\"]>(\n type: T,\n node: t.Node | null | undefined,\n opts?: undefined,\n): node is Extract<t.Node, { type: T }>;\n\nexport default function is<\n T extends t.Node[\"type\"],\n P extends Extract<t.Node, { type: T }>,\n>(type: T, n: t.Node | null | undefined, required: Partial<P>): n is P;\n\nexport default function is<P extends t.Node>(\n type: string,\n node: t.Node | null | undefined,\n opts: Partial<P>,\n): node is P;\n\nexport default function is(\n type: string,\n node: t.Node | null | undefined,\n opts?: Partial<t.Node>,\n): node is t.Node;\n/**\n * Returns whether `node` is of given `type`.\n *\n * For better performance, use this instead of `is[Type]` when `type` is unknown.\n */\nexport default function is(\n type: string,\n node: t.Node | null | undefined,\n opts?: Partial<t.Node>,\n): node is t.Node {\n if (!node) return false;\n\n const matches = isType(node.type, type);\n if (!matches) {\n if (!opts && node.type === \"Placeholder\" && type in FLIPPED_ALIAS_KEYS) {\n // We can only return true if the placeholder doesn't replace a real node,\n // but it replaces a category of nodes (an alias).\n //\n // t.is(\"Identifier\", node) gives some guarantees about node's shape, so we\n // can't say that Placeholder(expectedNode: \"Identifier\") is an identifier\n // because it doesn't have the same properties.\n // On the other hand, t.is(\"Expression\", node) doesn't say anything about\n // the shape of node because Expression can be many different nodes: we can,\n // and should, safely report expression placeholders as Expressions.\n return isPlaceholderType(node.expectedNode, type);\n }\n return false;\n }\n\n if (typeof opts === \"undefined\") {\n return true;\n } else {\n return shallowEqual(node, opts);\n }\n}\n","import * as charCodes from \"charcodes\";\n\n// ## Character categories\n\n// Big ugly regular expressions that match characters in the\n// whitespace, identifier, and identifier-start categories. These\n// are only applied when a character is found to actually have a\n// code point between 0x80 and 0xffff.\n// Generated by `scripts/generate-identifier-regex.js`.\n\n/* prettier-ignore */\nlet nonASCIIidentifierStartChars = \"\\xaa\\xb5\\xba\\xc0-\\xd6\\xd8-\\xf6\\xf8-\\u02c1\\u02c6-\\u02d1\\u02e0-\\u02e4\\u02ec\\u02ee\\u0370-\\u0374\\u0376\\u0377\\u037a-\\u037d\\u037f\\u0386\\u0388-\\u038a\\u038c\\u038e-\\u03a1\\u03a3-\\u03f5\\u03f7-\\u0481\\u048a-\\u052f\\u0531-\\u0556\\u0559\\u0560-\\u0588\\u05d0-\\u05ea\\u05ef-\\u05f2\\u0620-\\u064a\\u066e\\u066f\\u0671-\\u06d3\\u06d5\\u06e5\\u06e6\\u06ee\\u06ef\\u06fa-\\u06fc\\u06ff\\u0710\\u0712-\\u072f\\u074d-\\u07a5\\u07b1\\u07ca-\\u07ea\\u07f4\\u07f5\\u07fa\\u0800-\\u0815\\u081a\\u0824\\u0828\\u0840-\\u0858\\u0860-\\u086a\\u0870-\\u0887\\u0889-\\u088e\\u08a0-\\u08c9\\u0904-\\u0939\\u093d\\u0950\\u0958-\\u0961\\u0971-\\u0980\\u0985-\\u098c\\u098f\\u0990\\u0993-\\u09a8\\u09aa-\\u09b0\\u09b2\\u09b6-\\u09b9\\u09bd\\u09ce\\u09dc\\u09dd\\u09df-\\u09e1\\u09f0\\u09f1\\u09fc\\u0a05-\\u0a0a\\u0a0f\\u0a10\\u0a13-\\u0a28\\u0a2a-\\u0a30\\u0a32\\u0a33\\u0a35\\u0a36\\u0a38\\u0a39\\u0a59-\\u0a5c\\u0a5e\\u0a72-\\u0a74\\u0a85-\\u0a8d\\u0a8f-\\u0a91\\u0a93-\\u0aa8\\u0aaa-\\u0ab0\\u0ab2\\u0ab3\\u0ab5-\\u0ab9\\u0abd\\u0ad0\\u0ae0\\u0ae1\\u0af9\\u0b05-\\u0b0c\\u0b0f\\u0b10\\u0b13-\\u0b28\\u0b2a-\\u0b30\\u0b32\\u0b33\\u0b35-\\u0b39\\u0b3d\\u0b5c\\u0b5d\\u0b5f-\\u0b61\\u0b71\\u0b83\\u0b85-\\u0b8a\\u0b8e-\\u0b90\\u0b92-\\u0b95\\u0b99\\u0b9a\\u0b9c\\u0b9e\\u0b9f\\u0ba3\\u0ba4\\u0ba8-\\u0baa\\u0bae-\\u0bb9\\u0bd0\\u0c05-\\u0c0c\\u0c0e-\\u0c10\\u0c12-\\u0c28\\u0c2a-\\u0c39\\u0c3d\\u0c58-\\u0c5a\\u0c5d\\u0c60\\u0c61\\u0c80\\u0c85-\\u0c8c\\u0c8e-\\u0c90\\u0c92-\\u0ca8\\u0caa-\\u0cb3\\u0cb5-\\u0cb9\\u0cbd\\u0cdd\\u0cde\\u0ce0\\u0ce1\\u0cf1\\u0cf2\\u0d04-\\u0d0c\\u0d0e-\\u0d10\\u0d12-\\u0d3a\\u0d3d\\u0d4e\\u0d54-\\u0d56\\u0d5f-\\u0d61\\u0d7a-\\u0d7f\\u0d85-\\u0d96\\u0d9a-\\u0db1\\u0db3-\\u0dbb\\u0dbd\\u0dc0-\\u0dc6\\u0e01-\\u0e30\\u0e32\\u0e33\\u0e40-\\u0e46\\u0e81\\u0e82\\u0e84\\u0e86-\\u0e8a\\u0e8c-\\u0ea3\\u0ea5\\u0ea7-\\u0eb0\\u0eb2\\u0eb3\\u0ebd\\u0ec0-\\u0ec4\\u0ec6\\u0edc-\\u0edf\\u0f00\\u0f40-\\u0f47\\u0f49-\\u0f6c\\u0f88-\\u0f8c\\u1000-\\u102a\\u103f\\u1050-\\u1055\\u105a-\\u105d\\u1061\\u1065\\u1066\\u106e-\\u1070\\u1075-\\u1081\\u108e\\u10a0-\\u10c5\\u10c7\\u10cd\\u10d0-\\u10fa\\u10fc-\\u1248\\u124a-\\u124d\\u1250-\\u1256\\u1258\\u125a-\\u125d\\u1260-\\u1288\\u128a-\\u128d\\u1290-\\u12b0\\u12b2-\\u12b5\\u12b8-\\u12be\\u12c0\\u12c2-\\u12c5\\u12c8-\\u12d6\\u12d8-\\u1310\\u1312-\\u1315\\u1318-\\u135a\\u1380-\\u138f\\u13a0-\\u13f5\\u13f8-\\u13fd\\u1401-\\u166c\\u166f-\\u167f\\u1681-\\u169a\\u16a0-\\u16ea\\u16ee-\\u16f8\\u1700-\\u1711\\u171f-\\u1731\\u1740-\\u1751\\u1760-\\u176c\\u176e-\\u1770\\u1780-\\u17b3\\u17d7\\u17dc\\u1820-\\u1878\\u1880-\\u18a8\\u18aa\\u18b0-\\u18f5\\u1900-\\u191e\\u1950-\\u196d\\u1970-\\u1974\\u1980-\\u19ab\\u19b0-\\u19c9\\u1a00-\\u1a16\\u1a20-\\u1a54\\u1aa7\\u1b05-\\u1b33\\u1b45-\\u1b4c\\u1b83-\\u1ba0\\u1bae\\u1baf\\u1bba-\\u1be5\\u1c00-\\u1c23\\u1c4d-\\u1c4f\\u1c5a-\\u1c7d\\u1c80-\\u1c88\\u1c90-\\u1cba\\u1cbd-\\u1cbf\\u1ce9-\\u1cec\\u1cee-\\u1cf3\\u1cf5\\u1cf6\\u1cfa\\u1d00-\\u1dbf\\u1e00-\\u1f15\\u1f18-\\u1f1d\\u1f20-\\u1f45\\u1f48-\\u1f4d\\u1f50-\\u1f57\\u1f59\\u1f5b\\u1f5d\\u1f5f-\\u1f7d\\u1f80-\\u1fb4\\u1fb6-\\u1fbc\\u1fbe\\u1fc2-\\u1fc4\\u1fc6-\\u1fcc\\u1fd0-\\u1fd3\\u1fd6-\\u1fdb\\u1fe0-\\u1fec\\u1ff2-\\u1ff4\\u1ff6-\\u1ffc\\u2071\\u207f\\u2090-\\u209c\\u2102\\u2107\\u210a-\\u2113\\u2115\\u2118-\\u211d\\u2124\\u2126\\u2128\\u212a-\\u2139\\u213c-\\u213f\\u2145-\\u2149\\u214e\\u2160-\\u2188\\u2c00-\\u2ce4\\u2ceb-\\u2cee\\u2cf2\\u2cf3\\u2d00-\\u2d25\\u2d27\\u2d2d\\u2d30-\\u2d67\\u2d6f\\u2d80-\\u2d96\\u2da0-\\u2da6\\u2da8-\\u2dae\\u2db0-\\u2db6\\u2db8-\\u2dbe\\u2dc0-\\u2dc6\\u2dc8-\\u2dce\\u2dd0-\\u2dd6\\u2dd8-\\u2dde\\u3005-\\u3007\\u3021-\\u3029\\u3031-\\u3035\\u3038-\\u303c\\u3041-\\u3096\\u309b-\\u309f\\u30a1-\\u30fa\\u30fc-\\u30ff\\u3105-\\u312f\\u3131-\\u318e\\u31a0-\\u31bf\\u31f0-\\u31ff\\u3400-\\u4dbf\\u4e00-\\ua48c\\ua4d0-\\ua4fd\\ua500-\\ua60c\\ua610-\\ua61f\\ua62a\\ua62b\\ua640-\\ua66e\\ua67f-\\ua69d\\ua6a0-\\ua6ef\\ua717-\\ua71f\\ua722-\\ua788\\ua78b-\\ua7ca\\ua7d0\\ua7d1\\ua7d3\\ua7d5-\\ua7d9\\ua7f2-\\ua801\\ua803-\\ua805\\ua807-\\ua80a\\ua80c-\\ua822\\ua840-\\ua873\\ua882-\\ua8b3\\ua8f2-\\ua8f7\\ua8fb\\ua8fd\\ua8fe\\ua90a-\\ua925\\ua930-\\ua946\\ua960-\\ua97c\\ua984-\\ua9b2\\ua9cf\\ua9e0-\\ua9e4\\ua9e6-\\ua9ef\\ua9fa-\\ua9fe\\uaa00-\\uaa28\\uaa40-\\uaa42\\uaa44-\\uaa4b\\uaa60-\\uaa76\\uaa7a\\uaa7e-\\uaaaf\\uaab1\\uaab5\\uaab6\\uaab9-\\uaabd\\uaac0\\uaac2\\uaadb-\\uaadd\\uaae0-\\uaaea\\uaaf2-\\uaaf4\\uab01-\\uab06\\uab09-\\uab0e\\uab11-\\uab16\\uab20-\\uab26\\uab28-\\uab2e\\uab30-\\uab5a\\uab5c-\\uab69\\uab70-\\uabe2\\uac00-\\ud7a3\\ud7b0-\\ud7c6\\ud7cb-\\ud7fb\\uf900-\\ufa6d\\ufa70-\\ufad9\\ufb00-\\ufb06\\ufb13-\\ufb17\\ufb1d\\ufb1f-\\ufb28\\ufb2a-\\ufb36\\ufb38-\\ufb3c\\ufb3e\\ufb40\\ufb41\\ufb43\\ufb44\\ufb46-\\ufbb1\\ufbd3-\\ufd3d\\ufd50-\\ufd8f\\ufd92-\\ufdc7\\ufdf0-\\ufdfb\\ufe70-\\ufe74\\ufe76-\\ufefc\\uff21-\\uff3a\\uff41-\\uff5a\\uff66-\\uffbe\\uffc2-\\uffc7\\uffca-\\uffcf\\uffd2-\\uffd7\\uffda-\\uffdc\";\n/* prettier-ignore */\nlet nonASCIIidentifierChars = \"\\u200c\\u200d\\xb7\\u0300-\\u036f\\u0387\\u0483-\\u0487\\u0591-\\u05bd\\u05bf\\u05c1\\u05c2\\u05c4\\u05c5\\u05c7\\u0610-\\u061a\\u064b-\\u0669\\u0670\\u06d6-\\u06dc\\u06df-\\u06e4\\u06e7\\u06e8\\u06ea-\\u06ed\\u06f0-\\u06f9\\u0711\\u0730-\\u074a\\u07a6-\\u07b0\\u07c0-\\u07c9\\u07eb-\\u07f3\\u07fd\\u0816-\\u0819\\u081b-\\u0823\\u0825-\\u0827\\u0829-\\u082d\\u0859-\\u085b\\u0898-\\u089f\\u08ca-\\u08e1\\u08e3-\\u0903\\u093a-\\u093c\\u093e-\\u094f\\u0951-\\u0957\\u0962\\u0963\\u0966-\\u096f\\u0981-\\u0983\\u09bc\\u09be-\\u09c4\\u09c7\\u09c8\\u09cb-\\u09cd\\u09d7\\u09e2\\u09e3\\u09e6-\\u09ef\\u09fe\\u0a01-\\u0a03\\u0a3c\\u0a3e-\\u0a42\\u0a47\\u0a48\\u0a4b-\\u0a4d\\u0a51\\u0a66-\\u0a71\\u0a75\\u0a81-\\u0a83\\u0abc\\u0abe-\\u0ac5\\u0ac7-\\u0ac9\\u0acb-\\u0acd\\u0ae2\\u0ae3\\u0ae6-\\u0aef\\u0afa-\\u0aff\\u0b01-\\u0b03\\u0b3c\\u0b3e-\\u0b44\\u0b47\\u0b48\\u0b4b-\\u0b4d\\u0b55-\\u0b57\\u0b62\\u0b63\\u0b66-\\u0b6f\\u0b82\\u0bbe-\\u0bc2\\u0bc6-\\u0bc8\\u0bca-\\u0bcd\\u0bd7\\u0be6-\\u0bef\\u0c00-\\u0c04\\u0c3c\\u0c3e-\\u0c44\\u0c46-\\u0c48\\u0c4a-\\u0c4d\\u0c55\\u0c56\\u0c62\\u0c63\\u0c66-\\u0c6f\\u0c81-\\u0c83\\u0cbc\\u0cbe-\\u0cc4\\u0cc6-\\u0cc8\\u0cca-\\u0ccd\\u0cd5\\u0cd6\\u0ce2\\u0ce3\\u0ce6-\\u0cef\\u0cf3\\u0d00-\\u0d03\\u0d3b\\u0d3c\\u0d3e-\\u0d44\\u0d46-\\u0d48\\u0d4a-\\u0d4d\\u0d57\\u0d62\\u0d63\\u0d66-\\u0d6f\\u0d81-\\u0d83\\u0dca\\u0dcf-\\u0dd4\\u0dd6\\u0dd8-\\u0ddf\\u0de6-\\u0def\\u0df2\\u0df3\\u0e31\\u0e34-\\u0e3a\\u0e47-\\u0e4e\\u0e50-\\u0e59\\u0eb1\\u0eb4-\\u0ebc\\u0ec8-\\u0ece\\u0ed0-\\u0ed9\\u0f18\\u0f19\\u0f20-\\u0f29\\u0f35\\u0f37\\u0f39\\u0f3e\\u0f3f\\u0f71-\\u0f84\\u0f86\\u0f87\\u0f8d-\\u0f97\\u0f99-\\u0fbc\\u0fc6\\u102b-\\u103e\\u1040-\\u1049\\u1056-\\u1059\\u105e-\\u1060\\u1062-\\u1064\\u1067-\\u106d\\u1071-\\u1074\\u1082-\\u108d\\u108f-\\u109d\\u135d-\\u135f\\u1369-\\u1371\\u1712-\\u1715\\u1732-\\u1734\\u1752\\u1753\\u1772\\u1773\\u17b4-\\u17d3\\u17dd\\u17e0-\\u17e9\\u180b-\\u180d\\u180f-\\u1819\\u18a9\\u1920-\\u192b\\u1930-\\u193b\\u1946-\\u194f\\u19d0-\\u19da\\u1a17-\\u1a1b\\u1a55-\\u1a5e\\u1a60-\\u1a7c\\u1a7f-\\u1a89\\u1a90-\\u1a99\\u1ab0-\\u1abd\\u1abf-\\u1ace\\u1b00-\\u1b04\\u1b34-\\u1b44\\u1b50-\\u1b59\\u1b6b-\\u1b73\\u1b80-\\u1b82\\u1ba1-\\u1bad\\u1bb0-\\u1bb9\\u1be6-\\u1bf3\\u1c24-\\u1c37\\u1c40-\\u1c49\\u1c50-\\u1c59\\u1cd0-\\u1cd2\\u1cd4-\\u1ce8\\u1ced\\u1cf4\\u1cf7-\\u1cf9\\u1dc0-\\u1dff\\u200c\\u200d\\u203f\\u2040\\u2054\\u20d0-\\u20dc\\u20e1\\u20e5-\\u20f0\\u2cef-\\u2cf1\\u2d7f\\u2de0-\\u2dff\\u302a-\\u302f\\u3099\\u309a\\u30fb\\ua620-\\ua629\\ua66f\\ua674-\\ua67d\\ua69e\\ua69f\\ua6f0\\ua6f1\\ua802\\ua806\\ua80b\\ua823-\\ua827\\ua82c\\ua880\\ua881\\ua8b4-\\ua8c5\\ua8d0-\\ua8d9\\ua8e0-\\ua8f1\\ua8ff-\\ua909\\ua926-\\ua92d\\ua947-\\ua953\\ua980-\\ua983\\ua9b3-\\ua9c0\\ua9d0-\\ua9d9\\ua9e5\\ua9f0-\\ua9f9\\uaa29-\\uaa36\\uaa43\\uaa4c\\uaa4d\\uaa50-\\uaa59\\uaa7b-\\uaa7d\\uaab0\\uaab2-\\uaab4\\uaab7\\uaab8\\uaabe\\uaabf\\uaac1\\uaaeb-\\uaaef\\uaaf5\\uaaf6\\uabe3-\\uabea\\uabec\\uabed\\uabf0-\\uabf9\\ufb1e\\ufe00-\\ufe0f\\ufe20-\\ufe2f\\ufe33\\ufe34\\ufe4d-\\ufe4f\\uff10-\\uff19\\uff3f\\uff65\";\n\nconst nonASCIIidentifierStart = new RegExp(\n \"[\" + nonASCIIidentifierStartChars + \"]\",\n);\nconst nonASCIIidentifier = new RegExp(\n \"[\" + nonASCIIidentifierStartChars + nonASCIIidentifierChars + \"]\",\n);\n\nnonASCIIidentifierStartChars = nonASCIIidentifierChars = null;\n\n// These are a run-length and offset-encoded representation of the\n// >0xffff code points that are a valid part of identifiers. The\n// offset starts at 0x10000, and each pair of numbers represents an\n// offset to the next range, and then a size of the range. They were\n// generated by `scripts/generate-identifier-regex.js`.\n/* prettier-ignore */\nconst astralIdentifierStartCodes = [0,11,2,25,2,18,2,1,2,14,3,13,35,122,70,52,268,28,4,48,48,31,14,29,6,37,11,29,3,35,5,7,2,4,43,157,19,35,5,35,5,39,9,51,13,10,2,14,2,6,2,1,2,10,2,14,2,6,2,1,68,310,10,21,11,7,25,5,2,41,2,8,70,5,3,0,2,43,2,1,4,0,3,22,11,22,10,30,66,18,2,1,11,21,11,25,71,55,7,1,65,0,16,3,2,2,2,28,43,28,4,28,36,7,2,27,28,53,11,21,11,18,14,17,111,72,56,50,14,50,14,35,349,41,7,1,79,28,11,0,9,21,43,17,47,20,28,22,13,52,58,1,3,0,14,44,33,24,27,35,30,0,3,0,9,34,4,0,13,47,15,3,22,0,2,0,36,17,2,24,20,1,64,6,2,0,2,3,2,14,2,9,8,46,39,7,3,1,3,21,2,6,2,1,2,4,4,0,19,0,13,4,159,52,19,3,21,2,31,47,21,1,2,0,185,46,42,3,37,47,21,0,60,42,14,0,72,26,38,6,186,43,117,63,32,7,3,0,3,7,2,1,2,23,16,0,2,0,95,7,3,38,17,0,2,0,29,0,11,39,8,0,22,0,12,45,20,0,19,72,264,8,2,36,18,0,50,29,113,6,2,1,2,37,22,0,26,5,2,1,2,31,15,0,328,18,16,0,2,12,2,33,125,0,80,921,103,110,18,195,2637,96,16,1071,18,5,4026,582,8634,568,8,30,18,78,18,29,19,47,17,3,32,20,6,18,689,63,129,74,6,0,67,12,65,1,2,0,29,6135,9,1237,43,8,8936,3,2,6,2,1,2,290,16,0,30,2,3,0,15,3,9,395,2309,106,6,12,4,8,8,9,5991,84,2,70,2,1,3,0,3,1,3,3,2,11,2,0,2,6,2,64,2,3,3,7,2,6,2,27,2,3,2,4,2,0,4,6,2,339,3,24,2,24,2,30,2,24,2,30,2,24,2,30,2,24,2,30,2,24,2,7,1845,30,7,5,262,61,147,44,11,6,17,0,322,29,19,43,485,27,757,6,2,3,2,1,2,14,2,196,60,67,8,0,1205,3,2,26,2,1,2,0,3,0,2,9,2,3,2,0,2,0,7,0,5,0,2,0,2,0,2,2,2,1,2,0,3,0,2,0,2,0,2,0,2,0,2,1,2,0,3,3,2,6,2,3,2,3,2,0,2,9,2,16,6,2,2,4,2,16,4421,42719,33,4153,7,221,3,5761,15,7472,16,621,2467,541,1507,4938,6,4191];\n/* prettier-ignore */\nconst astralIdentifierCodes = [509,0,227,0,150,4,294,9,1368,2,2,1,6,3,41,2,5,0,166,1,574,3,9,9,370,1,81,2,71,10,50,3,123,2,54,14,32,10,3,1,11,3,46,10,8,0,46,9,7,2,37,13,2,9,6,1,45,0,13,2,49,13,9,3,2,11,83,11,7,0,3,0,158,11,6,9,7,3,56,1,2,6,3,1,3,2,10,0,11,1,3,6,4,4,193,17,10,9,5,0,82,19,13,9,214,6,3,8,28,1,83,16,16,9,82,12,9,9,84,14,5,9,243,14,166,9,71,5,2,1,3,3,2,0,2,1,13,9,120,6,3,6,4,0,29,9,41,6,2,3,9,0,10,10,47,15,406,7,2,7,17,9,57,21,2,13,123,5,4,0,2,1,2,6,2,0,9,9,49,4,2,1,2,4,9,9,330,3,10,1,2,0,49,6,4,4,14,9,5351,0,7,14,13835,9,87,9,39,4,60,6,26,9,1014,0,2,54,8,3,82,0,12,1,19628,1,4706,45,3,22,543,4,4,5,9,7,3,6,31,3,149,2,1418,49,513,54,5,49,9,0,15,0,23,4,2,14,1361,6,2,16,3,6,2,1,2,4,101,0,161,6,10,9,357,0,62,13,499,13,983,6,110,6,6,9,4759,9,787719,239];\n\n// This has a complexity linear to the value of the code. The\n// assumption is that looking up astral identifier characters is\n// rare.\nfunction isInAstralSet(code: number, set: readonly number[]): boolean {\n let pos = 0x10000;\n for (let i = 0, length = set.length; i < length; i += 2) {\n pos += set[i];\n if (pos > code) return false;\n\n pos += set[i + 1];\n if (pos >= code) return true;\n }\n return false;\n}\n\n// Test whether a given character code starts an identifier.\n\nexport function isIdentifierStart(code: number): boolean {\n if (code < charCodes.uppercaseA) return code === charCodes.dollarSign;\n if (code <= charCodes.uppercaseZ) return true;\n if (code < charCodes.lowercaseA) return code === charCodes.underscore;\n if (code <= charCodes.lowercaseZ) return true;\n if (code <= 0xffff) {\n return (\n code >= 0xaa && nonASCIIidentifierStart.test(String.fromCharCode(code))\n );\n }\n return isInAstralSet(code, astralIdentifierStartCodes);\n}\n\n// Test whether a given character is part of an identifier.\n\nexport function isIdentifierChar(code: number): boolean {\n if (code < charCodes.digit0) return code === charCodes.dollarSign;\n if (code < charCodes.colon) return true;\n if (code < charCodes.uppercaseA) return false;\n if (code <= charCodes.uppercaseZ) return true;\n if (code < charCodes.lowercaseA) return code === charCodes.underscore;\n if (code <= charCodes.lowercaseZ) return true;\n if (code <= 0xffff) {\n return code >= 0xaa && nonASCIIidentifier.test(String.fromCharCode(code));\n }\n return (\n isInAstralSet(code, astralIdentifierStartCodes) ||\n isInAstralSet(code, astralIdentifierCodes)\n );\n}\n\n// Test whether a given string is a valid identifier name\n\nexport function isIdentifierName(name: string): boolean {\n let isFirst = true;\n for (let i = 0; i < name.length; i++) {\n // The implementation is based on\n // https://source.chromium.org/chromium/chromium/src/+/master:v8/src/builtins/builtins-string-gen.cc;l=1455;drc=221e331b49dfefadbc6fa40b0c68e6f97606d0b3;bpv=0;bpt=1\n // We reimplement `codePointAt` because `codePointAt` is a V8 builtin which is not inlined by TurboFan (as of M91)\n // since `name` is mostly ASCII, an inlined `charCodeAt` wins here\n let cp = name.charCodeAt(i);\n if ((cp & 0xfc00) === 0xd800 && i + 1 < name.length) {\n const trail = name.charCodeAt(++i);\n if ((trail & 0xfc00) === 0xdc00) {\n cp = 0x10000 + ((cp & 0x3ff) << 10) + (trail & 0x3ff);\n }\n }\n if (isFirst) {\n isFirst = false;\n if (!isIdentifierStart(cp)) {\n return false;\n }\n } else if (!isIdentifierChar(cp)) {\n return false;\n }\n }\n return !isFirst;\n}\n","const reservedWords = {\n keyword: [\n \"break\",\n \"case\",\n \"catch\",\n \"continue\",\n \"debugger\",\n \"default\",\n \"do\",\n \"else\",\n \"finally\",\n \"for\",\n \"function\",\n \"if\",\n \"return\",\n \"switch\",\n \"throw\",\n \"try\",\n \"var\",\n \"const\",\n \"while\",\n \"with\",\n \"new\",\n \"this\",\n \"super\",\n \"class\",\n \"extends\",\n \"export\",\n \"import\",\n \"null\",\n \"true\",\n \"false\",\n \"in\",\n \"instanceof\",\n \"typeof\",\n \"void\",\n \"delete\",\n ],\n strict: [\n \"implements\",\n \"interface\",\n \"let\",\n \"package\",\n \"private\",\n \"protected\",\n \"public\",\n \"static\",\n \"yield\",\n ],\n strictBind: [\"eval\", \"arguments\"],\n};\nconst keywords = new Set(reservedWords.keyword);\nconst reservedWordsStrictSet = new Set(reservedWords.strict);\nconst reservedWordsStrictBindSet = new Set(reservedWords.strictBind);\n\n/**\n * Checks if word is a reserved word in non-strict mode\n */\nexport function isReservedWord(word: string, inModule: boolean): boolean {\n return (inModule && word === \"await\") || word === \"enum\";\n}\n\n/**\n * Checks if word is a reserved word in non-binding strict mode\n *\n * Includes non-strict reserved words\n */\nexport function isStrictReservedWord(word: string, inModule: boolean): boolean {\n return isReservedWord(word, inModule) || reservedWordsStrictSet.has(word);\n}\n\n/**\n * Checks if word is a reserved word in binding strict mode, but it is allowed as\n * a normal identifier.\n */\nexport function isStrictBindOnlyReservedWord(word: string): boolean {\n return reservedWordsStrictBindSet.has(word);\n}\n\n/**\n * Checks if word is a reserved word in binding strict mode\n *\n * Includes non-strict reserved words and non-binding strict reserved words\n */\nexport function isStrictBindReservedWord(\n word: string,\n inModule: boolean,\n): boolean {\n return (\n isStrictReservedWord(word, inModule) || isStrictBindOnlyReservedWord(word)\n );\n}\n\nexport function isKeyword(word: string): boolean {\n return keywords.has(word);\n}\n","export {\n isIdentifierName,\n isIdentifierChar,\n isIdentifierStart,\n} from \"./identifier.ts\";\nexport {\n isReservedWord,\n isStrictBindOnlyReservedWord,\n isStrictBindReservedWord,\n isStrictReservedWord,\n isKeyword,\n} from \"./keyword.ts\";\n","import {\n isIdentifierName,\n isStrictReservedWord,\n isKeyword,\n} from \"@babel/helper-validator-identifier\";\n\n/**\n * Check if the input `name` is a valid identifier name\n * and isn't a reserved word.\n */\nexport default function isValidIdentifier(\n name: string,\n reserved: boolean = true,\n): boolean {\n if (typeof name !== \"string\") return false;\n\n if (reserved) {\n // \"await\" is invalid in module, valid in script; better be safe (see #4952)\n if (isKeyword(name) || isStrictReservedWord(name, true)) {\n return false;\n }\n }\n\n return isIdentifierName(name);\n}\n","import * as charCodes from \"charcodes\";\n\n// The following character codes are forbidden from being\n// an immediate sibling of NumericLiteralSeparator _\nconst forbiddenNumericSeparatorSiblings = {\n decBinOct: new Set<number>([\n charCodes.dot,\n charCodes.uppercaseB,\n charCodes.uppercaseE,\n charCodes.uppercaseO,\n charCodes.underscore, // multiple separators are not allowed\n charCodes.lowercaseB,\n charCodes.lowercaseE,\n charCodes.lowercaseO,\n ]),\n hex: new Set<number>([\n charCodes.dot,\n charCodes.uppercaseX,\n charCodes.underscore, // multiple separators are not allowed\n charCodes.lowercaseX,\n ]),\n};\n\nconst isAllowedNumericSeparatorSibling = {\n // 0 - 1\n bin: (ch: number) => ch === charCodes.digit0 || ch === charCodes.digit1,\n\n // 0 - 7\n oct: (ch: number) => ch >= charCodes.digit0 && ch <= charCodes.digit7,\n\n // 0 - 9\n dec: (ch: number) => ch >= charCodes.digit0 && ch <= charCodes.digit9,\n\n // 0 - 9, A - F, a - f,\n hex: (ch: number) =>\n (ch >= charCodes.digit0 && ch <= charCodes.digit9) ||\n (ch >= charCodes.uppercaseA && ch <= charCodes.uppercaseF) ||\n (ch >= charCodes.lowercaseA && ch <= charCodes.lowercaseF),\n};\n\nexport type StringContentsErrorHandlers = EscapedCharErrorHandlers & {\n unterminated(\n initialPos: number,\n initialLineStart: number,\n initialCurLine: number,\n ): void;\n};\n\nexport function readStringContents(\n type: \"single\" | \"double\" | \"template\",\n input: string,\n pos: number,\n lineStart: number,\n curLine: number,\n errors: StringContentsErrorHandlers,\n) {\n const initialPos = pos;\n const initialLineStart = lineStart;\n const initialCurLine = curLine;\n\n let out = \"\";\n let firstInvalidLoc = null;\n let chunkStart = pos;\n const { length } = input;\n for (;;) {\n if (pos >= length) {\n errors.unterminated(initialPos, initialLineStart, initialCurLine);\n out += input.slice(chunkStart, pos);\n break;\n }\n const ch = input.charCodeAt(pos);\n if (isStringEnd(type, ch, input, pos)) {\n out += input.slice(chunkStart, pos);\n break;\n }\n if (ch === charCodes.backslash) {\n out += input.slice(chunkStart, pos);\n const res = readEscapedChar(\n input,\n pos,\n lineStart,\n curLine,\n type === \"template\",\n errors,\n );\n if (res.ch === null && !firstInvalidLoc) {\n firstInvalidLoc = { pos, lineStart, curLine };\n } else {\n out += res.ch;\n }\n ({ pos, lineStart, curLine } = res);\n chunkStart = pos;\n } else if (\n ch === charCodes.lineSeparator ||\n ch === charCodes.paragraphSeparator\n ) {\n ++pos;\n ++curLine;\n lineStart = pos;\n } else if (ch === charCodes.lineFeed || ch === charCodes.carriageReturn) {\n if (type === \"template\") {\n out += input.slice(chunkStart, pos) + \"\\n\";\n ++pos;\n if (\n ch === charCodes.carriageReturn &&\n input.charCodeAt(pos) === charCodes.lineFeed\n ) {\n ++pos;\n }\n ++curLine;\n chunkStart = lineStart = pos;\n } else {\n errors.unterminated(initialPos, initialLineStart, initialCurLine);\n }\n } else {\n ++pos;\n }\n }\n return process.env.BABEL_8_BREAKING\n ? { pos, str: out, firstInvalidLoc, lineStart, curLine }\n : {\n pos,\n str: out,\n firstInvalidLoc,\n lineStart,\n curLine,\n containsInvalid: !!firstInvalidLoc,\n };\n}\n\nfunction isStringEnd(\n type: \"single\" | \"double\" | \"template\",\n ch: number,\n input: string,\n pos: number,\n) {\n if (type === \"template\") {\n return (\n ch === charCodes.graveAccent ||\n (ch === charCodes.dollarSign &&\n input.charCodeAt(pos + 1) === charCodes.leftCurlyBrace)\n );\n }\n return (\n ch === (type === \"double\" ? charCodes.quotationMark : charCodes.apostrophe)\n );\n}\n\ntype EscapedCharErrorHandlers = HexCharErrorHandlers &\n CodePointErrorHandlers & {\n strictNumericEscape(pos: number, lineStart: number, curLine: number): void;\n };\n\nfunction readEscapedChar(\n input: string,\n pos: number,\n lineStart: number,\n curLine: number,\n inTemplate: boolean,\n errors: EscapedCharErrorHandlers,\n) {\n const throwOnInvalid = !inTemplate;\n pos++; // skip '\\'\n\n const res = (ch: string | null) => ({ pos, ch, lineStart, curLine });\n\n const ch = input.charCodeAt(pos++);\n switch (ch) {\n case charCodes.lowercaseN:\n return res(\"\\n\");\n case charCodes.lowercaseR:\n return res(\"\\r\");\n case charCodes.lowercaseX: {\n let code;\n ({ code, pos } = readHexChar(\n input,\n pos,\n lineStart,\n curLine,\n 2,\n false,\n throwOnInvalid,\n errors,\n ));\n return res(code === null ? null : String.fromCharCode(code));\n }\n case charCodes.lowercaseU: {\n let code;\n ({ code, pos } = readCodePoint(\n input,\n pos,\n lineStart,\n curLine,\n throwOnInvalid,\n errors,\n ));\n return res(code === null ? null : String.fromCodePoint(code));\n }\n case charCodes.lowercaseT:\n return res(\"\\t\");\n case charCodes.lowercaseB:\n return res(\"\\b\");\n case charCodes.lowercaseV:\n return res(\"\\u000b\");\n case charCodes.lowercaseF:\n return res(\"\\f\");\n case charCodes.carriageReturn:\n if (input.charCodeAt(pos) === charCodes.lineFeed) {\n ++pos;\n }\n // fall through\n case charCodes.lineFeed:\n lineStart = pos;\n ++curLine;\n // fall through\n case charCodes.lineSeparator:\n case charCodes.paragraphSeparator:\n return res(\"\");\n case charCodes.digit8:\n case charCodes.digit9:\n if (inTemplate) {\n return res(null);\n } else {\n errors.strictNumericEscape(pos - 1, lineStart, curLine);\n }\n // fall through\n default:\n if (ch >= charCodes.digit0 && ch <= charCodes.digit7) {\n const startPos = pos - 1;\n const match = input.slice(startPos, pos + 2).match(/^[0-7]+/)!;\n\n let octalStr = match[0];\n\n let octal = parseInt(octalStr, 8);\n if (octal > 255) {\n octalStr = octalStr.slice(0, -1);\n octal = parseInt(octalStr, 8);\n }\n pos += octalStr.length - 1;\n const next = input.charCodeAt(pos);\n if (\n octalStr !== \"0\" ||\n next === charCodes.digit8 ||\n next === charCodes.digit9\n ) {\n if (inTemplate) {\n return res(null);\n } else {\n errors.strictNumericEscape(startPos, lineStart, curLine);\n }\n }\n\n return res(String.fromCharCode(octal));\n }\n\n return res(String.fromCharCode(ch));\n }\n}\n\ntype HexCharErrorHandlers = IntErrorHandlers & {\n invalidEscapeSequence(pos: number, lineStart: number, curLine: number): void;\n};\n\n// Used to read character escape sequences ('\\x', '\\u').\nfunction readHexChar(\n input: string,\n pos: number,\n lineStart: number,\n curLine: number,\n len: number,\n forceLen: boolean,\n throwOnInvalid: boolean,\n errors: HexCharErrorHandlers,\n) {\n const initialPos = pos;\n let n;\n ({ n, pos } = readInt(\n input,\n pos,\n lineStart,\n curLine,\n 16,\n len,\n forceLen,\n false,\n errors,\n /* bailOnError */ !throwOnInvalid,\n ));\n if (n === null) {\n if (throwOnInvalid) {\n errors.invalidEscapeSequence(initialPos, lineStart, curLine);\n } else {\n pos = initialPos - 1;\n }\n }\n return { code: n, pos };\n}\n\nexport type IntErrorHandlers = {\n numericSeparatorInEscapeSequence(\n pos: number,\n lineStart: number,\n curLine: number,\n ): void;\n unexpectedNumericSeparator(\n pos: number,\n lineStart: number,\n curLine: number,\n ): void;\n // It can return \"true\" to indicate that the error was handled\n // and the int parsing should continue.\n invalidDigit(\n pos: number,\n lineStart: number,\n curLine: number,\n radix: number,\n ): boolean;\n};\n\nexport function readInt(\n input: string,\n pos: number,\n lineStart: number,\n curLine: number,\n radix: number,\n len: number | undefined,\n forceLen: boolean,\n allowNumSeparator: boolean | \"bail\",\n errors: IntErrorHandlers,\n bailOnError: boolean,\n) {\n const start = pos;\n const forbiddenSiblings =\n radix === 16\n ? forbiddenNumericSeparatorSiblings.hex\n : forbiddenNumericSeparatorSiblings.decBinOct;\n const isAllowedSibling =\n radix === 16\n ? isAllowedNumericSeparatorSibling.hex\n : radix === 10\n ? isAllowedNumericSeparatorSibling.dec\n : radix === 8\n ? isAllowedNumericSeparatorSibling.oct\n : isAllowedNumericSeparatorSibling.bin;\n\n let invalid = false;\n let total = 0;\n\n for (let i = 0, e = len == null ? Infinity : len; i < e; ++i) {\n const code = input.charCodeAt(pos);\n let val;\n\n if (code === charCodes.underscore && allowNumSeparator !== \"bail\") {\n const prev = input.charCodeAt(pos - 1);\n const next = input.charCodeAt(pos + 1);\n\n if (!allowNumSeparator) {\n if (bailOnError) return { n: null, pos };\n errors.numericSeparatorInEscapeSequence(pos, lineStart, curLine);\n } else if (\n Number.isNaN(next) ||\n !isAllowedSibling(next) ||\n forbiddenSiblings.has(prev) ||\n forbiddenSiblings.has(next)\n ) {\n if (bailOnError) return { n: null, pos };\n errors.unexpectedNumericSeparator(pos, lineStart, curLine);\n }\n\n // Ignore this _ character\n ++pos;\n continue;\n }\n\n if (code >= charCodes.lowercaseA) {\n val = code - charCodes.lowercaseA + charCodes.lineFeed;\n } else if (code >= charCodes.uppercaseA) {\n val = code - charCodes.uppercaseA + charCodes.lineFeed;\n } else if (charCodes.isDigit(code)) {\n val = code - charCodes.digit0; // 0-9\n } else {\n val = Infinity;\n }\n if (val >= radix) {\n // If we found a digit which is too big, errors.invalidDigit can return true to avoid\n // breaking the loop (this is used for error recovery).\n if (val <= 9 && bailOnError) {\n return { n: null, pos };\n } else if (\n val <= 9 &&\n errors.invalidDigit(pos, lineStart, curLine, radix)\n ) {\n val = 0;\n } else if (forceLen) {\n val = 0;\n invalid = true;\n } else {\n break;\n }\n }\n ++pos;\n total = total * radix + val;\n }\n if (pos === start || (len != null && pos - start !== len) || invalid) {\n return { n: null, pos };\n }\n\n return { n: total, pos };\n}\n\nexport type CodePointErrorHandlers = HexCharErrorHandlers & {\n invalidCodePoint(pos: number, lineStart: number, curLine: number): void;\n};\n\nexport function readCodePoint(\n input: string,\n pos: number,\n lineStart: number,\n curLine: number,\n throwOnInvalid: boolean,\n errors: CodePointErrorHandlers,\n) {\n const ch = input.charCodeAt(pos);\n let code;\n\n if (ch === charCodes.leftCurlyBrace) {\n ++pos;\n ({ code, pos } = readHexChar(\n input,\n pos,\n lineStart,\n curLine,\n input.indexOf(\"}\", pos) - pos,\n true,\n throwOnInvalid,\n errors,\n ));\n ++pos;\n if (code !== null && code > 0x10ffff) {\n if (throwOnInvalid) {\n errors.invalidCodePoint(pos, lineStart, curLine);\n } else {\n return { code: null, pos };\n }\n }\n } else {\n ({ code, pos } = readHexChar(\n input,\n pos,\n lineStart,\n curLine,\n 4,\n false,\n throwOnInvalid,\n errors,\n ));\n }\n return { code, pos };\n}\n","export const STATEMENT_OR_BLOCK_KEYS = [\"consequent\", \"body\", \"alternate\"];\nexport const FLATTENABLE_KEYS = [\"body\", \"expressions\"];\nexport const FOR_INIT_KEYS = [\"left\", \"init\"];\nexport const COMMENT_KEYS = [\n \"leadingComments\",\n \"trailingComments\",\n \"innerComments\",\n] as const;\n\nexport const LOGICAL_OPERATORS = [\"||\", \"&&\", \"??\"];\nexport const UPDATE_OPERATORS = [\"++\", \"--\"];\n\nexport const BOOLEAN_NUMBER_BINARY_OPERATORS = [\">\", \"<\", \">=\", \"<=\"];\nexport const EQUALITY_BINARY_OPERATORS = [\"==\", \"===\", \"!=\", \"!==\"];\nexport const COMPARISON_BINARY_OPERATORS = [\n ...EQUALITY_BINARY_OPERATORS,\n \"in\",\n \"instanceof\",\n];\nexport const BOOLEAN_BINARY_OPERATORS = [\n ...COMPARISON_BINARY_OPERATORS,\n ...BOOLEAN_NUMBER_BINARY_OPERATORS,\n];\nexport const NUMBER_BINARY_OPERATORS = [\n \"-\",\n \"/\",\n \"%\",\n \"*\",\n \"**\",\n \"&\",\n \"|\",\n \">>\",\n \">>>\",\n \"<<\",\n \"^\",\n];\nexport const BINARY_OPERATORS = [\n \"+\",\n ...NUMBER_BINARY_OPERATORS,\n ...BOOLEAN_BINARY_OPERATORS,\n \"|>\",\n];\n\nexport const ASSIGNMENT_OPERATORS = [\n \"=\",\n \"+=\",\n ...NUMBER_BINARY_OPERATORS.map(op => op + \"=\"),\n ...LOGICAL_OPERATORS.map(op => op + \"=\"),\n];\n\nexport const BOOLEAN_UNARY_OPERATORS = [\"delete\", \"!\"];\nexport const NUMBER_UNARY_OPERATORS = [\"+\", \"-\", \"~\"];\nexport const STRING_UNARY_OPERATORS = [\"typeof\"];\nexport const UNARY_OPERATORS = [\n \"void\",\n \"throw\",\n ...BOOLEAN_UNARY_OPERATORS,\n ...NUMBER_UNARY_OPERATORS,\n ...STRING_UNARY_OPERATORS,\n];\n\nexport const INHERIT_KEYS = {\n optional: [\"typeAnnotation\", \"typeParameters\", \"returnType\"],\n force: [\"start\", \"loc\", \"end\"],\n} as const;\n\nexport const BLOCK_SCOPED_SYMBOL = Symbol.for(\"var used to be block scoped\");\nexport const NOT_LOCAL_BINDING = Symbol.for(\n \"should not be considered a local binding\",\n);\n","import is from \"../validators/is.ts\";\nimport { validateField, validateChild } from \"../validators/validate.ts\";\nimport type * as t from \"../index.ts\";\n\nexport const VISITOR_KEYS: Record<string, string[]> = {};\nexport const ALIAS_KEYS: Partial<Record<NodeTypesWithoutComment, string[]>> =\n {};\nexport const FLIPPED_ALIAS_KEYS: Record<string, NodeTypesWithoutComment[]> = {};\nexport const NODE_FIELDS: Record<string, FieldDefinitions> = {};\nexport const BUILDER_KEYS: Record<string, string[]> = {};\nexport const DEPRECATED_KEYS: Record<string, NodeTypesWithoutComment> = {};\nexport const NODE_PARENT_VALIDATIONS: Record<string, Validator> = {};\n\nfunction getType(val: any) {\n if (Array.isArray(val)) {\n return \"array\";\n } else if (val === null) {\n return \"null\";\n } else {\n return typeof val;\n }\n}\n\ntype NodeTypesWithoutComment = t.Node[\"type\"] | keyof t.Aliases;\n\ntype NodeTypes = NodeTypesWithoutComment | t.Comment[\"type\"];\n\ntype PrimitiveTypes = ReturnType<typeof getType>;\n\ntype FieldDefinitions = {\n [x: string]: FieldOptions;\n};\n\ntype DefineTypeOpts = {\n fields?: FieldDefinitions;\n visitor?: Array<string>;\n aliases?: Array<string>;\n builder?: Array<string>;\n inherits?: NodeTypes;\n deprecatedAlias?: string;\n validate?: Validator;\n};\n\nexport type Validator = (\n | { type: PrimitiveTypes }\n | { each: Validator }\n | { chainOf: Validator[] }\n | { oneOf: any[] }\n | { oneOfNodeTypes: NodeTypes[] }\n | { oneOfNodeOrValueTypes: (NodeTypes | PrimitiveTypes)[] }\n | { shapeOf: { [x: string]: FieldOptions } }\n | {}\n) &\n ((node: t.Node, key: string, val: any) => void);\n\nexport type FieldOptions = {\n default?: string | number | boolean | [];\n optional?: boolean;\n deprecated?: boolean;\n validate?: Validator;\n};\n\nexport function validate(validate: Validator): FieldOptions {\n return { validate };\n}\n\nexport function typeIs(typeName: NodeTypes | NodeTypes[]) {\n return typeof typeName === \"string\"\n ? assertNodeType(typeName)\n : assertNodeType(...typeName);\n}\n\nexport function validateType(typeName: NodeTypes | NodeTypes[]) {\n return validate(typeIs(typeName));\n}\n\nexport function validateOptional(validate: Validator): FieldOptions {\n return { validate, optional: true };\n}\n\nexport function validateOptionalType(\n typeName: NodeTypes | NodeTypes[],\n): FieldOptions {\n return { validate: typeIs(typeName), optional: true };\n}\n\nexport function arrayOf(elementType: Validator): Validator {\n return chain(assertValueType(\"array\"), assertEach(elementType));\n}\n\nexport function arrayOfType(typeName: NodeTypes | NodeTypes[]) {\n return arrayOf(typeIs(typeName));\n}\n\nexport function validateArrayOfType(typeName: NodeTypes | NodeTypes[]) {\n return validate(arrayOfType(typeName));\n}\n\nexport function assertEach(callback: Validator): Validator {\n function validator(node: t.Node, key: string, val: any) {\n if (!Array.isArray(val)) return;\n\n for (let i = 0; i < val.length; i++) {\n const subkey = `${key}[${i}]`;\n const v = val[i];\n callback(node, subkey, v);\n if (process.env.BABEL_TYPES_8_BREAKING) validateChild(node, subkey, v);\n }\n }\n validator.each = callback;\n return validator;\n}\n\nexport function assertOneOf(...values: Array<any>): Validator {\n function validate(node: any, key: string, val: any) {\n if (values.indexOf(val) < 0) {\n throw new TypeError(\n `Property ${key} expected value to be one of ${JSON.stringify(\n values,\n )} but got ${JSON.stringify(val)}`,\n );\n }\n }\n\n validate.oneOf = values;\n\n return validate;\n}\n\nexport function assertNodeType(...types: NodeTypes[]): Validator {\n function validate(node: t.Node, key: string, val: any) {\n for (const type of types) {\n if (is(type, val)) {\n validateChild(node, key, val);\n return;\n }\n }\n\n throw new TypeError(\n `Property ${key} of ${\n node.type\n } expected node to be of a type ${JSON.stringify(\n types,\n )} but instead got ${JSON.stringify(val?.type)}`,\n );\n }\n\n validate.oneOfNodeTypes = types;\n\n return validate;\n}\n\nexport function assertNodeOrValueType(\n ...types: (NodeTypes | PrimitiveTypes)[]\n): Validator {\n function validate(node: t.Node, key: string, val: any) {\n for (const type of types) {\n if (getType(val) === type || is(type, val)) {\n validateChild(node, key, val);\n return;\n }\n }\n\n throw new TypeError(\n `Property ${key} of ${\n node.type\n } expected node to be of a type ${JSON.stringify(\n types,\n )} but instead got ${JSON.stringify(val?.type)}`,\n );\n }\n\n validate.oneOfNodeOrValueTypes = types;\n\n return validate;\n}\n\nexport function assertValueType(type: PrimitiveTypes): Validator {\n function validate(node: t.Node, key: string, val: any) {\n const valid = getType(val) === type;\n\n if (!valid) {\n throw new TypeError(\n `Property ${key} expected type of ${type} but got ${getType(val)}`,\n );\n }\n }\n\n validate.type = type;\n\n return validate;\n}\n\nexport function assertShape(shape: { [x: string]: FieldOptions }): Validator {\n function validate(node: t.Node, key: string, val: any) {\n const errors = [];\n for (const property of Object.keys(shape)) {\n try {\n validateField(node, property, val[property], shape[property]);\n } catch (error) {\n if (error instanceof TypeError) {\n errors.push(error.message);\n continue;\n }\n throw error;\n }\n }\n if (errors.length) {\n throw new TypeError(\n `Property ${key} of ${\n node.type\n } expected to have the following:\\n${errors.join(\"\\n\")}`,\n );\n }\n }\n\n validate.shapeOf = shape;\n\n return validate;\n}\n\nexport function assertOptionalChainStart(): Validator {\n function validate(node: t.Node) {\n let current = node;\n while (node) {\n const { type } = current;\n if (type === \"OptionalCallExpression\") {\n if (current.optional) return;\n current = current.callee;\n continue;\n }\n\n if (type === \"OptionalMemberExpression\") {\n if (current.optional) return;\n current = current.object;\n continue;\n }\n\n break;\n }\n\n throw new TypeError(\n `Non-optional ${node.type} must chain from an optional OptionalMemberExpression or OptionalCallExpression. Found chain from ${current?.type}`,\n );\n }\n\n return validate;\n}\n\nexport function chain(...fns: Array<Validator>): Validator {\n function validate(...args: Parameters<Validator>) {\n for (const fn of fns) {\n fn(...args);\n }\n }\n validate.chainOf = fns;\n\n if (\n fns.length >= 2 &&\n \"type\" in fns[0] &&\n fns[0].type === \"array\" &&\n !(\"each\" in fns[1])\n ) {\n throw new Error(\n `An assertValueType(\"array\") validator can only be followed by an assertEach(...) validator.`,\n );\n }\n\n return validate;\n}\n\nconst validTypeOpts = [\n \"aliases\",\n \"builder\",\n \"deprecatedAlias\",\n \"fields\",\n \"inherits\",\n \"visitor\",\n \"validate\",\n];\nconst validFieldKeys = [\"default\", \"optional\", \"deprecated\", \"validate\"];\n\nconst store = {} as Record<string, DefineTypeOpts>;\n\n// Wraps defineType to ensure these aliases are included.\nexport function defineAliasedType(...aliases: string[]) {\n return (type: string, opts: DefineTypeOpts = {}) => {\n let defined = opts.aliases;\n if (!defined) {\n if (opts.inherits) defined = store[opts.inherits].aliases?.slice();\n defined ??= [];\n opts.aliases = defined;\n }\n const additional = aliases.filter(a => !defined.includes(a));\n defined.unshift(...additional);\n defineType(type, opts);\n };\n}\n\nexport default function defineType(type: string, opts: DefineTypeOpts = {}) {\n const inherits = (opts.inherits && store[opts.inherits]) || {};\n\n let fields = opts.fields;\n if (!fields) {\n fields = {};\n if (inherits.fields) {\n const keys = Object.getOwnPropertyNames(inherits.fields);\n for (const key of keys) {\n const field = inherits.fields[key];\n const def = field.default;\n if (\n Array.isArray(def) ? def.length > 0 : def && typeof def === \"object\"\n ) {\n throw new Error(\n \"field defaults can only be primitives or empty arrays currently\",\n );\n }\n fields[key] = {\n default: Array.isArray(def) ? [] : def,\n optional: field.optional,\n deprecated: field.deprecated,\n validate: field.validate,\n };\n }\n }\n }\n\n const visitor: Array<string> = opts.visitor || inherits.visitor || [];\n const aliases: Array<string> = opts.aliases || inherits.aliases || [];\n const builder: Array<string> =\n opts.builder || inherits.builder || opts.visitor || [];\n\n for (const k of Object.keys(opts)) {\n if (validTypeOpts.indexOf(k) === -1) {\n throw new Error(`Unknown type option \"${k}\" on ${type}`);\n }\n }\n\n if (opts.deprecatedAlias) {\n DEPRECATED_KEYS[opts.deprecatedAlias] = type as NodeTypesWithoutComment;\n }\n\n // ensure all field keys are represented in `fields`\n for (const key of visitor.concat(builder)) {\n fields[key] = fields[key] || {};\n }\n\n for (const key of Object.keys(fields)) {\n const field = fields[key];\n\n if (field.default !== undefined && builder.indexOf(key) === -1) {\n field.optional = true;\n }\n if (field.default === undefined) {\n field.default = null;\n } else if (!field.validate && field.default != null) {\n field.validate = assertValueType(getType(field.default));\n }\n\n for (const k of Object.keys(field)) {\n if (validFieldKeys.indexOf(k) === -1) {\n throw new Error(`Unknown field key \"${k}\" on ${type}.${key}`);\n }\n }\n }\n\n VISITOR_KEYS[type] = opts.visitor = visitor;\n BUILDER_KEYS[type] = opts.builder = builder;\n NODE_FIELDS[type] = opts.fields = fields;\n ALIAS_KEYS[type as NodeTypesWithoutComment] = opts.aliases = aliases;\n aliases.forEach(alias => {\n FLIPPED_ALIAS_KEYS[alias] = FLIPPED_ALIAS_KEYS[alias] || [];\n FLIPPED_ALIAS_KEYS[alias].push(type as NodeTypesWithoutComment);\n });\n\n if (opts.validate) {\n NODE_PARENT_VALIDATIONS[type] = opts.validate;\n }\n\n store[type] = opts;\n}\n","import is from \"../validators/is.ts\";\nimport isValidIdentifier from \"../validators/isValidIdentifier.ts\";\nimport { isKeyword, isReservedWord } from \"@babel/helper-validator-identifier\";\nimport type * as t from \"../index.ts\";\nimport { readStringContents } from \"@babel/helper-string-parser\";\n\nimport {\n BINARY_OPERATORS,\n LOGICAL_OPERATORS,\n ASSIGNMENT_OPERATORS,\n UNARY_OPERATORS,\n UPDATE_OPERATORS,\n} from \"../constants/index.ts\";\n\nimport {\n defineAliasedType,\n assertShape,\n assertOptionalChainStart,\n assertValueType,\n assertNodeType,\n assertNodeOrValueType,\n assertEach,\n chain,\n assertOneOf,\n validateOptional,\n type Validator,\n} from \"./utils.ts\";\n\nconst defineType = defineAliasedType(\"Standardized\");\n\ndefineType(\"ArrayExpression\", {\n fields: {\n elements: {\n validate: chain(\n assertValueType(\"array\"),\n assertEach(\n assertNodeOrValueType(\"null\", \"Expression\", \"SpreadElement\"),\n ),\n ),\n default: !process.env.BABEL_TYPES_8_BREAKING ? [] : undefined,\n },\n },\n visitor: [\"elements\"],\n aliases: [\"Expression\"],\n});\n\ndefineType(\"AssignmentExpression\", {\n fields: {\n operator: {\n validate: (function () {\n if (!process.env.BABEL_TYPES_8_BREAKING) {\n return assertValueType(\"string\");\n }\n\n const identifier = assertOneOf(...ASSIGNMENT_OPERATORS);\n const pattern = assertOneOf(\"=\");\n\n return function (node: t.AssignmentExpression, key, val) {\n const validator = is(\"Pattern\", node.left) ? pattern : identifier;\n validator(node, key, val);\n };\n })(),\n },\n left: {\n validate: !process.env.BABEL_TYPES_8_BREAKING\n ? assertNodeType(\"LVal\", \"OptionalMemberExpression\")\n : assertNodeType(\n \"Identifier\",\n \"MemberExpression\",\n \"OptionalMemberExpression\",\n \"ArrayPattern\",\n \"ObjectPattern\",\n \"TSAsExpression\",\n \"TSSatisfiesExpression\",\n \"TSTypeAssertion\",\n \"TSNonNullExpression\",\n ),\n },\n right: {\n validate: assertNodeType(\"Expression\"),\n },\n },\n builder: [\"operator\", \"left\", \"right\"],\n visitor: [\"left\", \"right\"],\n aliases: [\"Expression\"],\n});\n\ndefineType(\"BinaryExpression\", {\n builder: [\"operator\", \"left\", \"right\"],\n fields: {\n operator: {\n validate: assertOneOf(...BINARY_OPERATORS),\n },\n left: {\n validate: (function () {\n const expression = assertNodeType(\"Expression\");\n const inOp = assertNodeType(\"Expression\", \"PrivateName\");\n\n const validator: Validator = Object.assign(\n function (node: t.BinaryExpression, key, val) {\n const validator = node.operator === \"in\" ? inOp : expression;\n validator(node, key, val);\n } as Validator,\n // todo(ts): can be discriminated union by `operator` property\n { oneOfNodeTypes: [\"Expression\", \"PrivateName\"] },\n );\n return validator;\n })(),\n },\n right: {\n validate: assertNodeType(\"Expression\"),\n },\n },\n visitor: [\"left\", \"right\"],\n aliases: [\"Binary\", \"Expression\"],\n});\n\ndefineType(\"InterpreterDirective\", {\n builder: [\"value\"],\n fields: {\n value: {\n validate: assertValueType(\"string\"),\n },\n },\n});\n\ndefineType(\"Directive\", {\n visitor: [\"value\"],\n fields: {\n value: {\n validate: assertNodeType(\"DirectiveLiteral\"),\n },\n },\n});\n\ndefineType(\"DirectiveLiteral\", {\n builder: [\"value\"],\n fields: {\n value: {\n validate: assertValueType(\"string\"),\n },\n },\n});\n\ndefineType(\"BlockStatement\", {\n builder: [\"body\", \"directives\"],\n visitor: [\"directives\", \"body\"],\n fields: {\n directives: {\n validate: chain(\n assertValueType(\"array\"),\n assertEach(assertNodeType(\"Directive\")),\n ),\n default: [],\n },\n body: {\n validate: chain(\n assertValueType(\"array\"),\n assertEach(assertNodeType(\"Statement\")),\n ),\n },\n },\n aliases: [\"Scopable\", \"BlockParent\", \"Block\", \"Statement\"],\n});\n\ndefineType(\"BreakStatement\", {\n visitor: [\"label\"],\n fields: {\n label: {\n validate: assertNodeType(\"Identifier\"),\n optional: true,\n },\n },\n aliases: [\"Statement\", \"Terminatorless\", \"CompletionStatement\"],\n});\n\ndefineType(\"CallExpression\", {\n visitor: [\"callee\", \"arguments\", \"typeParameters\", \"typeArguments\"],\n builder: [\"callee\", \"arguments\"],\n aliases: [\"Expression\"],\n fields: {\n callee: {\n validate: assertNodeType(\"Expression\", \"Super\", \"V8IntrinsicIdentifier\"),\n },\n arguments: {\n validate: chain(\n assertValueType(\"array\"),\n assertEach(\n assertNodeType(\n \"Expression\",\n \"SpreadElement\",\n \"JSXNamespacedName\",\n \"ArgumentPlaceholder\",\n ),\n ),\n ),\n },\n ...(!process.env.BABEL_TYPES_8_BREAKING\n ? {\n optional: {\n validate: assertOneOf(true, false),\n optional: true,\n },\n }\n : {}),\n typeArguments: {\n validate: assertNodeType(\"TypeParameterInstantiation\"),\n optional: true,\n },\n typeParameters: {\n validate: assertNodeType(\"TSTypeParameterInstantiation\"),\n optional: true,\n },\n },\n});\n\ndefineType(\"CatchClause\", {\n visitor: [\"param\", \"body\"],\n fields: {\n param: {\n validate: assertNodeType(\"Identifier\", \"ArrayPattern\", \"ObjectPattern\"),\n optional: true,\n },\n body: {\n validate: assertNodeType(\"BlockStatement\"),\n },\n },\n aliases: [\"Scopable\", \"BlockParent\"],\n});\n\ndefineType(\"ConditionalExpression\", {\n visitor: [\"test\", \"consequent\", \"alternate\"],\n fields: {\n test: {\n validate: assertNodeType(\"Expression\"),\n },\n consequent: {\n validate: assertNodeType(\"Expression\"),\n },\n alternate: {\n validate: assertNodeType(\"Expression\"),\n },\n },\n aliases: [\"Expression\", \"Conditional\"],\n});\n\ndefineType(\"ContinueStatement\", {\n visitor: [\"label\"],\n fields: {\n label: {\n validate: assertNodeType(\"Identifier\"),\n optional: true,\n },\n },\n aliases: [\"Statement\", \"Terminatorless\", \"CompletionStatement\"],\n});\n\ndefineType(\"DebuggerStatement\", {\n aliases: [\"Statement\"],\n});\n\ndefineType(\"DoWhileStatement\", {\n visitor: [\"test\", \"body\"],\n fields: {\n test: {\n validate: assertNodeType(\"Expression\"),\n },\n body: {\n validate: assertNodeType(\"Statement\"),\n },\n },\n aliases: [\"Statement\", \"BlockParent\", \"Loop\", \"While\", \"Scopable\"],\n});\n\ndefineType(\"EmptyStatement\", {\n aliases: [\"Statement\"],\n});\n\ndefineType(\"ExpressionStatement\", {\n visitor: [\"expression\"],\n fields: {\n expression: {\n validate: assertNodeType(\"Expression\"),\n },\n },\n aliases: [\"Statement\", \"ExpressionWrapper\"],\n});\n\ndefineType(\"File\", {\n builder: [\"program\", \"comments\", \"tokens\"],\n visitor: [\"program\"],\n fields: {\n program: {\n validate: assertNodeType(\"Program\"),\n },\n comments: {\n validate: !process.env.BABEL_TYPES_8_BREAKING\n ? Object.assign(() => {}, {\n each: { oneOfNodeTypes: [\"CommentBlock\", \"CommentLine\"] },\n })\n : assertEach(assertNodeType(\"CommentBlock\", \"CommentLine\")),\n optional: true,\n },\n tokens: {\n // todo(ts): add Token type\n validate: assertEach(Object.assign(() => {}, { type: \"any\" })),\n optional: true,\n },\n },\n});\n\ndefineType(\"ForInStatement\", {\n visitor: [\"left\", \"right\", \"body\"],\n aliases: [\n \"Scopable\",\n \"Statement\",\n \"For\",\n \"BlockParent\",\n \"Loop\",\n \"ForXStatement\",\n ],\n fields: {\n left: {\n validate: !process.env.BABEL_TYPES_8_BREAKING\n ? assertNodeType(\"VariableDeclaration\", \"LVal\")\n : assertNodeType(\n \"VariableDeclaration\",\n \"Identifier\",\n \"MemberExpression\",\n \"ArrayPattern\",\n \"ObjectPattern\",\n \"TSAsExpression\",\n \"TSSatisfiesExpression\",\n \"TSTypeAssertion\",\n \"TSNonNullExpression\",\n ),\n },\n right: {\n validate: assertNodeType(\"Expression\"),\n },\n body: {\n validate: assertNodeType(\"Statement\"),\n },\n },\n});\n\ndefineType(\"ForStatement\", {\n visitor: [\"init\", \"test\", \"update\", \"body\"],\n aliases: [\"Scopable\", \"Statement\", \"For\", \"BlockParent\", \"Loop\"],\n fields: {\n init: {\n validate: assertNodeType(\"VariableDeclaration\", \"Expression\"),\n optional: true,\n },\n test: {\n validate: assertNodeType(\"Expression\"),\n optional: true,\n },\n update: {\n validate: assertNodeType(\"Expression\"),\n optional: true,\n },\n body: {\n validate: assertNodeType(\"Statement\"),\n },\n },\n});\n\nexport const functionCommon = () => ({\n params: {\n validate: chain(\n assertValueType(\"array\"),\n assertEach(assertNodeType(\"Identifier\", \"Pattern\", \"RestElement\")),\n ),\n },\n generator: {\n default: false,\n },\n async: {\n default: false,\n },\n});\n\nexport const functionTypeAnnotationCommon = () => ({\n returnType: {\n validate: process.env.BABEL_8_BREAKING\n ? assertNodeType(\"TypeAnnotation\", \"TSTypeAnnotation\")\n : assertNodeType(\n \"TypeAnnotation\",\n \"TSTypeAnnotation\",\n // @ts-ignore(Babel 7 vs Babel 8) Babel 7 AST\n \"Noop\",\n ),\n optional: true,\n },\n typeParameters: {\n validate: process.env.BABEL_8_BREAKING\n ? assertNodeType(\"TypeParameterDeclaration\", \"TSTypeParameterDeclaration\")\n : assertNodeType(\n \"TypeParameterDeclaration\",\n \"TSTypeParameterDeclaration\",\n // @ts-ignore(Babel 7 vs Babel 8) Babel 7 AST\n \"Noop\",\n ),\n optional: true,\n },\n});\n\nexport const functionDeclarationCommon = () => ({\n ...functionCommon(),\n declare: {\n validate: assertValueType(\"boolean\"),\n optional: true,\n },\n id: {\n validate: assertNodeType(\"Identifier\"),\n optional: true, // May be null for `export default function`\n },\n});\n\ndefineType(\"FunctionDeclaration\", {\n builder: [\"id\", \"params\", \"body\", \"generator\", \"async\"],\n visitor: [\"id\", \"params\", \"body\", \"returnType\", \"typeParameters\"],\n fields: {\n ...functionDeclarationCommon(),\n ...functionTypeAnnotationCommon(),\n body: {\n validate: assertNodeType(\"BlockStatement\"),\n },\n predicate: {\n validate: assertNodeType(\"DeclaredPredicate\", \"InferredPredicate\"),\n optional: true,\n },\n },\n aliases: [\n \"Scopable\",\n \"Function\",\n \"BlockParent\",\n \"FunctionParent\",\n \"Statement\",\n \"Pureish\",\n \"Declaration\",\n ],\n validate: (function () {\n if (!process.env.BABEL_TYPES_8_BREAKING) return () => {};\n\n const identifier = assertNodeType(\"Identifier\");\n\n return function (parent, key, node) {\n if (!is(\"ExportDefaultDeclaration\", parent)) {\n identifier(node, \"id\", node.id);\n }\n };\n })(),\n});\n\ndefineType(\"FunctionExpression\", {\n inherits: \"FunctionDeclaration\",\n aliases: [\n \"Scopable\",\n \"Function\",\n \"BlockParent\",\n \"FunctionParent\",\n \"Expression\",\n \"Pureish\",\n ],\n fields: {\n ...functionCommon(),\n ...functionTypeAnnotationCommon(),\n id: {\n validate: assertNodeType(\"Identifier\"),\n optional: true,\n },\n body: {\n validate: assertNodeType(\"BlockStatement\"),\n },\n predicate: {\n validate: assertNodeType(\"DeclaredPredicate\", \"InferredPredicate\"),\n optional: true,\n },\n },\n});\n\nexport const patternLikeCommon = () => ({\n typeAnnotation: {\n validate: process.env.BABEL_8_BREAKING\n ? assertNodeType(\"TypeAnnotation\", \"TSTypeAnnotation\")\n : assertNodeType(\n \"TypeAnnotation\",\n \"TSTypeAnnotation\",\n // @ts-ignore(Babel 7 vs Babel 8) Babel 7 AST\n \"Noop\",\n ),\n optional: true,\n },\n optional: {\n validate: assertValueType(\"boolean\"),\n optional: true,\n },\n decorators: {\n validate: chain(\n assertValueType(\"array\"),\n assertEach(assertNodeType(\"Decorator\")),\n ),\n optional: true,\n },\n});\n\ndefineType(\"Identifier\", {\n builder: [\"name\"],\n visitor: [\"typeAnnotation\", \"decorators\" /* for legacy param decorators */],\n aliases: [\"Expression\", \"PatternLike\", \"LVal\", \"TSEntityName\"],\n fields: {\n ...patternLikeCommon(),\n name: {\n validate: chain(\n assertValueType(\"string\"),\n Object.assign(\n function (node, key, val) {\n if (!process.env.BABEL_TYPES_8_BREAKING) return;\n\n if (!isValidIdentifier(val, false)) {\n throw new TypeError(`\"${val}\" is not a valid identifier name`);\n }\n } as Validator,\n { type: \"string\" },\n ),\n ),\n },\n },\n validate(parent, key, node) {\n if (!process.env.BABEL_TYPES_8_BREAKING) return;\n\n const match = /\\.(\\w+)$/.exec(key);\n if (!match) return;\n\n const [, parentKey] = match;\n const nonComp = { computed: false };\n\n // We can't check if `parent.property === node`, because nodes are validated\n // before replacing them in the AST.\n if (parentKey === \"property\") {\n if (is(\"MemberExpression\", parent, nonComp)) return;\n if (is(\"OptionalMemberExpression\", parent, nonComp)) return;\n } else if (parentKey === \"key\") {\n if (is(\"Property\", parent, nonComp)) return;\n if (is(\"Method\", parent, nonComp)) return;\n } else if (parentKey === \"exported\") {\n if (is(\"ExportSpecifier\", parent)) return;\n } else if (parentKey === \"imported\") {\n if (is(\"ImportSpecifier\", parent, { imported: node })) return;\n } else if (parentKey === \"meta\") {\n if (is(\"MetaProperty\", parent, { meta: node })) return;\n }\n\n if (\n // Ideally we should call isStrictReservedWord if this node is a descendant\n // of a block in strict mode. Also, we should pass the inModule option so\n // we can disable \"await\" in module.\n (isKeyword(node.name) || isReservedWord(node.name, false)) &&\n // Even if \"this\" is a keyword, we are using the Identifier\n // node to represent it.\n node.name !== \"this\"\n ) {\n throw new TypeError(`\"${node.name}\" is not a valid identifier`);\n }\n },\n});\n\ndefineType(\"IfStatement\", {\n visitor: [\"test\", \"consequent\", \"alternate\"],\n aliases: [\"Statement\", \"Conditional\"],\n fields: {\n test: {\n validate: assertNodeType(\"Expression\"),\n },\n consequent: {\n validate: assertNodeType(\"Statement\"),\n },\n alternate: {\n optional: true,\n validate: assertNodeType(\"Statement\"),\n },\n },\n});\n\ndefineType(\"LabeledStatement\", {\n visitor: [\"label\", \"body\"],\n aliases: [\"Statement\"],\n fields: {\n label: {\n validate: assertNodeType(\"Identifier\"),\n },\n body: {\n validate: assertNodeType(\"Statement\"),\n },\n },\n});\n\ndefineType(\"StringLiteral\", {\n builder: [\"value\"],\n fields: {\n value: {\n validate: assertValueType(\"string\"),\n },\n },\n aliases: [\"Expression\", \"Pureish\", \"Literal\", \"Immutable\"],\n});\n\ndefineType(\"NumericLiteral\", {\n builder: [\"value\"],\n deprecatedAlias: \"NumberLiteral\",\n fields: {\n value: {\n validate: chain(\n assertValueType(\"number\"),\n Object.assign(\n function (node, key, val) {\n if (1 / val < 0 || !Number.isFinite(val)) {\n const error = new Error(\n \"NumericLiterals must be non-negative finite numbers. \" +\n `You can use t.valueToNode(${val}) instead.`,\n );\n if (process.env.BABEL_8_BREAKING) {\n // TODO(@nicolo-ribaudo) Fix regenerator to not pass negative\n // numbers here.\n if (!IS_STANDALONE) {\n if (!new Error().stack.includes(\"regenerator\")) {\n throw error;\n }\n }\n } else {\n // TODO: Enable this warning once regenerator is fixed.\n // https://github.com/facebook/regenerator/pull/680\n // console.warn(error);\n }\n }\n } satisfies Validator,\n { type: \"number\" },\n ),\n ),\n },\n },\n aliases: [\"Expression\", \"Pureish\", \"Literal\", \"Immutable\"],\n});\n\ndefineType(\"NullLiteral\", {\n aliases: [\"Expression\", \"Pureish\", \"Literal\", \"Immutable\"],\n});\n\ndefineType(\"BooleanLiteral\", {\n builder: [\"value\"],\n fields: {\n value: {\n validate: assertValueType(\"boolean\"),\n },\n },\n aliases: [\"Expression\", \"Pureish\", \"Literal\", \"Immutable\"],\n});\n\ndefineType(\"RegExpLiteral\", {\n builder: [\"pattern\", \"flags\"],\n deprecatedAlias: \"RegexLiteral\",\n aliases: [\"Expression\", \"Pureish\", \"Literal\"],\n fields: {\n pattern: {\n validate: assertValueType(\"string\"),\n },\n flags: {\n validate: chain(\n assertValueType(\"string\"),\n Object.assign(\n function (node, key, val) {\n if (!process.env.BABEL_TYPES_8_BREAKING) return;\n\n const invalid = /[^gimsuy]/.exec(val);\n if (invalid) {\n throw new TypeError(`\"${invalid[0]}\" is not a valid RegExp flag`);\n }\n } as Validator,\n { type: \"string\" },\n ),\n ),\n default: \"\",\n },\n },\n});\n\ndefineType(\"LogicalExpression\", {\n builder: [\"operator\", \"left\", \"right\"],\n visitor: [\"left\", \"right\"],\n aliases: [\"Binary\", \"Expression\"],\n fields: {\n operator: {\n validate: assertOneOf(...LOGICAL_OPERATORS),\n },\n left: {\n validate: assertNodeType(\"Expression\"),\n },\n right: {\n validate: assertNodeType(\"Expression\"),\n },\n },\n});\n\ndefineType(\"MemberExpression\", {\n builder: [\n \"object\",\n \"property\",\n \"computed\",\n ...(!process.env.BABEL_TYPES_8_BREAKING ? [\"optional\"] : []),\n ],\n visitor: [\"object\", \"property\"],\n aliases: [\"Expression\", \"LVal\"],\n fields: {\n object: {\n validate: assertNodeType(\"Expression\", \"Super\"),\n },\n property: {\n validate: (function () {\n const normal = assertNodeType(\"Identifier\", \"PrivateName\");\n const computed = assertNodeType(\"Expression\");\n\n const validator: Validator = function (\n node: t.MemberExpression,\n key,\n val,\n ) {\n const validator: Validator = node.computed ? computed : normal;\n validator(node, key, val);\n };\n // @ts-expect-error todo(ts): can be discriminated union by `computed` property\n validator.oneOfNodeTypes = [\"Expression\", \"Identifier\", \"PrivateName\"];\n return validator;\n })(),\n },\n computed: {\n default: false,\n },\n ...(!process.env.BABEL_TYPES_8_BREAKING\n ? {\n optional: {\n validate: assertOneOf(true, false),\n optional: true,\n },\n }\n : {}),\n },\n});\n\ndefineType(\"NewExpression\", { inherits: \"CallExpression\" });\n\ndefineType(\"Program\", {\n // Note: We explicitly leave 'interpreter' out here because it is\n // conceptually comment-like, and Babel does not traverse comments either.\n visitor: [\"directives\", \"body\"],\n builder: [\"body\", \"directives\", \"sourceType\", \"interpreter\"],\n fields: {\n sourceType: {\n validate: assertOneOf(\"script\", \"module\"),\n default: \"script\",\n },\n interpreter: {\n validate: assertNodeType(\"InterpreterDirective\"),\n default: null,\n optional: true,\n },\n directives: {\n validate: chain(\n assertValueType(\"array\"),\n assertEach(assertNodeType(\"Directive\")),\n ),\n default: [],\n },\n body: {\n validate: chain(\n assertValueType(\"array\"),\n assertEach(assertNodeType(\"Statement\")),\n ),\n },\n },\n aliases: [\"Scopable\", \"BlockParent\", \"Block\"],\n});\n\ndefineType(\"ObjectExpression\", {\n visitor: [\"properties\"],\n aliases: [\"Expression\"],\n fields: {\n properties: {\n validate: chain(\n assertValueType(\"array\"),\n assertEach(\n assertNodeType(\"ObjectMethod\", \"ObjectProperty\", \"SpreadElement\"),\n ),\n ),\n },\n },\n});\n\ndefineType(\"ObjectMethod\", {\n builder: [\"kind\", \"key\", \"params\", \"body\", \"computed\", \"generator\", \"async\"],\n fields: {\n ...functionCommon(),\n ...functionTypeAnnotationCommon(),\n kind: {\n validate: assertOneOf(\"method\", \"get\", \"set\"),\n ...(!process.env.BABEL_TYPES_8_BREAKING ? { default: \"method\" } : {}),\n },\n computed: {\n default: false,\n },\n key: {\n validate: (function () {\n const normal = assertNodeType(\n \"Identifier\",\n \"StringLiteral\",\n \"NumericLiteral\",\n \"BigIntLiteral\",\n );\n const computed = assertNodeType(\"Expression\");\n\n const validator: Validator = function (node: t.ObjectMethod, key, val) {\n const validator = node.computed ? computed : normal;\n validator(node, key, val);\n };\n // @ts-expect-error todo(ts): can be discriminated union by `computed` property\n validator.oneOfNodeTypes = [\n \"Expression\",\n \"Identifier\",\n \"StringLiteral\",\n \"NumericLiteral\",\n \"BigIntLiteral\",\n ];\n return validator;\n })(),\n },\n decorators: {\n validate: chain(\n assertValueType(\"array\"),\n assertEach(assertNodeType(\"Decorator\")),\n ),\n optional: true,\n },\n body: {\n validate: assertNodeType(\"BlockStatement\"),\n },\n },\n visitor: [\n \"key\",\n \"params\",\n \"body\",\n \"decorators\",\n \"returnType\",\n \"typeParameters\",\n ],\n aliases: [\n \"UserWhitespacable\",\n \"Function\",\n \"Scopable\",\n \"BlockParent\",\n \"FunctionParent\",\n \"Method\",\n \"ObjectMember\",\n ],\n});\n\ndefineType(\"ObjectProperty\", {\n builder: [\n \"key\",\n \"value\",\n \"computed\",\n \"shorthand\",\n ...(!process.env.BABEL_TYPES_8_BREAKING ? [\"decorators\"] : []),\n ],\n fields: {\n computed: {\n default: false,\n },\n key: {\n validate: (function () {\n const normal = assertNodeType(\n \"Identifier\",\n \"StringLiteral\",\n \"NumericLiteral\",\n \"BigIntLiteral\",\n \"DecimalLiteral\",\n \"PrivateName\",\n );\n const computed = assertNodeType(\"Expression\");\n\n const validator: Validator = Object.assign(\n function (node: t.ObjectProperty, key, val) {\n const validator = node.computed ? computed : normal;\n validator(node, key, val);\n } as Validator,\n {\n // todo(ts): can be discriminated union by `computed` property\n oneOfNodeTypes: [\n \"Expression\",\n \"Identifier\",\n \"StringLiteral\",\n \"NumericLiteral\",\n \"BigIntLiteral\",\n \"DecimalLiteral\",\n \"PrivateName\",\n ],\n },\n );\n return validator;\n })(),\n },\n value: {\n // Value may be PatternLike if this is an AssignmentProperty\n // https://github.com/babel/babylon/issues/434\n validate: assertNodeType(\"Expression\", \"PatternLike\"),\n },\n shorthand: {\n validate: chain(\n assertValueType(\"boolean\"),\n Object.assign(\n function (node: t.ObjectProperty, key, val) {\n if (!process.env.BABEL_TYPES_8_BREAKING) return;\n\n if (val && node.computed) {\n throw new TypeError(\n \"Property shorthand of ObjectProperty cannot be true if computed is true\",\n );\n }\n } as Validator,\n { type: \"boolean\" },\n ),\n function (node: t.ObjectProperty, key, val) {\n if (!process.env.BABEL_TYPES_8_BREAKING) return;\n\n if (val && !is(\"Identifier\", node.key)) {\n throw new TypeError(\n \"Property shorthand of ObjectProperty cannot be true if key is not an Identifier\",\n );\n }\n } as Validator,\n ),\n default: false,\n },\n decorators: {\n validate: chain(\n assertValueType(\"array\"),\n assertEach(assertNodeType(\"Decorator\")),\n ),\n optional: true,\n },\n },\n visitor: [\"key\", \"value\", \"decorators\"],\n aliases: [\"UserWhitespacable\", \"Property\", \"ObjectMember\"],\n validate: (function () {\n const pattern = assertNodeType(\n \"Identifier\",\n \"Pattern\",\n \"TSAsExpression\",\n \"TSSatisfiesExpression\",\n \"TSNonNullExpression\",\n \"TSTypeAssertion\",\n );\n const expression = assertNodeType(\"Expression\");\n\n return function (parent, key, node) {\n if (!process.env.BABEL_TYPES_8_BREAKING) return;\n\n const validator = is(\"ObjectPattern\", parent) ? pattern : expression;\n validator(node, \"value\", node.value);\n };\n })(),\n});\n\ndefineType(\"RestElement\", {\n visitor: [\"argument\", \"typeAnnotation\"],\n builder: [\"argument\"],\n aliases: [\"LVal\", \"PatternLike\"],\n deprecatedAlias: \"RestProperty\",\n fields: {\n ...patternLikeCommon(),\n argument: {\n validate: !process.env.BABEL_TYPES_8_BREAKING\n ? assertNodeType(\"LVal\")\n : assertNodeType(\n \"Identifier\",\n \"ArrayPattern\",\n \"ObjectPattern\",\n \"MemberExpression\",\n \"TSAsExpression\",\n \"TSSatisfiesExpression\",\n \"TSTypeAssertion\",\n \"TSNonNullExpression\",\n ),\n },\n },\n validate(parent: t.ArrayPattern | t.ObjectPattern, key) {\n if (!process.env.BABEL_TYPES_8_BREAKING) return;\n\n const match = /(\\w+)\\[(\\d+)\\]/.exec(key);\n if (!match) throw new Error(\"Internal Babel error: malformed key.\");\n\n const [, listKey, index] = match as unknown as [\n string,\n keyof typeof parent,\n string,\n ];\n if ((parent[listKey] as t.Node[]).length > +index + 1) {\n throw new TypeError(`RestElement must be last element of ${listKey}`);\n }\n },\n});\n\ndefineType(\"ReturnStatement\", {\n visitor: [\"argument\"],\n aliases: [\"Statement\", \"Terminatorless\", \"CompletionStatement\"],\n fields: {\n argument: {\n validate: assertNodeType(\"Expression\"),\n optional: true,\n },\n },\n});\n\ndefineType(\"SequenceExpression\", {\n visitor: [\"expressions\"],\n fields: {\n expressions: {\n validate: chain(\n assertValueType(\"array\"),\n assertEach(assertNodeType(\"Expression\")),\n ),\n },\n },\n aliases: [\"Expression\"],\n});\n\ndefineType(\"ParenthesizedExpression\", {\n visitor: [\"expression\"],\n aliases: [\"Expression\", \"ExpressionWrapper\"],\n fields: {\n expression: {\n validate: assertNodeType(\"Expression\"),\n },\n },\n});\n\ndefineType(\"SwitchCase\", {\n visitor: [\"test\", \"consequent\"],\n fields: {\n test: {\n validate: assertNodeType(\"Expression\"),\n optional: true,\n },\n consequent: {\n validate: chain(\n assertValueType(\"array\"),\n assertEach(assertNodeType(\"Statement\")),\n ),\n },\n },\n});\n\ndefineType(\"SwitchStatement\", {\n visitor: [\"discriminant\", \"cases\"],\n aliases: [\"Statement\", \"BlockParent\", \"Scopable\"],\n fields: {\n discriminant: {\n validate: assertNodeType(\"Expression\"),\n },\n cases: {\n validate: chain(\n assertValueType(\"array\"),\n assertEach(assertNodeType(\"SwitchCase\")),\n ),\n },\n },\n});\n\ndefineType(\"ThisExpression\", {\n aliases: [\"Expression\"],\n});\n\ndefineType(\"ThrowStatement\", {\n visitor: [\"argument\"],\n aliases: [\"Statement\", \"Terminatorless\", \"CompletionStatement\"],\n fields: {\n argument: {\n validate: assertNodeType(\"Expression\"),\n },\n },\n});\n\ndefineType(\"TryStatement\", {\n visitor: [\"block\", \"handler\", \"finalizer\"],\n aliases: [\"Statement\"],\n fields: {\n block: {\n validate: chain(\n assertNodeType(\"BlockStatement\"),\n Object.assign(\n function (node: t.TryStatement) {\n if (!process.env.BABEL_TYPES_8_BREAKING) return;\n\n // This validator isn't put at the top level because we can run it\n // even if this node doesn't have a parent.\n\n if (!node.handler && !node.finalizer) {\n throw new TypeError(\n \"TryStatement expects either a handler or finalizer, or both\",\n );\n }\n } as Validator,\n {\n oneOfNodeTypes: [\"BlockStatement\"],\n },\n ),\n ),\n },\n handler: {\n optional: true,\n validate: assertNodeType(\"CatchClause\"),\n },\n finalizer: {\n optional: true,\n validate: assertNodeType(\"BlockStatement\"),\n },\n },\n});\n\ndefineType(\"UnaryExpression\", {\n builder: [\"operator\", \"argument\", \"prefix\"],\n fields: {\n prefix: {\n default: true,\n },\n argument: {\n validate: assertNodeType(\"Expression\"),\n },\n operator: {\n validate: assertOneOf(...UNARY_OPERATORS),\n },\n },\n visitor: [\"argument\"],\n aliases: [\"UnaryLike\", \"Expression\"],\n});\n\ndefineType(\"UpdateExpression\", {\n builder: [\"operator\", \"argument\", \"prefix\"],\n fields: {\n prefix: {\n default: false,\n },\n argument: {\n validate: !process.env.BABEL_TYPES_8_BREAKING\n ? assertNodeType(\"Expression\")\n : assertNodeType(\"Identifier\", \"MemberExpression\"),\n },\n operator: {\n validate: assertOneOf(...UPDATE_OPERATORS),\n },\n },\n visitor: [\"argument\"],\n aliases: [\"Expression\"],\n});\n\ndefineType(\"VariableDeclaration\", {\n builder: [\"kind\", \"declarations\"],\n visitor: [\"declarations\"],\n aliases: [\"Statement\", \"Declaration\"],\n fields: {\n declare: {\n validate: assertValueType(\"boolean\"),\n optional: true,\n },\n kind: {\n validate: assertOneOf(\n \"var\",\n \"let\",\n \"const\",\n // https://github.com/tc39/proposal-explicit-resource-management\n \"using\",\n // https://github.com/tc39/proposal-async-explicit-resource-management\n \"await using\",\n ),\n },\n declarations: {\n validate: chain(\n assertValueType(\"array\"),\n assertEach(assertNodeType(\"VariableDeclarator\")),\n ),\n },\n },\n validate(parent, key, node) {\n if (!process.env.BABEL_TYPES_8_BREAKING) return;\n\n if (!is(\"ForXStatement\", parent, { left: node })) return;\n if (node.declarations.length !== 1) {\n throw new TypeError(\n `Exactly one VariableDeclarator is required in the VariableDeclaration of a ${parent.type}`,\n );\n }\n },\n});\n\ndefineType(\"VariableDeclarator\", {\n visitor: [\"id\", \"init\"],\n fields: {\n id: {\n validate: (function () {\n if (!process.env.BABEL_TYPES_8_BREAKING) {\n return assertNodeType(\"LVal\");\n }\n\n const normal = assertNodeType(\n \"Identifier\",\n \"ArrayPattern\",\n \"ObjectPattern\",\n );\n const without = assertNodeType(\"Identifier\");\n\n return function (node: t.VariableDeclarator, key, val) {\n const validator = node.init ? normal : without;\n validator(node, key, val);\n };\n })(),\n },\n definite: {\n optional: true,\n validate: assertValueType(\"boolean\"),\n },\n init: {\n optional: true,\n validate: assertNodeType(\"Expression\"),\n },\n },\n});\n\ndefineType(\"WhileStatement\", {\n visitor: [\"test\", \"body\"],\n aliases: [\"Statement\", \"BlockParent\", \"Loop\", \"While\", \"Scopable\"],\n fields: {\n test: {\n validate: assertNodeType(\"Expression\"),\n },\n body: {\n validate: assertNodeType(\"Statement\"),\n },\n },\n});\n\ndefineType(\"WithStatement\", {\n visitor: [\"object\", \"body\"],\n aliases: [\"Statement\"],\n fields: {\n object: {\n validate: assertNodeType(\"Expression\"),\n },\n body: {\n validate: assertNodeType(\"Statement\"),\n },\n },\n});\n\n// --- ES2015 ---\ndefineType(\"AssignmentPattern\", {\n visitor: [\"left\", \"right\", \"decorators\" /* for legacy param decorators */],\n builder: [\"left\", \"right\"],\n aliases: [\"Pattern\", \"PatternLike\", \"LVal\"],\n fields: {\n ...patternLikeCommon(),\n left: {\n validate: assertNodeType(\n \"Identifier\",\n \"ObjectPattern\",\n \"ArrayPattern\",\n \"MemberExpression\",\n \"TSAsExpression\",\n \"TSSatisfiesExpression\",\n \"TSTypeAssertion\",\n \"TSNonNullExpression\",\n ),\n },\n right: {\n validate: assertNodeType(\"Expression\"),\n },\n // For TypeScript\n decorators: {\n validate: chain(\n assertValueType(\"array\"),\n assertEach(assertNodeType(\"Decorator\")),\n ),\n optional: true,\n },\n },\n});\n\ndefineType(\"ArrayPattern\", {\n visitor: [\"elements\", \"typeAnnotation\"],\n builder: [\"elements\"],\n aliases: [\"Pattern\", \"PatternLike\", \"LVal\"],\n fields: {\n ...patternLikeCommon(),\n elements: {\n validate: chain(\n assertValueType(\"array\"),\n assertEach(assertNodeOrValueType(\"null\", \"PatternLike\", \"LVal\")),\n ),\n },\n },\n});\n\ndefineType(\"ArrowFunctionExpression\", {\n builder: [\"params\", \"body\", \"async\"],\n visitor: [\"params\", \"body\", \"returnType\", \"typeParameters\"],\n aliases: [\n \"Scopable\",\n \"Function\",\n \"BlockParent\",\n \"FunctionParent\",\n \"Expression\",\n \"Pureish\",\n ],\n fields: {\n ...functionCommon(),\n ...functionTypeAnnotationCommon(),\n expression: {\n // https://github.com/babel/babylon/issues/505\n validate: assertValueType(\"boolean\"),\n },\n body: {\n validate: assertNodeType(\"BlockStatement\", \"Expression\"),\n },\n predicate: {\n validate: assertNodeType(\"DeclaredPredicate\", \"InferredPredicate\"),\n optional: true,\n },\n },\n});\n\ndefineType(\"ClassBody\", {\n visitor: [\"body\"],\n fields: {\n body: {\n validate: chain(\n assertValueType(\"array\"),\n assertEach(\n assertNodeType(\n \"ClassMethod\",\n \"ClassPrivateMethod\",\n \"ClassProperty\",\n \"ClassPrivateProperty\",\n \"ClassAccessorProperty\",\n \"TSDeclareMethod\",\n \"TSIndexSignature\",\n \"StaticBlock\",\n ),\n ),\n ),\n },\n },\n});\n\ndefineType(\"ClassExpression\", {\n builder: [\"id\", \"superClass\", \"body\", \"decorators\"],\n visitor: [\n \"id\",\n \"body\",\n \"superClass\",\n \"mixins\",\n \"typeParameters\",\n \"superTypeParameters\",\n \"implements\",\n \"decorators\",\n ],\n aliases: [\"Scopable\", \"Class\", \"Expression\"],\n fields: {\n id: {\n validate: assertNodeType(\"Identifier\"),\n optional: true,\n },\n typeParameters: {\n validate: process.env.BABEL_8_BREAKING\n ? assertNodeType(\n \"TypeParameterDeclaration\",\n \"TSTypeParameterDeclaration\",\n )\n : assertNodeType(\n \"TypeParameterDeclaration\",\n \"TSTypeParameterDeclaration\",\n // @ts-ignore(Babel 7 vs Babel 8) Babel 7 AST\n \"Noop\",\n ),\n optional: true,\n },\n body: {\n validate: assertNodeType(\"ClassBody\"),\n },\n superClass: {\n optional: true,\n validate: assertNodeType(\"Expression\"),\n },\n superTypeParameters: {\n validate: assertNodeType(\n \"TypeParameterInstantiation\",\n \"TSTypeParameterInstantiation\",\n ),\n optional: true,\n },\n implements: {\n validate: chain(\n assertValueType(\"array\"),\n assertEach(\n assertNodeType(\"TSExpressionWithTypeArguments\", \"ClassImplements\"),\n ),\n ),\n optional: true,\n },\n decorators: {\n validate: chain(\n assertValueType(\"array\"),\n assertEach(assertNodeType(\"Decorator\")),\n ),\n optional: true,\n },\n mixins: {\n validate: assertNodeType(\"InterfaceExtends\"),\n optional: true,\n },\n },\n});\n\ndefineType(\"ClassDeclaration\", {\n inherits: \"ClassExpression\",\n aliases: [\"Scopable\", \"Class\", \"Statement\", \"Declaration\"],\n fields: {\n id: {\n validate: assertNodeType(\"Identifier\"),\n // The id may be omitted if this is the child of an\n // ExportDefaultDeclaration.\n optional: true,\n },\n typeParameters: {\n validate: process.env.BABEL_8_BREAKING\n ? assertNodeType(\n \"TypeParameterDeclaration\",\n \"TSTypeParameterDeclaration\",\n )\n : assertNodeType(\n \"TypeParameterDeclaration\",\n \"TSTypeParameterDeclaration\",\n // @ts-ignore(Babel 7 vs Babel 8) Babel 7 AST\n \"Noop\",\n ),\n optional: true,\n },\n body: {\n validate: assertNodeType(\"ClassBody\"),\n },\n superClass: {\n optional: true,\n validate: assertNodeType(\"Expression\"),\n },\n superTypeParameters: {\n validate: assertNodeType(\n \"TypeParameterInstantiation\",\n \"TSTypeParameterInstantiation\",\n ),\n optional: true,\n },\n implements: {\n validate: chain(\n assertValueType(\"array\"),\n assertEach(\n assertNodeType(\"TSExpressionWithTypeArguments\", \"ClassImplements\"),\n ),\n ),\n optional: true,\n },\n decorators: {\n validate: chain(\n assertValueType(\"array\"),\n assertEach(assertNodeType(\"Decorator\")),\n ),\n optional: true,\n },\n mixins: {\n validate: assertNodeType(\"InterfaceExtends\"),\n optional: true,\n },\n declare: {\n validate: assertValueType(\"boolean\"),\n optional: true,\n },\n abstract: {\n validate: assertValueType(\"boolean\"),\n optional: true,\n },\n },\n validate: (function () {\n const identifier = assertNodeType(\"Identifier\");\n\n return function (parent, key, node) {\n if (!process.env.BABEL_TYPES_8_BREAKING) return;\n\n if (!is(\"ExportDefaultDeclaration\", parent)) {\n identifier(node, \"id\", node.id);\n }\n };\n })(),\n});\n\ndefineType(\"ExportAllDeclaration\", {\n builder: [\"source\"],\n visitor: [\"source\", \"attributes\", \"assertions\"],\n aliases: [\n \"Statement\",\n \"Declaration\",\n \"ImportOrExportDeclaration\",\n \"ExportDeclaration\",\n ],\n fields: {\n source: {\n validate: assertNodeType(\"StringLiteral\"),\n },\n exportKind: validateOptional(assertOneOf(\"type\", \"value\")),\n attributes: {\n optional: true,\n validate: chain(\n assertValueType(\"array\"),\n assertEach(assertNodeType(\"ImportAttribute\")),\n ),\n },\n // TODO(Babel 8): Deprecated\n assertions: {\n optional: true,\n validate: chain(\n assertValueType(\"array\"),\n assertEach(assertNodeType(\"ImportAttribute\")),\n ),\n },\n },\n});\n\ndefineType(\"ExportDefaultDeclaration\", {\n visitor: [\"declaration\"],\n aliases: [\n \"Statement\",\n \"Declaration\",\n \"ImportOrExportDeclaration\",\n \"ExportDeclaration\",\n ],\n fields: {\n declaration: {\n validate: assertNodeType(\n \"TSDeclareFunction\",\n \"FunctionDeclaration\",\n \"ClassDeclaration\",\n \"Expression\",\n ),\n },\n exportKind: validateOptional(assertOneOf(\"value\")),\n },\n});\n\ndefineType(\"ExportNamedDeclaration\", {\n builder: [\"declaration\", \"specifiers\", \"source\"],\n visitor: [\"declaration\", \"specifiers\", \"source\", \"attributes\", \"assertions\"],\n aliases: [\n \"Statement\",\n \"Declaration\",\n \"ImportOrExportDeclaration\",\n \"ExportDeclaration\",\n ],\n fields: {\n declaration: {\n optional: true,\n validate: chain(\n assertNodeType(\"Declaration\"),\n Object.assign(\n function (node: t.ExportNamedDeclaration, key, val) {\n if (!process.env.BABEL_TYPES_8_BREAKING) return;\n\n // This validator isn't put at the top level because we can run it\n // even if this node doesn't have a parent.\n\n if (val && node.specifiers.length) {\n throw new TypeError(\n \"Only declaration or specifiers is allowed on ExportNamedDeclaration\",\n );\n }\n } as Validator,\n { oneOfNodeTypes: [\"Declaration\"] },\n ),\n function (node: t.ExportNamedDeclaration, key, val) {\n if (!process.env.BABEL_TYPES_8_BREAKING) return;\n\n // This validator isn't put at the top level because we can run it\n // even if this node doesn't have a parent.\n\n if (val && node.source) {\n throw new TypeError(\"Cannot export a declaration from a source\");\n }\n },\n ),\n },\n attributes: {\n optional: true,\n validate: chain(\n assertValueType(\"array\"),\n assertEach(assertNodeType(\"ImportAttribute\")),\n ),\n },\n // TODO(Babel 8): Deprecated\n assertions: {\n optional: true,\n validate: chain(\n assertValueType(\"array\"),\n assertEach(assertNodeType(\"ImportAttribute\")),\n ),\n },\n specifiers: {\n default: [],\n validate: chain(\n assertValueType(\"array\"),\n assertEach(\n (function () {\n const sourced = assertNodeType(\n \"ExportSpecifier\",\n \"ExportDefaultSpecifier\",\n \"ExportNamespaceSpecifier\",\n );\n const sourceless = assertNodeType(\"ExportSpecifier\");\n\n if (!process.env.BABEL_TYPES_8_BREAKING) return sourced;\n\n return function (node: t.ExportNamedDeclaration, key, val) {\n const validator = node.source ? sourced : sourceless;\n validator(node, key, val);\n } as Validator;\n })(),\n ),\n ),\n },\n source: {\n validate: assertNodeType(\"StringLiteral\"),\n optional: true,\n },\n exportKind: validateOptional(assertOneOf(\"type\", \"value\")),\n },\n});\n\ndefineType(\"ExportSpecifier\", {\n visitor: [\"local\", \"exported\"],\n aliases: [\"ModuleSpecifier\"],\n fields: {\n local: {\n validate: assertNodeType(\"Identifier\"),\n },\n exported: {\n validate: assertNodeType(\"Identifier\", \"StringLiteral\"),\n },\n exportKind: {\n // And TypeScript's \"export { type foo } from\"\n validate: assertOneOf(\"type\", \"value\"),\n optional: true,\n },\n },\n});\n\ndefineType(\"ForOfStatement\", {\n visitor: [\"left\", \"right\", \"body\"],\n builder: [\"left\", \"right\", \"body\", \"await\"],\n aliases: [\n \"Scopable\",\n \"Statement\",\n \"For\",\n \"BlockParent\",\n \"Loop\",\n \"ForXStatement\",\n ],\n fields: {\n left: {\n validate: (function () {\n if (!process.env.BABEL_TYPES_8_BREAKING) {\n return assertNodeType(\"VariableDeclaration\", \"LVal\");\n }\n\n const declaration = assertNodeType(\"VariableDeclaration\");\n const lval = assertNodeType(\n \"Identifier\",\n \"MemberExpression\",\n \"ArrayPattern\",\n \"ObjectPattern\",\n \"TSAsExpression\",\n \"TSSatisfiesExpression\",\n \"TSTypeAssertion\",\n \"TSNonNullExpression\",\n );\n\n return function (node, key, val) {\n if (is(\"VariableDeclaration\", val)) {\n declaration(node, key, val);\n } else {\n lval(node, key, val);\n }\n };\n })(),\n },\n right: {\n validate: assertNodeType(\"Expression\"),\n },\n body: {\n validate: assertNodeType(\"Statement\"),\n },\n await: {\n default: false,\n },\n },\n});\n\ndefineType(\"ImportDeclaration\", {\n builder: [\"specifiers\", \"source\"],\n visitor: [\"specifiers\", \"source\", \"attributes\", \"assertions\"],\n aliases: [\"Statement\", \"Declaration\", \"ImportOrExportDeclaration\"],\n fields: {\n attributes: {\n optional: true,\n validate: chain(\n assertValueType(\"array\"),\n assertEach(assertNodeType(\"ImportAttribute\")),\n ),\n },\n // TODO(Babel 8): Deprecated\n assertions: {\n optional: true,\n validate: chain(\n assertValueType(\"array\"),\n assertEach(assertNodeType(\"ImportAttribute\")),\n ),\n },\n module: {\n optional: true,\n validate: assertValueType(\"boolean\"),\n },\n phase: {\n default: null,\n validate: assertOneOf(\"source\", \"defer\"),\n },\n specifiers: {\n validate: chain(\n assertValueType(\"array\"),\n assertEach(\n assertNodeType(\n \"ImportSpecifier\",\n \"ImportDefaultSpecifier\",\n \"ImportNamespaceSpecifier\",\n ),\n ),\n ),\n },\n source: {\n validate: assertNodeType(\"StringLiteral\"),\n },\n importKind: {\n // Handle TypeScript/Flowtype's extension \"import type foo from\"\n // TypeScript doesn't support typeof\n validate: assertOneOf(\"type\", \"typeof\", \"value\"),\n optional: true,\n },\n },\n});\n\ndefineType(\"ImportDefaultSpecifier\", {\n visitor: [\"local\"],\n aliases: [\"ModuleSpecifier\"],\n fields: {\n local: {\n validate: assertNodeType(\"Identifier\"),\n },\n },\n});\n\ndefineType(\"ImportNamespaceSpecifier\", {\n visitor: [\"local\"],\n aliases: [\"ModuleSpecifier\"],\n fields: {\n local: {\n validate: assertNodeType(\"Identifier\"),\n },\n },\n});\n\ndefineType(\"ImportSpecifier\", {\n visitor: [\"local\", \"imported\"],\n aliases: [\"ModuleSpecifier\"],\n fields: {\n local: {\n validate: assertNodeType(\"Identifier\"),\n },\n imported: {\n validate: assertNodeType(\"Identifier\", \"StringLiteral\"),\n },\n importKind: {\n // Handle Flowtype's extension \"import {typeof foo} from\"\n // And TypeScript's \"import { type foo } from\"\n validate: assertOneOf(\"type\", \"typeof\", \"value\"),\n optional: true,\n },\n },\n});\n\ndefineType(\"ImportExpression\", {\n visitor: [\"source\", \"options\"],\n aliases: [\"Expression\"],\n fields: {\n phase: {\n default: null,\n validate: assertOneOf(\"source\", \"defer\"),\n },\n source: {\n validate: assertNodeType(\"Expression\"),\n },\n options: {\n validate: assertNodeType(\"Expression\"),\n optional: true,\n },\n },\n});\n\ndefineType(\"MetaProperty\", {\n visitor: [\"meta\", \"property\"],\n aliases: [\"Expression\"],\n fields: {\n meta: {\n validate: chain(\n assertNodeType(\"Identifier\"),\n Object.assign(\n function (node: t.MetaProperty, key, val) {\n if (!process.env.BABEL_TYPES_8_BREAKING) return;\n\n let property;\n switch (val.name) {\n case \"function\":\n property = \"sent\";\n break;\n case \"new\":\n property = \"target\";\n break;\n case \"import\":\n property = \"meta\";\n break;\n }\n if (!is(\"Identifier\", node.property, { name: property })) {\n throw new TypeError(\"Unrecognised MetaProperty\");\n }\n } as Validator,\n { oneOfNodeTypes: [\"Identifier\"] },\n ),\n ),\n },\n property: {\n validate: assertNodeType(\"Identifier\"),\n },\n },\n});\n\nexport const classMethodOrPropertyCommon = () => ({\n abstract: {\n validate: assertValueType(\"boolean\"),\n optional: true,\n },\n accessibility: {\n validate: assertOneOf(\"public\", \"private\", \"protected\"),\n optional: true,\n },\n static: {\n default: false,\n },\n override: {\n default: false,\n },\n computed: {\n default: false,\n },\n optional: {\n validate: assertValueType(\"boolean\"),\n optional: true,\n },\n key: {\n validate: chain(\n (function () {\n const normal = assertNodeType(\n \"Identifier\",\n \"StringLiteral\",\n \"NumericLiteral\",\n \"BigIntLiteral\",\n );\n const computed = assertNodeType(\"Expression\");\n\n return function (node: any, key: string, val: any) {\n const validator = node.computed ? computed : normal;\n validator(node, key, val);\n };\n })(),\n assertNodeType(\n \"Identifier\",\n \"StringLiteral\",\n \"NumericLiteral\",\n \"BigIntLiteral\",\n \"Expression\",\n ),\n ),\n },\n});\n\nexport const classMethodOrDeclareMethodCommon = () => ({\n ...functionCommon(),\n ...classMethodOrPropertyCommon(),\n params: {\n validate: chain(\n assertValueType(\"array\"),\n assertEach(\n assertNodeType(\n \"Identifier\",\n \"Pattern\",\n \"RestElement\",\n \"TSParameterProperty\",\n ),\n ),\n ),\n },\n kind: {\n validate: assertOneOf(\"get\", \"set\", \"method\", \"constructor\"),\n default: \"method\",\n },\n access: {\n validate: chain(\n assertValueType(\"string\"),\n assertOneOf(\"public\", \"private\", \"protected\"),\n ),\n optional: true,\n },\n decorators: {\n validate: chain(\n assertValueType(\"array\"),\n assertEach(assertNodeType(\"Decorator\")),\n ),\n optional: true,\n },\n});\n\ndefineType(\"ClassMethod\", {\n aliases: [\"Function\", \"Scopable\", \"BlockParent\", \"FunctionParent\", \"Method\"],\n builder: [\n \"kind\",\n \"key\",\n \"params\",\n \"body\",\n \"computed\",\n \"static\",\n \"generator\",\n \"async\",\n ],\n visitor: [\n \"key\",\n \"params\",\n \"body\",\n \"decorators\",\n \"returnType\",\n \"typeParameters\",\n ],\n fields: {\n ...classMethodOrDeclareMethodCommon(),\n ...functionTypeAnnotationCommon(),\n body: {\n validate: assertNodeType(\"BlockStatement\"),\n },\n },\n});\n\ndefineType(\"ObjectPattern\", {\n visitor: [\n \"properties\",\n \"typeAnnotation\",\n \"decorators\" /* for legacy param decorators */,\n ],\n builder: [\"properties\"],\n aliases: [\"Pattern\", \"PatternLike\", \"LVal\"],\n fields: {\n ...patternLikeCommon(),\n properties: {\n validate: chain(\n assertValueType(\"array\"),\n assertEach(assertNodeType(\"RestElement\", \"ObjectProperty\")),\n ),\n },\n },\n});\n\ndefineType(\"SpreadElement\", {\n visitor: [\"argument\"],\n aliases: [\"UnaryLike\"],\n deprecatedAlias: \"SpreadProperty\",\n fields: {\n argument: {\n validate: assertNodeType(\"Expression\"),\n },\n },\n});\n\ndefineType(\n \"Super\",\n process.env.BABEL_8_BREAKING\n ? undefined\n : {\n aliases: [\"Expression\"],\n },\n);\n\ndefineType(\"TaggedTemplateExpression\", {\n visitor: [\"tag\", \"quasi\", \"typeParameters\"],\n builder: [\"tag\", \"quasi\"],\n aliases: [\"Expression\"],\n fields: {\n tag: {\n validate: assertNodeType(\"Expression\"),\n },\n quasi: {\n validate: assertNodeType(\"TemplateLiteral\"),\n },\n typeParameters: {\n validate: assertNodeType(\n \"TypeParameterInstantiation\",\n \"TSTypeParameterInstantiation\",\n ),\n optional: true,\n },\n },\n});\n\ndefineType(\"TemplateElement\", {\n builder: [\"value\", \"tail\"],\n fields: {\n value: {\n validate: chain(\n assertShape({\n raw: {\n validate: assertValueType(\"string\"),\n },\n cooked: {\n validate: assertValueType(\"string\"),\n optional: true,\n },\n }),\n function templateElementCookedValidator(node: t.TemplateElement) {\n const raw = node.value.raw;\n\n let unterminatedCalled = false;\n\n const error = () => {\n // unreachable\n throw new Error(\"Internal @babel/types error.\");\n };\n const { str, firstInvalidLoc } = readStringContents(\n \"template\",\n raw,\n 0,\n 0,\n 0,\n {\n unterminated() {\n unterminatedCalled = true;\n },\n strictNumericEscape: error,\n invalidEscapeSequence: error,\n numericSeparatorInEscapeSequence: error,\n unexpectedNumericSeparator: error,\n invalidDigit: error,\n invalidCodePoint: error,\n },\n );\n if (!unterminatedCalled) throw new Error(\"Invalid raw\");\n\n node.value.cooked = firstInvalidLoc ? null : str;\n },\n ),\n },\n tail: {\n default: false,\n },\n },\n});\n\ndefineType(\"TemplateLiteral\", {\n visitor: [\"quasis\", \"expressions\"],\n aliases: [\"Expression\", \"Literal\"],\n fields: {\n quasis: {\n validate: chain(\n assertValueType(\"array\"),\n assertEach(assertNodeType(\"TemplateElement\")),\n ),\n },\n expressions: {\n validate: chain(\n assertValueType(\"array\"),\n assertEach(\n assertNodeType(\n \"Expression\",\n // For TypeScript template literal types\n \"TSType\",\n ),\n ),\n function (node: t.TemplateLiteral, key, val) {\n if (node.quasis.length !== val.length + 1) {\n throw new TypeError(\n `Number of ${\n node.type\n } quasis should be exactly one more than the number of expressions.\\nExpected ${\n val.length + 1\n } quasis but got ${node.quasis.length}`,\n );\n }\n } as Validator,\n ),\n },\n },\n});\n\ndefineType(\"YieldExpression\", {\n builder: [\"argument\", \"delegate\"],\n visitor: [\"argument\"],\n aliases: [\"Expression\", \"Terminatorless\"],\n fields: {\n delegate: {\n validate: chain(\n assertValueType(\"boolean\"),\n Object.assign(\n function (node: t.YieldExpression, key, val) {\n if (!process.env.BABEL_TYPES_8_BREAKING) return;\n\n if (val && !node.argument) {\n throw new TypeError(\n \"Property delegate of YieldExpression cannot be true if there is no argument\",\n );\n }\n } as Validator,\n { type: \"boolean\" },\n ),\n ),\n default: false,\n },\n argument: {\n optional: true,\n validate: assertNodeType(\"Expression\"),\n },\n },\n});\n\n// --- ES2017 ---\ndefineType(\"AwaitExpression\", {\n builder: [\"argument\"],\n visitor: [\"argument\"],\n aliases: [\"Expression\", \"Terminatorless\"],\n fields: {\n argument: {\n validate: assertNodeType(\"Expression\"),\n },\n },\n});\n\n// --- ES2019 ---\ndefineType(\"Import\", {\n aliases: [\"Expression\"],\n});\n\n// --- ES2020 ---\ndefineType(\"BigIntLiteral\", {\n builder: [\"value\"],\n fields: {\n value: {\n validate: assertValueType(\"string\"),\n },\n },\n aliases: [\"Expression\", \"Pureish\", \"Literal\", \"Immutable\"],\n});\n\ndefineType(\"ExportNamespaceSpecifier\", {\n visitor: [\"exported\"],\n aliases: [\"ModuleSpecifier\"],\n fields: {\n exported: {\n validate: assertNodeType(\"Identifier\"),\n },\n },\n});\n\ndefineType(\"OptionalMemberExpression\", {\n builder: [\"object\", \"property\", \"computed\", \"optional\"],\n visitor: [\"object\", \"property\"],\n aliases: [\"Expression\"],\n fields: {\n object: {\n validate: assertNodeType(\"Expression\"),\n },\n property: {\n validate: (function () {\n const normal = assertNodeType(\"Identifier\");\n const computed = assertNodeType(\"Expression\");\n\n const validator: Validator = Object.assign(\n function (node: t.OptionalMemberExpression, key, val) {\n const validator = node.computed ? computed : normal;\n validator(node, key, val);\n } as Validator,\n // todo(ts): can be discriminated union by `computed` property\n { oneOfNodeTypes: [\"Expression\", \"Identifier\"] },\n );\n return validator;\n })(),\n },\n computed: {\n default: false,\n },\n optional: {\n validate: !process.env.BABEL_TYPES_8_BREAKING\n ? assertValueType(\"boolean\")\n : chain(assertValueType(\"boolean\"), assertOptionalChainStart()),\n },\n },\n});\n\ndefineType(\"OptionalCallExpression\", {\n visitor: [\"callee\", \"arguments\", \"typeParameters\", \"typeArguments\"],\n builder: [\"callee\", \"arguments\", \"optional\"],\n aliases: [\"Expression\"],\n fields: {\n callee: {\n validate: assertNodeType(\"Expression\"),\n },\n arguments: {\n validate: chain(\n assertValueType(\"array\"),\n assertEach(\n assertNodeType(\n \"Expression\",\n \"SpreadElement\",\n \"JSXNamespacedName\",\n \"ArgumentPlaceholder\",\n ),\n ),\n ),\n },\n optional: {\n validate: !process.env.BABEL_TYPES_8_BREAKING\n ? assertValueType(\"boolean\")\n : chain(assertValueType(\"boolean\"), assertOptionalChainStart()),\n },\n typeArguments: {\n validate: assertNodeType(\"TypeParameterInstantiation\"),\n optional: true,\n },\n typeParameters: {\n validate: assertNodeType(\"TSTypeParameterInstantiation\"),\n optional: true,\n },\n },\n});\n\n// --- ES2022 ---\ndefineType(\"ClassProperty\", {\n visitor: [\"key\", \"value\", \"typeAnnotation\", \"decorators\"],\n builder: [\n \"key\",\n \"value\",\n \"typeAnnotation\",\n \"decorators\",\n \"computed\",\n \"static\",\n ],\n aliases: [\"Property\"],\n fields: {\n ...classMethodOrPropertyCommon(),\n value: {\n validate: assertNodeType(\"Expression\"),\n optional: true,\n },\n definite: {\n validate: assertValueType(\"boolean\"),\n optional: true,\n },\n typeAnnotation: {\n validate: process.env.BABEL_8_BREAKING\n ? assertNodeType(\"TypeAnnotation\", \"TSTypeAnnotation\")\n : assertNodeType(\n \"TypeAnnotation\",\n \"TSTypeAnnotation\",\n // @ts-ignore(Babel 7 vs Babel 8) Babel 7 AST\n \"Noop\",\n ),\n optional: true,\n },\n decorators: {\n validate: chain(\n assertValueType(\"array\"),\n assertEach(assertNodeType(\"Decorator\")),\n ),\n optional: true,\n },\n readonly: {\n validate: assertValueType(\"boolean\"),\n optional: true,\n },\n declare: {\n validate: assertValueType(\"boolean\"),\n optional: true,\n },\n variance: {\n validate: assertNodeType(\"Variance\"),\n optional: true,\n },\n },\n});\n\ndefineType(\"ClassAccessorProperty\", {\n visitor: [\"key\", \"value\", \"typeAnnotation\", \"decorators\"],\n builder: [\n \"key\",\n \"value\",\n \"typeAnnotation\",\n \"decorators\",\n \"computed\",\n \"static\",\n ],\n aliases: [\"Property\", \"Accessor\"],\n fields: {\n ...classMethodOrPropertyCommon(),\n key: {\n validate: chain(\n (function () {\n const normal = assertNodeType(\n \"Identifier\",\n \"StringLiteral\",\n \"NumericLiteral\",\n \"BigIntLiteral\",\n \"PrivateName\",\n );\n const computed = assertNodeType(\"Expression\");\n\n return function (node: any, key: string, val: any) {\n const validator = node.computed ? computed : normal;\n validator(node, key, val);\n };\n })(),\n assertNodeType(\n \"Identifier\",\n \"StringLiteral\",\n \"NumericLiteral\",\n \"BigIntLiteral\",\n \"Expression\",\n \"PrivateName\",\n ),\n ),\n },\n value: {\n validate: assertNodeType(\"Expression\"),\n optional: true,\n },\n definite: {\n validate: assertValueType(\"boolean\"),\n optional: true,\n },\n typeAnnotation: {\n validate: process.env.BABEL_8_BREAKING\n ? assertNodeType(\"TypeAnnotation\", \"TSTypeAnnotation\")\n : assertNodeType(\n \"TypeAnnotation\",\n \"TSTypeAnnotation\",\n // @ts-ignore(Babel 7 vs Babel 8) Babel 7 AST\n \"Noop\",\n ),\n optional: true,\n },\n decorators: {\n validate: chain(\n assertValueType(\"array\"),\n assertEach(assertNodeType(\"Decorator\")),\n ),\n optional: true,\n },\n readonly: {\n validate: assertValueType(\"boolean\"),\n optional: true,\n },\n declare: {\n validate: assertValueType(\"boolean\"),\n optional: true,\n },\n variance: {\n validate: assertNodeType(\"Variance\"),\n optional: true,\n },\n },\n});\n\ndefineType(\"ClassPrivateProperty\", {\n visitor: [\"key\", \"value\", \"decorators\", \"typeAnnotation\"],\n builder: [\"key\", \"value\", \"decorators\", \"static\"],\n aliases: [\"Property\", \"Private\"],\n fields: {\n key: {\n validate: assertNodeType(\"PrivateName\"),\n },\n value: {\n validate: assertNodeType(\"Expression\"),\n optional: true,\n },\n typeAnnotation: {\n validate: process.env.BABEL_8_BREAKING\n ? assertNodeType(\"TypeAnnotation\", \"TSTypeAnnotation\")\n : assertNodeType(\n \"TypeAnnotation\",\n \"TSTypeAnnotation\",\n // @ts-ignore(Babel 7 vs Babel 8) Babel 7 AST\n \"Noop\",\n ),\n optional: true,\n },\n decorators: {\n validate: chain(\n assertValueType(\"array\"),\n assertEach(assertNodeType(\"Decorator\")),\n ),\n optional: true,\n },\n static: {\n validate: assertValueType(\"boolean\"),\n default: false,\n },\n readonly: {\n validate: assertValueType(\"boolean\"),\n optional: true,\n },\n definite: {\n validate: assertValueType(\"boolean\"),\n optional: true,\n },\n variance: {\n validate: assertNodeType(\"Variance\"),\n optional: true,\n },\n },\n});\n\ndefineType(\"ClassPrivateMethod\", {\n builder: [\"kind\", \"key\", \"params\", \"body\", \"static\"],\n visitor: [\n \"key\",\n \"params\",\n \"body\",\n \"decorators\",\n \"returnType\",\n \"typeParameters\",\n ],\n aliases: [\n \"Function\",\n \"Scopable\",\n \"BlockParent\",\n \"FunctionParent\",\n \"Method\",\n \"Private\",\n ],\n fields: {\n ...classMethodOrDeclareMethodCommon(),\n ...functionTypeAnnotationCommon(),\n kind: {\n validate: assertOneOf(\"get\", \"set\", \"method\"),\n default: \"method\",\n },\n key: {\n validate: assertNodeType(\"PrivateName\"),\n },\n body: {\n validate: assertNodeType(\"BlockStatement\"),\n },\n },\n});\n\ndefineType(\"PrivateName\", {\n visitor: [\"id\"],\n aliases: [\"Private\"],\n fields: {\n id: {\n validate: assertNodeType(\"Identifier\"),\n },\n },\n});\n\ndefineType(\"StaticBlock\", {\n visitor: [\"body\"],\n fields: {\n body: {\n validate: chain(\n assertValueType(\"array\"),\n assertEach(assertNodeType(\"Statement\")),\n ),\n },\n },\n aliases: [\"Scopable\", \"BlockParent\", \"FunctionParent\"],\n});\n","import {\n defineAliasedType,\n arrayOfType,\n assertOneOf,\n assertValueType,\n validate,\n validateArrayOfType,\n validateOptional,\n validateOptionalType,\n validateType,\n} from \"./utils.ts\";\n\nconst defineType = defineAliasedType(\"Flow\");\n\nconst defineInterfaceishType = (\n name: \"DeclareClass\" | \"DeclareInterface\" | \"InterfaceDeclaration\",\n) => {\n const isDeclareClass = name === \"DeclareClass\";\n\n defineType(name, {\n builder: [\"id\", \"typeParameters\", \"extends\", \"body\"],\n visitor: [\n \"id\",\n \"typeParameters\",\n \"extends\",\n ...(isDeclareClass ? [\"mixins\", \"implements\"] : []),\n \"body\",\n ],\n aliases: [\"FlowDeclaration\", \"Statement\", \"Declaration\"],\n fields: {\n id: validateType(\"Identifier\"),\n typeParameters: validateOptionalType(\"TypeParameterDeclaration\"),\n extends: validateOptional(arrayOfType(\"InterfaceExtends\")),\n ...(isDeclareClass\n ? {\n mixins: validateOptional(arrayOfType(\"InterfaceExtends\")),\n implements: validateOptional(arrayOfType(\"ClassImplements\")),\n }\n : {}),\n body: validateType(\"ObjectTypeAnnotation\"),\n },\n });\n};\n\ndefineType(\"AnyTypeAnnotation\", {\n aliases: [\"FlowType\", \"FlowBaseAnnotation\"],\n});\n\ndefineType(\"ArrayTypeAnnotation\", {\n visitor: [\"elementType\"],\n aliases: [\"FlowType\"],\n fields: {\n elementType: validateType(\"FlowType\"),\n },\n});\n\ndefineType(\"BooleanTypeAnnotation\", {\n aliases: [\"FlowType\", \"FlowBaseAnnotation\"],\n});\n\ndefineType(\"BooleanLiteralTypeAnnotation\", {\n builder: [\"value\"],\n aliases: [\"FlowType\"],\n fields: {\n value: validate(assertValueType(\"boolean\")),\n },\n});\n\ndefineType(\"NullLiteralTypeAnnotation\", {\n aliases: [\"FlowType\", \"FlowBaseAnnotation\"],\n});\n\ndefineType(\"ClassImplements\", {\n visitor: [\"id\", \"typeParameters\"],\n fields: {\n id: validateType(\"Identifier\"),\n typeParameters: validateOptionalType(\"TypeParameterInstantiation\"),\n },\n});\n\ndefineInterfaceishType(\"DeclareClass\");\n\ndefineType(\"DeclareFunction\", {\n visitor: [\"id\"],\n aliases: [\"FlowDeclaration\", \"Statement\", \"Declaration\"],\n fields: {\n id: validateType(\"Identifier\"),\n predicate: validateOptionalType(\"DeclaredPredicate\"),\n },\n});\n\ndefineInterfaceishType(\"DeclareInterface\");\n\ndefineType(\"DeclareModule\", {\n builder: [\"id\", \"body\", \"kind\"],\n visitor: [\"id\", \"body\"],\n aliases: [\"FlowDeclaration\", \"Statement\", \"Declaration\"],\n fields: {\n id: validateType([\"Identifier\", \"StringLiteral\"]),\n body: validateType(\"BlockStatement\"),\n kind: validateOptional(assertOneOf(\"CommonJS\", \"ES\")),\n },\n});\n\ndefineType(\"DeclareModuleExports\", {\n visitor: [\"typeAnnotation\"],\n aliases: [\"FlowDeclaration\", \"Statement\", \"Declaration\"],\n fields: {\n typeAnnotation: validateType(\"TypeAnnotation\"),\n },\n});\n\ndefineType(\"DeclareTypeAlias\", {\n visitor: [\"id\", \"typeParameters\", \"right\"],\n aliases: [\"FlowDeclaration\", \"Statement\", \"Declaration\"],\n fields: {\n id: validateType(\"Identifier\"),\n typeParameters: validateOptionalType(\"TypeParameterDeclaration\"),\n right: validateType(\"FlowType\"),\n },\n});\n\ndefineType(\"DeclareOpaqueType\", {\n visitor: [\"id\", \"typeParameters\", \"supertype\"],\n aliases: [\"FlowDeclaration\", \"Statement\", \"Declaration\"],\n fields: {\n id: validateType(\"Identifier\"),\n typeParameters: validateOptionalType(\"TypeParameterDeclaration\"),\n supertype: validateOptionalType(\"FlowType\"),\n impltype: validateOptionalType(\"FlowType\"),\n },\n});\n\ndefineType(\"DeclareVariable\", {\n visitor: [\"id\"],\n aliases: [\"FlowDeclaration\", \"Statement\", \"Declaration\"],\n fields: {\n id: validateType(\"Identifier\"),\n },\n});\n\ndefineType(\"DeclareExportDeclaration\", {\n visitor: [\"declaration\", \"specifiers\", \"source\"],\n aliases: [\"FlowDeclaration\", \"Statement\", \"Declaration\"],\n fields: {\n declaration: validateOptionalType(\"Flow\"),\n specifiers: validateOptional(\n arrayOfType([\"ExportSpecifier\", \"ExportNamespaceSpecifier\"]),\n ),\n source: validateOptionalType(\"StringLiteral\"),\n default: validateOptional(assertValueType(\"boolean\")),\n },\n});\n\ndefineType(\"DeclareExportAllDeclaration\", {\n visitor: [\"source\"],\n aliases: [\"FlowDeclaration\", \"Statement\", \"Declaration\"],\n fields: {\n source: validateType(\"StringLiteral\"),\n exportKind: validateOptional(assertOneOf(\"type\", \"value\")),\n },\n});\n\ndefineType(\"DeclaredPredicate\", {\n visitor: [\"value\"],\n aliases: [\"FlowPredicate\"],\n fields: {\n value: validateType(\"Flow\"),\n },\n});\n\ndefineType(\"ExistsTypeAnnotation\", {\n aliases: [\"FlowType\"],\n});\n\ndefineType(\"FunctionTypeAnnotation\", {\n visitor: [\"typeParameters\", \"params\", \"rest\", \"returnType\"],\n aliases: [\"FlowType\"],\n fields: {\n typeParameters: validateOptionalType(\"TypeParameterDeclaration\"),\n params: validate(arrayOfType(\"FunctionTypeParam\")),\n rest: validateOptionalType(\"FunctionTypeParam\"),\n this: validateOptionalType(\"FunctionTypeParam\"),\n returnType: validateType(\"FlowType\"),\n },\n});\n\ndefineType(\"FunctionTypeParam\", {\n visitor: [\"name\", \"typeAnnotation\"],\n fields: {\n name: validateOptionalType(\"Identifier\"),\n typeAnnotation: validateType(\"FlowType\"),\n optional: validateOptional(assertValueType(\"boolean\")),\n },\n});\n\ndefineType(\"GenericTypeAnnotation\", {\n visitor: [\"id\", \"typeParameters\"],\n aliases: [\"FlowType\"],\n fields: {\n id: validateType([\"Identifier\", \"QualifiedTypeIdentifier\"]),\n typeParameters: validateOptionalType(\"TypeParameterInstantiation\"),\n },\n});\n\ndefineType(\"InferredPredicate\", {\n aliases: [\"FlowPredicate\"],\n});\n\ndefineType(\"InterfaceExtends\", {\n visitor: [\"id\", \"typeParameters\"],\n fields: {\n id: validateType([\"Identifier\", \"QualifiedTypeIdentifier\"]),\n typeParameters: validateOptionalType(\"TypeParameterInstantiation\"),\n },\n});\n\ndefineInterfaceishType(\"InterfaceDeclaration\");\n\ndefineType(\"InterfaceTypeAnnotation\", {\n visitor: [\"extends\", \"body\"],\n aliases: [\"FlowType\"],\n fields: {\n extends: validateOptional(arrayOfType(\"InterfaceExtends\")),\n body: validateType(\"ObjectTypeAnnotation\"),\n },\n});\n\ndefineType(\"IntersectionTypeAnnotation\", {\n visitor: [\"types\"],\n aliases: [\"FlowType\"],\n fields: {\n types: validate(arrayOfType(\"FlowType\")),\n },\n});\n\ndefineType(\"MixedTypeAnnotation\", {\n aliases: [\"FlowType\", \"FlowBaseAnnotation\"],\n});\n\ndefineType(\"EmptyTypeAnnotation\", {\n aliases: [\"FlowType\", \"FlowBaseAnnotation\"],\n});\n\ndefineType(\"NullableTypeAnnotation\", {\n visitor: [\"typeAnnotation\"],\n aliases: [\"FlowType\"],\n fields: {\n typeAnnotation: validateType(\"FlowType\"),\n },\n});\n\ndefineType(\"NumberLiteralTypeAnnotation\", {\n builder: [\"value\"],\n aliases: [\"FlowType\"],\n fields: {\n value: validate(assertValueType(\"number\")),\n },\n});\n\ndefineType(\"NumberTypeAnnotation\", {\n aliases: [\"FlowType\", \"FlowBaseAnnotation\"],\n});\n\ndefineType(\"ObjectTypeAnnotation\", {\n visitor: [\"properties\", \"indexers\", \"callProperties\", \"internalSlots\"],\n aliases: [\"FlowType\"],\n builder: [\n \"properties\",\n \"indexers\",\n \"callProperties\",\n \"internalSlots\",\n \"exact\",\n ],\n fields: {\n properties: validate(\n arrayOfType([\"ObjectTypeProperty\", \"ObjectTypeSpreadProperty\"]),\n ),\n indexers: {\n validate: arrayOfType(\"ObjectTypeIndexer\"),\n optional: process.env.BABEL_8_BREAKING ? false : true,\n default: [],\n },\n callProperties: {\n validate: arrayOfType(\"ObjectTypeCallProperty\"),\n optional: process.env.BABEL_8_BREAKING ? false : true,\n default: [],\n },\n internalSlots: {\n validate: arrayOfType(\"ObjectTypeInternalSlot\"),\n optional: process.env.BABEL_8_BREAKING ? false : true,\n default: [],\n },\n exact: {\n validate: assertValueType(\"boolean\"),\n default: false,\n },\n // If the inexact flag is present then this is an object type, and not a\n // declare class, declare interface, or interface. If it is true, the\n // object uses ... to express that it is inexact.\n inexact: validateOptional(assertValueType(\"boolean\")),\n },\n});\n\ndefineType(\"ObjectTypeInternalSlot\", {\n visitor: [\"id\", \"value\", \"optional\", \"static\", \"method\"],\n aliases: [\"UserWhitespacable\"],\n fields: {\n id: validateType(\"Identifier\"),\n value: validateType(\"FlowType\"),\n optional: validate(assertValueType(\"boolean\")),\n static: validate(assertValueType(\"boolean\")),\n method: validate(assertValueType(\"boolean\")),\n },\n});\n\ndefineType(\"ObjectTypeCallProperty\", {\n visitor: [\"value\"],\n aliases: [\"UserWhitespacable\"],\n fields: {\n value: validateType(\"FlowType\"),\n static: validate(assertValueType(\"boolean\")),\n },\n});\n\ndefineType(\"ObjectTypeIndexer\", {\n visitor: [\"id\", \"key\", \"value\", \"variance\"],\n aliases: [\"UserWhitespacable\"],\n fields: {\n id: validateOptionalType(\"Identifier\"),\n key: validateType(\"FlowType\"),\n value: validateType(\"FlowType\"),\n static: validate(assertValueType(\"boolean\")),\n variance: validateOptionalType(\"Variance\"),\n },\n});\n\ndefineType(\"ObjectTypeProperty\", {\n visitor: [\"key\", \"value\", \"variance\"],\n aliases: [\"UserWhitespacable\"],\n fields: {\n key: validateType([\"Identifier\", \"StringLiteral\"]),\n value: validateType(\"FlowType\"),\n kind: validate(assertOneOf(\"init\", \"get\", \"set\")),\n static: validate(assertValueType(\"boolean\")),\n proto: validate(assertValueType(\"boolean\")),\n optional: validate(assertValueType(\"boolean\")),\n variance: validateOptionalType(\"Variance\"),\n method: validate(assertValueType(\"boolean\")),\n },\n});\n\ndefineType(\"ObjectTypeSpreadProperty\", {\n visitor: [\"argument\"],\n aliases: [\"UserWhitespacable\"],\n fields: {\n argument: validateType(\"FlowType\"),\n },\n});\n\ndefineType(\"OpaqueType\", {\n visitor: [\"id\", \"typeParameters\", \"supertype\", \"impltype\"],\n aliases: [\"FlowDeclaration\", \"Statement\", \"Declaration\"],\n fields: {\n id: validateType(\"Identifier\"),\n typeParameters: validateOptionalType(\"TypeParameterDeclaration\"),\n supertype: validateOptionalType(\"FlowType\"),\n impltype: validateType(\"FlowType\"),\n },\n});\n\ndefineType(\"QualifiedTypeIdentifier\", {\n visitor: [\"id\", \"qualification\"],\n fields: {\n id: validateType(\"Identifier\"),\n qualification: validateType([\"Identifier\", \"QualifiedTypeIdentifier\"]),\n },\n});\n\ndefineType(\"StringLiteralTypeAnnotation\", {\n builder: [\"value\"],\n aliases: [\"FlowType\"],\n fields: {\n value: validate(assertValueType(\"string\")),\n },\n});\n\ndefineType(\"StringTypeAnnotation\", {\n aliases: [\"FlowType\", \"FlowBaseAnnotation\"],\n});\n\ndefineType(\"SymbolTypeAnnotation\", {\n aliases: [\"FlowType\", \"FlowBaseAnnotation\"],\n});\n\ndefineType(\"ThisTypeAnnotation\", {\n aliases: [\"FlowType\", \"FlowBaseAnnotation\"],\n});\n\ndefineType(\"TupleTypeAnnotation\", {\n visitor: [\"types\"],\n aliases: [\"FlowType\"],\n fields: {\n types: validate(arrayOfType(\"FlowType\")),\n },\n});\n\ndefineType(\"TypeofTypeAnnotation\", {\n visitor: [\"argument\"],\n aliases: [\"FlowType\"],\n fields: {\n argument: validateType(\"FlowType\"),\n },\n});\n\ndefineType(\"TypeAlias\", {\n visitor: [\"id\", \"typeParameters\", \"right\"],\n aliases: [\"FlowDeclaration\", \"Statement\", \"Declaration\"],\n fields: {\n id: validateType(\"Identifier\"),\n typeParameters: validateOptionalType(\"TypeParameterDeclaration\"),\n right: validateType(\"FlowType\"),\n },\n});\n\ndefineType(\"TypeAnnotation\", {\n visitor: [\"typeAnnotation\"],\n fields: {\n typeAnnotation: validateType(\"FlowType\"),\n },\n});\n\ndefineType(\"TypeCastExpression\", {\n visitor: [\"expression\", \"typeAnnotation\"],\n aliases: [\"ExpressionWrapper\", \"Expression\"],\n fields: {\n expression: validateType(\"Expression\"),\n typeAnnotation: validateType(\"TypeAnnotation\"),\n },\n});\n\ndefineType(\"TypeParameter\", {\n visitor: [\"bound\", \"default\", \"variance\"],\n fields: {\n name: validate(assertValueType(\"string\")),\n bound: validateOptionalType(\"TypeAnnotation\"),\n default: validateOptionalType(\"FlowType\"),\n variance: validateOptionalType(\"Variance\"),\n },\n});\n\ndefineType(\"TypeParameterDeclaration\", {\n visitor: [\"params\"],\n fields: {\n params: validate(arrayOfType(\"TypeParameter\")),\n },\n});\n\ndefineType(\"TypeParameterInstantiation\", {\n visitor: [\"params\"],\n fields: {\n params: validate(arrayOfType(\"FlowType\")),\n },\n});\n\ndefineType(\"UnionTypeAnnotation\", {\n visitor: [\"types\"],\n aliases: [\"FlowType\"],\n fields: {\n types: validate(arrayOfType(\"FlowType\")),\n },\n});\n\ndefineType(\"Variance\", {\n builder: [\"kind\"],\n fields: {\n kind: validate(assertOneOf(\"minus\", \"plus\")),\n },\n});\n\ndefineType(\"VoidTypeAnnotation\", {\n aliases: [\"FlowType\", \"FlowBaseAnnotation\"],\n});\n\n// Enums\ndefineType(\"EnumDeclaration\", {\n aliases: [\"Statement\", \"Declaration\"],\n visitor: [\"id\", \"body\"],\n fields: {\n id: validateType(\"Identifier\"),\n body: validateType([\n \"EnumBooleanBody\",\n \"EnumNumberBody\",\n \"EnumStringBody\",\n \"EnumSymbolBody\",\n ]),\n },\n});\n\ndefineType(\"EnumBooleanBody\", {\n aliases: [\"EnumBody\"],\n visitor: [\"members\"],\n fields: {\n explicitType: validate(assertValueType(\"boolean\")),\n members: validateArrayOfType(\"EnumBooleanMember\"),\n hasUnknownMembers: validate(assertValueType(\"boolean\")),\n },\n});\n\ndefineType(\"EnumNumberBody\", {\n aliases: [\"EnumBody\"],\n visitor: [\"members\"],\n fields: {\n explicitType: validate(assertValueType(\"boolean\")),\n members: validateArrayOfType(\"EnumNumberMember\"),\n hasUnknownMembers: validate(assertValueType(\"boolean\")),\n },\n});\n\ndefineType(\"EnumStringBody\", {\n aliases: [\"EnumBody\"],\n visitor: [\"members\"],\n fields: {\n explicitType: validate(assertValueType(\"boolean\")),\n members: validateArrayOfType([\"EnumStringMember\", \"EnumDefaultedMember\"]),\n hasUnknownMembers: validate(assertValueType(\"boolean\")),\n },\n});\n\ndefineType(\"EnumSymbolBody\", {\n aliases: [\"EnumBody\"],\n visitor: [\"members\"],\n fields: {\n members: validateArrayOfType(\"EnumDefaultedMember\"),\n hasUnknownMembers: validate(assertValueType(\"boolean\")),\n },\n});\n\ndefineType(\"EnumBooleanMember\", {\n aliases: [\"EnumMember\"],\n visitor: [\"id\"],\n fields: {\n id: validateType(\"Identifier\"),\n init: validateType(\"BooleanLiteral\"),\n },\n});\n\ndefineType(\"EnumNumberMember\", {\n aliases: [\"EnumMember\"],\n visitor: [\"id\", \"init\"],\n fields: {\n id: validateType(\"Identifier\"),\n init: validateType(\"NumericLiteral\"),\n },\n});\n\ndefineType(\"EnumStringMember\", {\n aliases: [\"EnumMember\"],\n visitor: [\"id\", \"init\"],\n fields: {\n id: validateType(\"Identifier\"),\n init: validateType(\"StringLiteral\"),\n },\n});\n\ndefineType(\"EnumDefaultedMember\", {\n aliases: [\"EnumMember\"],\n visitor: [\"id\"],\n fields: {\n id: validateType(\"Identifier\"),\n },\n});\n\ndefineType(\"IndexedAccessType\", {\n visitor: [\"objectType\", \"indexType\"],\n aliases: [\"FlowType\"],\n fields: {\n objectType: validateType(\"FlowType\"),\n indexType: validateType(\"FlowType\"),\n },\n});\n\ndefineType(\"OptionalIndexedAccessType\", {\n visitor: [\"objectType\", \"indexType\"],\n aliases: [\"FlowType\"],\n fields: {\n objectType: validateType(\"FlowType\"),\n indexType: validateType(\"FlowType\"),\n optional: validate(assertValueType(\"boolean\")),\n },\n});\n","import {\n defineAliasedType,\n assertNodeType,\n assertValueType,\n chain,\n assertEach,\n} from \"./utils.ts\";\n\nconst defineType = defineAliasedType(\"JSX\");\n\ndefineType(\"JSXAttribute\", {\n visitor: [\"name\", \"value\"],\n aliases: [\"Immutable\"],\n fields: {\n name: {\n validate: assertNodeType(\"JSXIdentifier\", \"JSXNamespacedName\"),\n },\n value: {\n optional: true,\n validate: assertNodeType(\n \"JSXElement\",\n \"JSXFragment\",\n \"StringLiteral\",\n \"JSXExpressionContainer\",\n ),\n },\n },\n});\n\ndefineType(\"JSXClosingElement\", {\n visitor: [\"name\"],\n aliases: [\"Immutable\"],\n fields: {\n name: {\n validate: assertNodeType(\n \"JSXIdentifier\",\n \"JSXMemberExpression\",\n \"JSXNamespacedName\",\n ),\n },\n },\n});\n\ndefineType(\"JSXElement\", {\n builder: process.env.BABEL_8_BREAKING\n ? [\"openingElement\", \"closingElement\", \"children\"]\n : [\"openingElement\", \"closingElement\", \"children\", \"selfClosing\"],\n visitor: [\"openingElement\", \"children\", \"closingElement\"],\n aliases: [\"Immutable\", \"Expression\"],\n fields: {\n openingElement: {\n validate: assertNodeType(\"JSXOpeningElement\"),\n },\n closingElement: {\n optional: true,\n validate: assertNodeType(\"JSXClosingElement\"),\n },\n children: {\n validate: chain(\n assertValueType(\"array\"),\n assertEach(\n assertNodeType(\n \"JSXText\",\n \"JSXExpressionContainer\",\n \"JSXSpreadChild\",\n \"JSXElement\",\n \"JSXFragment\",\n ),\n ),\n ),\n },\n ...(process.env.BABEL_8_BREAKING\n ? {}\n : {\n selfClosing: {\n validate: assertValueType(\"boolean\"),\n optional: true,\n },\n }),\n },\n});\n\ndefineType(\"JSXEmptyExpression\", {});\n\ndefineType(\"JSXExpressionContainer\", {\n visitor: [\"expression\"],\n aliases: [\"Immutable\"],\n fields: {\n expression: {\n validate: assertNodeType(\"Expression\", \"JSXEmptyExpression\"),\n },\n },\n});\n\ndefineType(\"JSXSpreadChild\", {\n visitor: [\"expression\"],\n aliases: [\"Immutable\"],\n fields: {\n expression: {\n validate: assertNodeType(\"Expression\"),\n },\n },\n});\n\ndefineType(\"JSXIdentifier\", {\n builder: [\"name\"],\n fields: {\n name: {\n validate: assertValueType(\"string\"),\n },\n },\n});\n\ndefineType(\"JSXMemberExpression\", {\n visitor: [\"object\", \"property\"],\n fields: {\n object: {\n validate: assertNodeType(\"JSXMemberExpression\", \"JSXIdentifier\"),\n },\n property: {\n validate: assertNodeType(\"JSXIdentifier\"),\n },\n },\n});\n\ndefineType(\"JSXNamespacedName\", {\n visitor: [\"namespace\", \"name\"],\n fields: {\n namespace: {\n validate: assertNodeType(\"JSXIdentifier\"),\n },\n name: {\n validate: assertNodeType(\"JSXIdentifier\"),\n },\n },\n});\n\ndefineType(\"JSXOpeningElement\", {\n builder: [\"name\", \"attributes\", \"selfClosing\"],\n visitor: [\"name\", \"attributes\"],\n aliases: [\"Immutable\"],\n fields: {\n name: {\n validate: assertNodeType(\n \"JSXIdentifier\",\n \"JSXMemberExpression\",\n \"JSXNamespacedName\",\n ),\n },\n selfClosing: {\n default: false,\n },\n attributes: {\n validate: chain(\n assertValueType(\"array\"),\n assertEach(assertNodeType(\"JSXAttribute\", \"JSXSpreadAttribute\")),\n ),\n },\n typeParameters: {\n validate: assertNodeType(\n \"TypeParameterInstantiation\",\n \"TSTypeParameterInstantiation\",\n ),\n optional: true,\n },\n },\n});\n\ndefineType(\"JSXSpreadAttribute\", {\n visitor: [\"argument\"],\n fields: {\n argument: {\n validate: assertNodeType(\"Expression\"),\n },\n },\n});\n\ndefineType(\"JSXText\", {\n aliases: [\"Immutable\"],\n builder: [\"value\"],\n fields: {\n value: {\n validate: assertValueType(\"string\"),\n },\n },\n});\n\ndefineType(\"JSXFragment\", {\n builder: [\"openingFragment\", \"closingFragment\", \"children\"],\n visitor: [\"openingFragment\", \"children\", \"closingFragment\"],\n aliases: [\"Immutable\", \"Expression\"],\n fields: {\n openingFragment: {\n validate: assertNodeType(\"JSXOpeningFragment\"),\n },\n closingFragment: {\n validate: assertNodeType(\"JSXClosingFragment\"),\n },\n children: {\n validate: chain(\n assertValueType(\"array\"),\n assertEach(\n assertNodeType(\n \"JSXText\",\n \"JSXExpressionContainer\",\n \"JSXSpreadChild\",\n \"JSXElement\",\n \"JSXFragment\",\n ),\n ),\n ),\n },\n },\n});\n\ndefineType(\"JSXOpeningFragment\", {\n aliases: [\"Immutable\"],\n});\n\ndefineType(\"JSXClosingFragment\", {\n aliases: [\"Immutable\"],\n});\n","import { ALIAS_KEYS } from \"./utils.ts\";\n\nexport const PLACEHOLDERS = [\n \"Identifier\",\n \"StringLiteral\",\n \"Expression\",\n \"Statement\",\n \"Declaration\",\n \"BlockStatement\",\n \"ClassBody\",\n \"Pattern\",\n] as const;\n\nexport const PLACEHOLDERS_ALIAS: Record<string, string[]> = {\n Declaration: [\"Statement\"],\n Pattern: [\"PatternLike\", \"LVal\"],\n};\n\nfor (const type of PLACEHOLDERS) {\n const alias = ALIAS_KEYS[type];\n if (alias?.length) PLACEHOLDERS_ALIAS[type] = alias;\n}\n\nexport const PLACEHOLDERS_FLIPPED_ALIAS: Record<string, string[]> = {};\n\nObject.keys(PLACEHOLDERS_ALIAS).forEach(type => {\n PLACEHOLDERS_ALIAS[type].forEach(alias => {\n if (!Object.hasOwn(PLACEHOLDERS_FLIPPED_ALIAS, alias)) {\n PLACEHOLDERS_FLIPPED_ALIAS[alias] = [];\n }\n PLACEHOLDERS_FLIPPED_ALIAS[alias].push(type);\n });\n});\n","import {\n defineAliasedType,\n assertNodeType,\n assertOneOf,\n assertValueType,\n} from \"./utils.ts\";\nimport { PLACEHOLDERS } from \"./placeholders.ts\";\n\nconst defineType = defineAliasedType(\"Miscellaneous\");\n\nif (!process.env.BABEL_8_BREAKING) {\n defineType(\"Noop\", {\n visitor: [],\n });\n}\n\ndefineType(\"Placeholder\", {\n visitor: [],\n builder: [\"expectedNode\", \"name\"],\n // aliases: [], defined in placeholders.js\n fields: {\n name: {\n validate: assertNodeType(\"Identifier\"),\n },\n expectedNode: {\n validate: assertOneOf(...PLACEHOLDERS),\n },\n },\n});\n\ndefineType(\"V8IntrinsicIdentifier\", {\n builder: [\"name\"],\n fields: {\n name: {\n validate: assertValueType(\"string\"),\n },\n },\n});\n","import defineType, {\n assertEach,\n assertNodeType,\n assertValueType,\n chain,\n} from \"./utils.ts\";\n\ndefineType(\"ArgumentPlaceholder\", {});\n\ndefineType(\"BindExpression\", {\n visitor: [\"object\", \"callee\"],\n aliases: [\"Expression\"],\n fields: !process.env.BABEL_TYPES_8_BREAKING\n ? {\n object: {\n validate: Object.assign(() => {}, {\n oneOfNodeTypes: [\"Expression\"],\n }),\n },\n callee: {\n validate: Object.assign(() => {}, {\n oneOfNodeTypes: [\"Expression\"],\n }),\n },\n }\n : {\n object: {\n validate: assertNodeType(\"Expression\"),\n },\n callee: {\n validate: assertNodeType(\"Expression\"),\n },\n },\n});\n\ndefineType(\"ImportAttribute\", {\n visitor: [\"key\", \"value\"],\n fields: {\n key: {\n validate: assertNodeType(\"Identifier\", \"StringLiteral\"),\n },\n value: {\n validate: assertNodeType(\"StringLiteral\"),\n },\n },\n});\n\ndefineType(\"Decorator\", {\n visitor: [\"expression\"],\n fields: {\n expression: {\n validate: assertNodeType(\"Expression\"),\n },\n },\n});\n\ndefineType(\"DoExpression\", {\n visitor: [\"body\"],\n builder: [\"body\", \"async\"],\n aliases: [\"Expression\"],\n fields: {\n body: {\n validate: assertNodeType(\"BlockStatement\"),\n },\n async: {\n validate: assertValueType(\"boolean\"),\n default: false,\n },\n },\n});\n\ndefineType(\"ExportDefaultSpecifier\", {\n visitor: [\"exported\"],\n aliases: [\"ModuleSpecifier\"],\n fields: {\n exported: {\n validate: assertNodeType(\"Identifier\"),\n },\n },\n});\n\ndefineType(\"RecordExpression\", {\n visitor: [\"properties\"],\n aliases: [\"Expression\"],\n fields: {\n properties: {\n validate: chain(\n assertValueType(\"array\"),\n assertEach(assertNodeType(\"ObjectProperty\", \"SpreadElement\")),\n ),\n },\n },\n});\n\ndefineType(\"TupleExpression\", {\n fields: {\n elements: {\n validate: chain(\n assertValueType(\"array\"),\n assertEach(assertNodeType(\"Expression\", \"SpreadElement\")),\n ),\n default: [],\n },\n },\n visitor: [\"elements\"],\n aliases: [\"Expression\"],\n});\n\ndefineType(\"DecimalLiteral\", {\n builder: [\"value\"],\n fields: {\n value: {\n validate: assertValueType(\"string\"),\n },\n },\n aliases: [\"Expression\", \"Pureish\", \"Literal\", \"Immutable\"],\n});\n\n// https://github.com/tc39/proposal-js-module-blocks\ndefineType(\"ModuleExpression\", {\n visitor: [\"body\"],\n fields: {\n body: {\n validate: assertNodeType(\"Program\"),\n },\n },\n aliases: [\"Expression\"],\n});\n\n// https://github.com/tc39/proposal-pipeline-operator\n// https://github.com/js-choi/proposal-hack-pipes\ndefineType(\"TopicReference\", {\n aliases: [\"Expression\"],\n});\n\n// https://github.com/tc39/proposal-pipeline-operator\n// https://github.com/js-choi/proposal-smart-pipes\ndefineType(\"PipelineTopicExpression\", {\n builder: [\"expression\"],\n visitor: [\"expression\"],\n fields: {\n expression: {\n validate: assertNodeType(\"Expression\"),\n },\n },\n aliases: [\"Expression\"],\n});\n\ndefineType(\"PipelineBareFunction\", {\n builder: [\"callee\"],\n visitor: [\"callee\"],\n fields: {\n callee: {\n validate: assertNodeType(\"Expression\"),\n },\n },\n aliases: [\"Expression\"],\n});\n\ndefineType(\"PipelinePrimaryTopicReference\", {\n aliases: [\"Expression\"],\n});\n","import {\n defineAliasedType,\n arrayOfType,\n assertEach,\n assertNodeType,\n assertOneOf,\n assertValueType,\n chain,\n validate,\n validateArrayOfType,\n validateOptional,\n validateOptionalType,\n validateType,\n} from \"./utils.ts\";\nimport {\n functionDeclarationCommon,\n classMethodOrDeclareMethodCommon,\n} from \"./core.ts\";\nimport is from \"../validators/is.ts\";\n\nconst defineType = defineAliasedType(\"TypeScript\");\n\nconst bool = assertValueType(\"boolean\");\n\nconst tSFunctionTypeAnnotationCommon = () => ({\n returnType: {\n validate: process.env.BABEL_8_BREAKING\n ? assertNodeType(\"TSTypeAnnotation\")\n : // @ts-ignore(Babel 7 vs Babel 8) Babel 7 AST\n assertNodeType(\"TSTypeAnnotation\", \"Noop\"),\n optional: true,\n },\n typeParameters: {\n validate: process.env.BABEL_8_BREAKING\n ? assertNodeType(\"TSTypeParameterDeclaration\")\n : // @ts-ignore(Babel 7 vs Babel 8) Babel 7 AST\n assertNodeType(\"TSTypeParameterDeclaration\", \"Noop\"),\n optional: true,\n },\n});\n\ndefineType(\"TSParameterProperty\", {\n aliases: [\"LVal\"], // TODO: This isn't usable in general as an LVal. Should have a \"Parameter\" alias.\n visitor: [\"parameter\"],\n fields: {\n accessibility: {\n validate: assertOneOf(\"public\", \"private\", \"protected\"),\n optional: true,\n },\n readonly: {\n validate: assertValueType(\"boolean\"),\n optional: true,\n },\n parameter: {\n validate: assertNodeType(\"Identifier\", \"AssignmentPattern\"),\n },\n override: {\n validate: assertValueType(\"boolean\"),\n optional: true,\n },\n decorators: {\n validate: chain(\n assertValueType(\"array\"),\n assertEach(assertNodeType(\"Decorator\")),\n ),\n optional: true,\n },\n },\n});\n\ndefineType(\"TSDeclareFunction\", {\n aliases: [\"Statement\", \"Declaration\"],\n visitor: [\"id\", \"typeParameters\", \"params\", \"returnType\"],\n fields: {\n ...functionDeclarationCommon(),\n ...tSFunctionTypeAnnotationCommon(),\n },\n});\n\ndefineType(\"TSDeclareMethod\", {\n visitor: [\"decorators\", \"key\", \"typeParameters\", \"params\", \"returnType\"],\n fields: {\n ...classMethodOrDeclareMethodCommon(),\n ...tSFunctionTypeAnnotationCommon(),\n },\n});\n\ndefineType(\"TSQualifiedName\", {\n aliases: [\"TSEntityName\"],\n visitor: [\"left\", \"right\"],\n fields: {\n left: validateType(\"TSEntityName\"),\n right: validateType(\"Identifier\"),\n },\n});\n\nconst signatureDeclarationCommon = () => ({\n typeParameters: validateOptionalType(\"TSTypeParameterDeclaration\"),\n [process.env.BABEL_8_BREAKING ? \"params\" : \"parameters\"]: validateArrayOfType(\n [\"ArrayPattern\", \"Identifier\", \"ObjectPattern\", \"RestElement\"],\n ),\n [process.env.BABEL_8_BREAKING ? \"returnType\" : \"typeAnnotation\"]:\n validateOptionalType(\"TSTypeAnnotation\"),\n});\n\nconst callConstructSignatureDeclaration = {\n aliases: [\"TSTypeElement\"],\n visitor: [\n \"typeParameters\",\n process.env.BABEL_8_BREAKING ? \"params\" : \"parameters\",\n process.env.BABEL_8_BREAKING ? \"returnType\" : \"typeAnnotation\",\n ],\n fields: signatureDeclarationCommon(),\n};\n\ndefineType(\"TSCallSignatureDeclaration\", callConstructSignatureDeclaration);\ndefineType(\n \"TSConstructSignatureDeclaration\",\n callConstructSignatureDeclaration,\n);\n\nconst namedTypeElementCommon = () => ({\n key: validateType(\"Expression\"),\n computed: { default: false },\n optional: validateOptional(bool),\n});\n\ndefineType(\"TSPropertySignature\", {\n aliases: [\"TSTypeElement\"],\n visitor: [\"key\", \"typeAnnotation\"],\n fields: {\n ...namedTypeElementCommon(),\n readonly: validateOptional(bool),\n typeAnnotation: validateOptionalType(\"TSTypeAnnotation\"),\n kind: {\n validate: assertOneOf(\"get\", \"set\"),\n },\n },\n});\n\ndefineType(\"TSMethodSignature\", {\n aliases: [\"TSTypeElement\"],\n visitor: [\n \"key\",\n \"typeParameters\",\n process.env.BABEL_8_BREAKING ? \"params\" : \"parameters\",\n process.env.BABEL_8_BREAKING ? \"returnType\" : \"typeAnnotation\",\n ],\n fields: {\n ...signatureDeclarationCommon(),\n ...namedTypeElementCommon(),\n kind: {\n validate: assertOneOf(\"method\", \"get\", \"set\"),\n },\n },\n});\n\ndefineType(\"TSIndexSignature\", {\n aliases: [\"TSTypeElement\"],\n visitor: [\"parameters\", \"typeAnnotation\"],\n fields: {\n readonly: validateOptional(bool),\n static: validateOptional(bool),\n parameters: validateArrayOfType(\"Identifier\"), // Length must be 1\n typeAnnotation: validateOptionalType(\"TSTypeAnnotation\"),\n },\n});\n\nconst tsKeywordTypes = [\n \"TSAnyKeyword\",\n \"TSBooleanKeyword\",\n \"TSBigIntKeyword\",\n \"TSIntrinsicKeyword\",\n \"TSNeverKeyword\",\n \"TSNullKeyword\",\n \"TSNumberKeyword\",\n \"TSObjectKeyword\",\n \"TSStringKeyword\",\n \"TSSymbolKeyword\",\n \"TSUndefinedKeyword\",\n \"TSUnknownKeyword\",\n \"TSVoidKeyword\",\n] as const;\n\nfor (const type of tsKeywordTypes) {\n defineType(type, {\n aliases: [\"TSType\", \"TSBaseType\"],\n visitor: [],\n fields: {},\n });\n}\n\ndefineType(\"TSThisType\", {\n aliases: [\"TSType\", \"TSBaseType\"],\n visitor: [],\n fields: {},\n});\n\nconst fnOrCtrBase = {\n aliases: [\"TSType\"],\n visitor: [\n \"typeParameters\",\n process.env.BABEL_8_BREAKING ? \"params\" : \"parameters\",\n process.env.BABEL_8_BREAKING ? \"returnType\" : \"typeAnnotation\",\n ],\n};\n\ndefineType(\"TSFunctionType\", {\n ...fnOrCtrBase,\n fields: signatureDeclarationCommon(),\n});\ndefineType(\"TSConstructorType\", {\n ...fnOrCtrBase,\n fields: {\n ...signatureDeclarationCommon(),\n abstract: validateOptional(bool),\n },\n});\n\ndefineType(\"TSTypeReference\", {\n aliases: [\"TSType\"],\n visitor: [\"typeName\", \"typeParameters\"],\n fields: {\n typeName: validateType(\"TSEntityName\"),\n typeParameters: validateOptionalType(\"TSTypeParameterInstantiation\"),\n },\n});\n\ndefineType(\"TSTypePredicate\", {\n aliases: [\"TSType\"],\n visitor: [\"parameterName\", \"typeAnnotation\"],\n builder: [\"parameterName\", \"typeAnnotation\", \"asserts\"],\n fields: {\n parameterName: validateType([\"Identifier\", \"TSThisType\"]),\n typeAnnotation: validateOptionalType(\"TSTypeAnnotation\"),\n asserts: validateOptional(bool),\n },\n});\n\ndefineType(\"TSTypeQuery\", {\n aliases: [\"TSType\"],\n visitor: [\"exprName\", \"typeParameters\"],\n fields: {\n exprName: validateType([\"TSEntityName\", \"TSImportType\"]),\n typeParameters: validateOptionalType(\"TSTypeParameterInstantiation\"),\n },\n});\n\ndefineType(\"TSTypeLiteral\", {\n aliases: [\"TSType\"],\n visitor: [\"members\"],\n fields: {\n members: validateArrayOfType(\"TSTypeElement\"),\n },\n});\n\ndefineType(\"TSArrayType\", {\n aliases: [\"TSType\"],\n visitor: [\"elementType\"],\n fields: {\n elementType: validateType(\"TSType\"),\n },\n});\n\ndefineType(\"TSTupleType\", {\n aliases: [\"TSType\"],\n visitor: [\"elementTypes\"],\n fields: {\n elementTypes: validateArrayOfType([\"TSType\", \"TSNamedTupleMember\"]),\n },\n});\n\ndefineType(\"TSOptionalType\", {\n aliases: [\"TSType\"],\n visitor: [\"typeAnnotation\"],\n fields: {\n typeAnnotation: validateType(\"TSType\"),\n },\n});\n\ndefineType(\"TSRestType\", {\n aliases: [\"TSType\"],\n visitor: [\"typeAnnotation\"],\n fields: {\n typeAnnotation: validateType(\"TSType\"),\n },\n});\n\ndefineType(\"TSNamedTupleMember\", {\n visitor: [\"label\", \"elementType\"],\n builder: [\"label\", \"elementType\", \"optional\"],\n fields: {\n label: validateType(\"Identifier\"),\n optional: {\n validate: bool,\n default: false,\n },\n elementType: validateType(\"TSType\"),\n },\n});\n\nconst unionOrIntersection = {\n aliases: [\"TSType\"],\n visitor: [\"types\"],\n fields: {\n types: validateArrayOfType(\"TSType\"),\n },\n};\n\ndefineType(\"TSUnionType\", unionOrIntersection);\ndefineType(\"TSIntersectionType\", unionOrIntersection);\n\ndefineType(\"TSConditionalType\", {\n aliases: [\"TSType\"],\n visitor: [\"checkType\", \"extendsType\", \"trueType\", \"falseType\"],\n fields: {\n checkType: validateType(\"TSType\"),\n extendsType: validateType(\"TSType\"),\n trueType: validateType(\"TSType\"),\n falseType: validateType(\"TSType\"),\n },\n});\n\ndefineType(\"TSInferType\", {\n aliases: [\"TSType\"],\n visitor: [\"typeParameter\"],\n fields: {\n typeParameter: validateType(\"TSTypeParameter\"),\n },\n});\n\ndefineType(\"TSParenthesizedType\", {\n aliases: [\"TSType\"],\n visitor: [\"typeAnnotation\"],\n fields: {\n typeAnnotation: validateType(\"TSType\"),\n },\n});\n\ndefineType(\"TSTypeOperator\", {\n aliases: [\"TSType\"],\n visitor: [\"typeAnnotation\"],\n fields: {\n operator: validate(assertValueType(\"string\")),\n typeAnnotation: validateType(\"TSType\"),\n },\n});\n\ndefineType(\"TSIndexedAccessType\", {\n aliases: [\"TSType\"],\n visitor: [\"objectType\", \"indexType\"],\n fields: {\n objectType: validateType(\"TSType\"),\n indexType: validateType(\"TSType\"),\n },\n});\n\ndefineType(\"TSMappedType\", {\n aliases: [\"TSType\"],\n visitor: [\"typeParameter\", \"typeAnnotation\", \"nameType\"],\n fields: {\n readonly: validateOptional(assertOneOf(true, false, \"+\", \"-\")),\n typeParameter: validateType(\"TSTypeParameter\"),\n optional: validateOptional(assertOneOf(true, false, \"+\", \"-\")),\n typeAnnotation: validateOptionalType(\"TSType\"),\n nameType: validateOptionalType(\"TSType\"),\n },\n});\n\ndefineType(\"TSLiteralType\", {\n aliases: [\"TSType\", \"TSBaseType\"],\n visitor: [\"literal\"],\n fields: {\n literal: {\n validate: (function () {\n const unaryExpression = assertNodeType(\n \"NumericLiteral\",\n \"BigIntLiteral\",\n );\n const unaryOperator = assertOneOf(\"-\");\n\n const literal = assertNodeType(\n \"NumericLiteral\",\n \"StringLiteral\",\n \"BooleanLiteral\",\n \"BigIntLiteral\",\n \"TemplateLiteral\",\n );\n function validator(parent: any, key: string, node: any) {\n // type A = -1 | 1;\n if (is(\"UnaryExpression\", node)) {\n // check operator first\n unaryOperator(node, \"operator\", node.operator);\n unaryExpression(node, \"argument\", node.argument);\n } else {\n // type A = 'foo' | 'bar' | false | 1;\n literal(parent, key, node);\n }\n }\n\n validator.oneOfNodeTypes = [\n \"NumericLiteral\",\n \"StringLiteral\",\n \"BooleanLiteral\",\n \"BigIntLiteral\",\n \"TemplateLiteral\",\n \"UnaryExpression\",\n ];\n\n return validator;\n })(),\n },\n },\n});\n\ndefineType(\"TSExpressionWithTypeArguments\", {\n aliases: [\"TSType\"],\n visitor: [\"expression\", \"typeParameters\"],\n fields: {\n expression: validateType(\"TSEntityName\"),\n typeParameters: validateOptionalType(\"TSTypeParameterInstantiation\"),\n },\n});\n\ndefineType(\"TSInterfaceDeclaration\", {\n // \"Statement\" alias prevents a semicolon from appearing after it in an export declaration.\n aliases: [\"Statement\", \"Declaration\"],\n visitor: [\"id\", \"typeParameters\", \"extends\", \"body\"],\n fields: {\n declare: validateOptional(bool),\n id: validateType(\"Identifier\"),\n typeParameters: validateOptionalType(\"TSTypeParameterDeclaration\"),\n extends: validateOptional(arrayOfType(\"TSExpressionWithTypeArguments\")),\n body: validateType(\"TSInterfaceBody\"),\n },\n});\n\ndefineType(\"TSInterfaceBody\", {\n visitor: [\"body\"],\n fields: {\n body: validateArrayOfType(\"TSTypeElement\"),\n },\n});\n\ndefineType(\"TSTypeAliasDeclaration\", {\n aliases: [\"Statement\", \"Declaration\"],\n visitor: [\"id\", \"typeParameters\", \"typeAnnotation\"],\n fields: {\n declare: validateOptional(bool),\n id: validateType(\"Identifier\"),\n typeParameters: validateOptionalType(\"TSTypeParameterDeclaration\"),\n typeAnnotation: validateType(\"TSType\"),\n },\n});\n\ndefineType(\"TSInstantiationExpression\", {\n aliases: [\"Expression\"],\n visitor: [\"expression\", \"typeParameters\"],\n fields: {\n expression: validateType(\"Expression\"),\n typeParameters: validateOptionalType(\"TSTypeParameterInstantiation\"),\n },\n});\n\nconst TSTypeExpression = {\n aliases: [\"Expression\", \"LVal\", \"PatternLike\"],\n visitor: [\"expression\", \"typeAnnotation\"],\n fields: {\n expression: validateType(\"Expression\"),\n typeAnnotation: validateType(\"TSType\"),\n },\n};\n\ndefineType(\"TSAsExpression\", TSTypeExpression);\ndefineType(\"TSSatisfiesExpression\", TSTypeExpression);\n\ndefineType(\"TSTypeAssertion\", {\n aliases: [\"Expression\", \"LVal\", \"PatternLike\"],\n visitor: [\"typeAnnotation\", \"expression\"],\n fields: {\n typeAnnotation: validateType(\"TSType\"),\n expression: validateType(\"Expression\"),\n },\n});\n\ndefineType(\"TSEnumDeclaration\", {\n // \"Statement\" alias prevents a semicolon from appearing after it in an export declaration.\n aliases: [\"Statement\", \"Declaration\"],\n visitor: [\"id\", \"members\"],\n fields: {\n declare: validateOptional(bool),\n const: validateOptional(bool),\n id: validateType(\"Identifier\"),\n members: validateArrayOfType(\"TSEnumMember\"),\n initializer: validateOptionalType(\"Expression\"),\n },\n});\n\ndefineType(\"TSEnumMember\", {\n visitor: [\"id\", \"initializer\"],\n fields: {\n id: validateType([\"Identifier\", \"StringLiteral\"]),\n initializer: validateOptionalType(\"Expression\"),\n },\n});\n\ndefineType(\"TSModuleDeclaration\", {\n aliases: [\"Statement\", \"Declaration\"],\n visitor: [\"id\", \"body\"],\n fields: {\n declare: validateOptional(bool),\n global: validateOptional(bool),\n id: validateType([\"Identifier\", \"StringLiteral\"]),\n body: validateType([\"TSModuleBlock\", \"TSModuleDeclaration\"]),\n },\n});\n\ndefineType(\"TSModuleBlock\", {\n aliases: [\"Scopable\", \"Block\", \"BlockParent\", \"FunctionParent\"],\n visitor: [\"body\"],\n fields: {\n body: validateArrayOfType(\"Statement\"),\n },\n});\n\ndefineType(\"TSImportType\", {\n aliases: [\"TSType\"],\n visitor: [\"argument\", \"qualifier\", \"typeParameters\"],\n fields: {\n argument: validateType(\"StringLiteral\"),\n qualifier: validateOptionalType(\"TSEntityName\"),\n typeParameters: validateOptionalType(\"TSTypeParameterInstantiation\"),\n options: {\n validate: assertNodeType(\"Expression\"),\n optional: true,\n },\n },\n});\n\ndefineType(\"TSImportEqualsDeclaration\", {\n aliases: [\"Statement\"],\n visitor: [\"id\", \"moduleReference\"],\n fields: {\n isExport: validate(bool),\n id: validateType(\"Identifier\"),\n moduleReference: validateType([\n \"TSEntityName\",\n \"TSExternalModuleReference\",\n ]),\n importKind: {\n validate: assertOneOf(\"type\", \"value\"),\n optional: true,\n },\n },\n});\n\ndefineType(\"TSExternalModuleReference\", {\n visitor: [\"expression\"],\n fields: {\n expression: validateType(\"StringLiteral\"),\n },\n});\n\ndefineType(\"TSNonNullExpression\", {\n aliases: [\"Expression\", \"LVal\", \"PatternLike\"],\n visitor: [\"expression\"],\n fields: {\n expression: validateType(\"Expression\"),\n },\n});\n\ndefineType(\"TSExportAssignment\", {\n aliases: [\"Statement\"],\n visitor: [\"expression\"],\n fields: {\n expression: validateType(\"Expression\"),\n },\n});\n\ndefineType(\"TSNamespaceExportDeclaration\", {\n aliases: [\"Statement\"],\n visitor: [\"id\"],\n fields: {\n id: validateType(\"Identifier\"),\n },\n});\n\ndefineType(\"TSTypeAnnotation\", {\n visitor: [\"typeAnnotation\"],\n fields: {\n typeAnnotation: {\n validate: assertNodeType(\"TSType\"),\n },\n },\n});\n\ndefineType(\"TSTypeParameterInstantiation\", {\n visitor: [\"params\"],\n fields: {\n params: {\n validate: chain(\n assertValueType(\"array\"),\n assertEach(assertNodeType(\"TSType\")),\n ),\n },\n },\n});\n\ndefineType(\"TSTypeParameterDeclaration\", {\n visitor: [\"params\"],\n fields: {\n params: {\n validate: chain(\n assertValueType(\"array\"),\n assertEach(assertNodeType(\"TSTypeParameter\")),\n ),\n },\n },\n});\n\ndefineType(\"TSTypeParameter\", {\n builder: [\"constraint\", \"default\", \"name\"],\n visitor: [\"constraint\", \"default\"],\n fields: {\n name: {\n validate: !process.env.BABEL_8_BREAKING\n ? assertValueType(\"string\")\n : assertNodeType(\"Identifier\"),\n },\n in: {\n validate: assertValueType(\"boolean\"),\n optional: true,\n },\n out: {\n validate: assertValueType(\"boolean\"),\n optional: true,\n },\n const: {\n validate: assertValueType(\"boolean\"),\n optional: true,\n },\n constraint: {\n validate: assertNodeType(\"TSType\"),\n optional: true,\n },\n default: {\n validate: assertNodeType(\"TSType\"),\n optional: true,\n },\n },\n});\n","export const DEPRECATED_ALIASES = {\n ModuleDeclaration: \"ImportOrExportDeclaration\",\n};\n","import toFastProperties from \"to-fast-properties\";\nimport \"./core.ts\";\nimport \"./flow.ts\";\nimport \"./jsx.ts\";\nimport \"./misc.ts\";\nimport \"./experimental.ts\";\nimport \"./typescript.ts\";\nimport {\n VISITOR_KEYS,\n ALIAS_KEYS,\n FLIPPED_ALIAS_KEYS,\n NODE_FIELDS,\n BUILDER_KEYS,\n DEPRECATED_KEYS,\n NODE_PARENT_VALIDATIONS,\n} from \"./utils.ts\";\nimport {\n PLACEHOLDERS,\n PLACEHOLDERS_ALIAS,\n PLACEHOLDERS_FLIPPED_ALIAS,\n} from \"./placeholders.ts\";\nimport { DEPRECATED_ALIASES } from \"./deprecated-aliases.ts\";\n\n(\n Object.keys(DEPRECATED_ALIASES) as (keyof typeof DEPRECATED_ALIASES)[]\n).forEach(deprecatedAlias => {\n FLIPPED_ALIAS_KEYS[deprecatedAlias] =\n FLIPPED_ALIAS_KEYS[DEPRECATED_ALIASES[deprecatedAlias]];\n});\n\n// We do this here, because at this point the visitor keys should be ready and setup\ntoFastProperties(VISITOR_KEYS);\ntoFastProperties(ALIAS_KEYS);\ntoFastProperties(FLIPPED_ALIAS_KEYS);\ntoFastProperties(NODE_FIELDS);\ntoFastProperties(BUILDER_KEYS);\ntoFastProperties(DEPRECATED_KEYS);\n\ntoFastProperties(PLACEHOLDERS_ALIAS);\ntoFastProperties(PLACEHOLDERS_FLIPPED_ALIAS);\n\nconst TYPES: Array<string> = [].concat(\n Object.keys(VISITOR_KEYS),\n Object.keys(FLIPPED_ALIAS_KEYS),\n Object.keys(DEPRECATED_KEYS),\n);\n\nexport {\n VISITOR_KEYS,\n ALIAS_KEYS,\n FLIPPED_ALIAS_KEYS,\n NODE_FIELDS,\n BUILDER_KEYS,\n DEPRECATED_ALIASES,\n DEPRECATED_KEYS,\n NODE_PARENT_VALIDATIONS,\n PLACEHOLDERS,\n PLACEHOLDERS_ALIAS,\n PLACEHOLDERS_FLIPPED_ALIAS,\n TYPES,\n};\n\nexport type { FieldOptions } from \"./utils.ts\";\n","import {\n NODE_FIELDS,\n NODE_PARENT_VALIDATIONS,\n type FieldOptions,\n} from \"../definitions/index.ts\";\nimport type * as t from \"../index.ts\";\n\nexport default function validate(\n node: t.Node | undefined | null,\n key: string,\n val: any,\n): void {\n if (!node) return;\n\n const fields = NODE_FIELDS[node.type];\n if (!fields) return;\n\n const field = fields[key];\n validateField(node, key, val, field);\n validateChild(node, key, val);\n}\n\nexport function validateField(\n node: t.Node | undefined | null,\n key: string,\n val: any,\n field: FieldOptions | undefined | null,\n): void {\n if (!field?.validate) return;\n if (field.optional && val == null) return;\n\n field.validate(node, key, val);\n}\n\nexport function validateChild(\n node: t.Node | undefined | null,\n key: string,\n val?: t.Node | undefined | null,\n) {\n if (val == null) return;\n const validate = NODE_PARENT_VALIDATIONS[val.type];\n if (!validate) return;\n validate(node, key, val);\n}\n","import validate from \"../validators/validate.ts\";\nimport type * as t from \"../index.ts\";\nimport { BUILDER_KEYS } from \"../index.ts\";\n\nexport default function validateNode<N extends t.Node>(node: N) {\n // todo: because keys not in BUILDER_KEYS are not validated - this actually allows invalid nodes in some cases\n const keys = BUILDER_KEYS[node.type] as (keyof N & string)[];\n for (const key of keys) {\n validate(node, key, node[key]);\n }\n return node;\n}\n","/*\n * This file is auto-generated! Do not modify it directly.\n * To re-generate run 'make build'\n */\nimport validateNode from \"../validateNode.ts\";\nimport type * as t from \"../../index.ts\";\nimport deprecationWarning from \"../../utils/deprecationWarning.ts\";\nexport function arrayExpression(\n elements: Array<null | t.Expression | t.SpreadElement> = [],\n): t.ArrayExpression {\n return validateNode<t.ArrayExpression>({\n type: \"ArrayExpression\",\n elements,\n });\n}\nexport function assignmentExpression(\n operator: string,\n left: t.LVal | t.OptionalMemberExpression,\n right: t.Expression,\n): t.AssignmentExpression {\n return validateNode<t.AssignmentExpression>({\n type: \"AssignmentExpression\",\n operator,\n left,\n right,\n });\n}\nexport function binaryExpression(\n operator:\n | \"+\"\n | \"-\"\n | \"/\"\n | \"%\"\n | \"*\"\n | \"**\"\n | \"&\"\n | \"|\"\n | \">>\"\n | \">>>\"\n | \"<<\"\n | \"^\"\n | \"==\"\n | \"===\"\n | \"!=\"\n | \"!==\"\n | \"in\"\n | \"instanceof\"\n | \">\"\n | \"<\"\n | \">=\"\n | \"<=\"\n | \"|>\",\n left: t.Expression | t.PrivateName,\n right: t.Expression,\n): t.BinaryExpression {\n return validateNode<t.BinaryExpression>({\n type: \"BinaryExpression\",\n operator,\n left,\n right,\n });\n}\nexport function interpreterDirective(value: string): t.InterpreterDirective {\n return validateNode<t.InterpreterDirective>({\n type: \"InterpreterDirective\",\n value,\n });\n}\nexport function directive(value: t.DirectiveLiteral): t.Directive {\n return validateNode<t.Directive>({\n type: \"Directive\",\n value,\n });\n}\nexport function directiveLiteral(value: string): t.DirectiveLiteral {\n return validateNode<t.DirectiveLiteral>({\n type: \"DirectiveLiteral\",\n value,\n });\n}\nexport function blockStatement(\n body: Array<t.Statement>,\n directives: Array<t.Directive> = [],\n): t.BlockStatement {\n return validateNode<t.BlockStatement>({\n type: \"BlockStatement\",\n body,\n directives,\n });\n}\nexport function breakStatement(\n label: t.Identifier | null = null,\n): t.BreakStatement {\n return validateNode<t.BreakStatement>({\n type: \"BreakStatement\",\n label,\n });\n}\nexport function callExpression(\n callee: t.Expression | t.Super | t.V8IntrinsicIdentifier,\n _arguments: Array<\n t.Expression | t.SpreadElement | t.JSXNamespacedName | t.ArgumentPlaceholder\n >,\n): t.CallExpression {\n return validateNode<t.CallExpression>({\n type: \"CallExpression\",\n callee,\n arguments: _arguments,\n });\n}\nexport function catchClause(\n param:\n | t.Identifier\n | t.ArrayPattern\n | t.ObjectPattern\n | null\n | undefined = null,\n body: t.BlockStatement,\n): t.CatchClause {\n return validateNode<t.CatchClause>({\n type: \"CatchClause\",\n param,\n body,\n });\n}\nexport function conditionalExpression(\n test: t.Expression,\n consequent: t.Expression,\n alternate: t.Expression,\n): t.ConditionalExpression {\n return validateNode<t.ConditionalExpression>({\n type: \"ConditionalExpression\",\n test,\n consequent,\n alternate,\n });\n}\nexport function continueStatement(\n label: t.Identifier | null = null,\n): t.ContinueStatement {\n return validateNode<t.ContinueStatement>({\n type: \"ContinueStatement\",\n label,\n });\n}\nexport function debuggerStatement(): t.DebuggerStatement {\n return {\n type: \"DebuggerStatement\",\n };\n}\nexport function doWhileStatement(\n test: t.Expression,\n body: t.Statement,\n): t.DoWhileStatement {\n return validateNode<t.DoWhileStatement>({\n type: \"DoWhileStatement\",\n test,\n body,\n });\n}\nexport function emptyStatement(): t.EmptyStatement {\n return {\n type: \"EmptyStatement\",\n };\n}\nexport function expressionStatement(\n expression: t.Expression,\n): t.ExpressionStatement {\n return validateNode<t.ExpressionStatement>({\n type: \"ExpressionStatement\",\n expression,\n });\n}\nexport function file(\n program: t.Program,\n comments: Array<t.CommentBlock | t.CommentLine> | null = null,\n tokens: Array<any> | null = null,\n): t.File {\n return validateNode<t.File>({\n type: \"File\",\n program,\n comments,\n tokens,\n });\n}\nexport function forInStatement(\n left: t.VariableDeclaration | t.LVal,\n right: t.Expression,\n body: t.Statement,\n): t.ForInStatement {\n return validateNode<t.ForInStatement>({\n type: \"ForInStatement\",\n left,\n right,\n body,\n });\n}\nexport function forStatement(\n init: t.VariableDeclaration | t.Expression | null | undefined = null,\n test: t.Expression | null | undefined = null,\n update: t.Expression | null | undefined = null,\n body: t.Statement,\n): t.ForStatement {\n return validateNode<t.ForStatement>({\n type: \"ForStatement\",\n init,\n test,\n update,\n body,\n });\n}\nexport function functionDeclaration(\n id: t.Identifier | null | undefined = null,\n params: Array<t.Identifier | t.Pattern | t.RestElement>,\n body: t.BlockStatement,\n generator: boolean = false,\n async: boolean = false,\n): t.FunctionDeclaration {\n return validateNode<t.FunctionDeclaration>({\n type: \"FunctionDeclaration\",\n id,\n params,\n body,\n generator,\n async,\n });\n}\nexport function functionExpression(\n id: t.Identifier | null | undefined = null,\n params: Array<t.Identifier | t.Pattern | t.RestElement>,\n body: t.BlockStatement,\n generator: boolean = false,\n async: boolean = false,\n): t.FunctionExpression {\n return validateNode<t.FunctionExpression>({\n type: \"FunctionExpression\",\n id,\n params,\n body,\n generator,\n async,\n });\n}\nexport function identifier(name: string): t.Identifier {\n return validateNode<t.Identifier>({\n type: \"Identifier\",\n name,\n });\n}\nexport function ifStatement(\n test: t.Expression,\n consequent: t.Statement,\n alternate: t.Statement | null = null,\n): t.IfStatement {\n return validateNode<t.IfStatement>({\n type: \"IfStatement\",\n test,\n consequent,\n alternate,\n });\n}\nexport function labeledStatement(\n label: t.Identifier,\n body: t.Statement,\n): t.LabeledStatement {\n return validateNode<t.LabeledStatement>({\n type: \"LabeledStatement\",\n label,\n body,\n });\n}\nexport function stringLiteral(value: string): t.StringLiteral {\n return validateNode<t.StringLiteral>({\n type: \"StringLiteral\",\n value,\n });\n}\nexport function numericLiteral(value: number): t.NumericLiteral {\n return validateNode<t.NumericLiteral>({\n type: \"NumericLiteral\",\n value,\n });\n}\nexport function nullLiteral(): t.NullLiteral {\n return {\n type: \"NullLiteral\",\n };\n}\nexport function booleanLiteral(value: boolean): t.BooleanLiteral {\n return validateNode<t.BooleanLiteral>({\n type: \"BooleanLiteral\",\n value,\n });\n}\nexport function regExpLiteral(\n pattern: string,\n flags: string = \"\",\n): t.RegExpLiteral {\n return validateNode<t.RegExpLiteral>({\n type: \"RegExpLiteral\",\n pattern,\n flags,\n });\n}\nexport function logicalExpression(\n operator: \"||\" | \"&&\" | \"??\",\n left: t.Expression,\n right: t.Expression,\n): t.LogicalExpression {\n return validateNode<t.LogicalExpression>({\n type: \"LogicalExpression\",\n operator,\n left,\n right,\n });\n}\nexport function memberExpression(\n object: t.Expression | t.Super,\n property: t.Expression | t.Identifier | t.PrivateName,\n computed: boolean = false,\n optional: true | false | null = null,\n): t.MemberExpression {\n return validateNode<t.MemberExpression>({\n type: \"MemberExpression\",\n object,\n property,\n computed,\n optional,\n });\n}\nexport function newExpression(\n callee: t.Expression | t.Super | t.V8IntrinsicIdentifier,\n _arguments: Array<\n t.Expression | t.SpreadElement | t.JSXNamespacedName | t.ArgumentPlaceholder\n >,\n): t.NewExpression {\n return validateNode<t.NewExpression>({\n type: \"NewExpression\",\n callee,\n arguments: _arguments,\n });\n}\nexport function program(\n body: Array<t.Statement>,\n directives: Array<t.Directive> = [],\n sourceType: \"script\" | \"module\" = \"script\",\n interpreter: t.InterpreterDirective | null = null,\n): t.Program {\n return validateNode<t.Program>({\n type: \"Program\",\n body,\n directives,\n sourceType,\n interpreter,\n });\n}\nexport function objectExpression(\n properties: Array<t.ObjectMethod | t.ObjectProperty | t.SpreadElement>,\n): t.ObjectExpression {\n return validateNode<t.ObjectExpression>({\n type: \"ObjectExpression\",\n properties,\n });\n}\nexport function objectMethod(\n kind: \"method\" | \"get\" | \"set\" | undefined = \"method\",\n key:\n | t.Expression\n | t.Identifier\n | t.StringLiteral\n | t.NumericLiteral\n | t.BigIntLiteral,\n params: Array<t.Identifier | t.Pattern | t.RestElement>,\n body: t.BlockStatement,\n computed: boolean = false,\n generator: boolean = false,\n async: boolean = false,\n): t.ObjectMethod {\n return validateNode<t.ObjectMethod>({\n type: \"ObjectMethod\",\n kind,\n key,\n params,\n body,\n computed,\n generator,\n async,\n });\n}\nexport function objectProperty(\n key:\n | t.Expression\n | t.Identifier\n | t.StringLiteral\n | t.NumericLiteral\n | t.BigIntLiteral\n | t.DecimalLiteral\n | t.PrivateName,\n value: t.Expression | t.PatternLike,\n computed: boolean = false,\n shorthand: boolean = false,\n decorators: Array<t.Decorator> | null = null,\n): t.ObjectProperty {\n return validateNode<t.ObjectProperty>({\n type: \"ObjectProperty\",\n key,\n value,\n computed,\n shorthand,\n decorators,\n });\n}\nexport function restElement(argument: t.LVal): t.RestElement {\n return validateNode<t.RestElement>({\n type: \"RestElement\",\n argument,\n });\n}\nexport function returnStatement(\n argument: t.Expression | null = null,\n): t.ReturnStatement {\n return validateNode<t.ReturnStatement>({\n type: \"ReturnStatement\",\n argument,\n });\n}\nexport function sequenceExpression(\n expressions: Array<t.Expression>,\n): t.SequenceExpression {\n return validateNode<t.SequenceExpression>({\n type: \"SequenceExpression\",\n expressions,\n });\n}\nexport function parenthesizedExpression(\n expression: t.Expression,\n): t.ParenthesizedExpression {\n return validateNode<t.ParenthesizedExpression>({\n type: \"ParenthesizedExpression\",\n expression,\n });\n}\nexport function switchCase(\n test: t.Expression | null | undefined = null,\n consequent: Array<t.Statement>,\n): t.SwitchCase {\n return validateNode<t.SwitchCase>({\n type: \"SwitchCase\",\n test,\n consequent,\n });\n}\nexport function switchStatement(\n discriminant: t.Expression,\n cases: Array<t.SwitchCase>,\n): t.SwitchStatement {\n return validateNode<t.SwitchStatement>({\n type: \"SwitchStatement\",\n discriminant,\n cases,\n });\n}\nexport function thisExpression(): t.ThisExpression {\n return {\n type: \"ThisExpression\",\n };\n}\nexport function throwStatement(argument: t.Expression): t.ThrowStatement {\n return validateNode<t.ThrowStatement>({\n type: \"ThrowStatement\",\n argument,\n });\n}\nexport function tryStatement(\n block: t.BlockStatement,\n handler: t.CatchClause | null = null,\n finalizer: t.BlockStatement | null = null,\n): t.TryStatement {\n return validateNode<t.TryStatement>({\n type: \"TryStatement\",\n block,\n handler,\n finalizer,\n });\n}\nexport function unaryExpression(\n operator: \"void\" | \"throw\" | \"delete\" | \"!\" | \"+\" | \"-\" | \"~\" | \"typeof\",\n argument: t.Expression,\n prefix: boolean = true,\n): t.UnaryExpression {\n return validateNode<t.UnaryExpression>({\n type: \"UnaryExpression\",\n operator,\n argument,\n prefix,\n });\n}\nexport function updateExpression(\n operator: \"++\" | \"--\",\n argument: t.Expression,\n prefix: boolean = false,\n): t.UpdateExpression {\n return validateNode<t.UpdateExpression>({\n type: \"UpdateExpression\",\n operator,\n argument,\n prefix,\n });\n}\nexport function variableDeclaration(\n kind: \"var\" | \"let\" | \"const\" | \"using\" | \"await using\",\n declarations: Array<t.VariableDeclarator>,\n): t.VariableDeclaration {\n return validateNode<t.VariableDeclaration>({\n type: \"VariableDeclaration\",\n kind,\n declarations,\n });\n}\nexport function variableDeclarator(\n id: t.LVal,\n init: t.Expression | null = null,\n): t.VariableDeclarator {\n return validateNode<t.VariableDeclarator>({\n type: \"VariableDeclarator\",\n id,\n init,\n });\n}\nexport function whileStatement(\n test: t.Expression,\n body: t.Statement,\n): t.WhileStatement {\n return validateNode<t.WhileStatement>({\n type: \"WhileStatement\",\n test,\n body,\n });\n}\nexport function withStatement(\n object: t.Expression,\n body: t.Statement,\n): t.WithStatement {\n return validateNode<t.WithStatement>({\n type: \"WithStatement\",\n object,\n body,\n });\n}\nexport function assignmentPattern(\n left:\n | t.Identifier\n | t.ObjectPattern\n | t.ArrayPattern\n | t.MemberExpression\n | t.TSAsExpression\n | t.TSSatisfiesExpression\n | t.TSTypeAssertion\n | t.TSNonNullExpression,\n right: t.Expression,\n): t.AssignmentPattern {\n return validateNode<t.AssignmentPattern>({\n type: \"AssignmentPattern\",\n left,\n right,\n });\n}\nexport function arrayPattern(\n elements: Array<null | t.PatternLike | t.LVal>,\n): t.ArrayPattern {\n return validateNode<t.ArrayPattern>({\n type: \"ArrayPattern\",\n elements,\n });\n}\nexport function arrowFunctionExpression(\n params: Array<t.Identifier | t.Pattern | t.RestElement>,\n body: t.BlockStatement | t.Expression,\n async: boolean = false,\n): t.ArrowFunctionExpression {\n return validateNode<t.ArrowFunctionExpression>({\n type: \"ArrowFunctionExpression\",\n params,\n body,\n async,\n expression: null,\n });\n}\nexport function classBody(\n body: Array<\n | t.ClassMethod\n | t.ClassPrivateMethod\n | t.ClassProperty\n | t.ClassPrivateProperty\n | t.ClassAccessorProperty\n | t.TSDeclareMethod\n | t.TSIndexSignature\n | t.StaticBlock\n >,\n): t.ClassBody {\n return validateNode<t.ClassBody>({\n type: \"ClassBody\",\n body,\n });\n}\nexport function classExpression(\n id: t.Identifier | null | undefined = null,\n superClass: t.Expression | null | undefined = null,\n body: t.ClassBody,\n decorators: Array<t.Decorator> | null = null,\n): t.ClassExpression {\n return validateNode<t.ClassExpression>({\n type: \"ClassExpression\",\n id,\n superClass,\n body,\n decorators,\n });\n}\nexport function classDeclaration(\n id: t.Identifier | null | undefined = null,\n superClass: t.Expression | null | undefined = null,\n body: t.ClassBody,\n decorators: Array<t.Decorator> | null = null,\n): t.ClassDeclaration {\n return validateNode<t.ClassDeclaration>({\n type: \"ClassDeclaration\",\n id,\n superClass,\n body,\n decorators,\n });\n}\nexport function exportAllDeclaration(\n source: t.StringLiteral,\n): t.ExportAllDeclaration {\n return validateNode<t.ExportAllDeclaration>({\n type: \"ExportAllDeclaration\",\n source,\n });\n}\nexport function exportDefaultDeclaration(\n declaration:\n | t.TSDeclareFunction\n | t.FunctionDeclaration\n | t.ClassDeclaration\n | t.Expression,\n): t.ExportDefaultDeclaration {\n return validateNode<t.ExportDefaultDeclaration>({\n type: \"ExportDefaultDeclaration\",\n declaration,\n });\n}\nexport function exportNamedDeclaration(\n declaration: t.Declaration | null = null,\n specifiers: Array<\n t.ExportSpecifier | t.ExportDefaultSpecifier | t.ExportNamespaceSpecifier\n > = [],\n source: t.StringLiteral | null = null,\n): t.ExportNamedDeclaration {\n return validateNode<t.ExportNamedDeclaration>({\n type: \"ExportNamedDeclaration\",\n declaration,\n specifiers,\n source,\n });\n}\nexport function exportSpecifier(\n local: t.Identifier,\n exported: t.Identifier | t.StringLiteral,\n): t.ExportSpecifier {\n return validateNode<t.ExportSpecifier>({\n type: \"ExportSpecifier\",\n local,\n exported,\n });\n}\nexport function forOfStatement(\n left: t.VariableDeclaration | t.LVal,\n right: t.Expression,\n body: t.Statement,\n _await: boolean = false,\n): t.ForOfStatement {\n return validateNode<t.ForOfStatement>({\n type: \"ForOfStatement\",\n left,\n right,\n body,\n await: _await,\n });\n}\nexport function importDeclaration(\n specifiers: Array<\n t.ImportSpecifier | t.ImportDefaultSpecifier | t.ImportNamespaceSpecifier\n >,\n source: t.StringLiteral,\n): t.ImportDeclaration {\n return validateNode<t.ImportDeclaration>({\n type: \"ImportDeclaration\",\n specifiers,\n source,\n });\n}\nexport function importDefaultSpecifier(\n local: t.Identifier,\n): t.ImportDefaultSpecifier {\n return validateNode<t.ImportDefaultSpecifier>({\n type: \"ImportDefaultSpecifier\",\n local,\n });\n}\nexport function importNamespaceSpecifier(\n local: t.Identifier,\n): t.ImportNamespaceSpecifier {\n return validateNode<t.ImportNamespaceSpecifier>({\n type: \"ImportNamespaceSpecifier\",\n local,\n });\n}\nexport function importSpecifier(\n local: t.Identifier,\n imported: t.Identifier | t.StringLiteral,\n): t.ImportSpecifier {\n return validateNode<t.ImportSpecifier>({\n type: \"ImportSpecifier\",\n local,\n imported,\n });\n}\nexport function importExpression(\n source: t.Expression,\n options: t.Expression | null = null,\n): t.ImportExpression {\n return validateNode<t.ImportExpression>({\n type: \"ImportExpression\",\n source,\n options,\n });\n}\nexport function metaProperty(\n meta: t.Identifier,\n property: t.Identifier,\n): t.MetaProperty {\n return validateNode<t.MetaProperty>({\n type: \"MetaProperty\",\n meta,\n property,\n });\n}\nexport function classMethod(\n kind: \"get\" | \"set\" | \"method\" | \"constructor\" | undefined = \"method\",\n key:\n | t.Identifier\n | t.StringLiteral\n | t.NumericLiteral\n | t.BigIntLiteral\n | t.Expression,\n params: Array<\n t.Identifier | t.Pattern | t.RestElement | t.TSParameterProperty\n >,\n body: t.BlockStatement,\n computed: boolean = false,\n _static: boolean = false,\n generator: boolean = false,\n async: boolean = false,\n): t.ClassMethod {\n return validateNode<t.ClassMethod>({\n type: \"ClassMethod\",\n kind,\n key,\n params,\n body,\n computed,\n static: _static,\n generator,\n async,\n });\n}\nexport function objectPattern(\n properties: Array<t.RestElement | t.ObjectProperty>,\n): t.ObjectPattern {\n return validateNode<t.ObjectPattern>({\n type: \"ObjectPattern\",\n properties,\n });\n}\nexport function spreadElement(argument: t.Expression): t.SpreadElement {\n return validateNode<t.SpreadElement>({\n type: \"SpreadElement\",\n argument,\n });\n}\nfunction _super(): t.Super {\n return {\n type: \"Super\",\n };\n}\nexport { _super as super };\nexport function taggedTemplateExpression(\n tag: t.Expression,\n quasi: t.TemplateLiteral,\n): t.TaggedTemplateExpression {\n return validateNode<t.TaggedTemplateExpression>({\n type: \"TaggedTemplateExpression\",\n tag,\n quasi,\n });\n}\nexport function templateElement(\n value: { raw: string; cooked?: string },\n tail: boolean = false,\n): t.TemplateElement {\n return validateNode<t.TemplateElement>({\n type: \"TemplateElement\",\n value,\n tail,\n });\n}\nexport function templateLiteral(\n quasis: Array<t.TemplateElement>,\n expressions: Array<t.Expression | t.TSType>,\n): t.TemplateLiteral {\n return validateNode<t.TemplateLiteral>({\n type: \"TemplateLiteral\",\n quasis,\n expressions,\n });\n}\nexport function yieldExpression(\n argument: t.Expression | null = null,\n delegate: boolean = false,\n): t.YieldExpression {\n return validateNode<t.YieldExpression>({\n type: \"YieldExpression\",\n argument,\n delegate,\n });\n}\nexport function awaitExpression(argument: t.Expression): t.AwaitExpression {\n return validateNode<t.AwaitExpression>({\n type: \"AwaitExpression\",\n argument,\n });\n}\nfunction _import(): t.Import {\n return {\n type: \"Import\",\n };\n}\nexport { _import as import };\nexport function bigIntLiteral(value: string): t.BigIntLiteral {\n return validateNode<t.BigIntLiteral>({\n type: \"BigIntLiteral\",\n value,\n });\n}\nexport function exportNamespaceSpecifier(\n exported: t.Identifier,\n): t.ExportNamespaceSpecifier {\n return validateNode<t.ExportNamespaceSpecifier>({\n type: \"ExportNamespaceSpecifier\",\n exported,\n });\n}\nexport function optionalMemberExpression(\n object: t.Expression,\n property: t.Expression | t.Identifier,\n computed: boolean | undefined = false,\n optional: boolean,\n): t.OptionalMemberExpression {\n return validateNode<t.OptionalMemberExpression>({\n type: \"OptionalMemberExpression\",\n object,\n property,\n computed,\n optional,\n });\n}\nexport function optionalCallExpression(\n callee: t.Expression,\n _arguments: Array<\n t.Expression | t.SpreadElement | t.JSXNamespacedName | t.ArgumentPlaceholder\n >,\n optional: boolean,\n): t.OptionalCallExpression {\n return validateNode<t.OptionalCallExpression>({\n type: \"OptionalCallExpression\",\n callee,\n arguments: _arguments,\n optional,\n });\n}\nexport function classProperty(\n key:\n | t.Identifier\n | t.StringLiteral\n | t.NumericLiteral\n | t.BigIntLiteral\n | t.Expression,\n value: t.Expression | null = null,\n typeAnnotation: t.TypeAnnotation | t.TSTypeAnnotation | t.Noop | null = null,\n decorators: Array<t.Decorator> | null = null,\n computed: boolean = false,\n _static: boolean = false,\n): t.ClassProperty {\n return validateNode<t.ClassProperty>({\n type: \"ClassProperty\",\n key,\n value,\n typeAnnotation,\n decorators,\n computed,\n static: _static,\n });\n}\nexport function classAccessorProperty(\n key:\n | t.Identifier\n | t.StringLiteral\n | t.NumericLiteral\n | t.BigIntLiteral\n | t.Expression\n | t.PrivateName,\n value: t.Expression | null = null,\n typeAnnotation: t.TypeAnnotation | t.TSTypeAnnotation | t.Noop | null = null,\n decorators: Array<t.Decorator> | null = null,\n computed: boolean = false,\n _static: boolean = false,\n): t.ClassAccessorProperty {\n return validateNode<t.ClassAccessorProperty>({\n type: \"ClassAccessorProperty\",\n key,\n value,\n typeAnnotation,\n decorators,\n computed,\n static: _static,\n });\n}\nexport function classPrivateProperty(\n key: t.PrivateName,\n value: t.Expression | null = null,\n decorators: Array<t.Decorator> | null = null,\n _static: boolean = false,\n): t.ClassPrivateProperty {\n return validateNode<t.ClassPrivateProperty>({\n type: \"ClassPrivateProperty\",\n key,\n value,\n decorators,\n static: _static,\n });\n}\nexport function classPrivateMethod(\n kind: \"get\" | \"set\" | \"method\" | undefined = \"method\",\n key: t.PrivateName,\n params: Array<\n t.Identifier | t.Pattern | t.RestElement | t.TSParameterProperty\n >,\n body: t.BlockStatement,\n _static: boolean = false,\n): t.ClassPrivateMethod {\n return validateNode<t.ClassPrivateMethod>({\n type: \"ClassPrivateMethod\",\n kind,\n key,\n params,\n body,\n static: _static,\n });\n}\nexport function privateName(id: t.Identifier): t.PrivateName {\n return validateNode<t.PrivateName>({\n type: \"PrivateName\",\n id,\n });\n}\nexport function staticBlock(body: Array<t.Statement>): t.StaticBlock {\n return validateNode<t.StaticBlock>({\n type: \"StaticBlock\",\n body,\n });\n}\nexport function anyTypeAnnotation(): t.AnyTypeAnnotation {\n return {\n type: \"AnyTypeAnnotation\",\n };\n}\nexport function arrayTypeAnnotation(\n elementType: t.FlowType,\n): t.ArrayTypeAnnotation {\n return validateNode<t.ArrayTypeAnnotation>({\n type: \"ArrayTypeAnnotation\",\n elementType,\n });\n}\nexport function booleanTypeAnnotation(): t.BooleanTypeAnnotation {\n return {\n type: \"BooleanTypeAnnotation\",\n };\n}\nexport function booleanLiteralTypeAnnotation(\n value: boolean,\n): t.BooleanLiteralTypeAnnotation {\n return validateNode<t.BooleanLiteralTypeAnnotation>({\n type: \"BooleanLiteralTypeAnnotation\",\n value,\n });\n}\nexport function nullLiteralTypeAnnotation(): t.NullLiteralTypeAnnotation {\n return {\n type: \"NullLiteralTypeAnnotation\",\n };\n}\nexport function classImplements(\n id: t.Identifier,\n typeParameters: t.TypeParameterInstantiation | null = null,\n): t.ClassImplements {\n return validateNode<t.ClassImplements>({\n type: \"ClassImplements\",\n id,\n typeParameters,\n });\n}\nexport function declareClass(\n id: t.Identifier,\n typeParameters: t.TypeParameterDeclaration | null | undefined = null,\n _extends: Array<t.InterfaceExtends> | null | undefined = null,\n body: t.ObjectTypeAnnotation,\n): t.DeclareClass {\n return validateNode<t.DeclareClass>({\n type: \"DeclareClass\",\n id,\n typeParameters,\n extends: _extends,\n body,\n });\n}\nexport function declareFunction(id: t.Identifier): t.DeclareFunction {\n return validateNode<t.DeclareFunction>({\n type: \"DeclareFunction\",\n id,\n });\n}\nexport function declareInterface(\n id: t.Identifier,\n typeParameters: t.TypeParameterDeclaration | null | undefined = null,\n _extends: Array<t.InterfaceExtends> | null | undefined = null,\n body: t.ObjectTypeAnnotation,\n): t.DeclareInterface {\n return validateNode<t.DeclareInterface>({\n type: \"DeclareInterface\",\n id,\n typeParameters,\n extends: _extends,\n body,\n });\n}\nexport function declareModule(\n id: t.Identifier | t.StringLiteral,\n body: t.BlockStatement,\n kind: \"CommonJS\" | \"ES\" | null = null,\n): t.DeclareModule {\n return validateNode<t.DeclareModule>({\n type: \"DeclareModule\",\n id,\n body,\n kind,\n });\n}\nexport function declareModuleExports(\n typeAnnotation: t.TypeAnnotation,\n): t.DeclareModuleExports {\n return validateNode<t.DeclareModuleExports>({\n type: \"DeclareModuleExports\",\n typeAnnotation,\n });\n}\nexport function declareTypeAlias(\n id: t.Identifier,\n typeParameters: t.TypeParameterDeclaration | null | undefined = null,\n right: t.FlowType,\n): t.DeclareTypeAlias {\n return validateNode<t.DeclareTypeAlias>({\n type: \"DeclareTypeAlias\",\n id,\n typeParameters,\n right,\n });\n}\nexport function declareOpaqueType(\n id: t.Identifier,\n typeParameters: t.TypeParameterDeclaration | null = null,\n supertype: t.FlowType | null = null,\n): t.DeclareOpaqueType {\n return validateNode<t.DeclareOpaqueType>({\n type: \"DeclareOpaqueType\",\n id,\n typeParameters,\n supertype,\n });\n}\nexport function declareVariable(id: t.Identifier): t.DeclareVariable {\n return validateNode<t.DeclareVariable>({\n type: \"DeclareVariable\",\n id,\n });\n}\nexport function declareExportDeclaration(\n declaration: t.Flow | null = null,\n specifiers: Array<\n t.ExportSpecifier | t.ExportNamespaceSpecifier\n > | null = null,\n source: t.StringLiteral | null = null,\n): t.DeclareExportDeclaration {\n return validateNode<t.DeclareExportDeclaration>({\n type: \"DeclareExportDeclaration\",\n declaration,\n specifiers,\n source,\n });\n}\nexport function declareExportAllDeclaration(\n source: t.StringLiteral,\n): t.DeclareExportAllDeclaration {\n return validateNode<t.DeclareExportAllDeclaration>({\n type: \"DeclareExportAllDeclaration\",\n source,\n });\n}\nexport function declaredPredicate(value: t.Flow): t.DeclaredPredicate {\n return validateNode<t.DeclaredPredicate>({\n type: \"DeclaredPredicate\",\n value,\n });\n}\nexport function existsTypeAnnotation(): t.ExistsTypeAnnotation {\n return {\n type: \"ExistsTypeAnnotation\",\n };\n}\nexport function functionTypeAnnotation(\n typeParameters: t.TypeParameterDeclaration | null | undefined = null,\n params: Array<t.FunctionTypeParam>,\n rest: t.FunctionTypeParam | null | undefined = null,\n returnType: t.FlowType,\n): t.FunctionTypeAnnotation {\n return validateNode<t.FunctionTypeAnnotation>({\n type: \"FunctionTypeAnnotation\",\n typeParameters,\n params,\n rest,\n returnType,\n });\n}\nexport function functionTypeParam(\n name: t.Identifier | null | undefined = null,\n typeAnnotation: t.FlowType,\n): t.FunctionTypeParam {\n return validateNode<t.FunctionTypeParam>({\n type: \"FunctionTypeParam\",\n name,\n typeAnnotation,\n });\n}\nexport function genericTypeAnnotation(\n id: t.Identifier | t.QualifiedTypeIdentifier,\n typeParameters: t.TypeParameterInstantiation | null = null,\n): t.GenericTypeAnnotation {\n return validateNode<t.GenericTypeAnnotation>({\n type: \"GenericTypeAnnotation\",\n id,\n typeParameters,\n });\n}\nexport function inferredPredicate(): t.InferredPredicate {\n return {\n type: \"InferredPredicate\",\n };\n}\nexport function interfaceExtends(\n id: t.Identifier | t.QualifiedTypeIdentifier,\n typeParameters: t.TypeParameterInstantiation | null = null,\n): t.InterfaceExtends {\n return validateNode<t.InterfaceExtends>({\n type: \"InterfaceExtends\",\n id,\n typeParameters,\n });\n}\nexport function interfaceDeclaration(\n id: t.Identifier,\n typeParameters: t.TypeParameterDeclaration | null | undefined = null,\n _extends: Array<t.InterfaceExtends> | null | undefined = null,\n body: t.ObjectTypeAnnotation,\n): t.InterfaceDeclaration {\n return validateNode<t.InterfaceDeclaration>({\n type: \"InterfaceDeclaration\",\n id,\n typeParameters,\n extends: _extends,\n body,\n });\n}\nexport function interfaceTypeAnnotation(\n _extends: Array<t.InterfaceExtends> | null | undefined = null,\n body: t.ObjectTypeAnnotation,\n): t.InterfaceTypeAnnotation {\n return validateNode<t.InterfaceTypeAnnotation>({\n type: \"InterfaceTypeAnnotation\",\n extends: _extends,\n body,\n });\n}\nexport function intersectionTypeAnnotation(\n types: Array<t.FlowType>,\n): t.IntersectionTypeAnnotation {\n return validateNode<t.IntersectionTypeAnnotation>({\n type: \"IntersectionTypeAnnotation\",\n types,\n });\n}\nexport function mixedTypeAnnotation(): t.MixedTypeAnnotation {\n return {\n type: \"MixedTypeAnnotation\",\n };\n}\nexport function emptyTypeAnnotation(): t.EmptyTypeAnnotation {\n return {\n type: \"EmptyTypeAnnotation\",\n };\n}\nexport function nullableTypeAnnotation(\n typeAnnotation: t.FlowType,\n): t.NullableTypeAnnotation {\n return validateNode<t.NullableTypeAnnotation>({\n type: \"NullableTypeAnnotation\",\n typeAnnotation,\n });\n}\nexport function numberLiteralTypeAnnotation(\n value: number,\n): t.NumberLiteralTypeAnnotation {\n return validateNode<t.NumberLiteralTypeAnnotation>({\n type: \"NumberLiteralTypeAnnotation\",\n value,\n });\n}\nexport function numberTypeAnnotation(): t.NumberTypeAnnotation {\n return {\n type: \"NumberTypeAnnotation\",\n };\n}\nexport function objectTypeAnnotation(\n properties: Array<t.ObjectTypeProperty | t.ObjectTypeSpreadProperty>,\n indexers: Array<t.ObjectTypeIndexer> = [],\n callProperties: Array<t.ObjectTypeCallProperty> = [],\n internalSlots: Array<t.ObjectTypeInternalSlot> = [],\n exact: boolean = false,\n): t.ObjectTypeAnnotation {\n return validateNode<t.ObjectTypeAnnotation>({\n type: \"ObjectTypeAnnotation\",\n properties,\n indexers,\n callProperties,\n internalSlots,\n exact,\n });\n}\nexport function objectTypeInternalSlot(\n id: t.Identifier,\n value: t.FlowType,\n optional: boolean,\n _static: boolean,\n method: boolean,\n): t.ObjectTypeInternalSlot {\n return validateNode<t.ObjectTypeInternalSlot>({\n type: \"ObjectTypeInternalSlot\",\n id,\n value,\n optional,\n static: _static,\n method,\n });\n}\nexport function objectTypeCallProperty(\n value: t.FlowType,\n): t.ObjectTypeCallProperty {\n return validateNode<t.ObjectTypeCallProperty>({\n type: \"ObjectTypeCallProperty\",\n value,\n static: null,\n });\n}\nexport function objectTypeIndexer(\n id: t.Identifier | null | undefined = null,\n key: t.FlowType,\n value: t.FlowType,\n variance: t.Variance | null = null,\n): t.ObjectTypeIndexer {\n return validateNode<t.ObjectTypeIndexer>({\n type: \"ObjectTypeIndexer\",\n id,\n key,\n value,\n variance,\n static: null,\n });\n}\nexport function objectTypeProperty(\n key: t.Identifier | t.StringLiteral,\n value: t.FlowType,\n variance: t.Variance | null = null,\n): t.ObjectTypeProperty {\n return validateNode<t.ObjectTypeProperty>({\n type: \"ObjectTypeProperty\",\n key,\n value,\n variance,\n kind: null,\n method: null,\n optional: null,\n proto: null,\n static: null,\n });\n}\nexport function objectTypeSpreadProperty(\n argument: t.FlowType,\n): t.ObjectTypeSpreadProperty {\n return validateNode<t.ObjectTypeSpreadProperty>({\n type: \"ObjectTypeSpreadProperty\",\n argument,\n });\n}\nexport function opaqueType(\n id: t.Identifier,\n typeParameters: t.TypeParameterDeclaration | null | undefined = null,\n supertype: t.FlowType | null | undefined = null,\n impltype: t.FlowType,\n): t.OpaqueType {\n return validateNode<t.OpaqueType>({\n type: \"OpaqueType\",\n id,\n typeParameters,\n supertype,\n impltype,\n });\n}\nexport function qualifiedTypeIdentifier(\n id: t.Identifier,\n qualification: t.Identifier | t.QualifiedTypeIdentifier,\n): t.QualifiedTypeIdentifier {\n return validateNode<t.QualifiedTypeIdentifier>({\n type: \"QualifiedTypeIdentifier\",\n id,\n qualification,\n });\n}\nexport function stringLiteralTypeAnnotation(\n value: string,\n): t.StringLiteralTypeAnnotation {\n return validateNode<t.StringLiteralTypeAnnotation>({\n type: \"StringLiteralTypeAnnotation\",\n value,\n });\n}\nexport function stringTypeAnnotation(): t.StringTypeAnnotation {\n return {\n type: \"StringTypeAnnotation\",\n };\n}\nexport function symbolTypeAnnotation(): t.SymbolTypeAnnotation {\n return {\n type: \"SymbolTypeAnnotation\",\n };\n}\nexport function thisTypeAnnotation(): t.ThisTypeAnnotation {\n return {\n type: \"ThisTypeAnnotation\",\n };\n}\nexport function tupleTypeAnnotation(\n types: Array<t.FlowType>,\n): t.TupleTypeAnnotation {\n return validateNode<t.TupleTypeAnnotation>({\n type: \"TupleTypeAnnotation\",\n types,\n });\n}\nexport function typeofTypeAnnotation(\n argument: t.FlowType,\n): t.TypeofTypeAnnotation {\n return validateNode<t.TypeofTypeAnnotation>({\n type: \"TypeofTypeAnnotation\",\n argument,\n });\n}\nexport function typeAlias(\n id: t.Identifier,\n typeParameters: t.TypeParameterDeclaration | null | undefined = null,\n right: t.FlowType,\n): t.TypeAlias {\n return validateNode<t.TypeAlias>({\n type: \"TypeAlias\",\n id,\n typeParameters,\n right,\n });\n}\nexport function typeAnnotation(typeAnnotation: t.FlowType): t.TypeAnnotation {\n return validateNode<t.TypeAnnotation>({\n type: \"TypeAnnotation\",\n typeAnnotation,\n });\n}\nexport function typeCastExpression(\n expression: t.Expression,\n typeAnnotation: t.TypeAnnotation,\n): t.TypeCastExpression {\n return validateNode<t.TypeCastExpression>({\n type: \"TypeCastExpression\",\n expression,\n typeAnnotation,\n });\n}\nexport function typeParameter(\n bound: t.TypeAnnotation | null = null,\n _default: t.FlowType | null = null,\n variance: t.Variance | null = null,\n): t.TypeParameter {\n return validateNode<t.TypeParameter>({\n type: \"TypeParameter\",\n bound,\n default: _default,\n variance,\n name: null,\n });\n}\nexport function typeParameterDeclaration(\n params: Array<t.TypeParameter>,\n): t.TypeParameterDeclaration {\n return validateNode<t.TypeParameterDeclaration>({\n type: \"TypeParameterDeclaration\",\n params,\n });\n}\nexport function typeParameterInstantiation(\n params: Array<t.FlowType>,\n): t.TypeParameterInstantiation {\n return validateNode<t.TypeParameterInstantiation>({\n type: \"TypeParameterInstantiation\",\n params,\n });\n}\nexport function unionTypeAnnotation(\n types: Array<t.FlowType>,\n): t.UnionTypeAnnotation {\n return validateNode<t.UnionTypeAnnotation>({\n type: \"UnionTypeAnnotation\",\n types,\n });\n}\nexport function variance(kind: \"minus\" | \"plus\"): t.Variance {\n return validateNode<t.Variance>({\n type: \"Variance\",\n kind,\n });\n}\nexport function voidTypeAnnotation(): t.VoidTypeAnnotation {\n return {\n type: \"VoidTypeAnnotation\",\n };\n}\nexport function enumDeclaration(\n id: t.Identifier,\n body:\n | t.EnumBooleanBody\n | t.EnumNumberBody\n | t.EnumStringBody\n | t.EnumSymbolBody,\n): t.EnumDeclaration {\n return validateNode<t.EnumDeclaration>({\n type: \"EnumDeclaration\",\n id,\n body,\n });\n}\nexport function enumBooleanBody(\n members: Array<t.EnumBooleanMember>,\n): t.EnumBooleanBody {\n return validateNode<t.EnumBooleanBody>({\n type: \"EnumBooleanBody\",\n members,\n explicitType: null,\n hasUnknownMembers: null,\n });\n}\nexport function enumNumberBody(\n members: Array<t.EnumNumberMember>,\n): t.EnumNumberBody {\n return validateNode<t.EnumNumberBody>({\n type: \"EnumNumberBody\",\n members,\n explicitType: null,\n hasUnknownMembers: null,\n });\n}\nexport function enumStringBody(\n members: Array<t.EnumStringMember | t.EnumDefaultedMember>,\n): t.EnumStringBody {\n return validateNode<t.EnumStringBody>({\n type: \"EnumStringBody\",\n members,\n explicitType: null,\n hasUnknownMembers: null,\n });\n}\nexport function enumSymbolBody(\n members: Array<t.EnumDefaultedMember>,\n): t.EnumSymbolBody {\n return validateNode<t.EnumSymbolBody>({\n type: \"EnumSymbolBody\",\n members,\n hasUnknownMembers: null,\n });\n}\nexport function enumBooleanMember(id: t.Identifier): t.EnumBooleanMember {\n return validateNode<t.EnumBooleanMember>({\n type: \"EnumBooleanMember\",\n id,\n init: null,\n });\n}\nexport function enumNumberMember(\n id: t.Identifier,\n init: t.NumericLiteral,\n): t.EnumNumberMember {\n return validateNode<t.EnumNumberMember>({\n type: \"EnumNumberMember\",\n id,\n init,\n });\n}\nexport function enumStringMember(\n id: t.Identifier,\n init: t.StringLiteral,\n): t.EnumStringMember {\n return validateNode<t.EnumStringMember>({\n type: \"EnumStringMember\",\n id,\n init,\n });\n}\nexport function enumDefaultedMember(id: t.Identifier): t.EnumDefaultedMember {\n return validateNode<t.EnumDefaultedMember>({\n type: \"EnumDefaultedMember\",\n id,\n });\n}\nexport function indexedAccessType(\n objectType: t.FlowType,\n indexType: t.FlowType,\n): t.IndexedAccessType {\n return validateNode<t.IndexedAccessType>({\n type: \"IndexedAccessType\",\n objectType,\n indexType,\n });\n}\nexport function optionalIndexedAccessType(\n objectType: t.FlowType,\n indexType: t.FlowType,\n): t.OptionalIndexedAccessType {\n return validateNode<t.OptionalIndexedAccessType>({\n type: \"OptionalIndexedAccessType\",\n objectType,\n indexType,\n optional: null,\n });\n}\nexport function jsxAttribute(\n name: t.JSXIdentifier | t.JSXNamespacedName,\n value:\n | t.JSXElement\n | t.JSXFragment\n | t.StringLiteral\n | t.JSXExpressionContainer\n | null = null,\n): t.JSXAttribute {\n return validateNode<t.JSXAttribute>({\n type: \"JSXAttribute\",\n name,\n value,\n });\n}\nexport { jsxAttribute as jSXAttribute };\nexport function jsxClosingElement(\n name: t.JSXIdentifier | t.JSXMemberExpression | t.JSXNamespacedName,\n): t.JSXClosingElement {\n return validateNode<t.JSXClosingElement>({\n type: \"JSXClosingElement\",\n name,\n });\n}\nexport { jsxClosingElement as jSXClosingElement };\nexport function jsxElement(\n openingElement: t.JSXOpeningElement,\n closingElement: t.JSXClosingElement | null | undefined = null,\n children: Array<\n | t.JSXText\n | t.JSXExpressionContainer\n | t.JSXSpreadChild\n | t.JSXElement\n | t.JSXFragment\n >,\n selfClosing: boolean | null = null,\n): t.JSXElement {\n return validateNode<t.JSXElement>({\n type: \"JSXElement\",\n openingElement,\n closingElement,\n children,\n selfClosing,\n });\n}\nexport { jsxElement as jSXElement };\nexport function jsxEmptyExpression(): t.JSXEmptyExpression {\n return {\n type: \"JSXEmptyExpression\",\n };\n}\nexport { jsxEmptyExpression as jSXEmptyExpression };\nexport function jsxExpressionContainer(\n expression: t.Expression | t.JSXEmptyExpression,\n): t.JSXExpressionContainer {\n return validateNode<t.JSXExpressionContainer>({\n type: \"JSXExpressionContainer\",\n expression,\n });\n}\nexport { jsxExpressionContainer as jSXExpressionContainer };\nexport function jsxSpreadChild(expression: t.Expression): t.JSXSpreadChild {\n return validateNode<t.JSXSpreadChild>({\n type: \"JSXSpreadChild\",\n expression,\n });\n}\nexport { jsxSpreadChild as jSXSpreadChild };\nexport function jsxIdentifier(name: string): t.JSXIdentifier {\n return validateNode<t.JSXIdentifier>({\n type: \"JSXIdentifier\",\n name,\n });\n}\nexport { jsxIdentifier as jSXIdentifier };\nexport function jsxMemberExpression(\n object: t.JSXMemberExpression | t.JSXIdentifier,\n property: t.JSXIdentifier,\n): t.JSXMemberExpression {\n return validateNode<t.JSXMemberExpression>({\n type: \"JSXMemberExpression\",\n object,\n property,\n });\n}\nexport { jsxMemberExpression as jSXMemberExpression };\nexport function jsxNamespacedName(\n namespace: t.JSXIdentifier,\n name: t.JSXIdentifier,\n): t.JSXNamespacedName {\n return validateNode<t.JSXNamespacedName>({\n type: \"JSXNamespacedName\",\n namespace,\n name,\n });\n}\nexport { jsxNamespacedName as jSXNamespacedName };\nexport function jsxOpeningElement(\n name: t.JSXIdentifier | t.JSXMemberExpression | t.JSXNamespacedName,\n attributes: Array<t.JSXAttribute | t.JSXSpreadAttribute>,\n selfClosing: boolean = false,\n): t.JSXOpeningElement {\n return validateNode<t.JSXOpeningElement>({\n type: \"JSXOpeningElement\",\n name,\n attributes,\n selfClosing,\n });\n}\nexport { jsxOpeningElement as jSXOpeningElement };\nexport function jsxSpreadAttribute(\n argument: t.Expression,\n): t.JSXSpreadAttribute {\n return validateNode<t.JSXSpreadAttribute>({\n type: \"JSXSpreadAttribute\",\n argument,\n });\n}\nexport { jsxSpreadAttribute as jSXSpreadAttribute };\nexport function jsxText(value: string): t.JSXText {\n return validateNode<t.JSXText>({\n type: \"JSXText\",\n value,\n });\n}\nexport { jsxText as jSXText };\nexport function jsxFragment(\n openingFragment: t.JSXOpeningFragment,\n closingFragment: t.JSXClosingFragment,\n children: Array<\n | t.JSXText\n | t.JSXExpressionContainer\n | t.JSXSpreadChild\n | t.JSXElement\n | t.JSXFragment\n >,\n): t.JSXFragment {\n return validateNode<t.JSXFragment>({\n type: \"JSXFragment\",\n openingFragment,\n closingFragment,\n children,\n });\n}\nexport { jsxFragment as jSXFragment };\nexport function jsxOpeningFragment(): t.JSXOpeningFragment {\n return {\n type: \"JSXOpeningFragment\",\n };\n}\nexport { jsxOpeningFragment as jSXOpeningFragment };\nexport function jsxClosingFragment(): t.JSXClosingFragment {\n return {\n type: \"JSXClosingFragment\",\n };\n}\nexport { jsxClosingFragment as jSXClosingFragment };\nexport function noop(): t.Noop {\n return {\n type: \"Noop\",\n };\n}\nexport function placeholder(\n expectedNode:\n | \"Identifier\"\n | \"StringLiteral\"\n | \"Expression\"\n | \"Statement\"\n | \"Declaration\"\n | \"BlockStatement\"\n | \"ClassBody\"\n | \"Pattern\",\n name: t.Identifier,\n): t.Placeholder {\n return validateNode<t.Placeholder>({\n type: \"Placeholder\",\n expectedNode,\n name,\n });\n}\nexport function v8IntrinsicIdentifier(name: string): t.V8IntrinsicIdentifier {\n return validateNode<t.V8IntrinsicIdentifier>({\n type: \"V8IntrinsicIdentifier\",\n name,\n });\n}\nexport function argumentPlaceholder(): t.ArgumentPlaceholder {\n return {\n type: \"ArgumentPlaceholder\",\n };\n}\nexport function bindExpression(\n object: t.Expression,\n callee: t.Expression,\n): t.BindExpression {\n return validateNode<t.BindExpression>({\n type: \"BindExpression\",\n object,\n callee,\n });\n}\nexport function importAttribute(\n key: t.Identifier | t.StringLiteral,\n value: t.StringLiteral,\n): t.ImportAttribute {\n return validateNode<t.ImportAttribute>({\n type: \"ImportAttribute\",\n key,\n value,\n });\n}\nexport function decorator(expression: t.Expression): t.Decorator {\n return validateNode<t.Decorator>({\n type: \"Decorator\",\n expression,\n });\n}\nexport function doExpression(\n body: t.BlockStatement,\n async: boolean = false,\n): t.DoExpression {\n return validateNode<t.DoExpression>({\n type: \"DoExpression\",\n body,\n async,\n });\n}\nexport function exportDefaultSpecifier(\n exported: t.Identifier,\n): t.ExportDefaultSpecifier {\n return validateNode<t.ExportDefaultSpecifier>({\n type: \"ExportDefaultSpecifier\",\n exported,\n });\n}\nexport function recordExpression(\n properties: Array<t.ObjectProperty | t.SpreadElement>,\n): t.RecordExpression {\n return validateNode<t.RecordExpression>({\n type: \"RecordExpression\",\n properties,\n });\n}\nexport function tupleExpression(\n elements: Array<t.Expression | t.SpreadElement> = [],\n): t.TupleExpression {\n return validateNode<t.TupleExpression>({\n type: \"TupleExpression\",\n elements,\n });\n}\nexport function decimalLiteral(value: string): t.DecimalLiteral {\n return validateNode<t.DecimalLiteral>({\n type: \"DecimalLiteral\",\n value,\n });\n}\nexport function moduleExpression(body: t.Program): t.ModuleExpression {\n return validateNode<t.ModuleExpression>({\n type: \"ModuleExpression\",\n body,\n });\n}\nexport function topicReference(): t.TopicReference {\n return {\n type: \"TopicReference\",\n };\n}\nexport function pipelineTopicExpression(\n expression: t.Expression,\n): t.PipelineTopicExpression {\n return validateNode<t.PipelineTopicExpression>({\n type: \"PipelineTopicExpression\",\n expression,\n });\n}\nexport function pipelineBareFunction(\n callee: t.Expression,\n): t.PipelineBareFunction {\n return validateNode<t.PipelineBareFunction>({\n type: \"PipelineBareFunction\",\n callee,\n });\n}\nexport function pipelinePrimaryTopicReference(): t.PipelinePrimaryTopicReference {\n return {\n type: \"PipelinePrimaryTopicReference\",\n };\n}\nexport function tsParameterProperty(\n parameter: t.Identifier | t.AssignmentPattern,\n): t.TSParameterProperty {\n return validateNode<t.TSParameterProperty>({\n type: \"TSParameterProperty\",\n parameter,\n });\n}\nexport { tsParameterProperty as tSParameterProperty };\nexport function tsDeclareFunction(\n id: t.Identifier | null | undefined = null,\n typeParameters:\n | t.TSTypeParameterDeclaration\n | t.Noop\n | null\n | undefined = null,\n params: Array<t.Identifier | t.Pattern | t.RestElement>,\n returnType: t.TSTypeAnnotation | t.Noop | null = null,\n): t.TSDeclareFunction {\n return validateNode<t.TSDeclareFunction>({\n type: \"TSDeclareFunction\",\n id,\n typeParameters,\n params,\n returnType,\n });\n}\nexport { tsDeclareFunction as tSDeclareFunction };\nexport function tsDeclareMethod(\n decorators: Array<t.Decorator> | null | undefined = null,\n key:\n | t.Identifier\n | t.StringLiteral\n | t.NumericLiteral\n | t.BigIntLiteral\n | t.Expression,\n typeParameters:\n | t.TSTypeParameterDeclaration\n | t.Noop\n | null\n | undefined = null,\n params: Array<\n t.Identifier | t.Pattern | t.RestElement | t.TSParameterProperty\n >,\n returnType: t.TSTypeAnnotation | t.Noop | null = null,\n): t.TSDeclareMethod {\n return validateNode<t.TSDeclareMethod>({\n type: \"TSDeclareMethod\",\n decorators,\n key,\n typeParameters,\n params,\n returnType,\n });\n}\nexport { tsDeclareMethod as tSDeclareMethod };\nexport function tsQualifiedName(\n left: t.TSEntityName,\n right: t.Identifier,\n): t.TSQualifiedName {\n return validateNode<t.TSQualifiedName>({\n type: \"TSQualifiedName\",\n left,\n right,\n });\n}\nexport { tsQualifiedName as tSQualifiedName };\nexport function tsCallSignatureDeclaration(\n typeParameters: t.TSTypeParameterDeclaration | null | undefined = null,\n parameters: Array<\n t.ArrayPattern | t.Identifier | t.ObjectPattern | t.RestElement\n >,\n typeAnnotation: t.TSTypeAnnotation | null = null,\n): t.TSCallSignatureDeclaration {\n return validateNode<t.TSCallSignatureDeclaration>({\n type: \"TSCallSignatureDeclaration\",\n typeParameters,\n parameters,\n typeAnnotation,\n });\n}\nexport { tsCallSignatureDeclaration as tSCallSignatureDeclaration };\nexport function tsConstructSignatureDeclaration(\n typeParameters: t.TSTypeParameterDeclaration | null | undefined = null,\n parameters: Array<\n t.ArrayPattern | t.Identifier | t.ObjectPattern | t.RestElement\n >,\n typeAnnotation: t.TSTypeAnnotation | null = null,\n): t.TSConstructSignatureDeclaration {\n return validateNode<t.TSConstructSignatureDeclaration>({\n type: \"TSConstructSignatureDeclaration\",\n typeParameters,\n parameters,\n typeAnnotation,\n });\n}\nexport { tsConstructSignatureDeclaration as tSConstructSignatureDeclaration };\nexport function tsPropertySignature(\n key: t.Expression,\n typeAnnotation: t.TSTypeAnnotation | null = null,\n): t.TSPropertySignature {\n return validateNode<t.TSPropertySignature>({\n type: \"TSPropertySignature\",\n key,\n typeAnnotation,\n kind: null,\n });\n}\nexport { tsPropertySignature as tSPropertySignature };\nexport function tsMethodSignature(\n key: t.Expression,\n typeParameters: t.TSTypeParameterDeclaration | null | undefined = null,\n parameters: Array<\n t.ArrayPattern | t.Identifier | t.ObjectPattern | t.RestElement\n >,\n typeAnnotation: t.TSTypeAnnotation | null = null,\n): t.TSMethodSignature {\n return validateNode<t.TSMethodSignature>({\n type: \"TSMethodSignature\",\n key,\n typeParameters,\n parameters,\n typeAnnotation,\n kind: null,\n });\n}\nexport { tsMethodSignature as tSMethodSignature };\nexport function tsIndexSignature(\n parameters: Array<t.Identifier>,\n typeAnnotation: t.TSTypeAnnotation | null = null,\n): t.TSIndexSignature {\n return validateNode<t.TSIndexSignature>({\n type: \"TSIndexSignature\",\n parameters,\n typeAnnotation,\n });\n}\nexport { tsIndexSignature as tSIndexSignature };\nexport function tsAnyKeyword(): t.TSAnyKeyword {\n return {\n type: \"TSAnyKeyword\",\n };\n}\nexport { tsAnyKeyword as tSAnyKeyword };\nexport function tsBooleanKeyword(): t.TSBooleanKeyword {\n return {\n type: \"TSBooleanKeyword\",\n };\n}\nexport { tsBooleanKeyword as tSBooleanKeyword };\nexport function tsBigIntKeyword(): t.TSBigIntKeyword {\n return {\n type: \"TSBigIntKeyword\",\n };\n}\nexport { tsBigIntKeyword as tSBigIntKeyword };\nexport function tsIntrinsicKeyword(): t.TSIntrinsicKeyword {\n return {\n type: \"TSIntrinsicKeyword\",\n };\n}\nexport { tsIntrinsicKeyword as tSIntrinsicKeyword };\nexport function tsNeverKeyword(): t.TSNeverKeyword {\n return {\n type: \"TSNeverKeyword\",\n };\n}\nexport { tsNeverKeyword as tSNeverKeyword };\nexport function tsNullKeyword(): t.TSNullKeyword {\n return {\n type: \"TSNullKeyword\",\n };\n}\nexport { tsNullKeyword as tSNullKeyword };\nexport function tsNumberKeyword(): t.TSNumberKeyword {\n return {\n type: \"TSNumberKeyword\",\n };\n}\nexport { tsNumberKeyword as tSNumberKeyword };\nexport function tsObjectKeyword(): t.TSObjectKeyword {\n return {\n type: \"TSObjectKeyword\",\n };\n}\nexport { tsObjectKeyword as tSObjectKeyword };\nexport function tsStringKeyword(): t.TSStringKeyword {\n return {\n type: \"TSStringKeyword\",\n };\n}\nexport { tsStringKeyword as tSStringKeyword };\nexport function tsSymbolKeyword(): t.TSSymbolKeyword {\n return {\n type: \"TSSymbolKeyword\",\n };\n}\nexport { tsSymbolKeyword as tSSymbolKeyword };\nexport function tsUndefinedKeyword(): t.TSUndefinedKeyword {\n return {\n type: \"TSUndefinedKeyword\",\n };\n}\nexport { tsUndefinedKeyword as tSUndefinedKeyword };\nexport function tsUnknownKeyword(): t.TSUnknownKeyword {\n return {\n type: \"TSUnknownKeyword\",\n };\n}\nexport { tsUnknownKeyword as tSUnknownKeyword };\nexport function tsVoidKeyword(): t.TSVoidKeyword {\n return {\n type: \"TSVoidKeyword\",\n };\n}\nexport { tsVoidKeyword as tSVoidKeyword };\nexport function tsThisType(): t.TSThisType {\n return {\n type: \"TSThisType\",\n };\n}\nexport { tsThisType as tSThisType };\nexport function tsFunctionType(\n typeParameters: t.TSTypeParameterDeclaration | null | undefined = null,\n parameters: Array<\n t.ArrayPattern | t.Identifier | t.ObjectPattern | t.RestElement\n >,\n typeAnnotation: t.TSTypeAnnotation | null = null,\n): t.TSFunctionType {\n return validateNode<t.TSFunctionType>({\n type: \"TSFunctionType\",\n typeParameters,\n parameters,\n typeAnnotation,\n });\n}\nexport { tsFunctionType as tSFunctionType };\nexport function tsConstructorType(\n typeParameters: t.TSTypeParameterDeclaration | null | undefined = null,\n parameters: Array<\n t.ArrayPattern | t.Identifier | t.ObjectPattern | t.RestElement\n >,\n typeAnnotation: t.TSTypeAnnotation | null = null,\n): t.TSConstructorType {\n return validateNode<t.TSConstructorType>({\n type: \"TSConstructorType\",\n typeParameters,\n parameters,\n typeAnnotation,\n });\n}\nexport { tsConstructorType as tSConstructorType };\nexport function tsTypeReference(\n typeName: t.TSEntityName,\n typeParameters: t.TSTypeParameterInstantiation | null = null,\n): t.TSTypeReference {\n return validateNode<t.TSTypeReference>({\n type: \"TSTypeReference\",\n typeName,\n typeParameters,\n });\n}\nexport { tsTypeReference as tSTypeReference };\nexport function tsTypePredicate(\n parameterName: t.Identifier | t.TSThisType,\n typeAnnotation: t.TSTypeAnnotation | null = null,\n asserts: boolean | null = null,\n): t.TSTypePredicate {\n return validateNode<t.TSTypePredicate>({\n type: \"TSTypePredicate\",\n parameterName,\n typeAnnotation,\n asserts,\n });\n}\nexport { tsTypePredicate as tSTypePredicate };\nexport function tsTypeQuery(\n exprName: t.TSEntityName | t.TSImportType,\n typeParameters: t.TSTypeParameterInstantiation | null = null,\n): t.TSTypeQuery {\n return validateNode<t.TSTypeQuery>({\n type: \"TSTypeQuery\",\n exprName,\n typeParameters,\n });\n}\nexport { tsTypeQuery as tSTypeQuery };\nexport function tsTypeLiteral(\n members: Array<t.TSTypeElement>,\n): t.TSTypeLiteral {\n return validateNode<t.TSTypeLiteral>({\n type: \"TSTypeLiteral\",\n members,\n });\n}\nexport { tsTypeLiteral as tSTypeLiteral };\nexport function tsArrayType(elementType: t.TSType): t.TSArrayType {\n return validateNode<t.TSArrayType>({\n type: \"TSArrayType\",\n elementType,\n });\n}\nexport { tsArrayType as tSArrayType };\nexport function tsTupleType(\n elementTypes: Array<t.TSType | t.TSNamedTupleMember>,\n): t.TSTupleType {\n return validateNode<t.TSTupleType>({\n type: \"TSTupleType\",\n elementTypes,\n });\n}\nexport { tsTupleType as tSTupleType };\nexport function tsOptionalType(typeAnnotation: t.TSType): t.TSOptionalType {\n return validateNode<t.TSOptionalType>({\n type: \"TSOptionalType\",\n typeAnnotation,\n });\n}\nexport { tsOptionalType as tSOptionalType };\nexport function tsRestType(typeAnnotation: t.TSType): t.TSRestType {\n return validateNode<t.TSRestType>({\n type: \"TSRestType\",\n typeAnnotation,\n });\n}\nexport { tsRestType as tSRestType };\nexport function tsNamedTupleMember(\n label: t.Identifier,\n elementType: t.TSType,\n optional: boolean = false,\n): t.TSNamedTupleMember {\n return validateNode<t.TSNamedTupleMember>({\n type: \"TSNamedTupleMember\",\n label,\n elementType,\n optional,\n });\n}\nexport { tsNamedTupleMember as tSNamedTupleMember };\nexport function tsUnionType(types: Array<t.TSType>): t.TSUnionType {\n return validateNode<t.TSUnionType>({\n type: \"TSUnionType\",\n types,\n });\n}\nexport { tsUnionType as tSUnionType };\nexport function tsIntersectionType(\n types: Array<t.TSType>,\n): t.TSIntersectionType {\n return validateNode<t.TSIntersectionType>({\n type: \"TSIntersectionType\",\n types,\n });\n}\nexport { tsIntersectionType as tSIntersectionType };\nexport function tsConditionalType(\n checkType: t.TSType,\n extendsType: t.TSType,\n trueType: t.TSType,\n falseType: t.TSType,\n): t.TSConditionalType {\n return validateNode<t.TSConditionalType>({\n type: \"TSConditionalType\",\n checkType,\n extendsType,\n trueType,\n falseType,\n });\n}\nexport { tsConditionalType as tSConditionalType };\nexport function tsInferType(typeParameter: t.TSTypeParameter): t.TSInferType {\n return validateNode<t.TSInferType>({\n type: \"TSInferType\",\n typeParameter,\n });\n}\nexport { tsInferType as tSInferType };\nexport function tsParenthesizedType(\n typeAnnotation: t.TSType,\n): t.TSParenthesizedType {\n return validateNode<t.TSParenthesizedType>({\n type: \"TSParenthesizedType\",\n typeAnnotation,\n });\n}\nexport { tsParenthesizedType as tSParenthesizedType };\nexport function tsTypeOperator(typeAnnotation: t.TSType): t.TSTypeOperator {\n return validateNode<t.TSTypeOperator>({\n type: \"TSTypeOperator\",\n typeAnnotation,\n operator: null,\n });\n}\nexport { tsTypeOperator as tSTypeOperator };\nexport function tsIndexedAccessType(\n objectType: t.TSType,\n indexType: t.TSType,\n): t.TSIndexedAccessType {\n return validateNode<t.TSIndexedAccessType>({\n type: \"TSIndexedAccessType\",\n objectType,\n indexType,\n });\n}\nexport { tsIndexedAccessType as tSIndexedAccessType };\nexport function tsMappedType(\n typeParameter: t.TSTypeParameter,\n typeAnnotation: t.TSType | null = null,\n nameType: t.TSType | null = null,\n): t.TSMappedType {\n return validateNode<t.TSMappedType>({\n type: \"TSMappedType\",\n typeParameter,\n typeAnnotation,\n nameType,\n });\n}\nexport { tsMappedType as tSMappedType };\nexport function tsLiteralType(\n literal:\n | t.NumericLiteral\n | t.StringLiteral\n | t.BooleanLiteral\n | t.BigIntLiteral\n | t.TemplateLiteral\n | t.UnaryExpression,\n): t.TSLiteralType {\n return validateNode<t.TSLiteralType>({\n type: \"TSLiteralType\",\n literal,\n });\n}\nexport { tsLiteralType as tSLiteralType };\nexport function tsExpressionWithTypeArguments(\n expression: t.TSEntityName,\n typeParameters: t.TSTypeParameterInstantiation | null = null,\n): t.TSExpressionWithTypeArguments {\n return validateNode<t.TSExpressionWithTypeArguments>({\n type: \"TSExpressionWithTypeArguments\",\n expression,\n typeParameters,\n });\n}\nexport { tsExpressionWithTypeArguments as tSExpressionWithTypeArguments };\nexport function tsInterfaceDeclaration(\n id: t.Identifier,\n typeParameters: t.TSTypeParameterDeclaration | null | undefined = null,\n _extends: Array<t.TSExpressionWithTypeArguments> | null | undefined = null,\n body: t.TSInterfaceBody,\n): t.TSInterfaceDeclaration {\n return validateNode<t.TSInterfaceDeclaration>({\n type: \"TSInterfaceDeclaration\",\n id,\n typeParameters,\n extends: _extends,\n body,\n });\n}\nexport { tsInterfaceDeclaration as tSInterfaceDeclaration };\nexport function tsInterfaceBody(\n body: Array<t.TSTypeElement>,\n): t.TSInterfaceBody {\n return validateNode<t.TSInterfaceBody>({\n type: \"TSInterfaceBody\",\n body,\n });\n}\nexport { tsInterfaceBody as tSInterfaceBody };\nexport function tsTypeAliasDeclaration(\n id: t.Identifier,\n typeParameters: t.TSTypeParameterDeclaration | null | undefined = null,\n typeAnnotation: t.TSType,\n): t.TSTypeAliasDeclaration {\n return validateNode<t.TSTypeAliasDeclaration>({\n type: \"TSTypeAliasDeclaration\",\n id,\n typeParameters,\n typeAnnotation,\n });\n}\nexport { tsTypeAliasDeclaration as tSTypeAliasDeclaration };\nexport function tsInstantiationExpression(\n expression: t.Expression,\n typeParameters: t.TSTypeParameterInstantiation | null = null,\n): t.TSInstantiationExpression {\n return validateNode<t.TSInstantiationExpression>({\n type: \"TSInstantiationExpression\",\n expression,\n typeParameters,\n });\n}\nexport { tsInstantiationExpression as tSInstantiationExpression };\nexport function tsAsExpression(\n expression: t.Expression,\n typeAnnotation: t.TSType,\n): t.TSAsExpression {\n return validateNode<t.TSAsExpression>({\n type: \"TSAsExpression\",\n expression,\n typeAnnotation,\n });\n}\nexport { tsAsExpression as tSAsExpression };\nexport function tsSatisfiesExpression(\n expression: t.Expression,\n typeAnnotation: t.TSType,\n): t.TSSatisfiesExpression {\n return validateNode<t.TSSatisfiesExpression>({\n type: \"TSSatisfiesExpression\",\n expression,\n typeAnnotation,\n });\n}\nexport { tsSatisfiesExpression as tSSatisfiesExpression };\nexport function tsTypeAssertion(\n typeAnnotation: t.TSType,\n expression: t.Expression,\n): t.TSTypeAssertion {\n return validateNode<t.TSTypeAssertion>({\n type: \"TSTypeAssertion\",\n typeAnnotation,\n expression,\n });\n}\nexport { tsTypeAssertion as tSTypeAssertion };\nexport function tsEnumDeclaration(\n id: t.Identifier,\n members: Array<t.TSEnumMember>,\n): t.TSEnumDeclaration {\n return validateNode<t.TSEnumDeclaration>({\n type: \"TSEnumDeclaration\",\n id,\n members,\n });\n}\nexport { tsEnumDeclaration as tSEnumDeclaration };\nexport function tsEnumMember(\n id: t.Identifier | t.StringLiteral,\n initializer: t.Expression | null = null,\n): t.TSEnumMember {\n return validateNode<t.TSEnumMember>({\n type: \"TSEnumMember\",\n id,\n initializer,\n });\n}\nexport { tsEnumMember as tSEnumMember };\nexport function tsModuleDeclaration(\n id: t.Identifier | t.StringLiteral,\n body: t.TSModuleBlock | t.TSModuleDeclaration,\n): t.TSModuleDeclaration {\n return validateNode<t.TSModuleDeclaration>({\n type: \"TSModuleDeclaration\",\n id,\n body,\n });\n}\nexport { tsModuleDeclaration as tSModuleDeclaration };\nexport function tsModuleBlock(body: Array<t.Statement>): t.TSModuleBlock {\n return validateNode<t.TSModuleBlock>({\n type: \"TSModuleBlock\",\n body,\n });\n}\nexport { tsModuleBlock as tSModuleBlock };\nexport function tsImportType(\n argument: t.StringLiteral,\n qualifier: t.TSEntityName | null = null,\n typeParameters: t.TSTypeParameterInstantiation | null = null,\n): t.TSImportType {\n return validateNode<t.TSImportType>({\n type: \"TSImportType\",\n argument,\n qualifier,\n typeParameters,\n });\n}\nexport { tsImportType as tSImportType };\nexport function tsImportEqualsDeclaration(\n id: t.Identifier,\n moduleReference: t.TSEntityName | t.TSExternalModuleReference,\n): t.TSImportEqualsDeclaration {\n return validateNode<t.TSImportEqualsDeclaration>({\n type: \"TSImportEqualsDeclaration\",\n id,\n moduleReference,\n isExport: null,\n });\n}\nexport { tsImportEqualsDeclaration as tSImportEqualsDeclaration };\nexport function tsExternalModuleReference(\n expression: t.StringLiteral,\n): t.TSExternalModuleReference {\n return validateNode<t.TSExternalModuleReference>({\n type: \"TSExternalModuleReference\",\n expression,\n });\n}\nexport { tsExternalModuleReference as tSExternalModuleReference };\nexport function tsNonNullExpression(\n expression: t.Expression,\n): t.TSNonNullExpression {\n return validateNode<t.TSNonNullExpression>({\n type: \"TSNonNullExpression\",\n expression,\n });\n}\nexport { tsNonNullExpression as tSNonNullExpression };\nexport function tsExportAssignment(\n expression: t.Expression,\n): t.TSExportAssignment {\n return validateNode<t.TSExportAssignment>({\n type: \"TSExportAssignment\",\n expression,\n });\n}\nexport { tsExportAssignment as tSExportAssignment };\nexport function tsNamespaceExportDeclaration(\n id: t.Identifier,\n): t.TSNamespaceExportDeclaration {\n return validateNode<t.TSNamespaceExportDeclaration>({\n type: \"TSNamespaceExportDeclaration\",\n id,\n });\n}\nexport { tsNamespaceExportDeclaration as tSNamespaceExportDeclaration };\nexport function tsTypeAnnotation(typeAnnotation: t.TSType): t.TSTypeAnnotation {\n return validateNode<t.TSTypeAnnotation>({\n type: \"TSTypeAnnotation\",\n typeAnnotation,\n });\n}\nexport { tsTypeAnnotation as tSTypeAnnotation };\nexport function tsTypeParameterInstantiation(\n params: Array<t.TSType>,\n): t.TSTypeParameterInstantiation {\n return validateNode<t.TSTypeParameterInstantiation>({\n type: \"TSTypeParameterInstantiation\",\n params,\n });\n}\nexport { tsTypeParameterInstantiation as tSTypeParameterInstantiation };\nexport function tsTypeParameterDeclaration(\n params: Array<t.TSTypeParameter>,\n): t.TSTypeParameterDeclaration {\n return validateNode<t.TSTypeParameterDeclaration>({\n type: \"TSTypeParameterDeclaration\",\n params,\n });\n}\nexport { tsTypeParameterDeclaration as tSTypeParameterDeclaration };\nexport function tsTypeParameter(\n constraint: t.TSType | null | undefined = null,\n _default: t.TSType | null | undefined = null,\n name: string,\n): t.TSTypeParameter {\n return validateNode<t.TSTypeParameter>({\n type: \"TSTypeParameter\",\n constraint,\n default: _default,\n name,\n });\n}\nexport { tsTypeParameter as tSTypeParameter };\n/** @deprecated */\nfunction NumberLiteral(value: number) {\n deprecationWarning(\"NumberLiteral\", \"NumericLiteral\", \"The node type \");\n return numericLiteral(value);\n}\nexport { NumberLiteral as numberLiteral };\n/** @deprecated */\nfunction RegexLiteral(pattern: string, flags: string = \"\") {\n deprecationWarning(\"RegexLiteral\", \"RegExpLiteral\", \"The node type \");\n return regExpLiteral(pattern, flags);\n}\nexport { RegexLiteral as regexLiteral };\n/** @deprecated */\nfunction RestProperty(argument: t.LVal) {\n deprecationWarning(\"RestProperty\", \"RestElement\", \"The node type \");\n return restElement(argument);\n}\nexport { RestProperty as restProperty };\n/** @deprecated */\nfunction SpreadProperty(argument: t.Expression) {\n deprecationWarning(\"SpreadProperty\", \"SpreadElement\", \"The node type \");\n return spreadElement(argument);\n}\nexport { SpreadProperty as spreadProperty };\n","import { stringLiteral } from \"../../builders/generated/index.ts\";\nimport type * as t from \"../../index.ts\";\nimport { inherits } from \"../../index.ts\";\n\nexport default function cleanJSXElementLiteralChild(\n child: t.JSXText,\n args: Array<t.Node>,\n) {\n const lines = child.value.split(/\\r\\n|\\n|\\r/);\n\n let lastNonEmptyLine = 0;\n\n for (let i = 0; i < lines.length; i++) {\n if (lines[i].match(/[^ \\t]/)) {\n lastNonEmptyLine = i;\n }\n }\n\n let str = \"\";\n\n for (let i = 0; i < lines.length; i++) {\n const line = lines[i];\n\n const isFirstLine = i === 0;\n const isLastLine = i === lines.length - 1;\n const isLastNonEmptyLine = i === lastNonEmptyLine;\n\n // replace rendered whitespace tabs with spaces\n let trimmedLine = line.replace(/\\t/g, \" \");\n\n // trim whitespace touching a newline\n if (!isFirstLine) {\n trimmedLine = trimmedLine.replace(/^[ ]+/, \"\");\n }\n\n // trim whitespace touching an endline\n if (!isLastLine) {\n trimmedLine = trimmedLine.replace(/[ ]+$/, \"\");\n }\n\n if (trimmedLine) {\n if (!isLastNonEmptyLine) {\n trimmedLine += \" \";\n }\n\n str += trimmedLine;\n }\n }\n\n if (str) args.push(inherits(stringLiteral(str), child));\n}\n","import {\n isJSXText,\n isJSXExpressionContainer,\n isJSXEmptyExpression,\n} from \"../../validators/generated/index.ts\";\nimport cleanJSXElementLiteralChild from \"../../utils/react/cleanJSXElementLiteralChild.ts\";\nimport type * as t from \"../../index.ts\";\n\ntype ReturnedChild =\n | t.JSXSpreadChild\n | t.JSXElement\n | t.JSXFragment\n | t.Expression;\n\nexport default function buildChildren(\n node: t.JSXElement | t.JSXFragment,\n): ReturnedChild[] {\n const elements = [];\n\n for (let i = 0; i < node.children.length; i++) {\n let child: any = node.children[i];\n\n if (isJSXText(child)) {\n cleanJSXElementLiteralChild(child, elements);\n continue;\n }\n\n if (isJSXExpressionContainer(child)) child = child.expression;\n if (isJSXEmptyExpression(child)) continue;\n\n elements.push(child);\n }\n\n return elements;\n}\n","import { VISITOR_KEYS } from \"../definitions/index.ts\";\nimport type * as t from \"../index.ts\";\n\nexport default function isNode(node: any): node is t.Node {\n return !!(node && VISITOR_KEYS[node.type]);\n}\n","import isNode from \"../validators/isNode.ts\";\nimport type * as t from \"../index.ts\";\n\nexport default function assertNode(node?: any): asserts node is t.Node {\n if (!isNode(node)) {\n const type = node?.type ?? JSON.stringify(node);\n throw new TypeError(`Not a valid node of type \"${type}\"`);\n }\n}\n","/*\n * This file is auto-generated! Do not modify it directly.\n * To re-generate run 'make build'\n */\nimport is from \"../../validators/is.ts\";\nimport type * as t from \"../../index.ts\";\nimport deprecationWarning from \"../../utils/deprecationWarning.ts\";\n\nfunction assert(type: string, node: any, opts?: any): void {\n if (!is(type, node, opts)) {\n throw new Error(\n `Expected type \"${type}\" with option ${JSON.stringify(opts)}, ` +\n `but instead got \"${node.type}\".`,\n );\n }\n}\n\nexport function assertArrayExpression(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.ArrayExpression {\n assert(\"ArrayExpression\", node, opts);\n}\nexport function assertAssignmentExpression(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.AssignmentExpression {\n assert(\"AssignmentExpression\", node, opts);\n}\nexport function assertBinaryExpression(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.BinaryExpression {\n assert(\"BinaryExpression\", node, opts);\n}\nexport function assertInterpreterDirective(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.InterpreterDirective {\n assert(\"InterpreterDirective\", node, opts);\n}\nexport function assertDirective(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.Directive {\n assert(\"Directive\", node, opts);\n}\nexport function assertDirectiveLiteral(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.DirectiveLiteral {\n assert(\"DirectiveLiteral\", node, opts);\n}\nexport function assertBlockStatement(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.BlockStatement {\n assert(\"BlockStatement\", node, opts);\n}\nexport function assertBreakStatement(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.BreakStatement {\n assert(\"BreakStatement\", node, opts);\n}\nexport function assertCallExpression(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.CallExpression {\n assert(\"CallExpression\", node, opts);\n}\nexport function assertCatchClause(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.CatchClause {\n assert(\"CatchClause\", node, opts);\n}\nexport function assertConditionalExpression(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.ConditionalExpression {\n assert(\"ConditionalExpression\", node, opts);\n}\nexport function assertContinueStatement(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.ContinueStatement {\n assert(\"ContinueStatement\", node, opts);\n}\nexport function assertDebuggerStatement(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.DebuggerStatement {\n assert(\"DebuggerStatement\", node, opts);\n}\nexport function assertDoWhileStatement(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.DoWhileStatement {\n assert(\"DoWhileStatement\", node, opts);\n}\nexport function assertEmptyStatement(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.EmptyStatement {\n assert(\"EmptyStatement\", node, opts);\n}\nexport function assertExpressionStatement(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.ExpressionStatement {\n assert(\"ExpressionStatement\", node, opts);\n}\nexport function assertFile(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.File {\n assert(\"File\", node, opts);\n}\nexport function assertForInStatement(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.ForInStatement {\n assert(\"ForInStatement\", node, opts);\n}\nexport function assertForStatement(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.ForStatement {\n assert(\"ForStatement\", node, opts);\n}\nexport function assertFunctionDeclaration(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.FunctionDeclaration {\n assert(\"FunctionDeclaration\", node, opts);\n}\nexport function assertFunctionExpression(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.FunctionExpression {\n assert(\"FunctionExpression\", node, opts);\n}\nexport function assertIdentifier(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.Identifier {\n assert(\"Identifier\", node, opts);\n}\nexport function assertIfStatement(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.IfStatement {\n assert(\"IfStatement\", node, opts);\n}\nexport function assertLabeledStatement(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.LabeledStatement {\n assert(\"LabeledStatement\", node, opts);\n}\nexport function assertStringLiteral(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.StringLiteral {\n assert(\"StringLiteral\", node, opts);\n}\nexport function assertNumericLiteral(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.NumericLiteral {\n assert(\"NumericLiteral\", node, opts);\n}\nexport function assertNullLiteral(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.NullLiteral {\n assert(\"NullLiteral\", node, opts);\n}\nexport function assertBooleanLiteral(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.BooleanLiteral {\n assert(\"BooleanLiteral\", node, opts);\n}\nexport function assertRegExpLiteral(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.RegExpLiteral {\n assert(\"RegExpLiteral\", node, opts);\n}\nexport function assertLogicalExpression(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.LogicalExpression {\n assert(\"LogicalExpression\", node, opts);\n}\nexport function assertMemberExpression(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.MemberExpression {\n assert(\"MemberExpression\", node, opts);\n}\nexport function assertNewExpression(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.NewExpression {\n assert(\"NewExpression\", node, opts);\n}\nexport function assertProgram(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.Program {\n assert(\"Program\", node, opts);\n}\nexport function assertObjectExpression(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.ObjectExpression {\n assert(\"ObjectExpression\", node, opts);\n}\nexport function assertObjectMethod(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.ObjectMethod {\n assert(\"ObjectMethod\", node, opts);\n}\nexport function assertObjectProperty(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.ObjectProperty {\n assert(\"ObjectProperty\", node, opts);\n}\nexport function assertRestElement(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.RestElement {\n assert(\"RestElement\", node, opts);\n}\nexport function assertReturnStatement(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.ReturnStatement {\n assert(\"ReturnStatement\", node, opts);\n}\nexport function assertSequenceExpression(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.SequenceExpression {\n assert(\"SequenceExpression\", node, opts);\n}\nexport function assertParenthesizedExpression(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.ParenthesizedExpression {\n assert(\"ParenthesizedExpression\", node, opts);\n}\nexport function assertSwitchCase(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.SwitchCase {\n assert(\"SwitchCase\", node, opts);\n}\nexport function assertSwitchStatement(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.SwitchStatement {\n assert(\"SwitchStatement\", node, opts);\n}\nexport function assertThisExpression(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.ThisExpression {\n assert(\"ThisExpression\", node, opts);\n}\nexport function assertThrowStatement(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.ThrowStatement {\n assert(\"ThrowStatement\", node, opts);\n}\nexport function assertTryStatement(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.TryStatement {\n assert(\"TryStatement\", node, opts);\n}\nexport function assertUnaryExpression(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.UnaryExpression {\n assert(\"UnaryExpression\", node, opts);\n}\nexport function assertUpdateExpression(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.UpdateExpression {\n assert(\"UpdateExpression\", node, opts);\n}\nexport function assertVariableDeclaration(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.VariableDeclaration {\n assert(\"VariableDeclaration\", node, opts);\n}\nexport function assertVariableDeclarator(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.VariableDeclarator {\n assert(\"VariableDeclarator\", node, opts);\n}\nexport function assertWhileStatement(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.WhileStatement {\n assert(\"WhileStatement\", node, opts);\n}\nexport function assertWithStatement(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.WithStatement {\n assert(\"WithStatement\", node, opts);\n}\nexport function assertAssignmentPattern(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.AssignmentPattern {\n assert(\"AssignmentPattern\", node, opts);\n}\nexport function assertArrayPattern(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.ArrayPattern {\n assert(\"ArrayPattern\", node, opts);\n}\nexport function assertArrowFunctionExpression(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.ArrowFunctionExpression {\n assert(\"ArrowFunctionExpression\", node, opts);\n}\nexport function assertClassBody(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.ClassBody {\n assert(\"ClassBody\", node, opts);\n}\nexport function assertClassExpression(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.ClassExpression {\n assert(\"ClassExpression\", node, opts);\n}\nexport function assertClassDeclaration(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.ClassDeclaration {\n assert(\"ClassDeclaration\", node, opts);\n}\nexport function assertExportAllDeclaration(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.ExportAllDeclaration {\n assert(\"ExportAllDeclaration\", node, opts);\n}\nexport function assertExportDefaultDeclaration(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.ExportDefaultDeclaration {\n assert(\"ExportDefaultDeclaration\", node, opts);\n}\nexport function assertExportNamedDeclaration(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.ExportNamedDeclaration {\n assert(\"ExportNamedDeclaration\", node, opts);\n}\nexport function assertExportSpecifier(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.ExportSpecifier {\n assert(\"ExportSpecifier\", node, opts);\n}\nexport function assertForOfStatement(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.ForOfStatement {\n assert(\"ForOfStatement\", node, opts);\n}\nexport function assertImportDeclaration(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.ImportDeclaration {\n assert(\"ImportDeclaration\", node, opts);\n}\nexport function assertImportDefaultSpecifier(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.ImportDefaultSpecifier {\n assert(\"ImportDefaultSpecifier\", node, opts);\n}\nexport function assertImportNamespaceSpecifier(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.ImportNamespaceSpecifier {\n assert(\"ImportNamespaceSpecifier\", node, opts);\n}\nexport function assertImportSpecifier(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.ImportSpecifier {\n assert(\"ImportSpecifier\", node, opts);\n}\nexport function assertImportExpression(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.ImportExpression {\n assert(\"ImportExpression\", node, opts);\n}\nexport function assertMetaProperty(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.MetaProperty {\n assert(\"MetaProperty\", node, opts);\n}\nexport function assertClassMethod(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.ClassMethod {\n assert(\"ClassMethod\", node, opts);\n}\nexport function assertObjectPattern(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.ObjectPattern {\n assert(\"ObjectPattern\", node, opts);\n}\nexport function assertSpreadElement(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.SpreadElement {\n assert(\"SpreadElement\", node, opts);\n}\nexport function assertSuper(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.Super {\n assert(\"Super\", node, opts);\n}\nexport function assertTaggedTemplateExpression(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.TaggedTemplateExpression {\n assert(\"TaggedTemplateExpression\", node, opts);\n}\nexport function assertTemplateElement(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.TemplateElement {\n assert(\"TemplateElement\", node, opts);\n}\nexport function assertTemplateLiteral(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.TemplateLiteral {\n assert(\"TemplateLiteral\", node, opts);\n}\nexport function assertYieldExpression(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.YieldExpression {\n assert(\"YieldExpression\", node, opts);\n}\nexport function assertAwaitExpression(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.AwaitExpression {\n assert(\"AwaitExpression\", node, opts);\n}\nexport function assertImport(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.Import {\n assert(\"Import\", node, opts);\n}\nexport function assertBigIntLiteral(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.BigIntLiteral {\n assert(\"BigIntLiteral\", node, opts);\n}\nexport function assertExportNamespaceSpecifier(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.ExportNamespaceSpecifier {\n assert(\"ExportNamespaceSpecifier\", node, opts);\n}\nexport function assertOptionalMemberExpression(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.OptionalMemberExpression {\n assert(\"OptionalMemberExpression\", node, opts);\n}\nexport function assertOptionalCallExpression(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.OptionalCallExpression {\n assert(\"OptionalCallExpression\", node, opts);\n}\nexport function assertClassProperty(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.ClassProperty {\n assert(\"ClassProperty\", node, opts);\n}\nexport function assertClassAccessorProperty(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.ClassAccessorProperty {\n assert(\"ClassAccessorProperty\", node, opts);\n}\nexport function assertClassPrivateProperty(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.ClassPrivateProperty {\n assert(\"ClassPrivateProperty\", node, opts);\n}\nexport function assertClassPrivateMethod(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.ClassPrivateMethod {\n assert(\"ClassPrivateMethod\", node, opts);\n}\nexport function assertPrivateName(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.PrivateName {\n assert(\"PrivateName\", node, opts);\n}\nexport function assertStaticBlock(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.StaticBlock {\n assert(\"StaticBlock\", node, opts);\n}\nexport function assertAnyTypeAnnotation(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.AnyTypeAnnotation {\n assert(\"AnyTypeAnnotation\", node, opts);\n}\nexport function assertArrayTypeAnnotation(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.ArrayTypeAnnotation {\n assert(\"ArrayTypeAnnotation\", node, opts);\n}\nexport function assertBooleanTypeAnnotation(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.BooleanTypeAnnotation {\n assert(\"BooleanTypeAnnotation\", node, opts);\n}\nexport function assertBooleanLiteralTypeAnnotation(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.BooleanLiteralTypeAnnotation {\n assert(\"BooleanLiteralTypeAnnotation\", node, opts);\n}\nexport function assertNullLiteralTypeAnnotation(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.NullLiteralTypeAnnotation {\n assert(\"NullLiteralTypeAnnotation\", node, opts);\n}\nexport function assertClassImplements(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.ClassImplements {\n assert(\"ClassImplements\", node, opts);\n}\nexport function assertDeclareClass(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.DeclareClass {\n assert(\"DeclareClass\", node, opts);\n}\nexport function assertDeclareFunction(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.DeclareFunction {\n assert(\"DeclareFunction\", node, opts);\n}\nexport function assertDeclareInterface(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.DeclareInterface {\n assert(\"DeclareInterface\", node, opts);\n}\nexport function assertDeclareModule(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.DeclareModule {\n assert(\"DeclareModule\", node, opts);\n}\nexport function assertDeclareModuleExports(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.DeclareModuleExports {\n assert(\"DeclareModuleExports\", node, opts);\n}\nexport function assertDeclareTypeAlias(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.DeclareTypeAlias {\n assert(\"DeclareTypeAlias\", node, opts);\n}\nexport function assertDeclareOpaqueType(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.DeclareOpaqueType {\n assert(\"DeclareOpaqueType\", node, opts);\n}\nexport function assertDeclareVariable(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.DeclareVariable {\n assert(\"DeclareVariable\", node, opts);\n}\nexport function assertDeclareExportDeclaration(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.DeclareExportDeclaration {\n assert(\"DeclareExportDeclaration\", node, opts);\n}\nexport function assertDeclareExportAllDeclaration(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.DeclareExportAllDeclaration {\n assert(\"DeclareExportAllDeclaration\", node, opts);\n}\nexport function assertDeclaredPredicate(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.DeclaredPredicate {\n assert(\"DeclaredPredicate\", node, opts);\n}\nexport function assertExistsTypeAnnotation(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.ExistsTypeAnnotation {\n assert(\"ExistsTypeAnnotation\", node, opts);\n}\nexport function assertFunctionTypeAnnotation(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.FunctionTypeAnnotation {\n assert(\"FunctionTypeAnnotation\", node, opts);\n}\nexport function assertFunctionTypeParam(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.FunctionTypeParam {\n assert(\"FunctionTypeParam\", node, opts);\n}\nexport function assertGenericTypeAnnotation(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.GenericTypeAnnotation {\n assert(\"GenericTypeAnnotation\", node, opts);\n}\nexport function assertInferredPredicate(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.InferredPredicate {\n assert(\"InferredPredicate\", node, opts);\n}\nexport function assertInterfaceExtends(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.InterfaceExtends {\n assert(\"InterfaceExtends\", node, opts);\n}\nexport function assertInterfaceDeclaration(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.InterfaceDeclaration {\n assert(\"InterfaceDeclaration\", node, opts);\n}\nexport function assertInterfaceTypeAnnotation(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.InterfaceTypeAnnotation {\n assert(\"InterfaceTypeAnnotation\", node, opts);\n}\nexport function assertIntersectionTypeAnnotation(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.IntersectionTypeAnnotation {\n assert(\"IntersectionTypeAnnotation\", node, opts);\n}\nexport function assertMixedTypeAnnotation(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.MixedTypeAnnotation {\n assert(\"MixedTypeAnnotation\", node, opts);\n}\nexport function assertEmptyTypeAnnotation(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.EmptyTypeAnnotation {\n assert(\"EmptyTypeAnnotation\", node, opts);\n}\nexport function assertNullableTypeAnnotation(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.NullableTypeAnnotation {\n assert(\"NullableTypeAnnotation\", node, opts);\n}\nexport function assertNumberLiteralTypeAnnotation(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.NumberLiteralTypeAnnotation {\n assert(\"NumberLiteralTypeAnnotation\", node, opts);\n}\nexport function assertNumberTypeAnnotation(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.NumberTypeAnnotation {\n assert(\"NumberTypeAnnotation\", node, opts);\n}\nexport function assertObjectTypeAnnotation(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.ObjectTypeAnnotation {\n assert(\"ObjectTypeAnnotation\", node, opts);\n}\nexport function assertObjectTypeInternalSlot(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.ObjectTypeInternalSlot {\n assert(\"ObjectTypeInternalSlot\", node, opts);\n}\nexport function assertObjectTypeCallProperty(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.ObjectTypeCallProperty {\n assert(\"ObjectTypeCallProperty\", node, opts);\n}\nexport function assertObjectTypeIndexer(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.ObjectTypeIndexer {\n assert(\"ObjectTypeIndexer\", node, opts);\n}\nexport function assertObjectTypeProperty(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.ObjectTypeProperty {\n assert(\"ObjectTypeProperty\", node, opts);\n}\nexport function assertObjectTypeSpreadProperty(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.ObjectTypeSpreadProperty {\n assert(\"ObjectTypeSpreadProperty\", node, opts);\n}\nexport function assertOpaqueType(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.OpaqueType {\n assert(\"OpaqueType\", node, opts);\n}\nexport function assertQualifiedTypeIdentifier(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.QualifiedTypeIdentifier {\n assert(\"QualifiedTypeIdentifier\", node, opts);\n}\nexport function assertStringLiteralTypeAnnotation(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.StringLiteralTypeAnnotation {\n assert(\"StringLiteralTypeAnnotation\", node, opts);\n}\nexport function assertStringTypeAnnotation(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.StringTypeAnnotation {\n assert(\"StringTypeAnnotation\", node, opts);\n}\nexport function assertSymbolTypeAnnotation(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.SymbolTypeAnnotation {\n assert(\"SymbolTypeAnnotation\", node, opts);\n}\nexport function assertThisTypeAnnotation(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.ThisTypeAnnotation {\n assert(\"ThisTypeAnnotation\", node, opts);\n}\nexport function assertTupleTypeAnnotation(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.TupleTypeAnnotation {\n assert(\"TupleTypeAnnotation\", node, opts);\n}\nexport function assertTypeofTypeAnnotation(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.TypeofTypeAnnotation {\n assert(\"TypeofTypeAnnotation\", node, opts);\n}\nexport function assertTypeAlias(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.TypeAlias {\n assert(\"TypeAlias\", node, opts);\n}\nexport function assertTypeAnnotation(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.TypeAnnotation {\n assert(\"TypeAnnotation\", node, opts);\n}\nexport function assertTypeCastExpression(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.TypeCastExpression {\n assert(\"TypeCastExpression\", node, opts);\n}\nexport function assertTypeParameter(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.TypeParameter {\n assert(\"TypeParameter\", node, opts);\n}\nexport function assertTypeParameterDeclaration(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.TypeParameterDeclaration {\n assert(\"TypeParameterDeclaration\", node, opts);\n}\nexport function assertTypeParameterInstantiation(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.TypeParameterInstantiation {\n assert(\"TypeParameterInstantiation\", node, opts);\n}\nexport function assertUnionTypeAnnotation(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.UnionTypeAnnotation {\n assert(\"UnionTypeAnnotation\", node, opts);\n}\nexport function assertVariance(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.Variance {\n assert(\"Variance\", node, opts);\n}\nexport function assertVoidTypeAnnotation(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.VoidTypeAnnotation {\n assert(\"VoidTypeAnnotation\", node, opts);\n}\nexport function assertEnumDeclaration(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.EnumDeclaration {\n assert(\"EnumDeclaration\", node, opts);\n}\nexport function assertEnumBooleanBody(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.EnumBooleanBody {\n assert(\"EnumBooleanBody\", node, opts);\n}\nexport function assertEnumNumberBody(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.EnumNumberBody {\n assert(\"EnumNumberBody\", node, opts);\n}\nexport function assertEnumStringBody(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.EnumStringBody {\n assert(\"EnumStringBody\", node, opts);\n}\nexport function assertEnumSymbolBody(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.EnumSymbolBody {\n assert(\"EnumSymbolBody\", node, opts);\n}\nexport function assertEnumBooleanMember(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.EnumBooleanMember {\n assert(\"EnumBooleanMember\", node, opts);\n}\nexport function assertEnumNumberMember(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.EnumNumberMember {\n assert(\"EnumNumberMember\", node, opts);\n}\nexport function assertEnumStringMember(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.EnumStringMember {\n assert(\"EnumStringMember\", node, opts);\n}\nexport function assertEnumDefaultedMember(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.EnumDefaultedMember {\n assert(\"EnumDefaultedMember\", node, opts);\n}\nexport function assertIndexedAccessType(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.IndexedAccessType {\n assert(\"IndexedAccessType\", node, opts);\n}\nexport function assertOptionalIndexedAccessType(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.OptionalIndexedAccessType {\n assert(\"OptionalIndexedAccessType\", node, opts);\n}\nexport function assertJSXAttribute(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.JSXAttribute {\n assert(\"JSXAttribute\", node, opts);\n}\nexport function assertJSXClosingElement(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.JSXClosingElement {\n assert(\"JSXClosingElement\", node, opts);\n}\nexport function assertJSXElement(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.JSXElement {\n assert(\"JSXElement\", node, opts);\n}\nexport function assertJSXEmptyExpression(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.JSXEmptyExpression {\n assert(\"JSXEmptyExpression\", node, opts);\n}\nexport function assertJSXExpressionContainer(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.JSXExpressionContainer {\n assert(\"JSXExpressionContainer\", node, opts);\n}\nexport function assertJSXSpreadChild(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.JSXSpreadChild {\n assert(\"JSXSpreadChild\", node, opts);\n}\nexport function assertJSXIdentifier(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.JSXIdentifier {\n assert(\"JSXIdentifier\", node, opts);\n}\nexport function assertJSXMemberExpression(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.JSXMemberExpression {\n assert(\"JSXMemberExpression\", node, opts);\n}\nexport function assertJSXNamespacedName(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.JSXNamespacedName {\n assert(\"JSXNamespacedName\", node, opts);\n}\nexport function assertJSXOpeningElement(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.JSXOpeningElement {\n assert(\"JSXOpeningElement\", node, opts);\n}\nexport function assertJSXSpreadAttribute(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.JSXSpreadAttribute {\n assert(\"JSXSpreadAttribute\", node, opts);\n}\nexport function assertJSXText(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.JSXText {\n assert(\"JSXText\", node, opts);\n}\nexport function assertJSXFragment(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.JSXFragment {\n assert(\"JSXFragment\", node, opts);\n}\nexport function assertJSXOpeningFragment(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.JSXOpeningFragment {\n assert(\"JSXOpeningFragment\", node, opts);\n}\nexport function assertJSXClosingFragment(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.JSXClosingFragment {\n assert(\"JSXClosingFragment\", node, opts);\n}\nexport function assertNoop(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.Noop {\n assert(\"Noop\", node, opts);\n}\nexport function assertPlaceholder(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.Placeholder {\n assert(\"Placeholder\", node, opts);\n}\nexport function assertV8IntrinsicIdentifier(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.V8IntrinsicIdentifier {\n assert(\"V8IntrinsicIdentifier\", node, opts);\n}\nexport function assertArgumentPlaceholder(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.ArgumentPlaceholder {\n assert(\"ArgumentPlaceholder\", node, opts);\n}\nexport function assertBindExpression(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.BindExpression {\n assert(\"BindExpression\", node, opts);\n}\nexport function assertImportAttribute(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.ImportAttribute {\n assert(\"ImportAttribute\", node, opts);\n}\nexport function assertDecorator(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.Decorator {\n assert(\"Decorator\", node, opts);\n}\nexport function assertDoExpression(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.DoExpression {\n assert(\"DoExpression\", node, opts);\n}\nexport function assertExportDefaultSpecifier(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.ExportDefaultSpecifier {\n assert(\"ExportDefaultSpecifier\", node, opts);\n}\nexport function assertRecordExpression(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.RecordExpression {\n assert(\"RecordExpression\", node, opts);\n}\nexport function assertTupleExpression(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.TupleExpression {\n assert(\"TupleExpression\", node, opts);\n}\nexport function assertDecimalLiteral(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.DecimalLiteral {\n assert(\"DecimalLiteral\", node, opts);\n}\nexport function assertModuleExpression(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.ModuleExpression {\n assert(\"ModuleExpression\", node, opts);\n}\nexport function assertTopicReference(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.TopicReference {\n assert(\"TopicReference\", node, opts);\n}\nexport function assertPipelineTopicExpression(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.PipelineTopicExpression {\n assert(\"PipelineTopicExpression\", node, opts);\n}\nexport function assertPipelineBareFunction(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.PipelineBareFunction {\n assert(\"PipelineBareFunction\", node, opts);\n}\nexport function assertPipelinePrimaryTopicReference(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.PipelinePrimaryTopicReference {\n assert(\"PipelinePrimaryTopicReference\", node, opts);\n}\nexport function assertTSParameterProperty(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.TSParameterProperty {\n assert(\"TSParameterProperty\", node, opts);\n}\nexport function assertTSDeclareFunction(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.TSDeclareFunction {\n assert(\"TSDeclareFunction\", node, opts);\n}\nexport function assertTSDeclareMethod(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.TSDeclareMethod {\n assert(\"TSDeclareMethod\", node, opts);\n}\nexport function assertTSQualifiedName(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.TSQualifiedName {\n assert(\"TSQualifiedName\", node, opts);\n}\nexport function assertTSCallSignatureDeclaration(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.TSCallSignatureDeclaration {\n assert(\"TSCallSignatureDeclaration\", node, opts);\n}\nexport function assertTSConstructSignatureDeclaration(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.TSConstructSignatureDeclaration {\n assert(\"TSConstructSignatureDeclaration\", node, opts);\n}\nexport function assertTSPropertySignature(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.TSPropertySignature {\n assert(\"TSPropertySignature\", node, opts);\n}\nexport function assertTSMethodSignature(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.TSMethodSignature {\n assert(\"TSMethodSignature\", node, opts);\n}\nexport function assertTSIndexSignature(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.TSIndexSignature {\n assert(\"TSIndexSignature\", node, opts);\n}\nexport function assertTSAnyKeyword(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.TSAnyKeyword {\n assert(\"TSAnyKeyword\", node, opts);\n}\nexport function assertTSBooleanKeyword(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.TSBooleanKeyword {\n assert(\"TSBooleanKeyword\", node, opts);\n}\nexport function assertTSBigIntKeyword(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.TSBigIntKeyword {\n assert(\"TSBigIntKeyword\", node, opts);\n}\nexport function assertTSIntrinsicKeyword(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.TSIntrinsicKeyword {\n assert(\"TSIntrinsicKeyword\", node, opts);\n}\nexport function assertTSNeverKeyword(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.TSNeverKeyword {\n assert(\"TSNeverKeyword\", node, opts);\n}\nexport function assertTSNullKeyword(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.TSNullKeyword {\n assert(\"TSNullKeyword\", node, opts);\n}\nexport function assertTSNumberKeyword(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.TSNumberKeyword {\n assert(\"TSNumberKeyword\", node, opts);\n}\nexport function assertTSObjectKeyword(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.TSObjectKeyword {\n assert(\"TSObjectKeyword\", node, opts);\n}\nexport function assertTSStringKeyword(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.TSStringKeyword {\n assert(\"TSStringKeyword\", node, opts);\n}\nexport function assertTSSymbolKeyword(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.TSSymbolKeyword {\n assert(\"TSSymbolKeyword\", node, opts);\n}\nexport function assertTSUndefinedKeyword(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.TSUndefinedKeyword {\n assert(\"TSUndefinedKeyword\", node, opts);\n}\nexport function assertTSUnknownKeyword(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.TSUnknownKeyword {\n assert(\"TSUnknownKeyword\", node, opts);\n}\nexport function assertTSVoidKeyword(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.TSVoidKeyword {\n assert(\"TSVoidKeyword\", node, opts);\n}\nexport function assertTSThisType(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.TSThisType {\n assert(\"TSThisType\", node, opts);\n}\nexport function assertTSFunctionType(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.TSFunctionType {\n assert(\"TSFunctionType\", node, opts);\n}\nexport function assertTSConstructorType(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.TSConstructorType {\n assert(\"TSConstructorType\", node, opts);\n}\nexport function assertTSTypeReference(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.TSTypeReference {\n assert(\"TSTypeReference\", node, opts);\n}\nexport function assertTSTypePredicate(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.TSTypePredicate {\n assert(\"TSTypePredicate\", node, opts);\n}\nexport function assertTSTypeQuery(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.TSTypeQuery {\n assert(\"TSTypeQuery\", node, opts);\n}\nexport function assertTSTypeLiteral(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.TSTypeLiteral {\n assert(\"TSTypeLiteral\", node, opts);\n}\nexport function assertTSArrayType(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.TSArrayType {\n assert(\"TSArrayType\", node, opts);\n}\nexport function assertTSTupleType(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.TSTupleType {\n assert(\"TSTupleType\", node, opts);\n}\nexport function assertTSOptionalType(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.TSOptionalType {\n assert(\"TSOptionalType\", node, opts);\n}\nexport function assertTSRestType(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.TSRestType {\n assert(\"TSRestType\", node, opts);\n}\nexport function assertTSNamedTupleMember(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.TSNamedTupleMember {\n assert(\"TSNamedTupleMember\", node, opts);\n}\nexport function assertTSUnionType(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.TSUnionType {\n assert(\"TSUnionType\", node, opts);\n}\nexport function assertTSIntersectionType(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.TSIntersectionType {\n assert(\"TSIntersectionType\", node, opts);\n}\nexport function assertTSConditionalType(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.TSConditionalType {\n assert(\"TSConditionalType\", node, opts);\n}\nexport function assertTSInferType(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.TSInferType {\n assert(\"TSInferType\", node, opts);\n}\nexport function assertTSParenthesizedType(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.TSParenthesizedType {\n assert(\"TSParenthesizedType\", node, opts);\n}\nexport function assertTSTypeOperator(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.TSTypeOperator {\n assert(\"TSTypeOperator\", node, opts);\n}\nexport function assertTSIndexedAccessType(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.TSIndexedAccessType {\n assert(\"TSIndexedAccessType\", node, opts);\n}\nexport function assertTSMappedType(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.TSMappedType {\n assert(\"TSMappedType\", node, opts);\n}\nexport function assertTSLiteralType(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.TSLiteralType {\n assert(\"TSLiteralType\", node, opts);\n}\nexport function assertTSExpressionWithTypeArguments(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.TSExpressionWithTypeArguments {\n assert(\"TSExpressionWithTypeArguments\", node, opts);\n}\nexport function assertTSInterfaceDeclaration(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.TSInterfaceDeclaration {\n assert(\"TSInterfaceDeclaration\", node, opts);\n}\nexport function assertTSInterfaceBody(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.TSInterfaceBody {\n assert(\"TSInterfaceBody\", node, opts);\n}\nexport function assertTSTypeAliasDeclaration(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.TSTypeAliasDeclaration {\n assert(\"TSTypeAliasDeclaration\", node, opts);\n}\nexport function assertTSInstantiationExpression(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.TSInstantiationExpression {\n assert(\"TSInstantiationExpression\", node, opts);\n}\nexport function assertTSAsExpression(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.TSAsExpression {\n assert(\"TSAsExpression\", node, opts);\n}\nexport function assertTSSatisfiesExpression(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.TSSatisfiesExpression {\n assert(\"TSSatisfiesExpression\", node, opts);\n}\nexport function assertTSTypeAssertion(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.TSTypeAssertion {\n assert(\"TSTypeAssertion\", node, opts);\n}\nexport function assertTSEnumDeclaration(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.TSEnumDeclaration {\n assert(\"TSEnumDeclaration\", node, opts);\n}\nexport function assertTSEnumMember(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.TSEnumMember {\n assert(\"TSEnumMember\", node, opts);\n}\nexport function assertTSModuleDeclaration(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.TSModuleDeclaration {\n assert(\"TSModuleDeclaration\", node, opts);\n}\nexport function assertTSModuleBlock(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.TSModuleBlock {\n assert(\"TSModuleBlock\", node, opts);\n}\nexport function assertTSImportType(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.TSImportType {\n assert(\"TSImportType\", node, opts);\n}\nexport function assertTSImportEqualsDeclaration(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.TSImportEqualsDeclaration {\n assert(\"TSImportEqualsDeclaration\", node, opts);\n}\nexport function assertTSExternalModuleReference(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.TSExternalModuleReference {\n assert(\"TSExternalModuleReference\", node, opts);\n}\nexport function assertTSNonNullExpression(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.TSNonNullExpression {\n assert(\"TSNonNullExpression\", node, opts);\n}\nexport function assertTSExportAssignment(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.TSExportAssignment {\n assert(\"TSExportAssignment\", node, opts);\n}\nexport function assertTSNamespaceExportDeclaration(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.TSNamespaceExportDeclaration {\n assert(\"TSNamespaceExportDeclaration\", node, opts);\n}\nexport function assertTSTypeAnnotation(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.TSTypeAnnotation {\n assert(\"TSTypeAnnotation\", node, opts);\n}\nexport function assertTSTypeParameterInstantiation(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.TSTypeParameterInstantiation {\n assert(\"TSTypeParameterInstantiation\", node, opts);\n}\nexport function assertTSTypeParameterDeclaration(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.TSTypeParameterDeclaration {\n assert(\"TSTypeParameterDeclaration\", node, opts);\n}\nexport function assertTSTypeParameter(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.TSTypeParameter {\n assert(\"TSTypeParameter\", node, opts);\n}\nexport function assertStandardized(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.Standardized {\n assert(\"Standardized\", node, opts);\n}\nexport function assertExpression(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.Expression {\n assert(\"Expression\", node, opts);\n}\nexport function assertBinary(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.Binary {\n assert(\"Binary\", node, opts);\n}\nexport function assertScopable(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.Scopable {\n assert(\"Scopable\", node, opts);\n}\nexport function assertBlockParent(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.BlockParent {\n assert(\"BlockParent\", node, opts);\n}\nexport function assertBlock(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.Block {\n assert(\"Block\", node, opts);\n}\nexport function assertStatement(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.Statement {\n assert(\"Statement\", node, opts);\n}\nexport function assertTerminatorless(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.Terminatorless {\n assert(\"Terminatorless\", node, opts);\n}\nexport function assertCompletionStatement(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.CompletionStatement {\n assert(\"CompletionStatement\", node, opts);\n}\nexport function assertConditional(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.Conditional {\n assert(\"Conditional\", node, opts);\n}\nexport function assertLoop(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.Loop {\n assert(\"Loop\", node, opts);\n}\nexport function assertWhile(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.While {\n assert(\"While\", node, opts);\n}\nexport function assertExpressionWrapper(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.ExpressionWrapper {\n assert(\"ExpressionWrapper\", node, opts);\n}\nexport function assertFor(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.For {\n assert(\"For\", node, opts);\n}\nexport function assertForXStatement(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.ForXStatement {\n assert(\"ForXStatement\", node, opts);\n}\nexport function assertFunction(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.Function {\n assert(\"Function\", node, opts);\n}\nexport function assertFunctionParent(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.FunctionParent {\n assert(\"FunctionParent\", node, opts);\n}\nexport function assertPureish(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.Pureish {\n assert(\"Pureish\", node, opts);\n}\nexport function assertDeclaration(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.Declaration {\n assert(\"Declaration\", node, opts);\n}\nexport function assertPatternLike(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.PatternLike {\n assert(\"PatternLike\", node, opts);\n}\nexport function assertLVal(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.LVal {\n assert(\"LVal\", node, opts);\n}\nexport function assertTSEntityName(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.TSEntityName {\n assert(\"TSEntityName\", node, opts);\n}\nexport function assertLiteral(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.Literal {\n assert(\"Literal\", node, opts);\n}\nexport function assertImmutable(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.Immutable {\n assert(\"Immutable\", node, opts);\n}\nexport function assertUserWhitespacable(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.UserWhitespacable {\n assert(\"UserWhitespacable\", node, opts);\n}\nexport function assertMethod(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.Method {\n assert(\"Method\", node, opts);\n}\nexport function assertObjectMember(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.ObjectMember {\n assert(\"ObjectMember\", node, opts);\n}\nexport function assertProperty(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.Property {\n assert(\"Property\", node, opts);\n}\nexport function assertUnaryLike(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.UnaryLike {\n assert(\"UnaryLike\", node, opts);\n}\nexport function assertPattern(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.Pattern {\n assert(\"Pattern\", node, opts);\n}\nexport function assertClass(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.Class {\n assert(\"Class\", node, opts);\n}\nexport function assertImportOrExportDeclaration(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.ImportOrExportDeclaration {\n assert(\"ImportOrExportDeclaration\", node, opts);\n}\nexport function assertExportDeclaration(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.ExportDeclaration {\n assert(\"ExportDeclaration\", node, opts);\n}\nexport function assertModuleSpecifier(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.ModuleSpecifier {\n assert(\"ModuleSpecifier\", node, opts);\n}\nexport function assertAccessor(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.Accessor {\n assert(\"Accessor\", node, opts);\n}\nexport function assertPrivate(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.Private {\n assert(\"Private\", node, opts);\n}\nexport function assertFlow(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.Flow {\n assert(\"Flow\", node, opts);\n}\nexport function assertFlowType(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.FlowType {\n assert(\"FlowType\", node, opts);\n}\nexport function assertFlowBaseAnnotation(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.FlowBaseAnnotation {\n assert(\"FlowBaseAnnotation\", node, opts);\n}\nexport function assertFlowDeclaration(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.FlowDeclaration {\n assert(\"FlowDeclaration\", node, opts);\n}\nexport function assertFlowPredicate(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.FlowPredicate {\n assert(\"FlowPredicate\", node, opts);\n}\nexport function assertEnumBody(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.EnumBody {\n assert(\"EnumBody\", node, opts);\n}\nexport function assertEnumMember(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.EnumMember {\n assert(\"EnumMember\", node, opts);\n}\nexport function assertJSX(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.JSX {\n assert(\"JSX\", node, opts);\n}\nexport function assertMiscellaneous(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.Miscellaneous {\n assert(\"Miscellaneous\", node, opts);\n}\nexport function assertTypeScript(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.TypeScript {\n assert(\"TypeScript\", node, opts);\n}\nexport function assertTSTypeElement(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.TSTypeElement {\n assert(\"TSTypeElement\", node, opts);\n}\nexport function assertTSType(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.TSType {\n assert(\"TSType\", node, opts);\n}\nexport function assertTSBaseType(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.TSBaseType {\n assert(\"TSBaseType\", node, opts);\n}\nexport function assertNumberLiteral(node: any, opts: any): void {\n deprecationWarning(\"assertNumberLiteral\", \"assertNumericLiteral\");\n assert(\"NumberLiteral\", node, opts);\n}\nexport function assertRegexLiteral(node: any, opts: any): void {\n deprecationWarning(\"assertRegexLiteral\", \"assertRegExpLiteral\");\n assert(\"RegexLiteral\", node, opts);\n}\nexport function assertRestProperty(node: any, opts: any): void {\n deprecationWarning(\"assertRestProperty\", \"assertRestElement\");\n assert(\"RestProperty\", node, opts);\n}\nexport function assertSpreadProperty(node: any, opts: any): void {\n deprecationWarning(\"assertSpreadProperty\", \"assertSpreadElement\");\n assert(\"SpreadProperty\", node, opts);\n}\nexport function assertModuleDeclaration(node: any, opts: any): void {\n deprecationWarning(\n \"assertModuleDeclaration\",\n \"assertImportOrExportDeclaration\",\n );\n assert(\"ModuleDeclaration\", node, opts);\n}\n","import {\n anyTypeAnnotation,\n stringTypeAnnotation,\n numberTypeAnnotation,\n voidTypeAnnotation,\n booleanTypeAnnotation,\n genericTypeAnnotation,\n identifier,\n} from \"../generated/index.ts\";\nimport type * as t from \"../../index.ts\";\n\nexport default createTypeAnnotationBasedOnTypeof as {\n (type: \"string\"): t.StringTypeAnnotation;\n (type: \"number\"): t.NumberTypeAnnotation;\n (type: \"undefined\"): t.VoidTypeAnnotation;\n (type: \"boolean\"): t.BooleanTypeAnnotation;\n (type: \"function\"): t.GenericTypeAnnotation;\n (type: \"object\"): t.GenericTypeAnnotation;\n (type: \"symbol\"): t.GenericTypeAnnotation;\n (type: \"bigint\"): t.AnyTypeAnnotation;\n};\n\n/**\n * Create a type annotation based on typeof expression.\n */\nfunction createTypeAnnotationBasedOnTypeof(type: string): t.FlowType {\n switch (type) {\n case \"string\":\n return stringTypeAnnotation();\n case \"number\":\n return numberTypeAnnotation();\n case \"undefined\":\n return voidTypeAnnotation();\n case \"boolean\":\n return booleanTypeAnnotation();\n case \"function\":\n return genericTypeAnnotation(identifier(\"Function\"));\n case \"object\":\n return genericTypeAnnotation(identifier(\"Object\"));\n case \"symbol\":\n return genericTypeAnnotation(identifier(\"Symbol\"));\n case \"bigint\":\n // todo: use BigInt annotation when Flow supports BigInt\n // https://github.com/facebook/flow/issues/6639\n return anyTypeAnnotation();\n }\n throw new Error(\"Invalid typeof value: \" + type);\n}\n","import {\n isAnyTypeAnnotation,\n isGenericTypeAnnotation,\n isUnionTypeAnnotation,\n isFlowBaseAnnotation,\n isIdentifier,\n} from \"../../validators/generated/index.ts\";\nimport type * as t from \"../../index.ts\";\n\nfunction getQualifiedName(node: t.GenericTypeAnnotation[\"id\"]): string {\n return isIdentifier(node)\n ? node.name\n : `${node.id.name}.${getQualifiedName(node.qualification)}`;\n}\n\n/**\n * Dedupe type annotations.\n */\nexport default function removeTypeDuplicates(\n nodesIn: ReadonlyArray<t.FlowType | false | null | undefined>,\n): t.FlowType[] {\n const nodes = Array.from(nodesIn);\n\n const generics = new Map<string, t.GenericTypeAnnotation>();\n const bases = new Map<t.FlowBaseAnnotation[\"type\"], t.FlowBaseAnnotation>();\n\n // store union type groups to circular references\n const typeGroups = new Set<t.FlowType[]>();\n\n const types: t.FlowType[] = [];\n\n for (let i = 0; i < nodes.length; i++) {\n const node = nodes[i];\n if (!node) continue;\n\n // detect duplicates\n if (types.indexOf(node) >= 0) {\n continue;\n }\n\n // this type matches anything\n if (isAnyTypeAnnotation(node)) {\n return [node];\n }\n\n if (isFlowBaseAnnotation(node)) {\n bases.set(node.type, node);\n continue;\n }\n\n if (isUnionTypeAnnotation(node)) {\n if (!typeGroups.has(node.types)) {\n nodes.push(...node.types);\n typeGroups.add(node.types);\n }\n continue;\n }\n\n // find a matching generic type and merge and deduplicate the type parameters\n if (isGenericTypeAnnotation(node)) {\n const name = getQualifiedName(node.id);\n\n if (generics.has(name)) {\n let existing: t.Flow = generics.get(name);\n if (existing.typeParameters) {\n if (node.typeParameters) {\n existing.typeParameters.params.push(...node.typeParameters.params);\n existing.typeParameters.params = removeTypeDuplicates(\n existing.typeParameters.params,\n );\n }\n } else {\n existing = node.typeParameters;\n }\n } else {\n generics.set(name, node);\n }\n\n continue;\n }\n\n types.push(node);\n }\n\n // add back in bases\n for (const [, baseType] of bases) {\n types.push(baseType);\n }\n\n // add back in generics\n for (const [, genericName] of generics) {\n types.push(genericName);\n }\n\n return types;\n}\n","import { unionTypeAnnotation } from \"../generated/index.ts\";\nimport removeTypeDuplicates from \"../../modifications/flow/removeTypeDuplicates.ts\";\nimport type * as t from \"../../index.ts\";\n\n/**\n * Takes an array of `types` and flattens them, removing duplicates and\n * returns a `UnionTypeAnnotation` node containing them.\n */\nexport default function createFlowUnionType<T extends t.FlowType>(\n types: [T] | Array<T>,\n): T | t.UnionTypeAnnotation {\n const flattened = removeTypeDuplicates(types);\n\n if (flattened.length === 1) {\n return flattened[0] as T;\n } else {\n return unionTypeAnnotation(flattened);\n }\n}\n","import {\n isIdentifier,\n isTSAnyKeyword,\n isTSTypeReference,\n isTSUnionType,\n isTSBaseType,\n} from \"../../validators/generated/index.ts\";\nimport type * as t from \"../../index.ts\";\n\nfunction getQualifiedName(node: t.TSTypeReference[\"typeName\"]): string {\n return isIdentifier(node)\n ? node.name\n : `${node.right.name}.${getQualifiedName(node.left)}`;\n}\n\n/**\n * Dedupe type annotations.\n */\nexport default function removeTypeDuplicates(\n nodesIn: ReadonlyArray<t.TSType>,\n): Array<t.TSType> {\n const nodes = Array.from(nodesIn);\n\n const generics = new Map<string, t.TSTypeReference>();\n const bases = new Map<t.TSBaseType[\"type\"], t.TSBaseType>();\n\n // store union type groups to circular references\n const typeGroups = new Set<t.TSType[]>();\n\n const types: t.TSType[] = [];\n\n for (let i = 0; i < nodes.length; i++) {\n const node = nodes[i];\n if (!node) continue;\n\n // detect duplicates\n if (types.indexOf(node) >= 0) {\n continue;\n }\n\n // this type matches anything\n if (isTSAnyKeyword(node)) {\n return [node];\n }\n\n // Analogue of FlowBaseAnnotation\n if (isTSBaseType(node)) {\n bases.set(node.type, node);\n continue;\n }\n\n if (isTSUnionType(node)) {\n if (!typeGroups.has(node.types)) {\n nodes.push(...node.types);\n typeGroups.add(node.types);\n }\n continue;\n }\n\n // todo: support merging tuples: number[]\n if (isTSTypeReference(node) && node.typeParameters) {\n const name = getQualifiedName(node.typeName);\n\n if (generics.has(name)) {\n let existing: t.TypeScript = generics.get(name);\n if (existing.typeParameters) {\n if (node.typeParameters) {\n existing.typeParameters.params.push(...node.typeParameters.params);\n existing.typeParameters.params = removeTypeDuplicates(\n existing.typeParameters.params,\n );\n }\n } else {\n existing = node.typeParameters;\n }\n } else {\n generics.set(name, node);\n }\n\n continue;\n }\n\n types.push(node);\n }\n\n // add back in bases\n for (const [, baseType] of bases) {\n types.push(baseType);\n }\n\n // add back in generics\n for (const [, genericName] of generics) {\n types.push(genericName);\n }\n\n return types;\n}\n","import { tsUnionType } from \"../generated/index.ts\";\nimport removeTypeDuplicates from \"../../modifications/typescript/removeTypeDuplicates.ts\";\nimport { isTSTypeAnnotation } from \"../../validators/generated/index.ts\";\nimport type * as t from \"../../index.ts\";\n\n/**\n * Takes an array of `types` and flattens them, removing duplicates and\n * returns a `UnionTypeAnnotation` node containing them.\n */\nexport default function createTSUnionType(\n typeAnnotations: Array<t.TSTypeAnnotation | t.TSType>,\n): t.TSType {\n const types = typeAnnotations.map(type => {\n return isTSTypeAnnotation(type) ? type.typeAnnotation : type;\n });\n const flattened = removeTypeDuplicates(types);\n\n if (flattened.length === 1) {\n return flattened[0];\n } else {\n return tsUnionType(flattened);\n }\n}\n","/*\n * This file is auto-generated! Do not modify it directly.\n * To re-generate run 'make build'\n */\n\n/**\n * This file is written in JavaScript and not TypeScript because uppercase builders\n * conflict with AST types. TypeScript reads the uppercase.d.ts file instead.\n */\n\nexport {\n arrayExpression as ArrayExpression,\n assignmentExpression as AssignmentExpression,\n binaryExpression as BinaryExpression,\n interpreterDirective as InterpreterDirective,\n directive as Directive,\n directiveLiteral as DirectiveLiteral,\n blockStatement as BlockStatement,\n breakStatement as BreakStatement,\n callExpression as CallExpression,\n catchClause as CatchClause,\n conditionalExpression as ConditionalExpression,\n continueStatement as ContinueStatement,\n debuggerStatement as DebuggerStatement,\n doWhileStatement as DoWhileStatement,\n emptyStatement as EmptyStatement,\n expressionStatement as ExpressionStatement,\n file as File,\n forInStatement as ForInStatement,\n forStatement as ForStatement,\n functionDeclaration as FunctionDeclaration,\n functionExpression as FunctionExpression,\n identifier as Identifier,\n ifStatement as IfStatement,\n labeledStatement as LabeledStatement,\n stringLiteral as StringLiteral,\n numericLiteral as NumericLiteral,\n nullLiteral as NullLiteral,\n booleanLiteral as BooleanLiteral,\n regExpLiteral as RegExpLiteral,\n logicalExpression as LogicalExpression,\n memberExpression as MemberExpression,\n newExpression as NewExpression,\n program as Program,\n objectExpression as ObjectExpression,\n objectMethod as ObjectMethod,\n objectProperty as ObjectProperty,\n restElement as RestElement,\n returnStatement as ReturnStatement,\n sequenceExpression as SequenceExpression,\n parenthesizedExpression as ParenthesizedExpression,\n switchCase as SwitchCase,\n switchStatement as SwitchStatement,\n thisExpression as ThisExpression,\n throwStatement as ThrowStatement,\n tryStatement as TryStatement,\n unaryExpression as UnaryExpression,\n updateExpression as UpdateExpression,\n variableDeclaration as VariableDeclaration,\n variableDeclarator as VariableDeclarator,\n whileStatement as WhileStatement,\n withStatement as WithStatement,\n assignmentPattern as AssignmentPattern,\n arrayPattern as ArrayPattern,\n arrowFunctionExpression as ArrowFunctionExpression,\n classBody as ClassBody,\n classExpression as ClassExpression,\n classDeclaration as ClassDeclaration,\n exportAllDeclaration as ExportAllDeclaration,\n exportDefaultDeclaration as ExportDefaultDeclaration,\n exportNamedDeclaration as ExportNamedDeclaration,\n exportSpecifier as ExportSpecifier,\n forOfStatement as ForOfStatement,\n importDeclaration as ImportDeclaration,\n importDefaultSpecifier as ImportDefaultSpecifier,\n importNamespaceSpecifier as ImportNamespaceSpecifier,\n importSpecifier as ImportSpecifier,\n importExpression as ImportExpression,\n metaProperty as MetaProperty,\n classMethod as ClassMethod,\n objectPattern as ObjectPattern,\n spreadElement as SpreadElement,\n super as Super,\n taggedTemplateExpression as TaggedTemplateExpression,\n templateElement as TemplateElement,\n templateLiteral as TemplateLiteral,\n yieldExpression as YieldExpression,\n awaitExpression as AwaitExpression,\n import as Import,\n bigIntLiteral as BigIntLiteral,\n exportNamespaceSpecifier as ExportNamespaceSpecifier,\n optionalMemberExpression as OptionalMemberExpression,\n optionalCallExpression as OptionalCallExpression,\n classProperty as ClassProperty,\n classAccessorProperty as ClassAccessorProperty,\n classPrivateProperty as ClassPrivateProperty,\n classPrivateMethod as ClassPrivateMethod,\n privateName as PrivateName,\n staticBlock as StaticBlock,\n anyTypeAnnotation as AnyTypeAnnotation,\n arrayTypeAnnotation as ArrayTypeAnnotation,\n booleanTypeAnnotation as BooleanTypeAnnotation,\n booleanLiteralTypeAnnotation as BooleanLiteralTypeAnnotation,\n nullLiteralTypeAnnotation as NullLiteralTypeAnnotation,\n classImplements as ClassImplements,\n declareClass as DeclareClass,\n declareFunction as DeclareFunction,\n declareInterface as DeclareInterface,\n declareModule as DeclareModule,\n declareModuleExports as DeclareModuleExports,\n declareTypeAlias as DeclareTypeAlias,\n declareOpaqueType as DeclareOpaqueType,\n declareVariable as DeclareVariable,\n declareExportDeclaration as DeclareExportDeclaration,\n declareExportAllDeclaration as DeclareExportAllDeclaration,\n declaredPredicate as DeclaredPredicate,\n existsTypeAnnotation as ExistsTypeAnnotation,\n functionTypeAnnotation as FunctionTypeAnnotation,\n functionTypeParam as FunctionTypeParam,\n genericTypeAnnotation as GenericTypeAnnotation,\n inferredPredicate as InferredPredicate,\n interfaceExtends as InterfaceExtends,\n interfaceDeclaration as InterfaceDeclaration,\n interfaceTypeAnnotation as InterfaceTypeAnnotation,\n intersectionTypeAnnotation as IntersectionTypeAnnotation,\n mixedTypeAnnotation as MixedTypeAnnotation,\n emptyTypeAnnotation as EmptyTypeAnnotation,\n nullableTypeAnnotation as NullableTypeAnnotation,\n numberLiteralTypeAnnotation as NumberLiteralTypeAnnotation,\n numberTypeAnnotation as NumberTypeAnnotation,\n objectTypeAnnotation as ObjectTypeAnnotation,\n objectTypeInternalSlot as ObjectTypeInternalSlot,\n objectTypeCallProperty as ObjectTypeCallProperty,\n objectTypeIndexer as ObjectTypeIndexer,\n objectTypeProperty as ObjectTypeProperty,\n objectTypeSpreadProperty as ObjectTypeSpreadProperty,\n opaqueType as OpaqueType,\n qualifiedTypeIdentifier as QualifiedTypeIdentifier,\n stringLiteralTypeAnnotation as StringLiteralTypeAnnotation,\n stringTypeAnnotation as StringTypeAnnotation,\n symbolTypeAnnotation as SymbolTypeAnnotation,\n thisTypeAnnotation as ThisTypeAnnotation,\n tupleTypeAnnotation as TupleTypeAnnotation,\n typeofTypeAnnotation as TypeofTypeAnnotation,\n typeAlias as TypeAlias,\n typeAnnotation as TypeAnnotation,\n typeCastExpression as TypeCastExpression,\n typeParameter as TypeParameter,\n typeParameterDeclaration as TypeParameterDeclaration,\n typeParameterInstantiation as TypeParameterInstantiation,\n unionTypeAnnotation as UnionTypeAnnotation,\n variance as Variance,\n voidTypeAnnotation as VoidTypeAnnotation,\n enumDeclaration as EnumDeclaration,\n enumBooleanBody as EnumBooleanBody,\n enumNumberBody as EnumNumberBody,\n enumStringBody as EnumStringBody,\n enumSymbolBody as EnumSymbolBody,\n enumBooleanMember as EnumBooleanMember,\n enumNumberMember as EnumNumberMember,\n enumStringMember as EnumStringMember,\n enumDefaultedMember as EnumDefaultedMember,\n indexedAccessType as IndexedAccessType,\n optionalIndexedAccessType as OptionalIndexedAccessType,\n jsxAttribute as JSXAttribute,\n jsxClosingElement as JSXClosingElement,\n jsxElement as JSXElement,\n jsxEmptyExpression as JSXEmptyExpression,\n jsxExpressionContainer as JSXExpressionContainer,\n jsxSpreadChild as JSXSpreadChild,\n jsxIdentifier as JSXIdentifier,\n jsxMemberExpression as JSXMemberExpression,\n jsxNamespacedName as JSXNamespacedName,\n jsxOpeningElement as JSXOpeningElement,\n jsxSpreadAttribute as JSXSpreadAttribute,\n jsxText as JSXText,\n jsxFragment as JSXFragment,\n jsxOpeningFragment as JSXOpeningFragment,\n jsxClosingFragment as JSXClosingFragment,\n noop as Noop,\n placeholder as Placeholder,\n v8IntrinsicIdentifier as V8IntrinsicIdentifier,\n argumentPlaceholder as ArgumentPlaceholder,\n bindExpression as BindExpression,\n importAttribute as ImportAttribute,\n decorator as Decorator,\n doExpression as DoExpression,\n exportDefaultSpecifier as ExportDefaultSpecifier,\n recordExpression as RecordExpression,\n tupleExpression as TupleExpression,\n decimalLiteral as DecimalLiteral,\n moduleExpression as ModuleExpression,\n topicReference as TopicReference,\n pipelineTopicExpression as PipelineTopicExpression,\n pipelineBareFunction as PipelineBareFunction,\n pipelinePrimaryTopicReference as PipelinePrimaryTopicReference,\n tsParameterProperty as TSParameterProperty,\n tsDeclareFunction as TSDeclareFunction,\n tsDeclareMethod as TSDeclareMethod,\n tsQualifiedName as TSQualifiedName,\n tsCallSignatureDeclaration as TSCallSignatureDeclaration,\n tsConstructSignatureDeclaration as TSConstructSignatureDeclaration,\n tsPropertySignature as TSPropertySignature,\n tsMethodSignature as TSMethodSignature,\n tsIndexSignature as TSIndexSignature,\n tsAnyKeyword as TSAnyKeyword,\n tsBooleanKeyword as TSBooleanKeyword,\n tsBigIntKeyword as TSBigIntKeyword,\n tsIntrinsicKeyword as TSIntrinsicKeyword,\n tsNeverKeyword as TSNeverKeyword,\n tsNullKeyword as TSNullKeyword,\n tsNumberKeyword as TSNumberKeyword,\n tsObjectKeyword as TSObjectKeyword,\n tsStringKeyword as TSStringKeyword,\n tsSymbolKeyword as TSSymbolKeyword,\n tsUndefinedKeyword as TSUndefinedKeyword,\n tsUnknownKeyword as TSUnknownKeyword,\n tsVoidKeyword as TSVoidKeyword,\n tsThisType as TSThisType,\n tsFunctionType as TSFunctionType,\n tsConstructorType as TSConstructorType,\n tsTypeReference as TSTypeReference,\n tsTypePredicate as TSTypePredicate,\n tsTypeQuery as TSTypeQuery,\n tsTypeLiteral as TSTypeLiteral,\n tsArrayType as TSArrayType,\n tsTupleType as TSTupleType,\n tsOptionalType as TSOptionalType,\n tsRestType as TSRestType,\n tsNamedTupleMember as TSNamedTupleMember,\n tsUnionType as TSUnionType,\n tsIntersectionType as TSIntersectionType,\n tsConditionalType as TSConditionalType,\n tsInferType as TSInferType,\n tsParenthesizedType as TSParenthesizedType,\n tsTypeOperator as TSTypeOperator,\n tsIndexedAccessType as TSIndexedAccessType,\n tsMappedType as TSMappedType,\n tsLiteralType as TSLiteralType,\n tsExpressionWithTypeArguments as TSExpressionWithTypeArguments,\n tsInterfaceDeclaration as TSInterfaceDeclaration,\n tsInterfaceBody as TSInterfaceBody,\n tsTypeAliasDeclaration as TSTypeAliasDeclaration,\n tsInstantiationExpression as TSInstantiationExpression,\n tsAsExpression as TSAsExpression,\n tsSatisfiesExpression as TSSatisfiesExpression,\n tsTypeAssertion as TSTypeAssertion,\n tsEnumDeclaration as TSEnumDeclaration,\n tsEnumMember as TSEnumMember,\n tsModuleDeclaration as TSModuleDeclaration,\n tsModuleBlock as TSModuleBlock,\n tsImportType as TSImportType,\n tsImportEqualsDeclaration as TSImportEqualsDeclaration,\n tsExternalModuleReference as TSExternalModuleReference,\n tsNonNullExpression as TSNonNullExpression,\n tsExportAssignment as TSExportAssignment,\n tsNamespaceExportDeclaration as TSNamespaceExportDeclaration,\n tsTypeAnnotation as TSTypeAnnotation,\n tsTypeParameterInstantiation as TSTypeParameterInstantiation,\n tsTypeParameterDeclaration as TSTypeParameterDeclaration,\n tsTypeParameter as TSTypeParameter,\n numberLiteral as NumberLiteral,\n regexLiteral as RegexLiteral,\n restProperty as RestProperty,\n spreadProperty as SpreadProperty,\n} from \"./index.ts\";\n","import { numericLiteral, unaryExpression } from \"./generated/index.ts\";\n\nexport function buildUndefinedNode() {\n return unaryExpression(\"void\", numericLiteral(0), true);\n}\n","import { NODE_FIELDS } from \"../definitions/index.ts\";\nimport type * as t from \"../index.ts\";\nimport { isFile, isIdentifier } from \"../validators/generated/index.ts\";\n\nconst { hasOwn } = process.env.BABEL_8_BREAKING\n ? Object\n : { hasOwn: Function.call.bind(Object.prototype.hasOwnProperty) };\n\ntype CommentCache = Map<t.Comment, t.Comment>;\n\n// This function will never be called for comments, only for real nodes.\nfunction cloneIfNode(\n obj: t.Node | undefined | null,\n deep: boolean,\n withoutLoc: boolean,\n commentsCache: CommentCache,\n) {\n if (obj && typeof obj.type === \"string\") {\n return cloneNodeInternal(obj, deep, withoutLoc, commentsCache);\n }\n\n return obj;\n}\n\nfunction cloneIfNodeOrArray(\n obj: t.Node | undefined | null | (t.Node | undefined | null)[],\n deep: boolean,\n withoutLoc: boolean,\n commentsCache: CommentCache,\n) {\n if (Array.isArray(obj)) {\n return obj.map(node => cloneIfNode(node, deep, withoutLoc, commentsCache));\n }\n return cloneIfNode(obj, deep, withoutLoc, commentsCache);\n}\n\n/**\n * Create a clone of a `node` including only properties belonging to the node.\n * If the second parameter is `false`, cloneNode performs a shallow clone.\n * If the third parameter is true, the cloned nodes exclude location properties.\n */\nexport default function cloneNode<T extends t.Node>(\n node: T,\n deep: boolean = true,\n withoutLoc: boolean = false,\n): T {\n return cloneNodeInternal(node, deep, withoutLoc, new Map());\n}\n\nfunction cloneNodeInternal<T extends t.Node>(\n node: T,\n deep: boolean = true,\n withoutLoc: boolean = false,\n commentsCache: CommentCache,\n): T {\n if (!node) return node;\n\n const { type } = node;\n const newNode: any = { type: node.type };\n\n // Special-case identifiers since they are the most cloned nodes.\n if (isIdentifier(node)) {\n newNode.name = node.name;\n\n if (hasOwn(node, \"optional\") && typeof node.optional === \"boolean\") {\n newNode.optional = node.optional;\n }\n\n if (hasOwn(node, \"typeAnnotation\")) {\n newNode.typeAnnotation = deep\n ? cloneIfNodeOrArray(\n node.typeAnnotation,\n true,\n withoutLoc,\n commentsCache,\n )\n : node.typeAnnotation;\n }\n } else if (!hasOwn(NODE_FIELDS, type)) {\n throw new Error(`Unknown node type: \"${type}\"`);\n } else {\n for (const field of Object.keys(NODE_FIELDS[type])) {\n if (hasOwn(node, field)) {\n if (deep) {\n newNode[field] =\n isFile(node) && field === \"comments\"\n ? maybeCloneComments(\n node.comments,\n deep,\n withoutLoc,\n commentsCache,\n )\n : cloneIfNodeOrArray(\n // @ts-expect-error node[field] has been guarded by has check\n node[field],\n true,\n withoutLoc,\n commentsCache,\n );\n } else {\n newNode[field] =\n // @ts-expect-error node[field] has been guarded by has check\n node[field];\n }\n }\n }\n }\n\n if (hasOwn(node, \"loc\")) {\n if (withoutLoc) {\n newNode.loc = null;\n } else {\n newNode.loc = node.loc;\n }\n }\n if (hasOwn(node, \"leadingComments\")) {\n newNode.leadingComments = maybeCloneComments(\n node.leadingComments,\n deep,\n withoutLoc,\n commentsCache,\n );\n }\n if (hasOwn(node, \"innerComments\")) {\n newNode.innerComments = maybeCloneComments(\n node.innerComments,\n deep,\n withoutLoc,\n commentsCache,\n );\n }\n if (hasOwn(node, \"trailingComments\")) {\n newNode.trailingComments = maybeCloneComments(\n node.trailingComments,\n deep,\n withoutLoc,\n commentsCache,\n );\n }\n if (hasOwn(node, \"extra\")) {\n newNode.extra = {\n ...node.extra,\n };\n }\n\n return newNode;\n}\n\nfunction maybeCloneComments<T extends t.Comment>(\n comments: ReadonlyArray<T> | null,\n deep: boolean,\n withoutLoc: boolean,\n commentsCache: Map<T, T>,\n): ReadonlyArray<T> | null {\n if (!comments || !deep) {\n return comments;\n }\n return comments.map(comment => {\n const cache = commentsCache.get(comment);\n if (cache) return cache;\n\n const { type, value, loc } = comment;\n\n const ret = { type, value, loc } as T;\n if (withoutLoc) {\n ret.loc = null;\n }\n\n commentsCache.set(comment, ret);\n\n return ret;\n });\n}\n","import cloneNode from \"./cloneNode.ts\";\nimport type * as t from \"../index.ts\";\n\n/**\n * Create a shallow clone of a `node`, including only\n * properties belonging to the node.\n * @deprecated Use t.cloneNode instead.\n */\nexport default function clone<T extends t.Node>(node: T): T {\n return cloneNode(node, /* deep */ false);\n}\n","import cloneNode from \"./cloneNode.ts\";\nimport type * as t from \"../index.ts\";\n\n/**\n * Create a deep clone of a `node` and all of it's child nodes\n * including only properties belonging to the node.\n * @deprecated Use t.cloneNode instead.\n */\nexport default function cloneDeep<T extends t.Node>(node: T): T {\n return cloneNode(node);\n}\n","import cloneNode from \"./cloneNode.ts\";\nimport type * as t from \"../index.ts\";\n/**\n * Create a deep clone of a `node` and all of it's child nodes\n * including only properties belonging to the node.\n * excluding `_private` and location properties.\n */\nexport default function cloneDeepWithoutLoc<T extends t.Node>(node: T): T {\n return cloneNode(node, /* deep */ true, /* withoutLoc */ true);\n}\n","import cloneNode from \"./cloneNode.ts\";\nimport type * as t from \"../index.ts\";\n\n/**\n * Create a shallow clone of a `node` excluding `_private` and location properties.\n */\nexport default function cloneWithoutLoc<T extends t.Node>(node: T): T {\n return cloneNode(node, /* deep */ false, /* withoutLoc */ true);\n}\n","import type * as t from \"../index.ts\";\n\n/**\n * Add comments of certain type to a node.\n */\nexport default function addComments<T extends t.Node>(\n node: T,\n type: t.CommentTypeShorthand,\n comments: Array<t.Comment>,\n): T {\n if (!comments || !node) return node;\n\n const key = `${type}Comments` as const;\n\n if (node[key]) {\n if (type === \"leading\") {\n node[key] = comments.concat(node[key]);\n } else {\n node[key].push(...comments);\n }\n } else {\n node[key] = comments;\n }\n\n return node;\n}\n","import addComments from \"./addComments.ts\";\nimport type * as t from \"../index.ts\";\n\n/**\n * Add comment of certain type to a node.\n */\nexport default function addComment<T extends t.Node>(\n node: T,\n type: t.CommentTypeShorthand,\n content: string,\n line?: boolean,\n): T {\n return addComments(node, type, [\n {\n type: line ? \"CommentLine\" : \"CommentBlock\",\n value: content,\n } as t.Comment,\n ]);\n}\n","import type * as t from \"../index.ts\";\n\nexport default function inherit<\n C extends t.Node | undefined,\n P extends t.Node | undefined,\n>(key: keyof C & keyof P, child: C, parent: P): void {\n if (child && parent) {\n // @ts-expect-error Could further refine key definitions\n child[key] = Array.from(\n new Set([].concat(child[key], parent[key]).filter(Boolean)),\n );\n }\n}\n","import inherit from \"../utils/inherit.ts\";\nimport type * as t from \"../index.ts\";\n\nexport default function inheritInnerComments(\n child: t.Node,\n parent: t.Node,\n): void {\n inherit(\"innerComments\", child, parent);\n}\n","import inherit from \"../utils/inherit.ts\";\nimport type * as t from \"../index.ts\";\n\nexport default function inheritLeadingComments(\n child: t.Node,\n parent: t.Node,\n): void {\n inherit(\"leadingComments\", child, parent);\n}\n","import inherit from \"../utils/inherit.ts\";\nimport type * as t from \"../index.ts\";\n\nexport default function inheritTrailingComments(\n child: t.Node,\n parent: t.Node,\n): void {\n inherit(\"trailingComments\", child, parent);\n}\n","import inheritTrailingComments from \"./inheritTrailingComments.ts\";\nimport inheritLeadingComments from \"./inheritLeadingComments.ts\";\nimport inheritInnerComments from \"./inheritInnerComments.ts\";\nimport type * as t from \"../index.ts\";\n\n/**\n * Inherit all unique comments from `parent` node to `child` node.\n */\nexport default function inheritsComments<T extends t.Node>(\n child: T,\n parent: t.Node,\n): T {\n inheritTrailingComments(child, parent);\n inheritLeadingComments(child, parent);\n inheritInnerComments(child, parent);\n\n return child;\n}\n","import { COMMENT_KEYS } from \"../constants/index.ts\";\nimport type * as t from \"../index.ts\";\n\n/**\n * Remove comment properties from a node.\n */\nexport default function removeComments<T extends t.Node>(node: T): T {\n COMMENT_KEYS.forEach(key => {\n node[key] = null;\n });\n\n return node;\n}\n","/*\n * This file is auto-generated! Do not modify it directly.\n * To re-generate run 'make build'\n */\nimport { FLIPPED_ALIAS_KEYS } from \"../../definitions/index.ts\";\n\nexport const STANDARDIZED_TYPES = FLIPPED_ALIAS_KEYS[\"Standardized\"];\nexport const EXPRESSION_TYPES = FLIPPED_ALIAS_KEYS[\"Expression\"];\nexport const BINARY_TYPES = FLIPPED_ALIAS_KEYS[\"Binary\"];\nexport const SCOPABLE_TYPES = FLIPPED_ALIAS_KEYS[\"Scopable\"];\nexport const BLOCKPARENT_TYPES = FLIPPED_ALIAS_KEYS[\"BlockParent\"];\nexport const BLOCK_TYPES = FLIPPED_ALIAS_KEYS[\"Block\"];\nexport const STATEMENT_TYPES = FLIPPED_ALIAS_KEYS[\"Statement\"];\nexport const TERMINATORLESS_TYPES = FLIPPED_ALIAS_KEYS[\"Terminatorless\"];\nexport const COMPLETIONSTATEMENT_TYPES =\n FLIPPED_ALIAS_KEYS[\"CompletionStatement\"];\nexport const CONDITIONAL_TYPES = FLIPPED_ALIAS_KEYS[\"Conditional\"];\nexport const LOOP_TYPES = FLIPPED_ALIAS_KEYS[\"Loop\"];\nexport const WHILE_TYPES = FLIPPED_ALIAS_KEYS[\"While\"];\nexport const EXPRESSIONWRAPPER_TYPES = FLIPPED_ALIAS_KEYS[\"ExpressionWrapper\"];\nexport const FOR_TYPES = FLIPPED_ALIAS_KEYS[\"For\"];\nexport const FORXSTATEMENT_TYPES = FLIPPED_ALIAS_KEYS[\"ForXStatement\"];\nexport const FUNCTION_TYPES = FLIPPED_ALIAS_KEYS[\"Function\"];\nexport const FUNCTIONPARENT_TYPES = FLIPPED_ALIAS_KEYS[\"FunctionParent\"];\nexport const PUREISH_TYPES = FLIPPED_ALIAS_KEYS[\"Pureish\"];\nexport const DECLARATION_TYPES = FLIPPED_ALIAS_KEYS[\"Declaration\"];\nexport const PATTERNLIKE_TYPES = FLIPPED_ALIAS_KEYS[\"PatternLike\"];\nexport const LVAL_TYPES = FLIPPED_ALIAS_KEYS[\"LVal\"];\nexport const TSENTITYNAME_TYPES = FLIPPED_ALIAS_KEYS[\"TSEntityName\"];\nexport const LITERAL_TYPES = FLIPPED_ALIAS_KEYS[\"Literal\"];\nexport const IMMUTABLE_TYPES = FLIPPED_ALIAS_KEYS[\"Immutable\"];\nexport const USERWHITESPACABLE_TYPES = FLIPPED_ALIAS_KEYS[\"UserWhitespacable\"];\nexport const METHOD_TYPES = FLIPPED_ALIAS_KEYS[\"Method\"];\nexport const OBJECTMEMBER_TYPES = FLIPPED_ALIAS_KEYS[\"ObjectMember\"];\nexport const PROPERTY_TYPES = FLIPPED_ALIAS_KEYS[\"Property\"];\nexport const UNARYLIKE_TYPES = FLIPPED_ALIAS_KEYS[\"UnaryLike\"];\nexport const PATTERN_TYPES = FLIPPED_ALIAS_KEYS[\"Pattern\"];\nexport const CLASS_TYPES = FLIPPED_ALIAS_KEYS[\"Class\"];\nexport const IMPORTOREXPORTDECLARATION_TYPES =\n FLIPPED_ALIAS_KEYS[\"ImportOrExportDeclaration\"];\nexport const EXPORTDECLARATION_TYPES = FLIPPED_ALIAS_KEYS[\"ExportDeclaration\"];\nexport const MODULESPECIFIER_TYPES = FLIPPED_ALIAS_KEYS[\"ModuleSpecifier\"];\nexport const ACCESSOR_TYPES = FLIPPED_ALIAS_KEYS[\"Accessor\"];\nexport const PRIVATE_TYPES = FLIPPED_ALIAS_KEYS[\"Private\"];\nexport const FLOW_TYPES = FLIPPED_ALIAS_KEYS[\"Flow\"];\nexport const FLOWTYPE_TYPES = FLIPPED_ALIAS_KEYS[\"FlowType\"];\nexport const FLOWBASEANNOTATION_TYPES =\n FLIPPED_ALIAS_KEYS[\"FlowBaseAnnotation\"];\nexport const FLOWDECLARATION_TYPES = FLIPPED_ALIAS_KEYS[\"FlowDeclaration\"];\nexport const FLOWPREDICATE_TYPES = FLIPPED_ALIAS_KEYS[\"FlowPredicate\"];\nexport const ENUMBODY_TYPES = FLIPPED_ALIAS_KEYS[\"EnumBody\"];\nexport const ENUMMEMBER_TYPES = FLIPPED_ALIAS_KEYS[\"EnumMember\"];\nexport const JSX_TYPES = FLIPPED_ALIAS_KEYS[\"JSX\"];\nexport const MISCELLANEOUS_TYPES = FLIPPED_ALIAS_KEYS[\"Miscellaneous\"];\nexport const TYPESCRIPT_TYPES = FLIPPED_ALIAS_KEYS[\"TypeScript\"];\nexport const TSTYPEELEMENT_TYPES = FLIPPED_ALIAS_KEYS[\"TSTypeElement\"];\nexport const TSTYPE_TYPES = FLIPPED_ALIAS_KEYS[\"TSType\"];\nexport const TSBASETYPE_TYPES = FLIPPED_ALIAS_KEYS[\"TSBaseType\"];\n/**\n * @deprecated migrate to IMPORTOREXPORTDECLARATION_TYPES.\n */\nexport const MODULEDECLARATION_TYPES = IMPORTOREXPORTDECLARATION_TYPES;\n","import {\n isBlockStatement,\n isFunction,\n isEmptyStatement,\n isStatement,\n} from \"../validators/generated/index.ts\";\nimport {\n returnStatement,\n expressionStatement,\n blockStatement,\n} from \"../builders/generated/index.ts\";\nimport type * as t from \"../index.ts\";\n\nexport default function toBlock(\n node: t.Statement | t.Expression,\n parent?: t.Node,\n): t.BlockStatement {\n if (isBlockStatement(node)) {\n return node;\n }\n\n let blockNodes: t.Statement[] = [];\n\n if (isEmptyStatement(node)) {\n blockNodes = [];\n } else {\n if (!isStatement(node)) {\n if (isFunction(parent)) {\n node = returnStatement(node);\n } else {\n node = expressionStatement(node);\n }\n }\n\n blockNodes = [node];\n }\n\n return blockStatement(blockNodes);\n}\n","import toBlock from \"./toBlock.ts\";\nimport type * as t from \"../index.ts\";\n\n/**\n * Ensure the `key` (defaults to \"body\") of a `node` is a block.\n * Casting it to a block if it is not.\n *\n * Returns the BlockStatement\n */\nexport default function ensureBlock(\n node: t.Node,\n key: string = \"body\",\n): t.BlockStatement {\n // @ts-expect-error Fixme: key may not exist in node, consider remove key = \"body\"\n const result = toBlock(node[key], node);\n // @ts-expect-error Fixme: key may not exist in node, consider remove key = \"body\"\n node[key] = result;\n return result;\n}\n","import isValidIdentifier from \"../validators/isValidIdentifier.ts\";\nimport { isIdentifierChar } from \"@babel/helper-validator-identifier\";\n\nexport default function toIdentifier(input: string): string {\n input = input + \"\";\n\n // replace all non-valid identifiers with dashes\n let name = \"\";\n for (const c of input) {\n name += isIdentifierChar(c.codePointAt(0)) ? c : \"-\";\n }\n\n // remove all dashes and numbers from start of name\n name = name.replace(/^[-0-9]+/, \"\");\n\n // camel case\n name = name.replace(/[-\\s]+(.)?/g, function (match, c) {\n return c ? c.toUpperCase() : \"\";\n });\n\n if (!isValidIdentifier(name)) {\n name = `_${name}`;\n }\n\n return name || \"_\";\n}\n","import toIdentifier from \"./toIdentifier.ts\";\n\nexport default function toBindingIdentifierName(name: string): string {\n name = toIdentifier(name);\n if (name === \"eval\" || name === \"arguments\") name = \"_\" + name;\n\n return name;\n}\n","import { isIdentifier } from \"../validators/generated/index.ts\";\nimport { stringLiteral } from \"../builders/generated/index.ts\";\nimport type * as t from \"../index.ts\";\n\nexport default function toComputedKey(\n node:\n | t.ObjectMember\n | t.ObjectProperty\n | t.ClassMethod\n | t.ClassProperty\n | t.ClassAccessorProperty\n | t.MemberExpression\n | t.OptionalMemberExpression,\n // @ts-expect-error todo(flow->ts): maybe check the type of node before accessing .key and .property\n key: t.Expression | t.PrivateName = node.key || node.property,\n) {\n if (!node.computed && isIdentifier(key)) key = stringLiteral(key.name);\n\n return key;\n}\n","import {\n isExpression,\n isFunction,\n isClass,\n isExpressionStatement,\n} from \"../validators/generated/index.ts\";\nimport type * as t from \"../index.ts\";\n\nexport default toExpression as {\n (node: t.Function): t.FunctionExpression;\n (node: t.Class): t.ClassExpression;\n (\n node: t.ExpressionStatement | t.Expression | t.Class | t.Function,\n ): t.Expression;\n};\n\nfunction toExpression(\n node: t.ExpressionStatement | t.Expression | t.Class | t.Function,\n): t.Expression {\n if (isExpressionStatement(node)) {\n node = node.expression;\n }\n\n // return unmodified node\n // important for things like ArrowFunctions where\n // type change from ArrowFunction to FunctionExpression\n // produces bugs like -> `()=>a` to `function () a`\n // without generating a BlockStatement for it\n // ref: https://github.com/babel/babili/issues/130\n if (isExpression(node)) {\n return node;\n }\n\n // convert all classes and functions\n // ClassDeclaration -> ClassExpression\n // FunctionDeclaration, ObjectMethod, ClassMethod -> FunctionExpression\n if (isClass(node)) {\n // @ts-expect-error todo(flow->ts): avoid type unsafe mutations\n node.type = \"ClassExpression\";\n } else if (isFunction(node)) {\n // @ts-expect-error todo(flow->ts): avoid type unsafe mutations\n node.type = \"FunctionExpression\";\n }\n\n // if it's still not an expression\n if (!isExpression(node)) {\n throw new Error(`cannot turn ${node.type} to an expression`);\n }\n\n return node;\n}\n","import { VISITOR_KEYS } from \"../definitions/index.ts\";\nimport type * as t from \"../index.ts\";\n\n/**\n * A prefix AST traversal implementation meant for simple searching\n * and processing.\n */\nexport default function traverseFast<Options = {}>(\n node: t.Node | null | undefined,\n enter: (node: t.Node, opts?: Options) => void,\n opts?: Options,\n): void {\n if (!node) return;\n\n const keys = VISITOR_KEYS[node.type];\n if (!keys) return;\n\n opts = opts || ({} as Options);\n enter(node, opts);\n\n for (const key of keys) {\n const subNode: t.Node | undefined | null =\n // @ts-expect-error key must present in node\n node[key];\n\n if (Array.isArray(subNode)) {\n for (const node of subNode) {\n traverseFast(node, enter, opts);\n }\n } else {\n traverseFast(subNode, enter, opts);\n }\n }\n}\n","import { COMMENT_KEYS } from \"../constants/index.ts\";\nimport type * as t from \"../index.ts\";\n\nconst CLEAR_KEYS = [\n \"tokens\", // only exist in t.File\n \"start\",\n \"end\",\n \"loc\",\n // Fixme: should be extra.raw / extra.rawValue?\n \"raw\",\n \"rawValue\",\n] as const;\n\nconst CLEAR_KEYS_PLUS_COMMENTS = [\n ...COMMENT_KEYS,\n \"comments\",\n ...CLEAR_KEYS,\n] as const;\n\nexport type Options = { preserveComments?: boolean };\n/**\n * Remove all of the _* properties from a node along with the additional metadata\n * properties like location data and raw token data.\n */\nexport default function removeProperties(\n node: t.Node,\n opts: Options = {},\n): void {\n const map = opts.preserveComments ? CLEAR_KEYS : CLEAR_KEYS_PLUS_COMMENTS;\n for (const key of map) {\n // @ts-expect-error tokens only exist in t.File\n if (node[key] != null) node[key] = undefined;\n }\n\n for (const key of Object.keys(node)) {\n // @ts-expect-error string can not index node\n if (key[0] === \"_\" && node[key] != null) node[key] = undefined;\n }\n\n const symbols: Array<symbol> = Object.getOwnPropertySymbols(node);\n for (const sym of symbols) {\n // @ts-expect-error Fixme: document symbol properties\n node[sym] = null;\n }\n}\n","import traverseFast from \"../traverse/traverseFast.ts\";\nimport removeProperties from \"./removeProperties.ts\";\nimport type * as t from \"../index.ts\";\n\nexport default function removePropertiesDeep<T extends t.Node>(\n tree: T,\n opts?: { preserveComments: boolean } | null,\n): T {\n traverseFast(tree, removeProperties, opts);\n\n return tree;\n}\n","import {\n isIdentifier,\n isStringLiteral,\n} from \"../validators/generated/index.ts\";\nimport cloneNode from \"../clone/cloneNode.ts\";\nimport removePropertiesDeep from \"../modifications/removePropertiesDeep.ts\";\nimport type * as t from \"../index.ts\";\n\nexport default function toKeyAlias(\n node: t.Method | t.Property,\n key: t.Node = node.key,\n): string {\n let alias;\n\n // @ts-expect-error todo(flow->ts): maybe add node type check before checking `.kind`\n if (node.kind === \"method\") {\n return toKeyAlias.increment() + \"\";\n } else if (isIdentifier(key)) {\n alias = key.name;\n } else if (isStringLiteral(key)) {\n alias = JSON.stringify(key.value);\n } else {\n alias = JSON.stringify(removePropertiesDeep(cloneNode(key)));\n }\n\n // @ts-expect-error todo(flow->ts): maybe add node type check before checking `.computed`\n if (node.computed) {\n alias = `[${alias}]`;\n }\n\n // @ts-expect-error todo(flow->ts): maybe add node type check before checking `.static`\n if (node.static) {\n alias = `static:${alias}`;\n }\n\n return alias;\n}\n\ntoKeyAlias.uid = 0;\n\ntoKeyAlias.increment = function () {\n if (toKeyAlias.uid >= Number.MAX_SAFE_INTEGER) {\n return (toKeyAlias.uid = 0);\n } else {\n return toKeyAlias.uid++;\n }\n};\n","import {\n isStatement,\n isFunction,\n isClass,\n isAssignmentExpression,\n} from \"../validators/generated/index.ts\";\nimport { expressionStatement } from \"../builders/generated/index.ts\";\nimport type * as t from \"../index.ts\";\n\nexport default toStatement as {\n (node: t.AssignmentExpression, ignore?: boolean): t.ExpressionStatement;\n\n <T extends t.Statement>(node: T, ignore: false): T;\n <T extends t.Statement>(node: T, ignore?: boolean): T | false;\n\n (node: t.Class, ignore: false): t.ClassDeclaration;\n (node: t.Class, ignore?: boolean): t.ClassDeclaration | false;\n\n (node: t.Function, ignore: false): t.FunctionDeclaration;\n (node: t.Function, ignore?: boolean): t.FunctionDeclaration | false;\n\n (node: t.Node, ignore: false): t.Statement;\n (node: t.Node, ignore?: boolean): t.Statement | false;\n};\n\nfunction toStatement(node: t.Node, ignore?: boolean): t.Statement | false {\n if (isStatement(node)) {\n return node;\n }\n\n let mustHaveId = false;\n let newType;\n\n if (isClass(node)) {\n mustHaveId = true;\n newType = \"ClassDeclaration\" as const;\n } else if (isFunction(node)) {\n mustHaveId = true;\n newType = \"FunctionDeclaration\" as const;\n } else if (isAssignmentExpression(node)) {\n return expressionStatement(node);\n }\n\n // @ts-expect-error todo(flow->ts): node.id might be missing\n if (mustHaveId && !node.id) {\n newType = false;\n }\n\n if (!newType) {\n if (ignore) {\n return false;\n } else {\n throw new Error(`cannot turn ${node.type} to a statement`);\n }\n }\n\n // @ts-expect-error manipulating node.type\n node.type = newType;\n\n // @ts-expect-error todo(flow->ts) refactor to avoid type unsafe mutations like reassigning node type above\n return node;\n}\n","import isValidIdentifier from \"../validators/isValidIdentifier.ts\";\nimport {\n identifier,\n booleanLiteral,\n nullLiteral,\n stringLiteral,\n numericLiteral,\n regExpLiteral,\n arrayExpression,\n objectProperty,\n objectExpression,\n unaryExpression,\n binaryExpression,\n} from \"../builders/generated/index.ts\";\nimport type * as t from \"../index.ts\";\n\nexport default valueToNode as {\n (value: undefined): t.Identifier; // TODO: This should return \"void 0\"\n (value: boolean): t.BooleanLiteral;\n (value: null): t.NullLiteral;\n (value: string): t.StringLiteral;\n // Infinities and NaN need to use a BinaryExpression; negative values must be wrapped in UnaryExpression\n (value: number): t.NumericLiteral | t.BinaryExpression | t.UnaryExpression;\n (value: RegExp): t.RegExpLiteral;\n (value: ReadonlyArray<unknown>): t.ArrayExpression;\n\n // this throws with objects that are not plain objects,\n // or if there are non-valueToNode-able values\n (value: object): t.ObjectExpression;\n\n (value: unknown): t.Expression;\n};\n\n// @ts-expect-error: Object.prototype.toString must return a string\nconst objectToString: (value: unknown) => string = Function.call.bind(\n Object.prototype.toString,\n);\n\nfunction isRegExp(value: unknown): value is RegExp {\n return objectToString(value) === \"[object RegExp]\";\n}\n\nfunction isPlainObject(value: unknown): value is object {\n if (\n typeof value !== \"object\" ||\n value === null ||\n Object.prototype.toString.call(value) !== \"[object Object]\"\n ) {\n return false;\n }\n const proto = Object.getPrototypeOf(value);\n // Object.prototype's __proto__ is null. Every other class's __proto__.__proto__ is\n // not null by default. We cannot check if proto === Object.prototype because it\n // could come from another realm.\n return proto === null || Object.getPrototypeOf(proto) === null;\n}\n\nfunction valueToNode(value: unknown): t.Expression {\n // undefined\n if (value === undefined) {\n return identifier(\"undefined\");\n }\n\n // boolean\n if (value === true || value === false) {\n return booleanLiteral(value);\n }\n\n // null\n if (value === null) {\n return nullLiteral();\n }\n\n // strings\n if (typeof value === \"string\") {\n return stringLiteral(value);\n }\n\n // numbers\n if (typeof value === \"number\") {\n let result;\n if (Number.isFinite(value)) {\n result = numericLiteral(Math.abs(value));\n } else {\n let numerator;\n if (Number.isNaN(value)) {\n // NaN\n numerator = numericLiteral(0);\n } else {\n // Infinity / -Infinity\n numerator = numericLiteral(1);\n }\n\n result = binaryExpression(\"/\", numerator, numericLiteral(0));\n }\n\n if (value < 0 || Object.is(value, -0)) {\n result = unaryExpression(\"-\", result);\n }\n\n return result;\n }\n\n // regexes\n if (isRegExp(value)) {\n const pattern = value.source;\n const flags = value.toString().match(/\\/([a-z]+|)$/)[1];\n return regExpLiteral(pattern, flags);\n }\n\n // array\n if (Array.isArray(value)) {\n return arrayExpression(value.map(valueToNode));\n }\n\n // object\n if (isPlainObject(value)) {\n const props = [];\n for (const key of Object.keys(value)) {\n let nodeKey;\n if (isValidIdentifier(key)) {\n nodeKey = identifier(key);\n } else {\n nodeKey = stringLiteral(key);\n }\n props.push(\n objectProperty(\n nodeKey,\n valueToNode(\n // @ts-expect-error key must present in value\n value[key],\n ),\n ),\n );\n }\n return objectExpression(props);\n }\n\n throw new Error(\"don't know how to turn this value into a node\");\n}\n","import { memberExpression } from \"../builders/generated/index.ts\";\nimport type * as t from \"../index.ts\";\n\n/**\n * Append a node to a member expression.\n */\nexport default function appendToMemberExpression(\n member: t.MemberExpression,\n append: t.MemberExpression[\"property\"],\n computed: boolean = false,\n): t.MemberExpression {\n member.object = memberExpression(\n member.object,\n member.property,\n member.computed,\n );\n member.property = append;\n member.computed = !!computed;\n\n return member;\n}\n","import { INHERIT_KEYS } from \"../constants/index.ts\";\nimport inheritsComments from \"../comments/inheritsComments.ts\";\nimport type * as t from \"../index.ts\";\n\n/**\n * Inherit all contextual properties from `parent` node to `child` node.\n */\nexport default function inherits<T extends t.Node | null | undefined>(\n child: T,\n parent: t.Node | null | undefined,\n): T {\n if (!child || !parent) return child;\n\n // optionally inherit specific properties if not null\n for (const key of INHERIT_KEYS.optional) {\n // @ts-expect-error Fixme: refine parent types\n if (child[key] == null) {\n // @ts-expect-error Fixme: refine parent types\n child[key] = parent[key];\n }\n }\n\n // force inherit \"private\" properties\n for (const key of Object.keys(parent)) {\n if (key[0] === \"_\" && key !== \"__clone\") {\n // @ts-expect-error Fixme: refine parent types\n child[key] = parent[key];\n }\n }\n\n // force inherit select properties\n for (const key of INHERIT_KEYS.force) {\n // @ts-expect-error Fixme: refine parent types\n child[key] = parent[key];\n }\n\n inheritsComments(child, parent);\n\n return child;\n}\n","import { memberExpression } from \"../builders/generated/index.ts\";\nimport { isSuper } from \"../index.ts\";\nimport type * as t from \"../index.ts\";\n\n/**\n * Prepend a node to a member expression.\n */\nexport default function prependToMemberExpression<\n T extends Pick<t.MemberExpression, \"object\" | \"property\">,\n>(member: T, prepend: t.MemberExpression[\"object\"]): T {\n if (isSuper(member.object)) {\n throw new Error(\n \"Cannot prepend node to super property access (`super.foo`).\",\n );\n }\n member.object = memberExpression(prepend, member.object);\n\n return member;\n}\n","import {\n isExportDeclaration,\n isIdentifier,\n isDeclaration,\n isFunctionDeclaration,\n isFunctionExpression,\n isExportAllDeclaration,\n isAssignmentExpression,\n isUnaryExpression,\n} from \"../validators/generated/index.ts\";\nimport type * as t from \"../index.ts\";\n\nexport { getBindingIdentifiers as default };\n\nfunction getBindingIdentifiers(\n node: t.Node,\n duplicates: true,\n outerOnly?: boolean,\n newBindingsOnly?: boolean,\n): Record<string, Array<t.Identifier>>;\n\nfunction getBindingIdentifiers(\n node: t.Node,\n duplicates?: false,\n outerOnly?: boolean,\n newBindingsOnly?: boolean,\n): Record<string, t.Identifier>;\n\nfunction getBindingIdentifiers(\n node: t.Node,\n duplicates?: boolean,\n outerOnly?: boolean,\n newBindingsOnly?: boolean,\n): Record<string, t.Identifier> | Record<string, Array<t.Identifier>>;\n\n/**\n * Return a list of binding identifiers associated with the input `node`.\n */\nfunction getBindingIdentifiers(\n node: t.Node,\n duplicates?: boolean,\n outerOnly?: boolean,\n newBindingsOnly?: boolean,\n): Record<string, t.Identifier> | Record<string, Array<t.Identifier>> {\n const search: t.Node[] = [].concat(node);\n const ids = Object.create(null);\n\n while (search.length) {\n const id = search.shift();\n if (!id) continue;\n\n if (\n newBindingsOnly &&\n // These two nodes do not introduce _new_ bindings, but they are included\n // in getBindingIdentifiers.keys for backwards compatibility.\n // TODO(@nicolo-ribaudo): Check if we can remove them from .keys in a\n // backward-compatible way, and if not what we need to do to remove them\n // in Babel 8.\n (isAssignmentExpression(id) || isUnaryExpression(id))\n ) {\n continue;\n }\n\n const keys =\n // @ts-expect-error getBindingIdentifiers.keys do not cover all AST types\n getBindingIdentifiers.keys[id.type];\n\n if (isIdentifier(id)) {\n if (duplicates) {\n const _ids = (ids[id.name] = ids[id.name] || []);\n _ids.push(id);\n } else {\n ids[id.name] = id;\n }\n continue;\n }\n\n if (isExportDeclaration(id) && !isExportAllDeclaration(id)) {\n if (isDeclaration(id.declaration)) {\n search.push(id.declaration);\n }\n continue;\n }\n\n if (outerOnly) {\n if (isFunctionDeclaration(id)) {\n search.push(id.id);\n continue;\n }\n\n if (isFunctionExpression(id)) {\n continue;\n }\n }\n\n if (keys) {\n for (let i = 0; i < keys.length; i++) {\n const key = keys[i];\n const nodes =\n // @ts-expect-error key must present in id\n id[key] as t.Node[] | t.Node | undefined | null;\n if (nodes) {\n Array.isArray(nodes) ? search.push(...nodes) : search.push(nodes);\n }\n }\n }\n }\n\n // $FlowIssue Object.create() seems broken\n return ids;\n}\n\n/**\n * Mapping of types to their identifier keys.\n */\ngetBindingIdentifiers.keys = {\n DeclareClass: [\"id\"],\n DeclareFunction: [\"id\"],\n DeclareModule: [\"id\"],\n DeclareVariable: [\"id\"],\n DeclareInterface: [\"id\"],\n DeclareTypeAlias: [\"id\"],\n DeclareOpaqueType: [\"id\"],\n InterfaceDeclaration: [\"id\"],\n TypeAlias: [\"id\"],\n OpaqueType: [\"id\"],\n\n CatchClause: [\"param\"],\n LabeledStatement: [\"label\"],\n UnaryExpression: [\"argument\"],\n AssignmentExpression: [\"left\"],\n\n ImportSpecifier: [\"local\"],\n ImportNamespaceSpecifier: [\"local\"],\n ImportDefaultSpecifier: [\"local\"],\n ImportDeclaration: [\"specifiers\"],\n\n ExportSpecifier: [\"exported\"],\n ExportNamespaceSpecifier: [\"exported\"],\n ExportDefaultSpecifier: [\"exported\"],\n\n FunctionDeclaration: [\"id\", \"params\"],\n FunctionExpression: [\"id\", \"params\"],\n ArrowFunctionExpression: [\"params\"],\n ObjectMethod: [\"params\"],\n ClassMethod: [\"params\"],\n ClassPrivateMethod: [\"params\"],\n\n ForInStatement: [\"left\"],\n ForOfStatement: [\"left\"],\n\n ClassDeclaration: [\"id\"],\n ClassExpression: [\"id\"],\n\n RestElement: [\"argument\"],\n UpdateExpression: [\"argument\"],\n\n ObjectProperty: [\"value\"],\n\n AssignmentPattern: [\"left\"],\n ArrayPattern: [\"elements\"],\n ObjectPattern: [\"properties\"],\n\n VariableDeclaration: [\"declarations\"],\n VariableDeclarator: [\"id\"],\n};\n","import getBindingIdentifiers from \"./getBindingIdentifiers.ts\";\nimport type * as t from \"../index.ts\";\n\nexport default getOuterBindingIdentifiers as {\n (node: t.Node, duplicates: true): Record<string, Array<t.Identifier>>;\n (node: t.Node, duplicates?: false): Record<string, t.Identifier>;\n (\n node: t.Node,\n duplicates?: boolean,\n ): Record<string, t.Identifier> | Record<string, Array<t.Identifier>>;\n};\n\nfunction getOuterBindingIdentifiers(\n node: t.Node,\n duplicates: boolean,\n): Record<string, t.Identifier> | Record<string, Array<t.Identifier>> {\n return getBindingIdentifiers(node, duplicates, true);\n}\n","import { VISITOR_KEYS } from \"../definitions/index.ts\";\nimport type * as t from \"../index.ts\";\n\nexport type TraversalAncestors = Array<{\n node: t.Node;\n key: string;\n index?: number;\n}>;\n\nexport type TraversalHandler<T> = (\n this: undefined,\n node: t.Node,\n parent: TraversalAncestors,\n state: T,\n) => void;\n\nexport type TraversalHandlers<T> = {\n enter?: TraversalHandler<T>;\n exit?: TraversalHandler<T>;\n};\n\n/**\n * A general AST traversal with both prefix and postfix handlers, and a\n * state object. Exposes ancestry data to each handler so that more complex\n * AST data can be taken into account.\n */\nexport default function traverse<T>(\n node: t.Node,\n handlers: TraversalHandler<T> | TraversalHandlers<T>,\n state?: T,\n): void {\n if (typeof handlers === \"function\") {\n handlers = { enter: handlers };\n }\n\n const { enter, exit } = handlers;\n\n traverseSimpleImpl(node, enter, exit, state, []);\n}\n\nfunction traverseSimpleImpl<T>(\n node: any,\n enter: Function | undefined,\n exit: Function | undefined,\n state: T | undefined,\n ancestors: TraversalAncestors,\n) {\n const keys = VISITOR_KEYS[node.type];\n if (!keys) return;\n\n if (enter) enter(node, ancestors, state);\n\n for (const key of keys) {\n const subNode = node[key];\n\n if (Array.isArray(subNode)) {\n for (let i = 0; i < subNode.length; i++) {\n const child = subNode[i];\n if (!child) continue;\n\n ancestors.push({\n node,\n key,\n index: i,\n });\n\n traverseSimpleImpl(child, enter, exit, state, ancestors);\n\n ancestors.pop();\n }\n } else if (subNode) {\n ancestors.push({\n node,\n key,\n });\n\n traverseSimpleImpl(subNode, enter, exit, state, ancestors);\n\n ancestors.pop();\n }\n }\n\n if (exit) exit(node, ancestors, state);\n}\n","import getBindingIdentifiers from \"../retrievers/getBindingIdentifiers.ts\";\nimport type * as t from \"../index.ts\";\n/**\n * Check if the input `node` is a binding identifier.\n */\nexport default function isBinding(\n node: t.Node,\n parent: t.Node,\n grandparent?: t.Node,\n): boolean {\n if (\n grandparent &&\n node.type === \"Identifier\" &&\n parent.type === \"ObjectProperty\" &&\n grandparent.type === \"ObjectExpression\"\n ) {\n // We need to special-case this, because getBindingIdentifiers\n // has an ObjectProperty->value entry for destructuring patterns.\n return false;\n }\n\n const keys =\n // @ts-expect-error getBindingIdentifiers.keys does not cover all AST types\n getBindingIdentifiers.keys[parent.type];\n if (keys) {\n for (let i = 0; i < keys.length; i++) {\n const key = keys[i];\n const val =\n // @ts-expect-error key must present in parent\n parent[key];\n if (Array.isArray(val)) {\n if (val.indexOf(node) >= 0) return true;\n } else {\n if (val === node) return true;\n }\n }\n }\n\n return false;\n}\n","import { isVariableDeclaration } from \"./generated/index.ts\";\nimport { BLOCK_SCOPED_SYMBOL } from \"../constants/index.ts\";\nimport type * as t from \"../index.ts\";\n\n/**\n * Check if the input `node` is a `let` variable declaration.\n */\nexport default function isLet(node: t.Node): boolean {\n return (\n isVariableDeclaration(node) &&\n (node.kind !== \"var\" ||\n // @ts-expect-error Fixme: document private properties\n node[BLOCK_SCOPED_SYMBOL])\n );\n}\n","import {\n isClassDeclaration,\n isFunctionDeclaration,\n} from \"./generated/index.ts\";\nimport isLet from \"./isLet.ts\";\nimport type * as t from \"../index.ts\";\n\n/**\n * Check if the input `node` is block scoped.\n */\nexport default function isBlockScoped(node: t.Node): boolean {\n return isFunctionDeclaration(node) || isClassDeclaration(node) || isLet(node);\n}\n","import isType from \"./isType.ts\";\nimport { isIdentifier } from \"./generated/index.ts\";\nimport type * as t from \"../index.ts\";\n\n/**\n * Check if the input `node` is definitely immutable.\n */\nexport default function isImmutable(node: t.Node): boolean {\n if (isType(node.type, \"Immutable\")) return true;\n\n if (isIdentifier(node)) {\n if (node.name === \"undefined\") {\n // immutable!\n return true;\n } else {\n // no idea...\n return false;\n }\n }\n\n return false;\n}\n","import { NODE_FIELDS, VISITOR_KEYS } from \"../definitions/index.ts\";\nimport type * as t from \"../index.ts\";\n\n/**\n * Check if two nodes are equivalent\n */\nexport default function isNodesEquivalent<T extends Partial<t.Node>>(\n a: T,\n b: any,\n): b is T {\n if (\n typeof a !== \"object\" ||\n typeof b !== \"object\" ||\n a == null ||\n b == null\n ) {\n return a === b;\n }\n\n if (a.type !== b.type) {\n return false;\n }\n\n const fields = Object.keys(NODE_FIELDS[a.type] || a.type);\n const visitorKeys = VISITOR_KEYS[a.type];\n\n for (const field of fields) {\n const val_a =\n // @ts-expect-error field must present in a\n a[field];\n const val_b = b[field];\n if (typeof val_a !== typeof val_b) {\n return false;\n }\n if (val_a == null && val_b == null) {\n continue;\n } else if (val_a == null || val_b == null) {\n return false;\n }\n\n if (Array.isArray(val_a)) {\n if (!Array.isArray(val_b)) {\n return false;\n }\n if (val_a.length !== val_b.length) {\n return false;\n }\n\n for (let i = 0; i < val_a.length; i++) {\n if (!isNodesEquivalent(val_a[i], val_b[i])) {\n return false;\n }\n }\n continue;\n }\n\n if (typeof val_a === \"object\" && !visitorKeys?.includes(field)) {\n for (const key of Object.keys(val_a)) {\n if (val_a[key] !== val_b[key]) {\n return false;\n }\n }\n continue;\n }\n\n if (!isNodesEquivalent(val_a, val_b)) {\n return false;\n }\n }\n\n return true;\n}\n","import type * as t from \"../index.ts\";\n\n/**\n * Check if the input `node` is a reference to a bound variable.\n */\nexport default function isReferenced(\n node: t.Node,\n parent: t.Node,\n grandparent?: t.Node,\n): boolean {\n switch (parent.type) {\n // yes: PARENT[NODE]\n // yes: NODE.child\n // no: parent.NODE\n case \"MemberExpression\":\n case \"OptionalMemberExpression\":\n if (parent.property === node) {\n return !!parent.computed;\n }\n return parent.object === node;\n\n case \"JSXMemberExpression\":\n return parent.object === node;\n // no: let NODE = init;\n // yes: let id = NODE;\n case \"VariableDeclarator\":\n return parent.init === node;\n\n // yes: () => NODE\n // no: (NODE) => {}\n case \"ArrowFunctionExpression\":\n return parent.body === node;\n\n // no: class { #NODE; }\n // no: class { get #NODE() {} }\n // no: class { #NODE() {} }\n // no: class { fn() { return this.#NODE; } }\n case \"PrivateName\":\n return false;\n\n // no: class { NODE() {} }\n // yes: class { [NODE]() {} }\n // no: class { foo(NODE) {} }\n case \"ClassMethod\":\n case \"ClassPrivateMethod\":\n case \"ObjectMethod\":\n if (parent.key === node) {\n return !!parent.computed;\n }\n return false;\n\n // yes: { [NODE]: \"\" }\n // no: { NODE: \"\" }\n // depends: { NODE }\n // depends: { key: NODE }\n case \"ObjectProperty\":\n if (parent.key === node) {\n return !!parent.computed;\n }\n // parent.value === node\n return !grandparent || grandparent.type !== \"ObjectPattern\";\n // no: class { NODE = value; }\n // yes: class { [NODE] = value; }\n // yes: class { key = NODE; }\n case \"ClassProperty\":\n case \"ClassAccessorProperty\":\n if (parent.key === node) {\n return !!parent.computed;\n }\n return true;\n case \"ClassPrivateProperty\":\n return parent.key !== node;\n\n // no: class NODE {}\n // yes: class Foo extends NODE {}\n case \"ClassDeclaration\":\n case \"ClassExpression\":\n return parent.superClass === node;\n\n // yes: left = NODE;\n // no: NODE = right;\n case \"AssignmentExpression\":\n return parent.right === node;\n\n // no: [NODE = foo] = [];\n // yes: [foo = NODE] = [];\n case \"AssignmentPattern\":\n return parent.right === node;\n\n // no: NODE: for (;;) {}\n case \"LabeledStatement\":\n return false;\n\n // no: try {} catch (NODE) {}\n case \"CatchClause\":\n return false;\n\n // no: function foo(...NODE) {}\n case \"RestElement\":\n return false;\n\n case \"BreakStatement\":\n case \"ContinueStatement\":\n return false;\n\n // no: function NODE() {}\n // no: function foo(NODE) {}\n case \"FunctionDeclaration\":\n case \"FunctionExpression\":\n return false;\n\n // no: export NODE from \"foo\";\n // no: export * as NODE from \"foo\";\n case \"ExportNamespaceSpecifier\":\n case \"ExportDefaultSpecifier\":\n return false;\n\n // no: export { foo as NODE };\n // yes: export { NODE as foo };\n // no: export { NODE as foo } from \"foo\";\n case \"ExportSpecifier\":\n // @ts-expect-error todo(flow->ts): Property 'source' does not exist on type 'AnyTypeAnnotation'.\n if (grandparent?.source) {\n return false;\n }\n return parent.local === node;\n\n // no: import NODE from \"foo\";\n // no: import * as NODE from \"foo\";\n // no: import { NODE as foo } from \"foo\";\n // no: import { foo as NODE } from \"foo\";\n // no: import NODE from \"bar\";\n case \"ImportDefaultSpecifier\":\n case \"ImportNamespaceSpecifier\":\n case \"ImportSpecifier\":\n return false;\n\n // no: import \"foo\" assert { NODE: \"json\" }\n case \"ImportAttribute\":\n return false;\n\n // no: <div NODE=\"foo\" />\n case \"JSXAttribute\":\n return false;\n\n // no: [NODE] = [];\n // no: ({ NODE }) = [];\n case \"ObjectPattern\":\n case \"ArrayPattern\":\n return false;\n\n // no: new.NODE\n // no: NODE.target\n case \"MetaProperty\":\n return false;\n\n // yes: type X = { someProperty: NODE }\n // no: type X = { NODE: OtherType }\n case \"ObjectTypeProperty\":\n return parent.key !== node;\n\n // yes: enum X { Foo = NODE }\n // no: enum X { NODE }\n case \"TSEnumMember\":\n return parent.id !== node;\n\n // yes: { [NODE]: value }\n // no: { NODE: value }\n case \"TSPropertySignature\":\n if (parent.key === node) {\n return !!parent.computed;\n }\n\n return true;\n }\n\n return true;\n}\n","import {\n isFunction,\n isCatchClause,\n isBlockStatement,\n isScopable,\n isPattern,\n} from \"./generated/index.ts\";\nimport type * as t from \"../index.ts\";\n\n/**\n * Check if the input `node` is a scope.\n */\nexport default function isScope(node: t.Node, parent: t.Node): boolean {\n // If a BlockStatement is an immediate descendent of a Function/CatchClause, it must be in the body.\n // Hence we skipped the parentKey === \"params\" check\n if (isBlockStatement(node) && (isFunction(parent) || isCatchClause(parent))) {\n return false;\n }\n\n // If a Pattern is an immediate descendent of a Function/CatchClause, it must be in the params.\n // Hence we skipped the parentKey === \"params\" check\n if (isPattern(node) && (isFunction(parent) || isCatchClause(parent))) {\n return true;\n }\n\n return isScopable(node);\n}\n","import { isIdentifier, isImportDefaultSpecifier } from \"./generated/index.ts\";\nimport type * as t from \"../index.ts\";\n\n/**\n * Check if the input `specifier` is a `default` import or export.\n */\nexport default function isSpecifierDefault(\n specifier: t.ModuleSpecifier,\n): boolean {\n return (\n isImportDefaultSpecifier(specifier) ||\n // @ts-expect-error todo(flow->ts): stricter type for specifier\n isIdentifier(specifier.imported || specifier.exported, {\n name: \"default\",\n })\n );\n}\n","import isValidIdentifier from \"./isValidIdentifier.ts\";\n\nconst RESERVED_WORDS_ES3_ONLY: Set<string> = new Set([\n \"abstract\",\n \"boolean\",\n \"byte\",\n \"char\",\n \"double\",\n \"enum\",\n \"final\",\n \"float\",\n \"goto\",\n \"implements\",\n \"int\",\n \"interface\",\n \"long\",\n \"native\",\n \"package\",\n \"private\",\n \"protected\",\n \"public\",\n \"short\",\n \"static\",\n \"synchronized\",\n \"throws\",\n \"transient\",\n \"volatile\",\n]);\n\n/**\n * Check if the input `name` is a valid identifier name according to the ES3 specification.\n *\n * Additional ES3 reserved words are\n */\nexport default function isValidES3Identifier(name: string): boolean {\n return isValidIdentifier(name) && !RESERVED_WORDS_ES3_ONLY.has(name);\n}\n","import { isVariableDeclaration } from \"./generated/index.ts\";\nimport { BLOCK_SCOPED_SYMBOL } from \"../constants/index.ts\";\nimport type * as t from \"../index.ts\";\n\n/**\n * Check if the input `node` is a variable declaration.\n */\nexport default function isVar(node: t.Node): boolean {\n return (\n isVariableDeclaration(node, { kind: \"var\" }) &&\n !(\n // @ts-expect-error document private properties\n node[BLOCK_SCOPED_SYMBOL]\n )\n );\n}\n","// TODO(Babel 8) Remove this file\nif (process.env.BABEL_8_BREAKING) {\n throw new Error(\n \"Internal Babel error: This file should only be loaded in Babel 7\",\n );\n}\n\nimport getBindingIdentifiers from \"../retrievers/getBindingIdentifiers.ts\";\nimport {\n isExpression,\n isExpressionStatement,\n isVariableDeclaration,\n isIfStatement,\n isBlockStatement,\n isEmptyStatement,\n} from \"../validators/generated/index.ts\";\nimport {\n sequenceExpression,\n assignmentExpression,\n conditionalExpression,\n} from \"../builders/generated/index.ts\";\nimport cloneNode from \"../clone/cloneNode.ts\";\nimport type * as t from \"../index.ts\";\nimport type { Scope } from \"@babel/traverse\";\n\nexport type DeclarationInfo = {\n kind: t.VariableDeclaration[\"kind\"];\n id: t.Identifier;\n};\n\nexport default function gatherSequenceExpressions(\n nodes: ReadonlyArray<t.Node>,\n scope: Scope,\n declars: Array<DeclarationInfo>,\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({\n kind: node.kind,\n id: cloneNode(bindings[key]),\n });\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], scope, declars)\n : scope.buildUndefinedNode();\n const alternate = node.alternate\n ? gatherSequenceExpressions([node.alternate], scope, declars)\n : scope.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, scope, 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) {\n exprs.push(scope.buildUndefinedNode());\n }\n\n if (exprs.length === 1) {\n return exprs[0];\n } else {\n return sequenceExpression(exprs);\n }\n}\n","// TODO(Babel 8) Remove this file\nif (process.env.BABEL_8_BREAKING) {\n throw new Error(\n \"Internal Babel error: This file should only be loaded in Babel 7\",\n );\n}\n\nimport gatherSequenceExpressions from \"./gatherSequenceExpressions.ts\";\nimport type * as t from \"../index.ts\";\nimport type { DeclarationInfo } from \"./gatherSequenceExpressions.ts\";\n\n/**\n * Turn an array of statement `nodes` into a `SequenceExpression`.\n *\n * Variable declarations are turned into simple assignments and their\n * declarations hoisted to the top of the current scope.\n *\n * Expression statements are just resolved to their expression.\n */\nexport default function toSequenceExpression(\n nodes: ReadonlyArray<t.Node>,\n scope: any,\n): t.SequenceExpression | undefined {\n if (!nodes?.length) return;\n\n const declars: DeclarationInfo[] = [];\n const result = gatherSequenceExpressions(nodes, scope, declars);\n if (!result) return;\n\n for (const declar of declars) {\n scope.push(declar);\n }\n\n // @ts-expect-error fixme: gatherSequenceExpressions will return an Expression when there are only one element\n return result;\n}\n","import isReactComponent from \"./validators/react/isReactComponent.ts\";\nimport isCompatTag from \"./validators/react/isCompatTag.ts\";\nimport buildChildren from \"./builders/react/buildChildren.ts\";\n\n// asserts\nexport { default as assertNode } from \"./asserts/assertNode.ts\";\nexport * from \"./asserts/generated/index.ts\";\n\n// builders\nexport { default as createTypeAnnotationBasedOnTypeof } from \"./builders/flow/createTypeAnnotationBasedOnTypeof.ts\";\n/** @deprecated use createFlowUnionType instead */\nexport { default as createUnionTypeAnnotation } from \"./builders/flow/createFlowUnionType.ts\";\nexport { default as createFlowUnionType } from \"./builders/flow/createFlowUnionType.ts\";\nexport { default as createTSUnionType } from \"./builders/typescript/createTSUnionType.ts\";\nexport * from \"./builders/generated/index.ts\";\nexport * from \"./builders/generated/uppercase.js\";\nexport * from \"./builders/productions.ts\";\n\n// clone\nexport { default as cloneNode } from \"./clone/cloneNode.ts\";\nexport { default as clone } from \"./clone/clone.ts\";\nexport { default as cloneDeep } from \"./clone/cloneDeep.ts\";\nexport { default as cloneDeepWithoutLoc } from \"./clone/cloneDeepWithoutLoc.ts\";\nexport { default as cloneWithoutLoc } from \"./clone/cloneWithoutLoc.ts\";\n\n// comments\nexport { default as addComment } from \"./comments/addComment.ts\";\nexport { default as addComments } from \"./comments/addComments.ts\";\nexport { default as inheritInnerComments } from \"./comments/inheritInnerComments.ts\";\nexport { default as inheritLeadingComments } from \"./comments/inheritLeadingComments.ts\";\nexport { default as inheritsComments } from \"./comments/inheritsComments.ts\";\nexport { default as inheritTrailingComments } from \"./comments/inheritTrailingComments.ts\";\nexport { default as removeComments } from \"./comments/removeComments.ts\";\n\n// constants\nexport * from \"./constants/generated/index.ts\";\nexport * from \"./constants/index.ts\";\n\n// converters\nexport { default as ensureBlock } from \"./converters/ensureBlock.ts\";\nexport { default as toBindingIdentifierName } from \"./converters/toBindingIdentifierName.ts\";\nexport { default as toBlock } from \"./converters/toBlock.ts\";\nexport { default as toComputedKey } from \"./converters/toComputedKey.ts\";\nexport { default as toExpression } from \"./converters/toExpression.ts\";\nexport { default as toIdentifier } from \"./converters/toIdentifier.ts\";\nexport { default as toKeyAlias } from \"./converters/toKeyAlias.ts\";\nexport { default as toStatement } from \"./converters/toStatement.ts\";\nexport { default as valueToNode } from \"./converters/valueToNode.ts\";\n\n// definitions\nexport * from \"./definitions/index.ts\";\n\n// modifications\nexport { default as appendToMemberExpression } from \"./modifications/appendToMemberExpression.ts\";\nexport { default as inherits } from \"./modifications/inherits.ts\";\nexport { default as prependToMemberExpression } from \"./modifications/prependToMemberExpression.ts\";\nexport {\n default as removeProperties,\n type Options as RemovePropertiesOptions,\n} from \"./modifications/removeProperties.ts\";\nexport { default as removePropertiesDeep } from \"./modifications/removePropertiesDeep.ts\";\nexport { default as removeTypeDuplicates } from \"./modifications/flow/removeTypeDuplicates.ts\";\n\n// retrievers\nexport { default as getBindingIdentifiers } from \"./retrievers/getBindingIdentifiers.ts\";\nexport { default as getOuterBindingIdentifiers } from \"./retrievers/getOuterBindingIdentifiers.ts\";\n\n// traverse\nexport { default as traverse } from \"./traverse/traverse.ts\";\nexport * from \"./traverse/traverse.ts\";\nexport { default as traverseFast } from \"./traverse/traverseFast.ts\";\n\n// utils\nexport { default as shallowEqual } from \"./utils/shallowEqual.ts\";\n\n// validators\nexport { default as is } from \"./validators/is.ts\";\nexport { default as isBinding } from \"./validators/isBinding.ts\";\nexport { default as isBlockScoped } from \"./validators/isBlockScoped.ts\";\nexport { default as isImmutable } from \"./validators/isImmutable.ts\";\nexport { default as isLet } from \"./validators/isLet.ts\";\nexport { default as isNode } from \"./validators/isNode.ts\";\nexport { default as isNodesEquivalent } from \"./validators/isNodesEquivalent.ts\";\nexport { default as isPlaceholderType } from \"./validators/isPlaceholderType.ts\";\nexport { default as isReferenced } from \"./validators/isReferenced.ts\";\nexport { default as isScope } from \"./validators/isScope.ts\";\nexport { default as isSpecifierDefault } from \"./validators/isSpecifierDefault.ts\";\nexport { default as isType } from \"./validators/isType.ts\";\nexport { default as isValidES3Identifier } from \"./validators/isValidES3Identifier.ts\";\nexport { default as isValidIdentifier } from \"./validators/isValidIdentifier.ts\";\nexport { default as isVar } from \"./validators/isVar.ts\";\nexport { default as matchesPattern } from \"./validators/matchesPattern.ts\";\nexport { default as validate } from \"./validators/validate.ts\";\nexport { default as buildMatchMemberExpression } from \"./validators/buildMatchMemberExpression.ts\";\nexport * from \"./validators/generated/index.ts\";\n\n// react\nexport const react = {\n isReactComponent,\n isCompatTag,\n buildChildren,\n};\n\nexport type * from \"./ast-types/generated/index.ts\";\n\n// this is used by @babel/traverse to warn about deprecated visitors\nexport { default as __internal__deprecationWarning } from \"./utils/deprecationWarning.ts\";\n\nif (!process.env.BABEL_8_BREAKING && !USE_ESM && !IS_STANDALONE) {\n // eslint-disable-next-line no-restricted-globals\n exports.toSequenceExpression =\n // eslint-disable-next-line no-restricted-globals\n require(\"./converters/toSequenceExpression.js\").default;\n}\n","import { transformProgram } from './transform';\nimport { transformJSX } from './jsx-transform';\nimport { replaceProps } from './signal/props';\nimport { replaceSymbol } from './signal/symbol';\nimport { replaceImportDeclaration } from './signal/import';\nimport type { PluginObj } from '@babel/core';\n\nexport default function (): PluginObj {\n return {\n name: 'babel-plugin-essor',\n manipulateOptions({ filename }, parserOpts) {\n if (filename.endsWith('ts') || filename.endsWith('tsx')) {\n parserOpts.plugins.push('typescript');\n }\n parserOpts.plugins.push('jsx');\n },\n visitor: {\n Program: transformProgram(),\n JSXElement: transformJSX,\n JSXFragment: transformJSX,\n FunctionDeclaration: replaceProps,\n VariableDeclarator: replaceSymbol,\n ImportDeclaration: replaceImportDeclaration,\n },\n };\n}\n","import { types as t } from '@babel/core';\nimport { imports } from './shared';\nimport type { NodePath } from '@babel/core';\nimport type { State } from './types';\n\nexport function transformProgram() {\n return {\n enter(path: NodePath<t.Program>) {\n path.state = {\n h: path.scope.generateUidIdentifier('h$'),\n signal: path.scope.generateUidIdentifier('signal$'),\n computed: path.scope.generateUidIdentifier('computed$'),\n template: path.scope.generateUidIdentifier('template$'),\n toSignalObject: path.scope.generateUidIdentifier('toSignalObject&'),\n tmplDeclaration: t.variableDeclaration('const', []),\n } as State;\n\n imports.clear();\n },\n exit(path: NodePath<t.Program>) {\n const state: State = path.state;\n\n if (state.tmplDeclaration.declarations.length > 0) {\n const index = path.node.body.findIndex(\n node => !t.isImportDeclaration(node) && !t.isExportDeclaration(node),\n );\n path.node.body.splice(index, 0, state.tmplDeclaration);\n }\n\n if (imports.size > 0) {\n path.node.body.unshift(createImport(state, 'essor'));\n }\n },\n };\n}\nfunction createImport(state: State, from: string) {\n const ImportSpecifier: t.ImportSpecifier[] = [];\n imports.forEach(name => {\n const local = t.identifier(state[name].name);\n const imported = t.identifier(name);\n ImportSpecifier.push(t.importSpecifier(local, imported));\n });\n\n const importSource = t.stringLiteral(from);\n return t.importDeclaration(ImportSpecifier, importSource);\n}\n","import { types as t } from '@babel/core';\n/**\n * Checks if the given node is a primitive type.\n *\n * @param {type} node - the node to check\n * @return {boolean} true if the node is a primitive type, false otherwise\n */\nexport function isPrimitiveType(node) {\n return (\n t.isStringLiteral(node) ||\n t.isNumericLiteral(node) ||\n t.isBooleanLiteral(node) ||\n t.isNullLiteral(node) ||\n t.isIdentifier(node, { name: 'undefined' }) ||\n t.isUnaryExpression(node, { operator: 'void' }) ||\n (t.isUnaryExpression(node, { operator: 'typeof' }) &&\n t.isStringLiteral(node.argument, { value: 'symbol' })) ||\n t.isBigIntLiteral(node)\n );\n}\n\n/**\n * A function to find if a value is assigned to a variable after its definition.\n *\n * @param {any} name - the name of the variable to search for assignment\n * @param {any} path - the path to traverse for assignment\n * @return {boolean} true if an assignment to the variable is found, false otherwise\n */\nexport function findValueAssignment(name, path): boolean {\n let isAss = false;\n path.parentPath.traverse({\n AssignmentExpression(assignmentPath) {\n if (\n assignmentPath.node.left.type === 'Identifier' &&\n assignmentPath.node.left.name === name\n ) {\n isAss = true;\n }\n },\n });\n return isAss;\n}\nexport const imports = new Set<string>();\n","import { types as t } from '@babel/core';\nimport { selfClosingTags, svgTags } from './constants';\nimport { imports } from './shared';\nimport type { NodePath } from '@babel/core';\nimport type { State } from './types';\n\ninterface Result {\n index: number; // Index of the current node in the parent node\n isLastChild: boolean; // Whether it is the last child of the parent node\n parentIndex: number; // Index of the parent node in the parent node\n props: Record<string, any>; // Properties of the current node\n template: string; // Template string of the current node\n}\n\ntype JSXElement = t.JSXElement | t.JSXFragment;\n\ntype JSXChild =\n | t.JSXElement\n | t.JSXFragment\n | t.JSXExpressionContainer\n | t.JSXSpreadChild\n | t.JSXText;\n\nexport function transformJSX(path: NodePath<JSXElement>): void {\n const result: Result = {\n index: 1,\n isLastChild: false,\n parentIndex: 0,\n props: {},\n template: '',\n };\n transformElement(path, result, true);\n path.replaceWith(createEssorNode(path, result));\n}\n\nfunction createEssorNode(path: NodePath<JSXElement>, result: Result): t.CallExpression {\n const state: State = path.state;\n let tmpl: t.Identifier;\n\n if (path.isJSXElement() && isComponent(getTagName(path.node))) {\n tmpl = t.identifier(getTagName(path.node));\n } else {\n tmpl = path.scope.generateUidIdentifier('_tmpl$');\n const template = t.callExpression(state.template, [t.stringLiteral(result.template)]);\n const declarator = t.variableDeclarator(tmpl, template);\n state.tmplDeclaration.declarations.push(declarator);\n imports.add('template');\n }\n\n const args = [tmpl, createProps(result.props)];\n const key = result.props.key ?? result.props[0]?.key;\n\n if (key) {\n args.push(key);\n }\n imports.add('h');\n return t.callExpression(state.h, args);\n}\n\nfunction createProps(props: Record<string, any>): t.ObjectExpression {\n const result: (t.ObjectProperty | t.SpreadElement)[] = [];\n\n for (const prop in props) {\n let value = props[prop];\n\n if (prop === 'key') {\n continue;\n }\n\n if (Array.isArray(value)) {\n value = t.arrayExpression(value);\n }\n\n if (typeof value === 'object' && value !== null && !t.isNode(value)) {\n value = createProps(value);\n }\n\n if (typeof value === 'string') {\n value = t.stringLiteral(value);\n }\n\n if (typeof value === 'number') {\n value = t.numericLiteral(value);\n }\n\n if (typeof value === 'boolean') {\n value = t.booleanLiteral(value);\n }\n\n if (value === undefined) {\n value = t.tsUndefinedKeyword();\n }\n\n if (value === null) {\n value = t.nullLiteral();\n }\n\n if (prop === '_$spread$') {\n result.push(t.spreadElement(value));\n } else {\n result.push(t.objectProperty(t.stringLiteral(prop), value));\n }\n }\n\n return t.objectExpression(result);\n}\n\nfunction getAttrProps(path: NodePath<t.JSXElement>): Record<string, any> {\n const props: Record<string, any> = {};\n\n path\n .get('openingElement')\n .get('attributes')\n .forEach(attribute => {\n if (attribute.isJSXAttribute()) {\n const name = getAttrName(attribute.node);\n const value = attribute.get('value');\n\n if (!value.node) {\n props[name] = true;\n } else if (value.isStringLiteral()) {\n props[name] = value.node.value;\n } else {\n if (value.isJSXExpressionContainer()) {\n const expression = value.get('expression');\n\n if (expression.isStringLiteral()) {\n props[name] = expression.node.value;\n } else if (expression.isNumericLiteral()) {\n props[name] = expression.node.value;\n } else if (expression.isJSXElement() || expression.isJSXFragment()) {\n transformJSX(expression);\n props[name] = expression.node;\n } else if (expression.isExpression()) {\n if (/^key|ref|on.+$/.test(name)) {\n props[name] = expression.node;\n } else if (/^bind:.+/.test(name)) {\n props[name] = t.arrowFunctionExpression([], expression.node);\n const value = path.scope.generateUidIdentifier('value');\n props[`update:${name.slice(5).toLocaleLowerCase()}`] = t.arrowFunctionExpression(\n [value],\n t.assignmentExpression('=', expression.node as any, value),\n );\n } else {\n if (expression.isConditionalExpression()) {\n props[name] = t.arrowFunctionExpression([], expression.node);\n } else {\n props[name] = expression.node;\n }\n }\n }\n } else if (value.isJSXElement() || value.isJSXFragment()) {\n transformJSX(value);\n props[name] = value.node;\n }\n }\n } else if (attribute.isJSXSpreadAttribute()) {\n props._$spread$ = attribute.get('argument').node;\n } else {\n throw new Error('Unsupported attribute type');\n }\n });\n\n return props;\n}\n\nfunction transformElement(path: NodePath<JSXElement>, result: Result, isRoot?: boolean): void {\n if (path.isJSXElement()) {\n const tagName = getTagName(path.node);\n const tagIsComponent = isComponent(tagName);\n const isSelfClosing = !tagIsComponent && selfClosingTags.includes(tagName);\n const isSvgTemplate = svgTags.includes(tagName) && result.index === 1;\n const props = getAttrProps(path);\n\n if (tagIsComponent) {\n if (isRoot) {\n result.props = props;\n const children = getChildren(path) as any;\n if (children.length > 0) {\n const childrenGetter = children.length === 1 ? children[0] : t.arrayExpression(children);\n result.props.children = childrenGetter;\n }\n } else {\n transformJSX(path);\n replaceChild(path.node, result);\n }\n } else {\n if (isSvgTemplate) {\n result.template += `<svg _svg_>`;\n }\n result.template += `<${tagName}`;\n handleAttributes(props, result);\n result.template += isSelfClosing ? '/>' : '>';\n if (!isSelfClosing) {\n transformChildren(path, result);\n result.template += `</${tagName}>`;\n }\n }\n } else {\n result.index--;\n transformChildren(path, result);\n }\n}\n\nfunction getChildren(path: NodePath<t.JSXElement>): JSXChild[] {\n return path\n .get('children')\n .filter(isValidChild)\n .map(child => {\n if (child.isJSXElement() || child.isJSXFragment()) {\n transformJSX(child);\n } else if (child.isJSXExpressionContainer()) {\n child.replaceWith(child.get('expression'));\n } else if (child.isJSXText()) {\n child.replaceWith(t.stringLiteral(child.node.value));\n } else {\n throw new Error('Unsupported JSX child');\n }\n return child.node;\n });\n}\n\nfunction handleAttributes(props: Record<string, any>, result: Result): void {\n let klass = '';\n let style = '';\n\n for (const prop in props) {\n const value = props[prop];\n\n if (prop === 'class' && typeof value === 'string') {\n klass += ` ${value}`;\n delete props[prop];\n continue;\n }\n if (prop.indexOf('class:') === 0) {\n if (value === true) {\n const name = prop.replace(/^class:/, '');\n klass += ` ${name}`;\n delete props[prop];\n continue;\n }\n if (value === false) {\n delete props[prop];\n continue;\n }\n }\n\n if (prop === 'style' && typeof value === 'string') {\n style += `${value}${value.at(-1) === ';' ? '' : ';'}`;\n delete props[prop];\n continue;\n }\n if (prop.indexOf('style:') === 0 && (typeof value === 'string' || typeof value === 'number')) {\n const name = prop.replace(/^style:/, '');\n style += `${name}:${value};`;\n delete props[prop];\n continue;\n }\n\n if (value === true) {\n result.template += ` ${prop}`;\n delete props[prop];\n }\n if (value === false) {\n delete props[prop];\n }\n if (typeof value === 'string' || typeof value === 'number') {\n result.template += ` ${prop}=\"${value}\"`;\n delete props[prop];\n }\n }\n\n if (Object.keys(props).length > 0) {\n result.props[result.index] = props;\n }\n\n klass = klass.trim();\n style = style.trim();\n\n if (klass) {\n result.template += ` class=\"${klass}\"`;\n }\n if (style) {\n result.template += ` style=\"${style}\"`;\n }\n}\n\nfunction transformChildren(path: NodePath<JSXElement>, result: Result): void {\n const parentIndex = result.index;\n path\n .get('children')\n .reduce((acc, child) => {\n if (isValidChild(child)) {\n const lastChild = acc.at(-1);\n if (lastChild && isTextChild(child) && isTextChild(lastChild)) {\n setNodeText(lastChild, getNodeText(lastChild) + getNodeText(child));\n } else {\n acc.push(child);\n }\n }\n return acc;\n }, [] as NodePath<JSXChild>[])\n .forEach((child, i, arr) => {\n result.parentIndex = parentIndex;\n result.isLastChild = i === arr.length - 1;\n transformChild(child, result);\n });\n}\n\nfunction transformChild(child: NodePath<JSXChild>, result: Result) {\n result.index++;\n if (child.isJSXElement() || child.isJSXFragment()) {\n transformElement(child, result);\n } else if (child.isJSXExpressionContainer()) {\n const expression = child.get('expression');\n if (expression.isStringLiteral() || expression.isNumericLiteral()) {\n result.template += expression.node.value;\n } else if (expression.isExpression()) {\n replaceChild(expression.node, result);\n } else {\n throw new Error('Unsupported JSX child');\n }\n } else if (child.isJSXText()) {\n result.template += child.node.value;\n } else {\n throw new Error('Unsupported JSX child');\n }\n}\n\nfunction replaceChild(node: t.Expression, result: Result): void {\n if (result.isLastChild) {\n result.index--;\n } else {\n result.template += '<!>';\n }\n result.props[result.parentIndex] ??= {};\n result.props[result.parentIndex].children ??= [];\n result.props[result.parentIndex].children.push(\n t.arrayExpression([\n t.arrowFunctionExpression([], node),\n result.isLastChild ? t.nullLiteral() : t.identifier(String(result.index)),\n ]),\n );\n}\n\nfunction getAttrName(attribute: t.JSXAttribute): string {\n if (t.isJSXIdentifier(attribute.name)) {\n return attribute.name.name;\n }\n if (t.isJSXNamespacedName(attribute.name)) {\n return `${attribute.name.namespace.name}:${attribute.name.name.name}`;\n }\n throw new Error('Unsupported attribute type');\n}\n\nfunction getNodeText(path: NodePath<JSXChild>): string {\n if (path.isJSXText()) {\n return path.node.value;\n }\n if (path.isJSXExpressionContainer()) {\n const expression = path.get('expression');\n if (expression.isStringLiteral() || expression.isNumericLiteral()) {\n return String(expression.node.value);\n }\n }\n return '';\n}\n\nfunction setNodeText(path: NodePath<JSXChild>, text: string): void {\n if (path.isJSXText()) {\n path.node.value = text;\n }\n if (path.isJSXExpressionContainer()) {\n const expression = path.get('expression');\n if (expression.isStringLiteral() || expression.isNumericLiteral()) {\n expression.replaceWith(t.stringLiteral(text));\n }\n }\n}\n\nfunction getTagName(node: t.JSXElement): string {\n const jsxName = node.openingElement.name;\n return jsxElementNameToString(jsxName);\n}\n\nfunction isComponent(tagName: string): boolean {\n return (\n (tagName[0] && tagName[0].toLowerCase() !== tagName[0]) ||\n tagName.includes('.') ||\n /[^A-Za-z]/.test(tagName[0])\n );\n}\n\nfunction isTextChild(path: NodePath<JSXChild>): boolean {\n if (path.isJSXExpressionContainer()) {\n const expression = path.get('expression');\n if (expression.isJSXText() || expression.isStringLiteral() || expression.isNumericLiteral()) {\n return true;\n }\n }\n if (path.isJSXText() || path.isStringLiteral() || path.isNullLiteral()) {\n return true;\n }\n return false;\n}\n\nfunction isValidChild(path: NodePath<JSXChild>): boolean {\n const regex = /^\\s*$/;\n if (path.isStringLiteral() || path.isJSXText()) {\n return !regex.test(path.node.value);\n }\n return Object.keys(path.node).length > 0;\n}\n\nfunction jsxElementNameToString(\n node: t.JSXMemberExpression | t.JSXIdentifier | t.JSXNamespacedName,\n): string {\n if (t.isJSXMemberExpression(node)) {\n return `${jsxElementNameToString(node.object)}.${node.property.name}`;\n }\n if (t.isJSXIdentifier(node) || t.isIdentifier(node)) {\n return node.name;\n }\n return `${node.namespace.name}:${node.name.name}`;\n}\n","export const selfClosingTags = [\n 'area',\n 'base',\n 'br',\n 'col',\n 'embed',\n 'hr',\n 'img',\n 'input',\n 'link',\n 'meta',\n 'param',\n 'source',\n 'track',\n 'wbr',\n];\n\nexport const svgTags = [\n 'circle',\n 'clipPath',\n 'defs',\n 'ellipse',\n 'filter',\n 'g',\n 'line',\n 'linearGradient',\n 'mask',\n 'path',\n 'pattern',\n 'polygon',\n 'polyline',\n 'radialGradient',\n 'rect',\n 'stop',\n 'symbol',\n 'text',\n 'use',\n];\n","import { type NodePath, types as t } from '@babel/core';\nimport type { FunctionDeclaration } from '@babel/types';\n\nexport function replaceProps(path: NodePath<FunctionDeclaration>) {\n // TODO: 应该支持多个解构,params可能有无数个\n const firstParam = path.node.params[0];\n\n if (!t.isReturnStatement(path.node.body)) {\n return;\n }\n\n // 检查函数是否有参数\n if (!firstParam) {\n return;\n }\n\n // 检查参数是否是一个对象解构\n if (!t.isObjectPattern(firstParam)) {\n return;\n }\n const returnStatement = path\n .get('body')\n .get('body')\n .find(statement => statement.isReturnStatement());\n if (!returnStatement) {\n return;\n }\n const returnValue = (returnStatement.node as any).argument;\n if (!t.isJSXElement(returnValue)) {\n return;\n }\n const properties = firstParam.properties;\n\n const propsDeclaration = t.variableDeclaration('const', [\n t.variableDeclarator(\n t.objectPattern(properties),\n t.callExpression(t.identifier('$'), [t.identifier('props')]),\n ),\n ]);\n\n // 替换函数参数为 props\n path.node.params[0] = t.identifier('props');\n\n // 插入 const 声明\n (path.node.body as any).body.unshift(propsDeclaration);\n}\n","import { types as t } from '@babel/core';\nimport { type Identifier, type VariableDeclarator, cloneNode } from '@babel/types';\nimport { imports } from '../shared';\nimport { replacePatternToReactive } from './pattern';\nimport type { NodePath } from '@babel/core';\n\nexport function replaceSymbol(path: NodePath<VariableDeclarator>) {\n const init = path.node.init;\n const variableName = (path.node.id as Identifier).name;\n\n if (t.isObjectPattern(path.node.id) || t.isArrayPattern(path.node.id)) {\n // 如果是解构的,则交给 replacePatternToReactive 处理\n replacePatternToReactive(path);\n return;\n }\n\n if (!variableName.startsWith('$')) {\n return;\n }\n\n if (\n init &&\n (t.isFunctionExpression(init) || t.isArrowFunctionExpression(init)) &&\n (path.parent as t.VariableDeclaration).kind === 'const'\n ) {\n // 处理箭头函数表达式,将其转换为 _computed 调用\n const newInit = t.callExpression(t.identifier(path.state.computed.name), init ? [init] : []);\n imports.add('computed');\n path.node.init = newInit; // 直接替换 AST 节点\n } else {\n // 判断参数是否是基本数据类型 ,也可能没有参数\n const originalImportDeclarationNodes = cloneNode(path.get('id').node, true);\n\n const newInit = t.callExpression(t.identifier(path.state.signal.name), init ? [init] : []);\n imports.add('signal');\n path.node.init = newInit;\n\n path.scope.rename(variableName, `${variableName}.value`);\n\n path.get('id').replaceWith(originalImportDeclarationNodes);\n\n // 这里需要确保只修改在当前作用域中的变量名\n path.scope.traverse(path.scope.block, {\n Identifier(innerPath) {\n if (t.isExportSpecifier(innerPath.parent)) {\n const { name } = innerPath.node;\n if (name.endsWith('.value')) {\n innerPath.node.name = name.slice(0, -6); // 删除 '.value' 部分\n }\n }\n },\n });\n }\n}\n","import { types as t } from '@babel/core';\nimport type { NodePath } from '@babel/core';\nimport type { VariableDeclarator } from '@babel/types';\n\nfunction replaceObjectPattern(path, properties) {\n properties.forEach(prop => {\n if (prop.type === 'RestElement') {\n const variableName = prop.argument.name;\n\n path.scope.traverse(path.scope.block, {\n MemberExpression(memberPath) {\n if (memberPath.node.object.name === variableName) {\n memberPath.node.object = t.identifier(`${variableName}.value`);\n }\n },\n });\n return;\n }\n if (prop.value?.type === 'ObjectPattern') {\n replaceObjectPattern(path, prop.value.properties);\n }\n\n const variableName = prop?.value?.name || prop?.argument?.name;\n if (!variableName) {\n return;\n }\n path.scope.rename(variableName, `${variableName}.value`);\n if (prop.value) {\n prop.value = t.identifier(`${variableName}`);\n }\n if (prop.argument) {\n prop.argument = t.identifier(`${variableName}`);\n }\n });\n}\n\nfunction replaceArrayPattern(path, elements) {\n elements.forEach((prop, index) => {\n if (prop.type === 'RestElement') {\n const variableName = prop.argument.name;\n path.scope.traverse(path.scope.block, {\n MemberExpression(memberPath) {\n if (memberPath.node.object.name === variableName) {\n memberPath.node.object = t.identifier(`${variableName}.value`);\n }\n },\n });\n return;\n }\n if (t.isObjectPattern(prop)) {\n replaceObjectPattern(path, prop.properties);\n }\n if (t.isArrayPattern(prop)) {\n replaceArrayPattern(path, prop.elements);\n }\n\n const variableName = prop.name || prop?.argument?.name;\n if (!variableName) {\n return;\n }\n path.scope.rename(variableName, `${variableName}.value`);\n if (t.isIdentifier(prop)) {\n elements[index] = t.memberExpression(t.identifier(variableName), t.identifier('value'));\n }\n });\n}\n\nexport function replacePatternToReactive(path: NodePath<VariableDeclarator>) {\n if (!t.isObjectPattern(path.node.id) && !t.isArrayPattern(path.node.id)) {\n return;\n }\n\n const init = path.get('init');\n const argument = init.get('arguments')[0];\n let callee = init.get('callee');\n if (Array.isArray(callee)) {\n callee = callee[0];\n }\n\n if (!init.isCallExpression()) {\n return;\n }\n\n if (argument?.node && callee.isIdentifier({ name: '$' })) {\n init.replaceWith(\n t.callExpression(\n t.identifier(path.state.toSignalObject.name),\n [argument?.node].filter(Boolean),\n ),\n );\n if (t.isArrayPattern(path.node.id)) {\n replaceArrayPattern(path, path.node.id.elements);\n } else if (t.isObjectPattern(path.node.id)) {\n replaceObjectPattern(path, path.node.id.properties);\n }\n } else if (\n t.isCallExpression(callee.node) &&\n (callee.node as any).name &&\n (callee.node as any).name.indexOf('$') === 0\n ) {\n init.replaceWith(\n t.callExpression(t.identifier(path.state.toSignalObject.name), [\n t.callExpression(callee.node, [argument?.node].filter(Boolean)),\n ]),\n );\n if (t.isArrayPattern(path.node.id)) {\n replaceArrayPattern(path, path.node.id.elements);\n } else if (t.isObjectPattern(path.node.id)) {\n replaceObjectPattern(path, path.node.id.properties);\n }\n }\n}\n","export function replaceImportDeclaration(path) {\n const imports = path.node.specifiers;\n imports.forEach(specifier => {\n const variableName = specifier.local.name;\n if (variableName.indexOf('$') === 0) {\n path.scope.rename(variableName, `${variableName}.value`);\n specifier.local.name = `${variableName}`;\n }\n });\n}\n"],"mappings":"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IAAG,GAAE,IAAG,GAAE,IAAG,IAAG,IAAG,GAAE,GAAE,GAAE,KAAI,IAAG,IAAG,GAAE,IAAG,IAAG,IAAG,GAAE,IAAG,IAAG,IAAG,GAAE,IAAG,IAAG,IAAG,GAAE,KAAI,IAAG,KAAI,IAAG,IAAG,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,IAAG,IAAG,GAAE,GAAE,GAAE,IAAG,GAAE,GAAE,IAAG,IAAG,GAAE,GAAE,GAAE,IAAG,GAAE,IAAG,IAAG,GAAE,GAAE,IAAG,GAAE,IAAG,IAAG,IAAG,GAAE,IAAG,IAAG,KAAI,GAAE,GAAE,IAAG,IAAG,GAAE,IAAG,IAAG,KAAI,GAAE,GAAE,GAAE,GAAE,IAAG,IAAG,GAAE,IAAG,GAAE,GAAE,GAAE,GAAE,IAAG,IAAG,GAAE,KAAI,IAAG,IAAG,GAAE,GAAE,IAAG,GAAE,IAAG,KAAI,GAAE,IAAG,KAAI,KAAI,KAAI,IAAG,KAAI,MAAK,IAAG,IAAG,MAAK,IAAG,GAAE,MAAK,KAAI,MAAK,KAAI,GAAE,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,GAAE,IAAG,IAAG,GAAE,IAAG,KAAI,IAAG,KAAI,IAAG,GAAE,GAAE,IAAG,IAAG,IAAG,GAAE,GAAE,GAAE,IAAG,MAAK,GAAE,MAAK,IAAG,GAAE,MAAK,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,KAAI,IAAG,GAAE,IAAG,GAAE,GAAE,GAAE,IAAG,GAAE,GAAE,KAAI,MAAK,KAAI,GAAE,IAAG,GAAE,GAAE,GAAE,GAAE,MAAK,IAAG,GAAE,IAAG,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,IAAG,GAAE,GAAE,GAAE,GAAE,GAAE,IAAG,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,IAAG,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,KAAI,GAAE,IAAG,GAAE,IAAG,GAAE,IAAG,GAAE,IAAG,GAAE,IAAG,GAAE,IAAG,GAAE,IAAG,GAAE,IAAG,GAAE,IAAG,GAAE,IAAG,GAAE,GAAE,MAAK,IAAG,GAAE,GAAE,KAAI,IAAG,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cAAAA,SAA+B;QACpCC,MAAM;QACNW;QACAC;MACF,CAAC;IACH;AACO,aAASC,eACdC,QAA6B,MACX;AAClB,cAAO,GAAAf,cAAAA,SAA+B;QACpCC,MAAM;QACNc;MACF,CAAC;IACH;AACO,aAASC,eACdC,QACAC,YAGkB;AAClB,cAAO,GAAAlB,cAAAA,SAA+B;QACpCC,MAAM;QACNgB;QACAE,WAAWD;MACb,CAAC;IACH;AACO,aAASE,YACdC,QAKgB,MAChBT,MACe;AACf,cAAO,GAAAZ,cAAAA,SAA4B;QACjCC,MAAM;QACNoB;QACAT;MACF,CAAC;IACH;AACO,aAASU,sBACdC,MACAC,YACAC,WACyB;AACzB,cAAO,GAAAzB,cAAAA,SAAsC;QAC3CC,MAAM;QACNsB;QACAC;QACAC;MACF,CAAC;IACH;AACO,aAASC,kBACdX,QAA6B,MACR;AACrB,cAAO,GAAAf,cAAAA,SAAkC;QACvCC,MAAM;QACNc;MACF,CAAC;IACH;AACO,aAASY,oBAAyC;AACvD,aAAO;QACL1B,MAAM;MACR;IACF;AACO,aAAS2B,iBACdL,MACAX,MACoB;AACpB,cAAO,GAAAZ,cAAAA,SAAiC;QACtCC,MAAM;QACNsB;QACAX;MACF,CAAC;IACH;AACO,aAASiB,iBAAmC;AACjD,aAAO;QACL5B,MAAM;MACR;IACF;AACO,aAAS6B,oBACdC,YACuB;AACvB,cAAO,GAAA/B,cAAAA,SAAoC;QACzCC,MAAM;QACN8B;MACF,CAAC;IACH;AACO,aAASC,KACdC,UACAC,WAAyD,MACzDC,SAA4B,MACpB;AACR,cAAO,GAAAnC,cAAAA,SAAqB;QAC1BC,MAAM;QACNgC,SAAAA;QACAC;QACAC;MACF,CAAC;IACH;AACO,aAASC,eACdhC,MACAC,OACAO,MACkB;AAClB,cAAO,GAAAZ,cAAAA,SAA+B;QACpCC,MAAM;QACNG;QACAC;QACAO;MACF,CAAC;IACH;AACO,aAASyB,aACdC,OAAgE,MAChEf,OAAwC,MACxCgB,SAA0C,MAC1C3B,MACgB;AAChB,cAAO,GAAAZ,cAAAA,SAA6B;QAClCC,MAAM;QACNqC;QACAf;QACAgB;QACA3B;MACF,CAAC;IACH;AACO,aAAS4B,oBACdC,KAAsC,MACtCC,QACA9B,MACA+B,YAAqB,OACrBC,QAAiB,OACM;AACvB,cAAO,GAAA5C,cAAAA,SAAoC;QACzCC,MAAM;QACNwC;QACAC;QACA9B;QACA+B;QACAC;MACF,CAAC;IACH;AACO,aAASC,mBACdJ,KAAsC,MACtCC,QACA9B,MACA+B,YAAqB,OACrBC,QAAiB,OACK;AACtB,cAAO,GAAA5C,cAAAA,SAAmC;QACxCC,MAAM;QACNwC;QACAC;QACA9B;QACA+B;QACAC;MACF,CAAC;IACH;AACO,aAASE,WAAWC,MAA4B;AACrD,cAAO,GAAA/C,cAAAA,SAA2B;QAChCC,MAAM;QACN8C;MACF,CAAC;IACH;AACO,aAASC,YACdzB,MACAC,YACAC,YAAgC,MACjB;AACf,cAAO,GAAAzB,cAAAA,SAA4B;QACjCC,MAAM;QACNsB;QACAC;QACAC;MACF,CAAC;IACH;AACO,aAASwB,iBACdlC,OACAH,MACoB;AACpB,cAAO,GAAAZ,cAAAA,SAAiC;QACtCC,MAAM;QACNc;QACAH;MACF,CAAC;IACH;AACO,aAASsC,cAAc1C,OAAgC;AAC5D,cAAO,GAAAR,cAAAA,SAA8B;QACnCC,MAAM;QACNO;MACF,CAAC;IACH;AACO,aAAS2C,eAAe3C,OAAiC;AAC9D,cAAO,GAAAR,cAAAA,SAA+B;QACpCC,MAAM;QACNO;MACF,CAAC;IACH;AACO,aAAS4C,cAA6B;AAC3C,aAAO;QACLnD,MAAM;MACR;IACF;AACO,aAASoD,eAAe7C,OAAkC;AAC/D,cAAO,GAAAR,cAAAA,SAA+B;QACpCC,MAAM;QACNO;MACF,CAAC;IACH;AACO,aAAS8C,cACdC,SACAC,QAAgB,IACC;AACjB,cAAO,GAAAxD,cAAAA,SAA8B;QACnCC,MAAM;QACNsD;QACAC;MACF,CAAC;IACH;AACO,aAASC,kBACdtD,UACAC,MACAC,OACqB;AACrB,cAAO,GAAAL,cAAAA,SAAkC;QACvCC,MAAM;QACNE;QACAC;QACAC;MACF,CAAC;IACH;AACO,aAASqD,iBACdC,QACAC,UACAC,WAAoB,OACpBC,WAAgC,MACZ;AACpB,cAAO,GAAA9D,cAAAA,SAAiC;QACtCC,MAAM;QACN0D;QACAC;QACAC;QACAC;MACF,CAAC;IACH;AACO,aAASC,cACd9C,QACAC,YAGiB;AACjB,cAAO,GAAAlB,cAAAA,SAA8B;QACnCC,MAAM;QACNgB;QACAE,WAAWD;MACb,CAAC;IACH;AACO,aAASe,QACdrB,MACAC,aAAiC,CAAA,GACjCmD,aAAkC,UAClCC,cAA6C,MAClC;AACX,cAAO,GAAAjE,cAAAA,SAAwB;QAC7BC,MAAM;QACNW;QACAC;QACAmD;QACAC;MACF,CAAC;IACH;AACO,aAASC,iBACdC,YACoB;AACpB,cAAO,GAAAnE,cAAAA,SAAiC;QACtCC,MAAM;QACNkE;MACF,CAAC;IACH;AACO,aAASC,aACdC,OAA6C,UAC7CC,KAMA5B,QACA9B,MACAiD,WAAoB,OACpBlB,YAAqB,OACrBC,QAAiB,OACD;AAChB,cAAO,GAAA5C,cAAAA,SAA6B;QAClCC,MAAM;QACNoE;QACAC;QACA5B;QACA9B;QACAiD;QACAlB;QACAC;MACF,CAAC;IACH;AACO,aAAS2B,eACdD,KAQA9D,OACAqD,WAAoB,OACpBW,YAAqB,OACrBC,aAAwC,MACtB;AAClB,cAAO,GAAAzE,cAAAA,SAA+B;QACpCC,MAAM;QACNqE;QACA9D;QACAqD;QACAW;QACAC;MACF,CAAC;IACH;AACO,aAASC,YAAYC,UAAiC;AAC3D,cAAO,GAAA3E,cAAAA,SAA4B;QACjCC,MAAM;QACN0E;MACF,CAAC;IACH;AACO,aAASC,gBACdD,WAAgC,MACb;AACnB,cAAO,GAAA3E,cAAAA,SAAgC;QACrCC,MAAM;QACN0E;MACF,CAAC;IACH;AACO,aAASE,mBACdC,aACsB;AACtB,cAAO,GAAA9E,cAAAA,SAAmC;QACxCC,MAAM;QACN6E;MACF,CAAC;IACH;AACO,aAASC,wBACdhD,YAC2B;AAC3B,cAAO,GAAA/B,cAAAA,SAAwC;QAC7CC,MAAM;QACN8B;MACF,CAAC;IACH;AACO,aAASiD,WACdzD,OAAwC,MACxCC,YACc;AACd,cAAO,GAAAxB,cAAAA,SAA2B;QAChCC,MAAM;QACNsB;QACAC;MACF,CAAC;IACH;AACO,aAASyD,gBACdC,cACAC,OACmB;AACnB,cAAO,GAAAnF,cAAAA,SAAgC;QACrCC,MAAM;QACNiF;QACAC;MACF,CAAC;IACH;AACO,aAASC,iBAAmC;AACjD,aAAO;QACLnF,MAAM;MACR;IACF;AACO,aAASoF,eAAeV,UAA0C;AACvE,cAAO,GAAA3E,cAAAA,SAA+B;QACpCC,MAAM;QACN0E;MACF,CAAC;IACH;AACO,aAASW,aACdC,OACAC,UAAgC,MAChCC,YAAqC,MACrB;AAChB,cAAO,GAAAzF,cAAAA,SAA6B;QAClCC,MAAM;QACNsF;QACAC;QACAC;MACF,CAAC;IACH;AACO,aAASC,gBACdvF,UACAwE,UACAgB,SAAkB,MACC;AACnB,cAAO,GAAA3F,cAAAA,SAAgC;QACrCC,MAAM;QACNE;QACAwE;QACAgB;MACF,CAAC;IACH;AACO,aAASC,iBACdzF,UACAwE,UACAgB,SAAkB,OACE;AACpB,cAAO,GAAA3F,cAAAA,SAAiC;QACtCC,MAAM;QACNE;QACAwE;QACAgB;MACF,CAAC;IACH;AACO,aAASE,oBACdxB,MACAyB,cACuB;AACvB,cAAO,GAAA9F,cAAAA,SAAoC;QACzCC,MAAM;QACNoE;QACAyB;MACF,CAAC;IACH;AACO,aAASC,mBACdtD,IACAH,OAA4B,MACN;AACtB,cAAO,GAAAtC,cAAAA,SAAmC;QACxCC,MAAM;QACNwC;QACAH;MACF,CAAC;IACH;AACO,aAAS0D,eACdzE,MACAX,MACkB;AAClB,cAAO,GAAAZ,cAAAA,SAA+B;QACpCC,MAAM;QACNsB;QACAX;MACF,CAAC;IACH;AACO,aAASqF,cACdtC,QACA/C,MACiB;AACjB,cAAO,GAAAZ,cAAAA,SAA8B;QACnCC,MAAM;QACN0D;QACA/C;MACF,CAAC;IACH;AACO,aAASsF,kBACd9F,MASAC,OACqB;AACrB,cAAO,GAAAL,cAAAA,SAAkC;QACvCC,MAAM;QACNG;QACAC;MACF,CAAC;IACH;AACO,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C;QACA7B;MACF,CAAC;IACH;AACO,aAASuN,gBACdC,SACmB;AACnB,cAAO,GAAApO,cAAAA,SAAgC;QACrCC,MAAM;QACNmO;QACAC,cAAc;QACdC,mBAAmB;MACrB,CAAC;IACH;AACO,aAASC,eACdH,SACkB;AAClB,cAAO,GAAApO,cAAAA,SAA+B;QACpCC,MAAM;QACNmO;QACAC,cAAc;QACdC,mBAAmB;MACrB,CAAC;IACH;AACO,aAASE,eACdJ,SACkB;AAClB,cAAO,GAAApO,cAAAA,SAA+B;QACpCC,MAAM;QACNmO;QACAC,cAAc;QACdC,mBAAmB;MACrB,CAAC;IACH;AACO,aAASG,eACdL,SACkB;AAClB,cAAO,GAAApO,cAAAA,SAA+B;QACpCC,MAAM;QACNmO;QACAE,mBAAmB;MACrB,CAAC;IACH;AACO,aAASI,kBAAkBjM,IAAuC;AACvE,cAAO,GAAAzC,cAAAA,SAAkC;QACvCC,MAAM;QACNwC;QACAH,MAAM;MACR,CAAC;IACH;AACO,aAASqM,iBACdlM,IACAH,MACoB;AACpB,cAAO,GAAAtC,cAAAA,SAAiC;QACtCC,MAAM;QACNwC;QACAH;MACF,CAAC;IACH;AACO,aAASsM,iBACdnM,IACAH,MACoB;AACpB,cAAO,GAAAtC,cAAAA,SAAiC;QACtCC,MAAM;QACNwC;QACAH;MACF,CAAC;IACH;AACO,aAASuM,oBAAoBpM,IAAyC;AAC3E,cAAO,GAAAzC,cAAAA,SAAoC;QACzCC,MAAM;QACNwC;MACF,CAAC;IACH;AACO,aAASqM,kBACdC,YACAC,WACqB;AACrB,cAAO,GAAAhP,cAAAA,SAAkC;QACvCC,MAAM;QACN8O;QACAC;MACF,CAAC;IACH;AACO,aAASC,0BACdF,YACAC,WAC6B;AAC7B,cAAO,GAAAhP,cAAAA,SAA0C;QAC/CC,MAAM;QACN8O;QACAC;QACAlL,UAAU;MACZ,CAAC;IACH;AACO,aAASoL,aACdnM,MACAvC,QAKW,MACK;AAChB,cAAO,GAAAR,cAAAA,SAA6B;QAClCC,MAAM;QACN8C;QACAvC;MACF,CAAC;IACH;AAEO,aAAS2O,kBACdpM,MA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,IAAI;IACvC;AACO,aAASW,qBACdZ,MACAC,MACkC;AAClCH,aAAO,kBAAkBE,MAAMC,IAAI;IACrC;AACO,aAASY,qBACdb,MACAC,MACkC;AAClCH,aAAO,kBAAkBE,MAAMC,IAAI;IACrC;AACO,aAASa,qBACdd,MACAC,MACkC;AAClCH,aAAO,kBAAkBE,MAAMC,IAAI;IACrC;AACO,aAASc,kBACdf,MACAC,MAC+B;AAC/BH,aAAO,eAAeE,MAAMC,IAAI;IAClC;AACO,aAASe,4BACdhB,MACAC,MACyC;AACzCH,aAAO,yBAAyBE,MAAMC,IAAI;IAC5C;AACO,aAASgB,wBACdjB,MACAC,MACqC;AACrCH,aAAO,qBAAqBE,MAAMC,IAAI;IACxC;AACO,aAASiB,wBACdlB,MACAC,MACqC;AACrCH,aAAO,qBAAqBE,MAAMC,IAAI;IACxC;AACO,aAASkB,uBACdnB,MACAC,MACoC;AACpCH,aAAO,oBAAoBE,MAAMC,IAAI;IACvC;AACO,aAASmB,qBACdpB,MACAC,MACkC;AAClCH,aAAO,kBAAkBE,MAAMC,IAAI;IACrC;AACO,aAASoB,0BACdrB,MACAC,MACuC;AACvCH,aAAO,uBAAuBE,MAAMC,IAAI;IAC1C;AACO,aAASqB,WACdtB,MACAC,MACwB;AACxBH,aAAO,QAAQE,MAAMC,IAAI;IAC3B;AACO,aAASsB,qBACdvB,MACAC,MACkC;AAClCH,aAAO,kBAAkBE,MAAMC,IAAI;IACrC;AACO,aAASuB,mBACdxB,MACAC,MACgC;AAChCH,aAAO,gBAAgBE,MAAMC,IAAI;IACnC;AACO,aAASwB,0BACdzB,MACAC,MACuC;AACvCH,aAAO,uBAAuBE,MAAMC,IAAI;IAC1C;AACO,aAASyB,yBACd1B,MACAC,MACsC;AACtCH,aAAO,sBAAsBE,MAAMC,IAAI;IACzC;AACO,aAAS0B,iBACd3B,MACAC,MAC8B;AAC9BH,aAAO,cAAcE,MAAMC,IAAI;IACjC;AACO,aAAS2B,kBACd5B,MACAC,MAC+B;AAC/BH,aAAO,eAAeE,MAAMC,IAAI;IAClC;AACO,aAAS4B,uBACd7B,MACAC,MACoC;A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","names":["shallowEqual","actual","expected","keys","Object","key","warnings","Set","deprecationWarning","oldName","newName","prefix","has","add","internal","trace","captureShortStackTrace","console","warn","skip","length","stackTraceLimit","prepareStackTrace","Error","stackTrace","err","stack","shortStackTrace","slice","test","getFileName","map","frame","join","_shallowEqual","require","_deprecationWarning","isArrayExpression","node","opts","type","shallowEqual","isAssignmentExpression","isBinaryExpression","isInterpreterDirective","isDirective","isDirectiveLiteral","isBlockStatement","isBreakStatement","isCallExpression","isCatchClause","isConditionalExpression","isContinueStatement","isDebuggerStatement","isDoWhileStatement","isEmptyStatement","isExpressionStatement","isFile","isForInStatement","isForStatement","isFunctionDeclaration","isFunctionExpression","isIdentifier","isIfStatement","isLabeledStatement","isStringLiteral","isNumericLiteral","isNullLiteral","isBooleanLiteral","isRegExpLiteral","isLogicalExpression","isMemberExpression","isNewExpression","isProgram","isObjectExpression","isObjectMethod","isObjectProperty","isRestElement","isReturnStatement","isSequenceExpression","isParenthesizedExpression","isSwitchCase","isSwitchStatement","isThisExpression","isThrowStatement","isTryStatement","isUnaryExpression","isUpdateExpression","isVariableDeclaration","isVariableDeclarator","isWhileStatement","isWithStatement","isAssignmentPattern","isArrayPattern","isArrowFunctionExpression","isClassBody","isClassExpression","isClassDeclaration","isExportAllDeclaration","isExportDefaultDeclaration","isExportNamedDeclaration","isExportSpecifier","isForOfStatement","isImportDeclaration","isImportDefaultSpecifier","isImportNamespaceSpecifier","isImportSpecifier","isImportExpression","isMetaProperty","isClassMethod","isObjectPattern","isSpreadElement","isSuper","isTaggedTemplateExpression","isTemplateElement","isTemplateLiteral","isYieldExpression","isAwaitExpression","isImport","isBigIntLiteral","isExportNamespaceSpecifier","isOptionalMemberExpression","isOptionalCallExpression","isClassProperty","isClassAccessorProperty","isClassPrivateProperty","isClassPrivateMethod","isPrivateName","isStaticBlock","isAnyTypeAnnotation","isArrayTypeAnnotation","isBooleanTypeAnnotation","isBooleanLiteralTypeAnnotation","isNullLiteralTypeAnnotation","isClassImplements","isDeclareClass","isDeclareFunction","isDeclareInterface","isDeclareModule","isDeclareModuleExports","isDeclareTypeAlias","isDeclareOpaqueType","isDeclareVariable","isDeclareExportDeclaration","isDeclareExportAllDeclaration","isDeclaredPredicate","isExistsTypeAnnotation","isFunctionTypeAnnotation","isFunctionTypeParam","isGenericTypeAnnotation","isInferredPredicate","isInterfaceExtends","isInterfaceDeclaration","isInterfaceTypeAnnotation","isIntersectionTypeAnnotation","isMixedTypeAnnotation","isEmptyTypeAnnotation","isNullableTypeAnnotation","isNumberLiteralTypeAnnotation","isNumberTypeAnnotation","isObjectTypeAnnotation","isObjectTypeInternalSlot","isObjectTypeCallProperty","isObjectTypeIndexer","isObjectTypeProperty","isObjectTypeSpreadProperty","isOpaqueType","isQualifiedTypeIdentifier","isStringLiteralTypeAnnotation","isStringTypeAnnotation","isSymbolTypeAnnotation","isThisTypeAnnotation","isTupleTypeAnnotation","isTypeofTypeAnnotation","isTypeAlias","isTypeAnnotation","isTypeCastExpression","isTypeParameter","isTypeParameterDeclaration","isTypeParameterInstantiation","isUnionTypeAnnotation","isVariance","isVoidTypeAnnotation","isEnumDeclaration","isEnumBooleanBody","isEnumNumberBody","isEnumStringBody","isEnumSymbolBody","isEnumBooleanMember","isEnumNumberMember","isEnumStringMember","isEnumDefaultedMember","isIndexedAccessType","isOptionalIndexedAccessType","isJSXAttribute","isJSXClosingElement","isJSXElement","isJSXEmptyExpression","isJSXExpressionContainer","isJSXSpreadChild","isJSXIdentifier","isJSXMemberExpression","isJSXNamespacedName","isJSXOpeningElement","isJSXSpreadAttribute","isJSXText","isJSXFragment","isJSXOpeningFragment","isJSXClosingFragment","isNoop","isPlaceholder","isV8IntrinsicIdentifier","isArgumentPlaceholder","isBindExpression","isImportAttribute","isDecorator","isDoExpression","isExportDefaultSpecifier","isRecordExpression","isTupleExpression","isDecimalLiteral","isModuleExpression","isTopicReference","isPipelineTopicExpression","isPipelineBareFunction","isPipelinePrimaryTopicReference","isTSParameterProperty","isTSDeclareFunction","isTSDeclareMethod","isTSQualifiedName","isTSCallSignatureDeclaration","isTSConstructSignatureDeclaration","isTSPropertySignature","isTSMethodSignature","isTSIndexSignature","isTSAnyKeyword","isTSBooleanKeyword","isTSBigIntKeyword","isTSIntrinsicKeyword","isTSNeverKeyword","isTSNullKeyword","isTSNumberKeyword","isTSObjectKeyword","isTSStringKeyword","isTSSymbolKeyword","isTSUndefinedKeyword","isTSUnknownKeyword","isTSVoidKeyword","isTSThisType","isTSFunctionType","isTSConstructorType","isTSTypeReference","isTSTypePredicate","isTSTypeQuery","isTSTypeLiteral","isTSArrayType","isTSTupleType","isTSOptionalType","isTSRestType","isTSNamedTupleMember","isTSUnionType","isTSIntersectionType","isTSConditionalType","isTSInferType","isTSParenthesizedType","isTSTypeOperator","isTSIndexedAccessType","isTSMappedType","isTSLiteralType","isTSExpressionWithTypeArguments","isTSInterfaceDeclaration","isTSInterfaceBody","isTSTypeAliasDeclaration","isTSInstantiationExpression","isTSAsExpression","isTSSatisfiesExpression","isTSTypeAssertion","isTSEnumDeclaration","isTSEnumMember","isTSModuleDeclaration","isTSModuleBlock","isTSImportType","isTSImportEqualsDeclaration","isTSExternalModuleReference","isTSNonNullExpression","isTSExportAssignment","isTSNamespaceExportDeclaration","isTSTypeAnnotation","isTSTypeParameterInstantiation","isTSTypeParameterDeclaration","isTSTypeParameter","isStandardized","expectedNode","isExpression","isBinary","isScopable","isBlockParent","isBlock","isStatement","isTerminatorless","isCompletionStatement","isConditional","isLoop","isWhile","isExpressionWrapper","isFor","isForXStatement","isFunction","isFunctionParent","isPureish","isDeclaration","isPatternLike","isLVal","isTSEntityName","isLiteral","isImmutable","isUserWhitespacable","isMethod","isObjectMember","isProperty","isUnaryLike","isPattern","isClass","isImportOrExportDeclaration","isExportDeclaration","isModuleSpecifier","isAccessor","isPrivate","isFlow","isFlowType","isFlowBaseAnnotation","isFlowDeclaration","isFlowPredicate","isEnumBody","isEnumMember","isJSX","isMiscellaneous","isTypeScript","isTSTypeElement","isTSType","isTSBaseType","isNumberLiteral","deprecationWarning","isRegexLiteral","isRestProperty","isSpreadProperty","isModuleDeclaration","_index","require","matchesPattern","member","match","allowPartial","isMemberExpression","parts","Array","isArray","split","nodes","node","object","push","property","length","i","j","value","isIdentifier","name","isStringLiteral","isThisExpression","_matchesPattern","require","buildMatchMemberExpression","match","allowPartial","parts","split","member","matchesPattern","_buildMatchMemberExpression","require","isReactComponent","buildMatchMemberExpression","_default","exports","default","isCompatTag","tagName","test","exports","module","_index","require","isType","nodeType","targetType","ALIAS_KEYS","aliases","FLIPPED_ALIAS_KEYS","alias","_index","require","isPlaceholderType","placeholderType","targetType","aliases","PLACEHOLDERS_ALIAS","alias","_shallowEqual","require","_isType","_isPlaceholderType","_index","is","type","node","opts","matches","isType","FLIPPED_ALIAS_KEYS","isPlaceholderType","expectedNode","shallowEqual","nonASCIIidentifierStartChars","nonASCIIidentifierChars","nonASCIIidentifierStart","RegExp","nonASCIIidentifier","astralIdentifierStartCodes","astralIdentifierCodes","isInAstralSet","code","set","pos","i","length","isIdentifierStart","test","String","fromCharCode","isIdentifierChar","isIdentifierName","name","isFirst","cp","charCodeAt","trail","reservedWords","keyword","strict","strictBind","keywords","Set","reservedWordsStrictSet","reservedWordsStrictBindSet","isReservedWord","word","inModule","isStrictReservedWord","has","isStrictBindOnlyReservedWord","isStrictBindReservedWord","isKeyword","_identifier","require","_keyword","_helperValidatorIdentifier","require","isValidIdentifier","name","reserved","isKeyword","isStrictReservedWord","isIdentifierName","isDigit","code","forbiddenNumericSeparatorSiblings","decBinOct","Set","hex","isAllowedNumericSeparatorSibling","bin","ch","oct","dec","readStringContents","type","input","pos","lineStart","curLine","errors","initialPos","initialLineStart","initialCurLine","out","firstInvalidLoc","chunkStart","length","unterminated","slice","charCodeAt","isStringEnd","res","readEscapedChar","str","containsInvalid","inTemplate","throwOnInvalid","readHexChar","String","fromCharCode","readCodePoint","fromCodePoint","strictNumericEscape","startPos","match","octalStr","octal","parseInt","next","len","forceLen","n","readInt","invalidEscapeSequence","radix","allowNumSeparator","bailOnError","start","forbiddenSiblings","isAllowedSibling","invalid","total","i","e","Infinity","val","prev","numericSeparatorInEscapeSequence","Number","isNaN","has","unexpectedNumericSeparator","_isDigit","invalidDigit","indexOf","invalidCodePoint","STATEMENT_OR_BLOCK_KEYS","exports","FLATTENABLE_KEYS","FOR_INIT_KEYS","COMMENT_KEYS","LOGICAL_OPERATORS","UPDATE_OPERATORS","BOOLEAN_NUMBER_BINARY_OPERATORS","EQUALITY_BINARY_OPERATORS","COMPARISON_BINARY_OPERATORS","BOOLEAN_BINARY_OPERATORS","NUMBER_BINARY_OPERATORS","BINARY_OPERATORS","ASSIGNMENT_OPERATORS","map","op","BOOLEAN_UNARY_OPERATORS","NUMBER_UNARY_OPERATORS","STRING_UNARY_OPERATORS","UNARY_OPERATORS","INHERIT_KEYS","optional","force","BLOCK_SCOPED_SYMBOL","Symbol","for","NOT_LOCAL_BINDING","_is","require","_validate","VISITOR_KEYS","exports","ALIAS_KEYS","FLIPPED_ALIAS_KEYS","NODE_FIELDS","BUILDER_KEYS","DEPRECATED_KEYS","NODE_PARENT_VALIDATIONS","getType","val","Array","isArray","validate","typeIs","typeName","assertNodeType","validateType","validateOptional","optional","validateOptionalType","arrayOf","elementType","chain","assertValueType","assertEach","arrayOfType","validateArrayOfType","callback","validator","node","key","i","length","subkey","v","process","env","BABEL_TYPES_8_BREAKING","validateChild","each","assertOneOf","values","indexOf","TypeError","JSON","stringify","oneOf","types","type","is","oneOfNodeTypes","assertNodeOrValueType","oneOfNodeOrValueTypes","valid","assertShape","shape","errors","property","Object","keys","validateField","error","push","message","join","shapeOf","assertOptionalChainStart","_current","current","callee","object","fns","args","fn","chainOf","Error","validTypeOpts","validFieldKeys","store","defineAliasedType","aliases","opts","defined","_store$opts$inherits$","_defined","inherits","slice","additional","filter","a","includes","unshift","defineType","fields","getOwnPropertyNames","field","def","default","deprecated","visitor","builder","k","deprecatedAlias","concat","undefined","forEach","alias","_is","require","_isValidIdentifier","_helperValidatorIdentifier","_helperStringParser","_index","_utils","defineType","defineAliasedType","fields","elements","validate","chain","assertValueType","assertEach","assertNodeOrValueType","default","process","env","BABEL_TYPES_8_BREAKING","undefined","visitor","aliases","operator","identifier","assertOneOf","ASSIGNMENT_OPERATORS","pattern","node","key","val","validator","is","left","assertNodeType","right","builder","BINARY_OPERATORS","expression","inOp","Object","assign","oneOfNodeTypes","value","directives","body","label","optional","callee","arguments","typeArguments","typeParameters","param","test","consequent","alternate","program","comments","each","tokens","type","init","update","functionCommon","params","generator","async","exports","functionTypeAnnotationCommon","returnType","functionDeclarationCommon","declare","id","predicate","parent","inherits","patternLikeCommon","typeAnnotation","decorators","name","isValidIdentifier","TypeError","match","exec","parentKey","nonComp","computed","imported","meta","isKeyword","isReservedWord","deprecatedAlias","Number","isFinite","error","Error","flags","invalid","LOGICAL_OPERATORS","object","property","normal","sourceType","interpreter","properties","kind","shorthand","argument","listKey","index","length","expressions","discriminant","cases","block","handler","finalizer","prefix","UNARY_OPERATORS","UPDATE_OPERATORS","declarations","without","definite","superClass","superTypeParameters","implements","mixins","abstract","source","exportKind","validateOptional","attributes","assertions","declaration","specifiers","sourced","sourceless","local","exported","lval","await","module","phase","importKind","options","classMethodOrPropertyCommon","accessibility","static","override","classMethodOrDeclareMethodCommon","access","tag","quasi","assertShape","raw","cooked","templateElementCookedValidator","unterminatedCalled","str","firstInvalidLoc","readStringContents","unterminated","strictNumericEscape","invalidEscapeSequence","numericSeparatorInEscapeSequence","unexpectedNumericSeparator","invalidDigit","invalidCodePoint","tail","quasis","delegate","assertOptionalChainStart","readonly","variance","_utils","require","defineType","defineAliasedType","defineInterfaceishType","name","isDeclareClass","builder","visitor","aliases","fields","Object","assign","id","validateType","typeParameters","validateOptionalType","extends","validateOptional","arrayOfType","mixins","implements","body","elementType","value","validate","assertValueType","predicate","kind","assertOneOf","typeAnnotation","right","supertype","impltype","declaration","specifiers","source","default","exportKind","params","rest","this","returnType","optional","types","properties","indexers","callProperties","internalSlots","exact","inexact","static","method","key","variance","proto","argument","qualification","expression","bound","explicitType","members","validateArrayOfType","hasUnknownMembers","init","objectType","indexType","_utils","require","defineType","defineAliasedType","visitor","aliases","fields","name","validate","assertNodeType","value","optional","builder","Object","assign","openingElement","closingElement","children","chain","assertValueType","assertEach","selfClosing","expression","object","property","namespace","default","attributes","typeParameters","argument","openingFragment","closingFragment","_utils","require","PLACEHOLDERS","exports","PLACEHOLDERS_ALIAS","Declaration","Pattern","type","alias","ALIAS_KEYS","length","PLACEHOLDERS_FLIPPED_ALIAS","Object","keys","forEach","hasOwnProperty","call","push","_utils","require","_placeholders","defineType","defineAliasedType","visitor","builder","fields","name","validate","assertNodeType","expectedNode","assertOneOf","PLACEHOLDERS","assertValueType","_utils","require","defineType","visitor","aliases","fields","process","env","BABEL_TYPES_8_BREAKING","object","validate","Object","assign","oneOfNodeTypes","callee","assertNodeType","key","value","expression","builder","body","async","assertValueType","default","exported","properties","chain","assertEach","elements","_utils","require","_core","_is","defineType","defineAliasedType","bool","assertValueType","tSFunctionTypeAnnotationCommon","returnType","validate","assertNodeType","optional","typeParameters","aliases","visitor","fields","accessibility","assertOneOf","readonly","parameter","override","decorators","chain","assertEach","Object","assign","functionDeclarationCommon","classMethodOrDeclareMethodCommon","left","validateType","right","signatureDeclarationCommon","validateOptionalType","validateArrayOfType","callConstructSignatureDeclaration","namedTypeElementCommon","key","computed","default","validateOptional","typeAnnotation","kind","static","parameters","tsKeywordTypes","type","fnOrCtrBase","abstract","typeName","builder","parameterName","asserts","exprName","members","elementType","elementTypes","label","unionOrIntersection","types","checkType","extendsType","trueType","falseType","typeParameter","operator","objectType","indexType","nameType","literal","unaryExpression","unaryOperator","validator","parent","node","is","argument","oneOfNodeTypes","expression","declare","id","extends","arrayOfType","body","TSTypeExpression","const","initializer","global","qualifier","options","isExport","moduleReference","importKind","params","name","in","out","constraint","DEPRECATED_ALIASES","exports","ModuleDeclaration","_toFastProperties","require","_utils","_placeholders","_deprecatedAliases","Object","keys","DEPRECATED_ALIASES","forEach","deprecatedAlias","FLIPPED_ALIAS_KEYS","toFastProperties","VISITOR_KEYS","ALIAS_KEYS","NODE_FIELDS","BUILDER_KEYS","DEPRECATED_KEYS","PLACEHOLDERS_ALIAS","PLACEHOLDERS_FLIPPED_ALIAS","TYPES","exports","concat","_index","require","validate","node","key","val","fields","NODE_FIELDS","type","field","validateField","validateChild","optional","NODE_PARENT_VALIDATIONS","_validate","require","_index","validateNode","node","keys","BUILDER_KEYS","type","key","validate","_validateNode","require","_deprecationWarning","arrayExpression","elements","validateNode","type","assignmentExpression","operator","left","right","binaryExpression","interpreterDirective","value","directive","directiveLiteral","blockStatement","body","directives","breakStatement","label","callExpression","callee","_arguments","arguments","catchClause","param","conditionalExpression","test","consequent","alternate","continueStatement","debuggerStatement","doWhileStatement","emptyStatement","expressionStatement","expression","file","program","comments","tokens","forInStatement","forStatement","init","update","functionDeclaration","id","params","generator","async","functionExpression","identifier","name","ifStatement","labeledStatement","stringLiteral","numericLiteral","nullLiteral","booleanLiteral","regExpLiteral","pattern","flags","logicalExpression","memberExpression","object","property","computed","optional","newExpression","sourceType","interpreter","objectExpression","properties","objectMethod","kind","key","objectProperty","shorthand","decorators","restElement","argument","returnStatement","sequenceExpression","expressions","parenthesizedExpression","switchCase","switchStatement","discriminant","cases","thisExpression","throwStatement","tryStatement","block","handler","finalizer","unaryExpression","prefix","updateExpression","variableDeclaration","declarations","variableDeclarator","whileStatement","withStatement","assignmentPattern","arrayPattern","arrowFunctionExpression","classBody","classExpression","superClass","classDeclaration","exportAllDeclaration","source","exportDefaultDeclaration","declaration","exportNamedDeclaration","specifiers","exportSpecifier","local","exported","forOfStatement","_await","await","importDeclaration","importDefaultSpecifier","importNamespaceSpecifier","importSpecifier","imported","importExpression","options","metaProperty","meta","classMethod","_static","static","objectPattern","spreadElement","_super","taggedTemplateExpression","tag","quasi","templateElement","tail","templateLiteral","quasis","yieldExpression","delegate","awaitExpression","_import","bigIntLiteral","exportNamespaceSpecifier","optionalMemberExpression","optionalCallExpression","classProperty","typeAnnotation","classAccessorProperty","classPrivateProperty","classPrivateMethod","privateName","staticBlock","anyTypeAnnotation","arrayTypeAnnotation","elementType","booleanTypeAnnotation","booleanLiteralTypeAnnotation","nullLiteralTypeAnnotation","classImplements","typeParameters","declareClass","_extends","extends","declareFunction","declareInterface","declareModule","declareModuleExports","declareTypeAlias","declareOpaqueType","supertype","declareVariable","declareExportDeclaration","declareExportAllDeclaration","declaredPredicate","existsTypeAnnotation","functionTypeAnnotation","rest","returnType","functionTypeParam","genericTypeAnnotation","inferredPredicate","interfaceExtends","interfaceDeclaration","interfaceTypeAnnotation","intersectionTypeAnnotation","types","mixedTypeAnnotation","emptyTypeAnnotation","nullableTypeAnnotation","numberLiteralTypeAnnotation","numberTypeAnnotation","objectTypeAnnotation","indexers","callProperties","internalSlots","exact","objectTypeInternalSlot","method","objectTypeCallProperty","objectTypeIndexer","variance","objectTypeProperty","proto","objectTypeSpreadProperty","opaqueType","impltype","qualifiedTypeIdentifier","qualification","stringLiteralTypeAnnotation","stringTypeAnnotation","symbolTypeAnnotation","thisTypeAnnotation","tupleTypeAnnotation","typeofTypeAnnotation","typeAlias","typeCastExpression","typeParameter","bound","_default","default","typeParameterDeclaration","typeParameterInstantiation","unionTypeAnnotation","voidTypeAnnotation","enumDeclaration","enumBooleanBody","members","explicitType","hasUnknownMembers","enumNumberBody","enumStringBody","enumSymbolBody","enumBooleanMember","enumNumberMember","enumStringMember","enumDefaultedMember","indexedAccessType","objectType","indexType","optionalIndexedAccessType","jsxAttribute","jsxClosingElement","jsxElement","openingElement","closingElement","children","selfClosing","jsxEmptyExpression","jsxExpressionContainer","jsxSpreadChild","jsxIdentifier","jsxMemberExpression","jsxNamespacedName","namespace","jsxOpeningElement","attributes","jsxSpreadAttribute","jsxText","jsxFragment","openingFragment","closingFragment","jsxOpeningFragment","jsxClosingFragment","noop","placeholder","expectedNode","v8IntrinsicIdentifier","argumentPlaceholder","bindExpression","importAttribute","decorator","doExpression","exportDefaultSpecifier","recordExpression","tupleExpression","decimalLiteral","moduleExpression","topicReference","pipelineTopicExpression","pipelineBareFunction","pipelinePrimaryTopicReference","tsParameterProperty","parameter","tsDeclareFunction","tsDeclareMethod","tsQualifiedName","tsCallSignatureDeclaration","parameters","tsConstructSignatureDeclaration","tsPropertySignature","tsMethodSignature","tsIndexSignature","tsAnyKeyword","tsBooleanKeyword","tsBigIntKeyword","tsIntrinsicKeyword","tsNeverKeyword","tsNullKeyword","tsNumberKeyword","tsObjectKeyword","tsStringKeyword","tsSymbolKeyword","tsUndefinedKeyword","tsUnknownKeyword","tsVoidKeyword","tsThisType","tsFunctionType","tsConstructorType","tsTypeReference","typeName","tsTypePredicate","parameterName","asserts","tsTypeQuery","exprName","tsTypeLiteral","tsArrayType","tsTupleType","elementTypes","tsOptionalType","tsRestType","tsNamedTupleMember","tsUnionType","tsIntersectionType","tsConditionalType","checkType","extendsType","trueType","falseType","tsInferType","tsParenthesizedType","tsTypeOperator","tsIndexedAccessType","tsMappedType","nameType","tsLiteralType","literal","tsExpressionWithTypeArguments","tsInterfaceDeclaration","tsInterfaceBody","tsTypeAliasDeclaration","tsInstantiationExpression","tsAsExpression","tsSatisfiesExpression","tsTypeAssertion","tsEnumDeclaration","tsEnumMember","initializer","tsModuleDeclaration","tsModuleBlock","tsImportType","qualifier","tsImportEqualsDeclaration","moduleReference","isExport","tsExternalModuleReference","tsNonNullExpression","tsExportAssignment","tsNamespaceExportDeclaration","tsTypeAnnotation","tsTypeParameterInstantiation","tsTypeParameterDeclaration","tsTypeParameter","constraint","NumberLiteral","deprecationWarning","RegexLiteral","RestProperty","SpreadProperty","_index","require","_index2","cleanJSXElementLiteralChild","child","args","lines","value","split","lastNonEmptyLine","i","length","match","str","line","isFirstLine","isLastLine","isLastNonEmptyLine","trimmedLine","replace","push","inherits","stringLiteral","_index","require","_cleanJSXElementLiteralChild","buildChildren","node","elements","i","children","length","child","isJSXText","cleanJSXElementLiteralChild","isJSXExpressionContainer","expression","isJSXEmptyExpression","push","_index","require","isNode","node","VISITOR_KEYS","type","_isNode","require","assertNode","node","isNode","_node$type","type","JSON","stringify","TypeError","_is","require","_deprecationWarning","assert","type","node","opts","is","Error","JSON","stringify","assertArrayExpression","assertAssignmentExpression","assertBinaryExpression","assertInterpreterDirective","assertDirective","assertDirectiveLiteral","assertBlockStatement","assertBreakStatement","assertCallExpression","assertCatchClause","assertConditionalExpression","assertContinueStatement","assertDebuggerStatement","assertDoWhileStatement","assertEmptyStatement","assertExpressionStatement","assertFile","assertForInStatement","assertForStatement","assertFunctionDeclaration","assertFunctionExpression","assertIdentifier","assertIfStatement","assertLabeledStatement","assertStringLiteral","assertNumericLiteral","assertNullLiteral","assertBooleanLiteral","assertRegExpLiteral","assertLogicalExpression","assertMemberExpression","assertNewExpression","assertProgram","assertObjectExpression","assertObjectMethod","assertObjectProperty","assertRestElement","assertReturnStatement","assertSequenceExpression","assertParenthesizedExpression","assertSwitchCase","assertSwitchStatement","assertThisExpression","assertThrowStatement","assertTryStatement","assertUnaryExpression","assertUpdateExpression","assertVariableDeclaration","assertVariableDeclarator","assertWhileStatement","assertWithStatement","assertAssignmentPattern","assertArrayPattern","assertArrowFunctionExpression","assertClassBody","assertClassExpression","assertClassDeclaration","assertExportAllDeclaration","assertExportDefaultDeclaration","assertExportNamedDeclaration","assertExportSpecifier","assertForOfStatement","assertImportDeclaration","assertImportDefaultSpecifier","assertImportNamespaceSpecifier","assertImportSpecifier","assertImportExpression","assertMetaProperty","assertClassMethod","assertObjectPattern","assertSpreadElement","assertSuper","assertTaggedTemplateExpression","assertTemplateElement","assertTemplateLiteral","assertYieldExpression","assertAwaitExpression","assertImport","assertBigIntLiteral","assertExportNamespaceSpecifier","assertOptionalMemberExpression","assertOptionalCallExpression","assertClassProperty","assertClassAccessorProperty","assertClassPrivateProperty","assertClassPrivateMethod","assertPrivateName","assertStaticBlock","assertAnyTypeAnnotation","assertArrayTypeAnnotation","assertBooleanTypeAnnotation","assertBooleanLiteralTypeAnnotation","assertNullLiteralTypeAnnotation","assertClassImplements","assertDeclareClass","assertDeclareFunction","assertDeclareInterface","assertDeclareModule","assertDeclareModuleExports","assertDeclareTypeAlias","assertDeclareOpaqueType","assertDeclareVariable","assertDeclareExportDeclaration","assertDeclareExportAllDeclaration","assertDeclaredPredicate","assertExistsTypeAnnotation","assertFunctionTypeAnnotation","assertFunctionTypeParam","assertGenericTypeAnnotation","assertInferredPredicate","assertInterfaceExtends","assertInterfaceDeclaration","assertInterfaceTypeAnnotation","assertIntersectionTypeAnnotation","assertMixedTypeAnnotation","assertEmptyTypeAnnotation","assertNullableTypeAnnotation","assertNumberLiteralTypeAnnotation","assertNumberTypeAnnotation","assertObjectTypeAnnotation","assertObjectTypeInternalSlot","assertObjectTypeCallProperty","assertObjectTypeIndexer","assertObjectTypeProperty","assertObjectTypeSpreadProperty","assertOpaqueType","assertQualifiedTypeIdentifier","assertStringLiteralTypeAnnotation","assertStringTypeAnnotation","assertSymbolTypeAnnotation","assertThisTypeAnnotation","assertTupleTypeAnnotation","assertTypeofTypeAnnotation","assertTypeAlias","assertTypeAnnotation","assertTypeCastExpression","assertTypeParameter","assertTypeParameterDeclaration","assertTypeParameterInstantiation","assertUnionTypeAnnotation","assertVariance","assertVoidTypeAnnotation","assertEnumDeclaration","assertEnumBooleanBody","assertEnumNumberBody","assertEnumStringBody","assertEnumSymbolBody","assertEnumBooleanMember","assertEnumNumberMember","assertEnumStringMember","assertEnumDefaultedMember","assertIndexedAccessType","assertOptionalIndexedAccessType","assertJSXAttribute","assertJSXClosingElement","assertJSXElement","assertJSXEmptyExpression","assertJSXExpressionContainer","assertJSXSpreadChild","assertJSXIdentifier","assertJSXMemberExpression","assertJSXNamespacedName","assertJSXOpeningElement","assertJSXSpreadAttribute","assertJSXText","assertJSXFragment","assertJSXOpeningFragment","assertJSXClosingFragment","assertNoop","assertPlaceholder","assertV8IntrinsicIdentifier","assertArgumentPlaceholder","assertBindExpression","assertImportAttribute","assertDecorator","assertDoExpression","assertExportDefaultSpecifier","assertRecordExpression","assertTupleExpression","assertDecimalLiteral","assertModuleExpression","assertTopicReference","assertPipelineTopicExpression","assertPipelineBareFunction","assertPipelinePrimaryTopicReference","assertTSParameterProperty","assertTSDeclareFunction","assertTSDeclareMethod","assertTSQualifiedName","assertTSCallSignatureDeclaration","assertTSConstructSignatureDeclaration","assertTSPropertySignature","assertTSMethodSignature","assertTSIndexSignature","assertTSAnyKeyword","assertTSBooleanKeyword","assertTSBigIntKeyword","assertTSIntrinsicKeyword","assertTSNeverKeyword","assertTSNullKeyword","assertTSNumberKeyword","assertTSObjectKeyword","assertTSStringKeyword","assertTSSymbolKeyword","assertTSUndefinedKeyword","assertTSUnknownKeyword","assertTSVoidKeyword","assertTSThisType","assertTSFunctionType","assertTSConstructorType","assertTSTypeReference","assertTSTypePredicate","assertTSTypeQuery","assertTSTypeLiteral","assertTSArrayType","assertTSTupleType","assertTSOptionalType","assertTSRestType","assertTSNamedTupleMember","assertTSUnionType","assertTSIntersectionType","assertTSConditionalType","assertTSInferType","assertTSParenthesizedType","assertTSTypeOperator","assertTSIndexedAccessType","assertTSMappedType","assertTSLiteralType","assertTSExpressionWithTypeArguments","assertTSInterfaceDeclaration","assertTSInterfaceBody","assertTSTypeAliasDeclaration","assertTSInstantiationExpression","assertTSAsExpression","assertTSSatisfiesExpression","assertTSTypeAssertion","assertTSEnumDeclaration","assertTSEnumMember","assertTSModuleDeclaration","assertTSModuleBlock","assertTSImportType","assertTSImportEqualsDeclaration","assertTSExternalModuleReference","assertTSNonNullExpression","assertTSExportAssignment","assertTSNamespaceExportDeclaration","assertTSTypeAnnotation","assertTSTypeParameterInstantiation","assertTSTypeParameterDeclaration","assertTSTypeParameter","assertStandardized","assertExpression","assertBinary","assertScopable","assertBlockParent","assertBlock","assertStatement","assertTerminatorless","assertCompletionStatement","assertConditional","assertLoop","assertWhile","assertExpressionWrapper","assertFor","assertForXStatement","assertFunction","assertFunctionParent","assertPureish","assertDeclaration","assertPatternLike","assertLVal","assertTSEntityName","assertLiteral","assertImmutable","assertUserWhitespacable","assertMethod","assertObjectMember","assertProperty","assertUnaryLike","assertPattern","assertClass","assertImportOrExportDeclaration","assertExportDeclaration","assertModuleSpecifier","assertAccessor","assertPrivate","assertFlow","assertFlowType","assertFlowBaseAnnotation","assertFlowDeclaration","assertFlowPredicate","assertEnumBody","assertEnumMember","assertJSX","assertMiscellaneous","assertTypeScript","assertTSTypeElement","assertTSType","assertTSBaseType","assertNumberLiteral","deprecationWarning","assertRegexLiteral","assertRestProperty","assertSpreadProperty","assertModuleDeclaration","_index","require","_default","exports","default","createTypeAnnotationBasedOnTypeof","type","stringTypeAnnotation","numberTypeAnnotation","voidTypeAnnotation","booleanTypeAnnotation","genericTypeAnnotation","identifier","anyTypeAnnotation","Error","_index","require","getQualifiedName","node","isIdentifier","name","id","qualification","removeTypeDuplicates","nodesIn","nodes","Array","from","generics","Map","bases","typeGroups","Set","types","i","length","indexOf","isAnyTypeAnnotation","isFlowBaseAnnotation","set","type","isUnionTypeAnnotation","has","push","add","isGenericTypeAnnotation","existing","get","typeParameters","params","baseType","genericName","_index","require","_removeTypeDuplicates","createFlowUnionType","types","flattened","removeTypeDuplicates","length","unionTypeAnnotation","_index","require","getQualifiedName","node","isIdentifier","name","right","left","removeTypeDuplicates","nodesIn","nodes","Array","from","generics","Map","bases","typeGroups","Set","types","i","length","indexOf","isTSAnyKeyword","isTSBaseType","set","type","isTSUnionType","has","push","add","isTSTypeReference","typeParameters","typeName","existing","get","params","baseType","genericName","_index","require","_removeTypeDuplicates","_index2","createTSUnionType","typeAnnotations","types","map","type","isTSTypeAnnotation","typeAnnotation","flattened","removeTypeDuplicates","length","tsUnionType","_index","require","_index","require","buildUndefinedNode","unaryExpression","numericLiteral","_index","require","_index2","hasOwn","Function","call","bind","Object","prototype","hasOwnProperty","cloneIfNode","obj","deep","withoutLoc","commentsCache","type","cloneNodeInternal","cloneIfNodeOrArray","Array","isArray","map","node","cloneNode","Map","newNode","isIdentifier","name","optional","typeAnnotation","NODE_FIELDS","Error","field","keys","isFile","maybeCloneComments","comments","loc","leadingComments","innerComments","trailingComments","extra","assign","comment","cache","get","value","ret","set","_cloneNode","require","clone","node","cloneNode","_cloneNode","require","cloneDeep","node","cloneNode","_cloneNode","require","cloneDeepWithoutLoc","node","cloneNode","_cloneNode","require","cloneWithoutLoc","node","cloneNode","addComments","node","type","comments","key","concat","push","_addComments","require","addComment","node","type","content","line","addComments","value","inherit","key","child","parent","Array","from","Set","concat","filter","Boolean","_inherit","require","inheritInnerComments","child","parent","inherit","_inherit","require","inheritLeadingComments","child","parent","inherit","_inherit","require","inheritTrailingComments","child","parent","inherit","_inheritTrailingComments","require","_inheritLeadingComments","_inheritInnerComments","inheritsComments","child","parent","inheritTrailingComments","inheritLeadingComments","inheritInnerComments","_index","require","removeComments","node","COMMENT_KEYS","forEach","key","_index","require","STANDARDIZED_TYPES","exports","FLIPPED_ALIAS_KEYS","EXPRESSION_TYPES","BINARY_TYPES","SCOPABLE_TYPES","BLOCKPARENT_TYPES","BLOCK_TYPES","STATEMENT_TYPES","TERMINATORLESS_TYPES","COMPLETIONSTATEMENT_TYPES","CONDITIONAL_TYPES","LOOP_TYPES","WHILE_TYPES","EXPRESSIONWRAPPER_TYPES","FOR_TYPES","FORXSTATEMENT_TYPES","FUNCTION_TYPES","FUNCTIONPARENT_TYPES","PUREISH_TYPES","DECLARATION_TYPES","PATTERNLIKE_TYPES","LVAL_TYPES","TSENTITYNAME_TYPES","LITERAL_TYPES","IMMUTABLE_TYPES","USERWHITESPACABLE_TYPES","METHOD_TYPES","OBJECTMEMBER_TYPES","PROPERTY_TYPES","UNARYLIKE_TYPES","PATTERN_TYPES","CLASS_TYPES","IMPORTOREXPORTDECLARATION_TYPES","EXPORTDECLARATION_TYPES","MODULESPECIFIER_TYPES","ACCESSOR_TYPES","PRIVATE_TYPES","FLOW_TYPES","FLOWTYPE_TYPES","FLOWBASEANNOTATION_TYPES","FLOWDECLARATION_TYPES","FLOWPREDICATE_TYPES","ENUMBODY_TYPES","ENUMMEMBER_TYPES","JSX_TYPES","MISCELLANEOUS_TYPES","TYPESCRIPT_TYPES","TSTYPEELEMENT_TYPES","TSTYPE_TYPES","TSBASETYPE_TYPES","MODULEDECLARATION_TYPES","_index","require","_index2","toBlock","node","parent","isBlockStatement","blockNodes","isEmptyStatement","isStatement","isFunction","returnStatement","expressionStatement","blockStatement","_toBlock","require","ensureBlock","node","key","result","toBlock","_isValidIdentifier","require","_helperValidatorIdentifier","toIdentifier","input","name","c","isIdentifierChar","codePointAt","replace","match","toUpperCase","isValidIdentifier","_toIdentifier","require","toBindingIdentifierName","name","toIdentifier","_index","require","_index2","toComputedKey","node","key","property","computed","isIdentifier","stringLiteral","name","_index","require","_default","exports","default","toExpression","node","isExpressionStatement","expression","isExpression","isClass","type","isFunction","Error","_index","require","traverseFast","node","enter","opts","keys","VISITOR_KEYS","type","key","subNode","Array","isArray","_index","require","CLEAR_KEYS","CLEAR_KEYS_PLUS_COMMENTS","COMMENT_KEYS","removeProperties","node","opts","map","preserveComments","key","undefined","Object","keys","symbols","getOwnPropertySymbols","sym","_traverseFast","require","_removeProperties","removePropertiesDeep","tree","opts","traverseFast","removeProperties","_index","require","_cloneNode","_removePropertiesDeep","toKeyAlias","node","key","alias","kind","increment","isIdentifier","name","isStringLiteral","JSON","stringify","value","removePropertiesDeep","cloneNode","computed","static","uid","Number","MAX_SAFE_INTEGER","_index","require","_index2","_default","exports","default","toStatement","node","ignore","isStatement","mustHaveId","newType","isClass","isFunction","isAssignmentExpression","expressionStatement","id","Error","type","_isValidIdentifier","require","_index","_default","exports","default","valueToNode","objectToString","Function","call","bind","Object","prototype","toString","isRegExp","value","isPlainObject","proto","getPrototypeOf","undefined","identifier","booleanLiteral","nullLiteral","stringLiteral","result","Number","isFinite","numericLiteral","Math","abs","numerator","isNaN","binaryExpression","is","unaryExpression","pattern","source","flags","match","regExpLiteral","Array","isArray","arrayExpression","map","props","key","keys","nodeKey","isValidIdentifier","push","objectProperty","objectExpression","Error","_index","require","appendToMemberExpression","member","append","computed","object","memberExpression","property","_index","require","_inheritsComments","inherits","child","parent","key","INHERIT_KEYS","optional","Object","keys","force","inheritsComments","_index","require","_index2","prependToMemberExpression","member","prepend","isSuper","object","Error","memberExpression","_index","require","getBindingIdentifiers","node","duplicates","outerOnly","newBindingsOnly","search","concat","ids","Object","create","length","id","shift","isAssignmentExpression","isUnaryExpression","keys","type","isIdentifier","_ids","name","push","isExportDeclaration","isExportAllDeclaration","isDeclaration","declaration","isFunctionDeclaration","isFunctionExpression","i","key","nodes","Array","isArray","DeclareClass","DeclareFunction","DeclareModule","DeclareVariable","DeclareInterface","DeclareTypeAlias","DeclareOpaqueType","InterfaceDeclaration","TypeAlias","OpaqueType","CatchClause","LabeledStatement","UnaryExpression","AssignmentExpression","ImportSpecifier","ImportNamespaceSpecifier","ImportDefaultSpecifier","ImportDeclaration","ExportSpecifier","ExportNamespaceSpecifier","ExportDefaultSpecifier","FunctionDeclaration","FunctionExpression","ArrowFunctionExpression","ObjectMethod","ClassMethod","ClassPrivateMethod","ForInStatement","ForOfStatement","ClassDeclaration","ClassExpression","RestElement","UpdateExpression","ObjectProperty","AssignmentPattern","ArrayPattern","ObjectPattern","VariableDeclaration","VariableDeclarator","_getBindingIdentifiers","require","_default","exports","default","getOuterBindingIdentifiers","node","duplicates","getBindingIdentifiers","_index","require","traverse","node","handlers","state","enter","exit","traverseSimpleImpl","ancestors","keys","VISITOR_KEYS","type","key","subNode","Array","isArray","i","length","child","push","index","pop","_getBindingIdentifiers","require","isBinding","node","parent","grandparent","type","keys","getBindingIdentifiers","i","length","key","val","Array","isArray","indexOf","_index","require","_index2","isLet","node","isVariableDeclaration","kind","BLOCK_SCOPED_SYMBOL","_index","require","_isLet","isBlockScoped","node","isFunctionDeclaration","isClassDeclaration","isLet","_isType","require","_index","isImmutable","node","isType","type","isIdentifier","name","_index","require","isNodesEquivalent","a","b","type","fields","Object","keys","NODE_FIELDS","visitorKeys","VISITOR_KEYS","field","val_a","val_b","Array","isArray","length","i","includes","key","isReferenced","node","parent","grandparent","type","property","computed","object","init","body","key","superClass","right","source","local","id","_index","require","isScope","node","parent","isBlockStatement","isFunction","isCatchClause","isPattern","isScopable","_index","require","isSpecifierDefault","specifier","isImportDefaultSpecifier","isIdentifier","imported","exported","name","_isValidIdentifier","require","RESERVED_WORDS_ES3_ONLY","Set","isValidES3Identifier","name","isValidIdentifier","has","_index","require","_index2","isVar","node","isVariableDeclaration","kind","BLOCK_SCOPED_SYMBOL","_getBindingIdentifiers","require","_index","_index2","_cloneNode","gatherSequenceExpressions","nodes","scope","declars","exprs","ensureLastUndefined","node","isEmptyStatement","isExpression","push","isExpressionStatement","expression","isVariableDeclaration","kind","declar","declarations","bindings","getBindingIdentifiers","key","Object","keys","id","cloneNode","init","assignmentExpression","isIfStatement","consequent","buildUndefinedNode","alternate","conditionalExpression","test","isBlockStatement","body","indexOf","length","sequenceExpression","_gatherSequenceExpressions","require","toSequenceExpression","nodes","scope","length","declars","result","gatherSequenceExpressions","declar","push","_isReactComponent","require","_isCompatTag","_buildChildren","_assertNode","_index","Object","keys","forEach","key","prototype","hasOwnProperty","call","_exportNames","exports","defineProperty","enumerable","get","_createTypeAnnotationBasedOnTypeof","_createFlowUnionType","_createTSUnionType","_index2","_uppercase","_productions","_cloneNode","_clone","_cloneDeep","_cloneDeepWithoutLoc","_cloneWithoutLoc","_addComment","_addComments","_inheritInnerComments","_inheritLeadingComments","_inheritsComments","_inheritTrailingComments","_removeComments","_index3","_index4","_ensureBlock","_toBindingIdentifierName","_toBlock","_toComputedKey","_toExpression","_toIdentifier","_toKeyAlias","_toStatement","_valueToNode","_index5","_appendToMemberExpression","_inherits","_prependToMemberExpression","_removeProperties","_removePropertiesDeep","_removeTypeDuplicates","_getBindingIdentifiers","_getOuterBindingIdentifiers","_traverse","_traverseFast","_shallowEqual","_is","_isBinding","_isBlockScoped","_isImmutable","_isLet","_isNode","_isNodesEquivalent","_isPlaceholderType","_isReferenced","_isScope","_isSpecifierDefault","_isType","_isValidES3Identifier","_isValidIdentifier","_isVar","_matchesPattern","_validate","_buildMatchMemberExpression","_index6","_deprecationWarning","react","isReactComponent","isCompatTag","buildChildren","toSequenceExpression","default","import_core","t","import_core","t","value","import_core","t","import_core","import_core","variableName","t","t","imports"]}
|