UNPKG

dependency-injection-cat

Version:

DI Cat is a truly clean DI-container, which allows you not to pollute your business logic with decorators from DI/IOC libraries!

70 lines (69 loc) 3.26 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.getQualifierValueFromFunctionArgument = void 0; var typescript_1 = __importDefault(require("typescript")); var isParameterQualifierDecorator_1 = require("../ts-helpers/predicates/isParameterQualifierDecorator"); var CompilationContext_1 = require("../../compilation-context/CompilationContext"); function getQualifierValueFromFunctionArgument(parameter, contextDescriptor) { var _a, _b; var qualifierDecorators = (_b = (_a = parameter.decorators) === null || _a === void 0 ? void 0 : _a.filter(isParameterQualifierDecorator_1.isParameterQualifierDecorator)) !== null && _b !== void 0 ? _b : []; if (qualifierDecorators.length === 0) { return null; } if (qualifierDecorators.length > 1) { CompilationContext_1.CompilationContext.reportError({ node: parameter, message: 'Parameter Qualifier should not have more than 1 @Qualifier decorator', filePath: contextDescriptor.absolutePath, relatedContextPath: contextDescriptor.absolutePath, }); return null; } var decoratorExpression = qualifierDecorators[0].expression; if (typescript_1.default.isIdentifier(decoratorExpression)) { CompilationContext_1.CompilationContext.reportError({ node: qualifierDecorators[0], message: 'You should call @Qualifier with string, when decorating parameter', filePath: contextDescriptor.absolutePath, relatedContextPath: contextDescriptor.absolutePath, }); return null; } if (typescript_1.default.isCallExpression(decoratorExpression)) { var args = decoratorExpression.arguments; if (args.length === 0) { CompilationContext_1.CompilationContext.reportError({ node: decoratorExpression, message: '@Qualifier should have only 1 argument', filePath: contextDescriptor.absolutePath, relatedContextPath: contextDescriptor.absolutePath, }); return null; } if (args.length > 1) { CompilationContext_1.CompilationContext.reportError({ node: decoratorExpression, message: '@Qualifier should have only 1 argument', filePath: contextDescriptor.absolutePath, relatedContextPath: contextDescriptor.absolutePath, }); return null; } var qualifierValue = args[0]; if (!typescript_1.default.isStringLiteral(qualifierValue)) { CompilationContext_1.CompilationContext.reportError({ node: decoratorExpression, message: 'Qualifier should be a string literal', filePath: contextDescriptor.absolutePath, relatedContextPath: contextDescriptor.absolutePath, }); return null; } return qualifierValue.text; } return null; } exports.getQualifierValueFromFunctionArgument = getQualifierValueFromFunctionArgument;