Logo Xantham

Xantham.TypeScript.Wire Namespace

Type/Module Description

AbstractKeyword

`AbstractKeyword`, a token type the schema names as an instantiation.

AccessExpression

The schema's `AccessExpression` alias, over 2 kinds.

AccessorDeclaration

The schema's `AccessorDeclaration` alias, over 2 kinds.

AccessorKeyword

`AccessorKeyword`, a token type the schema names as an instantiation.

Accessors

Typed child and data access, one module per node type. These are the `AstNode` accessors with the argument and the result typed, which is the whole difference: `AstNode.IfStatement.thenStatement` will read slot 1 of anything you hand it, and `IfStatement.thenStatement` will not compile unless you hand it one.

AnyImportSyntax

The schema's `AnyImportSyntax` alias, over 3 kinds.

AnyNode

A typed view over the binary AST: `Node<'Tag>` instead of a bare `int`. Three things are generated here, all from `ast.json`: - **Tags**, one per node type, per node alias and per token instantiation. A tag is an interface that nothing ever implements; it exists so that `Node` and `Node` are different types over the same two fields. Tag inheritance is kind-set inclusion, so `'Tag :> Expression` is the compile-time form of the runtime claim `AstKind.isExpression`. - **Accessors**, one module per node type, returning `Node<'Tag>` at the type the schema declares for the slot. Unlike `AstNode`, these cannot be pointed at the wrong kind of node, because the argument is typed. - **Views**, in `Patterns`, narrowing any node to a tag by testing its kind. They are `[]` partial active patterns rather than a union, so a match costs a kind read and a two-word copy and allocates nothing. Widening is `.ofNode`, one function per alias: F# rejects a constraint whose right-hand side is a type variable, so a single generic `widen` is not expressible. The tag every other tag inherits, and the type of a slot the schema does not narrow - a member declared as a bare `Node` or as an inline union. Narrow it with a view.

Api

One function per server method, each taking the channel and the method's parameter record. Naming follows the wire: `getSymbolAtPosition` is `Api.getSymbolAtPosition`. Results the schema permits to be null are `voption`; the rest raise if the server sends nothing, since a missing field on a request is otherwise indistinguishable from a legitimate empty answer.

ArrayBindingElement

The schema's `ArrayBindingElement` alias, over 2 kinds.

ArrayDestructuringAssignment

The schema's `ArrayDestructuringAssignment` alias, over 1 kind.

ArrayLiteralExpression

The node type `ArrayLiteralExpression`.

ArrayTypeNode

The node type `ArrayTypeNode`.

ArrowFunction

The node type `ArrowFunction`.

AsExpression

The node type `AsExpression`.

AssertionExpression

The schema's `AssertionExpression` alias, over 2 kinds.

AssertKeyword

`AssertKeyword`, a token type the schema names as an instantiation.

AssertsKeyword

`AssertsKeyword`, a token type the schema names as an instantiation.

AssignmentOperatorToken

`AssignmentOperatorToken`, a token type the schema names as an instantiation.

Ast

The version-5 binary AST returned by `getSourceFile`: one blob per file, from which every node is readable with no further round-trips. All integers here are **little-endian**, unlike the msgpack envelope that carried them.

AsteriskToken

`AsteriskToken`, a token type the schema names as an instantiation.

AstKind

AsyncApi

One function per server method, each taking the mailbox and the method's parameter record. The mirror of `Api` over `TscMailbox` rather than `TscChannel`: same names, same parameter and result types, each wrapped in `Async`. Calls that overlap in time are collected into a single round trip, so concurrency here is worth taking even though the channel underneath admits one request at a time. `batchRequests` has no counterpart: the mailbox is the batcher, and a batch nested inside one would return a result this layer cannot attribute to a caller.

AsyncKeyword

`AsyncKeyword`, a token type the schema names as an instantiation.

AsyncSessionExtensions

The mirror of `SessionExtensions` over `TscMailbox`: same names, same arguments, each result wrapped in `Async`. Calls that overlap in time are collected into a single round trip.

AsyncSessionlessExtensions

The snapshot-free half of `AsyncApi`. `batchRequests` is absent for the reason `AsyncApi` omits it: the mailbox is already the batcher.

AwaitExpression

The node type `AwaitExpression`.

AwaitKeyword

`AwaitKeyword`, a token type the schema names as an instantiation.

BigIntLiteral

The node type `BigIntLiteral`.

BinaryExpression

The node type `BinaryExpression`.

BinaryOperatorToken

