@eggjs/tegg-dynamic-inject-runtime
Version:
tegg dyniamic inject
55 lines • 4.88 kB
JavaScript
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
return c > 3 && r && Object.defineProperty(target, key, r), r;
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.EggObjectFactory = void 0;
const tegg_types_1 = require("@eggjs/tegg-types");
const core_decorator_1 = require("@eggjs/core-decorator");
const tegg_dynamic_inject_1 = require("@eggjs/tegg-dynamic-inject");
const EggObjectFactoryPrototype_1 = require("./EggObjectFactoryPrototype");
let EggObjectFactory = class EggObjectFactory {
async getEggObject(abstractClazz, qualifierValue) {
const implClazz = tegg_dynamic_inject_1.QualifierImplUtil.getQualifierImp(abstractClazz, qualifierValue);
if (!implClazz) {
throw new Error(`has no impl for ${abstractClazz.name} with qualifier ${qualifierValue}`);
}
const protoObj = core_decorator_1.PrototypeUtil.getClazzProto(implClazz);
if (!protoObj) {
throw new Error(`can not get proto for clazz ${implClazz.name}`);
}
const eggObject = await this.eggContainerFactory.getOrCreateEggObject(protoObj, protoObj.name);
return eggObject.obj;
}
async getEggObjects(abstractClazz) {
const implClazzMap = tegg_dynamic_inject_1.QualifierImplUtil.getQualifierImpMap(abstractClazz);
const getEggObject = this.getEggObject.bind(this);
const qualifierValues = Array.from(implClazzMap.keys());
return {
[Symbol.asyncIterator]() {
return {
key: 0,
async next() {
if (this.key === qualifierValues.length) {
return { done: true };
}
const value = await getEggObject(abstractClazz, qualifierValues[this.key++]);
return { value, done: false };
},
};
},
};
}
};
exports.EggObjectFactory = EggObjectFactory;
exports.EggObjectFactory = EggObjectFactory = __decorate([
(0, core_decorator_1.SingletonProto)({
protoImplType: EggObjectFactoryPrototype_1.EGG_OBJECT_FACTORY_PROTO_IMPLE_TYPE,
name: 'eggObjectFactory',
accessLevel: tegg_types_1.AccessLevel.PUBLIC,
})
], EggObjectFactory);
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRWdnT2JqZWN0RmFjdG9yeS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9FZ2dPYmplY3RGYWN0b3J5LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7OztBQUFBLGtEQUFnRDtBQU9oRCwwREFBc0U7QUFDdEUsb0VBQStEO0FBRS9ELDJFQUFrRjtBQU8zRSxJQUFNLGdCQUFnQixHQUF0QixNQUFNLGdCQUFnQjtJQUczQixLQUFLLENBQUMsWUFBWSxDQUFtQixhQUFrQyxFQUFFLGNBQThCO1FBQ3JHLE1BQU0sU0FBUyxHQUFHLHVDQUFpQixDQUFDLGVBQWUsQ0FBQyxhQUFhLEVBQUUsY0FBYyxDQUFDLENBQUM7UUFDbkYsSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDO1lBQ2YsTUFBTSxJQUFJLEtBQUssQ0FBQyxtQkFBbUIsYUFBYSxDQUFDLElBQUksbUJBQW1CLGNBQWMsRUFBRSxDQUFDLENBQUM7UUFDNUYsQ0FBQztRQUNELE1BQU0sUUFBUSxHQUFRLDhCQUFhLENBQUMsYUFBYSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQzdELElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztZQUNkLE1BQU0sSUFBSSxLQUFLLENBQUMsK0JBQStCLFNBQVMsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDO1FBQ25FLENBQUM7UUFDRCxNQUFNLFNBQVMsR0FBRyxNQUFNLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxvQkFBb0IsQ0FBQyxRQUFRLEVBQUUsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQy9GLE9BQU8sU0FBUyxDQUFDLEdBQVEsQ0FBQztJQUM1QixDQUFDO0lBRUQsS0FBSyxDQUFDLGFBQWEsQ0FBbUIsYUFBa0M7UUFDdEUsTUFBTSxZQUFZLEdBQUcsdUNBQWlCLENBQUMsa0JBQWtCLENBQUMsYUFBYSxDQUFDLENBQUM7UUFDekUsTUFBTSxZQUFZLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDbEQsTUFBTSxlQUFlLEdBQUcsS0FBSyxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQztRQUV4RCxPQUFPO1lBQ0wsQ0FBQyxNQUFNLENBQUMsYUFBYSxDQUFDO2dCQUNwQixPQUFPO29CQUNMLEdBQUcsRUFBRSxDQUFDO29CQUNOLEtBQUssQ0FBQyxJQUFJO3dCQUNSLElBQUksSUFBSSxDQUFDLEdBQUcsS0FBSyxlQUFlLENBQUMsTUFBTSxFQUFFLENBQUM7NEJBQ3hDLE9BQU8sRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUF1QixDQUFDO3dCQUM3QyxDQUFDO3dCQUVELE1BQU0sS0FBSyxHQUFHLE1BQU0sWUFBWSxDQUFDLGFBQWEsRUFBRSxlQUFlLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQzt3QkFDN0UsT0FBTyxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUF1QixDQUFDO29CQUNyRCxDQUFDO2lCQUNGLENBQUM7WUFDSixDQUFDO1NBQ0YsQ0FBQztJQUNKLENBQUM7Q0FDRixDQUFBO0FBckNZLDRDQUFnQjsyQkFBaEIsZ0JBQWdCO0lBTDVCLElBQUEsK0JBQWMsRUFBQztRQUNkLGFBQWEsRUFBRSwrREFBbUM7UUFDbEQsSUFBSSxFQUFFLGtCQUFrQjtRQUN4QixXQUFXLEVBQUUsd0JBQVcsQ0FBQyxNQUFNO0tBQ2hDLENBQUM7R0FDVyxnQkFBZ0IsQ0FxQzVCIn0=
;