@lattice/core
Version:
41 lines (40 loc) • 1.59 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
require("reflect-metadata");
var inversify_1 = require("inversify");
var __1 = require("..");
function Injectable(serviceIdentifier, container) {
if (container === void 0) { container = 'provider'; }
return function (constructor) {
var targetContainer = container == 'root' ? __1.rootContainer : __1.providerContainer;
var target = inversify_1.injectable()(constructor);
targetContainer.bind(serviceIdentifier || target).to(target).inSingletonScope();
return target;
};
}
exports.Injectable = Injectable;
function Overwrite(serviceIdentifier, container) {
if (container === void 0) { container = 'provider'; }
return function (constructor) {
var targetContainer = container == 'root' ? __1.rootContainer : __1.providerContainer;
if (targetContainer.isBound(serviceIdentifier))
targetContainer.unbind(serviceIdentifier);
return Injectable(serviceIdentifier, container)(constructor);
};
}
exports.Overwrite = Overwrite;
function Inject(serviceIdentifier) {
return function (target, targetKey, index) {
var token = serviceIdentifier || Reflect.getMetadata('design:type', target, targetKey);
return inversify_1.inject(token)(target, targetKey, index);
};
}
exports.Inject = Inject;
function MultiInject(serviceIdentifier) {
return inversify_1.multiInject(serviceIdentifier);
}
exports.MultiInject = MultiInject;
function Optional() {
return inversify_1.optional();
}
exports.Optional = Optional;