`BinaryOperatorToken`, a token type the schema names as an instantiation.

BindingElement

The node type `BindingElement`.

BindingName

The schema's `BindingName` alias, over 3 kinds.

BindingPattern

The node type `BindingPattern`.

Block

The node type `Block`.

BlockOrExpression

The schema's `BlockOrExpression` alias, over 56 kinds.

BooleanLiteral

The schema's `BooleanLiteral` alias, over 2 kinds.

BreakOrContinueStatement

The schema's `BreakOrContinueStatement` alias, over 2 kinds.

BreakStatement

The node type `BreakStatement`.

CallExpression

The node type `CallExpression`.

CallLikeExpression

The schema's `CallLikeExpression` alias, over 7 kinds.

CallOrNewExpression

The schema's `CallOrNewExpression` alias, over 2 kinds.

CallSignatureDeclaration

The node type `CallSignatureDeclaration`.

CaseBlock

The node type `CaseBlock`.

CaseKeyword

`CaseKeyword`, a token type the schema names as an instantiation.

CaseOrDefaultClause

The node type `CaseOrDefaultClause`.

CatchClause

The node type `CatchClause`.

CheckFlags (Module)

Composite `CheckFlags` values, computed from the cases above rather than written out.

CheckFlags (Type)

`CheckFlags`, from `tsc/internal/ast/checkflags.go` upstream.

ClassDeclaration

The node type `ClassDeclaration`.

ClassElement

The schema's `ClassElement` alias, over 8 kinds.

ClassExpression

The node type `ClassExpression`.

ClassLikeDeclaration

The schema's `ClassLikeDeclaration` alias, over 2 kinds.

ClassStaticBlockDeclaration

The node type `ClassStaticBlockDeclaration`.

ColonToken

`ColonToken`, a token type the schema names as an instantiation.

CommentDirectiveType

`CommentDirectiveType`, from `unrecorded` upstream.

ComputedPropertyName

The node type `ComputedPropertyName`.

ConciseBody

The schema's `ConciseBody` alias, over 56 kinds.

ConditionalExpression

The node type `ConditionalExpression`.

ConditionalTypeNode

The node type `ConditionalTypeNode`.

ConstKeyword

`ConstKeyword`, a token type the schema names as an instantiation.

ConstructorDeclaration

The node type `ConstructorDeclaration`.

ConstructorTypeNode

The node type `ConstructorTypeNode`.

ConstructSignatureDeclaration

The node type `ConstructSignatureDeclaration`.

ContinueStatement

The node type `ContinueStatement`.

DebuggerStatement

The node type `DebuggerStatement`.

Declaration

The schema's `Declaration` alias, over 56 kinds.

DeclarationName

The schema's `DeclarationName` alias, over 10 kinds.

DeclareKeyword

`DeclareKeyword`, a token type the schema names as an instantiation.

Decorator

The node type `Decorator`.

DefaultKeyword

`DefaultKeyword`, a token type the schema names as an instantiation.

DeleteExpression

The node type `DeleteExpression`.

DestructuringAssignment

The schema's `DestructuringAssignment` alias, over 1 kind.

DiagnosticDirectivePolicy

`DiagnosticDirectivePolicy`, from `tsc/internal/ast/ast.go` upstream.

DocumentIdentifierConverter

`DocumentIdentifier` is `string | { uri: string }` on the wire - the schema's one structural union - so neither arm can be inferred from the F# union's shape.

DoStatement

The node type `DoStatement`.

DotDotDotToken

`DotDotDotToken`, a token type the schema names as an instantiation.

DotToken

`DotToken`, a token type the schema names as an instantiation.

ElementAccessExpression

The node type `ElementAccessExpression`.

ElementFlags (Module)

Composite `ElementFlags` values, computed from the cases above rather than written out.

ElementFlags (Type)

`ElementFlags`, from `tsc/internal/checker/types.go` upstream.

EmptyStatement

The node type `EmptyStatement`.

EndOfFile

`EndOfFile`, a token type the schema names as an instantiation.

EntityName

The schema's `EntityName` alias, over 2 kinds.

EnumDeclaration

The node type `EnumDeclaration`.

EnumMember

The node type `EnumMember`.

EqualsGreaterThanToken

`EqualsGreaterThanToken`, a token type the schema names as an instantiation.

EqualsToken

`EqualsToken`, a token type the schema names as an instantiation.

ExclamationToken

`ExclamationToken`, a token type the schema names as an instantiation.

ExportAssignment

