UNPKG

vulcain-corejs

Version:
103 lines 3.89 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); require("reflect-metadata"); const preloader_1 = require("../preloader"); const system_1 = require("../globals/system"); /** * List of default service names * * @export * @class DefaultServiceNames */ class DefaultServiceNames { } DefaultServiceNames.Serializer = "Serializer"; DefaultServiceNames.AuthenticationStrategy = "AuthenticationStrategy"; DefaultServiceNames.AuthorizationPolicy = "AuthorizationPolicy"; DefaultServiceNames.TenantPolicy = "TenantPolicy"; DefaultServiceNames.TaskManager = "TaskManager"; DefaultServiceNames.ScopesDescriptor = "ScopesDescriptor"; DefaultServiceNames.ServiceDescriptors = "ServiceDescriptors"; DefaultServiceNames.SwaggerServiceDescriptor = "SwaggerServiceDescriptor"; DefaultServiceNames.SecurityManager = "SecurityManager"; DefaultServiceNames.Logger = "Logger"; DefaultServiceNames.EventBusAdapter = "EventBusAdapter"; DefaultServiceNames.ActionBusAdapter = "ActionBusAdapter"; DefaultServiceNames.Domain = "Domain"; DefaultServiceNames.Application = "ApplicationFactory"; DefaultServiceNames.ServerAdapter = "ServerAdapter"; DefaultServiceNames.Container = "Container"; DefaultServiceNames.ProviderFactory = "ProviderFactory"; DefaultServiceNames.Metrics = "Metrics"; DefaultServiceNames.StubManager = "StubManager"; DefaultServiceNames.RequestTracker = "RequestTracker"; DefaultServiceNames.ServiceResolver = "ServiceResolver"; DefaultServiceNames.BearerTokenService = "BearerTokenService"; DefaultServiceNames.HandlerProcessor = "HandlerProcessor"; DefaultServiceNames.GraphQLAdapter = "GraphQLAdapter"; exports.DefaultServiceNames = DefaultServiceNames; /** * Component life time * * @export * @enum {number} */ var LifeTime; (function (LifeTime) { /** * Only one instance */ LifeTime[LifeTime["Singleton"] = 1] = "Singleton"; /** * Create a new instance every time */ LifeTime[LifeTime["Transient"] = 2] = "Transient"; /** * Create one instance per request */ LifeTime[LifeTime["Scoped"] = 4] = "Scoped"; })(LifeTime = exports.LifeTime || (exports.LifeTime = {})); function Inject(nameOrBool, optional) { let name; if (typeof nameOrBool === "string") { name = nameOrBool; } else { optional = nameOrBool; } return function (target, key, i) { if (i !== undefined) { // Constructor injection let injects = Reflect.getOwnMetadata(Symbol.for("di:ctor_injects"), target) || []; injects[i] = { name: name, optional: !!optional }; Reflect.defineMetadata(Symbol.for("di:ctor_injects"), injects, target); } else { // Property constructor let injects = Reflect.getOwnMetadata(Symbol.for("di:props_injects"), target) || []; injects.push({ name: name || Reflect.getOwnMetadata("design:type", target, key).name, optional: !!optional, property: key }); Reflect.defineMetadata(Symbol.for("di:props_injects"), injects, target); } }; } exports.Inject = Inject; /** * Used to declare a component. * * @export * @param {LifeTime} lifeTime of the component * @param {string} [name] - By default this is the class name * @param {enableOnTestOnly} Active this component only in an test environment */ function Injectable(lifeTime, name, enableOnTestOnly) { return function (target) { if (enableOnTestOnly && !system_1.Service.isTestEnvironment) return; name = name || target.name; preloader_1.Preloader.instance.registerService((container, domain) => { container.inject(name, target, lifeTime); }); }; } exports.Injectable = Injectable; //# sourceMappingURL=annotations.js.map