UNPKG

2.56 kBTypeScriptView Raw
1import { Node, ScriptKind, SourceFile, SyntaxKind } from 'typescript';
2export declare type TSQueryNodeTransformer = (node: Node) => Node | null | undefined;
3export declare type TSQueryStringTransformer = (node: Node) => string | null | undefined;
4export declare type TSQueryApi = {
5 <T extends Node = Node>(ast: string | Node, selector: string, options?: TSQueryOptions): Array<T>;
6 ast(source: string, fileName?: string, scriptKind?: ScriptKind): SourceFile;
7 map(ast: SourceFile, selector: string, nodeTransformer: TSQueryNodeTransformer, options?: TSQueryOptions): SourceFile;
8 match<T extends Node = Node>(ast: Node, selector: TSQuerySelectorNode, options?: TSQueryOptions): Array<T>;
9 parse(selector: string, options?: TSQueryOptions): TSQuerySelectorNode;
10 project(configFilePath: string): Array<SourceFile>;
11 projectFiles(configFilePath: string): Array<string>;
12 query<T extends Node = Node>(ast: string | Node, selector: string, options?: TSQueryOptions): Array<T>;
13 replace(source: string, selector: string, stringTransformer: TSQueryStringTransformer, options?: TSQueryOptions): string;
14 syntaxKindName(node: SyntaxKind): string;
15};
16export declare type TSQueryAttributeOperatorType = 'regexp' | 'literal' | 'type';
17export declare type TSQueryAttributeOperator = (obj: any, value: any, type: TSQueryAttributeOperatorType) => boolean;
18export declare type TSQueryAttributeOperators = {
19 [key: string]: TSQueryAttributeOperator;
20};
21export declare type TSQueryMatcher = (node: Node, selector: TSQuerySelectorNode, ancestry: Array<Node>, options: TSQueryOptions) => boolean;
22export declare type TSQueryMatchers = {
23 [key: string]: TSQueryMatcher;
24};
25export declare type TSQueryProperties = {
26 kindName: string;
27 name?: string;
28 text: string;
29 value?: any;
30};
31export declare type TSQueryOptions = {
32 visitAllChildren?: boolean;
33};
34export declare type TSQuerySelectorNode = {
35 [key: string]: TSQuerySelectorNode | Array<TSQuerySelectorNode> | RegExp | boolean | number | string;
36 index: TSQuerySelectorNode;
37 left: TSQuerySelectorNode;
38 name: string;
39 operator: '=' | '!=' | '<=' | '<' | '>=' | '>';
40 right: TSQuerySelectorNode;
41 selectors: Array<TSQuerySelectorNode>;
42 subject: boolean;
43 type: TSQueryAttributeOperatorType;
44 value: TSQuerySelectorNode | RegExp | number | string;
45};
46export declare type TSQueryTraverseOptions = {
47 enter: (node: Node, parent: Node | null) => void;
48 leave: (node: Node, parent: Node | null) => void;
49 visitAllChildren: boolean;
50};