The node type `ExportAssignment`.

ExportDeclaration

The node type `ExportDeclaration`.

ExportKeyword

`ExportKeyword`, a token type the schema names as an instantiation.

ExportSpecifier

The node type `ExportSpecifier`.

Expression

The schema's `Expression` alias, over 55 kinds.

ExpressionStatement

The node type `ExpressionStatement`.

ExpressionWithTypeArguments

The node type `ExpressionWithTypeArguments`.

ExternalModuleReference

The node type `ExternalModuleReference`.

FalseLiteral

`FalseLiteral`, a token type the schema names as an instantiation.

FileRead

What `readFile` found. The server distinguishes all three, and the distinction is the reason the reply is an object rather than a bare string: `Missing` stops resolution at this path, where `FallBack` sends it on to the real filesystem. Getting the two the wrong way round silently changes module resolution.

FileSystemEntries

The entries of one directory, as `getAccessibleEntries` answers them: names, not paths.

ForInitializer

The schema's `ForInitializer` alias, over 57 kinds.

ForInOrOfStatement

The node type `ForInOrOfStatement`.

ForStatement

The node type `ForStatement`.

FunctionBody

The schema's `FunctionBody` alias, over 1 kind.

FunctionDeclaration

The node type `FunctionDeclaration`.

FunctionExpression

The node type `FunctionExpression`.

FunctionLikeDeclaration

The schema's `FunctionLikeDeclaration` alias, over 7 kinds.

FunctionTypeNode

The node type `FunctionTypeNode`.

GetAccessorDeclaration

The node type `GetAccessorDeclaration`.

HeritageClause

The node type `HeritageClause`.

HeritageClauseElement

The schema's `HeritageClauseElement` alias, over 2 kinds.

Identifier

The node type `Identifier`.

IfStatement

The node type `IfStatement`.

ImportAttribute

The node type `ImportAttribute`.

ImportAttributeName

The schema's `ImportAttributeName` alias, over 2 kinds.

ImportAttributes

The node type `ImportAttributes`.

ImportClause

The node type `ImportClause`.

ImportClauseOrBindingPattern

The schema's `ImportClauseOrBindingPattern` alias, over 3 kinds.

ImportDeclaration

The node type `ImportDeclaration`.

ImportEqualsDeclaration

The node type `ImportEqualsDeclaration`.

ImportExpression

`ImportExpression`, a token type the schema names as an instantiation.

ImportSpecifier

The node type `ImportSpecifier`.

ImportTypeNode

The node type `ImportTypeNode`.

IncrementExpression

The schema's `IncrementExpression` alias, over 27 kinds.

IndexedAccessTypeNode

The node type `IndexedAccessTypeNode`.

IndexSignatureDeclaration

The node type `IndexSignatureDeclaration`.

InferTypeNode

The node type `InferTypeNode`.

InKeyword

`InKeyword`, a token type the schema names as an instantiation.

InterfaceDeclaration

The node type `InterfaceDeclaration`.

InternalSymbolName

`InternalSymbolName`, from `tsc/internal/ast/symbol.go` upstream.

IntersectionTypeNode

The node type `IntersectionTypeNode`.

JSDoc

The node type `JSDoc`.

JSDocAllType

The node type `JSDocAllType`.

JSDocAugmentsTag

The node type `JSDocAugmentsTag`.

JSDocCallbackTag

The node type `JSDocCallbackTag`.

JSDocComment

The schema's `JSDocComment` alias, over 4 kinds.

JSDocDeprecatedTag

The node type `JSDocDeprecatedTag`.

JSDocFullName

The schema's `JSDocFullName` alias, over 2 kinds.

JSDocImplementsTag

The node type `JSDocImplementsTag`.

JSDocImportTag

The node type `JSDocImportTag`.

JSDocLink

The node type `JSDocLink`.

JSDocLinkCode

The node type `JSDocLinkCode`.

JSDocLinkPlain

The node type `JSDocLinkPlain`.

JSDocNameReference

The node type `JSDocNameReference`.

JSDocNonNullableType

The node type `JSDocNonNullableType`.

JSDocNullableType

The node type `JSDocNullableType`.

JSDocOptionalType

The node type `JSDocOptionalType`.

JSDocOverloadTag

The node type `JSDocOverloadTag`.

JSDocOverrideTag

The node type `JSDocOverrideTag`.

JSDocParameterOrPropertyTag

The node type `JSDocParameterOrPropertyTag`.

JSDocPrivateTag

