web-tree-sitter.d.ts 6.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182
  1. /**
  2. * Local type override for web-tree-sitter.
  3. *
  4. * The upstream types declare children/namedChildren as (Node | null)[],
  5. * but in practice they never contain null entries. This override uses
  6. * non-nullable arrays to match native tree-sitter's API and avoid
  7. * pervasive null-check changes across the extraction pipeline.
  8. *
  9. * This file takes precedence over node_modules/web-tree-sitter/web-tree-sitter.d.ts
  10. * because TypeScript resolves local declarations first.
  11. */
  12. declare module 'web-tree-sitter' {
  13. export interface Point {
  14. row: number;
  15. column: number;
  16. }
  17. export interface Range {
  18. startPosition: Point;
  19. endPosition: Point;
  20. startIndex: number;
  21. endIndex: number;
  22. }
  23. export interface Edit {
  24. startPosition: Point;
  25. oldEndPosition: Point;
  26. newEndPosition: Point;
  27. startIndex: number;
  28. oldEndIndex: number;
  29. newEndIndex: number;
  30. }
  31. export type ParseCallback = (index: number, position: Point) => string | undefined;
  32. export interface ParseOptions {
  33. includedRanges?: Range[];
  34. progressCallback?: (state: { currentOffset: number; hasError: boolean }) => void;
  35. }
  36. export interface EmscriptenModule {
  37. [key: string]: any;
  38. }
  39. export class Parser {
  40. language: Language | null;
  41. static init(moduleOptions?: EmscriptenModule): Promise<void>;
  42. constructor();
  43. delete(): void;
  44. setLanguage(language: Language | null): this;
  45. parse(callback: string | ParseCallback, oldTree?: Tree | null, options?: ParseOptions): Tree | null;
  46. reset(): void;
  47. getIncludedRanges(): Range[];
  48. getTimeoutMicros(): number;
  49. setTimeoutMicros(timeout: number): void;
  50. setLogger(callback: ((message: string, isLex: boolean) => void) | boolean | null): this;
  51. getLogger(): ((message: string, isLex: boolean) => void) | null;
  52. }
  53. export class Language {
  54. types: string[];
  55. fields: (string | null)[];
  56. get name(): string | null;
  57. get version(): number;
  58. get abiVersion(): number;
  59. get fieldCount(): number;
  60. get stateCount(): number;
  61. fieldIdForName(fieldName: string): number | null;
  62. fieldNameForId(fieldId: number): string | null;
  63. idForNodeType(type: string, named: boolean): number | null;
  64. get nodeTypeCount(): number;
  65. nodeTypeForId(typeId: number): string | null;
  66. nodeTypeIsNamed(typeId: number): boolean;
  67. nodeTypeIsVisible(typeId: number): boolean;
  68. get supertypes(): number[];
  69. subtypes(supertype: number): number[];
  70. nextState(stateId: number, typeId: number): number;
  71. lookaheadIterator(stateId: number): any;
  72. query(source: string): any;
  73. static load(input: string | Uint8Array): Promise<Language>;
  74. }
  75. export class Tree {
  76. language: Language;
  77. copy(): Tree;
  78. delete(): void;
  79. get rootNode(): Node;
  80. rootNodeWithOffset(offsetBytes: number, offsetExtent: Point): Node;
  81. edit(edit: Edit): void;
  82. walk(): TreeCursor;
  83. getChangedRanges(other: Tree): Range[];
  84. getIncludedRanges(): Range[];
  85. }
  86. export class Node {
  87. id: number;
  88. startIndex: number;
  89. startPosition: Point;
  90. tree: Tree;
  91. get typeId(): number;
  92. get grammarId(): number;
  93. get type(): string;
  94. get grammarType(): string;
  95. get isNamed(): boolean;
  96. get isExtra(): boolean;
  97. get isError(): boolean;
  98. get isMissing(): boolean;
  99. get hasChanges(): boolean;
  100. get hasError(): boolean;
  101. get endIndex(): number;
  102. get endPosition(): Point;
  103. get text(): string;
  104. get parseState(): number;
  105. get nextParseState(): number;
  106. equals(other: Node): boolean;
  107. child(index: number): Node | null;
  108. namedChild(index: number): Node | null;
  109. childForFieldId(fieldId: number): Node | null;
  110. childForFieldName(fieldName: string): Node | null;
  111. fieldNameForChild(index: number): string | null;
  112. fieldNameForNamedChild(index: number): string | null;
  113. childrenForFieldName(fieldName: string): Node[];
  114. childrenForFieldId(fieldId: number): Node[];
  115. firstChildForIndex(index: number): Node | null;
  116. firstNamedChildForIndex(index: number): Node | null;
  117. get childCount(): number;
  118. get namedChildCount(): number;
  119. get firstChild(): Node | null;
  120. get firstNamedChild(): Node | null;
  121. get lastChild(): Node | null;
  122. get lastNamedChild(): Node | null;
  123. // Override: non-nullable arrays (tree-sitter never returns null in these)
  124. get children(): Node[];
  125. get namedChildren(): Node[];
  126. descendantsOfType(types: string | string[], startPosition?: Point, endPosition?: Point): Node[];
  127. get nextSibling(): Node | null;
  128. get previousSibling(): Node | null;
  129. get nextNamedSibling(): Node | null;
  130. get previousNamedSibling(): Node | null;
  131. get descendantCount(): number;
  132. get parent(): Node | null;
  133. childWithDescendant(descendant: Node): Node | null;
  134. descendantForIndex(start: number, end?: number): Node | null;
  135. namedDescendantForIndex(start: number, end?: number): Node | null;
  136. descendantForPosition(start: Point, end?: Point): Node | null;
  137. namedDescendantForPosition(start: Point, end?: Point): Node | null;
  138. walk(): TreeCursor;
  139. edit(edit: Edit): void;
  140. toString(): string;
  141. }
  142. export class TreeCursor {
  143. copy(): TreeCursor;
  144. delete(): void;
  145. get currentNode(): Node;
  146. get currentFieldId(): number;
  147. get currentFieldName(): string | null;
  148. get currentDepth(): number;
  149. get currentDescendantIndex(): number;
  150. get nodeType(): string;
  151. get nodeTypeId(): number;
  152. get nodeStateId(): number;
  153. get nodeId(): number;
  154. get nodeIsNamed(): boolean;
  155. get nodeIsMissing(): boolean;
  156. get nodeText(): string;
  157. get startPosition(): Point;
  158. get endPosition(): Point;
  159. get startIndex(): number;
  160. get endIndex(): number;
  161. gotoFirstChild(): boolean;
  162. gotoLastChild(): boolean;
  163. gotoParent(): boolean;
  164. gotoNextSibling(): boolean;
  165. gotoPreviousSibling(): boolean;
  166. gotoDescendant(goalDescendantIndex: number): void;
  167. gotoFirstChildForIndex(goalIndex: number): boolean;
  168. gotoFirstChildForPosition(goalPosition: Point): boolean;
  169. reset(node: Node): void;
  170. resetTo(cursor: TreeCursor): void;
  171. }
  172. }