@launchtray/tsyringe-async
Version:
Lightweight dependency injection container for JavaScript/TypeScript, with asynchronous resolution
30 lines (29 loc) • 1.35 kB
JavaScript
export var INJECTION_TOKEN_METADATA_KEY = "injectionTokens";
export function getParamInfo(target, propertyKey) {
if (propertyKey === void 0) { propertyKey = undefined; }
var params = [];
params = propertyKey
? Reflect.getMetadata("design:paramtypes", target, propertyKey) || []
: Reflect.getMetadata("design:paramtypes", target) || [];
var injectionTokens = propertyKey
? Reflect.getOwnMetadata(INJECTION_TOKEN_METADATA_KEY, target, propertyKey) || {}
: Reflect.getOwnMetadata(INJECTION_TOKEN_METADATA_KEY, target) || {};
Object.keys(injectionTokens).forEach(function (key) {
params[+key] = injectionTokens[key];
});
return params;
}
export function defineInjectionTokenMetadata(data) {
return function (target, propertyKey, parameterIndex) {
var injectionTokens = propertyKey
? Reflect.getOwnMetadata(INJECTION_TOKEN_METADATA_KEY, target, propertyKey) || {}
: Reflect.getOwnMetadata(INJECTION_TOKEN_METADATA_KEY, target) || {};
injectionTokens[parameterIndex] = data;
if (propertyKey) {
Reflect.defineMetadata(INJECTION_TOKEN_METADATA_KEY, injectionTokens, target, propertyKey);
}
else {
Reflect.defineMetadata(INJECTION_TOKEN_METADATA_KEY, injectionTokens, target);
}
};
}