ioc-lite
Version:
IoC Container library which helps to keep inversion of control principle by using DI pattern for javascript/typescript projects
27 lines • 929 B
JavaScript
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
class ClassResource {
constructor(resource, resolveDependency) {
this._cache = null;
this._resource = resource;
this._resolveDependency = resolveDependency;
this._dependencies = resource.$inject || [];
this._singleton = typeof (resource.$singleton) === 'boolean' ? resource.$singleton : false;
}
_resolveDependencies() {
return this._dependencies.map(this._resolveDependency);
}
resolve() {
if (this._cache && this._singleton) {
return this._cache;
}
const dependencies = this._resolveDependencies();
const resource = new this._resource(...dependencies);
if (this._singleton) {
this._cache = resource;
}
return resource;
}
}
exports.default = ClassResource;
//# sourceMappingURL=class.resource.js.map