import { BasePluginType, plugin, PluginBlueprint } from "knub"; import * as t from "io-ts"; import { pluginConfigPreprocessor } from "../pluginUtils"; export interface ZeppelinPluginBlueprint extends PluginBlueprint { configSchema?: t.TypeC; } export function zeppelinPlugin(name: string, blueprint: Omit): ZeppelinPluginBlueprint; export function zeppelinPlugin(): (name: string, blueprint: Omit, "name">) => ZeppelinPluginBlueprint; export function zeppelinPlugin(...args) { if (args.length) { const blueprint: ZeppelinPluginBlueprint = plugin(...(args as Parameters)); blueprint.configPreprocessor = pluginConfigPreprocessor.bind(blueprint); return blueprint; } else { return zeppelinPlugin; } }