{"version":3,"sources":["../src/plugin.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,GAAG,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AAC/C,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACjD,OAAO,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAEvD,qCAA6B,CAAC;IAUd,SAAS,CAAC,aAAa,EAAE,aAAa;IAR3C,IAAI,EAAE,MAAM,CAAC;IACpB,SAAS,CAAC,UAAU,EAAE,KAAK,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,CAAM;IACrD,SAAS,CAAC,IAAI,EAAE,SAAS,CAAC,GAAG,CAAC,CAAM;IACpC,SAAS,CAAC,UAAU,EAAE,KAAK,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAM;IACxD,SAAS,CAAC,IAAI,EAAE,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAM;IACvC,SAAS,CAAC,cAAc,EAAE,KAAK,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,CAAM;IAC7D,SAAS,CAAC,QAAQ,EAAE,SAAS,CAAC,OAAO,CAAC,CAAM;gBAEtB,aAAa,EAAE,aAAa;aAElC,WAAW,IAAI,MAAM;aACrB,IAAI,IAAI,IAAI;IAErB,MAAM,IAAI,IAAI;IAoBd,WAAW,CAAC,IAAI,SAAS,GAAG,CAAC,GAAG,CAAC,EAAE,QAAQ,EAAE,aAAa,CAAC,IAAI,CAAC,GAAG,IAAI;IAIjE,OAAO;IAIb,WAAW,CAAC,QAAQ,EAAE,aAAa,CAAC,GAAG,CAAC,GAAG,IAAI;IAI/C,OAAO;IAIP,eAAe,CAAC,QAAQ,SAAS,OAAO,EAAE,YAAY,EAAE,aAAa,CAAC,QAAQ,CAAC,GAAG,IAAI;IAItF,WAAW;IAIlB,SAAS,CAAC,SAAS,CAAC,cAAc,EAAE,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC;CAGrE","file":"plugin.d.ts","sourcesContent":["import { Dao, Job, Service } from './entities';\nimport { PluginManager } from './plugin.manager';\nimport { Constructable, Hashtable } from './structure';\n\nexport abstract class Plugin<T> {\n    // @ts-ignore\n    public path: string;\n    protected jobClasses: Array<Constructable<Job>> = [];\n    protected jobs: Hashtable<Job> = {};\n    protected daoClasses: Array<Constructable<Dao<T>>> = [];\n    protected daos: Hashtable<Dao<T>> = {};\n    protected serviceClasses: Array<Constructable<Service>> = [];\n    protected services: Hashtable<Service> = {};\n\n    constructor(protected pluginManager: PluginManager) {}\n\n    public abstract getPluginId(): string;\n    public abstract init(): void;\n\n    public invoke(): void {\n        for (const JobClass of this.jobClasses) {\n            const JobConstructor = JobClass as Constructable<Job>;\n            const jobInstance = new JobConstructor(this.pluginManager);\n            this.jobs[jobInstance.getJobId()] = jobInstance;\n        }\n\n        for (const DaoClass of this.daoClasses) {\n            const DaoConstructor = DaoClass as Constructable<Dao<T>>;\n            const daoInstance = this.invokeDao(DaoConstructor);\n            this.daos[daoInstance.getDaoId()] = daoInstance;\n        }\n\n        for (const ServiceClass of this.serviceClasses) {\n            const ServiceConstructor = ServiceClass as Constructable<Service>;\n            const serviceInstance = new ServiceConstructor(this.pluginManager);\n            this.services[serviceInstance.getServiceId()] = serviceInstance;\n        }\n    }\n\n    public registerDao<DaoT extends Dao<any>>(daoClass: Constructable<DaoT>): void {\n        this.daoClasses.push(daoClass);\n    }\n\n    public async getDaos() {\n        return this.daos;\n    }\n\n    public registerJob(jobClass: Constructable<Job>): void {\n        this.jobClasses.push(jobClass);\n    }\n\n    public getJobs() {\n        return this.jobs;\n    }\n\n    public registerService<ServiceT extends Service>(serviceClass: Constructable<ServiceT>): void {\n        this.serviceClasses.push(serviceClass);\n    }\n\n    public getServices() {\n        return this.services;\n    }\n\n    protected invokeDao(DaoConstructor: Constructable<Dao<T>>): Dao<T> {\n        return new DaoConstructor();\n    }\n}\n"]}