diff --git a/lib/binding_web/tree-sitter-web.d.ts b/lib/binding_web/tree-sitter-web.d.ts index 7ddae952..80084c11 100644 --- a/lib/binding_web/tree-sitter-web.d.ts +++ b/lib/binding_web/tree-sitter-web.d.ts @@ -37,7 +37,7 @@ declare module 'web-tree-sitter' { export type Logger = ( message: string, - params: {[param: string]: string}, + params: { [param: string]: string }, type: "parse" | "lex" ) => void; @@ -48,6 +48,7 @@ declare module 'web-tree-sitter' { ) => string | null; export interface SyntaxNode { + id: number; tree: Tree; type: string; isNamed: boolean; @@ -131,8 +132,33 @@ declare module 'web-tree-sitter' { readonly version: number; readonly fieldCount: number; - fieldNameForId(fieldId: number): string | null - fieldIdForName(fieldName: string): number | null + fieldNameForId(fieldId: number): string | null; + fieldIdForName(fieldName: string): number | null; + query(source: string): Query; + } + + interface QueryCapture { + name: string; + node: SyntaxNode; + } + + interface QueryMatch { + pattern: number; + captures: QueryCapture[]; + } + + interface PredicateResult { + operator: string; + operands: { name: string; type: string }[]; + } + + class Query { + captureNames: string[]; + + delete(): void; + matches(node: SyntaxNode, startPosition?: Point, endPosition?: Point): QueryMatch[]; + captures(node: SyntaxNode, startPosition?: Point, endPosition?: Point): QueryCapture[]; + predicatesForPattern(patternIndex: number): PredicateResult[]; } }