The node type `JSDocPrivateTag`.

JSDocProtectedTag

The node type `JSDocProtectedTag`.

JSDocPublicTag

The node type `JSDocPublicTag`.

JSDocReadonlyTag

The node type `JSDocReadonlyTag`.

JSDocReturnTag

The node type `JSDocReturnTag`.

JSDocSatisfiesTag

The node type `JSDocSatisfiesTag`.

JSDocSeeTag

The node type `JSDocSeeTag`.

JSDocSignature

The node type `JSDocSignature`.

JSDocTag

The schema's `JSDocTag` alias, over 22 kinds.

JSDocTemplateTag

The node type `JSDocTemplateTag`.

JSDocText

The node type `JSDocText`.

JSDocThisTag

The node type `JSDocThisTag`.

JSDocThrowsTag

The node type `JSDocThrowsTag`.

JSDocTypedefTag

The node type `JSDocTypedefTag`.

JSDocTypeExpression

The node type `JSDocTypeExpression`.

JSDocTypeLiteral

The node type `JSDocTypeLiteral`.

JSDocTypeTag

The node type `JSDocTypeTag`.

JSDocUnknownTag

The node type `JSDocUnknownTag`.

JSDocVariadicType

The node type `JSDocVariadicType`.

JsxAttribute

The node type `JsxAttribute`.

JsxAttributeLike

The schema's `JsxAttributeLike` alias, over 2 kinds.

JsxAttributeName

The schema's `JsxAttributeName` alias, over 2 kinds.

JsxAttributes

The node type `JsxAttributes`.

JsxAttributeValue

The schema's `JsxAttributeValue` alias, over 5 kinds.

JsxChild

The schema's `JsxChild` alias, over 5 kinds.

JsxClosingElement

The node type `JsxClosingElement`.

JsxClosingFragment

The node type `JsxClosingFragment`.

JsxElement

The node type `JsxElement`.

JsxExpression

The node type `JsxExpression`.

JsxFragment

The node type `JsxFragment`.

JsxNamespacedName

The node type `JsxNamespacedName`.

JsxOpeningElement

The node type `JsxOpeningElement`.

JsxOpeningFragment

The node type `JsxOpeningFragment`.

JsxOpeningLikeElement

The schema's `JsxOpeningLikeElement` alias, over 2 kinds.

JsxSelfClosingElement

The node type `JsxSelfClosingElement`.

JsxSpreadAttribute

The node type `JsxSpreadAttribute`.

JsxTagNameExpression

The schema's `JsxTagNameExpression` alias, over 4 kinds.

JsxText

The node type `JsxText`.

KeywordExpression

The node type `KeywordExpression`.

KeywordTypeNode

The node type `KeywordTypeNode`.

LabeledStatement

The node type `LabeledStatement`.

LanguageVariant

`LanguageVariant`, from `unrecorded` upstream.

LeftHandSideExpression

The schema's `LeftHandSideExpression` alias, over 25 kinds.

LiteralExpression

The schema's `LiteralExpression` alias, over 5 kinds.

LiteralLikeNode

The schema's `LiteralLikeNode` alias, over 8 kinds.

LiteralToken

The schema's `LiteralToken` alias, over 6 kinds.

LiteralTypeNode

The node type `LiteralTypeNode`.

MappedTypeNode

The node type `MappedTypeNode`.

Measures

Roles for the integers the decoder passes around. The blob is full of `int`s and `uint32`s that mean entirely different things - a node index, a string index, a byte offset into one section or another, a bitmap, a shift distance - and nothing but the parameter name distinguishes them. These measures make the wrong one a compile error, and erase completely, so the decoder pays nothing for them. The bitwise operators are not defined for measured integers: `mask &&& mask` does not compile, let alone `field &&& mask`. That is the point rather than an obstacle - it forces the operations to be spelled out here, with the roles in the signature, so a mask cannot be used where a shift belongs and masking cannot silently change what a value is.

MemberName

The schema's `MemberName` alias, over 2 kinds.

MetaProperty

The node type `MetaProperty`.

MethodDeclaration

The node type `MethodDeclaration`.

MethodSignatureDeclaration

The node type `MethodSignatureDeclaration`.

MinusToken

`MinusToken`, a token type the schema names as an instantiation.

MissingDeclaration

The node type `MissingDeclaration`.

Modifier

The schema's `Modifier` alias, over 15 kinds.

ModifierFlags (Module)

Composite `ModifierFlags` values, computed from the cases above rather than written out.

ModifierFlags (Type)

