@michaelganchas/ts-inject
Version:
A lightweight TypeScript dependency injection library
39 lines (38 loc) • 1.32 kB
JavaScript
;
var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
if (ar || !(i in from)) {
if (!ar) ar = Array.prototype.slice.call(from, 0, i);
ar[i] = from[i];
}
}
return to.concat(ar || Array.prototype.slice.call(from));
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.autowireFn = void 0;
var container_1 = require("./container");
/**
* Autowire a function with resolved dependencies.
*
* @param func - The target function
* @param keys - Keys of dependencies to inject from DI container
* @returns A function with the injected dependencies
*/
var autowireFn = function (func) {
var keys = [];
for (var _i = 1; _i < arguments.length; _i++) {
keys[_i - 1] = arguments[_i];
}
// @ts-ignore
return function () {
var args = [];
for (var _i = 0; _i < arguments.length; _i++) {
args[_i] = arguments[_i];
}
var services = keys.map(function (key) {
return container_1.container.get(key);
});
return func.apply(void 0, __spreadArray(__spreadArray([], services, false), args, false));
};
};
exports.autowireFn = autowireFn;