@servant/servant
Version:
Servant builder for node modules.
40 lines (39 loc) • 1.71 kB
TypeScript
import { PackageJson, ServantJson } from "@servant/servant-data";
import * as Module from "./module/index";
import * as Watcher from "./watcher/index";
import * as Changes from "./vcs/index";
import * as Commands from "./commands";
export interface ServantApi {
init: (entry: string) => Promise<InitData>;
create: (packageJson: PackageJson.PackageJsonInfo, entry: string, initParams: Module.InitParams) => Promise<Commands.CommandResult<Module.InitResults>>;
modules: (initData: InitData, params?: ModulesParams) => Promise<ModulesData>;
command: <C extends Commands.Commands>(initData: InitData, modules: ModulesData, command: C, params: Commands.CommandParams) => Promise<Commands.CommandResults[C]>;
validate: (validate: Module.DependenciesValidations) => Module.DependenciesValidationsResults;
watch: (initData: InitData, changed: Watcher.ChangeHandler) => Promise<void>;
reports: {
issues: {
outputs: string[];
run: (initData: InitData, issues: Module.Issues) => Promise<string[]>;
};
analyze: {
outputs: string[];
run: (initData: InitData, analyze: Commands.AnalyzeSummaryResult) => Promise<string[]>;
};
};
}
export interface InitData {
entry: string;
packageJson?: PackageJson.PackageJsonInfo;
servantJson?: ServantJson.ServantJsonInfo;
module?: string;
}
export interface ModulesParams {
init?: boolean;
only?: Array<string>;
changed?: Array<Changes.ChangeBy>;
dependencies?: boolean;
}
export interface ModulesData {
graph: Module.DependenciesGraph | null;
validation: Module.DependenciesValidations | null;
}