sipp
Version:
An Opinionated, High-Productivity MVC Web Framework in TypeScript
30 lines • 1.14 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.Provide = exports.withParamProviding = void 0;
const ServiceRegistry_1 = require("../framework/services/ServiceRegistry");
function withParamProviding(fn, target, key) {
return async function () {
let types = Reflect.getMetadata('design:paramtypes', target, key) || [];
if (!types.length) {
return fn.apply(this, arguments);
}
const realArgs = [];
for (let i = 0, n = types.length; i < n; i++) {
const Type = types[i];
const param = Type === Object || arguments[i] instanceof Type
? arguments[i]
: await ServiceRegistry_1.registry.resolve(target, types[i]);
realArgs.push(param);
}
return fn.call(this, ...realArgs);
};
}
exports.withParamProviding = withParamProviding;
const Provide = () => {
return (target, key, descriptor) => {
descriptor.value = withParamProviding(descriptor.value, target, key);
return descriptor;
};
};
exports.Provide = Provide;
//# sourceMappingURL=Provide.js.map