tree-hugger-js
Version:
A friendly tree-sitter wrapper for JavaScript and TypeScript
82 lines • 1.97 kB
TypeScript
import { SyntaxNode, Point } from 'tree-sitter';
export interface Language {
name: string;
extensions: string[];
parser: unknown;
}
export interface TreeHuggerOptions {
language?: string;
autoDetect?: boolean;
}
export interface NodeWrapper {
node: SyntaxNode;
text: string;
type: string;
startPosition: Point;
endPosition: Point;
children: NodeWrapper[];
parent?: NodeWrapper;
sourceCode: string;
name?: string;
line: number;
column: number;
endLine: number;
hasError: boolean;
}
export interface QueryResult extends NodeWrapper {
captures?: Record<string, NodeWrapper>;
}
export type NodePredicate = (node: NodeWrapper) => boolean;
export type NodeTransformer = (node: NodeWrapper) => NodeWrapper | null;
export interface FunctionInfo {
name: string | undefined;
type: string;
async: boolean;
parameters: string[];
startLine: number;
endLine: number;
text: string;
bodyRange?: {
startLine: number;
endLine: number;
};
}
export interface ClassInfo {
name: string | undefined;
methods: FunctionInfo[];
properties: string[];
startLine: number;
endLine: number;
text: string;
bodyRange?: {
startLine: number;
endLine: number;
};
}
export interface ImportInfo {
module: string;
specifiers: string[];
default?: string;
namespace?: string;
isTypeOnly: boolean;
text: string;
}
export interface NodeInfo {
type: string;
text: string;
startLine: number;
endLine: number;
[key: string]: unknown;
}
export interface TransformOperation {
type: 'rename' | 'removeUnusedImports' | 'replaceIn' | 'insertBefore' | 'insertAfter';
parameters: {
oldName?: string;
newName?: string;
nodeType?: string;
pattern?: string | RegExp;
replacement?: string;
text?: string;
};
}
//# sourceMappingURL=types.d.ts.map