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!

91 lines (90 loc) 6.96 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.registerAndTransformContext = void 0; var typescript_1 = __importDefault(require("typescript")); var addContextPool_1 = require("./transformers/addContextPool"); var replaceExtendingFromCatContext_1 = require("./transformers/replaceExtendingFromCatContext"); var replacePropertyBeans_1 = require("./transformers/replacePropertyBeans"); var transformMethodBeans_1 = require("./transformers/transformMethodBeans"); var addNecessaryImports_1 = require("./transformers/addNecessaryImports"); var ContextRepository_1 = require("../context/ContextRepository"); var registerContext_1 = require("../context/registerContext"); var registerBeans_1 = require("../bean/registerBeans"); var checkIsAllBeansRegisteredInContextAndFillBeanRequierness_1 = require("../bean/checkIsAllBeansRegisteredInContextAndFillBeanRequierness"); var registerBeanDependencies_1 = require("../bean-dependencies/registerBeanDependencies"); var buildDependencyGraphAndFillQualifiedBeans_1 = require("../connect-dependencies/buildDependencyGraphAndFillQualifiedBeans"); var reportAboutCyclicDependencies_1 = require("../report-cyclic-dependencies/reportAboutCyclicDependencies"); var CompilationContext_1 = require("../../compilation-context/CompilationContext"); var registerGlobalCatContext_1 = require("../context/registerGlobalCatContext"); var addGlobalContextInstance_1 = require("./transformers/addGlobalContextInstance"); var transformArrowFunctionBeans_1 = require("./transformers/transformArrowFunctionBeans"); var transformExpressionAndEmbeddedBeans_1 = require("./transformers/transformExpressionAndEmbeddedBeans"); var registerContextLifecycleMethods_1 = require("../context-lifecycle/registerContextLifecycleMethods"); var transformLifecycleMethods_1 = require("./transformers/transformLifecycleMethods"); var transformLifecycleArrowFunctions_1 = require("./transformers/transformLifecycleArrowFunctions"); var addLifecycleConfiguration_1 = require("./transformers/addLifecycleConfiguration"); var DependencyGraph_1 = require("../connect-dependencies/DependencyGraph"); function registerAndTransformContext(context, sourceFile) { var _a, _b; CompilationContext_1.CompilationContext.clearErrorsByFilePath(sourceFile.fileName); var oldContextDescriptor = ContextRepository_1.ContextRepository.contextPathToContextDescriptor.get(sourceFile.fileName); if (oldContextDescriptor === null || oldContextDescriptor === void 0 ? void 0 : oldContextDescriptor.isGlobal) { (0, registerGlobalCatContext_1.registerGlobalCatContext)(sourceFile); var newGlobalContextDescriptor = (_a = ContextRepository_1.ContextRepository.contextPathToContextDescriptor.get(sourceFile.fileName)) !== null && _a !== void 0 ? _a : null; if (!newGlobalContextDescriptor) { throw new Error('Global Context is not registered'); } (0, registerBeans_1.registerBeans)(newGlobalContextDescriptor); (0, registerBeanDependencies_1.registerBeanDependencies)(newGlobalContextDescriptor); (0, buildDependencyGraphAndFillQualifiedBeans_1.buildDependencyGraphAndFillQualifiedBeans)(newGlobalContextDescriptor); (0, registerContextLifecycleMethods_1.registerContextLifecycleMethods)(newGlobalContextDescriptor); (0, reportAboutCyclicDependencies_1.reportAboutCyclicDependencies)(newGlobalContextDescriptor); var contextDescriptorToIdentifierList_1 = []; var transformers_1 = [ (0, addGlobalContextInstance_1.addGlobalContextInstance)(newGlobalContextDescriptor), (0, replaceExtendingFromCatContext_1.replaceExtendingFromCatContext)(newGlobalContextDescriptor), (0, replacePropertyBeans_1.replacePropertyBeans)(contextDescriptorToIdentifierList_1), (0, transformMethodBeans_1.transformMethodBeans)(contextDescriptorToIdentifierList_1), (0, transformArrowFunctionBeans_1.transformArrowFunctionBeans)(contextDescriptorToIdentifierList_1), (0, transformExpressionAndEmbeddedBeans_1.transformExpressionAndEmbeddedBeans)(), (0, addNecessaryImports_1.addNecessaryImports)(contextDescriptorToIdentifierList_1), ]; var file_1 = typescript_1.default.transform(sourceFile, transformers_1).transformed[0]; // const fileText = ts.createPrinter().printFile(file); return file_1; } if (oldContextDescriptor && !(oldContextDescriptor === null || oldContextDescriptor === void 0 ? void 0 : oldContextDescriptor.isGlobal)) { DependencyGraph_1.DependencyGraph.clearByContextDescriptor(oldContextDescriptor); } (0, registerContext_1.registerContext)(sourceFile); var contextDescriptor = (_b = ContextRepository_1.ContextRepository.contextPathToContextDescriptor.get(sourceFile.fileName)) !== null && _b !== void 0 ? _b : null; if (!contextDescriptor) { throw new Error('Context is not registered'); } (0, registerBeans_1.registerBeans)(contextDescriptor); (0, checkIsAllBeansRegisteredInContextAndFillBeanRequierness_1.checkIsAllBeansRegisteredInContextAndFillBeanRequierness)(contextDescriptor); (0, registerBeanDependencies_1.registerBeanDependencies)(contextDescriptor); (0, buildDependencyGraphAndFillQualifiedBeans_1.buildDependencyGraphAndFillQualifiedBeans)(contextDescriptor); (0, registerContextLifecycleMethods_1.registerContextLifecycleMethods)(contextDescriptor); (0, reportAboutCyclicDependencies_1.reportAboutCyclicDependencies)(contextDescriptor); var contextDescriptorToIdentifierList = []; var transformers = [ (0, addLifecycleConfiguration_1.addLifecycleConfiguration)(contextDescriptor), (0, addContextPool_1.addContextPool)(contextDescriptor), (0, replaceExtendingFromCatContext_1.replaceExtendingFromCatContext)(contextDescriptor), (0, replacePropertyBeans_1.replacePropertyBeans)(contextDescriptorToIdentifierList), (0, transformMethodBeans_1.transformMethodBeans)(contextDescriptorToIdentifierList), (0, transformArrowFunctionBeans_1.transformArrowFunctionBeans)(contextDescriptorToIdentifierList), (0, transformExpressionAndEmbeddedBeans_1.transformExpressionAndEmbeddedBeans)(), (0, transformLifecycleMethods_1.transformLifecycleMethods)(contextDescriptorToIdentifierList), (0, transformLifecycleArrowFunctions_1.transformLifecycleArrowFunctions)(contextDescriptorToIdentifierList), (0, addNecessaryImports_1.addNecessaryImports)(contextDescriptorToIdentifierList), ]; var file = typescript_1.default.transform(sourceFile, transformers).transformed[0]; // const fileText = ts.createPrinter().printFile(file); return file; } exports.registerAndTransformContext = registerAndTransformContext;