UNPKG

@ccms/container

Version:

MiaoScript container package

67 lines 2.67 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.lazyMultiInject = exports.lazyInjectTagged = exports.lazyInjectNamed = exports.lazyInject = exports.ContainerInstance = exports.getContainer = exports.initContainer = void 0; var inversify_1 = require("inversify"); var utils_1 = require("./utils"); var _container; var ContainerInstance = Symbol.for("@ccms/ioc:Container"); exports.ContainerInstance = ContainerInstance; function initContainer(container) { Reflect.defineMetadata(ContainerInstance, container, Reflect); return _container = container; } exports.initContainer = initContainer; function getContainer() { return _container || initContainer(new inversify_1.Container()); } exports.getContainer = getContainer; function makePropertyInjectDecorator(doCache) { return function (serviceIdentifier) { return function (proto, key) { var resolve = function () { return getContainer().get(serviceIdentifier); }; (0, utils_1._proxyGetter)(proto, key, resolve, doCache); }; }; } function makePropertyInjectNamedDecorator(doCache) { return function (serviceIdentifier, named) { return function (proto, key) { var resolve = function () { return getContainer().getNamed(serviceIdentifier, named); }; (0, utils_1._proxyGetter)(proto, key, resolve, doCache); }; }; } function makePropertyInjectTaggedDecorator(doCache) { return function (serviceIdentifier, key, value) { return function (proto, propertyName) { var resolve = function () { return getContainer().getTagged(serviceIdentifier, key, value); }; (0, utils_1._proxyGetter)(proto, propertyName, resolve, doCache); }; }; } function makePropertyMultiInjectDecorator(doCache) { return function (serviceIdentifier) { return function (proto, key) { var resolve = function () { return getContainer().getAll(serviceIdentifier); }; (0, utils_1._proxyGetter)(proto, key, resolve, doCache); }; }; } var doCache = true; var lazyInject = makePropertyInjectDecorator(doCache); exports.lazyInject = lazyInject; var lazyInjectNamed = makePropertyInjectNamedDecorator(doCache); exports.lazyInjectNamed = lazyInjectNamed; var lazyInjectTagged = makePropertyInjectTaggedDecorator(doCache); exports.lazyInjectTagged = lazyInjectTagged; var lazyMultiInject = makePropertyMultiInjectDecorator(doCache); exports.lazyMultiInject = lazyMultiInject; //# sourceMappingURL=decorators.js.map