@eggjs/tegg-plugin
Version:
module plugin for egg
53 lines • 4.52 kB
JavaScript
import { Base } from 'sdk-base';
import { EggLoadUnitType, LoadUnitFactory, } from '@eggjs/tegg-metadata';
import { LoadUnitInstanceFactory } from '@eggjs/tegg-runtime';
import { EggModuleLoader } from './EggModuleLoader.js';
import { CompatibleUtil } from './CompatibleUtil.js';
import { COMPATIBLE_PROTO_IMPLE_TYPE, EggCompatibleProtoImpl } from './EggCompatibleProtoImpl.js';
export class ModuleHandler extends Base {
loadUnits = [];
loadUnitInstances = [];
loadUnitLoader;
app;
constructor(app) {
super();
this.app = app;
this.loadUnitLoader = new EggModuleLoader(this.app);
}
async init() {
try {
this.app.eggPrototypeCreatorFactory.registerPrototypeCreator(COMPATIBLE_PROTO_IMPLE_TYPE, EggCompatibleProtoImpl.create);
await this.loadUnitLoader.load();
const instances = [];
// TODO fixtures dts broken the module defintion
this.app.module = {};
for (const loadUnit of this.loadUnits) {
const instance = await LoadUnitInstanceFactory.createLoadUnitInstance(loadUnit);
if (instance.loadUnit.type !== EggLoadUnitType.APP) {
CompatibleUtil.appCompatible(this.app, instance);
}
instances.push(instance);
}
CompatibleUtil.contextModuleCompatible(this.app.context, instances);
this.loadUnitInstances = instances;
this.ready(true);
}
catch (e) {
this.ready(e);
throw e;
}
}
async destroy() {
if (this.loadUnitInstances) {
for (const instance of this.loadUnitInstances) {
await LoadUnitInstanceFactory.destroyLoadUnitInstance(instance);
}
}
if (this.loadUnits) {
for (const loadUnit of this.loadUnits) {
await LoadUnitFactory.destroyLoadUnit(loadUnit);
}
}
}
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiTW9kdWxlSGFuZGxlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIk1vZHVsZUhhbmRsZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLFVBQVUsQ0FBQztBQUVoQyxPQUFPLEVBQ0wsZUFBZSxFQUVmLGVBQWUsR0FDaEIsTUFBTSxzQkFBc0IsQ0FBQztBQUM5QixPQUFPLEVBQW9CLHVCQUF1QixFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDaEYsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUNyRCxPQUFPLEVBQUUsMkJBQTJCLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUVsRyxNQUFNLE9BQU8sYUFBYyxTQUFRLElBQUk7SUFDckMsU0FBUyxHQUFlLEVBQUUsQ0FBQztJQUMzQixpQkFBaUIsR0FBdUIsRUFBRSxDQUFDO0lBRTFCLGNBQWMsQ0FBa0I7SUFDaEMsR0FBRyxDQUFjO0lBRWxDLFlBQVksR0FBZ0I7UUFDMUIsS0FBSyxFQUFFLENBQUM7UUFDUixJQUFJLENBQUMsR0FBRyxHQUFHLEdBQUcsQ0FBQztRQUNmLElBQUksQ0FBQyxjQUFjLEdBQUcsSUFBSSxlQUFlLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ3RELENBQUM7SUFFRCxLQUFLLENBQUMsSUFBSTtRQUNSLElBQUksQ0FBQztZQUNILElBQUksQ0FBQyxHQUFHLENBQUMsMEJBQTBCLENBQUMsd0JBQXdCLENBQzFELDJCQUEyQixFQUFFLHNCQUFzQixDQUFDLE1BQU0sQ0FBQyxDQUFDO1lBRTlELE1BQU0sSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLEVBQUUsQ0FBQztZQUNqQyxNQUFNLFNBQVMsR0FBdUIsRUFBRSxDQUFDO1lBQ3pDLGdEQUFnRDtZQUMvQyxJQUFJLENBQUMsR0FBVyxDQUFDLE1BQU0sR0FBRyxFQUFFLENBQUM7WUFFOUIsS0FBSyxNQUFNLFFBQVEsSUFBSSxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUM7Z0JBQ3RDLE1BQU0sUUFBUSxHQUFHLE1BQU0sdUJBQXVCLENBQUMsc0JBQXNCLENBQUMsUUFBUSxDQUFDLENBQUM7Z0JBQ2hGLElBQUksUUFBUSxDQUFDLFFBQVEsQ0FBQyxJQUFJLEtBQUssZUFBZSxDQUFDLEdBQUcsRUFBRSxDQUFDO29CQUNuRCxjQUFjLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUUsUUFBUSxDQUFDLENBQUM7Z0JBQ25ELENBQUM7Z0JBQ0QsU0FBUyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztZQUMzQixDQUFDO1lBQ0QsY0FBYyxDQUFDLHVCQUF1QixDQUFFLElBQUksQ0FBQyxHQUFXLENBQUMsT0FBa0IsRUFBRSxTQUFTLENBQUMsQ0FBQztZQUN4RixJQUFJLENBQUMsaUJBQWlCLEdBQUcsU0FBUyxDQUFDO1lBQ25DLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDbkIsQ0FBQztRQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUM7WUFDWCxJQUFJLENBQUMsS0FBSyxDQUFDLENBQVUsQ0FBQyxDQUFDO1lBQ3ZCLE1BQU0sQ0FBQyxDQUFDO1FBQ1YsQ0FBQztJQUNILENBQUM7SUFFRCxLQUFLLENBQUMsT0FBTztRQUNYLElBQUksSUFBSSxDQUFDLGlCQUFpQixFQUFFLENBQUM7WUFDM0IsS0FBSyxNQUFNLFFBQVEsSUFBSSxJQUFJLENBQUMsaUJBQWlCLEVBQUUsQ0FBQztnQkFDOUMsTUFBTSx1QkFBdUIsQ0FBQyx1QkFBdUIsQ0FBQyxRQUFRLENBQUMsQ0FBQztZQUNsRSxDQUFDO1FBQ0gsQ0FBQztRQUNELElBQUksSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDO1lBQ25CLEtBQUssTUFBTSxRQUFRLElBQUksSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDO2dCQUN0QyxNQUFNLGVBQWUsQ0FBQyxlQUFlLENBQUMsUUFBUSxDQUFDLENBQUM7WUFDbEQsQ0FBQztRQUNILENBQUM7SUFDSCxDQUFDO0NBQ0YifQ==