vulcain-corejs
Version:
Vulcain micro-service framework
90 lines (88 loc) • 3.02 kB
JavaScript
require("reflect-metadata");
const preloader_1 = require("../preloader");
const system_1 = require("../configurations/globals/system");
/**
* List of default service names
*
* @export
* @class DefaultServiceNames
*/
class DefaultServiceNames {
}
DefaultServiceNames.TokenService = "TokenService";
DefaultServiceNames.AuthorizationPolicy = "AuthorizationPolicy";
DefaultServiceNames.TenantPolicy = "TenantPolicy";
DefaultServiceNames.ScopesDescriptor = "ScopesDescriptor";
DefaultServiceNames.ServiceDescriptors = "ServiceDescriptors";
DefaultServiceNames["Authentication"] = "Authentication";
DefaultServiceNames["Logger"] = "Logger";
DefaultServiceNames["Provider"] = "Provider";
DefaultServiceNames["EventBusAdapter"] = "EventBusAdapter";
DefaultServiceNames["ActionBusAdapter"] = "ActionBusAdapter";
DefaultServiceNames["Domain"] = "Domain";
DefaultServiceNames["Application"] = "ApplicationFactory";
DefaultServiceNames["ServerAdapter"] = "ServerAdapter";
DefaultServiceNames.Container = "Container";
DefaultServiceNames.ProviderFactory = "ProviderFactory";
DefaultServiceNames.TestUser = "TestUser";
DefaultServiceNames.RequestContext = "RequestContext";
DefaultServiceNames.Metrics = "Metrics";
DefaultServiceNames.ApiKeyService = "ApiKeyService";
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 = {}));
/**
* Used to initialize a constructor parameter with a component
*
* @export
* @param {string} component name
* @param {boolean} [optional] True to not raise an exception if component doesn't exist
*/
function Inject(name, optional) {
return function (target, key, i) {
let injects = Reflect.getOwnMetadata(Symbol.for("di:injects"), target) || [];
injects[i] = { name: name, optional: !!optional };
Reflect.defineMetadata(Symbol.for("di: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.System.isTestEnvironnment)
return;
name = name || target.name;
preloader_1.Preloader.instance.registerService(target, (container, domain) => {
container.inject(name, target, lifeTime);
});
};
}
exports.Injectable = Injectable;
//# sourceMappingURL=annotations.js.map
;