import { Options } from '.'; import { BabelTypes, ProgramNodePath } from './interface'; export interface SpecifierInfo { /** origin import */ importName: string; /** local alias */ localName: string; } export interface PluginState { /** All react specifiers after merge */ reactTransformed: boolean; reactSpecifiers: SpecifierInfo[]; /** Components' name ready to split */ compNames: SpecifierInfo[]; } /** * Plugin Instance */ export default class RuiPlugin { private state; types: BabelTypes; opts: Required; constructor(types: BabelTypes, opts: Options); getState(): PluginState; updateState(key: K, payload: PluginState[K] | ((prev: PluginState[K]) => PluginState[K])): void; resetState(): void; bootstrap(path: ProgramNodePath): void; /** Overwrite AST related to components by compNames */ overwriteComponents(path: ProgramNodePath): void; log(...args: any): void; }