import { PropertyKind, UpdateOperator, UnaryOperator, BinaryOperator, LogicalOperator, AssignmentOperator, FunctionType, ClassType, ImportOrExportKind, VariableDeclarationKind, } from '@oxc-project/types'; declare const NODE_TYPES: readonly [ '', 'Program', 'Identifier', 'LabelIdentifier', 'ThisExpression', 'ArrayExpression', 'Elision', 'ObjectExpression', 'ObjectProperty', 'TemplateLiteral', 'TaggedTemplateExpression', 'TemplateElement', 'ComputedMemberExpression', 'StaticMemberExpression', 'PrivateFieldExpression', 'CallExpression', 'NewExpression', 'ImportMeta', 'NewTarget', 'SpreadElement', 'UpdateExpression', 'UnaryExpression', 'BinaryExpression', 'PrivateInExpression', 'LogicalExpression', 'ConditionalExpression', 'AssignmentExpression', 'ArrayAssignmentTarget', 'ObjectAssignmentTarget', 'AssignmentTargetRest', 'AssignmentTargetWithDefault', 'AssignmentTargetPropertyIdentifier', 'AssignmentTargetPropertyProperty', 'SequenceExpression', 'Super', 'AwaitExpression', 'ChainExpression', 'ParenthesizedExpression', 'Directive', 'Hashbang', 'BlockStatement', 'VariableDeclaration', 'VariableDeclarator', 'EmptyStatement', 'ExpressionStatement', 'IfStatement', 'DoWhileStatement', 'WhileStatement', 'ForStatement', 'ForInStatement', 'ForOfStatement', 'ContinueStatement', 'BreakStatement', 'ReturnStatement', 'WithStatement', 'SwitchStatement', 'SwitchCase', 'LabeledStatement', 'ThrowStatement', 'TryStatement', 'CatchClause', 'CatchParameter', 'DebuggerStatement', 'AssignmentPattern', 'ObjectPattern', 'BindingProperty', 'ArrayPattern', 'BindingRestElement', 'Function', 'FormalParameters', 'FormalParameter', 'FormalParameterRest', 'FunctionBody', 'ArrowFunctionExpression', 'YieldExpression', 'Class', 'ClassBody', 'MethodDefinition', 'PropertyDefinition', 'PrivateIdentifier', 'StaticBlock', 'AccessorProperty', 'ImportExpression', 'ImportDeclaration', 'ImportSpecifier', 'ImportDefaultSpecifier', 'ImportNamespaceSpecifier', 'WithClause', 'ImportAttribute', 'ExportNamedDeclaration', 'ExportDefaultDeclaration', 'ExportAllDeclaration', 'ExportSpecifier', 'V8IntrinsicExpression', 'BooleanLiteral', 'NullLiteral', 'NumericLiteral', 'StringLiteral', 'BigIntLiteral', 'RegExpLiteral', 'JSXElement', 'JSXOpeningElement', 'JSXClosingElement', 'JSXFragment', 'JSXOpeningFragment', 'JSXClosingFragment', 'JSXNamespacedName', 'JSXMemberExpression', 'JSXExpressionContainer', 'JSXEmptyExpression', 'JSXAttribute', 'JSXSpreadAttribute', 'JSXIdentifier', 'JSXSpreadChild', 'JSXText', 'TSThisParameter', 'TSEnumDeclaration', 'TSEnumBody', 'TSEnumMember', 'TSTypeAnnotation', 'TSLiteralType', 'TSConditionalType', 'TSUnionType', 'TSIntersectionType', 'TSParenthesizedType', 'TSTypeOperator', 'TSArrayType', 'TSIndexedAccessType', 'TSTupleType', 'TSNamedTupleMember', 'TSOptionalType', 'TSRestType', 'TSAnyKeyword', 'TSStringKeyword', 'TSBooleanKeyword', 'TSNumberKeyword', 'TSNeverKeyword', 'TSIntrinsicKeyword', 'TSUnknownKeyword', 'TSNullKeyword', 'TSUndefinedKeyword', 'TSVoidKeyword', 'TSSymbolKeyword', 'TSThisType', 'TSObjectKeyword', 'TSBigIntKeyword', 'TSTypeReference', 'TSQualifiedName', 'TSTypeParameterInstantiation', 'TSTypeParameter', 'TSTypeParameterDeclaration', 'TSTypeAliasDeclaration', 'TSClassImplements', 'TSInterfaceDeclaration', 'TSInterfaceBody', 'TSPropertySignature', 'TSIndexSignature', 'TSCallSignatureDeclaration', 'TSMethodSignature', 'TSConstructSignatureDeclaration', 'TSIndexSignatureName', 'TSInterfaceHeritage', 'TSTypePredicate', 'TSModuleDeclaration', 'TSGlobalDeclaration', 'TSModuleBlock', 'TSTypeLiteral', 'TSInferType', 'TSTypeQuery', 'TSImportType', 'TSImportTypeQualifiedName', 'TSFunctionType', 'TSConstructorType', 'TSMappedType', 'TSTemplateLiteralType', 'TSAsExpression', 'TSSatisfiesExpression', 'TSTypeAssertion', 'TSImportEqualsDeclaration', 'TSExternalModuleReference', 'TSNonNullExpression', 'Decorator', 'TSExportAssignment', 'TSNamespaceExportDeclaration', 'TSInstantiationExpression', 'JSDocNullableType', 'JSDocNonNullableType', 'JSDocUnknownType', ]; type NativeNodeType = Exclude<(typeof NODE_TYPES)[number], ''>; declare const FIELD_KEYS: readonly [ '', 'name', 'declaredName', 'global', 'read', 'write', 'memberWrite', 'bindingScopeId', 'binding', 'value', 'constantKind', 'constantValue', 'optional', 'argumentCount', 'calleeName', 'calleePath', 'calleeGlobal', 'staticArgument', 'computed', 'property', 'rootName', 'rootGlobal', 'async', 'generator', 'bodyStart', 'bodyEnd', 'expression', 'source', 'importKind', 'specifierCount', 'imported', 'local', 'exportKind', 'exported', 'kind', 'declarationCount', 'hasInitializer', 'meta', 'key', 'method', 'shorthand', 'operator', 'prefix', 'parameterCount', 'delegate', 'nodeKind', 'memberPath', 'bindingName', 'targetName', 'declarationNameAnchor', 'declarationNamePrefix', 'pattern', 'flags', ]; type NativeFieldKey = Exclude<(typeof FIELD_KEYS)[number], ''>; /** Concrete expansions of alias routes as literal unions. Concrete routes expand * to themselves and are resolved structurally by consumers. */ interface NativeRouteTypes { Function: 'Function' | 'ArrowFunctionExpression'; Statement: | 'BlockStatement' | 'VariableDeclaration' | 'EmptyStatement' | 'ExpressionStatement' | 'IfStatement' | 'DoWhileStatement' | 'WhileStatement' | 'ForStatement' | 'ForInStatement' | 'ForOfStatement' | 'ContinueStatement' | 'BreakStatement' | 'ReturnStatement' | 'WithStatement' | 'SwitchStatement' | 'LabeledStatement' | 'ThrowStatement' | 'TryStatement' | 'DebuggerStatement' | 'Function' | 'Class' | 'ImportDeclaration' | 'ExportNamedDeclaration' | 'ExportDefaultDeclaration' | 'ExportAllDeclaration' | 'TSEnumDeclaration' | 'TSTypeParameterDeclaration' | 'TSTypeAliasDeclaration' | 'TSInterfaceDeclaration' | 'TSCallSignatureDeclaration' | 'TSConstructSignatureDeclaration' | 'TSModuleDeclaration' | 'TSGlobalDeclaration' | 'TSImportEqualsDeclaration' | 'TSNamespaceExportDeclaration'; Declaration: | 'VariableDeclaration' | 'Function' | 'Class' | 'ImportDeclaration' | 'ExportNamedDeclaration' | 'ExportDefaultDeclaration' | 'ExportAllDeclaration' | 'TSEnumDeclaration' | 'TSTypeParameterDeclaration' | 'TSTypeAliasDeclaration' | 'TSInterfaceDeclaration' | 'TSCallSignatureDeclaration' | 'TSConstructSignatureDeclaration' | 'TSModuleDeclaration' | 'TSGlobalDeclaration' | 'TSImportEqualsDeclaration' | 'TSNamespaceExportDeclaration'; Expression: | 'Identifier' | 'ThisExpression' | 'ArrayExpression' | 'ObjectExpression' | 'TemplateLiteral' | 'TaggedTemplateExpression' | 'ComputedMemberExpression' | 'StaticMemberExpression' | 'PrivateFieldExpression' | 'CallExpression' | 'NewExpression' | 'ImportMeta' | 'NewTarget' | 'UpdateExpression' | 'UnaryExpression' | 'BinaryExpression' | 'PrivateInExpression' | 'LogicalExpression' | 'ConditionalExpression' | 'AssignmentExpression' | 'SequenceExpression' | 'AwaitExpression' | 'ChainExpression' | 'ParenthesizedExpression' | 'Function' | 'ArrowFunctionExpression' | 'YieldExpression' | 'Class' | 'ImportExpression' | 'V8IntrinsicExpression' | 'BooleanLiteral' | 'NullLiteral' | 'NumericLiteral' | 'StringLiteral' | 'BigIntLiteral' | 'RegExpLiteral' | 'JSXElement' | 'JSXFragment' | 'JSXMemberExpression' | 'JSXEmptyExpression' | 'TSAsExpression' | 'TSSatisfiesExpression' | 'TSNonNullExpression' | 'TSInstantiationExpression'; MemberExpression: 'ComputedMemberExpression' | 'StaticMemberExpression' | 'PrivateFieldExpression'; MetaProperty: 'ImportMeta' | 'NewTarget'; ReferencedIdentifier: 'Identifier'; FunctionDeclaration: 'Function'; FunctionExpression: 'Function'; TSDeclareFunction: 'Function'; ClassDeclaration: 'Class'; ClassExpression: 'Class'; '*': NativeNodeType; } /** Wire field value types per concrete node type. */ interface NativeNodeFields { Identifier: { readonly name: string; readonly global?: boolean; readonly read?: boolean; readonly write?: boolean; readonly memberWrite?: boolean; readonly bindingScopeId?: number; readonly binding?: boolean; }; StringLiteral: { readonly value: string; readonly constantKind?: 'null' | 'boolean' | 'number' | 'string'; readonly constantValue?: string | number | boolean | null; }; RegExpLiteral: { readonly pattern: string; readonly flags: string; }; NumericLiteral: { readonly value: number; readonly constantKind?: 'null' | 'boolean' | 'number' | 'string'; readonly constantValue?: string | number | boolean | null; }; BooleanLiteral: { readonly value: boolean; readonly constantKind?: 'null' | 'boolean' | 'number' | 'string'; readonly constantValue?: string | number | boolean | null; }; NullLiteral: { readonly constantKind?: 'null' | 'boolean' | 'number' | 'string'; readonly constantValue?: string | number | boolean | null; }; ObjectProperty: { readonly kind: PropertyKind; readonly computed: boolean; readonly method: boolean; readonly shorthand: boolean; readonly key?: string; }; BindingProperty: { readonly computed: boolean; readonly shorthand: boolean; readonly key?: string; }; UpdateExpression: { readonly operator: UpdateOperator; readonly prefix: boolean; }; UnaryExpression: { readonly operator: UnaryOperator; readonly prefix: true; readonly constantKind?: 'null' | 'boolean' | 'number' | 'string'; readonly constantValue?: string | number | boolean | null; }; BinaryExpression: { readonly operator: BinaryOperator; readonly constantKind?: 'null' | 'boolean' | 'number' | 'string'; readonly constantValue?: string | number | boolean | null; }; LogicalExpression: { readonly operator: LogicalOperator; readonly constantKind?: 'null' | 'boolean' | 'number' | 'string'; readonly constantValue?: string | number | boolean | null; }; ConditionalExpression: { readonly constantKind?: 'null' | 'boolean' | 'number' | 'string'; readonly constantValue?: string | number | boolean | null; }; ParenthesizedExpression: { readonly constantKind?: 'null' | 'boolean' | 'number' | 'string'; readonly constantValue?: string | number | boolean | null; }; SequenceExpression: { readonly constantKind?: 'null' | 'boolean' | 'number' | 'string'; readonly constantValue?: string | number | boolean | null; }; AssignmentExpression: { readonly operator: AssignmentOperator; readonly targetName?: string; }; CallExpression: { readonly optional: boolean; readonly argumentCount: number; readonly calleeName?: string; readonly calleePath?: string; readonly calleeGlobal?: boolean; readonly staticArgument?: string; }; NewExpression: { readonly argumentCount: number; readonly calleeName?: string; readonly staticArgument?: string; }; ImportExpression: { readonly staticArgument?: string; }; StaticMemberExpression: { readonly computed: false; readonly property: string; readonly memberPath?: string; readonly rootName?: string; readonly rootGlobal?: boolean; readonly write: boolean; }; ComputedMemberExpression: { readonly computed: true; readonly property?: string; readonly memberPath?: string; readonly write: boolean; }; PrivateFieldExpression: { readonly write: boolean; }; Function: { readonly nodeKind: FunctionType; readonly async: boolean; readonly generator: boolean; readonly parameterCount: number; readonly name?: string; readonly bodyStart?: number; readonly bodyEnd?: number; readonly declarationNameAnchor?: number; readonly declarationNamePrefix?: boolean; }; ArrowFunctionExpression: { readonly async: boolean; readonly expression: boolean; readonly parameterCount: number; readonly bodyStart: number; readonly bodyEnd: number; }; Class: { readonly nodeKind: ClassType; readonly name?: string; readonly declarationNameAnchor?: number; readonly declarationNamePrefix?: boolean; }; ImportDeclaration: { readonly source: string; readonly importKind: ImportOrExportKind; readonly specifierCount: number; }; ImportSpecifier: { readonly imported: string; readonly local: string; readonly importKind: ImportOrExportKind; }; ImportDefaultSpecifier: { readonly imported: 'default'; readonly local: string; }; ImportNamespaceSpecifier: { readonly imported: '*'; readonly local: string; }; ExportNamedDeclaration: { readonly source?: string; readonly exportKind: ImportOrExportKind; readonly specifierCount: number; }; ExportDefaultDeclaration: { readonly declaredName?: string; }; ExportAllDeclaration: { readonly source: string; readonly exported?: string; readonly exportKind: ImportOrExportKind; }; ExportSpecifier: { readonly local: string; readonly exported: string; readonly exportKind: ImportOrExportKind; }; VariableDeclaration: { readonly kind: VariableDeclarationKind; readonly declarationCount: number; }; VariableDeclarator: { readonly kind: VariableDeclarationKind; readonly hasInitializer: boolean; readonly bindingName?: string; }; Directive: { readonly value: string; }; YieldExpression: { readonly delegate: boolean; }; ImportMeta: { readonly meta: 'import'; readonly property: 'meta'; }; NewTarget: { readonly meta: 'new'; readonly property: 'target'; }; } /** Wire field value types for routes that diverge from their concrete carrier: * alias routes with union semantics across their expansion and implicit-predicate * specializations. Concrete routes resolve through NativeNodeFields. */ interface NativeRouteFields { Function: { readonly nodeKind?: FunctionType; readonly async: boolean; readonly generator?: boolean; readonly parameterCount: number; readonly name?: string; readonly bodyStart?: number; readonly bodyEnd?: number; readonly declarationNameAnchor?: number; readonly declarationNamePrefix?: boolean; readonly expression?: boolean; }; Statement: { readonly kind?: VariableDeclarationKind; readonly declarationCount?: number; readonly nodeKind?: FunctionType | ClassType; readonly async?: boolean; readonly generator?: boolean; readonly parameterCount?: number; readonly name?: string; readonly bodyStart?: number; readonly bodyEnd?: number; readonly declarationNameAnchor?: number; readonly declarationNamePrefix?: boolean; readonly source?: string; readonly importKind?: ImportOrExportKind; readonly specifierCount?: number; readonly exportKind?: ImportOrExportKind; readonly declaredName?: string; readonly exported?: string; }; Declaration: { readonly kind?: VariableDeclarationKind; readonly declarationCount?: number; readonly nodeKind?: FunctionType | ClassType; readonly async?: boolean; readonly generator?: boolean; readonly parameterCount?: number; readonly name?: string; readonly bodyStart?: number; readonly bodyEnd?: number; readonly declarationNameAnchor?: number; readonly declarationNamePrefix?: boolean; readonly source?: string; readonly importKind?: ImportOrExportKind; readonly specifierCount?: number; readonly exportKind?: ImportOrExportKind; readonly declaredName?: string; readonly exported?: string; }; Expression: { readonly name?: string; readonly global?: boolean; readonly read?: boolean; readonly write?: boolean; readonly memberWrite?: boolean; readonly bindingScopeId?: number; readonly binding?: boolean; readonly computed?: true | false; readonly property?: string | 'meta' | 'target'; readonly memberPath?: string; readonly rootName?: string; readonly rootGlobal?: boolean; readonly optional?: boolean; readonly argumentCount?: number; readonly calleeName?: string; readonly calleePath?: string; readonly calleeGlobal?: boolean; readonly staticArgument?: string; readonly meta?: 'import' | 'new'; readonly operator?: UpdateOperator | UnaryOperator | BinaryOperator | LogicalOperator | AssignmentOperator; readonly prefix?: boolean | true; readonly constantKind?: 'null' | 'boolean' | 'number' | 'string'; readonly constantValue?: string | number | boolean | null; readonly targetName?: string; readonly nodeKind?: FunctionType | ClassType; readonly async?: boolean; readonly generator?: boolean; readonly parameterCount?: number; readonly bodyStart?: number; readonly bodyEnd?: number; readonly declarationNameAnchor?: number; readonly declarationNamePrefix?: boolean; readonly expression?: boolean; readonly delegate?: boolean; readonly value?: boolean | number | string; readonly pattern?: string; readonly flags?: string; }; MemberExpression: { readonly computed?: true | false; readonly property?: string; readonly memberPath?: string; readonly write: boolean; readonly rootName?: string; readonly rootGlobal?: boolean; }; MetaProperty: { readonly meta: 'import' | 'new'; readonly property: 'meta' | 'target'; }; ReferencedIdentifier: { readonly name: string; readonly global: boolean; readonly read?: boolean; readonly write?: boolean; readonly memberWrite: boolean; readonly bindingScopeId?: number; }; FunctionDeclaration: { readonly nodeKind: 'FunctionDeclaration'; readonly async: boolean; readonly generator: boolean; readonly parameterCount: number; readonly name?: string; readonly bodyStart?: number; readonly bodyEnd?: number; readonly declarationNameAnchor?: number; readonly declarationNamePrefix?: boolean; }; FunctionExpression: { readonly nodeKind: 'FunctionExpression'; readonly async: boolean; readonly generator: boolean; readonly parameterCount: number; readonly name?: string; readonly bodyStart?: number; readonly bodyEnd?: number; readonly declarationNameAnchor?: number; readonly declarationNamePrefix?: boolean; }; TSDeclareFunction: { readonly nodeKind: 'TSDeclareFunction'; readonly async: boolean; readonly generator: boolean; readonly parameterCount: number; readonly name?: string; readonly bodyStart?: number; readonly bodyEnd?: number; readonly declarationNameAnchor?: number; readonly declarationNamePrefix?: boolean; }; ClassDeclaration: { readonly nodeKind: 'ClassDeclaration'; readonly name?: string; readonly declarationNameAnchor?: number; readonly declarationNamePrefix?: boolean; }; ClassExpression: { readonly nodeKind: 'ClassExpression'; readonly name?: string; readonly declarationNameAnchor?: number; readonly declarationNamePrefix?: boolean; }; '*': { readonly name?: string; readonly global?: boolean; readonly read?: boolean; readonly write?: boolean; readonly memberWrite?: boolean; readonly bindingScopeId?: number; readonly binding?: boolean; readonly kind?: PropertyKind | VariableDeclarationKind; readonly computed?: boolean | true | false; readonly method?: boolean; readonly shorthand?: boolean; readonly key?: string; readonly property?: string | 'meta' | 'target'; readonly memberPath?: string; readonly rootName?: string; readonly rootGlobal?: boolean; readonly optional?: boolean; readonly argumentCount?: number; readonly calleeName?: string; readonly calleePath?: string; readonly calleeGlobal?: boolean; readonly staticArgument?: string; readonly meta?: 'import' | 'new'; readonly operator?: UpdateOperator | UnaryOperator | BinaryOperator | LogicalOperator | AssignmentOperator; readonly prefix?: boolean | true; readonly constantKind?: 'null' | 'boolean' | 'number' | 'string'; readonly constantValue?: string | number | boolean | null; readonly targetName?: string; readonly value?: string | boolean | number; readonly declarationCount?: number; readonly hasInitializer?: boolean; readonly bindingName?: string; readonly nodeKind?: FunctionType | ClassType; readonly async?: boolean; readonly generator?: boolean; readonly parameterCount?: number; readonly bodyStart?: number; readonly bodyEnd?: number; readonly declarationNameAnchor?: number; readonly declarationNamePrefix?: boolean; readonly expression?: boolean; readonly delegate?: boolean; readonly source?: string; readonly importKind?: ImportOrExportKind; readonly specifierCount?: number; readonly imported?: string | 'default' | '*'; readonly local?: string; readonly exportKind?: ImportOrExportKind; readonly declaredName?: string; readonly exported?: string; readonly pattern?: string; readonly flags?: string; }; } /** Native predicate fields for routes that diverge from their concrete carrier, * with runtime intersection semantics: a predicate must be valid for every * concrete type in the route's expansion. Concrete routes resolve through * NativeNodeFields with optionality stripped (their predicate fields and field * types coincide by schema validation). */ interface NativeRoutePredicates { Function: { readonly async: boolean; readonly parameterCount: number; readonly bodyStart: number; readonly bodyEnd: number; }; MemberExpression: { readonly write: boolean; }; MetaProperty: { readonly meta: 'import' | 'new'; readonly property: 'meta' | 'target'; }; ReferencedIdentifier: { readonly name: string; readonly global: boolean; readonly read: boolean; readonly write: boolean; readonly memberWrite: boolean; readonly bindingScopeId: number; readonly binding: boolean; }; FunctionDeclaration: { readonly nodeKind: 'FunctionDeclaration'; readonly async: boolean; readonly generator: boolean; readonly parameterCount: number; readonly name: string; readonly bodyStart: number; readonly bodyEnd: number; readonly declarationNameAnchor: number; readonly declarationNamePrefix: boolean; }; FunctionExpression: { readonly nodeKind: 'FunctionExpression'; readonly async: boolean; readonly generator: boolean; readonly parameterCount: number; readonly name: string; readonly bodyStart: number; readonly bodyEnd: number; readonly declarationNameAnchor: number; readonly declarationNamePrefix: boolean; }; TSDeclareFunction: { readonly nodeKind: 'TSDeclareFunction'; readonly async: boolean; readonly generator: boolean; readonly parameterCount: number; readonly name: string; readonly bodyStart: number; readonly bodyEnd: number; readonly declarationNameAnchor: number; readonly declarationNamePrefix: boolean; }; ClassDeclaration: { readonly nodeKind: 'ClassDeclaration'; readonly name: string; readonly declarationNameAnchor: number; readonly declarationNamePrefix: boolean; }; ClassExpression: { readonly nodeKind: 'ClassExpression'; readonly name: string; readonly declarationNameAnchor: number; readonly declarationNamePrefix: boolean; }; } /** Statically declarable child roles per route (intersection across expansions). */ interface NativeChildRoles { Program: { readonly body: { readonly child: | 'BlockStatement' | 'VariableDeclaration' | 'EmptyStatement' | 'ExpressionStatement' | 'IfStatement' | 'DoWhileStatement' | 'WhileStatement' | 'ForStatement' | 'ForInStatement' | 'ForOfStatement' | 'ContinueStatement' | 'BreakStatement' | 'ReturnStatement' | 'WithStatement' | 'SwitchStatement' | 'LabeledStatement' | 'ThrowStatement' | 'TryStatement' | 'DebuggerStatement' | 'Function' | 'Class' | 'ImportDeclaration' | 'ExportNamedDeclaration' | 'ExportDefaultDeclaration' | 'ExportAllDeclaration' | 'TSEnumDeclaration' | 'TSTypeParameterDeclaration' | 'TSTypeAliasDeclaration' | 'TSInterfaceDeclaration' | 'TSCallSignatureDeclaration' | 'TSConstructSignatureDeclaration' | 'TSModuleDeclaration' | 'TSGlobalDeclaration' | 'TSImportEqualsDeclaration' | 'TSNamespaceExportDeclaration'; readonly list: true; }; readonly directives: { readonly child: 'Directive'; readonly list: true; }; }; BlockStatement: { readonly body: { readonly child: | 'BlockStatement' | 'VariableDeclaration' | 'EmptyStatement' | 'ExpressionStatement' | 'IfStatement' | 'DoWhileStatement' | 'WhileStatement' | 'ForStatement' | 'ForInStatement' | 'ForOfStatement' | 'ContinueStatement' | 'BreakStatement' | 'ReturnStatement' | 'WithStatement' | 'SwitchStatement' | 'LabeledStatement' | 'ThrowStatement' | 'TryStatement' | 'DebuggerStatement' | 'Function' | 'Class' | 'ImportDeclaration' | 'ExportNamedDeclaration' | 'ExportDefaultDeclaration' | 'ExportAllDeclaration' | 'TSEnumDeclaration' | 'TSTypeParameterDeclaration' | 'TSTypeAliasDeclaration' | 'TSInterfaceDeclaration' | 'TSCallSignatureDeclaration' | 'TSConstructSignatureDeclaration' | 'TSModuleDeclaration' | 'TSGlobalDeclaration' | 'TSImportEqualsDeclaration' | 'TSNamespaceExportDeclaration'; readonly list: true; }; }; FunctionBody: { readonly body: { readonly child: | 'BlockStatement' | 'VariableDeclaration' | 'EmptyStatement' | 'ExpressionStatement' | 'IfStatement' | 'DoWhileStatement' | 'WhileStatement' | 'ForStatement' | 'ForInStatement' | 'ForOfStatement' | 'ContinueStatement' | 'BreakStatement' | 'ReturnStatement' | 'WithStatement' | 'SwitchStatement' | 'LabeledStatement' | 'ThrowStatement' | 'TryStatement' | 'DebuggerStatement' | 'Function' | 'Class' | 'ImportDeclaration' | 'ExportNamedDeclaration' | 'ExportDefaultDeclaration' | 'ExportAllDeclaration' | 'TSEnumDeclaration' | 'TSTypeParameterDeclaration' | 'TSTypeAliasDeclaration' | 'TSInterfaceDeclaration' | 'TSCallSignatureDeclaration' | 'TSConstructSignatureDeclaration' | 'TSModuleDeclaration' | 'TSGlobalDeclaration' | 'TSImportEqualsDeclaration' | 'TSNamespaceExportDeclaration'; readonly list: true; }; readonly directives: { readonly child: 'Directive'; readonly list: true; }; }; ClassBody: { readonly body: { readonly child: | 'MethodDefinition' | 'PropertyDefinition' | 'AccessorProperty' | 'StaticBlock' | 'TSIndexSignature'; readonly list: true; }; }; TSModuleBlock: { readonly body: { readonly child: | 'BlockStatement' | 'VariableDeclaration' | 'EmptyStatement' | 'ExpressionStatement' | 'IfStatement' | 'DoWhileStatement' | 'WhileStatement' | 'ForStatement' | 'ForInStatement' | 'ForOfStatement' | 'ContinueStatement' | 'BreakStatement' | 'ReturnStatement' | 'WithStatement' | 'SwitchStatement' | 'LabeledStatement' | 'ThrowStatement' | 'TryStatement' | 'DebuggerStatement' | 'Function' | 'Class' | 'ImportDeclaration' | 'ExportNamedDeclaration' | 'ExportDefaultDeclaration' | 'ExportAllDeclaration' | 'TSEnumDeclaration' | 'TSTypeParameterDeclaration' | 'TSTypeAliasDeclaration' | 'TSInterfaceDeclaration' | 'TSCallSignatureDeclaration' | 'TSConstructSignatureDeclaration' | 'TSModuleDeclaration' | 'TSGlobalDeclaration' | 'TSImportEqualsDeclaration' | 'TSNamespaceExportDeclaration'; readonly list: true; }; }; TSModuleDeclaration: { readonly body: { readonly child: 'TSModuleBlock' | 'TSModuleDeclaration'; readonly list: false; }; }; Function: { readonly body: { readonly child: | 'FunctionBody' | 'Identifier' | 'ThisExpression' | 'ArrayExpression' | 'ObjectExpression' | 'TemplateLiteral' | 'TaggedTemplateExpression' | 'ComputedMemberExpression' | 'StaticMemberExpression' | 'PrivateFieldExpression' | 'CallExpression' | 'NewExpression' | 'ImportMeta' | 'NewTarget' | 'UpdateExpression' | 'UnaryExpression' | 'BinaryExpression' | 'PrivateInExpression' | 'LogicalExpression' | 'ConditionalExpression' | 'AssignmentExpression' | 'SequenceExpression' | 'AwaitExpression' | 'ChainExpression' | 'ParenthesizedExpression' | 'Function' | 'ArrowFunctionExpression' | 'YieldExpression' | 'Class' | 'ImportExpression' | 'V8IntrinsicExpression' | 'BooleanLiteral' | 'NullLiteral' | 'NumericLiteral' | 'StringLiteral' | 'BigIntLiteral' | 'RegExpLiteral' | 'JSXElement' | 'JSXFragment' | 'JSXMemberExpression' | 'JSXEmptyExpression' | 'TSAsExpression' | 'TSSatisfiesExpression' | 'TSNonNullExpression' | 'TSInstantiationExpression'; readonly list: false; }; readonly params: { readonly child: 'FormalParameter' | 'FormalParameterRest' | 'BindingRestElement'; readonly list: true; }; }; ArrowFunctionExpression: { readonly body: { readonly child: | 'FunctionBody' | 'Identifier' | 'ThisExpression' | 'ArrayExpression' | 'ObjectExpression' | 'TemplateLiteral' | 'TaggedTemplateExpression' | 'ComputedMemberExpression' | 'StaticMemberExpression' | 'PrivateFieldExpression' | 'CallExpression' | 'NewExpression' | 'ImportMeta' | 'NewTarget' | 'UpdateExpression' | 'UnaryExpression' | 'BinaryExpression' | 'PrivateInExpression' | 'LogicalExpression' | 'ConditionalExpression' | 'AssignmentExpression' | 'SequenceExpression' | 'AwaitExpression' | 'ChainExpression' | 'ParenthesizedExpression' | 'Function' | 'ArrowFunctionExpression' | 'YieldExpression' | 'Class' | 'ImportExpression' | 'V8IntrinsicExpression' | 'BooleanLiteral' | 'NullLiteral' | 'NumericLiteral' | 'StringLiteral' | 'BigIntLiteral' | 'RegExpLiteral' | 'JSXElement' | 'JSXFragment' | 'JSXMemberExpression' | 'JSXEmptyExpression' | 'TSAsExpression' | 'TSSatisfiesExpression' | 'TSNonNullExpression' | 'TSInstantiationExpression'; readonly list: false; }; readonly params: { readonly child: 'FormalParameter' | 'FormalParameterRest' | 'BindingRestElement'; readonly list: true; }; }; Class: { readonly body: { readonly child: 'ClassBody'; readonly list: false; }; readonly id: { readonly child: 'Identifier'; readonly list: false; }; readonly superClass: { readonly child: | 'Identifier' | 'ThisExpression' | 'ArrayExpression' | 'ObjectExpression' | 'TemplateLiteral' | 'TaggedTemplateExpression' | 'ComputedMemberExpression' | 'StaticMemberExpression' | 'PrivateFieldExpression' | 'CallExpression' | 'NewExpression' | 'ImportMeta' | 'NewTarget' | 'UpdateExpression' | 'UnaryExpression' | 'BinaryExpression' | 'PrivateInExpression' | 'LogicalExpression' | 'ConditionalExpression' | 'AssignmentExpression' | 'SequenceExpression' | 'AwaitExpression' | 'ChainExpression' | 'ParenthesizedExpression' | 'Function' | 'ArrowFunctionExpression' | 'YieldExpression' | 'Class' | 'ImportExpression' | 'V8IntrinsicExpression' | 'BooleanLiteral' | 'NullLiteral' | 'NumericLiteral' | 'StringLiteral' | 'BigIntLiteral' | 'RegExpLiteral' | 'JSXElement' | 'JSXFragment' | 'JSXMemberExpression' | 'JSXEmptyExpression' | 'TSAsExpression' | 'TSSatisfiesExpression' | 'TSNonNullExpression' | 'TSInstantiationExpression'; readonly list: false; }; readonly decorators: { readonly child: 'Decorator'; readonly list: true; }; }; WhileStatement: { readonly body: { readonly child: | 'BlockStatement' | 'VariableDeclaration' | 'EmptyStatement' | 'ExpressionStatement' | 'IfStatement' | 'DoWhileStatement' | 'WhileStatement' | 'ForStatement' | 'ForInStatement' | 'ForOfStatement' | 'ContinueStatement' | 'BreakStatement' | 'ReturnStatement' | 'WithStatement' | 'SwitchStatement' | 'LabeledStatement' | 'ThrowStatement' | 'TryStatement' | 'DebuggerStatement' | 'Function' | 'Class' | 'ImportDeclaration' | 'ExportNamedDeclaration' | 'ExportDefaultDeclaration' | 'ExportAllDeclaration' | 'TSEnumDeclaration' | 'TSTypeParameterDeclaration' | 'TSTypeAliasDeclaration' | 'TSInterfaceDeclaration' | 'TSCallSignatureDeclaration' | 'TSConstructSignatureDeclaration' | 'TSModuleDeclaration' | 'TSGlobalDeclaration' | 'TSImportEqualsDeclaration' | 'TSNamespaceExportDeclaration'; readonly list: false; }; readonly test: { readonly child: | 'Identifier' | 'ThisExpression' | 'ArrayExpression' | 'ObjectExpression' | 'TemplateLiteral' | 'TaggedTemplateExpression' | 'ComputedMemberExpression' | 'StaticMemberExpression' | 'PrivateFieldExpression' | 'CallExpression' | 'NewExpression' | 'ImportMeta' | 'NewTarget' | 'UpdateExpression' | 'UnaryExpression' | 'BinaryExpression' | 'PrivateInExpression' | 'LogicalExpression' | 'ConditionalExpression' | 'AssignmentExpression' | 'SequenceExpression' | 'AwaitExpression' | 'ChainExpression' | 'ParenthesizedExpression' | 'Function' | 'ArrowFunctionExpression' | 'YieldExpression' | 'Class' | 'ImportExpression' | 'V8IntrinsicExpression' | 'BooleanLiteral' | 'NullLiteral' | 'NumericLiteral' | 'StringLiteral' | 'BigIntLiteral' | 'RegExpLiteral' | 'JSXElement' | 'JSXFragment' | 'JSXMemberExpression' | 'JSXEmptyExpression' | 'TSAsExpression' | 'TSSatisfiesExpression' | 'TSNonNullExpression' | 'TSInstantiationExpression'; readonly list: false; }; }; DoWhileStatement: { readonly body: { readonly child: | 'BlockStatement' | 'VariableDeclaration' | 'EmptyStatement' | 'ExpressionStatement' | 'IfStatement' | 'DoWhileStatement' | 'WhileStatement' | 'ForStatement' | 'ForInStatement' | 'ForOfStatement' | 'ContinueStatement' | 'BreakStatement' | 'ReturnStatement' | 'WithStatement' | 'SwitchStatement' | 'LabeledStatement' | 'ThrowStatement' | 'TryStatement' | 'DebuggerStatement' | 'Function' | 'Class' | 'ImportDeclaration' | 'ExportNamedDeclaration' | 'ExportDefaultDeclaration' | 'ExportAllDeclaration' | 'TSEnumDeclaration' | 'TSTypeParameterDeclaration' | 'TSTypeAliasDeclaration' | 'TSInterfaceDeclaration' | 'TSCallSignatureDeclaration' | 'TSConstructSignatureDeclaration' | 'TSModuleDeclaration' | 'TSGlobalDeclaration' | 'TSImportEqualsDeclaration' | 'TSNamespaceExportDeclaration'; readonly list: false; }; readonly test: { readonly child: | 'Identifier' | 'ThisExpression' | 'ArrayExpression' | 'ObjectExpression' | 'TemplateLiteral' | 'TaggedTemplateExpression' | 'ComputedMemberExpression' | 'StaticMemberExpression' | 'PrivateFieldExpression' | 'CallExpression' | 'NewExpression' | 'ImportMeta' | 'NewTarget' | 'UpdateExpression' | 'UnaryExpression' | 'BinaryExpression' | 'PrivateInExpression' | 'LogicalExpression' | 'ConditionalExpression' | 'AssignmentExpression' | 'SequenceExpression' | 'AwaitExpression' | 'ChainExpression' | 'ParenthesizedExpression' | 'Function' | 'ArrowFunctionExpression' | 'YieldExpression' | 'Class' | 'ImportExpression' | 'V8IntrinsicExpression' | 'BooleanLiteral' | 'NullLiteral' | 'NumericLiteral' | 'StringLiteral' | 'BigIntLiteral' | 'RegExpLiteral' | 'JSXElement' | 'JSXFragment' | 'JSXMemberExpression' | 'JSXEmptyExpression' | 'TSAsExpression' | 'TSSatisfiesExpression' | 'TSNonNullExpression' | 'TSInstantiationExpression'; readonly list: false; }; }; ForStatement: { readonly body: { readonly child: | 'BlockStatement' | 'VariableDeclaration' | 'EmptyStatement' | 'ExpressionStatement' | 'IfStatement' | 'DoWhileStatement' | 'WhileStatement' | 'ForStatement' | 'ForInStatement' | 'ForOfStatement' | 'ContinueStatement' | 'BreakStatement' | 'ReturnStatement' | 'WithStatement' | 'SwitchStatement' | 'LabeledStatement' | 'ThrowStatement' | 'TryStatement' | 'DebuggerStatement' | 'Function' | 'Class' | 'ImportDeclaration' | 'ExportNamedDeclaration' | 'ExportDefaultDeclaration' | 'ExportAllDeclaration' | 'TSEnumDeclaration' | 'TSTypeParameterDeclaration' | 'TSTypeAliasDeclaration' | 'TSInterfaceDeclaration' | 'TSCallSignatureDeclaration' | 'TSConstructSignatureDeclaration' | 'TSModuleDeclaration' | 'TSGlobalDeclaration' | 'TSImportEqualsDeclaration' | 'TSNamespaceExportDeclaration'; readonly list: false; }; readonly test: { readonly child: | 'Identifier' | 'ThisExpression' | 'ArrayExpression' | 'ObjectExpression' | 'TemplateLiteral' | 'TaggedTemplateExpression' | 'ComputedMemberExpression' | 'StaticMemberExpression' | 'PrivateFieldExpression' | 'CallExpression' | 'NewExpression' | 'ImportMeta' | 'NewTarget' | 'UpdateExpression' | 'UnaryExpression' | 'BinaryExpression' | 'PrivateInExpression' | 'LogicalExpression' | 'ConditionalExpression' | 'AssignmentExpression' | 'SequenceExpression' | 'AwaitExpression' | 'ChainExpression' | 'ParenthesizedExpression' | 'Function' | 'ArrowFunctionExpression' | 'YieldExpression' | 'Class' | 'ImportExpression' | 'V8IntrinsicExpression' | 'BooleanLiteral' | 'NullLiteral' | 'NumericLiteral' | 'StringLiteral' | 'BigIntLiteral' | 'RegExpLiteral' | 'JSXElement' | 'JSXFragment' | 'JSXMemberExpression' | 'JSXEmptyExpression' | 'TSAsExpression' | 'TSSatisfiesExpression' | 'TSNonNullExpression' | 'TSInstantiationExpression'; readonly list: false; }; }; ForInStatement: { readonly body: { readonly child: | 'BlockStatement' | 'VariableDeclaration' | 'EmptyStatement' | 'ExpressionStatement' | 'IfStatement' | 'DoWhileStatement' | 'WhileStatement' | 'ForStatement' | 'ForInStatement' | 'ForOfStatement' | 'ContinueStatement' | 'BreakStatement' | 'ReturnStatement' | 'WithStatement' | 'SwitchStatement' | 'LabeledStatement' | 'ThrowStatement' | 'TryStatement' | 'DebuggerStatement' | 'Function' | 'Class' | 'ImportDeclaration' | 'ExportNamedDeclaration' | 'ExportDefaultDeclaration' | 'ExportAllDeclaration' | 'TSEnumDeclaration' | 'TSTypeParameterDeclaration' | 'TSTypeAliasDeclaration' | 'TSInterfaceDeclaration' | 'TSCallSignatureDeclaration' | 'TSConstructSignatureDeclaration' | 'TSModuleDeclaration' | 'TSGlobalDeclaration' | 'TSImportEqualsDeclaration' | 'TSNamespaceExportDeclaration'; readonly list: false; }; }; ForOfStatement: { readonly body: { readonly child: | 'BlockStatement' | 'VariableDeclaration' | 'EmptyStatement' | 'ExpressionStatement' | 'IfStatement' | 'DoWhileStatement' | 'WhileStatement' | 'ForStatement' | 'ForInStatement' | 'ForOfStatement' | 'ContinueStatement' | 'BreakStatement' | 'ReturnStatement' | 'WithStatement' | 'SwitchStatement' | 'LabeledStatement' | 'ThrowStatement' | 'TryStatement' | 'DebuggerStatement' | 'Function' | 'Class' | 'ImportDeclaration' | 'ExportNamedDeclaration' | 'ExportDefaultDeclaration' | 'ExportAllDeclaration' | 'TSEnumDeclaration' | 'TSTypeParameterDeclaration' | 'TSTypeAliasDeclaration' | 'TSInterfaceDeclaration' | 'TSCallSignatureDeclaration' | 'TSConstructSignatureDeclaration' | 'TSModuleDeclaration' | 'TSGlobalDeclaration' | 'TSImportEqualsDeclaration' | 'TSNamespaceExportDeclaration'; readonly list: false; }; }; LabeledStatement: { readonly body: { readonly child: | 'BlockStatement' | 'VariableDeclaration' | 'EmptyStatement' | 'ExpressionStatement' | 'IfStatement' | 'DoWhileStatement' | 'WhileStatement' | 'ForStatement' | 'ForInStatement' | 'ForOfStatement' | 'ContinueStatement' | 'BreakStatement' | 'ReturnStatement' | 'WithStatement' | 'SwitchStatement' | 'LabeledStatement' | 'ThrowStatement' | 'TryStatement' | 'DebuggerStatement' | 'Function' | 'Class' | 'ImportDeclaration' | 'ExportNamedDeclaration' | 'ExportDefaultDeclaration' | 'ExportAllDeclaration' | 'TSEnumDeclaration' | 'TSTypeParameterDeclaration' | 'TSTypeAliasDeclaration' | 'TSInterfaceDeclaration' | 'TSCallSignatureDeclaration' | 'TSConstructSignatureDeclaration' | 'TSModuleDeclaration' | 'TSGlobalDeclaration' | 'TSImportEqualsDeclaration' | 'TSNamespaceExportDeclaration'; readonly list: false; }; }; WithStatement: { readonly body: { readonly child: | 'BlockStatement' | 'VariableDeclaration' | 'EmptyStatement' | 'ExpressionStatement' | 'IfStatement' | 'DoWhileStatement' | 'WhileStatement' | 'ForStatement' | 'ForInStatement' | 'ForOfStatement' | 'ContinueStatement' | 'BreakStatement' | 'ReturnStatement' | 'WithStatement' | 'SwitchStatement' | 'LabeledStatement' | 'ThrowStatement' | 'TryStatement' | 'DebuggerStatement' | 'Function' | 'Class' | 'ImportDeclaration' | 'ExportNamedDeclaration' | 'ExportDefaultDeclaration' | 'ExportAllDeclaration' | 'TSEnumDeclaration' | 'TSTypeParameterDeclaration' | 'TSTypeAliasDeclaration' | 'TSInterfaceDeclaration' | 'TSCallSignatureDeclaration' | 'TSConstructSignatureDeclaration' | 'TSModuleDeclaration' | 'TSGlobalDeclaration' | 'TSImportEqualsDeclaration' | 'TSNamespaceExportDeclaration'; readonly list: false; }; }; CatchClause: { readonly body: { readonly child: 'BlockStatement'; readonly list: false; }; }; CallExpression: { readonly callee: { readonly child: | 'Identifier' | 'ThisExpression' | 'ArrayExpression' | 'ObjectExpression' | 'TemplateLiteral' | 'TaggedTemplateExpression' | 'ComputedMemberExpression' | 'StaticMemberExpression' | 'PrivateFieldExpression' | 'CallExpression' | 'NewExpression' | 'ImportMeta' | 'NewTarget' | 'UpdateExpression' | 'UnaryExpression' | 'BinaryExpression' | 'PrivateInExpression' | 'LogicalExpression' | 'ConditionalExpression' | 'AssignmentExpression' | 'SequenceExpression' | 'AwaitExpression' | 'ChainExpression' | 'ParenthesizedExpression' | 'Function' | 'ArrowFunctionExpression' | 'YieldExpression' | 'Class' | 'ImportExpression' | 'V8IntrinsicExpression' | 'BooleanLiteral' | 'NullLiteral' | 'NumericLiteral' | 'StringLiteral' | 'BigIntLiteral' | 'RegExpLiteral' | 'JSXElement' | 'JSXFragment' | 'JSXMemberExpression' | 'JSXEmptyExpression' | 'TSAsExpression' | 'TSSatisfiesExpression' | 'TSNonNullExpression' | 'TSInstantiationExpression'; readonly list: false; }; readonly arguments: { readonly child: | 'Identifier' | 'ThisExpression' | 'ArrayExpression' | 'ObjectExpression' | 'TemplateLiteral' | 'TaggedTemplateExpression' | 'ComputedMemberExpression' | 'StaticMemberExpression' | 'PrivateFieldExpression' | 'CallExpression' | 'NewExpression' | 'ImportMeta' | 'NewTarget' | 'UpdateExpression' | 'UnaryExpression' | 'BinaryExpression' | 'PrivateInExpression' | 'LogicalExpression' | 'ConditionalExpression' | 'AssignmentExpression' | 'SequenceExpression' | 'AwaitExpression' | 'ChainExpression' | 'ParenthesizedExpression' | 'Function' | 'ArrowFunctionExpression' | 'YieldExpression' | 'Class' | 'ImportExpression' | 'V8IntrinsicExpression' | 'BooleanLiteral' | 'NullLiteral' | 'NumericLiteral' | 'StringLiteral' | 'BigIntLiteral' | 'RegExpLiteral' | 'JSXElement' | 'JSXFragment' | 'JSXMemberExpression' | 'JSXEmptyExpression' | 'TSAsExpression' | 'TSSatisfiesExpression' | 'TSNonNullExpression' | 'TSInstantiationExpression' | 'SpreadElement'; readonly list: true; }; }; NewExpression: { readonly callee: { readonly child: | 'Identifier' | 'ThisExpression' | 'ArrayExpression' | 'ObjectExpression' | 'TemplateLiteral' | 'TaggedTemplateExpression' | 'ComputedMemberExpression' | 'StaticMemberExpression' | 'PrivateFieldExpression' | 'CallExpression' | 'NewExpression' | 'ImportMeta' | 'NewTarget' | 'UpdateExpression' | 'UnaryExpression' | 'BinaryExpression' | 'PrivateInExpression' | 'LogicalExpression' | 'ConditionalExpression' | 'AssignmentExpression' | 'SequenceExpression' | 'AwaitExpression' | 'ChainExpression' | 'ParenthesizedExpression' | 'Function' | 'ArrowFunctionExpression' | 'YieldExpression' | 'Class' | 'ImportExpression' | 'V8IntrinsicExpression' | 'BooleanLiteral' | 'NullLiteral' | 'NumericLiteral' | 'StringLiteral' | 'BigIntLiteral' | 'RegExpLiteral' | 'JSXElement' | 'JSXFragment' | 'JSXMemberExpression' | 'JSXEmptyExpression' | 'TSAsExpression' | 'TSSatisfiesExpression' | 'TSNonNullExpression' | 'TSInstantiationExpression'; readonly list: false; }; readonly arguments: { readonly child: | 'Identifier' | 'ThisExpression' | 'ArrayExpression' | 'ObjectExpression' | 'TemplateLiteral' | 'TaggedTemplateExpression' | 'ComputedMemberExpression' | 'StaticMemberExpression' | 'PrivateFieldExpression' | 'CallExpression' | 'NewExpression' | 'ImportMeta' | 'NewTarget' | 'UpdateExpression' | 'UnaryExpression' | 'BinaryExpression' | 'PrivateInExpression' | 'LogicalExpression' | 'ConditionalExpression' | 'AssignmentExpression' | 'SequenceExpression' | 'AwaitExpression' | 'ChainExpression' | 'ParenthesizedExpression' | 'Function' | 'ArrowFunctionExpression' | 'YieldExpression' | 'Class' | 'ImportExpression' | 'V8IntrinsicExpression' | 'BooleanLiteral' | 'NullLiteral' | 'NumericLiteral' | 'StringLiteral' | 'BigIntLiteral' | 'RegExpLiteral' | 'JSXElement' | 'JSXFragment' | 'JSXMemberExpression' | 'JSXEmptyExpression' | 'TSAsExpression' | 'TSSatisfiesExpression' | 'TSNonNullExpression' | 'TSInstantiationExpression' | 'SpreadElement'; readonly list: true; }; }; VariableDeclaration: { readonly declarations: { readonly child: 'VariableDeclarator'; readonly list: true; }; }; VariableDeclarator: { readonly id: { readonly child: 'Identifier' | 'ObjectPattern' | 'ArrayPattern'; readonly list: false; }; readonly init: { readonly child: | 'Identifier' | 'ThisExpression' | 'ArrayExpression' | 'ObjectExpression' | 'TemplateLiteral' | 'TaggedTemplateExpression' | 'ComputedMemberExpression' | 'StaticMemberExpression' | 'PrivateFieldExpression' | 'CallExpression' | 'NewExpression' | 'ImportMeta' | 'NewTarget' | 'UpdateExpression' | 'UnaryExpression' | 'BinaryExpression' | 'PrivateInExpression' | 'LogicalExpression' | 'ConditionalExpression' | 'AssignmentExpression' | 'SequenceExpression' | 'AwaitExpression' | 'ChainExpression' | 'ParenthesizedExpression' | 'Function' | 'ArrowFunctionExpression' | 'YieldExpression' | 'Class' | 'ImportExpression' | 'V8IntrinsicExpression' | 'BooleanLiteral' | 'NullLiteral' | 'NumericLiteral' | 'StringLiteral' | 'BigIntLiteral' | 'RegExpLiteral' | 'JSXElement' | 'JSXFragment' | 'JSXMemberExpression' | 'JSXEmptyExpression' | 'TSAsExpression' | 'TSSatisfiesExpression' | 'TSNonNullExpression' | 'TSInstantiationExpression'; readonly list: false; }; }; ImportDeclaration: { readonly specifiers: { readonly child: 'ImportSpecifier' | 'ImportDefaultSpecifier' | 'ImportNamespaceSpecifier'; readonly list: true; }; readonly source: { readonly child: 'StringLiteral'; readonly list: false; }; }; ExportNamedDeclaration: { readonly specifiers: { readonly child: 'ExportSpecifier'; readonly list: true; }; readonly source: { readonly child: 'StringLiteral'; readonly list: false; }; readonly declaration: { readonly child: | 'VariableDeclaration' | 'Function' | 'Class' | 'ImportDeclaration' | 'ExportNamedDeclaration' | 'ExportDefaultDeclaration' | 'ExportAllDeclaration' | 'TSEnumDeclaration' | 'TSTypeParameterDeclaration' | 'TSTypeAliasDeclaration' | 'TSInterfaceDeclaration' | 'TSCallSignatureDeclaration' | 'TSConstructSignatureDeclaration' | 'TSModuleDeclaration' | 'TSGlobalDeclaration' | 'TSImportEqualsDeclaration' | 'TSNamespaceExportDeclaration'; readonly list: false; }; }; ExportDefaultDeclaration: { readonly declaration: { readonly child: | 'VariableDeclaration' | 'Function' | 'Class' | 'ImportDeclaration' | 'ExportNamedDeclaration' | 'ExportDefaultDeclaration' | 'ExportAllDeclaration' | 'TSEnumDeclaration' | 'TSTypeParameterDeclaration' | 'TSTypeAliasDeclaration' | 'TSInterfaceDeclaration' | 'TSCallSignatureDeclaration' | 'TSConstructSignatureDeclaration' | 'TSModuleDeclaration' | 'TSGlobalDeclaration' | 'TSImportEqualsDeclaration' | 'TSNamespaceExportDeclaration' | 'Identifier' | 'ThisExpression' | 'ArrayExpression' | 'ObjectExpression' | 'TemplateLiteral' | 'TaggedTemplateExpression' | 'ComputedMemberExpression' | 'StaticMemberExpression' | 'PrivateFieldExpression' | 'CallExpression' | 'NewExpression' | 'ImportMeta' | 'NewTarget' | 'UpdateExpression' | 'UnaryExpression' | 'BinaryExpression' | 'PrivateInExpression' | 'LogicalExpression' | 'ConditionalExpression' | 'AssignmentExpression' | 'SequenceExpression' | 'AwaitExpression' | 'ChainExpression' | 'ParenthesizedExpression' | 'ArrowFunctionExpression' | 'YieldExpression' | 'ImportExpression' | 'V8IntrinsicExpression' | 'BooleanLiteral' | 'NullLiteral' | 'NumericLiteral' | 'StringLiteral' | 'BigIntLiteral' | 'RegExpLiteral' | 'JSXElement' | 'JSXFragment' | 'JSXMemberExpression' | 'JSXEmptyExpression' | 'TSAsExpression' | 'TSSatisfiesExpression' | 'TSNonNullExpression' | 'TSInstantiationExpression'; readonly list: false; }; }; ExportAllDeclaration: { readonly source: { readonly child: 'StringLiteral'; readonly list: false; }; }; ImportExpression: { readonly source: { readonly child: 'StringLiteral'; readonly list: false; }; }; ExpressionStatement: { readonly expression: { readonly child: | 'Identifier' | 'ThisExpression' | 'ArrayExpression' | 'ObjectExpression' | 'TemplateLiteral' | 'TaggedTemplateExpression' | 'ComputedMemberExpression' | 'StaticMemberExpression' | 'PrivateFieldExpression' | 'CallExpression' | 'NewExpression' | 'ImportMeta' | 'NewTarget' | 'UpdateExpression' | 'UnaryExpression' | 'BinaryExpression' | 'PrivateInExpression' | 'LogicalExpression' | 'ConditionalExpression' | 'AssignmentExpression' | 'SequenceExpression' | 'AwaitExpression' | 'ChainExpression' | 'ParenthesizedExpression' | 'Function' | 'ArrowFunctionExpression' | 'YieldExpression' | 'Class' | 'ImportExpression' | 'V8IntrinsicExpression' | 'BooleanLiteral' | 'NullLiteral' | 'NumericLiteral' | 'StringLiteral' | 'BigIntLiteral' | 'RegExpLiteral' | 'JSXElement' | 'JSXFragment' | 'JSXMemberExpression' | 'JSXEmptyExpression' | 'TSAsExpression' | 'TSSatisfiesExpression' | 'TSNonNullExpression' | 'TSInstantiationExpression'; readonly list: false; }; }; ObjectExpression: { readonly properties: { readonly child: 'ObjectProperty' | 'SpreadElement'; readonly list: true; }; }; ObjectPattern: { readonly properties: { readonly child: 'BindingProperty' | 'BindingRestElement'; readonly list: true; }; }; ObjectAssignmentTarget: { readonly properties: { readonly child: | 'AssignmentTargetPropertyIdentifier' | 'AssignmentTargetPropertyProperty' | 'AssignmentTargetRest'; readonly list: true; }; }; ArrayExpression: { readonly elements: { readonly child: | 'Identifier' | 'ThisExpression' | 'ArrayExpression' | 'ObjectExpression' | 'TemplateLiteral' | 'TaggedTemplateExpression' | 'ComputedMemberExpression' | 'StaticMemberExpression' | 'PrivateFieldExpression' | 'CallExpression' | 'NewExpression' | 'ImportMeta' | 'NewTarget' | 'UpdateExpression' | 'UnaryExpression' | 'BinaryExpression' | 'PrivateInExpression' | 'LogicalExpression' | 'ConditionalExpression' | 'AssignmentExpression' | 'SequenceExpression' | 'AwaitExpression' | 'ChainExpression' | 'ParenthesizedExpression' | 'Function' | 'ArrowFunctionExpression' | 'YieldExpression' | 'Class' | 'ImportExpression' | 'V8IntrinsicExpression' | 'BooleanLiteral' | 'NullLiteral' | 'NumericLiteral' | 'StringLiteral' | 'BigIntLiteral' | 'RegExpLiteral' | 'JSXElement' | 'JSXFragment' | 'JSXMemberExpression' | 'JSXEmptyExpression' | 'TSAsExpression' | 'TSSatisfiesExpression' | 'TSNonNullExpression' | 'TSInstantiationExpression' | 'SpreadElement' | 'Elision'; readonly list: true; }; }; ArrayPattern: { readonly elements: { readonly child: | 'Identifier' | 'ObjectPattern' | 'ArrayPattern' | 'AssignmentPattern' | 'BindingRestElement' | 'Elision'; readonly list: true; }; }; ArrayAssignmentTarget: { readonly elements: { readonly child: | 'Identifier' | 'ThisExpression' | 'ArrayExpression' | 'ObjectExpression' | 'TemplateLiteral' | 'TaggedTemplateExpression' | 'ComputedMemberExpression' | 'StaticMemberExpression' | 'PrivateFieldExpression' | 'CallExpression' | 'NewExpression' | 'ImportMeta' | 'NewTarget' | 'UpdateExpression' | 'UnaryExpression' | 'BinaryExpression' | 'PrivateInExpression' | 'LogicalExpression' | 'ConditionalExpression' | 'AssignmentExpression' | 'SequenceExpression' | 'AwaitExpression' | 'ChainExpression' | 'ParenthesizedExpression' | 'Function' | 'ArrowFunctionExpression' | 'YieldExpression' | 'Class' | 'ImportExpression' | 'V8IntrinsicExpression' | 'BooleanLiteral' | 'NullLiteral' | 'NumericLiteral' | 'StringLiteral' | 'BigIntLiteral' | 'RegExpLiteral' | 'JSXElement' | 'JSXFragment' | 'JSXMemberExpression' | 'JSXEmptyExpression' | 'TSAsExpression' | 'TSSatisfiesExpression' | 'TSNonNullExpression' | 'TSInstantiationExpression' | 'ArrayAssignmentTarget' | 'ObjectAssignmentTarget' | 'AssignmentTargetWithDefault' | 'AssignmentTargetRest' | 'Elision'; readonly list: true; }; }; ObjectProperty: { readonly key: { readonly child: | 'Identifier' | 'ThisExpression' | 'ArrayExpression' | 'ObjectExpression' | 'TemplateLiteral' | 'TaggedTemplateExpression' | 'ComputedMemberExpression' | 'StaticMemberExpression' | 'PrivateFieldExpression' | 'CallExpression' | 'NewExpression' | 'ImportMeta' | 'NewTarget' | 'UpdateExpression' | 'UnaryExpression' | 'BinaryExpression' | 'PrivateInExpression' | 'LogicalExpression' | 'ConditionalExpression' | 'AssignmentExpression' | 'SequenceExpression' | 'AwaitExpression' | 'ChainExpression' | 'ParenthesizedExpression' | 'Function' | 'ArrowFunctionExpression' | 'YieldExpression' | 'Class' | 'ImportExpression' | 'V8IntrinsicExpression' | 'BooleanLiteral' | 'NullLiteral' | 'NumericLiteral' | 'StringLiteral' | 'BigIntLiteral' | 'RegExpLiteral' | 'JSXElement' | 'JSXFragment' | 'JSXMemberExpression' | 'JSXEmptyExpression' | 'TSAsExpression' | 'TSSatisfiesExpression' | 'TSNonNullExpression' | 'TSInstantiationExpression' | 'PrivateIdentifier'; readonly list: false; }; readonly value: { readonly child: | 'Identifier' | 'ThisExpression' | 'ArrayExpression' | 'ObjectExpression' | 'TemplateLiteral' | 'TaggedTemplateExpression' | 'ComputedMemberExpression' | 'StaticMemberExpression' | 'PrivateFieldExpression' | 'CallExpression' | 'NewExpression' | 'ImportMeta' | 'NewTarget' | 'UpdateExpression' | 'UnaryExpression' | 'BinaryExpression' | 'PrivateInExpression' | 'LogicalExpression' | 'ConditionalExpression' | 'AssignmentExpression' | 'SequenceExpression' | 'AwaitExpression' | 'ChainExpression' | 'ParenthesizedExpression' | 'Function' | 'ArrowFunctionExpression' | 'YieldExpression' | 'Class' | 'ImportExpression' | 'V8IntrinsicExpression' | 'BooleanLiteral' | 'NullLiteral' | 'NumericLiteral' | 'StringLiteral' | 'BigIntLiteral' | 'RegExpLiteral' | 'JSXElement' | 'JSXFragment' | 'JSXMemberExpression' | 'JSXEmptyExpression' | 'TSAsExpression' | 'TSSatisfiesExpression' | 'TSNonNullExpression' | 'TSInstantiationExpression'; readonly list: false; }; }; BindingProperty: { readonly key: { readonly child: | 'Identifier' | 'ThisExpression' | 'ArrayExpression' | 'ObjectExpression' | 'TemplateLiteral' | 'TaggedTemplateExpression' | 'ComputedMemberExpression' | 'StaticMemberExpression' | 'PrivateFieldExpression' | 'CallExpression' | 'NewExpression' | 'ImportMeta' | 'NewTarget' | 'UpdateExpression' | 'UnaryExpression' | 'BinaryExpression' | 'PrivateInExpression' | 'LogicalExpression' | 'ConditionalExpression' | 'AssignmentExpression' | 'SequenceExpression' | 'AwaitExpression' | 'ChainExpression' | 'ParenthesizedExpression' | 'Function' | 'ArrowFunctionExpression' | 'YieldExpression' | 'Class' | 'ImportExpression' | 'V8IntrinsicExpression' | 'BooleanLiteral' | 'NullLiteral' | 'NumericLiteral' | 'StringLiteral' | 'BigIntLiteral' | 'RegExpLiteral' | 'JSXElement' | 'JSXFragment' | 'JSXMemberExpression' | 'JSXEmptyExpression' | 'TSAsExpression' | 'TSSatisfiesExpression' | 'TSNonNullExpression' | 'TSInstantiationExpression' | 'PrivateIdentifier'; readonly list: false; }; readonly value: { readonly child: 'Identifier' | 'ObjectPattern' | 'ArrayPattern' | 'AssignmentPattern'; readonly list: false; }; }; AssignmentTargetPropertyProperty: { readonly key: { readonly child: | 'Identifier' | 'ThisExpression' | 'ArrayExpression' | 'ObjectExpression' | 'TemplateLiteral' | 'TaggedTemplateExpression' | 'ComputedMemberExpression' | 'StaticMemberExpression' | 'PrivateFieldExpression' | 'CallExpression' | 'NewExpression' | 'ImportMeta' | 'NewTarget' | 'UpdateExpression' | 'UnaryExpression' | 'BinaryExpression' | 'PrivateInExpression' | 'LogicalExpression' | 'ConditionalExpression' | 'AssignmentExpression' | 'SequenceExpression' | 'AwaitExpression' | 'ChainExpression' | 'ParenthesizedExpression' | 'Function' | 'ArrowFunctionExpression' | 'YieldExpression' | 'Class' | 'ImportExpression' | 'V8IntrinsicExpression' | 'BooleanLiteral' | 'NullLiteral' | 'NumericLiteral' | 'StringLiteral' | 'BigIntLiteral' | 'RegExpLiteral' | 'JSXElement' | 'JSXFragment' | 'JSXMemberExpression' | 'JSXEmptyExpression' | 'TSAsExpression' | 'TSSatisfiesExpression' | 'TSNonNullExpression' | 'TSInstantiationExpression' | 'PrivateIdentifier'; readonly list: false; }; readonly value: { readonly child: | 'Identifier' | 'ThisExpression' | 'ArrayExpression' | 'ObjectExpression' | 'TemplateLiteral' | 'TaggedTemplateExpression' | 'ComputedMemberExpression' | 'StaticMemberExpression' | 'PrivateFieldExpression' | 'CallExpression' | 'NewExpression' | 'ImportMeta' | 'NewTarget' | 'UpdateExpression' | 'UnaryExpression' | 'BinaryExpression' | 'PrivateInExpression' | 'LogicalExpression' | 'ConditionalExpression' | 'AssignmentExpression' | 'SequenceExpression' | 'AwaitExpression' | 'ChainExpression' | 'ParenthesizedExpression' | 'Function' | 'ArrowFunctionExpression' | 'YieldExpression' | 'Class' | 'ImportExpression' | 'V8IntrinsicExpression' | 'BooleanLiteral' | 'NullLiteral' | 'NumericLiteral' | 'StringLiteral' | 'BigIntLiteral' | 'RegExpLiteral' | 'JSXElement' | 'JSXFragment' | 'JSXMemberExpression' | 'JSXEmptyExpression' | 'TSAsExpression' | 'TSSatisfiesExpression' | 'TSNonNullExpression' | 'TSInstantiationExpression' | 'AssignmentTargetWithDefault' | 'ArrayAssignmentTarget' | 'ObjectAssignmentTarget'; readonly list: false; }; }; MethodDefinition: { readonly key: { readonly child: | 'Identifier' | 'ThisExpression' | 'ArrayExpression' | 'ObjectExpression' | 'TemplateLiteral' | 'TaggedTemplateExpression' | 'ComputedMemberExpression' | 'StaticMemberExpression' | 'PrivateFieldExpression' | 'CallExpression' | 'NewExpression' | 'ImportMeta' | 'NewTarget' | 'UpdateExpression' | 'UnaryExpression' | 'BinaryExpression' | 'PrivateInExpression' | 'LogicalExpression' | 'ConditionalExpression' | 'AssignmentExpression' | 'SequenceExpression' | 'AwaitExpression' | 'ChainExpression' | 'ParenthesizedExpression' | 'Function' | 'ArrowFunctionExpression' | 'YieldExpression' | 'Class' | 'ImportExpression' | 'V8IntrinsicExpression' | 'BooleanLiteral' | 'NullLiteral' | 'NumericLiteral' | 'StringLiteral' | 'BigIntLiteral' | 'RegExpLiteral' | 'JSXElement' | 'JSXFragment' | 'JSXMemberExpression' | 'JSXEmptyExpression' | 'TSAsExpression' | 'TSSatisfiesExpression' | 'TSNonNullExpression' | 'TSInstantiationExpression' | 'PrivateIdentifier'; readonly list: false; }; readonly value: { readonly child: 'Function' | 'ArrowFunctionExpression'; readonly list: false; }; readonly decorators: { readonly child: 'Decorator'; readonly list: true; }; }; PropertyDefinition: { readonly key: { readonly child: | 'Identifier' | 'ThisExpression' | 'ArrayExpression' | 'ObjectExpression' | 'TemplateLiteral' | 'TaggedTemplateExpression' | 'ComputedMemberExpression' | 'StaticMemberExpression' | 'PrivateFieldExpression' | 'CallExpression' | 'NewExpression' | 'ImportMeta' | 'NewTarget' | 'UpdateExpression' | 'UnaryExpression' | 'BinaryExpression' | 'PrivateInExpression' | 'LogicalExpression' | 'ConditionalExpression' | 'AssignmentExpression' | 'SequenceExpression' | 'AwaitExpression' | 'ChainExpression' | 'ParenthesizedExpression' | 'Function' | 'ArrowFunctionExpression' | 'YieldExpression' | 'Class' | 'ImportExpression' | 'V8IntrinsicExpression' | 'BooleanLiteral' | 'NullLiteral' | 'NumericLiteral' | 'StringLiteral' | 'BigIntLiteral' | 'RegExpLiteral' | 'JSXElement' | 'JSXFragment' | 'JSXMemberExpression' | 'JSXEmptyExpression' | 'TSAsExpression' | 'TSSatisfiesExpression' | 'TSNonNullExpression' | 'TSInstantiationExpression' | 'PrivateIdentifier'; readonly list: false; }; readonly value: { readonly child: | 'Identifier' | 'ThisExpression' | 'ArrayExpression' | 'ObjectExpression' | 'TemplateLiteral' | 'TaggedTemplateExpression' | 'ComputedMemberExpression' | 'StaticMemberExpression' | 'PrivateFieldExpression' | 'CallExpression' | 'NewExpression' | 'ImportMeta' | 'NewTarget' | 'UpdateExpression' | 'UnaryExpression' | 'BinaryExpression' | 'PrivateInExpression' | 'LogicalExpression' | 'ConditionalExpression' | 'AssignmentExpression' | 'SequenceExpression' | 'AwaitExpression' | 'ChainExpression' | 'ParenthesizedExpression' | 'Function' | 'ArrowFunctionExpression' | 'YieldExpression' | 'Class' | 'ImportExpression' | 'V8IntrinsicExpression' | 'BooleanLiteral' | 'NullLiteral' | 'NumericLiteral' | 'StringLiteral' | 'BigIntLiteral' | 'RegExpLiteral' | 'JSXElement' | 'JSXFragment' | 'JSXMemberExpression' | 'JSXEmptyExpression' | 'TSAsExpression' | 'TSSatisfiesExpression' | 'TSNonNullExpression' | 'TSInstantiationExpression'; readonly list: false; }; readonly decorators: { readonly child: 'Decorator'; readonly list: true; }; }; AccessorProperty: { readonly key: { readonly child: | 'Identifier' | 'ThisExpression' | 'ArrayExpression' | 'ObjectExpression' | 'TemplateLiteral' | 'TaggedTemplateExpression' | 'ComputedMemberExpression' | 'StaticMemberExpression' | 'PrivateFieldExpression' | 'CallExpression' | 'NewExpression' | 'ImportMeta' | 'NewTarget' | 'UpdateExpression' | 'UnaryExpression' | 'BinaryExpression' | 'PrivateInExpression' | 'LogicalExpression' | 'ConditionalExpression' | 'AssignmentExpression' | 'SequenceExpression' | 'AwaitExpression' | 'ChainExpression' | 'ParenthesizedExpression' | 'Function' | 'ArrowFunctionExpression' | 'YieldExpression' | 'Class' | 'ImportExpression' | 'V8IntrinsicExpression' | 'BooleanLiteral' | 'NullLiteral' | 'NumericLiteral' | 'StringLiteral' | 'BigIntLiteral' | 'RegExpLiteral' | 'JSXElement' | 'JSXFragment' | 'JSXMemberExpression' | 'JSXEmptyExpression' | 'TSAsExpression' | 'TSSatisfiesExpression' | 'TSNonNullExpression' | 'TSInstantiationExpression' | 'PrivateIdentifier'; readonly list: false; }; readonly value: { readonly child: | 'Identifier' | 'ThisExpression' | 'ArrayExpression' | 'ObjectExpression' | 'TemplateLiteral' | 'TaggedTemplateExpression' | 'ComputedMemberExpression' | 'StaticMemberExpression' | 'PrivateFieldExpression' | 'CallExpression' | 'NewExpression' | 'ImportMeta' | 'NewTarget' | 'UpdateExpression' | 'UnaryExpression' | 'BinaryExpression' | 'PrivateInExpression' | 'LogicalExpression' | 'ConditionalExpression' | 'AssignmentExpression' | 'SequenceExpression' | 'AwaitExpression' | 'ChainExpression' | 'ParenthesizedExpression' | 'Function' | 'ArrowFunctionExpression' | 'YieldExpression' | 'Class' | 'ImportExpression' | 'V8IntrinsicExpression' | 'BooleanLiteral' | 'NullLiteral' | 'NumericLiteral' | 'StringLiteral' | 'BigIntLiteral' | 'RegExpLiteral' | 'JSXElement' | 'JSXFragment' | 'JSXMemberExpression' | 'JSXEmptyExpression' | 'TSAsExpression' | 'TSSatisfiesExpression' | 'TSNonNullExpression' | 'TSInstantiationExpression'; readonly list: false; }; }; FormalParameter: { readonly decorators: { readonly child: 'Decorator'; readonly list: true; }; readonly pattern: { readonly child: 'Identifier' | 'ObjectPattern' | 'ArrayPattern'; readonly list: false; }; readonly default: { readonly child: | 'Identifier' | 'ThisExpression' | 'ArrayExpression' | 'ObjectExpression' | 'TemplateLiteral' | 'TaggedTemplateExpression' | 'ComputedMemberExpression' | 'StaticMemberExpression' | 'PrivateFieldExpression' | 'CallExpression' | 'NewExpression' | 'ImportMeta' | 'NewTarget' | 'UpdateExpression' | 'UnaryExpression' | 'BinaryExpression' | 'PrivateInExpression' | 'LogicalExpression' | 'ConditionalExpression' | 'AssignmentExpression' | 'SequenceExpression' | 'AwaitExpression' | 'ChainExpression' | 'ParenthesizedExpression' | 'Function' | 'ArrowFunctionExpression' | 'YieldExpression' | 'Class' | 'ImportExpression' | 'V8IntrinsicExpression' | 'BooleanLiteral' | 'NullLiteral' | 'NumericLiteral' | 'StringLiteral' | 'BigIntLiteral' | 'RegExpLiteral' | 'JSXElement' | 'JSXFragment' | 'JSXMemberExpression' | 'JSXEmptyExpression' | 'TSAsExpression' | 'TSSatisfiesExpression' | 'TSNonNullExpression' | 'TSInstantiationExpression'; readonly list: false; }; }; FormalParameterRest: { readonly argument: { readonly child: 'BindingRestElement'; readonly list: false; }; }; BindingRestElement: { readonly pattern: { readonly child: 'Identifier' | 'ObjectPattern' | 'ArrayPattern'; readonly list: false; }; }; AssignmentPattern: { readonly left: { readonly child: 'Identifier' | 'ObjectPattern' | 'ArrayPattern' | 'AssignmentPattern'; readonly list: false; }; readonly right: { readonly child: | 'Identifier' | 'ThisExpression' | 'ArrayExpression' | 'ObjectExpression' | 'TemplateLiteral' | 'TaggedTemplateExpression' | 'ComputedMemberExpression' | 'StaticMemberExpression' | 'PrivateFieldExpression' | 'CallExpression' | 'NewExpression' | 'ImportMeta' | 'NewTarget' | 'UpdateExpression' | 'UnaryExpression' | 'BinaryExpression' | 'PrivateInExpression' | 'LogicalExpression' | 'ConditionalExpression' | 'AssignmentExpression' | 'SequenceExpression' | 'AwaitExpression' | 'ChainExpression' | 'ParenthesizedExpression' | 'Function' | 'ArrowFunctionExpression' | 'YieldExpression' | 'Class' | 'ImportExpression' | 'V8IntrinsicExpression' | 'BooleanLiteral' | 'NullLiteral' | 'NumericLiteral' | 'StringLiteral' | 'BigIntLiteral' | 'RegExpLiteral' | 'JSXElement' | 'JSXFragment' | 'JSXMemberExpression' | 'JSXEmptyExpression' | 'TSAsExpression' | 'TSSatisfiesExpression' | 'TSNonNullExpression' | 'TSInstantiationExpression'; readonly list: false; }; }; StaticMemberExpression: { readonly object: { readonly child: | 'Identifier' | 'ThisExpression' | 'ArrayExpression' | 'ObjectExpression' | 'TemplateLiteral' | 'TaggedTemplateExpression' | 'ComputedMemberExpression' | 'StaticMemberExpression' | 'PrivateFieldExpression' | 'CallExpression' | 'NewExpression' | 'ImportMeta' | 'NewTarget' | 'UpdateExpression' | 'UnaryExpression' | 'BinaryExpression' | 'PrivateInExpression' | 'LogicalExpression' | 'ConditionalExpression' | 'AssignmentExpression' | 'SequenceExpression' | 'AwaitExpression' | 'ChainExpression' | 'ParenthesizedExpression' | 'Function' | 'ArrowFunctionExpression' | 'YieldExpression' | 'Class' | 'ImportExpression' | 'V8IntrinsicExpression' | 'BooleanLiteral' | 'NullLiteral' | 'NumericLiteral' | 'StringLiteral' | 'BigIntLiteral' | 'RegExpLiteral' | 'JSXElement' | 'JSXFragment' | 'JSXMemberExpression' | 'JSXEmptyExpression' | 'TSAsExpression' | 'TSSatisfiesExpression' | 'TSNonNullExpression' | 'TSInstantiationExpression' | 'Super'; readonly list: false; }; readonly property: { readonly child: 'Identifier'; readonly list: false; }; }; ComputedMemberExpression: { readonly object: { readonly child: | 'Identifier' | 'ThisExpression' | 'ArrayExpression' | 'ObjectExpression' | 'TemplateLiteral' | 'TaggedTemplateExpression' | 'ComputedMemberExpression' | 'StaticMemberExpression' | 'PrivateFieldExpression' | 'CallExpression' | 'NewExpression' | 'ImportMeta' | 'NewTarget' | 'UpdateExpression' | 'UnaryExpression' | 'BinaryExpression' | 'PrivateInExpression' | 'LogicalExpression' | 'ConditionalExpression' | 'AssignmentExpression' | 'SequenceExpression' | 'AwaitExpression' | 'ChainExpression' | 'ParenthesizedExpression' | 'Function' | 'ArrowFunctionExpression' | 'YieldExpression' | 'Class' | 'ImportExpression' | 'V8IntrinsicExpression' | 'BooleanLiteral' | 'NullLiteral' | 'NumericLiteral' | 'StringLiteral' | 'BigIntLiteral' | 'RegExpLiteral' | 'JSXElement' | 'JSXFragment' | 'JSXMemberExpression' | 'JSXEmptyExpression' | 'TSAsExpression' | 'TSSatisfiesExpression' | 'TSNonNullExpression' | 'TSInstantiationExpression' | 'Super'; readonly list: false; }; readonly property: { readonly child: | 'Identifier' | 'ThisExpression' | 'ArrayExpression' | 'ObjectExpression' | 'TemplateLiteral' | 'TaggedTemplateExpression' | 'ComputedMemberExpression' | 'StaticMemberExpression' | 'PrivateFieldExpression' | 'CallExpression' | 'NewExpression' | 'ImportMeta' | 'NewTarget' | 'UpdateExpression' | 'UnaryExpression' | 'BinaryExpression' | 'PrivateInExpression' | 'LogicalExpression' | 'ConditionalExpression' | 'AssignmentExpression' | 'SequenceExpression' | 'AwaitExpression' | 'ChainExpression' | 'ParenthesizedExpression' | 'Function' | 'ArrowFunctionExpression' | 'YieldExpression' | 'Class' | 'ImportExpression' | 'V8IntrinsicExpression' | 'BooleanLiteral' | 'NullLiteral' | 'NumericLiteral' | 'StringLiteral' | 'BigIntLiteral' | 'RegExpLiteral' | 'JSXElement' | 'JSXFragment' | 'JSXMemberExpression' | 'JSXEmptyExpression' | 'TSAsExpression' | 'TSSatisfiesExpression' | 'TSNonNullExpression' | 'TSInstantiationExpression'; readonly list: false; }; }; PrivateFieldExpression: { readonly object: { readonly child: | 'Identifier' | 'ThisExpression' | 'ArrayExpression' | 'ObjectExpression' | 'TemplateLiteral' | 'TaggedTemplateExpression' | 'ComputedMemberExpression' | 'StaticMemberExpression' | 'PrivateFieldExpression' | 'CallExpression' | 'NewExpression' | 'ImportMeta' | 'NewTarget' | 'UpdateExpression' | 'UnaryExpression' | 'BinaryExpression' | 'PrivateInExpression' | 'LogicalExpression' | 'ConditionalExpression' | 'AssignmentExpression' | 'SequenceExpression' | 'AwaitExpression' | 'ChainExpression' | 'ParenthesizedExpression' | 'Function' | 'ArrowFunctionExpression' | 'YieldExpression' | 'Class' | 'ImportExpression' | 'V8IntrinsicExpression' | 'BooleanLiteral' | 'NullLiteral' | 'NumericLiteral' | 'StringLiteral' | 'BigIntLiteral' | 'RegExpLiteral' | 'JSXElement' | 'JSXFragment' | 'JSXMemberExpression' | 'JSXEmptyExpression' | 'TSAsExpression' | 'TSSatisfiesExpression' | 'TSNonNullExpression' | 'TSInstantiationExpression'; readonly list: false; }; readonly property: { readonly child: 'PrivateIdentifier'; readonly list: false; }; }; BinaryExpression: { readonly left: { readonly child: | 'Identifier' | 'ThisExpression' | 'ArrayExpression' | 'ObjectExpression' | 'TemplateLiteral' | 'TaggedTemplateExpression' | 'ComputedMemberExpression' | 'StaticMemberExpression' | 'PrivateFieldExpression' | 'CallExpression' | 'NewExpression' | 'ImportMeta' | 'NewTarget' | 'UpdateExpression' | 'UnaryExpression' | 'BinaryExpression' | 'PrivateInExpression' | 'LogicalExpression' | 'ConditionalExpression' | 'AssignmentExpression' | 'SequenceExpression' | 'AwaitExpression' | 'ChainExpression' | 'ParenthesizedExpression' | 'Function' | 'ArrowFunctionExpression' | 'YieldExpression' | 'Class' | 'ImportExpression' | 'V8IntrinsicExpression' | 'BooleanLiteral' | 'NullLiteral' | 'NumericLiteral' | 'StringLiteral' | 'BigIntLiteral' | 'RegExpLiteral' | 'JSXElement' | 'JSXFragment' | 'JSXMemberExpression' | 'JSXEmptyExpression' | 'TSAsExpression' | 'TSSatisfiesExpression' | 'TSNonNullExpression' | 'TSInstantiationExpression'; readonly list: false; }; readonly right: { readonly child: | 'Identifier' | 'ThisExpression' | 'ArrayExpression' | 'ObjectExpression' | 'TemplateLiteral' | 'TaggedTemplateExpression' | 'ComputedMemberExpression' | 'StaticMemberExpression' | 'PrivateFieldExpression' | 'CallExpression' | 'NewExpression' | 'ImportMeta' | 'NewTarget' | 'UpdateExpression' | 'UnaryExpression' | 'BinaryExpression' | 'PrivateInExpression' | 'LogicalExpression' | 'ConditionalExpression' | 'AssignmentExpression' | 'SequenceExpression' | 'AwaitExpression' | 'ChainExpression' | 'ParenthesizedExpression' | 'Function' | 'ArrowFunctionExpression' | 'YieldExpression' | 'Class' | 'ImportExpression' | 'V8IntrinsicExpression' | 'BooleanLiteral' | 'NullLiteral' | 'NumericLiteral' | 'StringLiteral' | 'BigIntLiteral' | 'RegExpLiteral' | 'JSXElement' | 'JSXFragment' | 'JSXMemberExpression' | 'JSXEmptyExpression' | 'TSAsExpression' | 'TSSatisfiesExpression' | 'TSNonNullExpression' | 'TSInstantiationExpression'; readonly list: false; }; }; LogicalExpression: { readonly left: { readonly child: | 'Identifier' | 'ThisExpression' | 'ArrayExpression' | 'ObjectExpression' | 'TemplateLiteral' | 'TaggedTemplateExpression' | 'ComputedMemberExpression' | 'StaticMemberExpression' | 'PrivateFieldExpression' | 'CallExpression' | 'NewExpression' | 'ImportMeta' | 'NewTarget' | 'UpdateExpression' | 'UnaryExpression' | 'BinaryExpression' | 'PrivateInExpression' | 'LogicalExpression' | 'ConditionalExpression' | 'AssignmentExpression' | 'SequenceExpression' | 'AwaitExpression' | 'ChainExpression' | 'ParenthesizedExpression' | 'Function' | 'ArrowFunctionExpression' | 'YieldExpression' | 'Class' | 'ImportExpression' | 'V8IntrinsicExpression' | 'BooleanLiteral' | 'NullLiteral' | 'NumericLiteral' | 'StringLiteral' | 'BigIntLiteral' | 'RegExpLiteral' | 'JSXElement' | 'JSXFragment' | 'JSXMemberExpression' | 'JSXEmptyExpression' | 'TSAsExpression' | 'TSSatisfiesExpression' | 'TSNonNullExpression' | 'TSInstantiationExpression'; readonly list: false; }; readonly right: { readonly child: | 'Identifier' | 'ThisExpression' | 'ArrayExpression' | 'ObjectExpression' | 'TemplateLiteral' | 'TaggedTemplateExpression' | 'ComputedMemberExpression' | 'StaticMemberExpression' | 'PrivateFieldExpression' | 'CallExpression' | 'NewExpression' | 'ImportMeta' | 'NewTarget' | 'UpdateExpression' | 'UnaryExpression' | 'BinaryExpression' | 'PrivateInExpression' | 'LogicalExpression' | 'ConditionalExpression' | 'AssignmentExpression' | 'SequenceExpression' | 'AwaitExpression' | 'ChainExpression' | 'ParenthesizedExpression' | 'Function' | 'ArrowFunctionExpression' | 'YieldExpression' | 'Class' | 'ImportExpression' | 'V8IntrinsicExpression' | 'BooleanLiteral' | 'NullLiteral' | 'NumericLiteral' | 'StringLiteral' | 'BigIntLiteral' | 'RegExpLiteral' | 'JSXElement' | 'JSXFragment' | 'JSXMemberExpression' | 'JSXEmptyExpression' | 'TSAsExpression' | 'TSSatisfiesExpression' | 'TSNonNullExpression' | 'TSInstantiationExpression'; readonly list: false; }; }; AssignmentExpression: { readonly left: { readonly child: | 'Identifier' | 'ThisExpression' | 'ArrayExpression' | 'ObjectExpression' | 'TemplateLiteral' | 'TaggedTemplateExpression' | 'ComputedMemberExpression' | 'StaticMemberExpression' | 'PrivateFieldExpression' | 'CallExpression' | 'NewExpression' | 'ImportMeta' | 'NewTarget' | 'UpdateExpression' | 'UnaryExpression' | 'BinaryExpression' | 'PrivateInExpression' | 'LogicalExpression' | 'ConditionalExpression' | 'AssignmentExpression' | 'SequenceExpression' | 'AwaitExpression' | 'ChainExpression' | 'ParenthesizedExpression' | 'Function' | 'ArrowFunctionExpression' | 'YieldExpression' | 'Class' | 'ImportExpression' | 'V8IntrinsicExpression' | 'BooleanLiteral' | 'NullLiteral' | 'NumericLiteral' | 'StringLiteral' | 'BigIntLiteral' | 'RegExpLiteral' | 'JSXElement' | 'JSXFragment' | 'JSXMemberExpression' | 'JSXEmptyExpression' | 'TSAsExpression' | 'TSSatisfiesExpression' | 'TSNonNullExpression' | 'TSInstantiationExpression' | 'ArrayAssignmentTarget' | 'ObjectAssignmentTarget'; readonly list: false; }; readonly right: { readonly child: | 'Identifier' | 'ThisExpression' | 'ArrayExpression' | 'ObjectExpression' | 'TemplateLiteral' | 'TaggedTemplateExpression' | 'ComputedMemberExpression' | 'StaticMemberExpression' | 'PrivateFieldExpression' | 'CallExpression' | 'NewExpression' | 'ImportMeta' | 'NewTarget' | 'UpdateExpression' | 'UnaryExpression' | 'BinaryExpression' | 'PrivateInExpression' | 'LogicalExpression' | 'ConditionalExpression' | 'AssignmentExpression' | 'SequenceExpression' | 'AwaitExpression' | 'ChainExpression' | 'ParenthesizedExpression' | 'Function' | 'ArrowFunctionExpression' | 'YieldExpression' | 'Class' | 'ImportExpression' | 'V8IntrinsicExpression' | 'BooleanLiteral' | 'NullLiteral' | 'NumericLiteral' | 'StringLiteral' | 'BigIntLiteral' | 'RegExpLiteral' | 'JSXElement' | 'JSXFragment' | 'JSXMemberExpression' | 'JSXEmptyExpression' | 'TSAsExpression' | 'TSSatisfiesExpression' | 'TSNonNullExpression' | 'TSInstantiationExpression'; readonly list: false; }; }; PrivateInExpression: { readonly left: { readonly child: 'PrivateIdentifier'; readonly list: false; }; readonly right: { readonly child: | 'Identifier' | 'ThisExpression' | 'ArrayExpression' | 'ObjectExpression' | 'TemplateLiteral' | 'TaggedTemplateExpression' | 'ComputedMemberExpression' | 'StaticMemberExpression' | 'PrivateFieldExpression' | 'CallExpression' | 'NewExpression' | 'ImportMeta' | 'NewTarget' | 'UpdateExpression' | 'UnaryExpression' | 'BinaryExpression' | 'PrivateInExpression' | 'LogicalExpression' | 'ConditionalExpression' | 'AssignmentExpression' | 'SequenceExpression' | 'AwaitExpression' | 'ChainExpression' | 'ParenthesizedExpression' | 'Function' | 'ArrowFunctionExpression' | 'YieldExpression' | 'Class' | 'ImportExpression' | 'V8IntrinsicExpression' | 'BooleanLiteral' | 'NullLiteral' | 'NumericLiteral' | 'StringLiteral' | 'BigIntLiteral' | 'RegExpLiteral' | 'JSXElement' | 'JSXFragment' | 'JSXMemberExpression' | 'JSXEmptyExpression' | 'TSAsExpression' | 'TSSatisfiesExpression' | 'TSNonNullExpression' | 'TSInstantiationExpression'; readonly list: false; }; }; UnaryExpression: { readonly argument: { readonly child: | 'Identifier' | 'ThisExpression' | 'ArrayExpression' | 'ObjectExpression' | 'TemplateLiteral' | 'TaggedTemplateExpression' | 'ComputedMemberExpression' | 'StaticMemberExpression' | 'PrivateFieldExpression' | 'CallExpression' | 'NewExpression' | 'ImportMeta' | 'NewTarget' | 'UpdateExpression' | 'UnaryExpression' | 'BinaryExpression' | 'PrivateInExpression' | 'LogicalExpression' | 'ConditionalExpression' | 'AssignmentExpression' | 'SequenceExpression' | 'AwaitExpression' | 'ChainExpression' | 'ParenthesizedExpression' | 'Function' | 'ArrowFunctionExpression' | 'YieldExpression' | 'Class' | 'ImportExpression' | 'V8IntrinsicExpression' | 'BooleanLiteral' | 'NullLiteral' | 'NumericLiteral' | 'StringLiteral' | 'BigIntLiteral' | 'RegExpLiteral' | 'JSXElement' | 'JSXFragment' | 'JSXMemberExpression' | 'JSXEmptyExpression' | 'TSAsExpression' | 'TSSatisfiesExpression' | 'TSNonNullExpression' | 'TSInstantiationExpression'; readonly list: false; }; }; UpdateExpression: { readonly argument: { readonly child: | 'Identifier' | 'ThisExpression' | 'ArrayExpression' | 'ObjectExpression' | 'TemplateLiteral' | 'TaggedTemplateExpression' | 'ComputedMemberExpression' | 'StaticMemberExpression' | 'PrivateFieldExpression' | 'CallExpression' | 'NewExpression' | 'ImportMeta' | 'NewTarget' | 'UpdateExpression' | 'UnaryExpression' | 'BinaryExpression' | 'PrivateInExpression' | 'LogicalExpression' | 'ConditionalExpression' | 'AssignmentExpression' | 'SequenceExpression' | 'AwaitExpression' | 'ChainExpression' | 'ParenthesizedExpression' | 'Function' | 'ArrowFunctionExpression' | 'YieldExpression' | 'Class' | 'ImportExpression' | 'V8IntrinsicExpression' | 'BooleanLiteral' | 'NullLiteral' | 'NumericLiteral' | 'StringLiteral' | 'BigIntLiteral' | 'RegExpLiteral' | 'JSXElement' | 'JSXFragment' | 'JSXMemberExpression' | 'JSXEmptyExpression' | 'TSAsExpression' | 'TSSatisfiesExpression' | 'TSNonNullExpression' | 'TSInstantiationExpression'; readonly list: false; }; }; AwaitExpression: { readonly argument: { readonly child: | 'Identifier' | 'ThisExpression' | 'ArrayExpression' | 'ObjectExpression' | 'TemplateLiteral' | 'TaggedTemplateExpression' | 'ComputedMemberExpression' | 'StaticMemberExpression' | 'PrivateFieldExpression' | 'CallExpression' | 'NewExpression' | 'ImportMeta' | 'NewTarget' | 'UpdateExpression' | 'UnaryExpression' | 'BinaryExpression' | 'PrivateInExpression' | 'LogicalExpression' | 'ConditionalExpression' | 'AssignmentExpression' | 'SequenceExpression' | 'AwaitExpression' | 'ChainExpression' | 'ParenthesizedExpression' | 'Function' | 'ArrowFunctionExpression' | 'YieldExpression' | 'Class' | 'ImportExpression' | 'V8IntrinsicExpression' | 'BooleanLiteral' | 'NullLiteral' | 'NumericLiteral' | 'StringLiteral' | 'BigIntLiteral' | 'RegExpLiteral' | 'JSXElement' | 'JSXFragment' | 'JSXMemberExpression' | 'JSXEmptyExpression' | 'TSAsExpression' | 'TSSatisfiesExpression' | 'TSNonNullExpression' | 'TSInstantiationExpression'; readonly list: false; }; }; YieldExpression: { readonly argument: { readonly child: | 'Identifier' | 'ThisExpression' | 'ArrayExpression' | 'ObjectExpression' | 'TemplateLiteral' | 'TaggedTemplateExpression' | 'ComputedMemberExpression' | 'StaticMemberExpression' | 'PrivateFieldExpression' | 'CallExpression' | 'NewExpression' | 'ImportMeta' | 'NewTarget' | 'UpdateExpression' | 'UnaryExpression' | 'BinaryExpression' | 'PrivateInExpression' | 'LogicalExpression' | 'ConditionalExpression' | 'AssignmentExpression' | 'SequenceExpression' | 'AwaitExpression' | 'ChainExpression' | 'ParenthesizedExpression' | 'Function' | 'ArrowFunctionExpression' | 'YieldExpression' | 'Class' | 'ImportExpression' | 'V8IntrinsicExpression' | 'BooleanLiteral' | 'NullLiteral' | 'NumericLiteral' | 'StringLiteral' | 'BigIntLiteral' | 'RegExpLiteral' | 'JSXElement' | 'JSXFragment' | 'JSXMemberExpression' | 'JSXEmptyExpression' | 'TSAsExpression' | 'TSSatisfiesExpression' | 'TSNonNullExpression' | 'TSInstantiationExpression'; readonly list: false; }; }; ReturnStatement: { readonly argument: { readonly child: | 'Identifier' | 'ThisExpression' | 'ArrayExpression' | 'ObjectExpression' | 'TemplateLiteral' | 'TaggedTemplateExpression' | 'ComputedMemberExpression' | 'StaticMemberExpression' | 'PrivateFieldExpression' | 'CallExpression' | 'NewExpression' | 'ImportMeta' | 'NewTarget' | 'UpdateExpression' | 'UnaryExpression' | 'BinaryExpression' | 'PrivateInExpression' | 'LogicalExpression' | 'ConditionalExpression' | 'AssignmentExpression' | 'SequenceExpression' | 'AwaitExpression' | 'ChainExpression' | 'ParenthesizedExpression' | 'Function' | 'ArrowFunctionExpression' | 'YieldExpression' | 'Class' | 'ImportExpression' | 'V8IntrinsicExpression' | 'BooleanLiteral' | 'NullLiteral' | 'NumericLiteral' | 'StringLiteral' | 'BigIntLiteral' | 'RegExpLiteral' | 'JSXElement' | 'JSXFragment' | 'JSXMemberExpression' | 'JSXEmptyExpression' | 'TSAsExpression' | 'TSSatisfiesExpression' | 'TSNonNullExpression' | 'TSInstantiationExpression'; readonly list: false; }; }; ThrowStatement: { readonly argument: { readonly child: | 'Identifier' | 'ThisExpression' | 'ArrayExpression' | 'ObjectExpression' | 'TemplateLiteral' | 'TaggedTemplateExpression' | 'ComputedMemberExpression' | 'StaticMemberExpression' | 'PrivateFieldExpression' | 'CallExpression' | 'NewExpression' | 'ImportMeta' | 'NewTarget' | 'UpdateExpression' | 'UnaryExpression' | 'BinaryExpression' | 'PrivateInExpression' | 'LogicalExpression' | 'ConditionalExpression' | 'AssignmentExpression' | 'SequenceExpression' | 'AwaitExpression' | 'ChainExpression' | 'ParenthesizedExpression' | 'Function' | 'ArrowFunctionExpression' | 'YieldExpression' | 'Class' | 'ImportExpression' | 'V8IntrinsicExpression' | 'BooleanLiteral' | 'NullLiteral' | 'NumericLiteral' | 'StringLiteral' | 'BigIntLiteral' | 'RegExpLiteral' | 'JSXElement' | 'JSXFragment' | 'JSXMemberExpression' | 'JSXEmptyExpression' | 'TSAsExpression' | 'TSSatisfiesExpression' | 'TSNonNullExpression' | 'TSInstantiationExpression'; readonly list: false; }; }; SpreadElement: { readonly argument: { readonly child: | 'Identifier' | 'ThisExpression' | 'ArrayExpression' | 'ObjectExpression' | 'TemplateLiteral' | 'TaggedTemplateExpression' | 'ComputedMemberExpression' | 'StaticMemberExpression' | 'PrivateFieldExpression' | 'CallExpression' | 'NewExpression' | 'ImportMeta' | 'NewTarget' | 'UpdateExpression' | 'UnaryExpression' | 'BinaryExpression' | 'PrivateInExpression' | 'LogicalExpression' | 'ConditionalExpression' | 'AssignmentExpression' | 'SequenceExpression' | 'AwaitExpression' | 'ChainExpression' | 'ParenthesizedExpression' | 'Function' | 'ArrowFunctionExpression' | 'YieldExpression' | 'Class' | 'ImportExpression' | 'V8IntrinsicExpression' | 'BooleanLiteral' | 'NullLiteral' | 'NumericLiteral' | 'StringLiteral' | 'BigIntLiteral' | 'RegExpLiteral' | 'JSXElement' | 'JSXFragment' | 'JSXMemberExpression' | 'JSXEmptyExpression' | 'TSAsExpression' | 'TSSatisfiesExpression' | 'TSNonNullExpression' | 'TSInstantiationExpression'; readonly list: false; }; }; IfStatement: { readonly test: { readonly child: | 'Identifier' | 'ThisExpression' | 'ArrayExpression' | 'ObjectExpression' | 'TemplateLiteral' | 'TaggedTemplateExpression' | 'ComputedMemberExpression' | 'StaticMemberExpression' | 'PrivateFieldExpression' | 'CallExpression' | 'NewExpression' | 'ImportMeta' | 'NewTarget' | 'UpdateExpression' | 'UnaryExpression' | 'BinaryExpression' | 'PrivateInExpression' | 'LogicalExpression' | 'ConditionalExpression' | 'AssignmentExpression' | 'SequenceExpression' | 'AwaitExpression' | 'ChainExpression' | 'ParenthesizedExpression' | 'Function' | 'ArrowFunctionExpression' | 'YieldExpression' | 'Class' | 'ImportExpression' | 'V8IntrinsicExpression' | 'BooleanLiteral' | 'NullLiteral' | 'NumericLiteral' | 'StringLiteral' | 'BigIntLiteral' | 'RegExpLiteral' | 'JSXElement' | 'JSXFragment' | 'JSXMemberExpression' | 'JSXEmptyExpression' | 'TSAsExpression' | 'TSSatisfiesExpression' | 'TSNonNullExpression' | 'TSInstantiationExpression'; readonly list: false; }; readonly consequent: { readonly child: | 'BlockStatement' | 'VariableDeclaration' | 'EmptyStatement' | 'ExpressionStatement' | 'IfStatement' | 'DoWhileStatement' | 'WhileStatement' | 'ForStatement' | 'ForInStatement' | 'ForOfStatement' | 'ContinueStatement' | 'BreakStatement' | 'ReturnStatement' | 'WithStatement' | 'SwitchStatement' | 'LabeledStatement' | 'ThrowStatement' | 'TryStatement' | 'DebuggerStatement' | 'Function' | 'Class' | 'ImportDeclaration' | 'ExportNamedDeclaration' | 'ExportDefaultDeclaration' | 'ExportAllDeclaration' | 'TSEnumDeclaration' | 'TSTypeParameterDeclaration' | 'TSTypeAliasDeclaration' | 'TSInterfaceDeclaration' | 'TSCallSignatureDeclaration' | 'TSConstructSignatureDeclaration' | 'TSModuleDeclaration' | 'TSGlobalDeclaration' | 'TSImportEqualsDeclaration' | 'TSNamespaceExportDeclaration'; readonly list: false; }; readonly alternate: { readonly child: | 'BlockStatement' | 'VariableDeclaration' | 'EmptyStatement' | 'ExpressionStatement' | 'IfStatement' | 'DoWhileStatement' | 'WhileStatement' | 'ForStatement' | 'ForInStatement' | 'ForOfStatement' | 'ContinueStatement' | 'BreakStatement' | 'ReturnStatement' | 'WithStatement' | 'SwitchStatement' | 'LabeledStatement' | 'ThrowStatement' | 'TryStatement' | 'DebuggerStatement' | 'Function' | 'Class' | 'ImportDeclaration' | 'ExportNamedDeclaration' | 'ExportDefaultDeclaration' | 'ExportAllDeclaration' | 'TSEnumDeclaration' | 'TSTypeParameterDeclaration' | 'TSTypeAliasDeclaration' | 'TSInterfaceDeclaration' | 'TSCallSignatureDeclaration' | 'TSConstructSignatureDeclaration' | 'TSModuleDeclaration' | 'TSGlobalDeclaration' | 'TSImportEqualsDeclaration' | 'TSNamespaceExportDeclaration'; readonly list: false; }; }; ConditionalExpression: { readonly test: { readonly child: | 'Identifier' | 'ThisExpression' | 'ArrayExpression' | 'ObjectExpression' | 'TemplateLiteral' | 'TaggedTemplateExpression' | 'ComputedMemberExpression' | 'StaticMemberExpression' | 'PrivateFieldExpression' | 'CallExpression' | 'NewExpression' | 'ImportMeta' | 'NewTarget' | 'UpdateExpression' | 'UnaryExpression' | 'BinaryExpression' | 'PrivateInExpression' | 'LogicalExpression' | 'ConditionalExpression' | 'AssignmentExpression' | 'SequenceExpression' | 'AwaitExpression' | 'ChainExpression' | 'ParenthesizedExpression' | 'Function' | 'ArrowFunctionExpression' | 'YieldExpression' | 'Class' | 'ImportExpression' | 'V8IntrinsicExpression' | 'BooleanLiteral' | 'NullLiteral' | 'NumericLiteral' | 'StringLiteral' | 'BigIntLiteral' | 'RegExpLiteral' | 'JSXElement' | 'JSXFragment' | 'JSXMemberExpression' | 'JSXEmptyExpression' | 'TSAsExpression' | 'TSSatisfiesExpression' | 'TSNonNullExpression' | 'TSInstantiationExpression'; readonly list: false; }; readonly consequent: { readonly child: | 'Identifier' | 'ThisExpression' | 'ArrayExpression' | 'ObjectExpression' | 'TemplateLiteral' | 'TaggedTemplateExpression' | 'ComputedMemberExpression' | 'StaticMemberExpression' | 'PrivateFieldExpression' | 'CallExpression' | 'NewExpression' | 'ImportMeta' | 'NewTarget' | 'UpdateExpression' | 'UnaryExpression' | 'BinaryExpression' | 'PrivateInExpression' | 'LogicalExpression' | 'ConditionalExpression' | 'AssignmentExpression' | 'SequenceExpression' | 'AwaitExpression' | 'ChainExpression' | 'ParenthesizedExpression' | 'Function' | 'ArrowFunctionExpression' | 'YieldExpression' | 'Class' | 'ImportExpression' | 'V8IntrinsicExpression' | 'BooleanLiteral' | 'NullLiteral' | 'NumericLiteral' | 'StringLiteral' | 'BigIntLiteral' | 'RegExpLiteral' | 'JSXElement' | 'JSXFragment' | 'JSXMemberExpression' | 'JSXEmptyExpression' | 'TSAsExpression' | 'TSSatisfiesExpression' | 'TSNonNullExpression' | 'TSInstantiationExpression'; readonly list: false; }; readonly alternate: { readonly child: | 'Identifier' | 'ThisExpression' | 'ArrayExpression' | 'ObjectExpression' | 'TemplateLiteral' | 'TaggedTemplateExpression' | 'ComputedMemberExpression' | 'StaticMemberExpression' | 'PrivateFieldExpression' | 'CallExpression' | 'NewExpression' | 'ImportMeta' | 'NewTarget' | 'UpdateExpression' | 'UnaryExpression' | 'BinaryExpression' | 'PrivateInExpression' | 'LogicalExpression' | 'ConditionalExpression' | 'AssignmentExpression' | 'SequenceExpression' | 'AwaitExpression' | 'ChainExpression' | 'ParenthesizedExpression' | 'Function' | 'ArrowFunctionExpression' | 'YieldExpression' | 'Class' | 'ImportExpression' | 'V8IntrinsicExpression' | 'BooleanLiteral' | 'NullLiteral' | 'NumericLiteral' | 'StringLiteral' | 'BigIntLiteral' | 'RegExpLiteral' | 'JSXElement' | 'JSXFragment' | 'JSXMemberExpression' | 'JSXEmptyExpression' | 'TSAsExpression' | 'TSSatisfiesExpression' | 'TSNonNullExpression' | 'TSInstantiationExpression'; readonly list: false; }; }; SwitchStatement: { readonly test: { readonly child: | 'Identifier' | 'ThisExpression' | 'ArrayExpression' | 'ObjectExpression' | 'TemplateLiteral' | 'TaggedTemplateExpression' | 'ComputedMemberExpression' | 'StaticMemberExpression' | 'PrivateFieldExpression' | 'CallExpression' | 'NewExpression' | 'ImportMeta' | 'NewTarget' | 'UpdateExpression' | 'UnaryExpression' | 'BinaryExpression' | 'PrivateInExpression' | 'LogicalExpression' | 'ConditionalExpression' | 'AssignmentExpression' | 'SequenceExpression' | 'AwaitExpression' | 'ChainExpression' | 'ParenthesizedExpression' | 'Function' | 'ArrowFunctionExpression' | 'YieldExpression' | 'Class' | 'ImportExpression' | 'V8IntrinsicExpression' | 'BooleanLiteral' | 'NullLiteral' | 'NumericLiteral' | 'StringLiteral' | 'BigIntLiteral' | 'RegExpLiteral' | 'JSXElement' | 'JSXFragment' | 'JSXMemberExpression' | 'JSXEmptyExpression' | 'TSAsExpression' | 'TSSatisfiesExpression' | 'TSNonNullExpression' | 'TSInstantiationExpression'; readonly list: false; }; }; TryStatement: { readonly block: { readonly child: 'BlockStatement'; readonly list: false; }; readonly handler: { readonly child: 'CatchClause'; readonly list: false; }; readonly finalizer: { readonly child: 'BlockStatement'; readonly list: false; }; }; TSEnumDeclaration: { readonly id: { readonly child: 'Identifier'; readonly list: false; }; }; TSInterfaceDeclaration: { readonly id: { readonly child: 'Identifier'; readonly list: false; }; }; TSTypeAliasDeclaration: { readonly id: { readonly child: 'Identifier'; readonly list: false; }; }; MemberExpression: { readonly object: { readonly child: | 'Identifier' | 'ThisExpression' | 'ArrayExpression' | 'ObjectExpression' | 'TemplateLiteral' | 'TaggedTemplateExpression' | 'ComputedMemberExpression' | 'StaticMemberExpression' | 'PrivateFieldExpression' | 'CallExpression' | 'NewExpression' | 'ImportMeta' | 'NewTarget' | 'UpdateExpression' | 'UnaryExpression' | 'BinaryExpression' | 'PrivateInExpression' | 'LogicalExpression' | 'ConditionalExpression' | 'AssignmentExpression' | 'SequenceExpression' | 'AwaitExpression' | 'ChainExpression' | 'ParenthesizedExpression' | 'Function' | 'ArrowFunctionExpression' | 'YieldExpression' | 'Class' | 'ImportExpression' | 'V8IntrinsicExpression' | 'BooleanLiteral' | 'NullLiteral' | 'NumericLiteral' | 'StringLiteral' | 'BigIntLiteral' | 'RegExpLiteral' | 'JSXElement' | 'JSXFragment' | 'JSXMemberExpression' | 'JSXEmptyExpression' | 'TSAsExpression' | 'TSSatisfiesExpression' | 'TSNonNullExpression' | 'TSInstantiationExpression' | 'Super'; readonly list: false; }; readonly property: { readonly child: | 'Identifier' | 'ThisExpression' | 'ArrayExpression' | 'ObjectExpression' | 'TemplateLiteral' | 'TaggedTemplateExpression' | 'ComputedMemberExpression' | 'StaticMemberExpression' | 'PrivateFieldExpression' | 'CallExpression' | 'NewExpression' | 'ImportMeta' | 'NewTarget' | 'UpdateExpression' | 'UnaryExpression' | 'BinaryExpression' | 'PrivateInExpression' | 'LogicalExpression' | 'ConditionalExpression' | 'AssignmentExpression' | 'SequenceExpression' | 'AwaitExpression' | 'ChainExpression' | 'ParenthesizedExpression' | 'Function' | 'ArrowFunctionExpression' | 'YieldExpression' | 'Class' | 'ImportExpression' | 'V8IntrinsicExpression' | 'BooleanLiteral' | 'NullLiteral' | 'NumericLiteral' | 'StringLiteral' | 'BigIntLiteral' | 'RegExpLiteral' | 'JSXElement' | 'JSXFragment' | 'JSXMemberExpression' | 'JSXEmptyExpression' | 'TSAsExpression' | 'TSSatisfiesExpression' | 'TSNonNullExpression' | 'TSInstantiationExpression' | 'PrivateIdentifier'; readonly list: false; }; }; FunctionDeclaration: { readonly body: { readonly child: 'FunctionBody'; readonly list: false; }; readonly params: { readonly child: 'FormalParameter' | 'FormalParameterRest'; readonly list: true; }; readonly id: { readonly child: 'Identifier'; readonly list: false; }; }; FunctionExpression: { readonly body: { readonly child: 'FunctionBody'; readonly list: false; }; readonly params: { readonly child: 'FormalParameter' | 'FormalParameterRest'; readonly list: true; }; readonly id: { readonly child: 'Identifier'; readonly list: false; }; }; TSDeclareFunction: { readonly body: { readonly child: 'FunctionBody'; readonly list: false; }; readonly params: { readonly child: 'FormalParameter' | 'FormalParameterRest'; readonly list: true; }; readonly id: { readonly child: 'Identifier'; readonly list: false; }; }; ClassDeclaration: { readonly body: { readonly child: 'ClassBody'; readonly list: false; }; readonly id: { readonly child: 'Identifier'; readonly list: false; }; readonly superClass: { readonly child: | 'Identifier' | 'ThisExpression' | 'ArrayExpression' | 'ObjectExpression' | 'TemplateLiteral' | 'TaggedTemplateExpression' | 'ComputedMemberExpression' | 'StaticMemberExpression' | 'PrivateFieldExpression' | 'CallExpression' | 'NewExpression' | 'ImportMeta' | 'NewTarget' | 'UpdateExpression' | 'UnaryExpression' | 'BinaryExpression' | 'PrivateInExpression' | 'LogicalExpression' | 'ConditionalExpression' | 'AssignmentExpression' | 'SequenceExpression' | 'AwaitExpression' | 'ChainExpression' | 'ParenthesizedExpression' | 'Function' | 'ArrowFunctionExpression' | 'YieldExpression' | 'Class' | 'ImportExpression' | 'V8IntrinsicExpression' | 'BooleanLiteral' | 'NullLiteral' | 'NumericLiteral' | 'StringLiteral' | 'BigIntLiteral' | 'RegExpLiteral' | 'JSXElement' | 'JSXFragment' | 'JSXMemberExpression' | 'JSXEmptyExpression' | 'TSAsExpression' | 'TSSatisfiesExpression' | 'TSNonNullExpression' | 'TSInstantiationExpression'; readonly list: false; }; readonly decorators: { readonly child: 'Decorator'; readonly list: true; }; }; ClassExpression: { readonly body: { readonly child: 'ClassBody'; readonly list: false; }; readonly id: { readonly child: 'Identifier'; readonly list: false; }; readonly superClass: { readonly child: | 'Identifier' | 'ThisExpression' | 'ArrayExpression' | 'ObjectExpression' | 'TemplateLiteral' | 'TaggedTemplateExpression' | 'ComputedMemberExpression' | 'StaticMemberExpression' | 'PrivateFieldExpression' | 'CallExpression' | 'NewExpression' | 'ImportMeta' | 'NewTarget' | 'UpdateExpression' | 'UnaryExpression' | 'BinaryExpression' | 'PrivateInExpression' | 'LogicalExpression' | 'ConditionalExpression' | 'AssignmentExpression' | 'SequenceExpression' | 'AwaitExpression' | 'ChainExpression' | 'ParenthesizedExpression' | 'Function' | 'ArrowFunctionExpression' | 'YieldExpression' | 'Class' | 'ImportExpression' | 'V8IntrinsicExpression' | 'BooleanLiteral' | 'NullLiteral' | 'NumericLiteral' | 'StringLiteral' | 'BigIntLiteral' | 'RegExpLiteral' | 'JSXElement' | 'JSXFragment' | 'JSXMemberExpression' | 'JSXEmptyExpression' | 'TSAsExpression' | 'TSSatisfiesExpression' | 'TSNonNullExpression' | 'TSInstantiationExpression'; readonly list: false; }; readonly decorators: { readonly child: 'Decorator'; readonly list: true; }; }; } /** Alias route names, derived from the generated expansion table. */ type NativeVisitorAlias = Extract; type NativeVisitorRoute = NativeNodeType | NativeVisitorAlias; type ScalarValue = string | number | boolean | null; /** A declarative native match operation, typed by the field's wire value. */ /** A predicate value supplied when a plugin is bound, not when it is defined. * * Declared with `parameter(name)` inside a visitor contract and resolved by * `plugin.withParameters(values)`. Binding happens once per configuration, so the * bound plugin's plan is fixed by its identity and never depends on the file being * transformed. An unresolved parameter is a contract error, not a wildcard. */ interface PredicateParameter { readonly parameter: string; } type ScalarPredicate = | { equals: V | PredicateParameter; } | { oneOf: readonly V[] | PredicateParameter; } | { present: boolean; }; type ControlFlowCapability = 'skip' | 'stop' | 'stop-all' | 'nested-traverse' | 'dynamic-subscriptions'; type NodeId = number; type ScopeId = number; type SourceMapMode = 'line' | 'boundary' | 'character'; type MappingPolicy = 'Sourceless' | 'AnchorStart' | 'AnchorBoundaries' | 'Identity'; type EditEffect = 'none' | 'text-only' | 'expression-shape' | 'bindings' | 'module-structure' | 'whole-program'; type CoordinateSpace = 'original' | 'current' | 'generated'; type EditKind = | 'Replace' | 'Remove' | 'AppendLeft' | 'PrependLeft' | 'AppendRight' | 'PrependRight' | 'AddSourceMapLocation' | 'Prefix' | 'Prologue' | 'Suffix' | 'Move'; interface EditCommand { kind: EditKind; start: number; end: number; content?: string; /** Deferred content: literal text and source-range copies realized at commit * against the same phase's edits. Mutually exclusive with `content`. */ contentParts?: readonly ( | string | { start: number; end: number; } )[]; /** Relocation target for `Move` edits. */ destination?: number; mapping?: MappingPolicy; owner?: string; order?: number; names?: string[]; /** Coordinate system used by the edit. Existing callers default to `original`. */ coordinateSpace?: CoordinateSpace; } interface NativeEvent { sequence: number; side: 'enter' | 'exit'; id: NodeId; type: string; start: number; end: number; parentId?: NodeId; parentType?: string; scopeId: ScopeId; scopeParentId?: ScopeId; fields: { key: string; value: string | number | boolean; }[]; comments?: readonly NativeComment[]; } /** A parsed input comment. Ranges include delimiters; value omits them. */ interface NativeComment { readonly kind: 'line' | 'block'; readonly value: string; readonly start: number; readonly end: number; } interface EventBatch { events: NativeEvent[]; nodeCount: number; emittedCount: number; } interface NodeView { readonly id: NodeId; readonly type: string; readonly start: number; readonly end: number; readonly scopeId: ScopeId; readonly scopeParentId?: ScopeId; readonly parentId?: NodeId; readonly parentType?: string; readonly parentStart?: number; /** Scalar fields requested dynamically through a plugin plan are present as `unknown`. */ readonly [field: string]: unknown; } /** Typed node views for every concrete node type with generated field data. */ type NativeNodeMap = { [K in Extract]: NodeView & { readonly type: K; } & NativeNodeFields[K]; }; type KnownNodeType = keyof NativeNodeMap; type NodeOfType = T extends KnownNodeType ? NativeNodeMap[T] : NodeView & { readonly type: T; }; interface NodeSummary { id: NodeId; type: string; start?: number; end?: number; parentId?: NodeId; parentType?: string; parentStart?: number; } interface SemanticReferenceView extends NodeView { readonly type: 'Identifier'; readonly read: boolean; readonly write: boolean; readonly memberWrite: boolean; } interface SourceLocation { start: Position; end: Position; } interface Position { line: number; column: number; } interface NativeVlqMap { mappings: string; names: string[]; } interface FunctionMap { names: string[]; mappings: string; } interface Diagnostic { code: string; message: string; plugin?: string; phase?: string; start?: number; end?: number; } interface ParseClassification { syntax: 'js' | 'jsx' | 'ts' | 'tsx' | 'dts' | 'flow' | 'unknown'; supported: boolean; reason: string; } interface NativeTransformResult { status: 'complete'; code: string; map: NativeVlqMap; functionMap: FunctionMap | null; metadata: Record; diagnostics: Diagnostic[]; } interface NativeBailoutResult { status: 'bailout'; reason: string; source: string; diagnostics: Diagnostic[]; } type TransformResult = NativeTransformResult | NativeBailoutResult; interface QueryRequest { globals?: { name: string; references?: boolean; }[]; imports?: boolean; exports?: boolean; constants?: NodeId[]; calls?: { callee: string; globalOnly?: boolean; staticArguments?: boolean; }[]; captures?: { functionId: NodeId; programBindings?: boolean; }[]; bindings?: { name?: string; scopeId?: ScopeId; reads?: boolean; writes?: boolean; }[]; } interface QueryResult { globals: Record< string, { references: NodeSummary[]; } >; imports: NodeView[]; exports: NodeView[]; constants: Record; calls: Record; captures: Record; bindings: { name: string; scopeId: ScopeId; declaration: NodeSummary | null; references: SemanticReferenceView[]; }[]; } interface InspectRequest { nodeId: NodeId; fields: readonly NativeFieldKey[]; } /** * Per-file lifecycle settings returned by `prepare()`. Route requirements live on * typed visitor contracts; context requirements live on the plugin contract. */ interface TransformOptions { /** Base directory for absolute diagnostic filenames. Defaults to process.cwd(). */ projectRoot?: string; sourceMapMode?: SourceMapMode; parser?: 'auto' | 'js' | 'jsx' | 'ts' | 'tsx' | 'dts'; allowBroadVisitors?: boolean; inputSourceMap?: NativeVlqMap & { sources?: string[]; sourcesContent?: (string | null)[]; }; parserAdapter?: string; /** Collect function ranges from the pristine input for consumers that symbolicate first. */ functionMap?: boolean; /** * Consumer-owned, per-transform data exposed to plugin preparation, * lifecycle hooks, and visitor contexts. This is deliberately excluded from * Noxcturnal's serializable cache keys; plugins own any configuration keys * derived from it. */ pluginData?: unknown; } interface ParserAdapter { /** Stable implementation identity used in transform cache keys. */ name: string; version: string; /** Serializable configuration that affects emitted code or mappings. */ options?: unknown; supports(route: ParseClassification): boolean; compile(source: string, filename: string, options: TransformOptions): ParserAdapterResult; } type ParserAdapterResult = | { status: 'complete'; code: string; map: NativeVlqMap; /** Plain syntax emitted for the normal native pipeline. */ syntax: 'js' | 'jsx'; metadata?: Record; } | { status: 'unsupported'; reason: string; diagnostics?: Diagnostic[]; }; /** Type-syntax handling requested from the planned native preflight phase. */ type PreflightTypeScriptMode = 'strip'; /** JSX handling requested from the planned native preflight phase. */ type PreflightJsxMode = | 'preserve' | 'classic' | 'classic-development' | 'automatic' | 'automatic-if-present' | 'automatic-development'; /** Runtime-helper ABI requested from the planned native preflight phase. */ interface PreflightHelpers { mode: 'runtime' | 'inline'; moduleName?: string; version?: string; } /** Version-coupled React Compiler options exposed through Noxcturnal's conformance layer. */ interface PreflightReactCompiler { compilationMode: 'infer' | 'syntax' | 'annotation' | 'all'; panicThreshold: 'none' | 'critical_errors' | 'all_errors'; target: '17' | '18' | '19'; enableResetCacheOnSourceFileChanges: boolean; customOptOutDirectives?: readonly string[]; } /** React Fast Refresh instrumentation emitted by Oxc's native JSX pass. */ interface PreflightReactRefresh { refreshReg?: string; refreshSig?: string; emitFullSignatures?: boolean; } /** Focused Metro-compatible post-processing. Each operation is independently selectable. */ interface PreflightOptimize { /** Top-level bindings are private to a module wrapper. Affects DCE only, not parsing. */ moduleContext?: boolean | undefined; constantFolding?: boolean | undefined; deadCodeElimination?: boolean | undefined; } /** * Native syntax transforms. Most toggles compose independently, but focused * class-feature transforms share one native class-lowering representation and * can lower sibling class syntax present in the same source. TypeScript is * normalized before these transforms. RegExp Unicode lowering also expands * Unicode property escapes. */ interface PreflightTransforms { blockScoping?: boolean | undefined; classes?: boolean | undefined; /** Apply TypeScript-style legacy decorator semantics. */ legacyDecorators?: boolean | undefined; destructuring?: boolean | undefined; parameters?: boolean | undefined; forOf?: boolean | undefined; explicitResourceManagement?: boolean | undefined; classStaticBlock?: boolean | undefined; classProperties?: | { loose: boolean; } | false | undefined; logicalAssignmentOperators?: boolean | undefined; optionalChaining?: | { loose: boolean; } | false | undefined; nullishCoalescingOperator?: | { loose: boolean; } | false | undefined; exportNamespaceFrom?: boolean | undefined; optionalCatchBinding?: boolean | undefined; objectRestSpread?: | { loose: boolean; useBuiltIns: boolean; } | false | undefined; asyncGeneratorFunctions?: boolean | undefined; asyncFunctions?: boolean | undefined; exponentiationOperator?: boolean | undefined; /** Native private state uses one stable loose representation. */ privateMethods?: boolean | undefined; /** Native private state uses one stable loose representation. */ privatePropertyInObject?: boolean | undefined; regexpSticky?: boolean | undefined; regexpUnicode?: boolean | undefined; regexpUnicodePropertyEscapes?: boolean | undefined; regexpDotAll?: boolean | undefined; regexpNamedCaptureGroups?: boolean | undefined; regexpLookBehind?: boolean | undefined; regexpMatchIndices?: boolean | undefined; regexpUnicodeSets?: boolean | undefined; } /** * Declarative configuration for one native phase (`PipelinePhase.native`). * * An absent or empty plan disables that phase. `defineNativePipeline` validates * and freezes the plan; `src/preflight` executes it. */ interface PreflightPlan { transforms?: PreflightTransforms; optimize?: PreflightOptimize; reactCompiler?: PreflightReactCompiler; reactRefresh?: PreflightReactRefresh; typescript?: PreflightTypeScriptMode; jsx?: PreflightJsxMode; /** Emit pure annotations for generated JSX calls. Defaults to false for development modes. */ jsxPure?: boolean; /** Reject JSX namespace tags and attributes. Matches Babel's default of true. */ jsxThrowIfNamespace?: boolean; jsxImportSource?: string; jsxPragma?: string; jsxPragmaFrag?: string; helpers?: PreflightHelpers; compact?: boolean; comments?: boolean; } /** * Derived products that a phase may demand from an immutable source version. * * Keep implication rules here rather than scattering them through the phase * scheduler. The representation is a bit set so plans remain cheap to cache. */ declare enum ArtifactDemand { None = 0, RenderedText = 1, SyntaxRoute = 2, StructuralParents = 4, StructuralChildren = 8, DirectScalarFields = 16, LexicalScopes = 32, BindingsReferences = 64, ModuleFacts = 128, RealizedMap = 256, } interface NativePreflightOptionsInput { functionMap?: boolean; sourceFilename?: string; optimizationModuleContext?: boolean; reactCompiler?: boolean; reactCompilerCompilationMode?: string; reactCompilerPanicThreshold?: string; reactCompilerTarget?: string; reactCompilerEnableResetCacheOnSourceFileChanges?: boolean; reactCompilerCustomOptOutDirectives?: string[]; reactRefresh?: boolean; reactRefreshReg?: string; reactRefreshSig?: string; reactRefreshEmitFullSignatures?: boolean; typescript?: string; jsx?: string; jsxPure?: boolean; jsxThrowIfNamespace?: boolean; jsxImportSource?: string; jsxPragma?: string; jsxPragmaFrag?: string; helpersMode?: string; helpersModuleName?: string; helpersVersion?: string; compact?: boolean; comments?: boolean; constantFolding?: boolean; deadCodeElimination?: boolean; blockScoping?: boolean; classes?: boolean; legacyDecorators?: boolean; destructuring?: boolean; parameters?: boolean; forOf?: boolean; explicitResourceManagement?: boolean; classStaticBlock?: boolean; classProperties?: boolean; classPropertiesLoose?: boolean; logicalAssignmentOperators?: boolean; optionalChaining?: boolean; optionalChainingLoose?: boolean; nullishCoalescingOperator?: boolean; nullishCoalescingOperatorLoose?: boolean; exportNamespaceFrom?: boolean; optionalCatchBinding?: boolean; objectRestSpread?: boolean; objectRestSpreadLoose?: boolean; objectRestSpreadUseBuiltIns?: boolean; asyncGeneratorFunctions?: boolean; asyncFunctions?: boolean; exponentiationOperator?: boolean; privateMethods?: boolean; privatePropertyInObject?: boolean; regexpSticky?: boolean; regexpUnicode?: boolean; regexpUnicodePropertyEscapes?: boolean; regexpDotAll?: boolean; regexpNamedCaptureGroups?: boolean; regexpLookBehind?: boolean; regexpMatchIndices?: boolean; regexpUnicodeSets?: boolean; } interface NativePreflightResultOutput { status: 'complete' | 'unsupported' | 'error'; functionMap?: FunctionMap; changed: boolean; normalizedJavascript: boolean; jsx: boolean; reason?: string; /** Present only on the free-function path; the pipeline session keeps it resident. */ code?: string; /** Present only on the free-function path; the pipeline session keeps it resident. */ map?: Buffer; diagnostics: string[]; errorLocation?: { line: number; column: number; }; helpersUsed: string[]; } declare const COMPILED_MANIFEST: unique symbol; interface NativeCompiledManifestBinding { readonly [COMPILED_MANIFEST]: true; } type NativeManifest = Buffer | NativeCompiledManifestBinding; interface NativeBinding$1 { NativeCompiledManifest: new (manifest: Buffer) => NativeCompiledManifestBinding; originalSourcePosition( mappings: string, line: number, column: number ): { line: number; column: number; } | null; NativeParsedSource: new ( source: string, filename: string ) => { syntaxFacts(): string[]; functionMap(): FunctionMap; materializeRouted(manifest: NativeManifest): Buffer; materialize( retentionManifest: NativeManifest, initialRouteManifest: NativeManifest ): NativeIndexedSessionBinding; validate(): void; close(): void; }; NativeSourceText: new (source: string) => { generateUid(name: string, filename: string): string; whitespace(): number[]; indent(prefix: string): string; needsLineBoundary(offset: number): boolean; startsLine(offset: number): boolean; linePrefixIntervals(start: number, end: number): Buffer; insertionSuffixes( texts: readonly string[], composites: readonly (readonly ( | string | { start: number; end: number; } )[])[] ): Buffer; locations(start: number, end: number): number[]; locationOffset(line: number, column: number): number; matches( search: string, flags: string | undefined, all: boolean, replacement?: string, start?: number ): { start: number; end: number; captures: string[]; content?: string; }[]; }; sourceHints(source: string): string[]; validateIdentifier(name: string): void; validateProgram(source: string, filename: string): void; NativeIndexedSession: new ( source: string, filename: string, retentionManifest?: NativeManifest, initialRouteManifest?: NativeManifest, buildInitialRoute?: boolean ) => { generateUid(name: string): string | null; nextRoutedPacked( manifest: NativeManifest, rootStart?: number, rootEnd?: number, rootId?: number ): Buffer; traversalIntervalsBuffer(): Buffer; queryGlobalsBuffer(names: string[]): Buffer; hasGlobal(name: string): boolean; globalBindingReferencesBuffer(name: string): Buffer; queryBindingsBatch( requests: { name: string; scopeId: number; }[] ): ReturnType; queryBindings( name?: string, scopeId?: number, reads?: boolean, writes?: boolean ): { name: string; scopeId: number; declarationId?: number; declarationStart?: number; declarationEnd?: number; declarationParentId?: number; references: { id: number; start: number; end: number; scopeId: number; parentId?: number; parentType?: string; parentStart?: number; read: boolean; write: boolean; memberWrite: boolean; }[]; }[]; bindingRenamePlan( name: string, scopeId: number ): { targets: { start: number; end: number; kind: number; }[]; exports: { start: number; end: number; }[]; }; bindingRenameExportNames(start: number): string[]; bindingIndexBuffer(): Buffer; scopeParentsBuffer(): Buffer; scopeMetadataBuffer(): Buffer; programBodyOffsets(): [ prepend: number, append: number, needsEofLineBoundary: number, prependSeparator: number, appendSeparator: number, ]; queryCapturesBatch( functionIds: number[], programBindings?: number[] ): { functionId: number; references: { id: number; start: number; end: number; scopeId: number; bindingScopeId: number; parentId?: number; parentType?: string; name: string; read: boolean; write: boolean; }[]; }[]; inspectPackedBuffer(nodeIds: number[]): Buffer; nodeSummaryBuffer(nodeId: number): Buffer; routedChildRoots( data: Uint32Array, flags: number, plan: Uint32Array, stopped: Uint8Array ): number[]; childrenRoutedPackedBuffer( data: Uint32Array, flags: number, plan: Uint32Array, stopped: Uint8Array ): { edges: Buffer; events: Buffer; } | null; childrenPackedBuffer( parentIds: number[], parentTypes: string[], parentTypeIds: number[], recursive?: boolean ): { /** Groups of [parentId, count, ...[childId, roleId]], including empty parents. */ edges: Buffer; events: Buffer; }; retentionDebugSummary(): { retainedEdgeCount: number; scalarFieldWordCount: number; scalarStringCount: number; retainedIndexBytes: number; }; queryConstants(nodeIds: number[]): { id: number; kind: string; value: string; }[]; queryCalls( calleeName: string, globalOnly?: boolean, staticArguments?: boolean ): { id: number; start: number; end: number; scopeId: number; calleeName: string; calleeGlobal: boolean; staticArgument?: string; }[]; queryCallsBatch( requests: { callee: string; globalOnly?: boolean; staticArguments?: boolean; }[] ): ReturnType[]; queryNodesPackedBuffer(nodeTypes: string[]): Buffer; scopeParentId(scopeId: number): number | null; close(): void; memoryUsage(): number; commitPacked( data: Buffer, sourceMapMode?: string ): { code: string; map: NativeVlqMap; }; commitDecoded( data: Buffer, sourceMapMode?: string ): { code: string; map: Buffer; codeChanged: boolean; mapChanged: boolean; }; }; /** * A transform pipeline's resident source. Native phases and visitor commits * mutate the held source and accumulate map layers natively; only the final * composed map, and the source text a visitor phase asks for, ever cross out. */ NativePipelineSession: new ( filename: string, source: string ) => { runNativePhases(optionsList: NativePreflightOptionsInput[]): NativePreflightResultOutput[]; commitDecoded( data: Buffer, sourceMapMode?: string ): { codeChanged: boolean; mapChanged: boolean; }; originalPosition( line: number, column: number ): { line: number; column: number; } | null; sourceText(): string; finish( inputMappings?: string, inputNames?: string[] ): { code: string; map: NativeVlqMap | null; }; }; classify(filename: string, source: string): ParseClassification; nativePreflightTransform( source: string, filename: string, options: NativePreflightOptionsInput ): NativePreflightResultOutput; /** * Run an all-native pipeline (no visitor phases) in a single crossing. The * per-phase results plus the one final `{ code, map }` — `code`/`map` absent * when a phase bailed, so the caller bails on the offending result. */ runNativePipeline( filename: string, source: string, optionsList: NativePreflightOptionsInput[], inputMappings?: string, inputNames?: string[] ): { results: NativePreflightResultOutput[]; code?: string; map?: NativeVlqMap | null; }; commitPackedBuffer( source: string, filename: string, data: Buffer, sourceMapMode?: string ): { code: string; map: NativeVlqMap; }; commitDecodedBuffer( source: string, filename: string, data: Buffer, sourceMapMode?: string ): { code: string; map: Buffer; codeChanged: boolean; mapChanged: boolean; }; composeDecodedChain(layers: Buffer[]): NativeVlqMap; composeMappings(outer: string, inner: string, outerNameCount: number): string; materializeRoutedBuffer( source: string, filename: string, manifest: NativeManifest, rootStart?: number, rootEnd?: number ): Buffer; /** * Throws for internal failures and invalid constructs — a `var` binding in a * match pattern, say. `bailed` is for everything the erasure merely does not * cover, where the parser adapter is expected to take over; a throw means it * would fail too, so the message is the answer. */ nativeFlowErase( source: string, filename: string, sourceMapMode?: string ): { /** `unsupported` when the binary was built without the `flow_parser` feature. */ status: 'erased' | 'bailed' | 'unsupported'; code?: string; map?: NativeVlqMap; reason?: string; detail?: string; erasedBytes: number; spanCount: number; }; generateFunctionMap(source: string, filename: string): FunctionMap; validateExpression(code: string, parserMode?: string): void; validateStatements(code: string, parserMode?: string): void; } declare const native: NativeBinding$1; type NativeIndexedSessionBinding = InstanceType; declare class NativeTransformError extends Error { #private; readonly diagnostics: Diagnostic[]; /** Owning plugin names of a conflict, structured for fallback telemetry. */ readonly owners?: readonly string[] | undefined; readonly code: 'NOXCTURNAL_TRANSFORM_ERROR'; readonly cause?: unknown; filename?: string; loc?: { line: number; column: number; }; constructor( message: string, diagnostics: Diagnostic[], /** Owning plugin names of a conflict, structured for fallback telemetry. */ owners?: readonly string[] | undefined, options?: { cause?: unknown; phase?: string; reason?: string; loc?: { line: number; column: number; }; } ); /** @internal Attach caller source information once, without replacing the thrown error. */ setSourceContext(filename: string, source: string): this; readonly phase?: string; readonly reason?: string; } interface PrepareContext { /** Original caller filename, preserving its extension and relative form. */ readonly filename: string; readonly options: TransformOptions; readonly parser: ReturnType; readonly sourceHints: ReadonlySet; readonly pluginData: unknown; } interface NativeScope { readonly id: number; readonly parentId: number | null; readonly parent: NativeScope | null; readonly path: NativeNodePath | null; hasBinding(name: string): boolean; hasGlobal(name: string): boolean; getBinding(name: string): NativeBinding | null; getBindings(names: readonly string[]): NativeBinding[]; getProgramParent(): NativeScope; push(content: Code): void; generateUid(name?: string): string; rename(name: string, replacement?: string): string; } interface NativeBinding { readonly name: string; readonly global: boolean; readonly scopeId?: number; readonly declaration: NodeSummary | null; readonly references: readonly SemanticReferenceView[]; readonly path: NativeNodePath | null; readonly scope: NativeScope | null; } interface PluginContext { /** Original caller filename, preserving its extension and relative form. */ readonly filename: string; readonly phase: string; readonly pluginData: unknown; readonly source: string; readonly metadata: MetadataWriter; query(request: QueryRequest): QueryResult; inspect(requests: readonly InspectRequest[]): NodeView[]; diagnostic(diagnostic: Omit): void; unsupported(reason: string): never; stopAll(): void; subscribeRemaining(...types: string[]): void; /** Revisit the program with visitors whose handlers require no state. */ revisitProgram(visitors: readonly DefinedVisitor[]): void; /** Revisit the program with stateful visitors; their state is mandatory. */ revisitProgram(visitors: readonly DefinedVisitor[], state: State): void; /** * Insert statements after the Program's shebang, leading comments, and directive * prologue. Insertions join the body stream in first-call order, inside output * wrappers created with `editor.prepend()` and `editor.append()`. */ prependToProgram(code: Code): void; /** * Insert statements after the final Program statement and before its trailing * comments and output suffixes created with `editor.append()`. */ appendToProgram(code: Code): void; /** * Insert a helper at the end of the directive prologue, once per transform. * * The registry lives on the transform, so re-ensuring a key in a later phase is a * no-op — including across plugins when they deliberately share a key. Ensuring the * same key with different realized content is a loud error naming both owners. * Helpers land one per line in first-ensure order. Keys are namespaced by * convention (`pluginName/helper`) unless deliberately shared. */ ensureHelper(key: string, code: Code): void; /** * Replace a range under a keyed, idempotent intent, once per transform. * * The registry lives on the transform: re-ensuring a key with identical realized * content — from any plugin, or from a later phase — is a no-op, so plugins that * deliberately share a key claim the same tokens through one edit owned by the * first registrant. The same key with divergent realized content (or a different * range in the same phase) is a loud error naming both owners. Distinct keys on * overlapping ranges stay ordinary overlap conflicts. */ ensureReplace(key: string, start: number, end: number, code: Code): void; /** A provenance-carrying fragment of the current phase's source. */ sourceSlice(start: number, end: number): SourceFragment; readonly code: CodeFactory; readonly editor: NativeEditor; } /** * Edits to the current phase's source. * * Replacing a range (`update`, `overwrite`, `replace`, `replaceAll`) maps the new text * to the start of the range it replaced. Inserting text (`append*`, `prepend*`) leaves * it unmapped, because it replaces nothing. Pass `sourceless` to `overwrite` for a * range replacement whose text has no counterpart in the input, such as a module * rewritten into a generated proxy. */ interface NativeEditor { append(content: string): void; prepend(content: string): void; appendLeft(offset: number, content: string): void; prependLeft(offset: number, content: string): void; appendRight(offset: number, content: string): void; prependRight(offset: number, content: string): void; update(start: number, end: number, content: string): void; /** Replace a range, choosing how the new text maps. Defaults to `anchor-start`. */ overwrite(start: number, end: number, content: string, mapping?: CodeFragment['mapping']): void; remove(start: number, end: number): void; move(start: number, end: number, destination: number): void; reset(start: number, end: number): void; indent(prefix?: string): void; trim(): void; trimStart(): void; trimEnd(): void; addSourceMapLocation(offset: number): void; hasChanged(): boolean; replace( search: string | RegExp, replacement: string | ((match: string, ...groups: string[]) => string) ): void; replaceAll( search: string | RegExp, replacement: string | ((match: string, ...groups: string[]) => string) ): void; slice(start?: number, end?: number): string; toString(): string; isEmpty(): boolean; } interface CodeFragment { code: string; mapping: 'sourceless' | 'anchor-start' | 'anchor-boundaries' | 'identity'; names?: readonly string[]; } /** * A provenance-carrying slice of the current phase's source. * * Returned by `path.getSource()`. Replacements built from source fragments keep the * referenced ranges original-source-backed, so edits from other plugins inside those * ranges compose instead of conflicting, and source maps stay exact. Coercing a * fragment to a string throws: copying source text without provenance is the explicit * escape hatch `path.sourceText()` / `fragment.text()`. */ interface SourceFragment { readonly kind: 'source'; readonly start: number; readonly end: number; /** Copy the slice as plain text, deliberately discarding provenance. */ text(): string; } /** Template output mixing literal text, code fragments, and source fragments. */ interface CompositeFragment { readonly kind: 'composite'; readonly parts: readonly (string | CodeFragment | SourceFragment)[]; } /** Any value accepted where replacement content is expected. */ type Code = string | CodeFragment | SourceFragment | CompositeFragment; interface CodeFactory { identifier(name: string): CodeFragment; stringLiteral(value: string): CodeFragment; literal(value: string | number | boolean | bigint | null): CodeFragment; template(parts: TemplateStringsArray, ...values: readonly (Code | NativeNodePath)[]): Code; parseExpression(code: string, parserMode?: TransformOptions['parser']): CodeFragment; parseStatements(code: string, parserMode?: TransformOptions['parser']): CodeFragment; } interface MetadataWriter { set(key: string, value: unknown): void; get(key: string): unknown; } type TransformDecision = | { status: 'irrelevant'; } | { status: 'supported'; analysis: Analysis; } | { status: 'unsupported'; reason: string; location?: SourceLocation; }; interface NativeNodePath { readonly id: number; readonly type: string; readonly start: number; readonly end: number; readonly node: T; readonly parent: NodeSummary | null; readonly parentPath: NativeNodePath | null; readonly scope: NativeScope; readonly context: PluginContext; getSource(): SourceFragment; /** Return this anonymous function/class declaration with a generated binding name. * The visitor must request declarationNameAnchor and declarationNamePrefix in its * route contract. */ withDeclarationName(name: string): CompositeFragment; /** The node's source as plain text, without provenance. */ sourceText(): string; getComments(relation: 'inner'): readonly NativeComment[]; snapshot(options?: SnapshotOptions): Readonly; getLocation(): SourceLocation; is(type: TType): this is NativeNodePath>; get(key: string): NativeNodePath | readonly NativeNodePath[] | null; getChild(key: string): NativeNodePath | null; getChildList(key: string): readonly NativeNodePath[]; getChildren(): readonly NativeNodePath[]; /** Match a static member chain. Dots separate properties; escape literal dots * and backslashes within a property with a backslash. Ordinary dotted paths * keep their spelling. Declare fields: ['memberPath'] for static or computed * members or ['name'] for identifiers. An identifier under a memberPath * declaration, and any other node, returns false. Matching never parses * source text. */ matchesPattern(pattern: string, allowPartial?: boolean): boolean; findParent(predicate: (path: NativeNodePath) => boolean): NativeNodePath | null; find(predicate: (path: NativeNodePath) => boolean): NativeNodePath | null; getFunctionParent(): NativeNodePath | null; getProgramParent(): NativeNodePath | null; replaceWith(code: Code): void; replaceWithMultiple(code: readonly Code[]): void; update(code: Code): void; overwrite(code: Code): void; remove(): void; insertBefore(code: Code): void; insertAfter(code: Code): void; /** Relocate this node's source range: contained edits from any plugin apply * inside the moved content wherever it lands. */ moveTo(destination: number): void; unshiftContainer(key: 'body', code: Code | readonly Code[]): void; pushContainer(key: 'body', code: Code | readonly Code[]): void; addComment(position: 'leading' | 'trailing' | 'inner', content: string, line?: boolean): void; buildCodeFrameError(message: string): NativeTransformError; prependToBody(code: Code): void; appendToBody(code: Code): void; skip(): void; stop(): void; /** Traverse with visitors whose handlers require no state. */ traverse(visitors: readonly DefinedVisitor[]): void; /** Traverse with stateful visitors; the state they require is mandatory. */ traverse(visitors: readonly DefinedVisitor[], state: State): void; subscribeWithin(types: NativeVisitorRoute | readonly NativeVisitorRoute[]): void; subscribeForScope(types: NativeVisitorRoute | readonly NativeVisitorRoute[]): void; unsupported(reason: string): never; } interface SnapshotOptions { fields?: readonly string[]; ancestry?: 'none' | 'parent'; } type AncestryCapability = 'parent' | 'findParent' | 'functionParent' | 'programParent' | number; /** A visitor route: one route name or a `|`-joined composite. */ type VisitorRouteSpec = NativeVisitorRoute | `${NativeVisitorRoute}|${string}`; /** The segments of a composite route, as a union. */ type RouteSegments = Route extends `${infer Head}|${infer Rest}` ? Head | RouteSegments : Route; /** Compile-time mirror of `concreteRouteTypes`: every composite segment must be a * route name. Valid specs resolve to `unknown` (an identity intersection); invalid * segments resolve to an explanatory literal the compiler surfaces. */ type ValidRouteSpec = Route extends `${infer Head}|${infer Rest}` ? Head extends NativeVisitorRoute ? ValidRouteSpec : `Unknown route segment '${Head}'` : Route extends NativeVisitorRoute ? unknown : `Unknown route segment '${Route}'`; /** The concrete node types one route segment can deliver. */ type SegmentNodeTypes = Segment extends keyof NativeRouteTypes ? NativeRouteTypes[Segment] : Extract; /** The concrete node types a route (or composite) can deliver. */ type RouteNodeTypes = SegmentNodeTypes>; /** A segment's field row: explicit route rows cover aliases and specializations; * concrete carriers resolve straight to their generated node row. */ type SegmentFieldsRow = Segment extends keyof NativeRouteFields ? NativeRouteFields[Segment] : Segment extends keyof NativeNodeFields ? NativeNodeFields[Segment] : {}; /** Payload fields declarable for a route: any field some concrete type in the * expansion emits (union semantics, matching how the native side realizes them). */ type DeclaredFieldKey = RouteSegments extends infer Segment ? Segment extends string ? Extract, NativeFieldKey> : never : never; /** A segment's predicate row. Concrete carriers derive it from their node row: * the schema validates that predicate fields and typed fields coincide, and * predicates ignore emission optionality (a missing field simply never matches). */ type SegmentPredicateRow = Segment extends keyof NativeRoutePredicates ? NativeRoutePredicates[Segment] : Segment extends keyof NativeNodeFields ? { [K in keyof NativeNodeFields[Segment]]-?: Exclude; } : {}; /** Union of the segments' predicate rows; `keyof` over it intersects the keys, * mirroring the runtime rule that a predicate must hold for every concrete type. */ type RoutePredicateRows = SegmentPredicateRow>; type RoutePredicateKeys = keyof RoutePredicateRows & string; /** Native match predicates declarable for a route, typed by the field's wire * value. Routes whose expansion shares no predicate fields accept none. */ type RouteWhere = { readonly [K in RoutePredicateKeys]?: ScalarPredicate< Extract[K], ScalarValue> >; }; type SegmentChildRow = Segment extends keyof NativeChildRoles ? NativeChildRoles[Segment] : {}; type RouteChildRows = SegmentChildRow>; /** Child roles declarable for a composite route are the union of roles on its * compatible variants. Runtime preparation attaches each role only to concrete * parents that actually expose it. */ type ChildRoleNamesOf = Row extends object ? keyof Row & string : never; type RouteChildRoleNames = ChildRoleNamesOf>; /** The concrete node types a role may deliver across the route's segments. */ type RouteChildTypes = RouteChildRows extends infer Row ? Row extends object ? Role extends keyof Row ? Row[Role] extends { readonly child: infer Child; } ? Child : never : never : never : never; type RouteChildIsList = RouteChildRows extends infer Row ? Row extends object ? Role extends keyof Row ? Row[Role] extends { readonly list: infer IsList; } ? IsList : never : never : never : never; /** A native match condition. Related nodes are inspected without granting callback * access to their data. All conditions are conjunctive; list children match any * element unless an explicit zero-based index is supplied. */ interface VisitorSelector { readonly route: Route; readonly where?: RouteWhere; readonly parent?: VisitorSelector; readonly children?: Readonly>; } interface ChildSelector extends VisitorSelector { /** Only valid on list roles. Counts AST children in the generated role order. */ readonly index?: number; } type ValidateSelector = { readonly where?: RouteWhere & (Selector extends { where: infer Where; } ? { readonly [K in keyof Where]: K extends RoutePredicateKeys ? RouteWhere[K] : never; } : unknown); } & (Selector extends { parent: infer Parent; } ? { readonly parent: ValidateSelectorEntry; } : unknown) & (Selector extends { children: infer Children; } ? { readonly children: { readonly [Role in keyof Children]: Role extends RouteChildRoleNames ? ValidateSelectorChild : `Unknown child role '${Role & string}' for route '${Route}'`; }; } : unknown); type ValidateSelectorChild = Entry extends { route: infer R extends string; } ? [RouteNodeTypes] extends [RouteChildTypes] ? ValidateSelectorEntry & (Entry extends { index: number; } ? RouteChildIsList extends true ? unknown : { readonly index: never; } : unknown) : `Child role '${Role}' cannot deliver '${R}'` : never; type ValidateSelectorEntry = Entry extends { route: infer R extends string; } ? { readonly route: R & ValidRouteSpec; } & ValidateSelector & { readonly [ K in Exclude< keyof Entry, 'route' | 'where' | 'parent' | 'children' | (AllowIndex extends true ? 'index' : never) > ]: never; } : never; /** Normalized immutable selector stored beside a visitor's hydration contract. */ interface StoredVisitorSelector { readonly route: VisitorRouteSpec; readonly where?: Readonly>>; readonly parent?: StoredVisitorSelector; readonly children?: Readonly< Record< string, StoredVisitorSelector & { readonly index?: number; } > >; } /** One declared child role: the expected route and the fields its paths carry. */ interface ChildContract { route: VisitorRouteSpec; fields?: readonly NativeFieldKey[]; /** Nested declarations are preserved recursively on every returned child path. * Named entries authorize named access; `*` authorizes enumeration only. */ children?: Readonly>; } /** Ancestor routes reuse the ordinary field/child contract language. Runtime * predicates are deliberately absent: hydration must be determined statically. */ type AncestorRouteContract = { fields?: readonly DeclaredFieldKey[]; children?: Readonly | '*', ChildContract>>>; }; type AncestorRouteMap = Readonly>>>; interface AncestryContract { mode: AncestryCapability; routes?: Routes; } interface VisitorContract< Route extends VisitorRouteSpec = VisitorRouteSpec, Routes extends AncestorRouteMap = {}, > { /** Scalar payload fields transferred to the callback's `path.node`. */ fields?: readonly DeclaredFieldKey[]; /** Parsed comment relations transferred with this route. */ comments?: 'inner'; /** Native match predicates. Match-only fields are not callback-visible. */ where?: RouteWhere; scope?: boolean; ancestry?: AncestryContract; children?: Readonly | '*', ChildContract>>>; controlFlow?: readonly ControlFlowCapability[]; /** Typed visitors this handler may run via `path.traverse`; their payload and * predicate fields join the phase plan so the retained index can serve them. */ nested?: readonly DefinedVisitor[]; } /** Deep contract validation applied in `defineVisitor`'s signature: child roles * must exist on the route, a role's declared route must stay within what the role * delivers, and child fields must be declarable for the child's route. Valid * contracts resolve to identity; violations surface an explanatory literal. */ type ValidateContract = Contract extends { children: infer Children; } ? { readonly children: ValidateChildren; } & ValidateAncestry : ValidateAncestry; type ValidateAncestry = Contract extends { ancestry: { routes: infer Routes; }; } ? { readonly ancestry: { readonly routes: ValidateAncestorRoutes; }; } : unknown; type ValidateAncestorRoutes = { readonly [Route in keyof Routes]: Route extends string ? ValidRouteSpec extends string ? ValidRouteSpec : Routes[Route] extends { where: unknown; } ? 'Ancestry routes cannot declare where predicates' : ValidateAncestorRouteShape : 'Ancestry route keys must be strings'; }; type ValidateAncestorRouteShape = { readonly fields?: readonly DeclaredFieldKey[]; } & (Entry extends { children: infer Children; } ? { readonly children: ValidateChildren; } : unknown); type ValidateChildren = { readonly [Role in keyof Children]: ValidateChildEntry; }; type ValidateChildEntry = Role extends '*' ? Entry extends { route: infer ChildRoute extends string; } ? ValidRouteSpec extends string ? ValidRouteSpec : ValidateChildShape : never : Role extends RouteChildRoleNames ? Entry extends { route: infer ChildRoute extends string; } ? ValidRouteSpec extends string ? ValidRouteSpec : [RouteNodeTypes] extends [RouteChildTypes] ? ValidateChildShape : `Child role '${Role}' of route '${Route}' cannot deliver route '${ChildRoute}'` : never : `Unknown child role '${Role}' for route '${Route}'`; type ValidateChildShape = { readonly fields?: readonly DeclaredFieldKey[]; } & (Entry extends { children: infer Grandchildren; } ? { readonly children: ValidateChildren; } : unknown); /** Base identity always present in routed records. */ interface ContractNodeBase { readonly id: number; readonly type: string; readonly start: number; readonly end: number; } /** The callback-visible node: base identity, the segment's concrete `type` * literal(s), and the declared payload fields with generated value types. * Composite routes produce a union discriminated by `type`. */ type ContractNode = RouteSegments extends infer Segment ? Segment extends string ? ContractNodeBase & { readonly type: SegmentNodeTypes; } & Pick, Extract>> : never : never; /** The `type` literal(s) a path's node can carry, `string` when unknown. */ type PathNodeTypeOf = Node extends { readonly type: infer T extends string; } ? T : string; type PathIsTypes = string extends PathNodeTypeOf ? NativeNodeType : PathNodeTypeOf; /** Narrow a (possibly union) node to the members whose `type` covers `T`. */ type NarrowNodeByType = Node extends { readonly type: infer U extends string; } ? string extends U ? NodeOfType : T extends U ? Node & { readonly type: T; } : never : never; /** The always-available path surface: identity, source access, edits, diagnostics. */ interface ContractPathBase { readonly id: number; readonly type: PathNodeTypeOf; readonly start: number; readonly end: number; readonly node: Node; readonly context: PluginContext; getSource(): SourceFragment; withDeclarationName(name: string): CompositeFragment; sourceText(): string; snapshot(options?: SnapshotOptions): Readonly; getLocation(): SourceLocation; is>( type: TType ): this is this & { readonly type: TType; readonly node: NarrowNodeByType; }; /** Match a static member chain. Dots separate properties; escape literal dots * and backslashes within a property with a backslash. Ordinary dotted paths * keep their spelling. Declare fields: ['memberPath'] for static or computed * members or ['name'] for identifiers. An identifier under a memberPath * declaration, and any other node, returns false. Matching never parses * source text. */ matchesPattern(pattern: string, allowPartial?: boolean): boolean; replaceWith(code: Code): void; replaceWithMultiple(code: readonly Code[]): void; update(code: Code): void; overwrite(code: Code): void; remove(): void; insertBefore(code: Code): void; insertAfter(code: Code): void; moveTo(destination: number): void; unshiftContainer(key: 'body', code: Code | readonly Code[]): void; pushContainer(key: 'body', code: Code | readonly Code[]): void; prependToBody(code: Code): void; appendToBody(code: Code): void; addComment(position: 'leading' | 'trailing' | 'inner', content: string, line?: boolean): void; buildCodeFrameError(message: string): NativeTransformError; unsupported(reason: string): never; } /** * A path derived from a typed visitor's path — ancestors reached through * `parentPath`/`findParent`/`getFunctionParent`/`getProgramParent`. Derived paths * share the owning route's runtime, so they carry exactly the owner's declared * capabilities and a generic node view rather than a child contract's payload. */ type AncestryRoutesOf = Owner extends { ancestry: { routes: infer Routes; }; } ? Routes extends object ? Routes : {} : {}; type DeclaredAncestorNodeTypes = { [Route in keyof AncestryRoutesOf & string]: RouteNodeTypes; }[keyof AncestryRoutesOf & string]; type DeclaredAncestorFields = { [Route in keyof AncestryRoutesOf & string]: Type extends RouteNodeTypes ? AncestryRoutesOf[Route] extends { fields: readonly (infer Field extends string)[]; } ? Field : never : never; }[keyof AncestryRoutesOf & string]; /** Build one variant per concrete node type. This unions payloads from overlapping * aliases and concrete routes before adding the discriminant, so narrowing an * ancestor never leaves two incompatible variants with the same `type`. */ type DeclaredAncestorNode = { [Type in DeclaredAncestorNodeTypes]: ContractNode< Type, DeclaredAncestorFields >; }[DeclaredAncestorNodeTypes]; type AncestorNode = [DeclaredAncestorNode] extends [never] ? ContractNodeBase & { readonly type: NativeNodeType; } : | DeclaredAncestorNode | (ContractNodeBase & { readonly type: Exclude>>; }); type DerivedNodePath = ContractPathBase> & ScopePart & DerivedAncestryPart & AncestorChildrenPart & ControlPart; interface ParentAccess { readonly parent: NodeSummary | null; readonly parentPath: DerivedNodePath | null; } interface FindParentAccess { findParent(predicate: (path: DerivedNodePath) => boolean): DerivedNodePath | null; find(predicate: (path: DerivedNodePath) => boolean): DerivedNodePath | null; } interface FunctionParentAccess { getFunctionParent(): DerivedNodePath | null; } interface ProgramParentAccess { getProgramParent(): DerivedNodePath | null; } interface NestedTraverseAccess { /** Traverse with visitors whose handlers require no state. */ traverse(visitors: readonly DefinedVisitor[]): void; /** Traverse with stateful visitors; the state they require is mandatory. */ traverse(visitors: readonly DefinedVisitor[], state: State): void; } interface SubscribeAccess { subscribeWithin(types: NativeVisitorRoute | readonly NativeVisitorRoute[]): void; subscribeForScope(types: NativeVisitorRoute | readonly NativeVisitorRoute[]): void; } type ScopePart = Contract extends { scope: true; } ? { readonly scope: NativeScope; } : {}; type AncestryPart = Contract extends { ancestry: { mode: infer Mode; }; } ? Mode extends 'parent' ? ParentAccess : Mode extends 'findParent' ? ParentAccess & FindParentAccess : Mode extends 'functionParent' ? ParentAccess & FindParentAccess & FunctionParentAccess : Mode extends 'programParent' | number ? ParentAccess & FindParentAccess & FunctionParentAccess & ProgramParentAccess : {} : {}; type DerivedAncestryPart = Contract extends { ancestry: { mode: infer Mode; }; } ? Mode extends 'parent' ? { readonly parent: NodeSummary | null; } : AncestryPart : {}; type DeclaredAncestorChildren = { [Route in keyof AncestryRoutesOf & string]: AncestryRoutesOf[Route] extends { children: infer Children; } ? Children : never; }[keyof AncestryRoutesOf & string]; type AncestorChildRoles = DeclaredAncestorChildren extends infer Children ? Children extends object ? keyof Children & string : never : never; type AncestorChildEntry = DeclaredAncestorChildren extends infer Children ? Children extends object ? Role extends keyof Children ? NonNullable extends ChildContract ? NonNullable : never : never : never : never; type AncestorChildrenPart = [DeclaredAncestorChildren] extends [never] ? {} : { getChild>( role: Role ): ChildPathOf, Owner> | null; getChildList>( role: Role ): readonly ChildPathOf, Owner>[]; get>( role: Role ): | ChildPathOf, Owner> | readonly ChildPathOf, Owner>[] | null; }; type ControlPart = Contract extends { controlFlow: readonly (infer C extends string)[]; } ? ('skip' extends C ? { skip(): void; } : {}) & ('stop' extends C ? { stop(): void; } : {}) & ('nested-traverse' extends C ? NestedTraverseAccess : {}) & ('dynamic-subscriptions' extends C ? SubscribeAccess : {}) : {}; type CommentsPart = Contract extends { comments: 'inner'; } ? { getComments(relation: 'inner'): readonly NativeComment[]; } : {}; type ChildFieldsOf = C extends { fields: readonly (infer F extends string)[]; } ? F : never; /** Child paths share the visitor's runtime, so they inherit its scope, ancestry, * and control-flow capabilities, and expose their own declared child chains. */ type ChildPathOf = ContractPathBase< ContractNode> > & ScopePart & AncestryPart & ControlPart & ChildrenPart; type DeclaredRoleNames = Exclude, '*'>; /** Declared roles steered to `getChild`/`getChildList` by generated cardinality; * roles with mixed cardinality across a composite keep only `get`. */ type SingleChildRoles = { [Role in DeclaredRoleNames]: [RouteChildIsList] extends [false] ? Role : never; }[DeclaredRoleNames]; type ListChildRoles = { [Role in DeclaredRoleNames]: [RouteChildIsList] extends [true] ? Role : never; }[DeclaredRoleNames]; type ChildrenPart = Contract extends { children: infer Children extends Readonly>; } ? { getChild>( role: Role ): ChildPathOf, Owner> | null; getChildList>( role: Role ): readonly ChildPathOf, Owner>[]; get>( role: Role ): | ChildPathOf, Owner> | readonly ChildPathOf, Owner>[] | null; } & ('*' extends keyof Children ? { getChildren(): readonly ChildPathOf, Owner>[]; } : {}) : {}; type ContractFieldsOf = Contract extends { fields: readonly (infer F extends string)[]; } ? F : never; /** The capability-narrowed path a typed visitor callback receives. */ type ContractPath< Route extends VisitorRouteSpec, Contract extends VisitorContract, > = ContractPathBase>> & ScopePart & AncestryPart & ChildrenPart & CommentsPart & ControlPart; type TypedVisitorHandler< Route extends VisitorRouteSpec, Contract extends VisitorContract, State, > = | ((path: ContractPath, state: State) => void) | { enter?(path: ContractPath, state: State): void; exit?(path: ContractPath, state: State): void; }; /** Normalized, route-erased runtime shape of one typed visitor. */ interface DefinedVisitor { readonly route: VisitorRouteSpec; readonly contract: StoredVisitorContract; readonly selector?: StoredVisitorSelector; readonly enter: ((path: never, state: State) => void) | undefined; readonly exit: ((path: never, state: State) => void) | undefined; } /** The contract as stored: normalized, frozen, identity-stable per visitor. */ interface StoredVisitorContract { readonly fields: readonly NativeFieldKey[]; readonly comments: 'inner' | undefined; readonly where: Readonly>> | undefined; readonly scope: boolean; readonly ancestry: | Readonly<{ mode: AncestryCapability; routes: Readonly< Record< string, { readonly fields: readonly NativeFieldKey[]; readonly children: Readonly> | undefined; } > >; }> | undefined; readonly children: Readonly> | undefined; readonly controlFlow: readonly ControlFlowCapability[]; readonly nested: readonly DefinedVisitor[]; } /** * Define a typed visitor: the contract beside the callback that uses it. * * The route is an explicit generic anchor; the contract narrows the callback's * path (declared payload fields on `node`, capability-gated scope/ancestry/ * children/control-flow methods); state is typed by annotating the handler's * second parameter. Definitions are frozen data consumed at plugin compile time — * no wrapper runs per event. */ declare function defineVisitor< Route extends VisitorRouteSpec, const Contract extends VisitorContract, State = unknown, const Selector extends VisitorSelector = VisitorSelector, >( routeOrSelector: | (Route & ValidRouteSpec) | (Selector & { readonly route: Route; } & ValidateSelectorEntry), contract: Contract & ValidateContract, handler: TypedVisitorHandler ): DefinedVisitor; /** Concrete AST kinds, plus function modifiers needed by compatibility repairs. */ type SyntaxFeature = NativeNodeType | 'AsyncFunction' | 'GeneratorFunction'; /** * Plugin-level requirements and typings for `context`: syntax applicability, * metadata ownership, and semantic queries. The visitor contract types the path; * the plugin contract types the context. */ interface PluginContract { /** Run this plugin only when at least one feature occurs in the current phase * input. Rejected plugins skip every lifecycle hook and contribute no retained * data. Comments and string contents do not count as syntax. */ syntax?: { readonly anyOf: readonly SyntaxFeature[]; }; metadata?: { writes?: readonly string[]; reads?: readonly string[]; }; /** Opt in to query categories. Nonempty array requests enable that category * for dynamically chosen selectors; true enables imports/exports. A sibling's * declarations never authorize this plugin's queries. */ queries?: readonly QueryRequest[]; } type ContractMetadataWrites = Contract extends { metadata: { writes: readonly (infer Writes extends string)[]; }; } ? Writes : string; type ContractMetadataReads = Contract extends { metadata: { reads: readonly (infer Reads extends string)[]; }; } ? Reads : string; interface ContractMetadataWriter { set(key: Writes, value: unknown): void; get(key: Reads): unknown; } /** `PluginContext` with metadata keys narrowed by the plugin contract. */ type PluginContextFor = Omit & { readonly metadata: ContractMetadataWriter< ContractMetadataWrites, ContractMetadataReads | ContractMetadataWrites >; }; /** * A reusable transform unit. * * `prepare` declares the native data required for the current file. Lifecycle * hooks and visitors then operate on that prepared snapshot, while edits stay * buffered until the containing phase completes. */ interface NativePlugin< State = unknown, Options = unknown, Analysis = unknown, Contract extends PluginContract = PluginContract, > { name: string; options?: Options; /** Plugin-level context requirements: metadata ownership and queries. */ contract?: Contract; createState?(context: PrepareContext): State; pre?(context: PluginContextFor, state: State): void; analyze?(context: PluginContextFor, state: State): TransformDecision | void; apply?(context: PluginContextFor, analysis: Analysis, state: State): void; /** Typed per-visitor contracts created with `defineVisitor`. */ visitors?: readonly DefinedVisitor[]; post?(context: PluginContextFor, state: State): void; cleanup?(reason: 'complete' | 'bailout' | 'error', state: State): void; /** Conservative effect of this plugin's editor and native actions. */ editEffect?: EditEffect; } type NativePluginDefinition< State = unknown, Options = unknown, Analysis = unknown, Contract extends PluginContract = PluginContract, > = NativePlugin; interface DefinedNativePlugin< State = unknown, Options = unknown, Analysis = unknown, Contract extends PluginContract = PluginContract, > extends NativePlugin { withOptions(options: Options): DefinedNativePlugin; /** Resolve the predicate parameters declared by this plugin's visitor contracts. * * Interned on the values, so binding the same configuration twice returns the * same plugin and its compiled routes stay keyed by identity. */ withParameters( values: Readonly> ): DefinedNativePlugin; } /** * A group of plugins that observe one immutable parse of the source. * * Edits from every plugin in the phase are committed together. A following * phase sees the committed source through a new native parse. */ interface PipelinePhase { name: string; /** JavaScript visitor plugins, mutually exclusive with `native`. Each definition * occurs at most once per phase; definitions may be reused in later phases. */ plugins?: readonly NativePlugin[]; /** Fused parse/transform/codegen phase executed entirely in Rust. */ native?: PreflightPlan; editEffect?: EditEffect; requiresPrintedInput?: boolean; requiresFreshSemantics?: boolean; requiresRealizedMap?: boolean; } interface CompiledPhasePlan { name: string; editEffect: EditEffect; requiresPrintedInput: boolean; requiresFreshSemantics: boolean; requiresRealizedMap: boolean; /** Closed bit set of derived artifacts declared before per-file routing. */ artifactDemand: ArtifactDemand; } /** An immutable, reusable transform configuration. */ interface NativePipeline { phases: readonly PipelinePhase[]; } type NativePipelineDefinition = NativePipeline; declare class TransformSyntaxError extends SyntaxError { readonly filename: string; readonly loc: { line: number; column: number; }; readonly codeFrame: string; readonly name = 'SyntaxError'; readonly type = 'SyntaxError'; readonly code = 'TRANSFORM_SYNTAX_ERROR'; constructor( message: string, filename: string, loc: { line: number; column: number; }, codeFrame: string ); } /** Define and freeze a reusable plugin, including its visitor table. */ declare function defineNativePlugin< State = undefined, Options = undefined, Analysis = unknown, const Contract extends PluginContract = PluginContract, >( plugin: NativePluginDefinition ): DefinedNativePlugin; /** Declare a predicate value supplied when the plugin is bound. * * `where: { name: { oneOf: parameter('identifierKeys') } }` keeps the operator and * the matched field in the contract while deferring the values. Bind them once per * configuration with `plugin.withParameters({ identifierKeys: [...] })`; equal * values return the same plugin, so the bound plugin's plan is fixed by identity * and never depends on the file being transformed. */ declare function parameter(name: string): PredicateParameter; declare function defineNativePipeline(pipeline: NativePipelineDefinition): NativePipeline; /** * Define a reusable phase once. Composing this phase into multiple pipelines * preserves its identity, allowing phase preparation and route compilation to * remain cached while consumers cheaply select a per-file phase sequence. */ declare function definePipelinePhase(phase: PipelinePhase): PipelinePhase; /** * Compose previously defined phases into an interned pipeline. Repeated phase * sequences return the same pipeline object, so both phase- and pipeline-level * compilation can be paid once without retaining per-file configuration. */ declare function composeNativePipeline(phases: readonly PipelinePhase[]): NativePipeline; /** Compile conservative phase boundaries without parsing a source file. */ declare function compilePhasePlan(pipeline: NativePipeline): readonly CompiledPhasePlan[]; declare function pipelineCacheKey( pipeline: NativePipeline, filename: string, options?: TransformOptions ): string; declare function transformClassificationCacheKey( pipeline: NativePipeline, filename: string, source: string, options?: TransformOptions ): string; declare function registerParserAdapter(adapter: ParserAdapter): () => void; interface NodeTypeLike { readonly type: string; readonly nodeKind?: string; } type NodeTypeRoute = | NativeNodeType | 'Function' | 'Statement' | 'Declaration' | 'Expression' | 'MemberExpression' | 'MetaProperty'; type NodeTypeForRoute = Route extends keyof NativeRouteTypes ? NativeRouteTypes[Route] : Route; /** Generic route matcher for dynamic or uncommon checks. Prefer the generated * specialized predicates below in hot paths. */ declare function isNodeType( node: Node, route: Route ): node is Node & { readonly type: NodeTypeForRoute; }; declare function isFunctionType(type: string): type is NativeRouteTypes['Function']; declare function isFunction( node: Node ): node is Node & { readonly type: NativeRouteTypes['Function']; }; declare function isStatementType(type: string): type is NativeRouteTypes['Statement']; /** Collapsed Function/Class nodes require a retained nodeKind to identify their category. */ declare function isStatement( node: Node ): node is Node & { readonly type: NativeRouteTypes['Statement']; }; declare function isDeclarationType(type: string): type is NativeRouteTypes['Declaration']; /** Collapsed Function/Class nodes require a retained nodeKind to identify their category. */ declare function isDeclaration( node: Node ): node is Node & { readonly type: NativeRouteTypes['Declaration']; }; declare function isExpressionType(type: string): type is NativeRouteTypes['Expression']; /** Collapsed Function/Class nodes require a retained nodeKind to identify their category. */ declare function isExpression( node: Node ): node is Node & { readonly type: NativeRouteTypes['Expression']; }; declare function isMemberExpressionType(type: string): type is NativeRouteTypes['MemberExpression']; declare function isMemberExpression( node: Node ): node is Node & { readonly type: NativeRouteTypes['MemberExpression']; }; declare function isMetaPropertyType(type: string): type is NativeRouteTypes['MetaProperty']; declare function isMetaProperty( node: Node ): node is Node & { readonly type: NativeRouteTypes['MetaProperty']; }; /** Execute a native pipeline synchronously. */ declare function transform( source: string, filename: string, pipeline: NativePipeline, options?: TransformOptions ): TransformResult; declare const classify: (filename: string, source: string) => ParseClassification; export { NativeTransformError, TransformSyntaxError, classify, compilePhasePlan, composeNativePipeline, defineNativePipeline, defineNativePlugin, definePipelinePhase, defineVisitor, isDeclaration, isDeclarationType, isExpression, isExpressionType, isFunction, isFunctionType, isMemberExpression, isMemberExpressionType, isMetaProperty, isMetaPropertyType, isNodeType, isStatement, isStatementType, parameter, pipelineCacheKey, registerParserAdapter, transform, transformClassificationCacheKey, }; export type { AncestryCapability, ChildContract, ChildSelector, Code, CodeFactory, CodeFragment, CompiledPhasePlan, CompositeFragment, ContractMetadataWriter, ContractNode, ContractNodeBase, ContractPath, ContractPathBase, ControlFlowCapability, CoordinateSpace, DefinedNativePlugin, DefinedVisitor, Diagnostic, EditCommand, EditEffect, EditKind, EventBatch, FunctionMap, InspectRequest, KnownNodeType, MappingPolicy, MetadataWriter, NativeBailoutResult, NativeBinding, NativeComment, NativeEditor, NativeEvent, NativeFieldKey, NativeNodeMap, NativeNodePath, NativeNodeType, NativePipeline, NativePipelineDefinition, NativePlugin, NativePluginDefinition, NativeScope, NativeTransformResult, NativeVisitorAlias, NativeVisitorRoute, NativeVlqMap, NodeId, NodeOfType, NodeSummary, NodeTypeForRoute, NodeTypeLike, NodeTypeRoute, NodeView, ParseClassification, ParserAdapter, ParserAdapterResult, PipelinePhase, PluginContext, PluginContextFor, PluginContract, Position, PredicateParameter, PreflightHelpers, PreflightJsxMode, PreflightPlan, PreflightReactCompiler, PreflightTransforms, PreflightTypeScriptMode, PrepareContext, QueryRequest, QueryResult, ScalarPredicate, ScalarValue, ScopeId, SemanticReferenceView, SnapshotOptions, SourceFragment, SourceLocation, SourceMapMode, StoredVisitorContract, StoredVisitorSelector, SyntaxFeature, TransformDecision, TransformOptions, TransformResult, TypedVisitorHandler, VisitorContract, VisitorRouteSpec, VisitorSelector, };