UNPKG

@babel/types

Version:

Babel Types is a Lodash-esque utility library for AST nodes

1,460 lines (1,457 loc) 349 kB
import { isKeyword, isStrictReservedWord, isIdentifierName, isReservedWord, isIdentifierChar } from '@babel/helper-validator-identifier'; import { readStringContents } from '@babel/helper-string-parser'; function shallowEqual(actual, expected) { const keys = Object.keys(expected); for (const key of keys) { if (actual[key] !== expected[key]) { return false; } } return true; } const warnings = new Set(); function deprecationWarning(oldName, newName, prefix = "", cacheKey = oldName) { if (warnings.has(cacheKey)) return; warnings.add(cacheKey); const { internal, trace } = captureShortStackTrace(1, 2); if (internal) { return; } console.warn(`${prefix}\`${oldName}\` has been deprecated, please migrate to \`${newName}\`\n${trace}`); } function captureShortStackTrace(skip, length) { const { stackTraceLimit, prepareStackTrace } = Error; let stackTrace; Error.stackTraceLimit = 1 + skip + length; Error.prepareStackTrace = function (err, stack) { stackTrace = stack; }; new Error().stack; Error.stackTraceLimit = stackTraceLimit; Error.prepareStackTrace = prepareStackTrace; if (!stackTrace) return { internal: false, trace: "" }; const shortStackTrace = stackTrace.slice(1 + skip, 1 + skip + length); return { internal: /[\\/]@babel[\\/]/.test(shortStackTrace[1].getFileName()), trace: shortStackTrace.map(frame => ` at ${frame}`).join("\n") }; } function isArrayExpression(node, opts) { if (!node) return false; if (node.type !== "ArrayExpression") return false; return opts == null || shallowEqual(node, opts); } function isAssignmentExpression(node, opts) { if (!node) return false; if (node.type !== "AssignmentExpression") return false; return opts == null || shallowEqual(node, opts); } function isBinaryExpression(node, opts) { if (!node) return false; if (node.type !== "BinaryExpression") return false; return opts == null || shallowEqual(node, opts); } function isInterpreterDirective(node, opts) { if (!node) return false; if (node.type !== "InterpreterDirective") return false; return opts == null || shallowEqual(node, opts); } function isDirective(node, opts) { if (!node) return false; if (node.type !== "Directive") return false; return opts == null || shallowEqual(node, opts); } function isDirectiveLiteral(node, opts) { if (!node) return false; if (node.type !== "DirectiveLiteral") return false; return opts == null || shallowEqual(node, opts); } function isBlockStatement(node, opts) { if (!node) return false; if (node.type !== "BlockStatement") return false; return opts == null || shallowEqual(node, opts); } function isBreakStatement(node, opts) { if (!node) return false; if (node.type !== "BreakStatement") return false; return opts == null || shallowEqual(node, opts); } function isCallExpression(node, opts) { if (!node) return false; if (node.type !== "CallExpression") return false; return opts == null || shallowEqual(node, opts); } function isCatchClause(node, opts) { if (!node) return false; if (node.type !== "CatchClause") return false; return opts == null || shallowEqual(node, opts); } function isConditionalExpression(node, opts) { if (!node) return false; if (node.type !== "ConditionalExpression") return false; return opts == null || shallowEqual(node, opts); } function isContinueStatement(node, opts) { if (!node) return false; if (node.type !== "ContinueStatement") return false; return opts == null || shallowEqual(node, opts); } function isDebuggerStatement(node, opts) { if (!node) return false; if (node.type !== "DebuggerStatement") return false; return opts == null || shallowEqual(node, opts); } function isDoWhileStatement(node, opts) { if (!node) return false; if (node.type !== "DoWhileStatement") return false; return opts == null || shallowEqual(node, opts); } function isEmptyStatement(node, opts) { if (!node) return false; if (node.type !== "EmptyStatement") return false; return opts == null || shallowEqual(node, opts); } function isExpressionStatement(node, opts) { if (!node) return false; if (node.type !== "ExpressionStatement") return false; return opts == null || shallowEqual(node, opts); } function isFile(node, opts) { if (!node) return false; if (node.type !== "File") return false; return opts == null || shallowEqual(node, opts); } function isForInStatement(node, opts) { if (!node) return false; if (node.type !== "ForInStatement") return false; return opts == null || shallowEqual(node, opts); } function isForStatement(node, opts) { if (!node) return false; if (node.type !== "ForStatement") return false; return opts == null || shallowEqual(node, opts); } function isFunctionDeclaration(node, opts) { if (!node) return false; if (node.type !== "FunctionDeclaration") return false; return opts == null || shallowEqual(node, opts); } function isFunctionExpression(node, opts) { if (!node) return false; if (node.type !== "FunctionExpression") return false; return opts == null || shallowEqual(node, opts); } function isIdentifier(node, opts) { if (!node) return false; if (node.type !== "Identifier") return false; return opts == null || shallowEqual(node, opts); } function isIfStatement(node, opts) { if (!node) return false; if (node.type !== "IfStatement") return false; return opts == null || shallowEqual(node, opts); } function isLabeledStatement(node, opts) { if (!node) return false; if (node.type !== "LabeledStatement") return false; return opts == null || shallowEqual(node, opts); } function isStringLiteral(node, opts) { if (!node) return false; if (node.type !== "StringLiteral") return false; return opts == null || shallowEqual(node, opts); } function isNumericLiteral(node, opts) { if (!node) return false; if (node.type !== "NumericLiteral") return false; return opts == null || shallowEqual(node, opts); } function isNullLiteral(node, opts) { if (!node) return false; if (node.type !== "NullLiteral") return false; return opts == null || shallowEqual(node, opts); } function isBooleanLiteral(node, opts) { if (!node) return false; if (node.type !== "BooleanLiteral") return false; return opts == null || shallowEqual(node, opts); } function isRegExpLiteral(node, opts) { if (!node) return false; if (node.type !== "RegExpLiteral") return false; return opts == null || shallowEqual(node, opts); } function isLogicalExpression(node, opts) { if (!node) return false; if (node.type !== "LogicalExpression") return false; return opts == null || shallowEqual(node, opts); } function isMemberExpression(node, opts) { if (!node) return false; if (node.type !== "MemberExpression") return false; return opts == null || shallowEqual(node, opts); } function isNewExpression(node, opts) { if (!node) return false; if (node.type !== "NewExpression") return false; return opts == null || shallowEqual(node, opts); } function isProgram(node, opts) { if (!node) return false; if (node.type !== "Program") return false; return opts == null || shallowEqual(node, opts); } function isObjectExpression(node, opts) { if (!node) return false; if (node.type !== "ObjectExpression") return false; return opts == null || shallowEqual(node, opts); } function isObjectMethod(node, opts) { if (!node) return false; if (node.type !== "ObjectMethod") return false; return opts == null || shallowEqual(node, opts); } function isObjectProperty(node, opts) { if (!node) return false; if (node.type !== "ObjectProperty") return false; return opts == null || shallowEqual(node, opts); } function isRestElement(node, opts) { if (!node) return false; if (node.type !== "RestElement") return false; return opts == null || shallowEqual(node, opts); } function isReturnStatement(node, opts) { if (!node) return false; if (node.type !== "ReturnStatement") return false; return opts == null || shallowEqual(node, opts); } function isSequenceExpression(node, opts) { if (!node) return false; if (node.type !== "SequenceExpression") return false; return opts == null || shallowEqual(node, opts); } function isParenthesizedExpression(node, opts) { if (!node) return false; if (node.type !== "ParenthesizedExpression") return false; return opts == null || shallowEqual(node, opts); } function isSwitchCase(node, opts) { if (!node) return false; if (node.type !== "SwitchCase") return false; return opts == null || shallowEqual(node, opts); } function isSwitchStatement(node, opts) { if (!node) return false; if (node.type !== "SwitchStatement") return false; return opts == null || shallowEqual(node, opts); } function isThisExpression(node, opts) { if (!node) return false; if (node.type !== "ThisExpression") return false; return opts == null || shallowEqual(node, opts); } function isThrowStatement(node, opts) { if (!node) return false; if (node.type !== "ThrowStatement") return false; return opts == null || shallowEqual(node, opts); } function isTryStatement(node, opts) { if (!node) return false; if (node.type !== "TryStatement") return false; return opts == null || shallowEqual(node, opts); } function isUnaryExpression(node, opts) { if (!node) return false; if (node.type !== "UnaryExpression") return false; return opts == null || shallowEqual(node, opts); } function isUpdateExpression(node, opts) { if (!node) return false; if (node.type !== "UpdateExpression") return false; return opts == null || shallowEqual(node, opts); } function isVariableDeclaration(node, opts) { if (!node) return false; if (node.type !== "VariableDeclaration") return false; return opts == null || shallowEqual(node, opts); } function isVariableDeclarator(node, opts) { if (!node) return false; if (node.type !== "VariableDeclarator") return false; return opts == null || shallowEqual(node, opts); } function isWhileStatement(node, opts) { if (!node) return false; if (node.type !== "WhileStatement") return false; return opts == null || shallowEqual(node, opts); } function isWithStatement(node, opts) { if (!node) return false; if (node.type !== "WithStatement") return false; return opts == null || shallowEqual(node, opts); } function isAssignmentPattern(node, opts) { if (!node) return false; if (node.type !== "AssignmentPattern") return false; return opts == null || shallowEqual(node, opts); } function isArrayPattern(node, opts) { if (!node) return false; if (node.type !== "ArrayPattern") return false; return opts == null || shallowEqual(node, opts); } function isArrowFunctionExpression(node, opts) { if (!node) return false; if (node.type !== "ArrowFunctionExpression") return false; return opts == null || shallowEqual(node, opts); } function isClassBody(node, opts) { if (!node) return false; if (node.type !== "ClassBody") return false; return opts == null || shallowEqual(node, opts); } function isClassExpression(node, opts) { if (!node) return false; if (node.type !== "ClassExpression") return false; return opts == null || shallowEqual(node, opts); } function isClassDeclaration(node, opts) { if (!node) return false; if (node.type !== "ClassDeclaration") return false; return opts == null || shallowEqual(node, opts); } function isExportAllDeclaration(node, opts) { if (!node) return false; if (node.type !== "ExportAllDeclaration") return false; return opts == null || shallowEqual(node, opts); } function isExportDefaultDeclaration(node, opts) { if (!node) return false; if (node.type !== "ExportDefaultDeclaration") return false; return opts == null || shallowEqual(node, opts); } function isExportNamedDeclaration(node, opts) { if (!node) return false; if (node.type !== "ExportNamedDeclaration") return false; return opts == null || shallowEqual(node, opts); } function isExportSpecifier(node, opts) { if (!node) return false; if (node.type !== "ExportSpecifier") return false; return opts == null || shallowEqual(node, opts); } function isForOfStatement(node, opts) { if (!node) return false; if (node.type !== "ForOfStatement") return false; return opts == null || shallowEqual(node, opts); } function isImportDeclaration(node, opts) { if (!node) return false; if (node.type !== "ImportDeclaration") return false; return opts == null || shallowEqual(node, opts); } function isImportDefaultSpecifier(node, opts) { if (!node) return false; if (node.type !== "ImportDefaultSpecifier") return false; return opts == null || shallowEqual(node, opts); } function isImportNamespaceSpecifier(node, opts) { if (!node) return false; if (node.type !== "ImportNamespaceSpecifier") return false; return opts == null || shallowEqual(node, opts); } function isImportSpecifier(node, opts) { if (!node) return false; if (node.type !== "ImportSpecifier") return false; return opts == null || shallowEqual(node, opts); } function isMetaProperty(node, opts) { if (!node) return false; if (node.type !== "MetaProperty") return false; return opts == null || shallowEqual(node, opts); } function isClassMethod(node, opts) { if (!node) return false; if (node.type !== "ClassMethod") return false; return opts == null || shallowEqual(node, opts); } function isObjectPattern(node, opts) { if (!node) return false; if (node.type !== "ObjectPattern") return false; return opts == null || shallowEqual(node, opts); } function isSpreadElement(node, opts) { if (!node) return false; if (node.type !== "SpreadElement") return false; return opts == null || shallowEqual(node, opts); } function isSuper(node, opts) { if (!node) return false; if (node.type !== "Super") return false; return opts == null || shallowEqual(node, opts); } function isTaggedTemplateExpression(node, opts) { if (!node) return false; if (node.type !== "TaggedTemplateExpression") return false; return opts == null || shallowEqual(node, opts); } function isTemplateElement(node, opts) { if (!node) return false; if (node.type !== "TemplateElement") return false; return opts == null || shallowEqual(node, opts); } function isTemplateLiteral(node, opts) { if (!node) return false; if (node.type !== "TemplateLiteral") return false; return opts == null || shallowEqual(node, opts); } function isYieldExpression(node, opts) { if (!node) return false; if (node.type !== "YieldExpression") return false; return opts == null || shallowEqual(node, opts); } function isAwaitExpression(node, opts) { if (!node) return false; if (node.type !== "AwaitExpression") return false; return opts == null || shallowEqual(node, opts); } function isImportExpression(node, opts) { if (!node) return false; if (node.type !== "ImportExpression") return false; return opts == null || shallowEqual(node, opts); } function isImport(node, opts) { if (!node) return false; if (node.type !== "Import") return false; return opts == null || shallowEqual(node, opts); } function isBigIntLiteral(node, opts) { if (!node) return false; if (node.type !== "BigIntLiteral") return false; return opts == null || shallowEqual(node, opts); } function isExportNamespaceSpecifier(node, opts) { if (!node) return false; if (node.type !== "ExportNamespaceSpecifier") return false; return opts == null || shallowEqual(node, opts); } function isOptionalMemberExpression(node, opts) { if (!node) return false; if (node.type !== "OptionalMemberExpression") return false; return opts == null || shallowEqual(node, opts); } function isOptionalCallExpression(node, opts) { if (!node) return false; if (node.type !== "OptionalCallExpression") return false; return opts == null || shallowEqual(node, opts); } function isClassProperty(node, opts) { if (!node) return false; if (node.type !== "ClassProperty") return false; return opts == null || shallowEqual(node, opts); } function isClassPrivateProperty(node, opts) { if (!node) return false; if (node.type !== "ClassPrivateProperty") return false; return opts == null || shallowEqual(node, opts); } function isClassPrivateMethod(node, opts) { if (!node) return false; if (node.type !== "ClassPrivateMethod") return false; return opts == null || shallowEqual(node, opts); } function isPrivateName(node, opts) { if (!node) return false; if (node.type !== "PrivateName") return false; return opts == null || shallowEqual(node, opts); } function isStaticBlock(node, opts) { if (!node) return false; if (node.type !== "StaticBlock") return false; return opts == null || shallowEqual(node, opts); } function isImportAttribute(node, opts) { if (!node) return false; if (node.type !== "ImportAttribute") return false; return opts == null || shallowEqual(node, opts); } function isAnyTypeAnnotation(node, opts) { if (!node) return false; if (node.type !== "AnyTypeAnnotation") return false; return opts == null || shallowEqual(node, opts); } function isArrayTypeAnnotation(node, opts) { if (!node) return false; if (node.type !== "ArrayTypeAnnotation") return false; return opts == null || shallowEqual(node, opts); } function isBooleanTypeAnnotation(node, opts) { if (!node) return false; if (node.type !== "BooleanTypeAnnotation") return false; return opts == null || shallowEqual(node, opts); } function isBooleanLiteralTypeAnnotation(node, opts) { if (!node) return false; if (node.type !== "BooleanLiteralTypeAnnotation") return false; return opts == null || shallowEqual(node, opts); } function isNullLiteralTypeAnnotation(node, opts) { if (!node) return false; if (node.type !== "NullLiteralTypeAnnotation") return false; return opts == null || shallowEqual(node, opts); } function isClassImplements(node, opts) { if (!node) return false; if (node.type !== "ClassImplements") return false; return opts == null || shallowEqual(node, opts); } function isDeclareClass(node, opts) { if (!node) return false; if (node.type !== "DeclareClass") return false; return opts == null || shallowEqual(node, opts); } function isDeclareFunction(node, opts) { if (!node) return false; if (node.type !== "DeclareFunction") return false; return opts == null || shallowEqual(node, opts); } function isDeclareInterface(node, opts) { if (!node) return false; if (node.type !== "DeclareInterface") return false; return opts == null || shallowEqual(node, opts); } function isDeclareModule(node, opts) { if (!node) return false; if (node.type !== "DeclareModule") return false; return opts == null || shallowEqual(node, opts); } function isDeclareModuleExports(node, opts) { if (!node) return false; if (node.type !== "DeclareModuleExports") return false; return opts == null || shallowEqual(node, opts); } function isDeclareTypeAlias(node, opts) { if (!node) return false; if (node.type !== "DeclareTypeAlias") return false; return opts == null || shallowEqual(node, opts); } function isDeclareOpaqueType(node, opts) { if (!node) return false; if (node.type !== "DeclareOpaqueType") return false; return opts == null || shallowEqual(node, opts); } function isDeclareVariable(node, opts) { if (!node) return false; if (node.type !== "DeclareVariable") return false; return opts == null || shallowEqual(node, opts); } function isDeclareExportDeclaration(node, opts) { if (!node) return false; if (node.type !== "DeclareExportDeclaration") return false; return opts == null || shallowEqual(node, opts); } function isDeclareExportAllDeclaration(node, opts) { if (!node) return false; if (node.type !== "DeclareExportAllDeclaration") return false; return opts == null || shallowEqual(node, opts); } function isDeclaredPredicate(node, opts) { if (!node) return false; if (node.type !== "DeclaredPredicate") return false; return opts == null || shallowEqual(node, opts); } function isExistsTypeAnnotation(node, opts) { if (!node) return false; if (node.type !== "ExistsTypeAnnotation") return false; return opts == null || shallowEqual(node, opts); } function isFunctionTypeAnnotation(node, opts) { if (!node) return false; if (node.type !== "FunctionTypeAnnotation") return false; return opts == null || shallowEqual(node, opts); } function isFunctionTypeParam(node, opts) { if (!node) return false; if (node.type !== "FunctionTypeParam") return false; return opts == null || shallowEqual(node, opts); } function isGenericTypeAnnotation(node, opts) { if (!node) return false; if (node.type !== "GenericTypeAnnotation") return false; return opts == null || shallowEqual(node, opts); } function isInferredPredicate(node, opts) { if (!node) return false; if (node.type !== "InferredPredicate") return false; return opts == null || shallowEqual(node, opts); } function isInterfaceExtends(node, opts) { if (!node) return false; if (node.type !== "InterfaceExtends") return false; return opts == null || shallowEqual(node, opts); } function isInterfaceDeclaration(node, opts) { if (!node) return false; if (node.type !== "InterfaceDeclaration") return false; return opts == null || shallowEqual(node, opts); } function isInterfaceTypeAnnotation(node, opts) { if (!node) return false; if (node.type !== "InterfaceTypeAnnotation") return false; return opts == null || shallowEqual(node, opts); } function isIntersectionTypeAnnotation(node, opts) { if (!node) return false; if (node.type !== "IntersectionTypeAnnotation") return false; return opts == null || shallowEqual(node, opts); } function isMixedTypeAnnotation(node, opts) { if (!node) return false; if (node.type !== "MixedTypeAnnotation") return false; return opts == null || shallowEqual(node, opts); } function isEmptyTypeAnnotation(node, opts) { if (!node) return false; if (node.type !== "EmptyTypeAnnotation") return false; return opts == null || shallowEqual(node, opts); } function isNullableTypeAnnotation(node, opts) { if (!node) return false; if (node.type !== "NullableTypeAnnotation") return false; return opts == null || shallowEqual(node, opts); } function isNumberLiteralTypeAnnotation(node, opts) { if (!node) return false; if (node.type !== "NumberLiteralTypeAnnotation") return false; return opts == null || shallowEqual(node, opts); } function isBigIntLiteralTypeAnnotation(node, opts) { if (!node) return false; if (node.type !== "BigIntLiteralTypeAnnotation") return false; return opts == null || shallowEqual(node, opts); } function isNumberTypeAnnotation(node, opts) { if (!node) return false; if (node.type !== "NumberTypeAnnotation") return false; return opts == null || shallowEqual(node, opts); } function isObjectTypeAnnotation(node, opts) { if (!node) return false; if (node.type !== "ObjectTypeAnnotation") return false; return opts == null || shallowEqual(node, opts); } function isObjectTypeInternalSlot(node, opts) { if (!node) return false; if (node.type !== "ObjectTypeInternalSlot") return false; return opts == null || shallowEqual(node, opts); } function isObjectTypeCallProperty(node, opts) { if (!node) return false; if (node.type !== "ObjectTypeCallProperty") return false; return opts == null || shallowEqual(node, opts); } function isObjectTypeIndexer(node, opts) { if (!node) return false; if (node.type !== "ObjectTypeIndexer") return false; return opts == null || shallowEqual(node, opts); } function isObjectTypeProperty(node, opts) { if (!node) return false; if (node.type !== "ObjectTypeProperty") return false; return opts == null || shallowEqual(node, opts); } function isObjectTypeSpreadProperty(node, opts) { if (!node) return false; if (node.type !== "ObjectTypeSpreadProperty") return false; return opts == null || shallowEqual(node, opts); } function isOpaqueType(node, opts) { if (!node) return false; if (node.type !== "OpaqueType") return false; return opts == null || shallowEqual(node, opts); } function isQualifiedTypeIdentifier(node, opts) { if (!node) return false; if (node.type !== "QualifiedTypeIdentifier") return false; return opts == null || shallowEqual(node, opts); } function isStringLiteralTypeAnnotation(node, opts) { if (!node) return false; if (node.type !== "StringLiteralTypeAnnotation") return false; return opts == null || shallowEqual(node, opts); } function isStringTypeAnnotation(node, opts) { if (!node) return false; if (node.type !== "StringTypeAnnotation") return false; return opts == null || shallowEqual(node, opts); } function isSymbolTypeAnnotation(node, opts) { if (!node) return false; if (node.type !== "SymbolTypeAnnotation") return false; return opts == null || shallowEqual(node, opts); } function isThisTypeAnnotation(node, opts) { if (!node) return false; if (node.type !== "ThisTypeAnnotation") return false; return opts == null || shallowEqual(node, opts); } function isTupleTypeAnnotation(node, opts) { if (!node) return false; if (node.type !== "TupleTypeAnnotation") return false; return opts == null || shallowEqual(node, opts); } function isTypeofTypeAnnotation(node, opts) { if (!node) return false; if (node.type !== "TypeofTypeAnnotation") return false; return opts == null || shallowEqual(node, opts); } function isTypeAlias(node, opts) { if (!node) return false; if (node.type !== "TypeAlias") return false; return opts == null || shallowEqual(node, opts); } function isTypeAnnotation(node, opts) { if (!node) return false; if (node.type !== "TypeAnnotation") return false; return opts == null || shallowEqual(node, opts); } function isTypeCastExpression(node, opts) { if (!node) return false; if (node.type !== "TypeCastExpression") return false; return opts == null || shallowEqual(node, opts); } function isTypeParameter(node, opts) { if (!node) return false; if (node.type !== "TypeParameter") return false; return opts == null || shallowEqual(node, opts); } function isTypeParameterDeclaration(node, opts) { if (!node) return false; if (node.type !== "TypeParameterDeclaration") return false; return opts == null || shallowEqual(node, opts); } function isTypeParameterInstantiation(node, opts) { if (!node) return false; if (node.type !== "TypeParameterInstantiation") return false; return opts == null || shallowEqual(node, opts); } function isUnionTypeAnnotation(node, opts) { if (!node) return false; if (node.type !== "UnionTypeAnnotation") return false; return opts == null || shallowEqual(node, opts); } function isVariance(node, opts) { if (!node) return false; if (node.type !== "Variance") return false; return opts == null || shallowEqual(node, opts); } function isVoidTypeAnnotation(node, opts) { if (!node) return false; if (node.type !== "VoidTypeAnnotation") return false; return opts == null || shallowEqual(node, opts); } function isEnumDeclaration(node, opts) { if (!node) return false; if (node.type !== "EnumDeclaration") return false; return opts == null || shallowEqual(node, opts); } function isEnumBooleanBody(node, opts) { if (!node) return false; if (node.type !== "EnumBooleanBody") return false; return opts == null || shallowEqual(node, opts); } function isEnumNumberBody(node, opts) { if (!node) return false; if (node.type !== "EnumNumberBody") return false; return opts == null || shallowEqual(node, opts); } function isEnumStringBody(node, opts) { if (!node) return false; if (node.type !== "EnumStringBody") return false; return opts == null || shallowEqual(node, opts); } function isEnumSymbolBody(node, opts) { if (!node) return false; if (node.type !== "EnumSymbolBody") return false; return opts == null || shallowEqual(node, opts); } function isEnumBooleanMember(node, opts) { if (!node) return false; if (node.type !== "EnumBooleanMember") return false; return opts == null || shallowEqual(node, opts); } function isEnumNumberMember(node, opts) { if (!node) return false; if (node.type !== "EnumNumberMember") return false; return opts == null || shallowEqual(node, opts); } function isEnumStringMember(node, opts) { if (!node) return false; if (node.type !== "EnumStringMember") return false; return opts == null || shallowEqual(node, opts); } function isEnumDefaultedMember(node, opts) { if (!node) return false; if (node.type !== "EnumDefaultedMember") return false; return opts == null || shallowEqual(node, opts); } function isIndexedAccessType(node, opts) { if (!node) return false; if (node.type !== "IndexedAccessType") return false; return opts == null || shallowEqual(node, opts); } function isOptionalIndexedAccessType(node, opts) { if (!node) return false; if (node.type !== "OptionalIndexedAccessType") return false; return opts == null || shallowEqual(node, opts); } function isJSXAttribute(node, opts) { if (!node) return false; if (node.type !== "JSXAttribute") return false; return opts == null || shallowEqual(node, opts); } function isJSXClosingElement(node, opts) { if (!node) return false; if (node.type !== "JSXClosingElement") return false; return opts == null || shallowEqual(node, opts); } function isJSXElement(node, opts) { if (!node) return false; if (node.type !== "JSXElement") return false; return opts == null || shallowEqual(node, opts); } function isJSXEmptyExpression(node, opts) { if (!node) return false; if (node.type !== "JSXEmptyExpression") return false; return opts == null || shallowEqual(node, opts); } function isJSXExpressionContainer(node, opts) { if (!node) return false; if (node.type !== "JSXExpressionContainer") return false; return opts == null || shallowEqual(node, opts); } function isJSXSpreadChild(node, opts) { if (!node) return false; if (node.type !== "JSXSpreadChild") return false; return opts == null || shallowEqual(node, opts); } function isJSXIdentifier(node, opts) { if (!node) return false; if (node.type !== "JSXIdentifier") return false; return opts == null || shallowEqual(node, opts); } function isJSXMemberExpression(node, opts) { if (!node) return false; if (node.type !== "JSXMemberExpression") return false; return opts == null || shallowEqual(node, opts); } function isJSXNamespacedName(node, opts) { if (!node) return false; if (node.type !== "JSXNamespacedName") return false; return opts == null || shallowEqual(node, opts); } function isJSXOpeningElement(node, opts) { if (!node) return false; if (node.type !== "JSXOpeningElement") return false; return opts == null || shallowEqual(node, opts); } function isJSXSpreadAttribute(node, opts) { if (!node) return false; if (node.type !== "JSXSpreadAttribute") return false; return opts == null || shallowEqual(node, opts); } function isJSXText(node, opts) { if (!node) return false; if (node.type !== "JSXText") return false; return opts == null || shallowEqual(node, opts); } function isJSXFragment(node, opts) { if (!node) return false; if (node.type !== "JSXFragment") return false; return opts == null || shallowEqual(node, opts); } function isJSXOpeningFragment(node, opts) { if (!node) return false; if (node.type !== "JSXOpeningFragment") return false; return opts == null || shallowEqual(node, opts); } function isJSXClosingFragment(node, opts) { if (!node) return false; if (node.type !== "JSXClosingFragment") return false; return opts == null || shallowEqual(node, opts); } function isPlaceholder(node, opts) { if (!node) return false; if (node.type !== "Placeholder") return false; return opts == null || shallowEqual(node, opts); } function isV8IntrinsicIdentifier(node, opts) { if (!node) return false; if (node.type !== "V8IntrinsicIdentifier") return false; return opts == null || shallowEqual(node, opts); } function isArgumentPlaceholder(node, opts) { if (!node) return false; if (node.type !== "ArgumentPlaceholder") return false; return opts == null || shallowEqual(node, opts); } function isBindExpression(node, opts) { if (!node) return false; if (node.type !== "BindExpression") return false; return opts == null || shallowEqual(node, opts); } function isClassAccessorProperty(node, opts) { if (!node) return false; if (node.type !== "ClassAccessorProperty") return false; return opts == null || shallowEqual(node, opts); } function isDecorator(node, opts) { if (!node) return false; if (node.type !== "Decorator") return false; return opts == null || shallowEqual(node, opts); } function isDoExpression(node, opts) { if (!node) return false; if (node.type !== "DoExpression") return false; return opts == null || shallowEqual(node, opts); } function isExportDefaultSpecifier(node, opts) { if (!node) return false; if (node.type !== "ExportDefaultSpecifier") return false; return opts == null || shallowEqual(node, opts); } function isModuleExpression(node, opts) { if (!node) return false; if (node.type !== "ModuleExpression") return false; return opts == null || shallowEqual(node, opts); } function isTopicReference(node, opts) { if (!node) return false; if (node.type !== "TopicReference") return false; return opts == null || shallowEqual(node, opts); } function isVoidPattern(node, opts) { if (!node) return false; if (node.type !== "VoidPattern") return false; return opts == null || shallowEqual(node, opts); } function isTSParameterProperty(node, opts) { if (!node) return false; if (node.type !== "TSParameterProperty") return false; return opts == null || shallowEqual(node, opts); } function isTSDeclareFunction(node, opts) { if (!node) return false; if (node.type !== "TSDeclareFunction") return false; return opts == null || shallowEqual(node, opts); } function isTSDeclareMethod(node, opts) { if (!node) return false; if (node.type !== "TSDeclareMethod") return false; return opts == null || shallowEqual(node, opts); } function isTSQualifiedName(node, opts) { if (!node) return false; if (node.type !== "TSQualifiedName") return false; return opts == null || shallowEqual(node, opts); } function isTSCallSignatureDeclaration(node, opts) { if (!node) return false; if (node.type !== "TSCallSignatureDeclaration") return false; return opts == null || shallowEqual(node, opts); } function isTSConstructSignatureDeclaration(node, opts) { if (!node) return false; if (node.type !== "TSConstructSignatureDeclaration") return false; return opts == null || shallowEqual(node, opts); } function isTSPropertySignature(node, opts) { if (!node) return false; if (node.type !== "TSPropertySignature") return false; return opts == null || shallowEqual(node, opts); } function isTSMethodSignature(node, opts) { if (!node) return false; if (node.type !== "TSMethodSignature") return false; return opts == null || shallowEqual(node, opts); } function isTSIndexSignature(node, opts) { if (!node) return false; if (node.type !== "TSIndexSignature") return false; return opts == null || shallowEqual(node, opts); } function isTSAnyKeyword(node, opts) { if (!node) return false; if (node.type !== "TSAnyKeyword") return false; return opts == null || shallowEqual(node, opts); } function isTSBooleanKeyword(node, opts) { if (!node) return false; if (node.type !== "TSBooleanKeyword") return false; return opts == null || shallowEqual(node, opts); } function isTSBigIntKeyword(node, opts) { if (!node) return false; if (node.type !== "TSBigIntKeyword") return false; return opts == null || shallowEqual(node, opts); } function isTSIntrinsicKeyword(node, opts) { if (!node) return false; if (node.type !== "TSIntrinsicKeyword") return false; return opts == null || shallowEqual(node, opts); } function isTSNeverKeyword(node, opts) { if (!node) return false; if (node.type !== "TSNeverKeyword") return false; return opts == null || shallowEqual(node, opts); } function isTSNullKeyword(node, opts) { if (!node) return false; if (node.type !== "TSNullKeyword") return false; return opts == null || shallowEqual(node, opts); } function isTSNumberKeyword(node, opts) { if (!node) return false; if (node.type !== "TSNumberKeyword") return false; return opts == null || shallowEqual(node, opts); } function isTSObjectKeyword(node, opts) { if (!node) return false; if (node.type !== "TSObjectKeyword") return false; return opts == null || shallowEqual(node, opts); } function isTSStringKeyword(node, opts) { if (!node) return false; if (node.type !== "TSStringKeyword") return false; return opts == null || shallowEqual(node, opts); } function isTSSymbolKeyword(node, opts) { if (!node) return false; if (node.type !== "TSSymbolKeyword") return false; return opts == null || shallowEqual(node, opts); } function isTSUndefinedKeyword(node, opts) { if (!node) return false; if (node.type !== "TSUndefinedKeyword") return false; return opts == null || shallowEqual(node, opts); } function isTSUnknownKeyword(node, opts) { if (!node) return false; if (node.type !== "TSUnknownKeyword") return false; return opts == null || shallowEqual(node, opts); } function isTSVoidKeyword(node, opts) { if (!node) return false; if (node.type !== "TSVoidKeyword") return false; return opts == null || shallowEqual(node, opts); } function isTSThisType(node, opts) { if (!node) return false; if (node.type !== "TSThisType") return false; return opts == null || shallowEqual(node, opts); } function isTSFunctionType(node, opts) { if (!node) return false; if (node.type !== "TSFunctionType") return false; return opts == null || shallowEqual(node, opts); } function isTSConstructorType(node, opts) { if (!node) return false; if (node.type !== "TSConstructorType") return false; return opts == null || shallowEqual(node, opts); } function isTSTypeReference(node, opts) { if (!node) return false; if (node.type !== "TSTypeReference") return false; return opts == null || shallowEqual(node, opts); } function isTSTypePredicate(node, opts) { if (!node) return false; if (node.type !== "TSTypePredicate") return false; return opts == null || shallowEqual(node, opts); } function isTSTypeQuery(node, opts) { if (!node) return false; if (node.type !== "TSTypeQuery") return false; return opts == null || shallowEqual(node, opts); } function isTSTypeLiteral(node, opts) { if (!node) return false; if (node.type !== "TSTypeLiteral") return false; return opts == null || shallowEqual(node, opts); } function isTSArrayType(node, opts) { if (!node) return false; if (node.type !== "TSArrayType") return false; return opts == null || shallowEqual(node, opts); } function isTSTupleType(node, opts) { if (!node) return false; if (node.type !== "TSTupleType") return false; return opts == null || shallowEqual(node, opts); } function isTSOptionalType(node, opts) { if (!node) return false; if (node.type !== "TSOptionalType") return false; return opts == null || shallowEqual(node, opts); } function isTSRestType(node, opts) { if (!node) return false; if (node.type !== "TSRestType") return false; return opts == null || shallowEqual(node, opts); } function isTSNamedTupleMember(node, opts) { if (!node) return false; if (node.type !== "TSNamedTupleMember") return false; return opts == null || shallowEqual(node, opts); } function isTSUnionType(node, opts) { if (!node) return false; if (node.type !== "TSUnionType") return false; return opts == null || shallowEqual(node, opts); } function isTSIntersectionType(node, opts) { if (!node) return false; if (node.type !== "TSIntersectionType") return false; return opts == null || shallowEqual(node, opts); } function isTSConditionalType(node, opts) { if (!node) return false; if (node.type !== "TSConditionalType") return false; return opts == null || shallowEqual(node, opts); } function isTSInferType(node, opts) { if (!node) return false; if (node.type !== "TSInferType") return false; return opts == null || shallowEqual(node, opts); } function isTSParenthesizedType(node, opts) { if (!node) return false; if (node.type !== "TSParenthesizedType") return false; return opts == null || shallowEqual(node, opts); } function isTSTypeOperator(node, opts) { if (!node) return false; if (node.type !== "TSTypeOperator") return false; return opts == null || shallowEqual(node, opts); } function isTSIndexedAccessType(node, opts) { if (!node) return false; if (node.type !== "TSIndexedAccessType") return false; return opts == null || shallowEqual(node, opts); } function isTSMappedType(node, opts) { if (!node) return false; if (node.type !== "TSMappedType") return false; return opts == null || shallowEqual(node, opts); } function isTSTemplateLiteralType(node, opts) { if (!node) return false; if (node.type !== "TSTemplateLiteralType") return false; return opts == null || shallowEqual(node, opts); } function isTSLiteralType(node, opts) { if (!node) return false; if (node.type !== "TSLiteralType") return false; return opts == null || shallowEqual(node, opts); } function isTSClassImplements(node, opts) { if (!node) return false; if (node.type !== "TSClassImplements") return false; return opts == null || shallowEqual(node, opts); } function isTSInterfaceHeritage(node, opts) { if (!node) return false; if (node.type !== "TSInterfaceHeritage") return false; return opts == null || shallowEqual(node, opts); } function isTSInterfaceDeclaration(node, opts) { if (!node) return false; if (node.type !== "TSInterfaceDeclaration") return false; return opts == null || shallowEqual(node, opts); } function isTSInterfaceBody(node, opts) { if (!node) return false; if (node.type !== "TSInterfaceBody") return false; return opts == null || shallowEqual(node, opts); } function isTSTypeAliasDeclaration(node, opts) { if (!node) return false; if (node.type !== "TSTypeAliasDeclaration") return false; return opts == null || shallowEqual(node, opts); } function isTSInstantiationExpression(node, opts) { if (!node) return false; if (node.type !== "TSInstantiationExpression") return false; return opts == null || shallowEqual(node, opts); } function isTSAsExpression(node, opts) { if (!node) return false; if (node.type !== "TSAsExpression") return false; return opts == null || shallowEqual(node, opts); } function isTSSatisfiesExpression(node, opts) { if (!node) return false; if (node.type !== "TSSatisfiesExpression") return false; return opts == null || shallowEqual(node, opts); } function isTSTypeAssertion(node, opts) { if (!node) return false; if (node.type !== "TSTypeAssertion") return false; return opts == null || shallowEqual(node, opts); } function isTSEnumBody(node, opts) { if (!node) return false; if (node.type !== "TSEnumBody") return false; return opts == null || shallowEqual(node, opts); } function isTSEnumDeclaration(node, opts) { if (!node) return false; if (node.type !== "TSEnumDeclaration") return false; return opts == null || shallowEqual(node, opts); } function isTSEnumMember(node, opts) { if (!node) return false; if (node.type !== "TSEnumMember") return false; return opts == null || shallowEqual(node, opts); } function isTSModuleDeclaration(node, opts) { if (!node) return false; if (node.type !== "TSModuleDeclaration") return false; return opts == null || shallowEqual(node, opts); } function isTSModuleBlock(node, opts) { if (!node) return false; if (node.type !== "TSModuleBlock") return false; return opts == null || shallowEqual(node, opts); } function isTSImportType(node, opts) { if (!node) return false; if (node.type !== "TSImportType") return false; return opts == null || shallowEqual(node, opts); } function isTSImportEqualsDeclaration(node, opts) { if (!node) return false; if (node.type !== "TSImportEqualsDeclaration") return false; return opts == null || shallowEqual(node, opts); } function isTSExternalModuleReference(node, opts) { if (!node) return false; if (node.type !== "TSExternalModuleReference") return false; return opts == null || shallowEqual(node, opts); } function isTSNonNullExpression(node, opts) { if (!node) return false; if (node.type !== "TSNonNullExpression") return false; return opts == null || shallowEqual(node, opts); } function isTSExportAssignment(node, opts) { if (!node) return false; if (node.type !== "TSExportAssignment") return false; return opts == null || shallowEqual(node, opts); } function isTSNamespaceExportDeclaration(node, opts) { if (!node) return false; if (node.type !== "TSNamespaceExportDeclaration") return false; return opts == null || shallowEqual(node, opts); } function isTSTypeAnnotation(node, opts) { if (!node) return false; if (node.type !== "TSTypeAnnotation") return false; return opts == null || shallowEqual(node, opts); } function isTSTypeParameterInstantiation(node, opts) { if (!node) return false; if (node.type !== "TSTypeParameterInstantiation") return false; return opts == null || shallowEqual(node, opts); } function isTSTypeParameterDeclaration(node, opts) { if (!node) return false; if (node.type !== "TSTypeParameterDeclaration") return false; return opts == null || shallowEqual(node, opts); } function isTSTypeParameter(node, opts) { if (!node) return false; if (node.type !== "TSTypeParameter") return false; return opts == null || shallowEqual(node, opts); } function isStandardized(node, opts) { if (!node) return false; switch (node.type) { case "ArrayExpression": case "AssignmentExpression": case "BinaryExpression": case "InterpreterDirective": case "Directive": case "DirectiveLiteral": case "BlockStatement": case "BreakStatement": case "CallExpression": case "CatchClause": case "ConditionalExpression": case "ContinueStatement": case "DebuggerStatement": case "DoWhileStatement": case "EmptyStatement": case "ExpressionStatement": case "File": case "ForInStatement": case "ForStatement": case "FunctionDeclaration": case "FunctionExpression": case "Identifier": case "IfStatement": case "LabeledStatement": case "StringLiteral": case "NumericLiteral": case "NullLiteral": case "BooleanLiteral": case "RegExpLiteral": case "LogicalExpression": case "MemberExpression": case "NewExpression": case "Program": case "ObjectExpression": case "ObjectMethod": case "ObjectProperty": case "RestElement": case "ReturnStatement": case "SequenceExpression": case "ParenthesizedExpression": case "SwitchCase": case "SwitchStatement": case "ThisExpression": case "ThrowStatement": case "TryStatement": case "UnaryExpression": case "UpdateExpression": case "VariableDeclaration": case "VariableDeclarator": case "WhileStatement": case "WithStatement": case "AssignmentPattern": case "ArrayPattern": case "ArrowFunctionExpression": case "ClassBody": case "ClassExpression": case "ClassDeclaration": case "ExportAllDeclaration": case "ExportDefaultDeclaration": case "ExportNamedDeclaration": case "ExportSpecifier": case "ForOfStatement": case "ImportDeclaration": case "ImportDefaultSpecifier": case "ImportNamespaceSpecifier": case "ImportSpecifier": case "MetaProperty": case "ClassMethod": case "ObjectPattern": case "SpreadElement": case "Super": case "TaggedTemplateExpression": case "TemplateElement": case "TemplateLiteral": case "YieldExpression": case "AwaitExpression": case "ImportExpression": case "Import": case "BigIntLiteral": case "ExportNamespaceSpecifier": case "OptionalMemberExpression": case "OptionalCallExpression": case "ClassProperty": case "ClassPrivateProperty": case "ClassPrivateMethod": case "PrivateName": case "StaticBlock": case "ImportAttribute": break; case "Placeholder": switch (node.expectedNode) { case "Identifier": case "StringLiteral": case "BlockStatement": case "ClassBody": break; default: return false; } break; default: return false; } return opts == null || shallowEqual(node, opts); } function isExpression(node, opts) { if (!node) return false; switch (node.type) { case "ArrayExpression": case "AssignmentExpression": case "BinaryExpression": case "CallExpression": case "ConditionalExpression": case "FunctionExpression": case "Identifier": case "StringLiteral": case "NumericLiteral": case "NullLiteral": case "BooleanLiteral": case "RegExpLiteral": case "LogicalExpression": case "MemberExpression": case "NewExpression": case "ObjectExpression": case "SequenceExpression": case "ParenthesizedExpression": case "ThisExpression": case "UnaryExpression": case "UpdateExpression": case "ArrowFunctionExpression": case "ClassExpression": case "MetaProperty": case "TaggedTemplateExpression": case "TemplateLiteral": case "YieldExpression": case "AwaitExpression": case "ImportExpression": case "BigIntLiteral": case "OptionalMemberExpression": case "OptionalCallExpression": case "TypeCastExpression": case "JSXElement": case "JSXFragment": case "BindExpression": case "DoExpression": case "ModuleExpression": case "TopicReference": case "TSInstantiationExpression": case "TSAsExpression": case "TSSatisfiesExpression": case "TSTypeAssertion": case "TSNonNullExpression": break; case "Placeholder": switch (node.expectedNode) { case "Expression": case "Identifier": case "StringLiteral": break; default: return false; } break; default: return false; } return opts ==