import * as log4js from "log4js"; import * as ts from "typescript"; import { Configuration } from "../shared/configuration"; export interface TransformResult { dirty?: boolean; transpile?: boolean; transformedScript?: boolean; } export interface TransformCallback { (error: Error, dirty: boolean, transpile?: boolean): void; (error: Error, result: TransformResult): void; } export interface TransformContextJs { ast: acorn.Node; } export interface TransformContextTs { version: string; ast: ts.SourceFile; transpiled: string; } export interface TransformContext { config: Configuration; js?: TransformContextJs; filename: string; module: string; source: string; ts?: TransformContextTs; } export interface TransformInitializeLogOptions { appenders: { [name: string]: log4js.Appender; }; level: string; } export type TransformInitialize = (log: TransformInitializeLogOptions) => void; export interface Transform { (context: TransformContext, callback: TransformCallback): void; initialize?: TransformInitialize; }