UNPKG

@launchtray/tsyringe-async

Version:

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

29 lines (28 loc) 1.3 kB
export const INJECTION_TOKEN_METADATA_KEY = "injectionTokens"; export function getParamInfo(target, propertyKey = undefined) { let params = []; params = propertyKey ? Reflect.getMetadata("design:paramtypes", target, propertyKey) || [] : Reflect.getMetadata("design:paramtypes", target) || []; const injectionTokens = propertyKey ? Reflect.getOwnMetadata(INJECTION_TOKEN_METADATA_KEY, target, propertyKey) || {} : Reflect.getOwnMetadata(INJECTION_TOKEN_METADATA_KEY, target) || {}; Object.keys(injectionTokens).forEach(key => { params[+key] = injectionTokens[key]; }); return params; } export function defineInjectionTokenMetadata(data) { return function (target, propertyKey, parameterIndex) { const 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); } }; }