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!

34 lines (33 loc) 2.69 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.getCallExpressionForBean = void 0; var getGlobalContextIdentifierFromArrayOrCreateNewAndPush_1 = require("../utils/getGlobalContextIdentifierFromArrayOrCreateNewAndPush"); var typescript_1 = require("typescript"); var isBeanDependencyFromCurrentContext_1 = require("../utils/isBeanDependencyFromCurrentContext"); var QualifiedType_1 = require("../../ts-helpers/type-qualifier/QualifiedType"); var getCallExpressionForBean = function (qualifiedBean, dependencyParentBean, contextDescriptorToIdentifierList) { if ((0, isBeanDependencyFromCurrentContext_1.isBeanDependencyFromCurrentContext)(qualifiedBean, dependencyParentBean)) { var beanAccessExpression_1 = typescript_1.factory.createCallExpression(typescript_1.factory.createPropertyAccessExpression(typescript_1.factory.createThis(), typescript_1.factory.createIdentifier('getPrivateBean')), undefined, [typescript_1.factory.createStringLiteral(qualifiedBean.classMemberName)]); if (qualifiedBean.nestedProperty !== null) { beanAccessExpression_1 = typescript_1.factory.createPropertyAccessExpression(beanAccessExpression_1, typescript_1.factory.createIdentifier(qualifiedBean.nestedProperty)); } if (qualifiedBean.qualifiedType.kind === QualifiedType_1.QualifiedTypeKind.LIST) { return typescript_1.factory.createSpreadElement(beanAccessExpression_1); } else { return beanAccessExpression_1; } } var globalContextIdentifier = (0, getGlobalContextIdentifierFromArrayOrCreateNewAndPush_1.getGlobalContextIdentifierFromArrayOrCreateNewAndPush)(qualifiedBean.contextDescriptor, contextDescriptorToIdentifierList); var beanAccessExpression = typescript_1.factory.createCallExpression(typescript_1.factory.createPropertyAccessExpression(typescript_1.factory.createPropertyAccessExpression(globalContextIdentifier, typescript_1.factory.createIdentifier(globalContextIdentifier.text)), typescript_1.factory.createIdentifier('getPrivateBean')), undefined, [typescript_1.factory.createStringLiteral(qualifiedBean.classMemberName)]); if (qualifiedBean.nestedProperty !== null) { beanAccessExpression = typescript_1.factory.createPropertyAccessExpression(beanAccessExpression, typescript_1.factory.createIdentifier(qualifiedBean.nestedProperty)); } if (qualifiedBean.qualifiedType.kind === QualifiedType_1.QualifiedTypeKind.LIST) { return typescript_1.factory.createSpreadElement(beanAccessExpression); } else { return beanAccessExpression; } }; exports.getCallExpressionForBean = getCallExpressionForBean;