UNPKG

@inversifyjs/core

Version:

InversifyJs core package

52 lines 3.28 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.buildPlanServiceNodeFromResolvedValueElementMetadata = exports.buildPlanServiceNodeFromClassElementMetadata = void 0; exports.plan = plan; const buildGetPlanOptionsFromPlanParams_1 = require("../calculations/buildGetPlanOptionsFromPlanParams"); const handlePlanError_1 = require("../calculations/handlePlanError"); const LazyPlanServiceNode_1 = require("../models/LazyPlanServiceNode"); const curryBuildPlanServiceNode_1 = require("./curryBuildPlanServiceNode"); const curryBuildPlanServiceNodeFromClassElementMetadata_1 = require("./curryBuildPlanServiceNodeFromClassElementMetadata"); const curryBuildPlanServiceNodeFromResolvedValueElementMetadata_1 = require("./curryBuildPlanServiceNodeFromResolvedValueElementMetadata"); const curryBuildServiceNodeBindings_1 = require("./curryBuildServiceNodeBindings"); const currySubplan_1 = require("./currySubplan"); class LazyRootPlanServiceNode extends LazyPlanServiceNode_1.LazyPlanServiceNode { #params; constructor(params, serviceNode) { super(serviceNode, serviceNode.serviceIdentifier); this.#params = params; } _buildPlanServiceNode() { return buildPlanServiceNode(this.#params); } } exports.buildPlanServiceNodeFromClassElementMetadata = (0, curryBuildPlanServiceNodeFromClassElementMetadata_1.curryBuildPlanServiceNodeFromClassElementMetadata)(circularBuildServiceNodeBindings); exports.buildPlanServiceNodeFromResolvedValueElementMetadata = (0, curryBuildPlanServiceNodeFromResolvedValueElementMetadata_1.curryBuildPlanServiceNodeFromResolvedValueElementMetadata)(circularBuildServiceNodeBindings); const subplan = (0, currySubplan_1.currySubplan)(exports.buildPlanServiceNodeFromClassElementMetadata, exports.buildPlanServiceNodeFromResolvedValueElementMetadata, exports.buildPlanServiceNodeFromClassElementMetadata, exports.buildPlanServiceNodeFromResolvedValueElementMetadata); const buildServiceNodeBindings = (0, curryBuildServiceNodeBindings_1.curryBuildServiceNodeBindings)(subplan); function circularBuildServiceNodeBindings(params, bindingConstraintsList, serviceBindings, parentNode, chainedBindings) { return buildServiceNodeBindings(params, bindingConstraintsList, serviceBindings, parentNode, chainedBindings); } const buildPlanServiceNode = (0, curryBuildPlanServiceNode_1.curryBuildPlanServiceNode)(buildServiceNodeBindings); function plan(params) { try { const getPlanOptions = (0, buildGetPlanOptionsFromPlanParams_1.buildGetPlanOptionsFromPlanParams)(params); const planResultFromCache = params.operations.getPlan(getPlanOptions); if (planResultFromCache !== undefined) { return planResultFromCache; } const serviceNode = buildPlanServiceNode(params); const planResult = { tree: { root: new LazyRootPlanServiceNode(params, serviceNode), }, }; // Set the plan result in the cache no matter what, even if the plan is context dependent params.operations.setPlan(getPlanOptions, planResult); return planResult; } catch (error) { (0, handlePlanError_1.handlePlanError)(params, error); } } //# sourceMappingURL=plan.js.map