You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
112 lines
2.5 KiB
112 lines
2.5 KiB
import {Node} from 'acorn'; |
|
|
|
declare module "acorn-walk" { |
|
type FullWalkerCallback<TState> = ( |
|
node: Node, |
|
state: TState, |
|
type: string |
|
) => void; |
|
|
|
type FullAncestorWalkerCallback<TState> = ( |
|
node: Node, |
|
state: TState | Node[], |
|
ancestors: Node[], |
|
type: string |
|
) => void; |
|
type WalkerCallback<TState> = (node: Node, state: TState) => void; |
|
|
|
type SimpleWalkerFn<TState> = ( |
|
node: Node, |
|
state: TState |
|
) => void; |
|
|
|
type AncestorWalkerFn<TState> = ( |
|
node: Node, |
|
state: TState| Node[], |
|
ancestors: Node[] |
|
) => void; |
|
|
|
type RecursiveWalkerFn<TState> = ( |
|
node: Node, |
|
state: TState, |
|
callback: WalkerCallback<TState> |
|
) => void; |
|
|
|
type SimpleVisitors<TState> = { |
|
[type: string]: SimpleWalkerFn<TState> |
|
}; |
|
|
|
type AncestorVisitors<TState> = { |
|
[type: string]: AncestorWalkerFn<TState> |
|
}; |
|
|
|
type RecursiveVisitors<TState> = { |
|
[type: string]: RecursiveWalkerFn<TState> |
|
}; |
|
|
|
type FindPredicate = (type: string, node: Node) => boolean; |
|
|
|
interface Found<TState> { |
|
node: Node, |
|
state: TState |
|
} |
|
|
|
export function simple<TState>( |
|
node: Node, |
|
visitors: SimpleVisitors<TState>, |
|
base?: RecursiveVisitors<TState>, |
|
state?: TState |
|
): void; |
|
|
|
export function ancestor<TState>( |
|
node: Node, |
|
visitors: AncestorVisitors<TState>, |
|
base?: RecursiveVisitors<TState>, |
|
state?: TState |
|
): void; |
|
|
|
export function recursive<TState>( |
|
node: Node, |
|
state: TState, |
|
functions: RecursiveVisitors<TState>, |
|
base?: RecursiveVisitors<TState> |
|
): void; |
|
|
|
export function full<TState>( |
|
node: Node, |
|
callback: FullWalkerCallback<TState>, |
|
base?: RecursiveVisitors<TState>, |
|
state?: TState |
|
): void; |
|
|
|
export function fullAncestor<TState>( |
|
node: Node, |
|
callback: FullAncestorWalkerCallback<TState>, |
|
base?: RecursiveVisitors<TState>, |
|
state?: TState |
|
): void; |
|
|
|
export function make<TState>( |
|
functions: RecursiveVisitors<TState>, |
|
base?: RecursiveVisitors<TState> |
|
): RecursiveVisitors<TState>; |
|
|
|
export function findNodeAt<TState>( |
|
node: Node, |
|
start: number | undefined, |
|
end?: number | undefined, |
|
type?: FindPredicate | string, |
|
base?: RecursiveVisitors<TState>, |
|
state?: TState |
|
): Found<TState> | undefined; |
|
|
|
export function findNodeAround<TState>( |
|
node: Node, |
|
start: number | undefined, |
|
type?: FindPredicate | string, |
|
base?: RecursiveVisitors<TState>, |
|
state?: TState |
|
): Found<TState> | undefined; |
|
|
|
export const findNodeAfter: typeof findNodeAround; |
|
}
|
|
|