@methodus/framework-decorators
Version:
Server Decorators for methodus
48 lines • 2.04 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.MethodConfig = void 0;
require("reflect-metadata");
var framework_injection_1 = require("@methodus/framework-injection");
function MethodConfig(name, middlewares, prefix) {
return function (target) {
framework_injection_1.default.Injector.register(name || target, { useClass: target });
var instance = framework_injection_1.default.Injector.resolve(name);
var existingMetadata = framework_injection_1.default.Injector.resolve(name) || {};
existingMetadata.name = name;
var proto = target.prototype || target.__proto__;
if (target.methodus) {
proto = target;
}
if (!proto.methodus) {
return;
}
proto.methodus[name] = proto.methodus[name] || {
_auth: {},
_events: {},
_descriptors: {},
};
proto.methodus[name].name = name;
if (prefix) {
proto.methodus[name].prefix = prefix;
}
if (Object.keys(proto.methodus).length > 1) {
var baseClass = Object.values(proto.methodus).filter(function (item) {
return item.isBase;
});
var baseClone = baseClass[0]
? JSON.parse(JSON.stringify(baseClass[0]._descriptors))
: {};
var targetClone = JSON.parse(JSON.stringify(proto.methodus[name]._descriptors));
var new_assign = Object.assign({}, baseClone, targetClone);
proto.methodus[name]._descriptors = new_assign;
}
proto.methodus[name].middlewares = middlewares;
existingMetadata.middlewares = middlewares;
framework_injection_1.default.ClassContainer.set(name, existingMetadata);
Object.values(proto.methodus[name]._descriptors).forEach(function (descriptor) {
return instance[descriptor.propertyKey];
});
};
}
exports.MethodConfig = MethodConfig;
//# sourceMappingURL=method-config.js.map