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!

59 lines (58 loc) 2.88 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.checkBeansInterface = void 0; var CompilationContext_1 = require("../../../compilation-context/CompilationContext"); var typescript_1 = __importDefault(require("typescript")); var node_source_descriptor_1 = require("../node-source-descriptor"); var ContextRepository_1 = require("../../context/ContextRepository"); var checkBeansInterface = function (node, contextDescriptor) { var _a, _b; if (node.expression.name.getText() === 'clearContext') { return; } if (!node.typeArguments || node.typeArguments.length === 0) { CompilationContext_1.CompilationContext.reportError({ node: node, message: 'Container access should have a required TBeans type argument', filePath: node.getSourceFile().fileName, }); return; } var beansType = node.typeArguments[0]; if (!beansType || !typescript_1.default.isTypeReferenceNode(beansType)) { CompilationContext_1.CompilationContext.reportError({ node: beansType, message: 'TBeans should be a plain interface reference', filePath: node.getSourceFile().fileName, }); return; } var nodeDescriptor = (0, node_source_descriptor_1.getNodeSourceDescriptorDeep)(node.getSourceFile(), beansType.typeName.getText()); if (nodeDescriptor === null || nodeDescriptor.node === null) { CompilationContext_1.CompilationContext.reportError({ node: beansType.typeName, message: 'Can\'t qualify TBeans declaration', filePath: node.getSourceFile().fileName, }); return; } var contextBeansInterfaceNodeSourceDescriptor = (_b = (_a = ContextRepository_1.ContextRepository.contextNameToTBeanNodeSourceDescriptor .get(contextDescriptor.name)) === null || _a === void 0 ? void 0 : _a.nodeSourceDescriptor) !== null && _b !== void 0 ? _b : null; if (contextBeansInterfaceNodeSourceDescriptor === null || contextBeansInterfaceNodeSourceDescriptor.node === null) { return; } if (nodeDescriptor.name !== contextBeansInterfaceNodeSourceDescriptor.name || nodeDescriptor.path !== contextBeansInterfaceNodeSourceDescriptor.path) { CompilationContext_1.CompilationContext.reportErrorWithMultipleNodes({ nodes: [ contextBeansInterfaceNodeSourceDescriptor.node, nodeDescriptor.node, ], message: "TBeans interface should be the same as on " + contextDescriptor.name + "\nExpected\nFound", filePath: node.getSourceFile().fileName, }); } }; exports.checkBeansInterface = checkBeansInterface;