Files
memecoin-botV2/.pnpm-store/v10/files/d4/56dbb8475160cd0e4712259242b35abc9832c1be0e5fe535d46ddb65e7e1fe43514b671a342f76019888631f07ce091b7ccc8e378c42e404c187a5dbed2aef

3057 lines
141 KiB
Plaintext

// Code generated by _scripts/generate-ts-ast.ts. DO NOT EDIT.
import { NodeFlags } from "#enums/nodeFlags";
import { SyntaxKind } from "#enums/syntaxKind";
import { TokenFlags } from "#enums/tokenFlags";
import { getTokenPosOfNode } from "./astnav.js";
import { cloneSourceFileData } from "./utils.js";
import { forEachChildOfJSDocParameterTag, forEachChildOfJSDocPropertyTag, } from "./visitor.js";
export class NodeObject {
kind;
flags = 0;
pos = -1;
end = -1;
parent = undefined;
_data;
constructor(kind, data) {
this.kind = kind;
this._data = data;
}
get ambientModuleNames() {
return this._data?.ambientModuleNames;
}
get argument() {
return this._data?.argument;
}
get argumentExpression() {
return this._data?.argumentExpression;
}
get arguments() {
return this._data?.arguments;
}
get assertsModifier() {
return this._data?.assertsModifier;
}
get asteriskToken() {
return this._data?.asteriskToken;
}
get attributes() {
return this._data?.attributes;
}
get awaitModifier() {
return this._data?.awaitModifier;
}
get block() {
return this._data?.block;
}
get body() {
return this._data?.body;
}
get caseBlock() {
return this._data?.caseBlock;
}
get catchClause() {
return this._data?.catchClause;
}
get checkType() {
return this._data?.checkType;
}
get children() {
return this._data?.children;
}
get className() {
return this._data?.className;
}
get clauses() {
return this._data?.clauses;
}
get closingElement() {
return this._data?.closingElement;
}
get closingFragment() {
return this._data?.closingFragment;
}
get colonToken() {
return this._data?.colonToken;
}
get comment() {
return this._data?.comment;
}
get condition() {
return this._data?.condition;
}
get constraint() {
return this._data?.constraint;
}
get containsOnlyTriviaWhiteSpaces() {
return this._data?.containsOnlyTriviaWhiteSpaces;
}
get declarationList() {
return this._data?.declarationList;
}
get declarations() {
return this._data?.declarations;
}
get defaultType() {
return this._data?.defaultType;
}
get dotDotDotToken() {
return this._data?.dotDotDotToken;
}
get elementType() {
return this._data?.elementType;
}
get elements() {
return this._data?.elements;
}
get elseStatement() {
return this._data?.elseStatement;
}
get endOfFileToken() {
return this._data?.endOfFileToken;
}
get equalsGreaterThanToken() {
return this._data?.equalsGreaterThanToken;
}
get equalsToken() {
return this._data?.equalsToken;
}
get exclamationToken() {
return this._data?.exclamationToken;
}
get exportClause() {
return this._data?.exportClause;
}
get exprName() {
return this._data?.exprName;
}
get expression() {
return this._data?.expression;
}
get extendsType() {
return this._data?.extendsType;
}
get externalModuleIndicator() {
return this._data?.externalModuleIndicator;
}
get falseType() {
return this._data?.falseType;
}
get fileName() {
return this._data?.fileName;
}
get finallyBlock() {
return this._data?.finallyBlock;
}
get head() {
return this._data?.head;
}
get heritageClauses() {
return this._data?.heritageClauses;
}
get importClause() {
return this._data?.importClause;
}
get imports() {
return this._data?.imports;
}
get incrementor() {
return this._data?.incrementor;
}
get indexType() {
return this._data?.indexType;
}
get initializer() {
return this._data?.initializer;
}
get isArrayType() {
return this._data?.isArrayType;
}
get isBracketed() {
return this._data?.isBracketed;
}
get isDeclarationFile() {
return this._data?.isDeclarationFile;
}
get isExportEquals() {
return this._data?.isExportEquals;
}
get isNameFirst() {
return this._data?.isNameFirst;
}
get isSpread() {
return this._data?.isSpread;
}
get isTypeOf() {
return this._data?.isTypeOf;
}
get isTypeOnly() {
return this._data?.isTypeOnly;
}
get jsdocPropertyTags() {
return this._data?.jsdocPropertyTags;
}
get keyword() {
return this._data?.keyword;
}
get keywordToken() {
return this._data?.keywordToken;
}
get label() {
return this._data?.label;
}
get languageVariant() {
return this._data?.languageVariant;
}
get left() {
return this._data?.left;
}
get libReferenceDirectives() {
return this._data?.libReferenceDirectives;
}
get literal() {
return this._data?.literal;
}
get members() {
return this._data?.members;
}
get modifiers() {
return this._data?.modifiers;
}
get moduleAugmentations() {
return this._data?.moduleAugmentations;
}
get moduleReference() {
return this._data?.moduleReference;
}
get moduleSpecifier() {
return this._data?.moduleSpecifier;
}
get multiLine() {
return this._data?.multiLine;
}
get name() {
return this._data?.name;
}
get nameExpression() {
return this._data?.nameExpression;
}
get nameType() {
return this._data?.nameType;
}
get namedBindings() {
return this._data?.namedBindings;
}
get namespace() {
return this._data?.namespace;
}
get objectAssignmentInitializer() {
return this._data?.objectAssignmentInitializer;
}
get objectType() {
return this._data?.objectType;
}
get openingElement() {
return this._data?.openingElement;
}
get openingFragment() {
return this._data?.openingFragment;
}
get operand() {
return this._data?.operand;
}
get operator() {
return this._data?.operator;
}
get operatorToken() {
return this._data?.operatorToken;
}
get parameterName() {
return this._data?.parameterName;
}
get parameters() {
return this._data?.parameters;
}
get path() {
return this._data?.path;
}
get phaseModifier() {
return this._data?.phaseModifier;
}
get postfixToken() {
return this._data?.postfixToken;
}
get properties() {
return this._data?.properties;
}
get propertyName() {
return this._data?.propertyName;
}
get qualifier() {
return this._data?.qualifier;
}
get questionDotToken() {
return this._data?.questionDotToken;
}
get questionToken() {
return this._data?.questionToken;
}
get rawText() {
return this._data?.rawText;
}
get readonlyToken() {
return this._data?.readonlyToken;
}
get referencedFiles() {
return this._data?.referencedFiles;
}
get right() {
return this._data?.right;
}
get scriptKind() {
return this._data?.scriptKind;
}
get statement() {
return this._data?.statement;
}
get statements() {
return this._data?.statements;
}
get tag() {
return this._data?.tag;
}
get tagName() {
return this._data?.tagName;
}
get tags() {
return this._data?.tags;
}
get template() {
return this._data?.template;
}
get templateFlags() {
return this._data?.templateFlags;
}
get templateSpans() {
return this._data?.templateSpans;
}
get text() {
return this._data?.text;
}
get thenStatement() {
return this._data?.thenStatement;
}
get thisArg() {
return this._data?.thisArg;
}
get token() {
return this._data?.token;
}
get tokenCache() {
return this._data?.tokenCache;
}
get tokenFlags() {
return this._data?.tokenFlags;
}
get trueType() {
return this._data?.trueType;
}
get tryBlock() {
return this._data?.tryBlock;
}
get tupleNameSource() {
return this._data?.tupleNameSource;
}
get type() {
return this._data?.type;
}
get typeArguments() {
return this._data?.typeArguments;
}
get typeExpression() {
return this._data?.typeExpression;
}
get typeName() {
return this._data?.typeName;
}
get typeParameter() {
return this._data?.typeParameter;
}
get typeParameters() {
return this._data?.typeParameters;
}
get typeReferenceDirectives() {
return this._data?.typeReferenceDirectives;
}
get types() {
return this._data?.types;
}
get value() {
return this._data?.value;
}
get variableDeclaration() {
return this._data?.variableDeclaration;
}
get whenFalse() {
return this._data?.whenFalse;
}
get whenTrue() {
return this._data?.whenTrue;
}
forEachChild(visitor, visitArray) {
const fn = forEachChildTable[this.kind];
return fn ? fn(this._data, visitor, visitArray) : undefined;
}
getSourceFile() {
let node = this;
while (node.parent)
node = node.parent;
return node;
}
getStart(sourceFile, includeJsDocComment) {
return getTokenPosOfNode(this, sourceFile ?? this.getSourceFile(), includeJsDocComment);
}
getFullStart() {
return this.pos;
}
getEnd() {
return this.end;
}
getWidth(sourceFile) {
return this.getEnd() - this.getStart(sourceFile);
}
getFullWidth() {
return this.end - this.pos;
}
getLeadingTriviaWidth(sourceFile) {
return this.getStart(sourceFile) - this.pos;
}
getFullText(sourceFile) {
return (sourceFile ?? this.getSourceFile()).text.substring(this.pos, this.end);
}
getText(sourceFile) {
sourceFile ??= this.getSourceFile();
return sourceFile.text.substring(this.getStart(sourceFile), this.end);
}
}
function isNodeArray(array) {
return "pos" in array && "end" in array;
}
export function createNodeArray(elements, pos = -1, end = -1) {
if (isNodeArray(elements))
return elements;
const arr = elements.slice();
arr.pos = pos;
arr.end = end;
return arr;
}
export function cloneNode(node) {
const data = cloneNodeData(node);
const clone = new NodeObject(node.kind, data);
clone.flags = node.flags;
clone.pos = node.pos;
clone.end = node.end;
return clone;
}
function cloneNodeData(node) {
const n = node;
switch (node.kind) {
case SyntaxKind.Identifier:
return { text: n.text };
case SyntaxKind.PrivateIdentifier:
return { text: n.text };
case SyntaxKind.QualifiedName:
return { left: n.left, right: n.right };
case SyntaxKind.ComputedPropertyName:
return { expression: n.expression };
case SyntaxKind.Decorator:
return { expression: n.expression };
case SyntaxKind.IfStatement:
return { expression: n.expression, thenStatement: n.thenStatement, elseStatement: n.elseStatement };
case SyntaxKind.DoStatement:
return { statement: n.statement, expression: n.expression };
case SyntaxKind.WhileStatement:
return { expression: n.expression, statement: n.statement };
case SyntaxKind.ForStatement:
return { initializer: n.initializer, condition: n.condition, incrementor: n.incrementor, statement: n.statement };
case SyntaxKind.BreakStatement:
return { label: n.label };
case SyntaxKind.ContinueStatement:
return { label: n.label };
case SyntaxKind.ReturnStatement:
return { expression: n.expression };
case SyntaxKind.WithStatement:
return { expression: n.expression, statement: n.statement };
case SyntaxKind.SwitchStatement:
return { expression: n.expression, caseBlock: n.caseBlock };
case SyntaxKind.CaseBlock:
return { clauses: n.clauses };
case SyntaxKind.ThrowStatement:
return { expression: n.expression };
case SyntaxKind.TryStatement:
return { tryBlock: n.tryBlock, catchClause: n.catchClause, finallyBlock: n.finallyBlock };
case SyntaxKind.CatchClause:
return { variableDeclaration: n.variableDeclaration, block: n.block };
case SyntaxKind.LabeledStatement:
return { label: n.label, statement: n.statement };
case SyntaxKind.ExpressionStatement:
return { expression: n.expression };
case SyntaxKind.Block:
return { statements: n.statements, multiLine: n.multiLine };
case SyntaxKind.VariableStatement:
return { modifiers: n.modifiers, declarationList: n.declarationList };
case SyntaxKind.VariableDeclaration:
return { name: n.name, exclamationToken: n.exclamationToken, type: n.type, initializer: n.initializer };
case SyntaxKind.VariableDeclarationList:
return { declarations: n.declarations };
case SyntaxKind.Parameter:
return { modifiers: n.modifiers, dotDotDotToken: n.dotDotDotToken, name: n.name, questionToken: n.questionToken, type: n.type, initializer: n.initializer };
case SyntaxKind.BindingElement:
return { dotDotDotToken: n.dotDotDotToken, propertyName: n.propertyName, name: n.name, initializer: n.initializer };
case SyntaxKind.MissingDeclaration:
return { modifiers: n.modifiers };
case SyntaxKind.FunctionDeclaration:
return { modifiers: n.modifiers, asteriskToken: n.asteriskToken, name: n.name, typeParameters: n.typeParameters, parameters: n.parameters, type: n.type, body: n.body };
case SyntaxKind.ClassDeclaration:
return { modifiers: n.modifiers, name: n.name, typeParameters: n.typeParameters, heritageClauses: n.heritageClauses, members: n.members };
case SyntaxKind.ClassExpression:
return { modifiers: n.modifiers, name: n.name, typeParameters: n.typeParameters, heritageClauses: n.heritageClauses, members: n.members };
case SyntaxKind.HeritageClause:
return { token: n.token, types: n.types };
case SyntaxKind.InterfaceDeclaration:
return { modifiers: n.modifiers, name: n.name, typeParameters: n.typeParameters, heritageClauses: n.heritageClauses, members: n.members };
case SyntaxKind.TypeAliasDeclaration:
case SyntaxKind.JSTypeAliasDeclaration:
return { modifiers: n.modifiers, name: n.name, typeParameters: n.typeParameters, type: n.type };
case SyntaxKind.EnumMember:
return { name: n.name, initializer: n.initializer };
case SyntaxKind.EnumDeclaration:
return { modifiers: n.modifiers, name: n.name, members: n.members };
case SyntaxKind.ModuleBlock:
return { statements: n.statements };
case SyntaxKind.ImportDeclaration:
case SyntaxKind.JSImportDeclaration:
return { modifiers: n.modifiers, importClause: n.importClause, moduleSpecifier: n.moduleSpecifier, attributes: n.attributes };
case SyntaxKind.ExternalModuleReference:
return { expression: n.expression };
case SyntaxKind.NamespaceImport:
return { name: n.name };
case SyntaxKind.NamedImports:
return { elements: n.elements };
case SyntaxKind.ExportAssignment:
return { modifiers: n.modifiers, isExportEquals: n.isExportEquals, type: n.type, expression: n.expression };
case SyntaxKind.NamespaceExportDeclaration:
return { modifiers: n.modifiers, name: n.name };
case SyntaxKind.NamespaceExport:
return { name: n.name };
case SyntaxKind.NamedExports:
return { elements: n.elements };
case SyntaxKind.ExportSpecifier:
return { isTypeOnly: n.isTypeOnly, propertyName: n.propertyName, name: n.name };
case SyntaxKind.CallSignature:
return { typeParameters: n.typeParameters, parameters: n.parameters, type: n.type };
case SyntaxKind.ConstructSignature:
return { typeParameters: n.typeParameters, parameters: n.parameters, type: n.type };
case SyntaxKind.Constructor:
return { modifiers: n.modifiers, typeParameters: n.typeParameters, parameters: n.parameters, type: n.type, body: n.body };
case SyntaxKind.GetAccessor:
return { modifiers: n.modifiers, name: n.name, typeParameters: n.typeParameters, parameters: n.parameters, type: n.type, body: n.body };
case SyntaxKind.SetAccessor:
return { modifiers: n.modifiers, name: n.name, typeParameters: n.typeParameters, parameters: n.parameters, type: n.type, body: n.body };
case SyntaxKind.IndexSignature:
return { modifiers: n.modifiers, parameters: n.parameters, type: n.type };
case SyntaxKind.MethodSignature:
return { modifiers: n.modifiers, name: n.name, postfixToken: n.postfixToken, typeParameters: n.typeParameters, parameters: n.parameters, type: n.type };
case SyntaxKind.MethodDeclaration:
return { modifiers: n.modifiers, asteriskToken: n.asteriskToken, name: n.name, postfixToken: n.postfixToken, typeParameters: n.typeParameters, parameters: n.parameters, type: n.type, body: n.body };
case SyntaxKind.PropertySignature:
return { modifiers: n.modifiers, name: n.name, postfixToken: n.postfixToken, type: n.type, initializer: n.initializer };
case SyntaxKind.PropertyDeclaration:
return { modifiers: n.modifiers, name: n.name, postfixToken: n.postfixToken, type: n.type, initializer: n.initializer };
case SyntaxKind.ClassStaticBlockDeclaration:
return { modifiers: n.modifiers, body: n.body };
case SyntaxKind.StringLiteral:
return { text: n.text, tokenFlags: n.tokenFlags };
case SyntaxKind.NumericLiteral:
return { text: n.text, tokenFlags: n.tokenFlags };
case SyntaxKind.BigIntLiteral:
return { text: n.text, tokenFlags: n.tokenFlags };
case SyntaxKind.RegularExpressionLiteral:
return { text: n.text, tokenFlags: n.tokenFlags };
case SyntaxKind.NoSubstitutionTemplateLiteral:
return { text: n.text, templateFlags: n.templateFlags };
case SyntaxKind.BinaryExpression:
return { modifiers: n.modifiers, left: n.left, type: n.type, operatorToken: n.operatorToken, right: n.right };
case SyntaxKind.PrefixUnaryExpression:
return { operator: n.operator, operand: n.operand };
case SyntaxKind.PostfixUnaryExpression:
return { operand: n.operand, operator: n.operator };
case SyntaxKind.YieldExpression:
return { asteriskToken: n.asteriskToken, expression: n.expression };
case SyntaxKind.ArrowFunction:
return { modifiers: n.modifiers, typeParameters: n.typeParameters, parameters: n.parameters, type: n.type, equalsGreaterThanToken: n.equalsGreaterThanToken, body: n.body };
case SyntaxKind.FunctionExpression:
return { modifiers: n.modifiers, asteriskToken: n.asteriskToken, name: n.name, typeParameters: n.typeParameters, parameters: n.parameters, type: n.type, body: n.body };
case SyntaxKind.AsExpression:
return { expression: n.expression, type: n.type };
case SyntaxKind.SatisfiesExpression:
return { expression: n.expression, type: n.type };
case SyntaxKind.ConditionalExpression:
return { condition: n.condition, questionToken: n.questionToken, whenTrue: n.whenTrue, colonToken: n.colonToken, whenFalse: n.whenFalse };
case SyntaxKind.PropertyAccessExpression:
return { expression: n.expression, questionDotToken: n.questionDotToken, name: n.name };
case SyntaxKind.ElementAccessExpression:
return { expression: n.expression, questionDotToken: n.questionDotToken, argumentExpression: n.argumentExpression };
case SyntaxKind.CallExpression:
return { expression: n.expression, questionDotToken: n.questionDotToken, typeArguments: n.typeArguments, arguments: n.arguments };
case SyntaxKind.NewExpression:
return { expression: n.expression, typeArguments: n.typeArguments, arguments: n.arguments };
case SyntaxKind.MetaProperty:
return { keywordToken: n.keywordToken, name: n.name };
case SyntaxKind.NonNullExpression:
return { expression: n.expression };
case SyntaxKind.SpreadElement:
return { expression: n.expression };
case SyntaxKind.TemplateExpression:
return { head: n.head, templateSpans: n.templateSpans };
case SyntaxKind.TemplateSpan:
return { expression: n.expression, literal: n.literal };
case SyntaxKind.TaggedTemplateExpression:
return { tag: n.tag, questionDotToken: n.questionDotToken, typeArguments: n.typeArguments, template: n.template };
case SyntaxKind.ParenthesizedExpression:
return { expression: n.expression };
case SyntaxKind.ArrayLiteralExpression:
return { elements: n.elements, multiLine: n.multiLine };
case SyntaxKind.ObjectLiteralExpression:
return { properties: n.properties, multiLine: n.multiLine };
case SyntaxKind.SpreadAssignment:
return { expression: n.expression };
case SyntaxKind.PropertyAssignment:
return { modifiers: n.modifiers, name: n.name, postfixToken: n.postfixToken, type: n.type, initializer: n.initializer };
case SyntaxKind.ShorthandPropertyAssignment:
return { modifiers: n.modifiers, name: n.name, postfixToken: n.postfixToken, type: n.type, equalsToken: n.equalsToken, objectAssignmentInitializer: n.objectAssignmentInitializer };
case SyntaxKind.DeleteExpression:
return { expression: n.expression };
case SyntaxKind.TypeOfExpression:
return { expression: n.expression };
case SyntaxKind.VoidExpression:
return { expression: n.expression };
case SyntaxKind.AwaitExpression:
return { expression: n.expression };
case SyntaxKind.TypeAssertionExpression:
return { type: n.type, expression: n.expression };
case SyntaxKind.UnionType:
return { types: n.types };
case SyntaxKind.IntersectionType:
return { types: n.types };
case SyntaxKind.ConditionalType:
return { checkType: n.checkType, extendsType: n.extendsType, trueType: n.trueType, falseType: n.falseType };
case SyntaxKind.TypeOperator:
return { operator: n.operator, type: n.type };
case SyntaxKind.InferType:
return { typeParameter: n.typeParameter };
case SyntaxKind.ArrayType:
return { elementType: n.elementType };
case SyntaxKind.IndexedAccessType:
return { objectType: n.objectType, indexType: n.indexType };
case SyntaxKind.TypeReference:
return { typeName: n.typeName, typeArguments: n.typeArguments };
case SyntaxKind.ExpressionWithTypeArguments:
return { expression: n.expression, typeArguments: n.typeArguments };
case SyntaxKind.LiteralType:
return { literal: n.literal };
case SyntaxKind.TypePredicate:
return { assertsModifier: n.assertsModifier, parameterName: n.parameterName, type: n.type };
case SyntaxKind.ImportAttribute:
return { name: n.name, value: n.value };
case SyntaxKind.ImportAttributes:
return { token: n.token, attributes: n.attributes, multiLine: n.multiLine };
case SyntaxKind.TypeQuery:
return { exprName: n.exprName, typeArguments: n.typeArguments };
case SyntaxKind.MappedType:
return { readonlyToken: n.readonlyToken, typeParameter: n.typeParameter, nameType: n.nameType, questionToken: n.questionToken, type: n.type, members: n.members };
case SyntaxKind.TypeLiteral:
return { members: n.members };
case SyntaxKind.TupleType:
return { elements: n.elements };
case SyntaxKind.NamedTupleMember:
return { dotDotDotToken: n.dotDotDotToken, name: n.name, questionToken: n.questionToken, type: n.type };
case SyntaxKind.OptionalType:
return { type: n.type };
case SyntaxKind.RestType:
return { type: n.type };
case SyntaxKind.ParenthesizedType:
return { type: n.type };
case SyntaxKind.FunctionType:
return { typeParameters: n.typeParameters, parameters: n.parameters, type: n.type };
case SyntaxKind.ConstructorType:
return { modifiers: n.modifiers, typeParameters: n.typeParameters, parameters: n.parameters, type: n.type };
case SyntaxKind.TemplateHead:
return { text: n.text, rawText: n.rawText, templateFlags: n.templateFlags };
case SyntaxKind.TemplateMiddle:
return { text: n.text, rawText: n.rawText, templateFlags: n.templateFlags };
case SyntaxKind.TemplateTail:
return { text: n.text, rawText: n.rawText, templateFlags: n.templateFlags };
case SyntaxKind.TemplateLiteralType:
return { head: n.head, templateSpans: n.templateSpans };
case SyntaxKind.TemplateLiteralTypeSpan:
return { type: n.type, literal: n.literal };
case SyntaxKind.SyntheticExpression:
return { type: n.type, isSpread: n.isSpread, tupleNameSource: n.tupleNameSource };
case SyntaxKind.PartiallyEmittedExpression:
return { expression: n.expression };
case SyntaxKind.JsxElement:
return { openingElement: n.openingElement, children: n.children, closingElement: n.closingElement };
case SyntaxKind.JsxAttributes:
return { properties: n.properties };
case SyntaxKind.JsxNamespacedName:
return { namespace: n.namespace, name: n.name };
case SyntaxKind.JsxOpeningElement:
return { tagName: n.tagName, typeArguments: n.typeArguments, attributes: n.attributes };
case SyntaxKind.JsxSelfClosingElement:
return { tagName: n.tagName, typeArguments: n.typeArguments, attributes: n.attributes };
case SyntaxKind.JsxFragment:
return { openingFragment: n.openingFragment, children: n.children, closingFragment: n.closingFragment };
case SyntaxKind.JsxAttribute:
return { name: n.name, initializer: n.initializer };
case SyntaxKind.JsxSpreadAttribute:
return { expression: n.expression };
case SyntaxKind.JsxClosingElement:
return { tagName: n.tagName };
case SyntaxKind.JsxExpression:
return { dotDotDotToken: n.dotDotDotToken, expression: n.expression };
case SyntaxKind.JsxText:
return { text: n.text, containsOnlyTriviaWhiteSpaces: n.containsOnlyTriviaWhiteSpaces };
case SyntaxKind.SyntaxList:
return { children: n.children };
case SyntaxKind.JSDoc:
return { comment: n.comment, tags: n.tags };
case SyntaxKind.JSDocTypeExpression:
return { type: n.type };
case SyntaxKind.JSDocNonNullableType:
return { type: n.type };
case SyntaxKind.JSDocNullableType:
return { type: n.type };
case SyntaxKind.JSDocVariadicType:
return { type: n.type };
case SyntaxKind.JSDocOptionalType:
return { type: n.type };
case SyntaxKind.JSDocTypeTag:
return { tagName: n.tagName, typeExpression: n.typeExpression, comment: n.comment };
case SyntaxKind.JSDocUnknownTag:
return { tagName: n.tagName, comment: n.comment };
case SyntaxKind.JSDocTemplateTag:
return { tagName: n.tagName, constraint: n.constraint, typeParameters: n.typeParameters, comment: n.comment };
case SyntaxKind.JSDocReturnTag:
return { tagName: n.tagName, typeExpression: n.typeExpression, comment: n.comment };
case SyntaxKind.JSDocPublicTag:
return { tagName: n.tagName, comment: n.comment };
case SyntaxKind.JSDocPrivateTag:
return { tagName: n.tagName, comment: n.comment };
case SyntaxKind.JSDocProtectedTag:
return { tagName: n.tagName, comment: n.comment };
case SyntaxKind.JSDocReadonlyTag:
return { tagName: n.tagName, comment: n.comment };
case SyntaxKind.JSDocOverrideTag:
return { tagName: n.tagName, comment: n.comment };
case SyntaxKind.JSDocDeprecatedTag:
return { tagName: n.tagName, comment: n.comment };
case SyntaxKind.JSDocSeeTag:
return { tagName: n.tagName, nameExpression: n.nameExpression, comment: n.comment };
case SyntaxKind.JSDocImplementsTag:
return { tagName: n.tagName, className: n.className, comment: n.comment };
case SyntaxKind.JSDocAugmentsTag:
return { tagName: n.tagName, className: n.className, comment: n.comment };
case SyntaxKind.JSDocSatisfiesTag:
return { tagName: n.tagName, typeExpression: n.typeExpression, comment: n.comment };
case SyntaxKind.JSDocThrowsTag:
return { tagName: n.tagName, typeExpression: n.typeExpression, comment: n.comment };
case SyntaxKind.JSDocThisTag:
return { tagName: n.tagName, typeExpression: n.typeExpression, comment: n.comment };
case SyntaxKind.JSDocImportTag:
return { tagName: n.tagName, importClause: n.importClause, moduleSpecifier: n.moduleSpecifier, attributes: n.attributes, comment: n.comment };
case SyntaxKind.JSDocCallbackTag:
return { tagName: n.tagName, typeExpression: n.typeExpression, name: n.name, comment: n.comment };
case SyntaxKind.JSDocOverloadTag:
return { tagName: n.tagName, typeExpression: n.typeExpression, comment: n.comment };
case SyntaxKind.JSDocTypedefTag:
return { tagName: n.tagName, typeExpression: n.typeExpression, name: n.name, comment: n.comment };
case SyntaxKind.JSDocSignature:
return { typeParameters: n.typeParameters, parameters: n.parameters, type: n.type };
case SyntaxKind.JSDocNameReference:
return { name: n.name };
case SyntaxKind.ModuleDeclaration:
return { modifiers: n.modifiers, keyword: n.keyword, name: n.name, body: n.body };
case SyntaxKind.ImportEqualsDeclaration:
return { modifiers: n.modifiers, isTypeOnly: n.isTypeOnly, name: n.name, moduleReference: n.moduleReference };
case SyntaxKind.ExportDeclaration:
return { modifiers: n.modifiers, isTypeOnly: n.isTypeOnly, exportClause: n.exportClause, moduleSpecifier: n.moduleSpecifier, attributes: n.attributes };
case SyntaxKind.ImportType:
return { isTypeOf: n.isTypeOf, argument: n.argument, attributes: n.attributes, qualifier: n.qualifier, typeArguments: n.typeArguments };
case SyntaxKind.ImportClause:
return { phaseModifier: n.phaseModifier, name: n.name, namedBindings: n.namedBindings };
case SyntaxKind.ImportSpecifier:
return { isTypeOnly: n.isTypeOnly, propertyName: n.propertyName, name: n.name };
case SyntaxKind.JSDocText:
return { text: n.text };
case SyntaxKind.JSDocLink:
return { name: n.name, text: n.text };
case SyntaxKind.JSDocLinkPlain:
return { name: n.name, text: n.text };
case SyntaxKind.JSDocLinkCode:
return { name: n.name, text: n.text };
case SyntaxKind.TypeParameter:
return { modifiers: n.modifiers, name: n.name, constraint: n.constraint, expression: n.expression, defaultType: n.defaultType };
case SyntaxKind.SyntheticReferenceExpression:
return { expression: n.expression, thisArg: n.thisArg };
case SyntaxKind.JSDocTypeLiteral:
return { jsdocPropertyTags: n.jsdocPropertyTags, isArrayType: n.isArrayType };
case SyntaxKind.ForInStatement:
return { awaitModifier: n.awaitModifier, initializer: n.initializer, expression: n.expression, statement: n.statement };
case SyntaxKind.ForOfStatement:
return { awaitModifier: n.awaitModifier, initializer: n.initializer, expression: n.expression, statement: n.statement };
case SyntaxKind.CaseClause:
return { expression: n.expression, statements: n.statements };
case SyntaxKind.DefaultClause:
return { expression: n.expression, statements: n.statements };
case SyntaxKind.ObjectBindingPattern:
return { elements: n.elements };
case SyntaxKind.ArrayBindingPattern:
return { elements: n.elements };
case SyntaxKind.JSDocParameterTag:
return { tagName: n.tagName, name: n.name, isBracketed: n.isBracketed, typeExpression: n.typeExpression, isNameFirst: n.isNameFirst, comment: n.comment };
case SyntaxKind.JSDocPropertyTag:
return { tagName: n.tagName, name: n.name, isBracketed: n.isBracketed, typeExpression: n.typeExpression, isNameFirst: n.isNameFirst, comment: n.comment };
case SyntaxKind.SourceFile:
return cloneSourceFileData(n);
default:
return undefined;
}
}
const forEachChildTable = {
[SyntaxKind.QualifiedName]: (data, cbNode, cbNodes) => visitNode(cbNode, data.left) ||
visitNode(cbNode, data.right),
[SyntaxKind.ComputedPropertyName]: (data, cbNode, cbNodes) => visitNode(cbNode, data.expression),
[SyntaxKind.Decorator]: (data, cbNode, cbNodes) => visitNode(cbNode, data.expression),
[SyntaxKind.IfStatement]: (data, cbNode, cbNodes) => visitNode(cbNode, data.expression) ||
visitNode(cbNode, data.thenStatement) ||
visitNode(cbNode, data.elseStatement),
[SyntaxKind.DoStatement]: (data, cbNode, cbNodes) => visitNode(cbNode, data.statement) ||
visitNode(cbNode, data.expression),
[SyntaxKind.WhileStatement]: (data, cbNode, cbNodes) => visitNode(cbNode, data.expression) ||
visitNode(cbNode, data.statement),
[SyntaxKind.ForStatement]: (data, cbNode, cbNodes) => visitNode(cbNode, data.initializer) ||
visitNode(cbNode, data.condition) ||
visitNode(cbNode, data.incrementor) ||
visitNode(cbNode, data.statement),
[SyntaxKind.BreakStatement]: (data, cbNode, cbNodes) => visitNode(cbNode, data.label),
[SyntaxKind.ContinueStatement]: (data, cbNode, cbNodes) => visitNode(cbNode, data.label),
[SyntaxKind.ReturnStatement]: (data, cbNode, cbNodes) => visitNode(cbNode, data.expression),
[SyntaxKind.WithStatement]: (data, cbNode, cbNodes) => visitNode(cbNode, data.expression) ||
visitNode(cbNode, data.statement),
[SyntaxKind.SwitchStatement]: (data, cbNode, cbNodes) => visitNode(cbNode, data.expression) ||
visitNode(cbNode, data.caseBlock),
[SyntaxKind.CaseBlock]: (data, cbNode, cbNodes) => visitNodes(cbNode, cbNodes, data.clauses),
[SyntaxKind.ThrowStatement]: (data, cbNode, cbNodes) => visitNode(cbNode, data.expression),
[SyntaxKind.TryStatement]: (data, cbNode, cbNodes) => visitNode(cbNode, data.tryBlock) ||
visitNode(cbNode, data.catchClause) ||
visitNode(cbNode, data.finallyBlock),
[SyntaxKind.CatchClause]: (data, cbNode, cbNodes) => visitNode(cbNode, data.variableDeclaration) ||
visitNode(cbNode, data.block),
[SyntaxKind.LabeledStatement]: (data, cbNode, cbNodes) => visitNode(cbNode, data.label) ||
visitNode(cbNode, data.statement),
[SyntaxKind.ExpressionStatement]: (data, cbNode, cbNodes) => visitNode(cbNode, data.expression),
[SyntaxKind.Block]: (data, cbNode, cbNodes) => visitNodes(cbNode, cbNodes, data.statements),
[SyntaxKind.VariableStatement]: (data, cbNode, cbNodes) => visitNodes(cbNode, cbNodes, data.modifiers) ||
visitNode(cbNode, data.declarationList),
[SyntaxKind.VariableDeclaration]: (data, cbNode, cbNodes) => visitNode(cbNode, data.name) ||
visitNode(cbNode, data.exclamationToken) ||
visitNode(cbNode, data.type) ||
visitNode(cbNode, data.initializer),
[SyntaxKind.VariableDeclarationList]: (data, cbNode, cbNodes) => visitNodes(cbNode, cbNodes, data.declarations),
[SyntaxKind.Parameter]: (data, cbNode, cbNodes) => visitNodes(cbNode, cbNodes, data.modifiers) ||
visitNode(cbNode, data.dotDotDotToken) ||
visitNode(cbNode, data.name) ||
visitNode(cbNode, data.questionToken) ||
visitNode(cbNode, data.type) ||
visitNode(cbNode, data.initializer),
[SyntaxKind.BindingElement]: (data, cbNode, cbNodes) => visitNode(cbNode, data.dotDotDotToken) ||
visitNode(cbNode, data.propertyName) ||
visitNode(cbNode, data.name) ||
visitNode(cbNode, data.initializer),
[SyntaxKind.MissingDeclaration]: (data, cbNode, cbNodes) => visitNodes(cbNode, cbNodes, data.modifiers),
[SyntaxKind.FunctionDeclaration]: (data, cbNode, cbNodes) => visitNodes(cbNode, cbNodes, data.modifiers) ||
visitNode(cbNode, data.asteriskToken) ||
visitNode(cbNode, data.name) ||
visitNodes(cbNode, cbNodes, data.typeParameters) ||
visitNodes(cbNode, cbNodes, data.parameters) ||
visitNode(cbNode, data.type) ||
visitNode(cbNode, data.body),
[SyntaxKind.ClassDeclaration]: (data, cbNode, cbNodes) => visitNodes(cbNode, cbNodes, data.modifiers) ||
visitNode(cbNode, data.name) ||
visitNodes(cbNode, cbNodes, data.typeParameters) ||
visitNodes(cbNode, cbNodes, data.heritageClauses) ||
visitNodes(cbNode, cbNodes, data.members),
[SyntaxKind.ClassExpression]: (data, cbNode, cbNodes) => visitNodes(cbNode, cbNodes, data.modifiers) ||
visitNode(cbNode, data.name) ||
visitNodes(cbNode, cbNodes, data.typeParameters) ||
visitNodes(cbNode, cbNodes, data.heritageClauses) ||
visitNodes(cbNode, cbNodes, data.members),
[SyntaxKind.HeritageClause]: (data, cbNode, cbNodes) => visitNodes(cbNode, cbNodes, data.types),
[SyntaxKind.InterfaceDeclaration]: (data, cbNode, cbNodes) => visitNodes(cbNode, cbNodes, data.modifiers) ||
visitNode(cbNode, data.name) ||
visitNodes(cbNode, cbNodes, data.typeParameters) ||
visitNodes(cbNode, cbNodes, data.heritageClauses) ||
visitNodes(cbNode, cbNodes, data.members),
[SyntaxKind.TypeAliasDeclaration]: (data, cbNode, cbNodes) => visitNodes(cbNode, cbNodes, data.modifiers) ||
visitNode(cbNode, data.name) ||
visitNodes(cbNode, cbNodes, data.typeParameters) ||
visitNode(cbNode, data.type),
[SyntaxKind.JSTypeAliasDeclaration]: (data, cbNode, cbNodes) => visitNodes(cbNode, cbNodes, data.modifiers) ||
visitNode(cbNode, data.name) ||
visitNodes(cbNode, cbNodes, data.typeParameters) ||
visitNode(cbNode, data.type),
[SyntaxKind.EnumMember]: (data, cbNode, cbNodes) => visitNode(cbNode, data.name) ||
visitNode(cbNode, data.initializer),
[SyntaxKind.EnumDeclaration]: (data, cbNode, cbNodes) => visitNodes(cbNode, cbNodes, data.modifiers) ||
visitNode(cbNode, data.name) ||
visitNodes(cbNode, cbNodes, data.members),
[SyntaxKind.ModuleBlock]: (data, cbNode, cbNodes) => visitNodes(cbNode, cbNodes, data.statements),
[SyntaxKind.ImportDeclaration]: (data, cbNode, cbNodes) => visitNodes(cbNode, cbNodes, data.modifiers) ||
visitNode(cbNode, data.importClause) ||
visitNode(cbNode, data.moduleSpecifier) ||
visitNode(cbNode, data.attributes),
[SyntaxKind.JSImportDeclaration]: (data, cbNode, cbNodes) => visitNodes(cbNode, cbNodes, data.modifiers) ||
visitNode(cbNode, data.importClause) ||
visitNode(cbNode, data.moduleSpecifier) ||
visitNode(cbNode, data.attributes),
[SyntaxKind.ExternalModuleReference]: (data, cbNode, cbNodes) => visitNode(cbNode, data.expression),
[SyntaxKind.NamespaceImport]: (data, cbNode, cbNodes) => visitNode(cbNode, data.name),
[SyntaxKind.NamedImports]: (data, cbNode, cbNodes) => visitNodes(cbNode, cbNodes, data.elements),
[SyntaxKind.ExportAssignment]: (data, cbNode, cbNodes) => visitNodes(cbNode, cbNodes, data.modifiers) ||
visitNode(cbNode, data.type) ||
visitNode(cbNode, data.expression),
[SyntaxKind.NamespaceExportDeclaration]: (data, cbNode, cbNodes) => visitNodes(cbNode, cbNodes, data.modifiers) ||
visitNode(cbNode, data.name),
[SyntaxKind.NamespaceExport]: (data, cbNode, cbNodes) => visitNode(cbNode, data.name),
[SyntaxKind.NamedExports]: (data, cbNode, cbNodes) => visitNodes(cbNode, cbNodes, data.elements),
[SyntaxKind.ExportSpecifier]: (data, cbNode, cbNodes) => visitNode(cbNode, data.propertyName) ||
visitNode(cbNode, data.name),
[SyntaxKind.CallSignature]: (data, cbNode, cbNodes) => visitNodes(cbNode, cbNodes, data.typeParameters) ||
visitNodes(cbNode, cbNodes, data.parameters) ||
visitNode(cbNode, data.type),
[SyntaxKind.ConstructSignature]: (data, cbNode, cbNodes) => visitNodes(cbNode, cbNodes, data.typeParameters) ||
visitNodes(cbNode, cbNodes, data.parameters) ||
visitNode(cbNode, data.type),
[SyntaxKind.Constructor]: (data, cbNode, cbNodes) => visitNodes(cbNode, cbNodes, data.modifiers) ||
visitNodes(cbNode, cbNodes, data.typeParameters) ||
visitNodes(cbNode, cbNodes, data.parameters) ||
visitNode(cbNode, data.type) ||
visitNode(cbNode, data.body),
[SyntaxKind.GetAccessor]: (data, cbNode, cbNodes) => visitNodes(cbNode, cbNodes, data.modifiers) ||
visitNode(cbNode, data.name) ||
visitNodes(cbNode, cbNodes, data.typeParameters) ||
visitNodes(cbNode, cbNodes, data.parameters) ||
visitNode(cbNode, data.type) ||
visitNode(cbNode, data.body),
[SyntaxKind.SetAccessor]: (data, cbNode, cbNodes) => visitNodes(cbNode, cbNodes, data.modifiers) ||
visitNode(cbNode, data.name) ||
visitNodes(cbNode, cbNodes, data.typeParameters) ||
visitNodes(cbNode, cbNodes, data.parameters) ||
visitNode(cbNode, data.type) ||
visitNode(cbNode, data.body),
[SyntaxKind.IndexSignature]: (data, cbNode, cbNodes) => visitNodes(cbNode, cbNodes, data.modifiers) ||
visitNodes(cbNode, cbNodes, data.parameters) ||
visitNode(cbNode, data.type),
[SyntaxKind.MethodSignature]: (data, cbNode, cbNodes) => visitNodes(cbNode, cbNodes, data.modifiers) ||
visitNode(cbNode, data.name) ||
visitNode(cbNode, data.postfixToken) ||
visitNodes(cbNode, cbNodes, data.typeParameters) ||
visitNodes(cbNode, cbNodes, data.parameters) ||
visitNode(cbNode, data.type),
[SyntaxKind.MethodDeclaration]: (data, cbNode, cbNodes) => visitNodes(cbNode, cbNodes, data.modifiers) ||
visitNode(cbNode, data.asteriskToken) ||
visitNode(cbNode, data.name) ||
visitNode(cbNode, data.postfixToken) ||
visitNodes(cbNode, cbNodes, data.typeParameters) ||
visitNodes(cbNode, cbNodes, data.parameters) ||
visitNode(cbNode, data.type) ||
visitNode(cbNode, data.body),
[SyntaxKind.PropertySignature]: (data, cbNode, cbNodes) => visitNodes(cbNode, cbNodes, data.modifiers) ||
visitNode(cbNode, data.name) ||
visitNode(cbNode, data.postfixToken) ||
visitNode(cbNode, data.type) ||
visitNode(cbNode, data.initializer),
[SyntaxKind.PropertyDeclaration]: (data, cbNode, cbNodes) => visitNodes(cbNode, cbNodes, data.modifiers) ||
visitNode(cbNode, data.name) ||
visitNode(cbNode, data.postfixToken) ||
visitNode(cbNode, data.type) ||
visitNode(cbNode, data.initializer),
[SyntaxKind.ClassStaticBlockDeclaration]: (data, cbNode, cbNodes) => visitNodes(cbNode, cbNodes, data.modifiers) ||
visitNode(cbNode, data.body),
[SyntaxKind.BinaryExpression]: (data, cbNode, cbNodes) => visitNodes(cbNode, cbNodes, data.modifiers) ||
visitNode(cbNode, data.left) ||
visitNode(cbNode, data.type) ||
visitNode(cbNode, data.operatorToken) ||
visitNode(cbNode, data.right),
[SyntaxKind.PrefixUnaryExpression]: (data, cbNode, cbNodes) => visitNode(cbNode, data.operand),
[SyntaxKind.PostfixUnaryExpression]: (data, cbNode, cbNodes) => visitNode(cbNode, data.operand),
[SyntaxKind.YieldExpression]: (data, cbNode, cbNodes) => visitNode(cbNode, data.asteriskToken) ||
visitNode(cbNode, data.expression),
[SyntaxKind.ArrowFunction]: (data, cbNode, cbNodes) => visitNodes(cbNode, cbNodes, data.modifiers) ||
visitNodes(cbNode, cbNodes, data.typeParameters) ||
visitNodes(cbNode, cbNodes, data.parameters) ||
visitNode(cbNode, data.type) ||
visitNode(cbNode, data.equalsGreaterThanToken) ||
visitNode(cbNode, data.body),
[SyntaxKind.FunctionExpression]: (data, cbNode, cbNodes) => visitNodes(cbNode, cbNodes, data.modifiers) ||
visitNode(cbNode, data.asteriskToken) ||
visitNode(cbNode, data.name) ||
visitNodes(cbNode, cbNodes, data.typeParameters) ||
visitNodes(cbNode, cbNodes, data.parameters) ||
visitNode(cbNode, data.type) ||
visitNode(cbNode, data.body),
[SyntaxKind.AsExpression]: (data, cbNode, cbNodes) => visitNode(cbNode, data.expression) ||
visitNode(cbNode, data.type),
[SyntaxKind.SatisfiesExpression]: (data, cbNode, cbNodes) => visitNode(cbNode, data.expression) ||
visitNode(cbNode, data.type),
[SyntaxKind.ConditionalExpression]: (data, cbNode, cbNodes) => visitNode(cbNode, data.condition) ||
visitNode(cbNode, data.questionToken) ||
visitNode(cbNode, data.whenTrue) ||
visitNode(cbNode, data.colonToken) ||
visitNode(cbNode, data.whenFalse),
[SyntaxKind.PropertyAccessExpression]: (data, cbNode, cbNodes) => visitNode(cbNode, data.expression) ||
visitNode(cbNode, data.questionDotToken) ||
visitNode(cbNode, data.name),
[SyntaxKind.ElementAccessExpression]: (data, cbNode, cbNodes) => visitNode(cbNode, data.expression) ||
visitNode(cbNode, data.questionDotToken) ||
visitNode(cbNode, data.argumentExpression),
[SyntaxKind.CallExpression]: (data, cbNode, cbNodes) => visitNode(cbNode, data.expression) ||
visitNode(cbNode, data.questionDotToken) ||
visitNodes(cbNode, cbNodes, data.typeArguments) ||
visitNodes(cbNode, cbNodes, data.arguments),
[SyntaxKind.NewExpression]: (data, cbNode, cbNodes) => visitNode(cbNode, data.expression) ||
visitNodes(cbNode, cbNodes, data.typeArguments) ||
visitNodes(cbNode, cbNodes, data.arguments),
[SyntaxKind.MetaProperty]: (data, cbNode, cbNodes) => visitNode(cbNode, data.name),
[SyntaxKind.NonNullExpression]: (data, cbNode, cbNodes) => visitNode(cbNode, data.expression),
[SyntaxKind.SpreadElement]: (data, cbNode, cbNodes) => visitNode(cbNode, data.expression),
[SyntaxKind.TemplateExpression]: (data, cbNode, cbNodes) => visitNode(cbNode, data.head) ||
visitNodes(cbNode, cbNodes, data.templateSpans),
[SyntaxKind.TemplateSpan]: (data, cbNode, cbNodes) => visitNode(cbNode, data.expression) ||
visitNode(cbNode, data.literal),
[SyntaxKind.TaggedTemplateExpression]: (data, cbNode, cbNodes) => visitNode(cbNode, data.tag) ||
visitNode(cbNode, data.questionDotToken) ||
visitNodes(cbNode, cbNodes, data.typeArguments) ||
visitNode(cbNode, data.template),
[SyntaxKind.ParenthesizedExpression]: (data, cbNode, cbNodes) => visitNode(cbNode, data.expression),
[SyntaxKind.ArrayLiteralExpression]: (data, cbNode, cbNodes) => visitNodes(cbNode, cbNodes, data.elements),
[SyntaxKind.ObjectLiteralExpression]: (data, cbNode, cbNodes) => visitNodes(cbNode, cbNodes, data.properties),
[SyntaxKind.SpreadAssignment]: (data, cbNode, cbNodes) => visitNode(cbNode, data.expression),
[SyntaxKind.PropertyAssignment]: (data, cbNode, cbNodes) => visitNodes(cbNode, cbNodes, data.modifiers) ||
visitNode(cbNode, data.name) ||
visitNode(cbNode, data.postfixToken) ||
visitNode(cbNode, data.type) ||
visitNode(cbNode, data.initializer),
[SyntaxKind.ShorthandPropertyAssignment]: (data, cbNode, cbNodes) => visitNodes(cbNode, cbNodes, data.modifiers) ||
visitNode(cbNode, data.name) ||
visitNode(cbNode, data.postfixToken) ||
visitNode(cbNode, data.type) ||
visitNode(cbNode, data.equalsToken) ||
visitNode(cbNode, data.objectAssignmentInitializer),
[SyntaxKind.DeleteExpression]: (data, cbNode, cbNodes) => visitNode(cbNode, data.expression),
[SyntaxKind.TypeOfExpression]: (data, cbNode, cbNodes) => visitNode(cbNode, data.expression),
[SyntaxKind.VoidExpression]: (data, cbNode, cbNodes) => visitNode(cbNode, data.expression),
[SyntaxKind.AwaitExpression]: (data, cbNode, cbNodes) => visitNode(cbNode, data.expression),
[SyntaxKind.TypeAssertionExpression]: (data, cbNode, cbNodes) => visitNode(cbNode, data.type) ||
visitNode(cbNode, data.expression),
[SyntaxKind.UnionType]: (data, cbNode, cbNodes) => visitNodes(cbNode, cbNodes, data.types),
[SyntaxKind.IntersectionType]: (data, cbNode, cbNodes) => visitNodes(cbNode, cbNodes, data.types),
[SyntaxKind.ConditionalType]: (data, cbNode, cbNodes) => visitNode(cbNode, data.checkType) ||
visitNode(cbNode, data.extendsType) ||
visitNode(cbNode, data.trueType) ||
visitNode(cbNode, data.falseType),
[SyntaxKind.TypeOperator]: (data, cbNode, cbNodes) => visitNode(cbNode, data.type),
[SyntaxKind.InferType]: (data, cbNode, cbNodes) => visitNode(cbNode, data.typeParameter),
[SyntaxKind.ArrayType]: (data, cbNode, cbNodes) => visitNode(cbNode, data.elementType),
[SyntaxKind.IndexedAccessType]: (data, cbNode, cbNodes) => visitNode(cbNode, data.objectType) ||
visitNode(cbNode, data.indexType),
[SyntaxKind.TypeReference]: (data, cbNode, cbNodes) => visitNode(cbNode, data.typeName) ||
visitNodes(cbNode, cbNodes, data.typeArguments),
[SyntaxKind.ExpressionWithTypeArguments]: (data, cbNode, cbNodes) => visitNode(cbNode, data.expression) ||
visitNodes(cbNode, cbNodes, data.typeArguments),
[SyntaxKind.LiteralType]: (data, cbNode, cbNodes) => visitNode(cbNode, data.literal),
[SyntaxKind.TypePredicate]: (data, cbNode, cbNodes) => visitNode(cbNode, data.assertsModifier) ||
visitNode(cbNode, data.parameterName) ||
visitNode(cbNode, data.type),
[SyntaxKind.ImportAttribute]: (data, cbNode, cbNodes) => visitNode(cbNode, data.name) ||
visitNode(cbNode, data.value),
[SyntaxKind.ImportAttributes]: (data, cbNode, cbNodes) => visitNodes(cbNode, cbNodes, data.attributes),
[SyntaxKind.TypeQuery]: (data, cbNode, cbNodes) => visitNode(cbNode, data.exprName) ||
visitNodes(cbNode, cbNodes, data.typeArguments),
[SyntaxKind.MappedType]: (data, cbNode, cbNodes) => visitNode(cbNode, data.readonlyToken) ||
visitNode(cbNode, data.typeParameter) ||
visitNode(cbNode, data.nameType) ||
visitNode(cbNode, data.questionToken) ||
visitNode(cbNode, data.type) ||
visitNodes(cbNode, cbNodes, data.members),
[SyntaxKind.TypeLiteral]: (data, cbNode, cbNodes) => visitNodes(cbNode, cbNodes, data.members),
[SyntaxKind.TupleType]: (data, cbNode, cbNodes) => visitNodes(cbNode, cbNodes, data.elements),
[SyntaxKind.NamedTupleMember]: (data, cbNode, cbNodes) => visitNode(cbNode, data.dotDotDotToken) ||
visitNode(cbNode, data.name) ||
visitNode(cbNode, data.questionToken) ||
visitNode(cbNode, data.type),
[SyntaxKind.OptionalType]: (data, cbNode, cbNodes) => visitNode(cbNode, data.type),
[SyntaxKind.RestType]: (data, cbNode, cbNodes) => visitNode(cbNode, data.type),
[SyntaxKind.ParenthesizedType]: (data, cbNode, cbNodes) => visitNode(cbNode, data.type),
[SyntaxKind.FunctionType]: (data, cbNode, cbNodes) => visitNodes(cbNode, cbNodes, data.typeParameters) ||
visitNodes(cbNode, cbNodes, data.parameters) ||
visitNode(cbNode, data.type),
[SyntaxKind.ConstructorType]: (data, cbNode, cbNodes) => visitNodes(cbNode, cbNodes, data.modifiers) ||
visitNodes(cbNode, cbNodes, data.typeParameters) ||
visitNodes(cbNode, cbNodes, data.parameters) ||
visitNode(cbNode, data.type),
[SyntaxKind.TemplateLiteralType]: (data, cbNode, cbNodes) => visitNode(cbNode, data.head) ||
visitNodes(cbNode, cbNodes, data.templateSpans),
[SyntaxKind.TemplateLiteralTypeSpan]: (data, cbNode, cbNodes) => visitNode(cbNode, data.type) ||
visitNode(cbNode, data.literal),
[SyntaxKind.SyntheticExpression]: (data, cbNode, cbNodes) => visitNode(cbNode, data.tupleNameSource),
[SyntaxKind.PartiallyEmittedExpression]: (data, cbNode, cbNodes) => visitNode(cbNode, data.expression),
[SyntaxKind.JsxElement]: (data, cbNode, cbNodes) => visitNode(cbNode, data.openingElement) ||
visitNodes(cbNode, cbNodes, data.children) ||
visitNode(cbNode, data.closingElement),
[SyntaxKind.JsxAttributes]: (data, cbNode, cbNodes) => visitNodes(cbNode, cbNodes, data.properties),
[SyntaxKind.JsxNamespacedName]: (data, cbNode, cbNodes) => visitNode(cbNode, data.namespace) ||
visitNode(cbNode, data.name),
[SyntaxKind.JsxOpeningElement]: (data, cbNode, cbNodes) => visitNode(cbNode, data.tagName) ||
visitNodes(cbNode, cbNodes, data.typeArguments) ||
visitNode(cbNode, data.attributes),
[SyntaxKind.JsxSelfClosingElement]: (data, cbNode, cbNodes) => visitNode(cbNode, data.tagName) ||
visitNodes(cbNode, cbNodes, data.typeArguments) ||
visitNode(cbNode, data.attributes),
[SyntaxKind.JsxFragment]: (data, cbNode, cbNodes) => visitNode(cbNode, data.openingFragment) ||
visitNodes(cbNode, cbNodes, data.children) ||
visitNode(cbNode, data.closingFragment),
[SyntaxKind.JsxAttribute]: (data, cbNode, cbNodes) => visitNode(cbNode, data.name) ||
visitNode(cbNode, data.initializer),
[SyntaxKind.JsxSpreadAttribute]: (data, cbNode, cbNodes) => visitNode(cbNode, data.expression),
[SyntaxKind.JsxClosingElement]: (data, cbNode, cbNodes) => visitNode(cbNode, data.tagName),
[SyntaxKind.JsxExpression]: (data, cbNode, cbNodes) => visitNode(cbNode, data.dotDotDotToken) ||
visitNode(cbNode, data.expression),
[SyntaxKind.SyntaxList]: (data, cbNode, cbNodes) => visitNodes(cbNode, cbNodes, data.children),
[SyntaxKind.JSDoc]: (data, cbNode, cbNodes) => visitNodes(cbNode, cbNodes, data.comment) ||
visitNodes(cbNode, cbNodes, data.tags),
[SyntaxKind.JSDocTypeExpression]: (data, cbNode, cbNodes) => visitNode(cbNode, data.type),
[SyntaxKind.JSDocNonNullableType]: (data, cbNode, cbNodes) => visitNode(cbNode, data.type),
[SyntaxKind.JSDocNullableType]: (data, cbNode, cbNodes) => visitNode(cbNode, data.type),
[SyntaxKind.JSDocVariadicType]: (data, cbNode, cbNodes) => visitNode(cbNode, data.type),
[SyntaxKind.JSDocOptionalType]: (data, cbNode, cbNodes) => visitNode(cbNode, data.type),
[SyntaxKind.JSDocTypeTag]: (data, cbNode, cbNodes) => visitNode(cbNode, data.tagName) ||
visitNode(cbNode, data.typeExpression) ||
visitNodes(cbNode, cbNodes, data.comment),
[SyntaxKind.JSDocUnknownTag]: (data, cbNode, cbNodes) => visitNode(cbNode, data.tagName) ||
visitNodes(cbNode, cbNodes, data.comment),
[SyntaxKind.JSDocTemplateTag]: (data, cbNode, cbNodes) => visitNode(cbNode, data.tagName) ||
visitNode(cbNode, data.constraint) ||
visitNodes(cbNode, cbNodes, data.typeParameters) ||
visitNodes(cbNode, cbNodes, data.comment),
[SyntaxKind.JSDocReturnTag]: (data, cbNode, cbNodes) => visitNode(cbNode, data.tagName) ||
visitNode(cbNode, data.typeExpression) ||
visitNodes(cbNode, cbNodes, data.comment),
[SyntaxKind.JSDocPublicTag]: (data, cbNode, cbNodes) => visitNode(cbNode, data.tagName) ||
visitNodes(cbNode, cbNodes, data.comment),
[SyntaxKind.JSDocPrivateTag]: (data, cbNode, cbNodes) => visitNode(cbNode, data.tagName) ||
visitNodes(cbNode, cbNodes, data.comment),
[SyntaxKind.JSDocProtectedTag]: (data, cbNode, cbNodes) => visitNode(cbNode, data.tagName) ||
visitNodes(cbNode, cbNodes, data.comment),
[SyntaxKind.JSDocReadonlyTag]: (data, cbNode, cbNodes) => visitNode(cbNode, data.tagName) ||
visitNodes(cbNode, cbNodes, data.comment),
[SyntaxKind.JSDocOverrideTag]: (data, cbNode, cbNodes) => visitNode(cbNode, data.tagName) ||
visitNodes(cbNode, cbNodes, data.comment),
[SyntaxKind.JSDocDeprecatedTag]: (data, cbNode, cbNodes) => visitNode(cbNode, data.tagName) ||
visitNodes(cbNode, cbNodes, data.comment),
[SyntaxKind.JSDocSeeTag]: (data, cbNode, cbNodes) => visitNode(cbNode, data.tagName) ||
visitNode(cbNode, data.nameExpression) ||
visitNodes(cbNode, cbNodes, data.comment),
[SyntaxKind.JSDocImplementsTag]: (data, cbNode, cbNodes) => visitNode(cbNode, data.tagName) ||
visitNode(cbNode, data.className) ||
visitNodes(cbNode, cbNodes, data.comment),
[SyntaxKind.JSDocAugmentsTag]: (data, cbNode, cbNodes) => visitNode(cbNode, data.tagName) ||
visitNode(cbNode, data.className) ||
visitNodes(cbNode, cbNodes, data.comment),
[SyntaxKind.JSDocSatisfiesTag]: (data, cbNode, cbNodes) => visitNode(cbNode, data.tagName) ||
visitNode(cbNode, data.typeExpression) ||
visitNodes(cbNode, cbNodes, data.comment),
[SyntaxKind.JSDocThrowsTag]: (data, cbNode, cbNodes) => visitNode(cbNode, data.tagName) ||
visitNode(cbNode, data.typeExpression) ||
visitNodes(cbNode, cbNodes, data.comment),
[SyntaxKind.JSDocThisTag]: (data, cbNode, cbNodes) => visitNode(cbNode, data.tagName) ||
visitNode(cbNode, data.typeExpression) ||
visitNodes(cbNode, cbNodes, data.comment),
[SyntaxKind.JSDocImportTag]: (data, cbNode, cbNodes) => visitNode(cbNode, data.tagName) ||
visitNode(cbNode, data.importClause) ||
visitNode(cbNode, data.moduleSpecifier) ||
visitNode(cbNode, data.attributes) ||
visitNodes(cbNode, cbNodes, data.comment),
[SyntaxKind.JSDocCallbackTag]: (data, cbNode, cbNodes) => visitNode(cbNode, data.tagName) ||
visitNode(cbNode, data.typeExpression) ||
visitNode(cbNode, data.name) ||
visitNodes(cbNode, cbNodes, data.comment),
[SyntaxKind.JSDocOverloadTag]: (data, cbNode, cbNodes) => visitNode(cbNode, data.tagName) ||
visitNode(cbNode, data.typeExpression) ||
visitNodes(cbNode, cbNodes, data.comment),
[SyntaxKind.JSDocTypedefTag]: (data, cbNode, cbNodes) => visitNode(cbNode, data.tagName) ||
visitNode(cbNode, data.typeExpression) ||
visitNode(cbNode, data.name) ||
visitNodes(cbNode, cbNodes, data.comment),
[SyntaxKind.JSDocSignature]: (data, cbNode, cbNodes) => visitNodes(cbNode, cbNodes, data.typeParameters) ||
visitNodes(cbNode, cbNodes, data.parameters) ||
visitNode(cbNode, data.type),
[SyntaxKind.JSDocNameReference]: (data, cbNode, cbNodes) => visitNode(cbNode, data.name),
[SyntaxKind.ModuleDeclaration]: (data, cbNode, cbNodes) => visitNodes(cbNode, cbNodes, data.modifiers) ||
visitNode(cbNode, data.name) ||
visitNode(cbNode, data.body),
[SyntaxKind.ImportEqualsDeclaration]: (data, cbNode, cbNodes) => visitNodes(cbNode, cbNodes, data.modifiers) ||
visitNode(cbNode, data.name) ||
visitNode(cbNode, data.moduleReference),
[SyntaxKind.ExportDeclaration]: (data, cbNode, cbNodes) => visitNodes(cbNode, cbNodes, data.modifiers) ||
visitNode(cbNode, data.exportClause) ||
visitNode(cbNode, data.moduleSpecifier) ||
visitNode(cbNode, data.attributes),
[SyntaxKind.ImportType]: (data, cbNode, cbNodes) => visitNode(cbNode, data.argument) ||
visitNode(cbNode, data.attributes) ||
visitNode(cbNode, data.qualifier) ||
visitNodes(cbNode, cbNodes, data.typeArguments),
[SyntaxKind.ImportClause]: (data, cbNode, cbNodes) => visitNode(cbNode, data.name) ||
visitNode(cbNode, data.namedBindings),
[SyntaxKind.ImportSpecifier]: (data, cbNode, cbNodes) => visitNode(cbNode, data.propertyName) ||
visitNode(cbNode, data.name),
[SyntaxKind.JSDocLink]: (data, cbNode, cbNodes) => visitNode(cbNode, data.name),
[SyntaxKind.JSDocLinkPlain]: (data, cbNode, cbNodes) => visitNode(cbNode, data.name),
[SyntaxKind.JSDocLinkCode]: (data, cbNode, cbNodes) => visitNode(cbNode, data.name),
[SyntaxKind.TypeParameter]: (data, cbNode, cbNodes) => visitNodes(cbNode, cbNodes, data.modifiers) ||
visitNode(cbNode, data.name) ||
visitNode(cbNode, data.constraint) ||
visitNode(cbNode, data.expression) ||
visitNode(cbNode, data.defaultType),
[SyntaxKind.SyntheticReferenceExpression]: (data, cbNode, cbNodes) => visitNode(cbNode, data.expression) ||
visitNode(cbNode, data.thisArg),
[SyntaxKind.JSDocTypeLiteral]: (data, cbNode, cbNodes) => visitNodes(cbNode, cbNodes, data.jsdocPropertyTags),
[SyntaxKind.ForInStatement]: (data, cbNode, cbNodes) => visitNode(cbNode, data.awaitModifier) ||
visitNode(cbNode, data.initializer) ||
visitNode(cbNode, data.expression) ||
visitNode(cbNode, data.statement),
[SyntaxKind.ForOfStatement]: (data, cbNode, cbNodes) => visitNode(cbNode, data.awaitModifier) ||
visitNode(cbNode, data.initializer) ||
visitNode(cbNode, data.expression) ||
visitNode(cbNode, data.statement),
[SyntaxKind.CaseClause]: (data, cbNode, cbNodes) => visitNode(cbNode, data.expression) ||
visitNodes(cbNode, cbNodes, data.statements),
[SyntaxKind.DefaultClause]: (data, cbNode, cbNodes) => visitNode(cbNode, data.expression) ||
visitNodes(cbNode, cbNodes, data.statements),
[SyntaxKind.ObjectBindingPattern]: (data, cbNode, cbNodes) => visitNodes(cbNode, cbNodes, data.elements),
[SyntaxKind.ArrayBindingPattern]: (data, cbNode, cbNodes) => visitNodes(cbNode, cbNodes, data.elements),
[SyntaxKind.JSDocParameterTag]: forEachChildOfJSDocParameterTag,
[SyntaxKind.JSDocPropertyTag]: forEachChildOfJSDocPropertyTag,
[SyntaxKind.SourceFile]: (data, cbNode, cbNodes) => visitNodes(cbNode, cbNodes, data.statements) ||
visitNode(cbNode, data.endOfFileToken),
};
function visitNode(cbNode, node) {
return node ? cbNode(node) : undefined;
}
function visitNodes(cbNode, cbNodes, nodes) {
if (!nodes)
return undefined;
if (cbNodes)
return cbNodes(nodes);
for (const node of nodes) {
const result = cbNode(node);
if (result)
return result;
}
return undefined;
}
export function createToken(kind) {
return new NodeObject(kind, undefined);
}
export function createIdentifier(text) {
return new NodeObject(SyntaxKind.Identifier, {
text,
});
}
export function createPrivateIdentifier(text) {
return new NodeObject(SyntaxKind.PrivateIdentifier, {
text,
});
}
export function createQualifiedName(left, right) {
return new NodeObject(SyntaxKind.QualifiedName, {
left,
right,
});
}
export function createComputedPropertyName(expression) {
return new NodeObject(SyntaxKind.ComputedPropertyName, {
expression,
});
}
export function createDecorator(expression) {
return new NodeObject(SyntaxKind.Decorator, {
expression,
});
}
export function createEmptyStatement() {
return new NodeObject(SyntaxKind.EmptyStatement, undefined);
}
export function createIfStatement(expression, thenStatement, elseStatement) {
return new NodeObject(SyntaxKind.IfStatement, {
expression,
thenStatement,
elseStatement,
});
}
export function createDoStatement(statement, expression) {
return new NodeObject(SyntaxKind.DoStatement, {
statement,
expression,
});
}
export function createWhileStatement(expression, statement) {
return new NodeObject(SyntaxKind.WhileStatement, {
expression,
statement,
});
}
export function createForStatement(initializer, condition, incrementor, statement) {
return new NodeObject(SyntaxKind.ForStatement, {
initializer,
condition,
incrementor,
statement,
});
}
export function createBreakStatement(label) {
return new NodeObject(SyntaxKind.BreakStatement, {
label,
});
}
export function createContinueStatement(label) {
return new NodeObject(SyntaxKind.ContinueStatement, {
label,
});
}
export function createReturnStatement(expression) {
return new NodeObject(SyntaxKind.ReturnStatement, {
expression,
});
}
export function createWithStatement(expression, statement) {
return new NodeObject(SyntaxKind.WithStatement, {
expression,
statement,
});
}
export function createSwitchStatement(expression, caseBlock) {
return new NodeObject(SyntaxKind.SwitchStatement, {
expression,
caseBlock,
});
}
export function createCaseBlock(clauses) {
return new NodeObject(SyntaxKind.CaseBlock, {
clauses: createNodeArray(clauses),
});
}
export function createThrowStatement(expression) {
return new NodeObject(SyntaxKind.ThrowStatement, {
expression,
});
}
export function createTryStatement(tryBlock, catchClause, finallyBlock) {
return new NodeObject(SyntaxKind.TryStatement, {
tryBlock,
catchClause,
finallyBlock,
});
}
export function createCatchClause(variableDeclaration, block) {
return new NodeObject(SyntaxKind.CatchClause, {
variableDeclaration,
block,
});
}
export function createDebuggerStatement() {
return new NodeObject(SyntaxKind.DebuggerStatement, undefined);
}
export function createLabeledStatement(label, statement) {
return new NodeObject(SyntaxKind.LabeledStatement, {
label,
statement,
});
}
export function createExpressionStatement(expression) {
return new NodeObject(SyntaxKind.ExpressionStatement, {
expression,
});
}
export function createBlock(statements, multiLine) {
return new NodeObject(SyntaxKind.Block, {
statements: createNodeArray(statements),
multiLine,
});
}
export function createVariableStatement(modifiers, declarationList) {
return new NodeObject(SyntaxKind.VariableStatement, {
modifiers: modifiers ? createNodeArray(modifiers) : undefined,
declarationList,
});
}
export function createVariableDeclaration(name, exclamationToken, type, initializer) {
return new NodeObject(SyntaxKind.VariableDeclaration, {
name,
exclamationToken,
type,
initializer,
});
}
export function createVariableDeclarationList(declarations, flags) {
const node = new NodeObject(SyntaxKind.VariableDeclarationList, {
declarations: createNodeArray(declarations),
});
node.flags = flags;
return node;
}
export function createParameterDeclaration(modifiers, dotDotDotToken, name, questionToken, type, initializer) {
return new NodeObject(SyntaxKind.Parameter, {
modifiers: modifiers ? createNodeArray(modifiers) : undefined,
dotDotDotToken,
name,
questionToken,
type,
initializer,
});
}
export function createBindingElement(dotDotDotToken, propertyName, name, initializer) {
return new NodeObject(SyntaxKind.BindingElement, {
dotDotDotToken,
propertyName,
name,
initializer,
});
}
export function createMissingDeclaration(modifiers) {
return new NodeObject(SyntaxKind.MissingDeclaration, {
modifiers: modifiers ? createNodeArray(modifiers) : undefined,
});
}
export function createFunctionDeclaration(modifiers, asteriskToken, name, typeParameters, parameters, type, body) {
return new NodeObject(SyntaxKind.FunctionDeclaration, {
modifiers: modifiers ? createNodeArray(modifiers) : undefined,
asteriskToken,
name,
typeParameters: typeParameters ? createNodeArray(typeParameters) : undefined,
parameters: createNodeArray(parameters),
type,
body,
});
}
export function createClassDeclaration(modifiers, name, typeParameters, heritageClauses, members) {
return new NodeObject(SyntaxKind.ClassDeclaration, {
modifiers: modifiers ? createNodeArray(modifiers) : undefined,
name,
typeParameters: typeParameters ? createNodeArray(typeParameters) : undefined,
heritageClauses: heritageClauses ? createNodeArray(heritageClauses) : undefined,
members: createNodeArray(members),
});
}
export function createClassExpression(modifiers, name, typeParameters, heritageClauses, members) {
return new NodeObject(SyntaxKind.ClassExpression, {
modifiers: modifiers ? createNodeArray(modifiers) : undefined,
name,
typeParameters: typeParameters ? createNodeArray(typeParameters) : undefined,
heritageClauses: heritageClauses ? createNodeArray(heritageClauses) : undefined,
members: createNodeArray(members),
});
}
export function createHeritageClause(token, types) {
return new NodeObject(SyntaxKind.HeritageClause, {
token,
types: createNodeArray(types),
});
}
export function createInterfaceDeclaration(modifiers, name, typeParameters, heritageClauses, members) {
return new NodeObject(SyntaxKind.InterfaceDeclaration, {
modifiers: modifiers ? createNodeArray(modifiers) : undefined,
name,
typeParameters: typeParameters ? createNodeArray(typeParameters) : undefined,
heritageClauses: heritageClauses ? createNodeArray(heritageClauses) : undefined,
members: createNodeArray(members),
});
}
export function createTypeAliasDeclaration(modifiers, name, typeParameters, type) {
return new NodeObject(SyntaxKind.TypeAliasDeclaration, {
modifiers: modifiers ? createNodeArray(modifiers) : undefined,
name,
typeParameters: typeParameters ? createNodeArray(typeParameters) : undefined,
type,
});
}
export function createEnumMember(name, initializer) {
return new NodeObject(SyntaxKind.EnumMember, {
name,
initializer,
});
}
export function createEnumDeclaration(modifiers, name, members) {
return new NodeObject(SyntaxKind.EnumDeclaration, {
modifiers: modifiers ? createNodeArray(modifiers) : undefined,
name,
members: createNodeArray(members),
});
}
export function createModuleBlock(statements) {
return new NodeObject(SyntaxKind.ModuleBlock, {
statements: createNodeArray(statements),
});
}
export function createNotEmittedStatement() {
return new NodeObject(SyntaxKind.NotEmittedStatement, undefined);
}
export function createNotEmittedTypeElement() {
return new NodeObject(SyntaxKind.NotEmittedTypeElement, undefined);
}
export function createImportDeclaration(modifiers, importClause, moduleSpecifier, attributes) {
return new NodeObject(SyntaxKind.ImportDeclaration, {
modifiers: modifiers ? createNodeArray(modifiers) : undefined,
importClause,
moduleSpecifier,
attributes,
});
}
export function createExternalModuleReference(expression) {
return new NodeObject(SyntaxKind.ExternalModuleReference, {
expression,
});
}
export function createNamespaceImport(name) {
return new NodeObject(SyntaxKind.NamespaceImport, {
name,
});
}
export function createNamedImports(elements) {
return new NodeObject(SyntaxKind.NamedImports, {
elements: createNodeArray(elements),
});
}
export function createExportAssignment(modifiers, isExportEquals = false, type, expression) {
return new NodeObject(SyntaxKind.ExportAssignment, {
modifiers: modifiers ? createNodeArray(modifiers) : undefined,
isExportEquals,
type,
expression,
});
}
export function createNamespaceExportDeclaration(modifiers, name) {
return new NodeObject(SyntaxKind.NamespaceExportDeclaration, {
modifiers: modifiers ? createNodeArray(modifiers) : undefined,
name,
});
}
export function createNamespaceExport(name) {
return new NodeObject(SyntaxKind.NamespaceExport, {
name,
});
}
export function createNamedExports(elements) {
return new NodeObject(SyntaxKind.NamedExports, {
elements: createNodeArray(elements),
});
}
export function createExportSpecifier(isTypeOnly = false, propertyName, name) {
return new NodeObject(SyntaxKind.ExportSpecifier, {
isTypeOnly,
propertyName,
name,
});
}
export function createCallSignatureDeclaration(typeParameters, parameters, type) {
return new NodeObject(SyntaxKind.CallSignature, {
typeParameters: typeParameters ? createNodeArray(typeParameters) : undefined,
parameters: createNodeArray(parameters),
type,
});
}
export function createConstructSignatureDeclaration(typeParameters, parameters, type) {
return new NodeObject(SyntaxKind.ConstructSignature, {
typeParameters: typeParameters ? createNodeArray(typeParameters) : undefined,
parameters: createNodeArray(parameters),
type,
});
}
export function createConstructorDeclaration(modifiers, typeParameters, parameters, type, body) {
return new NodeObject(SyntaxKind.Constructor, {
modifiers: modifiers ? createNodeArray(modifiers) : undefined,
typeParameters: typeParameters ? createNodeArray(typeParameters) : undefined,
parameters: createNodeArray(parameters),
type,
body,
});
}
export function createGetAccessorDeclaration(modifiers, name, typeParameters, parameters, type, body) {
return new NodeObject(SyntaxKind.GetAccessor, {
modifiers: modifiers ? createNodeArray(modifiers) : undefined,
name,
typeParameters: typeParameters ? createNodeArray(typeParameters) : undefined,
parameters: createNodeArray(parameters),
type,
body,
});
}
export function createSetAccessorDeclaration(modifiers, name, typeParameters, parameters, type, body) {
return new NodeObject(SyntaxKind.SetAccessor, {
modifiers: modifiers ? createNodeArray(modifiers) : undefined,
name,
typeParameters: typeParameters ? createNodeArray(typeParameters) : undefined,
parameters: createNodeArray(parameters),
type,
body,
});
}
export function createIndexSignatureDeclaration(modifiers, parameters, type) {
return new NodeObject(SyntaxKind.IndexSignature, {
modifiers: modifiers ? createNodeArray(modifiers) : undefined,
parameters: createNodeArray(parameters),
type,
});
}
export function createMethodSignatureDeclaration(modifiers, name, postfixToken, typeParameters, parameters, type) {
return new NodeObject(SyntaxKind.MethodSignature, {
modifiers: modifiers ? createNodeArray(modifiers) : undefined,
name,
postfixToken,
typeParameters: typeParameters ? createNodeArray(typeParameters) : undefined,
parameters: createNodeArray(parameters),
type,
});
}
export function createMethodDeclaration(modifiers, asteriskToken, name, postfixToken, typeParameters, parameters, type, body) {
return new NodeObject(SyntaxKind.MethodDeclaration, {
modifiers: modifiers ? createNodeArray(modifiers) : undefined,
asteriskToken,
name,
postfixToken,
typeParameters: typeParameters ? createNodeArray(typeParameters) : undefined,
parameters: createNodeArray(parameters),
type,
body,
});
}
export function createPropertySignatureDeclaration(modifiers, name, postfixToken, type, initializer) {
return new NodeObject(SyntaxKind.PropertySignature, {
modifiers: modifiers ? createNodeArray(modifiers) : undefined,
name,
postfixToken,
type,
initializer,
});
}
export function createPropertyDeclaration(modifiers, name, postfixToken, type, initializer) {
return new NodeObject(SyntaxKind.PropertyDeclaration, {
modifiers: modifiers ? createNodeArray(modifiers) : undefined,
name,
postfixToken,
type,
initializer,
});
}
export function createSemicolonClassElement() {
return new NodeObject(SyntaxKind.SemicolonClassElement, undefined);
}
export function createClassStaticBlockDeclaration(modifiers, body) {
return new NodeObject(SyntaxKind.ClassStaticBlockDeclaration, {
modifiers: modifiers ? createNodeArray(modifiers) : undefined,
body,
});
}
export function createOmittedExpression() {
return new NodeObject(SyntaxKind.OmittedExpression, undefined);
}
export function createKeywordExpression(kind) {
return new NodeObject(kind, undefined);
}
export function createStringLiteral(text, tokenFlags) {
return new NodeObject(SyntaxKind.StringLiteral, {
text,
tokenFlags,
});
}
export function createNumericLiteral(text, tokenFlags) {
return new NodeObject(SyntaxKind.NumericLiteral, {
text,
tokenFlags,
});
}
export function createBigIntLiteral(text, tokenFlags) {
return new NodeObject(SyntaxKind.BigIntLiteral, {
text,
tokenFlags,
});
}
export function createRegularExpressionLiteral(text, tokenFlags) {
return new NodeObject(SyntaxKind.RegularExpressionLiteral, {
text,
tokenFlags,
});
}
export function createNoSubstitutionTemplateLiteral(text, templateFlags) {
return new NodeObject(SyntaxKind.NoSubstitutionTemplateLiteral, {
text,
templateFlags,
});
}
export function createBinaryExpression(modifiers, left, type, operatorToken, right) {
return new NodeObject(SyntaxKind.BinaryExpression, {
modifiers: modifiers ? createNodeArray(modifiers) : undefined,
left,
type,
operatorToken,
right,
});
}
export function createPrefixUnaryExpression(operator, operand) {
return new NodeObject(SyntaxKind.PrefixUnaryExpression, {
operator,
operand,
});
}
export function createPostfixUnaryExpression(operand, operator) {
return new NodeObject(SyntaxKind.PostfixUnaryExpression, {
operand,
operator,
});
}
export function createYieldExpression(asteriskToken, expression) {
return new NodeObject(SyntaxKind.YieldExpression, {
asteriskToken,
expression,
});
}
export function createArrowFunction(modifiers, typeParameters, parameters, type, equalsGreaterThanToken, body) {
return new NodeObject(SyntaxKind.ArrowFunction, {
modifiers: modifiers ? createNodeArray(modifiers) : undefined,
typeParameters: typeParameters ? createNodeArray(typeParameters) : undefined,
parameters: createNodeArray(parameters),
type,
equalsGreaterThanToken,
body,
});
}
export function createFunctionExpression(modifiers, asteriskToken, name, typeParameters, parameters, type, body) {
return new NodeObject(SyntaxKind.FunctionExpression, {
modifiers: modifiers ? createNodeArray(modifiers) : undefined,
asteriskToken,
name,
typeParameters: typeParameters ? createNodeArray(typeParameters) : undefined,
parameters: createNodeArray(parameters),
type,
body,
});
}
export function createAsExpression(expression, type) {
return new NodeObject(SyntaxKind.AsExpression, {
expression,
type,
});
}
export function createSatisfiesExpression(expression, type) {
return new NodeObject(SyntaxKind.SatisfiesExpression, {
expression,
type,
});
}
export function createConditionalExpression(condition, questionToken, whenTrue, colonToken, whenFalse) {
return new NodeObject(SyntaxKind.ConditionalExpression, {
condition,
questionToken,
whenTrue,
colonToken,
whenFalse,
});
}
export function createPropertyAccessExpression(expression, questionDotToken, name, flags) {
const node = new NodeObject(SyntaxKind.PropertyAccessExpression, {
expression,
questionDotToken,
name,
});
node.flags = flags;
return node;
}
export function createElementAccessExpression(expression, questionDotToken, argumentExpression, flags) {
const node = new NodeObject(SyntaxKind.ElementAccessExpression, {
expression,
questionDotToken,
argumentExpression,
});
node.flags = flags;
return node;
}
export function createCallExpression(expression, questionDotToken, typeArguments, arguments_, flags) {
const node = new NodeObject(SyntaxKind.CallExpression, {
expression,
questionDotToken,
typeArguments: typeArguments ? createNodeArray(typeArguments) : undefined,
arguments: createNodeArray(arguments_),
});
node.flags = flags;
return node;
}
export function createNewExpression(expression, typeArguments, arguments_) {
return new NodeObject(SyntaxKind.NewExpression, {
expression,
typeArguments: typeArguments ? createNodeArray(typeArguments) : undefined,
arguments: arguments_ ? createNodeArray(arguments_) : undefined,
});
}
export function createMetaProperty(keywordToken, name) {
return new NodeObject(SyntaxKind.MetaProperty, {
keywordToken,
name,
});
}
export function createNonNullExpression(expression, flags) {
const node = new NodeObject(SyntaxKind.NonNullExpression, {
expression,
});
node.flags = flags;
return node;
}
export function createSpreadElement(expression) {
return new NodeObject(SyntaxKind.SpreadElement, {
expression,
});
}
export function createTemplateExpression(head, templateSpans) {
return new NodeObject(SyntaxKind.TemplateExpression, {
head,
templateSpans: createNodeArray(templateSpans),
});
}
export function createTemplateSpan(expression, literal) {
return new NodeObject(SyntaxKind.TemplateSpan, {
expression,
literal,
});
}
export function createTaggedTemplateExpression(tag, questionDotToken, typeArguments, template, flags) {
const node = new NodeObject(SyntaxKind.TaggedTemplateExpression, {
tag,
questionDotToken,
typeArguments: typeArguments ? createNodeArray(typeArguments) : undefined,
template,
});
node.flags = flags;
return node;
}
export function createParenthesizedExpression(expression) {
return new NodeObject(SyntaxKind.ParenthesizedExpression, {
expression,
});
}
export function createArrayLiteralExpression(elements, multiLine) {
return new NodeObject(SyntaxKind.ArrayLiteralExpression, {
elements: createNodeArray(elements),
multiLine,
});
}
export function createObjectLiteralExpression(properties, multiLine) {
return new NodeObject(SyntaxKind.ObjectLiteralExpression, {
properties: createNodeArray(properties),
multiLine,
});
}
export function createSpreadAssignment(expression) {
return new NodeObject(SyntaxKind.SpreadAssignment, {
expression,
});
}
export function createPropertyAssignment(modifiers, name, postfixToken, type, initializer) {
return new NodeObject(SyntaxKind.PropertyAssignment, {
modifiers: modifiers ? createNodeArray(modifiers) : undefined,
name,
postfixToken,
type,
initializer,
});
}
export function createShorthandPropertyAssignment(modifiers, name, postfixToken, type, equalsToken, objectAssignmentInitializer) {
return new NodeObject(SyntaxKind.ShorthandPropertyAssignment, {
modifiers: modifiers ? createNodeArray(modifiers) : undefined,
name,
postfixToken,
type,
equalsToken,
objectAssignmentInitializer,
});
}
export function createDeleteExpression(expression) {
return new NodeObject(SyntaxKind.DeleteExpression, {
expression,
});
}
export function createTypeOfExpression(expression) {
return new NodeObject(SyntaxKind.TypeOfExpression, {
expression,
});
}
export function createVoidExpression(expression) {
return new NodeObject(SyntaxKind.VoidExpression, {
expression,
});
}
export function createAwaitExpression(expression) {
return new NodeObject(SyntaxKind.AwaitExpression, {
expression,
});
}
export function createTypeAssertion(type, expression) {
return new NodeObject(SyntaxKind.TypeAssertionExpression, {
type,
expression,
});
}
export function createKeywordTypeNode(kind) {
return new NodeObject(kind, undefined);
}
export function createUnionTypeNode(types) {
return new NodeObject(SyntaxKind.UnionType, {
types: createNodeArray(types),
});
}
export function createIntersectionTypeNode(types) {
return new NodeObject(SyntaxKind.IntersectionType, {
types: createNodeArray(types),
});
}
export function createConditionalTypeNode(checkType, extendsType, trueType, falseType) {
return new NodeObject(SyntaxKind.ConditionalType, {
checkType,
extendsType,
trueType,
falseType,
});
}
export function createTypeOperatorNode(operator, type) {
return new NodeObject(SyntaxKind.TypeOperator, {
operator,
type,
});
}
export function createInferTypeNode(typeParameter) {
return new NodeObject(SyntaxKind.InferType, {
typeParameter,
});
}
export function createArrayTypeNode(elementType) {
return new NodeObject(SyntaxKind.ArrayType, {
elementType,
});
}
export function createIndexedAccessTypeNode(objectType, indexType) {
return new NodeObject(SyntaxKind.IndexedAccessType, {
objectType,
indexType,
});
}
export function createTypeReferenceNode(typeName, typeArguments) {
return new NodeObject(SyntaxKind.TypeReference, {
typeName,
typeArguments: typeArguments ? createNodeArray(typeArguments) : undefined,
});
}
export function createExpressionWithTypeArguments(expression, typeArguments) {
return new NodeObject(SyntaxKind.ExpressionWithTypeArguments, {
expression,
typeArguments: typeArguments ? createNodeArray(typeArguments) : undefined,
});
}
export function createLiteralTypeNode(literal) {
return new NodeObject(SyntaxKind.LiteralType, {
literal,
});
}
export function createThisTypeNode() {
return new NodeObject(SyntaxKind.ThisType, undefined);
}
export function createTypePredicateNode(assertsModifier, parameterName, type) {
return new NodeObject(SyntaxKind.TypePredicate, {
assertsModifier,
parameterName,
type,
});
}
export function createImportAttribute(name, value) {
return new NodeObject(SyntaxKind.ImportAttribute, {
name,
value,
});
}
export function createImportAttributes(token, attributes, multiLine) {
return new NodeObject(SyntaxKind.ImportAttributes, {
token,
attributes: createNodeArray(attributes),
multiLine,
});
}
export function createTypeQueryNode(exprName, typeArguments) {
return new NodeObject(SyntaxKind.TypeQuery, {
exprName,
typeArguments: typeArguments ? createNodeArray(typeArguments) : undefined,
});
}
export function createMappedTypeNode(readonlyToken, typeParameter, nameType, questionToken, type, members) {
return new NodeObject(SyntaxKind.MappedType, {
readonlyToken,
typeParameter,
nameType,
questionToken,
type,
members: members ? createNodeArray(members) : undefined,
});
}
export function createTypeLiteralNode(members) {
return new NodeObject(SyntaxKind.TypeLiteral, {
members: createNodeArray(members),
});
}
export function createTupleTypeNode(elements) {
return new NodeObject(SyntaxKind.TupleType, {
elements: createNodeArray(elements),
});
}
export function createNamedTupleMember(dotDotDotToken, name, questionToken, type) {
return new NodeObject(SyntaxKind.NamedTupleMember, {
dotDotDotToken,
name,
questionToken,
type,
});
}
export function createOptionalTypeNode(type) {
return new NodeObject(SyntaxKind.OptionalType, {
type,
});
}
export function createRestTypeNode(type) {
return new NodeObject(SyntaxKind.RestType, {
type,
});
}
export function createParenthesizedTypeNode(type) {
return new NodeObject(SyntaxKind.ParenthesizedType, {
type,
});
}
export function createFunctionTypeNode(typeParameters, parameters, type) {
return new NodeObject(SyntaxKind.FunctionType, {
typeParameters: typeParameters ? createNodeArray(typeParameters) : undefined,
parameters: createNodeArray(parameters),
type,
});
}
export function createConstructorTypeNode(modifiers, typeParameters, parameters, type) {
return new NodeObject(SyntaxKind.ConstructorType, {
modifiers: modifiers ? createNodeArray(modifiers) : undefined,
typeParameters: typeParameters ? createNodeArray(typeParameters) : undefined,
parameters: createNodeArray(parameters),
type,
});
}
export function createTemplateHead(text, rawText, templateFlags) {
return new NodeObject(SyntaxKind.TemplateHead, {
text,
rawText,
templateFlags,
});
}
export function createTemplateMiddle(text, rawText, templateFlags) {
return new NodeObject(SyntaxKind.TemplateMiddle, {
text,
rawText,
templateFlags,
});
}
export function createTemplateTail(text, rawText, templateFlags) {
return new NodeObject(SyntaxKind.TemplateTail, {
text,
rawText,
templateFlags,
});
}
export function createTemplateLiteralTypeNode(head, templateSpans) {
return new NodeObject(SyntaxKind.TemplateLiteralType, {
head,
templateSpans: createNodeArray(templateSpans),
});
}
export function createTemplateLiteralTypeSpan(type, literal) {
return new NodeObject(SyntaxKind.TemplateLiteralTypeSpan, {
type,
literal,
});
}
export function createSyntheticExpression(type, isSpread, tupleNameSource) {
return new NodeObject(SyntaxKind.SyntheticExpression, {
type,
isSpread,
tupleNameSource,
});
}
export function createPartiallyEmittedExpression(expression) {
return new NodeObject(SyntaxKind.PartiallyEmittedExpression, {
expression,
});
}
export function createJsxElement(openingElement, children, closingElement) {
return new NodeObject(SyntaxKind.JsxElement, {
openingElement,
children: createNodeArray(children),
closingElement,
});
}
export function createJsxAttributes(properties) {
return new NodeObject(SyntaxKind.JsxAttributes, {
properties: createNodeArray(properties),
});
}
export function createJsxNamespacedName(namespace, name) {
return new NodeObject(SyntaxKind.JsxNamespacedName, {
namespace,
name,
});
}
export function createJsxOpeningElement(tagName, typeArguments, attributes) {
return new NodeObject(SyntaxKind.JsxOpeningElement, {
tagName,
typeArguments: typeArguments ? createNodeArray(typeArguments) : undefined,
attributes,
});
}
export function createJsxSelfClosingElement(tagName, typeArguments, attributes) {
return new NodeObject(SyntaxKind.JsxSelfClosingElement, {
tagName,
typeArguments: typeArguments ? createNodeArray(typeArguments) : undefined,
attributes,
});
}
export function createJsxFragment(openingFragment, children, closingFragment) {
return new NodeObject(SyntaxKind.JsxFragment, {
openingFragment,
children: createNodeArray(children),
closingFragment,
});
}
export function createJsxOpeningFragment() {
return new NodeObject(SyntaxKind.JsxOpeningFragment, undefined);
}
export function createJsxClosingFragment() {
return new NodeObject(SyntaxKind.JsxClosingFragment, undefined);
}
export function createJsxAttribute(name, initializer) {
return new NodeObject(SyntaxKind.JsxAttribute, {
name,
initializer,
});
}
export function createJsxSpreadAttribute(expression) {
return new NodeObject(SyntaxKind.JsxSpreadAttribute, {
expression,
});
}
export function createJsxClosingElement(tagName) {
return new NodeObject(SyntaxKind.JsxClosingElement, {
tagName,
});
}
export function createJsxExpression(dotDotDotToken, expression) {
return new NodeObject(SyntaxKind.JsxExpression, {
dotDotDotToken,
expression,
});
}
export function createJsxText(text, containsOnlyTriviaWhiteSpaces) {
return new NodeObject(SyntaxKind.JsxText, {
text,
containsOnlyTriviaWhiteSpaces,
});
}
export function createSyntaxList(children) {
return new NodeObject(SyntaxKind.SyntaxList, {
children,
});
}
export function createJSDoc(comment, tags) {
return new NodeObject(SyntaxKind.JSDoc, {
comment: createNodeArray(comment),
tags: tags ? createNodeArray(tags) : undefined,
});
}
export function createJSDocTypeExpression(type) {
return new NodeObject(SyntaxKind.JSDocTypeExpression, {
type,
});
}
export function createJSDocNonNullableType(type) {
return new NodeObject(SyntaxKind.JSDocNonNullableType, {
type,
});
}
export function createJSDocNullableType(type) {
return new NodeObject(SyntaxKind.JSDocNullableType, {
type,
});
}
export function createJSDocAllType() {
return new NodeObject(SyntaxKind.JSDocAllType, undefined);
}
export function createJSDocVariadicType(type) {
return new NodeObject(SyntaxKind.JSDocVariadicType, {
type,
});
}
export function createJSDocOptionalType(type) {
return new NodeObject(SyntaxKind.JSDocOptionalType, {
type,
});
}
export function createJSDocTypeTag(tagName, typeExpression, comment) {
return new NodeObject(SyntaxKind.JSDocTypeTag, {
tagName,
typeExpression,
comment: comment ? createNodeArray(comment) : undefined,
});
}
export function createJSDocUnknownTag(tagName, comment) {
return new NodeObject(SyntaxKind.JSDocUnknownTag, {
tagName,
comment: comment ? createNodeArray(comment) : undefined,
});
}
export function createJSDocTemplateTag(tagName, constraint, typeParameters, comment) {
return new NodeObject(SyntaxKind.JSDocTemplateTag, {
tagName,
constraint,
typeParameters: createNodeArray(typeParameters),
comment: comment ? createNodeArray(comment) : undefined,
});
}
export function createJSDocReturnTag(tagName, typeExpression, comment) {
return new NodeObject(SyntaxKind.JSDocReturnTag, {
tagName,
typeExpression,
comment: comment ? createNodeArray(comment) : undefined,
});
}
export function createJSDocPublicTag(tagName, comment) {
return new NodeObject(SyntaxKind.JSDocPublicTag, {
tagName,
comment: comment ? createNodeArray(comment) : undefined,
});
}
export function createJSDocPrivateTag(tagName, comment) {
return new NodeObject(SyntaxKind.JSDocPrivateTag, {
tagName,
comment: comment ? createNodeArray(comment) : undefined,
});
}
export function createJSDocProtectedTag(tagName, comment) {
return new NodeObject(SyntaxKind.JSDocProtectedTag, {
tagName,
comment: comment ? createNodeArray(comment) : undefined,
});
}
export function createJSDocReadonlyTag(tagName, comment) {
return new NodeObject(SyntaxKind.JSDocReadonlyTag, {
tagName,
comment: comment ? createNodeArray(comment) : undefined,
});
}
export function createJSDocOverrideTag(tagName, comment) {
return new NodeObject(SyntaxKind.JSDocOverrideTag, {
tagName,
comment: comment ? createNodeArray(comment) : undefined,
});
}
export function createJSDocDeprecatedTag(tagName, comment) {
return new NodeObject(SyntaxKind.JSDocDeprecatedTag, {
tagName,
comment: comment ? createNodeArray(comment) : undefined,
});
}
export function createJSDocSeeTag(tagName, nameExpression, comment) {
return new NodeObject(SyntaxKind.JSDocSeeTag, {
tagName,
nameExpression,
comment: comment ? createNodeArray(comment) : undefined,
});
}
export function createJSDocImplementsTag(tagName, className, comment) {
return new NodeObject(SyntaxKind.JSDocImplementsTag, {
tagName,
className,
comment: comment ? createNodeArray(comment) : undefined,
});
}
export function createJSDocAugmentsTag(tagName, className, comment) {
return new NodeObject(SyntaxKind.JSDocAugmentsTag, {
tagName,
className,
comment: comment ? createNodeArray(comment) : undefined,
});
}
export function createJSDocSatisfiesTag(tagName, typeExpression, comment) {
return new NodeObject(SyntaxKind.JSDocSatisfiesTag, {
tagName,
typeExpression,
comment: comment ? createNodeArray(comment) : undefined,
});
}
export function createJSDocThrowsTag(tagName, typeExpression, comment) {
return new NodeObject(SyntaxKind.JSDocThrowsTag, {
tagName,
typeExpression,
comment: comment ? createNodeArray(comment) : undefined,
});
}
export function createJSDocThisTag(tagName, typeExpression, comment) {
return new NodeObject(SyntaxKind.JSDocThisTag, {
tagName,
typeExpression,
comment: comment ? createNodeArray(comment) : undefined,
});
}
export function createJSDocImportTag(tagName, importClause, moduleSpecifier, attributes, comment) {
return new NodeObject(SyntaxKind.JSDocImportTag, {
tagName,
importClause,
moduleSpecifier,
attributes,
comment: comment ? createNodeArray(comment) : undefined,
});
}
export function createJSDocCallbackTag(tagName, typeExpression, name, comment) {
return new NodeObject(SyntaxKind.JSDocCallbackTag, {
tagName,
typeExpression,
name,
comment: comment ? createNodeArray(comment) : undefined,
});
}
export function createJSDocOverloadTag(tagName, typeExpression, comment) {
return new NodeObject(SyntaxKind.JSDocOverloadTag, {
tagName,
typeExpression,
comment: comment ? createNodeArray(comment) : undefined,
});
}
export function createJSDocTypedefTag(tagName, typeExpression, name, comment) {
return new NodeObject(SyntaxKind.JSDocTypedefTag, {
tagName,
typeExpression,
name,
comment: comment ? createNodeArray(comment) : undefined,
});
}
export function createJSDocSignature(typeParameters, parameters, type) {
return new NodeObject(SyntaxKind.JSDocSignature, {
typeParameters: typeParameters ? createNodeArray(typeParameters) : undefined,
parameters: createNodeArray(parameters),
type,
});
}
export function createJSDocNameReference(name) {
return new NodeObject(SyntaxKind.JSDocNameReference, {
name,
});
}
export function createModuleDeclaration(modifiers, keyword, name, body) {
return new NodeObject(SyntaxKind.ModuleDeclaration, {
modifiers: modifiers ? createNodeArray(modifiers) : undefined,
keyword,
name,
body,
});
}
export function createImportEqualsDeclaration(modifiers, isTypeOnly = false, name, moduleReference) {
return new NodeObject(SyntaxKind.ImportEqualsDeclaration, {
modifiers: modifiers ? createNodeArray(modifiers) : undefined,
isTypeOnly,
name,
moduleReference,
});
}
export function createExportDeclaration(modifiers, isTypeOnly, exportClause, moduleSpecifier, attributes) {
return new NodeObject(SyntaxKind.ExportDeclaration, {
modifiers: modifiers ? createNodeArray(modifiers) : undefined,
isTypeOnly,
exportClause,
moduleSpecifier,
attributes,
});
}
export function createImportTypeNode(isTypeOf = false, argument, attributes, qualifier, typeArguments) {
return new NodeObject(SyntaxKind.ImportType, {
isTypeOf,
argument,
attributes,
qualifier,
typeArguments: typeArguments ? createNodeArray(typeArguments) : undefined,
});
}
export function createImportClause(phaseModifier, name, namedBindings) {
return new NodeObject(SyntaxKind.ImportClause, {
phaseModifier,
name,
namedBindings,
});
}
export function createImportSpecifier(isTypeOnly = false, propertyName, name) {
return new NodeObject(SyntaxKind.ImportSpecifier, {
isTypeOnly,
propertyName,
name,
});
}
export function createJSDocText(text) {
return new NodeObject(SyntaxKind.JSDocText, {
text,
});
}
export function createJSDocLink(name, text) {
return new NodeObject(SyntaxKind.JSDocLink, {
name,
text,
});
}
export function createJSDocLinkPlain(name, text) {
return new NodeObject(SyntaxKind.JSDocLinkPlain, {
name,
text,
});
}
export function createJSDocLinkCode(name, text) {
return new NodeObject(SyntaxKind.JSDocLinkCode, {
name,
text,
});
}
export function createTypeParameterDeclaration(modifiers, name, constraint, expression, defaultType) {
return new NodeObject(SyntaxKind.TypeParameter, {
modifiers: modifiers ? createNodeArray(modifiers) : undefined,
name,
constraint,
expression,
defaultType,
});
}
export function createSyntheticReferenceExpression(expression, thisArg) {
return new NodeObject(SyntaxKind.SyntheticReferenceExpression, {
expression,
thisArg,
});
}
export function createJSDocTypeLiteral(jsdocPropertyTags, isArrayType) {
return new NodeObject(SyntaxKind.JSDocTypeLiteral, {
jsdocPropertyTags,
isArrayType,
});
}
export function createForInStatement(awaitModifier, initializer, expression, statement) {
return new NodeObject(SyntaxKind.ForInStatement, {
awaitModifier,
initializer,
expression,
statement,
});
}
export function createForOfStatement(awaitModifier, initializer, expression, statement) {
return new NodeObject(SyntaxKind.ForOfStatement, {
awaitModifier,
initializer,
expression,
statement,
});
}
export function createCaseClause(expression, statements) {
return new NodeObject(SyntaxKind.CaseClause, {
expression,
statements: createNodeArray(statements),
});
}
export function createDefaultClause(expression, statements) {
return new NodeObject(SyntaxKind.DefaultClause, {
expression,
statements: createNodeArray(statements),
});
}
export function createObjectBindingPattern(elements) {
return new NodeObject(SyntaxKind.ObjectBindingPattern, {
elements: createNodeArray(elements),
});
}
export function createArrayBindingPattern(elements) {
return new NodeObject(SyntaxKind.ArrayBindingPattern, {
elements: createNodeArray(elements),
});
}
export function createJSDocParameterTag(tagName, name, isBracketed, typeExpression, isNameFirst, comment) {
return new NodeObject(SyntaxKind.JSDocParameterTag, {
tagName,
name,
isBracketed,
typeExpression,
isNameFirst,
comment: comment ? createNodeArray(comment) : undefined,
});
}
export function createJSDocPropertyTag(tagName, name, isBracketed, typeExpression, isNameFirst, comment) {
return new NodeObject(SyntaxKind.JSDocPropertyTag, {
tagName,
name,
isBracketed,
typeExpression,
isNameFirst,
comment: comment ? createNodeArray(comment) : undefined,
});
}
export function updateQualifiedName(node, left, right) {
return node.left !== left || node.right !== right ? createQualifiedName(left, right) : node;
}
export function updateComputedPropertyName(node, expression) {
return node.expression !== expression ? createComputedPropertyName(expression) : node;
}
export function updateDecorator(node, expression) {
return node.expression !== expression ? createDecorator(expression) : node;
}
export function updateIfStatement(node, expression, thenStatement, elseStatement) {
return node.expression !== expression || node.thenStatement !== thenStatement || node.elseStatement !== elseStatement ? createIfStatement(expression, thenStatement, elseStatement) : node;
}
export function updateDoStatement(node, statement, expression) {
return node.statement !== statement || node.expression !== expression ? createDoStatement(statement, expression) : node;
}
export function updateWhileStatement(node, expression, statement) {
return node.expression !== expression || node.statement !== statement ? createWhileStatement(expression, statement) : node;
}
export function updateForStatement(node, initializer, condition, incrementor, statement) {
return node.initializer !== initializer || node.condition !== condition || node.incrementor !== incrementor || node.statement !== statement ? createForStatement(initializer, condition, incrementor, statement) : node;
}
export function updateBreakStatement(node, label) {
return node.label !== label ? createBreakStatement(label) : node;
}
export function updateContinueStatement(node, label) {
return node.label !== label ? createContinueStatement(label) : node;
}
export function updateReturnStatement(node, expression) {
return node.expression !== expression ? createReturnStatement(expression) : node;
}
export function updateWithStatement(node, expression, statement) {
return node.expression !== expression || node.statement !== statement ? createWithStatement(expression, statement) : node;
}
export function updateSwitchStatement(node, expression, caseBlock) {
return node.expression !== expression || node.caseBlock !== caseBlock ? createSwitchStatement(expression, caseBlock) : node;
}
export function updateCaseBlock(node, clauses) {
return node.clauses !== clauses ? createCaseBlock(clauses) : node;
}
export function updateThrowStatement(node, expression) {
return node.expression !== expression ? createThrowStatement(expression) : node;
}
export function updateTryStatement(node, tryBlock, catchClause, finallyBlock) {
return node.tryBlock !== tryBlock || node.catchClause !== catchClause || node.finallyBlock !== finallyBlock ? createTryStatement(tryBlock, catchClause, finallyBlock) : node;
}
export function updateCatchClause(node, variableDeclaration, block) {
return node.variableDeclaration !== variableDeclaration || node.block !== block ? createCatchClause(variableDeclaration, block) : node;
}
export function updateLabeledStatement(node, label, statement) {
return node.label !== label || node.statement !== statement ? createLabeledStatement(label, statement) : node;
}
export function updateExpressionStatement(node, expression) {
return node.expression !== expression ? createExpressionStatement(expression) : node;
}
export function updateBlock(node, statements) {
return node.statements !== statements ? createBlock(statements, node.multiLine) : node;
}
export function updateVariableStatement(node, modifiers, declarationList) {
return node.modifiers !== modifiers || node.declarationList !== declarationList ? createVariableStatement(modifiers, declarationList) : node;
}
export function updateVariableDeclaration(node, name, exclamationToken, type, initializer) {
return node.name !== name || node.exclamationToken !== exclamationToken || node.type !== type || node.initializer !== initializer ? createVariableDeclaration(name, exclamationToken, type, initializer) : node;
}
export function updateVariableDeclarationList(node, declarations) {
return node.declarations !== declarations ? createVariableDeclarationList(declarations, node.flags) : node;
}
export function updateParameterDeclaration(node, modifiers, dotDotDotToken, name, questionToken, type, initializer) {
return node.modifiers !== modifiers || node.dotDotDotToken !== dotDotDotToken || node.name !== name || node.questionToken !== questionToken || node.type !== type || node.initializer !== initializer ? createParameterDeclaration(modifiers, dotDotDotToken, name, questionToken, type, initializer) : node;
}
export function updateBindingElement(node, dotDotDotToken, propertyName, name, initializer) {
return node.dotDotDotToken !== dotDotDotToken || node.propertyName !== propertyName || node.name !== name || node.initializer !== initializer ? createBindingElement(dotDotDotToken, propertyName, name, initializer) : node;
}
export function updateMissingDeclaration(node, modifiers) {
return node.modifiers !== modifiers ? createMissingDeclaration(modifiers) : node;
}
export function updateFunctionDeclaration(node, modifiers, asteriskToken, name, typeParameters, parameters, type, body) {
return node.modifiers !== modifiers || node.asteriskToken !== asteriskToken || node.name !== name || node.typeParameters !== typeParameters || node.parameters !== parameters || node.type !== type || node.body !== body ? createFunctionDeclaration(modifiers, asteriskToken, name, typeParameters, parameters, type, body) : node;
}
export function updateClassDeclaration(node, modifiers, name, typeParameters, heritageClauses, members) {
return node.modifiers !== modifiers || node.name !== name || node.typeParameters !== typeParameters || node.heritageClauses !== heritageClauses || node.members !== members ? createClassDeclaration(modifiers, name, typeParameters, heritageClauses, members) : node;
}
export function updateClassExpression(node, modifiers, name, typeParameters, heritageClauses, members) {
return node.modifiers !== modifiers || node.name !== name || node.typeParameters !== typeParameters || node.heritageClauses !== heritageClauses || node.members !== members ? createClassExpression(modifiers, name, typeParameters, heritageClauses, members) : node;
}
export function updateHeritageClause(node, types) {
return node.types !== types ? createHeritageClause(node.token, types) : node;
}
export function updateInterfaceDeclaration(node, modifiers, name, typeParameters, heritageClauses, members) {
return node.modifiers !== modifiers || node.name !== name || node.typeParameters !== typeParameters || node.heritageClauses !== heritageClauses || node.members !== members ? createInterfaceDeclaration(modifiers, name, typeParameters, heritageClauses, members) : node;
}
export function updateTypeAliasDeclaration(node, modifiers, name, typeParameters, type) {
return node.modifiers !== modifiers || node.name !== name || node.typeParameters !== typeParameters || node.type !== type ? createTypeAliasDeclaration(modifiers, name, typeParameters, type) : node;
}
export function updateEnumMember(node, name, initializer) {
return node.name !== name || node.initializer !== initializer ? createEnumMember(name, initializer) : node;
}
export function updateEnumDeclaration(node, modifiers, name, members) {
return node.modifiers !== modifiers || node.name !== name || node.members !== members ? createEnumDeclaration(modifiers, name, members) : node;
}
export function updateModuleBlock(node, statements) {
return node.statements !== statements ? createModuleBlock(statements) : node;
}
export function updateImportDeclaration(node, modifiers, importClause, moduleSpecifier, attributes) {
return node.modifiers !== modifiers || node.importClause !== importClause || node.moduleSpecifier !== moduleSpecifier || node.attributes !== attributes ? createImportDeclaration(modifiers, importClause, moduleSpecifier, attributes) : node;
}
export function updateExternalModuleReference(node, expression) {
return node.expression !== expression ? createExternalModuleReference(expression) : node;
}
export function updateNamespaceImport(node, name) {
return node.name !== name ? createNamespaceImport(name) : node;
}
export function updateNamedImports(node, elements) {
return node.elements !== elements ? createNamedImports(elements) : node;
}
export function updateExportAssignment(node, modifiers, type, expression) {
return node.modifiers !== modifiers || node.type !== type || node.expression !== expression ? createExportAssignment(modifiers, node.isExportEquals, type, expression) : node;
}
export function updateNamespaceExportDeclaration(node, modifiers, name) {
return node.modifiers !== modifiers || node.name !== name ? createNamespaceExportDeclaration(modifiers, name) : node;
}
export function updateNamespaceExport(node, name) {
return node.name !== name ? createNamespaceExport(name) : node;
}
export function updateNamedExports(node, elements) {
return node.elements !== elements ? createNamedExports(elements) : node;
}
export function updateExportSpecifier(node, propertyName, name) {
return node.propertyName !== propertyName || node.name !== name ? createExportSpecifier(node.isTypeOnly, propertyName, name) : node;
}
export function updateCallSignatureDeclaration(node, typeParameters, parameters, type) {
return node.typeParameters !== typeParameters || node.parameters !== parameters || node.type !== type ? createCallSignatureDeclaration(typeParameters, parameters, type) : node;
}
export function updateConstructSignatureDeclaration(node, typeParameters, parameters, type) {
return node.typeParameters !== typeParameters || node.parameters !== parameters || node.type !== type ? createConstructSignatureDeclaration(typeParameters, parameters, type) : node;
}
export function updateConstructorDeclaration(node, modifiers, typeParameters, parameters, type, body) {
return node.modifiers !== modifiers || node.typeParameters !== typeParameters || node.parameters !== parameters || node.type !== type || node.body !== body ? createConstructorDeclaration(modifiers, typeParameters, parameters, type, body) : node;
}
export function updateGetAccessorDeclaration(node, modifiers, name, typeParameters, parameters, type, body) {
return node.modifiers !== modifiers || node.name !== name || node.typeParameters !== typeParameters || node.parameters !== parameters || node.type !== type || node.body !== body ? createGetAccessorDeclaration(modifiers, name, typeParameters, parameters, type, body) : node;
}
export function updateSetAccessorDeclaration(node, modifiers, name, typeParameters, parameters, type, body) {
return node.modifiers !== modifiers || node.name !== name || node.typeParameters !== typeParameters || node.parameters !== parameters || node.type !== type || node.body !== body ? createSetAccessorDeclaration(modifiers, name, typeParameters, parameters, type, body) : node;
}
export function updateIndexSignatureDeclaration(node, modifiers, parameters, type) {
return node.modifiers !== modifiers || node.parameters !== parameters || node.type !== type ? createIndexSignatureDeclaration(modifiers, parameters, type) : node;
}
export function updateMethodSignatureDeclaration(node, modifiers, name, postfixToken, typeParameters, parameters, type) {
return node.modifiers !== modifiers || node.name !== name || node.postfixToken !== postfixToken || node.typeParameters !== typeParameters || node.parameters !== parameters || node.type !== type ? createMethodSignatureDeclaration(modifiers, name, postfixToken, typeParameters, parameters, type) : node;
}
export function updateMethodDeclaration(node, modifiers, asteriskToken, name, postfixToken, typeParameters, parameters, type, body) {
return node.modifiers !== modifiers || node.asteriskToken !== asteriskToken || node.name !== name || node.postfixToken !== postfixToken || node.typeParameters !== typeParameters || node.parameters !== parameters || node.type !== type || node.body !== body ? createMethodDeclaration(modifiers, asteriskToken, name, postfixToken, typeParameters, parameters, type, body) : node;
}
export function updatePropertySignatureDeclaration(node, modifiers, name, postfixToken, type, initializer) {
return node.modifiers !== modifiers || node.name !== name || node.postfixToken !== postfixToken || node.type !== type || node.initializer !== initializer ? createPropertySignatureDeclaration(modifiers, name, postfixToken, type, initializer) : node;
}
export function updatePropertyDeclaration(node, modifiers, name, postfixToken, type, initializer) {
return node.modifiers !== modifiers || node.name !== name || node.postfixToken !== postfixToken || node.type !== type || node.initializer !== initializer ? createPropertyDeclaration(modifiers, name, postfixToken, type, initializer) : node;
}
export function updateClassStaticBlockDeclaration(node, modifiers, body) {
return node.modifiers !== modifiers || node.body !== body ? createClassStaticBlockDeclaration(modifiers, body) : node;
}
export function updateBinaryExpression(node, modifiers, left, type, operatorToken, right) {
return node.modifiers !== modifiers || node.left !== left || node.type !== type || node.operatorToken !== operatorToken || node.right !== right ? createBinaryExpression(modifiers, left, type, operatorToken, right) : node;
}
export function updatePrefixUnaryExpression(node, operand) {
return node.operand !== operand ? createPrefixUnaryExpression(node.operator, operand) : node;
}
export function updatePostfixUnaryExpression(node, operand) {
return node.operand !== operand ? createPostfixUnaryExpression(operand, node.operator) : node;
}
export function updateYieldExpression(node, asteriskToken, expression) {
return node.asteriskToken !== asteriskToken || node.expression !== expression ? createYieldExpression(asteriskToken, expression) : node;
}
export function updateArrowFunction(node, modifiers, typeParameters, parameters, type, equalsGreaterThanToken, body) {
return node.modifiers !== modifiers || node.typeParameters !== typeParameters || node.parameters !== parameters || node.type !== type || node.equalsGreaterThanToken !== equalsGreaterThanToken || node.body !== body ? createArrowFunction(modifiers, typeParameters, parameters, type, equalsGreaterThanToken, body) : node;
}
export function updateFunctionExpression(node, modifiers, asteriskToken, name, typeParameters, parameters, type, body) {
return node.modifiers !== modifiers || node.asteriskToken !== asteriskToken || node.name !== name || node.typeParameters !== typeParameters || node.parameters !== parameters || node.type !== type || node.body !== body ? createFunctionExpression(modifiers, asteriskToken, name, typeParameters, parameters, type, body) : node;
}
export function updateAsExpression(node, expression, type) {
return node.expression !== expression || node.type !== type ? createAsExpression(expression, type) : node;
}
export function updateSatisfiesExpression(node, expression, type) {
return node.expression !== expression || node.type !== type ? createSatisfiesExpression(expression, type) : node;
}
export function updateConditionalExpression(node, condition, questionToken, whenTrue, colonToken, whenFalse) {
return node.condition !== condition || node.questionToken !== questionToken || node.whenTrue !== whenTrue || node.colonToken !== colonToken || node.whenFalse !== whenFalse ? createConditionalExpression(condition, questionToken, whenTrue, colonToken, whenFalse) : node;
}
export function updatePropertyAccessExpression(node, expression, questionDotToken, name) {
return node.expression !== expression || node.questionDotToken !== questionDotToken || node.name !== name ? createPropertyAccessExpression(expression, questionDotToken, name, node.flags) : node;
}
export function updateElementAccessExpression(node, expression, questionDotToken, argumentExpression) {
return node.expression !== expression || node.questionDotToken !== questionDotToken || node.argumentExpression !== argumentExpression ? createElementAccessExpression(expression, questionDotToken, argumentExpression, node.flags) : node;
}
export function updateCallExpression(node, expression, questionDotToken, typeArguments, arguments_) {
return node.expression !== expression || node.questionDotToken !== questionDotToken || node.typeArguments !== typeArguments || node.arguments !== arguments_ ? createCallExpression(expression, questionDotToken, typeArguments, arguments_, node.flags) : node;
}
export function updateNewExpression(node, expression, typeArguments, arguments_) {
return node.expression !== expression || node.typeArguments !== typeArguments || node.arguments !== arguments_ ? createNewExpression(expression, typeArguments, arguments_) : node;
}
export function updateMetaProperty(node, name) {
return node.name !== name ? createMetaProperty(node.keywordToken, name) : node;
}
export function updateNonNullExpression(node, expression) {
return node.expression !== expression ? createNonNullExpression(expression, node.flags) : node;
}
export function updateSpreadElement(node, expression) {
return node.expression !== expression ? createSpreadElement(expression) : node;
}
export function updateTemplateExpression(node, head, templateSpans) {
return node.head !== head || node.templateSpans !== templateSpans ? createTemplateExpression(head, templateSpans) : node;
}
export function updateTemplateSpan(node, expression, literal) {
return node.expression !== expression || node.literal !== literal ? createTemplateSpan(expression, literal) : node;
}
export function updateTaggedTemplateExpression(node, tag, questionDotToken, typeArguments, template) {
return node.tag !== tag || node.questionDotToken !== questionDotToken || node.typeArguments !== typeArguments || node.template !== template ? createTaggedTemplateExpression(tag, questionDotToken, typeArguments, template, node.flags) : node;
}
export function updateParenthesizedExpression(node, expression) {
return node.expression !== expression ? createParenthesizedExpression(expression) : node;
}
export function updateArrayLiteralExpression(node, elements) {
return node.elements !== elements ? createArrayLiteralExpression(elements, node.multiLine) : node;
}
export function updateObjectLiteralExpression(node, properties) {
return node.properties !== properties ? createObjectLiteralExpression(properties, node.multiLine) : node;
}
export function updateSpreadAssignment(node, expression) {
return node.expression !== expression ? createSpreadAssignment(expression) : node;
}
export function updatePropertyAssignment(node, modifiers, name, postfixToken, type, initializer) {
return node.modifiers !== modifiers || node.name !== name || node.postfixToken !== postfixToken || node.type !== type || node.initializer !== initializer ? createPropertyAssignment(modifiers, name, postfixToken, type, initializer) : node;
}
export function updateShorthandPropertyAssignment(node, modifiers, name, postfixToken, type, equalsToken, objectAssignmentInitializer) {
return node.modifiers !== modifiers || node.name !== name || node.postfixToken !== postfixToken || node.type !== type || node.equalsToken !== equalsToken || node.objectAssignmentInitializer !== objectAssignmentInitializer ? createShorthandPropertyAssignment(modifiers, name, postfixToken, type, equalsToken, objectAssignmentInitializer) : node;
}
export function updateDeleteExpression(node, expression) {
return node.expression !== expression ? createDeleteExpression(expression) : node;
}
export function updateTypeOfExpression(node, expression) {
return node.expression !== expression ? createTypeOfExpression(expression) : node;
}
export function updateVoidExpression(node, expression) {
return node.expression !== expression ? createVoidExpression(expression) : node;
}
export function updateAwaitExpression(node, expression) {
return node.expression !== expression ? createAwaitExpression(expression) : node;
}
export function updateTypeAssertion(node, type, expression) {
return node.type !== type || node.expression !== expression ? createTypeAssertion(type, expression) : node;
}
export function updateUnionTypeNode(node, types) {
return node.types !== types ? createUnionTypeNode(types) : node;
}
export function updateIntersectionTypeNode(node, types) {
return node.types !== types ? createIntersectionTypeNode(types) : node;
}
export function updateConditionalTypeNode(node, checkType, extendsType, trueType, falseType) {
return node.checkType !== checkType || node.extendsType !== extendsType || node.trueType !== trueType || node.falseType !== falseType ? createConditionalTypeNode(checkType, extendsType, trueType, falseType) : node;
}
export function updateTypeOperatorNode(node, type) {
return node.type !== type ? createTypeOperatorNode(node.operator, type) : node;
}
export function updateInferTypeNode(node, typeParameter) {
return node.typeParameter !== typeParameter ? createInferTypeNode(typeParameter) : node;
}
export function updateArrayTypeNode(node, elementType) {
return node.elementType !== elementType ? createArrayTypeNode(elementType) : node;
}
export function updateIndexedAccessTypeNode(node, objectType, indexType) {
return node.objectType !== objectType || node.indexType !== indexType ? createIndexedAccessTypeNode(objectType, indexType) : node;
}
export function updateTypeReferenceNode(node, typeName, typeArguments) {
return node.typeName !== typeName || node.typeArguments !== typeArguments ? createTypeReferenceNode(typeName, typeArguments) : node;
}
export function updateExpressionWithTypeArguments(node, expression, typeArguments) {
return node.expression !== expression || node.typeArguments !== typeArguments ? createExpressionWithTypeArguments(expression, typeArguments) : node;
}
export function updateLiteralTypeNode(node, literal) {
return node.literal !== literal ? createLiteralTypeNode(literal) : node;
}
export function updateTypePredicateNode(node, assertsModifier, parameterName, type) {
return node.assertsModifier !== assertsModifier || node.parameterName !== parameterName || node.type !== type ? createTypePredicateNode(assertsModifier, parameterName, type) : node;
}
export function updateImportAttribute(node, name, value) {
return node.name !== name || node.value !== value ? createImportAttribute(name, value) : node;
}
export function updateImportAttributes(node, attributes) {
return node.attributes !== attributes ? createImportAttributes(node.token, attributes, node.multiLine) : node;
}
export function updateTypeQueryNode(node, exprName, typeArguments) {
return node.exprName !== exprName || node.typeArguments !== typeArguments ? createTypeQueryNode(exprName, typeArguments) : node;
}
export function updateMappedTypeNode(node, readonlyToken, typeParameter, nameType, questionToken, type, members) {
return node.readonlyToken !== readonlyToken || node.typeParameter !== typeParameter || node.nameType !== nameType || node.questionToken !== questionToken || node.type !== type || node.members !== members ? createMappedTypeNode(readonlyToken, typeParameter, nameType, questionToken, type, members) : node;
}
export function updateTypeLiteralNode(node, members) {
return node.members !== members ? createTypeLiteralNode(members) : node;
}
export function updateTupleTypeNode(node, elements) {
return node.elements !== elements ? createTupleTypeNode(elements) : node;
}
export function updateNamedTupleMember(node, dotDotDotToken, name, questionToken, type) {
return node.dotDotDotToken !== dotDotDotToken || node.name !== name || node.questionToken !== questionToken || node.type !== type ? createNamedTupleMember(dotDotDotToken, name, questionToken, type) : node;
}
export function updateOptionalTypeNode(node, type) {
return node.type !== type ? createOptionalTypeNode(type) : node;
}
export function updateRestTypeNode(node, type) {
return node.type !== type ? createRestTypeNode(type) : node;
}
export function updateParenthesizedTypeNode(node, type) {
return node.type !== type ? createParenthesizedTypeNode(type) : node;
}
export function updateFunctionTypeNode(node, typeParameters, parameters, type) {
return node.typeParameters !== typeParameters || node.parameters !== parameters || node.type !== type ? createFunctionTypeNode(typeParameters, parameters, type) : node;
}
export function updateConstructorTypeNode(node, modifiers, typeParameters, parameters, type) {
return node.modifiers !== modifiers || node.typeParameters !== typeParameters || node.parameters !== parameters || node.type !== type ? createConstructorTypeNode(modifiers, typeParameters, parameters, type) : node;
}
export function updateTemplateLiteralTypeNode(node, head, templateSpans) {
return node.head !== head || node.templateSpans !== templateSpans ? createTemplateLiteralTypeNode(head, templateSpans) : node;
}
export function updateTemplateLiteralTypeSpan(node, type, literal) {
return node.type !== type || node.literal !== literal ? createTemplateLiteralTypeSpan(type, literal) : node;
}
export function updateSyntheticExpression(node, tupleNameSource) {
return node.tupleNameSource !== tupleNameSource ? createSyntheticExpression(node.type, node.isSpread, tupleNameSource) : node;
}
export function updatePartiallyEmittedExpression(node, expression) {
return node.expression !== expression ? createPartiallyEmittedExpression(expression) : node;
}
export function updateJsxElement(node, openingElement, children, closingElement) {
return node.openingElement !== openingElement || node.children !== children || node.closingElement !== closingElement ? createJsxElement(openingElement, children, closingElement) : node;
}
export function updateJsxAttributes(node, properties) {
return node.properties !== properties ? createJsxAttributes(properties) : node;
}
export function updateJsxNamespacedName(node, namespace, name) {
return node.namespace !== namespace || node.name !== name ? createJsxNamespacedName(namespace, name) : node;
}
export function updateJsxOpeningElement(node, tagName, typeArguments, attributes) {
return node.tagName !== tagName || node.typeArguments !== typeArguments || node.attributes !== attributes ? createJsxOpeningElement(tagName, typeArguments, attributes) : node;
}
export function updateJsxSelfClosingElement(node, tagName, typeArguments, attributes) {
return node.tagName !== tagName || node.typeArguments !== typeArguments || node.attributes !== attributes ? createJsxSelfClosingElement(tagName, typeArguments, attributes) : node;
}
export function updateJsxFragment(node, openingFragment, children, closingFragment) {
return node.openingFragment !== openingFragment || node.children !== children || node.closingFragment !== closingFragment ? createJsxFragment(openingFragment, children, closingFragment) : node;
}
export function updateJsxAttribute(node, name, initializer) {
return node.name !== name || node.initializer !== initializer ? createJsxAttribute(name, initializer) : node;
}
export function updateJsxSpreadAttribute(node, expression) {
return node.expression !== expression ? createJsxSpreadAttribute(expression) : node;
}
export function updateJsxClosingElement(node, tagName) {
return node.tagName !== tagName ? createJsxClosingElement(tagName) : node;
}
export function updateJsxExpression(node, dotDotDotToken, expression) {
return node.dotDotDotToken !== dotDotDotToken || node.expression !== expression ? createJsxExpression(dotDotDotToken, expression) : node;
}
export function updateSyntaxList(node, children) {
return node.children !== children ? createSyntaxList(children) : node;
}
export function updateJSDoc(node, comment, tags) {
return node.comment !== comment || node.tags !== tags ? createJSDoc(comment, tags) : node;
}
export function updateJSDocTypeExpression(node, type) {
return node.type !== type ? createJSDocTypeExpression(type) : node;
}
export function updateJSDocNonNullableType(node, type) {
return node.type !== type ? createJSDocNonNullableType(type) : node;
}
export function updateJSDocNullableType(node, type) {
return node.type !== type ? createJSDocNullableType(type) : node;
}
export function updateJSDocVariadicType(node, type) {
return node.type !== type ? createJSDocVariadicType(type) : node;
}
export function updateJSDocOptionalType(node, type) {
return node.type !== type ? createJSDocOptionalType(type) : node;
}
export function updateJSDocTypeTag(node, tagName, typeExpression, comment) {
return node.tagName !== tagName || node.typeExpression !== typeExpression || node.comment !== comment ? createJSDocTypeTag(tagName, typeExpression, comment) : node;
}
export function updateJSDocUnknownTag(node, tagName, comment) {
return node.tagName !== tagName || node.comment !== comment ? createJSDocUnknownTag(tagName, comment) : node;
}
export function updateJSDocTemplateTag(node, tagName, constraint, typeParameters, comment) {
return node.tagName !== tagName || node.constraint !== constraint || node.typeParameters !== typeParameters || node.comment !== comment ? createJSDocTemplateTag(tagName, constraint, typeParameters, comment) : node;
}
export function updateJSDocReturnTag(node, tagName, typeExpression, comment) {
return node.tagName !== tagName || node.typeExpression !== typeExpression || node.comment !== comment ? createJSDocReturnTag(tagName, typeExpression, comment) : node;
}
export function updateJSDocPublicTag(node, tagName, comment) {
return node.tagName !== tagName || node.comment !== comment ? createJSDocPublicTag(tagName, comment) : node;
}
export function updateJSDocPrivateTag(node, tagName, comment) {
return node.tagName !== tagName || node.comment !== comment ? createJSDocPrivateTag(tagName, comment) : node;
}
export function updateJSDocProtectedTag(node, tagName, comment) {
return node.tagName !== tagName || node.comment !== comment ? createJSDocProtectedTag(tagName, comment) : node;
}
export function updateJSDocReadonlyTag(node, tagName, comment) {
return node.tagName !== tagName || node.comment !== comment ? createJSDocReadonlyTag(tagName, comment) : node;
}
export function updateJSDocOverrideTag(node, tagName, comment) {
return node.tagName !== tagName || node.comment !== comment ? createJSDocOverrideTag(tagName, comment) : node;
}
export function updateJSDocDeprecatedTag(node, tagName, comment) {
return node.tagName !== tagName || node.comment !== comment ? createJSDocDeprecatedTag(tagName, comment) : node;
}
export function updateJSDocSeeTag(node, tagName, nameExpression, comment) {
return node.tagName !== tagName || node.nameExpression !== nameExpression || node.comment !== comment ? createJSDocSeeTag(tagName, nameExpression, comment) : node;
}
export function updateJSDocImplementsTag(node, tagName, className, comment) {
return node.tagName !== tagName || node.className !== className || node.comment !== comment ? createJSDocImplementsTag(tagName, className, comment) : node;
}
export function updateJSDocAugmentsTag(node, tagName, className, comment) {
return node.tagName !== tagName || node.className !== className || node.comment !== comment ? createJSDocAugmentsTag(tagName, className, comment) : node;
}
export function updateJSDocSatisfiesTag(node, tagName, typeExpression, comment) {
return node.tagName !== tagName || node.typeExpression !== typeExpression || node.comment !== comment ? createJSDocSatisfiesTag(tagName, typeExpression, comment) : node;
}
export function updateJSDocThrowsTag(node, tagName, typeExpression, comment) {
return node.tagName !== tagName || node.typeExpression !== typeExpression || node.comment !== comment ? createJSDocThrowsTag(tagName, typeExpression, comment) : node;
}
export function updateJSDocThisTag(node, tagName, typeExpression, comment) {
return node.tagName !== tagName || node.typeExpression !== typeExpression || node.comment !== comment ? createJSDocThisTag(tagName, typeExpression, comment) : node;
}
export function updateJSDocImportTag(node, tagName, importClause, moduleSpecifier, attributes, comment) {
return node.tagName !== tagName || node.importClause !== importClause || node.moduleSpecifier !== moduleSpecifier || node.attributes !== attributes || node.comment !== comment ? createJSDocImportTag(tagName, importClause, moduleSpecifier, attributes, comment) : node;
}
export function updateJSDocCallbackTag(node, tagName, typeExpression, name, comment) {
return node.tagName !== tagName || node.typeExpression !== typeExpression || node.name !== name || node.comment !== comment ? createJSDocCallbackTag(tagName, typeExpression, name, comment) : node;
}
export function updateJSDocOverloadTag(node, tagName, typeExpression, comment) {
return node.tagName !== tagName || node.typeExpression !== typeExpression || node.comment !== comment ? createJSDocOverloadTag(tagName, typeExpression, comment) : node;
}
export function updateJSDocTypedefTag(node, tagName, typeExpression, name, comment) {
return node.tagName !== tagName || node.typeExpression !== typeExpression || node.name !== name || node.comment !== comment ? createJSDocTypedefTag(tagName, typeExpression, name, comment) : node;
}
export function updateJSDocSignature(node, typeParameters, parameters, type) {
return node.typeParameters !== typeParameters || node.parameters !== parameters || node.type !== type ? createJSDocSignature(typeParameters, parameters, type) : node;
}
export function updateJSDocNameReference(node, name) {
return node.name !== name ? createJSDocNameReference(name) : node;
}
export function updateModuleDeclaration(node, modifiers, name, body) {
return node.modifiers !== modifiers || node.name !== name || node.body !== body ? createModuleDeclaration(modifiers, node.keyword, name, body) : node;
}
export function updateImportEqualsDeclaration(node, modifiers, name, moduleReference) {
return node.modifiers !== modifiers || node.name !== name || node.moduleReference !== moduleReference ? createImportEqualsDeclaration(modifiers, node.isTypeOnly, name, moduleReference) : node;
}
export function updateExportDeclaration(node, modifiers, exportClause, moduleSpecifier, attributes) {
return node.modifiers !== modifiers || node.exportClause !== exportClause || node.moduleSpecifier !== moduleSpecifier || node.attributes !== attributes ? createExportDeclaration(modifiers, node.isTypeOnly, exportClause, moduleSpecifier, attributes) : node;
}
export function updateImportTypeNode(node, argument, attributes, qualifier, typeArguments) {
return node.argument !== argument || node.attributes !== attributes || node.qualifier !== qualifier || node.typeArguments !== typeArguments ? createImportTypeNode(node.isTypeOf, argument, attributes, qualifier, typeArguments) : node;
}
export function updateImportClause(node, name, namedBindings) {
return node.name !== name || node.namedBindings !== namedBindings ? createImportClause(node.phaseModifier, name, namedBindings) : node;
}
export function updateImportSpecifier(node, propertyName, name) {
return node.propertyName !== propertyName || node.name !== name ? createImportSpecifier(node.isTypeOnly, propertyName, name) : node;
}
export function updateJSDocLink(node, name) {
return node.name !== name ? createJSDocLink(name, node.text) : node;
}
export function updateJSDocLinkPlain(node, name) {
return node.name !== name ? createJSDocLinkPlain(name, node.text) : node;
}
export function updateJSDocLinkCode(node, name) {
return node.name !== name ? createJSDocLinkCode(name, node.text) : node;
}
export function updateTypeParameterDeclaration(node, modifiers, name, constraint, expression, defaultType) {
return node.modifiers !== modifiers || node.name !== name || node.constraint !== constraint || node.expression !== expression || node.defaultType !== defaultType ? createTypeParameterDeclaration(modifiers, name, constraint, expression, defaultType) : node;
}
export function updateSyntheticReferenceExpression(node, expression, thisArg) {
return node.expression !== expression || node.thisArg !== thisArg ? createSyntheticReferenceExpression(expression, thisArg) : node;
}
export function updateJSDocTypeLiteral(node, jsdocPropertyTags) {
return node.jsdocPropertyTags !== jsdocPropertyTags ? createJSDocTypeLiteral(jsdocPropertyTags, node.isArrayType) : node;
}
export function updateForInStatement(node, awaitModifier, initializer, expression, statement) {
return node.awaitModifier !== awaitModifier || node.initializer !== initializer || node.expression !== expression || node.statement !== statement ? createForInStatement(awaitModifier, initializer, expression, statement) : node;
}
export function updateForOfStatement(node, awaitModifier, initializer, expression, statement) {
return node.awaitModifier !== awaitModifier || node.initializer !== initializer || node.expression !== expression || node.statement !== statement ? createForOfStatement(awaitModifier, initializer, expression, statement) : node;
}
export function updateCaseClause(node, expression, statements) {
return node.expression !== expression || node.statements !== statements ? createCaseClause(expression, statements) : node;
}
export function updateDefaultClause(node, expression, statements) {
return node.expression !== expression || node.statements !== statements ? createDefaultClause(expression, statements) : node;
}
export function updateObjectBindingPattern(node, elements) {
return node.elements !== elements ? createObjectBindingPattern(elements) : node;
}
export function updateArrayBindingPattern(node, elements) {
return node.elements !== elements ? createArrayBindingPattern(elements) : node;
}
export function updateJSDocParameterTag(node, tagName, name, typeExpression, comment) {
return node.tagName !== tagName || node.name !== name || node.typeExpression !== typeExpression || node.comment !== comment ? createJSDocParameterTag(tagName, name, node.isBracketed, typeExpression, node.isNameFirst, comment) : node;
}
export function updateJSDocPropertyTag(node, tagName, name, typeExpression, comment) {
return node.tagName !== tagName || node.name !== name || node.typeExpression !== typeExpression || node.comment !== comment ? createJSDocPropertyTag(tagName, name, node.isBracketed, typeExpression, node.isNameFirst, comment) : node;
}
export function createSourceFile(statements, endOfFileToken, text, fileName, path) {
return new NodeObject(SyntaxKind.SourceFile, {
statements: createNodeArray(statements),
endOfFileToken,
text,
fileName,
path,
});
}
function cloneSourceFileWithChanges(source, statements, endOfFileToken) {
return new NodeObject(SyntaxKind.SourceFile, {
...cloneSourceFileData(source),
statements: createNodeArray(statements),
endOfFileToken,
});
}
export function updateSourceFile(node, statements, endOfFileToken) {
return node.statements !== statements || node.endOfFileToken !== endOfFileToken
? cloneSourceFileWithChanges(node, statements, endOfFileToken)
: node;
}
//# sourceMappingURL=factory.generated.js.map