@ox-content/vite-plugin 2.90.0 → 3.0.0-alpha.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1 @@
1
+ {"version":3,"file":"api.cjs","names":["visitNode","visitNodes","visitEachChildOfJSDocParameterTag","visitEachChildOfJSDocPropertyTag","visitNode","visitNodes","isNodeArray","forEachChildOfJSDocParameterTag","forEachChildOfJSDocPropertyTag","Buffer","NO_STRUCTURED_DATA","path","fileURLToPath","fs","module","spawn","openSync","readSync","writeSync","Symbol"],"sources":["../../../node_modules/.pnpm/@typescript+native-preview@7.0.0-dev.20260707.2/node_modules/@typescript/native-preview/dist/enums/completionItemKind.js","../../../node_modules/.pnpm/@typescript+native-preview@7.0.0-dev.20260707.2/node_modules/@typescript/native-preview/dist/enums/diagnosticCategory.js","../../../node_modules/.pnpm/@typescript+native-preview@7.0.0-dev.20260707.2/node_modules/@typescript/native-preview/dist/enums/elementFlags.js","../../../node_modules/.pnpm/@typescript+native-preview@7.0.0-dev.20260707.2/node_modules/@typescript/native-preview/dist/enums/moduleKind.js","../../../node_modules/.pnpm/@typescript+native-preview@7.0.0-dev.20260707.2/node_modules/@typescript/native-preview/dist/enums/nodeBuilderFlags.js","../../../node_modules/.pnpm/@typescript+native-preview@7.0.0-dev.20260707.2/node_modules/@typescript/native-preview/dist/enums/objectFlags.js","../../../node_modules/.pnpm/@typescript+native-preview@7.0.0-dev.20260707.2/node_modules/@typescript/native-preview/dist/enums/signatureFlags.js","../../../node_modules/.pnpm/@typescript+native-preview@7.0.0-dev.20260707.2/node_modules/@typescript/native-preview/dist/enums/signatureKind.js","../../../node_modules/.pnpm/@typescript+native-preview@7.0.0-dev.20260707.2/node_modules/@typescript/native-preview/dist/enums/symbolFlags.js","../../../node_modules/.pnpm/@typescript+native-preview@7.0.0-dev.20260707.2/node_modules/@typescript/native-preview/dist/enums/typeFlags.js","../../../node_modules/.pnpm/@typescript+native-preview@7.0.0-dev.20260707.2/node_modules/@typescript/native-preview/dist/enums/typePredicateKind.js","../../../node_modules/.pnpm/@typescript+native-preview@7.0.0-dev.20260707.2/node_modules/@typescript/native-preview/dist/enums/characterCodes.js","../../../node_modules/.pnpm/@typescript+native-preview@7.0.0-dev.20260707.2/node_modules/@typescript/native-preview/dist/enums/commentDirectiveType.js","../../../node_modules/.pnpm/@typescript+native-preview@7.0.0-dev.20260707.2/node_modules/@typescript/native-preview/dist/enums/internalSymbolName.js","../../../node_modules/.pnpm/@typescript+native-preview@7.0.0-dev.20260707.2/node_modules/@typescript/native-preview/dist/enums/languageVariant.js","../../../node_modules/.pnpm/@typescript+native-preview@7.0.0-dev.20260707.2/node_modules/@typescript/native-preview/dist/enums/modifierFlags.js","../../../node_modules/.pnpm/@typescript+native-preview@7.0.0-dev.20260707.2/node_modules/@typescript/native-preview/dist/enums/nodeFlags.js","../../../node_modules/.pnpm/@typescript+native-preview@7.0.0-dev.20260707.2/node_modules/@typescript/native-preview/dist/enums/regularExpressionFlags.js","../../../node_modules/.pnpm/@typescript+native-preview@7.0.0-dev.20260707.2/node_modules/@typescript/native-preview/dist/enums/scriptKind.js","../../../node_modules/.pnpm/@typescript+native-preview@7.0.0-dev.20260707.2/node_modules/@typescript/native-preview/dist/enums/scriptTarget.js","../../../node_modules/.pnpm/@typescript+native-preview@7.0.0-dev.20260707.2/node_modules/@typescript/native-preview/dist/enums/syntaxKind.js","../../../node_modules/.pnpm/@typescript+native-preview@7.0.0-dev.20260707.2/node_modules/@typescript/native-preview/dist/enums/tokenFlags.js","../../../node_modules/.pnpm/@typescript+native-preview@7.0.0-dev.20260707.2/node_modules/@typescript/native-preview/dist/ast/utils.js","../../../node_modules/.pnpm/@typescript+native-preview@7.0.0-dev.20260707.2/node_modules/@typescript/native-preview/dist/enums/outerExpressionKinds.js","../../../node_modules/.pnpm/@typescript+native-preview@7.0.0-dev.20260707.2/node_modules/@typescript/native-preview/dist/ast/is.generated.js","../../../node_modules/.pnpm/@typescript+native-preview@7.0.0-dev.20260707.2/node_modules/@typescript/native-preview/dist/ast/is.js","../../../node_modules/.pnpm/@typescript+native-preview@7.0.0-dev.20260707.2/node_modules/@typescript/native-preview/dist/ast/visitor.generated.js","../../../node_modules/.pnpm/@typescript+native-preview@7.0.0-dev.20260707.2/node_modules/@typescript/native-preview/dist/ast/visitor.js","../../../node_modules/.pnpm/@typescript+native-preview@7.0.0-dev.20260707.2/node_modules/@typescript/native-preview/dist/ast/factory.generated.js","../../../node_modules/.pnpm/@typescript+native-preview@7.0.0-dev.20260707.2/node_modules/@typescript/native-preview/dist/ast/scanner.js","../../../node_modules/.pnpm/@typescript+native-preview@7.0.0-dev.20260707.2/node_modules/@typescript/native-preview/dist/ast/astnav.js","../../../node_modules/.pnpm/@typescript+native-preview@7.0.0-dev.20260707.2/node_modules/@typescript/native-preview/dist/api/node/protocol.generated.js","../../../node_modules/.pnpm/@typescript+native-preview@7.0.0-dev.20260707.2/node_modules/@typescript/native-preview/dist/api/node/protocol.js","../../../node_modules/.pnpm/@typescript+native-preview@7.0.0-dev.20260707.2/node_modules/@typescript/native-preview/dist/api/node/encoder.generated.js","../../../node_modules/.pnpm/@typescript+native-preview@7.0.0-dev.20260707.2/node_modules/@typescript/native-preview/dist/api/node/wtf8.js","../../../node_modules/.pnpm/@typescript+native-preview@7.0.0-dev.20260707.2/node_modules/@typescript/native-preview/dist/api/node/msgpack.js","../../../node_modules/.pnpm/@typescript+native-preview@7.0.0-dev.20260707.2/node_modules/@typescript/native-preview/dist/api/node/encoder.js","../../../node_modules/.pnpm/@typescript+native-preview@7.0.0-dev.20260707.2/node_modules/@typescript/native-preview/dist/api/node/node.infrastructure.js","../../../node_modules/.pnpm/@typescript+native-preview@7.0.0-dev.20260707.2/node_modules/@typescript/native-preview/dist/api/node/node.generated.js","../../../node_modules/.pnpm/@typescript+native-preview@7.0.0-dev.20260707.2/node_modules/@typescript/native-preview/dist/api/node/node.js","../../../node_modules/.pnpm/@typescript+native-preview@7.0.0-dev.20260707.2/node_modules/@typescript/native-preview/dist/api/path.js","../../../node_modules/.pnpm/@typescript+native-preview@7.0.0-dev.20260707.2/node_modules/@typescript/native-preview/dist/api/proto.js","../../../node_modules/.pnpm/@typescript+native-preview@7.0.0-dev.20260707.2/node_modules/@typescript/native-preview/dist/api/sourceFileCache.js","../../../node_modules/.pnpm/@typescript+native-preview@7.0.0-dev.20260707.2/node_modules/@typescript/native-preview/dist/api/fs.js","../../../node_modules/.pnpm/@typescript+native-preview@7.0.0-dev.20260707.2/node_modules/@typescript/native-preview/lib/getExePath.js","../../../node_modules/.pnpm/@typescript+native-preview@7.0.0-dev.20260707.2/node_modules/@typescript/native-preview/dist/api/options.js","../../../node_modules/.pnpm/@typescript+native-preview@7.0.0-dev.20260707.2/node_modules/@typescript/native-preview/dist/api/syncChannel.js","../../../node_modules/.pnpm/@typescript+native-preview@7.0.0-dev.20260707.2/node_modules/@typescript/native-preview/dist/api/timing.js","../../../node_modules/.pnpm/@typescript+native-preview@7.0.0-dev.20260707.2/node_modules/@typescript/native-preview/dist/api/sync/client.js","../../../node_modules/.pnpm/@typescript+native-preview@7.0.0-dev.20260707.2/node_modules/@typescript/native-preview/dist/api/sync/api.js"],"sourcesContent":["// Code generated by Herebyfile.mjs generate:enums from internal/lsp/lsproto/lsp_generated.go. DO NOT EDIT.\nexport var CompletionItemKind;\n(function (CompletionItemKind) {\n CompletionItemKind[CompletionItemKind[\"Text\"] = 1] = \"Text\";\n CompletionItemKind[CompletionItemKind[\"Method\"] = 2] = \"Method\";\n CompletionItemKind[CompletionItemKind[\"Function\"] = 3] = \"Function\";\n CompletionItemKind[CompletionItemKind[\"Constructor\"] = 4] = \"Constructor\";\n CompletionItemKind[CompletionItemKind[\"Field\"] = 5] = \"Field\";\n CompletionItemKind[CompletionItemKind[\"Variable\"] = 6] = \"Variable\";\n CompletionItemKind[CompletionItemKind[\"Class\"] = 7] = \"Class\";\n CompletionItemKind[CompletionItemKind[\"Interface\"] = 8] = \"Interface\";\n CompletionItemKind[CompletionItemKind[\"Module\"] = 9] = \"Module\";\n CompletionItemKind[CompletionItemKind[\"Property\"] = 10] = \"Property\";\n CompletionItemKind[CompletionItemKind[\"Unit\"] = 11] = \"Unit\";\n CompletionItemKind[CompletionItemKind[\"Value\"] = 12] = \"Value\";\n CompletionItemKind[CompletionItemKind[\"Enum\"] = 13] = \"Enum\";\n CompletionItemKind[CompletionItemKind[\"Keyword\"] = 14] = \"Keyword\";\n CompletionItemKind[CompletionItemKind[\"Snippet\"] = 15] = \"Snippet\";\n CompletionItemKind[CompletionItemKind[\"Color\"] = 16] = \"Color\";\n CompletionItemKind[CompletionItemKind[\"File\"] = 17] = \"File\";\n CompletionItemKind[CompletionItemKind[\"Reference\"] = 18] = \"Reference\";\n CompletionItemKind[CompletionItemKind[\"Folder\"] = 19] = \"Folder\";\n CompletionItemKind[CompletionItemKind[\"EnumMember\"] = 20] = \"EnumMember\";\n CompletionItemKind[CompletionItemKind[\"Constant\"] = 21] = \"Constant\";\n CompletionItemKind[CompletionItemKind[\"Struct\"] = 22] = \"Struct\";\n CompletionItemKind[CompletionItemKind[\"Event\"] = 23] = \"Event\";\n CompletionItemKind[CompletionItemKind[\"Operator\"] = 24] = \"Operator\";\n CompletionItemKind[CompletionItemKind[\"TypeParameter\"] = 25] = \"TypeParameter\";\n})(CompletionItemKind || (CompletionItemKind = {}));\n//# sourceMappingURL=completionItemKind.js.map","// Code generated by Herebyfile.mjs generate:enums from internal/diagnostics/diagnostics.go. DO NOT EDIT.\nexport var DiagnosticCategory;\n(function (DiagnosticCategory) {\n DiagnosticCategory[DiagnosticCategory[\"Warning\"] = 0] = \"Warning\";\n DiagnosticCategory[DiagnosticCategory[\"Error\"] = 1] = \"Error\";\n DiagnosticCategory[DiagnosticCategory[\"Suggestion\"] = 2] = \"Suggestion\";\n DiagnosticCategory[DiagnosticCategory[\"Message\"] = 3] = \"Message\";\n})(DiagnosticCategory || (DiagnosticCategory = {}));\n//# sourceMappingURL=diagnosticCategory.js.map","// Code generated by Herebyfile.mjs generate:enums from internal/checker/types.go. DO NOT EDIT.\nexport var ElementFlags;\n(function (ElementFlags) {\n ElementFlags[ElementFlags[\"None\"] = 0] = \"None\";\n ElementFlags[ElementFlags[\"Required\"] = 1] = \"Required\";\n ElementFlags[ElementFlags[\"Optional\"] = 2] = \"Optional\";\n ElementFlags[ElementFlags[\"Rest\"] = 4] = \"Rest\";\n ElementFlags[ElementFlags[\"Variadic\"] = 8] = \"Variadic\";\n ElementFlags[ElementFlags[\"Fixed\"] = 3] = \"Fixed\";\n ElementFlags[ElementFlags[\"Variable\"] = 12] = \"Variable\";\n ElementFlags[ElementFlags[\"NonRequired\"] = 14] = \"NonRequired\";\n ElementFlags[ElementFlags[\"NonRest\"] = 11] = \"NonRest\";\n})(ElementFlags || (ElementFlags = {}));\n//# sourceMappingURL=elementFlags.js.map","// Code generated by Herebyfile.mjs generate:enums from internal/core/compileroptions.go. DO NOT EDIT.\nexport var ModuleKind;\n(function (ModuleKind) {\n ModuleKind[ModuleKind[\"None\"] = 0] = \"None\";\n ModuleKind[ModuleKind[\"CommonJS\"] = 1] = \"CommonJS\";\n ModuleKind[ModuleKind[\"AMD\"] = 2] = \"AMD\";\n ModuleKind[ModuleKind[\"UMD\"] = 3] = \"UMD\";\n ModuleKind[ModuleKind[\"System\"] = 4] = \"System\";\n ModuleKind[ModuleKind[\"ES2015\"] = 5] = \"ES2015\";\n ModuleKind[ModuleKind[\"ES2020\"] = 6] = \"ES2020\";\n ModuleKind[ModuleKind[\"ES2022\"] = 7] = \"ES2022\";\n ModuleKind[ModuleKind[\"ESNext\"] = 99] = \"ESNext\";\n ModuleKind[ModuleKind[\"Node16\"] = 100] = \"Node16\";\n ModuleKind[ModuleKind[\"Node18\"] = 101] = \"Node18\";\n ModuleKind[ModuleKind[\"Node20\"] = 102] = \"Node20\";\n ModuleKind[ModuleKind[\"NodeNext\"] = 199] = \"NodeNext\";\n ModuleKind[ModuleKind[\"Preserve\"] = 200] = \"Preserve\";\n})(ModuleKind || (ModuleKind = {}));\n//# sourceMappingURL=moduleKind.js.map","// Code generated by Herebyfile.mjs generate:enums from internal/nodebuilder/types.go. DO NOT EDIT.\nexport var NodeBuilderFlags;\n(function (NodeBuilderFlags) {\n NodeBuilderFlags[NodeBuilderFlags[\"None\"] = 0] = \"None\";\n NodeBuilderFlags[NodeBuilderFlags[\"NoTruncation\"] = 1] = \"NoTruncation\";\n NodeBuilderFlags[NodeBuilderFlags[\"WriteArrayAsGenericType\"] = 2] = \"WriteArrayAsGenericType\";\n NodeBuilderFlags[NodeBuilderFlags[\"GenerateNamesForShadowedTypeParams\"] = 4] = \"GenerateNamesForShadowedTypeParams\";\n NodeBuilderFlags[NodeBuilderFlags[\"UseStructuralFallback\"] = 8] = \"UseStructuralFallback\";\n NodeBuilderFlags[NodeBuilderFlags[\"ForbidIndexedAccessSymbolReferences\"] = 16] = \"ForbidIndexedAccessSymbolReferences\";\n NodeBuilderFlags[NodeBuilderFlags[\"WriteTypeArgumentsOfSignature\"] = 32] = \"WriteTypeArgumentsOfSignature\";\n NodeBuilderFlags[NodeBuilderFlags[\"UseFullyQualifiedType\"] = 64] = \"UseFullyQualifiedType\";\n NodeBuilderFlags[NodeBuilderFlags[\"UseOnlyExternalAliasing\"] = 128] = \"UseOnlyExternalAliasing\";\n NodeBuilderFlags[NodeBuilderFlags[\"SuppressAnyReturnType\"] = 256] = \"SuppressAnyReturnType\";\n NodeBuilderFlags[NodeBuilderFlags[\"WriteTypeParametersInQualifiedName\"] = 512] = \"WriteTypeParametersInQualifiedName\";\n NodeBuilderFlags[NodeBuilderFlags[\"MultilineObjectLiterals\"] = 1024] = \"MultilineObjectLiterals\";\n NodeBuilderFlags[NodeBuilderFlags[\"WriteClassExpressionAsTypeLiteral\"] = 2048] = \"WriteClassExpressionAsTypeLiteral\";\n NodeBuilderFlags[NodeBuilderFlags[\"UseTypeOfFunction\"] = 4096] = \"UseTypeOfFunction\";\n NodeBuilderFlags[NodeBuilderFlags[\"OmitParameterModifiers\"] = 8192] = \"OmitParameterModifiers\";\n NodeBuilderFlags[NodeBuilderFlags[\"UseAliasDefinedOutsideCurrentScope\"] = 16384] = \"UseAliasDefinedOutsideCurrentScope\";\n NodeBuilderFlags[NodeBuilderFlags[\"UseSingleQuotesForStringLiteralType\"] = 268435456] = \"UseSingleQuotesForStringLiteralType\";\n NodeBuilderFlags[NodeBuilderFlags[\"NoTypeReduction\"] = 536870912] = \"NoTypeReduction\";\n NodeBuilderFlags[NodeBuilderFlags[\"UseInstantiationExpressions\"] = 1073741824] = \"UseInstantiationExpressions\";\n NodeBuilderFlags[NodeBuilderFlags[\"OmitThisParameter\"] = 33554432] = \"OmitThisParameter\";\n NodeBuilderFlags[NodeBuilderFlags[\"WriteCallStyleSignature\"] = 134217728] = \"WriteCallStyleSignature\";\n NodeBuilderFlags[NodeBuilderFlags[\"AllowThisInObjectLiteral\"] = 32768] = \"AllowThisInObjectLiteral\";\n NodeBuilderFlags[NodeBuilderFlags[\"AllowQualifiedNameInPlaceOfIdentifier\"] = 65536] = \"AllowQualifiedNameInPlaceOfIdentifier\";\n NodeBuilderFlags[NodeBuilderFlags[\"AllowAnonymousIdentifier\"] = 131072] = \"AllowAnonymousIdentifier\";\n NodeBuilderFlags[NodeBuilderFlags[\"AllowEmptyUnionOrIntersection\"] = 262144] = \"AllowEmptyUnionOrIntersection\";\n NodeBuilderFlags[NodeBuilderFlags[\"AllowEmptyTuple\"] = 524288] = \"AllowEmptyTuple\";\n NodeBuilderFlags[NodeBuilderFlags[\"AllowUniqueESSymbolType\"] = 1048576] = \"AllowUniqueESSymbolType\";\n NodeBuilderFlags[NodeBuilderFlags[\"AllowEmptyIndexInfoType\"] = 2097152] = \"AllowEmptyIndexInfoType\";\n NodeBuilderFlags[NodeBuilderFlags[\"AllowNodeModulesRelativePaths\"] = 67108864] = \"AllowNodeModulesRelativePaths\";\n NodeBuilderFlags[NodeBuilderFlags[\"IgnoreErrors\"] = 70221824] = \"IgnoreErrors\";\n NodeBuilderFlags[NodeBuilderFlags[\"InObjectTypeLiteral\"] = 4194304] = \"InObjectTypeLiteral\";\n NodeBuilderFlags[NodeBuilderFlags[\"InTypeAlias\"] = 8388608] = \"InTypeAlias\";\n NodeBuilderFlags[NodeBuilderFlags[\"InInitialEntityName\"] = 16777216] = \"InInitialEntityName\";\n})(NodeBuilderFlags || (NodeBuilderFlags = {}));\n//# sourceMappingURL=nodeBuilderFlags.js.map","// Code generated by Herebyfile.mjs generate:enums from internal/checker/types.go. DO NOT EDIT.\nexport var ObjectFlags;\n(function (ObjectFlags) {\n ObjectFlags[ObjectFlags[\"None\"] = 0] = \"None\";\n ObjectFlags[ObjectFlags[\"Class\"] = 1] = \"Class\";\n ObjectFlags[ObjectFlags[\"Interface\"] = 2] = \"Interface\";\n ObjectFlags[ObjectFlags[\"Reference\"] = 4] = \"Reference\";\n ObjectFlags[ObjectFlags[\"Tuple\"] = 8] = \"Tuple\";\n ObjectFlags[ObjectFlags[\"Anonymous\"] = 16] = \"Anonymous\";\n ObjectFlags[ObjectFlags[\"Mapped\"] = 32] = \"Mapped\";\n ObjectFlags[ObjectFlags[\"Instantiated\"] = 64] = \"Instantiated\";\n ObjectFlags[ObjectFlags[\"ObjectLiteral\"] = 128] = \"ObjectLiteral\";\n ObjectFlags[ObjectFlags[\"EvolvingArray\"] = 256] = \"EvolvingArray\";\n ObjectFlags[ObjectFlags[\"ObjectLiteralPatternWithComputedProperties\"] = 512] = \"ObjectLiteralPatternWithComputedProperties\";\n ObjectFlags[ObjectFlags[\"ReverseMapped\"] = 1024] = \"ReverseMapped\";\n ObjectFlags[ObjectFlags[\"JsxAttributes\"] = 2048] = \"JsxAttributes\";\n ObjectFlags[ObjectFlags[\"JSLiteral\"] = 4096] = \"JSLiteral\";\n ObjectFlags[ObjectFlags[\"FreshLiteral\"] = 8192] = \"FreshLiteral\";\n ObjectFlags[ObjectFlags[\"ArrayLiteral\"] = 16384] = \"ArrayLiteral\";\n ObjectFlags[ObjectFlags[\"PrimitiveUnion\"] = 32768] = \"PrimitiveUnion\";\n ObjectFlags[ObjectFlags[\"ContainsWideningType\"] = 65536] = \"ContainsWideningType\";\n ObjectFlags[ObjectFlags[\"ContainsObjectOrArrayLiteral\"] = 131072] = \"ContainsObjectOrArrayLiteral\";\n ObjectFlags[ObjectFlags[\"NonInferrableType\"] = 262144] = \"NonInferrableType\";\n ObjectFlags[ObjectFlags[\"CouldContainTypeVariablesComputed\"] = 524288] = \"CouldContainTypeVariablesComputed\";\n ObjectFlags[ObjectFlags[\"CouldContainTypeVariables\"] = 1048576] = \"CouldContainTypeVariables\";\n ObjectFlags[ObjectFlags[\"MembersResolved\"] = 2097152] = \"MembersResolved\";\n ObjectFlags[ObjectFlags[\"ClassOrInterface\"] = 3] = \"ClassOrInterface\";\n ObjectFlags[ObjectFlags[\"RequiresWidening\"] = 196608] = \"RequiresWidening\";\n ObjectFlags[ObjectFlags[\"PropagatingFlags\"] = 458752] = \"PropagatingFlags\";\n ObjectFlags[ObjectFlags[\"InstantiatedMapped\"] = 96] = \"InstantiatedMapped\";\n ObjectFlags[ObjectFlags[\"InstantiationExpressionType\"] = 16777216] = \"InstantiationExpressionType\";\n ObjectFlags[ObjectFlags[\"SingleSignatureType\"] = 33554432] = \"SingleSignatureType\";\n ObjectFlags[ObjectFlags[\"ObjectTypeKindMask\"] = 50332991] = \"ObjectTypeKindMask\";\n ObjectFlags[ObjectFlags[\"ContainsSpread\"] = 4194304] = \"ContainsSpread\";\n ObjectFlags[ObjectFlags[\"ObjectRestType\"] = 8388608] = \"ObjectRestType\";\n ObjectFlags[ObjectFlags[\"IsClassInstanceClone\"] = 67108864] = \"IsClassInstanceClone\";\n ObjectFlags[ObjectFlags[\"IdenticalBaseTypeCalculated\"] = 134217728] = \"IdenticalBaseTypeCalculated\";\n ObjectFlags[ObjectFlags[\"IdenticalBaseTypeExists\"] = 268435456] = \"IdenticalBaseTypeExists\";\n ObjectFlags[ObjectFlags[\"UnresolvedMembers\"] = 536870912] = \"UnresolvedMembers\";\n ObjectFlags[ObjectFlags[\"FromTypeNode\"] = 1073741824] = \"FromTypeNode\";\n ObjectFlags[ObjectFlags[\"IsGenericTypeComputed\"] = 4194304] = \"IsGenericTypeComputed\";\n ObjectFlags[ObjectFlags[\"IsGenericObjectType\"] = 8388608] = \"IsGenericObjectType\";\n ObjectFlags[ObjectFlags[\"IsGenericIndexType\"] = 16777216] = \"IsGenericIndexType\";\n ObjectFlags[ObjectFlags[\"IsGenericType\"] = 25165824] = \"IsGenericType\";\n ObjectFlags[ObjectFlags[\"ContainsIntersections\"] = 33554432] = \"ContainsIntersections\";\n ObjectFlags[ObjectFlags[\"IsUnknownLikeUnionComputed\"] = 67108864] = \"IsUnknownLikeUnionComputed\";\n ObjectFlags[ObjectFlags[\"IsUnknownLikeUnion\"] = 134217728] = \"IsUnknownLikeUnion\";\n ObjectFlags[ObjectFlags[\"IsNeverIntersectionComputed\"] = 33554432] = \"IsNeverIntersectionComputed\";\n ObjectFlags[ObjectFlags[\"IsNeverIntersection\"] = 67108864] = \"IsNeverIntersection\";\n ObjectFlags[ObjectFlags[\"IsConstrainedTypeVariable\"] = 134217728] = \"IsConstrainedTypeVariable\";\n})(ObjectFlags || (ObjectFlags = {}));\n//# sourceMappingURL=objectFlags.js.map","// Code generated by Herebyfile.mjs generate:enums from internal/checker/types.go. DO NOT EDIT.\nexport var SignatureFlags;\n(function (SignatureFlags) {\n SignatureFlags[SignatureFlags[\"None\"] = 0] = \"None\";\n SignatureFlags[SignatureFlags[\"HasRestParameter\"] = 1] = \"HasRestParameter\";\n SignatureFlags[SignatureFlags[\"HasLiteralTypes\"] = 2] = \"HasLiteralTypes\";\n SignatureFlags[SignatureFlags[\"Construct\"] = 4] = \"Construct\";\n SignatureFlags[SignatureFlags[\"Abstract\"] = 8] = \"Abstract\";\n SignatureFlags[SignatureFlags[\"IsInnerCallChain\"] = 16] = \"IsInnerCallChain\";\n SignatureFlags[SignatureFlags[\"IsOuterCallChain\"] = 32] = \"IsOuterCallChain\";\n SignatureFlags[SignatureFlags[\"IsUntypedSignatureInJSFile\"] = 64] = \"IsUntypedSignatureInJSFile\";\n SignatureFlags[SignatureFlags[\"IsNonInferrable\"] = 128] = \"IsNonInferrable\";\n SignatureFlags[SignatureFlags[\"IsSignatureCandidateForOverloadFailure\"] = 256] = \"IsSignatureCandidateForOverloadFailure\";\n SignatureFlags[SignatureFlags[\"PropagatingFlags\"] = 335] = \"PropagatingFlags\";\n SignatureFlags[SignatureFlags[\"CallChainFlags\"] = 48] = \"CallChainFlags\";\n})(SignatureFlags || (SignatureFlags = {}));\n//# sourceMappingURL=signatureFlags.js.map","// Code generated by Herebyfile.mjs generate:enums from internal/checker/types.go. DO NOT EDIT.\nexport var SignatureKind;\n(function (SignatureKind) {\n SignatureKind[SignatureKind[\"Call\"] = 0] = \"Call\";\n SignatureKind[SignatureKind[\"Construct\"] = 1] = \"Construct\";\n})(SignatureKind || (SignatureKind = {}));\n//# sourceMappingURL=signatureKind.js.map","// Code generated by Herebyfile.mjs generate:enums from internal/ast/symbolflags.go. DO NOT EDIT.\nexport var SymbolFlags;\n(function (SymbolFlags) {\n SymbolFlags[SymbolFlags[\"None\"] = 0] = \"None\";\n SymbolFlags[SymbolFlags[\"FunctionScopedVariable\"] = 1] = \"FunctionScopedVariable\";\n SymbolFlags[SymbolFlags[\"BlockScopedVariable\"] = 2] = \"BlockScopedVariable\";\n SymbolFlags[SymbolFlags[\"Property\"] = 4] = \"Property\";\n SymbolFlags[SymbolFlags[\"EnumMember\"] = 8] = \"EnumMember\";\n SymbolFlags[SymbolFlags[\"Function\"] = 16] = \"Function\";\n SymbolFlags[SymbolFlags[\"Class\"] = 32] = \"Class\";\n SymbolFlags[SymbolFlags[\"Interface\"] = 64] = \"Interface\";\n SymbolFlags[SymbolFlags[\"ConstEnum\"] = 128] = \"ConstEnum\";\n SymbolFlags[SymbolFlags[\"RegularEnum\"] = 256] = \"RegularEnum\";\n SymbolFlags[SymbolFlags[\"ValueModule\"] = 512] = \"ValueModule\";\n SymbolFlags[SymbolFlags[\"NamespaceModule\"] = 1024] = \"NamespaceModule\";\n SymbolFlags[SymbolFlags[\"TypeLiteral\"] = 2048] = \"TypeLiteral\";\n SymbolFlags[SymbolFlags[\"ObjectLiteral\"] = 4096] = \"ObjectLiteral\";\n SymbolFlags[SymbolFlags[\"Method\"] = 8192] = \"Method\";\n SymbolFlags[SymbolFlags[\"Constructor\"] = 16384] = \"Constructor\";\n SymbolFlags[SymbolFlags[\"GetAccessor\"] = 32768] = \"GetAccessor\";\n SymbolFlags[SymbolFlags[\"SetAccessor\"] = 65536] = \"SetAccessor\";\n SymbolFlags[SymbolFlags[\"Signature\"] = 131072] = \"Signature\";\n SymbolFlags[SymbolFlags[\"TypeParameter\"] = 262144] = \"TypeParameter\";\n SymbolFlags[SymbolFlags[\"TypeAlias\"] = 524288] = \"TypeAlias\";\n SymbolFlags[SymbolFlags[\"ExportValue\"] = 1048576] = \"ExportValue\";\n SymbolFlags[SymbolFlags[\"Alias\"] = 2097152] = \"Alias\";\n SymbolFlags[SymbolFlags[\"Prototype\"] = 4194304] = \"Prototype\";\n SymbolFlags[SymbolFlags[\"ExportStar\"] = 8388608] = \"ExportStar\";\n SymbolFlags[SymbolFlags[\"Optional\"] = 16777216] = \"Optional\";\n SymbolFlags[SymbolFlags[\"Transient\"] = 33554432] = \"Transient\";\n SymbolFlags[SymbolFlags[\"Assignment\"] = 67108864] = \"Assignment\";\n SymbolFlags[SymbolFlags[\"ModuleExports\"] = 134217728] = \"ModuleExports\";\n SymbolFlags[SymbolFlags[\"ConstEnumOnlyModule\"] = 268435456] = \"ConstEnumOnlyModule\";\n SymbolFlags[SymbolFlags[\"ReplaceableByMethod\"] = 536870912] = \"ReplaceableByMethod\";\n SymbolFlags[SymbolFlags[\"GlobalLookup\"] = 1073741824] = \"GlobalLookup\";\n SymbolFlags[SymbolFlags[\"All\"] = 536870912] = \"All\";\n SymbolFlags[SymbolFlags[\"Enum\"] = 384] = \"Enum\";\n SymbolFlags[SymbolFlags[\"Variable\"] = 3] = \"Variable\";\n SymbolFlags[SymbolFlags[\"Value\"] = 111551] = \"Value\";\n SymbolFlags[SymbolFlags[\"Type\"] = 788968] = \"Type\";\n SymbolFlags[SymbolFlags[\"Namespace\"] = 1920] = \"Namespace\";\n SymbolFlags[SymbolFlags[\"Module\"] = 1536] = \"Module\";\n SymbolFlags[SymbolFlags[\"Accessor\"] = 98304] = \"Accessor\";\n SymbolFlags[SymbolFlags[\"FunctionScopedVariableExcludes\"] = 111550] = \"FunctionScopedVariableExcludes\";\n SymbolFlags[SymbolFlags[\"BlockScopedVariableExcludes\"] = 111551] = \"BlockScopedVariableExcludes\";\n SymbolFlags[SymbolFlags[\"ParameterExcludes\"] = 111551] = \"ParameterExcludes\";\n SymbolFlags[SymbolFlags[\"PropertyExcludes\"] = 13243] = \"PropertyExcludes\";\n SymbolFlags[SymbolFlags[\"EnumMemberExcludes\"] = 900095] = \"EnumMemberExcludes\";\n SymbolFlags[SymbolFlags[\"FunctionExcludes\"] = 110991] = \"FunctionExcludes\";\n SymbolFlags[SymbolFlags[\"ClassExcludes\"] = 899503] = \"ClassExcludes\";\n SymbolFlags[SymbolFlags[\"InterfaceExcludes\"] = 788872] = \"InterfaceExcludes\";\n SymbolFlags[SymbolFlags[\"RegularEnumExcludes\"] = 899327] = \"RegularEnumExcludes\";\n SymbolFlags[SymbolFlags[\"ConstEnumExcludes\"] = 899967] = \"ConstEnumExcludes\";\n SymbolFlags[SymbolFlags[\"ValueModuleExcludes\"] = 110735] = \"ValueModuleExcludes\";\n SymbolFlags[SymbolFlags[\"NamespaceModuleExcludes\"] = 0] = \"NamespaceModuleExcludes\";\n SymbolFlags[SymbolFlags[\"MethodExcludes\"] = 103359] = \"MethodExcludes\";\n SymbolFlags[SymbolFlags[\"GetAccessorExcludes\"] = 46011] = \"GetAccessorExcludes\";\n SymbolFlags[SymbolFlags[\"SetAccessorExcludes\"] = 78779] = \"SetAccessorExcludes\";\n SymbolFlags[SymbolFlags[\"AccessorExcludes\"] = 111547] = \"AccessorExcludes\";\n SymbolFlags[SymbolFlags[\"TypeParameterExcludes\"] = 526824] = \"TypeParameterExcludes\";\n SymbolFlags[SymbolFlags[\"TypeAliasExcludes\"] = 788968] = \"TypeAliasExcludes\";\n SymbolFlags[SymbolFlags[\"AliasExcludes\"] = 2097152] = \"AliasExcludes\";\n SymbolFlags[SymbolFlags[\"ModuleMember\"] = 2623475] = \"ModuleMember\";\n SymbolFlags[SymbolFlags[\"ExportHasLocal\"] = 944] = \"ExportHasLocal\";\n SymbolFlags[SymbolFlags[\"BlockScoped\"] = 418] = \"BlockScoped\";\n SymbolFlags[SymbolFlags[\"PropertyOrAccessor\"] = 98308] = \"PropertyOrAccessor\";\n SymbolFlags[SymbolFlags[\"ClassMember\"] = 106500] = \"ClassMember\";\n SymbolFlags[SymbolFlags[\"ExportSupportsDefaultModifier\"] = 112] = \"ExportSupportsDefaultModifier\";\n SymbolFlags[SymbolFlags[\"ExportDoesNotSupportDefaultModifier\"] = -113] = \"ExportDoesNotSupportDefaultModifier\";\n SymbolFlags[SymbolFlags[\"Classifiable\"] = 2885600] = \"Classifiable\";\n SymbolFlags[SymbolFlags[\"LateBindingContainer\"] = 6256] = \"LateBindingContainer\";\n})(SymbolFlags || (SymbolFlags = {}));\n//# sourceMappingURL=symbolFlags.js.map","// Code generated by Herebyfile.mjs generate:enums from internal/checker/types.go. DO NOT EDIT.\nexport var TypeFlags;\n(function (TypeFlags) {\n TypeFlags[TypeFlags[\"None\"] = 0] = \"None\";\n TypeFlags[TypeFlags[\"Any\"] = 1] = \"Any\";\n TypeFlags[TypeFlags[\"Unknown\"] = 2] = \"Unknown\";\n TypeFlags[TypeFlags[\"Undefined\"] = 4] = \"Undefined\";\n TypeFlags[TypeFlags[\"Null\"] = 8] = \"Null\";\n TypeFlags[TypeFlags[\"Void\"] = 16] = \"Void\";\n TypeFlags[TypeFlags[\"String\"] = 32] = \"String\";\n TypeFlags[TypeFlags[\"Number\"] = 64] = \"Number\";\n TypeFlags[TypeFlags[\"BigInt\"] = 128] = \"BigInt\";\n TypeFlags[TypeFlags[\"Boolean\"] = 256] = \"Boolean\";\n TypeFlags[TypeFlags[\"ESSymbol\"] = 512] = \"ESSymbol\";\n TypeFlags[TypeFlags[\"StringLiteral\"] = 1024] = \"StringLiteral\";\n TypeFlags[TypeFlags[\"NumberLiteral\"] = 2048] = \"NumberLiteral\";\n TypeFlags[TypeFlags[\"BigIntLiteral\"] = 4096] = \"BigIntLiteral\";\n TypeFlags[TypeFlags[\"BooleanLiteral\"] = 8192] = \"BooleanLiteral\";\n TypeFlags[TypeFlags[\"UniqueESSymbol\"] = 16384] = \"UniqueESSymbol\";\n TypeFlags[TypeFlags[\"EnumLiteral\"] = 32768] = \"EnumLiteral\";\n TypeFlags[TypeFlags[\"Enum\"] = 65536] = \"Enum\";\n TypeFlags[TypeFlags[\"NonPrimitive\"] = 131072] = \"NonPrimitive\";\n TypeFlags[TypeFlags[\"Never\"] = 262144] = \"Never\";\n TypeFlags[TypeFlags[\"TypeParameter\"] = 524288] = \"TypeParameter\";\n TypeFlags[TypeFlags[\"Object\"] = 1048576] = \"Object\";\n TypeFlags[TypeFlags[\"Index\"] = 2097152] = \"Index\";\n TypeFlags[TypeFlags[\"TemplateLiteral\"] = 4194304] = \"TemplateLiteral\";\n TypeFlags[TypeFlags[\"StringMapping\"] = 8388608] = \"StringMapping\";\n TypeFlags[TypeFlags[\"Substitution\"] = 16777216] = \"Substitution\";\n TypeFlags[TypeFlags[\"IndexedAccess\"] = 33554432] = \"IndexedAccess\";\n TypeFlags[TypeFlags[\"Conditional\"] = 67108864] = \"Conditional\";\n TypeFlags[TypeFlags[\"Union\"] = 134217728] = \"Union\";\n TypeFlags[TypeFlags[\"Intersection\"] = 268435456] = \"Intersection\";\n TypeFlags[TypeFlags[\"Reserved1\"] = 536870912] = \"Reserved1\";\n TypeFlags[TypeFlags[\"Reserved2\"] = 1073741824] = \"Reserved2\";\n TypeFlags[TypeFlags[\"Reserved3\"] = -2147483648] = \"Reserved3\";\n TypeFlags[TypeFlags[\"AnyOrUnknown\"] = 3] = \"AnyOrUnknown\";\n TypeFlags[TypeFlags[\"Nullable\"] = 12] = \"Nullable\";\n TypeFlags[TypeFlags[\"Literal\"] = 15360] = \"Literal\";\n TypeFlags[TypeFlags[\"Unit\"] = 97292] = \"Unit\";\n TypeFlags[TypeFlags[\"Freshable\"] = 80896] = \"Freshable\";\n TypeFlags[TypeFlags[\"StringOrNumberLiteral\"] = 3072] = \"StringOrNumberLiteral\";\n TypeFlags[TypeFlags[\"StringOrNumberLiteralOrUnique\"] = 19456] = \"StringOrNumberLiteralOrUnique\";\n TypeFlags[TypeFlags[\"DefinitelyFalsy\"] = 15388] = \"DefinitelyFalsy\";\n TypeFlags[TypeFlags[\"PossiblyFalsy\"] = 15868] = \"PossiblyFalsy\";\n TypeFlags[TypeFlags[\"Intrinsic\"] = 393983] = \"Intrinsic\";\n TypeFlags[TypeFlags[\"StringLike\"] = 12583968] = \"StringLike\";\n TypeFlags[TypeFlags[\"NumberLike\"] = 67648] = \"NumberLike\";\n TypeFlags[TypeFlags[\"BigIntLike\"] = 4224] = \"BigIntLike\";\n TypeFlags[TypeFlags[\"BooleanLike\"] = 8448] = \"BooleanLike\";\n TypeFlags[TypeFlags[\"EnumLike\"] = 98304] = \"EnumLike\";\n TypeFlags[TypeFlags[\"ESSymbolLike\"] = 16896] = \"ESSymbolLike\";\n TypeFlags[TypeFlags[\"VoidLike\"] = 20] = \"VoidLike\";\n TypeFlags[TypeFlags[\"Primitive\"] = 12713980] = \"Primitive\";\n TypeFlags[TypeFlags[\"DefinitelyNonNullable\"] = 13893600] = \"DefinitelyNonNullable\";\n TypeFlags[TypeFlags[\"DisjointDomains\"] = 12812284] = \"DisjointDomains\";\n TypeFlags[TypeFlags[\"UnionOrIntersection\"] = 402653184] = \"UnionOrIntersection\";\n TypeFlags[TypeFlags[\"StructuredType\"] = 403701760] = \"StructuredType\";\n TypeFlags[TypeFlags[\"TypeVariable\"] = 34078720] = \"TypeVariable\";\n TypeFlags[TypeFlags[\"InstantiableNonPrimitive\"] = 117964800] = \"InstantiableNonPrimitive\";\n TypeFlags[TypeFlags[\"InstantiablePrimitive\"] = 14680064] = \"InstantiablePrimitive\";\n TypeFlags[TypeFlags[\"Instantiable\"] = 132644864] = \"Instantiable\";\n TypeFlags[TypeFlags[\"StructuredOrInstantiable\"] = 536346624] = \"StructuredOrInstantiable\";\n TypeFlags[TypeFlags[\"ObjectFlagsType\"] = 403963917] = \"ObjectFlagsType\";\n TypeFlags[TypeFlags[\"Simplifiable\"] = 102760448] = \"Simplifiable\";\n TypeFlags[TypeFlags[\"Singleton\"] = 394239] = \"Singleton\";\n TypeFlags[TypeFlags[\"Narrowable\"] = 536575971] = \"Narrowable\";\n TypeFlags[TypeFlags[\"IncludesMask\"] = 416808959] = \"IncludesMask\";\n TypeFlags[TypeFlags[\"IncludesMissingType\"] = 524288] = \"IncludesMissingType\";\n TypeFlags[TypeFlags[\"IncludesNonWideningType\"] = 2097152] = \"IncludesNonWideningType\";\n TypeFlags[TypeFlags[\"IncludesWildcard\"] = 33554432] = \"IncludesWildcard\";\n TypeFlags[TypeFlags[\"IncludesEmptyObject\"] = 67108864] = \"IncludesEmptyObject\";\n TypeFlags[TypeFlags[\"IncludesInstantiable\"] = 16777216] = \"IncludesInstantiable\";\n TypeFlags[TypeFlags[\"IncludesConstrainedTypeVariable\"] = 536870912] = \"IncludesConstrainedTypeVariable\";\n TypeFlags[TypeFlags[\"IncludesError\"] = 1073741824] = \"IncludesError\";\n TypeFlags[TypeFlags[\"NotPrimitiveUnion\"] = 286523411] = \"NotPrimitiveUnion\";\n})(TypeFlags || (TypeFlags = {}));\n//# sourceMappingURL=typeFlags.js.map","// Code generated by Herebyfile.mjs generate:enums from internal/checker/types.go. DO NOT EDIT.\nexport var TypePredicateKind;\n(function (TypePredicateKind) {\n TypePredicateKind[TypePredicateKind[\"This\"] = 0] = \"This\";\n TypePredicateKind[TypePredicateKind[\"Identifier\"] = 1] = \"Identifier\";\n TypePredicateKind[TypePredicateKind[\"AssertsThis\"] = 2] = \"AssertsThis\";\n TypePredicateKind[TypePredicateKind[\"AssertsIdentifier\"] = 3] = \"AssertsIdentifier\";\n})(TypePredicateKind || (TypePredicateKind = {}));\n//# sourceMappingURL=typePredicateKind.js.map","export var CharacterCodes;\n(function (CharacterCodes) {\n CharacterCodes[CharacterCodes[\"EOF\"] = -1] = \"EOF\";\n CharacterCodes[CharacterCodes[\"nullCharacter\"] = 0] = \"nullCharacter\";\n CharacterCodes[CharacterCodes[\"maxAsciiCharacter\"] = 127] = \"maxAsciiCharacter\";\n CharacterCodes[CharacterCodes[\"lineFeed\"] = 10] = \"lineFeed\";\n CharacterCodes[CharacterCodes[\"carriageReturn\"] = 13] = \"carriageReturn\";\n CharacterCodes[CharacterCodes[\"lineSeparator\"] = 8232] = \"lineSeparator\";\n CharacterCodes[CharacterCodes[\"paragraphSeparator\"] = 8233] = \"paragraphSeparator\";\n CharacterCodes[CharacterCodes[\"nextLine\"] = 133] = \"nextLine\";\n CharacterCodes[CharacterCodes[\"space\"] = 32] = \"space\";\n CharacterCodes[CharacterCodes[\"nonBreakingSpace\"] = 160] = \"nonBreakingSpace\";\n CharacterCodes[CharacterCodes[\"enQuad\"] = 8192] = \"enQuad\";\n CharacterCodes[CharacterCodes[\"emQuad\"] = 8193] = \"emQuad\";\n CharacterCodes[CharacterCodes[\"enSpace\"] = 8194] = \"enSpace\";\n CharacterCodes[CharacterCodes[\"emSpace\"] = 8195] = \"emSpace\";\n CharacterCodes[CharacterCodes[\"threePerEmSpace\"] = 8196] = \"threePerEmSpace\";\n CharacterCodes[CharacterCodes[\"fourPerEmSpace\"] = 8197] = \"fourPerEmSpace\";\n CharacterCodes[CharacterCodes[\"sixPerEmSpace\"] = 8198] = \"sixPerEmSpace\";\n CharacterCodes[CharacterCodes[\"figureSpace\"] = 8199] = \"figureSpace\";\n CharacterCodes[CharacterCodes[\"punctuationSpace\"] = 8200] = \"punctuationSpace\";\n CharacterCodes[CharacterCodes[\"thinSpace\"] = 8201] = \"thinSpace\";\n CharacterCodes[CharacterCodes[\"hairSpace\"] = 8202] = \"hairSpace\";\n CharacterCodes[CharacterCodes[\"zeroWidthSpace\"] = 8203] = \"zeroWidthSpace\";\n CharacterCodes[CharacterCodes[\"narrowNoBreakSpace\"] = 8239] = \"narrowNoBreakSpace\";\n CharacterCodes[CharacterCodes[\"ideographicSpace\"] = 12288] = \"ideographicSpace\";\n CharacterCodes[CharacterCodes[\"mathematicalSpace\"] = 8287] = \"mathematicalSpace\";\n CharacterCodes[CharacterCodes[\"ogham\"] = 5765] = \"ogham\";\n CharacterCodes[CharacterCodes[\"replacementCharacter\"] = 65533] = \"replacementCharacter\";\n CharacterCodes[CharacterCodes[\"_\"] = 95] = \"_\";\n CharacterCodes[CharacterCodes[\"$\"] = 36] = \"$\";\n CharacterCodes[CharacterCodes[\"_0\"] = 48] = \"_0\";\n CharacterCodes[CharacterCodes[\"_1\"] = 49] = \"_1\";\n CharacterCodes[CharacterCodes[\"_2\"] = 50] = \"_2\";\n CharacterCodes[CharacterCodes[\"_3\"] = 51] = \"_3\";\n CharacterCodes[CharacterCodes[\"_4\"] = 52] = \"_4\";\n CharacterCodes[CharacterCodes[\"_5\"] = 53] = \"_5\";\n CharacterCodes[CharacterCodes[\"_6\"] = 54] = \"_6\";\n CharacterCodes[CharacterCodes[\"_7\"] = 55] = \"_7\";\n CharacterCodes[CharacterCodes[\"_8\"] = 56] = \"_8\";\n CharacterCodes[CharacterCodes[\"_9\"] = 57] = \"_9\";\n CharacterCodes[CharacterCodes[\"a\"] = 97] = \"a\";\n CharacterCodes[CharacterCodes[\"b\"] = 98] = \"b\";\n CharacterCodes[CharacterCodes[\"c\"] = 99] = \"c\";\n CharacterCodes[CharacterCodes[\"d\"] = 100] = \"d\";\n CharacterCodes[CharacterCodes[\"e\"] = 101] = \"e\";\n CharacterCodes[CharacterCodes[\"f\"] = 102] = \"f\";\n CharacterCodes[CharacterCodes[\"g\"] = 103] = \"g\";\n CharacterCodes[CharacterCodes[\"h\"] = 104] = \"h\";\n CharacterCodes[CharacterCodes[\"i\"] = 105] = \"i\";\n CharacterCodes[CharacterCodes[\"j\"] = 106] = \"j\";\n CharacterCodes[CharacterCodes[\"k\"] = 107] = \"k\";\n CharacterCodes[CharacterCodes[\"l\"] = 108] = \"l\";\n CharacterCodes[CharacterCodes[\"m\"] = 109] = \"m\";\n CharacterCodes[CharacterCodes[\"n\"] = 110] = \"n\";\n CharacterCodes[CharacterCodes[\"o\"] = 111] = \"o\";\n CharacterCodes[CharacterCodes[\"p\"] = 112] = \"p\";\n CharacterCodes[CharacterCodes[\"q\"] = 113] = \"q\";\n CharacterCodes[CharacterCodes[\"r\"] = 114] = \"r\";\n CharacterCodes[CharacterCodes[\"s\"] = 115] = \"s\";\n CharacterCodes[CharacterCodes[\"t\"] = 116] = \"t\";\n CharacterCodes[CharacterCodes[\"u\"] = 117] = \"u\";\n CharacterCodes[CharacterCodes[\"v\"] = 118] = \"v\";\n CharacterCodes[CharacterCodes[\"w\"] = 119] = \"w\";\n CharacterCodes[CharacterCodes[\"x\"] = 120] = \"x\";\n CharacterCodes[CharacterCodes[\"y\"] = 121] = \"y\";\n CharacterCodes[CharacterCodes[\"z\"] = 122] = \"z\";\n CharacterCodes[CharacterCodes[\"A\"] = 65] = \"A\";\n CharacterCodes[CharacterCodes[\"B\"] = 66] = \"B\";\n CharacterCodes[CharacterCodes[\"C\"] = 67] = \"C\";\n CharacterCodes[CharacterCodes[\"D\"] = 68] = \"D\";\n CharacterCodes[CharacterCodes[\"E\"] = 69] = \"E\";\n CharacterCodes[CharacterCodes[\"F\"] = 70] = \"F\";\n CharacterCodes[CharacterCodes[\"G\"] = 71] = \"G\";\n CharacterCodes[CharacterCodes[\"H\"] = 72] = \"H\";\n CharacterCodes[CharacterCodes[\"I\"] = 73] = \"I\";\n CharacterCodes[CharacterCodes[\"J\"] = 74] = \"J\";\n CharacterCodes[CharacterCodes[\"K\"] = 75] = \"K\";\n CharacterCodes[CharacterCodes[\"L\"] = 76] = \"L\";\n CharacterCodes[CharacterCodes[\"M\"] = 77] = \"M\";\n CharacterCodes[CharacterCodes[\"N\"] = 78] = \"N\";\n CharacterCodes[CharacterCodes[\"O\"] = 79] = \"O\";\n CharacterCodes[CharacterCodes[\"P\"] = 80] = \"P\";\n CharacterCodes[CharacterCodes[\"Q\"] = 81] = \"Q\";\n CharacterCodes[CharacterCodes[\"R\"] = 82] = \"R\";\n CharacterCodes[CharacterCodes[\"S\"] = 83] = \"S\";\n CharacterCodes[CharacterCodes[\"T\"] = 84] = \"T\";\n CharacterCodes[CharacterCodes[\"U\"] = 85] = \"U\";\n CharacterCodes[CharacterCodes[\"V\"] = 86] = \"V\";\n CharacterCodes[CharacterCodes[\"W\"] = 87] = \"W\";\n CharacterCodes[CharacterCodes[\"X\"] = 88] = \"X\";\n CharacterCodes[CharacterCodes[\"Y\"] = 89] = \"Y\";\n CharacterCodes[CharacterCodes[\"Z\"] = 90] = \"Z\";\n CharacterCodes[CharacterCodes[\"ampersand\"] = 38] = \"ampersand\";\n CharacterCodes[CharacterCodes[\"asterisk\"] = 42] = \"asterisk\";\n CharacterCodes[CharacterCodes[\"at\"] = 64] = \"at\";\n CharacterCodes[CharacterCodes[\"backslash\"] = 92] = \"backslash\";\n CharacterCodes[CharacterCodes[\"backtick\"] = 96] = \"backtick\";\n CharacterCodes[CharacterCodes[\"bar\"] = 124] = \"bar\";\n CharacterCodes[CharacterCodes[\"caret\"] = 94] = \"caret\";\n CharacterCodes[CharacterCodes[\"closeBrace\"] = 125] = \"closeBrace\";\n CharacterCodes[CharacterCodes[\"closeBracket\"] = 93] = \"closeBracket\";\n CharacterCodes[CharacterCodes[\"closeParen\"] = 41] = \"closeParen\";\n CharacterCodes[CharacterCodes[\"colon\"] = 58] = \"colon\";\n CharacterCodes[CharacterCodes[\"comma\"] = 44] = \"comma\";\n CharacterCodes[CharacterCodes[\"dot\"] = 46] = \"dot\";\n CharacterCodes[CharacterCodes[\"doubleQuote\"] = 34] = \"doubleQuote\";\n CharacterCodes[CharacterCodes[\"equals\"] = 61] = \"equals\";\n CharacterCodes[CharacterCodes[\"exclamation\"] = 33] = \"exclamation\";\n CharacterCodes[CharacterCodes[\"greaterThan\"] = 62] = \"greaterThan\";\n CharacterCodes[CharacterCodes[\"hash\"] = 35] = \"hash\";\n CharacterCodes[CharacterCodes[\"lessThan\"] = 60] = \"lessThan\";\n CharacterCodes[CharacterCodes[\"minus\"] = 45] = \"minus\";\n CharacterCodes[CharacterCodes[\"openBrace\"] = 123] = \"openBrace\";\n CharacterCodes[CharacterCodes[\"openBracket\"] = 91] = \"openBracket\";\n CharacterCodes[CharacterCodes[\"openParen\"] = 40] = \"openParen\";\n CharacterCodes[CharacterCodes[\"percent\"] = 37] = \"percent\";\n CharacterCodes[CharacterCodes[\"plus\"] = 43] = \"plus\";\n CharacterCodes[CharacterCodes[\"question\"] = 63] = \"question\";\n CharacterCodes[CharacterCodes[\"semicolon\"] = 59] = \"semicolon\";\n CharacterCodes[CharacterCodes[\"singleQuote\"] = 39] = \"singleQuote\";\n CharacterCodes[CharacterCodes[\"slash\"] = 47] = \"slash\";\n CharacterCodes[CharacterCodes[\"tilde\"] = 126] = \"tilde\";\n CharacterCodes[CharacterCodes[\"backspace\"] = 8] = \"backspace\";\n CharacterCodes[CharacterCodes[\"formFeed\"] = 12] = \"formFeed\";\n CharacterCodes[CharacterCodes[\"byteOrderMark\"] = 65279] = \"byteOrderMark\";\n CharacterCodes[CharacterCodes[\"tab\"] = 9] = \"tab\";\n CharacterCodes[CharacterCodes[\"verticalTab\"] = 11] = \"verticalTab\";\n})(CharacterCodes || (CharacterCodes = {}));\n//# sourceMappingURL=characterCodes.js.map","export var CommentDirectiveType;\n(function (CommentDirectiveType) {\n CommentDirectiveType[CommentDirectiveType[\"ExpectError\"] = 0] = \"ExpectError\";\n CommentDirectiveType[CommentDirectiveType[\"Ignore\"] = 1] = \"Ignore\";\n})(CommentDirectiveType || (CommentDirectiveType = {}));\n//# sourceMappingURL=commentDirectiveType.js.map","// Code generated by Herebyfile.mjs generate:enums from internal/ast/symbol.go. DO NOT EDIT.\nexport var InternalSymbolName;\n(function (InternalSymbolName) {\n InternalSymbolName[\"Call\"] = \"__call\";\n InternalSymbolName[\"Constructor\"] = \"__constructor\";\n InternalSymbolName[\"New\"] = \"__new\";\n InternalSymbolName[\"Index\"] = \"__index\";\n InternalSymbolName[\"ExportStar\"] = \"__export\";\n InternalSymbolName[\"Global\"] = \"__global\";\n InternalSymbolName[\"Missing\"] = \"__missing\";\n InternalSymbolName[\"Type\"] = \"__type\";\n InternalSymbolName[\"Object\"] = \"__object\";\n InternalSymbolName[\"JSXAttributes\"] = \"__jsxAttributes\";\n InternalSymbolName[\"Class\"] = \"__class\";\n InternalSymbolName[\"Function\"] = \"__function\";\n InternalSymbolName[\"Computed\"] = \"__computed\";\n InternalSymbolName[\"AssignmentDeclaration\"] = \"__assignment\";\n InternalSymbolName[\"InstantiationExpression\"] = \"__instantiationExpression\";\n InternalSymbolName[\"ImportAttributes\"] = \"__importAttributes\";\n InternalSymbolName[\"ExportEquals\"] = \"export=\";\n InternalSymbolName[\"Default\"] = \"default\";\n InternalSymbolName[\"This\"] = \"this\";\n InternalSymbolName[\"ModuleExports\"] = \"module.exports\";\n})(InternalSymbolName || (InternalSymbolName = {}));\n//# sourceMappingURL=internalSymbolName.js.map","export var LanguageVariant;\n(function (LanguageVariant) {\n LanguageVariant[LanguageVariant[\"Standard\"] = 0] = \"Standard\";\n LanguageVariant[LanguageVariant[\"JSX\"] = 1] = \"JSX\";\n})(LanguageVariant || (LanguageVariant = {}));\n//# sourceMappingURL=languageVariant.js.map","// Code generated by Herebyfile.mjs generate:enums from internal/ast/modifierflags.go. DO NOT EDIT.\nexport var ModifierFlags;\n(function (ModifierFlags) {\n ModifierFlags[ModifierFlags[\"None\"] = 0] = \"None\";\n ModifierFlags[ModifierFlags[\"Public\"] = 1] = \"Public\";\n ModifierFlags[ModifierFlags[\"Private\"] = 2] = \"Private\";\n ModifierFlags[ModifierFlags[\"Protected\"] = 4] = \"Protected\";\n ModifierFlags[ModifierFlags[\"Readonly\"] = 8] = \"Readonly\";\n ModifierFlags[ModifierFlags[\"Override\"] = 16] = \"Override\";\n ModifierFlags[ModifierFlags[\"Export\"] = 32] = \"Export\";\n ModifierFlags[ModifierFlags[\"Abstract\"] = 64] = \"Abstract\";\n ModifierFlags[ModifierFlags[\"Ambient\"] = 128] = \"Ambient\";\n ModifierFlags[ModifierFlags[\"Static\"] = 256] = \"Static\";\n ModifierFlags[ModifierFlags[\"Accessor\"] = 512] = \"Accessor\";\n ModifierFlags[ModifierFlags[\"Async\"] = 1024] = \"Async\";\n ModifierFlags[ModifierFlags[\"Default\"] = 2048] = \"Default\";\n ModifierFlags[ModifierFlags[\"Const\"] = 4096] = \"Const\";\n ModifierFlags[ModifierFlags[\"In\"] = 8192] = \"In\";\n ModifierFlags[ModifierFlags[\"Out\"] = 16384] = \"Out\";\n ModifierFlags[ModifierFlags[\"Decorator\"] = 32768] = \"Decorator\";\n ModifierFlags[ModifierFlags[\"Deprecated\"] = 65536] = \"Deprecated\";\n ModifierFlags[ModifierFlags[\"JSDocPublic\"] = 8388608] = \"JSDocPublic\";\n ModifierFlags[ModifierFlags[\"JSDocPrivate\"] = 16777216] = \"JSDocPrivate\";\n ModifierFlags[ModifierFlags[\"JSDocProtected\"] = 33554432] = \"JSDocProtected\";\n ModifierFlags[ModifierFlags[\"JSDocReadonly\"] = 67108864] = \"JSDocReadonly\";\n ModifierFlags[ModifierFlags[\"JSDocOverride\"] = 134217728] = \"JSDocOverride\";\n ModifierFlags[ModifierFlags[\"HasComputedJSDocModifiers\"] = 268435456] = \"HasComputedJSDocModifiers\";\n ModifierFlags[ModifierFlags[\"HasComputedFlags\"] = 536870912] = \"HasComputedFlags\";\n ModifierFlags[ModifierFlags[\"SyntacticOrJSDocModifiers\"] = 31] = \"SyntacticOrJSDocModifiers\";\n ModifierFlags[ModifierFlags[\"SyntacticOnlyModifiers\"] = 65504] = \"SyntacticOnlyModifiers\";\n ModifierFlags[ModifierFlags[\"SyntacticModifiers\"] = 65535] = \"SyntacticModifiers\";\n ModifierFlags[ModifierFlags[\"JSDocCacheOnlyModifiers\"] = 260046848] = \"JSDocCacheOnlyModifiers\";\n ModifierFlags[ModifierFlags[\"JSDocOnlyModifiers\"] = 65536] = \"JSDocOnlyModifiers\";\n ModifierFlags[ModifierFlags[\"NonCacheOnlyModifiers\"] = 131071] = \"NonCacheOnlyModifiers\";\n ModifierFlags[ModifierFlags[\"AccessibilityModifier\"] = 7] = \"AccessibilityModifier\";\n ModifierFlags[ModifierFlags[\"ParameterPropertyModifier\"] = 31] = \"ParameterPropertyModifier\";\n ModifierFlags[ModifierFlags[\"NonPublicAccessibilityModifier\"] = 6] = \"NonPublicAccessibilityModifier\";\n ModifierFlags[ModifierFlags[\"TypeScriptModifier\"] = 28895] = \"TypeScriptModifier\";\n ModifierFlags[ModifierFlags[\"ExportDefault\"] = 2080] = \"ExportDefault\";\n ModifierFlags[ModifierFlags[\"All\"] = 131071] = \"All\";\n ModifierFlags[ModifierFlags[\"Modifier\"] = 98303] = \"Modifier\";\n ModifierFlags[ModifierFlags[\"JavaScript\"] = 3872] = \"JavaScript\";\n})(ModifierFlags || (ModifierFlags = {}));\n//# sourceMappingURL=modifierFlags.js.map","// Code generated by Herebyfile.mjs generate:enums from internal/ast/nodeflags.go. DO NOT EDIT.\nexport var NodeFlags;\n(function (NodeFlags) {\n NodeFlags[NodeFlags[\"None\"] = 0] = \"None\";\n NodeFlags[NodeFlags[\"Let\"] = 1] = \"Let\";\n NodeFlags[NodeFlags[\"Const\"] = 2] = \"Const\";\n NodeFlags[NodeFlags[\"Using\"] = 4] = \"Using\";\n NodeFlags[NodeFlags[\"Reparsed\"] = 8] = \"Reparsed\";\n NodeFlags[NodeFlags[\"Synthesized\"] = 16] = \"Synthesized\";\n NodeFlags[NodeFlags[\"OptionalChain\"] = 32] = \"OptionalChain\";\n NodeFlags[NodeFlags[\"ExportContext\"] = 64] = \"ExportContext\";\n NodeFlags[NodeFlags[\"ContainsThis\"] = 128] = \"ContainsThis\";\n NodeFlags[NodeFlags[\"HasImplicitReturn\"] = 256] = \"HasImplicitReturn\";\n NodeFlags[NodeFlags[\"HasExplicitReturn\"] = 512] = \"HasExplicitReturn\";\n NodeFlags[NodeFlags[\"DisallowInContext\"] = 1024] = \"DisallowInContext\";\n NodeFlags[NodeFlags[\"YieldContext\"] = 2048] = \"YieldContext\";\n NodeFlags[NodeFlags[\"DecoratorContext\"] = 4096] = \"DecoratorContext\";\n NodeFlags[NodeFlags[\"AwaitContext\"] = 8192] = \"AwaitContext\";\n NodeFlags[NodeFlags[\"DisallowConditionalTypesContext\"] = 16384] = \"DisallowConditionalTypesContext\";\n NodeFlags[NodeFlags[\"ThisNodeHasError\"] = 32768] = \"ThisNodeHasError\";\n NodeFlags[NodeFlags[\"JavaScriptFile\"] = 65536] = \"JavaScriptFile\";\n NodeFlags[NodeFlags[\"ThisNodeOrAnySubNodesHasError\"] = 131072] = \"ThisNodeOrAnySubNodesHasError\";\n NodeFlags[NodeFlags[\"HasAsyncFunctions\"] = 262144] = \"HasAsyncFunctions\";\n NodeFlags[NodeFlags[\"PossiblyContainsDynamicImport\"] = 524288] = \"PossiblyContainsDynamicImport\";\n NodeFlags[NodeFlags[\"PossiblyContainsImportMeta\"] = 1048576] = \"PossiblyContainsImportMeta\";\n NodeFlags[NodeFlags[\"HasJSDoc\"] = 2097152] = \"HasJSDoc\";\n NodeFlags[NodeFlags[\"JSDoc\"] = 4194304] = \"JSDoc\";\n NodeFlags[NodeFlags[\"Ambient\"] = 8388608] = \"Ambient\";\n NodeFlags[NodeFlags[\"InWithStatement\"] = 16777216] = \"InWithStatement\";\n NodeFlags[NodeFlags[\"JsonFile\"] = 33554432] = \"JsonFile\";\n NodeFlags[NodeFlags[\"PossiblyContainsDeprecatedTag\"] = 67108864] = \"PossiblyContainsDeprecatedTag\";\n NodeFlags[NodeFlags[\"Unreachable\"] = 134217728] = \"Unreachable\";\n NodeFlags[NodeFlags[\"ReparserTransformedLiteral\"] = 268435456] = \"ReparserTransformedLiteral\";\n NodeFlags[NodeFlags[\"BlockScoped\"] = 7] = \"BlockScoped\";\n NodeFlags[NodeFlags[\"Constant\"] = 6] = \"Constant\";\n NodeFlags[NodeFlags[\"AwaitUsing\"] = 6] = \"AwaitUsing\";\n NodeFlags[NodeFlags[\"ReachabilityCheckFlags\"] = 768] = \"ReachabilityCheckFlags\";\n NodeFlags[NodeFlags[\"ReachabilityAndEmitFlags\"] = 262912] = \"ReachabilityAndEmitFlags\";\n NodeFlags[NodeFlags[\"ContextFlags\"] = 25263104] = \"ContextFlags\";\n NodeFlags[NodeFlags[\"TypeExcludesFlags\"] = 10240] = \"TypeExcludesFlags\";\n NodeFlags[NodeFlags[\"PermanentlySetIncrementalFlags\"] = 1572864] = \"PermanentlySetIncrementalFlags\";\n NodeFlags[NodeFlags[\"IdentifierHasExtendedUnicodeEscape\"] = 128] = \"IdentifierHasExtendedUnicodeEscape\";\n NodeFlags[NodeFlags[\"IdentifierIsInJSDocNamespace\"] = 262144] = \"IdentifierIsInJSDocNamespace\";\n NodeFlags[NodeFlags[\"NestedNamespace\"] = 32] = \"NestedNamespace\";\n})(NodeFlags || (NodeFlags = {}));\n//# sourceMappingURL=nodeFlags.js.map","export var RegularExpressionFlags;\n(function (RegularExpressionFlags) {\n RegularExpressionFlags[RegularExpressionFlags[\"None\"] = 0] = \"None\";\n RegularExpressionFlags[RegularExpressionFlags[\"HasIndices\"] = 1] = \"HasIndices\";\n RegularExpressionFlags[RegularExpressionFlags[\"Global\"] = 2] = \"Global\";\n RegularExpressionFlags[RegularExpressionFlags[\"IgnoreCase\"] = 4] = \"IgnoreCase\";\n RegularExpressionFlags[RegularExpressionFlags[\"Multiline\"] = 8] = \"Multiline\";\n RegularExpressionFlags[RegularExpressionFlags[\"DotAll\"] = 16] = \"DotAll\";\n RegularExpressionFlags[RegularExpressionFlags[\"Unicode\"] = 32] = \"Unicode\";\n RegularExpressionFlags[RegularExpressionFlags[\"UnicodeSets\"] = 64] = \"UnicodeSets\";\n RegularExpressionFlags[RegularExpressionFlags[\"Sticky\"] = 128] = \"Sticky\";\n RegularExpressionFlags[RegularExpressionFlags[\"AnyUnicodeMode\"] = 96] = \"AnyUnicodeMode\";\n})(RegularExpressionFlags || (RegularExpressionFlags = {}));\n//# sourceMappingURL=regularExpressionFlags.js.map","export var ScriptKind;\n(function (ScriptKind) {\n ScriptKind[ScriptKind[\"Unknown\"] = 0] = \"Unknown\";\n ScriptKind[ScriptKind[\"JS\"] = 1] = \"JS\";\n ScriptKind[ScriptKind[\"JSX\"] = 2] = \"JSX\";\n ScriptKind[ScriptKind[\"TS\"] = 3] = \"TS\";\n ScriptKind[ScriptKind[\"TSX\"] = 4] = \"TSX\";\n ScriptKind[ScriptKind[\"External\"] = 5] = \"External\";\n ScriptKind[ScriptKind[\"JSON\"] = 6] = \"JSON\";\n ScriptKind[ScriptKind[\"Deferred\"] = 7] = \"Deferred\";\n})(ScriptKind || (ScriptKind = {}));\n//# sourceMappingURL=scriptKind.js.map","export var ScriptTarget;\n(function (ScriptTarget) {\n ScriptTarget[ScriptTarget[\"ES2015\"] = 2] = \"ES2015\";\n ScriptTarget[ScriptTarget[\"ES2016\"] = 3] = \"ES2016\";\n ScriptTarget[ScriptTarget[\"ES2017\"] = 4] = \"ES2017\";\n ScriptTarget[ScriptTarget[\"ES2018\"] = 5] = \"ES2018\";\n ScriptTarget[ScriptTarget[\"ES2019\"] = 6] = \"ES2019\";\n ScriptTarget[ScriptTarget[\"ES2020\"] = 7] = \"ES2020\";\n ScriptTarget[ScriptTarget[\"ES2021\"] = 8] = \"ES2021\";\n ScriptTarget[ScriptTarget[\"ES2022\"] = 9] = \"ES2022\";\n ScriptTarget[ScriptTarget[\"ES2023\"] = 10] = \"ES2023\";\n ScriptTarget[ScriptTarget[\"ES2024\"] = 11] = \"ES2024\";\n ScriptTarget[ScriptTarget[\"ES2025\"] = 12] = \"ES2025\";\n ScriptTarget[ScriptTarget[\"ESNext\"] = 99] = \"ESNext\";\n ScriptTarget[ScriptTarget[\"JSON\"] = 100] = \"JSON\";\n ScriptTarget[ScriptTarget[\"Latest\"] = 99] = \"Latest\";\n})(ScriptTarget || (ScriptTarget = {}));\n//# sourceMappingURL=scriptTarget.js.map","// Code generated by Herebyfile.mjs generate:enums from internal/ast/kind_generated.go. DO NOT EDIT.\nexport var SyntaxKind;\n(function (SyntaxKind) {\n SyntaxKind[SyntaxKind[\"Unknown\"] = 0] = \"Unknown\";\n SyntaxKind[SyntaxKind[\"EndOfFile\"] = 1] = \"EndOfFile\";\n SyntaxKind[SyntaxKind[\"SingleLineCommentTrivia\"] = 2] = \"SingleLineCommentTrivia\";\n SyntaxKind[SyntaxKind[\"MultiLineCommentTrivia\"] = 3] = \"MultiLineCommentTrivia\";\n SyntaxKind[SyntaxKind[\"NewLineTrivia\"] = 4] = \"NewLineTrivia\";\n SyntaxKind[SyntaxKind[\"WhitespaceTrivia\"] = 5] = \"WhitespaceTrivia\";\n SyntaxKind[SyntaxKind[\"ConflictMarkerTrivia\"] = 6] = \"ConflictMarkerTrivia\";\n SyntaxKind[SyntaxKind[\"NonTextFileMarkerTrivia\"] = 7] = \"NonTextFileMarkerTrivia\";\n SyntaxKind[SyntaxKind[\"NumericLiteral\"] = 8] = \"NumericLiteral\";\n SyntaxKind[SyntaxKind[\"BigIntLiteral\"] = 9] = \"BigIntLiteral\";\n SyntaxKind[SyntaxKind[\"StringLiteral\"] = 10] = \"StringLiteral\";\n SyntaxKind[SyntaxKind[\"JsxText\"] = 11] = \"JsxText\";\n SyntaxKind[SyntaxKind[\"JsxTextAllWhiteSpaces\"] = 12] = \"JsxTextAllWhiteSpaces\";\n SyntaxKind[SyntaxKind[\"RegularExpressionLiteral\"] = 13] = \"RegularExpressionLiteral\";\n SyntaxKind[SyntaxKind[\"NoSubstitutionTemplateLiteral\"] = 14] = \"NoSubstitutionTemplateLiteral\";\n SyntaxKind[SyntaxKind[\"TemplateHead\"] = 15] = \"TemplateHead\";\n SyntaxKind[SyntaxKind[\"TemplateMiddle\"] = 16] = \"TemplateMiddle\";\n SyntaxKind[SyntaxKind[\"TemplateTail\"] = 17] = \"TemplateTail\";\n SyntaxKind[SyntaxKind[\"OpenBraceToken\"] = 18] = \"OpenBraceToken\";\n SyntaxKind[SyntaxKind[\"CloseBraceToken\"] = 19] = \"CloseBraceToken\";\n SyntaxKind[SyntaxKind[\"OpenParenToken\"] = 20] = \"OpenParenToken\";\n SyntaxKind[SyntaxKind[\"CloseParenToken\"] = 21] = \"CloseParenToken\";\n SyntaxKind[SyntaxKind[\"OpenBracketToken\"] = 22] = \"OpenBracketToken\";\n SyntaxKind[SyntaxKind[\"CloseBracketToken\"] = 23] = \"CloseBracketToken\";\n SyntaxKind[SyntaxKind[\"DotToken\"] = 24] = \"DotToken\";\n SyntaxKind[SyntaxKind[\"DotDotDotToken\"] = 25] = \"DotDotDotToken\";\n SyntaxKind[SyntaxKind[\"SemicolonToken\"] = 26] = \"SemicolonToken\";\n SyntaxKind[SyntaxKind[\"CommaToken\"] = 27] = \"CommaToken\";\n SyntaxKind[SyntaxKind[\"QuestionDotToken\"] = 28] = \"QuestionDotToken\";\n SyntaxKind[SyntaxKind[\"LessThanToken\"] = 29] = \"LessThanToken\";\n SyntaxKind[SyntaxKind[\"LessThanSlashToken\"] = 30] = \"LessThanSlashToken\";\n SyntaxKind[SyntaxKind[\"GreaterThanToken\"] = 31] = \"GreaterThanToken\";\n SyntaxKind[SyntaxKind[\"LessThanEqualsToken\"] = 32] = \"LessThanEqualsToken\";\n SyntaxKind[SyntaxKind[\"GreaterThanEqualsToken\"] = 33] = \"GreaterThanEqualsToken\";\n SyntaxKind[SyntaxKind[\"EqualsEqualsToken\"] = 34] = \"EqualsEqualsToken\";\n SyntaxKind[SyntaxKind[\"ExclamationEqualsToken\"] = 35] = \"ExclamationEqualsToken\";\n SyntaxKind[SyntaxKind[\"EqualsEqualsEqualsToken\"] = 36] = \"EqualsEqualsEqualsToken\";\n SyntaxKind[SyntaxKind[\"ExclamationEqualsEqualsToken\"] = 37] = \"ExclamationEqualsEqualsToken\";\n SyntaxKind[SyntaxKind[\"EqualsGreaterThanToken\"] = 38] = \"EqualsGreaterThanToken\";\n SyntaxKind[SyntaxKind[\"PlusToken\"] = 39] = \"PlusToken\";\n SyntaxKind[SyntaxKind[\"MinusToken\"] = 40] = \"MinusToken\";\n SyntaxKind[SyntaxKind[\"AsteriskToken\"] = 41] = \"AsteriskToken\";\n SyntaxKind[SyntaxKind[\"AsteriskAsteriskToken\"] = 42] = \"AsteriskAsteriskToken\";\n SyntaxKind[SyntaxKind[\"SlashToken\"] = 43] = \"SlashToken\";\n SyntaxKind[SyntaxKind[\"PercentToken\"] = 44] = \"PercentToken\";\n SyntaxKind[SyntaxKind[\"PlusPlusToken\"] = 45] = \"PlusPlusToken\";\n SyntaxKind[SyntaxKind[\"MinusMinusToken\"] = 46] = \"MinusMinusToken\";\n SyntaxKind[SyntaxKind[\"LessThanLessThanToken\"] = 47] = \"LessThanLessThanToken\";\n SyntaxKind[SyntaxKind[\"GreaterThanGreaterThanToken\"] = 48] = \"GreaterThanGreaterThanToken\";\n SyntaxKind[SyntaxKind[\"GreaterThanGreaterThanGreaterThanToken\"] = 49] = \"GreaterThanGreaterThanGreaterThanToken\";\n SyntaxKind[SyntaxKind[\"AmpersandToken\"] = 50] = \"AmpersandToken\";\n SyntaxKind[SyntaxKind[\"BarToken\"] = 51] = \"BarToken\";\n SyntaxKind[SyntaxKind[\"CaretToken\"] = 52] = \"CaretToken\";\n SyntaxKind[SyntaxKind[\"ExclamationToken\"] = 53] = \"ExclamationToken\";\n SyntaxKind[SyntaxKind[\"TildeToken\"] = 54] = \"TildeToken\";\n SyntaxKind[SyntaxKind[\"AmpersandAmpersandToken\"] = 55] = \"AmpersandAmpersandToken\";\n SyntaxKind[SyntaxKind[\"BarBarToken\"] = 56] = \"BarBarToken\";\n SyntaxKind[SyntaxKind[\"QuestionToken\"] = 57] = \"QuestionToken\";\n SyntaxKind[SyntaxKind[\"ColonToken\"] = 58] = \"ColonToken\";\n SyntaxKind[SyntaxKind[\"AtToken\"] = 59] = \"AtToken\";\n SyntaxKind[SyntaxKind[\"QuestionQuestionToken\"] = 60] = \"QuestionQuestionToken\";\n SyntaxKind[SyntaxKind[\"BacktickToken\"] = 61] = \"BacktickToken\";\n SyntaxKind[SyntaxKind[\"HashToken\"] = 62] = \"HashToken\";\n SyntaxKind[SyntaxKind[\"EqualsToken\"] = 63] = \"EqualsToken\";\n SyntaxKind[SyntaxKind[\"PlusEqualsToken\"] = 64] = \"PlusEqualsToken\";\n SyntaxKind[SyntaxKind[\"MinusEqualsToken\"] = 65] = \"MinusEqualsToken\";\n SyntaxKind[SyntaxKind[\"AsteriskEqualsToken\"] = 66] = \"AsteriskEqualsToken\";\n SyntaxKind[SyntaxKind[\"AsteriskAsteriskEqualsToken\"] = 67] = \"AsteriskAsteriskEqualsToken\";\n SyntaxKind[SyntaxKind[\"SlashEqualsToken\"] = 68] = \"SlashEqualsToken\";\n SyntaxKind[SyntaxKind[\"PercentEqualsToken\"] = 69] = \"PercentEqualsToken\";\n SyntaxKind[SyntaxKind[\"LessThanLessThanEqualsToken\"] = 70] = \"LessThanLessThanEqualsToken\";\n SyntaxKind[SyntaxKind[\"GreaterThanGreaterThanEqualsToken\"] = 71] = \"GreaterThanGreaterThanEqualsToken\";\n SyntaxKind[SyntaxKind[\"GreaterThanGreaterThanGreaterThanEqualsToken\"] = 72] = \"GreaterThanGreaterThanGreaterThanEqualsToken\";\n SyntaxKind[SyntaxKind[\"AmpersandEqualsToken\"] = 73] = \"AmpersandEqualsToken\";\n SyntaxKind[SyntaxKind[\"BarEqualsToken\"] = 74] = \"BarEqualsToken\";\n SyntaxKind[SyntaxKind[\"BarBarEqualsToken\"] = 75] = \"BarBarEqualsToken\";\n SyntaxKind[SyntaxKind[\"AmpersandAmpersandEqualsToken\"] = 76] = \"AmpersandAmpersandEqualsToken\";\n SyntaxKind[SyntaxKind[\"QuestionQuestionEqualsToken\"] = 77] = \"QuestionQuestionEqualsToken\";\n SyntaxKind[SyntaxKind[\"CaretEqualsToken\"] = 78] = \"CaretEqualsToken\";\n SyntaxKind[SyntaxKind[\"Identifier\"] = 79] = \"Identifier\";\n SyntaxKind[SyntaxKind[\"PrivateIdentifier\"] = 80] = \"PrivateIdentifier\";\n SyntaxKind[SyntaxKind[\"JSDocCommentTextToken\"] = 81] = \"JSDocCommentTextToken\";\n SyntaxKind[SyntaxKind[\"BreakKeyword\"] = 82] = \"BreakKeyword\";\n SyntaxKind[SyntaxKind[\"CaseKeyword\"] = 83] = \"CaseKeyword\";\n SyntaxKind[SyntaxKind[\"CatchKeyword\"] = 84] = \"CatchKeyword\";\n SyntaxKind[SyntaxKind[\"ClassKeyword\"] = 85] = \"ClassKeyword\";\n SyntaxKind[SyntaxKind[\"ConstKeyword\"] = 86] = \"ConstKeyword\";\n SyntaxKind[SyntaxKind[\"ContinueKeyword\"] = 87] = \"ContinueKeyword\";\n SyntaxKind[SyntaxKind[\"DebuggerKeyword\"] = 88] = \"DebuggerKeyword\";\n SyntaxKind[SyntaxKind[\"DefaultKeyword\"] = 89] = \"DefaultKeyword\";\n SyntaxKind[SyntaxKind[\"DeleteKeyword\"] = 90] = \"DeleteKeyword\";\n SyntaxKind[SyntaxKind[\"DoKeyword\"] = 91] = \"DoKeyword\";\n SyntaxKind[SyntaxKind[\"ElseKeyword\"] = 92] = \"ElseKeyword\";\n SyntaxKind[SyntaxKind[\"EnumKeyword\"] = 93] = \"EnumKeyword\";\n SyntaxKind[SyntaxKind[\"ExportKeyword\"] = 94] = \"ExportKeyword\";\n SyntaxKind[SyntaxKind[\"ExtendsKeyword\"] = 95] = \"ExtendsKeyword\";\n SyntaxKind[SyntaxKind[\"FalseKeyword\"] = 96] = \"FalseKeyword\";\n SyntaxKind[SyntaxKind[\"FinallyKeyword\"] = 97] = \"FinallyKeyword\";\n SyntaxKind[SyntaxKind[\"ForKeyword\"] = 98] = \"ForKeyword\";\n SyntaxKind[SyntaxKind[\"FunctionKeyword\"] = 99] = \"FunctionKeyword\";\n SyntaxKind[SyntaxKind[\"IfKeyword\"] = 100] = \"IfKeyword\";\n SyntaxKind[SyntaxKind[\"ImportKeyword\"] = 101] = \"ImportKeyword\";\n SyntaxKind[SyntaxKind[\"InKeyword\"] = 102] = \"InKeyword\";\n SyntaxKind[SyntaxKind[\"InstanceOfKeyword\"] = 103] = \"InstanceOfKeyword\";\n SyntaxKind[SyntaxKind[\"NewKeyword\"] = 104] = \"NewKeyword\";\n SyntaxKind[SyntaxKind[\"NullKeyword\"] = 105] = \"NullKeyword\";\n SyntaxKind[SyntaxKind[\"ReturnKeyword\"] = 106] = \"ReturnKeyword\";\n SyntaxKind[SyntaxKind[\"SuperKeyword\"] = 107] = \"SuperKeyword\";\n SyntaxKind[SyntaxKind[\"SwitchKeyword\"] = 108] = \"SwitchKeyword\";\n SyntaxKind[SyntaxKind[\"ThisKeyword\"] = 109] = \"ThisKeyword\";\n SyntaxKind[SyntaxKind[\"ThrowKeyword\"] = 110] = \"ThrowKeyword\";\n SyntaxKind[SyntaxKind[\"TrueKeyword\"] = 111] = \"TrueKeyword\";\n SyntaxKind[SyntaxKind[\"TryKeyword\"] = 112] = \"TryKeyword\";\n SyntaxKind[SyntaxKind[\"TypeOfKeyword\"] = 113] = \"TypeOfKeyword\";\n SyntaxKind[SyntaxKind[\"VarKeyword\"] = 114] = \"VarKeyword\";\n SyntaxKind[SyntaxKind[\"VoidKeyword\"] = 115] = \"VoidKeyword\";\n SyntaxKind[SyntaxKind[\"WhileKeyword\"] = 116] = \"WhileKeyword\";\n SyntaxKind[SyntaxKind[\"WithKeyword\"] = 117] = \"WithKeyword\";\n SyntaxKind[SyntaxKind[\"ImplementsKeyword\"] = 118] = \"ImplementsKeyword\";\n SyntaxKind[SyntaxKind[\"InterfaceKeyword\"] = 119] = \"InterfaceKeyword\";\n SyntaxKind[SyntaxKind[\"LetKeyword\"] = 120] = \"LetKeyword\";\n SyntaxKind[SyntaxKind[\"PackageKeyword\"] = 121] = \"PackageKeyword\";\n SyntaxKind[SyntaxKind[\"PrivateKeyword\"] = 122] = \"PrivateKeyword\";\n SyntaxKind[SyntaxKind[\"ProtectedKeyword\"] = 123] = \"ProtectedKeyword\";\n SyntaxKind[SyntaxKind[\"PublicKeyword\"] = 124] = \"PublicKeyword\";\n SyntaxKind[SyntaxKind[\"StaticKeyword\"] = 125] = \"StaticKeyword\";\n SyntaxKind[SyntaxKind[\"YieldKeyword\"] = 126] = \"YieldKeyword\";\n SyntaxKind[SyntaxKind[\"AbstractKeyword\"] = 127] = \"AbstractKeyword\";\n SyntaxKind[SyntaxKind[\"AccessorKeyword\"] = 128] = \"AccessorKeyword\";\n SyntaxKind[SyntaxKind[\"AsKeyword\"] = 129] = \"AsKeyword\";\n SyntaxKind[SyntaxKind[\"AssertsKeyword\"] = 130] = \"AssertsKeyword\";\n SyntaxKind[SyntaxKind[\"AssertKeyword\"] = 131] = \"AssertKeyword\";\n SyntaxKind[SyntaxKind[\"AnyKeyword\"] = 132] = \"AnyKeyword\";\n SyntaxKind[SyntaxKind[\"AsyncKeyword\"] = 133] = \"AsyncKeyword\";\n SyntaxKind[SyntaxKind[\"AwaitKeyword\"] = 134] = \"AwaitKeyword\";\n SyntaxKind[SyntaxKind[\"BooleanKeyword\"] = 135] = \"BooleanKeyword\";\n SyntaxKind[SyntaxKind[\"ConstructorKeyword\"] = 136] = \"ConstructorKeyword\";\n SyntaxKind[SyntaxKind[\"DeclareKeyword\"] = 137] = \"DeclareKeyword\";\n SyntaxKind[SyntaxKind[\"GetKeyword\"] = 138] = \"GetKeyword\";\n SyntaxKind[SyntaxKind[\"ImmediateKeyword\"] = 139] = \"ImmediateKeyword\";\n SyntaxKind[SyntaxKind[\"InferKeyword\"] = 140] = \"InferKeyword\";\n SyntaxKind[SyntaxKind[\"IntrinsicKeyword\"] = 141] = \"IntrinsicKeyword\";\n SyntaxKind[SyntaxKind[\"IsKeyword\"] = 142] = \"IsKeyword\";\n SyntaxKind[SyntaxKind[\"KeyOfKeyword\"] = 143] = \"KeyOfKeyword\";\n SyntaxKind[SyntaxKind[\"ModuleKeyword\"] = 144] = \"ModuleKeyword\";\n SyntaxKind[SyntaxKind[\"NamespaceKeyword\"] = 145] = \"NamespaceKeyword\";\n SyntaxKind[SyntaxKind[\"NeverKeyword\"] = 146] = \"NeverKeyword\";\n SyntaxKind[SyntaxKind[\"OutKeyword\"] = 147] = \"OutKeyword\";\n SyntaxKind[SyntaxKind[\"ReadonlyKeyword\"] = 148] = \"ReadonlyKeyword\";\n SyntaxKind[SyntaxKind[\"RequireKeyword\"] = 149] = \"RequireKeyword\";\n SyntaxKind[SyntaxKind[\"NumberKeyword\"] = 150] = \"NumberKeyword\";\n SyntaxKind[SyntaxKind[\"ObjectKeyword\"] = 151] = \"ObjectKeyword\";\n SyntaxKind[SyntaxKind[\"SatisfiesKeyword\"] = 152] = \"SatisfiesKeyword\";\n SyntaxKind[SyntaxKind[\"SetKeyword\"] = 153] = \"SetKeyword\";\n SyntaxKind[SyntaxKind[\"StringKeyword\"] = 154] = \"StringKeyword\";\n SyntaxKind[SyntaxKind[\"SymbolKeyword\"] = 155] = \"SymbolKeyword\";\n SyntaxKind[SyntaxKind[\"TypeKeyword\"] = 156] = \"TypeKeyword\";\n SyntaxKind[SyntaxKind[\"UndefinedKeyword\"] = 157] = \"UndefinedKeyword\";\n SyntaxKind[SyntaxKind[\"UniqueKeyword\"] = 158] = \"UniqueKeyword\";\n SyntaxKind[SyntaxKind[\"UnknownKeyword\"] = 159] = \"UnknownKeyword\";\n SyntaxKind[SyntaxKind[\"UsingKeyword\"] = 160] = \"UsingKeyword\";\n SyntaxKind[SyntaxKind[\"FromKeyword\"] = 161] = \"FromKeyword\";\n SyntaxKind[SyntaxKind[\"GlobalKeyword\"] = 162] = \"GlobalKeyword\";\n SyntaxKind[SyntaxKind[\"BigIntKeyword\"] = 163] = \"BigIntKeyword\";\n SyntaxKind[SyntaxKind[\"OverrideKeyword\"] = 164] = \"OverrideKeyword\";\n SyntaxKind[SyntaxKind[\"OfKeyword\"] = 165] = \"OfKeyword\";\n SyntaxKind[SyntaxKind[\"DeferKeyword\"] = 166] = \"DeferKeyword\";\n SyntaxKind[SyntaxKind[\"QualifiedName\"] = 167] = \"QualifiedName\";\n SyntaxKind[SyntaxKind[\"ComputedPropertyName\"] = 168] = \"ComputedPropertyName\";\n SyntaxKind[SyntaxKind[\"TypeParameter\"] = 169] = \"TypeParameter\";\n SyntaxKind[SyntaxKind[\"Parameter\"] = 170] = \"Parameter\";\n SyntaxKind[SyntaxKind[\"Decorator\"] = 171] = \"Decorator\";\n SyntaxKind[SyntaxKind[\"PropertySignature\"] = 172] = \"PropertySignature\";\n SyntaxKind[SyntaxKind[\"PropertyDeclaration\"] = 173] = \"PropertyDeclaration\";\n SyntaxKind[SyntaxKind[\"MethodSignature\"] = 174] = \"MethodSignature\";\n SyntaxKind[SyntaxKind[\"MethodDeclaration\"] = 175] = \"MethodDeclaration\";\n SyntaxKind[SyntaxKind[\"ClassStaticBlockDeclaration\"] = 176] = \"ClassStaticBlockDeclaration\";\n SyntaxKind[SyntaxKind[\"Constructor\"] = 177] = \"Constructor\";\n SyntaxKind[SyntaxKind[\"GetAccessor\"] = 178] = \"GetAccessor\";\n SyntaxKind[SyntaxKind[\"SetAccessor\"] = 179] = \"SetAccessor\";\n SyntaxKind[SyntaxKind[\"CallSignature\"] = 180] = \"CallSignature\";\n SyntaxKind[SyntaxKind[\"ConstructSignature\"] = 181] = \"ConstructSignature\";\n SyntaxKind[SyntaxKind[\"IndexSignature\"] = 182] = \"IndexSignature\";\n SyntaxKind[SyntaxKind[\"TypePredicate\"] = 183] = \"TypePredicate\";\n SyntaxKind[SyntaxKind[\"TypeReference\"] = 184] = \"TypeReference\";\n SyntaxKind[SyntaxKind[\"FunctionType\"] = 185] = \"FunctionType\";\n SyntaxKind[SyntaxKind[\"ConstructorType\"] = 186] = \"ConstructorType\";\n SyntaxKind[SyntaxKind[\"TypeQuery\"] = 187] = \"TypeQuery\";\n SyntaxKind[SyntaxKind[\"TypeLiteral\"] = 188] = \"TypeLiteral\";\n SyntaxKind[SyntaxKind[\"ArrayType\"] = 189] = \"ArrayType\";\n SyntaxKind[SyntaxKind[\"TupleType\"] = 190] = \"TupleType\";\n SyntaxKind[SyntaxKind[\"OptionalType\"] = 191] = \"OptionalType\";\n SyntaxKind[SyntaxKind[\"RestType\"] = 192] = \"RestType\";\n SyntaxKind[SyntaxKind[\"UnionType\"] = 193] = \"UnionType\";\n SyntaxKind[SyntaxKind[\"IntersectionType\"] = 194] = \"IntersectionType\";\n SyntaxKind[SyntaxKind[\"ConditionalType\"] = 195] = \"ConditionalType\";\n SyntaxKind[SyntaxKind[\"InferType\"] = 196] = \"InferType\";\n SyntaxKind[SyntaxKind[\"ParenthesizedType\"] = 197] = \"ParenthesizedType\";\n SyntaxKind[SyntaxKind[\"ThisType\"] = 198] = \"ThisType\";\n SyntaxKind[SyntaxKind[\"TypeOperator\"] = 199] = \"TypeOperator\";\n SyntaxKind[SyntaxKind[\"IndexedAccessType\"] = 200] = \"IndexedAccessType\";\n SyntaxKind[SyntaxKind[\"MappedType\"] = 201] = \"MappedType\";\n SyntaxKind[SyntaxKind[\"LiteralType\"] = 202] = \"LiteralType\";\n SyntaxKind[SyntaxKind[\"NamedTupleMember\"] = 203] = \"NamedTupleMember\";\n SyntaxKind[SyntaxKind[\"TemplateLiteralType\"] = 204] = \"TemplateLiteralType\";\n SyntaxKind[SyntaxKind[\"TemplateLiteralTypeSpan\"] = 205] = \"TemplateLiteralTypeSpan\";\n SyntaxKind[SyntaxKind[\"ImportType\"] = 206] = \"ImportType\";\n SyntaxKind[SyntaxKind[\"ObjectBindingPattern\"] = 207] = \"ObjectBindingPattern\";\n SyntaxKind[SyntaxKind[\"ArrayBindingPattern\"] = 208] = \"ArrayBindingPattern\";\n SyntaxKind[SyntaxKind[\"BindingElement\"] = 209] = \"BindingElement\";\n SyntaxKind[SyntaxKind[\"ArrayLiteralExpression\"] = 210] = \"ArrayLiteralExpression\";\n SyntaxKind[SyntaxKind[\"ObjectLiteralExpression\"] = 211] = \"ObjectLiteralExpression\";\n SyntaxKind[SyntaxKind[\"PropertyAccessExpression\"] = 212] = \"PropertyAccessExpression\";\n SyntaxKind[SyntaxKind[\"ElementAccessExpression\"] = 213] = \"ElementAccessExpression\";\n SyntaxKind[SyntaxKind[\"CallExpression\"] = 214] = \"CallExpression\";\n SyntaxKind[SyntaxKind[\"NewExpression\"] = 215] = \"NewExpression\";\n SyntaxKind[SyntaxKind[\"TaggedTemplateExpression\"] = 216] = \"TaggedTemplateExpression\";\n SyntaxKind[SyntaxKind[\"TypeAssertionExpression\"] = 217] = \"TypeAssertionExpression\";\n SyntaxKind[SyntaxKind[\"ParenthesizedExpression\"] = 218] = \"ParenthesizedExpression\";\n SyntaxKind[SyntaxKind[\"FunctionExpression\"] = 219] = \"FunctionExpression\";\n SyntaxKind[SyntaxKind[\"ArrowFunction\"] = 220] = \"ArrowFunction\";\n SyntaxKind[SyntaxKind[\"DeleteExpression\"] = 221] = \"DeleteExpression\";\n SyntaxKind[SyntaxKind[\"TypeOfExpression\"] = 222] = \"TypeOfExpression\";\n SyntaxKind[SyntaxKind[\"VoidExpression\"] = 223] = \"VoidExpression\";\n SyntaxKind[SyntaxKind[\"AwaitExpression\"] = 224] = \"AwaitExpression\";\n SyntaxKind[SyntaxKind[\"PrefixUnaryExpression\"] = 225] = \"PrefixUnaryExpression\";\n SyntaxKind[SyntaxKind[\"PostfixUnaryExpression\"] = 226] = \"PostfixUnaryExpression\";\n SyntaxKind[SyntaxKind[\"BinaryExpression\"] = 227] = \"BinaryExpression\";\n SyntaxKind[SyntaxKind[\"ConditionalExpression\"] = 228] = \"ConditionalExpression\";\n SyntaxKind[SyntaxKind[\"TemplateExpression\"] = 229] = \"TemplateExpression\";\n SyntaxKind[SyntaxKind[\"YieldExpression\"] = 230] = \"YieldExpression\";\n SyntaxKind[SyntaxKind[\"SpreadElement\"] = 231] = \"SpreadElement\";\n SyntaxKind[SyntaxKind[\"ClassExpression\"] = 232] = \"ClassExpression\";\n SyntaxKind[SyntaxKind[\"OmittedExpression\"] = 233] = \"OmittedExpression\";\n SyntaxKind[SyntaxKind[\"ExpressionWithTypeArguments\"] = 234] = \"ExpressionWithTypeArguments\";\n SyntaxKind[SyntaxKind[\"AsExpression\"] = 235] = \"AsExpression\";\n SyntaxKind[SyntaxKind[\"NonNullExpression\"] = 236] = \"NonNullExpression\";\n SyntaxKind[SyntaxKind[\"MetaProperty\"] = 237] = \"MetaProperty\";\n SyntaxKind[SyntaxKind[\"SyntheticExpression\"] = 238] = \"SyntheticExpression\";\n SyntaxKind[SyntaxKind[\"SatisfiesExpression\"] = 239] = \"SatisfiesExpression\";\n SyntaxKind[SyntaxKind[\"TemplateSpan\"] = 240] = \"TemplateSpan\";\n SyntaxKind[SyntaxKind[\"SemicolonClassElement\"] = 241] = \"SemicolonClassElement\";\n SyntaxKind[SyntaxKind[\"Block\"] = 242] = \"Block\";\n SyntaxKind[SyntaxKind[\"EmptyStatement\"] = 243] = \"EmptyStatement\";\n SyntaxKind[SyntaxKind[\"VariableStatement\"] = 244] = \"VariableStatement\";\n SyntaxKind[SyntaxKind[\"ExpressionStatement\"] = 245] = \"ExpressionStatement\";\n SyntaxKind[SyntaxKind[\"IfStatement\"] = 246] = \"IfStatement\";\n SyntaxKind[SyntaxKind[\"DoStatement\"] = 247] = \"DoStatement\";\n SyntaxKind[SyntaxKind[\"WhileStatement\"] = 248] = \"WhileStatement\";\n SyntaxKind[SyntaxKind[\"ForStatement\"] = 249] = \"ForStatement\";\n SyntaxKind[SyntaxKind[\"ForInStatement\"] = 250] = \"ForInStatement\";\n SyntaxKind[SyntaxKind[\"ForOfStatement\"] = 251] = \"ForOfStatement\";\n SyntaxKind[SyntaxKind[\"ContinueStatement\"] = 252] = \"ContinueStatement\";\n SyntaxKind[SyntaxKind[\"BreakStatement\"] = 253] = \"BreakStatement\";\n SyntaxKind[SyntaxKind[\"ReturnStatement\"] = 254] = \"ReturnStatement\";\n SyntaxKind[SyntaxKind[\"WithStatement\"] = 255] = \"WithStatement\";\n SyntaxKind[SyntaxKind[\"SwitchStatement\"] = 256] = \"SwitchStatement\";\n SyntaxKind[SyntaxKind[\"LabeledStatement\"] = 257] = \"LabeledStatement\";\n SyntaxKind[SyntaxKind[\"ThrowStatement\"] = 258] = \"ThrowStatement\";\n SyntaxKind[SyntaxKind[\"TryStatement\"] = 259] = \"TryStatement\";\n SyntaxKind[SyntaxKind[\"DebuggerStatement\"] = 260] = \"DebuggerStatement\";\n SyntaxKind[SyntaxKind[\"VariableDeclaration\"] = 261] = \"VariableDeclaration\";\n SyntaxKind[SyntaxKind[\"VariableDeclarationList\"] = 262] = \"VariableDeclarationList\";\n SyntaxKind[SyntaxKind[\"FunctionDeclaration\"] = 263] = \"FunctionDeclaration\";\n SyntaxKind[SyntaxKind[\"ClassDeclaration\"] = 264] = \"ClassDeclaration\";\n SyntaxKind[SyntaxKind[\"InterfaceDeclaration\"] = 265] = \"InterfaceDeclaration\";\n SyntaxKind[SyntaxKind[\"TypeAliasDeclaration\"] = 266] = \"TypeAliasDeclaration\";\n SyntaxKind[SyntaxKind[\"EnumDeclaration\"] = 267] = \"EnumDeclaration\";\n SyntaxKind[SyntaxKind[\"ModuleDeclaration\"] = 268] = \"ModuleDeclaration\";\n SyntaxKind[SyntaxKind[\"ModuleBlock\"] = 269] = \"ModuleBlock\";\n SyntaxKind[SyntaxKind[\"CaseBlock\"] = 270] = \"CaseBlock\";\n SyntaxKind[SyntaxKind[\"NamespaceExportDeclaration\"] = 271] = \"NamespaceExportDeclaration\";\n SyntaxKind[SyntaxKind[\"ImportEqualsDeclaration\"] = 272] = \"ImportEqualsDeclaration\";\n SyntaxKind[SyntaxKind[\"ImportDeclaration\"] = 273] = \"ImportDeclaration\";\n SyntaxKind[SyntaxKind[\"ImportClause\"] = 274] = \"ImportClause\";\n SyntaxKind[SyntaxKind[\"NamespaceImport\"] = 275] = \"NamespaceImport\";\n SyntaxKind[SyntaxKind[\"NamedImports\"] = 276] = \"NamedImports\";\n SyntaxKind[SyntaxKind[\"ImportSpecifier\"] = 277] = \"ImportSpecifier\";\n SyntaxKind[SyntaxKind[\"ExportAssignment\"] = 278] = \"ExportAssignment\";\n SyntaxKind[SyntaxKind[\"ExportDeclaration\"] = 279] = \"ExportDeclaration\";\n SyntaxKind[SyntaxKind[\"NamedExports\"] = 280] = \"NamedExports\";\n SyntaxKind[SyntaxKind[\"NamespaceExport\"] = 281] = \"NamespaceExport\";\n SyntaxKind[SyntaxKind[\"ExportSpecifier\"] = 282] = \"ExportSpecifier\";\n SyntaxKind[SyntaxKind[\"MissingDeclaration\"] = 283] = \"MissingDeclaration\";\n SyntaxKind[SyntaxKind[\"ExternalModuleReference\"] = 284] = \"ExternalModuleReference\";\n SyntaxKind[SyntaxKind[\"JsxElement\"] = 285] = \"JsxElement\";\n SyntaxKind[SyntaxKind[\"JsxSelfClosingElement\"] = 286] = \"JsxSelfClosingElement\";\n SyntaxKind[SyntaxKind[\"JsxOpeningElement\"] = 287] = \"JsxOpeningElement\";\n SyntaxKind[SyntaxKind[\"JsxClosingElement\"] = 288] = \"JsxClosingElement\";\n SyntaxKind[SyntaxKind[\"JsxFragment\"] = 289] = \"JsxFragment\";\n SyntaxKind[SyntaxKind[\"JsxOpeningFragment\"] = 290] = \"JsxOpeningFragment\";\n SyntaxKind[SyntaxKind[\"JsxClosingFragment\"] = 291] = \"JsxClosingFragment\";\n SyntaxKind[SyntaxKind[\"JsxAttribute\"] = 292] = \"JsxAttribute\";\n SyntaxKind[SyntaxKind[\"JsxAttributes\"] = 293] = \"JsxAttributes\";\n SyntaxKind[SyntaxKind[\"JsxSpreadAttribute\"] = 294] = \"JsxSpreadAttribute\";\n SyntaxKind[SyntaxKind[\"JsxExpression\"] = 295] = \"JsxExpression\";\n SyntaxKind[SyntaxKind[\"JsxNamespacedName\"] = 296] = \"JsxNamespacedName\";\n SyntaxKind[SyntaxKind[\"CaseClause\"] = 297] = \"CaseClause\";\n SyntaxKind[SyntaxKind[\"DefaultClause\"] = 298] = \"DefaultClause\";\n SyntaxKind[SyntaxKind[\"HeritageClause\"] = 299] = \"HeritageClause\";\n SyntaxKind[SyntaxKind[\"CatchClause\"] = 300] = \"CatchClause\";\n SyntaxKind[SyntaxKind[\"ImportAttributes\"] = 301] = \"ImportAttributes\";\n SyntaxKind[SyntaxKind[\"ImportAttribute\"] = 302] = \"ImportAttribute\";\n SyntaxKind[SyntaxKind[\"PropertyAssignment\"] = 303] = \"PropertyAssignment\";\n SyntaxKind[SyntaxKind[\"ShorthandPropertyAssignment\"] = 304] = \"ShorthandPropertyAssignment\";\n SyntaxKind[SyntaxKind[\"SpreadAssignment\"] = 305] = \"SpreadAssignment\";\n SyntaxKind[SyntaxKind[\"EnumMember\"] = 306] = \"EnumMember\";\n SyntaxKind[SyntaxKind[\"SourceFile\"] = 307] = \"SourceFile\";\n SyntaxKind[SyntaxKind[\"JSDocTypeExpression\"] = 308] = \"JSDocTypeExpression\";\n SyntaxKind[SyntaxKind[\"JSDocNameReference\"] = 309] = \"JSDocNameReference\";\n SyntaxKind[SyntaxKind[\"JSDocAllType\"] = 310] = \"JSDocAllType\";\n SyntaxKind[SyntaxKind[\"JSDocNullableType\"] = 311] = \"JSDocNullableType\";\n SyntaxKind[SyntaxKind[\"JSDocNonNullableType\"] = 312] = \"JSDocNonNullableType\";\n SyntaxKind[SyntaxKind[\"JSDocOptionalType\"] = 313] = \"JSDocOptionalType\";\n SyntaxKind[SyntaxKind[\"JSDocVariadicType\"] = 314] = \"JSDocVariadicType\";\n SyntaxKind[SyntaxKind[\"JSDoc\"] = 315] = \"JSDoc\";\n SyntaxKind[SyntaxKind[\"JSDocText\"] = 316] = \"JSDocText\";\n SyntaxKind[SyntaxKind[\"JSDocTypeLiteral\"] = 317] = \"JSDocTypeLiteral\";\n SyntaxKind[SyntaxKind[\"JSDocSignature\"] = 318] = \"JSDocSignature\";\n SyntaxKind[SyntaxKind[\"JSDocLink\"] = 319] = \"JSDocLink\";\n SyntaxKind[SyntaxKind[\"JSDocLinkCode\"] = 320] = \"JSDocLinkCode\";\n SyntaxKind[SyntaxKind[\"JSDocLinkPlain\"] = 321] = \"JSDocLinkPlain\";\n SyntaxKind[SyntaxKind[\"JSDocUnknownTag\"] = 322] = \"JSDocUnknownTag\";\n SyntaxKind[SyntaxKind[\"JSDocAugmentsTag\"] = 323] = \"JSDocAugmentsTag\";\n SyntaxKind[SyntaxKind[\"JSDocImplementsTag\"] = 324] = \"JSDocImplementsTag\";\n SyntaxKind[SyntaxKind[\"JSDocDeprecatedTag\"] = 325] = \"JSDocDeprecatedTag\";\n SyntaxKind[SyntaxKind[\"JSDocPublicTag\"] = 326] = \"JSDocPublicTag\";\n SyntaxKind[SyntaxKind[\"JSDocPrivateTag\"] = 327] = \"JSDocPrivateTag\";\n SyntaxKind[SyntaxKind[\"JSDocProtectedTag\"] = 328] = \"JSDocProtectedTag\";\n SyntaxKind[SyntaxKind[\"JSDocReadonlyTag\"] = 329] = \"JSDocReadonlyTag\";\n SyntaxKind[SyntaxKind[\"JSDocOverrideTag\"] = 330] = \"JSDocOverrideTag\";\n SyntaxKind[SyntaxKind[\"JSDocCallbackTag\"] = 331] = \"JSDocCallbackTag\";\n SyntaxKind[SyntaxKind[\"JSDocOverloadTag\"] = 332] = \"JSDocOverloadTag\";\n SyntaxKind[SyntaxKind[\"JSDocParameterTag\"] = 333] = \"JSDocParameterTag\";\n SyntaxKind[SyntaxKind[\"JSDocReturnTag\"] = 334] = \"JSDocReturnTag\";\n SyntaxKind[SyntaxKind[\"JSDocThisTag\"] = 335] = \"JSDocThisTag\";\n SyntaxKind[SyntaxKind[\"JSDocTypeTag\"] = 336] = \"JSDocTypeTag\";\n SyntaxKind[SyntaxKind[\"JSDocTemplateTag\"] = 337] = \"JSDocTemplateTag\";\n SyntaxKind[SyntaxKind[\"JSDocTypedefTag\"] = 338] = \"JSDocTypedefTag\";\n SyntaxKind[SyntaxKind[\"JSDocSeeTag\"] = 339] = \"JSDocSeeTag\";\n SyntaxKind[SyntaxKind[\"JSDocPropertyTag\"] = 340] = \"JSDocPropertyTag\";\n SyntaxKind[SyntaxKind[\"JSDocThrowsTag\"] = 341] = \"JSDocThrowsTag\";\n SyntaxKind[SyntaxKind[\"JSDocSatisfiesTag\"] = 342] = \"JSDocSatisfiesTag\";\n SyntaxKind[SyntaxKind[\"JSDocImportTag\"] = 343] = \"JSDocImportTag\";\n SyntaxKind[SyntaxKind[\"SyntaxList\"] = 344] = \"SyntaxList\";\n SyntaxKind[SyntaxKind[\"JSTypeAliasDeclaration\"] = 345] = \"JSTypeAliasDeclaration\";\n SyntaxKind[SyntaxKind[\"JSImportDeclaration\"] = 346] = \"JSImportDeclaration\";\n SyntaxKind[SyntaxKind[\"NotEmittedStatement\"] = 347] = \"NotEmittedStatement\";\n SyntaxKind[SyntaxKind[\"PartiallyEmittedExpression\"] = 348] = \"PartiallyEmittedExpression\";\n SyntaxKind[SyntaxKind[\"SyntheticReferenceExpression\"] = 349] = \"SyntheticReferenceExpression\";\n SyntaxKind[SyntaxKind[\"NotEmittedTypeElement\"] = 350] = \"NotEmittedTypeElement\";\n SyntaxKind[SyntaxKind[\"Count\"] = 351] = \"Count\";\n SyntaxKind[SyntaxKind[\"FirstAssignment\"] = 63] = \"FirstAssignment\";\n SyntaxKind[SyntaxKind[\"LastAssignment\"] = 78] = \"LastAssignment\";\n SyntaxKind[SyntaxKind[\"FirstCompoundAssignment\"] = 64] = \"FirstCompoundAssignment\";\n SyntaxKind[SyntaxKind[\"LastCompoundAssignment\"] = 78] = \"LastCompoundAssignment\";\n SyntaxKind[SyntaxKind[\"FirstReservedWord\"] = 82] = \"FirstReservedWord\";\n SyntaxKind[SyntaxKind[\"LastReservedWord\"] = 117] = \"LastReservedWord\";\n SyntaxKind[SyntaxKind[\"FirstKeyword\"] = 82] = \"FirstKeyword\";\n SyntaxKind[SyntaxKind[\"LastKeyword\"] = 166] = \"LastKeyword\";\n SyntaxKind[SyntaxKind[\"FirstFutureReservedWord\"] = 118] = \"FirstFutureReservedWord\";\n SyntaxKind[SyntaxKind[\"LastFutureReservedWord\"] = 126] = \"LastFutureReservedWord\";\n SyntaxKind[SyntaxKind[\"FirstTypeNode\"] = 183] = \"FirstTypeNode\";\n SyntaxKind[SyntaxKind[\"LastTypeNode\"] = 206] = \"LastTypeNode\";\n SyntaxKind[SyntaxKind[\"FirstPunctuation\"] = 18] = \"FirstPunctuation\";\n SyntaxKind[SyntaxKind[\"LastPunctuation\"] = 78] = \"LastPunctuation\";\n SyntaxKind[SyntaxKind[\"FirstToken\"] = 0] = \"FirstToken\";\n SyntaxKind[SyntaxKind[\"LastToken\"] = 166] = \"LastToken\";\n SyntaxKind[SyntaxKind[\"FirstLiteralToken\"] = 8] = \"FirstLiteralToken\";\n SyntaxKind[SyntaxKind[\"LastLiteralToken\"] = 14] = \"LastLiteralToken\";\n SyntaxKind[SyntaxKind[\"FirstTemplateToken\"] = 14] = \"FirstTemplateToken\";\n SyntaxKind[SyntaxKind[\"LastTemplateToken\"] = 17] = \"LastTemplateToken\";\n SyntaxKind[SyntaxKind[\"FirstBinaryOperator\"] = 29] = \"FirstBinaryOperator\";\n SyntaxKind[SyntaxKind[\"LastBinaryOperator\"] = 78] = \"LastBinaryOperator\";\n SyntaxKind[SyntaxKind[\"FirstStatement\"] = 244] = \"FirstStatement\";\n SyntaxKind[SyntaxKind[\"LastStatement\"] = 260] = \"LastStatement\";\n SyntaxKind[SyntaxKind[\"FirstNode\"] = 167] = \"FirstNode\";\n SyntaxKind[SyntaxKind[\"FirstJSDocNode\"] = 308] = \"FirstJSDocNode\";\n SyntaxKind[SyntaxKind[\"LastJSDocNode\"] = 343] = \"LastJSDocNode\";\n SyntaxKind[SyntaxKind[\"FirstJSDocTagNode\"] = 322] = \"FirstJSDocTagNode\";\n SyntaxKind[SyntaxKind[\"LastJSDocTagNode\"] = 343] = \"LastJSDocTagNode\";\n SyntaxKind[SyntaxKind[\"FirstContextualKeyword\"] = 127] = \"FirstContextualKeyword\";\n SyntaxKind[SyntaxKind[\"LastContextualKeyword\"] = 166] = \"LastContextualKeyword\";\n SyntaxKind[SyntaxKind[\"LastUnaryOperator\"] = 54] = \"LastUnaryOperator\";\n SyntaxKind[SyntaxKind[\"FirstTriviaToken\"] = 2] = \"FirstTriviaToken\";\n SyntaxKind[SyntaxKind[\"LastTriviaToken\"] = 6] = \"LastTriviaToken\";\n})(SyntaxKind || (SyntaxKind = {}));\n//# sourceMappingURL=syntaxKind.js.map","// Code generated by Herebyfile.mjs generate:enums from internal/ast/tokenflags.go. DO NOT EDIT.\nexport var TokenFlags;\n(function (TokenFlags) {\n TokenFlags[TokenFlags[\"None\"] = 0] = \"None\";\n TokenFlags[TokenFlags[\"PrecedingLineBreak\"] = 1] = \"PrecedingLineBreak\";\n TokenFlags[TokenFlags[\"PrecedingJSDocComment\"] = 2] = \"PrecedingJSDocComment\";\n TokenFlags[TokenFlags[\"Unterminated\"] = 4] = \"Unterminated\";\n TokenFlags[TokenFlags[\"ExtendedUnicodeEscape\"] = 8] = \"ExtendedUnicodeEscape\";\n TokenFlags[TokenFlags[\"Scientific\"] = 16] = \"Scientific\";\n TokenFlags[TokenFlags[\"Octal\"] = 32] = \"Octal\";\n TokenFlags[TokenFlags[\"HexSpecifier\"] = 64] = \"HexSpecifier\";\n TokenFlags[TokenFlags[\"BinarySpecifier\"] = 128] = \"BinarySpecifier\";\n TokenFlags[TokenFlags[\"OctalSpecifier\"] = 256] = \"OctalSpecifier\";\n TokenFlags[TokenFlags[\"ContainsSeparator\"] = 512] = \"ContainsSeparator\";\n TokenFlags[TokenFlags[\"UnicodeEscape\"] = 1024] = \"UnicodeEscape\";\n TokenFlags[TokenFlags[\"ContainsInvalidEscape\"] = 2048] = \"ContainsInvalidEscape\";\n TokenFlags[TokenFlags[\"HexEscape\"] = 4096] = \"HexEscape\";\n TokenFlags[TokenFlags[\"ContainsLeadingZero\"] = 8192] = \"ContainsLeadingZero\";\n TokenFlags[TokenFlags[\"ContainsInvalidSeparator\"] = 16384] = \"ContainsInvalidSeparator\";\n TokenFlags[TokenFlags[\"PrecedingJSDocLeadingAsterisks\"] = 32768] = \"PrecedingJSDocLeadingAsterisks\";\n TokenFlags[TokenFlags[\"SingleQuote\"] = 65536] = \"SingleQuote\";\n TokenFlags[TokenFlags[\"PrecedingJSDocWithDeprecated\"] = 131072] = \"PrecedingJSDocWithDeprecated\";\n TokenFlags[TokenFlags[\"PrecedingJSDocWithSeeOrLink\"] = 262144] = \"PrecedingJSDocWithSeeOrLink\";\n TokenFlags[TokenFlags[\"BinaryOrOctalSpecifier\"] = 384] = \"BinaryOrOctalSpecifier\";\n TokenFlags[TokenFlags[\"WithSpecifier\"] = 448] = \"WithSpecifier\";\n TokenFlags[TokenFlags[\"StringLiteralFlags\"] = 72716] = \"StringLiteralFlags\";\n TokenFlags[TokenFlags[\"NumericLiteralFlags\"] = 25584] = \"NumericLiteralFlags\";\n TokenFlags[TokenFlags[\"TemplateLiteralLikeFlags\"] = 7180] = \"TemplateLiteralLikeFlags\";\n TokenFlags[TokenFlags[\"RegularExpressionLiteralFlags\"] = 4] = \"RegularExpressionLiteralFlags\";\n TokenFlags[TokenFlags[\"IsInvalid\"] = 26656] = \"IsInvalid\";\n})(TokenFlags || (TokenFlags = {}));\n//# sourceMappingURL=tokenFlags.js.map","import { CharacterCodes } from \"#enums/characterCodes\";\nimport { SyntaxKind } from \"#enums/syntaxKind\";\nlet syntaxKindNames;\nfunction getSyntaxKindNames() {\n if (!syntaxKindNames) {\n syntaxKindNames = new Map();\n for (const name of Object.keys(SyntaxKind)) {\n const val = SyntaxKind[name];\n if (typeof val === \"number\" && !syntaxKindNames.has(val)) {\n syntaxKindNames.set(val, name);\n }\n }\n syntaxKindNames.set(SyntaxKind.EndOfFile, \"EndOfFileToken\");\n }\n return syntaxKindNames;\n}\nexport function formatSyntaxKind(kind) {\n return getSyntaxKindNames().get(kind) ?? `Unknown(${kind})`;\n}\n/**\n * Remove one extra leading underscore from an identifier name, recovering the\n * display form from its escaped {@link __String} key.\n */\nexport function unescapeLeadingUnderscores(identifier) {\n const id = identifier;\n return id.length >= 3 && id.charCodeAt(0) === CharacterCodes._ && id.charCodeAt(1) === CharacterCodes._ && id.charCodeAt(2) === CharacterCodes._\n ? id.slice(1)\n : id;\n}\n/**\n * Add an extra leading underscore to a display name that already begins with\n * `__`, producing its escaped {@link __String} key.\n */\nexport function escapeLeadingUnderscores(identifier) {\n return (identifier.length >= 2 && identifier.charCodeAt(0) === CharacterCodes._ && identifier.charCodeAt(1) === CharacterCodes._\n ? \"_\" + identifier\n : identifier);\n}\nexport function tryCast(value, test) {\n return value !== undefined && test(value) ? value : undefined;\n}\nexport function cast(value, test) {\n if (value !== undefined && test(value))\n return value;\n throw new Error(`Invalid cast. The supplied value ${value} did not pass the test '${test.name}'.`);\n}\nexport function cloneSourceFileData(sourceFile) {\n return {\n statements: sourceFile.statements,\n endOfFileToken: sourceFile.endOfFileToken,\n text: sourceFile.text,\n fileName: sourceFile.fileName,\n path: sourceFile.path,\n languageVariant: sourceFile.languageVariant,\n scriptKind: sourceFile.scriptKind,\n isDeclarationFile: sourceFile.isDeclarationFile,\n referencedFiles: sourceFile.referencedFiles,\n typeReferenceDirectives: sourceFile.typeReferenceDirectives,\n libReferenceDirectives: sourceFile.libReferenceDirectives,\n imports: sourceFile.imports,\n moduleAugmentations: sourceFile.moduleAugmentations,\n ambientModuleNames: sourceFile.ambientModuleNames,\n externalModuleIndicator: sourceFile.externalModuleIndicator,\n tokenCache: undefined,\n };\n}\n//# sourceMappingURL=utils.js.map","// Code generated by Herebyfile.mjs generate:enums from internal/ast/utilities.go. DO NOT EDIT.\nexport var OuterExpressionKinds;\n(function (OuterExpressionKinds) {\n OuterExpressionKinds[OuterExpressionKinds[\"Parentheses\"] = 1] = \"Parentheses\";\n OuterExpressionKinds[OuterExpressionKinds[\"TypeAssertions\"] = 2] = \"TypeAssertions\";\n OuterExpressionKinds[OuterExpressionKinds[\"NonNullAssertions\"] = 4] = \"NonNullAssertions\";\n OuterExpressionKinds[OuterExpressionKinds[\"PartiallyEmittedExpressions\"] = 8] = \"PartiallyEmittedExpressions\";\n OuterExpressionKinds[OuterExpressionKinds[\"ExpressionsWithTypeArguments\"] = 16] = \"ExpressionsWithTypeArguments\";\n OuterExpressionKinds[OuterExpressionKinds[\"Satisfies\"] = 32] = \"Satisfies\";\n OuterExpressionKinds[OuterExpressionKinds[\"ExcludeJSDocTypeAssertion\"] = 64] = \"ExcludeJSDocTypeAssertion\";\n OuterExpressionKinds[OuterExpressionKinds[\"Assignments\"] = 128] = \"Assignments\";\n OuterExpressionKinds[OuterExpressionKinds[\"Comma\"] = 256] = \"Comma\";\n OuterExpressionKinds[OuterExpressionKinds[\"Assertions\"] = 38] = \"Assertions\";\n OuterExpressionKinds[OuterExpressionKinds[\"All\"] = 63] = \"All\";\n OuterExpressionKinds[OuterExpressionKinds[\"AllExceptAssertionsOrExpressionsWithTypeArguments\"] = 9] = \"AllExceptAssertionsOrExpressionsWithTypeArguments\";\n OuterExpressionKinds[OuterExpressionKinds[\"ExpressionTypePassthrough\"] = 385] = \"ExpressionTypePassthrough\";\n})(OuterExpressionKinds || (OuterExpressionKinds = {}));\n//# sourceMappingURL=outerExpressionKinds.js.map","// Code generated by _scripts/generate-ts-ast.ts. DO NOT EDIT.\nimport { SyntaxKind } from \"#enums/syntaxKind\";\nexport function isToken(node) {\n return isTokenKind(node.kind);\n}\nexport function isIdentifier(node) {\n return node.kind === SyntaxKind.Identifier;\n}\nexport function isPrivateIdentifier(node) {\n return node.kind === SyntaxKind.PrivateIdentifier;\n}\nexport function isQualifiedName(node) {\n return node.kind === SyntaxKind.QualifiedName;\n}\nexport function isComputedPropertyName(node) {\n return node.kind === SyntaxKind.ComputedPropertyName;\n}\nexport function isDecorator(node) {\n return node.kind === SyntaxKind.Decorator;\n}\nexport function isEmptyStatement(node) {\n return node.kind === SyntaxKind.EmptyStatement;\n}\nexport function isIfStatement(node) {\n return node.kind === SyntaxKind.IfStatement;\n}\nexport function isDoStatement(node) {\n return node.kind === SyntaxKind.DoStatement;\n}\nexport function isWhileStatement(node) {\n return node.kind === SyntaxKind.WhileStatement;\n}\nexport function isForStatement(node) {\n return node.kind === SyntaxKind.ForStatement;\n}\nexport function isBreakStatement(node) {\n return node.kind === SyntaxKind.BreakStatement;\n}\nexport function isContinueStatement(node) {\n return node.kind === SyntaxKind.ContinueStatement;\n}\nexport function isReturnStatement(node) {\n return node.kind === SyntaxKind.ReturnStatement;\n}\nexport function isWithStatement(node) {\n return node.kind === SyntaxKind.WithStatement;\n}\nexport function isSwitchStatement(node) {\n return node.kind === SyntaxKind.SwitchStatement;\n}\nexport function isCaseBlock(node) {\n return node.kind === SyntaxKind.CaseBlock;\n}\nexport function isThrowStatement(node) {\n return node.kind === SyntaxKind.ThrowStatement;\n}\nexport function isTryStatement(node) {\n return node.kind === SyntaxKind.TryStatement;\n}\nexport function isCatchClause(node) {\n return node.kind === SyntaxKind.CatchClause;\n}\nexport function isDebuggerStatement(node) {\n return node.kind === SyntaxKind.DebuggerStatement;\n}\nexport function isLabeledStatement(node) {\n return node.kind === SyntaxKind.LabeledStatement;\n}\nexport function isExpressionStatement(node) {\n return node.kind === SyntaxKind.ExpressionStatement;\n}\nexport function isBlock(node) {\n return node.kind === SyntaxKind.Block;\n}\nexport function isVariableStatement(node) {\n return node.kind === SyntaxKind.VariableStatement;\n}\nexport function isVariableDeclaration(node) {\n return node.kind === SyntaxKind.VariableDeclaration;\n}\nexport function isVariableDeclarationList(node) {\n return node.kind === SyntaxKind.VariableDeclarationList;\n}\nexport function isParameterDeclaration(node) {\n return node.kind === SyntaxKind.Parameter;\n}\nexport function isBindingElement(node) {\n return node.kind === SyntaxKind.BindingElement;\n}\nexport function isMissingDeclaration(node) {\n return node.kind === SyntaxKind.MissingDeclaration;\n}\nexport function isFunctionDeclaration(node) {\n return node.kind === SyntaxKind.FunctionDeclaration;\n}\nexport function isClassDeclaration(node) {\n return node.kind === SyntaxKind.ClassDeclaration;\n}\nexport function isClassExpression(node) {\n return node.kind === SyntaxKind.ClassExpression;\n}\nexport function isHeritageClause(node) {\n return node.kind === SyntaxKind.HeritageClause;\n}\nexport function isInterfaceDeclaration(node) {\n return node.kind === SyntaxKind.InterfaceDeclaration;\n}\nexport function isTypeAliasDeclaration(node) {\n switch (node.kind) {\n case SyntaxKind.TypeAliasDeclaration:\n case SyntaxKind.JSTypeAliasDeclaration:\n return true;\n default:\n return false;\n }\n}\nexport function isEnumMember(node) {\n return node.kind === SyntaxKind.EnumMember;\n}\nexport function isEnumDeclaration(node) {\n return node.kind === SyntaxKind.EnumDeclaration;\n}\nexport function isModuleBlock(node) {\n return node.kind === SyntaxKind.ModuleBlock;\n}\nexport function isNotEmittedStatement(node) {\n return node.kind === SyntaxKind.NotEmittedStatement;\n}\nexport function isNotEmittedTypeElement(node) {\n return node.kind === SyntaxKind.NotEmittedTypeElement;\n}\nexport function isImportDeclaration(node) {\n switch (node.kind) {\n case SyntaxKind.ImportDeclaration:\n case SyntaxKind.JSImportDeclaration:\n return true;\n default:\n return false;\n }\n}\nexport function isExternalModuleReference(node) {\n return node.kind === SyntaxKind.ExternalModuleReference;\n}\nexport function isNamespaceImport(node) {\n return node.kind === SyntaxKind.NamespaceImport;\n}\nexport function isNamedImports(node) {\n return node.kind === SyntaxKind.NamedImports;\n}\nexport function isExportAssignment(node) {\n return node.kind === SyntaxKind.ExportAssignment;\n}\nexport function isNamespaceExportDeclaration(node) {\n return node.kind === SyntaxKind.NamespaceExportDeclaration;\n}\nexport function isNamespaceExport(node) {\n return node.kind === SyntaxKind.NamespaceExport;\n}\nexport function isNamedExports(node) {\n return node.kind === SyntaxKind.NamedExports;\n}\nexport function isExportSpecifier(node) {\n return node.kind === SyntaxKind.ExportSpecifier;\n}\nexport function isCallSignatureDeclaration(node) {\n return node.kind === SyntaxKind.CallSignature;\n}\nexport function isConstructSignatureDeclaration(node) {\n return node.kind === SyntaxKind.ConstructSignature;\n}\nexport function isConstructorDeclaration(node) {\n return node.kind === SyntaxKind.Constructor;\n}\nexport function isGetAccessorDeclaration(node) {\n return node.kind === SyntaxKind.GetAccessor;\n}\nexport function isSetAccessorDeclaration(node) {\n return node.kind === SyntaxKind.SetAccessor;\n}\nexport function isIndexSignatureDeclaration(node) {\n return node.kind === SyntaxKind.IndexSignature;\n}\nexport function isMethodSignatureDeclaration(node) {\n return node.kind === SyntaxKind.MethodSignature;\n}\nexport function isMethodDeclaration(node) {\n return node.kind === SyntaxKind.MethodDeclaration;\n}\nexport function isPropertySignatureDeclaration(node) {\n return node.kind === SyntaxKind.PropertySignature;\n}\nexport function isPropertyDeclaration(node) {\n return node.kind === SyntaxKind.PropertyDeclaration;\n}\nexport function isSemicolonClassElement(node) {\n return node.kind === SyntaxKind.SemicolonClassElement;\n}\nexport function isClassStaticBlockDeclaration(node) {\n return node.kind === SyntaxKind.ClassStaticBlockDeclaration;\n}\nexport function isOmittedExpression(node) {\n return node.kind === SyntaxKind.OmittedExpression;\n}\nexport function isKeywordExpression(node) {\n return isKeywordExpressionKind(node.kind);\n}\nexport function isStringLiteral(node) {\n return node.kind === SyntaxKind.StringLiteral;\n}\nexport function isNumericLiteral(node) {\n return node.kind === SyntaxKind.NumericLiteral;\n}\nexport function isBigIntLiteral(node) {\n return node.kind === SyntaxKind.BigIntLiteral;\n}\nexport function isRegularExpressionLiteral(node) {\n return node.kind === SyntaxKind.RegularExpressionLiteral;\n}\nexport function isNoSubstitutionTemplateLiteral(node) {\n return node.kind === SyntaxKind.NoSubstitutionTemplateLiteral;\n}\nexport function isBinaryExpression(node) {\n return node.kind === SyntaxKind.BinaryExpression;\n}\nexport function isPrefixUnaryExpression(node) {\n return node.kind === SyntaxKind.PrefixUnaryExpression;\n}\nexport function isPostfixUnaryExpression(node) {\n return node.kind === SyntaxKind.PostfixUnaryExpression;\n}\nexport function isYieldExpression(node) {\n return node.kind === SyntaxKind.YieldExpression;\n}\nexport function isArrowFunction(node) {\n return node.kind === SyntaxKind.ArrowFunction;\n}\nexport function isFunctionExpression(node) {\n return node.kind === SyntaxKind.FunctionExpression;\n}\nexport function isAsExpression(node) {\n return node.kind === SyntaxKind.AsExpression;\n}\nexport function isSatisfiesExpression(node) {\n return node.kind === SyntaxKind.SatisfiesExpression;\n}\nexport function isConditionalExpression(node) {\n return node.kind === SyntaxKind.ConditionalExpression;\n}\nexport function isPropertyAccessExpression(node) {\n return node.kind === SyntaxKind.PropertyAccessExpression;\n}\nexport function isElementAccessExpression(node) {\n return node.kind === SyntaxKind.ElementAccessExpression;\n}\nexport function isCallExpression(node) {\n return node.kind === SyntaxKind.CallExpression;\n}\nexport function isNewExpression(node) {\n return node.kind === SyntaxKind.NewExpression;\n}\nexport function isMetaProperty(node) {\n return node.kind === SyntaxKind.MetaProperty;\n}\nexport function isNonNullExpression(node) {\n return node.kind === SyntaxKind.NonNullExpression;\n}\nexport function isSpreadElement(node) {\n return node.kind === SyntaxKind.SpreadElement;\n}\nexport function isTemplateExpression(node) {\n return node.kind === SyntaxKind.TemplateExpression;\n}\nexport function isTemplateSpan(node) {\n return node.kind === SyntaxKind.TemplateSpan;\n}\nexport function isTaggedTemplateExpression(node) {\n return node.kind === SyntaxKind.TaggedTemplateExpression;\n}\nexport function isParenthesizedExpression(node) {\n return node.kind === SyntaxKind.ParenthesizedExpression;\n}\nexport function isArrayLiteralExpression(node) {\n return node.kind === SyntaxKind.ArrayLiteralExpression;\n}\nexport function isObjectLiteralExpression(node) {\n return node.kind === SyntaxKind.ObjectLiteralExpression;\n}\nexport function isSpreadAssignment(node) {\n return node.kind === SyntaxKind.SpreadAssignment;\n}\nexport function isPropertyAssignment(node) {\n return node.kind === SyntaxKind.PropertyAssignment;\n}\nexport function isShorthandPropertyAssignment(node) {\n return node.kind === SyntaxKind.ShorthandPropertyAssignment;\n}\nexport function isDeleteExpression(node) {\n return node.kind === SyntaxKind.DeleteExpression;\n}\nexport function isTypeOfExpression(node) {\n return node.kind === SyntaxKind.TypeOfExpression;\n}\nexport function isVoidExpression(node) {\n return node.kind === SyntaxKind.VoidExpression;\n}\nexport function isAwaitExpression(node) {\n return node.kind === SyntaxKind.AwaitExpression;\n}\nexport function isTypeAssertion(node) {\n return node.kind === SyntaxKind.TypeAssertionExpression;\n}\nexport function isKeywordTypeNode(node) {\n return isKeywordTypeKind(node.kind);\n}\nexport function isUnionTypeNode(node) {\n return node.kind === SyntaxKind.UnionType;\n}\nexport function isIntersectionTypeNode(node) {\n return node.kind === SyntaxKind.IntersectionType;\n}\nexport function isConditionalTypeNode(node) {\n return node.kind === SyntaxKind.ConditionalType;\n}\nexport function isTypeOperatorNode(node) {\n return node.kind === SyntaxKind.TypeOperator;\n}\nexport function isInferTypeNode(node) {\n return node.kind === SyntaxKind.InferType;\n}\nexport function isArrayTypeNode(node) {\n return node.kind === SyntaxKind.ArrayType;\n}\nexport function isIndexedAccessTypeNode(node) {\n return node.kind === SyntaxKind.IndexedAccessType;\n}\nexport function isTypeReferenceNode(node) {\n return node.kind === SyntaxKind.TypeReference;\n}\nexport function isExpressionWithTypeArguments(node) {\n return node.kind === SyntaxKind.ExpressionWithTypeArguments;\n}\nexport function isLiteralTypeNode(node) {\n return node.kind === SyntaxKind.LiteralType;\n}\nexport function isThisTypeNode(node) {\n return node.kind === SyntaxKind.ThisType;\n}\nexport function isTypePredicateNode(node) {\n return node.kind === SyntaxKind.TypePredicate;\n}\nexport function isImportAttribute(node) {\n return node.kind === SyntaxKind.ImportAttribute;\n}\nexport function isImportAttributes(node) {\n return node.kind === SyntaxKind.ImportAttributes;\n}\nexport function isTypeQueryNode(node) {\n return node.kind === SyntaxKind.TypeQuery;\n}\nexport function isMappedTypeNode(node) {\n return node.kind === SyntaxKind.MappedType;\n}\nexport function isTypeLiteralNode(node) {\n return node.kind === SyntaxKind.TypeLiteral;\n}\nexport function isTupleTypeNode(node) {\n return node.kind === SyntaxKind.TupleType;\n}\nexport function isNamedTupleMember(node) {\n return node.kind === SyntaxKind.NamedTupleMember;\n}\nexport function isOptionalTypeNode(node) {\n return node.kind === SyntaxKind.OptionalType;\n}\nexport function isRestTypeNode(node) {\n return node.kind === SyntaxKind.RestType;\n}\nexport function isParenthesizedTypeNode(node) {\n return node.kind === SyntaxKind.ParenthesizedType;\n}\nexport function isFunctionTypeNode(node) {\n return node.kind === SyntaxKind.FunctionType;\n}\nexport function isConstructorTypeNode(node) {\n return node.kind === SyntaxKind.ConstructorType;\n}\nexport function isTemplateHead(node) {\n return node.kind === SyntaxKind.TemplateHead;\n}\nexport function isTemplateMiddle(node) {\n return node.kind === SyntaxKind.TemplateMiddle;\n}\nexport function isTemplateTail(node) {\n return node.kind === SyntaxKind.TemplateTail;\n}\nexport function isTemplateLiteralTypeNode(node) {\n return node.kind === SyntaxKind.TemplateLiteralType;\n}\nexport function isTemplateLiteralTypeSpan(node) {\n return node.kind === SyntaxKind.TemplateLiteralTypeSpan;\n}\nexport function isSyntheticExpression(node) {\n return node.kind === SyntaxKind.SyntheticExpression;\n}\nexport function isPartiallyEmittedExpression(node) {\n return node.kind === SyntaxKind.PartiallyEmittedExpression;\n}\nexport function isJsxElement(node) {\n return node.kind === SyntaxKind.JsxElement;\n}\nexport function isJsxAttributes(node) {\n return node.kind === SyntaxKind.JsxAttributes;\n}\nexport function isJsxNamespacedName(node) {\n return node.kind === SyntaxKind.JsxNamespacedName;\n}\nexport function isJsxOpeningElement(node) {\n return node.kind === SyntaxKind.JsxOpeningElement;\n}\nexport function isJsxSelfClosingElement(node) {\n return node.kind === SyntaxKind.JsxSelfClosingElement;\n}\nexport function isJsxFragment(node) {\n return node.kind === SyntaxKind.JsxFragment;\n}\nexport function isJsxOpeningFragment(node) {\n return node.kind === SyntaxKind.JsxOpeningFragment;\n}\nexport function isJsxClosingFragment(node) {\n return node.kind === SyntaxKind.JsxClosingFragment;\n}\nexport function isJsxAttribute(node) {\n return node.kind === SyntaxKind.JsxAttribute;\n}\nexport function isJsxSpreadAttribute(node) {\n return node.kind === SyntaxKind.JsxSpreadAttribute;\n}\nexport function isJsxClosingElement(node) {\n return node.kind === SyntaxKind.JsxClosingElement;\n}\nexport function isJsxExpression(node) {\n return node.kind === SyntaxKind.JsxExpression;\n}\nexport function isJsxText(node) {\n return node.kind === SyntaxKind.JsxText;\n}\nexport function isSyntaxList(node) {\n return node.kind === SyntaxKind.SyntaxList;\n}\nexport function isJSDoc(node) {\n return node.kind === SyntaxKind.JSDoc;\n}\nexport function isJSDocTypeExpression(node) {\n return node.kind === SyntaxKind.JSDocTypeExpression;\n}\nexport function isJSDocNonNullableType(node) {\n return node.kind === SyntaxKind.JSDocNonNullableType;\n}\nexport function isJSDocNullableType(node) {\n return node.kind === SyntaxKind.JSDocNullableType;\n}\nexport function isJSDocAllType(node) {\n return node.kind === SyntaxKind.JSDocAllType;\n}\nexport function isJSDocVariadicType(node) {\n return node.kind === SyntaxKind.JSDocVariadicType;\n}\nexport function isJSDocOptionalType(node) {\n return node.kind === SyntaxKind.JSDocOptionalType;\n}\nexport function isJSDocTypeTag(node) {\n return node.kind === SyntaxKind.JSDocTypeTag;\n}\nexport function isJSDocUnknownTag(node) {\n return node.kind === SyntaxKind.JSDocUnknownTag;\n}\nexport function isJSDocTemplateTag(node) {\n return node.kind === SyntaxKind.JSDocTemplateTag;\n}\nexport function isJSDocReturnTag(node) {\n return node.kind === SyntaxKind.JSDocReturnTag;\n}\nexport function isJSDocPublicTag(node) {\n return node.kind === SyntaxKind.JSDocPublicTag;\n}\nexport function isJSDocPrivateTag(node) {\n return node.kind === SyntaxKind.JSDocPrivateTag;\n}\nexport function isJSDocProtectedTag(node) {\n return node.kind === SyntaxKind.JSDocProtectedTag;\n}\nexport function isJSDocReadonlyTag(node) {\n return node.kind === SyntaxKind.JSDocReadonlyTag;\n}\nexport function isJSDocOverrideTag(node) {\n return node.kind === SyntaxKind.JSDocOverrideTag;\n}\nexport function isJSDocDeprecatedTag(node) {\n return node.kind === SyntaxKind.JSDocDeprecatedTag;\n}\nexport function isJSDocSeeTag(node) {\n return node.kind === SyntaxKind.JSDocSeeTag;\n}\nexport function isJSDocImplementsTag(node) {\n return node.kind === SyntaxKind.JSDocImplementsTag;\n}\nexport function isJSDocAugmentsTag(node) {\n return node.kind === SyntaxKind.JSDocAugmentsTag;\n}\nexport function isJSDocSatisfiesTag(node) {\n return node.kind === SyntaxKind.JSDocSatisfiesTag;\n}\nexport function isJSDocThrowsTag(node) {\n return node.kind === SyntaxKind.JSDocThrowsTag;\n}\nexport function isJSDocThisTag(node) {\n return node.kind === SyntaxKind.JSDocThisTag;\n}\nexport function isJSDocImportTag(node) {\n return node.kind === SyntaxKind.JSDocImportTag;\n}\nexport function isJSDocCallbackTag(node) {\n return node.kind === SyntaxKind.JSDocCallbackTag;\n}\nexport function isJSDocOverloadTag(node) {\n return node.kind === SyntaxKind.JSDocOverloadTag;\n}\nexport function isJSDocTypedefTag(node) {\n return node.kind === SyntaxKind.JSDocTypedefTag;\n}\nexport function isJSDocSignature(node) {\n return node.kind === SyntaxKind.JSDocSignature;\n}\nexport function isJSDocNameReference(node) {\n return node.kind === SyntaxKind.JSDocNameReference;\n}\nexport function isSourceFile(node) {\n return node.kind === SyntaxKind.SourceFile;\n}\nexport function isModuleDeclaration(node) {\n return node.kind === SyntaxKind.ModuleDeclaration;\n}\nexport function isImportEqualsDeclaration(node) {\n return node.kind === SyntaxKind.ImportEqualsDeclaration;\n}\nexport function isExportDeclaration(node) {\n return node.kind === SyntaxKind.ExportDeclaration;\n}\nexport function isImportTypeNode(node) {\n return node.kind === SyntaxKind.ImportType;\n}\nexport function isImportClause(node) {\n return node.kind === SyntaxKind.ImportClause;\n}\nexport function isImportSpecifier(node) {\n return node.kind === SyntaxKind.ImportSpecifier;\n}\nexport function isJSDocText(node) {\n return node.kind === SyntaxKind.JSDocText;\n}\nexport function isJSDocLink(node) {\n return node.kind === SyntaxKind.JSDocLink;\n}\nexport function isJSDocLinkPlain(node) {\n return node.kind === SyntaxKind.JSDocLinkPlain;\n}\nexport function isJSDocLinkCode(node) {\n return node.kind === SyntaxKind.JSDocLinkCode;\n}\nexport function isTypeParameterDeclaration(node) {\n return node.kind === SyntaxKind.TypeParameter;\n}\nexport function isSyntheticReferenceExpression(node) {\n return node.kind === SyntaxKind.SyntheticReferenceExpression;\n}\nexport function isJSDocTypeLiteral(node) {\n return node.kind === SyntaxKind.JSDocTypeLiteral;\n}\nexport function isForInStatement(node) {\n return node.kind === SyntaxKind.ForInStatement;\n}\nexport function isForOfStatement(node) {\n return node.kind === SyntaxKind.ForOfStatement;\n}\nexport function isCaseClause(node) {\n return node.kind === SyntaxKind.CaseClause;\n}\nexport function isDefaultClause(node) {\n return node.kind === SyntaxKind.DefaultClause;\n}\nexport function isObjectBindingPattern(node) {\n return node.kind === SyntaxKind.ObjectBindingPattern;\n}\nexport function isArrayBindingPattern(node) {\n return node.kind === SyntaxKind.ArrayBindingPattern;\n}\nexport function isJSDocParameterTag(node) {\n return node.kind === SyntaxKind.JSDocParameterTag;\n}\nexport function isJSDocPropertyTag(node) {\n return node.kind === SyntaxKind.JSDocPropertyTag;\n}\nexport function isAccessExpression(node) {\n return node.kind === SyntaxKind.PropertyAccessExpression || node.kind === SyntaxKind.ElementAccessExpression;\n}\nexport function isDeclarationName(node) {\n const kind = node.kind;\n return kind === SyntaxKind.Identifier || kind === SyntaxKind.PrivateIdentifier || kind === SyntaxKind.StringLiteral || kind === SyntaxKind.NumericLiteral || kind === SyntaxKind.BigIntLiteral || kind === SyntaxKind.NoSubstitutionTemplateLiteral || kind === SyntaxKind.ComputedPropertyName || kind === SyntaxKind.ObjectBindingPattern || kind === SyntaxKind.ArrayBindingPattern || kind === SyntaxKind.ElementAccessExpression;\n}\nexport function isModuleName(node) {\n return node.kind === SyntaxKind.Identifier || node.kind === SyntaxKind.StringLiteral;\n}\nexport function isModuleExportName(node) {\n return node.kind === SyntaxKind.Identifier || node.kind === SyntaxKind.StringLiteral;\n}\nexport function isPropertyName(node) {\n const kind = node.kind;\n return kind === SyntaxKind.Identifier || kind === SyntaxKind.StringLiteral || kind === SyntaxKind.NoSubstitutionTemplateLiteral || kind === SyntaxKind.NumericLiteral || kind === SyntaxKind.ComputedPropertyName || kind === SyntaxKind.PrivateIdentifier || kind === SyntaxKind.BigIntLiteral;\n}\nexport function isModuleBody(node) {\n return node.kind === SyntaxKind.ModuleBlock || node.kind === SyntaxKind.ModuleDeclaration;\n}\nexport function isJSDocFullName(node) {\n return node.kind === SyntaxKind.Identifier || node.kind === SyntaxKind.ModuleDeclaration;\n}\nexport function isModuleReference(node) {\n return node.kind === SyntaxKind.Identifier || node.kind === SyntaxKind.QualifiedName || node.kind === SyntaxKind.ExternalModuleReference;\n}\nexport function isNamedImportBindings(node) {\n return node.kind === SyntaxKind.NamespaceImport || node.kind === SyntaxKind.NamedImports;\n}\nexport function isNamedExportBindings(node) {\n return node.kind === SyntaxKind.NamespaceExport || node.kind === SyntaxKind.NamedExports;\n}\nexport function isMemberName(node) {\n return node.kind === SyntaxKind.Identifier || node.kind === SyntaxKind.PrivateIdentifier;\n}\nexport function isEntityName(node) {\n return node.kind === SyntaxKind.Identifier || node.kind === SyntaxKind.QualifiedName;\n}\nexport function isBindingName(node) {\n return node.kind === SyntaxKind.Identifier || node.kind === SyntaxKind.ObjectBindingPattern || node.kind === SyntaxKind.ArrayBindingPattern;\n}\nexport function isModifierLike(node) {\n const kind = node.kind;\n return kind === SyntaxKind.AbstractKeyword || kind === SyntaxKind.AccessorKeyword || kind === SyntaxKind.AsyncKeyword || kind === SyntaxKind.ConstKeyword || kind === SyntaxKind.DeclareKeyword || kind === SyntaxKind.DefaultKeyword || kind === SyntaxKind.ExportKeyword || kind === SyntaxKind.InKeyword || kind === SyntaxKind.PrivateKeyword || kind === SyntaxKind.ProtectedKeyword || kind === SyntaxKind.PublicKeyword || kind === SyntaxKind.ReadonlyKeyword || kind === SyntaxKind.OutKeyword || kind === SyntaxKind.OverrideKeyword || kind === SyntaxKind.StaticKeyword || kind === SyntaxKind.Decorator;\n}\nexport function isJsxChild(node) {\n const kind = node.kind;\n return kind === SyntaxKind.JsxText || kind === SyntaxKind.JsxExpression || kind === SyntaxKind.JsxElement || kind === SyntaxKind.JsxSelfClosingElement || kind === SyntaxKind.JsxFragment;\n}\nexport function isJsxAttributeLike(node) {\n return node.kind === SyntaxKind.JsxAttribute || node.kind === SyntaxKind.JsxSpreadAttribute;\n}\nexport function isJsxAttributeName(node) {\n return node.kind === SyntaxKind.Identifier || node.kind === SyntaxKind.JsxNamespacedName;\n}\nexport function isJsxAttributeValue(node) {\n const kind = node.kind;\n return kind === SyntaxKind.StringLiteral || kind === SyntaxKind.JsxExpression || kind === SyntaxKind.JsxElement || kind === SyntaxKind.JsxSelfClosingElement || kind === SyntaxKind.JsxFragment;\n}\nexport function isClassLikeDeclaration(node) {\n return node.kind === SyntaxKind.ClassDeclaration || node.kind === SyntaxKind.ClassExpression;\n}\nexport function isAccessorDeclaration(node) {\n return node.kind === SyntaxKind.GetAccessor || node.kind === SyntaxKind.SetAccessor;\n}\nexport function isLiteralLikeNode(node) {\n const kind = node.kind;\n return kind === SyntaxKind.StringLiteral || kind === SyntaxKind.NumericLiteral || kind === SyntaxKind.BigIntLiteral || kind === SyntaxKind.RegularExpressionLiteral || kind === SyntaxKind.TemplateHead || kind === SyntaxKind.TemplateMiddle || kind === SyntaxKind.TemplateTail || kind === SyntaxKind.JsxText;\n}\nexport function isLiteralExpression(node) {\n const kind = node.kind;\n return kind === SyntaxKind.StringLiteral || kind === SyntaxKind.NumericLiteral || kind === SyntaxKind.BigIntLiteral || kind === SyntaxKind.RegularExpressionLiteral || kind === SyntaxKind.NoSubstitutionTemplateLiteral;\n}\nexport function isUnionOrIntersectionTypeNode(node) {\n return node.kind === SyntaxKind.UnionType || node.kind === SyntaxKind.IntersectionType;\n}\nexport function isTemplateLiteralLikeNode(node) {\n const kind = node.kind;\n return isPseudoLiteralKind(kind);\n}\nexport function isTemplateMiddleOrTail(node) {\n return node.kind === SyntaxKind.TemplateMiddle || node.kind === SyntaxKind.TemplateTail;\n}\nexport function isTemplateLiteral(node) {\n return node.kind === SyntaxKind.TemplateExpression || node.kind === SyntaxKind.NoSubstitutionTemplateLiteral;\n}\nexport function isTypePredicateParameterName(node) {\n return node.kind === SyntaxKind.Identifier || node.kind === SyntaxKind.ThisType;\n}\nexport function isImportAttributeName(node) {\n return node.kind === SyntaxKind.Identifier || node.kind === SyntaxKind.StringLiteral;\n}\nexport function isJSDocComment(node) {\n const kind = node.kind;\n return kind === SyntaxKind.JSDocText || kind === SyntaxKind.JSDocLink || kind === SyntaxKind.JSDocLinkCode || kind === SyntaxKind.JSDocLinkPlain;\n}\nexport function isSignatureDeclaration(node) {\n const kind = node.kind;\n return kind === SyntaxKind.CallSignature || kind === SyntaxKind.ConstructSignature || kind === SyntaxKind.MethodSignature || kind === SyntaxKind.IndexSignature || kind === SyntaxKind.FunctionType || kind === SyntaxKind.ConstructorType || kind === SyntaxKind.FunctionDeclaration || kind === SyntaxKind.MethodDeclaration || kind === SyntaxKind.Constructor || kind === SyntaxKind.GetAccessor || kind === SyntaxKind.SetAccessor || kind === SyntaxKind.FunctionExpression || kind === SyntaxKind.ArrowFunction;\n}\nexport function isStringLiteralLikeNode(node) {\n return node.kind === SyntaxKind.StringLiteral || node.kind === SyntaxKind.NoSubstitutionTemplateLiteral;\n}\nexport function isNumericOrStringLikeLiteral(node) {\n return node.kind === SyntaxKind.StringLiteral || node.kind === SyntaxKind.NoSubstitutionTemplateLiteral || node.kind === SyntaxKind.NumericLiteral;\n}\nexport function isObjectLiteralLikeNode(node) {\n return node.kind === SyntaxKind.ObjectLiteralExpression || node.kind === SyntaxKind.ObjectBindingPattern;\n}\nexport function isObjectTypeDeclaration(node) {\n const kind = node.kind;\n return kind === SyntaxKind.ClassDeclaration || kind === SyntaxKind.ClassExpression || kind === SyntaxKind.InterfaceDeclaration || kind === SyntaxKind.TypeLiteral;\n}\nexport function isJsxOpeningLikeElement(node) {\n return node.kind === SyntaxKind.JsxOpeningElement || node.kind === SyntaxKind.JsxSelfClosingElement;\n}\nexport function isNamedImportsOrExports(node) {\n return node.kind === SyntaxKind.NamedImports || node.kind === SyntaxKind.NamedExports;\n}\nexport function isBreakOrContinueStatement(node) {\n return node.kind === SyntaxKind.BreakStatement || node.kind === SyntaxKind.ContinueStatement;\n}\nexport function isCallLikeExpression(node) {\n const kind = node.kind;\n return kind === SyntaxKind.CallExpression || kind === SyntaxKind.NewExpression || kind === SyntaxKind.TaggedTemplateExpression || kind === SyntaxKind.Decorator || kind === SyntaxKind.JsxOpeningElement || kind === SyntaxKind.JsxSelfClosingElement || kind === SyntaxKind.BinaryExpression;\n}\nexport function isFunctionLikeDeclaration(node) {\n const kind = node.kind;\n return kind === SyntaxKind.FunctionDeclaration || kind === SyntaxKind.MethodDeclaration || kind === SyntaxKind.GetAccessor || kind === SyntaxKind.SetAccessor || kind === SyntaxKind.Constructor || kind === SyntaxKind.FunctionExpression || kind === SyntaxKind.ArrowFunction;\n}\nexport function isVariableOrParameterDeclaration(node) {\n return node.kind === SyntaxKind.VariableDeclaration || node.kind === SyntaxKind.Parameter;\n}\nexport function isVariableOrPropertyDeclaration(node) {\n return node.kind === SyntaxKind.VariableDeclaration || node.kind === SyntaxKind.PropertyDeclaration;\n}\nexport function isCallOrNewExpression(node) {\n return node.kind === SyntaxKind.CallExpression || node.kind === SyntaxKind.NewExpression;\n}\nexport function isImportClauseOrBindingPattern(node) {\n return node.kind === SyntaxKind.ImportClause || node.kind === SyntaxKind.ObjectBindingPattern || node.kind === SyntaxKind.ArrayBindingPattern;\n}\nexport function isAnyImportSyntax(node) {\n return node.kind === SyntaxKind.ImportDeclaration || node.kind === SyntaxKind.JSImportDeclaration || node.kind === SyntaxKind.ImportEqualsDeclaration;\n}\nexport function isArrayBindingElement(node) {\n return node.kind === SyntaxKind.BindingElement || node.kind === SyntaxKind.OmittedExpression;\n}\nexport function isAssertionExpression(node) {\n return node.kind === SyntaxKind.TypeAssertionExpression || node.kind === SyntaxKind.AsExpression;\n}\nexport function isBooleanLiteral(node) {\n return node.kind === SyntaxKind.TrueKeyword || node.kind === SyntaxKind.FalseKeyword;\n}\nexport function isDestructuringAssignment(node) {\n return node.kind === SyntaxKind.BinaryExpression;\n}\nexport function isLiteralToken(node) {\n const kind = node.kind;\n return kind === SyntaxKind.NumericLiteral || kind === SyntaxKind.BigIntLiteral || kind === SyntaxKind.StringLiteral || kind === SyntaxKind.JsxText || kind === SyntaxKind.RegularExpressionLiteral || kind === SyntaxKind.NoSubstitutionTemplateLiteral;\n}\nexport function isModifier(node) {\n const kind = node.kind;\n return isModifierKind(kind);\n}\nexport function isObjectLiteralElementLike(node) {\n const kind = node.kind;\n return kind === SyntaxKind.PropertyAssignment || kind === SyntaxKind.ShorthandPropertyAssignment || kind === SyntaxKind.SpreadAssignment || kind === SyntaxKind.MethodDeclaration || kind === SyntaxKind.GetAccessor || kind === SyntaxKind.SetAccessor;\n}\nexport function isPropertyNameLiteral(node) {\n return node.kind === SyntaxKind.Identifier || node.kind === SyntaxKind.StringLiteral || node.kind === SyntaxKind.NumericLiteral;\n}\nexport function isPseudoLiteralToken(node) {\n const kind = node.kind;\n return isPseudoLiteralKind(kind);\n}\nexport function isTemplateLiteralToken(node) {\n const kind = node.kind;\n return kind === SyntaxKind.NoSubstitutionTemplateLiteral || kind === SyntaxKind.TemplateHead || kind === SyntaxKind.TemplateMiddle || kind === SyntaxKind.TemplateTail;\n}\nexport function isArrayDestructuringAssignment(node) {\n return node.kind === SyntaxKind.BinaryExpression;\n}\nexport function isObjectDestructuringAssignment(node) {\n return node.kind === SyntaxKind.BinaryExpression;\n}\nexport function isFunctionBody(node) {\n return node.kind === SyntaxKind.Block;\n}\nexport function isTriviaKind(kind) {\n return kind === SyntaxKind.SingleLineCommentTrivia\n || kind === SyntaxKind.MultiLineCommentTrivia\n || kind === SyntaxKind.NewLineTrivia\n || kind === SyntaxKind.WhitespaceTrivia\n || kind === SyntaxKind.ConflictMarkerTrivia;\n}\nexport function isPseudoLiteralKind(kind) {\n return kind === SyntaxKind.TemplateHead\n || kind === SyntaxKind.TemplateMiddle\n || kind === SyntaxKind.TemplateTail;\n}\nexport function isModifierKind(kind) {\n return kind === SyntaxKind.AbstractKeyword\n || kind === SyntaxKind.AccessorKeyword\n || kind === SyntaxKind.AsyncKeyword\n || kind === SyntaxKind.ConstKeyword\n || kind === SyntaxKind.DeclareKeyword\n || kind === SyntaxKind.DefaultKeyword\n || kind === SyntaxKind.ExportKeyword\n || kind === SyntaxKind.InKeyword\n || kind === SyntaxKind.PrivateKeyword\n || kind === SyntaxKind.ProtectedKeyword\n || kind === SyntaxKind.PublicKeyword\n || kind === SyntaxKind.ReadonlyKeyword\n || kind === SyntaxKind.OutKeyword\n || kind === SyntaxKind.OverrideKeyword\n || kind === SyntaxKind.StaticKeyword;\n}\nexport function isKeywordTypeKind(kind) {\n return kind === SyntaxKind.AnyKeyword\n || kind === SyntaxKind.BigIntKeyword\n || kind === SyntaxKind.BooleanKeyword\n || kind === SyntaxKind.IntrinsicKeyword\n || kind === SyntaxKind.NeverKeyword\n || kind === SyntaxKind.NumberKeyword\n || kind === SyntaxKind.ObjectKeyword\n || kind === SyntaxKind.StringKeyword\n || kind === SyntaxKind.SymbolKeyword\n || kind === SyntaxKind.UndefinedKeyword\n || kind === SyntaxKind.UnknownKeyword\n || kind === SyntaxKind.VoidKeyword;\n}\nexport function isKeywordExpressionKind(kind) {\n return kind === SyntaxKind.NullKeyword\n || kind === SyntaxKind.TrueKeyword\n || kind === SyntaxKind.FalseKeyword\n || kind === SyntaxKind.ThisKeyword\n || kind === SyntaxKind.SuperKeyword\n || kind === SyntaxKind.ImportKeyword;\n}\nexport function isJsxTokenKind(kind) {\n return kind === SyntaxKind.LessThanSlashToken\n || kind === SyntaxKind.EndOfFile\n || kind === SyntaxKind.ConflictMarkerTrivia\n || kind === SyntaxKind.JsxText\n || kind === SyntaxKind.JsxTextAllWhiteSpaces\n || kind === SyntaxKind.OpenBraceToken\n || kind === SyntaxKind.LessThanToken;\n}\nexport function isImportPhaseModifierKind(kind) {\n return kind === SyntaxKind.TypeKeyword\n || kind === SyntaxKind.DeferKeyword;\n}\nexport function isPostfixUnaryOperator(kind) {\n return kind === SyntaxKind.PlusPlusToken\n || kind === SyntaxKind.MinusMinusToken;\n}\nexport function isPrefixUnaryOperator(kind) {\n return kind === SyntaxKind.PlusToken\n || kind === SyntaxKind.MinusToken\n || kind === SyntaxKind.TildeToken\n || kind === SyntaxKind.ExclamationToken\n || kind === SyntaxKind.PlusPlusToken\n || kind === SyntaxKind.MinusMinusToken;\n}\nexport function isAssignmentOperator(kind) {\n return kind === SyntaxKind.EqualsToken\n || isCompoundAssignmentOperator(kind);\n}\nexport function isBinaryOperator(kind) {\n return isAssignmentOperatorOrHigher(kind)\n || kind === SyntaxKind.CommaToken;\n}\nexport function isExponentiationOperator(kind) {\n return kind === SyntaxKind.AsteriskAsteriskToken;\n}\nexport function isMultiplicativeOperator(kind) {\n return kind === SyntaxKind.AsteriskToken\n || kind === SyntaxKind.SlashToken\n || kind === SyntaxKind.PercentToken;\n}\nexport function isMultiplicativeOperatorOrHigher(kind) {\n return isExponentiationOperator(kind)\n || isMultiplicativeOperator(kind);\n}\nexport function isAdditiveOperator(kind) {\n return kind === SyntaxKind.PlusToken\n || kind === SyntaxKind.MinusToken;\n}\nexport function isAdditiveOperatorOrHigher(kind) {\n return isMultiplicativeOperatorOrHigher(kind)\n || isAdditiveOperator(kind);\n}\nexport function isShiftOperator(kind) {\n return kind === SyntaxKind.LessThanLessThanToken\n || kind === SyntaxKind.GreaterThanGreaterThanToken\n || kind === SyntaxKind.GreaterThanGreaterThanGreaterThanToken;\n}\nexport function isShiftOperatorOrHigher(kind) {\n return isAdditiveOperatorOrHigher(kind)\n || isShiftOperator(kind);\n}\nexport function isRelationalOperator(kind) {\n return kind === SyntaxKind.LessThanToken\n || kind === SyntaxKind.LessThanEqualsToken\n || kind === SyntaxKind.GreaterThanToken\n || kind === SyntaxKind.GreaterThanEqualsToken\n || kind === SyntaxKind.InstanceOfKeyword\n || kind === SyntaxKind.InKeyword;\n}\nexport function isRelationalOperatorOrHigher(kind) {\n return isShiftOperatorOrHigher(kind)\n || isRelationalOperator(kind);\n}\nexport function isEqualityOperator(kind) {\n return kind === SyntaxKind.EqualsEqualsToken\n || kind === SyntaxKind.EqualsEqualsEqualsToken\n || kind === SyntaxKind.ExclamationEqualsEqualsToken\n || kind === SyntaxKind.ExclamationEqualsToken;\n}\nexport function isEqualityOperatorOrHigher(kind) {\n return isRelationalOperatorOrHigher(kind)\n || isEqualityOperator(kind);\n}\nexport function isBitwiseOperator(kind) {\n return kind === SyntaxKind.AmpersandToken\n || kind === SyntaxKind.BarToken\n || kind === SyntaxKind.CaretToken;\n}\nexport function isBitwiseOperatorOrHigher(kind) {\n return isEqualityOperatorOrHigher(kind)\n || isBitwiseOperator(kind);\n}\nexport function isLogicalOperator(kind) {\n return kind === SyntaxKind.AmpersandAmpersandToken\n || kind === SyntaxKind.BarBarToken;\n}\nexport function isLogicalOperatorOrHigher(kind) {\n return isBitwiseOperatorOrHigher(kind)\n || isLogicalOperator(kind);\n}\nexport function isCompoundAssignmentOperator(kind) {\n return kind === SyntaxKind.PlusEqualsToken\n || kind === SyntaxKind.MinusEqualsToken\n || kind === SyntaxKind.AsteriskAsteriskEqualsToken\n || kind === SyntaxKind.AsteriskEqualsToken\n || kind === SyntaxKind.SlashEqualsToken\n || kind === SyntaxKind.PercentEqualsToken\n || kind === SyntaxKind.AmpersandEqualsToken\n || kind === SyntaxKind.BarEqualsToken\n || kind === SyntaxKind.CaretEqualsToken\n || kind === SyntaxKind.LessThanLessThanEqualsToken\n || kind === SyntaxKind.GreaterThanGreaterThanGreaterThanEqualsToken\n || kind === SyntaxKind.GreaterThanGreaterThanEqualsToken\n || kind === SyntaxKind.BarBarEqualsToken\n || kind === SyntaxKind.AmpersandAmpersandEqualsToken\n || kind === SyntaxKind.QuestionQuestionEqualsToken;\n}\nexport function isAssignmentOperatorOrHigher(kind) {\n return kind === SyntaxKind.QuestionQuestionToken\n || isLogicalOperatorOrHigher(kind)\n || isAssignmentOperator(kind);\n}\nexport function isLogicalOrCoalescingAssignmentOperator(kind) {\n return kind === SyntaxKind.AmpersandAmpersandEqualsToken\n || kind === SyntaxKind.BarBarEqualsToken\n || kind === SyntaxKind.QuestionQuestionEqualsToken;\n}\nexport function isLiteralKind(kind) {\n return kind >= SyntaxKind.FirstLiteralToken && kind <= SyntaxKind.LastLiteralToken;\n}\nexport function isPunctuationKind(kind) {\n return kind >= SyntaxKind.FirstPunctuation && kind <= SyntaxKind.LastPunctuation;\n}\nexport function isKeywordKind(kind) {\n return kind >= SyntaxKind.FirstKeyword && kind <= SyntaxKind.LastKeyword;\n}\nexport function isTokenKind(kind) {\n return kind >= SyntaxKind.FirstToken && kind <= SyntaxKind.LastToken;\n}\nexport function isJSDocNodeKind(kind) {\n return kind >= SyntaxKind.FirstJSDocNode && kind <= SyntaxKind.LastJSDocNode;\n}\nexport function isEndOfFile(node) {\n return node.kind === SyntaxKind.EndOfFile;\n}\nexport function isDotToken(node) {\n return node.kind === SyntaxKind.DotToken;\n}\nexport function isDotDotDotToken(node) {\n return node.kind === SyntaxKind.DotDotDotToken;\n}\nexport function isQuestionToken(node) {\n return node.kind === SyntaxKind.QuestionToken;\n}\nexport function isExclamationToken(node) {\n return node.kind === SyntaxKind.ExclamationToken;\n}\nexport function isColonToken(node) {\n return node.kind === SyntaxKind.ColonToken;\n}\nexport function isEqualsToken(node) {\n return node.kind === SyntaxKind.EqualsToken;\n}\nexport function isAsteriskToken(node) {\n return node.kind === SyntaxKind.AsteriskToken;\n}\nexport function isEqualsGreaterThanToken(node) {\n return node.kind === SyntaxKind.EqualsGreaterThanToken;\n}\nexport function isPlusToken(node) {\n return node.kind === SyntaxKind.PlusToken;\n}\nexport function isMinusToken(node) {\n return node.kind === SyntaxKind.MinusToken;\n}\nexport function isQuestionDotToken(node) {\n return node.kind === SyntaxKind.QuestionDotToken;\n}\nexport function isAssertsKeyword(node) {\n return node.kind === SyntaxKind.AssertsKeyword;\n}\nexport function isAssertKeyword(node) {\n return node.kind === SyntaxKind.AssertKeyword;\n}\nexport function isAwaitKeyword(node) {\n return node.kind === SyntaxKind.AwaitKeyword;\n}\nexport function isCaseKeyword(node) {\n return node.kind === SyntaxKind.CaseKeyword;\n}\nexport function isAbstractKeyword(node) {\n return node.kind === SyntaxKind.AbstractKeyword;\n}\nexport function isAccessorKeyword(node) {\n return node.kind === SyntaxKind.AccessorKeyword;\n}\nexport function isAsyncKeyword(node) {\n return node.kind === SyntaxKind.AsyncKeyword;\n}\nexport function isConstKeyword(node) {\n return node.kind === SyntaxKind.ConstKeyword;\n}\nexport function isDeclareKeyword(node) {\n return node.kind === SyntaxKind.DeclareKeyword;\n}\nexport function isDefaultKeyword(node) {\n return node.kind === SyntaxKind.DefaultKeyword;\n}\nexport function isExportKeyword(node) {\n return node.kind === SyntaxKind.ExportKeyword;\n}\nexport function isInKeyword(node) {\n return node.kind === SyntaxKind.InKeyword;\n}\nexport function isPrivateKeyword(node) {\n return node.kind === SyntaxKind.PrivateKeyword;\n}\nexport function isProtectedKeyword(node) {\n return node.kind === SyntaxKind.ProtectedKeyword;\n}\nexport function isPublicKeyword(node) {\n return node.kind === SyntaxKind.PublicKeyword;\n}\nexport function isReadonlyKeyword(node) {\n return node.kind === SyntaxKind.ReadonlyKeyword;\n}\nexport function isOutKeyword(node) {\n return node.kind === SyntaxKind.OutKeyword;\n}\nexport function isOverrideKeyword(node) {\n return node.kind === SyntaxKind.OverrideKeyword;\n}\nexport function isStaticKeyword(node) {\n return node.kind === SyntaxKind.StaticKeyword;\n}\nexport function isBinaryOperatorToken(node) {\n return isBinaryOperator(node.kind);\n}\nexport function isAssignmentOperatorToken(node) {\n return isAssignmentOperator(node.kind);\n}\nexport function isNullLiteral(node) {\n return node.kind === SyntaxKind.NullKeyword;\n}\nexport function isTrueLiteral(node) {\n return node.kind === SyntaxKind.TrueKeyword;\n}\nexport function isFalseLiteral(node) {\n return node.kind === SyntaxKind.FalseKeyword;\n}\nexport function isThisExpression(node) {\n return node.kind === SyntaxKind.ThisKeyword;\n}\nexport function isSuperExpression(node) {\n return node.kind === SyntaxKind.SuperKeyword;\n}\nexport function isImportExpression(node) {\n return node.kind === SyntaxKind.ImportKeyword;\n}\n//# sourceMappingURL=is.generated.js.map","// is.ts — Hand-written type guard functions\n// Generated guards are in is.generated.ts\nimport { NodeFlags } from \"#enums/nodeFlags\";\nimport { OuterExpressionKinds } from \"#enums/outerExpressionKinds\";\nimport { ScriptKind } from \"#enums/scriptKind\";\nimport { SyntaxKind } from \"#enums/syntaxKind\";\nimport { isLiteralExpression } from \"./is.generated.js\";\nexport * from \"./is.generated.js\";\nexport function isTypeNode(node) {\n return isTypeNodeKind(node.kind);\n}\nfunction isTypeNodeKind(kind) {\n return kind >= SyntaxKind.FirstTypeNode && kind <= SyntaxKind.LastTypeNode\n || kind === SyntaxKind.AnyKeyword\n || kind === SyntaxKind.UnknownKeyword\n || kind === SyntaxKind.NumberKeyword\n || kind === SyntaxKind.BigIntKeyword\n || kind === SyntaxKind.ObjectKeyword\n || kind === SyntaxKind.BooleanKeyword\n || kind === SyntaxKind.StringKeyword\n || kind === SyntaxKind.SymbolKeyword\n || kind === SyntaxKind.VoidKeyword\n || kind === SyntaxKind.UndefinedKeyword\n || kind === SyntaxKind.NeverKeyword\n || kind === SyntaxKind.IntrinsicKeyword\n || kind === SyntaxKind.ExpressionWithTypeArguments\n || kind === SyntaxKind.JSDocAllType\n || kind === SyntaxKind.JSDocNullableType\n || kind === SyntaxKind.JSDocNonNullableType\n || kind === SyntaxKind.JSDocOptionalType\n || kind === SyntaxKind.JSDocVariadicType\n || kind === SyntaxKind.JSDocTypeExpression\n || kind === SyntaxKind.JSDocTypeLiteral\n || kind === SyntaxKind.JSDocSignature;\n}\nexport function isStatement(node) {\n const kind = node.kind;\n return kind === SyntaxKind.VariableStatement || kind === SyntaxKind.EmptyStatement\n || kind === SyntaxKind.ExpressionStatement || kind === SyntaxKind.IfStatement\n || kind === SyntaxKind.DoStatement || kind === SyntaxKind.WhileStatement\n || kind === SyntaxKind.ForStatement || kind === SyntaxKind.ForInStatement\n || kind === SyntaxKind.ForOfStatement || kind === SyntaxKind.ContinueStatement\n || kind === SyntaxKind.BreakStatement || kind === SyntaxKind.ReturnStatement\n || kind === SyntaxKind.WithStatement || kind === SyntaxKind.SwitchStatement\n || kind === SyntaxKind.LabeledStatement || kind === SyntaxKind.ThrowStatement\n || kind === SyntaxKind.TryStatement || kind === SyntaxKind.DebuggerStatement\n || kind === SyntaxKind.InterfaceDeclaration || kind === SyntaxKind.TypeAliasDeclaration\n || kind === SyntaxKind.EnumDeclaration || kind === SyntaxKind.ModuleDeclaration\n || kind === SyntaxKind.ImportDeclaration || kind === SyntaxKind.ImportEqualsDeclaration\n || kind === SyntaxKind.ExportDeclaration || kind === SyntaxKind.ExportAssignment\n || kind === SyntaxKind.NamespaceExportDeclaration || kind === SyntaxKind.FunctionDeclaration\n || kind === SyntaxKind.ClassDeclaration || kind === SyntaxKind.MissingDeclaration\n || kind === SyntaxKind.NotEmittedStatement || kind === SyntaxKind.Block;\n}\nexport function isExpression(node) {\n const kind = node.kind;\n return kind === SyntaxKind.ConditionalExpression || kind === SyntaxKind.YieldExpression\n || kind === SyntaxKind.ArrowFunction || kind === SyntaxKind.BinaryExpression\n || kind === SyntaxKind.SpreadElement || kind === SyntaxKind.AsExpression\n || kind === SyntaxKind.OmittedExpression\n || kind === SyntaxKind.SatisfiesExpression\n || kind === SyntaxKind.PrefixUnaryExpression || kind === SyntaxKind.PostfixUnaryExpression\n || kind === SyntaxKind.DeleteExpression || kind === SyntaxKind.TypeOfExpression\n || kind === SyntaxKind.VoidExpression || kind === SyntaxKind.AwaitExpression\n || kind === SyntaxKind.TypeAssertionExpression\n || kind === SyntaxKind.CallExpression || kind === SyntaxKind.NewExpression\n || kind === SyntaxKind.TaggedTemplateExpression || kind === SyntaxKind.NonNullExpression\n || kind === SyntaxKind.MetaProperty || kind === SyntaxKind.JsxExpression\n || kind === SyntaxKind.PropertyAccessExpression || kind === SyntaxKind.ElementAccessExpression\n || kind === SyntaxKind.FunctionExpression || kind === SyntaxKind.ClassExpression\n || kind === SyntaxKind.ParenthesizedExpression || kind === SyntaxKind.ArrayLiteralExpression\n || kind === SyntaxKind.ObjectLiteralExpression || kind === SyntaxKind.TemplateExpression\n || kind === SyntaxKind.Identifier\n || kind === SyntaxKind.PrivateIdentifier\n || kind === SyntaxKind.NumericLiteral || kind === SyntaxKind.BigIntLiteral\n || kind === SyntaxKind.StringLiteral || kind === SyntaxKind.RegularExpressionLiteral\n || kind === SyntaxKind.NoSubstitutionTemplateLiteral || kind === SyntaxKind.JsxElement\n || kind === SyntaxKind.JsxSelfClosingElement || kind === SyntaxKind.JsxFragment\n || kind === SyntaxKind.NullKeyword || kind === SyntaxKind.TrueKeyword\n || kind === SyntaxKind.FalseKeyword || kind === SyntaxKind.ThisKeyword\n || kind === SyntaxKind.SuperKeyword || kind === SyntaxKind.ImportKeyword\n || kind === SyntaxKind.ExpressionWithTypeArguments;\n}\nexport function isBlockOrExpression(node) {\n return node.kind === SyntaxKind.Block || isExpression(node);\n}\nexport function isLeftHandSideExpression(node) {\n return isLeftHandSideExpressionKind(skipPartiallyEmittedExpressions(node).kind);\n}\nexport function skipPartiallyEmittedExpressions(node) {\n return skipOuterExpressions(node, OuterExpressionKinds.PartiallyEmittedExpressions);\n}\nfunction isLeftHandSideExpressionKind(kind) {\n switch (kind) {\n case SyntaxKind.PropertyAccessExpression:\n case SyntaxKind.ElementAccessExpression:\n case SyntaxKind.NewExpression:\n case SyntaxKind.CallExpression:\n case SyntaxKind.JsxElement:\n case SyntaxKind.JsxSelfClosingElement:\n case SyntaxKind.JsxFragment:\n case SyntaxKind.TaggedTemplateExpression:\n case SyntaxKind.ArrayLiteralExpression:\n case SyntaxKind.ParenthesizedExpression:\n case SyntaxKind.ObjectLiteralExpression:\n case SyntaxKind.ClassExpression:\n case SyntaxKind.FunctionExpression:\n case SyntaxKind.Identifier:\n case SyntaxKind.PrivateIdentifier: // technically this is only an Expression if it's in a `#field in expr` BinaryExpression\n case SyntaxKind.RegularExpressionLiteral:\n case SyntaxKind.NumericLiteral:\n case SyntaxKind.BigIntLiteral:\n case SyntaxKind.StringLiteral:\n case SyntaxKind.NoSubstitutionTemplateLiteral:\n case SyntaxKind.TemplateExpression:\n case SyntaxKind.FalseKeyword:\n case SyntaxKind.NullKeyword:\n case SyntaxKind.ThisKeyword:\n case SyntaxKind.TrueKeyword:\n case SyntaxKind.SuperKeyword:\n case SyntaxKind.NonNullExpression:\n case SyntaxKind.ExpressionWithTypeArguments:\n case SyntaxKind.MetaProperty:\n case SyntaxKind.ImportKeyword: // technically this is only an Expression if it's in a CallExpression\n case SyntaxKind.MissingDeclaration:\n return true;\n default:\n return false;\n }\n}\nexport function isUnaryExpression(node) {\n return isUnaryExpressionKind(skipPartiallyEmittedExpressions(node).kind);\n}\nfunction isUnaryExpressionKind(kind) {\n switch (kind) {\n case SyntaxKind.PrefixUnaryExpression:\n case SyntaxKind.PostfixUnaryExpression:\n case SyntaxKind.DeleteExpression:\n case SyntaxKind.TypeOfExpression:\n case SyntaxKind.VoidExpression:\n case SyntaxKind.AwaitExpression:\n case SyntaxKind.TypeAssertionExpression:\n return true;\n default:\n return isLeftHandSideExpressionKind(kind);\n }\n}\n/** @internal */\nexport function isOuterExpression(node, kinds = OuterExpressionKinds.All) {\n switch (node.kind) {\n case SyntaxKind.ParenthesizedExpression:\n if (kinds & OuterExpressionKinds.ExcludeJSDocTypeAssertion && isJSDocTypeAssertion(node)) {\n return false;\n }\n return (kinds & OuterExpressionKinds.Parentheses) !== 0;\n case SyntaxKind.TypeAssertionExpression:\n case SyntaxKind.AsExpression:\n return (kinds & OuterExpressionKinds.TypeAssertions) !== 0;\n case SyntaxKind.SatisfiesExpression:\n return (kinds & (OuterExpressionKinds.ExpressionsWithTypeArguments | OuterExpressionKinds.Satisfies)) !== 0;\n case SyntaxKind.ExpressionWithTypeArguments:\n return (kinds & OuterExpressionKinds.ExpressionsWithTypeArguments) !== 0;\n case SyntaxKind.NonNullExpression:\n return (kinds & OuterExpressionKinds.NonNullAssertions) !== 0;\n case SyntaxKind.PartiallyEmittedExpression:\n return (kinds & OuterExpressionKinds.PartiallyEmittedExpressions) !== 0;\n }\n return false;\n}\n/** @internal */\nexport function skipOuterExpressions(node, kinds = OuterExpressionKinds.All) {\n while (isOuterExpression(node, kinds)) {\n node = node.expression;\n }\n return node;\n}\nfunction isJSDocTypeAssertion(node) {\n const sourceFile = node.getSourceFile();\n if (sourceFile.scriptKind !== ScriptKind.JS && sourceFile.scriptKind !== ScriptKind.JSX) {\n return false;\n }\n const expression = node.expression;\n if (expression.kind !== SyntaxKind.AsExpression) {\n return false;\n }\n const asExpression = expression;\n return !!asExpression.type\n && (asExpression.type.flags & NodeFlags.Reparsed) !== 0;\n}\nexport function isBindingPattern(node) {\n return node.kind === SyntaxKind.ObjectBindingPattern || node.kind === SyntaxKind.ArrayBindingPattern;\n}\nexport function isConciseBody(node) {\n return node.kind === SyntaxKind.Block || isExpression(node);\n}\nexport function isForInitializer(node) {\n return node.kind === SyntaxKind.VariableDeclarationList || isExpression(node);\n}\nexport function isQuestionOrExclamationToken(node) {\n return node.kind === SyntaxKind.QuestionToken || node.kind === SyntaxKind.ExclamationToken;\n}\nexport function isIdentifierOrThisTypeNode(node) {\n return node.kind === SyntaxKind.Identifier || node.kind === SyntaxKind.ThisType;\n}\nexport function isReadonlyKeywordOrPlusOrMinusToken(node) {\n return node.kind === SyntaxKind.ReadonlyKeyword || node.kind === SyntaxKind.PlusToken || node.kind === SyntaxKind.MinusToken;\n}\nexport function isQuestionOrPlusOrMinusToken(node) {\n return node.kind === SyntaxKind.QuestionToken || node.kind === SyntaxKind.PlusToken || node.kind === SyntaxKind.MinusToken;\n}\nexport function isTemplateMiddleOrTemplateTail(node) {\n return node.kind === SyntaxKind.TemplateMiddle || node.kind === SyntaxKind.TemplateTail;\n}\nexport function isLiteralTypeLiteral(node) {\n const kind = node.kind;\n return kind === SyntaxKind.NullKeyword || kind === SyntaxKind.TrueKeyword\n || kind === SyntaxKind.FalseKeyword || kind === SyntaxKind.PrefixUnaryExpression\n || isLiteralExpression(node);\n}\nexport function isIdentifierOrJSDocNamespaceDeclaration(node) {\n return node.kind === SyntaxKind.Identifier || node.kind === SyntaxKind.ModuleDeclaration;\n}\nexport function isJSDocTypeExpressionOrJSDocTypeLiteral(node) {\n return node.kind === SyntaxKind.JSDocTypeExpression || node.kind === SyntaxKind.JSDocTypeLiteral;\n}\nexport function isJsxTagNameExpression(node) {\n const kind = node.kind;\n return kind === SyntaxKind.ThisKeyword\n || kind === SyntaxKind.Identifier\n || kind === SyntaxKind.PropertyAccessExpression\n || kind === SyntaxKind.JsxNamespacedName;\n}\n//# sourceMappingURL=is.js.map","// Code generated by _scripts/generate-ts-ast.ts. DO NOT EDIT.\nimport { SyntaxKind } from \"#enums/syntaxKind\";\nimport { createNodeArray, updateArrayBindingPattern, updateArrayLiteralExpression, updateArrayTypeNode, updateArrowFunction, updateAsExpression, updateAwaitExpression, updateBinaryExpression, updateBindingElement, updateBlock, updateBreakStatement, updateCallExpression, updateCallSignatureDeclaration, updateCaseBlock, updateCaseClause, updateCatchClause, updateClassDeclaration, updateClassExpression, updateClassStaticBlockDeclaration, updateComputedPropertyName, updateConditionalExpression, updateConditionalTypeNode, updateConstructorDeclaration, updateConstructorTypeNode, updateConstructSignatureDeclaration, updateContinueStatement, updateDecorator, updateDefaultClause, updateDeleteExpression, updateDoStatement, updateElementAccessExpression, updateEnumDeclaration, updateEnumMember, updateExportAssignment, updateExportDeclaration, updateExportSpecifier, updateExpressionStatement, updateExpressionWithTypeArguments, updateExternalModuleReference, updateForInStatement, updateForOfStatement, updateForStatement, updateFunctionDeclaration, updateFunctionExpression, updateFunctionTypeNode, updateGetAccessorDeclaration, updateHeritageClause, updateIfStatement, updateImportAttribute, updateImportAttributes, updateImportClause, updateImportDeclaration, updateImportEqualsDeclaration, updateImportSpecifier, updateImportTypeNode, updateIndexedAccessTypeNode, updateIndexSignatureDeclaration, updateInferTypeNode, updateInterfaceDeclaration, updateIntersectionTypeNode, updateJSDoc, updateJSDocAugmentsTag, updateJSDocCallbackTag, updateJSDocDeprecatedTag, updateJSDocImplementsTag, updateJSDocImportTag, updateJSDocLink, updateJSDocLinkCode, updateJSDocLinkPlain, updateJSDocNameReference, updateJSDocNonNullableType, updateJSDocNullableType, updateJSDocOptionalType, updateJSDocOverloadTag, updateJSDocOverrideTag, updateJSDocPrivateTag, updateJSDocProtectedTag, updateJSDocPublicTag, updateJSDocReadonlyTag, updateJSDocReturnTag, updateJSDocSatisfiesTag, updateJSDocSeeTag, updateJSDocSignature, updateJSDocTemplateTag, updateJSDocThisTag, updateJSDocThrowsTag, updateJSDocTypedefTag, updateJSDocTypeExpression, updateJSDocTypeLiteral, updateJSDocTypeTag, updateJSDocUnknownTag, updateJSDocVariadicType, updateJsxAttribute, updateJsxAttributes, updateJsxClosingElement, updateJsxElement, updateJsxExpression, updateJsxFragment, updateJsxNamespacedName, updateJsxOpeningElement, updateJsxSelfClosingElement, updateJsxSpreadAttribute, updateLabeledStatement, updateLiteralTypeNode, updateMappedTypeNode, updateMetaProperty, updateMethodDeclaration, updateMethodSignatureDeclaration, updateMissingDeclaration, updateModuleBlock, updateModuleDeclaration, updateNamedExports, updateNamedImports, updateNamedTupleMember, updateNamespaceExport, updateNamespaceExportDeclaration, updateNamespaceImport, updateNewExpression, updateNonNullExpression, updateObjectBindingPattern, updateObjectLiteralExpression, updateOptionalTypeNode, updateParameterDeclaration, updateParenthesizedExpression, updateParenthesizedTypeNode, updatePartiallyEmittedExpression, updatePostfixUnaryExpression, updatePrefixUnaryExpression, updatePropertyAccessExpression, updatePropertyAssignment, updatePropertyDeclaration, updatePropertySignatureDeclaration, updateQualifiedName, updateRestTypeNode, updateReturnStatement, updateSatisfiesExpression, updateSetAccessorDeclaration, updateShorthandPropertyAssignment, updateSourceFile, updateSpreadAssignment, updateSpreadElement, updateSwitchStatement, updateSyntaxList, updateSyntheticExpression, updateSyntheticReferenceExpression, updateTaggedTemplateExpression, updateTemplateExpression, updateTemplateLiteralTypeNode, updateTemplateLiteralTypeSpan, updateTemplateSpan, updateThrowStatement, updateTryStatement, updateTupleTypeNode, updateTypeAliasDeclaration, updateTypeAssertion, updateTypeLiteralNode, updateTypeOfExpression, updateTypeOperatorNode, updateTypeParameterDeclaration, updateTypePredicateNode, updateTypeQueryNode, updateTypeReferenceNode, updateUnionTypeNode, updateVariableDeclaration, updateVariableDeclarationList, updateVariableStatement, updateVoidExpression, updateWhileStatement, updateWithStatement, updateYieldExpression, } from \"./factory.generated.js\";\nimport { isAssertsKeyword, isAsteriskToken, isAwaitKeyword, isBinaryOperatorToken, isBindingName, isBlock, isCaseBlock, isCatchClause, isColonToken, isConciseBody, isDotDotDotToken, isEndOfFile, isEntityName, isEqualsGreaterThanToken, isEqualsToken, isExclamationToken, isExpression, isExpressionWithTypeArguments, isForInitializer, isFunctionBody, isIdentifier, isImportAttributeName, isImportAttributes, isImportClause, isJSDocFullName, isJsxAttributeName, isJsxAttributes, isJsxAttributeValue, isJsxClosingElement, isJsxClosingFragment, isJsxOpeningElement, isJsxOpeningFragment, isJsxTagNameExpression, isLeftHandSideExpression, isMemberName, isModuleBody, isModuleExportName, isModuleName, isModuleReference, isNamedExportBindings, isNamedImportBindings, isPropertyName, isQuestionDotToken, isQuestionOrExclamationToken, isQuestionOrPlusOrMinusToken, isQuestionToken, isReadonlyKeywordOrPlusOrMinusToken, isStatement, isTemplateHead, isTemplateLiteral, isTemplateMiddleOrTail, isTypeNode, isTypeParameterDeclaration, isTypePredicateParameterName, isVariableDeclaration, isVariableDeclarationList, } from \"./is.js\";\nimport { visitEachChildOfJSDocParameterTag, visitEachChildOfJSDocPropertyTag, } from \"./visitor.js\";\nexport function visitNode(node, visitor, test) {\n if (node === undefined)\n return undefined;\n const visited = visitor(node);\n if (visited !== undefined && test !== undefined && !test(visited)) {\n throw new Error(\"Visited node failed test assertion.\");\n }\n return visited;\n}\nexport function visitNodes(nodes, visitor) {\n if (nodes === undefined)\n return undefined;\n const updated = visitNodesArray(nodes, visitor);\n if (updated === nodes) {\n return nodes;\n }\n return createNodeArray(updated, nodes.pos, nodes.end);\n}\nexport function visitNodesArray(nodes, visitor) {\n if (nodes === undefined)\n return undefined;\n let updated;\n for (let i = 0; i < nodes.length; i++) {\n const node = nodes[i];\n const visited = visitor(node);\n if (updated) {\n if (visited)\n updated.push(visited);\n }\n else if (visited !== node) {\n updated = [];\n for (let j = 0; j < i; j++)\n updated.push(nodes[j]);\n if (visited)\n updated.push(visited);\n }\n }\n return updated ?? nodes;\n}\nexport function visitEachChild(node, visitor) {\n if (node === undefined)\n return undefined;\n const fn = visitEachChildTable[node.kind];\n return fn ? fn(node, visitor) : node;\n}\nconst visitEachChildTable = {\n [SyntaxKind.QualifiedName]: (node, visitor) => {\n const _left = visitNode(node.left, visitor, isEntityName);\n const _right = visitNode(node.right, visitor, isIdentifier);\n return updateQualifiedName(node, _left, _right);\n },\n [SyntaxKind.ComputedPropertyName]: (node, visitor) => {\n const _expression = visitNode(node.expression, visitor, isExpression);\n return updateComputedPropertyName(node, _expression);\n },\n [SyntaxKind.Decorator]: (node, visitor) => {\n const _expression = visitNode(node.expression, visitor, isLeftHandSideExpression);\n return updateDecorator(node, _expression);\n },\n [SyntaxKind.IfStatement]: (node, visitor) => {\n const _expression = visitNode(node.expression, visitor, isExpression);\n const _thenStatement = visitNode(node.thenStatement, visitor, isStatement);\n const _elseStatement = visitNode(node.elseStatement, visitor, isStatement);\n return updateIfStatement(node, _expression, _thenStatement, _elseStatement);\n },\n [SyntaxKind.DoStatement]: (node, visitor) => {\n const _statement = visitNode(node.statement, visitor, isStatement);\n const _expression = visitNode(node.expression, visitor, isExpression);\n return updateDoStatement(node, _statement, _expression);\n },\n [SyntaxKind.WhileStatement]: (node, visitor) => {\n const _expression = visitNode(node.expression, visitor, isExpression);\n const _statement = visitNode(node.statement, visitor, isStatement);\n return updateWhileStatement(node, _expression, _statement);\n },\n [SyntaxKind.ForStatement]: (node, visitor) => {\n const _initializer = visitNode(node.initializer, visitor, isForInitializer);\n const _condition = visitNode(node.condition, visitor, isExpression);\n const _incrementor = visitNode(node.incrementor, visitor, isExpression);\n const _statement = visitNode(node.statement, visitor, isStatement);\n return updateForStatement(node, _initializer, _condition, _incrementor, _statement);\n },\n [SyntaxKind.BreakStatement]: (node, visitor) => {\n const _label = visitNode(node.label, visitor, isIdentifier);\n return updateBreakStatement(node, _label);\n },\n [SyntaxKind.ContinueStatement]: (node, visitor) => {\n const _label = visitNode(node.label, visitor, isIdentifier);\n return updateContinueStatement(node, _label);\n },\n [SyntaxKind.ReturnStatement]: (node, visitor) => {\n const _expression = visitNode(node.expression, visitor, isExpression);\n return updateReturnStatement(node, _expression);\n },\n [SyntaxKind.WithStatement]: (node, visitor) => {\n const _expression = visitNode(node.expression, visitor, isExpression);\n const _statement = visitNode(node.statement, visitor, isStatement);\n return updateWithStatement(node, _expression, _statement);\n },\n [SyntaxKind.SwitchStatement]: (node, visitor) => {\n const _expression = visitNode(node.expression, visitor, isExpression);\n const _caseBlock = visitNode(node.caseBlock, visitor, isCaseBlock);\n return updateSwitchStatement(node, _expression, _caseBlock);\n },\n [SyntaxKind.CaseBlock]: (node, visitor) => {\n const _clauses = visitNodes(node.clauses, visitor);\n return updateCaseBlock(node, _clauses);\n },\n [SyntaxKind.ThrowStatement]: (node, visitor) => {\n const _expression = visitNode(node.expression, visitor, isExpression);\n return updateThrowStatement(node, _expression);\n },\n [SyntaxKind.TryStatement]: (node, visitor) => {\n const _tryBlock = visitNode(node.tryBlock, visitor, isBlock);\n const _catchClause = visitNode(node.catchClause, visitor, isCatchClause);\n const _finallyBlock = visitNode(node.finallyBlock, visitor, isBlock);\n return updateTryStatement(node, _tryBlock, _catchClause, _finallyBlock);\n },\n [SyntaxKind.CatchClause]: (node, visitor) => {\n const _variableDeclaration = visitNode(node.variableDeclaration, visitor, isVariableDeclaration);\n const _block = visitNode(node.block, visitor, isBlock);\n return updateCatchClause(node, _variableDeclaration, _block);\n },\n [SyntaxKind.LabeledStatement]: (node, visitor) => {\n const _label = visitNode(node.label, visitor, isIdentifier);\n const _statement = visitNode(node.statement, visitor, isStatement);\n return updateLabeledStatement(node, _label, _statement);\n },\n [SyntaxKind.ExpressionStatement]: (node, visitor) => {\n const _expression = visitNode(node.expression, visitor, isExpression);\n return updateExpressionStatement(node, _expression);\n },\n [SyntaxKind.Block]: (node, visitor) => {\n const _statements = visitNodes(node.statements, visitor);\n return updateBlock(node, _statements);\n },\n [SyntaxKind.VariableStatement]: (node, visitor) => {\n const _modifiers = visitNodes(node.modifiers, visitor);\n const _declarationList = visitNode(node.declarationList, visitor, isVariableDeclarationList);\n return updateVariableStatement(node, _modifiers, _declarationList);\n },\n [SyntaxKind.VariableDeclaration]: (node, visitor) => {\n const _name = visitNode(node.name, visitor, isBindingName);\n const _exclamationToken = visitNode(node.exclamationToken, visitor, isExclamationToken);\n const _type = visitNode(node.type, visitor, isTypeNode);\n const _initializer = visitNode(node.initializer, visitor, isExpression);\n return updateVariableDeclaration(node, _name, _exclamationToken, _type, _initializer);\n },\n [SyntaxKind.VariableDeclarationList]: (node, visitor) => {\n const _declarations = visitNodes(node.declarations, visitor);\n return updateVariableDeclarationList(node, _declarations);\n },\n [SyntaxKind.Parameter]: (node, visitor) => {\n const _modifiers = visitNodes(node.modifiers, visitor);\n const _dotDotDotToken = visitNode(node.dotDotDotToken, visitor, isDotDotDotToken);\n const _name = visitNode(node.name, visitor, isBindingName);\n const _questionToken = visitNode(node.questionToken, visitor, isQuestionToken);\n const _type = visitNode(node.type, visitor, isTypeNode);\n const _initializer = visitNode(node.initializer, visitor, isExpression);\n return updateParameterDeclaration(node, _modifiers, _dotDotDotToken, _name, _questionToken, _type, _initializer);\n },\n [SyntaxKind.BindingElement]: (node, visitor) => {\n const _dotDotDotToken = visitNode(node.dotDotDotToken, visitor, isDotDotDotToken);\n const _propertyName = visitNode(node.propertyName, visitor, isPropertyName);\n const _name = visitNode(node.name, visitor, isBindingName);\n const _initializer = visitNode(node.initializer, visitor, isExpression);\n return updateBindingElement(node, _dotDotDotToken, _propertyName, _name, _initializer);\n },\n [SyntaxKind.MissingDeclaration]: (node, visitor) => {\n const _modifiers = visitNodes(node.modifiers, visitor);\n return updateMissingDeclaration(node, _modifiers);\n },\n [SyntaxKind.FunctionDeclaration]: (node, visitor) => {\n const _modifiers = visitNodes(node.modifiers, visitor);\n const _asteriskToken = visitNode(node.asteriskToken, visitor, isAsteriskToken);\n const _name = visitNode(node.name, visitor, isIdentifier);\n const _typeParameters = visitNodes(node.typeParameters, visitor);\n const _parameters = visitNodes(node.parameters, visitor);\n const _type = visitNode(node.type, visitor, isTypeNode);\n const _body = visitNode(node.body, visitor, isFunctionBody);\n return updateFunctionDeclaration(node, _modifiers, _asteriskToken, _name, _typeParameters, _parameters, _type, _body);\n },\n [SyntaxKind.ClassDeclaration]: (node, visitor) => {\n const _modifiers = visitNodes(node.modifiers, visitor);\n const _name = visitNode(node.name, visitor, isIdentifier);\n const _typeParameters = visitNodes(node.typeParameters, visitor);\n const _heritageClauses = visitNodes(node.heritageClauses, visitor);\n const _members = visitNodes(node.members, visitor);\n return updateClassDeclaration(node, _modifiers, _name, _typeParameters, _heritageClauses, _members);\n },\n [SyntaxKind.ClassExpression]: (node, visitor) => {\n const _modifiers = visitNodes(node.modifiers, visitor);\n const _name = visitNode(node.name, visitor, isIdentifier);\n const _typeParameters = visitNodes(node.typeParameters, visitor);\n const _heritageClauses = visitNodes(node.heritageClauses, visitor);\n const _members = visitNodes(node.members, visitor);\n return updateClassExpression(node, _modifiers, _name, _typeParameters, _heritageClauses, _members);\n },\n [SyntaxKind.HeritageClause]: (node, visitor) => {\n const _types = visitNodes(node.types, visitor);\n return updateHeritageClause(node, _types);\n },\n [SyntaxKind.InterfaceDeclaration]: (node, visitor) => {\n const _modifiers = visitNodes(node.modifiers, visitor);\n const _name = visitNode(node.name, visitor, isIdentifier);\n const _typeParameters = visitNodes(node.typeParameters, visitor);\n const _heritageClauses = visitNodes(node.heritageClauses, visitor);\n const _members = visitNodes(node.members, visitor);\n return updateInterfaceDeclaration(node, _modifiers, _name, _typeParameters, _heritageClauses, _members);\n },\n [SyntaxKind.TypeAliasDeclaration]: (node, visitor) => {\n const _modifiers = visitNodes(node.modifiers, visitor);\n const _name = visitNode(node.name, visitor, isIdentifier);\n const _typeParameters = visitNodes(node.typeParameters, visitor);\n const _type = visitNode(node.type, visitor, isTypeNode);\n return updateTypeAliasDeclaration(node, _modifiers, _name, _typeParameters, _type);\n },\n [SyntaxKind.EnumMember]: (node, visitor) => {\n const _name = visitNode(node.name, visitor, isPropertyName);\n const _initializer = visitNode(node.initializer, visitor, isExpression);\n return updateEnumMember(node, _name, _initializer);\n },\n [SyntaxKind.EnumDeclaration]: (node, visitor) => {\n const _modifiers = visitNodes(node.modifiers, visitor);\n const _name = visitNode(node.name, visitor, isIdentifier);\n const _members = visitNodes(node.members, visitor);\n return updateEnumDeclaration(node, _modifiers, _name, _members);\n },\n [SyntaxKind.ModuleBlock]: (node, visitor) => {\n const _statements = visitNodes(node.statements, visitor);\n return updateModuleBlock(node, _statements);\n },\n [SyntaxKind.ImportDeclaration]: (node, visitor) => {\n const _modifiers = visitNodes(node.modifiers, visitor);\n const _importClause = visitNode(node.importClause, visitor, isImportClause);\n const _moduleSpecifier = visitNode(node.moduleSpecifier, visitor, isExpression);\n const _attributes = visitNode(node.attributes, visitor, isImportAttributes);\n return updateImportDeclaration(node, _modifiers, _importClause, _moduleSpecifier, _attributes);\n },\n [SyntaxKind.ExternalModuleReference]: (node, visitor) => {\n const _expression = visitNode(node.expression, visitor, isExpression);\n return updateExternalModuleReference(node, _expression);\n },\n [SyntaxKind.NamespaceImport]: (node, visitor) => {\n const _name = visitNode(node.name, visitor, isIdentifier);\n return updateNamespaceImport(node, _name);\n },\n [SyntaxKind.NamedImports]: (node, visitor) => {\n const _elements = visitNodes(node.elements, visitor);\n return updateNamedImports(node, _elements);\n },\n [SyntaxKind.ExportAssignment]: (node, visitor) => {\n const _modifiers = visitNodes(node.modifiers, visitor);\n const _type = visitNode(node.type, visitor, isTypeNode);\n const _expression = visitNode(node.expression, visitor, isExpression);\n return updateExportAssignment(node, _modifiers, _type, _expression);\n },\n [SyntaxKind.NamespaceExportDeclaration]: (node, visitor) => {\n const _modifiers = visitNodes(node.modifiers, visitor);\n const _name = visitNode(node.name, visitor, isIdentifier);\n return updateNamespaceExportDeclaration(node, _modifiers, _name);\n },\n [SyntaxKind.NamespaceExport]: (node, visitor) => {\n const _name = visitNode(node.name, visitor, isModuleExportName);\n return updateNamespaceExport(node, _name);\n },\n [SyntaxKind.NamedExports]: (node, visitor) => {\n const _elements = visitNodes(node.elements, visitor);\n return updateNamedExports(node, _elements);\n },\n [SyntaxKind.ExportSpecifier]: (node, visitor) => {\n const _propertyName = visitNode(node.propertyName, visitor, isModuleExportName);\n const _name = visitNode(node.name, visitor, isModuleExportName);\n return updateExportSpecifier(node, _propertyName, _name);\n },\n [SyntaxKind.CallSignature]: (node, visitor) => {\n const _typeParameters = visitNodes(node.typeParameters, visitor);\n const _parameters = visitNodes(node.parameters, visitor);\n const _type = visitNode(node.type, visitor, isTypeNode);\n return updateCallSignatureDeclaration(node, _typeParameters, _parameters, _type);\n },\n [SyntaxKind.ConstructSignature]: (node, visitor) => {\n const _typeParameters = visitNodes(node.typeParameters, visitor);\n const _parameters = visitNodes(node.parameters, visitor);\n const _type = visitNode(node.type, visitor, isTypeNode);\n return updateConstructSignatureDeclaration(node, _typeParameters, _parameters, _type);\n },\n [SyntaxKind.Constructor]: (node, visitor) => {\n const _modifiers = visitNodes(node.modifiers, visitor);\n const _typeParameters = visitNodes(node.typeParameters, visitor);\n const _parameters = visitNodes(node.parameters, visitor);\n const _type = visitNode(node.type, visitor, isTypeNode);\n const _body = visitNode(node.body, visitor, isFunctionBody);\n return updateConstructorDeclaration(node, _modifiers, _typeParameters, _parameters, _type, _body);\n },\n [SyntaxKind.GetAccessor]: (node, visitor) => {\n const _modifiers = visitNodes(node.modifiers, visitor);\n const _name = visitNode(node.name, visitor, isPropertyName);\n const _typeParameters = visitNodes(node.typeParameters, visitor);\n const _parameters = visitNodes(node.parameters, visitor);\n const _type = visitNode(node.type, visitor, isTypeNode);\n const _body = visitNode(node.body, visitor, isFunctionBody);\n return updateGetAccessorDeclaration(node, _modifiers, _name, _typeParameters, _parameters, _type, _body);\n },\n [SyntaxKind.SetAccessor]: (node, visitor) => {\n const _modifiers = visitNodes(node.modifiers, visitor);\n const _name = visitNode(node.name, visitor, isPropertyName);\n const _typeParameters = visitNodes(node.typeParameters, visitor);\n const _parameters = visitNodes(node.parameters, visitor);\n const _type = visitNode(node.type, visitor, isTypeNode);\n const _body = visitNode(node.body, visitor, isFunctionBody);\n return updateSetAccessorDeclaration(node, _modifiers, _name, _typeParameters, _parameters, _type, _body);\n },\n [SyntaxKind.IndexSignature]: (node, visitor) => {\n const _modifiers = visitNodes(node.modifiers, visitor);\n const _parameters = visitNodes(node.parameters, visitor);\n const _type = visitNode(node.type, visitor, isTypeNode);\n return updateIndexSignatureDeclaration(node, _modifiers, _parameters, _type);\n },\n [SyntaxKind.MethodSignature]: (node, visitor) => {\n const _modifiers = visitNodes(node.modifiers, visitor);\n const _name = visitNode(node.name, visitor, isPropertyName);\n const _postfixToken = visitNode(node.postfixToken, visitor, isQuestionOrExclamationToken);\n const _typeParameters = visitNodes(node.typeParameters, visitor);\n const _parameters = visitNodes(node.parameters, visitor);\n const _type = visitNode(node.type, visitor, isTypeNode);\n return updateMethodSignatureDeclaration(node, _modifiers, _name, _postfixToken, _typeParameters, _parameters, _type);\n },\n [SyntaxKind.MethodDeclaration]: (node, visitor) => {\n const _modifiers = visitNodes(node.modifiers, visitor);\n const _asteriskToken = visitNode(node.asteriskToken, visitor, isAsteriskToken);\n const _name = visitNode(node.name, visitor, isPropertyName);\n const _postfixToken = visitNode(node.postfixToken, visitor, isQuestionOrExclamationToken);\n const _typeParameters = visitNodes(node.typeParameters, visitor);\n const _parameters = visitNodes(node.parameters, visitor);\n const _type = visitNode(node.type, visitor, isTypeNode);\n const _body = visitNode(node.body, visitor, isFunctionBody);\n return updateMethodDeclaration(node, _modifiers, _asteriskToken, _name, _postfixToken, _typeParameters, _parameters, _type, _body);\n },\n [SyntaxKind.PropertySignature]: (node, visitor) => {\n const _modifiers = visitNodes(node.modifiers, visitor);\n const _name = visitNode(node.name, visitor, isPropertyName);\n const _postfixToken = visitNode(node.postfixToken, visitor, isQuestionOrExclamationToken);\n const _type = visitNode(node.type, visitor, isTypeNode);\n const _initializer = visitNode(node.initializer, visitor, isExpression);\n return updatePropertySignatureDeclaration(node, _modifiers, _name, _postfixToken, _type, _initializer);\n },\n [SyntaxKind.PropertyDeclaration]: (node, visitor) => {\n const _modifiers = visitNodes(node.modifiers, visitor);\n const _name = visitNode(node.name, visitor, isPropertyName);\n const _postfixToken = visitNode(node.postfixToken, visitor, isQuestionOrExclamationToken);\n const _type = visitNode(node.type, visitor, isTypeNode);\n const _initializer = visitNode(node.initializer, visitor, isExpression);\n return updatePropertyDeclaration(node, _modifiers, _name, _postfixToken, _type, _initializer);\n },\n [SyntaxKind.ClassStaticBlockDeclaration]: (node, visitor) => {\n const _modifiers = visitNodes(node.modifiers, visitor);\n const _body = visitNode(node.body, visitor, isBlock);\n return updateClassStaticBlockDeclaration(node, _modifiers, _body);\n },\n [SyntaxKind.BinaryExpression]: (node, visitor) => {\n const _modifiers = visitNodes(node.modifiers, visitor);\n const _left = visitNode(node.left, visitor, isExpression);\n const _type = visitNode(node.type, visitor, isTypeNode);\n const _operatorToken = visitNode(node.operatorToken, visitor, isBinaryOperatorToken);\n const _right = visitNode(node.right, visitor, isExpression);\n return updateBinaryExpression(node, _modifiers, _left, _type, _operatorToken, _right);\n },\n [SyntaxKind.PrefixUnaryExpression]: (node, visitor) => {\n const _operand = visitNode(node.operand, visitor, isExpression);\n return updatePrefixUnaryExpression(node, _operand);\n },\n [SyntaxKind.PostfixUnaryExpression]: (node, visitor) => {\n const _operand = visitNode(node.operand, visitor, isExpression);\n return updatePostfixUnaryExpression(node, _operand);\n },\n [SyntaxKind.YieldExpression]: (node, visitor) => {\n const _asteriskToken = visitNode(node.asteriskToken, visitor, isAsteriskToken);\n const _expression = visitNode(node.expression, visitor, isExpression);\n return updateYieldExpression(node, _asteriskToken, _expression);\n },\n [SyntaxKind.ArrowFunction]: (node, visitor) => {\n const _modifiers = visitNodes(node.modifiers, visitor);\n const _typeParameters = visitNodes(node.typeParameters, visitor);\n const _parameters = visitNodes(node.parameters, visitor);\n const _type = visitNode(node.type, visitor, isTypeNode);\n const _equalsGreaterThanToken = visitNode(node.equalsGreaterThanToken, visitor, isEqualsGreaterThanToken);\n const _body = visitNode(node.body, visitor, isConciseBody);\n return updateArrowFunction(node, _modifiers, _typeParameters, _parameters, _type, _equalsGreaterThanToken, _body);\n },\n [SyntaxKind.FunctionExpression]: (node, visitor) => {\n const _modifiers = visitNodes(node.modifiers, visitor);\n const _asteriskToken = visitNode(node.asteriskToken, visitor, isAsteriskToken);\n const _name = visitNode(node.name, visitor, isIdentifier);\n const _typeParameters = visitNodes(node.typeParameters, visitor);\n const _parameters = visitNodes(node.parameters, visitor);\n const _type = visitNode(node.type, visitor, isTypeNode);\n const _body = visitNode(node.body, visitor, isFunctionBody);\n return updateFunctionExpression(node, _modifiers, _asteriskToken, _name, _typeParameters, _parameters, _type, _body);\n },\n [SyntaxKind.AsExpression]: (node, visitor) => {\n const _expression = visitNode(node.expression, visitor, isExpression);\n const _type = visitNode(node.type, visitor, isTypeNode);\n return updateAsExpression(node, _expression, _type);\n },\n [SyntaxKind.SatisfiesExpression]: (node, visitor) => {\n const _expression = visitNode(node.expression, visitor, isExpression);\n const _type = visitNode(node.type, visitor, isTypeNode);\n return updateSatisfiesExpression(node, _expression, _type);\n },\n [SyntaxKind.ConditionalExpression]: (node, visitor) => {\n const _condition = visitNode(node.condition, visitor, isExpression);\n const _questionToken = visitNode(node.questionToken, visitor, isQuestionToken);\n const _whenTrue = visitNode(node.whenTrue, visitor, isExpression);\n const _colonToken = visitNode(node.colonToken, visitor, isColonToken);\n const _whenFalse = visitNode(node.whenFalse, visitor, isExpression);\n return updateConditionalExpression(node, _condition, _questionToken, _whenTrue, _colonToken, _whenFalse);\n },\n [SyntaxKind.PropertyAccessExpression]: (node, visitor) => {\n const _expression = visitNode(node.expression, visitor, isExpression);\n const _questionDotToken = visitNode(node.questionDotToken, visitor, isQuestionDotToken);\n const _name = visitNode(node.name, visitor, isMemberName);\n return updatePropertyAccessExpression(node, _expression, _questionDotToken, _name);\n },\n [SyntaxKind.ElementAccessExpression]: (node, visitor) => {\n const _expression = visitNode(node.expression, visitor, isExpression);\n const _questionDotToken = visitNode(node.questionDotToken, visitor, isQuestionDotToken);\n const _argumentExpression = visitNode(node.argumentExpression, visitor, isExpression);\n return updateElementAccessExpression(node, _expression, _questionDotToken, _argumentExpression);\n },\n [SyntaxKind.CallExpression]: (node, visitor) => {\n const _expression = visitNode(node.expression, visitor, isExpression);\n const _questionDotToken = visitNode(node.questionDotToken, visitor, isQuestionDotToken);\n const _typeArguments = visitNodes(node.typeArguments, visitor);\n const _arguments = visitNodes(node.arguments, visitor);\n return updateCallExpression(node, _expression, _questionDotToken, _typeArguments, _arguments);\n },\n [SyntaxKind.NewExpression]: (node, visitor) => {\n const _expression = visitNode(node.expression, visitor, isExpression);\n const _typeArguments = visitNodes(node.typeArguments, visitor);\n const _arguments = visitNodes(node.arguments, visitor);\n return updateNewExpression(node, _expression, _typeArguments, _arguments);\n },\n [SyntaxKind.MetaProperty]: (node, visitor) => {\n const _name = visitNode(node.name, visitor, isIdentifier);\n return updateMetaProperty(node, _name);\n },\n [SyntaxKind.NonNullExpression]: (node, visitor) => {\n const _expression = visitNode(node.expression, visitor, isExpression);\n return updateNonNullExpression(node, _expression);\n },\n [SyntaxKind.SpreadElement]: (node, visitor) => {\n const _expression = visitNode(node.expression, visitor, isExpression);\n return updateSpreadElement(node, _expression);\n },\n [SyntaxKind.TemplateExpression]: (node, visitor) => {\n const _head = visitNode(node.head, visitor, isTemplateHead);\n const _templateSpans = visitNodes(node.templateSpans, visitor);\n return updateTemplateExpression(node, _head, _templateSpans);\n },\n [SyntaxKind.TemplateSpan]: (node, visitor) => {\n const _expression = visitNode(node.expression, visitor, isExpression);\n const _literal = visitNode(node.literal, visitor, isTemplateMiddleOrTail);\n return updateTemplateSpan(node, _expression, _literal);\n },\n [SyntaxKind.TaggedTemplateExpression]: (node, visitor) => {\n const _tag = visitNode(node.tag, visitor, isExpression);\n const _questionDotToken = visitNode(node.questionDotToken, visitor, isQuestionDotToken);\n const _typeArguments = visitNodes(node.typeArguments, visitor);\n const _template = visitNode(node.template, visitor, isTemplateLiteral);\n return updateTaggedTemplateExpression(node, _tag, _questionDotToken, _typeArguments, _template);\n },\n [SyntaxKind.ParenthesizedExpression]: (node, visitor) => {\n const _expression = visitNode(node.expression, visitor, isExpression);\n return updateParenthesizedExpression(node, _expression);\n },\n [SyntaxKind.ArrayLiteralExpression]: (node, visitor) => {\n const _elements = visitNodes(node.elements, visitor);\n return updateArrayLiteralExpression(node, _elements);\n },\n [SyntaxKind.ObjectLiteralExpression]: (node, visitor) => {\n const _properties = visitNodes(node.properties, visitor);\n return updateObjectLiteralExpression(node, _properties);\n },\n [SyntaxKind.SpreadAssignment]: (node, visitor) => {\n const _expression = visitNode(node.expression, visitor, isExpression);\n return updateSpreadAssignment(node, _expression);\n },\n [SyntaxKind.PropertyAssignment]: (node, visitor) => {\n const _modifiers = visitNodes(node.modifiers, visitor);\n const _name = visitNode(node.name, visitor, isPropertyName);\n const _postfixToken = visitNode(node.postfixToken, visitor, isQuestionOrExclamationToken);\n const _type = visitNode(node.type, visitor, isTypeNode);\n const _initializer = visitNode(node.initializer, visitor, isExpression);\n return updatePropertyAssignment(node, _modifiers, _name, _postfixToken, _type, _initializer);\n },\n [SyntaxKind.ShorthandPropertyAssignment]: (node, visitor) => {\n const _modifiers = visitNodes(node.modifiers, visitor);\n const _name = visitNode(node.name, visitor, isPropertyName);\n const _postfixToken = visitNode(node.postfixToken, visitor, isQuestionOrExclamationToken);\n const _type = visitNode(node.type, visitor, isTypeNode);\n const _equalsToken = visitNode(node.equalsToken, visitor, isEqualsToken);\n const _objectAssignmentInitializer = visitNode(node.objectAssignmentInitializer, visitor, isExpression);\n return updateShorthandPropertyAssignment(node, _modifiers, _name, _postfixToken, _type, _equalsToken, _objectAssignmentInitializer);\n },\n [SyntaxKind.DeleteExpression]: (node, visitor) => {\n const _expression = visitNode(node.expression, visitor, isExpression);\n return updateDeleteExpression(node, _expression);\n },\n [SyntaxKind.TypeOfExpression]: (node, visitor) => {\n const _expression = visitNode(node.expression, visitor, isExpression);\n return updateTypeOfExpression(node, _expression);\n },\n [SyntaxKind.VoidExpression]: (node, visitor) => {\n const _expression = visitNode(node.expression, visitor, isExpression);\n return updateVoidExpression(node, _expression);\n },\n [SyntaxKind.AwaitExpression]: (node, visitor) => {\n const _expression = visitNode(node.expression, visitor, isExpression);\n return updateAwaitExpression(node, _expression);\n },\n [SyntaxKind.TypeAssertionExpression]: (node, visitor) => {\n const _type = visitNode(node.type, visitor, isTypeNode);\n const _expression = visitNode(node.expression, visitor, isExpression);\n return updateTypeAssertion(node, _type, _expression);\n },\n [SyntaxKind.UnionType]: (node, visitor) => {\n const _types = visitNodes(node.types, visitor);\n return updateUnionTypeNode(node, _types);\n },\n [SyntaxKind.IntersectionType]: (node, visitor) => {\n const _types = visitNodes(node.types, visitor);\n return updateIntersectionTypeNode(node, _types);\n },\n [SyntaxKind.ConditionalType]: (node, visitor) => {\n const _checkType = visitNode(node.checkType, visitor, isTypeNode);\n const _extendsType = visitNode(node.extendsType, visitor, isTypeNode);\n const _trueType = visitNode(node.trueType, visitor, isTypeNode);\n const _falseType = visitNode(node.falseType, visitor, isTypeNode);\n return updateConditionalTypeNode(node, _checkType, _extendsType, _trueType, _falseType);\n },\n [SyntaxKind.TypeOperator]: (node, visitor) => {\n const _type = visitNode(node.type, visitor, isTypeNode);\n return updateTypeOperatorNode(node, _type);\n },\n [SyntaxKind.InferType]: (node, visitor) => {\n const _typeParameter = visitNode(node.typeParameter, visitor, isTypeParameterDeclaration);\n return updateInferTypeNode(node, _typeParameter);\n },\n [SyntaxKind.ArrayType]: (node, visitor) => {\n const _elementType = visitNode(node.elementType, visitor, isTypeNode);\n return updateArrayTypeNode(node, _elementType);\n },\n [SyntaxKind.IndexedAccessType]: (node, visitor) => {\n const _objectType = visitNode(node.objectType, visitor, isTypeNode);\n const _indexType = visitNode(node.indexType, visitor, isTypeNode);\n return updateIndexedAccessTypeNode(node, _objectType, _indexType);\n },\n [SyntaxKind.TypeReference]: (node, visitor) => {\n const _typeName = visitNode(node.typeName, visitor, isEntityName);\n const _typeArguments = visitNodes(node.typeArguments, visitor);\n return updateTypeReferenceNode(node, _typeName, _typeArguments);\n },\n [SyntaxKind.ExpressionWithTypeArguments]: (node, visitor) => {\n const _expression = visitNode(node.expression, visitor, isExpression);\n const _typeArguments = visitNodes(node.typeArguments, visitor);\n return updateExpressionWithTypeArguments(node, _expression, _typeArguments);\n },\n [SyntaxKind.LiteralType]: (node, visitor) => {\n const _literal = visitNode(node.literal, visitor);\n return updateLiteralTypeNode(node, _literal);\n },\n [SyntaxKind.TypePredicate]: (node, visitor) => {\n const _assertsModifier = visitNode(node.assertsModifier, visitor, isAssertsKeyword);\n const _parameterName = visitNode(node.parameterName, visitor, isTypePredicateParameterName);\n const _type = visitNode(node.type, visitor, isTypeNode);\n return updateTypePredicateNode(node, _assertsModifier, _parameterName, _type);\n },\n [SyntaxKind.ImportAttribute]: (node, visitor) => {\n const _name = visitNode(node.name, visitor, isImportAttributeName);\n const _value = visitNode(node.value, visitor, isExpression);\n return updateImportAttribute(node, _name, _value);\n },\n [SyntaxKind.ImportAttributes]: (node, visitor) => {\n const _attributes = visitNodes(node.attributes, visitor);\n return updateImportAttributes(node, _attributes);\n },\n [SyntaxKind.TypeQuery]: (node, visitor) => {\n const _exprName = visitNode(node.exprName, visitor, isEntityName);\n const _typeArguments = visitNodes(node.typeArguments, visitor);\n return updateTypeQueryNode(node, _exprName, _typeArguments);\n },\n [SyntaxKind.MappedType]: (node, visitor) => {\n const _readonlyToken = visitNode(node.readonlyToken, visitor, isReadonlyKeywordOrPlusOrMinusToken);\n const _typeParameter = visitNode(node.typeParameter, visitor, isTypeParameterDeclaration);\n const _nameType = visitNode(node.nameType, visitor, isTypeNode);\n const _questionToken = visitNode(node.questionToken, visitor, isQuestionOrPlusOrMinusToken);\n const _type = visitNode(node.type, visitor, isTypeNode);\n const _members = visitNodes(node.members, visitor);\n return updateMappedTypeNode(node, _readonlyToken, _typeParameter, _nameType, _questionToken, _type, _members);\n },\n [SyntaxKind.TypeLiteral]: (node, visitor) => {\n const _members = visitNodes(node.members, visitor);\n return updateTypeLiteralNode(node, _members);\n },\n [SyntaxKind.TupleType]: (node, visitor) => {\n const _elements = visitNodes(node.elements, visitor);\n return updateTupleTypeNode(node, _elements);\n },\n [SyntaxKind.NamedTupleMember]: (node, visitor) => {\n const _dotDotDotToken = visitNode(node.dotDotDotToken, visitor, isDotDotDotToken);\n const _name = visitNode(node.name, visitor, isIdentifier);\n const _questionToken = visitNode(node.questionToken, visitor, isQuestionToken);\n const _type = visitNode(node.type, visitor, isTypeNode);\n return updateNamedTupleMember(node, _dotDotDotToken, _name, _questionToken, _type);\n },\n [SyntaxKind.OptionalType]: (node, visitor) => {\n const _type = visitNode(node.type, visitor, isTypeNode);\n return updateOptionalTypeNode(node, _type);\n },\n [SyntaxKind.RestType]: (node, visitor) => {\n const _type = visitNode(node.type, visitor, isTypeNode);\n return updateRestTypeNode(node, _type);\n },\n [SyntaxKind.ParenthesizedType]: (node, visitor) => {\n const _type = visitNode(node.type, visitor, isTypeNode);\n return updateParenthesizedTypeNode(node, _type);\n },\n [SyntaxKind.FunctionType]: (node, visitor) => {\n const _typeParameters = visitNodes(node.typeParameters, visitor);\n const _parameters = visitNodes(node.parameters, visitor);\n const _type = visitNode(node.type, visitor, isTypeNode);\n return updateFunctionTypeNode(node, _typeParameters, _parameters, _type);\n },\n [SyntaxKind.ConstructorType]: (node, visitor) => {\n const _modifiers = visitNodes(node.modifiers, visitor);\n const _typeParameters = visitNodes(node.typeParameters, visitor);\n const _parameters = visitNodes(node.parameters, visitor);\n const _type = visitNode(node.type, visitor, isTypeNode);\n return updateConstructorTypeNode(node, _modifiers, _typeParameters, _parameters, _type);\n },\n [SyntaxKind.TemplateLiteralType]: (node, visitor) => {\n const _head = visitNode(node.head, visitor, isTemplateHead);\n const _templateSpans = visitNodes(node.templateSpans, visitor);\n return updateTemplateLiteralTypeNode(node, _head, _templateSpans);\n },\n [SyntaxKind.TemplateLiteralTypeSpan]: (node, visitor) => {\n const _type = visitNode(node.type, visitor, isTypeNode);\n const _literal = visitNode(node.literal, visitor, isTemplateMiddleOrTail);\n return updateTemplateLiteralTypeSpan(node, _type, _literal);\n },\n [SyntaxKind.SyntheticExpression]: (node, visitor) => {\n const _tupleNameSource = visitNode(node.tupleNameSource, visitor);\n return updateSyntheticExpression(node, _tupleNameSource);\n },\n [SyntaxKind.PartiallyEmittedExpression]: (node, visitor) => {\n const _expression = visitNode(node.expression, visitor, isExpression);\n return updatePartiallyEmittedExpression(node, _expression);\n },\n [SyntaxKind.JsxElement]: (node, visitor) => {\n const _openingElement = visitNode(node.openingElement, visitor, isJsxOpeningElement);\n const _children = visitNodes(node.children, visitor);\n const _closingElement = visitNode(node.closingElement, visitor, isJsxClosingElement);\n return updateJsxElement(node, _openingElement, _children, _closingElement);\n },\n [SyntaxKind.JsxAttributes]: (node, visitor) => {\n const _properties = visitNodes(node.properties, visitor);\n return updateJsxAttributes(node, _properties);\n },\n [SyntaxKind.JsxNamespacedName]: (node, visitor) => {\n const _namespace = visitNode(node.namespace, visitor, isIdentifier);\n const _name = visitNode(node.name, visitor, isIdentifier);\n return updateJsxNamespacedName(node, _namespace, _name);\n },\n [SyntaxKind.JsxOpeningElement]: (node, visitor) => {\n const _tagName = visitNode(node.tagName, visitor, isJsxTagNameExpression);\n const _typeArguments = visitNodes(node.typeArguments, visitor);\n const _attributes = visitNode(node.attributes, visitor, isJsxAttributes);\n return updateJsxOpeningElement(node, _tagName, _typeArguments, _attributes);\n },\n [SyntaxKind.JsxSelfClosingElement]: (node, visitor) => {\n const _tagName = visitNode(node.tagName, visitor, isJsxTagNameExpression);\n const _typeArguments = visitNodes(node.typeArguments, visitor);\n const _attributes = visitNode(node.attributes, visitor, isJsxAttributes);\n return updateJsxSelfClosingElement(node, _tagName, _typeArguments, _attributes);\n },\n [SyntaxKind.JsxFragment]: (node, visitor) => {\n const _openingFragment = visitNode(node.openingFragment, visitor, isJsxOpeningFragment);\n const _children = visitNodes(node.children, visitor);\n const _closingFragment = visitNode(node.closingFragment, visitor, isJsxClosingFragment);\n return updateJsxFragment(node, _openingFragment, _children, _closingFragment);\n },\n [SyntaxKind.JsxAttribute]: (node, visitor) => {\n const _name = visitNode(node.name, visitor, isJsxAttributeName);\n const _initializer = visitNode(node.initializer, visitor, isJsxAttributeValue);\n return updateJsxAttribute(node, _name, _initializer);\n },\n [SyntaxKind.JsxSpreadAttribute]: (node, visitor) => {\n const _expression = visitNode(node.expression, visitor, isExpression);\n return updateJsxSpreadAttribute(node, _expression);\n },\n [SyntaxKind.JsxClosingElement]: (node, visitor) => {\n const _tagName = visitNode(node.tagName, visitor, isJsxTagNameExpression);\n return updateJsxClosingElement(node, _tagName);\n },\n [SyntaxKind.JsxExpression]: (node, visitor) => {\n const _dotDotDotToken = visitNode(node.dotDotDotToken, visitor, isDotDotDotToken);\n const _expression = visitNode(node.expression, visitor, isExpression);\n return updateJsxExpression(node, _dotDotDotToken, _expression);\n },\n [SyntaxKind.SyntaxList]: (node, visitor) => {\n const _children = visitNodesArray(node.children, visitor);\n return updateSyntaxList(node, _children);\n },\n [SyntaxKind.JSDoc]: (node, visitor) => {\n const _comment = visitNodes(node.comment, visitor);\n const _tags = visitNodes(node.tags, visitor);\n return updateJSDoc(node, _comment, _tags);\n },\n [SyntaxKind.JSDocTypeExpression]: (node, visitor) => {\n const _type = visitNode(node.type, visitor, isTypeNode);\n return updateJSDocTypeExpression(node, _type);\n },\n [SyntaxKind.JSDocNonNullableType]: (node, visitor) => {\n const _type = visitNode(node.type, visitor, isTypeNode);\n return updateJSDocNonNullableType(node, _type);\n },\n [SyntaxKind.JSDocNullableType]: (node, visitor) => {\n const _type = visitNode(node.type, visitor, isTypeNode);\n return updateJSDocNullableType(node, _type);\n },\n [SyntaxKind.JSDocVariadicType]: (node, visitor) => {\n const _type = visitNode(node.type, visitor, isTypeNode);\n return updateJSDocVariadicType(node, _type);\n },\n [SyntaxKind.JSDocOptionalType]: (node, visitor) => {\n const _type = visitNode(node.type, visitor, isTypeNode);\n return updateJSDocOptionalType(node, _type);\n },\n [SyntaxKind.JSDocTypeTag]: (node, visitor) => {\n const _tagName = visitNode(node.tagName, visitor, isIdentifier);\n const _typeExpression = visitNode(node.typeExpression, visitor);\n const _comment = visitNodes(node.comment, visitor);\n return updateJSDocTypeTag(node, _tagName, _typeExpression, _comment);\n },\n [SyntaxKind.JSDocUnknownTag]: (node, visitor) => {\n const _tagName = visitNode(node.tagName, visitor, isIdentifier);\n const _comment = visitNodes(node.comment, visitor);\n return updateJSDocUnknownTag(node, _tagName, _comment);\n },\n [SyntaxKind.JSDocTemplateTag]: (node, visitor) => {\n const _tagName = visitNode(node.tagName, visitor, isIdentifier);\n const _constraint = visitNode(node.constraint, visitor);\n const _typeParameters = visitNodes(node.typeParameters, visitor);\n const _comment = visitNodes(node.comment, visitor);\n return updateJSDocTemplateTag(node, _tagName, _constraint, _typeParameters, _comment);\n },\n [SyntaxKind.JSDocReturnTag]: (node, visitor) => {\n const _tagName = visitNode(node.tagName, visitor, isIdentifier);\n const _typeExpression = visitNode(node.typeExpression, visitor, isTypeNode);\n const _comment = visitNodes(node.comment, visitor);\n return updateJSDocReturnTag(node, _tagName, _typeExpression, _comment);\n },\n [SyntaxKind.JSDocPublicTag]: (node, visitor) => {\n const _tagName = visitNode(node.tagName, visitor, isIdentifier);\n const _comment = visitNodes(node.comment, visitor);\n return updateJSDocPublicTag(node, _tagName, _comment);\n },\n [SyntaxKind.JSDocPrivateTag]: (node, visitor) => {\n const _tagName = visitNode(node.tagName, visitor, isIdentifier);\n const _comment = visitNodes(node.comment, visitor);\n return updateJSDocPrivateTag(node, _tagName, _comment);\n },\n [SyntaxKind.JSDocProtectedTag]: (node, visitor) => {\n const _tagName = visitNode(node.tagName, visitor, isIdentifier);\n const _comment = visitNodes(node.comment, visitor);\n return updateJSDocProtectedTag(node, _tagName, _comment);\n },\n [SyntaxKind.JSDocReadonlyTag]: (node, visitor) => {\n const _tagName = visitNode(node.tagName, visitor, isIdentifier);\n const _comment = visitNodes(node.comment, visitor);\n return updateJSDocReadonlyTag(node, _tagName, _comment);\n },\n [SyntaxKind.JSDocOverrideTag]: (node, visitor) => {\n const _tagName = visitNode(node.tagName, visitor, isIdentifier);\n const _comment = visitNodes(node.comment, visitor);\n return updateJSDocOverrideTag(node, _tagName, _comment);\n },\n [SyntaxKind.JSDocDeprecatedTag]: (node, visitor) => {\n const _tagName = visitNode(node.tagName, visitor, isIdentifier);\n const _comment = visitNodes(node.comment, visitor);\n return updateJSDocDeprecatedTag(node, _tagName, _comment);\n },\n [SyntaxKind.JSDocSeeTag]: (node, visitor) => {\n const _tagName = visitNode(node.tagName, visitor, isIdentifier);\n const _nameExpression = visitNode(node.nameExpression, visitor, isTypeNode);\n const _comment = visitNodes(node.comment, visitor);\n return updateJSDocSeeTag(node, _tagName, _nameExpression, _comment);\n },\n [SyntaxKind.JSDocImplementsTag]: (node, visitor) => {\n const _tagName = visitNode(node.tagName, visitor, isIdentifier);\n const _className = visitNode(node.className, visitor, isExpressionWithTypeArguments);\n const _comment = visitNodes(node.comment, visitor);\n return updateJSDocImplementsTag(node, _tagName, _className, _comment);\n },\n [SyntaxKind.JSDocAugmentsTag]: (node, visitor) => {\n const _tagName = visitNode(node.tagName, visitor, isIdentifier);\n const _className = visitNode(node.className, visitor, isExpressionWithTypeArguments);\n const _comment = visitNodes(node.comment, visitor);\n return updateJSDocAugmentsTag(node, _tagName, _className, _comment);\n },\n [SyntaxKind.JSDocSatisfiesTag]: (node, visitor) => {\n const _tagName = visitNode(node.tagName, visitor, isIdentifier);\n const _typeExpression = visitNode(node.typeExpression, visitor, isTypeNode);\n const _comment = visitNodes(node.comment, visitor);\n return updateJSDocSatisfiesTag(node, _tagName, _typeExpression, _comment);\n },\n [SyntaxKind.JSDocThrowsTag]: (node, visitor) => {\n const _tagName = visitNode(node.tagName, visitor, isIdentifier);\n const _typeExpression = visitNode(node.typeExpression, visitor, isTypeNode);\n const _comment = visitNodes(node.comment, visitor);\n return updateJSDocThrowsTag(node, _tagName, _typeExpression, _comment);\n },\n [SyntaxKind.JSDocThisTag]: (node, visitor) => {\n const _tagName = visitNode(node.tagName, visitor, isIdentifier);\n const _typeExpression = visitNode(node.typeExpression, visitor, isTypeNode);\n const _comment = visitNodes(node.comment, visitor);\n return updateJSDocThisTag(node, _tagName, _typeExpression, _comment);\n },\n [SyntaxKind.JSDocImportTag]: (node, visitor) => {\n const _tagName = visitNode(node.tagName, visitor, isIdentifier);\n const _importClause = visitNode(node.importClause, visitor, isImportClause);\n const _moduleSpecifier = visitNode(node.moduleSpecifier, visitor, isExpression);\n const _attributes = visitNode(node.attributes, visitor, isImportAttributes);\n const _comment = visitNodes(node.comment, visitor);\n return updateJSDocImportTag(node, _tagName, _importClause, _moduleSpecifier, _attributes, _comment);\n },\n [SyntaxKind.JSDocCallbackTag]: (node, visitor) => {\n const _tagName = visitNode(node.tagName, visitor, isIdentifier);\n const _typeExpression = visitNode(node.typeExpression, visitor, isTypeNode);\n const _name = visitNode(node.name, visitor, isJSDocFullName);\n const _comment = visitNodes(node.comment, visitor);\n return updateJSDocCallbackTag(node, _tagName, _typeExpression, _name, _comment);\n },\n [SyntaxKind.JSDocOverloadTag]: (node, visitor) => {\n const _tagName = visitNode(node.tagName, visitor, isIdentifier);\n const _typeExpression = visitNode(node.typeExpression, visitor, isTypeNode);\n const _comment = visitNodes(node.comment, visitor);\n return updateJSDocOverloadTag(node, _tagName, _typeExpression, _comment);\n },\n [SyntaxKind.JSDocTypedefTag]: (node, visitor) => {\n const _tagName = visitNode(node.tagName, visitor, isIdentifier);\n const _typeExpression = visitNode(node.typeExpression, visitor);\n const _name = visitNode(node.name, visitor, isJSDocFullName);\n const _comment = visitNodes(node.comment, visitor);\n return updateJSDocTypedefTag(node, _tagName, _typeExpression, _name, _comment);\n },\n [SyntaxKind.JSDocSignature]: (node, visitor) => {\n const _typeParameters = visitNodes(node.typeParameters, visitor);\n const _parameters = visitNodes(node.parameters, visitor);\n const _type = visitNode(node.type, visitor, isTypeNode);\n return updateJSDocSignature(node, _typeParameters, _parameters, _type);\n },\n [SyntaxKind.JSDocNameReference]: (node, visitor) => {\n const _name = visitNode(node.name, visitor, isEntityName);\n return updateJSDocNameReference(node, _name);\n },\n [SyntaxKind.SourceFile]: (node, visitor) => {\n const _statements = visitNodes(node.statements, visitor);\n const _endOfFileToken = visitNode(node.endOfFileToken, visitor, isEndOfFile);\n return updateSourceFile(node, _statements, _endOfFileToken);\n },\n [SyntaxKind.ModuleDeclaration]: (node, visitor) => {\n const _modifiers = visitNodes(node.modifiers, visitor);\n const _name = visitNode(node.name, visitor, isModuleName);\n const _body = visitNode(node.body, visitor, isModuleBody);\n return updateModuleDeclaration(node, _modifiers, _name, _body);\n },\n [SyntaxKind.ImportEqualsDeclaration]: (node, visitor) => {\n const _modifiers = visitNodes(node.modifiers, visitor);\n const _name = visitNode(node.name, visitor, isIdentifier);\n const _moduleReference = visitNode(node.moduleReference, visitor, isModuleReference);\n return updateImportEqualsDeclaration(node, _modifiers, _name, _moduleReference);\n },\n [SyntaxKind.ExportDeclaration]: (node, visitor) => {\n const _modifiers = visitNodes(node.modifiers, visitor);\n const _exportClause = visitNode(node.exportClause, visitor, isNamedExportBindings);\n const _moduleSpecifier = visitNode(node.moduleSpecifier, visitor, isExpression);\n const _attributes = visitNode(node.attributes, visitor, isImportAttributes);\n return updateExportDeclaration(node, _modifiers, _exportClause, _moduleSpecifier, _attributes);\n },\n [SyntaxKind.ImportType]: (node, visitor) => {\n const _argument = visitNode(node.argument, visitor, isTypeNode);\n const _attributes = visitNode(node.attributes, visitor, isImportAttributes);\n const _qualifier = visitNode(node.qualifier, visitor, isEntityName);\n const _typeArguments = visitNodes(node.typeArguments, visitor);\n return updateImportTypeNode(node, _argument, _attributes, _qualifier, _typeArguments);\n },\n [SyntaxKind.ImportClause]: (node, visitor) => {\n const _name = visitNode(node.name, visitor, isIdentifier);\n const _namedBindings = visitNode(node.namedBindings, visitor, isNamedImportBindings);\n return updateImportClause(node, _name, _namedBindings);\n },\n [SyntaxKind.ImportSpecifier]: (node, visitor) => {\n const _propertyName = visitNode(node.propertyName, visitor, isModuleExportName);\n const _name = visitNode(node.name, visitor, isIdentifier);\n return updateImportSpecifier(node, _propertyName, _name);\n },\n [SyntaxKind.JSDocLink]: (node, visitor) => {\n const _name = visitNode(node.name, visitor, isEntityName);\n return updateJSDocLink(node, _name);\n },\n [SyntaxKind.JSDocLinkPlain]: (node, visitor) => {\n const _name = visitNode(node.name, visitor, isEntityName);\n return updateJSDocLinkPlain(node, _name);\n },\n [SyntaxKind.JSDocLinkCode]: (node, visitor) => {\n const _name = visitNode(node.name, visitor, isEntityName);\n return updateJSDocLinkCode(node, _name);\n },\n [SyntaxKind.TypeParameter]: (node, visitor) => {\n const _modifiers = visitNodes(node.modifiers, visitor);\n const _name = visitNode(node.name, visitor, isIdentifier);\n const _constraint = visitNode(node.constraint, visitor, isTypeNode);\n const _expression = visitNode(node.expression, visitor, isExpression);\n const _defaultType = visitNode(node.defaultType, visitor, isTypeNode);\n return updateTypeParameterDeclaration(node, _modifiers, _name, _constraint, _expression, _defaultType);\n },\n [SyntaxKind.SyntheticReferenceExpression]: (node, visitor) => {\n const _expression = visitNode(node.expression, visitor, isExpression);\n const _thisArg = visitNode(node.thisArg, visitor, isExpression);\n return updateSyntheticReferenceExpression(node, _expression, _thisArg);\n },\n [SyntaxKind.JSDocTypeLiteral]: (node, visitor) => {\n const _jsdocPropertyTags = visitNodesArray(node.jsdocPropertyTags, visitor);\n return updateJSDocTypeLiteral(node, _jsdocPropertyTags);\n },\n [SyntaxKind.ForInStatement]: (node, visitor) => {\n const _awaitModifier = visitNode(node.awaitModifier, visitor, isAwaitKeyword);\n const _initializer = visitNode(node.initializer, visitor, isForInitializer);\n const _expression = visitNode(node.expression, visitor, isExpression);\n const _statement = visitNode(node.statement, visitor, isStatement);\n return updateForInStatement(node, _awaitModifier, _initializer, _expression, _statement);\n },\n [SyntaxKind.ForOfStatement]: (node, visitor) => {\n const _awaitModifier = visitNode(node.awaitModifier, visitor, isAwaitKeyword);\n const _initializer = visitNode(node.initializer, visitor, isForInitializer);\n const _expression = visitNode(node.expression, visitor, isExpression);\n const _statement = visitNode(node.statement, visitor, isStatement);\n return updateForOfStatement(node, _awaitModifier, _initializer, _expression, _statement);\n },\n [SyntaxKind.CaseClause]: (node, visitor) => {\n const _expression = visitNode(node.expression, visitor, isExpression);\n const _statements = visitNodes(node.statements, visitor);\n return updateCaseClause(node, _expression, _statements);\n },\n [SyntaxKind.DefaultClause]: (node, visitor) => {\n const _expression = visitNode(node.expression, visitor, isExpression);\n const _statements = visitNodes(node.statements, visitor);\n return updateDefaultClause(node, _expression, _statements);\n },\n [SyntaxKind.ObjectBindingPattern]: (node, visitor) => {\n const _elements = visitNodes(node.elements, visitor);\n return updateObjectBindingPattern(node, _elements);\n },\n [SyntaxKind.ArrayBindingPattern]: (node, visitor) => {\n const _elements = visitNodes(node.elements, visitor);\n return updateArrayBindingPattern(node, _elements);\n },\n [SyntaxKind.JSDocParameterTag]: visitEachChildOfJSDocParameterTag,\n [SyntaxKind.JSDocPropertyTag]: visitEachChildOfJSDocPropertyTag,\n};\n//# sourceMappingURL=visitor.generated.js.map","/**\n * Hand-written visitor implementations for nodes with runtime-dependent\n * child ordering. Generated code in visitor.generated.ts and factory.generated.ts\n * delegates to these functions.\n */\nimport { SyntaxKind } from \"#enums/syntaxKind\";\nimport { updateJSDocParameterTag, updateJSDocPropertyTag, } from \"./factory.generated.js\";\nimport { isEntityName, isIdentifier, isTypeNode, } from \"./is.js\";\nimport { visitNode, visitNodes, } from \"./visitor.generated.js\";\nexport { visitEachChild, visitNode, visitNodes, visitNodesArray } from \"./visitor.generated.js\";\n// ── forEachChild helpers (same signature as forEachChildTable entries) ──\nfunction visitNodeForEachChild(cbNode, node) {\n return node ? cbNode(node) : undefined;\n}\nfunction visitNodesForEachChild(cbNode, cbNodes, nodes) {\n if (!nodes)\n return undefined;\n if (cbNodes)\n return cbNodes(nodes);\n for (const node of nodes) {\n const result = cbNode(node);\n if (result)\n return result;\n }\n return undefined;\n}\n// ── forEachChild implementations ──\nfunction forEachChildOfJSDocParameterOrPropertyTag(data, cbNode, cbNodes) {\n return visitNodeForEachChild(cbNode, data.tagName) ||\n (data.isNameFirst\n ? visitNodeForEachChild(cbNode, data.name) || visitNodeForEachChild(cbNode, data.typeExpression)\n : visitNodeForEachChild(cbNode, data.typeExpression) || visitNodeForEachChild(cbNode, data.name)) ||\n visitNodesForEachChild(cbNode, cbNodes, data.comment);\n}\nexport { forEachChildOfJSDocParameterOrPropertyTag as forEachChildOfJSDocParameterTag, forEachChildOfJSDocParameterOrPropertyTag as forEachChildOfJSDocPropertyTag };\n// ── visitEachChild implementations ──\nfunction visitEachChildOfJSDocParameterOrPropertyTag(node, visitor) {\n const _tagName = visitNode(node.tagName, visitor, isIdentifier);\n const _name = visitNode(node.name, visitor, isEntityName);\n const _typeExpression = visitNode(node.typeExpression, visitor, isTypeNode);\n const _comment = visitNodes(node.comment, visitor);\n return node.kind === SyntaxKind.JSDocParameterTag\n ? updateJSDocParameterTag(node, _tagName, _name, _typeExpression, _comment)\n : updateJSDocPropertyTag(node, _tagName, _name, _typeExpression, _comment);\n}\nexport { visitEachChildOfJSDocParameterOrPropertyTag as visitEachChildOfJSDocParameterTag, visitEachChildOfJSDocParameterOrPropertyTag as visitEachChildOfJSDocPropertyTag };\n//# sourceMappingURL=visitor.js.map","// Code generated by _scripts/generate-ts-ast.ts. DO NOT EDIT.\nimport { NodeFlags } from \"#enums/nodeFlags\";\nimport { SyntaxKind } from \"#enums/syntaxKind\";\nimport { TokenFlags } from \"#enums/tokenFlags\";\nimport { getTokenPosOfNode } from \"./astnav.js\";\nimport { cloneSourceFileData } from \"./utils.js\";\nimport { forEachChildOfJSDocParameterTag, forEachChildOfJSDocPropertyTag, } from \"./visitor.js\";\nexport class NodeObject {\n kind;\n flags = 0;\n pos = -1;\n end = -1;\n parent = undefined;\n _data;\n constructor(kind, data) {\n this.kind = kind;\n this._data = data;\n }\n get ambientModuleNames() {\n return this._data?.ambientModuleNames;\n }\n get argument() {\n return this._data?.argument;\n }\n get argumentExpression() {\n return this._data?.argumentExpression;\n }\n get arguments() {\n return this._data?.arguments;\n }\n get assertsModifier() {\n return this._data?.assertsModifier;\n }\n get asteriskToken() {\n return this._data?.asteriskToken;\n }\n get attributes() {\n return this._data?.attributes;\n }\n get awaitModifier() {\n return this._data?.awaitModifier;\n }\n get block() {\n return this._data?.block;\n }\n get body() {\n return this._data?.body;\n }\n get caseBlock() {\n return this._data?.caseBlock;\n }\n get catchClause() {\n return this._data?.catchClause;\n }\n get checkType() {\n return this._data?.checkType;\n }\n get children() {\n return this._data?.children;\n }\n get className() {\n return this._data?.className;\n }\n get clauses() {\n return this._data?.clauses;\n }\n get closingElement() {\n return this._data?.closingElement;\n }\n get closingFragment() {\n return this._data?.closingFragment;\n }\n get colonToken() {\n return this._data?.colonToken;\n }\n get comment() {\n return this._data?.comment;\n }\n get condition() {\n return this._data?.condition;\n }\n get constraint() {\n return this._data?.constraint;\n }\n get containsOnlyTriviaWhiteSpaces() {\n return this._data?.containsOnlyTriviaWhiteSpaces;\n }\n get declarationList() {\n return this._data?.declarationList;\n }\n get declarations() {\n return this._data?.declarations;\n }\n get defaultType() {\n return this._data?.defaultType;\n }\n get dotDotDotToken() {\n return this._data?.dotDotDotToken;\n }\n get elementType() {\n return this._data?.elementType;\n }\n get elements() {\n return this._data?.elements;\n }\n get elseStatement() {\n return this._data?.elseStatement;\n }\n get endOfFileToken() {\n return this._data?.endOfFileToken;\n }\n get equalsGreaterThanToken() {\n return this._data?.equalsGreaterThanToken;\n }\n get equalsToken() {\n return this._data?.equalsToken;\n }\n get exclamationToken() {\n return this._data?.exclamationToken;\n }\n get exportClause() {\n return this._data?.exportClause;\n }\n get exprName() {\n return this._data?.exprName;\n }\n get expression() {\n return this._data?.expression;\n }\n get extendsType() {\n return this._data?.extendsType;\n }\n get externalModuleIndicator() {\n return this._data?.externalModuleIndicator;\n }\n get falseType() {\n return this._data?.falseType;\n }\n get fileName() {\n return this._data?.fileName;\n }\n get finallyBlock() {\n return this._data?.finallyBlock;\n }\n get head() {\n return this._data?.head;\n }\n get heritageClauses() {\n return this._data?.heritageClauses;\n }\n get importClause() {\n return this._data?.importClause;\n }\n get imports() {\n return this._data?.imports;\n }\n get incrementor() {\n return this._data?.incrementor;\n }\n get indexType() {\n return this._data?.indexType;\n }\n get initializer() {\n return this._data?.initializer;\n }\n get isArrayType() {\n return this._data?.isArrayType;\n }\n get isBracketed() {\n return this._data?.isBracketed;\n }\n get isDeclarationFile() {\n return this._data?.isDeclarationFile;\n }\n get isExportEquals() {\n return this._data?.isExportEquals;\n }\n get isNameFirst() {\n return this._data?.isNameFirst;\n }\n get isSpread() {\n return this._data?.isSpread;\n }\n get isTypeOf() {\n return this._data?.isTypeOf;\n }\n get isTypeOnly() {\n return this._data?.isTypeOnly;\n }\n get jsdocPropertyTags() {\n return this._data?.jsdocPropertyTags;\n }\n get keyword() {\n return this._data?.keyword;\n }\n get keywordToken() {\n return this._data?.keywordToken;\n }\n get label() {\n return this._data?.label;\n }\n get languageVariant() {\n return this._data?.languageVariant;\n }\n get left() {\n return this._data?.left;\n }\n get libReferenceDirectives() {\n return this._data?.libReferenceDirectives;\n }\n get literal() {\n return this._data?.literal;\n }\n get members() {\n return this._data?.members;\n }\n get modifiers() {\n return this._data?.modifiers;\n }\n get moduleAugmentations() {\n return this._data?.moduleAugmentations;\n }\n get moduleReference() {\n return this._data?.moduleReference;\n }\n get moduleSpecifier() {\n return this._data?.moduleSpecifier;\n }\n get multiLine() {\n return this._data?.multiLine;\n }\n get name() {\n return this._data?.name;\n }\n get nameExpression() {\n return this._data?.nameExpression;\n }\n get nameType() {\n return this._data?.nameType;\n }\n get namedBindings() {\n return this._data?.namedBindings;\n }\n get namespace() {\n return this._data?.namespace;\n }\n get objectAssignmentInitializer() {\n return this._data?.objectAssignmentInitializer;\n }\n get objectType() {\n return this._data?.objectType;\n }\n get openingElement() {\n return this._data?.openingElement;\n }\n get openingFragment() {\n return this._data?.openingFragment;\n }\n get operand() {\n return this._data?.operand;\n }\n get operator() {\n return this._data?.operator;\n }\n get operatorToken() {\n return this._data?.operatorToken;\n }\n get parameterName() {\n return this._data?.parameterName;\n }\n get parameters() {\n return this._data?.parameters;\n }\n get path() {\n return this._data?.path;\n }\n get phaseModifier() {\n return this._data?.phaseModifier;\n }\n get postfixToken() {\n return this._data?.postfixToken;\n }\n get properties() {\n return this._data?.properties;\n }\n get propertyName() {\n return this._data?.propertyName;\n }\n get qualifier() {\n return this._data?.qualifier;\n }\n get questionDotToken() {\n return this._data?.questionDotToken;\n }\n get questionToken() {\n return this._data?.questionToken;\n }\n get rawText() {\n return this._data?.rawText;\n }\n get readonlyToken() {\n return this._data?.readonlyToken;\n }\n get referencedFiles() {\n return this._data?.referencedFiles;\n }\n get right() {\n return this._data?.right;\n }\n get scriptKind() {\n return this._data?.scriptKind;\n }\n get statement() {\n return this._data?.statement;\n }\n get statements() {\n return this._data?.statements;\n }\n get tag() {\n return this._data?.tag;\n }\n get tagName() {\n return this._data?.tagName;\n }\n get tags() {\n return this._data?.tags;\n }\n get template() {\n return this._data?.template;\n }\n get templateFlags() {\n return this._data?.templateFlags;\n }\n get templateSpans() {\n return this._data?.templateSpans;\n }\n get text() {\n return this._data?.text;\n }\n get thenStatement() {\n return this._data?.thenStatement;\n }\n get thisArg() {\n return this._data?.thisArg;\n }\n get token() {\n return this._data?.token;\n }\n get tokenCache() {\n return this._data?.tokenCache;\n }\n get tokenFlags() {\n return this._data?.tokenFlags;\n }\n get trueType() {\n return this._data?.trueType;\n }\n get tryBlock() {\n return this._data?.tryBlock;\n }\n get tupleNameSource() {\n return this._data?.tupleNameSource;\n }\n get type() {\n return this._data?.type;\n }\n get typeArguments() {\n return this._data?.typeArguments;\n }\n get typeExpression() {\n return this._data?.typeExpression;\n }\n get typeName() {\n return this._data?.typeName;\n }\n get typeParameter() {\n return this._data?.typeParameter;\n }\n get typeParameters() {\n return this._data?.typeParameters;\n }\n get typeReferenceDirectives() {\n return this._data?.typeReferenceDirectives;\n }\n get types() {\n return this._data?.types;\n }\n get value() {\n return this._data?.value;\n }\n get variableDeclaration() {\n return this._data?.variableDeclaration;\n }\n get whenFalse() {\n return this._data?.whenFalse;\n }\n get whenTrue() {\n return this._data?.whenTrue;\n }\n forEachChild(visitor, visitArray) {\n const fn = forEachChildTable[this.kind];\n return fn ? fn(this._data, visitor, visitArray) : undefined;\n }\n getSourceFile() {\n let node = this;\n while (node.parent)\n node = node.parent;\n return node;\n }\n getStart(sourceFile, includeJsDocComment) {\n return getTokenPosOfNode(this, sourceFile ?? this.getSourceFile(), includeJsDocComment);\n }\n getFullStart() {\n return this.pos;\n }\n getEnd() {\n return this.end;\n }\n getWidth(sourceFile) {\n return this.getEnd() - this.getStart(sourceFile);\n }\n getFullWidth() {\n return this.end - this.pos;\n }\n getLeadingTriviaWidth(sourceFile) {\n return this.getStart(sourceFile) - this.pos;\n }\n getFullText(sourceFile) {\n return (sourceFile ?? this.getSourceFile()).text.substring(this.pos, this.end);\n }\n getText(sourceFile) {\n sourceFile ??= this.getSourceFile();\n return sourceFile.text.substring(this.getStart(sourceFile), this.end);\n }\n}\nfunction isNodeArray(array) {\n return \"pos\" in array && \"end\" in array;\n}\nexport function createNodeArray(elements, pos = -1, end = -1) {\n if (isNodeArray(elements))\n return elements;\n const arr = elements.slice();\n arr.pos = pos;\n arr.end = end;\n return arr;\n}\nexport function cloneNode(node) {\n const data = cloneNodeData(node);\n const clone = new NodeObject(node.kind, data);\n clone.flags = node.flags;\n clone.pos = node.pos;\n clone.end = node.end;\n return clone;\n}\nfunction cloneNodeData(node) {\n const n = node;\n switch (node.kind) {\n case SyntaxKind.Identifier:\n return { text: n.text };\n case SyntaxKind.PrivateIdentifier:\n return { text: n.text };\n case SyntaxKind.QualifiedName:\n return { left: n.left, right: n.right };\n case SyntaxKind.ComputedPropertyName:\n return { expression: n.expression };\n case SyntaxKind.Decorator:\n return { expression: n.expression };\n case SyntaxKind.IfStatement:\n return { expression: n.expression, thenStatement: n.thenStatement, elseStatement: n.elseStatement };\n case SyntaxKind.DoStatement:\n return { statement: n.statement, expression: n.expression };\n case SyntaxKind.WhileStatement:\n return { expression: n.expression, statement: n.statement };\n case SyntaxKind.ForStatement:\n return { initializer: n.initializer, condition: n.condition, incrementor: n.incrementor, statement: n.statement };\n case SyntaxKind.BreakStatement:\n return { label: n.label };\n case SyntaxKind.ContinueStatement:\n return { label: n.label };\n case SyntaxKind.ReturnStatement:\n return { expression: n.expression };\n case SyntaxKind.WithStatement:\n return { expression: n.expression, statement: n.statement };\n case SyntaxKind.SwitchStatement:\n return { expression: n.expression, caseBlock: n.caseBlock };\n case SyntaxKind.CaseBlock:\n return { clauses: n.clauses };\n case SyntaxKind.ThrowStatement:\n return { expression: n.expression };\n case SyntaxKind.TryStatement:\n return { tryBlock: n.tryBlock, catchClause: n.catchClause, finallyBlock: n.finallyBlock };\n case SyntaxKind.CatchClause:\n return { variableDeclaration: n.variableDeclaration, block: n.block };\n case SyntaxKind.LabeledStatement:\n return { label: n.label, statement: n.statement };\n case SyntaxKind.ExpressionStatement:\n return { expression: n.expression };\n case SyntaxKind.Block:\n return { statements: n.statements, multiLine: n.multiLine };\n case SyntaxKind.VariableStatement:\n return { modifiers: n.modifiers, declarationList: n.declarationList };\n case SyntaxKind.VariableDeclaration:\n return { name: n.name, exclamationToken: n.exclamationToken, type: n.type, initializer: n.initializer };\n case SyntaxKind.VariableDeclarationList:\n return { declarations: n.declarations };\n case SyntaxKind.Parameter:\n return { modifiers: n.modifiers, dotDotDotToken: n.dotDotDotToken, name: n.name, questionToken: n.questionToken, type: n.type, initializer: n.initializer };\n case SyntaxKind.BindingElement:\n return { dotDotDotToken: n.dotDotDotToken, propertyName: n.propertyName, name: n.name, initializer: n.initializer };\n case SyntaxKind.MissingDeclaration:\n return { modifiers: n.modifiers };\n case SyntaxKind.FunctionDeclaration:\n return { modifiers: n.modifiers, asteriskToken: n.asteriskToken, name: n.name, typeParameters: n.typeParameters, parameters: n.parameters, type: n.type, body: n.body };\n case SyntaxKind.ClassDeclaration:\n return { modifiers: n.modifiers, name: n.name, typeParameters: n.typeParameters, heritageClauses: n.heritageClauses, members: n.members };\n case SyntaxKind.ClassExpression:\n return { modifiers: n.modifiers, name: n.name, typeParameters: n.typeParameters, heritageClauses: n.heritageClauses, members: n.members };\n case SyntaxKind.HeritageClause:\n return { token: n.token, types: n.types };\n case SyntaxKind.InterfaceDeclaration:\n return { modifiers: n.modifiers, name: n.name, typeParameters: n.typeParameters, heritageClauses: n.heritageClauses, members: n.members };\n case SyntaxKind.TypeAliasDeclaration:\n case SyntaxKind.JSTypeAliasDeclaration:\n return { modifiers: n.modifiers, name: n.name, typeParameters: n.typeParameters, type: n.type };\n case SyntaxKind.EnumMember:\n return { name: n.name, initializer: n.initializer };\n case SyntaxKind.EnumDeclaration:\n return { modifiers: n.modifiers, name: n.name, members: n.members };\n case SyntaxKind.ModuleBlock:\n return { statements: n.statements };\n case SyntaxKind.ImportDeclaration:\n case SyntaxKind.JSImportDeclaration:\n return { modifiers: n.modifiers, importClause: n.importClause, moduleSpecifier: n.moduleSpecifier, attributes: n.attributes };\n case SyntaxKind.ExternalModuleReference:\n return { expression: n.expression };\n case SyntaxKind.NamespaceImport:\n return { name: n.name };\n case SyntaxKind.NamedImports:\n return { elements: n.elements };\n case SyntaxKind.ExportAssignment:\n return { modifiers: n.modifiers, isExportEquals: n.isExportEquals, type: n.type, expression: n.expression };\n case SyntaxKind.NamespaceExportDeclaration:\n return { modifiers: n.modifiers, name: n.name };\n case SyntaxKind.NamespaceExport:\n return { name: n.name };\n case SyntaxKind.NamedExports:\n return { elements: n.elements };\n case SyntaxKind.ExportSpecifier:\n return { isTypeOnly: n.isTypeOnly, propertyName: n.propertyName, name: n.name };\n case SyntaxKind.CallSignature:\n return { typeParameters: n.typeParameters, parameters: n.parameters, type: n.type };\n case SyntaxKind.ConstructSignature:\n return { typeParameters: n.typeParameters, parameters: n.parameters, type: n.type };\n case SyntaxKind.Constructor:\n return { modifiers: n.modifiers, typeParameters: n.typeParameters, parameters: n.parameters, type: n.type, body: n.body };\n case SyntaxKind.GetAccessor:\n return { modifiers: n.modifiers, name: n.name, typeParameters: n.typeParameters, parameters: n.parameters, type: n.type, body: n.body };\n case SyntaxKind.SetAccessor:\n return { modifiers: n.modifiers, name: n.name, typeParameters: n.typeParameters, parameters: n.parameters, type: n.type, body: n.body };\n case SyntaxKind.IndexSignature:\n return { modifiers: n.modifiers, parameters: n.parameters, type: n.type };\n case SyntaxKind.MethodSignature:\n return { modifiers: n.modifiers, name: n.name, postfixToken: n.postfixToken, typeParameters: n.typeParameters, parameters: n.parameters, type: n.type };\n case SyntaxKind.MethodDeclaration:\n 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 };\n case SyntaxKind.PropertySignature:\n return { modifiers: n.modifiers, name: n.name, postfixToken: n.postfixToken, type: n.type, initializer: n.initializer };\n case SyntaxKind.PropertyDeclaration:\n return { modifiers: n.modifiers, name: n.name, postfixToken: n.postfixToken, type: n.type, initializer: n.initializer };\n case SyntaxKind.ClassStaticBlockDeclaration:\n return { modifiers: n.modifiers, body: n.body };\n case SyntaxKind.StringLiteral:\n return { text: n.text, tokenFlags: n.tokenFlags };\n case SyntaxKind.NumericLiteral:\n return { text: n.text, tokenFlags: n.tokenFlags };\n case SyntaxKind.BigIntLiteral:\n return { text: n.text, tokenFlags: n.tokenFlags };\n case SyntaxKind.RegularExpressionLiteral:\n return { text: n.text, tokenFlags: n.tokenFlags };\n case SyntaxKind.NoSubstitutionTemplateLiteral:\n return { text: n.text, templateFlags: n.templateFlags };\n case SyntaxKind.BinaryExpression:\n return { modifiers: n.modifiers, left: n.left, type: n.type, operatorToken: n.operatorToken, right: n.right };\n case SyntaxKind.PrefixUnaryExpression:\n return { operator: n.operator, operand: n.operand };\n case SyntaxKind.PostfixUnaryExpression:\n return { operand: n.operand, operator: n.operator };\n case SyntaxKind.YieldExpression:\n return { asteriskToken: n.asteriskToken, expression: n.expression };\n case SyntaxKind.ArrowFunction:\n return { modifiers: n.modifiers, typeParameters: n.typeParameters, parameters: n.parameters, type: n.type, equalsGreaterThanToken: n.equalsGreaterThanToken, body: n.body };\n case SyntaxKind.FunctionExpression:\n return { modifiers: n.modifiers, asteriskToken: n.asteriskToken, name: n.name, typeParameters: n.typeParameters, parameters: n.parameters, type: n.type, body: n.body };\n case SyntaxKind.AsExpression:\n return { expression: n.expression, type: n.type };\n case SyntaxKind.SatisfiesExpression:\n return { expression: n.expression, type: n.type };\n case SyntaxKind.ConditionalExpression:\n return { condition: n.condition, questionToken: n.questionToken, whenTrue: n.whenTrue, colonToken: n.colonToken, whenFalse: n.whenFalse };\n case SyntaxKind.PropertyAccessExpression:\n return { expression: n.expression, questionDotToken: n.questionDotToken, name: n.name };\n case SyntaxKind.ElementAccessExpression:\n return { expression: n.expression, questionDotToken: n.questionDotToken, argumentExpression: n.argumentExpression };\n case SyntaxKind.CallExpression:\n return { expression: n.expression, questionDotToken: n.questionDotToken, typeArguments: n.typeArguments, arguments: n.arguments };\n case SyntaxKind.NewExpression:\n return { expression: n.expression, typeArguments: n.typeArguments, arguments: n.arguments };\n case SyntaxKind.MetaProperty:\n return { keywordToken: n.keywordToken, name: n.name };\n case SyntaxKind.NonNullExpression:\n return { expression: n.expression };\n case SyntaxKind.SpreadElement:\n return { expression: n.expression };\n case SyntaxKind.TemplateExpression:\n return { head: n.head, templateSpans: n.templateSpans };\n case SyntaxKind.TemplateSpan:\n return { expression: n.expression, literal: n.literal };\n case SyntaxKind.TaggedTemplateExpression:\n return { tag: n.tag, questionDotToken: n.questionDotToken, typeArguments: n.typeArguments, template: n.template };\n case SyntaxKind.ParenthesizedExpression:\n return { expression: n.expression };\n case SyntaxKind.ArrayLiteralExpression:\n return { elements: n.elements, multiLine: n.multiLine };\n case SyntaxKind.ObjectLiteralExpression:\n return { properties: n.properties, multiLine: n.multiLine };\n case SyntaxKind.SpreadAssignment:\n return { expression: n.expression };\n case SyntaxKind.PropertyAssignment:\n return { modifiers: n.modifiers, name: n.name, postfixToken: n.postfixToken, type: n.type, initializer: n.initializer };\n case SyntaxKind.ShorthandPropertyAssignment:\n return { modifiers: n.modifiers, name: n.name, postfixToken: n.postfixToken, type: n.type, equalsToken: n.equalsToken, objectAssignmentInitializer: n.objectAssignmentInitializer };\n case SyntaxKind.DeleteExpression:\n return { expression: n.expression };\n case SyntaxKind.TypeOfExpression:\n return { expression: n.expression };\n case SyntaxKind.VoidExpression:\n return { expression: n.expression };\n case SyntaxKind.AwaitExpression:\n return { expression: n.expression };\n case SyntaxKind.TypeAssertionExpression:\n return { type: n.type, expression: n.expression };\n case SyntaxKind.UnionType:\n return { types: n.types };\n case SyntaxKind.IntersectionType:\n return { types: n.types };\n case SyntaxKind.ConditionalType:\n return { checkType: n.checkType, extendsType: n.extendsType, trueType: n.trueType, falseType: n.falseType };\n case SyntaxKind.TypeOperator:\n return { operator: n.operator, type: n.type };\n case SyntaxKind.InferType:\n return { typeParameter: n.typeParameter };\n case SyntaxKind.ArrayType:\n return { elementType: n.elementType };\n case SyntaxKind.IndexedAccessType:\n return { objectType: n.objectType, indexType: n.indexType };\n case SyntaxKind.TypeReference:\n return { typeName: n.typeName, typeArguments: n.typeArguments };\n case SyntaxKind.ExpressionWithTypeArguments:\n return { expression: n.expression, typeArguments: n.typeArguments };\n case SyntaxKind.LiteralType:\n return { literal: n.literal };\n case SyntaxKind.TypePredicate:\n return { assertsModifier: n.assertsModifier, parameterName: n.parameterName, type: n.type };\n case SyntaxKind.ImportAttribute:\n return { name: n.name, value: n.value };\n case SyntaxKind.ImportAttributes:\n return { token: n.token, attributes: n.attributes, multiLine: n.multiLine };\n case SyntaxKind.TypeQuery:\n return { exprName: n.exprName, typeArguments: n.typeArguments };\n case SyntaxKind.MappedType:\n return { readonlyToken: n.readonlyToken, typeParameter: n.typeParameter, nameType: n.nameType, questionToken: n.questionToken, type: n.type, members: n.members };\n case SyntaxKind.TypeLiteral:\n return { members: n.members };\n case SyntaxKind.TupleType:\n return { elements: n.elements };\n case SyntaxKind.NamedTupleMember:\n return { dotDotDotToken: n.dotDotDotToken, name: n.name, questionToken: n.questionToken, type: n.type };\n case SyntaxKind.OptionalType:\n return { type: n.type };\n case SyntaxKind.RestType:\n return { type: n.type };\n case SyntaxKind.ParenthesizedType:\n return { type: n.type };\n case SyntaxKind.FunctionType:\n return { typeParameters: n.typeParameters, parameters: n.parameters, type: n.type };\n case SyntaxKind.ConstructorType:\n return { modifiers: n.modifiers, typeParameters: n.typeParameters, parameters: n.parameters, type: n.type };\n case SyntaxKind.TemplateHead:\n return { text: n.text, rawText: n.rawText, templateFlags: n.templateFlags };\n case SyntaxKind.TemplateMiddle:\n return { text: n.text, rawText: n.rawText, templateFlags: n.templateFlags };\n case SyntaxKind.TemplateTail:\n return { text: n.text, rawText: n.rawText, templateFlags: n.templateFlags };\n case SyntaxKind.TemplateLiteralType:\n return { head: n.head, templateSpans: n.templateSpans };\n case SyntaxKind.TemplateLiteralTypeSpan:\n return { type: n.type, literal: n.literal };\n case SyntaxKind.SyntheticExpression:\n return { type: n.type, isSpread: n.isSpread, tupleNameSource: n.tupleNameSource };\n case SyntaxKind.PartiallyEmittedExpression:\n return { expression: n.expression };\n case SyntaxKind.JsxElement:\n return { openingElement: n.openingElement, children: n.children, closingElement: n.closingElement };\n case SyntaxKind.JsxAttributes:\n return { properties: n.properties };\n case SyntaxKind.JsxNamespacedName:\n return { namespace: n.namespace, name: n.name };\n case SyntaxKind.JsxOpeningElement:\n return { tagName: n.tagName, typeArguments: n.typeArguments, attributes: n.attributes };\n case SyntaxKind.JsxSelfClosingElement:\n return { tagName: n.tagName, typeArguments: n.typeArguments, attributes: n.attributes };\n case SyntaxKind.JsxFragment:\n return { openingFragment: n.openingFragment, children: n.children, closingFragment: n.closingFragment };\n case SyntaxKind.JsxAttribute:\n return { name: n.name, initializer: n.initializer };\n case SyntaxKind.JsxSpreadAttribute:\n return { expression: n.expression };\n case SyntaxKind.JsxClosingElement:\n return { tagName: n.tagName };\n case SyntaxKind.JsxExpression:\n return { dotDotDotToken: n.dotDotDotToken, expression: n.expression };\n case SyntaxKind.JsxText:\n return { text: n.text, containsOnlyTriviaWhiteSpaces: n.containsOnlyTriviaWhiteSpaces };\n case SyntaxKind.SyntaxList:\n return { children: n.children };\n case SyntaxKind.JSDoc:\n return { comment: n.comment, tags: n.tags };\n case SyntaxKind.JSDocTypeExpression:\n return { type: n.type };\n case SyntaxKind.JSDocNonNullableType:\n return { type: n.type };\n case SyntaxKind.JSDocNullableType:\n return { type: n.type };\n case SyntaxKind.JSDocVariadicType:\n return { type: n.type };\n case SyntaxKind.JSDocOptionalType:\n return { type: n.type };\n case SyntaxKind.JSDocTypeTag:\n return { tagName: n.tagName, typeExpression: n.typeExpression, comment: n.comment };\n case SyntaxKind.JSDocUnknownTag:\n return { tagName: n.tagName, comment: n.comment };\n case SyntaxKind.JSDocTemplateTag:\n return { tagName: n.tagName, constraint: n.constraint, typeParameters: n.typeParameters, comment: n.comment };\n case SyntaxKind.JSDocReturnTag:\n return { tagName: n.tagName, typeExpression: n.typeExpression, comment: n.comment };\n case SyntaxKind.JSDocPublicTag:\n return { tagName: n.tagName, comment: n.comment };\n case SyntaxKind.JSDocPrivateTag:\n return { tagName: n.tagName, comment: n.comment };\n case SyntaxKind.JSDocProtectedTag:\n return { tagName: n.tagName, comment: n.comment };\n case SyntaxKind.JSDocReadonlyTag:\n return { tagName: n.tagName, comment: n.comment };\n case SyntaxKind.JSDocOverrideTag:\n return { tagName: n.tagName, comment: n.comment };\n case SyntaxKind.JSDocDeprecatedTag:\n return { tagName: n.tagName, comment: n.comment };\n case SyntaxKind.JSDocSeeTag:\n return { tagName: n.tagName, nameExpression: n.nameExpression, comment: n.comment };\n case SyntaxKind.JSDocImplementsTag:\n return { tagName: n.tagName, className: n.className, comment: n.comment };\n case SyntaxKind.JSDocAugmentsTag:\n return { tagName: n.tagName, className: n.className, comment: n.comment };\n case SyntaxKind.JSDocSatisfiesTag:\n return { tagName: n.tagName, typeExpression: n.typeExpression, comment: n.comment };\n case SyntaxKind.JSDocThrowsTag:\n return { tagName: n.tagName, typeExpression: n.typeExpression, comment: n.comment };\n case SyntaxKind.JSDocThisTag:\n return { tagName: n.tagName, typeExpression: n.typeExpression, comment: n.comment };\n case SyntaxKind.JSDocImportTag:\n return { tagName: n.tagName, importClause: n.importClause, moduleSpecifier: n.moduleSpecifier, attributes: n.attributes, comment: n.comment };\n case SyntaxKind.JSDocCallbackTag:\n return { tagName: n.tagName, typeExpression: n.typeExpression, name: n.name, comment: n.comment };\n case SyntaxKind.JSDocOverloadTag:\n return { tagName: n.tagName, typeExpression: n.typeExpression, comment: n.comment };\n case SyntaxKind.JSDocTypedefTag:\n return { tagName: n.tagName, typeExpression: n.typeExpression, name: n.name, comment: n.comment };\n case SyntaxKind.JSDocSignature:\n return { typeParameters: n.typeParameters, parameters: n.parameters, type: n.type };\n case SyntaxKind.JSDocNameReference:\n return { name: n.name };\n case SyntaxKind.ModuleDeclaration:\n return { modifiers: n.modifiers, keyword: n.keyword, name: n.name, body: n.body };\n case SyntaxKind.ImportEqualsDeclaration:\n return { modifiers: n.modifiers, isTypeOnly: n.isTypeOnly, name: n.name, moduleReference: n.moduleReference };\n case SyntaxKind.ExportDeclaration:\n return { modifiers: n.modifiers, isTypeOnly: n.isTypeOnly, exportClause: n.exportClause, moduleSpecifier: n.moduleSpecifier, attributes: n.attributes };\n case SyntaxKind.ImportType:\n return { isTypeOf: n.isTypeOf, argument: n.argument, attributes: n.attributes, qualifier: n.qualifier, typeArguments: n.typeArguments };\n case SyntaxKind.ImportClause:\n return { phaseModifier: n.phaseModifier, name: n.name, namedBindings: n.namedBindings };\n case SyntaxKind.ImportSpecifier:\n return { isTypeOnly: n.isTypeOnly, propertyName: n.propertyName, name: n.name };\n case SyntaxKind.JSDocText:\n return { text: n.text };\n case SyntaxKind.JSDocLink:\n return { name: n.name, text: n.text };\n case SyntaxKind.JSDocLinkPlain:\n return { name: n.name, text: n.text };\n case SyntaxKind.JSDocLinkCode:\n return { name: n.name, text: n.text };\n case SyntaxKind.TypeParameter:\n return { modifiers: n.modifiers, name: n.name, constraint: n.constraint, expression: n.expression, defaultType: n.defaultType };\n case SyntaxKind.SyntheticReferenceExpression:\n return { expression: n.expression, thisArg: n.thisArg };\n case SyntaxKind.JSDocTypeLiteral:\n return { jsdocPropertyTags: n.jsdocPropertyTags, isArrayType: n.isArrayType };\n case SyntaxKind.ForInStatement:\n return { awaitModifier: n.awaitModifier, initializer: n.initializer, expression: n.expression, statement: n.statement };\n case SyntaxKind.ForOfStatement:\n return { awaitModifier: n.awaitModifier, initializer: n.initializer, expression: n.expression, statement: n.statement };\n case SyntaxKind.CaseClause:\n return { expression: n.expression, statements: n.statements };\n case SyntaxKind.DefaultClause:\n return { expression: n.expression, statements: n.statements };\n case SyntaxKind.ObjectBindingPattern:\n return { elements: n.elements };\n case SyntaxKind.ArrayBindingPattern:\n return { elements: n.elements };\n case SyntaxKind.JSDocParameterTag:\n return { tagName: n.tagName, name: n.name, isBracketed: n.isBracketed, typeExpression: n.typeExpression, isNameFirst: n.isNameFirst, comment: n.comment };\n case SyntaxKind.JSDocPropertyTag:\n return { tagName: n.tagName, name: n.name, isBracketed: n.isBracketed, typeExpression: n.typeExpression, isNameFirst: n.isNameFirst, comment: n.comment };\n case SyntaxKind.SourceFile:\n return cloneSourceFileData(n);\n default:\n return undefined;\n }\n}\nconst forEachChildTable = {\n [SyntaxKind.QualifiedName]: (data, cbNode, cbNodes) => visitNode(cbNode, data.left) ||\n visitNode(cbNode, data.right),\n [SyntaxKind.ComputedPropertyName]: (data, cbNode, cbNodes) => visitNode(cbNode, data.expression),\n [SyntaxKind.Decorator]: (data, cbNode, cbNodes) => visitNode(cbNode, data.expression),\n [SyntaxKind.IfStatement]: (data, cbNode, cbNodes) => visitNode(cbNode, data.expression) ||\n visitNode(cbNode, data.thenStatement) ||\n visitNode(cbNode, data.elseStatement),\n [SyntaxKind.DoStatement]: (data, cbNode, cbNodes) => visitNode(cbNode, data.statement) ||\n visitNode(cbNode, data.expression),\n [SyntaxKind.WhileStatement]: (data, cbNode, cbNodes) => visitNode(cbNode, data.expression) ||\n visitNode(cbNode, data.statement),\n [SyntaxKind.ForStatement]: (data, cbNode, cbNodes) => visitNode(cbNode, data.initializer) ||\n visitNode(cbNode, data.condition) ||\n visitNode(cbNode, data.incrementor) ||\n visitNode(cbNode, data.statement),\n [SyntaxKind.BreakStatement]: (data, cbNode, cbNodes) => visitNode(cbNode, data.label),\n [SyntaxKind.ContinueStatement]: (data, cbNode, cbNodes) => visitNode(cbNode, data.label),\n [SyntaxKind.ReturnStatement]: (data, cbNode, cbNodes) => visitNode(cbNode, data.expression),\n [SyntaxKind.WithStatement]: (data, cbNode, cbNodes) => visitNode(cbNode, data.expression) ||\n visitNode(cbNode, data.statement),\n [SyntaxKind.SwitchStatement]: (data, cbNode, cbNodes) => visitNode(cbNode, data.expression) ||\n visitNode(cbNode, data.caseBlock),\n [SyntaxKind.CaseBlock]: (data, cbNode, cbNodes) => visitNodes(cbNode, cbNodes, data.clauses),\n [SyntaxKind.ThrowStatement]: (data, cbNode, cbNodes) => visitNode(cbNode, data.expression),\n [SyntaxKind.TryStatement]: (data, cbNode, cbNodes) => visitNode(cbNode, data.tryBlock) ||\n visitNode(cbNode, data.catchClause) ||\n visitNode(cbNode, data.finallyBlock),\n [SyntaxKind.CatchClause]: (data, cbNode, cbNodes) => visitNode(cbNode, data.variableDeclaration) ||\n visitNode(cbNode, data.block),\n [SyntaxKind.LabeledStatement]: (data, cbNode, cbNodes) => visitNode(cbNode, data.label) ||\n visitNode(cbNode, data.statement),\n [SyntaxKind.ExpressionStatement]: (data, cbNode, cbNodes) => visitNode(cbNode, data.expression),\n [SyntaxKind.Block]: (data, cbNode, cbNodes) => visitNodes(cbNode, cbNodes, data.statements),\n [SyntaxKind.VariableStatement]: (data, cbNode, cbNodes) => visitNodes(cbNode, cbNodes, data.modifiers) ||\n visitNode(cbNode, data.declarationList),\n [SyntaxKind.VariableDeclaration]: (data, cbNode, cbNodes) => visitNode(cbNode, data.name) ||\n visitNode(cbNode, data.exclamationToken) ||\n visitNode(cbNode, data.type) ||\n visitNode(cbNode, data.initializer),\n [SyntaxKind.VariableDeclarationList]: (data, cbNode, cbNodes) => visitNodes(cbNode, cbNodes, data.declarations),\n [SyntaxKind.Parameter]: (data, cbNode, cbNodes) => visitNodes(cbNode, cbNodes, data.modifiers) ||\n visitNode(cbNode, data.dotDotDotToken) ||\n visitNode(cbNode, data.name) ||\n visitNode(cbNode, data.questionToken) ||\n visitNode(cbNode, data.type) ||\n visitNode(cbNode, data.initializer),\n [SyntaxKind.BindingElement]: (data, cbNode, cbNodes) => visitNode(cbNode, data.dotDotDotToken) ||\n visitNode(cbNode, data.propertyName) ||\n visitNode(cbNode, data.name) ||\n visitNode(cbNode, data.initializer),\n [SyntaxKind.MissingDeclaration]: (data, cbNode, cbNodes) => visitNodes(cbNode, cbNodes, data.modifiers),\n [SyntaxKind.FunctionDeclaration]: (data, cbNode, cbNodes) => visitNodes(cbNode, cbNodes, data.modifiers) ||\n visitNode(cbNode, data.asteriskToken) ||\n visitNode(cbNode, data.name) ||\n visitNodes(cbNode, cbNodes, data.typeParameters) ||\n visitNodes(cbNode, cbNodes, data.parameters) ||\n visitNode(cbNode, data.type) ||\n visitNode(cbNode, data.body),\n [SyntaxKind.ClassDeclaration]: (data, cbNode, cbNodes) => visitNodes(cbNode, cbNodes, data.modifiers) ||\n visitNode(cbNode, data.name) ||\n visitNodes(cbNode, cbNodes, data.typeParameters) ||\n visitNodes(cbNode, cbNodes, data.heritageClauses) ||\n visitNodes(cbNode, cbNodes, data.members),\n [SyntaxKind.ClassExpression]: (data, cbNode, cbNodes) => visitNodes(cbNode, cbNodes, data.modifiers) ||\n visitNode(cbNode, data.name) ||\n visitNodes(cbNode, cbNodes, data.typeParameters) ||\n visitNodes(cbNode, cbNodes, data.heritageClauses) ||\n visitNodes(cbNode, cbNodes, data.members),\n [SyntaxKind.HeritageClause]: (data, cbNode, cbNodes) => visitNodes(cbNode, cbNodes, data.types),\n [SyntaxKind.InterfaceDeclaration]: (data, cbNode, cbNodes) => visitNodes(cbNode, cbNodes, data.modifiers) ||\n visitNode(cbNode, data.name) ||\n visitNodes(cbNode, cbNodes, data.typeParameters) ||\n visitNodes(cbNode, cbNodes, data.heritageClauses) ||\n visitNodes(cbNode, cbNodes, data.members),\n [SyntaxKind.TypeAliasDeclaration]: (data, cbNode, cbNodes) => visitNodes(cbNode, cbNodes, data.modifiers) ||\n visitNode(cbNode, data.name) ||\n visitNodes(cbNode, cbNodes, data.typeParameters) ||\n visitNode(cbNode, data.type),\n [SyntaxKind.JSTypeAliasDeclaration]: (data, cbNode, cbNodes) => visitNodes(cbNode, cbNodes, data.modifiers) ||\n visitNode(cbNode, data.name) ||\n visitNodes(cbNode, cbNodes, data.typeParameters) ||\n visitNode(cbNode, data.type),\n [SyntaxKind.EnumMember]: (data, cbNode, cbNodes) => visitNode(cbNode, data.name) ||\n visitNode(cbNode, data.initializer),\n [SyntaxKind.EnumDeclaration]: (data, cbNode, cbNodes) => visitNodes(cbNode, cbNodes, data.modifiers) ||\n visitNode(cbNode, data.name) ||\n visitNodes(cbNode, cbNodes, data.members),\n [SyntaxKind.ModuleBlock]: (data, cbNode, cbNodes) => visitNodes(cbNode, cbNodes, data.statements),\n [SyntaxKind.ImportDeclaration]: (data, cbNode, cbNodes) => visitNodes(cbNode, cbNodes, data.modifiers) ||\n visitNode(cbNode, data.importClause) ||\n visitNode(cbNode, data.moduleSpecifier) ||\n visitNode(cbNode, data.attributes),\n [SyntaxKind.JSImportDeclaration]: (data, cbNode, cbNodes) => visitNodes(cbNode, cbNodes, data.modifiers) ||\n visitNode(cbNode, data.importClause) ||\n visitNode(cbNode, data.moduleSpecifier) ||\n visitNode(cbNode, data.attributes),\n [SyntaxKind.ExternalModuleReference]: (data, cbNode, cbNodes) => visitNode(cbNode, data.expression),\n [SyntaxKind.NamespaceImport]: (data, cbNode, cbNodes) => visitNode(cbNode, data.name),\n [SyntaxKind.NamedImports]: (data, cbNode, cbNodes) => visitNodes(cbNode, cbNodes, data.elements),\n [SyntaxKind.ExportAssignment]: (data, cbNode, cbNodes) => visitNodes(cbNode, cbNodes, data.modifiers) ||\n visitNode(cbNode, data.type) ||\n visitNode(cbNode, data.expression),\n [SyntaxKind.NamespaceExportDeclaration]: (data, cbNode, cbNodes) => visitNodes(cbNode, cbNodes, data.modifiers) ||\n visitNode(cbNode, data.name),\n [SyntaxKind.NamespaceExport]: (data, cbNode, cbNodes) => visitNode(cbNode, data.name),\n [SyntaxKind.NamedExports]: (data, cbNode, cbNodes) => visitNodes(cbNode, cbNodes, data.elements),\n [SyntaxKind.ExportSpecifier]: (data, cbNode, cbNodes) => visitNode(cbNode, data.propertyName) ||\n visitNode(cbNode, data.name),\n [SyntaxKind.CallSignature]: (data, cbNode, cbNodes) => visitNodes(cbNode, cbNodes, data.typeParameters) ||\n visitNodes(cbNode, cbNodes, data.parameters) ||\n visitNode(cbNode, data.type),\n [SyntaxKind.ConstructSignature]: (data, cbNode, cbNodes) => visitNodes(cbNode, cbNodes, data.typeParameters) ||\n visitNodes(cbNode, cbNodes, data.parameters) ||\n visitNode(cbNode, data.type),\n [SyntaxKind.Constructor]: (data, cbNode, cbNodes) => visitNodes(cbNode, cbNodes, data.modifiers) ||\n visitNodes(cbNode, cbNodes, data.typeParameters) ||\n visitNodes(cbNode, cbNodes, data.parameters) ||\n visitNode(cbNode, data.type) ||\n visitNode(cbNode, data.body),\n [SyntaxKind.GetAccessor]: (data, cbNode, cbNodes) => visitNodes(cbNode, cbNodes, data.modifiers) ||\n visitNode(cbNode, data.name) ||\n visitNodes(cbNode, cbNodes, data.typeParameters) ||\n visitNodes(cbNode, cbNodes, data.parameters) ||\n visitNode(cbNode, data.type) ||\n visitNode(cbNode, data.body),\n [SyntaxKind.SetAccessor]: (data, cbNode, cbNodes) => visitNodes(cbNode, cbNodes, data.modifiers) ||\n visitNode(cbNode, data.name) ||\n visitNodes(cbNode, cbNodes, data.typeParameters) ||\n visitNodes(cbNode, cbNodes, data.parameters) ||\n visitNode(cbNode, data.type) ||\n visitNode(cbNode, data.body),\n [SyntaxKind.IndexSignature]: (data, cbNode, cbNodes) => visitNodes(cbNode, cbNodes, data.modifiers) ||\n visitNodes(cbNode, cbNodes, data.parameters) ||\n visitNode(cbNode, data.type),\n [SyntaxKind.MethodSignature]: (data, cbNode, cbNodes) => visitNodes(cbNode, cbNodes, data.modifiers) ||\n visitNode(cbNode, data.name) ||\n visitNode(cbNode, data.postfixToken) ||\n visitNodes(cbNode, cbNodes, data.typeParameters) ||\n visitNodes(cbNode, cbNodes, data.parameters) ||\n visitNode(cbNode, data.type),\n [SyntaxKind.MethodDeclaration]: (data, cbNode, cbNodes) => visitNodes(cbNode, cbNodes, data.modifiers) ||\n visitNode(cbNode, data.asteriskToken) ||\n visitNode(cbNode, data.name) ||\n visitNode(cbNode, data.postfixToken) ||\n visitNodes(cbNode, cbNodes, data.typeParameters) ||\n visitNodes(cbNode, cbNodes, data.parameters) ||\n visitNode(cbNode, data.type) ||\n visitNode(cbNode, data.body),\n [SyntaxKind.PropertySignature]: (data, cbNode, cbNodes) => visitNodes(cbNode, cbNodes, data.modifiers) ||\n visitNode(cbNode, data.name) ||\n visitNode(cbNode, data.postfixToken) ||\n visitNode(cbNode, data.type) ||\n visitNode(cbNode, data.initializer),\n [SyntaxKind.PropertyDeclaration]: (data, cbNode, cbNodes) => visitNodes(cbNode, cbNodes, data.modifiers) ||\n visitNode(cbNode, data.name) ||\n visitNode(cbNode, data.postfixToken) ||\n visitNode(cbNode, data.type) ||\n visitNode(cbNode, data.initializer),\n [SyntaxKind.ClassStaticBlockDeclaration]: (data, cbNode, cbNodes) => visitNodes(cbNode, cbNodes, data.modifiers) ||\n visitNode(cbNode, data.body),\n [SyntaxKind.BinaryExpression]: (data, cbNode, cbNodes) => visitNodes(cbNode, cbNodes, data.modifiers) ||\n visitNode(cbNode, data.left) ||\n visitNode(cbNode, data.type) ||\n visitNode(cbNode, data.operatorToken) ||\n visitNode(cbNode, data.right),\n [SyntaxKind.PrefixUnaryExpression]: (data, cbNode, cbNodes) => visitNode(cbNode, data.operand),\n [SyntaxKind.PostfixUnaryExpression]: (data, cbNode, cbNodes) => visitNode(cbNode, data.operand),\n [SyntaxKind.YieldExpression]: (data, cbNode, cbNodes) => visitNode(cbNode, data.asteriskToken) ||\n visitNode(cbNode, data.expression),\n [SyntaxKind.ArrowFunction]: (data, cbNode, cbNodes) => visitNodes(cbNode, cbNodes, data.modifiers) ||\n visitNodes(cbNode, cbNodes, data.typeParameters) ||\n visitNodes(cbNode, cbNodes, data.parameters) ||\n visitNode(cbNode, data.type) ||\n visitNode(cbNode, data.equalsGreaterThanToken) ||\n visitNode(cbNode, data.body),\n [SyntaxKind.FunctionExpression]: (data, cbNode, cbNodes) => visitNodes(cbNode, cbNodes, data.modifiers) ||\n visitNode(cbNode, data.asteriskToken) ||\n visitNode(cbNode, data.name) ||\n visitNodes(cbNode, cbNodes, data.typeParameters) ||\n visitNodes(cbNode, cbNodes, data.parameters) ||\n visitNode(cbNode, data.type) ||\n visitNode(cbNode, data.body),\n [SyntaxKind.AsExpression]: (data, cbNode, cbNodes) => visitNode(cbNode, data.expression) ||\n visitNode(cbNode, data.type),\n [SyntaxKind.SatisfiesExpression]: (data, cbNode, cbNodes) => visitNode(cbNode, data.expression) ||\n visitNode(cbNode, data.type),\n [SyntaxKind.ConditionalExpression]: (data, cbNode, cbNodes) => visitNode(cbNode, data.condition) ||\n visitNode(cbNode, data.questionToken) ||\n visitNode(cbNode, data.whenTrue) ||\n visitNode(cbNode, data.colonToken) ||\n visitNode(cbNode, data.whenFalse),\n [SyntaxKind.PropertyAccessExpression]: (data, cbNode, cbNodes) => visitNode(cbNode, data.expression) ||\n visitNode(cbNode, data.questionDotToken) ||\n visitNode(cbNode, data.name),\n [SyntaxKind.ElementAccessExpression]: (data, cbNode, cbNodes) => visitNode(cbNode, data.expression) ||\n visitNode(cbNode, data.questionDotToken) ||\n visitNode(cbNode, data.argumentExpression),\n [SyntaxKind.CallExpression]: (data, cbNode, cbNodes) => visitNode(cbNode, data.expression) ||\n visitNode(cbNode, data.questionDotToken) ||\n visitNodes(cbNode, cbNodes, data.typeArguments) ||\n visitNodes(cbNode, cbNodes, data.arguments),\n [SyntaxKind.NewExpression]: (data, cbNode, cbNodes) => visitNode(cbNode, data.expression) ||\n visitNodes(cbNode, cbNodes, data.typeArguments) ||\n visitNodes(cbNode, cbNodes, data.arguments),\n [SyntaxKind.MetaProperty]: (data, cbNode, cbNodes) => visitNode(cbNode, data.name),\n [SyntaxKind.NonNullExpression]: (data, cbNode, cbNodes) => visitNode(cbNode, data.expression),\n [SyntaxKind.SpreadElement]: (data, cbNode, cbNodes) => visitNode(cbNode, data.expression),\n [SyntaxKind.TemplateExpression]: (data, cbNode, cbNodes) => visitNode(cbNode, data.head) ||\n visitNodes(cbNode, cbNodes, data.templateSpans),\n [SyntaxKind.TemplateSpan]: (data, cbNode, cbNodes) => visitNode(cbNode, data.expression) ||\n visitNode(cbNode, data.literal),\n [SyntaxKind.TaggedTemplateExpression]: (data, cbNode, cbNodes) => visitNode(cbNode, data.tag) ||\n visitNode(cbNode, data.questionDotToken) ||\n visitNodes(cbNode, cbNodes, data.typeArguments) ||\n visitNode(cbNode, data.template),\n [SyntaxKind.ParenthesizedExpression]: (data, cbNode, cbNodes) => visitNode(cbNode, data.expression),\n [SyntaxKind.ArrayLiteralExpression]: (data, cbNode, cbNodes) => visitNodes(cbNode, cbNodes, data.elements),\n [SyntaxKind.ObjectLiteralExpression]: (data, cbNode, cbNodes) => visitNodes(cbNode, cbNodes, data.properties),\n [SyntaxKind.SpreadAssignment]: (data, cbNode, cbNodes) => visitNode(cbNode, data.expression),\n [SyntaxKind.PropertyAssignment]: (data, cbNode, cbNodes) => visitNodes(cbNode, cbNodes, data.modifiers) ||\n visitNode(cbNode, data.name) ||\n visitNode(cbNode, data.postfixToken) ||\n visitNode(cbNode, data.type) ||\n visitNode(cbNode, data.initializer),\n [SyntaxKind.ShorthandPropertyAssignment]: (data, cbNode, cbNodes) => visitNodes(cbNode, cbNodes, data.modifiers) ||\n visitNode(cbNode, data.name) ||\n visitNode(cbNode, data.postfixToken) ||\n visitNode(cbNode, data.type) ||\n visitNode(cbNode, data.equalsToken) ||\n visitNode(cbNode, data.objectAssignmentInitializer),\n [SyntaxKind.DeleteExpression]: (data, cbNode, cbNodes) => visitNode(cbNode, data.expression),\n [SyntaxKind.TypeOfExpression]: (data, cbNode, cbNodes) => visitNode(cbNode, data.expression),\n [SyntaxKind.VoidExpression]: (data, cbNode, cbNodes) => visitNode(cbNode, data.expression),\n [SyntaxKind.AwaitExpression]: (data, cbNode, cbNodes) => visitNode(cbNode, data.expression),\n [SyntaxKind.TypeAssertionExpression]: (data, cbNode, cbNodes) => visitNode(cbNode, data.type) ||\n visitNode(cbNode, data.expression),\n [SyntaxKind.UnionType]: (data, cbNode, cbNodes) => visitNodes(cbNode, cbNodes, data.types),\n [SyntaxKind.IntersectionType]: (data, cbNode, cbNodes) => visitNodes(cbNode, cbNodes, data.types),\n [SyntaxKind.ConditionalType]: (data, cbNode, cbNodes) => visitNode(cbNode, data.checkType) ||\n visitNode(cbNode, data.extendsType) ||\n visitNode(cbNode, data.trueType) ||\n visitNode(cbNode, data.falseType),\n [SyntaxKind.TypeOperator]: (data, cbNode, cbNodes) => visitNode(cbNode, data.type),\n [SyntaxKind.InferType]: (data, cbNode, cbNodes) => visitNode(cbNode, data.typeParameter),\n [SyntaxKind.ArrayType]: (data, cbNode, cbNodes) => visitNode(cbNode, data.elementType),\n [SyntaxKind.IndexedAccessType]: (data, cbNode, cbNodes) => visitNode(cbNode, data.objectType) ||\n visitNode(cbNode, data.indexType),\n [SyntaxKind.TypeReference]: (data, cbNode, cbNodes) => visitNode(cbNode, data.typeName) ||\n visitNodes(cbNode, cbNodes, data.typeArguments),\n [SyntaxKind.ExpressionWithTypeArguments]: (data, cbNode, cbNodes) => visitNode(cbNode, data.expression) ||\n visitNodes(cbNode, cbNodes, data.typeArguments),\n [SyntaxKind.LiteralType]: (data, cbNode, cbNodes) => visitNode(cbNode, data.literal),\n [SyntaxKind.TypePredicate]: (data, cbNode, cbNodes) => visitNode(cbNode, data.assertsModifier) ||\n visitNode(cbNode, data.parameterName) ||\n visitNode(cbNode, data.type),\n [SyntaxKind.ImportAttribute]: (data, cbNode, cbNodes) => visitNode(cbNode, data.name) ||\n visitNode(cbNode, data.value),\n [SyntaxKind.ImportAttributes]: (data, cbNode, cbNodes) => visitNodes(cbNode, cbNodes, data.attributes),\n [SyntaxKind.TypeQuery]: (data, cbNode, cbNodes) => visitNode(cbNode, data.exprName) ||\n visitNodes(cbNode, cbNodes, data.typeArguments),\n [SyntaxKind.MappedType]: (data, cbNode, cbNodes) => visitNode(cbNode, data.readonlyToken) ||\n visitNode(cbNode, data.typeParameter) ||\n visitNode(cbNode, data.nameType) ||\n visitNode(cbNode, data.questionToken) ||\n visitNode(cbNode, data.type) ||\n visitNodes(cbNode, cbNodes, data.members),\n [SyntaxKind.TypeLiteral]: (data, cbNode, cbNodes) => visitNodes(cbNode, cbNodes, data.members),\n [SyntaxKind.TupleType]: (data, cbNode, cbNodes) => visitNodes(cbNode, cbNodes, data.elements),\n [SyntaxKind.NamedTupleMember]: (data, cbNode, cbNodes) => visitNode(cbNode, data.dotDotDotToken) ||\n visitNode(cbNode, data.name) ||\n visitNode(cbNode, data.questionToken) ||\n visitNode(cbNode, data.type),\n [SyntaxKind.OptionalType]: (data, cbNode, cbNodes) => visitNode(cbNode, data.type),\n [SyntaxKind.RestType]: (data, cbNode, cbNodes) => visitNode(cbNode, data.type),\n [SyntaxKind.ParenthesizedType]: (data, cbNode, cbNodes) => visitNode(cbNode, data.type),\n [SyntaxKind.FunctionType]: (data, cbNode, cbNodes) => visitNodes(cbNode, cbNodes, data.typeParameters) ||\n visitNodes(cbNode, cbNodes, data.parameters) ||\n visitNode(cbNode, data.type),\n [SyntaxKind.ConstructorType]: (data, cbNode, cbNodes) => visitNodes(cbNode, cbNodes, data.modifiers) ||\n visitNodes(cbNode, cbNodes, data.typeParameters) ||\n visitNodes(cbNode, cbNodes, data.parameters) ||\n visitNode(cbNode, data.type),\n [SyntaxKind.TemplateLiteralType]: (data, cbNode, cbNodes) => visitNode(cbNode, data.head) ||\n visitNodes(cbNode, cbNodes, data.templateSpans),\n [SyntaxKind.TemplateLiteralTypeSpan]: (data, cbNode, cbNodes) => visitNode(cbNode, data.type) ||\n visitNode(cbNode, data.literal),\n [SyntaxKind.SyntheticExpression]: (data, cbNode, cbNodes) => visitNode(cbNode, data.tupleNameSource),\n [SyntaxKind.PartiallyEmittedExpression]: (data, cbNode, cbNodes) => visitNode(cbNode, data.expression),\n [SyntaxKind.JsxElement]: (data, cbNode, cbNodes) => visitNode(cbNode, data.openingElement) ||\n visitNodes(cbNode, cbNodes, data.children) ||\n visitNode(cbNode, data.closingElement),\n [SyntaxKind.JsxAttributes]: (data, cbNode, cbNodes) => visitNodes(cbNode, cbNodes, data.properties),\n [SyntaxKind.JsxNamespacedName]: (data, cbNode, cbNodes) => visitNode(cbNode, data.namespace) ||\n visitNode(cbNode, data.name),\n [SyntaxKind.JsxOpeningElement]: (data, cbNode, cbNodes) => visitNode(cbNode, data.tagName) ||\n visitNodes(cbNode, cbNodes, data.typeArguments) ||\n visitNode(cbNode, data.attributes),\n [SyntaxKind.JsxSelfClosingElement]: (data, cbNode, cbNodes) => visitNode(cbNode, data.tagName) ||\n visitNodes(cbNode, cbNodes, data.typeArguments) ||\n visitNode(cbNode, data.attributes),\n [SyntaxKind.JsxFragment]: (data, cbNode, cbNodes) => visitNode(cbNode, data.openingFragment) ||\n visitNodes(cbNode, cbNodes, data.children) ||\n visitNode(cbNode, data.closingFragment),\n [SyntaxKind.JsxAttribute]: (data, cbNode, cbNodes) => visitNode(cbNode, data.name) ||\n visitNode(cbNode, data.initializer),\n [SyntaxKind.JsxSpreadAttribute]: (data, cbNode, cbNodes) => visitNode(cbNode, data.expression),\n [SyntaxKind.JsxClosingElement]: (data, cbNode, cbNodes) => visitNode(cbNode, data.tagName),\n [SyntaxKind.JsxExpression]: (data, cbNode, cbNodes) => visitNode(cbNode, data.dotDotDotToken) ||\n visitNode(cbNode, data.expression),\n [SyntaxKind.SyntaxList]: (data, cbNode, cbNodes) => visitNodes(cbNode, cbNodes, data.children),\n [SyntaxKind.JSDoc]: (data, cbNode, cbNodes) => visitNodes(cbNode, cbNodes, data.comment) ||\n visitNodes(cbNode, cbNodes, data.tags),\n [SyntaxKind.JSDocTypeExpression]: (data, cbNode, cbNodes) => visitNode(cbNode, data.type),\n [SyntaxKind.JSDocNonNullableType]: (data, cbNode, cbNodes) => visitNode(cbNode, data.type),\n [SyntaxKind.JSDocNullableType]: (data, cbNode, cbNodes) => visitNode(cbNode, data.type),\n [SyntaxKind.JSDocVariadicType]: (data, cbNode, cbNodes) => visitNode(cbNode, data.type),\n [SyntaxKind.JSDocOptionalType]: (data, cbNode, cbNodes) => visitNode(cbNode, data.type),\n [SyntaxKind.JSDocTypeTag]: (data, cbNode, cbNodes) => visitNode(cbNode, data.tagName) ||\n visitNode(cbNode, data.typeExpression) ||\n visitNodes(cbNode, cbNodes, data.comment),\n [SyntaxKind.JSDocUnknownTag]: (data, cbNode, cbNodes) => visitNode(cbNode, data.tagName) ||\n visitNodes(cbNode, cbNodes, data.comment),\n [SyntaxKind.JSDocTemplateTag]: (data, cbNode, cbNodes) => visitNode(cbNode, data.tagName) ||\n visitNode(cbNode, data.constraint) ||\n visitNodes(cbNode, cbNodes, data.typeParameters) ||\n visitNodes(cbNode, cbNodes, data.comment),\n [SyntaxKind.JSDocReturnTag]: (data, cbNode, cbNodes) => visitNode(cbNode, data.tagName) ||\n visitNode(cbNode, data.typeExpression) ||\n visitNodes(cbNode, cbNodes, data.comment),\n [SyntaxKind.JSDocPublicTag]: (data, cbNode, cbNodes) => visitNode(cbNode, data.tagName) ||\n visitNodes(cbNode, cbNodes, data.comment),\n [SyntaxKind.JSDocPrivateTag]: (data, cbNode, cbNodes) => visitNode(cbNode, data.tagName) ||\n visitNodes(cbNode, cbNodes, data.comment),\n [SyntaxKind.JSDocProtectedTag]: (data, cbNode, cbNodes) => visitNode(cbNode, data.tagName) ||\n visitNodes(cbNode, cbNodes, data.comment),\n [SyntaxKind.JSDocReadonlyTag]: (data, cbNode, cbNodes) => visitNode(cbNode, data.tagName) ||\n visitNodes(cbNode, cbNodes, data.comment),\n [SyntaxKind.JSDocOverrideTag]: (data, cbNode, cbNodes) => visitNode(cbNode, data.tagName) ||\n visitNodes(cbNode, cbNodes, data.comment),\n [SyntaxKind.JSDocDeprecatedTag]: (data, cbNode, cbNodes) => visitNode(cbNode, data.tagName) ||\n visitNodes(cbNode, cbNodes, data.comment),\n [SyntaxKind.JSDocSeeTag]: (data, cbNode, cbNodes) => visitNode(cbNode, data.tagName) ||\n visitNode(cbNode, data.nameExpression) ||\n visitNodes(cbNode, cbNodes, data.comment),\n [SyntaxKind.JSDocImplementsTag]: (data, cbNode, cbNodes) => visitNode(cbNode, data.tagName) ||\n visitNode(cbNode, data.className) ||\n visitNodes(cbNode, cbNodes, data.comment),\n [SyntaxKind.JSDocAugmentsTag]: (data, cbNode, cbNodes) => visitNode(cbNode, data.tagName) ||\n visitNode(cbNode, data.className) ||\n visitNodes(cbNode, cbNodes, data.comment),\n [SyntaxKind.JSDocSatisfiesTag]: (data, cbNode, cbNodes) => visitNode(cbNode, data.tagName) ||\n visitNode(cbNode, data.typeExpression) ||\n visitNodes(cbNode, cbNodes, data.comment),\n [SyntaxKind.JSDocThrowsTag]: (data, cbNode, cbNodes) => visitNode(cbNode, data.tagName) ||\n visitNode(cbNode, data.typeExpression) ||\n visitNodes(cbNode, cbNodes, data.comment),\n [SyntaxKind.JSDocThisTag]: (data, cbNode, cbNodes) => visitNode(cbNode, data.tagName) ||\n visitNode(cbNode, data.typeExpression) ||\n visitNodes(cbNode, cbNodes, data.comment),\n [SyntaxKind.JSDocImportTag]: (data, cbNode, cbNodes) => visitNode(cbNode, data.tagName) ||\n visitNode(cbNode, data.importClause) ||\n visitNode(cbNode, data.moduleSpecifier) ||\n visitNode(cbNode, data.attributes) ||\n visitNodes(cbNode, cbNodes, data.comment),\n [SyntaxKind.JSDocCallbackTag]: (data, cbNode, cbNodes) => visitNode(cbNode, data.tagName) ||\n visitNode(cbNode, data.typeExpression) ||\n visitNode(cbNode, data.name) ||\n visitNodes(cbNode, cbNodes, data.comment),\n [SyntaxKind.JSDocOverloadTag]: (data, cbNode, cbNodes) => visitNode(cbNode, data.tagName) ||\n visitNode(cbNode, data.typeExpression) ||\n visitNodes(cbNode, cbNodes, data.comment),\n [SyntaxKind.JSDocTypedefTag]: (data, cbNode, cbNodes) => visitNode(cbNode, data.tagName) ||\n visitNode(cbNode, data.typeExpression) ||\n visitNode(cbNode, data.name) ||\n visitNodes(cbNode, cbNodes, data.comment),\n [SyntaxKind.JSDocSignature]: (data, cbNode, cbNodes) => visitNodes(cbNode, cbNodes, data.typeParameters) ||\n visitNodes(cbNode, cbNodes, data.parameters) ||\n visitNode(cbNode, data.type),\n [SyntaxKind.JSDocNameReference]: (data, cbNode, cbNodes) => visitNode(cbNode, data.name),\n [SyntaxKind.ModuleDeclaration]: (data, cbNode, cbNodes) => visitNodes(cbNode, cbNodes, data.modifiers) ||\n visitNode(cbNode, data.name) ||\n visitNode(cbNode, data.body),\n [SyntaxKind.ImportEqualsDeclaration]: (data, cbNode, cbNodes) => visitNodes(cbNode, cbNodes, data.modifiers) ||\n visitNode(cbNode, data.name) ||\n visitNode(cbNode, data.moduleReference),\n [SyntaxKind.ExportDeclaration]: (data, cbNode, cbNodes) => visitNodes(cbNode, cbNodes, data.modifiers) ||\n visitNode(cbNode, data.exportClause) ||\n visitNode(cbNode, data.moduleSpecifier) ||\n visitNode(cbNode, data.attributes),\n [SyntaxKind.ImportType]: (data, cbNode, cbNodes) => visitNode(cbNode, data.argument) ||\n visitNode(cbNode, data.attributes) ||\n visitNode(cbNode, data.qualifier) ||\n visitNodes(cbNode, cbNodes, data.typeArguments),\n [SyntaxKind.ImportClause]: (data, cbNode, cbNodes) => visitNode(cbNode, data.name) ||\n visitNode(cbNode, data.namedBindings),\n [SyntaxKind.ImportSpecifier]: (data, cbNode, cbNodes) => visitNode(cbNode, data.propertyName) ||\n visitNode(cbNode, data.name),\n [SyntaxKind.JSDocLink]: (data, cbNode, cbNodes) => visitNode(cbNode, data.name),\n [SyntaxKind.JSDocLinkPlain]: (data, cbNode, cbNodes) => visitNode(cbNode, data.name),\n [SyntaxKind.JSDocLinkCode]: (data, cbNode, cbNodes) => visitNode(cbNode, data.name),\n [SyntaxKind.TypeParameter]: (data, cbNode, cbNodes) => visitNodes(cbNode, cbNodes, data.modifiers) ||\n visitNode(cbNode, data.name) ||\n visitNode(cbNode, data.constraint) ||\n visitNode(cbNode, data.expression) ||\n visitNode(cbNode, data.defaultType),\n [SyntaxKind.SyntheticReferenceExpression]: (data, cbNode, cbNodes) => visitNode(cbNode, data.expression) ||\n visitNode(cbNode, data.thisArg),\n [SyntaxKind.JSDocTypeLiteral]: (data, cbNode, cbNodes) => visitNodes(cbNode, cbNodes, data.jsdocPropertyTags),\n [SyntaxKind.ForInStatement]: (data, cbNode, cbNodes) => visitNode(cbNode, data.awaitModifier) ||\n visitNode(cbNode, data.initializer) ||\n visitNode(cbNode, data.expression) ||\n visitNode(cbNode, data.statement),\n [SyntaxKind.ForOfStatement]: (data, cbNode, cbNodes) => visitNode(cbNode, data.awaitModifier) ||\n visitNode(cbNode, data.initializer) ||\n visitNode(cbNode, data.expression) ||\n visitNode(cbNode, data.statement),\n [SyntaxKind.CaseClause]: (data, cbNode, cbNodes) => visitNode(cbNode, data.expression) ||\n visitNodes(cbNode, cbNodes, data.statements),\n [SyntaxKind.DefaultClause]: (data, cbNode, cbNodes) => visitNode(cbNode, data.expression) ||\n visitNodes(cbNode, cbNodes, data.statements),\n [SyntaxKind.ObjectBindingPattern]: (data, cbNode, cbNodes) => visitNodes(cbNode, cbNodes, data.elements),\n [SyntaxKind.ArrayBindingPattern]: (data, cbNode, cbNodes) => visitNodes(cbNode, cbNodes, data.elements),\n [SyntaxKind.JSDocParameterTag]: forEachChildOfJSDocParameterTag,\n [SyntaxKind.JSDocPropertyTag]: forEachChildOfJSDocPropertyTag,\n [SyntaxKind.SourceFile]: (data, cbNode, cbNodes) => visitNodes(cbNode, cbNodes, data.statements) ||\n visitNode(cbNode, data.endOfFileToken),\n};\nfunction visitNode(cbNode, node) {\n return node ? cbNode(node) : undefined;\n}\nfunction visitNodes(cbNode, cbNodes, nodes) {\n if (!nodes)\n return undefined;\n if (cbNodes)\n return cbNodes(nodes);\n for (const node of nodes) {\n const result = cbNode(node);\n if (result)\n return result;\n }\n return undefined;\n}\nexport function createToken(kind) {\n return new NodeObject(kind, undefined);\n}\nexport function createIdentifier(text) {\n return new NodeObject(SyntaxKind.Identifier, {\n text,\n });\n}\nexport function createPrivateIdentifier(text) {\n return new NodeObject(SyntaxKind.PrivateIdentifier, {\n text,\n });\n}\nexport function createQualifiedName(left, right) {\n return new NodeObject(SyntaxKind.QualifiedName, {\n left,\n right,\n });\n}\nexport function createComputedPropertyName(expression) {\n return new NodeObject(SyntaxKind.ComputedPropertyName, {\n expression,\n });\n}\nexport function createDecorator(expression) {\n return new NodeObject(SyntaxKind.Decorator, {\n expression,\n });\n}\nexport function createEmptyStatement() {\n return new NodeObject(SyntaxKind.EmptyStatement, undefined);\n}\nexport function createIfStatement(expression, thenStatement, elseStatement) {\n return new NodeObject(SyntaxKind.IfStatement, {\n expression,\n thenStatement,\n elseStatement,\n });\n}\nexport function createDoStatement(statement, expression) {\n return new NodeObject(SyntaxKind.DoStatement, {\n statement,\n expression,\n });\n}\nexport function createWhileStatement(expression, statement) {\n return new NodeObject(SyntaxKind.WhileStatement, {\n expression,\n statement,\n });\n}\nexport function createForStatement(initializer, condition, incrementor, statement) {\n return new NodeObject(SyntaxKind.ForStatement, {\n initializer,\n condition,\n incrementor,\n statement,\n });\n}\nexport function createBreakStatement(label) {\n return new NodeObject(SyntaxKind.BreakStatement, {\n label,\n });\n}\nexport function createContinueStatement(label) {\n return new NodeObject(SyntaxKind.ContinueStatement, {\n label,\n });\n}\nexport function createReturnStatement(expression) {\n return new NodeObject(SyntaxKind.ReturnStatement, {\n expression,\n });\n}\nexport function createWithStatement(expression, statement) {\n return new NodeObject(SyntaxKind.WithStatement, {\n expression,\n statement,\n });\n}\nexport function createSwitchStatement(expression, caseBlock) {\n return new NodeObject(SyntaxKind.SwitchStatement, {\n expression,\n caseBlock,\n });\n}\nexport function createCaseBlock(clauses) {\n return new NodeObject(SyntaxKind.CaseBlock, {\n clauses: createNodeArray(clauses),\n });\n}\nexport function createThrowStatement(expression) {\n return new NodeObject(SyntaxKind.ThrowStatement, {\n expression,\n });\n}\nexport function createTryStatement(tryBlock, catchClause, finallyBlock) {\n return new NodeObject(SyntaxKind.TryStatement, {\n tryBlock,\n catchClause,\n finallyBlock,\n });\n}\nexport function createCatchClause(variableDeclaration, block) {\n return new NodeObject(SyntaxKind.CatchClause, {\n variableDeclaration,\n block,\n });\n}\nexport function createDebuggerStatement() {\n return new NodeObject(SyntaxKind.DebuggerStatement, undefined);\n}\nexport function createLabeledStatement(label, statement) {\n return new NodeObject(SyntaxKind.LabeledStatement, {\n label,\n statement,\n });\n}\nexport function createExpressionStatement(expression) {\n return new NodeObject(SyntaxKind.ExpressionStatement, {\n expression,\n });\n}\nexport function createBlock(statements, multiLine) {\n return new NodeObject(SyntaxKind.Block, {\n statements: createNodeArray(statements),\n multiLine,\n });\n}\nexport function createVariableStatement(modifiers, declarationList) {\n return new NodeObject(SyntaxKind.VariableStatement, {\n modifiers: modifiers ? createNodeArray(modifiers) : undefined,\n declarationList,\n });\n}\nexport function createVariableDeclaration(name, exclamationToken, type, initializer) {\n return new NodeObject(SyntaxKind.VariableDeclaration, {\n name,\n exclamationToken,\n type,\n initializer,\n });\n}\nexport function createVariableDeclarationList(declarations, flags) {\n const node = new NodeObject(SyntaxKind.VariableDeclarationList, {\n declarations: createNodeArray(declarations),\n });\n node.flags = flags;\n return node;\n}\nexport function createParameterDeclaration(modifiers, dotDotDotToken, name, questionToken, type, initializer) {\n return new NodeObject(SyntaxKind.Parameter, {\n modifiers: modifiers ? createNodeArray(modifiers) : undefined,\n dotDotDotToken,\n name,\n questionToken,\n type,\n initializer,\n });\n}\nexport function createBindingElement(dotDotDotToken, propertyName, name, initializer) {\n return new NodeObject(SyntaxKind.BindingElement, {\n dotDotDotToken,\n propertyName,\n name,\n initializer,\n });\n}\nexport function createMissingDeclaration(modifiers) {\n return new NodeObject(SyntaxKind.MissingDeclaration, {\n modifiers: modifiers ? createNodeArray(modifiers) : undefined,\n });\n}\nexport function createFunctionDeclaration(modifiers, asteriskToken, name, typeParameters, parameters, type, body) {\n return new NodeObject(SyntaxKind.FunctionDeclaration, {\n modifiers: modifiers ? createNodeArray(modifiers) : undefined,\n asteriskToken,\n name,\n typeParameters: typeParameters ? createNodeArray(typeParameters) : undefined,\n parameters: createNodeArray(parameters),\n type,\n body,\n });\n}\nexport function createClassDeclaration(modifiers, name, typeParameters, heritageClauses, members) {\n return new NodeObject(SyntaxKind.ClassDeclaration, {\n modifiers: modifiers ? createNodeArray(modifiers) : undefined,\n name,\n typeParameters: typeParameters ? createNodeArray(typeParameters) : undefined,\n heritageClauses: heritageClauses ? createNodeArray(heritageClauses) : undefined,\n members: createNodeArray(members),\n });\n}\nexport function createClassExpression(modifiers, name, typeParameters, heritageClauses, members) {\n return new NodeObject(SyntaxKind.ClassExpression, {\n modifiers: modifiers ? createNodeArray(modifiers) : undefined,\n name,\n typeParameters: typeParameters ? createNodeArray(typeParameters) : undefined,\n heritageClauses: heritageClauses ? createNodeArray(heritageClauses) : undefined,\n members: createNodeArray(members),\n });\n}\nexport function createHeritageClause(token, types) {\n return new NodeObject(SyntaxKind.HeritageClause, {\n token,\n types: createNodeArray(types),\n });\n}\nexport function createInterfaceDeclaration(modifiers, name, typeParameters, heritageClauses, members) {\n return new NodeObject(SyntaxKind.InterfaceDeclaration, {\n modifiers: modifiers ? createNodeArray(modifiers) : undefined,\n name,\n typeParameters: typeParameters ? createNodeArray(typeParameters) : undefined,\n heritageClauses: heritageClauses ? createNodeArray(heritageClauses) : undefined,\n members: createNodeArray(members),\n });\n}\nexport function createTypeAliasDeclaration(modifiers, name, typeParameters, type) {\n return new NodeObject(SyntaxKind.TypeAliasDeclaration, {\n modifiers: modifiers ? createNodeArray(modifiers) : undefined,\n name,\n typeParameters: typeParameters ? createNodeArray(typeParameters) : undefined,\n type,\n });\n}\nexport function createEnumMember(name, initializer) {\n return new NodeObject(SyntaxKind.EnumMember, {\n name,\n initializer,\n });\n}\nexport function createEnumDeclaration(modifiers, name, members) {\n return new NodeObject(SyntaxKind.EnumDeclaration, {\n modifiers: modifiers ? createNodeArray(modifiers) : undefined,\n name,\n members: createNodeArray(members),\n });\n}\nexport function createModuleBlock(statements) {\n return new NodeObject(SyntaxKind.ModuleBlock, {\n statements: createNodeArray(statements),\n });\n}\nexport function createNotEmittedStatement() {\n return new NodeObject(SyntaxKind.NotEmittedStatement, undefined);\n}\nexport function createNotEmittedTypeElement() {\n return new NodeObject(SyntaxKind.NotEmittedTypeElement, undefined);\n}\nexport function createImportDeclaration(modifiers, importClause, moduleSpecifier, attributes) {\n return new NodeObject(SyntaxKind.ImportDeclaration, {\n modifiers: modifiers ? createNodeArray(modifiers) : undefined,\n importClause,\n moduleSpecifier,\n attributes,\n });\n}\nexport function createExternalModuleReference(expression) {\n return new NodeObject(SyntaxKind.ExternalModuleReference, {\n expression,\n });\n}\nexport function createNamespaceImport(name) {\n return new NodeObject(SyntaxKind.NamespaceImport, {\n name,\n });\n}\nexport function createNamedImports(elements) {\n return new NodeObject(SyntaxKind.NamedImports, {\n elements: createNodeArray(elements),\n });\n}\nexport function createExportAssignment(modifiers, isExportEquals = false, type, expression) {\n return new NodeObject(SyntaxKind.ExportAssignment, {\n modifiers: modifiers ? createNodeArray(modifiers) : undefined,\n isExportEquals,\n type,\n expression,\n });\n}\nexport function createNamespaceExportDeclaration(modifiers, name) {\n return new NodeObject(SyntaxKind.NamespaceExportDeclaration, {\n modifiers: modifiers ? createNodeArray(modifiers) : undefined,\n name,\n });\n}\nexport function createNamespaceExport(name) {\n return new NodeObject(SyntaxKind.NamespaceExport, {\n name,\n });\n}\nexport function createNamedExports(elements) {\n return new NodeObject(SyntaxKind.NamedExports, {\n elements: createNodeArray(elements),\n });\n}\nexport function createExportSpecifier(isTypeOnly = false, propertyName, name) {\n return new NodeObject(SyntaxKind.ExportSpecifier, {\n isTypeOnly,\n propertyName,\n name,\n });\n}\nexport function createCallSignatureDeclaration(typeParameters, parameters, type) {\n return new NodeObject(SyntaxKind.CallSignature, {\n typeParameters: typeParameters ? createNodeArray(typeParameters) : undefined,\n parameters: createNodeArray(parameters),\n type,\n });\n}\nexport function createConstructSignatureDeclaration(typeParameters, parameters, type) {\n return new NodeObject(SyntaxKind.ConstructSignature, {\n typeParameters: typeParameters ? createNodeArray(typeParameters) : undefined,\n parameters: createNodeArray(parameters),\n type,\n });\n}\nexport function createConstructorDeclaration(modifiers, typeParameters, parameters, type, body) {\n return new NodeObject(SyntaxKind.Constructor, {\n modifiers: modifiers ? createNodeArray(modifiers) : undefined,\n typeParameters: typeParameters ? createNodeArray(typeParameters) : undefined,\n parameters: createNodeArray(parameters),\n type,\n body,\n });\n}\nexport function createGetAccessorDeclaration(modifiers, name, typeParameters, parameters, type, body) {\n return new NodeObject(SyntaxKind.GetAccessor, {\n modifiers: modifiers ? createNodeArray(modifiers) : undefined,\n name,\n typeParameters: typeParameters ? createNodeArray(typeParameters) : undefined,\n parameters: createNodeArray(parameters),\n type,\n body,\n });\n}\nexport function createSetAccessorDeclaration(modifiers, name, typeParameters, parameters, type, body) {\n return new NodeObject(SyntaxKind.SetAccessor, {\n modifiers: modifiers ? createNodeArray(modifiers) : undefined,\n name,\n typeParameters: typeParameters ? createNodeArray(typeParameters) : undefined,\n parameters: createNodeArray(parameters),\n type,\n body,\n });\n}\nexport function createIndexSignatureDeclaration(modifiers, parameters, type) {\n return new NodeObject(SyntaxKind.IndexSignature, {\n modifiers: modifiers ? createNodeArray(modifiers) : undefined,\n parameters: createNodeArray(parameters),\n type,\n });\n}\nexport function createMethodSignatureDeclaration(modifiers, name, postfixToken, typeParameters, parameters, type) {\n return new NodeObject(SyntaxKind.MethodSignature, {\n modifiers: modifiers ? createNodeArray(modifiers) : undefined,\n name,\n postfixToken,\n typeParameters: typeParameters ? createNodeArray(typeParameters) : undefined,\n parameters: createNodeArray(parameters),\n type,\n });\n}\nexport function createMethodDeclaration(modifiers, asteriskToken, name, postfixToken, typeParameters, parameters, type, body) {\n return new NodeObject(SyntaxKind.MethodDeclaration, {\n modifiers: modifiers ? createNodeArray(modifiers) : undefined,\n asteriskToken,\n name,\n postfixToken,\n typeParameters: typeParameters ? createNodeArray(typeParameters) : undefined,\n parameters: createNodeArray(parameters),\n type,\n body,\n });\n}\nexport function createPropertySignatureDeclaration(modifiers, name, postfixToken, type, initializer) {\n return new NodeObject(SyntaxKind.PropertySignature, {\n modifiers: modifiers ? createNodeArray(modifiers) : undefined,\n name,\n postfixToken,\n type,\n initializer,\n });\n}\nexport function createPropertyDeclaration(modifiers, name, postfixToken, type, initializer) {\n return new NodeObject(SyntaxKind.PropertyDeclaration, {\n modifiers: modifiers ? createNodeArray(modifiers) : undefined,\n name,\n postfixToken,\n type,\n initializer,\n });\n}\nexport function createSemicolonClassElement() {\n return new NodeObject(SyntaxKind.SemicolonClassElement, undefined);\n}\nexport function createClassStaticBlockDeclaration(modifiers, body) {\n return new NodeObject(SyntaxKind.ClassStaticBlockDeclaration, {\n modifiers: modifiers ? createNodeArray(modifiers) : undefined,\n body,\n });\n}\nexport function createOmittedExpression() {\n return new NodeObject(SyntaxKind.OmittedExpression, undefined);\n}\nexport function createKeywordExpression(kind) {\n return new NodeObject(kind, undefined);\n}\nexport function createStringLiteral(text, tokenFlags) {\n return new NodeObject(SyntaxKind.StringLiteral, {\n text,\n tokenFlags,\n });\n}\nexport function createNumericLiteral(text, tokenFlags) {\n return new NodeObject(SyntaxKind.NumericLiteral, {\n text,\n tokenFlags,\n });\n}\nexport function createBigIntLiteral(text, tokenFlags) {\n return new NodeObject(SyntaxKind.BigIntLiteral, {\n text,\n tokenFlags,\n });\n}\nexport function createRegularExpressionLiteral(text, tokenFlags) {\n return new NodeObject(SyntaxKind.RegularExpressionLiteral, {\n text,\n tokenFlags,\n });\n}\nexport function createNoSubstitutionTemplateLiteral(text, templateFlags) {\n return new NodeObject(SyntaxKind.NoSubstitutionTemplateLiteral, {\n text,\n templateFlags,\n });\n}\nexport function createBinaryExpression(modifiers, left, type, operatorToken, right) {\n return new NodeObject(SyntaxKind.BinaryExpression, {\n modifiers: modifiers ? createNodeArray(modifiers) : undefined,\n left,\n type,\n operatorToken,\n right,\n });\n}\nexport function createPrefixUnaryExpression(operator, operand) {\n return new NodeObject(SyntaxKind.PrefixUnaryExpression, {\n operator,\n operand,\n });\n}\nexport function createPostfixUnaryExpression(operand, operator) {\n return new NodeObject(SyntaxKind.PostfixUnaryExpression, {\n operand,\n operator,\n });\n}\nexport function createYieldExpression(asteriskToken, expression) {\n return new NodeObject(SyntaxKind.YieldExpression, {\n asteriskToken,\n expression,\n });\n}\nexport function createArrowFunction(modifiers, typeParameters, parameters, type, equalsGreaterThanToken, body) {\n return new NodeObject(SyntaxKind.ArrowFunction, {\n modifiers: modifiers ? createNodeArray(modifiers) : undefined,\n typeParameters: typeParameters ? createNodeArray(typeParameters) : undefined,\n parameters: createNodeArray(parameters),\n type,\n equalsGreaterThanToken,\n body,\n });\n}\nexport function createFunctionExpression(modifiers, asteriskToken, name, typeParameters, parameters, type, body) {\n return new NodeObject(SyntaxKind.FunctionExpression, {\n modifiers: modifiers ? createNodeArray(modifiers) : undefined,\n asteriskToken,\n name,\n typeParameters: typeParameters ? createNodeArray(typeParameters) : undefined,\n parameters: createNodeArray(parameters),\n type,\n body,\n });\n}\nexport function createAsExpression(expression, type) {\n return new NodeObject(SyntaxKind.AsExpression, {\n expression,\n type,\n });\n}\nexport function createSatisfiesExpression(expression, type) {\n return new NodeObject(SyntaxKind.SatisfiesExpression, {\n expression,\n type,\n });\n}\nexport function createConditionalExpression(condition, questionToken, whenTrue, colonToken, whenFalse) {\n return new NodeObject(SyntaxKind.ConditionalExpression, {\n condition,\n questionToken,\n whenTrue,\n colonToken,\n whenFalse,\n });\n}\nexport function createPropertyAccessExpression(expression, questionDotToken, name, flags) {\n const node = new NodeObject(SyntaxKind.PropertyAccessExpression, {\n expression,\n questionDotToken,\n name,\n });\n node.flags = flags;\n return node;\n}\nexport function createElementAccessExpression(expression, questionDotToken, argumentExpression, flags) {\n const node = new NodeObject(SyntaxKind.ElementAccessExpression, {\n expression,\n questionDotToken,\n argumentExpression,\n });\n node.flags = flags;\n return node;\n}\nexport function createCallExpression(expression, questionDotToken, typeArguments, arguments_, flags) {\n const node = new NodeObject(SyntaxKind.CallExpression, {\n expression,\n questionDotToken,\n typeArguments: typeArguments ? createNodeArray(typeArguments) : undefined,\n arguments: createNodeArray(arguments_),\n });\n node.flags = flags;\n return node;\n}\nexport function createNewExpression(expression, typeArguments, arguments_) {\n return new NodeObject(SyntaxKind.NewExpression, {\n expression,\n typeArguments: typeArguments ? createNodeArray(typeArguments) : undefined,\n arguments: arguments_ ? createNodeArray(arguments_) : undefined,\n });\n}\nexport function createMetaProperty(keywordToken, name) {\n return new NodeObject(SyntaxKind.MetaProperty, {\n keywordToken,\n name,\n });\n}\nexport function createNonNullExpression(expression, flags) {\n const node = new NodeObject(SyntaxKind.NonNullExpression, {\n expression,\n });\n node.flags = flags;\n return node;\n}\nexport function createSpreadElement(expression) {\n return new NodeObject(SyntaxKind.SpreadElement, {\n expression,\n });\n}\nexport function createTemplateExpression(head, templateSpans) {\n return new NodeObject(SyntaxKind.TemplateExpression, {\n head,\n templateSpans: createNodeArray(templateSpans),\n });\n}\nexport function createTemplateSpan(expression, literal) {\n return new NodeObject(SyntaxKind.TemplateSpan, {\n expression,\n literal,\n });\n}\nexport function createTaggedTemplateExpression(tag, questionDotToken, typeArguments, template, flags) {\n const node = new NodeObject(SyntaxKind.TaggedTemplateExpression, {\n tag,\n questionDotToken,\n typeArguments: typeArguments ? createNodeArray(typeArguments) : undefined,\n template,\n });\n node.flags = flags;\n return node;\n}\nexport function createParenthesizedExpression(expression) {\n return new NodeObject(SyntaxKind.ParenthesizedExpression, {\n expression,\n });\n}\nexport function createArrayLiteralExpression(elements, multiLine) {\n return new NodeObject(SyntaxKind.ArrayLiteralExpression, {\n elements: createNodeArray(elements),\n multiLine,\n });\n}\nexport function createObjectLiteralExpression(properties, multiLine) {\n return new NodeObject(SyntaxKind.ObjectLiteralExpression, {\n properties: createNodeArray(properties),\n multiLine,\n });\n}\nexport function createSpreadAssignment(expression) {\n return new NodeObject(SyntaxKind.SpreadAssignment, {\n expression,\n });\n}\nexport function createPropertyAssignment(modifiers, name, postfixToken, type, initializer) {\n return new NodeObject(SyntaxKind.PropertyAssignment, {\n modifiers: modifiers ? createNodeArray(modifiers) : undefined,\n name,\n postfixToken,\n type,\n initializer,\n });\n}\nexport function createShorthandPropertyAssignment(modifiers, name, postfixToken, type, equalsToken, objectAssignmentInitializer) {\n return new NodeObject(SyntaxKind.ShorthandPropertyAssignment, {\n modifiers: modifiers ? createNodeArray(modifiers) : undefined,\n name,\n postfixToken,\n type,\n equalsToken,\n objectAssignmentInitializer,\n });\n}\nexport function createDeleteExpression(expression) {\n return new NodeObject(SyntaxKind.DeleteExpression, {\n expression,\n });\n}\nexport function createTypeOfExpression(expression) {\n return new NodeObject(SyntaxKind.TypeOfExpression, {\n expression,\n });\n}\nexport function createVoidExpression(expression) {\n return new NodeObject(SyntaxKind.VoidExpression, {\n expression,\n });\n}\nexport function createAwaitExpression(expression) {\n return new NodeObject(SyntaxKind.AwaitExpression, {\n expression,\n });\n}\nexport function createTypeAssertion(type, expression) {\n return new NodeObject(SyntaxKind.TypeAssertionExpression, {\n type,\n expression,\n });\n}\nexport function createKeywordTypeNode(kind) {\n return new NodeObject(kind, undefined);\n}\nexport function createUnionTypeNode(types) {\n return new NodeObject(SyntaxKind.UnionType, {\n types: createNodeArray(types),\n });\n}\nexport function createIntersectionTypeNode(types) {\n return new NodeObject(SyntaxKind.IntersectionType, {\n types: createNodeArray(types),\n });\n}\nexport function createConditionalTypeNode(checkType, extendsType, trueType, falseType) {\n return new NodeObject(SyntaxKind.ConditionalType, {\n checkType,\n extendsType,\n trueType,\n falseType,\n });\n}\nexport function createTypeOperatorNode(operator, type) {\n return new NodeObject(SyntaxKind.TypeOperator, {\n operator,\n type,\n });\n}\nexport function createInferTypeNode(typeParameter) {\n return new NodeObject(SyntaxKind.InferType, {\n typeParameter,\n });\n}\nexport function createArrayTypeNode(elementType) {\n return new NodeObject(SyntaxKind.ArrayType, {\n elementType,\n });\n}\nexport function createIndexedAccessTypeNode(objectType, indexType) {\n return new NodeObject(SyntaxKind.IndexedAccessType, {\n objectType,\n indexType,\n });\n}\nexport function createTypeReferenceNode(typeName, typeArguments) {\n return new NodeObject(SyntaxKind.TypeReference, {\n typeName,\n typeArguments: typeArguments ? createNodeArray(typeArguments) : undefined,\n });\n}\nexport function createExpressionWithTypeArguments(expression, typeArguments) {\n return new NodeObject(SyntaxKind.ExpressionWithTypeArguments, {\n expression,\n typeArguments: typeArguments ? createNodeArray(typeArguments) : undefined,\n });\n}\nexport function createLiteralTypeNode(literal) {\n return new NodeObject(SyntaxKind.LiteralType, {\n literal,\n });\n}\nexport function createThisTypeNode() {\n return new NodeObject(SyntaxKind.ThisType, undefined);\n}\nexport function createTypePredicateNode(assertsModifier, parameterName, type) {\n return new NodeObject(SyntaxKind.TypePredicate, {\n assertsModifier,\n parameterName,\n type,\n });\n}\nexport function createImportAttribute(name, value) {\n return new NodeObject(SyntaxKind.ImportAttribute, {\n name,\n value,\n });\n}\nexport function createImportAttributes(token, attributes, multiLine) {\n return new NodeObject(SyntaxKind.ImportAttributes, {\n token,\n attributes: createNodeArray(attributes),\n multiLine,\n });\n}\nexport function createTypeQueryNode(exprName, typeArguments) {\n return new NodeObject(SyntaxKind.TypeQuery, {\n exprName,\n typeArguments: typeArguments ? createNodeArray(typeArguments) : undefined,\n });\n}\nexport function createMappedTypeNode(readonlyToken, typeParameter, nameType, questionToken, type, members) {\n return new NodeObject(SyntaxKind.MappedType, {\n readonlyToken,\n typeParameter,\n nameType,\n questionToken,\n type,\n members: members ? createNodeArray(members) : undefined,\n });\n}\nexport function createTypeLiteralNode(members) {\n return new NodeObject(SyntaxKind.TypeLiteral, {\n members: createNodeArray(members),\n });\n}\nexport function createTupleTypeNode(elements) {\n return new NodeObject(SyntaxKind.TupleType, {\n elements: createNodeArray(elements),\n });\n}\nexport function createNamedTupleMember(dotDotDotToken, name, questionToken, type) {\n return new NodeObject(SyntaxKind.NamedTupleMember, {\n dotDotDotToken,\n name,\n questionToken,\n type,\n });\n}\nexport function createOptionalTypeNode(type) {\n return new NodeObject(SyntaxKind.OptionalType, {\n type,\n });\n}\nexport function createRestTypeNode(type) {\n return new NodeObject(SyntaxKind.RestType, {\n type,\n });\n}\nexport function createParenthesizedTypeNode(type) {\n return new NodeObject(SyntaxKind.ParenthesizedType, {\n type,\n });\n}\nexport function createFunctionTypeNode(typeParameters, parameters, type) {\n return new NodeObject(SyntaxKind.FunctionType, {\n typeParameters: typeParameters ? createNodeArray(typeParameters) : undefined,\n parameters: createNodeArray(parameters),\n type,\n });\n}\nexport function createConstructorTypeNode(modifiers, typeParameters, parameters, type) {\n return new NodeObject(SyntaxKind.ConstructorType, {\n modifiers: modifiers ? createNodeArray(modifiers) : undefined,\n typeParameters: typeParameters ? createNodeArray(typeParameters) : undefined,\n parameters: createNodeArray(parameters),\n type,\n });\n}\nexport function createTemplateHead(text, rawText, templateFlags) {\n return new NodeObject(SyntaxKind.TemplateHead, {\n text,\n rawText,\n templateFlags,\n });\n}\nexport function createTemplateMiddle(text, rawText, templateFlags) {\n return new NodeObject(SyntaxKind.TemplateMiddle, {\n text,\n rawText,\n templateFlags,\n });\n}\nexport function createTemplateTail(text, rawText, templateFlags) {\n return new NodeObject(SyntaxKind.TemplateTail, {\n text,\n rawText,\n templateFlags,\n });\n}\nexport function createTemplateLiteralTypeNode(head, templateSpans) {\n return new NodeObject(SyntaxKind.TemplateLiteralType, {\n head,\n templateSpans: createNodeArray(templateSpans),\n });\n}\nexport function createTemplateLiteralTypeSpan(type, literal) {\n return new NodeObject(SyntaxKind.TemplateLiteralTypeSpan, {\n type,\n literal,\n });\n}\nexport function createSyntheticExpression(type, isSpread, tupleNameSource) {\n return new NodeObject(SyntaxKind.SyntheticExpression, {\n type,\n isSpread,\n tupleNameSource,\n });\n}\nexport function createPartiallyEmittedExpression(expression) {\n return new NodeObject(SyntaxKind.PartiallyEmittedExpression, {\n expression,\n });\n}\nexport function createJsxElement(openingElement, children, closingElement) {\n return new NodeObject(SyntaxKind.JsxElement, {\n openingElement,\n children: createNodeArray(children),\n closingElement,\n });\n}\nexport function createJsxAttributes(properties) {\n return new NodeObject(SyntaxKind.JsxAttributes, {\n properties: createNodeArray(properties),\n });\n}\nexport function createJsxNamespacedName(namespace, name) {\n return new NodeObject(SyntaxKind.JsxNamespacedName, {\n namespace,\n name,\n });\n}\nexport function createJsxOpeningElement(tagName, typeArguments, attributes) {\n return new NodeObject(SyntaxKind.JsxOpeningElement, {\n tagName,\n typeArguments: typeArguments ? createNodeArray(typeArguments) : undefined,\n attributes,\n });\n}\nexport function createJsxSelfClosingElement(tagName, typeArguments, attributes) {\n return new NodeObject(SyntaxKind.JsxSelfClosingElement, {\n tagName,\n typeArguments: typeArguments ? createNodeArray(typeArguments) : undefined,\n attributes,\n });\n}\nexport function createJsxFragment(openingFragment, children, closingFragment) {\n return new NodeObject(SyntaxKind.JsxFragment, {\n openingFragment,\n children: createNodeArray(children),\n closingFragment,\n });\n}\nexport function createJsxOpeningFragment() {\n return new NodeObject(SyntaxKind.JsxOpeningFragment, undefined);\n}\nexport function createJsxClosingFragment() {\n return new NodeObject(SyntaxKind.JsxClosingFragment, undefined);\n}\nexport function createJsxAttribute(name, initializer) {\n return new NodeObject(SyntaxKind.JsxAttribute, {\n name,\n initializer,\n });\n}\nexport function createJsxSpreadAttribute(expression) {\n return new NodeObject(SyntaxKind.JsxSpreadAttribute, {\n expression,\n });\n}\nexport function createJsxClosingElement(tagName) {\n return new NodeObject(SyntaxKind.JsxClosingElement, {\n tagName,\n });\n}\nexport function createJsxExpression(dotDotDotToken, expression) {\n return new NodeObject(SyntaxKind.JsxExpression, {\n dotDotDotToken,\n expression,\n });\n}\nexport function createJsxText(text, containsOnlyTriviaWhiteSpaces) {\n return new NodeObject(SyntaxKind.JsxText, {\n text,\n containsOnlyTriviaWhiteSpaces,\n });\n}\nexport function createSyntaxList(children) {\n return new NodeObject(SyntaxKind.SyntaxList, {\n children,\n });\n}\nexport function createJSDoc(comment, tags) {\n return new NodeObject(SyntaxKind.JSDoc, {\n comment: createNodeArray(comment),\n tags: tags ? createNodeArray(tags) : undefined,\n });\n}\nexport function createJSDocTypeExpression(type) {\n return new NodeObject(SyntaxKind.JSDocTypeExpression, {\n type,\n });\n}\nexport function createJSDocNonNullableType(type) {\n return new NodeObject(SyntaxKind.JSDocNonNullableType, {\n type,\n });\n}\nexport function createJSDocNullableType(type) {\n return new NodeObject(SyntaxKind.JSDocNullableType, {\n type,\n });\n}\nexport function createJSDocAllType() {\n return new NodeObject(SyntaxKind.JSDocAllType, undefined);\n}\nexport function createJSDocVariadicType(type) {\n return new NodeObject(SyntaxKind.JSDocVariadicType, {\n type,\n });\n}\nexport function createJSDocOptionalType(type) {\n return new NodeObject(SyntaxKind.JSDocOptionalType, {\n type,\n });\n}\nexport function createJSDocTypeTag(tagName, typeExpression, comment) {\n return new NodeObject(SyntaxKind.JSDocTypeTag, {\n tagName,\n typeExpression,\n comment: comment ? createNodeArray(comment) : undefined,\n });\n}\nexport function createJSDocUnknownTag(tagName, comment) {\n return new NodeObject(SyntaxKind.JSDocUnknownTag, {\n tagName,\n comment: comment ? createNodeArray(comment) : undefined,\n });\n}\nexport function createJSDocTemplateTag(tagName, constraint, typeParameters, comment) {\n return new NodeObject(SyntaxKind.JSDocTemplateTag, {\n tagName,\n constraint,\n typeParameters: createNodeArray(typeParameters),\n comment: comment ? createNodeArray(comment) : undefined,\n });\n}\nexport function createJSDocReturnTag(tagName, typeExpression, comment) {\n return new NodeObject(SyntaxKind.JSDocReturnTag, {\n tagName,\n typeExpression,\n comment: comment ? createNodeArray(comment) : undefined,\n });\n}\nexport function createJSDocPublicTag(tagName, comment) {\n return new NodeObject(SyntaxKind.JSDocPublicTag, {\n tagName,\n comment: comment ? createNodeArray(comment) : undefined,\n });\n}\nexport function createJSDocPrivateTag(tagName, comment) {\n return new NodeObject(SyntaxKind.JSDocPrivateTag, {\n tagName,\n comment: comment ? createNodeArray(comment) : undefined,\n });\n}\nexport function createJSDocProtectedTag(tagName, comment) {\n return new NodeObject(SyntaxKind.JSDocProtectedTag, {\n tagName,\n comment: comment ? createNodeArray(comment) : undefined,\n });\n}\nexport function createJSDocReadonlyTag(tagName, comment) {\n return new NodeObject(SyntaxKind.JSDocReadonlyTag, {\n tagName,\n comment: comment ? createNodeArray(comment) : undefined,\n });\n}\nexport function createJSDocOverrideTag(tagName, comment) {\n return new NodeObject(SyntaxKind.JSDocOverrideTag, {\n tagName,\n comment: comment ? createNodeArray(comment) : undefined,\n });\n}\nexport function createJSDocDeprecatedTag(tagName, comment) {\n return new NodeObject(SyntaxKind.JSDocDeprecatedTag, {\n tagName,\n comment: comment ? createNodeArray(comment) : undefined,\n });\n}\nexport function createJSDocSeeTag(tagName, nameExpression, comment) {\n return new NodeObject(SyntaxKind.JSDocSeeTag, {\n tagName,\n nameExpression,\n comment: comment ? createNodeArray(comment) : undefined,\n });\n}\nexport function createJSDocImplementsTag(tagName, className, comment) {\n return new NodeObject(SyntaxKind.JSDocImplementsTag, {\n tagName,\n className,\n comment: comment ? createNodeArray(comment) : undefined,\n });\n}\nexport function createJSDocAugmentsTag(tagName, className, comment) {\n return new NodeObject(SyntaxKind.JSDocAugmentsTag, {\n tagName,\n className,\n comment: comment ? createNodeArray(comment) : undefined,\n });\n}\nexport function createJSDocSatisfiesTag(tagName, typeExpression, comment) {\n return new NodeObject(SyntaxKind.JSDocSatisfiesTag, {\n tagName,\n typeExpression,\n comment: comment ? createNodeArray(comment) : undefined,\n });\n}\nexport function createJSDocThrowsTag(tagName, typeExpression, comment) {\n return new NodeObject(SyntaxKind.JSDocThrowsTag, {\n tagName,\n typeExpression,\n comment: comment ? createNodeArray(comment) : undefined,\n });\n}\nexport function createJSDocThisTag(tagName, typeExpression, comment) {\n return new NodeObject(SyntaxKind.JSDocThisTag, {\n tagName,\n typeExpression,\n comment: comment ? createNodeArray(comment) : undefined,\n });\n}\nexport function createJSDocImportTag(tagName, importClause, moduleSpecifier, attributes, comment) {\n return new NodeObject(SyntaxKind.JSDocImportTag, {\n tagName,\n importClause,\n moduleSpecifier,\n attributes,\n comment: comment ? createNodeArray(comment) : undefined,\n });\n}\nexport function createJSDocCallbackTag(tagName, typeExpression, name, comment) {\n return new NodeObject(SyntaxKind.JSDocCallbackTag, {\n tagName,\n typeExpression,\n name,\n comment: comment ? createNodeArray(comment) : undefined,\n });\n}\nexport function createJSDocOverloadTag(tagName, typeExpression, comment) {\n return new NodeObject(SyntaxKind.JSDocOverloadTag, {\n tagName,\n typeExpression,\n comment: comment ? createNodeArray(comment) : undefined,\n });\n}\nexport function createJSDocTypedefTag(tagName, typeExpression, name, comment) {\n return new NodeObject(SyntaxKind.JSDocTypedefTag, {\n tagName,\n typeExpression,\n name,\n comment: comment ? createNodeArray(comment) : undefined,\n });\n}\nexport function createJSDocSignature(typeParameters, parameters, type) {\n return new NodeObject(SyntaxKind.JSDocSignature, {\n typeParameters: typeParameters ? createNodeArray(typeParameters) : undefined,\n parameters: createNodeArray(parameters),\n type,\n });\n}\nexport function createJSDocNameReference(name) {\n return new NodeObject(SyntaxKind.JSDocNameReference, {\n name,\n });\n}\nexport function createModuleDeclaration(modifiers, keyword, name, body) {\n return new NodeObject(SyntaxKind.ModuleDeclaration, {\n modifiers: modifiers ? createNodeArray(modifiers) : undefined,\n keyword,\n name,\n body,\n });\n}\nexport function createImportEqualsDeclaration(modifiers, isTypeOnly = false, name, moduleReference) {\n return new NodeObject(SyntaxKind.ImportEqualsDeclaration, {\n modifiers: modifiers ? createNodeArray(modifiers) : undefined,\n isTypeOnly,\n name,\n moduleReference,\n });\n}\nexport function createExportDeclaration(modifiers, isTypeOnly, exportClause, moduleSpecifier, attributes) {\n return new NodeObject(SyntaxKind.ExportDeclaration, {\n modifiers: modifiers ? createNodeArray(modifiers) : undefined,\n isTypeOnly,\n exportClause,\n moduleSpecifier,\n attributes,\n });\n}\nexport function createImportTypeNode(isTypeOf = false, argument, attributes, qualifier, typeArguments) {\n return new NodeObject(SyntaxKind.ImportType, {\n isTypeOf,\n argument,\n attributes,\n qualifier,\n typeArguments: typeArguments ? createNodeArray(typeArguments) : undefined,\n });\n}\nexport function createImportClause(phaseModifier, name, namedBindings) {\n return new NodeObject(SyntaxKind.ImportClause, {\n phaseModifier,\n name,\n namedBindings,\n });\n}\nexport function createImportSpecifier(isTypeOnly = false, propertyName, name) {\n return new NodeObject(SyntaxKind.ImportSpecifier, {\n isTypeOnly,\n propertyName,\n name,\n });\n}\nexport function createJSDocText(text) {\n return new NodeObject(SyntaxKind.JSDocText, {\n text,\n });\n}\nexport function createJSDocLink(name, text) {\n return new NodeObject(SyntaxKind.JSDocLink, {\n name,\n text,\n });\n}\nexport function createJSDocLinkPlain(name, text) {\n return new NodeObject(SyntaxKind.JSDocLinkPlain, {\n name,\n text,\n });\n}\nexport function createJSDocLinkCode(name, text) {\n return new NodeObject(SyntaxKind.JSDocLinkCode, {\n name,\n text,\n });\n}\nexport function createTypeParameterDeclaration(modifiers, name, constraint, expression, defaultType) {\n return new NodeObject(SyntaxKind.TypeParameter, {\n modifiers: modifiers ? createNodeArray(modifiers) : undefined,\n name,\n constraint,\n expression,\n defaultType,\n });\n}\nexport function createSyntheticReferenceExpression(expression, thisArg) {\n return new NodeObject(SyntaxKind.SyntheticReferenceExpression, {\n expression,\n thisArg,\n });\n}\nexport function createJSDocTypeLiteral(jsdocPropertyTags, isArrayType) {\n return new NodeObject(SyntaxKind.JSDocTypeLiteral, {\n jsdocPropertyTags,\n isArrayType,\n });\n}\nexport function createForInStatement(awaitModifier, initializer, expression, statement) {\n return new NodeObject(SyntaxKind.ForInStatement, {\n awaitModifier,\n initializer,\n expression,\n statement,\n });\n}\nexport function createForOfStatement(awaitModifier, initializer, expression, statement) {\n return new NodeObject(SyntaxKind.ForOfStatement, {\n awaitModifier,\n initializer,\n expression,\n statement,\n });\n}\nexport function createCaseClause(expression, statements) {\n return new NodeObject(SyntaxKind.CaseClause, {\n expression,\n statements: createNodeArray(statements),\n });\n}\nexport function createDefaultClause(expression, statements) {\n return new NodeObject(SyntaxKind.DefaultClause, {\n expression,\n statements: createNodeArray(statements),\n });\n}\nexport function createObjectBindingPattern(elements) {\n return new NodeObject(SyntaxKind.ObjectBindingPattern, {\n elements: createNodeArray(elements),\n });\n}\nexport function createArrayBindingPattern(elements) {\n return new NodeObject(SyntaxKind.ArrayBindingPattern, {\n elements: createNodeArray(elements),\n });\n}\nexport function createJSDocParameterTag(tagName, name, isBracketed, typeExpression, isNameFirst, comment) {\n return new NodeObject(SyntaxKind.JSDocParameterTag, {\n tagName,\n name,\n isBracketed,\n typeExpression,\n isNameFirst,\n comment: comment ? createNodeArray(comment) : undefined,\n });\n}\nexport function createJSDocPropertyTag(tagName, name, isBracketed, typeExpression, isNameFirst, comment) {\n return new NodeObject(SyntaxKind.JSDocPropertyTag, {\n tagName,\n name,\n isBracketed,\n typeExpression,\n isNameFirst,\n comment: comment ? createNodeArray(comment) : undefined,\n });\n}\nexport function updateQualifiedName(node, left, right) {\n return node.left !== left || node.right !== right ? createQualifiedName(left, right) : node;\n}\nexport function updateComputedPropertyName(node, expression) {\n return node.expression !== expression ? createComputedPropertyName(expression) : node;\n}\nexport function updateDecorator(node, expression) {\n return node.expression !== expression ? createDecorator(expression) : node;\n}\nexport function updateIfStatement(node, expression, thenStatement, elseStatement) {\n return node.expression !== expression || node.thenStatement !== thenStatement || node.elseStatement !== elseStatement ? createIfStatement(expression, thenStatement, elseStatement) : node;\n}\nexport function updateDoStatement(node, statement, expression) {\n return node.statement !== statement || node.expression !== expression ? createDoStatement(statement, expression) : node;\n}\nexport function updateWhileStatement(node, expression, statement) {\n return node.expression !== expression || node.statement !== statement ? createWhileStatement(expression, statement) : node;\n}\nexport function updateForStatement(node, initializer, condition, incrementor, statement) {\n return node.initializer !== initializer || node.condition !== condition || node.incrementor !== incrementor || node.statement !== statement ? createForStatement(initializer, condition, incrementor, statement) : node;\n}\nexport function updateBreakStatement(node, label) {\n return node.label !== label ? createBreakStatement(label) : node;\n}\nexport function updateContinueStatement(node, label) {\n return node.label !== label ? createContinueStatement(label) : node;\n}\nexport function updateReturnStatement(node, expression) {\n return node.expression !== expression ? createReturnStatement(expression) : node;\n}\nexport function updateWithStatement(node, expression, statement) {\n return node.expression !== expression || node.statement !== statement ? createWithStatement(expression, statement) : node;\n}\nexport function updateSwitchStatement(node, expression, caseBlock) {\n return node.expression !== expression || node.caseBlock !== caseBlock ? createSwitchStatement(expression, caseBlock) : node;\n}\nexport function updateCaseBlock(node, clauses) {\n return node.clauses !== clauses ? createCaseBlock(clauses) : node;\n}\nexport function updateThrowStatement(node, expression) {\n return node.expression !== expression ? createThrowStatement(expression) : node;\n}\nexport function updateTryStatement(node, tryBlock, catchClause, finallyBlock) {\n return node.tryBlock !== tryBlock || node.catchClause !== catchClause || node.finallyBlock !== finallyBlock ? createTryStatement(tryBlock, catchClause, finallyBlock) : node;\n}\nexport function updateCatchClause(node, variableDeclaration, block) {\n return node.variableDeclaration !== variableDeclaration || node.block !== block ? createCatchClause(variableDeclaration, block) : node;\n}\nexport function updateLabeledStatement(node, label, statement) {\n return node.label !== label || node.statement !== statement ? createLabeledStatement(label, statement) : node;\n}\nexport function updateExpressionStatement(node, expression) {\n return node.expression !== expression ? createExpressionStatement(expression) : node;\n}\nexport function updateBlock(node, statements) {\n return node.statements !== statements ? createBlock(statements, node.multiLine) : node;\n}\nexport function updateVariableStatement(node, modifiers, declarationList) {\n return node.modifiers !== modifiers || node.declarationList !== declarationList ? createVariableStatement(modifiers, declarationList) : node;\n}\nexport function updateVariableDeclaration(node, name, exclamationToken, type, initializer) {\n return node.name !== name || node.exclamationToken !== exclamationToken || node.type !== type || node.initializer !== initializer ? createVariableDeclaration(name, exclamationToken, type, initializer) : node;\n}\nexport function updateVariableDeclarationList(node, declarations) {\n return node.declarations !== declarations ? createVariableDeclarationList(declarations, node.flags) : node;\n}\nexport function updateParameterDeclaration(node, modifiers, dotDotDotToken, name, questionToken, type, initializer) {\n 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;\n}\nexport function updateBindingElement(node, dotDotDotToken, propertyName, name, initializer) {\n return node.dotDotDotToken !== dotDotDotToken || node.propertyName !== propertyName || node.name !== name || node.initializer !== initializer ? createBindingElement(dotDotDotToken, propertyName, name, initializer) : node;\n}\nexport function updateMissingDeclaration(node, modifiers) {\n return node.modifiers !== modifiers ? createMissingDeclaration(modifiers) : node;\n}\nexport function updateFunctionDeclaration(node, modifiers, asteriskToken, name, typeParameters, parameters, type, body) {\n 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;\n}\nexport function updateClassDeclaration(node, modifiers, name, typeParameters, heritageClauses, members) {\n return node.modifiers !== modifiers || node.name !== name || node.typeParameters !== typeParameters || node.heritageClauses !== heritageClauses || node.members !== members ? createClassDeclaration(modifiers, name, typeParameters, heritageClauses, members) : node;\n}\nexport function updateClassExpression(node, modifiers, name, typeParameters, heritageClauses, members) {\n return node.modifiers !== modifiers || node.name !== name || node.typeParameters !== typeParameters || node.heritageClauses !== heritageClauses || node.members !== members ? createClassExpression(modifiers, name, typeParameters, heritageClauses, members) : node;\n}\nexport function updateHeritageClause(node, types) {\n return node.types !== types ? createHeritageClause(node.token, types) : node;\n}\nexport function updateInterfaceDeclaration(node, modifiers, name, typeParameters, heritageClauses, members) {\n return node.modifiers !== modifiers || node.name !== name || node.typeParameters !== typeParameters || node.heritageClauses !== heritageClauses || node.members !== members ? createInterfaceDeclaration(modifiers, name, typeParameters, heritageClauses, members) : node;\n}\nexport function updateTypeAliasDeclaration(node, modifiers, name, typeParameters, type) {\n return node.modifiers !== modifiers || node.name !== name || node.typeParameters !== typeParameters || node.type !== type ? createTypeAliasDeclaration(modifiers, name, typeParameters, type) : node;\n}\nexport function updateEnumMember(node, name, initializer) {\n return node.name !== name || node.initializer !== initializer ? createEnumMember(name, initializer) : node;\n}\nexport function updateEnumDeclaration(node, modifiers, name, members) {\n return node.modifiers !== modifiers || node.name !== name || node.members !== members ? createEnumDeclaration(modifiers, name, members) : node;\n}\nexport function updateModuleBlock(node, statements) {\n return node.statements !== statements ? createModuleBlock(statements) : node;\n}\nexport function updateImportDeclaration(node, modifiers, importClause, moduleSpecifier, attributes) {\n return node.modifiers !== modifiers || node.importClause !== importClause || node.moduleSpecifier !== moduleSpecifier || node.attributes !== attributes ? createImportDeclaration(modifiers, importClause, moduleSpecifier, attributes) : node;\n}\nexport function updateExternalModuleReference(node, expression) {\n return node.expression !== expression ? createExternalModuleReference(expression) : node;\n}\nexport function updateNamespaceImport(node, name) {\n return node.name !== name ? createNamespaceImport(name) : node;\n}\nexport function updateNamedImports(node, elements) {\n return node.elements !== elements ? createNamedImports(elements) : node;\n}\nexport function updateExportAssignment(node, modifiers, type, expression) {\n return node.modifiers !== modifiers || node.type !== type || node.expression !== expression ? createExportAssignment(modifiers, node.isExportEquals, type, expression) : node;\n}\nexport function updateNamespaceExportDeclaration(node, modifiers, name) {\n return node.modifiers !== modifiers || node.name !== name ? createNamespaceExportDeclaration(modifiers, name) : node;\n}\nexport function updateNamespaceExport(node, name) {\n return node.name !== name ? createNamespaceExport(name) : node;\n}\nexport function updateNamedExports(node, elements) {\n return node.elements !== elements ? createNamedExports(elements) : node;\n}\nexport function updateExportSpecifier(node, propertyName, name) {\n return node.propertyName !== propertyName || node.name !== name ? createExportSpecifier(node.isTypeOnly, propertyName, name) : node;\n}\nexport function updateCallSignatureDeclaration(node, typeParameters, parameters, type) {\n return node.typeParameters !== typeParameters || node.parameters !== parameters || node.type !== type ? createCallSignatureDeclaration(typeParameters, parameters, type) : node;\n}\nexport function updateConstructSignatureDeclaration(node, typeParameters, parameters, type) {\n return node.typeParameters !== typeParameters || node.parameters !== parameters || node.type !== type ? createConstructSignatureDeclaration(typeParameters, parameters, type) : node;\n}\nexport function updateConstructorDeclaration(node, modifiers, typeParameters, parameters, type, body) {\n return node.modifiers !== modifiers || node.typeParameters !== typeParameters || node.parameters !== parameters || node.type !== type || node.body !== body ? createConstructorDeclaration(modifiers, typeParameters, parameters, type, body) : node;\n}\nexport function updateGetAccessorDeclaration(node, modifiers, name, typeParameters, parameters, type, body) {\n 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;\n}\nexport function updateSetAccessorDeclaration(node, modifiers, name, typeParameters, parameters, type, body) {\n 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;\n}\nexport function updateIndexSignatureDeclaration(node, modifiers, parameters, type) {\n return node.modifiers !== modifiers || node.parameters !== parameters || node.type !== type ? createIndexSignatureDeclaration(modifiers, parameters, type) : node;\n}\nexport function updateMethodSignatureDeclaration(node, modifiers, name, postfixToken, typeParameters, parameters, type) {\n 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;\n}\nexport function updateMethodDeclaration(node, modifiers, asteriskToken, name, postfixToken, typeParameters, parameters, type, body) {\n 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;\n}\nexport function updatePropertySignatureDeclaration(node, modifiers, name, postfixToken, type, initializer) {\n return node.modifiers !== modifiers || node.name !== name || node.postfixToken !== postfixToken || node.type !== type || node.initializer !== initializer ? createPropertySignatureDeclaration(modifiers, name, postfixToken, type, initializer) : node;\n}\nexport function updatePropertyDeclaration(node, modifiers, name, postfixToken, type, initializer) {\n return node.modifiers !== modifiers || node.name !== name || node.postfixToken !== postfixToken || node.type !== type || node.initializer !== initializer ? createPropertyDeclaration(modifiers, name, postfixToken, type, initializer) : node;\n}\nexport function updateClassStaticBlockDeclaration(node, modifiers, body) {\n return node.modifiers !== modifiers || node.body !== body ? createClassStaticBlockDeclaration(modifiers, body) : node;\n}\nexport function updateBinaryExpression(node, modifiers, left, type, operatorToken, right) {\n return node.modifiers !== modifiers || node.left !== left || node.type !== type || node.operatorToken !== operatorToken || node.right !== right ? createBinaryExpression(modifiers, left, type, operatorToken, right) : node;\n}\nexport function updatePrefixUnaryExpression(node, operand) {\n return node.operand !== operand ? createPrefixUnaryExpression(node.operator, operand) : node;\n}\nexport function updatePostfixUnaryExpression(node, operand) {\n return node.operand !== operand ? createPostfixUnaryExpression(operand, node.operator) : node;\n}\nexport function updateYieldExpression(node, asteriskToken, expression) {\n return node.asteriskToken !== asteriskToken || node.expression !== expression ? createYieldExpression(asteriskToken, expression) : node;\n}\nexport function updateArrowFunction(node, modifiers, typeParameters, parameters, type, equalsGreaterThanToken, body) {\n 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;\n}\nexport function updateFunctionExpression(node, modifiers, asteriskToken, name, typeParameters, parameters, type, body) {\n 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;\n}\nexport function updateAsExpression(node, expression, type) {\n return node.expression !== expression || node.type !== type ? createAsExpression(expression, type) : node;\n}\nexport function updateSatisfiesExpression(node, expression, type) {\n return node.expression !== expression || node.type !== type ? createSatisfiesExpression(expression, type) : node;\n}\nexport function updateConditionalExpression(node, condition, questionToken, whenTrue, colonToken, whenFalse) {\n return node.condition !== condition || node.questionToken !== questionToken || node.whenTrue !== whenTrue || node.colonToken !== colonToken || node.whenFalse !== whenFalse ? createConditionalExpression(condition, questionToken, whenTrue, colonToken, whenFalse) : node;\n}\nexport function updatePropertyAccessExpression(node, expression, questionDotToken, name) {\n return node.expression !== expression || node.questionDotToken !== questionDotToken || node.name !== name ? createPropertyAccessExpression(expression, questionDotToken, name, node.flags) : node;\n}\nexport function updateElementAccessExpression(node, expression, questionDotToken, argumentExpression) {\n return node.expression !== expression || node.questionDotToken !== questionDotToken || node.argumentExpression !== argumentExpression ? createElementAccessExpression(expression, questionDotToken, argumentExpression, node.flags) : node;\n}\nexport function updateCallExpression(node, expression, questionDotToken, typeArguments, arguments_) {\n return node.expression !== expression || node.questionDotToken !== questionDotToken || node.typeArguments !== typeArguments || node.arguments !== arguments_ ? createCallExpression(expression, questionDotToken, typeArguments, arguments_, node.flags) : node;\n}\nexport function updateNewExpression(node, expression, typeArguments, arguments_) {\n return node.expression !== expression || node.typeArguments !== typeArguments || node.arguments !== arguments_ ? createNewExpression(expression, typeArguments, arguments_) : node;\n}\nexport function updateMetaProperty(node, name) {\n return node.name !== name ? createMetaProperty(node.keywordToken, name) : node;\n}\nexport function updateNonNullExpression(node, expression) {\n return node.expression !== expression ? createNonNullExpression(expression, node.flags) : node;\n}\nexport function updateSpreadElement(node, expression) {\n return node.expression !== expression ? createSpreadElement(expression) : node;\n}\nexport function updateTemplateExpression(node, head, templateSpans) {\n return node.head !== head || node.templateSpans !== templateSpans ? createTemplateExpression(head, templateSpans) : node;\n}\nexport function updateTemplateSpan(node, expression, literal) {\n return node.expression !== expression || node.literal !== literal ? createTemplateSpan(expression, literal) : node;\n}\nexport function updateTaggedTemplateExpression(node, tag, questionDotToken, typeArguments, template) {\n return node.tag !== tag || node.questionDotToken !== questionDotToken || node.typeArguments !== typeArguments || node.template !== template ? createTaggedTemplateExpression(tag, questionDotToken, typeArguments, template, node.flags) : node;\n}\nexport function updateParenthesizedExpression(node, expression) {\n return node.expression !== expression ? createParenthesizedExpression(expression) : node;\n}\nexport function updateArrayLiteralExpression(node, elements) {\n return node.elements !== elements ? createArrayLiteralExpression(elements, node.multiLine) : node;\n}\nexport function updateObjectLiteralExpression(node, properties) {\n return node.properties !== properties ? createObjectLiteralExpression(properties, node.multiLine) : node;\n}\nexport function updateSpreadAssignment(node, expression) {\n return node.expression !== expression ? createSpreadAssignment(expression) : node;\n}\nexport function updatePropertyAssignment(node, modifiers, name, postfixToken, type, initializer) {\n return node.modifiers !== modifiers || node.name !== name || node.postfixToken !== postfixToken || node.type !== type || node.initializer !== initializer ? createPropertyAssignment(modifiers, name, postfixToken, type, initializer) : node;\n}\nexport function updateShorthandPropertyAssignment(node, modifiers, name, postfixToken, type, equalsToken, objectAssignmentInitializer) {\n 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;\n}\nexport function updateDeleteExpression(node, expression) {\n return node.expression !== expression ? createDeleteExpression(expression) : node;\n}\nexport function updateTypeOfExpression(node, expression) {\n return node.expression !== expression ? createTypeOfExpression(expression) : node;\n}\nexport function updateVoidExpression(node, expression) {\n return node.expression !== expression ? createVoidExpression(expression) : node;\n}\nexport function updateAwaitExpression(node, expression) {\n return node.expression !== expression ? createAwaitExpression(expression) : node;\n}\nexport function updateTypeAssertion(node, type, expression) {\n return node.type !== type || node.expression !== expression ? createTypeAssertion(type, expression) : node;\n}\nexport function updateUnionTypeNode(node, types) {\n return node.types !== types ? createUnionTypeNode(types) : node;\n}\nexport function updateIntersectionTypeNode(node, types) {\n return node.types !== types ? createIntersectionTypeNode(types) : node;\n}\nexport function updateConditionalTypeNode(node, checkType, extendsType, trueType, falseType) {\n return node.checkType !== checkType || node.extendsType !== extendsType || node.trueType !== trueType || node.falseType !== falseType ? createConditionalTypeNode(checkType, extendsType, trueType, falseType) : node;\n}\nexport function updateTypeOperatorNode(node, type) {\n return node.type !== type ? createTypeOperatorNode(node.operator, type) : node;\n}\nexport function updateInferTypeNode(node, typeParameter) {\n return node.typeParameter !== typeParameter ? createInferTypeNode(typeParameter) : node;\n}\nexport function updateArrayTypeNode(node, elementType) {\n return node.elementType !== elementType ? createArrayTypeNode(elementType) : node;\n}\nexport function updateIndexedAccessTypeNode(node, objectType, indexType) {\n return node.objectType !== objectType || node.indexType !== indexType ? createIndexedAccessTypeNode(objectType, indexType) : node;\n}\nexport function updateTypeReferenceNode(node, typeName, typeArguments) {\n return node.typeName !== typeName || node.typeArguments !== typeArguments ? createTypeReferenceNode(typeName, typeArguments) : node;\n}\nexport function updateExpressionWithTypeArguments(node, expression, typeArguments) {\n return node.expression !== expression || node.typeArguments !== typeArguments ? createExpressionWithTypeArguments(expression, typeArguments) : node;\n}\nexport function updateLiteralTypeNode(node, literal) {\n return node.literal !== literal ? createLiteralTypeNode(literal) : node;\n}\nexport function updateTypePredicateNode(node, assertsModifier, parameterName, type) {\n return node.assertsModifier !== assertsModifier || node.parameterName !== parameterName || node.type !== type ? createTypePredicateNode(assertsModifier, parameterName, type) : node;\n}\nexport function updateImportAttribute(node, name, value) {\n return node.name !== name || node.value !== value ? createImportAttribute(name, value) : node;\n}\nexport function updateImportAttributes(node, attributes) {\n return node.attributes !== attributes ? createImportAttributes(node.token, attributes, node.multiLine) : node;\n}\nexport function updateTypeQueryNode(node, exprName, typeArguments) {\n return node.exprName !== exprName || node.typeArguments !== typeArguments ? createTypeQueryNode(exprName, typeArguments) : node;\n}\nexport function updateMappedTypeNode(node, readonlyToken, typeParameter, nameType, questionToken, type, members) {\n 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;\n}\nexport function updateTypeLiteralNode(node, members) {\n return node.members !== members ? createTypeLiteralNode(members) : node;\n}\nexport function updateTupleTypeNode(node, elements) {\n return node.elements !== elements ? createTupleTypeNode(elements) : node;\n}\nexport function updateNamedTupleMember(node, dotDotDotToken, name, questionToken, type) {\n return node.dotDotDotToken !== dotDotDotToken || node.name !== name || node.questionToken !== questionToken || node.type !== type ? createNamedTupleMember(dotDotDotToken, name, questionToken, type) : node;\n}\nexport function updateOptionalTypeNode(node, type) {\n return node.type !== type ? createOptionalTypeNode(type) : node;\n}\nexport function updateRestTypeNode(node, type) {\n return node.type !== type ? createRestTypeNode(type) : node;\n}\nexport function updateParenthesizedTypeNode(node, type) {\n return node.type !== type ? createParenthesizedTypeNode(type) : node;\n}\nexport function updateFunctionTypeNode(node, typeParameters, parameters, type) {\n return node.typeParameters !== typeParameters || node.parameters !== parameters || node.type !== type ? createFunctionTypeNode(typeParameters, parameters, type) : node;\n}\nexport function updateConstructorTypeNode(node, modifiers, typeParameters, parameters, type) {\n return node.modifiers !== modifiers || node.typeParameters !== typeParameters || node.parameters !== parameters || node.type !== type ? createConstructorTypeNode(modifiers, typeParameters, parameters, type) : node;\n}\nexport function updateTemplateLiteralTypeNode(node, head, templateSpans) {\n return node.head !== head || node.templateSpans !== templateSpans ? createTemplateLiteralTypeNode(head, templateSpans) : node;\n}\nexport function updateTemplateLiteralTypeSpan(node, type, literal) {\n return node.type !== type || node.literal !== literal ? createTemplateLiteralTypeSpan(type, literal) : node;\n}\nexport function updateSyntheticExpression(node, tupleNameSource) {\n return node.tupleNameSource !== tupleNameSource ? createSyntheticExpression(node.type, node.isSpread, tupleNameSource) : node;\n}\nexport function updatePartiallyEmittedExpression(node, expression) {\n return node.expression !== expression ? createPartiallyEmittedExpression(expression) : node;\n}\nexport function updateJsxElement(node, openingElement, children, closingElement) {\n return node.openingElement !== openingElement || node.children !== children || node.closingElement !== closingElement ? createJsxElement(openingElement, children, closingElement) : node;\n}\nexport function updateJsxAttributes(node, properties) {\n return node.properties !== properties ? createJsxAttributes(properties) : node;\n}\nexport function updateJsxNamespacedName(node, namespace, name) {\n return node.namespace !== namespace || node.name !== name ? createJsxNamespacedName(namespace, name) : node;\n}\nexport function updateJsxOpeningElement(node, tagName, typeArguments, attributes) {\n return node.tagName !== tagName || node.typeArguments !== typeArguments || node.attributes !== attributes ? createJsxOpeningElement(tagName, typeArguments, attributes) : node;\n}\nexport function updateJsxSelfClosingElement(node, tagName, typeArguments, attributes) {\n return node.tagName !== tagName || node.typeArguments !== typeArguments || node.attributes !== attributes ? createJsxSelfClosingElement(tagName, typeArguments, attributes) : node;\n}\nexport function updateJsxFragment(node, openingFragment, children, closingFragment) {\n return node.openingFragment !== openingFragment || node.children !== children || node.closingFragment !== closingFragment ? createJsxFragment(openingFragment, children, closingFragment) : node;\n}\nexport function updateJsxAttribute(node, name, initializer) {\n return node.name !== name || node.initializer !== initializer ? createJsxAttribute(name, initializer) : node;\n}\nexport function updateJsxSpreadAttribute(node, expression) {\n return node.expression !== expression ? createJsxSpreadAttribute(expression) : node;\n}\nexport function updateJsxClosingElement(node, tagName) {\n return node.tagName !== tagName ? createJsxClosingElement(tagName) : node;\n}\nexport function updateJsxExpression(node, dotDotDotToken, expression) {\n return node.dotDotDotToken !== dotDotDotToken || node.expression !== expression ? createJsxExpression(dotDotDotToken, expression) : node;\n}\nexport function updateSyntaxList(node, children) {\n return node.children !== children ? createSyntaxList(children) : node;\n}\nexport function updateJSDoc(node, comment, tags) {\n return node.comment !== comment || node.tags !== tags ? createJSDoc(comment, tags) : node;\n}\nexport function updateJSDocTypeExpression(node, type) {\n return node.type !== type ? createJSDocTypeExpression(type) : node;\n}\nexport function updateJSDocNonNullableType(node, type) {\n return node.type !== type ? createJSDocNonNullableType(type) : node;\n}\nexport function updateJSDocNullableType(node, type) {\n return node.type !== type ? createJSDocNullableType(type) : node;\n}\nexport function updateJSDocVariadicType(node, type) {\n return node.type !== type ? createJSDocVariadicType(type) : node;\n}\nexport function updateJSDocOptionalType(node, type) {\n return node.type !== type ? createJSDocOptionalType(type) : node;\n}\nexport function updateJSDocTypeTag(node, tagName, typeExpression, comment) {\n return node.tagName !== tagName || node.typeExpression !== typeExpression || node.comment !== comment ? createJSDocTypeTag(tagName, typeExpression, comment) : node;\n}\nexport function updateJSDocUnknownTag(node, tagName, comment) {\n return node.tagName !== tagName || node.comment !== comment ? createJSDocUnknownTag(tagName, comment) : node;\n}\nexport function updateJSDocTemplateTag(node, tagName, constraint, typeParameters, comment) {\n return node.tagName !== tagName || node.constraint !== constraint || node.typeParameters !== typeParameters || node.comment !== comment ? createJSDocTemplateTag(tagName, constraint, typeParameters, comment) : node;\n}\nexport function updateJSDocReturnTag(node, tagName, typeExpression, comment) {\n return node.tagName !== tagName || node.typeExpression !== typeExpression || node.comment !== comment ? createJSDocReturnTag(tagName, typeExpression, comment) : node;\n}\nexport function updateJSDocPublicTag(node, tagName, comment) {\n return node.tagName !== tagName || node.comment !== comment ? createJSDocPublicTag(tagName, comment) : node;\n}\nexport function updateJSDocPrivateTag(node, tagName, comment) {\n return node.tagName !== tagName || node.comment !== comment ? createJSDocPrivateTag(tagName, comment) : node;\n}\nexport function updateJSDocProtectedTag(node, tagName, comment) {\n return node.tagName !== tagName || node.comment !== comment ? createJSDocProtectedTag(tagName, comment) : node;\n}\nexport function updateJSDocReadonlyTag(node, tagName, comment) {\n return node.tagName !== tagName || node.comment !== comment ? createJSDocReadonlyTag(tagName, comment) : node;\n}\nexport function updateJSDocOverrideTag(node, tagName, comment) {\n return node.tagName !== tagName || node.comment !== comment ? createJSDocOverrideTag(tagName, comment) : node;\n}\nexport function updateJSDocDeprecatedTag(node, tagName, comment) {\n return node.tagName !== tagName || node.comment !== comment ? createJSDocDeprecatedTag(tagName, comment) : node;\n}\nexport function updateJSDocSeeTag(node, tagName, nameExpression, comment) {\n return node.tagName !== tagName || node.nameExpression !== nameExpression || node.comment !== comment ? createJSDocSeeTag(tagName, nameExpression, comment) : node;\n}\nexport function updateJSDocImplementsTag(node, tagName, className, comment) {\n return node.tagName !== tagName || node.className !== className || node.comment !== comment ? createJSDocImplementsTag(tagName, className, comment) : node;\n}\nexport function updateJSDocAugmentsTag(node, tagName, className, comment) {\n return node.tagName !== tagName || node.className !== className || node.comment !== comment ? createJSDocAugmentsTag(tagName, className, comment) : node;\n}\nexport function updateJSDocSatisfiesTag(node, tagName, typeExpression, comment) {\n return node.tagName !== tagName || node.typeExpression !== typeExpression || node.comment !== comment ? createJSDocSatisfiesTag(tagName, typeExpression, comment) : node;\n}\nexport function updateJSDocThrowsTag(node, tagName, typeExpression, comment) {\n return node.tagName !== tagName || node.typeExpression !== typeExpression || node.comment !== comment ? createJSDocThrowsTag(tagName, typeExpression, comment) : node;\n}\nexport function updateJSDocThisTag(node, tagName, typeExpression, comment) {\n return node.tagName !== tagName || node.typeExpression !== typeExpression || node.comment !== comment ? createJSDocThisTag(tagName, typeExpression, comment) : node;\n}\nexport function updateJSDocImportTag(node, tagName, importClause, moduleSpecifier, attributes, comment) {\n return node.tagName !== tagName || node.importClause !== importClause || node.moduleSpecifier !== moduleSpecifier || node.attributes !== attributes || node.comment !== comment ? createJSDocImportTag(tagName, importClause, moduleSpecifier, attributes, comment) : node;\n}\nexport function updateJSDocCallbackTag(node, tagName, typeExpression, name, comment) {\n return node.tagName !== tagName || node.typeExpression !== typeExpression || node.name !== name || node.comment !== comment ? createJSDocCallbackTag(tagName, typeExpression, name, comment) : node;\n}\nexport function updateJSDocOverloadTag(node, tagName, typeExpression, comment) {\n return node.tagName !== tagName || node.typeExpression !== typeExpression || node.comment !== comment ? createJSDocOverloadTag(tagName, typeExpression, comment) : node;\n}\nexport function updateJSDocTypedefTag(node, tagName, typeExpression, name, comment) {\n return node.tagName !== tagName || node.typeExpression !== typeExpression || node.name !== name || node.comment !== comment ? createJSDocTypedefTag(tagName, typeExpression, name, comment) : node;\n}\nexport function updateJSDocSignature(node, typeParameters, parameters, type) {\n return node.typeParameters !== typeParameters || node.parameters !== parameters || node.type !== type ? createJSDocSignature(typeParameters, parameters, type) : node;\n}\nexport function updateJSDocNameReference(node, name) {\n return node.name !== name ? createJSDocNameReference(name) : node;\n}\nexport function updateModuleDeclaration(node, modifiers, name, body) {\n return node.modifiers !== modifiers || node.name !== name || node.body !== body ? createModuleDeclaration(modifiers, node.keyword, name, body) : node;\n}\nexport function updateImportEqualsDeclaration(node, modifiers, name, moduleReference) {\n return node.modifiers !== modifiers || node.name !== name || node.moduleReference !== moduleReference ? createImportEqualsDeclaration(modifiers, node.isTypeOnly, name, moduleReference) : node;\n}\nexport function updateExportDeclaration(node, modifiers, exportClause, moduleSpecifier, attributes) {\n return node.modifiers !== modifiers || node.exportClause !== exportClause || node.moduleSpecifier !== moduleSpecifier || node.attributes !== attributes ? createExportDeclaration(modifiers, node.isTypeOnly, exportClause, moduleSpecifier, attributes) : node;\n}\nexport function updateImportTypeNode(node, argument, attributes, qualifier, typeArguments) {\n return node.argument !== argument || node.attributes !== attributes || node.qualifier !== qualifier || node.typeArguments !== typeArguments ? createImportTypeNode(node.isTypeOf, argument, attributes, qualifier, typeArguments) : node;\n}\nexport function updateImportClause(node, name, namedBindings) {\n return node.name !== name || node.namedBindings !== namedBindings ? createImportClause(node.phaseModifier, name, namedBindings) : node;\n}\nexport function updateImportSpecifier(node, propertyName, name) {\n return node.propertyName !== propertyName || node.name !== name ? createImportSpecifier(node.isTypeOnly, propertyName, name) : node;\n}\nexport function updateJSDocLink(node, name) {\n return node.name !== name ? createJSDocLink(name, node.text) : node;\n}\nexport function updateJSDocLinkPlain(node, name) {\n return node.name !== name ? createJSDocLinkPlain(name, node.text) : node;\n}\nexport function updateJSDocLinkCode(node, name) {\n return node.name !== name ? createJSDocLinkCode(name, node.text) : node;\n}\nexport function updateTypeParameterDeclaration(node, modifiers, name, constraint, expression, defaultType) {\n return node.modifiers !== modifiers || node.name !== name || node.constraint !== constraint || node.expression !== expression || node.defaultType !== defaultType ? createTypeParameterDeclaration(modifiers, name, constraint, expression, defaultType) : node;\n}\nexport function updateSyntheticReferenceExpression(node, expression, thisArg) {\n return node.expression !== expression || node.thisArg !== thisArg ? createSyntheticReferenceExpression(expression, thisArg) : node;\n}\nexport function updateJSDocTypeLiteral(node, jsdocPropertyTags) {\n return node.jsdocPropertyTags !== jsdocPropertyTags ? createJSDocTypeLiteral(jsdocPropertyTags, node.isArrayType) : node;\n}\nexport function updateForInStatement(node, awaitModifier, initializer, expression, statement) {\n return node.awaitModifier !== awaitModifier || node.initializer !== initializer || node.expression !== expression || node.statement !== statement ? createForInStatement(awaitModifier, initializer, expression, statement) : node;\n}\nexport function updateForOfStatement(node, awaitModifier, initializer, expression, statement) {\n return node.awaitModifier !== awaitModifier || node.initializer !== initializer || node.expression !== expression || node.statement !== statement ? createForOfStatement(awaitModifier, initializer, expression, statement) : node;\n}\nexport function updateCaseClause(node, expression, statements) {\n return node.expression !== expression || node.statements !== statements ? createCaseClause(expression, statements) : node;\n}\nexport function updateDefaultClause(node, expression, statements) {\n return node.expression !== expression || node.statements !== statements ? createDefaultClause(expression, statements) : node;\n}\nexport function updateObjectBindingPattern(node, elements) {\n return node.elements !== elements ? createObjectBindingPattern(elements) : node;\n}\nexport function updateArrayBindingPattern(node, elements) {\n return node.elements !== elements ? createArrayBindingPattern(elements) : node;\n}\nexport function updateJSDocParameterTag(node, tagName, name, typeExpression, comment) {\n return node.tagName !== tagName || node.name !== name || node.typeExpression !== typeExpression || node.comment !== comment ? createJSDocParameterTag(tagName, name, node.isBracketed, typeExpression, node.isNameFirst, comment) : node;\n}\nexport function updateJSDocPropertyTag(node, tagName, name, typeExpression, comment) {\n return node.tagName !== tagName || node.name !== name || node.typeExpression !== typeExpression || node.comment !== comment ? createJSDocPropertyTag(tagName, name, node.isBracketed, typeExpression, node.isNameFirst, comment) : node;\n}\nexport function createSourceFile(statements, endOfFileToken, text, fileName, path) {\n return new NodeObject(SyntaxKind.SourceFile, {\n statements: createNodeArray(statements),\n endOfFileToken,\n text,\n fileName,\n path,\n });\n}\nfunction cloneSourceFileWithChanges(source, statements, endOfFileToken) {\n return new NodeObject(SyntaxKind.SourceFile, {\n ...cloneSourceFileData(source),\n statements: createNodeArray(statements),\n endOfFileToken,\n });\n}\nexport function updateSourceFile(node, statements, endOfFileToken) {\n return node.statements !== statements || node.endOfFileToken !== endOfFileToken\n ? cloneSourceFileWithChanges(node, statements, endOfFileToken)\n : node;\n}\n//# sourceMappingURL=factory.generated.js.map","import { CharacterCodes } from \"#enums/characterCodes\";\nimport { CommentDirectiveType } from \"#enums/commentDirectiveType\";\nimport { LanguageVariant } from \"#enums/languageVariant\";\nimport { RegularExpressionFlags } from \"#enums/regularExpressionFlags\";\nimport { ScriptTarget } from \"#enums/scriptTarget\";\nimport { SyntaxKind } from \"#enums/syntaxKind\";\nimport { TokenFlags } from \"#enums/tokenFlags\";\n// Internal-only, not exported\nconst EscapeSequenceScanningFlags = {\n String: 1 << 0,\n ReportErrors: 1 << 1,\n RegularExpression: 1 << 2,\n AnnexB: 1 << 3,\n AnyUnicodeMode: 1 << 4,\n AtomEscape: 1 << 5,\n ReportInvalidEscapeErrors: (1 << 2) | (1 << 1),\n AllowExtendedUnicodeEscape: (1 << 0) | (1 << 4),\n};\nexport function tokenIsIdentifierOrKeyword(token) {\n return token >= SyntaxKind.Identifier;\n}\nexport function tokenIsIdentifierOrKeywordOrGreaterThan(token) {\n return token === SyntaxKind.GreaterThanToken || tokenIsIdentifierOrKeyword(token);\n}\nexport const textToKeywordObj = {\n abstract: SyntaxKind.AbstractKeyword,\n accessor: SyntaxKind.AccessorKeyword,\n any: SyntaxKind.AnyKeyword,\n as: SyntaxKind.AsKeyword,\n asserts: SyntaxKind.AssertsKeyword,\n assert: SyntaxKind.AssertKeyword,\n bigint: SyntaxKind.BigIntKeyword,\n boolean: SyntaxKind.BooleanKeyword,\n break: SyntaxKind.BreakKeyword,\n case: SyntaxKind.CaseKeyword,\n catch: SyntaxKind.CatchKeyword,\n class: SyntaxKind.ClassKeyword,\n continue: SyntaxKind.ContinueKeyword,\n const: SyntaxKind.ConstKeyword,\n [\"\" + \"constructor\"]: SyntaxKind.ConstructorKeyword,\n debugger: SyntaxKind.DebuggerKeyword,\n declare: SyntaxKind.DeclareKeyword,\n default: SyntaxKind.DefaultKeyword,\n defer: SyntaxKind.DeferKeyword,\n delete: SyntaxKind.DeleteKeyword,\n do: SyntaxKind.DoKeyword,\n else: SyntaxKind.ElseKeyword,\n enum: SyntaxKind.EnumKeyword,\n export: SyntaxKind.ExportKeyword,\n extends: SyntaxKind.ExtendsKeyword,\n false: SyntaxKind.FalseKeyword,\n finally: SyntaxKind.FinallyKeyword,\n for: SyntaxKind.ForKeyword,\n from: SyntaxKind.FromKeyword,\n function: SyntaxKind.FunctionKeyword,\n get: SyntaxKind.GetKeyword,\n if: SyntaxKind.IfKeyword,\n implements: SyntaxKind.ImplementsKeyword,\n import: SyntaxKind.ImportKeyword,\n in: SyntaxKind.InKeyword,\n infer: SyntaxKind.InferKeyword,\n instanceof: SyntaxKind.InstanceOfKeyword,\n interface: SyntaxKind.InterfaceKeyword,\n intrinsic: SyntaxKind.IntrinsicKeyword,\n is: SyntaxKind.IsKeyword,\n keyof: SyntaxKind.KeyOfKeyword,\n let: SyntaxKind.LetKeyword,\n module: SyntaxKind.ModuleKeyword,\n namespace: SyntaxKind.NamespaceKeyword,\n never: SyntaxKind.NeverKeyword,\n new: SyntaxKind.NewKeyword,\n null: SyntaxKind.NullKeyword,\n number: SyntaxKind.NumberKeyword,\n object: SyntaxKind.ObjectKeyword,\n package: SyntaxKind.PackageKeyword,\n private: SyntaxKind.PrivateKeyword,\n protected: SyntaxKind.ProtectedKeyword,\n public: SyntaxKind.PublicKeyword,\n override: SyntaxKind.OverrideKeyword,\n out: SyntaxKind.OutKeyword,\n readonly: SyntaxKind.ReadonlyKeyword,\n require: SyntaxKind.RequireKeyword,\n global: SyntaxKind.GlobalKeyword,\n return: SyntaxKind.ReturnKeyword,\n satisfies: SyntaxKind.SatisfiesKeyword,\n set: SyntaxKind.SetKeyword,\n static: SyntaxKind.StaticKeyword,\n string: SyntaxKind.StringKeyword,\n super: SyntaxKind.SuperKeyword,\n switch: SyntaxKind.SwitchKeyword,\n symbol: SyntaxKind.SymbolKeyword,\n this: SyntaxKind.ThisKeyword,\n throw: SyntaxKind.ThrowKeyword,\n true: SyntaxKind.TrueKeyword,\n try: SyntaxKind.TryKeyword,\n type: SyntaxKind.TypeKeyword,\n typeof: SyntaxKind.TypeOfKeyword,\n undefined: SyntaxKind.UndefinedKeyword,\n unique: SyntaxKind.UniqueKeyword,\n unknown: SyntaxKind.UnknownKeyword,\n using: SyntaxKind.UsingKeyword,\n var: SyntaxKind.VarKeyword,\n void: SyntaxKind.VoidKeyword,\n while: SyntaxKind.WhileKeyword,\n with: SyntaxKind.WithKeyword,\n yield: SyntaxKind.YieldKeyword,\n async: SyntaxKind.AsyncKeyword,\n await: SyntaxKind.AwaitKeyword,\n of: SyntaxKind.OfKeyword,\n};\nconst textToKeyword = new Map(Object.entries(textToKeywordObj));\nconst textToToken = new Map(Object.entries({\n ...textToKeywordObj,\n \"{\": SyntaxKind.OpenBraceToken,\n \"}\": SyntaxKind.CloseBraceToken,\n \"(\": SyntaxKind.OpenParenToken,\n \")\": SyntaxKind.CloseParenToken,\n \"[\": SyntaxKind.OpenBracketToken,\n \"]\": SyntaxKind.CloseBracketToken,\n \".\": SyntaxKind.DotToken,\n \"...\": SyntaxKind.DotDotDotToken,\n \";\": SyntaxKind.SemicolonToken,\n \",\": SyntaxKind.CommaToken,\n \"<\": SyntaxKind.LessThanToken,\n \">\": SyntaxKind.GreaterThanToken,\n \"<=\": SyntaxKind.LessThanEqualsToken,\n \">=\": SyntaxKind.GreaterThanEqualsToken,\n \"==\": SyntaxKind.EqualsEqualsToken,\n \"!=\": SyntaxKind.ExclamationEqualsToken,\n \"===\": SyntaxKind.EqualsEqualsEqualsToken,\n \"!==\": SyntaxKind.ExclamationEqualsEqualsToken,\n \"=>\": SyntaxKind.EqualsGreaterThanToken,\n \"+\": SyntaxKind.PlusToken,\n \"-\": SyntaxKind.MinusToken,\n \"**\": SyntaxKind.AsteriskAsteriskToken,\n \"*\": SyntaxKind.AsteriskToken,\n \"/\": SyntaxKind.SlashToken,\n \"%\": SyntaxKind.PercentToken,\n \"++\": SyntaxKind.PlusPlusToken,\n \"--\": SyntaxKind.MinusMinusToken,\n \"<<\": SyntaxKind.LessThanLessThanToken,\n \"</\": SyntaxKind.LessThanSlashToken,\n \">>\": SyntaxKind.GreaterThanGreaterThanToken,\n \">>>\": SyntaxKind.GreaterThanGreaterThanGreaterThanToken,\n \"&\": SyntaxKind.AmpersandToken,\n \"|\": SyntaxKind.BarToken,\n \"^\": SyntaxKind.CaretToken,\n \"!\": SyntaxKind.ExclamationToken,\n \"~\": SyntaxKind.TildeToken,\n \"&&\": SyntaxKind.AmpersandAmpersandToken,\n \"||\": SyntaxKind.BarBarToken,\n \"?\": SyntaxKind.QuestionToken,\n \"??\": SyntaxKind.QuestionQuestionToken,\n \"?.\": SyntaxKind.QuestionDotToken,\n \":\": SyntaxKind.ColonToken,\n \"=\": SyntaxKind.EqualsToken,\n \"+=\": SyntaxKind.PlusEqualsToken,\n \"-=\": SyntaxKind.MinusEqualsToken,\n \"*=\": SyntaxKind.AsteriskEqualsToken,\n \"**=\": SyntaxKind.AsteriskAsteriskEqualsToken,\n \"/=\": SyntaxKind.SlashEqualsToken,\n \"%=\": SyntaxKind.PercentEqualsToken,\n \"<<=\": SyntaxKind.LessThanLessThanEqualsToken,\n \">>=\": SyntaxKind.GreaterThanGreaterThanEqualsToken,\n \">>>=\": SyntaxKind.GreaterThanGreaterThanGreaterThanEqualsToken,\n \"&=\": SyntaxKind.AmpersandEqualsToken,\n \"|=\": SyntaxKind.BarEqualsToken,\n \"^=\": SyntaxKind.CaretEqualsToken,\n \"||=\": SyntaxKind.BarBarEqualsToken,\n \"&&=\": SyntaxKind.AmpersandAmpersandEqualsToken,\n \"??=\": SyntaxKind.QuestionQuestionEqualsToken,\n \"@\": SyntaxKind.AtToken,\n \"#\": SyntaxKind.HashToken,\n \"`\": SyntaxKind.BacktickToken,\n}));\nconst charCodeToRegExpFlag = new Map([\n [CharacterCodes.d, RegularExpressionFlags.HasIndices],\n [CharacterCodes.g, RegularExpressionFlags.Global],\n [CharacterCodes.i, RegularExpressionFlags.IgnoreCase],\n [CharacterCodes.m, RegularExpressionFlags.Multiline],\n [CharacterCodes.s, RegularExpressionFlags.DotAll],\n [CharacterCodes.u, RegularExpressionFlags.Unicode],\n [CharacterCodes.v, RegularExpressionFlags.UnicodeSets],\n [CharacterCodes.y, RegularExpressionFlags.Sticky],\n]);\n/**\n * Generated by scripts/regenerate-unicode-identifier-parts.mjs on node v22.1.0 with unicode 15.1\n * based on http://www.unicode.org/reports/tr31/ and https://www.ecma-international.org/ecma-262/6.0/#sec-names-and-keywords\n * unicodeESNextIdentifierStart corresponds to the ID_Start and Other_ID_Start property, and\n * unicodeESNextIdentifierPart corresponds to ID_Continue, Other_ID_Continue, plus ID_Start and Other_ID_Start\n */\n// dprint-ignore\nconst unicodeESNextIdentifierStart = [65, 90, 97, 122, 170, 170, 181, 181, 186, 186, 192, 214, 216, 246, 248, 705, 710, 721, 736, 740, 748, 748, 750, 750, 880, 884, 886, 887, 890, 893, 895, 895, 902, 902, 904, 906, 908, 908, 910, 929, 931, 1013, 1015, 1153, 1162, 1327, 1329, 1366, 1369, 1369, 1376, 1416, 1488, 1514, 1519, 1522, 1568, 1610, 1646, 1647, 1649, 1747, 1749, 1749, 1765, 1766, 1774, 1775, 1786, 1788, 1791, 1791, 1808, 1808, 1810, 1839, 1869, 1957, 1969, 1969, 1994, 2026, 2036, 2037, 2042, 2042, 2048, 2069, 2074, 2074, 2084, 2084, 2088, 2088, 2112, 2136, 2144, 2154, 2160, 2183, 2185, 2190, 2208, 2249, 2308, 2361, 2365, 2365, 2384, 2384, 2392, 2401, 2417, 2432, 2437, 2444, 2447, 2448, 2451, 2472, 2474, 2480, 2482, 2482, 2486, 2489, 2493, 2493, 2510, 2510, 2524, 2525, 2527, 2529, 2544, 2545, 2556, 2556, 2565, 2570, 2575, 2576, 2579, 2600, 2602, 2608, 2610, 2611, 2613, 2614, 2616, 2617, 2649, 2652, 2654, 2654, 2674, 2676, 2693, 2701, 2703, 2705, 2707, 2728, 2730, 2736, 2738, 2739, 2741, 2745, 2749, 2749, 2768, 2768, 2784, 2785, 2809, 2809, 2821, 2828, 2831, 2832, 2835, 2856, 2858, 2864, 2866, 2867, 2869, 2873, 2877, 2877, 2908, 2909, 2911, 2913, 2929, 2929, 2947, 2947, 2949, 2954, 2958, 2960, 2962, 2965, 2969, 2970, 2972, 2972, 2974, 2975, 2979, 2980, 2984, 2986, 2990, 3001, 3024, 3024, 3077, 3084, 3086, 3088, 3090, 3112, 3114, 3129, 3133, 3133, 3160, 3162, 3165, 3165, 3168, 3169, 3200, 3200, 3205, 3212, 3214, 3216, 3218, 3240, 3242, 3251, 3253, 3257, 3261, 3261, 3293, 3294, 3296, 3297, 3313, 3314, 3332, 3340, 3342, 3344, 3346, 3386, 3389, 3389, 3406, 3406, 3412, 3414, 3423, 3425, 3450, 3455, 3461, 3478, 3482, 3505, 3507, 3515, 3517, 3517, 3520, 3526, 3585, 3632, 3634, 3635, 3648, 3654, 3713, 3714, 3716, 3716, 3718, 3722, 3724, 3747, 3749, 3749, 3751, 3760, 3762, 3763, 3773, 3773, 3776, 3780, 3782, 3782, 3804, 3807, 3840, 3840, 3904, 3911, 3913, 3948, 3976, 3980, 4096, 4138, 4159, 4159, 4176, 4181, 4186, 4189, 4193, 4193, 4197, 4198, 4206, 4208, 4213, 4225, 4238, 4238, 4256, 4293, 4295, 4295, 4301, 4301, 4304, 4346, 4348, 4680, 4682, 4685, 4688, 4694, 4696, 4696, 4698, 4701, 4704, 4744, 4746, 4749, 4752, 4784, 4786, 4789, 4792, 4798, 4800, 4800, 4802, 4805, 4808, 4822, 4824, 4880, 4882, 4885, 4888, 4954, 4992, 5007, 5024, 5109, 5112, 5117, 5121, 5740, 5743, 5759, 5761, 5786, 5792, 5866, 5870, 5880, 5888, 5905, 5919, 5937, 5952, 5969, 5984, 5996, 5998, 6000, 6016, 6067, 6103, 6103, 6108, 6108, 6176, 6264, 6272, 6312, 6314, 6314, 6320, 6389, 6400, 6430, 6480, 6509, 6512, 6516, 6528, 6571, 6576, 6601, 6656, 6678, 6688, 6740, 6823, 6823, 6917, 6963, 6981, 6988, 7043, 7072, 7086, 7087, 7098, 7141, 7168, 7203, 7245, 7247, 7258, 7293, 7296, 7304, 7312, 7354, 7357, 7359, 7401, 7404, 7406, 7411, 7413, 7414, 7418, 7418, 7424, 7615, 7680, 7957, 7960, 7965, 7968, 8005, 8008, 8013, 8016, 8023, 8025, 8025, 8027, 8027, 8029, 8029, 8031, 8061, 8064, 8116, 8118, 8124, 8126, 8126, 8130, 8132, 8134, 8140, 8144, 8147, 8150, 8155, 8160, 8172, 8178, 8180, 8182, 8188, 8305, 8305, 8319, 8319, 8336, 8348, 8450, 8450, 8455, 8455, 8458, 8467, 8469, 8469, 8472, 8477, 8484, 8484, 8486, 8486, 8488, 8488, 8490, 8505, 8508, 8511, 8517, 8521, 8526, 8526, 8544, 8584, 11264, 11492, 11499, 11502, 11506, 11507, 11520, 11557, 11559, 11559, 11565, 11565, 11568, 11623, 11631, 11631, 11648, 11670, 11680, 11686, 11688, 11694, 11696, 11702, 11704, 11710, 11712, 11718, 11720, 11726, 11728, 11734, 11736, 11742, 12293, 12295, 12321, 12329, 12337, 12341, 12344, 12348, 12353, 12438, 12443, 12447, 12449, 12538, 12540, 12543, 12549, 12591, 12593, 12686, 12704, 12735, 12784, 12799, 13312, 19903, 19968, 42124, 42192, 42237, 42240, 42508, 42512, 42527, 42538, 42539, 42560, 42606, 42623, 42653, 42656, 42735, 42775, 42783, 42786, 42888, 42891, 42954, 42960, 42961, 42963, 42963, 42965, 42969, 42994, 43009, 43011, 43013, 43015, 43018, 43020, 43042, 43072, 43123, 43138, 43187, 43250, 43255, 43259, 43259, 43261, 43262, 43274, 43301, 43312, 43334, 43360, 43388, 43396, 43442, 43471, 43471, 43488, 43492, 43494, 43503, 43514, 43518, 43520, 43560, 43584, 43586, 43588, 43595, 43616, 43638, 43642, 43642, 43646, 43695, 43697, 43697, 43701, 43702, 43705, 43709, 43712, 43712, 43714, 43714, 43739, 43741, 43744, 43754, 43762, 43764, 43777, 43782, 43785, 43790, 43793, 43798, 43808, 43814, 43816, 43822, 43824, 43866, 43868, 43881, 43888, 44002, 44032, 55203, 55216, 55238, 55243, 55291, 63744, 64109, 64112, 64217, 64256, 64262, 64275, 64279, 64285, 64285, 64287, 64296, 64298, 64310, 64312, 64316, 64318, 64318, 64320, 64321, 64323, 64324, 64326, 64433, 64467, 64829, 64848, 64911, 64914, 64967, 65008, 65019, 65136, 65140, 65142, 65276, 65313, 65338, 65345, 65370, 65382, 65470, 65474, 65479, 65482, 65487, 65490, 65495, 65498, 65500, 65536, 65547, 65549, 65574, 65576, 65594, 65596, 65597, 65599, 65613, 65616, 65629, 65664, 65786, 65856, 65908, 66176, 66204, 66208, 66256, 66304, 66335, 66349, 66378, 66384, 66421, 66432, 66461, 66464, 66499, 66504, 66511, 66513, 66517, 66560, 66717, 66736, 66771, 66776, 66811, 66816, 66855, 66864, 66915, 66928, 66938, 66940, 66954, 66956, 66962, 66964, 66965, 66967, 66977, 66979, 66993, 66995, 67001, 67003, 67004, 67072, 67382, 67392, 67413, 67424, 67431, 67456, 67461, 67463, 67504, 67506, 67514, 67584, 67589, 67592, 67592, 67594, 67637, 67639, 67640, 67644, 67644, 67647, 67669, 67680, 67702, 67712, 67742, 67808, 67826, 67828, 67829, 67840, 67861, 67872, 67897, 67968, 68023, 68030, 68031, 68096, 68096, 68112, 68115, 68117, 68119, 68121, 68149, 68192, 68220, 68224, 68252, 68288, 68295, 68297, 68324, 68352, 68405, 68416, 68437, 68448, 68466, 68480, 68497, 68608, 68680, 68736, 68786, 68800, 68850, 68864, 68899, 69248, 69289, 69296, 69297, 69376, 69404, 69415, 69415, 69424, 69445, 69488, 69505, 69552, 69572, 69600, 69622, 69635, 69687, 69745, 69746, 69749, 69749, 69763, 69807, 69840, 69864, 69891, 69926, 69956, 69956, 69959, 69959, 69968, 70002, 70006, 70006, 70019, 70066, 70081, 70084, 70106, 70106, 70108, 70108, 70144, 70161, 70163, 70187, 70207, 70208, 70272, 70278, 70280, 70280, 70282, 70285, 70287, 70301, 70303, 70312, 70320, 70366, 70405, 70412, 70415, 70416, 70419, 70440, 70442, 70448, 70450, 70451, 70453, 70457, 70461, 70461, 70480, 70480, 70493, 70497, 70656, 70708, 70727, 70730, 70751, 70753, 70784, 70831, 70852, 70853, 70855, 70855, 71040, 71086, 71128, 71131, 71168, 71215, 71236, 71236, 71296, 71338, 71352, 71352, 71424, 71450, 71488, 71494, 71680, 71723, 71840, 71903, 71935, 71942, 71945, 71945, 71948, 71955, 71957, 71958, 71960, 71983, 71999, 71999, 72001, 72001, 72096, 72103, 72106, 72144, 72161, 72161, 72163, 72163, 72192, 72192, 72203, 72242, 72250, 72250, 72272, 72272, 72284, 72329, 72349, 72349, 72368, 72440, 72704, 72712, 72714, 72750, 72768, 72768, 72818, 72847, 72960, 72966, 72968, 72969, 72971, 73008, 73030, 73030, 73056, 73061, 73063, 73064, 73066, 73097, 73112, 73112, 73440, 73458, 73474, 73474, 73476, 73488, 73490, 73523, 73648, 73648, 73728, 74649, 74752, 74862, 74880, 75075, 77712, 77808, 77824, 78895, 78913, 78918, 82944, 83526, 92160, 92728, 92736, 92766, 92784, 92862, 92880, 92909, 92928, 92975, 92992, 92995, 93027, 93047, 93053, 93071, 93760, 93823, 93952, 94026, 94032, 94032, 94099, 94111, 94176, 94177, 94179, 94179, 94208, 100343, 100352, 101589, 101632, 101640, 110576, 110579, 110581, 110587, 110589, 110590, 110592, 110882, 110898, 110898, 110928, 110930, 110933, 110933, 110948, 110951, 110960, 111355, 113664, 113770, 113776, 113788, 113792, 113800, 113808, 113817, 119808, 119892, 119894, 119964, 119966, 119967, 119970, 119970, 119973, 119974, 119977, 119980, 119982, 119993, 119995, 119995, 119997, 120003, 120005, 120069, 120071, 120074, 120077, 120084, 120086, 120092, 120094, 120121, 120123, 120126, 120128, 120132, 120134, 120134, 120138, 120144, 120146, 120485, 120488, 120512, 120514, 120538, 120540, 120570, 120572, 120596, 120598, 120628, 120630, 120654, 120656, 120686, 120688, 120712, 120714, 120744, 120746, 120770, 120772, 120779, 122624, 122654, 122661, 122666, 122928, 122989, 123136, 123180, 123191, 123197, 123214, 123214, 123536, 123565, 123584, 123627, 124112, 124139, 124896, 124902, 124904, 124907, 124909, 124910, 124912, 124926, 124928, 125124, 125184, 125251, 125259, 125259, 126464, 126467, 126469, 126495, 126497, 126498, 126500, 126500, 126503, 126503, 126505, 126514, 126516, 126519, 126521, 126521, 126523, 126523, 126530, 126530, 126535, 126535, 126537, 126537, 126539, 126539, 126541, 126543, 126545, 126546, 126548, 126548, 126551, 126551, 126553, 126553, 126555, 126555, 126557, 126557, 126559, 126559, 126561, 126562, 126564, 126564, 126567, 126570, 126572, 126578, 126580, 126583, 126585, 126588, 126590, 126590, 126592, 126601, 126603, 126619, 126625, 126627, 126629, 126633, 126635, 126651, 131072, 173791, 173824, 177977, 177984, 178205, 178208, 183969, 183984, 191456, 191472, 192093, 194560, 195101, 196608, 201546, 201552, 205743];\n// dprint-ignore\nconst unicodeESNextIdentifierPart = [48, 57, 65, 90, 95, 95, 97, 122, 170, 170, 181, 181, 183, 183, 186, 186, 192, 214, 216, 246, 248, 705, 710, 721, 736, 740, 748, 748, 750, 750, 768, 884, 886, 887, 890, 893, 895, 895, 902, 906, 908, 908, 910, 929, 931, 1013, 1015, 1153, 1155, 1159, 1162, 1327, 1329, 1366, 1369, 1369, 1376, 1416, 1425, 1469, 1471, 1471, 1473, 1474, 1476, 1477, 1479, 1479, 1488, 1514, 1519, 1522, 1552, 1562, 1568, 1641, 1646, 1747, 1749, 1756, 1759, 1768, 1770, 1788, 1791, 1791, 1808, 1866, 1869, 1969, 1984, 2037, 2042, 2042, 2045, 2045, 2048, 2093, 2112, 2139, 2144, 2154, 2160, 2183, 2185, 2190, 2200, 2273, 2275, 2403, 2406, 2415, 2417, 2435, 2437, 2444, 2447, 2448, 2451, 2472, 2474, 2480, 2482, 2482, 2486, 2489, 2492, 2500, 2503, 2504, 2507, 2510, 2519, 2519, 2524, 2525, 2527, 2531, 2534, 2545, 2556, 2556, 2558, 2558, 2561, 2563, 2565, 2570, 2575, 2576, 2579, 2600, 2602, 2608, 2610, 2611, 2613, 2614, 2616, 2617, 2620, 2620, 2622, 2626, 2631, 2632, 2635, 2637, 2641, 2641, 2649, 2652, 2654, 2654, 2662, 2677, 2689, 2691, 2693, 2701, 2703, 2705, 2707, 2728, 2730, 2736, 2738, 2739, 2741, 2745, 2748, 2757, 2759, 2761, 2763, 2765, 2768, 2768, 2784, 2787, 2790, 2799, 2809, 2815, 2817, 2819, 2821, 2828, 2831, 2832, 2835, 2856, 2858, 2864, 2866, 2867, 2869, 2873, 2876, 2884, 2887, 2888, 2891, 2893, 2901, 2903, 2908, 2909, 2911, 2915, 2918, 2927, 2929, 2929, 2946, 2947, 2949, 2954, 2958, 2960, 2962, 2965, 2969, 2970, 2972, 2972, 2974, 2975, 2979, 2980, 2984, 2986, 2990, 3001, 3006, 3010, 3014, 3016, 3018, 3021, 3024, 3024, 3031, 3031, 3046, 3055, 3072, 3084, 3086, 3088, 3090, 3112, 3114, 3129, 3132, 3140, 3142, 3144, 3146, 3149, 3157, 3158, 3160, 3162, 3165, 3165, 3168, 3171, 3174, 3183, 3200, 3203, 3205, 3212, 3214, 3216, 3218, 3240, 3242, 3251, 3253, 3257, 3260, 3268, 3270, 3272, 3274, 3277, 3285, 3286, 3293, 3294, 3296, 3299, 3302, 3311, 3313, 3315, 3328, 3340, 3342, 3344, 3346, 3396, 3398, 3400, 3402, 3406, 3412, 3415, 3423, 3427, 3430, 3439, 3450, 3455, 3457, 3459, 3461, 3478, 3482, 3505, 3507, 3515, 3517, 3517, 3520, 3526, 3530, 3530, 3535, 3540, 3542, 3542, 3544, 3551, 3558, 3567, 3570, 3571, 3585, 3642, 3648, 3662, 3664, 3673, 3713, 3714, 3716, 3716, 3718, 3722, 3724, 3747, 3749, 3749, 3751, 3773, 3776, 3780, 3782, 3782, 3784, 3790, 3792, 3801, 3804, 3807, 3840, 3840, 3864, 3865, 3872, 3881, 3893, 3893, 3895, 3895, 3897, 3897, 3902, 3911, 3913, 3948, 3953, 3972, 3974, 3991, 3993, 4028, 4038, 4038, 4096, 4169, 4176, 4253, 4256, 4293, 4295, 4295, 4301, 4301, 4304, 4346, 4348, 4680, 4682, 4685, 4688, 4694, 4696, 4696, 4698, 4701, 4704, 4744, 4746, 4749, 4752, 4784, 4786, 4789, 4792, 4798, 4800, 4800, 4802, 4805, 4808, 4822, 4824, 4880, 4882, 4885, 4888, 4954, 4957, 4959, 4969, 4977, 4992, 5007, 5024, 5109, 5112, 5117, 5121, 5740, 5743, 5759, 5761, 5786, 5792, 5866, 5870, 5880, 5888, 5909, 5919, 5940, 5952, 5971, 5984, 5996, 5998, 6000, 6002, 6003, 6016, 6099, 6103, 6103, 6108, 6109, 6112, 6121, 6155, 6157, 6159, 6169, 6176, 6264, 6272, 6314, 6320, 6389, 6400, 6430, 6432, 6443, 6448, 6459, 6470, 6509, 6512, 6516, 6528, 6571, 6576, 6601, 6608, 6618, 6656, 6683, 6688, 6750, 6752, 6780, 6783, 6793, 6800, 6809, 6823, 6823, 6832, 6845, 6847, 6862, 6912, 6988, 6992, 7001, 7019, 7027, 7040, 7155, 7168, 7223, 7232, 7241, 7245, 7293, 7296, 7304, 7312, 7354, 7357, 7359, 7376, 7378, 7380, 7418, 7424, 7957, 7960, 7965, 7968, 8005, 8008, 8013, 8016, 8023, 8025, 8025, 8027, 8027, 8029, 8029, 8031, 8061, 8064, 8116, 8118, 8124, 8126, 8126, 8130, 8132, 8134, 8140, 8144, 8147, 8150, 8155, 8160, 8172, 8178, 8180, 8182, 8188, 8204, 8205, 8255, 8256, 8276, 8276, 8305, 8305, 8319, 8319, 8336, 8348, 8400, 8412, 8417, 8417, 8421, 8432, 8450, 8450, 8455, 8455, 8458, 8467, 8469, 8469, 8472, 8477, 8484, 8484, 8486, 8486, 8488, 8488, 8490, 8505, 8508, 8511, 8517, 8521, 8526, 8526, 8544, 8584, 11264, 11492, 11499, 11507, 11520, 11557, 11559, 11559, 11565, 11565, 11568, 11623, 11631, 11631, 11647, 11670, 11680, 11686, 11688, 11694, 11696, 11702, 11704, 11710, 11712, 11718, 11720, 11726, 11728, 11734, 11736, 11742, 11744, 11775, 12293, 12295, 12321, 12335, 12337, 12341, 12344, 12348, 12353, 12438, 12441, 12447, 12449, 12543, 12549, 12591, 12593, 12686, 12704, 12735, 12784, 12799, 13312, 19903, 19968, 42124, 42192, 42237, 42240, 42508, 42512, 42539, 42560, 42607, 42612, 42621, 42623, 42737, 42775, 42783, 42786, 42888, 42891, 42954, 42960, 42961, 42963, 42963, 42965, 42969, 42994, 43047, 43052, 43052, 43072, 43123, 43136, 43205, 43216, 43225, 43232, 43255, 43259, 43259, 43261, 43309, 43312, 43347, 43360, 43388, 43392, 43456, 43471, 43481, 43488, 43518, 43520, 43574, 43584, 43597, 43600, 43609, 43616, 43638, 43642, 43714, 43739, 43741, 43744, 43759, 43762, 43766, 43777, 43782, 43785, 43790, 43793, 43798, 43808, 43814, 43816, 43822, 43824, 43866, 43868, 43881, 43888, 44010, 44012, 44013, 44016, 44025, 44032, 55203, 55216, 55238, 55243, 55291, 63744, 64109, 64112, 64217, 64256, 64262, 64275, 64279, 64285, 64296, 64298, 64310, 64312, 64316, 64318, 64318, 64320, 64321, 64323, 64324, 64326, 64433, 64467, 64829, 64848, 64911, 64914, 64967, 65008, 65019, 65024, 65039, 65056, 65071, 65075, 65076, 65101, 65103, 65136, 65140, 65142, 65276, 65296, 65305, 65313, 65338, 65343, 65343, 65345, 65370, 65381, 65470, 65474, 65479, 65482, 65487, 65490, 65495, 65498, 65500, 65536, 65547, 65549, 65574, 65576, 65594, 65596, 65597, 65599, 65613, 65616, 65629, 65664, 65786, 65856, 65908, 66045, 66045, 66176, 66204, 66208, 66256, 66272, 66272, 66304, 66335, 66349, 66378, 66384, 66426, 66432, 66461, 66464, 66499, 66504, 66511, 66513, 66517, 66560, 66717, 66720, 66729, 66736, 66771, 66776, 66811, 66816, 66855, 66864, 66915, 66928, 66938, 66940, 66954, 66956, 66962, 66964, 66965, 66967, 66977, 66979, 66993, 66995, 67001, 67003, 67004, 67072, 67382, 67392, 67413, 67424, 67431, 67456, 67461, 67463, 67504, 67506, 67514, 67584, 67589, 67592, 67592, 67594, 67637, 67639, 67640, 67644, 67644, 67647, 67669, 67680, 67702, 67712, 67742, 67808, 67826, 67828, 67829, 67840, 67861, 67872, 67897, 67968, 68023, 68030, 68031, 68096, 68099, 68101, 68102, 68108, 68115, 68117, 68119, 68121, 68149, 68152, 68154, 68159, 68159, 68192, 68220, 68224, 68252, 68288, 68295, 68297, 68326, 68352, 68405, 68416, 68437, 68448, 68466, 68480, 68497, 68608, 68680, 68736, 68786, 68800, 68850, 68864, 68903, 68912, 68921, 69248, 69289, 69291, 69292, 69296, 69297, 69373, 69404, 69415, 69415, 69424, 69456, 69488, 69509, 69552, 69572, 69600, 69622, 69632, 69702, 69734, 69749, 69759, 69818, 69826, 69826, 69840, 69864, 69872, 69881, 69888, 69940, 69942, 69951, 69956, 69959, 69968, 70003, 70006, 70006, 70016, 70084, 70089, 70092, 70094, 70106, 70108, 70108, 70144, 70161, 70163, 70199, 70206, 70209, 70272, 70278, 70280, 70280, 70282, 70285, 70287, 70301, 70303, 70312, 70320, 70378, 70384, 70393, 70400, 70403, 70405, 70412, 70415, 70416, 70419, 70440, 70442, 70448, 70450, 70451, 70453, 70457, 70459, 70468, 70471, 70472, 70475, 70477, 70480, 70480, 70487, 70487, 70493, 70499, 70502, 70508, 70512, 70516, 70656, 70730, 70736, 70745, 70750, 70753, 70784, 70853, 70855, 70855, 70864, 70873, 71040, 71093, 71096, 71104, 71128, 71133, 71168, 71232, 71236, 71236, 71248, 71257, 71296, 71352, 71360, 71369, 71424, 71450, 71453, 71467, 71472, 71481, 71488, 71494, 71680, 71738, 71840, 71913, 71935, 71942, 71945, 71945, 71948, 71955, 71957, 71958, 71960, 71989, 71991, 71992, 71995, 72003, 72016, 72025, 72096, 72103, 72106, 72151, 72154, 72161, 72163, 72164, 72192, 72254, 72263, 72263, 72272, 72345, 72349, 72349, 72368, 72440, 72704, 72712, 72714, 72758, 72760, 72768, 72784, 72793, 72818, 72847, 72850, 72871, 72873, 72886, 72960, 72966, 72968, 72969, 72971, 73014, 73018, 73018, 73020, 73021, 73023, 73031, 73040, 73049, 73056, 73061, 73063, 73064, 73066, 73102, 73104, 73105, 73107, 73112, 73120, 73129, 73440, 73462, 73472, 73488, 73490, 73530, 73534, 73538, 73552, 73561, 73648, 73648, 73728, 74649, 74752, 74862, 74880, 75075, 77712, 77808, 77824, 78895, 78912, 78933, 82944, 83526, 92160, 92728, 92736, 92766, 92768, 92777, 92784, 92862, 92864, 92873, 92880, 92909, 92912, 92916, 92928, 92982, 92992, 92995, 93008, 93017, 93027, 93047, 93053, 93071, 93760, 93823, 93952, 94026, 94031, 94087, 94095, 94111, 94176, 94177, 94179, 94180, 94192, 94193, 94208, 100343, 100352, 101589, 101632, 101640, 110576, 110579, 110581, 110587, 110589, 110590, 110592, 110882, 110898, 110898, 110928, 110930, 110933, 110933, 110948, 110951, 110960, 111355, 113664, 113770, 113776, 113788, 113792, 113800, 113808, 113817, 113821, 113822, 118528, 118573, 118576, 118598, 119141, 119145, 119149, 119154, 119163, 119170, 119173, 119179, 119210, 119213, 119362, 119364, 119808, 119892, 119894, 119964, 119966, 119967, 119970, 119970, 119973, 119974, 119977, 119980, 119982, 119993, 119995, 119995, 119997, 120003, 120005, 120069, 120071, 120074, 120077, 120084, 120086, 120092, 120094, 120121, 120123, 120126, 120128, 120132, 120134, 120134, 120138, 120144, 120146, 120485, 120488, 120512, 120514, 120538, 120540, 120570, 120572, 120596, 120598, 120628, 120630, 120654, 120656, 120686, 120688, 120712, 120714, 120744, 120746, 120770, 120772, 120779, 120782, 120831, 121344, 121398, 121403, 121452, 121461, 121461, 121476, 121476, 121499, 121503, 121505, 121519, 122624, 122654, 122661, 122666, 122880, 122886, 122888, 122904, 122907, 122913, 122915, 122916, 122918, 122922, 122928, 122989, 123023, 123023, 123136, 123180, 123184, 123197, 123200, 123209, 123214, 123214, 123536, 123566, 123584, 123641, 124112, 124153, 124896, 124902, 124904, 124907, 124909, 124910, 124912, 124926, 124928, 125124, 125136, 125142, 125184, 125259, 125264, 125273, 126464, 126467, 126469, 126495, 126497, 126498, 126500, 126500, 126503, 126503, 126505, 126514, 126516, 126519, 126521, 126521, 126523, 126523, 126530, 126530, 126535, 126535, 126537, 126537, 126539, 126539, 126541, 126543, 126545, 126546, 126548, 126548, 126551, 126551, 126553, 126553, 126555, 126555, 126557, 126557, 126559, 126559, 126561, 126562, 126564, 126564, 126567, 126570, 126572, 126578, 126580, 126583, 126585, 126588, 126590, 126590, 126592, 126601, 126603, 126619, 126625, 126627, 126629, 126633, 126635, 126651, 130032, 130041, 131072, 173791, 173824, 177977, 177984, 178205, 178208, 183969, 183984, 191456, 191472, 192093, 194560, 195101, 196608, 201546, 201552, 205743, 917760, 917999];\nconst commentDirectiveRegExSingleLine = /^\\/\\/\\/?\\s*@(ts-expect-error|ts-ignore)/;\nconst commentDirectiveRegExMultiLine = /^(?:\\/|\\*)*\\s*@(ts-expect-error|ts-ignore)/;\nconst jsDocTagTerminators = new Set([\" \", \"\\t\", \"\\n\", \"\\r\", \"}\", \"*\"]);\nfunction hasJSDocTag(text, offset, ...tags) {\n for (const tag of tags) {\n if (text.startsWith(tag, offset)) {\n if (offset + tag.length === text.length) {\n return true;\n }\n if (jsDocTagTerminators.has(text[offset + tag.length])) {\n return true;\n }\n }\n }\n return false;\n}\nfunction scanJSDocCommentForTags(text, tokenFlags) {\n let offset = 0;\n while (true) {\n const i = text.indexOf(\"@\", offset);\n if (i < 0) {\n return tokenFlags;\n }\n offset = i + 1;\n if (!(tokenFlags & TokenFlags.PrecedingJSDocWithDeprecated) && hasJSDocTag(text, offset, \"deprecated\")) {\n tokenFlags |= TokenFlags.PrecedingJSDocWithDeprecated;\n }\n if (!(tokenFlags & TokenFlags.PrecedingJSDocWithSeeOrLink) && hasJSDocTag(text, offset, \"see\", \"link\", \"linkcode\", \"linkplain\")) {\n tokenFlags |= TokenFlags.PrecedingJSDocWithSeeOrLink;\n }\n if ((tokenFlags & (TokenFlags.PrecedingJSDocWithDeprecated | TokenFlags.PrecedingJSDocWithSeeOrLink)) ===\n (TokenFlags.PrecedingJSDocWithDeprecated | TokenFlags.PrecedingJSDocWithSeeOrLink)) {\n return tokenFlags;\n }\n }\n}\nfunction lookupInUnicodeMap(code, map) {\n if (code < map[0]) {\n return false;\n }\n let lo = 0;\n let hi = map.length;\n let mid;\n while (lo + 1 < hi) {\n mid = lo + (hi - lo) / 2;\n mid -= mid % 2;\n if (map[mid] <= code && code <= map[mid + 1]) {\n return true;\n }\n if (code < map[mid]) {\n hi = mid;\n }\n else {\n lo = mid + 2;\n }\n }\n return false;\n}\nexport function isUnicodeIdentifierStart(code) {\n return lookupInUnicodeMap(code, unicodeESNextIdentifierStart);\n}\nfunction isUnicodeIdentifierPart(code) {\n return lookupInUnicodeMap(code, unicodeESNextIdentifierPart);\n}\nfunction makeReverseMap(source) {\n const result = [];\n source.forEach((value, name) => {\n result[value] = name;\n });\n return result;\n}\nconst tokenStrings = makeReverseMap(textToToken);\nexport function tokenToString(t) {\n return tokenStrings[t];\n}\nexport function stringToToken(s) {\n return textToToken.get(s);\n}\nexport function characterCodeToRegularExpressionFlag(ch) {\n return charCodeToRegExpFlag.get(ch);\n}\nexport function computeLineStarts(text) {\n const result = [];\n let pos = 0;\n let lineStart = 0;\n while (pos < text.length) {\n const ch = text.charCodeAt(pos);\n pos++;\n switch (ch) {\n case CharacterCodes.carriageReturn:\n if (text.charCodeAt(pos) === CharacterCodes.lineFeed) {\n pos++;\n }\n // falls through\n case CharacterCodes.lineFeed:\n result.push(lineStart);\n lineStart = pos;\n break;\n default:\n if (ch > CharacterCodes.maxAsciiCharacter && isLineBreak(ch)) {\n result.push(lineStart);\n lineStart = pos;\n }\n break;\n }\n }\n result.push(lineStart);\n return result;\n}\nexport function isWhiteSpaceLike(ch) {\n return isWhiteSpaceSingleLine(ch) || isLineBreak(ch);\n}\nexport function isWhiteSpaceSingleLine(ch) {\n return ch === CharacterCodes.space ||\n ch === CharacterCodes.tab ||\n ch === CharacterCodes.verticalTab ||\n ch === CharacterCodes.formFeed ||\n ch === CharacterCodes.nonBreakingSpace ||\n ch === CharacterCodes.nextLine ||\n ch === CharacterCodes.ogham ||\n ch >= CharacterCodes.enQuad && ch <= CharacterCodes.zeroWidthSpace ||\n ch === CharacterCodes.narrowNoBreakSpace ||\n ch === CharacterCodes.mathematicalSpace ||\n ch === CharacterCodes.ideographicSpace ||\n ch === CharacterCodes.byteOrderMark;\n}\nexport function isLineBreak(ch) {\n return ch === CharacterCodes.lineFeed ||\n ch === CharacterCodes.carriageReturn ||\n ch === CharacterCodes.lineSeparator ||\n ch === CharacterCodes.paragraphSeparator;\n}\nfunction isDigit(ch) {\n return ch >= CharacterCodes._0 && ch <= CharacterCodes._9;\n}\nfunction isHexDigit(ch) {\n return isDigit(ch) || ch >= CharacterCodes.A && ch <= CharacterCodes.F || ch >= CharacterCodes.a && ch <= CharacterCodes.f;\n}\nfunction isOctalDigit(ch) {\n return ch >= CharacterCodes._0 && ch <= CharacterCodes._7;\n}\nexport function couldStartTrivia(text, pos) {\n const ch = text.charCodeAt(pos);\n switch (ch) {\n case CharacterCodes.carriageReturn:\n case CharacterCodes.lineFeed:\n case CharacterCodes.tab:\n case CharacterCodes.verticalTab:\n case CharacterCodes.formFeed:\n case CharacterCodes.space:\n case CharacterCodes.slash:\n case CharacterCodes.lessThan:\n case CharacterCodes.bar:\n case CharacterCodes.equals:\n case CharacterCodes.greaterThan:\n return true;\n case CharacterCodes.hash:\n return pos === 0;\n default:\n return ch > CharacterCodes.maxAsciiCharacter;\n }\n}\nexport function skipTrivia(text, pos, stopAfterLineBreak, stopAtComments, inJSDoc) {\n if (pos < 0) {\n return pos;\n }\n let canConsumeStar = false;\n while (true) {\n const ch = text.charCodeAt(pos);\n switch (ch) {\n case CharacterCodes.carriageReturn:\n if (text.charCodeAt(pos + 1) === CharacterCodes.lineFeed) {\n pos++;\n }\n // falls through\n case CharacterCodes.lineFeed:\n pos++;\n if (stopAfterLineBreak) {\n return pos;\n }\n canConsumeStar = !!inJSDoc;\n continue;\n case CharacterCodes.tab:\n case CharacterCodes.verticalTab:\n case CharacterCodes.formFeed:\n case CharacterCodes.space:\n pos++;\n continue;\n case CharacterCodes.slash:\n if (stopAtComments) {\n break;\n }\n if (text.charCodeAt(pos + 1) === CharacterCodes.slash) {\n pos += 2;\n while (pos < text.length) {\n if (isLineBreak(text.charCodeAt(pos))) {\n break;\n }\n pos++;\n }\n canConsumeStar = false;\n continue;\n }\n if (text.charCodeAt(pos + 1) === CharacterCodes.asterisk) {\n pos += 2;\n while (pos < text.length) {\n if (text.charCodeAt(pos) === CharacterCodes.asterisk && text.charCodeAt(pos + 1) === CharacterCodes.slash) {\n pos += 2;\n break;\n }\n pos++;\n }\n canConsumeStar = false;\n continue;\n }\n break;\n case CharacterCodes.lessThan:\n case CharacterCodes.bar:\n case CharacterCodes.equals:\n case CharacterCodes.greaterThan:\n if (isConflictMarkerTrivia(text, pos)) {\n pos = scanConflictMarkerTrivia(text, pos);\n canConsumeStar = false;\n continue;\n }\n break;\n case CharacterCodes.hash:\n if (pos === 0 && isShebangTrivia(text, pos)) {\n pos = scanShebangTrivia(text, pos);\n continue;\n }\n break;\n case CharacterCodes.asterisk:\n if (canConsumeStar) {\n pos++;\n canConsumeStar = false;\n continue;\n }\n break;\n default:\n if (ch > CharacterCodes.maxAsciiCharacter && (isWhiteSpaceLike(ch))) {\n pos++;\n continue;\n }\n break;\n }\n return pos;\n }\n}\nfunction isConflictMarkerTrivia(text, pos) {\n if (pos >= text.length) {\n return false;\n }\n const ch = text.charCodeAt(pos);\n if (pos === 0 || isLineBreak(text.charCodeAt(pos - 1))) {\n if (ch === CharacterCodes.lessThan || ch === CharacterCodes.greaterThan || ch === CharacterCodes.equals) {\n if (pos + 6 < text.length && text.charCodeAt(pos + 1) === ch && text.charCodeAt(pos + 2) === ch && text.charCodeAt(pos + 3) === ch && text.charCodeAt(pos + 4) === ch && text.charCodeAt(pos + 5) === ch && text.charCodeAt(pos + 6) === ch) {\n return ch === CharacterCodes.equals || text.charCodeAt(pos + 7) === CharacterCodes.space;\n }\n }\n if (ch === CharacterCodes.bar && pos + 6 < text.length && text.charCodeAt(pos + 1) === ch && text.charCodeAt(pos + 2) === ch && text.charCodeAt(pos + 3) === ch && text.charCodeAt(pos + 4) === ch && text.charCodeAt(pos + 5) === ch && text.charCodeAt(pos + 6) === ch) {\n return true;\n }\n }\n return false;\n}\nfunction scanConflictMarkerTrivia(text, pos) {\n const ch = text.charCodeAt(pos);\n const len = text.length;\n if (ch === CharacterCodes.lessThan || ch === CharacterCodes.greaterThan) {\n while (pos < len && !isLineBreak(text.charCodeAt(pos))) {\n pos++;\n }\n }\n else {\n // Consume everything from the start of a ||||||| or ======= marker to the start\n // of the next ======= or >>>>>>> marker.\n pos += 7; // skip marker\n while (pos < len) {\n const currentChar = text.charCodeAt(pos);\n if ((currentChar === CharacterCodes.equals || currentChar === CharacterCodes.greaterThan) && isConflictMarkerTrivia(text, pos)) {\n break;\n }\n pos++;\n }\n }\n return pos;\n}\nfunction isShebangTrivia(text, pos) {\n return pos === 0 && text.charCodeAt(0) === CharacterCodes.hash && text.charCodeAt(1) === CharacterCodes.exclamation;\n}\nfunction scanShebangTrivia(text, pos) {\n pos += 2;\n while (pos < text.length) {\n if (isLineBreak(text.charCodeAt(pos))) {\n break;\n }\n pos++;\n }\n return pos;\n}\nfunction iterateCommentRanges(reduce, text, pos, trailing, cb, state, initial) {\n let pendingPos;\n let pendingEnd;\n let pendingKind;\n let pendingHasTrailingNewLine;\n let hasPendingCommentRange = false;\n let collecting = trailing;\n let accumulator = initial;\n if (pos === 0) {\n collecting = true;\n const shebang = getShebang(text);\n if (shebang) {\n pos = shebang.length;\n }\n }\n scan: while (pos >= 0 && pos < text.length) {\n const ch = text.charCodeAt(pos);\n switch (ch) {\n case CharacterCodes.carriageReturn:\n if (text.charCodeAt(pos + 1) === CharacterCodes.lineFeed) {\n pos++;\n }\n // falls through\n case CharacterCodes.lineFeed:\n pos++;\n if (trailing) {\n break scan;\n }\n collecting = true;\n if (hasPendingCommentRange) {\n pendingHasTrailingNewLine = true;\n }\n continue;\n case CharacterCodes.tab:\n case CharacterCodes.verticalTab:\n case CharacterCodes.formFeed:\n case CharacterCodes.space:\n pos++;\n continue;\n case CharacterCodes.slash:\n const nextChar = text.charCodeAt(pos + 1);\n let hasTrailingNewLine = false;\n if (nextChar === CharacterCodes.slash || nextChar === CharacterCodes.asterisk) {\n const kind = nextChar === CharacterCodes.slash ? SyntaxKind.SingleLineCommentTrivia : SyntaxKind.MultiLineCommentTrivia;\n const startPos = pos;\n pos += 2;\n if (nextChar === CharacterCodes.slash) {\n while (pos < text.length) {\n if (isLineBreak(text.charCodeAt(pos))) {\n hasTrailingNewLine = true;\n break;\n }\n pos++;\n }\n }\n else {\n while (pos < text.length) {\n if (text.charCodeAt(pos) === CharacterCodes.asterisk && text.charCodeAt(pos + 1) === CharacterCodes.slash) {\n pos += 2;\n break;\n }\n pos++;\n }\n }\n if (collecting) {\n if (hasPendingCommentRange) {\n accumulator = cb(pendingPos, pendingEnd, pendingKind, pendingHasTrailingNewLine, state, accumulator);\n if (!reduce && accumulator) {\n return accumulator;\n }\n }\n pendingPos = startPos;\n pendingEnd = pos;\n pendingKind = kind;\n pendingHasTrailingNewLine = hasTrailingNewLine;\n hasPendingCommentRange = true;\n }\n continue;\n }\n break scan;\n default:\n if (ch > CharacterCodes.maxAsciiCharacter && (isWhiteSpaceLike(ch))) {\n if (hasPendingCommentRange && isLineBreak(ch)) {\n pendingHasTrailingNewLine = true;\n }\n pos++;\n continue;\n }\n break scan;\n }\n }\n if (hasPendingCommentRange) {\n accumulator = cb(pendingPos, pendingEnd, pendingKind, pendingHasTrailingNewLine, state, accumulator);\n }\n return accumulator;\n}\nfunction appendCommentRange(pos, end, kind, hasTrailingNewLine, _state, comments = []) {\n comments.push({ kind, pos, end, hasTrailingNewLine });\n return comments;\n}\nexport function forEachLeadingCommentRange(text, pos, cb, state) {\n return iterateCommentRanges(/*reduce*/ false, text, pos, /*trailing*/ false, cb, state, /*initial*/ undefined);\n}\nexport function forEachTrailingCommentRange(text, pos, cb, state) {\n return iterateCommentRanges(/*reduce*/ false, text, pos, /*trailing*/ true, cb, state, /*initial*/ undefined);\n}\nexport function reduceEachLeadingCommentRange(text, pos, cb, state, initial) {\n return iterateCommentRanges(/*reduce*/ true, text, pos, /*trailing*/ false, cb, state, initial);\n}\nexport function reduceEachTrailingCommentRange(text, pos, cb, state, initial) {\n return iterateCommentRanges(/*reduce*/ true, text, pos, /*trailing*/ true, cb, state, initial);\n}\nexport function getLeadingCommentRanges(text, pos) {\n return reduceEachLeadingCommentRange(text, pos, appendCommentRange, /*state*/ undefined, /*initial*/ undefined);\n}\nexport function getTrailingCommentRanges(text, pos) {\n return reduceEachTrailingCommentRange(text, pos, appendCommentRange, /*state*/ undefined, /*initial*/ undefined);\n}\nexport function getShebang(text) {\n const shebang = /^#!.*/;\n if (isShebangTrivia(text, 0)) {\n const match = shebang.exec(text);\n if (match) {\n return match[0];\n }\n }\n return undefined;\n}\nexport function isIdentifierStart(ch, _languageVersion) {\n return ch >= CharacterCodes.A && ch <= CharacterCodes.Z || ch >= CharacterCodes.a && ch <= CharacterCodes.z ||\n ch === CharacterCodes.$ || ch === CharacterCodes._ ||\n ch > CharacterCodes.maxAsciiCharacter && isUnicodeIdentifierStart(ch);\n}\nexport function isIdentifierPart(ch, _languageVersion, identifierVariant) {\n return ch >= CharacterCodes.A && ch <= CharacterCodes.Z || ch >= CharacterCodes.a && ch <= CharacterCodes.z ||\n ch >= CharacterCodes._0 && ch <= CharacterCodes._9 || ch === CharacterCodes.$ || ch === CharacterCodes._ ||\n // \"-\" and \":\" are valid in JSX Identifiers\n (identifierVariant === LanguageVariant.JSX ? (ch === CharacterCodes.minus || ch === CharacterCodes.colon) : false) ||\n ch > CharacterCodes.maxAsciiCharacter && isUnicodeIdentifierPart(ch);\n}\nexport function isIdentifierText(name, _languageVersion, identifierVariant) {\n let ch = name.codePointAt(0);\n if (!isIdentifierStart(ch)) {\n return false;\n }\n for (let i = charSize(ch); i < name.length; i += charSize(ch)) {\n if (!isIdentifierPart(ch = name.codePointAt(i), undefined, identifierVariant)) {\n return false;\n }\n }\n return true;\n}\nfunction codePointAt(s, i) {\n return s.codePointAt(i);\n}\nfunction charSize(ch) {\n if (ch >= 0x10000) {\n return 2;\n }\n if (ch === CharacterCodes.EOF) {\n return 0;\n }\n return 1;\n}\nexport function utf16EncodeAsString(codePoint) {\n return String.fromCodePoint(codePoint);\n}\nfunction parsePseudoBigInt(stringValue) {\n let log2Base;\n switch (stringValue.charCodeAt(1)) {\n case CharacterCodes.b:\n case CharacterCodes.B:\n log2Base = 1;\n break;\n case CharacterCodes.o:\n case CharacterCodes.O:\n log2Base = 3;\n break;\n case CharacterCodes.x:\n case CharacterCodes.X:\n log2Base = 4;\n break;\n default:\n // decimals for now just peel the trailing \"n\" and return\n const nIndex = stringValue.length - 1;\n let nonZeroStart = 0;\n while (stringValue.charCodeAt(nonZeroStart) === CharacterCodes._0) {\n nonZeroStart++;\n }\n return stringValue.slice(nonZeroStart, nIndex) || \"0\";\n }\n // exit early for zero\n const startIndex = 2;\n const endIndex = stringValue.length - 1;\n const bitsNeeded = (endIndex - startIndex) * log2Base;\n // Stores the value specified by the string as a LE array of 16-bit integers\n // using Uint16 instead of Uint32 so combining steps can use bitwise operators\n const segments = new Uint16Array((bitsNeeded >>> 4) + (bitsNeeded & 15 ? 1 : 0));\n // Add the digits, one at a time\n for (let i = endIndex - 1, bitOffset = 0; i >= startIndex; i--, bitOffset += log2Base) {\n const segment = bitOffset >>> 4;\n const digitChar = stringValue.charCodeAt(i);\n // Find character value\n const digit = digitChar <= CharacterCodes._9\n ? digitChar - CharacterCodes._0\n : 10 + digitChar - (digitChar <= CharacterCodes.F ? CharacterCodes.A : CharacterCodes.a);\n // Add bits into segment\n const shiftedDigit = digit << (bitOffset & 15);\n segments[segment] |= shiftedDigit;\n // overflow to next segment\n const residual = shiftedDigit >>> 16;\n if (residual)\n segments[segment + 1] |= residual;\n }\n // Repeatedly divide by 10 to find each decimal digit\n let base10Value = \"\";\n let firstNonzeroSegment = segments.length - 1;\n let segmentsRemaining = true;\n while (segmentsRemaining) {\n let mod10 = 0;\n segmentsRemaining = false;\n for (let segment = firstNonzeroSegment; segment >= 0; segment--) {\n const newSegment = mod10 << 16 | segments[segment];\n const segmentValue = (newSegment / 10) | 0;\n segments[segment] = segmentValue;\n mod10 = newSegment - segmentValue * 10;\n if (segmentValue && !segmentsRemaining) {\n firstNonzeroSegment = segment;\n segmentsRemaining = true;\n }\n }\n base10Value = mod10 + base10Value;\n }\n return base10Value;\n}\n// Creates a scanner over a (possibly unspecified) range of a piece of text.\nexport function createScanner(skipTrivia, languageVariant = LanguageVariant.Standard, textInitial, start, length) {\n // Why var? It avoids TDZ checks in the runtime which can be costly.\n // See: https://github.com/microsoft/TypeScript/issues/52924\n /* eslint-disable no-var */\n var text = textInitial;\n // Current position (end position of text of current token)\n var pos;\n // end of text\n var end;\n // Start position of whitespace before current token\n var fullStartPos;\n // Start position of text of current token\n var tokenStart;\n var token;\n var tokenValue;\n var tokenFlags;\n var commentDirectives;\n var skipJsDocLeadingAsterisks = 0;\n setText(text, start, length);\n var scanner = {\n getTokenFullStart: () => fullStartPos,\n getTokenEnd: () => pos,\n getToken: () => token,\n getTokenStart: () => tokenStart,\n getTokenText: () => text.substring(tokenStart, pos),\n getTokenValue: () => tokenValue,\n hasUnicodeEscape: () => (tokenFlags & TokenFlags.UnicodeEscape) !== 0,\n hasExtendedUnicodeEscape: () => (tokenFlags & TokenFlags.ExtendedUnicodeEscape) !== 0,\n hasPrecedingLineBreak: () => (tokenFlags & TokenFlags.PrecedingLineBreak) !== 0,\n hasPrecedingJSDocComment: () => (tokenFlags & TokenFlags.PrecedingJSDocComment) !== 0,\n hasPrecedingJSDocLeadingAsterisks: () => (tokenFlags & TokenFlags.PrecedingJSDocLeadingAsterisks) !== 0,\n hasPrecedingJSDocWithDeprecatedTag: () => (tokenFlags & TokenFlags.PrecedingJSDocWithDeprecated) !== 0,\n hasPrecedingJSDocWithSeeOrLink: () => (tokenFlags & TokenFlags.PrecedingJSDocWithSeeOrLink) !== 0,\n isIdentifier: () => token === SyntaxKind.Identifier || token > SyntaxKind.LastReservedWord,\n isReservedWord: () => token >= SyntaxKind.FirstReservedWord && token <= SyntaxKind.LastReservedWord,\n isUnterminated: () => (tokenFlags & TokenFlags.Unterminated) !== 0,\n getCommentDirectives: () => commentDirectives,\n getNumericLiteralFlags: () => tokenFlags & TokenFlags.NumericLiteralFlags,\n getTokenFlags: () => tokenFlags,\n reScanGreaterToken,\n reScanAsteriskEqualsToken,\n reScanSlashToken,\n reScanTemplateToken,\n reScanTemplateHeadOrNoSubstitutionTemplate,\n scanJsxIdentifier,\n scanJsxAttributeValue,\n reScanJsxAttributeValue,\n reScanJsxToken,\n reScanLessThanToken,\n reScanHashToken,\n reScanQuestionToken,\n reScanInvalidIdentifier,\n scanJsxToken,\n scanJsDocToken,\n scanJSDocCommentTextToken,\n scan,\n getText,\n clearCommentDirectives,\n setText,\n setLanguageVariant,\n resetTokenState,\n setSkipJsDocLeadingAsterisks,\n tryScan,\n lookAhead,\n scanRange,\n };\n /* eslint-enable no-var */\n return scanner;\n function codePointUnchecked(pos) {\n return codePointAt(text, pos);\n }\n function codePointChecked(pos) {\n return pos >= 0 && pos < end ? codePointUnchecked(pos) : CharacterCodes.EOF;\n }\n function charCodeUnchecked(pos) {\n return text.charCodeAt(pos);\n }\n function charCodeChecked(pos) {\n return pos >= 0 && pos < end ? charCodeUnchecked(pos) : CharacterCodes.EOF;\n }\n function scanNumberFragment() {\n let start = pos;\n let allowSeparator = false;\n let isPreviousTokenSeparator = false;\n let result = \"\";\n while (true) {\n const ch = charCodeUnchecked(pos);\n if (ch === CharacterCodes._) {\n tokenFlags |= TokenFlags.ContainsSeparator;\n if (allowSeparator) {\n allowSeparator = false;\n isPreviousTokenSeparator = true;\n result += text.substring(start, pos);\n }\n else {\n tokenFlags |= TokenFlags.ContainsInvalidSeparator;\n }\n pos++;\n start = pos;\n continue;\n }\n if (isDigit(ch)) {\n allowSeparator = true;\n isPreviousTokenSeparator = false;\n pos++;\n continue;\n }\n break;\n }\n if (charCodeUnchecked(pos - 1) === CharacterCodes._) {\n tokenFlags |= TokenFlags.ContainsInvalidSeparator;\n }\n return result + text.substring(start, pos);\n }\n function scanNumber() {\n let start = pos;\n let mainFragment;\n if (charCodeUnchecked(pos) === CharacterCodes._0) {\n pos++;\n if (charCodeUnchecked(pos) === CharacterCodes._) {\n tokenFlags |= TokenFlags.ContainsSeparator | TokenFlags.ContainsInvalidSeparator;\n pos--;\n mainFragment = scanNumberFragment();\n }\n else if (!scanDigits()) {\n tokenFlags |= TokenFlags.ContainsLeadingZero;\n mainFragment = \"\" + +tokenValue;\n }\n else if (!tokenValue) {\n mainFragment = \"0\";\n }\n else {\n tokenValue = \"\" + parseInt(tokenValue, 8);\n tokenFlags |= TokenFlags.Octal;\n const withMinus = token === SyntaxKind.MinusToken;\n const literal = (withMinus ? \"-\" : \"\") + \"0o\" + (+tokenValue).toString(8);\n if (withMinus)\n start--;\n return SyntaxKind.NumericLiteral;\n }\n }\n else {\n mainFragment = scanNumberFragment();\n }\n let decimalFragment;\n let scientificFragment;\n if (charCodeUnchecked(pos) === CharacterCodes.dot) {\n pos++;\n decimalFragment = scanNumberFragment();\n }\n let end = pos;\n if (charCodeUnchecked(pos) === CharacterCodes.E || charCodeUnchecked(pos) === CharacterCodes.e) {\n pos++;\n tokenFlags |= TokenFlags.Scientific;\n if (charCodeUnchecked(pos) === CharacterCodes.plus || charCodeUnchecked(pos) === CharacterCodes.minus)\n pos++;\n const preNumericPart = pos;\n const finalFragment = scanNumberFragment();\n if (finalFragment) {\n scientificFragment = text.substring(end, preNumericPart) + finalFragment;\n end = pos;\n }\n }\n let result;\n if (tokenFlags & TokenFlags.ContainsSeparator) {\n result = mainFragment;\n if (decimalFragment) {\n result += \".\" + decimalFragment;\n }\n if (scientificFragment) {\n result += scientificFragment;\n }\n }\n else {\n result = text.substring(start, end);\n }\n if (tokenFlags & TokenFlags.ContainsLeadingZero) {\n tokenValue = \"\" + +result;\n return SyntaxKind.NumericLiteral;\n }\n if (decimalFragment !== undefined || tokenFlags & TokenFlags.Scientific) {\n checkForIdentifierStartAfterNumericLiteral();\n tokenValue = \"\" + +result;\n return SyntaxKind.NumericLiteral;\n }\n else {\n tokenValue = result;\n const type = checkBigIntSuffix();\n checkForIdentifierStartAfterNumericLiteral();\n return type;\n }\n }\n function checkForIdentifierStartAfterNumericLiteral() {\n if (!isIdentifierStart(codePointUnchecked(pos))) {\n return;\n }\n const identifierStart = pos;\n const { length } = scanIdentifierParts();\n if (!(length === 1 && text[identifierStart] === \"n\")) {\n pos = identifierStart;\n }\n }\n function scanDigits() {\n const start = pos;\n let isOctal = true;\n while (isDigit(charCodeChecked(pos))) {\n if (!isOctalDigit(charCodeUnchecked(pos))) {\n isOctal = false;\n }\n pos++;\n }\n tokenValue = text.substring(start, pos);\n return isOctal;\n }\n function scanExactNumberOfHexDigits(count, canHaveSeparators) {\n const valueString = scanHexDigits(count, /*scanAsManyAsPossible*/ false, canHaveSeparators);\n return valueString ? parseInt(valueString, 16) : -1;\n }\n function scanMinimumNumberOfHexDigits(count, canHaveSeparators) {\n return scanHexDigits(count, /*scanAsManyAsPossible*/ true, canHaveSeparators);\n }\n function scanHexDigits(minCount, scanAsManyAsPossible, canHaveSeparators) {\n let valueChars = [];\n let allowSeparator = false;\n while (valueChars.length < minCount || scanAsManyAsPossible) {\n let ch = charCodeUnchecked(pos);\n if (canHaveSeparators && ch === CharacterCodes._) {\n tokenFlags |= TokenFlags.ContainsSeparator;\n if (allowSeparator) {\n allowSeparator = false;\n }\n pos++;\n continue;\n }\n allowSeparator = canHaveSeparators;\n if (ch >= CharacterCodes.A && ch <= CharacterCodes.F) {\n ch += CharacterCodes.a - CharacterCodes.A;\n }\n else if (!((ch >= CharacterCodes._0 && ch <= CharacterCodes._9) ||\n (ch >= CharacterCodes.a && ch <= CharacterCodes.f))) {\n break;\n }\n valueChars.push(ch);\n pos++;\n }\n if (valueChars.length < minCount) {\n valueChars = [];\n }\n return String.fromCharCode(...valueChars);\n }\n function scanString(jsxAttributeString = false) {\n const quote = charCodeUnchecked(pos);\n pos++;\n let result = \"\";\n let start = pos;\n while (true) {\n if (pos >= end) {\n result += text.substring(start, pos);\n tokenFlags |= TokenFlags.Unterminated;\n break;\n }\n const ch = charCodeUnchecked(pos);\n if (ch === quote) {\n result += text.substring(start, pos);\n pos++;\n break;\n }\n if (ch === CharacterCodes.backslash && !jsxAttributeString) {\n result += text.substring(start, pos);\n result += scanEscapeSequence(EscapeSequenceScanningFlags.String | EscapeSequenceScanningFlags.ReportErrors);\n start = pos;\n continue;\n }\n if ((ch === CharacterCodes.lineFeed || ch === CharacterCodes.carriageReturn) && !jsxAttributeString) {\n result += text.substring(start, pos);\n tokenFlags |= TokenFlags.Unterminated;\n break;\n }\n pos++;\n }\n return result;\n }\n function scanTemplateAndSetTokenValue(shouldEmitInvalidEscapeError) {\n const startedWithBacktick = charCodeUnchecked(pos) === CharacterCodes.backtick;\n pos++;\n let start = pos;\n let contents = \"\";\n let resultingToken;\n while (true) {\n if (pos >= end) {\n contents += text.substring(start, pos);\n tokenFlags |= TokenFlags.Unterminated;\n resultingToken = startedWithBacktick ? SyntaxKind.NoSubstitutionTemplateLiteral : SyntaxKind.TemplateTail;\n break;\n }\n const currChar = charCodeUnchecked(pos);\n if (currChar === CharacterCodes.backtick) {\n contents += text.substring(start, pos);\n pos++;\n resultingToken = startedWithBacktick ? SyntaxKind.NoSubstitutionTemplateLiteral : SyntaxKind.TemplateTail;\n break;\n }\n if (currChar === CharacterCodes.$ && pos + 1 < end && charCodeUnchecked(pos + 1) === CharacterCodes.openBrace) {\n contents += text.substring(start, pos);\n pos += 2;\n resultingToken = startedWithBacktick ? SyntaxKind.TemplateHead : SyntaxKind.TemplateMiddle;\n break;\n }\n if (currChar === CharacterCodes.backslash) {\n contents += text.substring(start, pos);\n contents += scanEscapeSequence(EscapeSequenceScanningFlags.String | (shouldEmitInvalidEscapeError ? EscapeSequenceScanningFlags.ReportErrors : 0));\n start = pos;\n continue;\n }\n if (currChar === CharacterCodes.carriageReturn) {\n contents += text.substring(start, pos);\n pos++;\n if (pos < end && charCodeUnchecked(pos) === CharacterCodes.lineFeed) {\n pos++;\n }\n contents += \"\\n\";\n start = pos;\n continue;\n }\n pos++;\n }\n tokenValue = contents;\n return resultingToken;\n }\n function scanEscapeSequence(flags) {\n const start = pos;\n pos++;\n if (pos >= end) {\n return \"\";\n }\n const ch = charCodeUnchecked(pos);\n pos++;\n switch (ch) {\n case CharacterCodes._0:\n if (pos >= end || !isDigit(charCodeUnchecked(pos))) {\n return \"\\0\";\n }\n // falls through\n case CharacterCodes._1:\n case CharacterCodes._2:\n case CharacterCodes._3:\n if (pos < end && isOctalDigit(charCodeUnchecked(pos))) {\n pos++;\n }\n // falls through\n case CharacterCodes._4:\n case CharacterCodes._5:\n case CharacterCodes._6:\n case CharacterCodes._7:\n if (pos < end && isOctalDigit(charCodeUnchecked(pos))) {\n pos++;\n }\n tokenFlags |= TokenFlags.ContainsInvalidEscape;\n if (flags & EscapeSequenceScanningFlags.ReportInvalidEscapeErrors) {\n const code = parseInt(text.substring(start + 1, pos), 8);\n return String.fromCharCode(code);\n }\n return text.substring(start, pos);\n case CharacterCodes._8:\n case CharacterCodes._9:\n tokenFlags |= TokenFlags.ContainsInvalidEscape;\n if (flags & EscapeSequenceScanningFlags.ReportInvalidEscapeErrors) {\n return String.fromCharCode(ch);\n }\n return text.substring(start, pos);\n case CharacterCodes.b:\n return \"\\b\";\n case CharacterCodes.t:\n return \"\\t\";\n case CharacterCodes.n:\n return \"\\n\";\n case CharacterCodes.v:\n return \"\\v\";\n case CharacterCodes.f:\n return \"\\f\";\n case CharacterCodes.r:\n return \"\\r\";\n case CharacterCodes.singleQuote:\n return \"'\";\n case CharacterCodes.doubleQuote:\n return '\"';\n case CharacterCodes.u:\n if (pos < end && charCodeUnchecked(pos) === CharacterCodes.openBrace) {\n pos -= 2;\n const result = scanExtendedUnicodeEscape();\n if (!(flags & EscapeSequenceScanningFlags.AllowExtendedUnicodeEscape)) {\n tokenFlags |= TokenFlags.ContainsInvalidEscape;\n }\n return result;\n }\n // '\\uDDDD'\n for (; pos < start + 6; pos++) {\n if (!(pos < end && isHexDigit(charCodeUnchecked(pos)))) {\n tokenFlags |= TokenFlags.ContainsInvalidEscape;\n return text.substring(start, pos);\n }\n }\n tokenFlags |= TokenFlags.UnicodeEscape;\n {\n const escapedValue = parseInt(text.substring(start + 2, pos), 16);\n const escapedValueString = String.fromCharCode(escapedValue);\n if (flags & EscapeSequenceScanningFlags.AnyUnicodeMode && escapedValue >= 0xD800 && escapedValue <= 0xDBFF &&\n pos + 6 < end && text.substring(pos, pos + 2) === \"\\\\u\" && charCodeUnchecked(pos + 2) !== CharacterCodes.openBrace) {\n const nextStart = pos;\n let nextPos = pos + 2;\n for (; nextPos < nextStart + 6; nextPos++) {\n if (!isHexDigit(charCodeUnchecked(nextPos))) {\n return escapedValueString;\n }\n }\n const nextEscapedValue = parseInt(text.substring(nextStart + 2, nextPos), 16);\n if (nextEscapedValue >= 0xDC00 && nextEscapedValue <= 0xDFFF) {\n pos = nextPos;\n return escapedValueString + String.fromCharCode(nextEscapedValue);\n }\n }\n return escapedValueString;\n }\n case CharacterCodes.x:\n for (; pos < start + 4; pos++) {\n if (!(pos < end && isHexDigit(charCodeUnchecked(pos)))) {\n tokenFlags |= TokenFlags.ContainsInvalidEscape;\n return text.substring(start, pos);\n }\n }\n tokenFlags |= TokenFlags.HexEscape;\n return String.fromCharCode(parseInt(text.substring(start + 2, pos), 16));\n case CharacterCodes.carriageReturn:\n if (pos < end && charCodeUnchecked(pos) === CharacterCodes.lineFeed) {\n pos++;\n }\n // falls through\n case CharacterCodes.lineFeed:\n case CharacterCodes.lineSeparator:\n case CharacterCodes.paragraphSeparator:\n return \"\";\n default:\n return String.fromCharCode(ch);\n }\n }\n function scanExtendedUnicodeEscape() {\n const start = pos;\n pos += 3;\n const escapedValueString = scanMinimumNumberOfHexDigits(1, /*canHaveSeparators*/ false);\n const escapedValue = escapedValueString ? parseInt(escapedValueString, 16) : -1;\n let isInvalidExtendedEscape = false;\n if (escapedValue < 0) {\n isInvalidExtendedEscape = true;\n }\n else if (escapedValue > 0x10FFFF) {\n isInvalidExtendedEscape = true;\n }\n if (pos >= end) {\n isInvalidExtendedEscape = true;\n }\n else if (charCodeUnchecked(pos) === CharacterCodes.closeBrace) {\n pos++;\n }\n else {\n isInvalidExtendedEscape = true;\n }\n if (isInvalidExtendedEscape) {\n tokenFlags |= TokenFlags.ContainsInvalidEscape;\n return text.substring(start, pos);\n }\n tokenFlags |= TokenFlags.ExtendedUnicodeEscape;\n return utf16EncodeAsString(escapedValue);\n }\n function peekUnicodeEscape() {\n if (pos + 5 < end && charCodeUnchecked(pos + 1) === CharacterCodes.u) {\n const start = pos;\n pos += 2;\n const value = scanExactNumberOfHexDigits(4, /*canHaveSeparators*/ false);\n pos = start;\n return value;\n }\n return -1;\n }\n function peekExtendedUnicodeEscape() {\n if (codePointUnchecked(pos + 1) === CharacterCodes.u && codePointUnchecked(pos + 2) === CharacterCodes.openBrace) {\n const start = pos;\n pos += 3;\n const escapedValueString = scanMinimumNumberOfHexDigits(1, /*canHaveSeparators*/ false);\n const escapedValue = escapedValueString ? parseInt(escapedValueString, 16) : -1;\n pos = start;\n return escapedValue;\n }\n return -1;\n }\n function scanIdentifierParts() {\n let result = \"\";\n let start = pos;\n while (pos < end) {\n let ch = codePointUnchecked(pos);\n if (isIdentifierPart(ch)) {\n pos += charSize(ch);\n }\n else if (ch === CharacterCodes.backslash) {\n ch = peekExtendedUnicodeEscape();\n if (ch >= 0 && isIdentifierPart(ch)) {\n result += scanExtendedUnicodeEscape();\n start = pos;\n continue;\n }\n ch = peekUnicodeEscape();\n if (!(ch >= 0 && isIdentifierPart(ch))) {\n break;\n }\n tokenFlags |= TokenFlags.UnicodeEscape;\n result += text.substring(start, pos);\n result += utf16EncodeAsString(ch);\n pos += 6;\n start = pos;\n }\n else {\n break;\n }\n }\n result += text.substring(start, pos);\n return result;\n }\n function getIdentifierToken() {\n const len = tokenValue.length;\n if (len >= 2 && len <= 12) {\n const ch = tokenValue.charCodeAt(0);\n if (ch >= CharacterCodes.a && ch <= CharacterCodes.z) {\n const keyword = textToKeyword.get(tokenValue);\n if (keyword !== undefined) {\n return token = keyword;\n }\n }\n }\n return token = SyntaxKind.Identifier;\n }\n function scanBinaryOrOctalDigits(base) {\n let value = \"\";\n let separatorAllowed = false;\n let isPreviousTokenSeparator = false;\n while (true) {\n const ch = charCodeUnchecked(pos);\n if (ch === CharacterCodes._) {\n tokenFlags |= TokenFlags.ContainsSeparator;\n if (separatorAllowed) {\n separatorAllowed = false;\n isPreviousTokenSeparator = true;\n }\n pos++;\n continue;\n }\n separatorAllowed = true;\n if (!isDigit(ch) || ch - CharacterCodes._0 >= base) {\n break;\n }\n value += text[pos];\n pos++;\n isPreviousTokenSeparator = false;\n }\n return value;\n }\n function checkBigIntSuffix() {\n if (charCodeUnchecked(pos) === CharacterCodes.n) {\n tokenValue += \"n\";\n if (tokenFlags & TokenFlags.BinaryOrOctalSpecifier) {\n tokenValue = parsePseudoBigInt(tokenValue) + \"n\";\n }\n pos++;\n return SyntaxKind.BigIntLiteral;\n }\n else {\n const numericValue = tokenFlags & TokenFlags.BinarySpecifier\n ? parseInt(tokenValue.slice(2), 2)\n : tokenFlags & TokenFlags.OctalSpecifier\n ? parseInt(tokenValue.slice(2), 8)\n : +tokenValue;\n tokenValue = \"\" + numericValue;\n return SyntaxKind.NumericLiteral;\n }\n }\n function scan() {\n fullStartPos = pos;\n tokenFlags = TokenFlags.None;\n while (true) {\n tokenStart = pos;\n if (pos >= end) {\n return token = SyntaxKind.EndOfFile;\n }\n const ch = codePointUnchecked(pos);\n if (pos === 0) {\n if (ch === CharacterCodes.hash && isShebangTrivia(text, pos)) {\n pos = scanShebangTrivia(text, pos);\n if (skipTrivia) {\n continue;\n }\n else {\n return token = SyntaxKind.Unknown;\n }\n }\n }\n switch (ch) {\n case CharacterCodes.lineFeed:\n case CharacterCodes.carriageReturn:\n tokenFlags |= TokenFlags.PrecedingLineBreak;\n if (skipTrivia) {\n pos++;\n continue;\n }\n else {\n if (ch === CharacterCodes.carriageReturn && pos + 1 < end && charCodeUnchecked(pos + 1) === CharacterCodes.lineFeed) {\n pos += 2;\n }\n else {\n pos++;\n }\n return token = SyntaxKind.NewLineTrivia;\n }\n case CharacterCodes.tab:\n case CharacterCodes.verticalTab:\n case CharacterCodes.formFeed:\n case CharacterCodes.space:\n case CharacterCodes.nonBreakingSpace:\n case CharacterCodes.ogham:\n case CharacterCodes.enQuad:\n case CharacterCodes.emQuad:\n case CharacterCodes.enSpace:\n case CharacterCodes.emSpace:\n case CharacterCodes.threePerEmSpace:\n case CharacterCodes.fourPerEmSpace:\n case CharacterCodes.sixPerEmSpace:\n case CharacterCodes.figureSpace:\n case CharacterCodes.punctuationSpace:\n case CharacterCodes.thinSpace:\n case CharacterCodes.hairSpace:\n case CharacterCodes.zeroWidthSpace:\n case CharacterCodes.narrowNoBreakSpace:\n case CharacterCodes.mathematicalSpace:\n case CharacterCodes.ideographicSpace:\n case CharacterCodes.byteOrderMark:\n if (skipTrivia) {\n pos++;\n continue;\n }\n else {\n while (pos < end && isWhiteSpaceSingleLine(charCodeUnchecked(pos))) {\n pos++;\n }\n return token = SyntaxKind.WhitespaceTrivia;\n }\n case CharacterCodes.exclamation:\n if (charCodeUnchecked(pos + 1) === CharacterCodes.equals) {\n if (charCodeUnchecked(pos + 2) === CharacterCodes.equals) {\n return pos += 3, token = SyntaxKind.ExclamationEqualsEqualsToken;\n }\n return pos += 2, token = SyntaxKind.ExclamationEqualsToken;\n }\n pos++;\n return token = SyntaxKind.ExclamationToken;\n case CharacterCodes.doubleQuote:\n case CharacterCodes.singleQuote:\n tokenValue = scanString();\n return token = SyntaxKind.StringLiteral;\n case CharacterCodes.backtick:\n return token = scanTemplateAndSetTokenValue(/*shouldEmitInvalidEscapeError*/ false);\n case CharacterCodes.percent:\n if (charCodeUnchecked(pos + 1) === CharacterCodes.equals) {\n return pos += 2, token = SyntaxKind.PercentEqualsToken;\n }\n pos++;\n return token = SyntaxKind.PercentToken;\n case CharacterCodes.ampersand:\n if (charCodeUnchecked(pos + 1) === CharacterCodes.ampersand) {\n if (charCodeUnchecked(pos + 2) === CharacterCodes.equals) {\n return pos += 3, token = SyntaxKind.AmpersandAmpersandEqualsToken;\n }\n return pos += 2, token = SyntaxKind.AmpersandAmpersandToken;\n }\n if (charCodeUnchecked(pos + 1) === CharacterCodes.equals) {\n return pos += 2, token = SyntaxKind.AmpersandEqualsToken;\n }\n pos++;\n return token = SyntaxKind.AmpersandToken;\n case CharacterCodes.openParen:\n pos++;\n return token = SyntaxKind.OpenParenToken;\n case CharacterCodes.closeParen:\n pos++;\n return token = SyntaxKind.CloseParenToken;\n case CharacterCodes.asterisk:\n if (charCodeUnchecked(pos + 1) === CharacterCodes.equals) {\n return pos += 2, token = SyntaxKind.AsteriskEqualsToken;\n }\n if (charCodeUnchecked(pos + 1) === CharacterCodes.asterisk) {\n if (charCodeUnchecked(pos + 2) === CharacterCodes.equals) {\n return pos += 3, token = SyntaxKind.AsteriskAsteriskEqualsToken;\n }\n return pos += 2, token = SyntaxKind.AsteriskAsteriskToken;\n }\n pos++;\n if (skipJsDocLeadingAsterisks &&\n (tokenFlags & TokenFlags.PrecedingJSDocLeadingAsterisks) === 0 &&\n (tokenFlags & TokenFlags.PrecedingLineBreak)) {\n tokenFlags |= TokenFlags.PrecedingJSDocLeadingAsterisks;\n continue;\n }\n return token = SyntaxKind.AsteriskToken;\n case CharacterCodes.plus:\n if (charCodeUnchecked(pos + 1) === CharacterCodes.plus) {\n return pos += 2, token = SyntaxKind.PlusPlusToken;\n }\n if (charCodeUnchecked(pos + 1) === CharacterCodes.equals) {\n return pos += 2, token = SyntaxKind.PlusEqualsToken;\n }\n pos++;\n return token = SyntaxKind.PlusToken;\n case CharacterCodes.comma:\n pos++;\n return token = SyntaxKind.CommaToken;\n case CharacterCodes.minus:\n if (charCodeUnchecked(pos + 1) === CharacterCodes.minus) {\n return pos += 2, token = SyntaxKind.MinusMinusToken;\n }\n if (charCodeUnchecked(pos + 1) === CharacterCodes.equals) {\n return pos += 2, token = SyntaxKind.MinusEqualsToken;\n }\n pos++;\n return token = SyntaxKind.MinusToken;\n case CharacterCodes.dot:\n if (isDigit(charCodeUnchecked(pos + 1))) {\n scanNumber();\n return token = SyntaxKind.NumericLiteral;\n }\n if (charCodeUnchecked(pos + 1) === CharacterCodes.dot && charCodeUnchecked(pos + 2) === CharacterCodes.dot) {\n return pos += 3, token = SyntaxKind.DotDotDotToken;\n }\n pos++;\n return token = SyntaxKind.DotToken;\n case CharacterCodes.slash:\n // Single-line comment\n if (charCodeUnchecked(pos + 1) === CharacterCodes.slash) {\n pos += 2;\n while (pos < end) {\n if (isLineBreak(charCodeUnchecked(pos))) {\n break;\n }\n pos++;\n }\n commentDirectives = appendIfCommentDirective(commentDirectives, text.slice(tokenStart, pos), commentDirectiveRegExSingleLine, tokenStart);\n if (skipTrivia) {\n continue;\n }\n else {\n return token = SyntaxKind.SingleLineCommentTrivia;\n }\n }\n // Multi-line comment\n if (charCodeUnchecked(pos + 1) === CharacterCodes.asterisk) {\n pos += 2;\n const isJSDoc = charCodeUnchecked(pos) === CharacterCodes.asterisk && charCodeUnchecked(pos + 1) !== CharacterCodes.slash;\n let commentClosed = false;\n let lastLineStart = tokenStart;\n while (pos < end) {\n const ch = charCodeUnchecked(pos);\n if (ch === CharacterCodes.asterisk && charCodeUnchecked(pos + 1) === CharacterCodes.slash) {\n pos += 2;\n commentClosed = true;\n break;\n }\n pos++;\n if (isLineBreak(ch)) {\n lastLineStart = pos;\n tokenFlags |= TokenFlags.PrecedingLineBreak;\n }\n }\n if (isJSDoc) {\n tokenFlags |= TokenFlags.PrecedingJSDocComment;\n tokenFlags = scanJSDocCommentForTags(text.slice(tokenStart, pos), tokenFlags);\n }\n commentDirectives = appendIfCommentDirective(commentDirectives, text.slice(lastLineStart, pos), commentDirectiveRegExMultiLine, lastLineStart);\n if (skipTrivia) {\n continue;\n }\n else {\n if (!commentClosed) {\n tokenFlags |= TokenFlags.Unterminated;\n }\n return token = SyntaxKind.MultiLineCommentTrivia;\n }\n }\n if (charCodeUnchecked(pos + 1) === CharacterCodes.equals) {\n return pos += 2, token = SyntaxKind.SlashEqualsToken;\n }\n pos++;\n return token = SyntaxKind.SlashToken;\n case CharacterCodes._0:\n if (pos + 2 < end && (charCodeUnchecked(pos + 1) === CharacterCodes.X || charCodeUnchecked(pos + 1) === CharacterCodes.x)) {\n pos += 2;\n tokenValue = scanMinimumNumberOfHexDigits(1, /*canHaveSeparators*/ true);\n if (!tokenValue) {\n tokenValue = \"0\";\n }\n tokenValue = \"0x\" + tokenValue;\n tokenFlags |= TokenFlags.HexSpecifier;\n return token = checkBigIntSuffix();\n }\n else if (pos + 2 < end && (charCodeUnchecked(pos + 1) === CharacterCodes.B || charCodeUnchecked(pos + 1) === CharacterCodes.b)) {\n pos += 2;\n tokenValue = scanBinaryOrOctalDigits(2);\n if (!tokenValue) {\n tokenValue = \"0\";\n }\n tokenValue = \"0b\" + tokenValue;\n tokenFlags |= TokenFlags.BinarySpecifier;\n return token = checkBigIntSuffix();\n }\n else if (pos + 2 < end && (charCodeUnchecked(pos + 1) === CharacterCodes.O || charCodeUnchecked(pos + 1) === CharacterCodes.o)) {\n pos += 2;\n tokenValue = scanBinaryOrOctalDigits(8);\n if (!tokenValue) {\n tokenValue = \"0\";\n }\n tokenValue = \"0o\" + tokenValue;\n tokenFlags |= TokenFlags.OctalSpecifier;\n return token = checkBigIntSuffix();\n }\n // falls through\n case CharacterCodes._1:\n case CharacterCodes._2:\n case CharacterCodes._3:\n case CharacterCodes._4:\n case CharacterCodes._5:\n case CharacterCodes._6:\n case CharacterCodes._7:\n case CharacterCodes._8:\n case CharacterCodes._9:\n return token = scanNumber();\n case CharacterCodes.colon:\n pos++;\n return token = SyntaxKind.ColonToken;\n case CharacterCodes.semicolon:\n pos++;\n return token = SyntaxKind.SemicolonToken;\n case CharacterCodes.lessThan:\n if (isConflictMarkerTrivia(text, pos)) {\n pos = scanConflictMarkerTrivia(text, pos);\n if (skipTrivia) {\n continue;\n }\n else {\n return token = SyntaxKind.ConflictMarkerTrivia;\n }\n }\n if (charCodeUnchecked(pos + 1) === CharacterCodes.lessThan) {\n if (charCodeUnchecked(pos + 2) === CharacterCodes.equals) {\n return pos += 3, token = SyntaxKind.LessThanLessThanEqualsToken;\n }\n return pos += 2, token = SyntaxKind.LessThanLessThanToken;\n }\n if (charCodeUnchecked(pos + 1) === CharacterCodes.equals) {\n return pos += 2, token = SyntaxKind.LessThanEqualsToken;\n }\n if (languageVariant === LanguageVariant.JSX &&\n charCodeUnchecked(pos + 1) === CharacterCodes.slash &&\n charCodeUnchecked(pos + 2) !== CharacterCodes.asterisk) {\n return pos += 2, token = SyntaxKind.LessThanSlashToken;\n }\n pos++;\n return token = SyntaxKind.LessThanToken;\n case CharacterCodes.equals:\n if (isConflictMarkerTrivia(text, pos)) {\n pos = scanConflictMarkerTrivia(text, pos);\n if (skipTrivia) {\n continue;\n }\n else {\n return token = SyntaxKind.ConflictMarkerTrivia;\n }\n }\n if (charCodeUnchecked(pos + 1) === CharacterCodes.equals) {\n if (charCodeUnchecked(pos + 2) === CharacterCodes.equals) {\n return pos += 3, token = SyntaxKind.EqualsEqualsEqualsToken;\n }\n return pos += 2, token = SyntaxKind.EqualsEqualsToken;\n }\n if (charCodeUnchecked(pos + 1) === CharacterCodes.greaterThan) {\n return pos += 2, token = SyntaxKind.EqualsGreaterThanToken;\n }\n pos++;\n return token = SyntaxKind.EqualsToken;\n case CharacterCodes.greaterThan:\n if (isConflictMarkerTrivia(text, pos)) {\n pos = scanConflictMarkerTrivia(text, pos);\n if (skipTrivia) {\n continue;\n }\n else {\n return token = SyntaxKind.ConflictMarkerTrivia;\n }\n }\n pos++;\n return token = SyntaxKind.GreaterThanToken;\n case CharacterCodes.question:\n if (charCodeUnchecked(pos + 1) === CharacterCodes.dot && !isDigit(charCodeUnchecked(pos + 2))) {\n return pos += 2, token = SyntaxKind.QuestionDotToken;\n }\n if (charCodeUnchecked(pos + 1) === CharacterCodes.question) {\n if (charCodeUnchecked(pos + 2) === CharacterCodes.equals) {\n return pos += 3, token = SyntaxKind.QuestionQuestionEqualsToken;\n }\n return pos += 2, token = SyntaxKind.QuestionQuestionToken;\n }\n pos++;\n return token = SyntaxKind.QuestionToken;\n case CharacterCodes.openBracket:\n pos++;\n return token = SyntaxKind.OpenBracketToken;\n case CharacterCodes.closeBracket:\n pos++;\n return token = SyntaxKind.CloseBracketToken;\n case CharacterCodes.caret:\n if (charCodeUnchecked(pos + 1) === CharacterCodes.equals) {\n return pos += 2, token = SyntaxKind.CaretEqualsToken;\n }\n pos++;\n return token = SyntaxKind.CaretToken;\n case CharacterCodes.openBrace:\n pos++;\n return token = SyntaxKind.OpenBraceToken;\n case CharacterCodes.bar:\n if (isConflictMarkerTrivia(text, pos)) {\n pos = scanConflictMarkerTrivia(text, pos);\n if (skipTrivia) {\n continue;\n }\n else {\n return token = SyntaxKind.ConflictMarkerTrivia;\n }\n }\n if (charCodeUnchecked(pos + 1) === CharacterCodes.bar) {\n if (charCodeUnchecked(pos + 2) === CharacterCodes.equals) {\n return pos += 3, token = SyntaxKind.BarBarEqualsToken;\n }\n return pos += 2, token = SyntaxKind.BarBarToken;\n }\n if (charCodeUnchecked(pos + 1) === CharacterCodes.equals) {\n return pos += 2, token = SyntaxKind.BarEqualsToken;\n }\n pos++;\n return token = SyntaxKind.BarToken;\n case CharacterCodes.closeBrace:\n pos++;\n return token = SyntaxKind.CloseBraceToken;\n case CharacterCodes.tilde:\n pos++;\n return token = SyntaxKind.TildeToken;\n case CharacterCodes.at:\n pos++;\n return token = SyntaxKind.AtToken;\n case CharacterCodes.backslash: {\n const extendedCookedChar = peekExtendedUnicodeEscape();\n if (extendedCookedChar >= 0 && isIdentifierStart(extendedCookedChar)) {\n tokenValue = scanExtendedUnicodeEscape() + scanIdentifierParts();\n return token = getIdentifierToken();\n }\n const cookedChar = peekUnicodeEscape();\n if (cookedChar >= 0 && isIdentifierStart(cookedChar)) {\n pos += 6;\n tokenFlags |= TokenFlags.UnicodeEscape;\n tokenValue = String.fromCharCode(cookedChar) + scanIdentifierParts();\n return token = getIdentifierToken();\n }\n pos++;\n return token = SyntaxKind.Unknown;\n }\n case CharacterCodes.hash:\n if (pos !== 0 && text[pos + 1] === \"!\") {\n pos++;\n return token = SyntaxKind.Unknown;\n }\n {\n const charAfterHash = codePointUnchecked(pos + 1);\n if (charAfterHash === CharacterCodes.backslash) {\n pos++;\n const extendedCookedChar = peekExtendedUnicodeEscape();\n if (extendedCookedChar >= 0 && isIdentifierStart(extendedCookedChar)) {\n tokenValue = \"#\" + scanExtendedUnicodeEscape() + scanIdentifierParts();\n return token = SyntaxKind.PrivateIdentifier;\n }\n const cookedChar = peekUnicodeEscape();\n if (cookedChar >= 0 && isIdentifierStart(cookedChar)) {\n pos += 6;\n tokenFlags |= TokenFlags.UnicodeEscape;\n tokenValue = \"#\" + String.fromCharCode(cookedChar) + scanIdentifierParts();\n return token = SyntaxKind.PrivateIdentifier;\n }\n pos--;\n }\n if (isIdentifierStart(charAfterHash)) {\n pos++;\n scanIdentifier(charAfterHash);\n }\n else {\n tokenValue = \"#\";\n }\n return token = SyntaxKind.PrivateIdentifier;\n }\n case CharacterCodes.replacementCharacter:\n pos = end;\n return token = SyntaxKind.NonTextFileMarkerTrivia;\n default: {\n const identifierKind = scanIdentifier(ch);\n if (identifierKind) {\n return token = identifierKind;\n }\n else if (isWhiteSpaceSingleLine(ch)) {\n pos += charSize(ch);\n continue;\n }\n else if (isLineBreak(ch)) {\n tokenFlags |= TokenFlags.PrecedingLineBreak;\n pos += charSize(ch);\n continue;\n }\n const size = charSize(ch);\n pos += size;\n return token = SyntaxKind.Unknown;\n }\n }\n }\n }\n function reScanInvalidIdentifier() {\n pos = tokenStart = fullStartPos;\n tokenFlags = 0;\n const ch = codePointUnchecked(pos);\n const identifierKind = scanIdentifier(ch);\n if (identifierKind) {\n return token = identifierKind;\n }\n pos += charSize(ch);\n return token; // Still `SyntaxKind.Unknown`\n }\n function scanIdentifier(startCharacter) {\n let ch = startCharacter;\n if (isIdentifierStart(ch)) {\n pos += charSize(ch);\n while (pos < end && isIdentifierPart(ch = codePointUnchecked(pos)))\n pos += charSize(ch);\n tokenValue = text.substring(tokenStart, pos);\n if (ch === CharacterCodes.backslash) {\n tokenValue += scanIdentifierParts();\n }\n return getIdentifierToken();\n }\n }\n function reScanGreaterToken() {\n if (token === SyntaxKind.GreaterThanToken) {\n if (charCodeUnchecked(pos) === CharacterCodes.greaterThan) {\n if (charCodeUnchecked(pos + 1) === CharacterCodes.greaterThan) {\n if (charCodeUnchecked(pos + 2) === CharacterCodes.equals) {\n return pos += 3, token = SyntaxKind.GreaterThanGreaterThanGreaterThanEqualsToken;\n }\n return pos += 2, token = SyntaxKind.GreaterThanGreaterThanGreaterThanToken;\n }\n if (charCodeUnchecked(pos + 1) === CharacterCodes.equals) {\n return pos += 2, token = SyntaxKind.GreaterThanGreaterThanEqualsToken;\n }\n pos++;\n return token = SyntaxKind.GreaterThanGreaterThanToken;\n }\n if (charCodeUnchecked(pos) === CharacterCodes.equals) {\n pos++;\n return token = SyntaxKind.GreaterThanEqualsToken;\n }\n }\n return token;\n }\n function reScanAsteriskEqualsToken() {\n pos = tokenStart + 1;\n return token = SyntaxKind.EqualsToken;\n }\n function reScanSlashToken() {\n if (token === SyntaxKind.SlashToken || token === SyntaxKind.SlashEqualsToken) {\n const startOfRegExpBody = tokenStart + 1;\n pos = startOfRegExpBody;\n let inEscape = false;\n let inCharacterClass = false;\n while (true) {\n const ch = charCodeChecked(pos);\n if (ch === CharacterCodes.EOF || isLineBreak(ch)) {\n tokenFlags |= TokenFlags.Unterminated;\n break;\n }\n if (inEscape) {\n inEscape = false;\n }\n else if (ch === CharacterCodes.slash && !inCharacterClass) {\n break;\n }\n else if (ch === CharacterCodes.openBracket) {\n inCharacterClass = true;\n }\n else if (ch === CharacterCodes.backslash) {\n inEscape = true;\n }\n else if (ch === CharacterCodes.closeBracket) {\n inCharacterClass = false;\n }\n pos++;\n }\n if (tokenFlags & TokenFlags.Unterminated) {\n // Find best recovery position\n pos = startOfRegExpBody;\n inEscape = false;\n let characterClassDepth = 0;\n let inDecimalQuantifier = false;\n let groupDepth = 0;\n while (pos < end && !isLineBreak(charCodeUnchecked(pos))) {\n const ch = charCodeUnchecked(pos);\n if (inEscape) {\n inEscape = false;\n }\n else if (ch === CharacterCodes.backslash) {\n inEscape = true;\n }\n else if (ch === CharacterCodes.openBracket) {\n characterClassDepth++;\n }\n else if (ch === CharacterCodes.closeBracket && characterClassDepth) {\n characterClassDepth--;\n }\n else if (!characterClassDepth) {\n if (ch === CharacterCodes.openBrace) {\n inDecimalQuantifier = true;\n }\n else if (ch === CharacterCodes.closeBrace && inDecimalQuantifier) {\n inDecimalQuantifier = false;\n }\n else if (!inDecimalQuantifier) {\n if (ch === CharacterCodes.openParen) {\n groupDepth++;\n }\n else if (ch === CharacterCodes.closeParen && groupDepth) {\n groupDepth--;\n }\n else if (ch === CharacterCodes.closeParen || ch === CharacterCodes.closeBracket || ch === CharacterCodes.closeBrace) {\n break;\n }\n }\n }\n pos++;\n }\n while (isWhiteSpaceLike(charCodeChecked(pos - 1)) || charCodeChecked(pos - 1) === CharacterCodes.semicolon)\n pos--;\n }\n else {\n pos++;\n let regExpFlags = RegularExpressionFlags.None;\n while (true) {\n const ch = codePointChecked(pos);\n if (ch === CharacterCodes.EOF || !isIdentifierPart(ch)) {\n break;\n }\n const size = charSize(ch);\n const flag = characterCodeToRegularExpressionFlag(ch);\n if (flag !== undefined) {\n regExpFlags |= flag;\n }\n pos += size;\n }\n }\n tokenValue = text.substring(tokenStart, pos);\n token = SyntaxKind.RegularExpressionLiteral;\n }\n return token;\n }\n function appendIfCommentDirective(commentDirectives, text, commentDirectiveRegEx, lineStart) {\n const type = getDirectiveFromComment(text.trimStart(), commentDirectiveRegEx);\n if (type === undefined) {\n return commentDirectives;\n }\n if (!commentDirectives) {\n commentDirectives = [];\n }\n commentDirectives.push({\n range: { pos: lineStart, end: pos },\n type,\n });\n return commentDirectives;\n }\n function getDirectiveFromComment(text, commentDirectiveRegEx) {\n const match = commentDirectiveRegEx.exec(text);\n if (!match) {\n return undefined;\n }\n switch (match[1]) {\n case \"ts-expect-error\":\n return CommentDirectiveType.ExpectError;\n case \"ts-ignore\":\n return CommentDirectiveType.Ignore;\n }\n return undefined;\n }\n function reScanTemplateToken(isTaggedTemplate) {\n pos = tokenStart;\n return token = scanTemplateAndSetTokenValue(!isTaggedTemplate);\n }\n function reScanTemplateHeadOrNoSubstitutionTemplate() {\n pos = tokenStart;\n return token = scanTemplateAndSetTokenValue(/*shouldEmitInvalidEscapeError*/ true);\n }\n function reScanJsxToken(allowMultilineJsxText = true) {\n pos = tokenStart = fullStartPos;\n return token = scanJsxToken(allowMultilineJsxText);\n }\n function reScanLessThanToken() {\n if (token === SyntaxKind.LessThanLessThanToken) {\n pos = tokenStart + 1;\n return token = SyntaxKind.LessThanToken;\n }\n return token;\n }\n function reScanHashToken() {\n if (token === SyntaxKind.PrivateIdentifier) {\n pos = tokenStart + 1;\n return token = SyntaxKind.HashToken;\n }\n return token;\n }\n function reScanQuestionToken() {\n pos = tokenStart + 1;\n return token = SyntaxKind.QuestionToken;\n }\n function scanJsxToken(allowMultilineJsxText = true) {\n fullStartPos = tokenStart = pos;\n if (pos >= end) {\n return token = SyntaxKind.EndOfFile;\n }\n let char = charCodeUnchecked(pos);\n if (char === CharacterCodes.lessThan) {\n if (charCodeUnchecked(pos + 1) === CharacterCodes.slash) {\n pos += 2;\n return token = SyntaxKind.LessThanSlashToken;\n }\n pos++;\n return token = SyntaxKind.LessThanToken;\n }\n if (char === CharacterCodes.openBrace) {\n pos++;\n return token = SyntaxKind.OpenBraceToken;\n }\n let firstNonWhitespace = 0;\n while (pos < end) {\n char = charCodeUnchecked(pos);\n if (char === CharacterCodes.openBrace) {\n break;\n }\n if (char === CharacterCodes.lessThan) {\n if (isConflictMarkerTrivia(text, pos)) {\n pos = scanConflictMarkerTrivia(text, pos);\n return token = SyntaxKind.ConflictMarkerTrivia;\n }\n break;\n }\n if (isLineBreak(char) && firstNonWhitespace === 0) {\n firstNonWhitespace = -1;\n }\n else if (!allowMultilineJsxText && isLineBreak(char) && firstNonWhitespace > 0) {\n break;\n }\n else if (!isWhiteSpaceLike(char)) {\n firstNonWhitespace = pos;\n }\n pos++;\n }\n tokenValue = text.substring(fullStartPos, pos);\n return firstNonWhitespace === -1 ? SyntaxKind.JsxTextAllWhiteSpaces : SyntaxKind.JsxText;\n }\n function scanJsxIdentifier() {\n if (tokenIsIdentifierOrKeyword(token)) {\n while (pos < end) {\n const ch = charCodeUnchecked(pos);\n if (ch === CharacterCodes.minus) {\n tokenValue += \"-\";\n pos++;\n continue;\n }\n const oldPos = pos;\n tokenValue += scanIdentifierParts();\n if (pos === oldPos) {\n break;\n }\n }\n return getIdentifierToken();\n }\n return token;\n }\n function scanJsxAttributeValue() {\n fullStartPos = pos;\n switch (charCodeUnchecked(pos)) {\n case CharacterCodes.doubleQuote:\n case CharacterCodes.singleQuote:\n tokenValue = scanString(/*jsxAttributeString*/ true);\n return token = SyntaxKind.StringLiteral;\n default:\n return scan();\n }\n }\n function reScanJsxAttributeValue() {\n pos = tokenStart = fullStartPos;\n return scanJsxAttributeValue();\n }\n function scanJSDocCommentTextToken(inBackticks) {\n fullStartPos = tokenStart = pos;\n tokenFlags = TokenFlags.None;\n if (pos >= end) {\n return token = SyntaxKind.EndOfFile;\n }\n for (let ch = charCodeUnchecked(pos); pos < end && (!isLineBreak(ch) && ch !== CharacterCodes.backtick); ch = codePointUnchecked(++pos)) {\n if (!inBackticks) {\n if (ch === CharacterCodes.openBrace) {\n break;\n }\n else if (ch === CharacterCodes.at\n && pos - 1 >= 0 && isWhiteSpaceSingleLine(charCodeUnchecked(pos - 1))\n && pos + 1 < end && isIdentifierStart(charCodeUnchecked(pos + 1))) {\n break;\n }\n }\n }\n if (pos === tokenStart) {\n return scanJsDocToken();\n }\n tokenValue = text.substring(tokenStart, pos);\n return token = SyntaxKind.JSDocCommentTextToken;\n }\n function scanJsDocToken() {\n fullStartPos = tokenStart = pos;\n tokenFlags = TokenFlags.None;\n if (pos >= end) {\n return token = SyntaxKind.EndOfFile;\n }\n const ch = codePointUnchecked(pos);\n pos += charSize(ch);\n switch (ch) {\n case CharacterCodes.tab:\n case CharacterCodes.verticalTab:\n case CharacterCodes.formFeed:\n case CharacterCodes.space:\n while (pos < end && isWhiteSpaceSingleLine(charCodeUnchecked(pos))) {\n pos++;\n }\n return token = SyntaxKind.WhitespaceTrivia;\n case CharacterCodes.at:\n return token = SyntaxKind.AtToken;\n case CharacterCodes.carriageReturn:\n if (charCodeUnchecked(pos) === CharacterCodes.lineFeed) {\n pos++;\n }\n // falls through\n case CharacterCodes.lineFeed:\n tokenFlags |= TokenFlags.PrecedingLineBreak;\n return token = SyntaxKind.NewLineTrivia;\n case CharacterCodes.asterisk:\n return token = SyntaxKind.AsteriskToken;\n case CharacterCodes.openBrace:\n return token = SyntaxKind.OpenBraceToken;\n case CharacterCodes.closeBrace:\n return token = SyntaxKind.CloseBraceToken;\n case CharacterCodes.openBracket:\n return token = SyntaxKind.OpenBracketToken;\n case CharacterCodes.closeBracket:\n return token = SyntaxKind.CloseBracketToken;\n case CharacterCodes.openParen:\n return token = SyntaxKind.OpenParenToken;\n case CharacterCodes.closeParen:\n return token = SyntaxKind.CloseParenToken;\n case CharacterCodes.lessThan:\n return token = SyntaxKind.LessThanToken;\n case CharacterCodes.greaterThan:\n return token = SyntaxKind.GreaterThanToken;\n case CharacterCodes.equals:\n return token = SyntaxKind.EqualsToken;\n case CharacterCodes.comma:\n return token = SyntaxKind.CommaToken;\n case CharacterCodes.dot:\n return token = SyntaxKind.DotToken;\n case CharacterCodes.backtick:\n return token = SyntaxKind.BacktickToken;\n case CharacterCodes.hash:\n return token = SyntaxKind.HashToken;\n case CharacterCodes.backslash:\n pos--;\n {\n const extendedCookedChar = peekExtendedUnicodeEscape();\n if (extendedCookedChar >= 0 && isIdentifierStart(extendedCookedChar)) {\n tokenValue = scanExtendedUnicodeEscape() + scanIdentifierParts();\n return token = getIdentifierToken();\n }\n const cookedChar = peekUnicodeEscape();\n if (cookedChar >= 0 && isIdentifierStart(cookedChar)) {\n pos += 6;\n tokenFlags |= TokenFlags.UnicodeEscape;\n tokenValue = String.fromCharCode(cookedChar) + scanIdentifierParts();\n return token = getIdentifierToken();\n }\n }\n pos++;\n return token = SyntaxKind.Unknown;\n }\n if (isIdentifierStart(ch)) {\n let char = ch;\n while (pos < end && isIdentifierPart(char = codePointUnchecked(pos)) || char === CharacterCodes.minus)\n pos += charSize(char);\n tokenValue = text.substring(tokenStart, pos);\n if (char === CharacterCodes.backslash) {\n tokenValue += scanIdentifierParts();\n }\n return token = getIdentifierToken();\n }\n else {\n return token = SyntaxKind.Unknown;\n }\n }\n function speculationHelper(callback, isLookahead) {\n const savePos = pos;\n const saveStartPos = fullStartPos;\n const saveTokenPos = tokenStart;\n const saveToken = token;\n const saveTokenValue = tokenValue;\n const saveTokenFlags = tokenFlags;\n const result = callback();\n if (!result || isLookahead) {\n pos = savePos;\n fullStartPos = saveStartPos;\n tokenStart = saveTokenPos;\n token = saveToken;\n tokenValue = saveTokenValue;\n tokenFlags = saveTokenFlags;\n }\n return result;\n }\n function scanRange(start, length, callback) {\n const saveEnd = end;\n const savePos = pos;\n const saveStartPos = fullStartPos;\n const saveTokenPos = tokenStart;\n const saveToken = token;\n const saveTokenValue = tokenValue;\n const saveTokenFlags = tokenFlags;\n const saveErrorExpectations = commentDirectives;\n setText(text, start, length);\n const result = callback();\n end = saveEnd;\n pos = savePos;\n fullStartPos = saveStartPos;\n tokenStart = saveTokenPos;\n token = saveToken;\n tokenValue = saveTokenValue;\n tokenFlags = saveTokenFlags;\n commentDirectives = saveErrorExpectations;\n return result;\n }\n function lookAhead(callback) {\n return speculationHelper(callback, /*isLookahead*/ true);\n }\n function tryScan(callback) {\n return speculationHelper(callback, /*isLookahead*/ false);\n }\n function getText() {\n return text;\n }\n function clearCommentDirectives() {\n commentDirectives = undefined;\n }\n function setText(newText, start, length) {\n text = newText || \"\";\n end = length === undefined ? text.length : start + length;\n resetTokenState(start || 0);\n }\n function setLanguageVariant(variant) {\n languageVariant = variant;\n }\n function resetTokenState(position) {\n pos = position;\n fullStartPos = position;\n tokenStart = position;\n token = SyntaxKind.Unknown;\n tokenValue = undefined;\n tokenFlags = TokenFlags.None;\n }\n function setSkipJsDocLeadingAsterisks(skip) {\n skipJsDocLeadingAsterisks += skip ? 1 : -1;\n }\n}\n//# sourceMappingURL=scanner.js.map","import { NodeFlags } from \"#enums/nodeFlags\";\nimport { SyntaxKind } from \"#enums/syntaxKind\";\nimport { createToken } from \"./factory.generated.js\";\nimport { isJSDocNodeKind, isKeywordKind, isPrivateIdentifier, isPropertyNameLiteral, isTokenKind, } from \"./is.js\";\nimport { createScanner, skipTrivia, } from \"./scanner.js\";\nexport function getTokenAtPosition(sourceFile, position) {\n return getTokenAtPositionImpl(sourceFile, position, /*allowPositionInLeadingTrivia*/ true, /*includePrecedingTokenAtEndPosition*/ undefined);\n}\nexport function getTouchingPropertyName(sourceFile, position) {\n return getTokenAtPositionImpl(sourceFile, position, /*allowPositionInLeadingTrivia*/ false, node => isPropertyNameLiteral(node) || isKeywordKind(node.kind) || isPrivateIdentifier(node));\n}\nexport function getTouchingToken(sourceFile, position) {\n return getTokenAtPositionImpl(sourceFile, position, /*allowPositionInLeadingTrivia*/ false, /*includePrecedingTokenAtEndPosition*/ undefined);\n}\n/**\n * Finds the token that starts immediately after `previousToken` ends, searching\n * within `parent`. Returns `undefined` if no such token exists.\n */\nexport function findNextToken(previousToken, parent, sourceFile) {\n return find(parent);\n function find(n) {\n if (isTokenKind(n.kind) && n.pos === previousToken.end) {\n // This is the token that starts at the end of previousToken – return it.\n return n;\n }\n // Find the child node that contains `previousToken` or starts immediately after it.\n let foundNode;\n const visitChild = (node) => {\n if (node.flags & NodeFlags.Reparsed) {\n return undefined;\n }\n if (node.pos <= previousToken.end && node.end > previousToken.end) {\n foundNode = node;\n }\n return undefined;\n };\n // Visit JSDoc children first (mirrors Go's VisitEachChildAndJSDoc).\n if (n.jsDoc) {\n for (const jsdoc of n.jsDoc) {\n visitChild(jsdoc);\n }\n }\n n.forEachChild(visitChild, nodes => {\n if (nodes.length > 0 && foundNode === undefined) {\n for (const node of nodes) {\n if (node.flags & NodeFlags.Reparsed)\n continue;\n if (node.pos > previousToken.end)\n break;\n if (node.end > previousToken.end) {\n foundNode = node;\n break;\n }\n }\n }\n return undefined;\n });\n // Recurse into the found child.\n if (foundNode !== undefined) {\n return find(foundNode);\n }\n // No AST child covers the position; use the scanner to find the syntactic token.\n // The scanner is initialized at `previousToken.end`, so tokenFullStart === previousToken.end.\n const startPos = previousToken.end;\n if (startPos >= n.pos && startPos < n.end) {\n const scanner = getScannerForSourceFile(sourceFile, startPos);\n const token = scanner.getToken();\n const tokenFullStart = scanner.getTokenFullStart();\n const tokenEnd = scanner.getTokenEnd();\n const flags = scanner.getTokenFlags();\n return getOrCreateToken(sourceFile, token, tokenFullStart, tokenEnd, n, flags);\n }\n return undefined;\n }\n}\n/**\n * Finds the leftmost token satisfying `position < token.end`.\n * If the position is in the trivia of that leftmost token, or the token is invalid,\n * returns the rightmost valid token with `token.end <= position`.\n * Excludes `JsxText` tokens containing only whitespace.\n */\nexport function findPrecedingToken(sourceFile, position) {\n return findPrecedingTokenImpl(sourceFile, position, sourceFile);\n}\nfunction getTokenAtPositionImpl(sourceFile, position, allowPositionInLeadingTrivia, includePrecedingTokenAtEndPosition) {\n let current = sourceFile;\n let nodeAfterLeft;\n const state = {\n next: undefined,\n prevSubtree: undefined,\n left: 0,\n };\n const testNode = (node) => {\n if (node.kind !== SyntaxKind.EndOfFile && node.end === position && includePrecedingTokenAtEndPosition !== undefined) {\n state.prevSubtree = node;\n }\n // A node \"contains\" the position if position < end, except nodes at the file end\n // treat end as inclusive (there's nowhere else to look). This applies to the EOF\n // token itself, and to JSDoc nodes reaching EOF (e.g. unterminated JSDoc comments).\n if (node.end < position || node.end === position &&\n node.kind !== SyntaxKind.EndOfFile &&\n (!isJSDocNodeKind(node.kind) || node.end !== sourceFile.endOfFileToken.end)) {\n return -1;\n }\n const nodePos = getPosition(node, sourceFile, allowPositionInLeadingTrivia);\n if (nodePos > position) {\n return 1;\n }\n return 0;\n };\n while (true) {\n // Visit each child of current to find the one containing the position.\n state.next = undefined;\n nodeAfterLeft = undefined;\n // In Strada, JSDoc nodes with a single comment represent that comment as a string\n // property (not a child node), so forEachChild does not visit it. We replicate this\n // by detecting single-comment NodeLists in visitList and skipping their elements in visitNode.\n let skipSingleCommentChildren = false;\n const visitNode = (node) => {\n if (node.flags & NodeFlags.Reparsed) {\n return undefined;\n }\n if (skipSingleCommentChildren && isJSDocCommentChildKind(node.kind)) {\n return undefined;\n }\n if (nodeAfterLeft === undefined) {\n nodeAfterLeft = node;\n }\n if (state.next === undefined) {\n const result = testNode(node);\n switch (result) {\n case -1:\n if (!isJSDocNodeKind(node.kind)) {\n state.left = node.end;\n }\n nodeAfterLeft = undefined;\n break;\n case 0:\n state.next = node;\n break;\n }\n }\n return undefined;\n };\n // Visit JSDoc children first, then regular children (mirrors Go's VisitEachChildAndJSDoc).\n if (current.jsDoc) {\n for (const jsdoc of current.jsDoc) {\n visitNode(jsdoc);\n }\n }\n current.forEachChild(visitNode, nodes => {\n // Track whether this NodeList is a single-comment list that should be skipped.\n // The flag affects the subsequent forEachNode(visitNode) calls for this NodeList.\n skipSingleCommentChildren = isJSDocSingleCommentNodeList(nodes);\n if (nodes.length === 0 || skipSingleCommentChildren) {\n return undefined;\n }\n if (nodeAfterLeft === undefined) {\n for (const node of nodes) {\n if (!(node.flags & NodeFlags.Reparsed)) {\n nodeAfterLeft = node;\n break;\n }\n }\n }\n if (state.next === undefined) {\n if (nodes.end === position && includePrecedingTokenAtEndPosition !== undefined) {\n state.left = nodes.end;\n nodeAfterLeft = undefined;\n state.prevSubtree = nodes[nodes.length - 1];\n }\n else if (nodes.end <= position) {\n state.left = nodes.end;\n nodeAfterLeft = undefined;\n }\n else if (nodes.pos <= position) {\n binarySearchNodeList(nodes, testNode, (node, middle, arr) => {\n state.left = node.end;\n nodeAfterLeft = undefined;\n for (let i = middle + 1; i < arr.length; i++) {\n if (!(arr[i].flags & NodeFlags.Reparsed)) {\n nodeAfterLeft = arr[i];\n break;\n }\n }\n }, found => {\n state.next = found;\n });\n }\n }\n return undefined;\n });\n // If prevSubtree was set, check if the rightmost token of prevSubtree should be returned.\n if (state.prevSubtree !== undefined) {\n const child = findPrecedingTokenImpl(sourceFile, position, state.prevSubtree);\n if (child !== undefined && child.end === position && includePrecedingTokenAtEndPosition(child)) {\n return child;\n }\n state.prevSubtree = undefined;\n }\n if (state.next === undefined) {\n if (isTokenKind(current.kind) || shouldSkipChild(current)) {\n return current;\n }\n // Use the scanner to find a token not stored in the AST.\n const scanner = getScannerForSourceFile(sourceFile, state.left);\n let end = current.end;\n const afterLeft = nodeAfterLeft;\n if (afterLeft !== undefined) {\n end = afterLeft.pos;\n }\n while (state.left < end) {\n const token = scanner.getToken();\n const tokenFullStart = scanner.getTokenFullStart();\n const tokenStart = allowPositionInLeadingTrivia ? tokenFullStart : scanner.getTokenStart();\n const tokenEnd = scanner.getTokenEnd();\n const flags = scanner.getTokenFlags();\n if (tokenEnd > end) {\n break;\n }\n if (tokenStart <= position && position < tokenEnd) {\n if (token === SyntaxKind.Identifier || !isTokenKind(token)) {\n if (isJSDocNodeKind(current.kind)) {\n return current;\n }\n throw new Error(`did not expect ${SyntaxKind[current.kind]} to have ${SyntaxKind[token]} in its trivia`);\n }\n return getOrCreateToken(sourceFile, token, tokenFullStart, tokenEnd, current, flags);\n }\n if (includePrecedingTokenAtEndPosition !== undefined && tokenEnd === position) {\n const prevToken = getOrCreateToken(sourceFile, token, tokenFullStart, tokenEnd, current, flags);\n if (includePrecedingTokenAtEndPosition(prevToken)) {\n return prevToken;\n }\n }\n state.left = tokenEnd;\n scanner.scan();\n }\n return current;\n }\n current = state.next;\n state.left = current.pos;\n nodeAfterLeft = undefined;\n }\n}\nfunction getPosition(node, sourceFile, allowPositionInLeadingTrivia) {\n if (allowPositionInLeadingTrivia) {\n return node.pos;\n }\n return getTokenPosOfNode(node, sourceFile, /*includeJSDoc*/ true);\n}\n/** @internal */\nexport function getTokenPosOfNode(node, sourceFile, includeJSDoc) {\n // With nodes that have no width (i.e. 'Missing' nodes), we actually *don't*\n // want to skip trivia because this will launch us forward to the next token.\n if (nodeIsMissing(node)) {\n return node.pos;\n }\n if (isJSDocNodeKind(node.kind) || node.kind === SyntaxKind.JsxText) {\n return skipTrivia(sourceFile.text, node.pos, /*stopAfterLineBreak*/ false, /*stopAtComments*/ true);\n }\n if (includeJSDoc && node.jsDoc && node.jsDoc.length > 0) {\n return getTokenPosOfNode(node.jsDoc[0], sourceFile, /*includeJSDoc*/ false);\n }\n return skipTrivia(sourceFile.text, node.pos, /*stopAfterLineBreak*/ false, /*stopAtComments*/ false, /*inJSDoc*/ !!(node.flags & NodeFlags.JSDoc));\n}\nfunction nodeIsMissing(node) {\n return node.pos === node.end && node.pos >= 0 && node.kind !== SyntaxKind.EndOfFile;\n}\nfunction findPrecedingTokenImpl(sourceFile, position, startNode) {\n const find = (n) => {\n if (isTokenKind(n.kind) && n.kind !== SyntaxKind.EndOfFile) {\n return n;\n }\n let foundChild;\n let prevChild;\n // Visit JSDoc nodes first (mirrors Go's VisitEachChildAndJSDoc).\n if (n.jsDoc) {\n for (const jsdoc of n.jsDoc) {\n if (jsdoc.flags & NodeFlags.Reparsed)\n continue;\n if (foundChild !== undefined)\n break;\n if (position < jsdoc.end && (prevChild === undefined || prevChild.end <= position)) {\n foundChild = jsdoc;\n }\n else {\n prevChild = jsdoc;\n }\n }\n }\n let skipSingleCommentChildrenImpl = false;\n n.forEachChild(node => {\n if (node.flags & NodeFlags.Reparsed) {\n return undefined;\n }\n if (skipSingleCommentChildrenImpl && isJSDocCommentChildKind(node.kind)) {\n return undefined;\n }\n if (foundChild !== undefined) {\n return undefined;\n }\n if (position < node.end && (prevChild === undefined || prevChild.end <= position)) {\n foundChild = node;\n }\n else {\n prevChild = node;\n }\n return undefined;\n }, nodes => {\n skipSingleCommentChildrenImpl = isJSDocSingleCommentNodeList(nodes);\n if (foundChild !== undefined) {\n return undefined;\n }\n if (nodes.length > 0 && !skipSingleCommentChildrenImpl) {\n const index = binarySearchForPrecedingToken(nodes, position);\n if (index >= 0 && !(nodes[index].flags & NodeFlags.Reparsed)) {\n foundChild = nodes[index];\n }\n const lookupIndex = index >= 0 ? index - 1 : nodes.length - 1;\n for (let i = lookupIndex; i >= 0; i--) {\n if (!(nodes[i].flags & NodeFlags.Reparsed)) {\n if (prevChild === undefined) {\n prevChild = nodes[i];\n }\n break;\n }\n }\n }\n return undefined;\n });\n if (foundChild !== undefined) {\n const start = getTokenPosOfNode(foundChild, sourceFile, /*includeJSDoc*/ true);\n if (start >= position) {\n if (position >= foundChild.pos) {\n // We are in the leading trivia of foundChild. Check for JSDoc nodes of n\n // preceding foundChild, mirroring Go's findPrecedingToken logic.\n let jsDoc;\n if (n.jsDoc) {\n for (let i = n.jsDoc.length - 1; i >= 0; i--) {\n if (n.jsDoc[i].pos >= foundChild.pos) {\n jsDoc = n.jsDoc[i];\n break;\n }\n }\n }\n if (jsDoc !== undefined) {\n if (position < jsDoc.end) {\n return find(jsDoc);\n }\n return findRightmostValidToken(sourceFile, jsDoc.end, n, position);\n }\n return findRightmostValidToken(sourceFile, foundChild.pos, n, -1);\n }\n // Answer is in tokens between two visited children.\n return findRightmostValidToken(sourceFile, foundChild.pos, n, position);\n }\n return find(foundChild);\n }\n if (position >= n.end) {\n return findRightmostValidToken(sourceFile, n.end, n, -1);\n }\n return findRightmostValidToken(sourceFile, n.end, n, position);\n };\n return find(startNode);\n}\nfunction findRightmostValidToken(sourceFile, endPos, containingNode, position) {\n if (position === -1) {\n position = containingNode.end;\n }\n const find = (n, endPos) => {\n if (isTokenKind(n.kind) && n.kind !== SyntaxKind.EndOfFile) {\n return n;\n }\n let rightmostValidNode;\n let hasChildren = false;\n // Visit JSDoc nodes first (mirrors Go's VisitEachChildAndJSDoc).\n if (n.jsDoc) {\n hasChildren = true;\n for (const jsdoc of n.jsDoc) {\n if (jsdoc.flags & NodeFlags.Reparsed)\n continue;\n if (jsdoc.end > endPos || getTokenPosOfNode(jsdoc, sourceFile) >= position)\n continue;\n if (isValidPrecedingNode(jsdoc, sourceFile)) {\n rightmostValidNode = jsdoc;\n }\n }\n }\n let skipSingleCommentChildren = false;\n n.forEachChild(node => {\n if (node.flags & NodeFlags.Reparsed) {\n return undefined;\n }\n if (skipSingleCommentChildren && isJSDocCommentChildKind(node.kind)) {\n return undefined;\n }\n hasChildren = true;\n if (node.end > endPos || getTokenPosOfNode(node, sourceFile) >= position) {\n return undefined;\n }\n if (isValidPrecedingNode(node, sourceFile)) {\n rightmostValidNode = node;\n }\n return undefined;\n }, nodes => {\n // Skip single-comment JSDoc NodeLists (e.g. JSDocText children of a JSDoc node):\n // In Go, these are stored as string properties and are never visited as children.\n skipSingleCommentChildren = isJSDocSingleCommentNodeList(nodes);\n if (nodes.length > 0 && !skipSingleCommentChildren) {\n hasChildren = true;\n for (let i = nodes.length - 1; i >= 0; i--) {\n const node = nodes[i];\n if (node.flags & NodeFlags.Reparsed)\n continue;\n if (node.end > endPos || getTokenPosOfNode(node, sourceFile) >= position)\n continue;\n if (isValidPrecedingNode(node, sourceFile)) {\n rightmostValidNode = node;\n break;\n }\n }\n }\n return undefined;\n });\n // Scan for syntactic tokens (e.g. `{`, `,`) between AST nodes, matching Go's\n // findRightmostValidToken scanner step.\n if (!shouldSkipChild(n)) {\n const startPos = rightmostValidNode !== undefined ? rightmostValidNode.end : n.pos;\n const targetEnd = Math.min(endPos, position);\n if (startPos < targetEnd) {\n const scanner = getScannerForSourceFile(sourceFile, startPos);\n let pos = startPos;\n let lastScannedToken;\n while (pos < targetEnd) {\n const tokenStart = scanner.getTokenStart();\n if (tokenStart >= position)\n break;\n const tokenFullStart = scanner.getTokenFullStart();\n const tokenEnd = scanner.getTokenEnd();\n const token = scanner.getToken();\n const flags = scanner.getTokenFlags();\n lastScannedToken = getOrCreateToken(sourceFile, token, tokenFullStart, tokenEnd, n, flags);\n pos = tokenEnd;\n scanner.scan();\n }\n if (lastScannedToken !== undefined) {\n return lastScannedToken;\n }\n }\n }\n if (!hasChildren) {\n if (n !== containingNode) {\n return n;\n }\n return undefined;\n }\n if (rightmostValidNode !== undefined) {\n return find(rightmostValidNode, rightmostValidNode.end);\n }\n return undefined;\n };\n return find(containingNode, endPos);\n}\nfunction isValidPrecedingNode(node, sourceFile) {\n if (node.kind === SyntaxKind.EndOfFile) {\n return false;\n }\n const start = getTokenPosOfNode(node, sourceFile);\n const width = node.end - start;\n return width > 0;\n}\nfunction shouldSkipChild(node) {\n return node.kind === SyntaxKind.JSDoc ||\n node.kind === SyntaxKind.JSDocText ||\n node.kind === SyntaxKind.JSDocTypeLiteral ||\n node.kind === SyntaxKind.JSDocSignature ||\n node.kind === SyntaxKind.JSDocLink ||\n node.kind === SyntaxKind.JSDocLinkCode ||\n node.kind === SyntaxKind.JSDocLinkPlain ||\n isJSDocTag(node);\n}\nfunction isJSDocTag(node) {\n return node.kind >= SyntaxKind.FirstJSDocTagNode && node.kind <= SyntaxKind.LastJSDocTagNode;\n}\n// In Strada, if a JSDoc node has a single comment, that comment is represented as a string\n// property as a simplification, and therefore that comment is not visited by forEachChild.\n// To match, we skip single-element comment NodeLists within JSDoc/JSDocTag nodes.\nfunction isJSDocCommentChildKind(kind) {\n switch (kind) {\n case SyntaxKind.JSDocText:\n case SyntaxKind.JSDocLink:\n case SyntaxKind.JSDocLinkCode:\n case SyntaxKind.JSDocLinkPlain:\n return true;\n default:\n return false;\n }\n}\nfunction isJSDocSingleCommentNodeList(nodes) {\n return nodes.length === 1 && isJSDocCommentChildKind(nodes[0].kind);\n}\nfunction getScannerForSourceFile(sourceFile, pos) {\n const scanner = createScanner(/*skipTrivia*/ true, sourceFile.languageVariant, sourceFile.text);\n scanner.resetTokenState(pos);\n scanner.scan();\n return scanner;\n}\nfunction getOrCreateToken(sourceFile, kind, pos, end, parent, _flags) {\n const key = `${pos}_${end}`;\n if (!sourceFile.tokenCache) {\n sourceFile.tokenCache = new Map();\n }\n const existing = sourceFile.tokenCache.get(key);\n if (existing !== undefined) {\n return existing;\n }\n const token = createToken(kind);\n token.pos = pos;\n token.end = end;\n token.parent = parent;\n sourceFile.tokenCache.set(key, token);\n return token;\n}\n/** Binary search a node list for the node containing position. */\nfunction binarySearchNodeList(nodes, testNode, onLeft, onMatch) {\n let lo = 0;\n let hi = nodes.length - 1;\n while (lo <= hi) {\n const mid = (lo + hi) >>> 1;\n const node = nodes[mid];\n if (node.flags & NodeFlags.Reparsed) {\n // Skip reparsed nodes: try to find a non-reparsed node nearby\n let found = false;\n for (let i = mid + 1; i <= hi; i++) {\n if (!(nodes[i].flags & NodeFlags.Reparsed)) {\n const cmp = testNode(nodes[i]);\n if (cmp < 0) {\n onLeft(nodes[i], i, nodes);\n lo = i + 1;\n }\n else if (cmp > 0) {\n hi = i - 1;\n }\n else {\n onMatch(nodes[i]);\n return;\n }\n found = true;\n break;\n }\n }\n if (!found) {\n hi = mid - 1;\n }\n continue;\n }\n const cmp = testNode(node);\n if (cmp < 0) {\n onLeft(node, mid, nodes);\n lo = mid + 1;\n }\n else if (cmp > 0) {\n hi = mid - 1;\n }\n else {\n onMatch(node);\n return;\n }\n }\n}\nfunction binarySearchForPrecedingToken(nodes, position) {\n let lo = 0;\n let hi = nodes.length - 1;\n let result = -1;\n while (lo <= hi) {\n const mid = (lo + hi) >>> 1;\n const node = nodes[mid];\n if (node.flags & NodeFlags.Reparsed) {\n lo = mid + 1;\n continue;\n }\n if (position < node.end) {\n if (mid === 0 || position >= nodes[mid - 1].end) {\n result = mid;\n break;\n }\n hi = mid - 1;\n }\n else {\n lo = mid + 1;\n }\n }\n return result;\n}\n//# sourceMappingURL=astnav.js.map","// Code generated by _scripts/generate-encoder.ts. DO NOT EDIT.\nimport { SyntaxKind } from \"../../ast/index.js\";\nexport const childProperties = {\n [SyntaxKind.QualifiedName]: [\"left\", \"right\"],\n [SyntaxKind.ComputedPropertyName]: [\"expression\"],\n [SyntaxKind.Decorator]: [\"expression\"],\n [SyntaxKind.IfStatement]: [\"expression\", \"thenStatement\", \"elseStatement\"],\n [SyntaxKind.DoStatement]: [\"statement\", \"expression\"],\n [SyntaxKind.WhileStatement]: [\"expression\", \"statement\"],\n [SyntaxKind.ForStatement]: [\"initializer\", \"condition\", \"incrementor\", \"statement\"],\n [SyntaxKind.ForInStatement]: [\"awaitModifier\", \"initializer\", \"expression\", \"statement\"],\n [SyntaxKind.ForOfStatement]: [\"awaitModifier\", \"initializer\", \"expression\", \"statement\"],\n [SyntaxKind.BreakStatement]: [\"label\"],\n [SyntaxKind.ContinueStatement]: [\"label\"],\n [SyntaxKind.ReturnStatement]: [\"expression\"],\n [SyntaxKind.WithStatement]: [\"expression\", \"statement\"],\n [SyntaxKind.SwitchStatement]: [\"expression\", \"caseBlock\"],\n [SyntaxKind.CaseBlock]: [\"clauses\"],\n [SyntaxKind.CaseClause]: [\"expression\", \"statements\"],\n [SyntaxKind.DefaultClause]: [\"expression\", \"statements\"],\n [SyntaxKind.ThrowStatement]: [\"expression\"],\n [SyntaxKind.TryStatement]: [\"tryBlock\", \"catchClause\", \"finallyBlock\"],\n [SyntaxKind.CatchClause]: [\"variableDeclaration\", \"block\"],\n [SyntaxKind.LabeledStatement]: [\"label\", \"statement\"],\n [SyntaxKind.ExpressionStatement]: [\"expression\"],\n [SyntaxKind.Block]: [\"statements\"],\n [SyntaxKind.VariableStatement]: [\"modifiers\", \"declarationList\"],\n [SyntaxKind.VariableDeclaration]: [\"name\", \"exclamationToken\", \"type\", \"initializer\"],\n [SyntaxKind.VariableDeclarationList]: [\"declarations\"],\n [SyntaxKind.ObjectBindingPattern]: [\"elements\"],\n [SyntaxKind.ArrayBindingPattern]: [\"elements\"],\n [SyntaxKind.Parameter]: [\"modifiers\", \"dotDotDotToken\", \"name\", \"questionToken\", \"type\", \"initializer\"],\n [SyntaxKind.BindingElement]: [\"dotDotDotToken\", \"propertyName\", \"name\", \"initializer\"],\n [SyntaxKind.MissingDeclaration]: [\"modifiers\"],\n [SyntaxKind.FunctionDeclaration]: [\"modifiers\", \"asteriskToken\", \"name\", \"typeParameters\", \"parameters\", \"type\", \"body\"],\n [SyntaxKind.ClassDeclaration]: [\"modifiers\", \"name\", \"typeParameters\", \"heritageClauses\", \"members\"],\n [SyntaxKind.ClassExpression]: [\"modifiers\", \"name\", \"typeParameters\", \"heritageClauses\", \"members\"],\n [SyntaxKind.HeritageClause]: [\"types\"],\n [SyntaxKind.InterfaceDeclaration]: [\"modifiers\", \"name\", \"typeParameters\", \"heritageClauses\", \"members\"],\n [SyntaxKind.TypeAliasDeclaration]: [\"modifiers\", \"name\", \"typeParameters\", \"type\"],\n [SyntaxKind.JSTypeAliasDeclaration]: [\"modifiers\", \"name\", \"typeParameters\", \"type\"],\n [SyntaxKind.EnumMember]: [\"name\", \"initializer\"],\n [SyntaxKind.EnumDeclaration]: [\"modifiers\", \"name\", \"members\"],\n [SyntaxKind.ModuleBlock]: [\"statements\"],\n [SyntaxKind.ImportDeclaration]: [\"modifiers\", \"importClause\", \"moduleSpecifier\", \"attributes\"],\n [SyntaxKind.JSImportDeclaration]: [\"modifiers\", \"importClause\", \"moduleSpecifier\", \"attributes\"],\n [SyntaxKind.ExternalModuleReference]: [\"expression\"],\n [SyntaxKind.NamespaceImport]: [\"name\"],\n [SyntaxKind.NamedImports]: [\"elements\"],\n [SyntaxKind.ExportAssignment]: [\"modifiers\", \"type\", \"expression\"],\n [SyntaxKind.NamespaceExportDeclaration]: [\"modifiers\", \"name\"],\n [SyntaxKind.NamespaceExport]: [\"name\"],\n [SyntaxKind.NamedExports]: [\"elements\"],\n [SyntaxKind.ExportSpecifier]: [\"propertyName\", \"name\"],\n [SyntaxKind.CallSignature]: [\"typeParameters\", \"parameters\", \"type\"],\n [SyntaxKind.ConstructSignature]: [\"typeParameters\", \"parameters\", \"type\"],\n [SyntaxKind.Constructor]: [\"modifiers\", \"typeParameters\", \"parameters\", \"type\", \"body\"],\n [SyntaxKind.GetAccessor]: [\"modifiers\", \"name\", \"typeParameters\", \"parameters\", \"type\", \"body\"],\n [SyntaxKind.SetAccessor]: [\"modifiers\", \"name\", \"typeParameters\", \"parameters\", \"type\", \"body\"],\n [SyntaxKind.IndexSignature]: [\"modifiers\", \"parameters\", \"type\"],\n [SyntaxKind.MethodSignature]: [\"modifiers\", \"name\", \"postfixToken\", \"typeParameters\", \"parameters\", \"type\"],\n [SyntaxKind.MethodDeclaration]: [\"modifiers\", \"asteriskToken\", \"name\", \"postfixToken\", \"typeParameters\", \"parameters\", \"type\", \"body\"],\n [SyntaxKind.PropertySignature]: [\"modifiers\", \"name\", \"postfixToken\", \"type\", \"initializer\"],\n [SyntaxKind.PropertyDeclaration]: [\"modifiers\", \"name\", \"postfixToken\", \"type\", \"initializer\"],\n [SyntaxKind.ClassStaticBlockDeclaration]: [\"modifiers\", \"body\"],\n [SyntaxKind.BinaryExpression]: [\"modifiers\", \"left\", \"type\", \"operatorToken\", \"right\"],\n [SyntaxKind.PrefixUnaryExpression]: [\"operand\"],\n [SyntaxKind.PostfixUnaryExpression]: [\"operand\"],\n [SyntaxKind.YieldExpression]: [\"asteriskToken\", \"expression\"],\n [SyntaxKind.ArrowFunction]: [\"modifiers\", \"typeParameters\", \"parameters\", \"type\", \"equalsGreaterThanToken\", \"body\"],\n [SyntaxKind.FunctionExpression]: [\"modifiers\", \"asteriskToken\", \"name\", \"typeParameters\", \"parameters\", \"type\", \"body\"],\n [SyntaxKind.AsExpression]: [\"expression\", \"type\"],\n [SyntaxKind.SatisfiesExpression]: [\"expression\", \"type\"],\n [SyntaxKind.ConditionalExpression]: [\"condition\", \"questionToken\", \"whenTrue\", \"colonToken\", \"whenFalse\"],\n [SyntaxKind.PropertyAccessExpression]: [\"expression\", \"questionDotToken\", \"name\"],\n [SyntaxKind.ElementAccessExpression]: [\"expression\", \"questionDotToken\", \"argumentExpression\"],\n [SyntaxKind.CallExpression]: [\"expression\", \"questionDotToken\", \"typeArguments\", \"arguments\"],\n [SyntaxKind.NewExpression]: [\"expression\", \"typeArguments\", \"arguments\"],\n [SyntaxKind.MetaProperty]: [\"name\"],\n [SyntaxKind.NonNullExpression]: [\"expression\"],\n [SyntaxKind.SpreadElement]: [\"expression\"],\n [SyntaxKind.TemplateExpression]: [\"head\", \"templateSpans\"],\n [SyntaxKind.TemplateSpan]: [\"expression\", \"literal\"],\n [SyntaxKind.TaggedTemplateExpression]: [\"tag\", \"questionDotToken\", \"typeArguments\", \"template\"],\n [SyntaxKind.ParenthesizedExpression]: [\"expression\"],\n [SyntaxKind.ArrayLiteralExpression]: [\"elements\"],\n [SyntaxKind.ObjectLiteralExpression]: [\"properties\"],\n [SyntaxKind.SpreadAssignment]: [\"expression\"],\n [SyntaxKind.PropertyAssignment]: [\"modifiers\", \"name\", \"postfixToken\", \"type\", \"initializer\"],\n [SyntaxKind.ShorthandPropertyAssignment]: [\"modifiers\", \"name\", \"postfixToken\", \"type\", \"equalsToken\", \"objectAssignmentInitializer\"],\n [SyntaxKind.DeleteExpression]: [\"expression\"],\n [SyntaxKind.TypeOfExpression]: [\"expression\"],\n [SyntaxKind.VoidExpression]: [\"expression\"],\n [SyntaxKind.AwaitExpression]: [\"expression\"],\n [SyntaxKind.TypeAssertionExpression]: [\"type\", \"expression\"],\n [SyntaxKind.UnionType]: [\"types\"],\n [SyntaxKind.IntersectionType]: [\"types\"],\n [SyntaxKind.ConditionalType]: [\"checkType\", \"extendsType\", \"trueType\", \"falseType\"],\n [SyntaxKind.TypeOperator]: [\"type\"],\n [SyntaxKind.InferType]: [\"typeParameter\"],\n [SyntaxKind.ArrayType]: [\"elementType\"],\n [SyntaxKind.IndexedAccessType]: [\"objectType\", \"indexType\"],\n [SyntaxKind.TypeReference]: [\"typeName\", \"typeArguments\"],\n [SyntaxKind.ExpressionWithTypeArguments]: [\"expression\", \"typeArguments\"],\n [SyntaxKind.LiteralType]: [\"literal\"],\n [SyntaxKind.TypePredicate]: [\"assertsModifier\", \"parameterName\", \"type\"],\n [SyntaxKind.ImportAttribute]: [\"name\", \"value\"],\n [SyntaxKind.ImportAttributes]: [\"attributes\"],\n [SyntaxKind.TypeQuery]: [\"exprName\", \"typeArguments\"],\n [SyntaxKind.MappedType]: [\"readonlyToken\", \"typeParameter\", \"nameType\", \"questionToken\", \"type\", \"members\"],\n [SyntaxKind.TypeLiteral]: [\"members\"],\n [SyntaxKind.TupleType]: [\"elements\"],\n [SyntaxKind.NamedTupleMember]: [\"dotDotDotToken\", \"name\", \"questionToken\", \"type\"],\n [SyntaxKind.OptionalType]: [\"type\"],\n [SyntaxKind.RestType]: [\"type\"],\n [SyntaxKind.ParenthesizedType]: [\"type\"],\n [SyntaxKind.FunctionType]: [\"typeParameters\", \"parameters\", \"type\"],\n [SyntaxKind.ConstructorType]: [\"modifiers\", \"typeParameters\", \"parameters\", \"type\"],\n [SyntaxKind.TemplateLiteralType]: [\"head\", \"templateSpans\"],\n [SyntaxKind.TemplateLiteralTypeSpan]: [\"type\", \"literal\"],\n [SyntaxKind.SyntheticExpression]: [\"tupleNameSource\"],\n [SyntaxKind.PartiallyEmittedExpression]: [\"expression\"],\n [SyntaxKind.JsxElement]: [\"openingElement\", \"children\", \"closingElement\"],\n [SyntaxKind.JsxAttributes]: [\"properties\"],\n [SyntaxKind.JsxNamespacedName]: [\"namespace\", \"name\"],\n [SyntaxKind.JsxOpeningElement]: [\"tagName\", \"typeArguments\", \"attributes\"],\n [SyntaxKind.JsxSelfClosingElement]: [\"tagName\", \"typeArguments\", \"attributes\"],\n [SyntaxKind.JsxFragment]: [\"openingFragment\", \"children\", \"closingFragment\"],\n [SyntaxKind.JsxAttribute]: [\"name\", \"initializer\"],\n [SyntaxKind.JsxSpreadAttribute]: [\"expression\"],\n [SyntaxKind.JsxClosingElement]: [\"tagName\"],\n [SyntaxKind.JsxExpression]: [\"dotDotDotToken\", \"expression\"],\n [SyntaxKind.SyntaxList]: [\"children\"],\n [SyntaxKind.JSDoc]: [\"comment\", \"tags\"],\n [SyntaxKind.JSDocTypeExpression]: [\"type\"],\n [SyntaxKind.JSDocNonNullableType]: [\"type\"],\n [SyntaxKind.JSDocNullableType]: [\"type\"],\n [SyntaxKind.JSDocVariadicType]: [\"type\"],\n [SyntaxKind.JSDocOptionalType]: [\"type\"],\n [SyntaxKind.JSDocTypeTag]: [\"tagName\", \"typeExpression\", \"comment\"],\n [SyntaxKind.JSDocUnknownTag]: [\"tagName\", \"comment\"],\n [SyntaxKind.JSDocTemplateTag]: [\"tagName\", \"constraint\", \"typeParameters\", \"comment\"],\n [SyntaxKind.JSDocReturnTag]: [\"tagName\", \"typeExpression\", \"comment\"],\n [SyntaxKind.JSDocPublicTag]: [\"tagName\", \"comment\"],\n [SyntaxKind.JSDocPrivateTag]: [\"tagName\", \"comment\"],\n [SyntaxKind.JSDocProtectedTag]: [\"tagName\", \"comment\"],\n [SyntaxKind.JSDocReadonlyTag]: [\"tagName\", \"comment\"],\n [SyntaxKind.JSDocOverrideTag]: [\"tagName\", \"comment\"],\n [SyntaxKind.JSDocDeprecatedTag]: [\"tagName\", \"comment\"],\n [SyntaxKind.JSDocSeeTag]: [\"tagName\", \"nameExpression\", \"comment\"],\n [SyntaxKind.JSDocImplementsTag]: [\"tagName\", \"className\", \"comment\"],\n [SyntaxKind.JSDocAugmentsTag]: [\"tagName\", \"className\", \"comment\"],\n [SyntaxKind.JSDocSatisfiesTag]: [\"tagName\", \"typeExpression\", \"comment\"],\n [SyntaxKind.JSDocThrowsTag]: [\"tagName\", \"typeExpression\", \"comment\"],\n [SyntaxKind.JSDocThisTag]: [\"tagName\", \"typeExpression\", \"comment\"],\n [SyntaxKind.JSDocImportTag]: [\"tagName\", \"importClause\", \"moduleSpecifier\", \"attributes\", \"comment\"],\n [SyntaxKind.JSDocCallbackTag]: [\"tagName\", \"typeExpression\", \"name\", \"comment\"],\n [SyntaxKind.JSDocOverloadTag]: [\"tagName\", \"typeExpression\", \"comment\"],\n [SyntaxKind.JSDocTypedefTag]: [\"tagName\", \"typeExpression\", \"name\", \"comment\"],\n [SyntaxKind.JSDocSignature]: [\"typeParameters\", \"parameters\", \"type\"],\n [SyntaxKind.JSDocNameReference]: [\"name\"],\n [SyntaxKind.SourceFile]: [\"statements\", \"endOfFileToken\"],\n [SyntaxKind.ModuleDeclaration]: [\"modifiers\", \"name\", \"body\"],\n [SyntaxKind.ImportEqualsDeclaration]: [\"modifiers\", \"name\", \"moduleReference\"],\n [SyntaxKind.ExportDeclaration]: [\"modifiers\", \"exportClause\", \"moduleSpecifier\", \"attributes\"],\n [SyntaxKind.ImportType]: [\"argument\", \"attributes\", \"qualifier\", \"typeArguments\"],\n [SyntaxKind.ImportClause]: [\"name\", \"namedBindings\"],\n [SyntaxKind.ImportSpecifier]: [\"propertyName\", \"name\"],\n [SyntaxKind.JSDocLink]: [\"name\"],\n [SyntaxKind.JSDocLinkPlain]: [\"name\"],\n [SyntaxKind.JSDocLinkCode]: [\"name\"],\n [SyntaxKind.TypeParameter]: [\"modifiers\", \"name\", \"constraint\", \"expression\", \"defaultType\"],\n [SyntaxKind.SyntheticReferenceExpression]: [\"expression\", \"thisArg\"],\n [SyntaxKind.JSDocTypeLiteral]: [\"jsdocPropertyTags\"],\n [SyntaxKind.JSDocParameterTag]: [\"tagName\", \"name\", \"typeExpression\", \"comment\"],\n [SyntaxKind.JSDocPropertyTag]: [\"tagName\", \"name\", \"typeExpression\", \"comment\"],\n};\nexport const singleChildNodePropertyNames = {\n [SyntaxKind.ComputedPropertyName]: \"expression\",\n [SyntaxKind.Decorator]: \"expression\",\n [SyntaxKind.BreakStatement]: \"label\",\n [SyntaxKind.ContinueStatement]: \"label\",\n [SyntaxKind.ReturnStatement]: \"expression\",\n [SyntaxKind.CaseBlock]: \"clauses\",\n [SyntaxKind.ThrowStatement]: \"expression\",\n [SyntaxKind.ExpressionStatement]: \"expression\",\n [SyntaxKind.Block]: \"statements\",\n [SyntaxKind.VariableDeclarationList]: \"declarations\",\n [SyntaxKind.ObjectBindingPattern]: \"elements\",\n [SyntaxKind.ArrayBindingPattern]: \"elements\",\n [SyntaxKind.MissingDeclaration]: \"modifiers\",\n [SyntaxKind.HeritageClause]: \"types\",\n [SyntaxKind.ModuleBlock]: \"statements\",\n [SyntaxKind.ExternalModuleReference]: \"expression\",\n [SyntaxKind.NamespaceImport]: \"name\",\n [SyntaxKind.NamedImports]: \"elements\",\n [SyntaxKind.NamespaceExport]: \"name\",\n [SyntaxKind.NamedExports]: \"elements\",\n [SyntaxKind.PrefixUnaryExpression]: \"operand\",\n [SyntaxKind.PostfixUnaryExpression]: \"operand\",\n [SyntaxKind.MetaProperty]: \"name\",\n [SyntaxKind.NonNullExpression]: \"expression\",\n [SyntaxKind.SpreadElement]: \"expression\",\n [SyntaxKind.ParenthesizedExpression]: \"expression\",\n [SyntaxKind.ArrayLiteralExpression]: \"elements\",\n [SyntaxKind.ObjectLiteralExpression]: \"properties\",\n [SyntaxKind.SpreadAssignment]: \"expression\",\n [SyntaxKind.DeleteExpression]: \"expression\",\n [SyntaxKind.TypeOfExpression]: \"expression\",\n [SyntaxKind.VoidExpression]: \"expression\",\n [SyntaxKind.AwaitExpression]: \"expression\",\n [SyntaxKind.UnionType]: \"types\",\n [SyntaxKind.IntersectionType]: \"types\",\n [SyntaxKind.TypeOperator]: \"type\",\n [SyntaxKind.InferType]: \"typeParameter\",\n [SyntaxKind.ArrayType]: \"elementType\",\n [SyntaxKind.LiteralType]: \"literal\",\n [SyntaxKind.ImportAttributes]: \"attributes\",\n [SyntaxKind.TypeLiteral]: \"members\",\n [SyntaxKind.TupleType]: \"elements\",\n [SyntaxKind.OptionalType]: \"type\",\n [SyntaxKind.RestType]: \"type\",\n [SyntaxKind.ParenthesizedType]: \"type\",\n [SyntaxKind.SyntheticExpression]: \"tupleNameSource\",\n [SyntaxKind.PartiallyEmittedExpression]: \"expression\",\n [SyntaxKind.JsxAttributes]: \"properties\",\n [SyntaxKind.JsxSpreadAttribute]: \"expression\",\n [SyntaxKind.JsxClosingElement]: \"tagName\",\n [SyntaxKind.SyntaxList]: \"children\",\n [SyntaxKind.JSDocTypeExpression]: \"type\",\n [SyntaxKind.JSDocNonNullableType]: \"type\",\n [SyntaxKind.JSDocNullableType]: \"type\",\n [SyntaxKind.JSDocVariadicType]: \"type\",\n [SyntaxKind.JSDocOptionalType]: \"type\",\n [SyntaxKind.JSDocNameReference]: \"name\",\n [SyntaxKind.JSDocLink]: \"name\",\n [SyntaxKind.JSDocLinkPlain]: \"name\",\n [SyntaxKind.JSDocLinkCode]: \"name\",\n [SyntaxKind.JSDocTypeLiteral]: \"jsdocPropertyTags\",\n};\n//# sourceMappingURL=protocol.generated.js.map","export const PROTOCOL_VERSION = 5;\nexport const HEADER_OFFSET_METADATA = 0;\nexport const HEADER_OFFSET_HASH_LO0 = 4;\nexport const HEADER_OFFSET_HASH_LO1 = 8;\nexport const HEADER_OFFSET_HASH_HI0 = 12;\nexport const HEADER_OFFSET_HASH_HI1 = 16;\nexport const HEADER_OFFSET_PARSE_OPTIONS = 20;\nexport const HEADER_OFFSET_STRING_TABLE_OFFSETS = 24;\nexport const HEADER_OFFSET_STRING_TABLE = 28;\nexport const HEADER_OFFSET_EXTENDED_DATA = 32;\nexport const HEADER_OFFSET_STRUCTURED_DATA = 36;\nexport const HEADER_OFFSET_NODES = 40;\nexport const HEADER_SIZE = 44;\nexport const NODE_LEN = 28;\nexport const NODE_OFFSET_KIND = 0;\nexport const NODE_OFFSET_POS = 4;\nexport const NODE_OFFSET_END = 8;\nexport const NODE_OFFSET_NEXT = 12;\nexport const NODE_OFFSET_PARENT = 16;\nexport const NODE_OFFSET_DATA = 20;\nexport const NODE_OFFSET_FLAGS = 24;\nexport const KIND_NODE_LIST = 0xFFFFFFFF;\nexport const NODE_DATA_TYPE_CHILDREN = 0x00000000;\nexport const NODE_DATA_TYPE_STRING = 0x40000000;\nexport const NODE_DATA_TYPE_EXTENDED = 0x80000000;\nexport const NODE_STRING_INDEX_MASK = 0x00FFFFFF;\nexport const NODE_EXTENDED_DATA_MASK = 0x00FFFFFF;\n// Re-export generated child properties\nexport { childProperties, singleChildNodePropertyNames } from \"./protocol.generated.js\";\n//# sourceMappingURL=protocol.js.map","// Code generated by _scripts/generate-encoder.ts. DO NOT EDIT.\nimport { SyntaxKind } from \"../../ast/index.js\";\nimport { NODE_DATA_TYPE_CHILDREN, NODE_DATA_TYPE_EXTENDED, NODE_DATA_TYPE_STRING, } from \"./protocol.js\";\nexport function getNodeDataType(kind) {\n switch (kind) {\n case SyntaxKind.Identifier:\n case SyntaxKind.PrivateIdentifier:\n case SyntaxKind.JsxText:\n case SyntaxKind.JSDocText:\n case SyntaxKind.JSDocLink:\n case SyntaxKind.JSDocLinkPlain:\n case SyntaxKind.JSDocLinkCode:\n return NODE_DATA_TYPE_STRING;\n case SyntaxKind.StringLiteral:\n case SyntaxKind.NumericLiteral:\n case SyntaxKind.BigIntLiteral:\n case SyntaxKind.RegularExpressionLiteral:\n case SyntaxKind.NoSubstitutionTemplateLiteral:\n case SyntaxKind.TemplateHead:\n case SyntaxKind.TemplateMiddle:\n case SyntaxKind.TemplateTail:\n case SyntaxKind.SourceFile:\n return NODE_DATA_TYPE_EXTENDED;\n default:\n return NODE_DATA_TYPE_CHILDREN;\n }\n}\nexport function getNodeCommonData(node) {\n switch (node.kind) {\n case SyntaxKind.Block:\n return (node.multiLine ? 1 : 0) << 24;\n case SyntaxKind.HeritageClause:\n return (node.token === SyntaxKind.ImplementsKeyword ? 1 : 0) << 24;\n case SyntaxKind.ExportAssignment:\n return (node.isExportEquals ? 1 : 0) << 24;\n case SyntaxKind.ExportSpecifier:\n return (node.isTypeOnly ? 1 : 0) << 24;\n case SyntaxKind.PrefixUnaryExpression:\n return (node.operator === SyntaxKind.MinusToken ? 1 : node.operator === SyntaxKind.TildeToken ? 2 : node.operator === SyntaxKind.ExclamationToken ? 3 : node.operator === SyntaxKind.PlusPlusToken ? 4 : node.operator === SyntaxKind.MinusMinusToken ? 5 : 0) << 24;\n case SyntaxKind.PostfixUnaryExpression:\n return (node.operator === SyntaxKind.MinusMinusToken ? 1 : 0) << 24;\n case SyntaxKind.MetaProperty:\n return (node.keywordToken === SyntaxKind.NewKeyword ? 1 : 0) << 24;\n case SyntaxKind.ArrayLiteralExpression:\n return (node.multiLine ? 1 : 0) << 24;\n case SyntaxKind.ObjectLiteralExpression:\n return (node.multiLine ? 1 : 0) << 24;\n case SyntaxKind.TypeOperator:\n return (node.operator === SyntaxKind.ReadonlyKeyword ? 1 : node.operator === SyntaxKind.UniqueKeyword ? 2 : 0) << 24;\n case SyntaxKind.ImportAttributes:\n return (node.multiLine ? 1 : 0) << 24 | (node.token === SyntaxKind.AssertKeyword ? 1 : 0) << 25;\n case SyntaxKind.JsxText:\n return (node.containsOnlyTriviaWhiteSpaces ? 1 : 0) << 24;\n case SyntaxKind.ModuleDeclaration:\n return (node.keyword === SyntaxKind.NamespaceKeyword ? 1 : 0) << 24;\n case SyntaxKind.ImportEqualsDeclaration:\n return (node.isTypeOnly ? 1 : 0) << 24;\n case SyntaxKind.ExportDeclaration:\n return (node.isTypeOnly ? 1 : 0) << 24;\n case SyntaxKind.ImportType:\n return (node.isTypeOf ? 1 : 0) << 24;\n case SyntaxKind.ImportClause:\n return (node.phaseModifier === SyntaxKind.TypeKeyword ? 1 : node.phaseModifier === SyntaxKind.DeferKeyword ? 2 : 0) << 24;\n case SyntaxKind.ImportSpecifier:\n return (node.isTypeOnly ? 1 : 0) << 24;\n case SyntaxKind.JSDocTypeLiteral:\n return (node.isArrayType ? 1 : 0) << 24;\n case SyntaxKind.JSDocParameterTag:\n case SyntaxKind.JSDocPropertyTag:\n return (node.isBracketed ? 1 : 0) << 24 | (node.isNameFirst ? 1 : 0) << 25;\n }\n return 0;\n}\n//# sourceMappingURL=encoder.generated.js.map","import { Buffer } from \"node:buffer\";\nconst surrogateLeadByte = 0xED;\nconst surrogateSecondByteMin = 0xA0;\nconst surrogateSecondByteMax = 0xBF;\nconst continuationByteMin = 0x80;\nconst continuationByteMax = 0xBF;\nfunction isWtf8Surrogate(bytes, index) {\n return index + 2 < bytes.length\n && bytes[index] === surrogateLeadByte\n && bytes[index + 1] >= surrogateSecondByteMin\n && bytes[index + 1] <= surrogateSecondByteMax\n && bytes[index + 2] >= continuationByteMin\n && bytes[index + 2] <= continuationByteMax;\n}\nfunction getSurrogateCodeUnit(bytes, index) {\n return 0xD000 | ((bytes[index + 1] & 0x3F) << 6) | (bytes[index + 2] & 0x3F);\n}\nfunction hasSurrogateLeadByte(bytes) {\n return Buffer.from(bytes.buffer, bytes.byteOffset, bytes.byteLength).indexOf(surrogateLeadByte) >= 0;\n}\nfunction toUint8Array(input) {\n if (input instanceof Uint8Array) {\n return input;\n }\n if (ArrayBuffer.isView(input)) {\n return new Uint8Array(input.buffer, input.byteOffset, input.byteLength);\n }\n return new Uint8Array(input);\n}\nexport class Wtf8Decoder extends TextDecoder {\n decode(input, options) {\n if (input === undefined) {\n return super.decode(input, options);\n }\n const bytes = toUint8Array(input);\n if (!hasSurrogateLeadByte(bytes)) {\n return super.decode(bytes, options);\n }\n const parts = [];\n let segmentStart = 0;\n for (let i = 0; i < bytes.length; i++) {\n if (!isWtf8Surrogate(bytes, i)) {\n continue;\n }\n if (segmentStart < i) {\n parts.push(super.decode(bytes.subarray(segmentStart, i), options));\n }\n parts.push(String.fromCharCode(getSurrogateCodeUnit(bytes, i)));\n i += 2;\n segmentStart = i + 1;\n }\n if (segmentStart === 0) {\n return super.decode(bytes, options);\n }\n if (segmentStart < bytes.length) {\n parts.push(super.decode(bytes.subarray(segmentStart), options));\n }\n return parts.join(\"\");\n }\n}\n//# sourceMappingURL=wtf8.js.map","// Minimal msgpack encoder/decoder.\n// Supports: arrays, unsigned integers, strings, booleans, binary data.\nimport { Wtf8Decoder } from \"./wtf8.js\";\n// ── MessagePack format constants ────────────────────────────────────\nexport const MSGPACK_FIXARRAY3 = 0x93; // 3-element fixarray\nexport const MSGPACK_BIN8 = 0xc4;\nexport const MSGPACK_BIN16 = 0xc5;\nexport const MSGPACK_BIN32 = 0xc6;\nexport const MSGPACK_UINT8 = 0xcc;\n// ── Bin header helpers ──────────────────────────────────────────────\n/** Compute the MessagePack bin header size for a given data length. */\nexport function binHeaderSize(len) {\n if (len < 0x100)\n return 2; // BIN8: marker + 1-byte size\n if (len < 0x10000)\n return 3; // BIN16: marker + 2-byte size\n return 5; // BIN32: marker + 4-byte size\n}\n/** Write a MessagePack bin header into `buf` at `off`, return new offset. */\nexport function writeBinHeader(buf, off, len) {\n if (len < 0x100) {\n buf[off++] = MSGPACK_BIN8;\n buf[off++] = len;\n }\n else if (len < 0x10000) {\n buf[off++] = MSGPACK_BIN16;\n buf[off++] = (len >>> 8) & 0xff;\n buf[off++] = len & 0xff;\n }\n else {\n buf[off++] = MSGPACK_BIN32;\n buf[off++] = (len >>> 24) & 0xff;\n buf[off++] = (len >>> 16) & 0xff;\n buf[off++] = (len >>> 8) & 0xff;\n buf[off++] = len & 0xff;\n }\n return off;\n}\nconst encoder = new TextEncoder();\nconst decoder = new Wtf8Decoder();\nexport class MsgpackWriter {\n buf;\n view;\n pos;\n constructor(initialSize = 256) {\n this.buf = new Uint8Array(initialSize);\n this.view = new DataView(this.buf.buffer);\n this.pos = 0;\n }\n ensure(n) {\n if (this.pos + n > this.buf.length) {\n let newSize = this.buf.length * 2;\n while (newSize < this.pos + n)\n newSize *= 2;\n const next = new Uint8Array(newSize);\n next.set(this.buf);\n this.buf = next;\n this.view = new DataView(this.buf.buffer);\n }\n }\n writeArrayHeader(length) {\n if (length <= 0x0f) {\n this.ensure(1);\n this.buf[this.pos++] = 0x90 | length;\n }\n else if (length <= 0xffff) {\n this.ensure(3);\n this.buf[this.pos++] = 0xdc;\n this.view.setUint16(this.pos, length, false);\n this.pos += 2;\n }\n else {\n this.ensure(5);\n this.buf[this.pos++] = 0xdd;\n this.view.setUint32(this.pos, length, false);\n this.pos += 4;\n }\n }\n writeUint(value) {\n if (value <= 0x7f) {\n this.ensure(1);\n this.buf[this.pos++] = value;\n }\n else if (value <= 0xff) {\n this.ensure(2);\n this.buf[this.pos++] = 0xcc;\n this.buf[this.pos++] = value;\n }\n else if (value <= 0xffff) {\n this.ensure(3);\n this.buf[this.pos++] = 0xcd;\n this.view.setUint16(this.pos, value, false);\n this.pos += 2;\n }\n else {\n this.ensure(5);\n this.buf[this.pos++] = 0xce;\n this.view.setUint32(this.pos, value, false);\n this.pos += 4;\n }\n }\n writeString(str) {\n const encoded = encoder.encode(str);\n const len = encoded.length;\n if (len <= 0x1f) {\n this.ensure(1 + len);\n this.buf[this.pos++] = 0xa0 | len;\n }\n else if (len <= 0xff) {\n this.ensure(2 + len);\n this.buf[this.pos++] = 0xd9;\n this.buf[this.pos++] = len;\n }\n else if (len <= 0xffff) {\n this.ensure(3 + len);\n this.buf[this.pos++] = 0xda;\n this.view.setUint16(this.pos, len, false);\n this.pos += 2;\n }\n else {\n this.ensure(5 + len);\n this.buf[this.pos++] = 0xdb;\n this.view.setUint32(this.pos, len, false);\n this.pos += 4;\n }\n this.buf.set(encoded, this.pos);\n this.pos += len;\n }\n writeBool(value) {\n this.ensure(1);\n this.buf[this.pos++] = value ? 0xc3 : 0xc2;\n }\n finish() {\n return this.buf.subarray(0, this.pos);\n }\n}\nexport class MsgpackReader {\n buf;\n view;\n pos;\n constructor(data, offset = 0) {\n this.buf = data;\n this.view = new DataView(data.buffer, data.byteOffset, data.byteLength);\n this.pos = offset;\n }\n readArrayHeader() {\n const byte = this.buf[this.pos++];\n if ((byte & 0xf0) === 0x90)\n return byte & 0x0f;\n if (byte === 0xdc) {\n const len = this.view.getUint16(this.pos, false);\n this.pos += 2;\n return len;\n }\n if (byte === 0xdd) {\n const len = this.view.getUint32(this.pos, false);\n this.pos += 4;\n return len;\n }\n throw new Error(`Expected array header, got 0x${byte.toString(16)}`);\n }\n readUint() {\n const byte = this.buf[this.pos++];\n if (byte <= 0x7f)\n return byte;\n if (byte === 0xcc)\n return this.buf[this.pos++];\n if (byte === 0xcd) {\n const val = this.view.getUint16(this.pos, false);\n this.pos += 2;\n return val;\n }\n if (byte === 0xce) {\n const val = this.view.getUint32(this.pos, false);\n this.pos += 4;\n return val;\n }\n throw new Error(`Expected uint, got 0x${byte.toString(16)}`);\n }\n readString() {\n const byte = this.buf[this.pos++];\n let len;\n if ((byte & 0xe0) === 0xa0) {\n len = byte & 0x1f;\n }\n else if (byte === 0xd9) {\n len = this.buf[this.pos++];\n }\n else if (byte === 0xda) {\n len = this.view.getUint16(this.pos, false);\n this.pos += 2;\n }\n else if (byte === 0xdb) {\n len = this.view.getUint32(this.pos, false);\n this.pos += 4;\n }\n else {\n throw new Error(`Expected string, got 0x${byte.toString(16)}`);\n }\n const str = decoder.decode(this.buf.subarray(this.pos, this.pos + len));\n this.pos += len;\n return str;\n }\n readBool() {\n const byte = this.buf[this.pos++];\n if (byte === 0xc3)\n return true;\n if (byte === 0xc2)\n return false;\n throw new Error(`Expected bool, got 0x${byte.toString(16)}`);\n }\n}\n//# sourceMappingURL=msgpack.js.map","import { SyntaxKind } from \"../../ast/index.js\";\nimport { getNodeCommonData, getNodeDataType, } from \"./encoder.generated.js\";\nimport { MsgpackWriter } from \"./msgpack.js\";\nimport { childProperties, HEADER_OFFSET_EXTENDED_DATA, HEADER_OFFSET_METADATA, HEADER_OFFSET_NODES, HEADER_OFFSET_STRING_TABLE, HEADER_OFFSET_STRING_TABLE_OFFSETS, HEADER_OFFSET_STRUCTURED_DATA, HEADER_SIZE, KIND_NODE_LIST, NODE_DATA_TYPE_CHILDREN, NODE_DATA_TYPE_EXTENDED, NODE_DATA_TYPE_STRING, NODE_LEN, PROTOCOL_VERSION, } from \"./protocol.js\";\nconst NODE_FIELDS = NODE_LEN / 4;\nconst NODE_FIELD_NEXT = 3;\nconst NO_STRUCTURED_DATA = 0xFFFFFFFF;\n// String table that accumulates strings into a flat byte pool.\nclass StringTable {\n parts;\n byteLen;\n offsets;\n constructor() {\n this.parts = [];\n this.byteLen = 0;\n this.offsets = [];\n }\n add(text) {\n const index = this.offsets.length;\n const encoder = cachedEncoder();\n const encodedLength = encoder.encode(text).length;\n const offset = this.byteLen;\n this.parts.push(text);\n this.byteLen += encodedLength;\n this.offsets.push(offset, offset + encodedLength);\n return index;\n }\n encode() {\n const encoder = cachedEncoder();\n const dataBytes = encoder.encode(this.parts.join(\"\"));\n const offsetBytes = new Uint8Array(this.offsets.length * 4);\n const view = new DataView(offsetBytes.buffer);\n for (let i = 0; i < this.offsets.length; i++) {\n view.setUint32(i * 4, this.offsets[i], true);\n }\n const result = new Uint8Array(offsetBytes.length + dataBytes.length);\n result.set(offsetBytes, 0);\n result.set(dataBytes, offsetBytes.length);\n return result;\n }\n stringByteLength() {\n return this.byteLen;\n }\n offsetsCount() {\n return this.offsets.length;\n }\n}\nlet _encoder;\nfunction cachedEncoder() {\n return _encoder ??= new TextEncoder();\n}\nfunction getChildrenPropertyMask(node) {\n const kind = node.kind;\n const props = childProperties[kind];\n if (!props) {\n return 0;\n }\n const n = node;\n let mask = 0;\n for (let i = 0; i < props.length; i++) {\n const prop = props[i];\n if (prop !== undefined && isChildPresent(n[prop])) {\n mask |= 1 << i;\n }\n }\n return mask;\n}\n// A child is \"present\" if it's non-null/non-undefined.\n// This matches the Go encoder's behavior where non-nil NodeLists (even empty)\n// are treated as present, and only nil NodeLists are absent.\nfunction isChildPresent(v) {\n if (v === undefined || v === null)\n return false;\n return true;\n}\nfunction recordNodeStrings(node, strs) {\n return strs.add(node.text ?? \"\");\n}\nfunction encodeFileReferences(refs, writer) {\n if (!refs || refs.length === 0)\n return NO_STRUCTURED_DATA;\n const offset = writer.finish().length;\n writer.writeArrayHeader(refs.length);\n for (const ref of refs) {\n writer.writeArrayHeader(5);\n writer.writeUint(ref.pos);\n writer.writeUint(ref.end);\n writer.writeString(ref.fileName);\n writer.writeUint(ref.resolutionMode ?? 0);\n writer.writeBool(ref.preserve ?? false);\n }\n return offset;\n}\nfunction recordExtendedData(node, strs, extendedData, structuredWriter) {\n const offset = extendedData.length * 4;\n if (node.kind === SyntaxKind.SourceFile) {\n const sf = node;\n const textIndex = strs.add(sf.text);\n const fileNameIndex = strs.add(sf.fileName);\n const pathIndex = strs.add(sf.path);\n const referencedFilesOffset = encodeFileReferences(sf.referencedFiles, structuredWriter);\n const typeRefDirectivesOffset = encodeFileReferences(sf.typeReferenceDirectives, structuredWriter);\n const libRefDirectivesOffset = encodeFileReferences(sf.libReferenceDirectives, structuredWriter);\n extendedData.push(textIndex, fileNameIndex, pathIndex, sf.languageVariant, sf.scriptKind, referencedFilesOffset, typeRefDirectivesOffset, libRefDirectivesOffset, NO_STRUCTURED_DATA, NO_STRUCTURED_DATA, NO_STRUCTURED_DATA, 0);\n }\n else if (node.kind === SyntaxKind.TemplateHead ||\n node.kind === SyntaxKind.TemplateMiddle ||\n node.kind === SyntaxKind.TemplateTail) {\n const tmpl = node;\n const text = tmpl.text ?? \"\";\n const rawText = tmpl.rawText ?? \"\";\n const templateFlags = tmpl.templateFlags ?? 0;\n const textIndex = strs.add(text);\n const rawTextIndex = strs.add(rawText);\n extendedData.push(textIndex, rawTextIndex, templateFlags);\n }\n else {\n // StringLiteral, NumericLiteral, BigIntLiteral, RegularExpressionLiteral,\n // NoSubstitutionTemplateLiteral — format: [textIndex, tokenFlags]\n const n = node;\n const text = n.text ?? \"\";\n const tokenFlags = n.tokenFlags ?? 0;\n const textIndex = strs.add(text);\n extendedData.push(textIndex, tokenFlags);\n }\n return offset;\n}\nfunction getNodeData(node, strs, extendedData, structuredWriter) {\n const t = getNodeDataType(node.kind);\n const common = getNodeCommonData(node);\n switch (t) {\n case NODE_DATA_TYPE_CHILDREN:\n return t | common | getChildrenPropertyMask(node);\n case NODE_DATA_TYPE_STRING:\n return t | common | recordNodeStrings(node, strs);\n case NODE_DATA_TYPE_EXTENDED:\n return t | common | recordExtendedData(node, strs, extendedData, structuredWriter);\n default:\n throw new Error(\"unreachable\");\n }\n}\nfunction getChildPropertiesForNode(node) {\n return childProperties[node.kind];\n}\n// Returns whether a value is a NodeArray (array-like with pos and end).\nfunction isNodeArray(value) {\n return Array.isArray(value) && typeof value.pos === \"number\" && typeof value.end === \"number\";\n}\n/**\n * Encode a SourceFile AST node into the binary format.\n */\nexport function encodeSourceFile(sourceFile) {\n return encodeNode(sourceFile);\n}\n/**\n * Encode an arbitrary AST node into the binary format.\n * When encoding a non-SourceFile node, the header hash and parse options fields will be zero.\n */\nexport function encodeNode(node) {\n const strs = new StringTable();\n const extendedDataValues = [];\n const structuredWriter = new MsgpackWriter();\n // We'll build an array of uint32 values for the nodes section, 7 per node\n const nodeValues = [];\n // Nil node (index 0)\n nodeValues.push(0, 0, 0, 0, 0, 0, 0);\n let nodeCount = 0;\n let parentIndex = 0;\n let prevIndex = 0;\n function visitNode(node) {\n nodeCount++;\n const currentIndex = nodeCount;\n if (prevIndex !== 0) {\n // Set next pointer on previous sibling\n nodeValues[prevIndex * NODE_FIELDS + NODE_FIELD_NEXT] = currentIndex;\n }\n const data = getNodeData(node, strs, extendedDataValues, structuredWriter);\n nodeValues.push(node.kind, node.pos >= 0 ? node.pos : 0, node.end >= 0 ? node.end : 0, 0, // next (filled in later)\n parentIndex, data, node.flags);\n const saveParentIndex = parentIndex;\n const savePrevIndex = prevIndex;\n parentIndex = currentIndex;\n prevIndex = 0;\n visitChildren(node);\n prevIndex = currentIndex;\n parentIndex = saveParentIndex;\n }\n function visitNodeList(list) {\n if (!list) {\n return;\n }\n nodeCount++;\n const currentIndex = nodeCount;\n if (prevIndex !== 0) {\n nodeValues[prevIndex * NODE_FIELDS + NODE_FIELD_NEXT] = currentIndex;\n }\n nodeValues.push(KIND_NODE_LIST, list.pos >= 0 ? list.pos : 0, list.end >= 0 ? list.end : 0, 0, // next\n parentIndex, list.length, // data for NodeList is its length\n 0);\n const saveParentIndex = parentIndex;\n parentIndex = currentIndex;\n prevIndex = 0;\n for (const child of list) {\n visitNode(child);\n }\n prevIndex = currentIndex;\n parentIndex = saveParentIndex;\n }\n function visitChildren(node) {\n const props = getChildPropertiesForNode(node);\n const n = node;\n if (props) {\n for (const propName of props) {\n if (propName === undefined)\n continue;\n const child = n[propName];\n if (child === undefined || child === null)\n continue;\n if (isNodeArray(child)) {\n visitNodeList(child);\n }\n else {\n visitNode(child);\n }\n }\n }\n }\n // Encode root node\n nodeCount++;\n parentIndex++;\n const rootData = getNodeData(node, strs, extendedDataValues, structuredWriter);\n nodeValues.push(node.kind, node.pos >= 0 ? node.pos : 0, node.end >= 0 ? node.end : 0, 0, 0, rootData, node.flags);\n const saveParent = parentIndex;\n prevIndex = 0;\n parentIndex = 1; // root is at index 1\n visitChildren(node);\n parentIndex = saveParent;\n // Encode extended data section\n const extendedDataBytes = new Uint8Array(extendedDataValues.length * 4);\n const extView = new DataView(extendedDataBytes.buffer);\n for (let i = 0; i < extendedDataValues.length; i++) {\n extView.setUint32(i * 4, extendedDataValues[i], true);\n }\n // Encode structured data section\n const structuredDataBytes = structuredWriter.finish();\n // Encode string table\n const strsBytes = strs.encode();\n // Encode nodes section\n const nodesBytes = new Uint8Array(nodeValues.length * 4);\n const nodesView = new DataView(nodesBytes.buffer);\n for (let i = 0; i < nodeValues.length; i++) {\n nodesView.setUint32(i * 4, nodeValues[i] >>> 0, true);\n }\n // Calculate section offsets\n const offsetStringTableOffsets = HEADER_SIZE;\n const offsetStringTableData = HEADER_SIZE + strs.offsetsCount() * 4;\n const offsetExtendedData = offsetStringTableData + strs.stringByteLength();\n const offsetStructuredData = offsetExtendedData + extendedDataBytes.length;\n const offsetNodes = offsetStructuredData + structuredDataBytes.length;\n // Build header\n const header = new Uint8Array(HEADER_SIZE);\n const headerView = new DataView(header.buffer);\n const metadata = PROTOCOL_VERSION << 24;\n headerView.setUint32(HEADER_OFFSET_METADATA, metadata, true);\n // bytes 4-19: hash (zero for non-SourceFile, we don't have access to xxh3 here)\n // byte 20-23: parse options (zero for non-SourceFile)\n headerView.setUint32(HEADER_OFFSET_STRING_TABLE_OFFSETS, offsetStringTableOffsets, true);\n headerView.setUint32(HEADER_OFFSET_STRING_TABLE, offsetStringTableData, true);\n headerView.setUint32(HEADER_OFFSET_EXTENDED_DATA, offsetExtendedData, true);\n headerView.setUint32(HEADER_OFFSET_STRUCTURED_DATA, offsetStructuredData, true);\n headerView.setUint32(HEADER_OFFSET_NODES, offsetNodes, true);\n // Concatenate all sections\n const result = new Uint8Array(header.length + strsBytes.length + extendedDataBytes.length + structuredDataBytes.length + nodesBytes.length);\n result.set(header, 0);\n result.set(strsBytes, HEADER_SIZE);\n result.set(extendedDataBytes, offsetExtendedData);\n result.set(structuredDataBytes, offsetStructuredData);\n result.set(nodesBytes, offsetNodes);\n return result;\n}\n/**\n * Encode a Uint8Array to a base64 string.\n */\nexport function uint8ArrayToBase64(data) {\n return Buffer.from(data).toString(\"base64\");\n}\n//# sourceMappingURL=encoder.js.map","import { ModifierFlags, SyntaxKind, } from \"../../ast/index.js\";\nimport { HEADER_OFFSET_HASH_HI0, HEADER_OFFSET_HASH_HI1, HEADER_OFFSET_HASH_LO0, HEADER_OFFSET_HASH_LO1, HEADER_OFFSET_PARSE_OPTIONS, NODE_DATA_TYPE_CHILDREN, NODE_DATA_TYPE_EXTENDED, NODE_DATA_TYPE_STRING, NODE_OFFSET_DATA, NODE_OFFSET_END, NODE_OFFSET_KIND, NODE_OFFSET_NEXT, NODE_OFFSET_PARENT, NODE_OFFSET_POS, } from \"./protocol.js\";\n// ═══════════════════════════════════════════════════════════════════════════\n// Constants\n// ═══════════════════════════════════════════════════════════════════════════\nexport const popcount8 = [0, 1, 1, 2, 1, 2, 2, 3, 1, 2, 2, 3, 2, 3, 3, 4, 1, 2, 2, 3, 2, 3, 3, 4, 2, 3, 3, 4, 3, 4, 4, 5, 1, 2, 2, 3, 2, 3, 3, 4, 2, 3, 3, 4, 3, 4, 4, 5, 2, 3, 3, 4, 3, 4, 4, 5, 3, 4, 4, 5, 4, 5, 5, 6, 1, 2, 2, 3, 2, 3, 3, 4, 2, 3, 3, 4, 3, 4, 4, 5, 2, 3, 3, 4, 3, 4, 4, 5, 3, 4, 4, 5, 4, 5, 5, 6, 2, 3, 3, 4, 3, 4, 4, 5, 3, 4, 4, 5, 4, 5, 5, 6, 3, 4, 4, 5, 4, 5, 5, 6, 4, 5, 5, 6, 5, 6, 6, 7, 1, 2, 2, 3, 2, 3, 3, 4, 2, 3, 3, 4, 3, 4, 4, 5, 2, 3, 3, 4, 3, 4, 4, 5, 3, 4, 4, 5, 4, 5, 5, 6, 2, 3, 3, 4, 3, 4, 4, 5, 3, 4, 4, 5, 4, 5, 5, 6, 3, 4, 4, 5, 4, 5, 5, 6, 4, 5, 5, 6, 5, 6, 6, 7, 2, 3, 3, 4, 3, 4, 4, 5, 3, 4, 4, 5, 4, 5, 5, 6, 3, 4, 4, 5, 4, 5, 5, 6, 4, 5, 5, 6, 5, 6, 6, 7, 3, 4, 4, 5, 4, 5, 5, 6, 4, 5, 5, 6, 5, 6, 6, 7, 4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8];\nexport const NODE_DATA_TYPE_MASK = 0xc0_00_00_00;\nexport const NODE_CHILD_MASK = 0x00_00_00_ff;\nexport const NODE_STRING_INDEX_MASK = 0x00_ff_ff_ff;\nexport const NODE_EXTENDED_DATA_MASK = 0x00_ff_ff_ff;\n// ═══════════════════════════════════════════════════════════════════════════\n// Free functions\n// ═══════════════════════════════════════════════════════════════════════════\n/**\n * Read the 128-bit content hash from a source file binary response as a hex string.\n */\nexport function readSourceFileHash(data) {\n const lo0 = data.getUint32(HEADER_OFFSET_HASH_LO0, true);\n const lo1 = data.getUint32(HEADER_OFFSET_HASH_LO1, true);\n const hi0 = data.getUint32(HEADER_OFFSET_HASH_HI0, true);\n const hi1 = data.getUint32(HEADER_OFFSET_HASH_HI1, true);\n return hex8(hi1) + hex8(hi0) + hex8(lo1) + hex8(lo0);\n}\n/**\n * Read the per-file parse options key from a source file binary response.\n * This encodes the ExternalModuleIndicatorOptions bitmask as a string,\n * allowing the client to distinguish files parsed with different options.\n */\nexport function readParseOptionsKey(data) {\n return data.getUint32(HEADER_OFFSET_PARSE_OPTIONS, true).toString();\n}\nfunction hex8(n) {\n return (n >>> 0).toString(16).padStart(8, \"0\");\n}\nexport function modifierToFlag(kind) {\n switch (kind) {\n case SyntaxKind.StaticKeyword:\n return ModifierFlags.Static;\n case SyntaxKind.PublicKeyword:\n return ModifierFlags.Public;\n case SyntaxKind.ProtectedKeyword:\n return ModifierFlags.Protected;\n case SyntaxKind.PrivateKeyword:\n return ModifierFlags.Private;\n case SyntaxKind.AbstractKeyword:\n return ModifierFlags.Abstract;\n case SyntaxKind.AccessorKeyword:\n return ModifierFlags.Accessor;\n case SyntaxKind.ExportKeyword:\n return ModifierFlags.Export;\n case SyntaxKind.DeclareKeyword:\n return ModifierFlags.Ambient;\n case SyntaxKind.ConstKeyword:\n return ModifierFlags.Const;\n case SyntaxKind.DefaultKeyword:\n return ModifierFlags.Default;\n case SyntaxKind.AsyncKeyword:\n return ModifierFlags.Async;\n case SyntaxKind.ReadonlyKeyword:\n return ModifierFlags.Readonly;\n case SyntaxKind.OverrideKeyword:\n return ModifierFlags.Override;\n case SyntaxKind.InKeyword:\n return ModifierFlags.In;\n case SyntaxKind.OutKeyword:\n return ModifierFlags.Out;\n case SyntaxKind.Decorator:\n return ModifierFlags.Decorator;\n default:\n return ModifierFlags.None;\n }\n}\n// ═══════════════════════════════════════════════════════════════════════════\n// RemoteNodeBase\n// ═══════════════════════════════════════════════════════════════════════════\nexport class RemoteNodeBase {\n parent; // RemoteNode at runtime\n view;\n index;\n _byteIndex;\n constructor(view, index, parent, byteIndex) {\n this.view = view;\n this.index = index;\n this.parent = parent;\n this._byteIndex = byteIndex;\n }\n get kind() {\n return this.view.getUint32(this._byteIndex + NODE_OFFSET_KIND, true);\n }\n get pos() {\n return this.view.getInt32(this._byteIndex + NODE_OFFSET_POS, true);\n }\n get end() {\n return this.view.getInt32(this._byteIndex + NODE_OFFSET_END, true);\n }\n get next() {\n return this.view.getUint32(this._byteIndex + NODE_OFFSET_NEXT, true);\n }\n get parentIndex() {\n return this.view.getUint32(this._byteIndex + NODE_OFFSET_PARENT, true);\n }\n get data() {\n return this.view.getUint32(this._byteIndex + NODE_OFFSET_DATA, true);\n }\n get dataType() {\n return (this.data & NODE_DATA_TYPE_MASK);\n }\n get childMask() {\n if (this.dataType !== NODE_DATA_TYPE_CHILDREN) {\n return -1;\n }\n return this.data & NODE_CHILD_MASK;\n }\n getFileText(start, end) {\n return this.sourceFile._decoder.decode(new Uint8Array(this.view.buffer, this.view.byteOffset + this.sourceFile._offsetStringTable + start, end - start));\n }\n get sourceFile() {\n // Overridden in RemoteNode; exists here for getFileText access\n throw new Error(\"sourceFile not available on base\");\n }\n}\n//# sourceMappingURL=node.infrastructure.js.map","// Code generated by _scripts/generate-encoder.ts. DO NOT EDIT.\nimport { getTokenPosOfNode, ModifierFlags, SyntaxKind, } from \"../../ast/index.js\";\nimport { modifierToFlag, NODE_CHILD_MASK, NODE_DATA_TYPE_MASK, NODE_EXTENDED_DATA_MASK, NODE_STRING_INDEX_MASK, popcount8, RemoteNodeBase, } from \"./node.infrastructure.js\";\nimport { childProperties, KIND_NODE_LIST, NODE_DATA_TYPE_CHILDREN, NODE_DATA_TYPE_EXTENDED, NODE_DATA_TYPE_STRING, NODE_LEN, NODE_OFFSET_DATA, NODE_OFFSET_END, NODE_OFFSET_FLAGS, NODE_OFFSET_KIND, NODE_OFFSET_NEXT, NODE_OFFSET_PARENT, NODE_OFFSET_POS, } from \"./protocol.js\";\nexport class RemoteNodeList extends Array {\n // Inherited Array methods like filter/map/slice use ArraySpeciesCreate, which would\n // otherwise call `new RemoteNodeList(length)` and fail. Produce a plain Array instead.\n static get [Symbol.species]() {\n return Array;\n }\n parent;\n hasTrailingComma;\n transformFlags = 0;\n view;\n index;\n _byteIndex;\n get pos() {\n return this.view.getUint32(this._byteIndex + NODE_OFFSET_POS, true);\n }\n get end() {\n return this.view.getUint32(this._byteIndex + NODE_OFFSET_END, true);\n }\n get next() {\n return this.view.getUint32(this._byteIndex + NODE_OFFSET_NEXT, true);\n }\n get data() {\n return this.view.getUint32(this._byteIndex + NODE_OFFSET_DATA, true);\n }\n sourceFile;\n constructor(view, index, parent, sourceFile, offsetNodes) {\n super();\n this.view = view;\n this.index = index;\n this.parent = parent;\n this.sourceFile = sourceFile;\n this._byteIndex = offsetNodes + index * NODE_LEN;\n this.length = this.data;\n const length = this.length;\n for (let i = 16; i < length; i++) {\n Object.defineProperty(this, i, {\n get() {\n return this.at(i);\n },\n });\n }\n }\n get 0() {\n return this.at(0);\n }\n get 1() {\n return this.at(1);\n }\n get 2() {\n return this.at(2);\n }\n get 3() {\n return this.at(3);\n }\n get 4() {\n return this.at(4);\n }\n get 5() {\n return this.at(5);\n }\n get 6() {\n return this.at(6);\n }\n get 7() {\n return this.at(7);\n }\n get 8() {\n return this.at(8);\n }\n get 9() {\n return this.at(9);\n }\n get 10() {\n return this.at(10);\n }\n get 11() {\n return this.at(11);\n }\n get 12() {\n return this.at(12);\n }\n get 13() {\n return this.at(13);\n }\n get 14() {\n return this.at(14);\n }\n get 15() {\n return this.at(15);\n }\n *[Symbol.iterator]() {\n if (!this.length)\n return;\n let next = this.index + 1;\n while (next) {\n const child = this.getOrCreateChildAtNodeIndex(next);\n next = child.next;\n yield child;\n }\n }\n forEachNode(visitNode) {\n if (!this.length)\n return;\n let next = this.index + 1;\n while (next) {\n const child = this.getOrCreateChildAtNodeIndex(next);\n next = child.next;\n const result = visitNode(child);\n if (result)\n return result;\n }\n }\n at(index) {\n if (!Number.isInteger(index)) {\n return undefined;\n }\n if (index >= this.data || (index < 0 && -index > this.data)) {\n return undefined;\n }\n if (index < 0) {\n index = this.length + index;\n }\n let next = this.index + 1;\n for (let i = 0; i < index; i++) {\n const child = this.getOrCreateChildAtNodeIndex(next);\n next = child.next;\n }\n return this.getOrCreateChildAtNodeIndex(next);\n }\n getOrCreateChildAtNodeIndex(index) {\n let child = this.sourceFile.nodes[index];\n if (!child) {\n const kind = this.view.getUint32(this.sourceFile._offsetNodes + index * NODE_LEN + NODE_OFFSET_KIND, true);\n if (kind === KIND_NODE_LIST) {\n throw new Error(\"NodeList cannot directly contain another NodeList\");\n }\n const sf = this.sourceFile;\n child = new RemoteNode(this.view, index, this.parent, sf, sf._offsetNodes);\n sf.nodes[index] = child;\n sf._timing?.recordMaterialization();\n }\n return child;\n }\n __print() {\n const result = [];\n result.push(`kind: NodeList`);\n result.push(`index: ${this.index}`);\n result.push(`byteIndex: ${this._byteIndex}`);\n result.push(`length: ${this.length}`);\n return result.join(\"\\n\");\n }\n}\nexport class RemoteNode extends RemoteNodeBase {\n static NODE_LEN = NODE_LEN;\n get sourceFile() {\n return this._sourceFile;\n }\n _sourceFile;\n get id() {\n return `${this.index}.${this.kind}.${this.sourceFile.path}`;\n }\n constructor(view, index, parent, sourceFile, offsetNodes) {\n super(view, index, parent, offsetNodes + index * NODE_LEN);\n this._sourceFile = sourceFile;\n }\n forEachChild(visitNode, visitList) {\n if (this.hasChildren()) {\n let next = this.index + 1;\n do {\n const child = this.getOrCreateChildAtNodeIndex(next);\n if (child instanceof RemoteNodeList) {\n if (visitList) {\n const result = visitList(child);\n if (result) {\n return result;\n }\n }\n else {\n const result = child.forEachNode(visitNode);\n if (result) {\n return result;\n }\n }\n }\n else if (child.kind !== SyntaxKind.JSDoc) {\n const result = visitNode(child);\n if (result) {\n return result;\n }\n }\n next = child.next;\n } while (next);\n }\n }\n get jsDoc() {\n if (!this.hasChildren()) {\n return undefined;\n }\n let result;\n let next = this.index + 1;\n do {\n const child = this.getOrCreateChildAtNodeIndex(next);\n if (!(child instanceof RemoteNodeList) && child.kind === SyntaxKind.JSDoc) {\n (result ??= []).push(child);\n }\n next = child.next;\n } while (next);\n return result;\n }\n getSourceFile() {\n return this.sourceFile;\n }\n getStart(sourceFile, includeJsDocComment) {\n return getTokenPosOfNode(this, sourceFile ?? this.getSourceFile(), includeJsDocComment);\n }\n getFullStart() {\n return this.pos;\n }\n getEnd() {\n return this.end;\n }\n getWidth(sourceFile) {\n return this.getEnd() - this.getStart(sourceFile);\n }\n getFullWidth() {\n return this.end - this.pos;\n }\n getLeadingTriviaWidth(sourceFile) {\n return this.getStart(sourceFile) - this.pos;\n }\n getFullText(sourceFile) {\n return (sourceFile ?? this.getSourceFile()).text.substring(this.pos, this.end);\n }\n getText(sourceFile) {\n sourceFile ??= this.getSourceFile();\n return sourceFile.text.substring(this.getStart(sourceFile), this.end);\n }\n getString(index) {\n const offsetStringTableOffsets = this.sourceFile._offsetStringTableOffsets;\n const start = this.view.getUint32(offsetStringTableOffsets + index * 4, true);\n const end = this.view.getUint32(offsetStringTableOffsets + (index + 1) * 4, true);\n const offsetStringTable = this.sourceFile._offsetStringTable;\n const text = new Uint8Array(this.view.buffer, this.view.byteOffset + offsetStringTable + start, end - start);\n return this.sourceFile._decoder.decode(text);\n }\n getOrCreateChildAtNodeIndex(index) {\n let child = this.sourceFile.nodes[index];\n if (!child) {\n const sf = this.sourceFile;\n const offsetNodes = sf._offsetNodes;\n const kind = this.view.getUint32(offsetNodes + index * NODE_LEN + NODE_OFFSET_KIND, true);\n child = kind === KIND_NODE_LIST\n ? new RemoteNodeList(this.view, index, this, sf, offsetNodes)\n : new RemoteNode(this.view, index, this, sf, offsetNodes);\n sf.nodes[index] = child;\n sf._timing?.recordMaterialization();\n }\n return child;\n }\n hasChildren() {\n if (this._byteIndex >= this.view.byteLength - NODE_LEN) {\n return false;\n }\n const nextNodeParent = this.view.getUint32(this.sourceFile._offsetNodes + (this.index + 1) * NODE_LEN + NODE_OFFSET_PARENT, true);\n return nextNodeParent === this.index;\n }\n getNamedChild(propertyName) {\n const kind = this.kind;\n const propertyNames = childProperties[kind];\n if (!propertyNames) {\n return undefined;\n }\n const order = propertyNames.indexOf(propertyName);\n if (order === -1) {\n return undefined;\n }\n return this.getChildAtOrder(order);\n }\n getChildAtOrder(order) {\n const mask = this.childMask;\n if (!(mask & (1 << order))) {\n // Property is not present\n return undefined;\n }\n // The property index is `order`, minus the number of zeros in the mask that are in bit positions less\n // than the `order`th bit. Example:\n //\n // This is a MethodDeclaration with mask 0b01110101. The possible properties are\n // [\"modifiers\", \"asteriskToken\", \"name\", \"postfixToken\", \"typeParameters\", \"parameters\", \"type\", \"body\"]\n // (it has modifiers, name, typeParameters, parameters, and type).\n //\n // | Bit | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |\n // | ----- | ---- | ---- | ---------- | -------------- | ------------ | ---- | ------------- | --------- |\n // | Value | 0 | 1 | 1 | 1 | 0 | 1 | 0 | 1 |\n // | Name | body | type | parameters | typeParameters | postfixToken | name | asteriskToken | modifiers |\n //\n // We are trying to get the index of \"parameters\" (bit = 5).\n // First, set all the more significant bits to 1:\n //\n // | Bit | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |\n // | ----- | ---- | ---- | ---------- | -------------- | ------------ | ---- | ------------- | --------- |\n // | Value | 1 | 1 | 1 | 1 | 0 | 1 | 0 | 1 |\n //\n // Then, flip the bits:\n //\n // | Bit | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |\n // | ----- | ---- | ---- | ---------- | -------------- | ------------ | ---- | ------------- | --------- |\n // | Value | 0 | 0 | 0 | 0 | 1 | 0 | 1 | 0 |\n //\n // Counting the 1s gives us the number of *missing properties* before the `order`th property. If every property\n // were present, we would have `parameters = children[5]`, but since `postfixToken` and `astersiskToken` are\n // missing, we have `parameters = children[5 - 2]`.\n const propertyIndex = order - popcount8[~(mask | ((0xff << order) & 0xff)) & 0xff];\n let childIndex = this.index + 1;\n for (let i = 0; i < propertyIndex; i++) {\n // Walk through children via their `next` pointer until we get to the right property index\n childIndex = this.view.getUint32(this.sourceFile._offsetNodes + childIndex * NODE_LEN + NODE_OFFSET_NEXT, true);\n }\n return this.getOrCreateChildAtNodeIndex(childIndex);\n }\n __print() {\n const result = [];\n result.push(`index: ${this.index}`);\n result.push(`byteIndex: ${this._byteIndex}`);\n result.push(`kind: ${SyntaxKind[this.kind]}`);\n result.push(`pos: ${this.pos}`);\n result.push(`end: ${this.end}`);\n result.push(`next: ${this.next}`);\n result.push(`parent: ${this.parentIndex}`);\n result.push(`data: ${this.data.toString(2).padStart(32, \"0\")}`);\n const dataType = this.dataType === NODE_DATA_TYPE_CHILDREN ? \"children\" :\n this.dataType === NODE_DATA_TYPE_STRING ? \"string\" :\n \"extended\";\n result.push(`dataType: ${dataType}`);\n if (this.dataType === NODE_DATA_TYPE_CHILDREN) {\n result.push(`childMask: ${this.childMask.toString(2).padStart(8, \"0\")}`);\n result.push(`childProperties: ${childProperties[this.kind]?.join(\", \")}`);\n }\n return result.join(\"\\n\");\n }\n __printChildren() {\n const result = [];\n let next = this.index + 1;\n while (next) {\n const child = this.getOrCreateChildAtNodeIndex(next);\n next = child.next;\n result.push(child.__print());\n }\n return result.join(\"\\n\\n\");\n }\n __printSubtree() {\n const result = [this.__print()];\n this.forEachChild(function visitNode(node) {\n result.push(node.__print());\n node.forEachChild(visitNode);\n }, visitList => {\n result.push(visitList.__print());\n });\n return result.join(\"\\n\\n\");\n }\n // ═══ Generated boolean property getters ═══\n get containsOnlyTriviaWhiteSpaces() {\n return (this.data & (1 << 24)) !== 0;\n }\n get isArrayType() {\n return (this.data & (1 << 24)) !== 0;\n }\n get isBracketed() {\n return (this.data & (1 << 24)) !== 0;\n }\n get isExportEquals() {\n return (this.data & (1 << 24)) !== 0;\n }\n get isNameFirst() {\n return (this.data & (1 << 25)) !== 0;\n }\n get isTypeOf() {\n return (this.data & (1 << 24)) !== 0;\n }\n get isTypeOnly() {\n return (this.data & (1 << 24)) !== 0;\n }\n get multiLine() {\n return (this.data & (1 << 24)) !== 0;\n }\n // ═══ Generated SyntaxKind union property getters ═══\n get keyword() {\n switch (this.kind) {\n case SyntaxKind.ModuleDeclaration:\n return (this.data >> 24) & 0x1 ? SyntaxKind.NamespaceKeyword : SyntaxKind.ModuleKeyword;\n }\n }\n get keywordToken() {\n switch (this.kind) {\n case SyntaxKind.MetaProperty:\n return (this.data >> 24) & 0x1 ? SyntaxKind.NewKeyword : SyntaxKind.ImportKeyword;\n }\n }\n get operator() {\n switch (this.kind) {\n case SyntaxKind.PrefixUnaryExpression: {\n const idx = (this.data >> 24) & 0x7;\n if (idx === 1)\n return SyntaxKind.MinusToken;\n if (idx === 2)\n return SyntaxKind.TildeToken;\n if (idx === 3)\n return SyntaxKind.ExclamationToken;\n if (idx === 4)\n return SyntaxKind.PlusPlusToken;\n if (idx === 5)\n return SyntaxKind.MinusMinusToken;\n return SyntaxKind.PlusToken;\n }\n case SyntaxKind.PostfixUnaryExpression:\n return (this.data >> 24) & 0x1 ? SyntaxKind.MinusMinusToken : SyntaxKind.PlusPlusToken;\n case SyntaxKind.TypeOperator: {\n const idx = (this.data >> 24) & 0x3;\n if (idx === 1)\n return SyntaxKind.ReadonlyKeyword;\n if (idx === 2)\n return SyntaxKind.UniqueKeyword;\n return SyntaxKind.KeyOfKeyword;\n }\n }\n }\n get phaseModifier() {\n switch (this.kind) {\n case SyntaxKind.ImportClause: {\n const idx = (this.data >> 24) & 0x3;\n if (idx === 0)\n return undefined;\n return idx === 1 ? SyntaxKind.TypeKeyword : idx === 2 ? SyntaxKind.DeferKeyword : undefined;\n }\n }\n }\n get token() {\n switch (this.kind) {\n case SyntaxKind.HeritageClause:\n return (this.data >> 24) & 0x1 ? SyntaxKind.ImplementsKeyword : SyntaxKind.ExtendsKeyword;\n case SyntaxKind.ImportAttributes:\n return (this.data >> 25) & 0x1 ? SyntaxKind.AssertKeyword : SyntaxKind.WithKeyword;\n }\n }\n get templateFlags() {\n switch (this.kind) {\n case SyntaxKind.TemplateHead:\n case SyntaxKind.TemplateMiddle:\n case SyntaxKind.TemplateTail:\n const extendedDataOffset = this.sourceFile._offsetExtendedData + (this.data & NODE_EXTENDED_DATA_MASK);\n return this.view.getUint32(extendedDataOffset + 8, true);\n }\n }\n get tokenFlags() {\n switch (this.kind) {\n case SyntaxKind.StringLiteral:\n case SyntaxKind.NumericLiteral:\n case SyntaxKind.BigIntLiteral:\n case SyntaxKind.RegularExpressionLiteral:\n const extendedDataOffset = this.sourceFile._offsetExtendedData + (this.data & NODE_EXTENDED_DATA_MASK);\n return this.view.getUint32(extendedDataOffset + 4, true);\n default:\n return 0;\n }\n }\n // ═══ Generated child property getters ═══\n get argument() {\n return this.getNamedChild(\"argument\");\n }\n get argumentExpression() {\n return this.getNamedChild(\"argumentExpression\");\n }\n get arguments() {\n return this.getNamedChild(\"arguments\");\n }\n get assertsModifier() {\n return this.getNamedChild(\"assertsModifier\");\n }\n get asteriskToken() {\n return this.getNamedChild(\"asteriskToken\");\n }\n get attributes() {\n return this.getNamedChild(\"attributes\");\n }\n get awaitModifier() {\n return this.getNamedChild(\"awaitModifier\");\n }\n get block() {\n return this.getNamedChild(\"block\");\n }\n get body() {\n return this.getNamedChild(\"body\");\n }\n get caseBlock() {\n return this.getNamedChild(\"caseBlock\");\n }\n get catchClause() {\n return this.getNamedChild(\"catchClause\");\n }\n get checkType() {\n return this.getNamedChild(\"checkType\");\n }\n get children() {\n return this.getNamedChild(\"children\");\n }\n get className() {\n return this.getNamedChild(\"className\");\n }\n get clauses() {\n return this.getNamedChild(\"clauses\");\n }\n get closingElement() {\n return this.getNamedChild(\"closingElement\");\n }\n get closingFragment() {\n return this.getNamedChild(\"closingFragment\");\n }\n get colonToken() {\n return this.getNamedChild(\"colonToken\");\n }\n get comment() {\n return this.getNamedChild(\"comment\");\n }\n get condition() {\n return this.getNamedChild(\"condition\");\n }\n get constraint() {\n return this.getNamedChild(\"constraint\");\n }\n get declarationList() {\n return this.getNamedChild(\"declarationList\");\n }\n get declarations() {\n return this.getNamedChild(\"declarations\");\n }\n get defaultType() {\n return this.getNamedChild(\"defaultType\");\n }\n get dotDotDotToken() {\n return this.getNamedChild(\"dotDotDotToken\");\n }\n get elements() {\n return this.getNamedChild(\"elements\");\n }\n get elementType() {\n return this.getNamedChild(\"elementType\");\n }\n get elseStatement() {\n return this.getNamedChild(\"elseStatement\");\n }\n get endOfFileToken() {\n return this.getNamedChild(\"endOfFileToken\");\n }\n get equalsGreaterThanToken() {\n return this.getNamedChild(\"equalsGreaterThanToken\");\n }\n get equalsToken() {\n return this.getNamedChild(\"equalsToken\");\n }\n get exclamationToken() {\n return this.getNamedChild(\"exclamationToken\");\n }\n get exportClause() {\n return this.getNamedChild(\"exportClause\");\n }\n get expression() {\n return this.getNamedChild(\"expression\");\n }\n get exprName() {\n return this.getNamedChild(\"exprName\");\n }\n get extendsType() {\n return this.getNamedChild(\"extendsType\");\n }\n get falseType() {\n return this.getNamedChild(\"falseType\");\n }\n get finallyBlock() {\n return this.getNamedChild(\"finallyBlock\");\n }\n get head() {\n return this.getNamedChild(\"head\");\n }\n get heritageClauses() {\n return this.getNamedChild(\"heritageClauses\");\n }\n get importClause() {\n return this.getNamedChild(\"importClause\");\n }\n get incrementor() {\n return this.getNamedChild(\"incrementor\");\n }\n get indexType() {\n return this.getNamedChild(\"indexType\");\n }\n get initializer() {\n return this.getNamedChild(\"initializer\");\n }\n get jsdocPropertyTags() {\n return this.getNamedChild(\"jsdocPropertyTags\");\n }\n get label() {\n return this.getNamedChild(\"label\");\n }\n get left() {\n return this.getNamedChild(\"left\");\n }\n get literal() {\n return this.getNamedChild(\"literal\");\n }\n get members() {\n return this.getNamedChild(\"members\");\n }\n get modifiers() {\n return this.getNamedChild(\"modifiers\");\n }\n get moduleReference() {\n return this.getNamedChild(\"moduleReference\");\n }\n get moduleSpecifier() {\n return this.getNamedChild(\"moduleSpecifier\");\n }\n get name() {\n return this.getNamedChild(\"name\");\n }\n get namedBindings() {\n return this.getNamedChild(\"namedBindings\");\n }\n get nameExpression() {\n return this.getNamedChild(\"nameExpression\");\n }\n get namespace() {\n return this.getNamedChild(\"namespace\");\n }\n get nameType() {\n return this.getNamedChild(\"nameType\");\n }\n get objectAssignmentInitializer() {\n return this.getNamedChild(\"objectAssignmentInitializer\");\n }\n get objectType() {\n return this.getNamedChild(\"objectType\");\n }\n get openingElement() {\n return this.getNamedChild(\"openingElement\");\n }\n get openingFragment() {\n return this.getNamedChild(\"openingFragment\");\n }\n get operand() {\n return this.getNamedChild(\"operand\");\n }\n get operatorToken() {\n return this.getNamedChild(\"operatorToken\");\n }\n get parameterName() {\n return this.getNamedChild(\"parameterName\");\n }\n get parameters() {\n return this.getNamedChild(\"parameters\");\n }\n get postfixToken() {\n return this.getNamedChild(\"postfixToken\");\n }\n get properties() {\n return this.getNamedChild(\"properties\");\n }\n get propertyName() {\n return this.getNamedChild(\"propertyName\");\n }\n get qualifier() {\n return this.getNamedChild(\"qualifier\");\n }\n get questionDotToken() {\n return this.getNamedChild(\"questionDotToken\");\n }\n get questionToken() {\n return this.getNamedChild(\"questionToken\");\n }\n get readonlyToken() {\n return this.getNamedChild(\"readonlyToken\");\n }\n get right() {\n return this.getNamedChild(\"right\");\n }\n get statement() {\n return this.getNamedChild(\"statement\");\n }\n get statements() {\n return this.getNamedChild(\"statements\");\n }\n get tag() {\n return this.getNamedChild(\"tag\");\n }\n get tagName() {\n return this.getNamedChild(\"tagName\");\n }\n get tags() {\n return this.getNamedChild(\"tags\");\n }\n get template() {\n return this.getNamedChild(\"template\");\n }\n get templateSpans() {\n return this.getNamedChild(\"templateSpans\");\n }\n get thenStatement() {\n return this.getNamedChild(\"thenStatement\");\n }\n get thisArg() {\n return this.getNamedChild(\"thisArg\");\n }\n get trueType() {\n return this.getNamedChild(\"trueType\");\n }\n get tryBlock() {\n return this.getNamedChild(\"tryBlock\");\n }\n get tupleNameSource() {\n return this.getNamedChild(\"tupleNameSource\");\n }\n get type() {\n return this.getNamedChild(\"type\");\n }\n get typeArguments() {\n return this.getNamedChild(\"typeArguments\");\n }\n get typeExpression() {\n return this.getNamedChild(\"typeExpression\");\n }\n get typeName() {\n return this.getNamedChild(\"typeName\");\n }\n get typeParameter() {\n return this.getNamedChild(\"typeParameter\");\n }\n get typeParameters() {\n return this.getNamedChild(\"typeParameters\");\n }\n get types() {\n return this.getNamedChild(\"types\");\n }\n get value() {\n return this.getNamedChild(\"value\");\n }\n get variableDeclaration() {\n return this.getNamedChild(\"variableDeclaration\");\n }\n get whenFalse() {\n return this.getNamedChild(\"whenFalse\");\n }\n get whenTrue() {\n return this.getNamedChild(\"whenTrue\");\n }\n // ═══ Generated string property getters ═══\n get text() {\n switch (this.kind) {\n case SyntaxKind.Identifier:\n case SyntaxKind.PrivateIdentifier:\n case SyntaxKind.JsxText:\n case SyntaxKind.JSDocText:\n case SyntaxKind.JSDocLink:\n case SyntaxKind.JSDocLinkPlain:\n case SyntaxKind.JSDocLinkCode: {\n const stringIndex = this.data & NODE_STRING_INDEX_MASK;\n return this.getString(stringIndex);\n }\n case SyntaxKind.StringLiteral:\n case SyntaxKind.NumericLiteral:\n case SyntaxKind.BigIntLiteral:\n case SyntaxKind.RegularExpressionLiteral:\n case SyntaxKind.NoSubstitutionTemplateLiteral:\n case SyntaxKind.TemplateHead:\n case SyntaxKind.TemplateMiddle:\n case SyntaxKind.TemplateTail:\n case SyntaxKind.SourceFile: {\n const extendedDataOffset = this.sourceFile._offsetExtendedData + (this.data & NODE_EXTENDED_DATA_MASK);\n const stringIndex = this.view.getUint32(extendedDataOffset, true);\n return this.getString(stringIndex);\n }\n }\n }\n get rawText() {\n switch (this.kind) {\n case SyntaxKind.TemplateHead:\n case SyntaxKind.TemplateMiddle:\n case SyntaxKind.TemplateTail:\n const extendedDataOffset = this.sourceFile._offsetExtendedData + (this.data & NODE_EXTENDED_DATA_MASK);\n const stringIndex = this.view.getUint32(extendedDataOffset + 4, true);\n return this.getString(stringIndex);\n }\n }\n // ═══ Generated extended data property getters ═══\n // ═══ Other property getters ═══\n get flags() {\n return this.view.getUint32(this._byteIndex + NODE_OFFSET_FLAGS, true);\n }\n get modifierFlags() {\n const mods = this.modifiers;\n if (!mods)\n return ModifierFlags.None;\n let flags = ModifierFlags.None;\n for (const mod of mods) {\n flags |= modifierToFlag(mod.kind);\n }\n return flags;\n }\n}\n//# sourceMappingURL=node.generated.js.map","import { computeLineStarts, NodeFlags, SyntaxKind, TokenFlags, } from \"../../ast/index.js\";\nimport { MsgpackReader } from \"./msgpack.js\";\nimport { RemoteNode, RemoteNodeList, } from \"./node.generated.js\";\nimport { NODE_EXTENDED_DATA_MASK, } from \"./node.infrastructure.js\";\nimport { HEADER_OFFSET_EXTENDED_DATA, HEADER_OFFSET_NODES, HEADER_OFFSET_STRING_TABLE, HEADER_OFFSET_STRING_TABLE_OFFSETS, HEADER_OFFSET_STRUCTURED_DATA, KIND_NODE_LIST, NODE_LEN, NODE_OFFSET_KIND, NODE_OFFSET_PARENT, } from \"./protocol.js\";\nimport { Wtf8Decoder } from \"./wtf8.js\";\n// Re-export everything consumers need from the other two files.\nexport { RemoteNode, RemoteNodeList } from \"./node.generated.js\";\nexport { readParseOptionsKey, readSourceFileHash, RemoteNodeBase } from \"./node.infrastructure.js\";\n// ═══════════════════════════════════════════════════════════════════════════\n// RemoteSourceFile\n// ═══════════════════════════════════════════════════════════════════════════\nconst NO_STRUCTURED_DATA = 0xFFFFFFFF;\nexport class RemoteSourceFile extends RemoteNode {\n nodes;\n _offsetNodes;\n _offsetStringTableOffsets;\n _offsetStringTable;\n _offsetExtendedData;\n _offsetStructuredData;\n _decoder;\n _timing;\n _lineStarts;\n _cachedText;\n _cachedReferencedFiles;\n _cachedTypeReferenceDirectives;\n _cachedLibReferenceDirectives;\n _cachedImports;\n _cachedModuleAugmentations;\n _cachedAmbientModuleNames;\n constructor(data, decoder, timing) {\n const view = new DataView(data.buffer, data.byteOffset, data.byteLength);\n const offsetNodes = view.getUint32(HEADER_OFFSET_NODES, true);\n super(view, 1, undefined, undefined, offsetNodes);\n this._sourceFile = this;\n this._offsetNodes = offsetNodes;\n this._offsetStringTableOffsets = view.getUint32(HEADER_OFFSET_STRING_TABLE_OFFSETS, true);\n this._offsetStringTable = view.getUint32(HEADER_OFFSET_STRING_TABLE, true);\n this._offsetExtendedData = view.getUint32(HEADER_OFFSET_EXTENDED_DATA, true);\n this._offsetStructuredData = view.getUint32(HEADER_OFFSET_STRUCTURED_DATA, true);\n this._decoder = decoder;\n this._timing = timing;\n this.nodes = Array((view.byteLength - offsetNodes) / NODE_LEN);\n this.nodes[1] = this;\n // Every node slot is materializable on demand except the nil sentinel at\n // index 0 and the source-file node at index 1, which is pre-materialized.\n timing?.recordSourceFileFetched(Math.max(0, this.nodes.length - 2));\n }\n readFileReferences(structuredDataOffset) {\n if (structuredDataOffset === NO_STRUCTURED_DATA) {\n return [];\n }\n const buf = new Uint8Array(this.view.buffer, this.view.byteOffset, this.view.byteLength);\n const reader = new MsgpackReader(buf, this._offsetStructuredData + structuredDataOffset);\n const count = reader.readArrayHeader();\n const result = [];\n for (let i = 0; i < count; i++) {\n reader.readArrayHeader(); // 5-element tuple\n const pos = reader.readUint();\n const end = reader.readUint();\n const fileName = reader.readString();\n const resolutionMode = reader.readUint();\n const preserve = reader.readBool();\n result.push({ pos, end, fileName, resolutionMode, preserve });\n }\n return result;\n }\n readNodeIndexArray(structuredDataOffset) {\n if (structuredDataOffset === NO_STRUCTURED_DATA) {\n return [];\n }\n const buf = new Uint8Array(this.view.buffer, this.view.byteOffset, this.view.byteLength);\n const reader = new MsgpackReader(buf, this._offsetStructuredData + structuredDataOffset);\n const count = reader.readArrayHeader();\n const result = [];\n for (let i = 0; i < count; i++) {\n const nodeIndex = reader.readUint();\n result.push(this.getOrCreateNodeAtIndex(nodeIndex));\n }\n return result;\n }\n readStringArray(structuredDataOffset) {\n if (structuredDataOffset === NO_STRUCTURED_DATA) {\n return [];\n }\n const buf = new Uint8Array(this.view.buffer, this.view.byteOffset, this.view.byteLength);\n const reader = new MsgpackReader(buf, this._offsetStructuredData + structuredDataOffset);\n const count = reader.readArrayHeader();\n const result = [];\n for (let i = 0; i < count; i++) {\n result.push(reader.readString());\n }\n return result;\n }\n /** @internal */\n getOrCreateNodeAtIndex(index) {\n let node = this.nodes[index];\n if (!node) {\n // Resolve the real parent so that nodes looked up directly by index (e.g. via\n // NodeHandle.resolve) report the correct `parent`, rather than always pointing at\n // the source file. The stored parent index can refer to a synthetic NodeList\n // container; skip those to mirror normal traversal, where list elements take the\n // list's parent. The walk terminates at the source file, which occupies index 1\n // and is already cached.\n let parentIndex = this.view.getUint32(this._offsetNodes + index * NODE_LEN + NODE_OFFSET_PARENT, true);\n while (parentIndex !== index &&\n this.view.getUint32(this._offsetNodes + parentIndex * NODE_LEN + NODE_OFFSET_KIND, true) === KIND_NODE_LIST) {\n parentIndex = this.view.getUint32(this._offsetNodes + parentIndex * NODE_LEN + NODE_OFFSET_PARENT, true);\n }\n const parent = parentIndex === index ? this : this.getOrCreateNodeAtIndex(parentIndex);\n node = new RemoteNode(this.view, index, parent, this, this._offsetNodes);\n this.nodes[index] = node;\n this._timing?.recordMaterialization();\n }\n return node;\n }\n // ═══ SourceFile-specific extended data getters ═══\n get extendedDataOffset() {\n return this._offsetExtendedData + (this.data & NODE_EXTENDED_DATA_MASK);\n }\n get fileName() {\n const stringIndex = this.view.getUint32(this.extendedDataOffset + 4, true);\n return this.getString(stringIndex);\n }\n get path() {\n const stringIndex = this.view.getUint32(this.extendedDataOffset + 8, true);\n return this.getString(stringIndex);\n }\n get languageVariant() {\n return this.view.getUint32(this.extendedDataOffset + 12, true);\n }\n get scriptKind() {\n return this.view.getUint32(this.extendedDataOffset + 16, true);\n }\n get referencedFiles() {\n if (this._cachedReferencedFiles !== undefined)\n return this._cachedReferencedFiles;\n const offset = this.view.getUint32(this.extendedDataOffset + 20, true);\n const files = this.readFileReferences(offset);\n this._cachedReferencedFiles = files;\n return files;\n }\n get typeReferenceDirectives() {\n if (this._cachedTypeReferenceDirectives !== undefined)\n return this._cachedTypeReferenceDirectives;\n const offset = this.view.getUint32(this.extendedDataOffset + 24, true);\n const directives = this.readFileReferences(offset);\n this._cachedTypeReferenceDirectives = directives;\n return directives;\n }\n get libReferenceDirectives() {\n if (this._cachedLibReferenceDirectives !== undefined)\n return this._cachedLibReferenceDirectives;\n const offset = this.view.getUint32(this.extendedDataOffset + 28, true);\n const directives = this.readFileReferences(offset);\n this._cachedLibReferenceDirectives = directives;\n return directives;\n }\n get imports() {\n if (this._cachedImports !== undefined)\n return this._cachedImports;\n const offset = this.view.getUint32(this.extendedDataOffset + 32, true);\n const imports = this.readNodeIndexArray(offset);\n this._cachedImports = imports;\n return imports;\n }\n get moduleAugmentations() {\n if (this._cachedModuleAugmentations !== undefined)\n return this._cachedModuleAugmentations;\n const offset = this.view.getUint32(this.extendedDataOffset + 36, true);\n const moduleAugmentations = this.readNodeIndexArray(offset);\n this._cachedModuleAugmentations = moduleAugmentations;\n return moduleAugmentations;\n }\n get ambientModuleNames() {\n if (this._cachedAmbientModuleNames !== undefined)\n return this._cachedAmbientModuleNames;\n const offset = this.view.getUint32(this.extendedDataOffset + 40, true);\n const names = this.readStringArray(offset);\n this._cachedAmbientModuleNames = names;\n return names;\n }\n get externalModuleIndicator() {\n const nodeIndex = this.view.getUint32(this.extendedDataOffset + 44, true);\n if (nodeIndex === 0)\n return undefined;\n if (nodeIndex === this.index)\n return true;\n return this.getOrCreateNodeAtIndex(nodeIndex);\n }\n get isDeclarationFile() {\n return (this.flags & NodeFlags.Ambient) !== 0;\n }\n get text() {\n if (this._cachedText !== undefined)\n return this._cachedText;\n const text = super.text;\n this._cachedText = text;\n return text;\n }\n // ═══ Line/character position mapping ═══\n getLineStarts() {\n return this._lineStarts ??= computeLineStarts(this.text ?? \"\");\n }\n getLineAndCharacterOfPosition(position) {\n const lineStarts = this.getLineStarts();\n const line = computeLineOfPosition(lineStarts, position);\n return { line, character: position - lineStarts[line] };\n }\n getPositionOfLineAndCharacter(line, character) {\n const lineStarts = this.getLineStarts();\n if (line < 0 || line >= lineStarts.length) {\n throw new Error(`Bad line number. Line: ${line}, lineStarts.length: ${lineStarts.length}`);\n }\n return lineStarts[line] + character;\n }\n}\n/**\n * Find the 0-based line number containing the given position via binary search.\n * Assumes the first line starts at position 0 and `position` is non-negative.\n */\nfunction computeLineOfPosition(lineStarts, position) {\n let low = 0;\n let high = lineStarts.length - 1;\n while (low <= high) {\n const middle = low + ((high - low) >> 1);\n const value = lineStarts[middle];\n if (value < position) {\n low = middle + 1;\n }\n else if (value > position) {\n high = middle - 1;\n }\n else {\n return middle;\n }\n }\n return low - 1;\n}\n/**\n * Find a descendant node at a specific position with matching kind and end position.\n */\nexport function findDescendant(root, pos, end, kind) {\n if (root.pos === pos && root.end === end && root.kind === kind) {\n return root;\n }\n // Search children\n let result;\n root.forEachChild(child => {\n if (result)\n return result; // Already found\n // Only search in children that could contain our target\n if (child.pos <= pos && child.end >= end) {\n result = findDescendant(child, pos, end, kind);\n }\n return undefined;\n });\n return result;\n}\n/**\n * Parse a node handle string into its components.\n * Handle format: \"index.kind.path\" where path may contain dots.\n */\nexport function parseNodeHandle(handle) {\n const firstDot = handle.indexOf(\".\");\n if (firstDot === -1) {\n throw new Error(`Invalid node handle: ${handle}`);\n }\n const secondDot = handle.indexOf(\".\", firstDot + 1);\n if (secondDot === -1) {\n throw new Error(`Invalid node handle: ${handle}`);\n }\n return {\n index: parseInt(handle.slice(0, firstDot), 10),\n kind: parseInt(handle.slice(firstDot + 1, secondDot), 10),\n path: handle.slice(secondDot + 1),\n };\n}\n/**\n * Decode binary-encoded AST data into a Node.\n * Works for any binary-encoded node, including synthetic nodes\n * (e.g. from typeToTypeNode) that don't have a source file.\n */\nexport function decodeNode(data) {\n const sf = new RemoteSourceFile(data, new Wtf8Decoder());\n return sf;\n}\n/**\n * Get the unique ID string for a remote node.\n * Throws if the node is not a RemoteNode (i.e. not decoded from binary data).\n */\nexport function getNodeId(node) {\n if (!(node instanceof RemoteNode)) {\n throw new Error(\"getNodeId requires a RemoteNode\");\n }\n return node.id;\n}\n//# sourceMappingURL=node.js.map","const CharacterCodesSlash = \"/\".charCodeAt(0);\nconst CharacterCodesBackslash = \"\\\\\".charCodeAt(0);\nconst CharacterCodesColon = \":\".charCodeAt(0);\nconst CharacterCodesPercent = \"%\".charCodeAt(0);\nconst CharacterCodes3 = \"3\".charCodeAt(0);\nconst CharacterCodesa = \"a\".charCodeAt(0);\nconst CharacterCodesz = \"z\".charCodeAt(0);\nconst CharacterCodesA = \"A\".charCodeAt(0);\nconst CharacterCodesZ = \"Z\".charCodeAt(0);\nconst CharacterCodesDot = \".\".charCodeAt(0);\nconst directorySeparator = \"/\";\nconst altDirectorySeparator = \"\\\\\";\nconst urlSchemeSeparator = \"://\";\nconst backslashRegExp = /\\\\/g;\n// check path for these segments: '', '.'. '..'\nconst relativePathSegmentRegExp = /\\/\\/|(?:^|\\/)\\.\\.?(?:$|\\/)/;\n/**\n * Determines whether a charCode corresponds to `/` or `\\\\`.\n */\nfunction isAnyDirectorySeparator(charCode) {\n return charCode === CharacterCodesSlash || charCode === CharacterCodesBackslash;\n}\nfunction isVolumeCharacter(charCode) {\n return (charCode >= CharacterCodesa && charCode <= CharacterCodesz) ||\n (charCode >= CharacterCodesA && charCode <= CharacterCodesZ);\n}\nfunction getFileUrlVolumeSeparatorEnd(url, start) {\n const ch0 = url.charCodeAt(start);\n if (ch0 === CharacterCodesColon)\n return start + 1;\n if (ch0 === CharacterCodesPercent && url.charCodeAt(start + 1) === CharacterCodes3) {\n const ch2 = url.charCodeAt(start + 2);\n if (ch2 === CharacterCodesa || ch2 === CharacterCodesA)\n return start + 3;\n }\n return -1;\n}\n/**\n * Returns length of the root part of a path or URL (i.e. length of \"/\", \"x:/\", \"//server/share/, file:///user/files\").\n *\n * For example:\n * ```ts\n * getRootLength(\"a\") === 0 // \"\"\n * getRootLength(\"/\") === 1 // \"/\"\n * getRootLength(\"c:\") === 2 // \"c:\"\n * getRootLength(\"c:d\") === 0 // \"\"\n * getRootLength(\"c:/\") === 3 // \"c:/\"\n * getRootLength(\"c:\\\\\") === 3 // \"c:\\\\\"\n * getRootLength(\"//server\") === 7 // \"//server\"\n * getRootLength(\"//server/share\") === 8 // \"//server/\"\n * getRootLength(\"\\\\\\\\server\") === 7 // \"\\\\\\\\server\"\n * getRootLength(\"\\\\\\\\server\\\\share\") === 8 // \"\\\\\\\\server\\\\\"\n * getRootLength(\"file:///path\") === 8 // \"file:///\"\n * getRootLength(\"file:///c:\") === 10 // \"file:///c:\"\n * getRootLength(\"file:///c:d\") === 8 // \"file:///\"\n * getRootLength(\"file:///c:/path\") === 11 // \"file:///c:/\"\n * getRootLength(\"file://server\") === 13 // \"file://server\"\n * getRootLength(\"file://server/path\") === 14 // \"file://server/\"\n * getRootLength(\"http://server\") === 13 // \"http://server\"\n * getRootLength(\"http://server/path\") === 14 // \"http://server/\"\n * ```\n *\n * @internal\n */\nexport function getRootLength(path) {\n const rootLength = getEncodedRootLength(path);\n return rootLength < 0 ? ~rootLength : rootLength;\n}\n/**\n * Returns length of the root part of a path or URL (i.e. length of \"/\", \"x:/\", \"//server/share/, file:///user/files\").\n * If the root is part of a URL, the twos-complement of the root length is returned.\n */\nfunction getEncodedRootLength(path) {\n if (!path)\n return 0;\n const ch0 = path.charCodeAt(0);\n // POSIX or UNC\n if (ch0 === CharacterCodesSlash || ch0 === CharacterCodesBackslash) {\n if (path.charCodeAt(1) !== ch0)\n return 1; // POSIX: \"/\" (or non-normalized \"\\\")\n const p1 = path.indexOf(ch0 === CharacterCodesSlash ? directorySeparator : altDirectorySeparator, 2);\n if (p1 < 0)\n return path.length; // UNC: \"//server\" or \"\\\\server\"\n return p1 + 1; // UNC: \"//server/\" or \"\\\\server\\\"\n }\n // DOS\n if (isVolumeCharacter(ch0) && path.charCodeAt(1) === CharacterCodesColon) {\n const ch2 = path.charCodeAt(2);\n if (ch2 === CharacterCodesSlash || ch2 === CharacterCodesBackslash)\n return 3; // DOS: \"c:/\" or \"c:\\\"\n if (path.length === 2)\n return 2; // DOS: \"c:\" (but not \"c:d\")\n }\n // URL\n const schemeEnd = path.indexOf(urlSchemeSeparator);\n if (schemeEnd !== -1) {\n const authorityStart = schemeEnd + urlSchemeSeparator.length;\n const authorityEnd = path.indexOf(directorySeparator, authorityStart);\n if (authorityEnd !== -1) { // URL: \"file:///\", \"file://server/\", \"file://server/path\"\n // For local \"file\" URLs, include the leading DOS volume (if present).\n // Per https://www.ietf.org/rfc/rfc1738.txt, a host of \"\" or \"localhost\" is a\n // special case interpreted as \"the machine from which the URL is being interpreted\".\n const scheme = path.slice(0, schemeEnd);\n const authority = path.slice(authorityStart, authorityEnd);\n if (scheme === \"file\" && (authority === \"\" || authority === \"localhost\") &&\n isVolumeCharacter(path.charCodeAt(authorityEnd + 1))) {\n const volumeSeparatorEnd = getFileUrlVolumeSeparatorEnd(path, authorityEnd + 2);\n if (volumeSeparatorEnd !== -1) {\n if (path.charCodeAt(volumeSeparatorEnd) === CharacterCodesSlash) {\n // URL: \"file:///c:/\", \"file://localhost/c:/\", \"file:///c%3a/\", \"file://localhost/c%3a/\"\n return ~(volumeSeparatorEnd + 1);\n }\n if (volumeSeparatorEnd === path.length) {\n // URL: \"file:///c:\", \"file://localhost/c:\", \"file:///c$3a\", \"file://localhost/c%3a\"\n // but not \"file:///c:d\" or \"file:///c%3ad\"\n return ~volumeSeparatorEnd;\n }\n }\n }\n return ~(authorityEnd + 1); // URL: \"file://server/\", \"http://server/\"\n }\n return ~path.length; // URL: \"file://server\", \"http://server\"\n }\n // relative\n return 0;\n}\nexport function getPathComponents(path) {\n return pathComponents(path, getRootLength(path));\n}\nfunction pathComponents(path, rootLength) {\n const root = path.substring(0, rootLength);\n const rest = path.substring(rootLength).split(\"/\");\n if (rest.length && !lastOrUndefined(rest))\n rest.pop();\n return [root, ...rest];\n}\nfunction lastOrUndefined(array) {\n return array.length ? array[array.length - 1] : undefined;\n}\n/**\n * Determines whether a path has a trailing separator (`/` or `\\\\`).\n */\nexport function hasTrailingDirectorySeparator(path) {\n return path.length > 0 && isAnyDirectorySeparator(path.charCodeAt(path.length - 1));\n}\n/**\n * Removes a trailing directory separator from a path, if it does not already have one.\n */\nexport function removeTrailingDirectorySeparator(path) {\n if (hasTrailingDirectorySeparator(path)) {\n return path.substr(0, path.length - 1);\n }\n return path;\n}\n/**\n * Adds a trailing directory separator to a path, if it does not already have one.\n */\nexport function ensureTrailingDirectorySeparator(path) {\n if (!hasTrailingDirectorySeparator(path)) {\n return path + directorySeparator;\n }\n return path;\n}\n/**\n * Normalize path separators, converting `\\\\` into `/`.\n */\nexport function normalizeSlashes(path) {\n return path.includes(\"\\\\\")\n ? path.replace(backslashRegExp, directorySeparator)\n : path;\n}\n/**\n * Combines paths. If a path is absolute, it replaces any previous path. Relative paths are not simplified.\n */\nexport function combinePaths(path, ...paths) {\n if (path)\n path = normalizeSlashes(path);\n for (let relativePath of paths) {\n if (!relativePath)\n continue;\n relativePath = normalizeSlashes(relativePath);\n if (!path || getRootLength(relativePath) !== 0) {\n path = relativePath;\n }\n else {\n path = ensureTrailingDirectorySeparator(path) + relativePath;\n }\n }\n return path;\n}\nfunction simpleNormalizePath(path) {\n // Most paths don't require normalization\n if (!relativePathSegmentRegExp.test(path)) {\n return path;\n }\n // Some paths only require cleanup of `/./` or leading `./`\n let simplified = path.replace(/\\/\\.\\//g, \"/\");\n if (simplified.startsWith(\"./\")) {\n simplified = simplified.slice(2);\n }\n if (simplified !== path) {\n path = simplified;\n if (!relativePathSegmentRegExp.test(path)) {\n return path;\n }\n }\n return undefined;\n}\n/**\n * Returns the normalized absolute path, resolving `.` and `..` segments.\n */\nexport function getNormalizedAbsolutePath(path, currentDirectory) {\n let rootLength = getRootLength(path);\n if (rootLength === 0 && currentDirectory) {\n path = combinePaths(currentDirectory, path);\n rootLength = getRootLength(path);\n }\n else {\n // combinePaths normalizes slashes, so not necessary in the other branch\n path = normalizeSlashes(path);\n }\n const simpleNormalized = simpleNormalizePath(path);\n if (simpleNormalized !== undefined) {\n return simpleNormalized.length > rootLength ? removeTrailingDirectorySeparator(simpleNormalized) : simpleNormalized;\n }\n const length = path.length;\n const root = path.substring(0, rootLength);\n // `normalized` is only initialized once `path` is determined to be non-normalized\n let normalized;\n let index = rootLength;\n let segmentStart = index;\n let normalizedUpTo = index;\n let seenNonDotDotSegment = rootLength !== 0;\n while (index < length) {\n // At beginning of segment\n segmentStart = index;\n let ch = path.charCodeAt(index);\n while (ch === CharacterCodesSlash && index + 1 < length) {\n index++;\n ch = path.charCodeAt(index);\n }\n if (index > segmentStart) {\n // Seen superfluous separator\n normalized ??= path.substring(0, segmentStart - 1);\n segmentStart = index;\n }\n // Past any superfluous separators\n let segmentEnd = path.indexOf(directorySeparator, index + 1);\n if (segmentEnd === -1) {\n segmentEnd = length;\n }\n const segmentLength = segmentEnd - segmentStart;\n if (segmentLength === 1 && path.charCodeAt(index) === CharacterCodesDot) {\n // \".\" segment (skip)\n normalized ??= path.substring(0, normalizedUpTo);\n }\n else if (segmentLength === 2 && path.charCodeAt(index) === CharacterCodesDot && path.charCodeAt(index + 1) === CharacterCodesDot) {\n // \"..\" segment\n if (!seenNonDotDotSegment) {\n if (normalized !== undefined) {\n normalized += normalized.length === rootLength ? \"..\" : \"/..\";\n }\n else {\n normalizedUpTo = index + 2;\n }\n }\n else if (normalized === undefined) {\n if (normalizedUpTo - 2 >= 0) {\n normalized = path.substring(0, Math.max(rootLength, path.lastIndexOf(directorySeparator, normalizedUpTo - 2)));\n }\n else {\n normalized = path.substring(0, normalizedUpTo);\n }\n }\n else {\n const lastSlash = normalized.lastIndexOf(directorySeparator);\n if (lastSlash !== -1) {\n normalized = normalized.substring(0, Math.max(rootLength, lastSlash));\n }\n else {\n normalized = root;\n }\n if (normalized.length === rootLength) {\n seenNonDotDotSegment = rootLength !== 0;\n }\n }\n }\n else if (normalized !== undefined) {\n if (normalized.length !== rootLength) {\n normalized += directorySeparator;\n }\n seenNonDotDotSegment = true;\n normalized += path.substring(segmentStart, segmentEnd);\n }\n else {\n seenNonDotDotSegment = true;\n normalizedUpTo = segmentEnd;\n }\n index = segmentEnd + 1;\n }\n return normalized ?? (length > rootLength ? removeTrailingDirectorySeparator(path) : path);\n}\n/**\n * Normalizes a path, resolving `.` and `..` segments and converting backslashes to forward slashes.\n */\nexport function normalizePath(path) {\n path = normalizeSlashes(path);\n let normalized = simpleNormalizePath(path);\n if (normalized !== undefined) {\n return normalized;\n }\n normalized = getNormalizedAbsolutePath(path, \"\");\n return normalized && hasTrailingDirectorySeparator(path) ? ensureTrailingDirectorySeparator(normalized) : normalized;\n}\n/**\n * Determines whether a path is an absolute disk path (e.g. starts with `/`, or a DOS path\n * like `c:`, `c:\\\\` or `c:/`).\n */\nexport function isRootedDiskPath(path) {\n return getEncodedRootLength(path) > 0;\n}\n/**\n * Converts a file name to a normalized path.\n *\n * @param fileName The file name to convert\n * @param basePath The base path to use for relative file names\n * @param getCanonicalFileName A function to get the canonical file name (e.g., toLowerCase for case-insensitive systems)\n * @returns The normalized path\n */\nexport function toPath(fileName, basePath, getCanonicalFileName) {\n const nonCanonicalizedPath = isRootedDiskPath(fileName)\n ? normalizePath(fileName)\n : getNormalizedAbsolutePath(fileName, basePath);\n return getCanonicalFileName(nonCanonicalizedPath);\n}\n/**\n * Creates a getCanonicalFileName function based on case sensitivity.\n */\nexport function createGetCanonicalFileName(useCaseSensitiveFileNames) {\n return useCaseSensitiveFileNames ? identity : toLowerCase;\n}\nfunction identity(x) {\n return x;\n}\nfunction toLowerCase(s) {\n return s.toLowerCase();\n}\nconst bundledScheme = \"bundled:///\";\n/**\n * Returns true if the path refers to a bundled library file.\n */\nexport function isBundled(path) {\n return path.startsWith(bundledScheme);\n}\n/**\n * Returns true if the file name represents a dynamic/virtual file\n * that doesn't exist on disk (e.g., untitled files with paths like \"^/untitled/...\").\n */\nexport function isDynamicFileName(fileName) {\n return fileName.startsWith(\"^/\");\n}\n/**\n * Splits a Windows volume (e.g., \"c:\") from the rest of the path.\n * Returns [volume, rest, ok] where ok is true if a volume was found.\n */\nexport function splitVolumePath(path) {\n if (path.length >= 2 && isVolumeCharacter(path.charCodeAt(0)) && path.charCodeAt(1) === CharacterCodesColon) {\n return [path.substring(0, 2).toLowerCase(), path.substring(2), true];\n }\n return [\"\", path, false];\n}\n// Characters that need extra escaping in URI path segments\n// https://github.com/microsoft/vscode-uri/blob/edfdccd976efaf4bb8fdeca87e97c47257721729/src/uri.ts#L455\nconst extraEscapeChars = {\n \":\": \"%3A\",\n \"/\": \"%2F\",\n \"?\": \"%3F\",\n \"#\": \"%23\",\n \"[\": \"%5B\",\n \"]\": \"%5D\",\n \"@\": \"%40\",\n \"!\": \"%21\",\n \"$\": \"%24\",\n \"&\": \"%26\",\n \"'\": \"%27\",\n \"(\": \"%28\",\n \")\": \"%29\",\n \"*\": \"%2A\",\n \"+\": \"%2B\",\n \",\": \"%2C\",\n \";\": \"%3B\",\n \"=\": \"%3D\",\n \" \": \"%20\",\n};\nfunction extraEscape(s) {\n let result = s;\n for (const [char, escape] of Object.entries(extraEscapeChars)) {\n result = result.replaceAll(char, escape);\n }\n return result;\n}\n/**\n * Converts a file name to a document URI.\n *\n * @example\n * fileNameToDocumentURI(\"/path/to/file.ts\") === \"file:///path/to/file.ts\"\n * fileNameToDocumentURI(\"c:/path/to/file.ts\") === \"file:///c%3A/path/to/file.ts\"\n * fileNameToDocumentURI(\"^/untitled/ts-nul-authority/Untitled-1\") === \"untitled:Untitled-1\"\n * fileNameToDocumentURI(\"^/vscode-vfs/github/microsoft/typescript-go/file.ts\") === \"vscode-vfs://github/microsoft/typescript-go/file.ts\"\n */\nexport function fileNameToDocumentURI(fileName) {\n // Bundled files are returned as-is\n if (isBundled(fileName)) {\n return fileName;\n }\n // Dynamic/virtual files (untitled, vscode-vfs, etc.) need special handling\n if (isDynamicFileName(fileName)) {\n // Format: ^/scheme/authority/path\n const withoutPrefix = fileName.substring(2); // Remove \"^/\"\n const firstSlash = withoutPrefix.indexOf(\"/\");\n if (firstSlash === -1) {\n throw new Error(\"invalid file name: \" + fileName);\n }\n const scheme = withoutPrefix.substring(0, firstSlash);\n const rest = withoutPrefix.substring(firstSlash + 1);\n const secondSlash = rest.indexOf(\"/\");\n if (secondSlash === -1) {\n throw new Error(\"invalid file name: \" + fileName);\n }\n const authority = rest.substring(0, secondSlash);\n const path = rest.substring(secondSlash + 1);\n // ts-nul-authority is a placeholder for URIs without an authority\n if (authority === \"ts-nul-authority\") {\n return scheme + \":\" + path;\n }\n return scheme + \"://\" + authority + \"/\" + path;\n }\n // Regular file path - convert to file:// URI\n let [volume, rest] = splitVolumePath(fileName);\n if (volume !== \"\") {\n volume = \"/\" + extraEscape(volume);\n }\n // Remove leading // for UNC paths (already handled by file://)\n if (rest.startsWith(\"//\")) {\n rest = rest.substring(2);\n }\n const parts = rest.split(\"/\");\n const encodedParts = parts.map(part => extraEscape(encodeURIComponent(part)));\n return \"file://\" + volume + encodedParts.join(\"/\");\n}\n/**\n * Converts a document URI to a file name.\n *\n * @example\n * documentURIToFileName(\"file:///path/to/file.ts\") === \"/path/to/file.ts\"\n * documentURIToFileName(\"file:///c%3A/path/to/file.ts\") === \"c:/path/to/file.ts\"\n * documentURIToFileName(\"untitled:Untitled-1\") === \"^/untitled/ts-nul-authority/Untitled-1\"\n * documentURIToFileName(\"vscode-vfs://github/microsoft/typescript-go/file.ts\") === \"^/vscode-vfs/github/microsoft/typescript-go/file.ts\"\n */\nexport function documentURIToFileName(uri) {\n // Bundled files are returned as-is\n if (isBundled(uri)) {\n return uri;\n }\n // Handle file:// URIs\n if (uri.startsWith(\"file://\")) {\n let parsed;\n try {\n parsed = new URL(uri);\n }\n catch {\n throw new Error(\"invalid file URI: \" + uri);\n }\n // UNC path: file://server/share/...\n if (parsed.host !== \"\") {\n return \"//\" + parsed.host + parsed.pathname;\n }\n // Local file - fix Windows path by removing leading slash before volume\n const path = decodeURIComponent(parsed.pathname);\n if (path.length >= 3 && path.charCodeAt(0) === CharacterCodesSlash) {\n const [volume, rest, ok] = splitVolumePath(path.substring(1));\n if (ok) {\n return volume + rest;\n }\n }\n return path;\n }\n // Leave all other URIs escaped so we can round-trip them.\n // Convert to dynamic file name format: ^/scheme/authority/path\n const colonIndex = uri.indexOf(\":\");\n if (colonIndex === -1) {\n throw new Error(\"invalid URI: \" + uri);\n }\n const scheme = uri.substring(0, colonIndex);\n let path = uri.substring(colonIndex + 1);\n let authority = \"ts-nul-authority\";\n if (path.startsWith(\"//\")) {\n const rest = path.substring(2);\n const slashIndex = rest.indexOf(\"/\");\n if (slashIndex === -1) {\n throw new Error(\"invalid URI: \" + uri);\n }\n authority = rest.substring(0, slashIndex);\n path = rest.substring(slashIndex + 1);\n }\n return \"^/\" + scheme + \"/\" + authority + \"/\" + path;\n}\n//# sourceMappingURL=path.js.map","import { documentURIToFileName, fileNameToDocumentURI, } from \"./path.js\";\n/**\n * Resolves a DocumentIdentifier to a file name.\n * If the identifier contains a URI, it is converted to a file name.\n */\nexport function resolveFileName(identifier) {\n if (typeof identifier === \"string\") {\n return identifier;\n }\n return documentURIToFileName(identifier.uri);\n}\n/**\n * Resolves a DocumentIdentifier to a document URI.\n * If the identifier contains a file name, it is converted to a URI.\n */\nexport function resolveDocumentURI(identifier) {\n if (typeof identifier === \"string\") {\n return fileNameToDocumentURI(identifier);\n }\n return identifier.uri;\n}\n/**\n * Builds the wire request for updateSnapshot, applying the deprecated `openProject`\n * compatibility shim: a single `openProject` is folded into `openProjects` and is\n * never sent on the wire.\n */\nexport function toUpdateSnapshotRequest(params) {\n const { openProject, openProjects, ...rest } = params ?? {};\n const mergedOpenProjects = openProject !== undefined\n ? [resolveFileName(openProject), ...(openProjects ?? [])]\n : openProjects;\n return {\n ...rest,\n ...(mergedOpenProjects !== undefined ? { openProjects: mergedOpenProjects } : {}),\n };\n}\n//# sourceMappingURL=proto.js.map","/**\n * Builds a composite ref key from a snapshot ID and project ID.\n */\nfunction refKey(snapshotId, projectId) {\n return `${snapshotId}:${projectId}`;\n}\n/**\n * Client-side cache for source files keyed by (path, parseOptionsKey, contentHash).\n *\n * Supports multiple versions of the same file at the same path (e.g., from\n * different snapshots with different file contents). Each version is identified\n * by its content hash and parse options key.\n *\n * Entries are ref-counted by (snapshot, project) pairs. When a snapshot is\n * disposed, all refs for that snapshot across all projects are released,\n * and entries with no remaining references are evicted.\n *\n * When a new snapshot is created, unchanged cache entries from the previous\n * snapshot are retained per-project. Only files within changed or removed\n * projects are invalidated.\n */\nexport class SourceFileCache {\n /** Map from path to all cached versions of that file */\n cache = new Map();\n /** Map from snapshotId to (projectId → Set of paths fetched through that project) */\n snapshotProjectPaths = new Map();\n /**\n * Get a cached source file already retained for the given (snapshot, project) pair.\n * This does not require a content hash or parse options key — it returns the entry\n * if one exists with a matching ref. Used to skip the server request entirely when\n * retainForSnapshot has already carried over the ref.\n *\n * A given (snapshot, project) pair always parses a file the same way, so there is\n * at most one matching entry per ref.\n */\n getRetained(path, snapshotId, projectId) {\n const entries = this.cache.get(path);\n if (!entries)\n return undefined;\n const key = refKey(snapshotId, projectId);\n const entry = entries.find(e => e.refs.has(key));\n return entry?.file;\n }\n /**\n * Store a source file in the cache and retain it for the given (snapshot, project) pair.\n * Returns the cached file — which may be an existing entry if the hash matches.\n */\n set(path, file, parseOptionsKey, contentHash, snapshotId, projectId) {\n let entries = this.cache.get(path);\n if (!entries) {\n entries = [];\n this.cache.set(path, entries);\n }\n const ref = refKey(snapshotId, projectId);\n // Check if we already have this exact version\n const existing = entries.find(e => e.parseOptionsKey === parseOptionsKey && e.contentHash === contentHash);\n if (existing) {\n existing.refs.add(ref);\n this.trackPath(snapshotId, projectId, path);\n return existing.file;\n }\n entries.push({ file, contentHash, parseOptionsKey, refs: new Set([ref]) });\n this.trackPath(snapshotId, projectId, path);\n return file;\n }\n /**\n * Retain cache entries from a previous snapshot for a new snapshot.\n * For each project in the previous snapshot:\n * - Removed projects: skip (don't retain any refs).\n * - Changed projects: retain refs for files not listed in changedFiles/deletedFiles.\n * - Unchanged projects: retain all refs.\n */\n retainForSnapshot(newSnapshotId, previousSnapshotId, changes) {\n const prevProjectMap = this.snapshotProjectPaths.get(previousSnapshotId);\n if (!prevProjectMap)\n return;\n const removedProjects = new Set(changes?.removedProjects ?? []);\n const changedProjects = changes?.changedProjects ?? {};\n for (const [projectId, paths] of prevProjectMap) {\n if (removedProjects.has(projectId))\n continue;\n const projectChanges = changedProjects[projectId];\n let invalidPaths;\n if (projectChanges) {\n invalidPaths = new Set();\n for (const p of projectChanges.changedFiles ?? [])\n invalidPaths.add(p);\n for (const p of projectChanges.deletedFiles ?? [])\n invalidPaths.add(p);\n }\n const prevRef = refKey(previousSnapshotId, projectId);\n const newRef = refKey(newSnapshotId, projectId);\n for (const path of paths) {\n if (invalidPaths?.has(path))\n continue;\n const entries = this.cache.get(path);\n if (!entries)\n continue;\n for (const entry of entries) {\n if (entry.refs.has(prevRef)) {\n entry.refs.add(newRef);\n this.trackPath(newSnapshotId, projectId, path);\n }\n }\n }\n }\n }\n /**\n * Release all entries retained by the given snapshot across all projects.\n * Only visits paths that the snapshot actually referenced.\n * Entries with no remaining refs are evicted.\n */\n releaseSnapshot(snapshotId) {\n const projectMap = this.snapshotProjectPaths.get(snapshotId);\n if (!projectMap)\n return;\n for (const [projectId, paths] of projectMap) {\n const key = refKey(snapshotId, projectId);\n for (const path of paths) {\n const entries = this.cache.get(path);\n if (!entries)\n continue;\n for (let i = entries.length - 1; i >= 0; i--) {\n entries[i].refs.delete(key);\n if (entries[i].refs.size === 0) {\n entries.splice(i, 1);\n }\n }\n if (entries.length === 0) {\n this.cache.delete(path);\n }\n }\n }\n this.snapshotProjectPaths.delete(snapshotId);\n }\n trackPath(snapshotId, projectId, path) {\n let projectMap = this.snapshotProjectPaths.get(snapshotId);\n if (!projectMap) {\n projectMap = new Map();\n this.snapshotProjectPaths.set(snapshotId, projectMap);\n }\n let paths = projectMap.get(projectId);\n if (!paths) {\n paths = new Set();\n projectMap.set(projectId, paths);\n }\n paths.add(path);\n }\n /**\n * Clear all entries from the cache.\n */\n clear() {\n this.cache.clear();\n this.snapshotProjectPaths.clear();\n }\n /**\n * Get the number of unique paths in the cache.\n */\n get size() {\n return this.cache.size;\n }\n /**\n * Check if a path is in the cache.\n */\n has(path) {\n return this.cache.has(path);\n }\n}\n//# sourceMappingURL=sourceFileCache.js.map","import { getPathComponents } from \"./path.js\";\n/** The callback names supported by the Go server for virtual FS delegation. */\nexport const fsCallbackNames = [\"readFile\", \"fileExists\", \"directoryExists\", \"getAccessibleEntries\", \"realpath\"];\nexport function createVirtualFileSystem(files) {\n const root = {\n type: \"directory\",\n children: {},\n };\n const content = {};\n for (const filePath of Object.keys(files)) {\n content[filePath] = files[filePath];\n addToTree(filePath);\n }\n return {\n directoryExists,\n fileExists,\n getAccessibleEntries,\n readFile,\n realpath: path => path,\n writeFile,\n removeFile,\n };\n function getNodeFromPath(path) {\n if (!path || path === \"/\") {\n return root;\n }\n const segments = getPathComponents(path).slice(1);\n let current = root;\n for (const segment of segments) {\n if (current.type !== \"directory\") {\n return undefined;\n }\n const child = current.children[segment];\n if (!child) {\n return undefined;\n }\n current = child;\n }\n return current;\n }\n function ensureDirectory(segments) {\n let current = root;\n for (const segment of segments) {\n if (!current.children[segment]) {\n current.children[segment] = { type: \"directory\", children: {} };\n }\n else if (current.children[segment].type !== \"directory\") {\n throw new Error(`Cannot create directory: a file already exists at \"/${segments.join(\"/\")}\"`);\n }\n current = current.children[segment];\n }\n return current;\n }\n function addToTree(path) {\n const segments = getPathComponents(path).slice(1);\n if (segments.length === 0) {\n throw new Error(`Invalid file path: \"${path}\"`);\n }\n const filename = segments.pop();\n const dirNode = ensureDirectory(segments);\n dirNode.children[filename] = { type: \"file\" };\n }\n function writeFile(path, data) {\n content[path] = data;\n addToTree(path);\n }\n function removeFile(path) {\n delete content[path];\n const segments = getPathComponents(path).slice(1);\n if (segments.length === 0)\n return;\n const filename = segments.pop();\n const dirNode = getNodeFromPath(\"/\" + segments.join(\"/\"));\n if (dirNode && dirNode.type === \"directory\") {\n delete dirNode.children[filename];\n }\n }\n function directoryExists(directoryName) {\n const node = getNodeFromPath(directoryName);\n return !!node && node.type === \"directory\";\n }\n function fileExists(fileName) {\n return fileName in content;\n }\n function getAccessibleEntries(directoryName) {\n const node = getNodeFromPath(directoryName);\n if (!node || node.type !== \"directory\") {\n return undefined;\n }\n const fileEntries = [];\n const directories = [];\n for (const [name, child] of Object.entries(node.children)) {\n if (child.type === \"file\") {\n fileEntries.push(name);\n }\n else {\n directories.push(name);\n }\n }\n return { files: fileEntries, directories };\n }\n function readFile(fileName) {\n if (fileName in content) {\n return content[fileName];\n }\n return undefined;\n }\n}\n//# sourceMappingURL=fs.js.map","import fs from \"node:fs\";\r\nimport module from \"node:module\";\r\nimport path from \"node:path\";\r\nimport { fileURLToPath } from \"node:url\";\r\n\r\n// NOTE: Keep VS Code extension's resolveTsdkPathToExe in sync with this function.\r\nexport default function getExePath() {\r\n const __dirname = path.dirname(fileURLToPath(import.meta.url));\r\n const normalizedDirname = __dirname.replace(/\\\\/g, \"/\");\r\n\r\n const pkg = JSON.parse(fs.readFileSync(path.join(__dirname, \"..\", \"package.json\"), \"utf8\"));\r\n const pkgName = pkg.name;\r\n const baseName = pkgName.startsWith(\"@\") ? pkgName.split(\"/\")[1] : pkgName;\r\n const expectedBinName = baseName === \"typescript\" ? \"tsc\" : \"tsgo\";\r\n const binNames = pkg.bin && typeof pkg.bin === \"object\" ? Object.keys(pkg.bin) : [];\r\n if (binNames.length !== 1 || binNames[0] !== expectedBinName) {\r\n throw new Error(`Expected ${pkgName} to declare exactly one bin entry named ${expectedBinName}.`);\r\n }\r\n let binName = expectedBinName;\r\n let exeDir;\r\n\r\n const expectedPackage = baseName + \"-\" + process.platform + \"-\" + process.arch;\r\n\r\n if (normalizedDirname.endsWith(\"/_packages/\" + baseName + \"/lib\")) {\r\n // We're running directly from source in the repo.\r\n // The local repo build (`hereby build`) always produces `tsgo`, regardless\r\n // of the published `bin` name, so don't use binName here.\r\n exeDir = path.resolve(__dirname, \"..\", \"..\", \"..\", \"built\", \"local\");\r\n binName = \"tsgo\";\r\n }\r\n else if (normalizedDirname.endsWith(\"/built/npm/\" + baseName + \"/lib\")) {\r\n // We're running from the built output.\r\n exeDir = path.resolve(__dirname, \"..\", \"..\", expectedPackage, \"lib\");\r\n }\r\n else {\r\n // We're actually running from an installed package.\r\n const platformPackageName = \"@typescript/\" + expectedPackage;\r\n try {\r\n if (typeof import.meta.resolve === \"undefined\") {\r\n // v16.20.1\r\n const require = module.createRequire(import.meta.url);\r\n const packageJson = require.resolve(platformPackageName + \"/package.json\");\r\n exeDir = path.join(path.dirname(packageJson), \"lib\");\r\n }\r\n else {\r\n // v20.6.0, v18.19.0\r\n const packageJson = import.meta.resolve(platformPackageName + \"/package.json\");\r\n const packageJsonPath = fileURLToPath(packageJson);\r\n exeDir = path.join(path.dirname(packageJsonPath), \"lib\");\r\n }\r\n }\r\n catch (e) {\r\n throw new Error(\"Unable to resolve \" + platformPackageName + \". Either your platform is unsupported, or you are missing the package on disk.\");\r\n }\r\n }\r\n\r\n let exe = path.join(exeDir, binName);\r\n if (process.platform === \"win32\") {\r\n exe += \".exe\";\r\n if (exe.length >= 248) {\r\n exe = \"\\\\\\\\?\\\\\" + exe;\r\n }\r\n }\r\n\r\n if (!fs.existsSync(exe)) {\r\n throw new Error(\"Executable not found: \" + exe);\r\n }\r\n\r\n return exe;\r\n}\r\n","/**\n * Shared utilities for the TypeScript API client.\n */\nimport getExePath from \"#getExePath\";\nexport function isSpawnOptions(options) {\n return !(\"pipe\" in options);\n}\nexport function resolveExePath(options) {\n return options.tsserverPath ?? getExePath();\n}\n//# sourceMappingURL=options.js.map","/**\n * Pure JS replacement for @typescript/libsyncrpc.\n *\n * Spawns a child process and communicates with it synchronously over\n * stdin/stdout pipes using the same MessagePack-based tuple protocol:\n * [MessageType (u8), method (bin), payload (bin)]\n *\n * Synchronous I/O is achieved by calling fs.readSync / fs.writeSync\n * directly on the pipe file descriptors obtained from the spawned\n * ChildProcess.\n */\nimport { spawn, } from \"node:child_process\";\nimport { closeSync, openSync, readSync, writeSync, } from \"node:fs\";\nimport { binHeaderSize, MSGPACK_BIN16, MSGPACK_BIN32, MSGPACK_BIN8, MSGPACK_FIXARRAY3, MSGPACK_UINT8, writeBinHeader, } from \"./node/msgpack.js\";\n// ── MessageType constants ────────────────────────────────────────────\n// Sent by channel (parent → child)\nconst MSG_REQUEST = 1;\nconst MSG_CALL_RESPONSE = 2;\nconst MSG_CALL_ERROR = 3;\n// Sent by child (child → parent)\nconst MSG_RESPONSE = 4;\nconst MSG_ERROR = 5;\nconst MSG_CALL = 6;\n// Pre-allocated buffer used by Atomics.wait for tiny sleeps when a\n// non-blocking fd returns EAGAIN.\nconst sleepBuf = new Int32Array(new SharedArrayBuffer(4));\n// Shared empty buffer – avoids allocating Buffer.alloc(0) on every\n// zero-length bin field.\nconst EMPTY_BUF = Buffer.alloc(0);\n// ── Global cleanup tracking ─────────────────────────────────────────\n// Track all live child processes so they can be killed on process exit.\n// This mimics the auto-cleanup behavior of the native libsyncrpc module,\n// whose Rust/C++ destructors would kill children automatically.\nconst liveChildren = new Set();\nprocess.on(\"exit\", () => {\n for (const child of liveChildren) {\n try {\n child.kill();\n }\n catch {\n // swallow – process may already be dead\n }\n }\n liveChildren.clear();\n});\n/**\n * SyncRpcChannel – drop-in replacement for the native libsyncrpc class.\n *\n * API surface intentionally matches the original:\n * - constructor(exe, args)\n * - requestSync(method, payload): string\n * - requestBinarySync(method, payload): Uint8Array\n * - registerCallback(name, cb)\n * - close()\n *\n * The protocol is unversioned; both sides (this JS channel and the Go\n * child process) must be built from the same tree.\n *\n * This class is **not** thread-safe. All calls must originate from a\n * single thread — do not share an instance across worker threads.\n */\nexport class SyncRpcChannel {\n child;\n readFd;\n writeFd;\n pipeFd;\n callbacks = new Map();\n methodBufCache = new Map();\n // When true, the payload byte lengths of each request/response are recorded\n // and exposed via the `last*` fields below. These count only the JSON/binary\n // payload bytes, not the MessagePack tuple framing (message type, method\n // name, and length headers).\n collectTiming;\n // Per-request payload byte measurements for the most recently completed\n // request. Only meaningful when `collectTiming` is true. Callers read these\n // immediately after a request returns (the channel is strictly serial).\n lastBytesSent = 0;\n lastBytesReceived = 0;\n _msgType = 0;\n _msgName = EMPTY_BUF;\n _msgPayload = EMPTY_BUF;\n headerBuf = Buffer.allocUnsafe(4);\n // Read-ahead buffer – reduces readSync syscalls by buffering data from the pipe.\n readBuf = Buffer.allocUnsafe(65536);\n readBufPos = 0;\n readBufLen = 0;\n // Write buffer – assembles entire tuples for a single writeSync.\n writeBuf = Buffer.allocUnsafe(65536);\n constructor(exe, args, collectTiming = false) {\n this.collectTiming = collectTiming;\n const isWindows = process.platform === \"win32\";\n if (isWindows) {\n // On Windows, libuv pipe handles don't expose POSIX fds, so\n // readSync/writeSync can't be used on stdio pipes. Instead,\n // we create a Windows named pipe path, pass it to the child\n // via --pipe, and open it with fs.openSync which returns a\n // real C-runtime fd backed by a proper HANDLE.\n const pipePath = `\\\\\\\\.\\\\pipe\\\\tsgo-sync-${process.pid}-${Date.now()}`;\n this.child = spawn(exe, [...args, \"--pipe\", pipePath], {\n stdio: [\"ignore\", \"ignore\", \"inherit\"],\n });\n // Retry openSync until the child creates the named pipe.\n let fd;\n for (let i = 0; i < 500; i++) {\n try {\n fd = openSync(pipePath, \"r+\");\n break;\n }\n catch {\n if (this.child.exitCode !== null) {\n throw new Error(`Child process exited with code ${this.child.exitCode} before pipe was ready`);\n }\n Atomics.wait(sleepBuf, 0, 0, 10);\n }\n }\n if (fd === undefined) {\n this.child.kill();\n throw new Error(\"SyncRpcChannel: timed out connecting to named pipe\");\n }\n this.readFd = fd;\n this.writeFd = fd;\n this.pipeFd = fd;\n }\n else {\n // POSIX: use stdio pipe file descriptors directly.\n this.child = spawn(exe, args, {\n stdio: [\"pipe\", \"pipe\", \"inherit\"],\n });\n const stdout = this.child.stdout;\n const stdin = this.child.stdin;\n this.readFd = stdout._handle.fd;\n this.writeFd = stdin._handle.fd;\n if (typeof this.readFd !== \"number\" || this.readFd < 0 || typeof this.writeFd !== \"number\" || this.writeFd < 0) {\n stdout.destroy();\n stdin.destroy();\n this.child.kill();\n throw new Error(\"SyncRpcChannel: could not obtain pipe file descriptors.\");\n }\n // Set the pipe handles to blocking mode. Under node --test's\n // process isolation, pipes are created in non-blocking mode\n // (for the IPC channel). This causes readSync/writeSync to get\n // EAGAIN, requiring costly 1ms sleeps per retry. Setting\n // blocking mode ensures readSync blocks properly until data\n // arrives, matching the behavior of the native libsyncrpc.\n stdout._handle.setBlocking?.(true);\n stdin._handle.setBlocking?.(true);\n // Prevent Node's event-loop from reading stdout or keeping the\n // process alive – we will use fs.readSync exclusively.\n stdout.pause();\n stdout.unref();\n stdin.unref();\n }\n // Track for auto-cleanup on process exit.\n liveChildren.add(this.child);\n this.child.unref();\n }\n // ── Public API ──────────────────────────────────────────────────\n /**\n * Send a request and synchronously wait for the response (string).\n * Handles Call (callback) messages from the child inline.\n */\n requestSync(method, payload) {\n this.ensureOpen();\n const result = this.requestBytesSync(method, payload);\n return result.toString(\"utf-8\");\n }\n /**\n * Send a request and synchronously wait for the response (binary).\n * Handles Call (callback) messages from the child inline.\n */\n requestBinarySync(method, payload) {\n this.ensureOpen();\n return this.requestBytesSync(method, payload);\n }\n /** Register a string→string callback that the child may invoke. */\n registerCallback(name, callback) {\n this.callbacks.set(name, callback);\n }\n /** Kill the child process and release resources. */\n close() {\n try {\n liveChildren.delete(this.child);\n if (this.pipeFd !== undefined) {\n closeSync(this.pipeFd);\n this.pipeFd = undefined;\n }\n // Destroy the stdio streams so that their pipe handles are closed\n // and no longer prevent the event loop from draining.\n this.child.stdout?.destroy();\n this.child.stdin?.destroy();\n this.child.kill();\n this.readFd = -1;\n this.writeFd = -1;\n }\n catch {\n // swallow – process may already be dead\n }\n }\n // ── Core request loop ───────────────────────────────────────────\n ensureOpen() {\n if (this.readFd < 0) {\n throw new Error(\"SyncRpcChannel is closed\");\n }\n }\n getMethodBuf(method) {\n let buf = this.methodBufCache.get(method);\n if (buf === undefined) {\n buf = Buffer.from(method, \"utf-8\");\n this.methodBufCache.set(method, buf);\n }\n return buf;\n }\n requestBytesSync(method, payload) {\n const methodBuf = this.getMethodBuf(method);\n if (this.collectTiming) {\n this.lastBytesSent = typeof payload === \"string\"\n ? Buffer.byteLength(payload, \"utf-8\")\n : payload.length;\n this.lastBytesReceived = 0;\n }\n this.writeTuple(MSG_REQUEST, methodBuf, payload);\n for (;;) {\n this.readTuple();\n switch (this._msgType) {\n case MSG_RESPONSE: {\n // Compare raw bytes instead of decoding to string.\n if (!methodBuf.equals(this._msgName)) {\n throw new Error(`name mismatch for response: expected \\`${method}\\`, got \\`${this._msgName.toString(\"utf-8\")}\\``);\n }\n if (this.collectTiming) {\n this.lastBytesReceived = this._msgPayload.length;\n }\n return this._msgPayload;\n }\n case MSG_ERROR: {\n if (methodBuf.equals(this._msgName)) {\n throw new Error(this._msgPayload.toString(\"utf-8\"));\n }\n throw new Error(`name mismatch for response: expected \\`${method}\\`, got \\`${this._msgName.toString(\"utf-8\")}\\``);\n }\n case MSG_CALL: {\n this.handleCall(this._msgName.toString(\"utf-8\"), this._msgPayload);\n break;\n }\n default:\n throw new Error(`Invalid message type from child: ${this._msgType}`);\n }\n }\n }\n // ── Callback handling ───────────────────────────────────────────\n /**\n * Handle an incoming MSG_CALL from the child process.\n *\n * After sending the error response back to the child, this method\n * intentionally re-throws to abort the caller's request loop.\n * A failed callback is treated as unrecoverable to match the\n * behavior of the native libsyncrpc addon.\n */\n handleCall(name, payload) {\n const cb = this.callbacks.get(name);\n if (!cb) {\n const errMsg = `unknown callback: \\`${name}\\`. Please make sure to register it on the JavaScript side before invoking it.`;\n this.writeTuple(MSG_CALL_ERROR, Buffer.from(name, \"utf-8\"), Buffer.from(errMsg, \"utf-8\"));\n throw new Error(`no callback named \\`${name}\\` found`);\n }\n try {\n const result = cb(name, payload.toString(\"utf-8\"));\n this.writeTuple(MSG_CALL_RESPONSE, Buffer.from(name, \"utf-8\"), Buffer.from(result, \"utf-8\"));\n }\n catch (e) {\n const errMsg = String(e instanceof Error ? e.message : e).trim();\n this.writeTuple(MSG_CALL_ERROR, Buffer.from(name, \"utf-8\"), Buffer.from(errMsg, \"utf-8\"));\n throw new Error(`Error calling callback \\`${name}\\`: ${errMsg}`);\n }\n }\n // ── MessagePack tuple write ─────────────────────────────────────\n /**\n * Write a complete [type, name, payload] tuple in as few writeSync\n * calls as possible. For messages that fit in the pre-allocated\n * write buffer (64 KB), everything is assembled and sent in a single\n * syscall. Larger messages use two syscalls: one for the header\n * portion and one for the payload data.\n */\n writeTuple(type, name, payload) {\n const nameLen = name.length;\n const payloadIsString = typeof payload === \"string\";\n const payloadLen = payloadIsString ? Buffer.byteLength(payload, \"utf-8\") : payload.length;\n const nameHdrSize = binHeaderSize(nameLen);\n const payloadHdrSize = binHeaderSize(payloadLen);\n const headerSize = 2 + nameHdrSize + nameLen + payloadHdrSize;\n const totalSize = headerSize + payloadLen;\n if (totalSize <= this.writeBuf.length) {\n // Small message: assemble into write buffer, one syscall\n let off = 0;\n this.writeBuf[off++] = MSGPACK_FIXARRAY3;\n this.writeBuf[off++] = type;\n off = writeBinHeader(this.writeBuf, off, nameLen);\n name.copy(this.writeBuf, off);\n off += nameLen;\n off = writeBinHeader(this.writeBuf, off, payloadLen);\n if (payloadLen > 0) {\n if (payloadIsString) {\n // Encode string directly into write buffer — avoids\n // Buffer.from(string, 'utf-8') allocation entirely.\n this.writeBuf.write(payload, off, payloadLen, \"utf-8\");\n }\n else if (payload instanceof Buffer) {\n payload.copy(this.writeBuf, off);\n }\n else {\n this.writeBuf.set(payload, off);\n }\n }\n this.writeAllBuf(this.writeBuf, totalSize);\n }\n else {\n // Large message: header + name in one call, payload in another\n let off = 0;\n this.writeBuf[off++] = MSGPACK_FIXARRAY3;\n this.writeBuf[off++] = type;\n off = writeBinHeader(this.writeBuf, off, nameLen);\n name.copy(this.writeBuf, off);\n off += nameLen;\n off = writeBinHeader(this.writeBuf, off, payloadLen);\n this.writeAllBuf(this.writeBuf, off);\n if (payloadLen > 0) {\n if (payloadIsString) {\n // Large string: must allocate (can't stream-encode\n // across multiple writeSync calls).\n this.writeAllBuf(Buffer.from(payload, \"utf-8\"));\n }\n else {\n this.writeAllBuf(payload);\n }\n }\n }\n }\n // ── MessagePack tuple read ──────────────────────────────────────\n /**\n * Read a [type, name, payload] tuple into instance fields\n * (_msgType, _msgName, _msgPayload) to avoid allocating a\n * short-lived 3-element array on every call.\n */\n readTuple() {\n // Fixed 3-element array marker\n const marker = this.readByte();\n if (marker !== MSGPACK_FIXARRAY3) {\n throw new Error(`Expected fixed 3-element array (0x93), received: 0x${marker.toString(16)}`);\n }\n // Message type – positive fixint or uint8\n const tb = this.readByte();\n if (tb <= 0x7f) {\n this._msgType = tb;\n }\n else if (tb === MSGPACK_UINT8) {\n this._msgType = this.readByte();\n }\n else {\n throw new Error(`Expected positive fixint or uint8 marker, received: 0x${tb.toString(16)}`);\n }\n this._msgName = this.readBin();\n this._msgPayload = this.readBin();\n }\n /**\n * Read a MessagePack bin field.\n */\n readBin() {\n const marker = this.readByte();\n let size;\n switch (marker) {\n case MSGPACK_BIN8:\n size = this.readByte();\n break;\n case MSGPACK_BIN16:\n this.readExactInto(this.headerBuf, 2);\n size = (this.headerBuf[0] << 8) | this.headerBuf[1];\n break;\n case MSGPACK_BIN32:\n this.readExactInto(this.headerBuf, 4);\n size = this.headerBuf.readUInt32BE(0);\n break;\n default:\n throw new Error(`Expected binary data (0xc4-0xc6), received: 0x${marker.toString(16)}`);\n }\n if (size === 0)\n return EMPTY_BUF;\n return this.readExact(size);\n }\n // ── Low-level synchronous I/O ───────────────────────────────────\n /** Build an EOF error with the child's exit code/signal if available. */\n eofError() {\n const code = this.child.exitCode;\n const signal = this.child.signalCode;\n const detail = signal ? `killed by signal ${signal}` : code !== null ? `exited with code ${code}` : \"unknown reason\";\n return new Error(`Unexpected EOF while reading from child process (${detail})`);\n }\n /** Read a single byte from the buffered read-ahead. */\n readByte() {\n if (this.readBufPos >= this.readBufLen) {\n this.fillReadBuffer();\n }\n return this.readBuf[this.readBufPos++];\n }\n readExact(length) {\n // Use allocUnsafeSlow (not allocUnsafe) so the buffer has its own\n // backing ArrayBuffer at byteOffset 0. This is critical because\n // callers such as RemoteSourceFile create DataView/Uint8Array over\n // buffer.buffer with absolute offsets. Buffer.allocUnsafe returns\n // slices of a shared pool whose byteOffset is non-zero, corrupting\n // those downstream views.\n //\n // allocUnsafeSlow (vs alloc) skips zero-fill, which matters for\n // large transfers — e.g. checker.ts at ~57 MB saves ~5 ms of\n // unnecessary memset. The buffer is immediately filled by\n // readExactInto so uninitialized memory is never exposed.\n const buf = Buffer.allocUnsafeSlow(length);\n this.readExactInto(buf, length);\n return buf;\n }\n /**\n * Fill the internal read-ahead buffer from the pipe fd.\n * Retries on EAGAIN for non-blocking mode compatibility.\n */\n fillReadBuffer() {\n this.readBufPos = 0;\n this.readBufLen = 0;\n for (;;) {\n try {\n const n = readSync(this.readFd, this.readBuf, 0, this.readBuf.length, null);\n if (n === 0) {\n throw this.eofError();\n }\n this.readBufLen = n;\n return;\n }\n catch (e) {\n if (e instanceof Error && (\"code\" in e) && (e.code === \"EAGAIN\" || e.code === \"EWOULDBLOCK\")) {\n Atomics.wait(sleepBuf, 0, 0, 1);\n continue;\n }\n throw e;\n }\n }\n }\n /**\n * Synchronously read exactly `length` bytes into `buffer`.\n * Serves from the internal read-ahead buffer first; for large reads\n * that exceed the buffer size, reads directly from the fd to avoid\n * an extra copy.\n */\n readExactInto(buffer, length) {\n let pos = 0;\n while (pos < length) {\n const avail = this.readBufLen - this.readBufPos;\n if (avail > 0) {\n // Serve from read-ahead buffer\n const toCopy = Math.min(avail, length - pos);\n this.readBuf.copy(buffer, pos, this.readBufPos, this.readBufPos + toCopy);\n this.readBufPos += toCopy;\n pos += toCopy;\n }\n else if (length - pos >= this.readBuf.length) {\n // Remaining data is larger than read buffer; read directly\n // into the target to avoid unnecessary copying.\n try {\n const n = readSync(this.readFd, buffer, pos, length - pos, null);\n if (n === 0) {\n throw this.eofError();\n }\n pos += n;\n }\n catch (e) {\n if (e instanceof Error && (\"code\" in e) && (e.code === \"EAGAIN\" || e.code === \"EWOULDBLOCK\")) {\n Atomics.wait(sleepBuf, 0, 0, 1);\n continue;\n }\n throw e;\n }\n }\n else {\n // Refill the read-ahead buffer\n this.fillReadBuffer();\n }\n }\n }\n /**\n * Synchronously write all bytes from `data` (up to `length`).\n * Retries on EAGAIN.\n */\n writeAllBuf(data, length) {\n const total = length ?? data.length;\n let pos = 0;\n while (pos < total) {\n try {\n const n = writeSync(this.writeFd, data, pos, total - pos);\n pos += n;\n }\n catch (e) {\n if (e instanceof Error && (\"code\" in e) && (e.code === \"EAGAIN\" || e.code === \"EWOULDBLOCK\")) {\n Atomics.wait(sleepBuf, 0, 0, 1);\n continue;\n }\n throw e;\n }\n }\n }\n}\n//# sourceMappingURL=syncChannel.js.map","/**\n * Client-side collection of per-request timing and transfer measurements.\n *\n * When enabled, each request records its round-trip latency and the number of\n * payload bytes sent and received, accumulated into running totals and a\n * fixed-size ring buffer of the most recent requests.\n *\n * The server measures its own per-request processing time independently. When a\n * timing snapshot is requested, the client fetches the server's collection via\n * a `getServerTiming` request and folds it into the returned {@link TimingInfo},\n * yielding per-request and total server processing time and an estimated\n * transport overhead (round-trip minus server processing time). Normal response\n * messages are left unchanged.\n */\n/** Number of most-recent requests retained in the ring buffer. */\nexport const RECENT_REQUEST_CAPACITY = 5;\nfunction emptyAccumulators() {\n return {\n requestCount: 0,\n roundTripMs: 0,\n bytesSent: 0,\n bytesReceived: 0,\n serverTimeMs: 0,\n transportOverheadMs: 0,\n nodesMaterialized: 0,\n sourceFilesFetched: 0,\n nodesFetched: 0,\n };\n}\n/** Returns a snapshot representing a disabled (never-collecting) timing state. */\nexport function disabledTimingInfo() {\n return {\n enabled: false,\n totals: emptyAccumulators(),\n recentRequests: [],\n };\n}\n/** Returns a snapshot representing disabled server-side timing collection. */\nexport function disabledServerTimingInfo() {\n return {\n enabled: false,\n totals: { requestCount: 0, totalProcessingTimeMs: 0 },\n recentRequests: [],\n };\n}\n/**\n * Folds a server-side timing snapshot into a client-side snapshot, producing a\n * combined {@link TimingInfo} with per-request and total server processing time\n * plus estimated transport overhead.\n *\n * Recent requests are paired newest-to-newest and only matched when the method\n * names agree, so that requests recorded by only one side (e.g. the meta\n * requests used to fetch timing) do not misalign the two ring buffers.\n */\nexport function combineTimingInfo(client, server) {\n if (!client.enabled) {\n return client;\n }\n const serverTimeMs = server.totals.totalProcessingTimeMs;\n const totals = {\n ...client.totals,\n serverTimeMs,\n transportOverheadMs: Math.max(0, client.totals.roundTripMs - serverTimeMs),\n };\n const recentRequests = client.recentRequests.map(r => ({ ...r }));\n const serverRecent = server.recentRequests;\n const pairs = Math.min(recentRequests.length, serverRecent.length);\n for (let i = 1; i <= pairs; i++) {\n const c = recentRequests[recentRequests.length - i];\n const s = serverRecent[serverRecent.length - i];\n if (c.method === s.method) {\n c.serverTimeMs = s.processingTimeMs;\n c.transportOverheadMs = Math.max(0, c.roundTripMs - s.processingTimeMs);\n }\n }\n return {\n enabled: true,\n totals,\n recentRequests,\n };\n}\n/**\n * Accumulates request timing samples into running totals and a fixed-size ring\n * buffer of the most recent requests.\n */\nexport class TimingCollector {\n totals = emptyAccumulators();\n // Ring buffer of the most recent requests. `ring` grows to at most\n // RECENT_REQUEST_CAPACITY; once full, `head` marks the oldest entry.\n ring = [];\n head = 0;\n /** Records a single request's measurements. */\n record(sample) {\n this.totals.requestCount++;\n this.totals.roundTripMs += sample.roundTripMs;\n this.totals.bytesSent += sample.bytesSent;\n this.totals.bytesReceived += sample.bytesReceived;\n const entry = {\n method: sample.method,\n roundTripMs: sample.roundTripMs,\n bytesSent: sample.bytesSent,\n bytesReceived: sample.bytesReceived,\n timestamp: Date.now(),\n };\n if (this.ring.length < RECENT_REQUEST_CAPACITY) {\n this.ring.push(entry);\n }\n else {\n this.ring[this.head] = entry;\n this.head = (this.head + 1) % RECENT_REQUEST_CAPACITY;\n }\n }\n /**\n * Records a single AST node materialization. Called on demand as the consumer\n * walks a binary source-file response's tree, so it is not tied to any one\n * request.\n */\n recordMaterialization() {\n this.totals.nodesMaterialized++;\n }\n /**\n * Records a fetched source file: increments the fetched-file counter and adds\n * the file's materializable node count to the fetched-node total, which serves\n * as the denominator for the share of fetched nodes that end up materialized.\n */\n recordSourceFileFetched(materializableNodeCount) {\n this.totals.sourceFilesFetched++;\n this.totals.nodesFetched += materializableNodeCount;\n }\n /** Returns a snapshot of the collected timing information. */\n getInfo() {\n const recentRequests = [];\n for (let i = 0; i < this.ring.length; i++) {\n recentRequests.push(this.ring[(this.head + i) % this.ring.length]);\n }\n return {\n enabled: true,\n totals: { ...this.totals },\n recentRequests,\n };\n }\n /** Clears all accumulated totals and recent-request history. */\n reset() {\n this.totals = emptyAccumulators();\n this.ring = [];\n this.head = 0;\n }\n}\n//# sourceMappingURL=timing.js.map","import { fsCallbackNames } from \"../fs.js\";\nimport { isSpawnOptions, resolveExePath, } from \"../options.js\";\nimport { SyncRpcChannel } from \"../syncChannel.js\";\nimport { combineTimingInfo, disabledTimingInfo, TimingCollector, } from \"../timing.js\";\nexport class Client {\n channel;\n encoder = new TextEncoder();\n timing;\n constructor(options) {\n if (!isSpawnOptions(options)) {\n throw new Error(\"Socket connections are not yet supported in the sync client\");\n }\n const cwd = options.cwd ?? process.cwd();\n const args = [\n \"--api\",\n \"--cwd\",\n cwd,\n ];\n // Enable virtual FS callbacks for each provided FS function\n const enabledCallbacks = [];\n if (options.fs) {\n for (const name of fsCallbackNames) {\n if (options.fs[name]) {\n enabledCallbacks.push(name);\n }\n }\n }\n if (enabledCallbacks.length > 0) {\n args.push(`--callbacks=${enabledCallbacks.join(\",\")}`);\n }\n const collectTiming = options.collectTiming ?? false;\n if (collectTiming) {\n args.push(\"--timing\");\n this.timing = new TimingCollector();\n }\n const channel = new SyncRpcChannel(resolveExePath(options), args, collectTiming);\n this.channel = channel;\n if (options.fs) {\n for (const name of enabledCallbacks) {\n const callback = options.fs[name];\n channel.registerCallback(name, (_, arg) => {\n const result = callback(JSON.parse(arg));\n if (name === \"readFile\") {\n // readFile has 3 returns: string (content), null (not found), undefined (fall back).\n // Wrap in object to preserve null vs undefined distinction.\n if (result === undefined)\n return \"\";\n return JSON.stringify({ content: result });\n }\n return JSON.stringify(result) ?? \"\";\n });\n }\n }\n }\n apiRequest(method, params) {\n const encodedPayload = JSON.stringify(params);\n const start = performance.now();\n const result = this.channel.requestSync(method, encodedPayload);\n this.recordTiming(method, start);\n if (result.length) {\n return JSON.parse(result);\n }\n return undefined;\n }\n apiRequestBinary(method, params) {\n const start = performance.now();\n const result = this.channel.requestBinarySync(method, this.encoder.encode(JSON.stringify(params)));\n this.recordTiming(method, start);\n if (result.length === 0)\n return undefined;\n return result;\n }\n echo(payload) {\n return this.channel.requestSync(\"echo\", payload);\n }\n echoBinary(payload) {\n return this.channel.requestBinarySync(\"echo\", payload);\n }\n /**\n * Returns a combined timing snapshot: client-measured round-trip and byte\n * counts folded together with the server's own per-request processing time\n * (fetched via a getServerTiming request) and estimated transport overhead.\n */\n getTimingInfo() {\n if (!this.timing) {\n return disabledTimingInfo();\n }\n const local = this.timing.getInfo();\n // requestSync bypasses recordTiming, so this query does not pollute the\n // client-side collector.\n const result = this.channel.requestSync(\"getServerTiming\", \"\");\n return combineTimingInfo(local, JSON.parse(result));\n }\n resetTimingInfo() {\n if (!this.timing)\n return;\n this.timing.reset();\n // Keep the server's collection in sync so combined totals stay meaningful.\n this.channel.requestSync(\"resetServerTiming\", \"\");\n }\n /**\n * Returns the timing collector that per-node materialization is reported\n * into, or undefined when timing collection is disabled. The returned\n * collector is the same one folded into {@link getTimingInfo}, so\n * materialization totals surface alongside request timings.\n */\n getTimingCollector() {\n return this.timing;\n }\n recordTiming(method, start) {\n if (!this.timing)\n return;\n this.timing.record({\n method,\n roundTripMs: performance.now() - start,\n bytesSent: this.channel.lastBytesSent,\n bytesReceived: this.channel.lastBytesReceived,\n });\n }\n close() {\n this.channel.close();\n }\n}\n//# sourceMappingURL=client.js.map","//\n// !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n// !!! THIS FILE IS AUTO-GENERATED - DO NOT EDIT !!!\n// !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n//\n// Source: src/api/async/api.ts\n// Regenerate: npm run generate (from _packages/native-preview)\n//\n/// <reference path=\"../node/node.ts\" preserve=\"true\" />\nimport { CompletionItemKind } from \"#enums/completionItemKind\";\nimport { DiagnosticCategory } from \"#enums/diagnosticCategory\";\nimport { ElementFlags } from \"#enums/elementFlags\";\nimport { ModuleKind } from \"#enums/moduleKind\";\nimport { NodeBuilderFlags } from \"#enums/nodeBuilderFlags\";\nimport { ObjectFlags } from \"#enums/objectFlags\";\nimport { SignatureFlags } from \"#enums/signatureFlags\";\nimport { SignatureKind } from \"#enums/signatureKind\";\nimport { SymbolFlags } from \"#enums/symbolFlags\";\nimport { TypeFlags } from \"#enums/typeFlags\";\nimport { TypePredicateKind } from \"#enums/typePredicateKind\";\nimport { ModifierFlags, unescapeLeadingUnderscores, } from \"../../ast/index.js\";\nimport { encodeNode, uint8ArrayToBase64, } from \"../node/encoder.js\";\nimport { decodeNode, getNodeId, parseNodeHandle, readParseOptionsKey, readSourceFileHash, RemoteSourceFile, } from \"../node/node.js\";\nimport { Wtf8Decoder } from \"../node/wtf8.js\";\nimport { createGetCanonicalFileName, toPath, } from \"../path.js\";\nimport { resolveFileName, toUpdateSnapshotRequest, } from \"../proto.js\";\nimport { SourceFileCache } from \"../sourceFileCache.js\";\nimport { Client, } from \"./client.js\";\nexport { documentURIToFileName, fileNameToDocumentURI } from \"../path.js\";\nexport { CompletionItemKind, DiagnosticCategory, ElementFlags, ModifierFlags, ModuleKind, NodeBuilderFlags, ObjectFlags, SignatureFlags, SignatureKind, SymbolFlags, TypeFlags, TypePredicateKind };\nexport class API {\n client;\n sourceFileCache;\n toPath;\n initialized = false;\n activeSnapshots = new Set();\n latestSnapshot;\n internal;\n constructor(options = {}) {\n this.client = new Client(options);\n this.sourceFileCache = new SourceFileCache();\n this.internal = new InternalAPI(this.client, () => this.ensureInitialized());\n }\n /**\n * Create an API instance from an existing LSP connection's API session.\n * Use this when connecting to an API pipe provided by an LSP server via custom/initializeAPISession.\n */\n static fromLSPConnection(options) {\n const api = new API(options);\n api.ensureInitialized();\n return api;\n }\n ensureInitialized() {\n if (!this.initialized) {\n const response = this.client.apiRequest(\"initialize\", null);\n const getCanonicalFileName = createGetCanonicalFileName(response.useCaseSensitiveFileNames);\n const currentDirectory = response.currentDirectory;\n this.toPath = (fileName) => toPath(fileName, currentDirectory, getCanonicalFileName);\n this.initialized = true;\n }\n }\n parseConfigFile(file) {\n this.ensureInitialized();\n return this.client.apiRequest(\"parseConfigFile\", { file });\n }\n updateSnapshot(params) {\n this.ensureInitialized();\n const requestParams = toUpdateSnapshotRequest(params);\n const data = this.client.apiRequest(\"updateSnapshot\", requestParams);\n // Retain cached source files from previous snapshot for unchanged files\n if (this.latestSnapshot) {\n this.sourceFileCache.retainForSnapshot(data.snapshot, this.latestSnapshot.id, data.changes);\n if (this.latestSnapshot.isDisposed()) {\n this.sourceFileCache.releaseSnapshot(this.latestSnapshot.id);\n }\n }\n const snapshot = new Snapshot(data, this.client, this.sourceFileCache, this.toPath, () => {\n this.activeSnapshots.delete(snapshot);\n if (snapshot !== this.latestSnapshot) {\n this.sourceFileCache.releaseSnapshot(snapshot.id);\n }\n });\n this.latestSnapshot = snapshot;\n this.activeSnapshots.add(snapshot);\n return snapshot;\n }\n close() {\n // Dispose all active snapshots\n for (const snapshot of [...this.activeSnapshots]) {\n snapshot.dispose();\n }\n // Release the latest snapshot's cache refs if still held\n if (this.latestSnapshot) {\n this.sourceFileCache.releaseSnapshot(this.latestSnapshot.id);\n this.latestSnapshot = undefined;\n }\n this.client.close();\n this.sourceFileCache.clear();\n }\n clearSourceFileCache() {\n this.sourceFileCache.clear();\n }\n /**\n * Returns a snapshot of collected timing information for requests made\n * through this API instance: client-measured round-trip latency and bytes\n * transferred, folded together with the server's own per-request processing\n * time and an estimated transport overhead (round-trip minus server time).\n *\n * Fetching the snapshot issues a lightweight request to the server to\n * retrieve its timing collection. Collection must be enabled via the\n * `collectTiming` option; when it is not, the returned snapshot has\n * `enabled: false` and zeroed totals.\n */\n getTimingInfo() {\n return this.client.getTimingInfo();\n }\n /** Clears all accumulated timing totals and recent-request history, on both the client and the server. */\n resetTimingInfo() {\n return this.client.resetTimingInfo();\n }\n}\nexport class InternalAPI {\n client;\n ensureInitialized;\n /** @internal */\n constructor(client, ensureInitialized) {\n this.client = client;\n this.ensureInitialized = ensureInitialized;\n }\n startCPUProfile(dir) {\n this.ensureInitialized();\n this.client.apiRequest(\"startCPUProfile\", { dir });\n }\n stopCPUProfile() {\n this.ensureInitialized();\n const result = this.client.apiRequest(\"stopCPUProfile\", null);\n return result.file;\n }\n saveHeapProfile(dir) {\n this.ensureInitialized();\n const result = this.client.apiRequest(\"saveHeapProfile\", { dir });\n return result.file;\n }\n}\nexport class Snapshot {\n id;\n projectMap;\n toPath;\n client;\n disposed = false;\n onDispose;\n snapshotRegistry;\n constructor(data, client, sourceFileCache, toPath, onDispose) {\n this.id = data.snapshot;\n this.client = client;\n this.toPath = toPath;\n this.onDispose = onDispose;\n this.projectMap = new Map();\n this.snapshotRegistry = new SnapshotObjectRegistry(client, this.id, projectId => this.projectMap.get(projectId));\n for (const projData of data.projects) {\n const project = new Project(projData, this.id, client, sourceFileCache, toPath, this.snapshotRegistry);\n this.projectMap.set(toPath(projData.configFileName), project);\n }\n }\n getProjects() {\n this.ensureNotDisposed();\n return [...this.projectMap.values()];\n }\n getProject(configFileName) {\n this.ensureNotDisposed();\n return this.projectMap.get(this.toPath(configFileName));\n }\n getDefaultProjectForFile(file) {\n this.ensureNotDisposed();\n const data = this.client.apiRequest(\"getDefaultProjectForFile\", {\n snapshot: this.id,\n file,\n });\n if (!data)\n return undefined;\n return this.projectMap.get(this.toPath(data.configFileName));\n }\n [globalThis.Symbol.dispose]() {\n this.dispose();\n }\n dispose() {\n if (this.disposed)\n return;\n this.disposed = true;\n for (const project of this.projectMap.values()) {\n project.dispose();\n }\n this.projectMap.clear();\n this.snapshotRegistry.clear();\n this.onDispose();\n this.client.apiRequest(\"release\", { snapshot: this.id });\n }\n isDisposed() {\n return this.disposed;\n }\n ensureNotDisposed() {\n if (this.disposed) {\n throw new Error(\"Snapshot is disposed\");\n }\n }\n}\nclass SnapshotObjectRegistry {\n symbols = new Map();\n client;\n snapshotId;\n resolveProject;\n constructor(client, snapshotId, resolveProject) {\n this.client = client;\n this.snapshotId = snapshotId;\n this.resolveProject = resolveProject;\n }\n /** Resolve a project id (a config file path) to its Project within this snapshot. */\n getProject(projectId) {\n return this.resolveProject(projectId);\n }\n getOrCreateSymbol(data) {\n let symbol = this.symbols.get(data.id);\n if (!symbol) {\n symbol = new Symbol(data, this);\n this.symbols.set(data.id, symbol);\n }\n return symbol;\n }\n getSymbol(id) {\n return this.symbols.get(id);\n }\n clear() {\n this.symbols.clear();\n }\n fetchSymbol(source, method, handle, projectId) {\n if (!handle)\n return undefined;\n const cached = this.getSymbol(handle);\n if (cached)\n return cached;\n const data = this.client.apiRequest(method, {\n snapshot: this.snapshotId,\n project: projectId,\n objectId: source.id,\n });\n if (!data)\n throw new Error(`${method} returned null symbol for ${source.constructor.name} ${source.id}`);\n return this.getOrCreateSymbol(data);\n }\n fetchSymbols(source, method, handles, projectId) {\n if (handles) {\n const result = new Array(handles.length);\n let allCached = true;\n for (let i = 0; i < handles.length; i++) {\n const cached = this.getSymbol(handles[i]);\n if (!cached) {\n allCached = false;\n break;\n }\n result[i] = cached;\n }\n if (allCached)\n return result;\n }\n const symbolData = this.client.apiRequest(method, {\n snapshot: this.snapshotId,\n project: projectId,\n objectId: source.id,\n });\n if (symbolData == null)\n return [];\n else\n return symbolData.map(data => this.getOrCreateSymbol(data));\n }\n}\nclass ProjectObjectRegistry {\n client;\n snapshotId;\n project;\n snapshotRegistry;\n types = new Map();\n signatures = new Map();\n constructor(client, snapshotId, project, snapshotRegistry) {\n this.client = client;\n this.snapshotId = snapshotId;\n this.project = project;\n this.snapshotRegistry = snapshotRegistry;\n }\n getOrCreateSymbol(data) {\n return this.snapshotRegistry.getOrCreateSymbol(data);\n }\n getSymbol(id) {\n return this.snapshotRegistry.getSymbol(id);\n }\n getOrCreateType(data) {\n let type = this.types.get(data.id);\n if (!type) {\n type = new TypeObject(data, this);\n this.types.set(data.id, type);\n }\n return type;\n }\n getType(id) {\n return this.types.get(id);\n }\n getOrCreateSignature(data) {\n let sig = this.signatures.get(data.id);\n if (!sig) {\n sig = new Signature(data, this.project, this);\n this.signatures.set(data.id, sig);\n }\n return sig;\n }\n getSignature(id) {\n return this.signatures.get(id);\n }\n clear() {\n this.types.clear();\n this.signatures.clear();\n }\n fetchType(source, method, handle) {\n if (handle !== false) {\n if (!handle)\n return undefined;\n const cached = this.getType(handle);\n if (cached)\n return cached;\n }\n const data = this.client.apiRequest(method, {\n snapshot: this.snapshotId,\n project: this.project.id,\n objectId: source.id,\n });\n if (!data)\n throw new Error(`${method} returned null type for ${source.constructor.name} ${source.id}`);\n return this.getOrCreateType(data);\n }\n fetchSymbol(source, method, handle) {\n return this.snapshotRegistry.fetchSymbol(source, method, handle, this.project.id);\n }\n fetchSignature(source, method, handle) {\n if (!handle)\n return undefined;\n const cached = this.getSignature(handle);\n if (cached)\n return cached;\n const data = this.client.apiRequest(method, {\n snapshot: this.snapshotId,\n project: this.project.id,\n objectId: source.id,\n });\n if (!data)\n throw new Error(`${method} returned null signature for ${source.constructor.name} ${source.id}`);\n return this.getOrCreateSignature(data);\n }\n fetchTypes(source, method, handles) {\n if (handles) {\n const result = new Array(handles.length);\n let allCached = true;\n for (let i = 0; i < handles.length; i++) {\n const cached = this.getType(handles[i]);\n if (!cached) {\n allCached = false;\n break;\n }\n result[i] = cached;\n }\n if (allCached)\n return result;\n }\n const typesData = this.client.apiRequest(method, {\n snapshot: this.snapshotId,\n project: this.project.id,\n objectId: source.id,\n });\n if (typesData == null)\n return [];\n else\n return typesData.map(data => this.getOrCreateType(data));\n }\n fetchSymbols(source, method, handles) {\n return this.snapshotRegistry.fetchSymbols(source, method, handles, this.project.id);\n }\n // getBaseTypes is a checker-level endpoint keyed by `type` (not `objectId`),\n // so it cannot go through fetchTypes. This helper reuses that server method.\n fetchBaseTypes(source) {\n const typesData = this.client.apiRequest(\"getBaseTypes\", {\n snapshot: this.snapshotId,\n project: this.project.id,\n type: source.id,\n });\n if (typesData == null)\n return [];\n return typesData.map(data => this.getOrCreateType(data));\n }\n}\nexport class Project {\n id;\n configFileName;\n compilerOptions;\n rootFiles;\n program;\n checker;\n emitter;\n client;\n constructor(data, snapshotId, client, sourceFileCache, toPath, snapshotRegistry) {\n this.id = data.id;\n this.configFileName = data.configFileName;\n this.compilerOptions = data.compilerOptions;\n this.rootFiles = data.rootFiles;\n this.client = client;\n this.program = new Program(snapshotId, this, client, sourceFileCache, toPath);\n const objectRegistry = new ProjectObjectRegistry(client, snapshotId, this, snapshotRegistry);\n this.checker = new Checker(snapshotId, this, client, objectRegistry);\n this.emitter = new Emitter(client);\n }\n dispose() {\n this.checker.dispose();\n }\n}\nexport class Program {\n snapshotId;\n project;\n client;\n sourceFileCache;\n toPath;\n decoder = new Wtf8Decoder();\n sourceFileMetadataCache = new Map();\n constructor(snapshotId, project, client, sourceFileCache, toPath) {\n this.snapshotId = snapshotId;\n this.project = project;\n this.client = client;\n this.sourceFileCache = sourceFileCache;\n this.toPath = toPath;\n }\n getCompilerOptions() {\n return this.project.compilerOptions;\n }\n getSourceFile(file) {\n const fileName = resolveFileName(file);\n const path = this.toPath(fileName);\n // Check if we already have a retained cache entry for this (snapshot, project) pair\n const retained = this.sourceFileCache.getRetained(path, this.snapshotId, this.project.id);\n if (retained) {\n return retained;\n }\n // Fetch from server\n const binaryData = this.client.apiRequestBinary(\"getSourceFile\", {\n snapshot: this.snapshotId,\n project: this.project.id,\n file,\n });\n if (!binaryData) {\n return undefined;\n }\n const view = new DataView(binaryData.buffer, binaryData.byteOffset, binaryData.byteLength);\n const contentHash = readSourceFileHash(view);\n const parseOptionsKey = readParseOptionsKey(view);\n // Create a new RemoteSourceFile and cache it (set returns existing if hash matches)\n const sourceFile = new RemoteSourceFile(binaryData, this.decoder, this.client.getTimingCollector());\n return this.sourceFileCache.set(path, sourceFile, parseOptionsKey, contentHash, this.snapshotId, this.project.id);\n }\n getSourceFileNames() {\n const data = this.client.apiRequest(\"getSourceFileNames\", {\n snapshot: this.snapshotId,\n project: this.project.id,\n });\n return data ?? [];\n }\n /**\n * Returns program-stored metadata for the given source file, or `undefined` if the file\n * is not part of the program. Metadata is fetched lazily per file and cached on this\n * `Program` instance.\n */\n getSourceFileMetadata(fileName) {\n return this.getSourceFileMetadataByPath(this.toPath(fileName));\n }\n /**\n * Returns program-stored metadata for the source file at the given path, or `undefined`\n * if the file is not part of the program. Like {@link getSourceFileMetadata}, but skips\n * the file name to path conversion. Metadata is fetched lazily per file and cached on\n * this `Program` instance.\n */\n getSourceFileMetadataByPath(path) {\n let metadata = this.sourceFileMetadataCache.get(path);\n if (metadata === undefined) {\n metadata = this.fetchSourceFileMetadata(path);\n this.sourceFileMetadataCache.set(path, metadata);\n }\n return metadata;\n }\n fetchSourceFileMetadata(path) {\n const data = this.client.apiRequest(\"getSourceFileMetadata\", {\n snapshot: this.snapshotId,\n project: this.project.id,\n file: path,\n });\n return data ?? undefined;\n }\n /**\n * Returns whether the given source file was loaded as part of an external library\n * (e.g. a dependency resolved from `node_modules`). The underlying program metadata is\n * fetched lazily per file and cached on this `Program` instance.\n */\n isSourceFileFromExternalLibrary(file) {\n const metadata = this.getSourceFileMetadataByPath(file.path);\n return metadata?.isFromExternalLibrary ?? false;\n }\n /**\n * Returns whether the given source file is a default library file (e.g. `lib.d.ts`).\n * The underlying program metadata is fetched lazily per file and cached on this\n * `Program` instance.\n */\n isSourceFileDefaultLibrary(file) {\n const metadata = this.getSourceFileMetadataByPath(file.path);\n return metadata?.isDefaultLibrary ?? false;\n }\n /**\n * Get syntactic (parse) diagnostics for a specific file or all files.\n * @param file - Optional file to get diagnostics for. If omitted, returns diagnostics for all files.\n */\n getSyntacticDiagnostics(file) {\n const data = this.client.apiRequest(\"getSyntacticDiagnostics\", {\n snapshot: this.snapshotId,\n project: this.project.id,\n ...(file !== undefined ? { file } : {}),\n });\n return data ?? [];\n }\n /**\n * Get binder diagnostics for a specific file or all files.\n * @param file - Optional file to get diagnostics for. If omitted, returns diagnostics for all files.\n */\n getBindDiagnostics(file) {\n const data = this.client.apiRequest(\"getBindDiagnostics\", {\n snapshot: this.snapshotId,\n project: this.project.id,\n ...(file !== undefined ? { file } : {}),\n });\n return data ?? [];\n }\n /**\n * Get semantic (type-check) diagnostics for a specific file or all files.\n * @param file - Optional file to get diagnostics for. If omitted, returns diagnostics for all files.\n */\n getSemanticDiagnostics(file) {\n const data = this.client.apiRequest(\"getSemanticDiagnostics\", {\n snapshot: this.snapshotId,\n project: this.project.id,\n ...(file !== undefined ? { file } : {}),\n });\n return data ?? [];\n }\n /**\n * Get suggestion diagnostics for a specific file or all files.\n * @param file - Optional file to get diagnostics for. If omitted, returns diagnostics for all files.\n */\n getSuggestionDiagnostics(file) {\n const data = this.client.apiRequest(\"getSuggestionDiagnostics\", {\n snapshot: this.snapshotId,\n project: this.project.id,\n ...(file !== undefined ? { file } : {}),\n });\n return data ?? [];\n }\n /**\n * Get declaration emit diagnostics for a specific file or all files.\n * @param file - Optional file to get diagnostics for. If omitted, returns diagnostics for all files.\n */\n getDeclarationDiagnostics(file) {\n const data = this.client.apiRequest(\"getDeclarationDiagnostics\", {\n snapshot: this.snapshotId,\n project: this.project.id,\n ...(file !== undefined ? { file } : {}),\n });\n return data ?? [];\n }\n /**\n * Get program-wide diagnostics for the project, including compiler options diagnostics.\n */\n getProgramDiagnostics() {\n const data = this.client.apiRequest(\"getProgramDiagnostics\", {\n snapshot: this.snapshotId,\n project: this.project.id,\n });\n return data ?? [];\n }\n /**\n * Get global (non-file-specific) semantic diagnostics for the project.\n */\n getGlobalDiagnostics() {\n const data = this.client.apiRequest(\"getGlobalDiagnostics\", {\n snapshot: this.snapshotId,\n project: this.project.id,\n });\n return data ?? [];\n }\n /**\n * Get config file parsing diagnostics for the project.\n */\n getConfigFileParsingDiagnostics() {\n const data = this.client.apiRequest(\"getConfigFileParsingDiagnostics\", {\n snapshot: this.snapshotId,\n project: this.project.id,\n });\n return data ?? [];\n }\n}\nexport class Checker {\n snapshotId;\n project;\n client;\n objectRegistry;\n wellKnownSymbols;\n constructor(snapshotId, project, client, objectRegistry) {\n this.snapshotId = snapshotId;\n this.project = project;\n this.client = client;\n this.objectRegistry = objectRegistry;\n }\n dispose() {\n this.objectRegistry.clear();\n }\n getSymbolAtLocation(nodeOrNodes) {\n if (Array.isArray(nodeOrNodes)) {\n const data = this.client.apiRequest(\"getSymbolsAtLocations\", {\n snapshot: this.snapshotId,\n project: this.project.id,\n locations: nodeOrNodes.map(node => getNodeId(node)),\n });\n return data.map(d => d ? this.objectRegistry.getOrCreateSymbol(d) : undefined);\n }\n const data = this.client.apiRequest(\"getSymbolAtLocation\", {\n snapshot: this.snapshotId,\n project: this.project.id,\n location: getNodeId(nodeOrNodes),\n });\n return data ? this.objectRegistry.getOrCreateSymbol(data) : undefined;\n }\n getSymbolAtPosition(file, positionOrPositions) {\n if (typeof positionOrPositions === \"number\") {\n const data = this.client.apiRequest(\"getSymbolAtPosition\", {\n snapshot: this.snapshotId,\n project: this.project.id,\n file,\n position: positionOrPositions,\n });\n return data ? this.objectRegistry.getOrCreateSymbol(data) : undefined;\n }\n const data = this.client.apiRequest(\"getSymbolsAtPositions\", {\n snapshot: this.snapshotId,\n project: this.project.id,\n file,\n positions: positionOrPositions,\n });\n return data.map(d => d ? this.objectRegistry.getOrCreateSymbol(d) : undefined);\n }\n getTypeOfSymbol(symbolOrSymbols) {\n if (Array.isArray(symbolOrSymbols)) {\n const data = this.client.apiRequest(\"getTypesOfSymbols\", {\n snapshot: this.snapshotId,\n project: this.project.id,\n symbols: symbolOrSymbols.map(s => s.id),\n });\n return data.map(d => d ? this.objectRegistry.getOrCreateType(d) : undefined);\n }\n const data = this.client.apiRequest(\"getTypeOfSymbol\", {\n snapshot: this.snapshotId,\n project: this.project.id,\n symbol: symbolOrSymbols.id,\n });\n return data ? this.objectRegistry.getOrCreateType(data) : undefined;\n }\n /**\n * Get the declared type of a symbol. Always returns a type; for symbols whose\n * declared type cannot be determined the checker yields the error type (use\n * {@link Type.isErrorType} to detect it).\n */\n getDeclaredTypeOfSymbol(symbol) {\n const data = this.client.apiRequest(\"getDeclaredTypeOfSymbol\", {\n snapshot: this.snapshotId,\n project: this.project.id,\n symbol: symbol.id,\n });\n if (!data)\n throw new Error(`getDeclaredTypeOfSymbol returned no type for symbol ${symbol.id}`);\n return this.objectRegistry.getOrCreateType(data);\n }\n getReferencesToSymbolInFile(file, symbol) {\n const data = this.client.apiRequest(\"getReferencesToSymbolInFile\", {\n snapshot: this.snapshotId,\n project: this.project.id,\n file,\n symbol: symbol.id,\n });\n return (data ?? []).map(h => new NodeHandle(h, this.project));\n }\n getReferencedSymbolsForNode(node, position) {\n const data = this.client.apiRequest(\"getReferencedSymbolsForNode\", {\n snapshot: this.snapshotId,\n project: this.project.id,\n node: getNodeId(node),\n position,\n });\n return (data ?? []).map(entry => ({\n definition: new NodeHandle(entry.definition, this.project),\n symbol: entry.symbol ? this.objectRegistry.getOrCreateSymbol(entry.symbol) : undefined,\n references: (entry.references ?? []).map(h => new NodeHandle(h, this.project)),\n }));\n }\n getSignatureUsage(signatureDecl) {\n const data = this.client.apiRequest(\"getSignatureUsages\", {\n snapshot: this.snapshotId,\n project: this.project.id,\n signatureDecl: getNodeId(signatureDecl),\n });\n return (data ?? []).map(entry => ({\n name: new NodeHandle(entry.name, this.project),\n call: entry.call ? new NodeHandle(entry.call, this.project) : undefined,\n }));\n }\n getCompletionsAtPosition(document, position, options) {\n const data = this.client.apiRequest(\"getCompletionsAtPosition\", {\n snapshot: this.snapshotId,\n project: this.project.id,\n file: document,\n position,\n triggerCharacter: options?.triggerCharacter,\n includeSymbol: options?.includeSymbol,\n });\n if (!data)\n return undefined;\n return {\n isIncomplete: data.isIncomplete,\n entries: data.entries.map(e => ({\n ...e,\n symbol: e.symbol ? this.objectRegistry.getOrCreateSymbol(e.symbol) : undefined,\n })),\n };\n }\n getTypeAtLocation(nodeOrNodes) {\n if (Array.isArray(nodeOrNodes)) {\n const data = this.client.apiRequest(\"getTypeAtLocations\", {\n snapshot: this.snapshotId,\n project: this.project.id,\n locations: nodeOrNodes.map(node => getNodeId(node)),\n });\n return data.map(d => d ? this.objectRegistry.getOrCreateType(d) : undefined);\n }\n const data = this.client.apiRequest(\"getTypeAtLocation\", {\n snapshot: this.snapshotId,\n project: this.project.id,\n location: getNodeId(nodeOrNodes),\n });\n return data ? this.objectRegistry.getOrCreateType(data) : undefined;\n }\n getSignaturesOfType(type, kind) {\n const data = this.client.apiRequest(\"getSignaturesOfType\", {\n snapshot: this.snapshotId,\n project: this.project.id,\n type: type.id,\n kind,\n });\n return data.map(d => this.objectRegistry.getOrCreateSignature(d));\n }\n getResolvedSignature(node) {\n const data = this.client.apiRequest(\"getResolvedSignature\", {\n snapshot: this.snapshotId,\n project: this.project.id,\n location: getNodeId(node),\n });\n return data ? this.objectRegistry.getOrCreateSignature(data) : undefined;\n }\n getTypeAtPosition(file, positionOrPositions) {\n if (typeof positionOrPositions === \"number\") {\n const data = this.client.apiRequest(\"getTypeAtPosition\", {\n snapshot: this.snapshotId,\n project: this.project.id,\n file,\n position: positionOrPositions,\n });\n return data ? this.objectRegistry.getOrCreateType(data) : undefined;\n }\n const data = this.client.apiRequest(\"getTypesAtPositions\", {\n snapshot: this.snapshotId,\n project: this.project.id,\n file,\n positions: positionOrPositions,\n });\n return data.map(d => d ? this.objectRegistry.getOrCreateType(d) : undefined);\n }\n resolveName(name, meaning, location, excludeGlobals) {\n // Distinguish Node (has `kind`) from DocumentPosition (has `document` and `position`)\n const isNode = location && \"kind\" in location;\n const data = this.client.apiRequest(\"resolveName\", {\n snapshot: this.snapshotId,\n project: this.project.id,\n name,\n meaning,\n location: isNode ? getNodeId(location) : undefined,\n file: !isNode && location ? location.document : undefined,\n position: !isNode && location ? location.position : undefined,\n excludeGlobals,\n });\n return data ? this.objectRegistry.getOrCreateSymbol(data) : undefined;\n }\n getResolvedSymbol(node) {\n const text = node.text;\n if (!text)\n return undefined;\n return this.resolveName(text, SymbolFlags.Value | SymbolFlags.ExportValue, node);\n }\n getContextualType(node) {\n const data = this.client.apiRequest(\"getContextualType\", {\n snapshot: this.snapshotId,\n project: this.project.id,\n location: getNodeId(node),\n });\n return data ? this.objectRegistry.getOrCreateType(data) : undefined;\n }\n getBaseTypeOfLiteralType(type) {\n const data = this.client.apiRequest(\"getBaseTypeOfLiteralType\", {\n snapshot: this.snapshotId,\n project: this.project.id,\n type: type.id,\n });\n return data ? this.objectRegistry.getOrCreateType(data) : undefined;\n }\n getNonNullableType(type) {\n const data = this.client.apiRequest(\"getNonNullableType\", {\n snapshot: this.snapshotId,\n project: this.project.id,\n type: type.id,\n });\n return data ? this.objectRegistry.getOrCreateType(data) : undefined;\n }\n getTypeFromTypeNode(node) {\n const data = this.client.apiRequest(\"getTypeFromTypeNode\", {\n snapshot: this.snapshotId,\n project: this.project.id,\n location: getNodeId(node),\n });\n return data ? this.objectRegistry.getOrCreateType(data) : undefined;\n }\n getWidenedType(type) {\n const data = this.client.apiRequest(\"getWidenedType\", {\n snapshot: this.snapshotId,\n project: this.project.id,\n type: type.id,\n });\n return data ? this.objectRegistry.getOrCreateType(data) : undefined;\n }\n getParameterType(signature, index) {\n const data = this.client.apiRequest(\"getParameterType\", {\n snapshot: this.snapshotId,\n project: this.project.id,\n signature: signature.id,\n index,\n });\n return data ? this.objectRegistry.getOrCreateType(data) : undefined;\n }\n isArrayLikeType(type) {\n return this.client.apiRequest(\"isArrayLikeType\", {\n snapshot: this.snapshotId,\n project: this.project.id,\n type: type.id,\n });\n }\n isTypeAssignableTo(source, target) {\n return this.client.apiRequest(\"isTypeAssignableTo\", {\n snapshot: this.snapshotId,\n project: this.project.id,\n source: source.id,\n target: target.id,\n });\n }\n getShorthandAssignmentValueSymbol(node) {\n const data = this.client.apiRequest(\"getShorthandAssignmentValueSymbol\", {\n snapshot: this.snapshotId,\n project: this.project.id,\n location: getNodeId(node),\n });\n return data ? this.objectRegistry.getOrCreateSymbol(data) : undefined;\n }\n /**\n * Get the type of a symbol as narrowed at a specific location. Always returns\n * a type; for symbols whose type cannot be determined the checker yields the\n * error type (use {@link Type.isErrorType} to detect it).\n */\n getTypeOfSymbolAtLocation(symbol, location) {\n const data = this.client.apiRequest(\"getTypeOfSymbolAtLocation\", {\n snapshot: this.snapshotId,\n project: this.project.id,\n symbol: symbol.id,\n location: getNodeId(location),\n });\n if (!data)\n throw new Error(`getTypeOfSymbolAtLocation returned no type for symbol ${symbol.id}`);\n return this.objectRegistry.getOrCreateType(data);\n }\n getIntrinsicType(method) {\n const data = this.client.apiRequest(method, {\n snapshot: this.snapshotId,\n project: this.project.id,\n });\n return this.objectRegistry.getOrCreateType(data);\n }\n getAnyType() {\n return this.getIntrinsicType(\"getAnyType\");\n }\n getStringType() {\n return this.getIntrinsicType(\"getStringType\");\n }\n getNumberType() {\n return this.getIntrinsicType(\"getNumberType\");\n }\n getBooleanType() {\n return this.getIntrinsicType(\"getBooleanType\");\n }\n getVoidType() {\n return this.getIntrinsicType(\"getVoidType\");\n }\n getUndefinedType() {\n return this.getIntrinsicType(\"getUndefinedType\");\n }\n getNullType() {\n return this.getIntrinsicType(\"getNullType\");\n }\n getNeverType() {\n return this.getIntrinsicType(\"getNeverType\");\n }\n getUnknownType() {\n return this.getIntrinsicType(\"getUnknownType\");\n }\n getBigIntType() {\n return this.getIntrinsicType(\"getBigIntType\");\n }\n getESSymbolType() {\n return this.getIntrinsicType(\"getESSymbolType\");\n }\n typeToTypeNode(type, enclosingDeclaration, flags) {\n const binaryData = this.client.apiRequestBinary(\"typeToTypeNode\", {\n snapshot: this.snapshotId,\n project: this.project.id,\n type: type.id,\n location: enclosingDeclaration ? getNodeId(enclosingDeclaration) : undefined,\n flags,\n });\n if (!binaryData)\n return undefined;\n return decodeNode(binaryData);\n }\n signatureToSignatureDeclaration(signature, kind, enclosingDeclaration, flags) {\n const binaryData = this.client.apiRequestBinary(\"signatureToSignatureDeclaration\", {\n snapshot: this.snapshotId,\n project: this.project.id,\n signature: signature.id,\n kind,\n location: enclosingDeclaration ? getNodeId(enclosingDeclaration) : undefined,\n flags,\n });\n if (!binaryData)\n return undefined;\n return decodeNode(binaryData);\n }\n typeToString(type, enclosingDeclaration, flags) {\n return this.client.apiRequest(\"typeToString\", {\n snapshot: this.snapshotId,\n project: this.project.id,\n type: type.id,\n location: enclosingDeclaration ? getNodeId(enclosingDeclaration) : undefined,\n flags,\n });\n }\n isContextSensitive(node) {\n return this.client.apiRequest(\"isContextSensitive\", {\n snapshot: this.snapshotId,\n project: this.project.id,\n location: getNodeId(node),\n });\n }\n isArrayType(type) {\n return this.client.apiRequest(\"isArrayType\", {\n snapshot: this.snapshotId,\n project: this.project.id,\n type: type.id,\n });\n }\n isTupleType(type) {\n return this.client.apiRequest(\"isTupleType\", {\n snapshot: this.snapshotId,\n project: this.project.id,\n type: type.id,\n });\n }\n getReturnTypeOfSignature(signature) {\n const data = this.client.apiRequest(\"getReturnTypeOfSignature\", {\n snapshot: this.snapshotId,\n project: this.project.id,\n signature: signature.id,\n });\n return data ? this.objectRegistry.getOrCreateType(data) : undefined;\n }\n getRestTypeOfSignature(signature) {\n const data = this.client.apiRequest(\"getRestTypeOfSignature\", {\n snapshot: this.snapshotId,\n project: this.project.id,\n signature: signature.id,\n });\n return data ? this.objectRegistry.getOrCreateType(data) : undefined;\n }\n getTypePredicateOfSignature(signature) {\n const data = this.client.apiRequest(\"getTypePredicateOfSignature\", {\n snapshot: this.snapshotId,\n project: this.project.id,\n signature: signature.id,\n });\n if (!data)\n return undefined;\n return {\n kind: data.kind,\n parameterIndex: data.parameterIndex,\n parameterName: data.parameterName,\n type: data.type ? this.objectRegistry.getOrCreateType(data.type) : undefined,\n };\n }\n /**\n * Get the base types of a class or interface type. A type with no base types\n * yields an empty array.\n */\n getBaseTypes(type) {\n const data = this.client.apiRequest(\"getBaseTypes\", {\n snapshot: this.snapshotId,\n project: this.project.id,\n type: type.id,\n });\n return data ? data.map(d => this.objectRegistry.getOrCreateType(d)) : [];\n }\n getApparentType(type) {\n const data = this.client.apiRequest(\"getApparentType\", {\n snapshot: this.snapshotId,\n project: this.project.id,\n type: type.id,\n });\n return data ? this.objectRegistry.getOrCreateType(data) : undefined;\n }\n getPropertiesOfType(type) {\n const data = this.client.apiRequest(\"getPropertiesOfType\", {\n snapshot: this.snapshotId,\n project: this.project.id,\n type: type.id,\n });\n return data ? data.map(d => this.objectRegistry.getOrCreateSymbol(d)) : [];\n }\n getIndexInfosOfType(type) {\n const data = this.client.apiRequest(\"getIndexInfosOfType\", {\n snapshot: this.snapshotId,\n project: this.project.id,\n type: type.id,\n });\n if (!data)\n return [];\n return data.map(d => ({\n keyType: this.objectRegistry.getOrCreateType(d.keyType),\n valueType: this.objectRegistry.getOrCreateType(d.valueType),\n isReadonly: d.isReadonly ?? false,\n declaration: d.declaration ? new NodeHandle(d.declaration, this.project) : undefined,\n }));\n }\n /**\n * Get the constraint of a type parameter (the `T` in `<U extends T>`), or\n * undefined if it has none.\n */\n getConstraintOfTypeParameter(type) {\n const data = this.client.apiRequest(\"getConstraintOfTypeParameter\", {\n snapshot: this.snapshotId,\n project: this.project.id,\n type: type.id,\n });\n return data ? this.objectRegistry.getOrCreateType(data) : undefined;\n }\n getBaseConstraintOfType(type) {\n const data = this.client.apiRequest(\"getBaseConstraintOfType\", {\n snapshot: this.snapshotId,\n project: this.project.id,\n type: type.id,\n });\n return data ? this.objectRegistry.getOrCreateType(data) : undefined;\n }\n getPropertyOfType(type, name) {\n const data = this.client.apiRequest(\"getPropertyOfType\", {\n snapshot: this.snapshotId,\n project: this.project.id,\n type: type.id,\n name,\n });\n return data ? this.objectRegistry.getOrCreateSymbol(data) : undefined;\n }\n getConstantValue(node) {\n const data = this.client.apiRequest(\"getConstantValue\", {\n snapshot: this.snapshotId,\n project: this.project.id,\n location: getNodeId(node),\n });\n return data ?? undefined;\n }\n getSignatureFromDeclaration(node) {\n const data = this.client.apiRequest(\"getSignatureFromDeclaration\", {\n snapshot: this.snapshotId,\n project: this.project.id,\n location: getNodeId(node),\n });\n return data ? this.objectRegistry.getOrCreateSignature(data) : undefined;\n }\n getExportSpecifierLocalTargetSymbol(node) {\n const data = this.client.apiRequest(\"getExportSpecifierLocalTargetSymbol\", {\n snapshot: this.snapshotId,\n project: this.project.id,\n location: getNodeId(node),\n });\n return data ? this.objectRegistry.getOrCreateSymbol(data) : undefined;\n }\n /**\n * Follow all aliases to get the original symbol. Always returns a symbol; for\n * an unresolved alias the checker yields the unknown symbol (use\n * {@link Checker.isUnknownSymbol} to detect it).\n */\n getAliasedSymbol(symbol) {\n const data = this.client.apiRequest(\"getAliasedSymbol\", {\n snapshot: this.snapshotId,\n project: this.project.id,\n symbol: symbol.id,\n });\n if (!data)\n throw new Error(`getAliasedSymbol returned no symbol for symbol ${symbol.id}`);\n return this.objectRegistry.getOrCreateSymbol(data);\n }\n getImmediateAliasedSymbol(symbol) {\n const data = this.client.apiRequest(\"getImmediateAliasedSymbol\", {\n snapshot: this.snapshotId,\n project: this.project.id,\n symbol: symbol.id,\n });\n return data ? this.objectRegistry.getOrCreateSymbol(data) : undefined;\n }\n /**\n * Fetch (once, then cache) the handle ids of the per-checker singleton\n * symbols (unknown, undefined, arguments). These ids are stable for the life\n * of the project's checker, so identity checks against them are local after\n * the first call.\n */\n getWellKnownSymbols() {\n return this.wellKnownSymbols ??= this.client.apiRequest(\"getWellKnownSymbols\", {\n snapshot: this.snapshotId,\n project: this.project.id,\n });\n }\n /**\n * Returns `true` if the symbol is the checker's \"unknown\" symbol (e.g. the\n * result of {@link Checker.getAliasedSymbol} on an unresolved alias).\n */\n isUnknownSymbol(symbol) {\n return symbol.id === (this.getWellKnownSymbols()).unknown;\n }\n /**\n * Returns `true` if the symbol is the checker's \"undefined\" symbol.\n */\n isUndefinedSymbol(symbol) {\n return symbol.id === (this.getWellKnownSymbols()).undefined;\n }\n /**\n * Returns `true` if the symbol is the checker's \"arguments\" symbol.\n */\n isArgumentsSymbol(symbol) {\n return symbol.id === (this.getWellKnownSymbols()).arguments;\n }\n getExportsOfModule(symbol) {\n const data = this.client.apiRequest(\"getExportsOfModule\", {\n snapshot: this.snapshotId,\n project: this.project.id,\n symbol: symbol.id,\n });\n return data ? data.map(d => this.objectRegistry.getOrCreateSymbol(d)) : [];\n }\n getMemberInModuleExports(symbol, name) {\n const data = this.client.apiRequest(\"getMemberInModuleExports\", {\n snapshot: this.snapshotId,\n project: this.project.id,\n symbol: symbol.id,\n name,\n });\n return data ? this.objectRegistry.getOrCreateSymbol(data) : undefined;\n }\n getJsDocTagsOfSymbol(symbol) {\n const data = this.client.apiRequest(\"getJsDocTags\", {\n snapshot: this.snapshotId,\n project: this.project.id,\n symbol: symbol.id,\n });\n return data ?? [];\n }\n getDocumentationCommentOfSymbol(symbol) {\n return this.client.apiRequest(\"getDocumentationComment\", {\n snapshot: this.snapshotId,\n project: this.project.id,\n symbol: symbol.id,\n });\n }\n /**\n * Get the type arguments of a type reference (e.g. the `string` in `Array<string>`).\n */\n getTypeArguments(type) {\n const data = this.client.apiRequest(\"getTypeArguments\", {\n snapshot: this.snapshotId,\n project: this.project.id,\n type: type.id,\n });\n return data ? data.map(d => this.objectRegistry.getOrCreateType(d)) : [];\n }\n}\nexport class Emitter {\n client;\n constructor(client) {\n this.client = client;\n }\n printNode(node, options = {}) {\n const encoded = encodeNode(node);\n const base64 = uint8ArrayToBase64(encoded);\n return this.client.apiRequest(\"printNode\", {\n data: base64,\n ...options,\n });\n }\n}\nexport class NodeHandle {\n /**\n * The project this handle was produced in, used as the default for {@link resolve}.\n * Node handles are only meaningful within a project's program, so the producing project\n * is remembered so callers don't have to pass it explicitly.\n */\n canonicalProject;\n index;\n kind;\n path;\n constructor(handle, canonicalProject) {\n const parsed = parseNodeHandle(handle);\n this.index = parsed.index;\n this.kind = parsed.kind;\n this.path = parsed.path;\n this.canonicalProject = canonicalProject;\n }\n /**\n * Resolve this handle to the actual AST node by fetching the source file from a project\n * and looking up the node by index. If no project is passed, the project that produced\n * the handle is used.\n */\n resolve(project = this.canonicalProject) {\n const sourceFile = project.program.getSourceFile(this.path);\n if (!sourceFile) {\n return undefined;\n }\n return sourceFile.getOrCreateNodeAtIndex(this.index);\n }\n}\nexport class Symbol {\n objectRegistry;\n /**\n * The project this symbol was first observed in, used as the default project for\n * lookups that need a project context (members/exports/parent). Symbols are shared\n * snapshot-wide, so these lookups can otherwise be ambiguous about which project to use.\n */\n canonicalProject;\n id;\n /** The escaped (`__String`) name, used as the key in member/export tables. */\n escapedName;\n /** The display name (escaped underscores removed). */\n name;\n flags;\n checkFlags;\n declarations;\n valueDeclaration;\n parent;\n exportSymbol;\n membersCache;\n exportsCache;\n constructor(data, objectRegistry) {\n this.objectRegistry = objectRegistry;\n this.id = data.id;\n this.escapedName = data.name;\n this.name = unescapeLeadingUnderscores(data.name);\n this.flags = data.flags;\n this.checkFlags = data.checkFlags;\n const canonicalProject = objectRegistry.getProject(data.project);\n if (!canonicalProject) {\n throw new Error(`Symbol ${data.id} references unknown canonical project '${data.project}'`);\n }\n this.canonicalProject = canonicalProject;\n this.declarations = (data.declarations ?? []).map(d => new NodeHandle(d, canonicalProject));\n this.valueDeclaration = data.valueDeclaration ? new NodeHandle(data.valueDeclaration, canonicalProject) : undefined;\n if (data.parent !== undefined)\n this.parent = data.parent;\n if (data.exportSymbol !== undefined)\n this.exportSymbol = data.exportSymbol;\n }\n getParent() {\n return this.objectRegistry.fetchSymbol(this, \"getParentOfSymbol\", this.parent, this.canonicalProject.id);\n }\n /**\n * Get this symbol's members keyed by escaped name. The result is cached on\n * the symbol, so repeated calls do not round-trip to the server.\n */\n getMembers() {\n return this.membersCache ??= this.fetchSymbolTable(\"getMembersOfSymbol\");\n }\n /**\n * Get this symbol's exports keyed by escaped name. The result is cached on\n * the symbol, so repeated calls do not round-trip to the server.\n */\n getExports() {\n return this.exportsCache ??= this.fetchSymbolTable(\"getExportsOfSymbol\");\n }\n fetchSymbolTable(method) {\n const symbols = this.objectRegistry.fetchSymbols(this, method, undefined, this.canonicalProject.id);\n const table = new Map();\n for (const symbol of symbols) {\n table.set(symbol.escapedName, symbol);\n }\n return table;\n }\n getExportSymbol() {\n if (!this.exportSymbol)\n return this;\n return this.objectRegistry.fetchSymbol(this, \"getExportSymbolOfSymbol\", this.exportSymbol, this.canonicalProject.id);\n }\n getJsDocTags(checker) {\n return checker.getJsDocTagsOfSymbol(this);\n }\n getDocumentationComment(checker) {\n return checker.getDocumentationCommentOfSymbol(this);\n }\n}\nclass TypeObject {\n objectRegistry;\n id;\n flags;\n objectFlags;\n symbol;\n value;\n intrinsicName;\n isThisType;\n freshType;\n regularType;\n target;\n typeParameters;\n outerTypeParameters;\n localTypeParameters;\n aliasTypeArguments;\n aliasSymbol;\n elementFlags;\n fixedLength;\n readonly;\n texts;\n objectType;\n indexType;\n checkType;\n extendsType;\n baseType;\n substConstraint;\n trueType; // false if not yet loaded\n falseType; // false if not yet loaded\n constructor(data, objectRegistry) {\n this.objectRegistry = objectRegistry;\n this.id = data.id;\n this.flags = data.flags;\n if (data.objectFlags !== undefined)\n this.objectFlags = data.objectFlags;\n if (data.symbol !== undefined)\n this.symbol = data.symbol;\n if (data.value != null) {\n // BigInt literal values are serialized as decimal strings (e.g. \"-123\") because\n // JSON cannot represent bigint. Decode them back into a real bigint here.\n this.value = (data.flags & TypeFlags.BigIntLiteral) ? BigInt(data.value) : data.value;\n }\n if (data.intrinsicName !== undefined)\n this.intrinsicName = data.intrinsicName;\n if (data.isThisType !== undefined)\n this.isThisType = data.isThisType;\n if (data.freshType !== undefined)\n this.freshType = data.freshType;\n if (data.regularType !== undefined)\n this.regularType = data.regularType;\n if (data.target !== undefined)\n this.target = data.target;\n this.typeParameters = data.typeParameters ?? [];\n this.outerTypeParameters = data.outerTypeParameters ?? [];\n this.localTypeParameters = data.localTypeParameters ?? [];\n this.aliasTypeArguments = data.aliasTypeArguments ?? [];\n if (data.aliasSymbol !== undefined)\n this.aliasSymbol = data.aliasSymbol;\n if (data.elementFlags !== undefined)\n this.elementFlags = data.elementFlags;\n if (data.fixedLength !== undefined)\n this.fixedLength = data.fixedLength;\n if (data.readonly !== undefined)\n this.readonly = data.readonly;\n if (data.texts !== undefined)\n this.texts = data.texts;\n if (data.objectType !== undefined)\n this.objectType = data.objectType;\n if (data.indexType !== undefined)\n this.indexType = data.indexType;\n if (data.checkType !== undefined)\n this.checkType = data.checkType;\n if (data.extendsType !== undefined)\n this.extendsType = data.extendsType;\n if (data.baseType !== undefined)\n this.baseType = data.baseType;\n if (data.substConstraint !== undefined)\n this.substConstraint = data.substConstraint;\n this.trueType = false;\n this.falseType = false;\n }\n getSymbol() {\n return this.objectRegistry.fetchSymbol(this, \"getSymbolOfType\", this.symbol);\n }\n getAliasSymbol() {\n return this.objectRegistry.fetchSymbol(this, \"getAliasSymbolOfType\", this.aliasSymbol);\n }\n getTarget() {\n return this.objectRegistry.fetchType(this, \"getTargetOfType\", this.target);\n }\n getFreshType() {\n return this.objectRegistry.fetchType(this, \"getFreshTypeOfType\", this.freshType);\n }\n getRegularType() {\n return this.objectRegistry.fetchType(this, \"getRegularTypeOfType\", this.regularType);\n }\n getTypes() {\n // Only union, intersection, and template literal types have constituent\n // types; any other kind has none, so return undefined rather than sending\n // a request the server cannot satisfy.\n if (!(this.flags & (TypeFlags.UnionOrIntersection | TypeFlags.TemplateLiteral))) {\n return undefined;\n }\n return this.objectRegistry.fetchTypes(this, \"getTypesOfType\");\n }\n getTypeParameters() {\n return this.objectRegistry.fetchTypes(this, \"getTypeParametersOfType\", this.typeParameters);\n }\n getOuterTypeParameters() {\n return this.objectRegistry.fetchTypes(this, \"getOuterTypeParametersOfType\", this.outerTypeParameters);\n }\n getLocalTypeParameters() {\n return this.objectRegistry.fetchTypes(this, \"getLocalTypeParametersOfType\", this.localTypeParameters);\n }\n getAliasTypeArguments() {\n return this.objectRegistry.fetchTypes(this, \"getAliasTypeArgumentsOfType\", this.aliasTypeArguments);\n }\n getObjectType() {\n return this.objectRegistry.fetchType(this, \"getObjectTypeOfType\", this.objectType);\n }\n getIndexType() {\n return this.objectRegistry.fetchType(this, \"getIndexTypeOfType\", this.indexType);\n }\n getCheckType() {\n return this.objectRegistry.fetchType(this, \"getCheckTypeOfType\", this.checkType);\n }\n getExtendsType() {\n return this.objectRegistry.fetchType(this, \"getExtendsTypeOfType\", this.extendsType);\n }\n getBaseType() {\n return this.objectRegistry.fetchType(this, \"getBaseTypeOfType\", this.baseType);\n }\n getConstraint() {\n return this.objectRegistry.fetchType(this, \"getConstraintOfType\", this.substConstraint);\n }\n getTrueType() {\n const result = this.objectRegistry.fetchType(this, \"getTrueTypeOfConditionalType\", this.trueType);\n this.trueType = result.id;\n return result;\n }\n getFalseType() {\n const result = this.objectRegistry.fetchType(this, \"getFalseTypeOfConditionalType\", this.falseType);\n this.falseType = result.id;\n return result;\n }\n /**\n * Get the base types of this type. Returns `undefined` for any type that is\n * not a class or interface.\n */\n getBaseTypes() {\n if (!this.isClassOrInterface()) {\n return undefined;\n }\n return this.objectRegistry.fetchBaseTypes(this);\n }\n isClassOrInterface() {\n return isClassOrInterfaceType(this);\n }\n isUnionType() {\n return isUnionType(this);\n }\n isIntersectionType() {\n return isIntersectionType(this);\n }\n isObjectType() {\n return isObjectType(this);\n }\n isIntrinsicType() {\n return isIntrinsicType(this);\n }\n isErrorType() {\n return isErrorType(this);\n }\n isLiteralType() {\n return isLiteralType(this);\n }\n isStringLiteralType() {\n return isStringLiteralType(this);\n }\n isNumberLiteralType() {\n return isNumberLiteralType(this);\n }\n isBigIntLiteralType() {\n return isBigIntLiteralType(this);\n }\n isBooleanLiteralType() {\n return isBooleanLiteralType(this);\n }\n isTypeReference() {\n return isTypeReference(this);\n }\n isTupleType() {\n return isTupleType(this);\n }\n isIndexType() {\n return isIndexType(this);\n }\n isIndexedAccessType() {\n return isIndexedAccessType(this);\n }\n isConditionalType() {\n return isConditionalType(this);\n }\n isSubstitutionType() {\n return isSubstitutionType(this);\n }\n isTemplateLiteralType() {\n return isTemplateLiteralType(this);\n }\n isStringMappingType() {\n return isStringMappingType(this);\n }\n isTypeParameter() {\n return isTypeParameter(this);\n }\n}\nexport function isUnionType(type) {\n return (type.flags & TypeFlags.Union) !== 0;\n}\nexport function isIntersectionType(type) {\n return (type.flags & TypeFlags.Intersection) !== 0;\n}\nexport function isObjectType(type) {\n return (type.flags & TypeFlags.Object) !== 0;\n}\nexport function isClassOrInterfaceType(type) {\n return isObjectType(type) && (type.objectFlags & ObjectFlags.ClassOrInterface) !== 0;\n}\nexport function isIntrinsicType(type) {\n return (type.flags & TypeFlags.Intrinsic) !== 0;\n}\n/**\n * Whether this is the error type — the placeholder the checker produces when a\n * type cannot be determined (e.g. an unresolved reference). It is an intrinsic\n * type named `\"error\"` (this covers both the singleton error type and the\n * per-alias error types manufactured for unresolved type alias references).\n */\nexport function isErrorType(type) {\n return isIntrinsicType(type) && type.intrinsicName === \"error\";\n}\nexport function isLiteralType(type) {\n return (type.flags & TypeFlags.Literal) !== 0;\n}\nexport function isStringLiteralType(type) {\n return (type.flags & TypeFlags.StringLiteral) !== 0;\n}\nexport function isNumberLiteralType(type) {\n return (type.flags & TypeFlags.NumberLiteral) !== 0;\n}\nexport function isBigIntLiteralType(type) {\n return (type.flags & TypeFlags.BigIntLiteral) !== 0;\n}\nexport function isBooleanLiteralType(type) {\n return (type.flags & TypeFlags.BooleanLiteral) !== 0;\n}\nexport function isTypeReference(type) {\n return isObjectType(type) && (type.objectFlags & ObjectFlags.Reference) !== 0;\n}\nexport function isTupleType(type) {\n return isObjectType(type) && (type.objectFlags & ObjectFlags.Tuple) !== 0;\n}\nexport function isIndexType(type) {\n return (type.flags & TypeFlags.Index) !== 0;\n}\nexport function isIndexedAccessType(type) {\n return (type.flags & TypeFlags.IndexedAccess) !== 0;\n}\nexport function isConditionalType(type) {\n return (type.flags & TypeFlags.Conditional) !== 0;\n}\nexport function isSubstitutionType(type) {\n return (type.flags & TypeFlags.Substitution) !== 0;\n}\nexport function isTemplateLiteralType(type) {\n return (type.flags & TypeFlags.TemplateLiteral) !== 0;\n}\nexport function isStringMappingType(type) {\n return (type.flags & TypeFlags.StringMapping) !== 0;\n}\nexport function isTypeParameter(type) {\n return (type.flags & TypeFlags.TypeParameter) !== 0;\n}\nexport class Signature {\n flags;\n objectRegistry;\n id;\n declaration;\n typeParameters;\n parameters;\n thisParameter;\n target;\n constructor(data, project, objectRegistry) {\n this.id = data.id;\n this.flags = data.flags;\n this.objectRegistry = objectRegistry;\n this.declaration = data.declaration ? new NodeHandle(data.declaration, project) : undefined;\n this.typeParameters = data.typeParameters ?? [];\n this.parameters = data.parameters ?? [];\n this.thisParameter = data.thisParameter;\n this.target = data.target;\n }\n getTypeParameters() {\n return this.objectRegistry.fetchTypes(this, \"getTypeParametersOfSignature\", this.typeParameters);\n }\n getParameters() {\n return this.objectRegistry.fetchSymbols(this, \"getParametersOfSignature\", this.parameters);\n }\n getThisParameter() {\n return this.objectRegistry.fetchSymbol(this, \"getThisParameterOfSignature\", this.thisParameter);\n }\n getTarget() {\n return this.objectRegistry.fetchSignature(this, \"getTargetOfSignature\", this.target);\n }\n get hasRestParameter() {\n return (this.flags & SignatureFlags.HasRestParameter) !== 0;\n }\n get isConstruct() {\n return (this.flags & SignatureFlags.Construct) !== 0;\n }\n get isAbstract() {\n return (this.flags & SignatureFlags.Abstract) !== 0;\n }\n}\n//# sourceMappingURL=api.js.map"],"x_google_ignoreList":[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49],"mappings":"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"}