UNPKG

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
"use strict"; 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;