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!

55 lines (54 loc) 2.49 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.registerArrowFunctionBean = void 0; var CompilationContext_1 = require("../../compilation-context/CompilationContext"); var getPropertyDecoratorBeanInfo_1 = require("../ts-helpers/bean-info/getPropertyDecoratorBeanInfo"); var BeanRepository_1 = require("./BeanRepository"); var constants_1 = require("./constants"); var TypeQualifier_1 = require("../ts-helpers/type-qualifier/TypeQualifier"); var registerArrowFunctionBean = function (contextDescriptor, classElement) { var _a; var classElementName = classElement.name.getText(); if (constants_1.restrictedClassMemberNames.has(classElementName)) { CompilationContext_1.CompilationContext.reportError({ node: classElement, message: classElementName + " name is reserved for the di-container, please use another name instead", filePath: contextDescriptor.absolutePath, relatedContextPath: contextDescriptor.absolutePath, }); return; } var functionReturnType = (_a = classElement.initializer.type) !== null && _a !== void 0 ? _a : null; var beanInfo = (0, getPropertyDecoratorBeanInfo_1.getPropertyDecoratorBeanInfo)(classElement); if (functionReturnType === null) { CompilationContext_1.CompilationContext.reportError({ node: classElement, message: 'Can\'t qualify type of Bean, please specify type explicitly', filePath: contextDescriptor.absolutePath, relatedContextPath: contextDescriptor.absolutePath, }); return; } var qualifiedType = TypeQualifier_1.TypeQualifier.qualify(functionReturnType); if (qualifiedType === null) { CompilationContext_1.CompilationContext.reportError({ node: classElement, message: 'Can\'t qualify type of Bean', filePath: contextDescriptor.absolutePath, relatedContextPath: contextDescriptor.absolutePath, }); return; } BeanRepository_1.BeanRepository.registerBean({ classMemberName: classElement.name.getText(), nestedProperty: null, contextDescriptor: contextDescriptor, scope: beanInfo.scope, node: classElement, qualifiedType: qualifiedType, beanKind: 'arrowFunction', beanSourceLocation: null, isPublic: false, }); }; exports.registerArrowFunctionBean = registerArrowFunctionBean;