UNPKG

@launchtray/tsyringe-async

Version:

Lightweight dependency injection container for JavaScript/TypeScript, with asynchronous resolution

30 lines (29 loc) 1.35 kB
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); } }; }