From a0d0ba970937a1fb218fef02080d4173e1722028 Mon Sep 17 00:00:00 2001 From: George Fraser Date: Mon, 27 May 2019 15:08:29 +0100 Subject: [PATCH 1/3] Add type definitions This is based on https://github.com/tree-sitter/node-tree-sitter/blob/master/tree-sitter.d.ts with slight modifications because web-tree-sitter has a slightly different interface than node-tree-sitter --- lib/binding_web/tree-sitter-web.d.ts | 116 +++++++++++++++++++++++++++ 1 file changed, 116 insertions(+) create mode 100644 lib/binding_web/tree-sitter-web.d.ts diff --git a/lib/binding_web/tree-sitter-web.d.ts b/lib/binding_web/tree-sitter-web.d.ts new file mode 100644 index 00000000..a75c84f1 --- /dev/null +++ b/lib/binding_web/tree-sitter-web.d.ts @@ -0,0 +1,116 @@ +declare module 'web-tree-sitter' { + class Parser { + static init(): Promise; + parse(input: string | Parser.Input, previousTree?: Parser.Tree): Parser.Tree; + getLanguage(): any; + setLanguage(language: any): void; + getLogger(): Parser.Logger; + setLogger(logFunc: Parser.Logger): void; + } + + namespace Parser { + export type Point = { + row: number; + column: number; + }; + + export type Range = { + start: Point; + end: Point; + }; + + export type Edit = { + startIndex: number; + oldEndIndex: number; + newEndIndex: number; + startPosition: Point; + oldEndPosition: Point; + newEndPosition: Point; + }; + + export type Logger = ( + message: string, + params: {[param: string]: string}, + type: "parse" | "lex" + ) => void; + + export interface Input { + seek(index: number): void; + read(): any; + } + + export interface SyntaxNode { + tree: Tree; + type: string; + isNamed: boolean; + text: string; + startPosition: Point; + endPosition: Point; + startIndex: number; + endIndex: number; + parent: SyntaxNode | null; + children: Array; + namedChildren: Array; + childCount: number; + namedChildCount: number; + firstChild: SyntaxNode | null; + firstNamedChild: SyntaxNode | null; + lastChild: SyntaxNode | null; + lastNamedChild: SyntaxNode | null; + nextSibling: SyntaxNode | null; + nextNamedSibling: SyntaxNode | null; + previousSibling: SyntaxNode | null; + previousNamedSibling: SyntaxNode | null; + + hasChanges(): boolean; + hasError(): boolean; + equals(other: SyntaxNode): boolean; + isMissing(): boolean; + toString(): string; + child(index: number): SyntaxNode | null; + namedChild(index: number): SyntaxNode | null; + + descendantForIndex(index: number): SyntaxNode; + descendantForIndex(startIndex: number, endIndex: number): SyntaxNode; + namedDescendantForIndex(index: number): SyntaxNode; + namedDescendantForIndex(startIndex: number, endIndex: number): SyntaxNode; + descendantForPosition(position: Point): SyntaxNode; + descendantForPosition(startPosition: Point, endPosition: Point): SyntaxNode; + namedDescendantForPosition(position: Point): SyntaxNode; + namedDescendantForPosition(startPosition: Point, endPosition: Point): SyntaxNode; + + walk(): TreeCursor; + } + + export interface TreeCursor { + nodeType: string; + nodeText: string; + nodeIsNamed: boolean; + startPosition: Point; + endPosition: Point; + startIndex: number; + endIndex: number; + readonly currentNode: SyntaxNode + + reset(node: SyntaxNode): void + gotoParent(): boolean; + gotoFirstChild(): boolean; + gotoFirstChildForIndex(index: number): boolean; + gotoNextSibling(): boolean; + } + + export interface Tree { + readonly rootNode: SyntaxNode; + + edit(delta: Edit): Tree; + walk(): TreeCursor; + getChangedRanges(other: Tree): Range[]; + getEditedRange(other: Tree): Range; + } + namespace Language { + function load(url: string): Promise + } + } + + export = Parser + } From d4597e14f4687bfab2a5db8d1cee12dc808817b3 Mon Sep 17 00:00:00 2001 From: George Fraser Date: Mon, 27 May 2019 15:10:43 +0100 Subject: [PATCH 2/3] Reference tree-sitter-web.d.ts in package.json --- lib/binding_web/package.json | 1 + 1 file changed, 1 insertion(+) diff --git a/lib/binding_web/package.json b/lib/binding_web/package.json index fccb710d..00cbb741 100644 --- a/lib/binding_web/package.json +++ b/lib/binding_web/package.json @@ -3,6 +3,7 @@ "version": "0.15.2", "description": "Tree-sitter bindings for the web", "main": "tree-sitter.js", + "types": "tree-sitter-web.d.ts", "directories": { "test": "test" }, From 0fe67dc8b4202e248dd32a2366a7bd5cb27f3668 Mon Sep 17 00:00:00 2001 From: George Fraser Date: Tue, 28 May 2019 23:01:41 +0100 Subject: [PATCH 3/3] Dedent --- lib/binding_web/tree-sitter-web.d.ts | 228 +++++++++++++-------------- 1 file changed, 114 insertions(+), 114 deletions(-) diff --git a/lib/binding_web/tree-sitter-web.d.ts b/lib/binding_web/tree-sitter-web.d.ts index a75c84f1..e2ec3a66 100644 --- a/lib/binding_web/tree-sitter-web.d.ts +++ b/lib/binding_web/tree-sitter-web.d.ts @@ -1,116 +1,116 @@ declare module 'web-tree-sitter' { - class Parser { - static init(): Promise; - parse(input: string | Parser.Input, previousTree?: Parser.Tree): Parser.Tree; - getLanguage(): any; - setLanguage(language: any): void; - getLogger(): Parser.Logger; - setLogger(logFunc: Parser.Logger): void; - } - - namespace Parser { - export type Point = { - row: number; - column: number; - }; - - export type Range = { - start: Point; - end: Point; - }; - - export type Edit = { - startIndex: number; - oldEndIndex: number; - newEndIndex: number; - startPosition: Point; - oldEndPosition: Point; - newEndPosition: Point; - }; - - export type Logger = ( - message: string, - params: {[param: string]: string}, - type: "parse" | "lex" - ) => void; - - export interface Input { - seek(index: number): void; - read(): any; - } - - export interface SyntaxNode { - tree: Tree; - type: string; - isNamed: boolean; - text: string; - startPosition: Point; - endPosition: Point; - startIndex: number; - endIndex: number; - parent: SyntaxNode | null; - children: Array; - namedChildren: Array; - childCount: number; - namedChildCount: number; - firstChild: SyntaxNode | null; - firstNamedChild: SyntaxNode | null; - lastChild: SyntaxNode | null; - lastNamedChild: SyntaxNode | null; - nextSibling: SyntaxNode | null; - nextNamedSibling: SyntaxNode | null; - previousSibling: SyntaxNode | null; - previousNamedSibling: SyntaxNode | null; - - hasChanges(): boolean; - hasError(): boolean; - equals(other: SyntaxNode): boolean; - isMissing(): boolean; - toString(): string; - child(index: number): SyntaxNode | null; - namedChild(index: number): SyntaxNode | null; - - descendantForIndex(index: number): SyntaxNode; - descendantForIndex(startIndex: number, endIndex: number): SyntaxNode; - namedDescendantForIndex(index: number): SyntaxNode; - namedDescendantForIndex(startIndex: number, endIndex: number): SyntaxNode; - descendantForPosition(position: Point): SyntaxNode; - descendantForPosition(startPosition: Point, endPosition: Point): SyntaxNode; - namedDescendantForPosition(position: Point): SyntaxNode; - namedDescendantForPosition(startPosition: Point, endPosition: Point): SyntaxNode; - - walk(): TreeCursor; - } - - export interface TreeCursor { - nodeType: string; - nodeText: string; - nodeIsNamed: boolean; - startPosition: Point; - endPosition: Point; - startIndex: number; - endIndex: number; - readonly currentNode: SyntaxNode - - reset(node: SyntaxNode): void - gotoParent(): boolean; - gotoFirstChild(): boolean; - gotoFirstChildForIndex(index: number): boolean; - gotoNextSibling(): boolean; - } - - export interface Tree { - readonly rootNode: SyntaxNode; - - edit(delta: Edit): Tree; - walk(): TreeCursor; - getChangedRanges(other: Tree): Range[]; - getEditedRange(other: Tree): Range; - } - namespace Language { - function load(url: string): Promise - } - } - - export = Parser + class Parser { + static init(): Promise; + parse(input: string | Parser.Input, previousTree?: Parser.Tree): Parser.Tree; + getLanguage(): any; + setLanguage(language: any): void; + getLogger(): Parser.Logger; + setLogger(logFunc: Parser.Logger): void; } + + namespace Parser { + export type Point = { + row: number; + column: number; + }; + + export type Range = { + start: Point; + end: Point; + }; + + export type Edit = { + startIndex: number; + oldEndIndex: number; + newEndIndex: number; + startPosition: Point; + oldEndPosition: Point; + newEndPosition: Point; + }; + + export type Logger = ( + message: string, + params: {[param: string]: string}, + type: "parse" | "lex" + ) => void; + + export interface Input { + seek(index: number): void; + read(): any; + } + + export interface SyntaxNode { + tree: Tree; + type: string; + isNamed: boolean; + text: string; + startPosition: Point; + endPosition: Point; + startIndex: number; + endIndex: number; + parent: SyntaxNode | null; + children: Array; + namedChildren: Array; + childCount: number; + namedChildCount: number; + firstChild: SyntaxNode | null; + firstNamedChild: SyntaxNode | null; + lastChild: SyntaxNode | null; + lastNamedChild: SyntaxNode | null; + nextSibling: SyntaxNode | null; + nextNamedSibling: SyntaxNode | null; + previousSibling: SyntaxNode | null; + previousNamedSibling: SyntaxNode | null; + + hasChanges(): boolean; + hasError(): boolean; + equals(other: SyntaxNode): boolean; + isMissing(): boolean; + toString(): string; + child(index: number): SyntaxNode | null; + namedChild(index: number): SyntaxNode | null; + + descendantForIndex(index: number): SyntaxNode; + descendantForIndex(startIndex: number, endIndex: number): SyntaxNode; + namedDescendantForIndex(index: number): SyntaxNode; + namedDescendantForIndex(startIndex: number, endIndex: number): SyntaxNode; + descendantForPosition(position: Point): SyntaxNode; + descendantForPosition(startPosition: Point, endPosition: Point): SyntaxNode; + namedDescendantForPosition(position: Point): SyntaxNode; + namedDescendantForPosition(startPosition: Point, endPosition: Point): SyntaxNode; + + walk(): TreeCursor; + } + + export interface TreeCursor { + nodeType: string; + nodeText: string; + nodeIsNamed: boolean; + startPosition: Point; + endPosition: Point; + startIndex: number; + endIndex: number; + readonly currentNode: SyntaxNode + + reset(node: SyntaxNode): void + gotoParent(): boolean; + gotoFirstChild(): boolean; + gotoFirstChildForIndex(index: number): boolean; + gotoNextSibling(): boolean; + } + + export interface Tree { + readonly rootNode: SyntaxNode; + + edit(delta: Edit): Tree; + walk(): TreeCursor; + getChangedRanges(other: Tree): Range[]; + getEditedRange(other: Tree): Range; + } + namespace Language { + function load(url: string): Promise + } + } + + export = Parser +}