import { Diff } from 'deep-diff'; import { LogLevel } from 'noicejs'; import { VisitorContext } from './VisitorContext'; /** * This is a runtime error, not an exception. */ export interface VisitorError { data: any; level: LogLevel; msg: string; } export interface VisitorResult { changes: ReadonlyArray>; errors: ReadonlyArray; } export interface Visitor { /** * Select nodes eligible to be visited. **/ pick(ctx: VisitorContext, root: any): Promise>; /** * Visit a node. */ visit(ctx: VisitorContext, node: any): Promise; }