ts-ioc-container
Version:
Fast, lightweight TypeScript dependency injection container with a clean API, scoped lifecycles, decorators, tokens, hooks, lazy injection, customizable providers, and no global container objects.
30 lines (29 loc) • 1.26 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.argToToken = exports.toToken = void 0;
const IContainer_1 = require("../container/IContainer");
const SingleToken_1 = require("./SingleToken");
const ClassToken_1 = require("./ClassToken");
const FunctionToken_1 = require("./FunctionToken");
const UnsupportedTokenTypeError_1 = require("../errors/UnsupportedTokenTypeError");
const InjectionToken_1 = require("./InjectionToken");
const basic_1 = require("../utils/basic");
const ConstantToken_1 = require("./ConstantToken");
const toToken = (token) => {
if (token instanceof InjectionToken_1.InjectionToken) {
return token;
}
if ((0, IContainer_1.isDependencyKey)(token)) {
return new SingleToken_1.SingleToken(token);
}
if (basic_1.Is.constructor(token)) {
return new ClassToken_1.ClassToken(token);
}
if (typeof token === 'function') {
return new FunctionToken_1.FunctionToken(token);
}
throw new UnsupportedTokenTypeError_1.UnsupportedTokenTypeError(`Unknown token ${token}`);
};
exports.toToken = toToken;
const argToToken = (v) => ((0, InjectionToken_1.isInjectionToken)(v) ? v : new ConstantToken_1.ConstantToken(v));
exports.argToToken = argToToken;