@babel/types
Version:
Babel Types is a Lodash-esque utility library for AST nodes
1,460 lines (1,457 loc) • 349 kB
JavaScript
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 ==