`ModifierFlags`, from `tsc/internal/ast/modifierflags.go` upstream.

ModifierLike

The schema's `ModifierLike` alias, over 16 kinds.

ModuleBlock

The node type `ModuleBlock`.

ModuleBody

The schema's `ModuleBody` alias, over 2 kinds.

ModuleDeclaration

The node type `ModuleDeclaration`.

ModuleExportName

The schema's `ModuleExportName` alias, over 2 kinds.

ModuleName

The schema's `ModuleName` alias, over 2 kinds.

ModuleReference

The schema's `ModuleReference` alias, over 3 kinds.

NamedExportBindings

The schema's `NamedExportBindings` alias, over 2 kinds.

NamedExports

The node type `NamedExports`.

NamedImportBindings

The schema's `NamedImportBindings` alias, over 2 kinds.

NamedImports

The node type `NamedImports`.

NamedImportsOrExports

The schema's `NamedImportsOrExports` alias, over 2 kinds.

NamedTupleMember

The node type `NamedTupleMember`.

NamespaceExport

The node type `NamespaceExport`.

NamespaceExportDeclaration

The node type `NamespaceExportDeclaration`.

NamespaceImport

The node type `NamespaceImport`.

NewExpression

The node type `NewExpression`.

Node

The escape hatch, and the operations that hold for every node whatever its tag.

Node<'Tag>

A node in a decoded source file, tagged with what the schema says it is. A struct over the blob and an index, so it is the same two words a raw `int` walk carries plus the blob it was already holding. The tag is erased at runtime.

NodeBody

The schema's `NodeBody` alias, over 58 kinds.

NodeBuilderFlags (Module)

Composite `NodeBuilderFlags` values, computed from the cases above rather than written out.

NodeBuilderFlags (Type)

`NodeBuilderFlags`, from `tsc/internal/nodebuilder/types.go` upstream.

NodeFlags (Module)

Composite `NodeFlags` values, computed from the cases above rather than written out.

NodeFlags (Type)

`NodeFlags`, from `tsc/internal/ast/nodeflags.go` upstream.

NonNullExpression

The node type `NonNullExpression`.

NoSubstitutionTemplateLiteral

The node type `NoSubstitutionTemplateLiteral`.

NotEmittedStatement

The node type `NotEmittedStatement`.

NotEmittedTypeElement

The node type `NotEmittedTypeElement`.

NullLiteral

`NullLiteral`, a token type the schema names as an instantiation.

NumericLiteral

The node type `NumericLiteral`.

NumericOrStringLikeLiteral

The schema's `NumericOrStringLikeLiteral` alias, over 3 kinds.

ObjectDestructuringAssignment

The schema's `ObjectDestructuringAssignment` alias, over 1 kind.

ObjectFlags (Module)

Composite `ObjectFlags` values, computed from the cases above rather than written out.

ObjectFlags (Type)

`ObjectFlags`, from `tsc/internal/checker/types.go` upstream.

ObjectLiteralElement

The schema's `ObjectLiteralElement` alias, over 7 kinds.

ObjectLiteralElementLike

The schema's `ObjectLiteralElementLike` alias, over 6 kinds.

ObjectLiteralExpression

The node type `ObjectLiteralExpression`.

ObjectLiteralLikeNode

The schema's `ObjectLiteralLikeNode` alias, over 2 kinds.

ObjectTypeDeclaration

The schema's `ObjectTypeDeclaration` alias, over 4 kinds.

OmittedExpression

The node type `OmittedExpression`.

OptionalTypeNode

The node type `OptionalTypeNode`.

OutKeyword

`OutKeyword`, a token type the schema names as an instantiation.

OverrideKeyword

`OverrideKeyword`, a token type the schema names as an instantiation.

ParameterDeclaration

The node type `ParameterDeclaration`.

ParenthesizedExpression

The node type `ParenthesizedExpression`.

ParenthesizedTypeNode

The node type `ParenthesizedTypeNode`.

PartiallyEmittedExpression

The node type `PartiallyEmittedExpression`.

Patterns

Views: narrowing a node of any tag to a narrower one, by testing its kind. Not auto-opened, because a few hundred active patterns in scope by default would shadow more than they are worth. `open Xantham.TypeScript.Wire.Patterns` where you match. `[]` is what makes these free: a total union view would allocate a `Choice` per match, and these allocate nothing at all.

PlusToken

`PlusToken`, a token type the schema names as an instantiation.

PostfixUnaryExpression

