vulcain-corejs
Version:
Vulcain micro-service framework
103 lines • 3.89 kB
JavaScript
;
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