UNPKG

@launchtray/tsyringe-async

Version:

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

33 lines (32 loc) 1.51 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.INJECTION_TOKEN_METADATA_KEY = "injectionTokens"; 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(exports.INJECTION_TOKEN_METADATA_KEY, target, propertyKey) || {} : Reflect.getOwnMetadata(exports.INJECTION_TOKEN_METADATA_KEY, target) || {}; Object.keys(injectionTokens).forEach(key => { params[+key] = injectionTokens[key]; }); return params; } exports.getParamInfo = getParamInfo; function defineInjectionTokenMetadata(data) { return function (target, propertyKey, parameterIndex) { const injectionTokens = propertyKey ? Reflect.getOwnMetadata(exports.INJECTION_TOKEN_METADATA_KEY, target, propertyKey) || {} : Reflect.getOwnMetadata(exports.INJECTION_TOKEN_METADATA_KEY, target) || {}; injectionTokens[parameterIndex] = data; if (propertyKey) { Reflect.defineMetadata(exports.INJECTION_TOKEN_METADATA_KEY, injectionTokens, target, propertyKey); } else { Reflect.defineMetadata(exports.INJECTION_TOKEN_METADATA_KEY, injectionTokens, target); } }; } exports.defineInjectionTokenMetadata = defineInjectionTokenMetadata;