The node type `PostfixUnaryExpression`.

PrefixUnaryExpression

The node type `PrefixUnaryExpression`.

PrivateIdentifier

The node type `PrivateIdentifier`.

PrivateKeyword

`PrivateKeyword`, a token type the schema names as an instantiation.

PropertyAccessExpression

The node type `PropertyAccessExpression`.

PropertyAssignment

The node type `PropertyAssignment`.

PropertyDeclaration

The node type `PropertyDeclaration`.

PropertyName

The schema's `PropertyName` alias, over 7 kinds.

PropertyNameLiteral

The schema's `PropertyNameLiteral` alias, over 3 kinds.

PropertySignatureDeclaration

The node type `PropertySignatureDeclaration`.

ProtectedKeyword

`ProtectedKeyword`, a token type the schema names as an instantiation.

Proto

The schema is not ordered by dependency - `UpdateSnapshotParams` refers to `APIFileChanges`, which is declared far below it - so the module is recursive rather than reordered here. Reordering would diverge from the schema and break the next diff.

ProtoEnums

Enums the wire schema refers to, transcribed from the compiler's own `dist/enums`. Aliases that repeat a value are kept as declared (`ScriptTarget.Latest` beside `ESNext`); F# permits duplicate enum cases, and dropping one would diverge from the compiler's own names.

ProtoJson

Serialisation for the generated wire types, and the typed request helpers built on it.

PseudoLiteralToken

The schema's `PseudoLiteralToken` alias, over 3 kinds.

PublicKeyword

`PublicKeyword`, a token type the schema names as an instantiation.

QualifiedName

The node type `QualifiedName`.

QuestionDotToken

`QuestionDotToken`, a token type the schema names as an instantiation.

QuestionToken

`QuestionToken`, a token type the schema names as an instantiation.

RawJsonConverter

For serialized/decode passthrough of bytes for batch requests without any DOM parsing.

ReadonlyKeyword

`ReadonlyKeyword`, a token type the schema names as an instantiation.

RegularExpressionLiteral

The node type `RegularExpressionLiteral`.

RestTypeNode

The node type `RestTypeNode`.

ReturnStatement

The node type `ReturnStatement`.

SatisfiesExpression

The node type `SatisfiesExpression`.

ScriptKind

`ScriptKind`, from `tsc/internal/core/scriptkind.go` upstream.

SemicolonClassElement

The node type `SemicolonClassElement`.

Session<'T>

