@inversifyjs/core
Version:
InversifyJs core package
30 lines • 1.8 kB
JavaScript
import { BindingConstraintsImplementation, } from '../../binding/models/BindingConstraintsImplementation.js';
import { buildFilteredServiceBindings } from '../calculations/buildFilteredServiceBindings.js';
import { buildPlanBindingConstraintsList } from '../calculations/buildPlanBindingConstraintsList.js';
import { checkServiceNodeSingleInjectionBindings } from '../calculations/checkServiceNodeSingleInjectionBindings.js';
export function curryBuildPlanServiceNode(buildServiceNodeBindings) {
return (params) => {
const bindingConstraintsList = buildPlanBindingConstraintsList(params);
const bindingConstraints = new BindingConstraintsImplementation(bindingConstraintsList.last);
const chained = params.rootConstraints.isMultiple && params.rootConstraints.chained;
const filteredServiceBindings = buildFilteredServiceBindings(params, bindingConstraints, {
chained,
});
const serviceNodeBindings = [];
const serviceNode = {
bindings: serviceNodeBindings,
isContextFree: true,
serviceIdentifier: params.rootConstraints.serviceIdentifier,
};
serviceNodeBindings.push(...buildServiceNodeBindings(params, bindingConstraintsList, filteredServiceBindings, serviceNode, chained));
serviceNode.isContextFree =
!bindingConstraintsList.last.elem.getAncestorsCalled;
if (!params.rootConstraints.isMultiple) {
checkServiceNodeSingleInjectionBindings(serviceNode, params.rootConstraints.isOptional ?? false, bindingConstraintsList.last);
const [planBindingNode] = serviceNodeBindings;
serviceNode.bindings = planBindingNode;
}
return serviceNode;
};
}
//# sourceMappingURL=curryBuildPlanServiceNode.js.map