@baizey/dependency-injection
Version:
A simple typescript dependency injection
71 lines (70 loc) • 2.32 kB
JavaScript
;
var __assign = (this && this.__assign) || function () {
__assign = Object.assign || function(t) {
for (var s, i = 1, n = arguments.length; i < n; i++) {
s = arguments[i];
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
t[p] = s[p];
}
return t;
};
return __assign.apply(this, arguments);
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.TransientLifetime = void 0;
exports.transient = transient;
var TransientLifetime = /** @class */ (function () {
function TransientLifetime(name, factory) {
Object.defineProperty(this, "factory", {
enumerable: true,
configurable: true,
writable: true,
value: void 0
});
Object.defineProperty(this, "name", {
enumerable: true,
configurable: true,
writable: true,
value: void 0
});
Object.defineProperty(this, "isSingleton", {
enumerable: true,
configurable: true,
writable: true,
value: false
});
this.name = name;
this.factory = factory;
}
Object.defineProperty(TransientLifetime.prototype, "provide", {
enumerable: false,
configurable: true,
writable: true,
value: function (provider, context) {
return this.factory(provider.createProxy(context), undefined, provider, context);
}
});
Object.defineProperty(TransientLifetime.prototype, "validate", {
enumerable: false,
configurable: true,
writable: true,
value: function (provider, context) {
return this.provide(provider, context);
}
});
Object.defineProperty(TransientLifetime.prototype, "clone", {
enumerable: false,
configurable: true,
writable: true,
value: function () {
return new TransientLifetime(this.name, this.factory);
}
});
return TransientLifetime;
}());
exports.TransientLifetime = TransientLifetime;
function transient(dep) {
return typeof dep === 'function'
? { lifetime: TransientLifetime, constructor: dep }
: __assign({ lifetime: TransientLifetime }, dep);
}