A snapshot and a project, bound once. Of the wire's methods, most take `snapshot` and `project` as their first two arguments. They say which program is being asked, not what is being asked of it, and they do not vary across the calls a caller makes against one program - so `Session` holds them and the members below take only what is left. It is the same move `Node<'Tag>` makes for a source file and an index. The type parameter is the transport. `Session` answers synchronously and `Session` in `Async`; the member names and argument lists are identical, so the two differ only in what they return. Build one with `channel.Session(...)` or `mailbox.Session(...)`. Handles mean something only within the program that produced them, so a session is also the scope in which a symbol or type id is valid. A response that names a different project - `SymbolResponse.Project`, which the schema documents as the default for follow-up lookups - is followed with `ForSymbol`, not by passing a project argument.

SessionConstructors

Ways to get a session. The snapshot and project always come from a response that already pairs them, so the overloads below take those responses rather than leaving a caller to unpack the pair and risk crossing a snapshot with another snapshot's project.

SessionExtensions

`Api` as members of a session, with the snapshot and project it holds supplied on the caller's behalf: `session.getSymbolAtPosition(file, position)` rather than `channel.getSymbolAtPosition(snapshot, project, file, position)`. Fields the schema marks optional are `[]` optional arguments, so they arrive as the `voption` the record field already holds and pass straight through. F# requires optional arguments to come last, so where a required field follows an optional one the argument order is not the record's own; named arguments sidestep that, and are worth using regardless, since several methods take three or more arguments of the same type.

SessionlessApi<'T>

The methods that identify nothing - they open a snapshot rather than read one - reached through `session.Sessionless` so that they stay explorable without diluting the session's own surface with calls that ignore it.

SessionlessExtensions

The snapshot-free half of `Api`, reached through `session.Sessionless`.

SetAccessorDeclaration

The node type `SetAccessorDeclaration`.

ShorthandPropertyAssignment

The node type `ShorthandPropertyAssignment`.

SignatureDeclaration

The schema's `SignatureDeclaration` alias, over 13 kinds.

SignatureFlags (Module)

Composite `SignatureFlags` values, computed from the cases above rather than written out.

SignatureFlags (Type)

`SignatureFlags`, from `tsc/internal/checker/types.go` upstream.

SignatureKind

`SignatureKind`, from `tsc/internal/checker/types.go` upstream.

SourceFile

The node type `SourceFile`.

SourceFileRecord

Byte offsets into the `SourceFile` node's extended-data record. Unlike everything else here, this layout is not in `ast.json`. The record is written by a hand-written Go function and read by hand-written TypeScript, so the only statement of its shape is the format documentation in `encoder.go`, which the generator parses. Every field is a `uint32`; `Ast` in `Library.fs` is what gives them meaning.

SpanMapFeature

`SpanMapFeature`, from `tsc/internal/spanmap/spanmap.go` upstream.

SpanMapFidelity

`SpanMapFidelity`, from `tsc/internal/spanmap/spanmap.go` upstream.

SpanMapKind

`SpanMapKind`, from `tsc/internal/spanmap/spanmap.go` upstream.

SpreadAssignment

The node type `SpreadAssignment`.

SpreadElement

The node type `SpreadElement`.

Statement

The schema's `Statement` alias, over 35 kinds.

StaticKeyword

`StaticKeyword`, a token type the schema names as an instantiation.

StringLiteral

The node type `StringLiteral`.

StringLiteralLikeNode

The schema's `StringLiteralLikeNode` alias, over 2 kinds.

SuperExpression

`SuperExpression`, a token type the schema names as an instantiation.

SwitchStatement

The node type `SwitchStatement`.

SymbolFlags (Module)

Composite `SymbolFlags` values, computed from the cases above rather than written out.

SymbolFlags (Type)

`SymbolFlags`, from `tsc/internal/ast/symbolflags.go` upstream.

SyntaxKind

A node's kind, as encoded in the `kind` word of a binary AST blob. Values are positional in the schema, so they move whenever the compiler inserts a kind. They are not the values the JavaScript compiler API uses. The backing type is `uint32` so that the enum maps onto the blob's `kind` word without a conversion, and so that `Ast.KindNodeList` (`0xFFFFFFFF`) is representable.

SyntaxList

The node type `SyntaxList`.

SyntheticExpression

The node type `SyntheticExpression`.

SyntheticReferenceExpression

The node type `SyntheticReferenceExpression`.

TaggedTemplateExpression

The node type `TaggedTemplateExpression`.

TemplateExpression

The node type `TemplateExpression`.

TemplateHead

The node type `TemplateHead`.

TemplateLiteral

The schema's `TemplateLiteral` alias, over 2 kinds.

TemplateLiteralLikeNode

The schema's `TemplateLiteralLikeNode` alias, over 3 kinds.

TemplateLiteralToken

The schema's `TemplateLiteralToken` alias, over 4 kinds.

TemplateLiteralTypeNode

The node type `TemplateLiteralTypeNode`.

TemplateLiteralTypeSpan

The node type `TemplateLiteralTypeSpan`.

TemplateMiddle

The node type `TemplateMiddle`.

TemplateMiddleOrTail

The schema's `TemplateMiddleOrTail` alias, over 2 kinds.

TemplateSpan

The node type `TemplateSpan`.

TemplateTail

The node type `TemplateTail`.

ThisExpression

`ThisExpression`, a token type the schema names as an instantiation.

ThisTypeNode

The node type `ThisTypeNode`.

ThrowStatement

The node type `ThrowStatement`.

Token

The node type `Token`.

TokenFlags (Module)

Composite `TokenFlags` values, computed from the cases above rather than written out.

TokenFlags (Type)

`TokenFlags`, from `tsc/internal/ast/tokenflags.go` upstream.

TrueLiteral

`TrueLiteral`, a token type the schema names as an instantiation.

TryStatement

The node type `TryStatement`.

Tsc

TscChannel

SYNC TypeScript compiler speaking the sync MessagePack protocol over redirected stdio.

TscChannelExtensions

`Api` as members, so the channel is not threaded through every call: `channel.getSymbolAtPosition parameters` rather than `Api.getSymbolAtPosition channel`. Each method that takes a parameter record gets a second, inlined overload accepting that record's fields directly and building it on the caller's behalf. Fields the schema marks optional are `[]` optional arguments, so they arrive as the `voption` the record field already holds and pass straight through. F# requires optional arguments to come last, so where a required field follows an optional one the argument order is not the record's own. Named arguments sidestep that, and are worth using here regardless: several methods take four or more arguments of the same type.

TscMailbox

Asynchronous wrapper for the serial channel. Avoids the async-api overhead of the tsc encoding.

If there is a backlog of requests after the first, then the mailbox will batch them together.

TscMailboxExtensions

`AsyncApi` as members, so the mailbox is not threaded through every call: `mailbox.getSymbolAtPosition parameters` rather than `AsyncApi.getSymbolAtPosition mailbox`. Each method that takes a parameter record gets a second, inlined overload accepting that record's fields directly and building it on the caller's behalf. Fields the schema marks optional are `[]` optional arguments, so they arrive as the `voption` the record field already holds and pass straight through. F# requires optional arguments to come last, so where a required field follows an optional one the argument order is not the record's own. Named arguments sidestep that, and are worth using here regardless: several methods take four or more arguments of the same type.

TsGoCallback

A filesystem callback the server may invoke on us (`--callbacks=...`). The argument arrives **JSON-encoded** - a path is `"C:/..."` with the quotes - so it must be parsed, not used raw. The result is JSON too, and `null` is not the same as absent: an explicit null changes module resolution semantics.

TsGoError

A method call failed server-side. a bare message with no code, so there is nothing structured to match on.

TupleTypeNode

The node type `TupleTypeNode`.

TypeAliasDeclaration

The node type `TypeAliasDeclaration`.

TypeAssertion

The node type `TypeAssertion`.

TypeElement

The schema's `TypeElement` alias, over 8 kinds.

TypeFlags (Module)

Composite `TypeFlags` values, computed from the cases above rather than written out.

TypeFlags (Type)

`TypeFlags`, from `tsc/internal/checker/types.go` upstream.

TypeLiteralNode

The node type `TypeLiteralNode`.

TypeNode

The schema's `TypeNode` alias, over 45 kinds.

TypeOfExpression

The node type `TypeOfExpression`.

TypeOperatorNode

The node type `TypeOperatorNode`.

TypeParameterDeclaration

The node type `TypeParameterDeclaration`.

TypePredicateKind

`TypePredicateKind`, from `tsc/internal/checker/types.go` upstream.

TypePredicateNode

The node type `TypePredicateNode`.

TypePredicateParameterName

The schema's `TypePredicateParameterName` alias, over 2 kinds.

TypeQueryNode

The node type `TypeQueryNode`.

TypeReferenceNode

The node type `TypeReferenceNode`.

UnionOrIntersectionTypeNode

The schema's `UnionOrIntersectionTypeNode` alias, over 2 kinds.

UnionTypeNode

The node type `UnionTypeNode`.

ValueOptionConverter<'T>

`System.Text.Json` has no native understanding of `voption`, and the generated records use it for every field the schema marks optional. Reading is the easy half; the writing half matters more, because the server distinguishes an absent field from an explicit null - `ValueNone` must vanish from the payload rather than serialise as `null`. That omission is what the generated `JsonIgnoreCondition.WhenWritingDefault` attributes buy: `ValueNone` is the default value of the struct, so the property is skipped before this converter is ever asked to write it.

ValueOptionConverterFactory

VariableDeclaration

The node type `VariableDeclaration`.

VariableDeclarationList

The node type `VariableDeclarationList`.

VariableOrParameterDeclaration

The schema's `VariableOrParameterDeclaration` alias, over 2 kinds.

VariableOrPropertyDeclaration

The schema's `VariableOrPropertyDeclaration` alias, over 2 kinds.

VariableStatement

The node type `VariableStatement`.

VirtualFileSystem (Module)

VirtualFileSystem (Type)

The virtual filesystem the server delegates to when the process is started with --callbacks=, mirroring dist/api/fs.d.ts. Every member is optional, and one left unset is not registered at all, so the server never asks about it.

VoidExpression

The node type `VoidExpression`.

WhileStatement

The node type `WhileStatement`.

Widenings

Widening, one module per alias. Each is the identity at runtime; the point is that the constraint only admits tags the schema says belong to the alias.

WithStatement

The node type `WithStatement`.

Wtf8

The AST string table is WTF-8, not UTF-8: an unpaired UTF-16 surrogate is encoded as the three bytes `ED A0-BF 80-BF`, which strict UTF-8 rejects. `Encoding.UTF8.GetString` replaces those with U+FFFD, so identifiers and string literals carrying a lone surrogate come back silently corrupted. TypeScript permits them, so we decode them ourselves.

YieldExpression

The node type `YieldExpression`.

Type something to start searching.