@inversifyjs/core 6.0.1 → 7.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (140) hide show
  1. package/CHANGELOG.md +18 -0
  2. package/lib/cjs/binding/models/BindingConstraintsImplementation.d.ts +2 -2
  3. package/lib/cjs/common/models/SingleImmutableLinkedList.d.ts +11 -0
  4. package/lib/cjs/common/models/{SingleInmutableLinkedList.d.ts.map → SingleImmutableLinkedList.d.ts.map} +1 -1
  5. package/lib/cjs/common/models/{SingleInmutableLinkedList.js → SingleImmutableLinkedList.js} +5 -5
  6. package/lib/cjs/common/models/{SingleInmutableLinkedList.js.map → SingleImmutableLinkedList.js.map} +1 -1
  7. package/lib/cjs/common/models/SingleImmutableLinkedList.spec.d.ts +2 -0
  8. package/lib/cjs/common/models/SingleImmutableLinkedList.spec.d.ts.map +1 -0
  9. package/lib/cjs/index.d.ts +5 -2
  10. package/lib/cjs/index.d.ts.map +1 -1
  11. package/lib/cjs/index.js +3 -1
  12. package/lib/cjs/index.js.map +1 -1
  13. package/lib/cjs/metadata/models/PlanServiceNodeBindingAddedResult.d.ts +5 -0
  14. package/lib/cjs/metadata/models/PlanServiceNodeBindingAddedResult.d.ts.map +1 -0
  15. package/lib/cjs/metadata/models/PlanServiceNodeBindingAddedResult.js +3 -0
  16. package/lib/cjs/metadata/models/PlanServiceNodeBindingAddedResult.js.map +1 -0
  17. package/lib/cjs/metadata/models/PlanServiceNodeBindingRemovedResult.d.ts +6 -0
  18. package/lib/cjs/metadata/models/PlanServiceNodeBindingRemovedResult.d.ts.map +1 -0
  19. package/lib/cjs/metadata/models/PlanServiceNodeBindingRemovedResult.js +3 -0
  20. package/lib/cjs/metadata/models/PlanServiceNodeBindingRemovedResult.js.map +1 -0
  21. package/lib/cjs/planning/actions/addRootServiceNodeBindingIfContextFree.d.ts +13 -0
  22. package/lib/cjs/planning/actions/addRootServiceNodeBindingIfContextFree.d.ts.map +1 -0
  23. package/lib/cjs/planning/actions/addRootServiceNodeBindingIfContextFree.js +25 -0
  24. package/lib/cjs/planning/actions/addRootServiceNodeBindingIfContextFree.js.map +1 -0
  25. package/lib/cjs/planning/actions/addRootServiceNodeBindingIfContextFree.spec.d.ts +2 -0
  26. package/lib/cjs/planning/actions/addRootServiceNodeBindingIfContextFree.spec.d.ts.map +1 -0
  27. package/lib/cjs/planning/actions/addServiceNodeBindingIfContextFree.d.ts +17 -0
  28. package/lib/cjs/planning/actions/addServiceNodeBindingIfContextFree.d.ts.map +1 -0
  29. package/lib/cjs/planning/actions/addServiceNodeBindingIfContextFree.js +98 -0
  30. package/lib/cjs/planning/actions/addServiceNodeBindingIfContextFree.js.map +1 -0
  31. package/lib/cjs/planning/actions/addServiceNodeBindingIfContextFree.spec.d.ts +2 -0
  32. package/lib/cjs/planning/actions/addServiceNodeBindingIfContextFree.spec.d.ts.map +1 -0
  33. package/lib/cjs/planning/actions/cacheNonRootPlanServiceNode.d.ts +2 -1
  34. package/lib/cjs/planning/actions/cacheNonRootPlanServiceNode.d.ts.map +1 -1
  35. package/lib/cjs/planning/actions/cacheNonRootPlanServiceNode.js +7 -3
  36. package/lib/cjs/planning/actions/cacheNonRootPlanServiceNode.js.map +1 -1
  37. package/lib/cjs/planning/actions/curryBuildPlanServiceNode.d.ts +10 -0
  38. package/lib/cjs/planning/actions/curryBuildPlanServiceNode.d.ts.map +1 -0
  39. package/lib/cjs/planning/actions/curryBuildPlanServiceNode.js +33 -0
  40. package/lib/cjs/planning/actions/curryBuildPlanServiceNode.js.map +1 -0
  41. package/lib/cjs/planning/actions/curryBuildPlanServiceNode.spec.d.ts +2 -0
  42. package/lib/cjs/planning/actions/curryBuildPlanServiceNode.spec.d.ts.map +1 -0
  43. package/lib/cjs/planning/actions/curryBuildPlanServiceNodeFromClassElementMetadata.d.ts +11 -0
  44. package/lib/cjs/planning/actions/curryBuildPlanServiceNodeFromClassElementMetadata.d.ts.map +1 -0
  45. package/lib/cjs/planning/actions/curryBuildPlanServiceNodeFromClassElementMetadata.js +41 -0
  46. package/lib/cjs/planning/actions/curryBuildPlanServiceNodeFromClassElementMetadata.js.map +1 -0
  47. package/lib/cjs/planning/actions/curryBuildPlanServiceNodeFromClassElementMetadata.spec.d.ts +2 -0
  48. package/lib/cjs/planning/actions/curryBuildPlanServiceNodeFromClassElementMetadata.spec.d.ts.map +1 -0
  49. package/lib/cjs/planning/actions/curryBuildPlanServiceNodeFromResolvedValueElementMetadata.d.ts +11 -0
  50. package/lib/cjs/planning/actions/curryBuildPlanServiceNodeFromResolvedValueElementMetadata.d.ts.map +1 -0
  51. package/lib/cjs/planning/actions/curryBuildPlanServiceNodeFromResolvedValueElementMetadata.js +42 -0
  52. package/lib/cjs/planning/actions/curryBuildPlanServiceNodeFromResolvedValueElementMetadata.js.map +1 -0
  53. package/lib/cjs/planning/actions/curryBuildPlanServiceNodeFromResolvedValueElementMetadata.spec.d.ts +2 -0
  54. package/lib/cjs/planning/actions/curryBuildPlanServiceNodeFromResolvedValueElementMetadata.spec.d.ts.map +1 -0
  55. package/lib/cjs/planning/actions/curryBuildServiceNodeBindings.d.ts +9 -0
  56. package/lib/cjs/planning/actions/curryBuildServiceNodeBindings.d.ts.map +1 -0
  57. package/lib/cjs/planning/actions/curryBuildServiceNodeBindings.js +92 -0
  58. package/lib/cjs/planning/actions/curryBuildServiceNodeBindings.js.map +1 -0
  59. package/lib/cjs/planning/actions/curryBuildServiceNodeBindings.spec.d.ts +2 -0
  60. package/lib/cjs/planning/actions/curryBuildServiceNodeBindings.spec.d.ts.map +1 -0
  61. package/lib/cjs/planning/actions/curryLazyBuildPlanServiceNodeFromClassElementMetadata.d.ts +11 -0
  62. package/lib/cjs/planning/actions/curryLazyBuildPlanServiceNodeFromClassElementMetadata.d.ts.map +1 -0
  63. package/lib/cjs/planning/actions/curryLazyBuildPlanServiceNodeFromClassElementMetadata.js +21 -0
  64. package/lib/cjs/planning/actions/curryLazyBuildPlanServiceNodeFromClassElementMetadata.js.map +1 -0
  65. package/lib/cjs/planning/actions/curryLazyBuildPlanServiceNodeFromClassElementMetadata.spec.d.ts +2 -0
  66. package/lib/cjs/planning/actions/curryLazyBuildPlanServiceNodeFromClassElementMetadata.spec.d.ts.map +1 -0
  67. package/lib/cjs/planning/actions/curryLazyBuildPlanServiceNodeFromResolvedValueElementMetadata.d.ts +11 -0
  68. package/lib/cjs/planning/actions/curryLazyBuildPlanServiceNodeFromResolvedValueElementMetadata.d.ts.map +1 -0
  69. package/lib/cjs/planning/actions/curryLazyBuildPlanServiceNodeFromResolvedValueElementMetadata.js +21 -0
  70. package/lib/cjs/planning/actions/curryLazyBuildPlanServiceNodeFromResolvedValueElementMetadata.js.map +1 -0
  71. package/lib/cjs/planning/actions/curryLazyBuildPlanServiceNodeFromResolvedValueElementMetadata.spec.d.ts +2 -0
  72. package/lib/cjs/planning/actions/curryLazyBuildPlanServiceNodeFromResolvedValueElementMetadata.spec.d.ts.map +1 -0
  73. package/lib/cjs/planning/actions/currySubplan.d.ts +9 -0
  74. package/lib/cjs/planning/actions/currySubplan.d.ts.map +1 -0
  75. package/lib/cjs/planning/actions/currySubplan.js +130 -0
  76. package/lib/cjs/planning/actions/currySubplan.js.map +1 -0
  77. package/lib/cjs/planning/actions/currySubplan.spec.d.ts +2 -0
  78. package/lib/cjs/planning/actions/currySubplan.spec.d.ts.map +1 -0
  79. package/lib/cjs/planning/actions/plan.d.ts +8 -0
  80. package/lib/cjs/planning/actions/plan.d.ts.map +1 -1
  81. package/lib/cjs/planning/actions/plan.js +14 -259
  82. package/lib/cjs/planning/actions/plan.js.map +1 -1
  83. package/lib/cjs/planning/actions/removeRootServiceNodeBindingIfContextFree.d.ts +13 -0
  84. package/lib/cjs/planning/actions/removeRootServiceNodeBindingIfContextFree.d.ts.map +1 -0
  85. package/lib/cjs/planning/actions/removeRootServiceNodeBindingIfContextFree.js +24 -0
  86. package/lib/cjs/planning/actions/removeRootServiceNodeBindingIfContextFree.js.map +1 -0
  87. package/lib/cjs/planning/actions/removeRootServiceNodeBindingIfContextFree.spec.d.ts +2 -0
  88. package/lib/cjs/planning/actions/removeRootServiceNodeBindingIfContextFree.spec.d.ts.map +1 -0
  89. package/lib/cjs/planning/actions/removeServiceNodeBindingIfContextFree.d.ts +15 -0
  90. package/lib/cjs/planning/actions/removeServiceNodeBindingIfContextFree.d.ts.map +1 -0
  91. package/lib/cjs/planning/actions/removeServiceNodeBindingIfContextFree.js +60 -0
  92. package/lib/cjs/planning/actions/removeServiceNodeBindingIfContextFree.js.map +1 -0
  93. package/lib/cjs/planning/actions/removeServiceNodeBindingIfContextFree.spec.d.ts +2 -0
  94. package/lib/cjs/planning/actions/removeServiceNodeBindingIfContextFree.spec.d.ts.map +1 -0
  95. package/lib/cjs/planning/calculations/buildPlanBindingConstraintsList.d.ts +2 -2
  96. package/lib/cjs/planning/calculations/buildPlanBindingConstraintsList.js +2 -2
  97. package/lib/cjs/planning/calculations/checkPlanServiceRedirectionBindingNodeSingleInjectionBindings.d.ts +2 -2
  98. package/lib/cjs/planning/calculations/checkServiceNodeSingleInjectionBindings.d.ts +2 -2
  99. package/lib/cjs/planning/calculations/handleResolveError.d.ts +3 -0
  100. package/lib/cjs/planning/calculations/handleResolveError.d.ts.map +1 -0
  101. package/lib/cjs/planning/calculations/handleResolveError.js +101 -0
  102. package/lib/cjs/planning/calculations/handleResolveError.js.map +1 -0
  103. package/lib/cjs/planning/calculations/handleResolveError.spec.d.ts +2 -0
  104. package/lib/cjs/planning/calculations/handleResolveError.spec.d.ts.map +1 -0
  105. package/lib/cjs/planning/calculations/throwErrorWhenUnexpectedBindingsAmountFound.d.ts +2 -2
  106. package/lib/cjs/planning/models/CacheBindingInvalidation.d.ts +9 -0
  107. package/lib/cjs/planning/models/CacheBindingInvalidation.d.ts.map +1 -0
  108. package/lib/cjs/planning/models/CacheBindingInvalidation.js +3 -0
  109. package/lib/cjs/planning/models/CacheBindingInvalidation.js.map +1 -0
  110. package/lib/cjs/planning/models/CacheBindingInvalidationKind.d.ts +5 -0
  111. package/lib/cjs/planning/models/CacheBindingInvalidationKind.d.ts.map +1 -0
  112. package/lib/cjs/planning/models/CacheBindingInvalidationKind.js +9 -0
  113. package/lib/cjs/planning/models/CacheBindingInvalidationKind.js.map +1 -0
  114. package/lib/cjs/planning/models/LazyPlanServiceNode.d.ts +2 -1
  115. package/lib/cjs/planning/models/LazyPlanServiceNode.d.ts.map +1 -1
  116. package/lib/cjs/planning/models/LazyPlanServiceNode.js +5 -2
  117. package/lib/cjs/planning/models/LazyPlanServiceNode.js.map +1 -1
  118. package/lib/cjs/planning/models/LazyPlanServiceNode.spec.d.ts +1 -8
  119. package/lib/cjs/planning/models/LazyPlanServiceNode.spec.d.ts.map +1 -1
  120. package/lib/cjs/planning/models/NonCachedServiceNodeContext.d.ts +8 -0
  121. package/lib/cjs/planning/models/NonCachedServiceNodeContext.d.ts.map +1 -0
  122. package/lib/cjs/planning/models/NonCachedServiceNodeContext.js +3 -0
  123. package/lib/cjs/planning/models/NonCachedServiceNodeContext.js.map +1 -0
  124. package/lib/cjs/planning/models/PlanParamsOperations.d.ts +2 -1
  125. package/lib/cjs/planning/models/PlanParamsOperations.d.ts.map +1 -1
  126. package/lib/cjs/planning/services/PlanResultCacheService.d.ts +4 -3
  127. package/lib/cjs/planning/services/PlanResultCacheService.d.ts.map +1 -1
  128. package/lib/cjs/planning/services/PlanResultCacheService.js +162 -63
  129. package/lib/cjs/planning/services/PlanResultCacheService.js.map +1 -1
  130. package/lib/cjs/resolution/actions/resolve.d.ts.map +1 -1
  131. package/lib/cjs/resolution/actions/resolve.js +8 -2
  132. package/lib/cjs/resolution/actions/resolve.js.map +1 -1
  133. package/lib/esm/index.d.ts +40 -5
  134. package/lib/esm/index.d.ts.map +1 -1
  135. package/lib/esm/index.js +1 -1
  136. package/lib/esm/index.js.map +1 -1
  137. package/package.json +4 -4
  138. package/lib/cjs/common/models/SingleInmutableLinkedList.d.ts +0 -11
  139. package/lib/cjs/common/models/SingleInmutableLinkedList.spec.d.ts +0 -2
  140. package/lib/cjs/common/models/SingleInmutableLinkedList.spec.d.ts.map +0 -1
@@ -1,85 +1,33 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.buildPlanServiceNodeFromResolvedValueElementMetadata = exports.buildPlanServiceNodeFromClassElementMetadata = void 0;
3
4
  exports.plan = plan;
4
- const BindingConstraintsImplementation_1 = require("../../binding/models/BindingConstraintsImplementation");
5
- const BindingType_1 = require("../../binding/models/BindingType");
6
- const ClassElementMetadataKind_1 = require("../../metadata/models/ClassElementMetadataKind");
7
- const ResolvedValueElementMetadataKind_1 = require("../../metadata/models/ResolvedValueElementMetadataKind");
8
- const buildFilteredServiceBindings_1 = require("../calculations/buildFilteredServiceBindings");
9
5
  const buildGetPlanOptionsFromPlanParams_1 = require("../calculations/buildGetPlanOptionsFromPlanParams");
10
- const buildPlanBindingConstraintsList_1 = require("../calculations/buildPlanBindingConstraintsList");
11
- const checkServiceNodeSingleInjectionBindings_1 = require("../calculations/checkServiceNodeSingleInjectionBindings");
12
- const getServiceFromMaybeLazyServiceIdentifier_1 = require("../calculations/getServiceFromMaybeLazyServiceIdentifier");
13
6
  const handlePlanError_1 = require("../calculations/handlePlanError");
14
- const isInstanceBindingNode_1 = require("../calculations/isInstanceBindingNode");
15
- const isPlanServiceRedirectionBindingNode_1 = require("../calculations/isPlanServiceRedirectionBindingNode");
16
- const tryBuildGetPlanOptionsFromManagedClassElementMetadata_1 = require("../calculations/tryBuildGetPlanOptionsFromManagedClassElementMetadata");
17
- const tryBuildGetPlanOptionsFromResolvedValueElementMetadata_1 = require("../calculations/tryBuildGetPlanOptionsFromResolvedValueElementMetadata");
18
7
  const LazyPlanServiceNode_1 = require("../models/LazyPlanServiceNode");
19
- const cacheNonRootPlanServiceNode_1 = require("./cacheNonRootPlanServiceNode");
8
+ const curryBuildPlanServiceNode_1 = require("./curryBuildPlanServiceNode");
9
+ const curryBuildPlanServiceNodeFromClassElementMetadata_1 = require("./curryBuildPlanServiceNodeFromClassElementMetadata");
10
+ const curryBuildPlanServiceNodeFromResolvedValueElementMetadata_1 = require("./curryBuildPlanServiceNodeFromResolvedValueElementMetadata");
11
+ const curryBuildServiceNodeBindings_1 = require("./curryBuildServiceNodeBindings");
12
+ const currySubplan_1 = require("./currySubplan");
20
13
  class LazyRootPlanServiceNode extends LazyPlanServiceNode_1.LazyPlanServiceNode {
21
14
  #params;
22
15
  constructor(params, serviceNode) {
23
- super(serviceNode);
16
+ super(serviceNode, serviceNode.serviceIdentifier);
24
17
  this.#params = params;
25
18
  }
26
19
  _buildPlanServiceNode() {
27
20
  return buildPlanServiceNode(this.#params);
28
21
  }
29
22
  }
30
- class LazyManagedClassMetadataPlanServiceNode extends LazyPlanServiceNode_1.LazyPlanServiceNode {
31
- #params;
32
- #bindingConstraintsList;
33
- #elementMetadata;
34
- constructor(params, bindingConstraintsList, elementMetadata, serviceNode) {
35
- super(serviceNode);
36
- this.#params = params;
37
- this.#bindingConstraintsList = bindingConstraintsList;
38
- this.#elementMetadata = elementMetadata;
39
- }
40
- _buildPlanServiceNode() {
41
- return buildPlanServiceNodeFromClassElementMetadata(this.#params, this.#bindingConstraintsList, this.#elementMetadata);
42
- }
43
- }
44
- class LazyResolvedValueMetadataPlanServiceNode extends LazyPlanServiceNode_1.LazyPlanServiceNode {
45
- #params;
46
- #bindingConstraintsList;
47
- #resolvedValueElementMetadata;
48
- constructor(params, bindingConstraintsList, resolvedValueElementMetadata, serviceNode) {
49
- super(serviceNode);
50
- this.#params = params;
51
- this.#bindingConstraintsList = bindingConstraintsList;
52
- this.#resolvedValueElementMetadata = resolvedValueElementMetadata;
53
- }
54
- _buildPlanServiceNode() {
55
- return buildPlanServiceNodeFromResolvedValueElementMetadata(this.#params, this.#bindingConstraintsList, this.#resolvedValueElementMetadata);
56
- }
57
- }
58
- function buildPlanServiceNode(params) {
59
- const bindingConstraintsList = (0, buildPlanBindingConstraintsList_1.buildPlanBindingConstraintsList)(params);
60
- const bindingConstraints = new BindingConstraintsImplementation_1.BindingConstraintsImplementation(bindingConstraintsList.last);
61
- const chained = params.rootConstraints.isMultiple
62
- ? params.rootConstraints.chained
63
- : false;
64
- const filteredServiceBindings = (0, buildFilteredServiceBindings_1.buildFilteredServiceBindings)(params, bindingConstraints, {
65
- chained,
66
- });
67
- const serviceNodeBindings = [];
68
- const serviceNode = {
69
- bindings: serviceNodeBindings,
70
- isContextFree: true,
71
- serviceIdentifier: params.rootConstraints.serviceIdentifier,
72
- };
73
- serviceNodeBindings.push(...buildServiceNodeBindings(params, bindingConstraintsList, filteredServiceBindings, serviceNode, chained));
74
- serviceNode.isContextFree =
75
- !bindingConstraintsList.last.elem.getAncestorsCalled;
76
- if (!params.rootConstraints.isMultiple) {
77
- (0, checkServiceNodeSingleInjectionBindings_1.checkServiceNodeSingleInjectionBindings)(serviceNode, params.rootConstraints.isOptional ?? false, bindingConstraintsList.last);
78
- const [planBindingNode] = serviceNodeBindings;
79
- serviceNode.bindings = planBindingNode;
80
- }
81
- return serviceNode;
23
+ exports.buildPlanServiceNodeFromClassElementMetadata = (0, curryBuildPlanServiceNodeFromClassElementMetadata_1.curryBuildPlanServiceNodeFromClassElementMetadata)(circularBuildServiceNodeBindings);
24
+ exports.buildPlanServiceNodeFromResolvedValueElementMetadata = (0, curryBuildPlanServiceNodeFromResolvedValueElementMetadata_1.curryBuildPlanServiceNodeFromResolvedValueElementMetadata)(circularBuildServiceNodeBindings);
25
+ const subplan = (0, currySubplan_1.currySubplan)(exports.buildPlanServiceNodeFromClassElementMetadata, exports.buildPlanServiceNodeFromResolvedValueElementMetadata, exports.buildPlanServiceNodeFromClassElementMetadata, exports.buildPlanServiceNodeFromResolvedValueElementMetadata);
26
+ const buildServiceNodeBindings = (0, curryBuildServiceNodeBindings_1.curryBuildServiceNodeBindings)(subplan);
27
+ function circularBuildServiceNodeBindings(params, bindingConstraintsList, serviceBindings, parentNode, chainedBindings) {
28
+ return buildServiceNodeBindings(params, bindingConstraintsList, serviceBindings, parentNode, chainedBindings);
82
29
  }
30
+ const buildPlanServiceNode = (0, curryBuildPlanServiceNode_1.curryBuildPlanServiceNode)(buildServiceNodeBindings);
83
31
  function plan(params) {
84
32
  try {
85
33
  const getPlanOptions = (0, buildGetPlanOptionsFromPlanParams_1.buildGetPlanOptionsFromPlanParams)(params);
@@ -101,197 +49,4 @@ function plan(params) {
101
49
  (0, handlePlanError_1.handlePlanError)(params, error);
102
50
  }
103
51
  }
104
- function buildInstancePlanBindingNode(params, binding, bindingConstraintsList) {
105
- const classMetadata = params.operations.getClassMetadata(binding.implementationType);
106
- const childNode = {
107
- binding: binding,
108
- classMetadata,
109
- constructorParams: [],
110
- propertyParams: new Map(),
111
- };
112
- const subplanParams = {
113
- autobindOptions: params.autobindOptions,
114
- node: childNode,
115
- operations: params.operations,
116
- servicesBranch: params.servicesBranch,
117
- };
118
- return subplan(subplanParams, bindingConstraintsList);
119
- }
120
- function buildPlanServiceNodeFromClassElementMetadata(params, bindingConstraintsList, elementMetadata) {
121
- const serviceIdentifier = (0, getServiceFromMaybeLazyServiceIdentifier_1.getServiceFromMaybeLazyServiceIdentifier)(elementMetadata.value);
122
- const updatedBindingConstraintsList = bindingConstraintsList.concat({
123
- getAncestorsCalled: false,
124
- name: elementMetadata.name,
125
- serviceIdentifier,
126
- tags: elementMetadata.tags,
127
- });
128
- const bindingConstraints = new BindingConstraintsImplementation_1.BindingConstraintsImplementation(updatedBindingConstraintsList.last);
129
- const chained = elementMetadata.kind === ClassElementMetadataKind_1.ClassElementMetadataKind.multipleInjection
130
- ? elementMetadata.chained
131
- : false;
132
- const filteredServiceBindings = (0, buildFilteredServiceBindings_1.buildFilteredServiceBindings)(params, bindingConstraints, {
133
- chained,
134
- });
135
- const serviceNodeBindings = [];
136
- const serviceNode = {
137
- bindings: serviceNodeBindings,
138
- isContextFree: true,
139
- serviceIdentifier,
140
- };
141
- serviceNodeBindings.push(...buildServiceNodeBindings(params, updatedBindingConstraintsList, filteredServiceBindings, serviceNode, chained));
142
- serviceNode.isContextFree =
143
- !updatedBindingConstraintsList.last.elem.getAncestorsCalled;
144
- if (elementMetadata.kind === ClassElementMetadataKind_1.ClassElementMetadataKind.singleInjection) {
145
- (0, checkServiceNodeSingleInjectionBindings_1.checkServiceNodeSingleInjectionBindings)(serviceNode, elementMetadata.optional, updatedBindingConstraintsList.last);
146
- const [planBindingNode] = serviceNodeBindings;
147
- serviceNode.bindings = planBindingNode;
148
- }
149
- return serviceNode;
150
- }
151
- function buildPlanServiceNodeFromResolvedValueElementMetadata(params, bindingConstraintsList, elementMetadata) {
152
- const serviceIdentifier = (0, getServiceFromMaybeLazyServiceIdentifier_1.getServiceFromMaybeLazyServiceIdentifier)(elementMetadata.value);
153
- const updatedBindingConstraintsList = bindingConstraintsList.concat({
154
- getAncestorsCalled: false,
155
- name: elementMetadata.name,
156
- serviceIdentifier,
157
- tags: elementMetadata.tags,
158
- });
159
- const bindingConstraints = new BindingConstraintsImplementation_1.BindingConstraintsImplementation(updatedBindingConstraintsList.last);
160
- const chained = elementMetadata.kind === ResolvedValueElementMetadataKind_1.ResolvedValueElementMetadataKind.multipleInjection
161
- ? elementMetadata.chained
162
- : false;
163
- const filteredServiceBindings = (0, buildFilteredServiceBindings_1.buildFilteredServiceBindings)(params, bindingConstraints, {
164
- chained,
165
- });
166
- const serviceNodeBindings = [];
167
- const serviceNode = {
168
- bindings: serviceNodeBindings,
169
- isContextFree: true,
170
- serviceIdentifier,
171
- };
172
- serviceNodeBindings.push(...buildServiceNodeBindings(params, updatedBindingConstraintsList, filteredServiceBindings, serviceNode, chained));
173
- serviceNode.isContextFree =
174
- !updatedBindingConstraintsList.last.elem.getAncestorsCalled;
175
- if (elementMetadata.kind === ResolvedValueElementMetadataKind_1.ResolvedValueElementMetadataKind.singleInjection) {
176
- (0, checkServiceNodeSingleInjectionBindings_1.checkServiceNodeSingleInjectionBindings)(serviceNode, elementMetadata.optional, updatedBindingConstraintsList.last);
177
- const [planBindingNode] = serviceNodeBindings;
178
- serviceNode.bindings = planBindingNode;
179
- }
180
- return serviceNode;
181
- }
182
- function buildResolvedValuePlanBindingNode(params, binding, bindingConstraintsList) {
183
- const childNode = {
184
- binding: binding,
185
- params: [],
186
- };
187
- const subplanParams = {
188
- autobindOptions: params.autobindOptions,
189
- node: childNode,
190
- operations: params.operations,
191
- servicesBranch: params.servicesBranch,
192
- };
193
- return subplan(subplanParams, bindingConstraintsList);
194
- }
195
- function buildServiceNodeBindings(params, bindingConstraintsList, serviceBindings, parentNode, chainedBindings) {
196
- const serviceIdentifier = (0, isPlanServiceRedirectionBindingNode_1.isPlanServiceRedirectionBindingNode)(parentNode)
197
- ? parentNode.binding.targetServiceIdentifier
198
- : parentNode.serviceIdentifier;
199
- params.servicesBranch.push(serviceIdentifier);
200
- const planBindingNodes = [];
201
- for (const binding of serviceBindings) {
202
- switch (binding.type) {
203
- case BindingType_1.bindingTypeValues.Instance: {
204
- planBindingNodes.push(buildInstancePlanBindingNode(params, binding, bindingConstraintsList));
205
- break;
206
- }
207
- case BindingType_1.bindingTypeValues.ResolvedValue: {
208
- planBindingNodes.push(buildResolvedValuePlanBindingNode(params, binding, bindingConstraintsList));
209
- break;
210
- }
211
- case BindingType_1.bindingTypeValues.ServiceRedirection: {
212
- const planBindingNode = buildServiceRedirectionPlanBindingNode(params, bindingConstraintsList, binding, chainedBindings);
213
- planBindingNodes.push(planBindingNode);
214
- break;
215
- }
216
- default:
217
- planBindingNodes.push({
218
- binding: binding,
219
- });
220
- }
221
- }
222
- params.servicesBranch.pop();
223
- return planBindingNodes;
224
- }
225
- function buildServiceRedirectionPlanBindingNode(params, bindingConstraintsList, binding, chainedBindings) {
226
- const childNode = {
227
- binding,
228
- redirections: [],
229
- };
230
- const bindingConstraints = new BindingConstraintsImplementation_1.BindingConstraintsImplementation(bindingConstraintsList.last);
231
- const filteredServiceBindings = (0, buildFilteredServiceBindings_1.buildFilteredServiceBindings)(params, bindingConstraints, {
232
- chained: chainedBindings,
233
- customServiceIdentifier: binding.targetServiceIdentifier,
234
- });
235
- childNode.redirections.push(...buildServiceNodeBindings(params, bindingConstraintsList, filteredServiceBindings, childNode, chainedBindings));
236
- return childNode;
237
- }
238
- function handlePlanServiceNodeBuildFromClassElementMetadata(params, bindingConstraintsList, elementMetadata) {
239
- if (elementMetadata.kind === ClassElementMetadataKind_1.ClassElementMetadataKind.unmanaged) {
240
- return undefined;
241
- }
242
- const getPlanOptions = (0, tryBuildGetPlanOptionsFromManagedClassElementMetadata_1.tryBuildGetPlanOptionsFromManagedClassElementMetadata)(elementMetadata);
243
- if (getPlanOptions !== undefined) {
244
- const planResult = params.operations.getPlan(getPlanOptions);
245
- if (planResult !== undefined && planResult.tree.root.isContextFree) {
246
- return planResult.tree.root;
247
- }
248
- }
249
- const serviceNode = buildPlanServiceNodeFromClassElementMetadata(params, bindingConstraintsList, elementMetadata);
250
- const lazyPlanServiceNode = new LazyManagedClassMetadataPlanServiceNode(params, bindingConstraintsList, elementMetadata, serviceNode);
251
- (0, cacheNonRootPlanServiceNode_1.cacheNonRootPlanServiceNode)(getPlanOptions, params.operations, lazyPlanServiceNode);
252
- return lazyPlanServiceNode;
253
- }
254
- function handlePlanServiceNodeBuildFromResolvedValueElementMetadata(params, bindingConstraintsList, elementMetadata) {
255
- const getPlanOptions = (0, tryBuildGetPlanOptionsFromResolvedValueElementMetadata_1.tryBuildGetPlanOptionsFromResolvedValueElementMetadata)(elementMetadata);
256
- if (getPlanOptions !== undefined) {
257
- const planResult = params.operations.getPlan(getPlanOptions);
258
- if (planResult !== undefined && planResult.tree.root.isContextFree) {
259
- return planResult.tree.root;
260
- }
261
- }
262
- const serviceNode = buildPlanServiceNodeFromResolvedValueElementMetadata(params, bindingConstraintsList, elementMetadata);
263
- const lazyPlanServiceNode = new LazyResolvedValueMetadataPlanServiceNode(params, bindingConstraintsList, elementMetadata, serviceNode);
264
- (0, cacheNonRootPlanServiceNode_1.cacheNonRootPlanServiceNode)(getPlanOptions, params.operations, lazyPlanServiceNode);
265
- return lazyPlanServiceNode;
266
- }
267
- function subplan(params, bindingConstraintsList) {
268
- if ((0, isInstanceBindingNode_1.isInstanceBindingNode)(params.node)) {
269
- return subplanInstanceBindingNode(params, params.node, bindingConstraintsList);
270
- }
271
- else {
272
- return subplanResolvedValueBindingNode(params, params.node, bindingConstraintsList);
273
- }
274
- }
275
- function subplanInstanceBindingNode(params, node, bindingConstraintsList) {
276
- const classMetadata = node.classMetadata;
277
- for (const [index, elementMetadata,] of classMetadata.constructorArguments.entries()) {
278
- node.constructorParams[index] =
279
- handlePlanServiceNodeBuildFromClassElementMetadata(params, bindingConstraintsList, elementMetadata);
280
- }
281
- for (const [propertyKey, elementMetadata] of classMetadata.properties) {
282
- const planServiceNode = handlePlanServiceNodeBuildFromClassElementMetadata(params, bindingConstraintsList, elementMetadata);
283
- if (planServiceNode !== undefined) {
284
- node.propertyParams.set(propertyKey, planServiceNode);
285
- }
286
- }
287
- return params.node;
288
- }
289
- function subplanResolvedValueBindingNode(params, node, bindingConstraintsList) {
290
- const resolvedValueMetadata = node.binding.metadata;
291
- for (const [index, elementMetadata,] of resolvedValueMetadata.arguments.entries()) {
292
- node.params[index] =
293
- handlePlanServiceNodeBuildFromResolvedValueElementMetadata(params, bindingConstraintsList, elementMetadata);
294
- }
295
- return params.node;
296
- }
297
52
  //# sourceMappingURL=plan.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"plan.js","sourceRoot":"","sources":["../../../../src/planning/actions/plan.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"plan.js","sourceRoot":"","sources":["../../../../src/planning/actions/plan.ts"],"names":[],"mappings":";;;AA0FA,oBA2BC;AAhHD,yGAAsG;AACtG,qEAAkE;AAIlE,uEAAoE;AAMpE,2EAAwE;AACxE,2HAAwH;AACxH,2IAAwI;AACxI,mFAAgF;AAChF,iDAA8C;AAE9C,MAAM,uBAAwB,SAAQ,yCAAmB;IAC9C,OAAO,CAAa;IAE7B,YAAY,MAAkB,EAAE,WAA4B;QAC1D,KAAK,CAAC,WAAW,EAAE,WAAW,CAAC,iBAAiB,CAAC,CAAC;QAElD,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC;IACxB,CAAC;IAEkB,qBAAqB;QACtC,OAAO,oBAAoB,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IAC5C,CAAC;CACF;AAEY,QAAA,4CAA4C,GAIlC,IAAA,qGAAiD,EACtE,gCAAgC,CACjC,CAAC;AAEW,QAAA,oDAAoD,GAK/D,IAAA,qHAAyD,EACvD,gCAAgC,CACjC,CAAC;AAEJ,MAAM,OAAO,GAGU,IAAA,2BAAY,EACjC,oDAA4C,EAC5C,4DAAoD,EACpD,oDAA4C,EAC5C,4DAAoD,CACrD,CAAC;AAEF,MAAM,wBAAwB,GAML,IAAA,6DAA6B,EAAC,OAAO,CAAC,CAAC;AAEhE,SAAS,gCAAgC,CACvC,MAAsB,EACtB,sBAA6E,EAC7E,eAAmC,EACnC,UAA6B,EAC7B,eAAwB;IAExB,OAAO,wBAAwB,CAC7B,MAAM,EACN,sBAAsB,EACtB,eAAe,EACf,UAAU,EACV,eAAe,CAChB,CAAC;AACJ,CAAC;AAED,MAAM,oBAAoB,GACxB,IAAA,qDAAyB,EAAC,wBAAwB,CAAC,CAAC;AAEtD,SAAgB,IAAI,CAAC,MAAkB;IACrC,IAAI,CAAC;QACH,MAAM,cAAc,GAClB,IAAA,qEAAiC,EAAC,MAAM,CAAC,CAAC;QAE5C,MAAM,mBAAmB,GACvB,MAAM,CAAC,UAAU,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC;QAE5C,IAAI,mBAAmB,KAAK,SAAS,EAAE,CAAC;YACtC,OAAO,mBAAmB,CAAC;QAC7B,CAAC;QAED,MAAM,WAAW,GAAoB,oBAAoB,CAAC,MAAM,CAAC,CAAC;QAElE,MAAM,UAAU,GAAe;YAC7B,IAAI,EAAE;gBACJ,IAAI,EAAE,IAAI,uBAAuB,CAAC,MAAM,EAAE,WAAW,CAAC;aACvD;SACF,CAAC;QAEF,yFAAyF;QACzF,MAAM,CAAC,UAAU,CAAC,OAAO,CAAC,cAAc,EAAE,UAAU,CAAC,CAAC;QAEtD,OAAO,UAAU,CAAC;IACpB,CAAC;IAAC,OAAO,KAAc,EAAE,CAAC;QACxB,IAAA,iCAAe,EAAC,MAAM,EAAE,KAAK,CAAC,CAAC;IACjC,CAAC;AACH,CAAC"}
@@ -0,0 +1,13 @@
1
+ import { Binding } from '../../binding/models/Binding';
2
+ import { PlanServiceNodeBindingRemovedResult } from '../../metadata/models/PlanServiceNodeBindingRemovedResult';
3
+ import { PlanParams } from '../models/PlanParams';
4
+ import { PlanServiceNode } from '../models/PlanServiceNode';
5
+ /**
6
+ * Detach a binding to the root service node if it is context-free.
7
+ * @param params The plan parameters.
8
+ * @param serviceNode The service node to attach the binding to.
9
+ * @param binding The binding to attach.
10
+ * @returns True if the binding requires ancestor metadata, false otherwise.
11
+ */
12
+ export declare function removeRootServiceNodeBindingIfContextFree(params: PlanParams, serviceNode: PlanServiceNode, binding: Binding<unknown>): PlanServiceNodeBindingRemovedResult;
13
+ //# sourceMappingURL=removeRootServiceNodeBindingIfContextFree.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"removeRootServiceNodeBindingIfContextFree.d.ts","sourceRoot":"","sources":["../../../../src/planning/actions/removeRootServiceNodeBindingIfContextFree.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,8BAA8B,CAAC;AAGvD,OAAO,EAAE,mCAAmC,EAAE,MAAM,2DAA2D,CAAC;AAGhH,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAClD,OAAO,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAC;AAG5D;;;;;;GAMG;AACH,wBAAgB,yCAAyC,CACvD,MAAM,EAAE,UAAU,EAClB,WAAW,EAAE,eAAe,EAC5B,OAAO,EAAE,OAAO,CAAC,OAAO,CAAC,GACxB,mCAAmC,CAiBrC"}
@@ -0,0 +1,24 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.removeRootServiceNodeBindingIfContextFree = removeRootServiceNodeBindingIfContextFree;
4
+ const buildPlanBindingConstraintsList_1 = require("../calculations/buildPlanBindingConstraintsList");
5
+ const LazyPlanServiceNode_1 = require("../models/LazyPlanServiceNode");
6
+ const removeServiceNodeBindingIfContextFree_1 = require("./removeServiceNodeBindingIfContextFree");
7
+ /**
8
+ * Detach a binding to the root service node if it is context-free.
9
+ * @param params The plan parameters.
10
+ * @param serviceNode The service node to attach the binding to.
11
+ * @param binding The binding to attach.
12
+ * @returns True if the binding requires ancestor metadata, false otherwise.
13
+ */
14
+ function removeRootServiceNodeBindingIfContextFree(params, serviceNode, binding) {
15
+ if (LazyPlanServiceNode_1.LazyPlanServiceNode.is(serviceNode) && !serviceNode.isExpanded()) {
16
+ return {
17
+ bindingNodeRemoved: undefined,
18
+ isContextFreeBinding: true,
19
+ };
20
+ }
21
+ const bindingConstraintsList = (0, buildPlanBindingConstraintsList_1.buildPlanBindingConstraintsList)(params);
22
+ return (0, removeServiceNodeBindingIfContextFree_1.removeServiceNodeBindingIfContextFree)(serviceNode, binding, bindingConstraintsList, params.rootConstraints.isOptional ?? false);
23
+ }
24
+ //# sourceMappingURL=removeRootServiceNodeBindingIfContextFree.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"removeRootServiceNodeBindingIfContextFree.js","sourceRoot":"","sources":["../../../../src/planning/actions/removeRootServiceNodeBindingIfContextFree.ts"],"names":[],"mappings":";;AAiBA,8FAqBC;AAlCD,qGAAkG;AAClG,uEAAoE;AAGpE,mGAAgG;AAEhG;;;;;;GAMG;AACH,SAAgB,yCAAyC,CACvD,MAAkB,EAClB,WAA4B,EAC5B,OAAyB;IAEzB,IAAI,yCAAmB,CAAC,EAAE,CAAC,WAAW,CAAC,IAAI,CAAC,WAAW,CAAC,UAAU,EAAE,EAAE,CAAC;QACrE,OAAO;YACL,kBAAkB,EAAE,SAAS;YAC7B,oBAAoB,EAAE,IAAI;SAC3B,CAAC;IACJ,CAAC;IAED,MAAM,sBAAsB,GAC1B,IAAA,iEAA+B,EAAC,MAAM,CAAC,CAAC;IAE1C,OAAO,IAAA,6EAAqC,EAC1C,WAAW,EACX,OAAO,EACP,sBAAsB,EACtB,MAAM,CAAC,eAAe,CAAC,UAAU,IAAI,KAAK,CAC3C,CAAC;AACJ,CAAC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=removeRootServiceNodeBindingIfContextFree.spec.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"removeRootServiceNodeBindingIfContextFree.spec.d.ts","sourceRoot":"","sources":["../../../../src/planning/actions/removeRootServiceNodeBindingIfContextFree.spec.ts"],"names":[],"mappings":""}
@@ -0,0 +1,15 @@
1
+ import { Binding } from '../../binding/models/Binding';
2
+ import { InternalBindingConstraints } from '../../binding/models/BindingConstraintsImplementation';
3
+ import { SingleImmutableLinkedList } from '../../common/models/SingleImmutableLinkedList';
4
+ import { PlanServiceNodeBindingRemovedResult } from '../../metadata/models/PlanServiceNodeBindingRemovedResult';
5
+ import { PlanServiceNode } from '../models/PlanServiceNode';
6
+ /**
7
+ * Detach a binding to the root service node if it is context-free.
8
+ * @param serviceNode The service node to attach the binding to.
9
+ * @param binding The binding to attach.
10
+ * @param bindingConstraintsList The list of binding constraints.
11
+ * @param optionalBindings Whether the bindings are optional.
12
+ * @returns True if the binding requires ancestor metadata, false otherwise.
13
+ */
14
+ export declare function removeServiceNodeBindingIfContextFree(serviceNode: PlanServiceNode, binding: Binding<unknown>, bindingConstraintsList: SingleImmutableLinkedList<InternalBindingConstraints>, optionalBindings: boolean): PlanServiceNodeBindingRemovedResult;
15
+ //# sourceMappingURL=removeServiceNodeBindingIfContextFree.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"removeServiceNodeBindingIfContextFree.d.ts","sourceRoot":"","sources":["../../../../src/planning/actions/removeServiceNodeBindingIfContextFree.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,8BAA8B,CAAC;AAEvD,OAAO,EAEL,0BAA0B,EAC3B,MAAM,uDAAuD,CAAC;AAC/D,OAAO,EAAE,yBAAyB,EAAE,MAAM,+CAA+C,CAAC;AAG1F,OAAO,EAAE,mCAAmC,EAAE,MAAM,2DAA2D,CAAC;AAGhH,OAAO,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAC;AAE5D;;;;;;;GAOG;AACH,wBAAgB,qCAAqC,CACnD,WAAW,EAAE,eAAe,EAC5B,OAAO,EAAE,OAAO,CAAC,OAAO,CAAC,EACzB,sBAAsB,EAAE,yBAAyB,CAAC,0BAA0B,CAAC,EAC7E,gBAAgB,EAAE,OAAO,GACxB,mCAAmC,CAyDrC"}
@@ -0,0 +1,60 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.removeServiceNodeBindingIfContextFree = removeServiceNodeBindingIfContextFree;
4
+ const BindingConstraintsImplementation_1 = require("../../binding/models/BindingConstraintsImplementation");
5
+ const InversifyCoreError_1 = require("../../error/models/InversifyCoreError");
6
+ const InversifyCoreErrorKind_1 = require("../../error/models/InversifyCoreErrorKind");
7
+ const LazyPlanServiceNode_1 = require("../models/LazyPlanServiceNode");
8
+ /**
9
+ * Detach a binding to the root service node if it is context-free.
10
+ * @param serviceNode The service node to attach the binding to.
11
+ * @param binding The binding to attach.
12
+ * @param bindingConstraintsList The list of binding constraints.
13
+ * @param optionalBindings Whether the bindings are optional.
14
+ * @returns True if the binding requires ancestor metadata, false otherwise.
15
+ */
16
+ function removeServiceNodeBindingIfContextFree(serviceNode, binding, bindingConstraintsList, optionalBindings) {
17
+ if (LazyPlanServiceNode_1.LazyPlanServiceNode.is(serviceNode) && !serviceNode.isExpanded()) {
18
+ return {
19
+ bindingNodeRemoved: undefined,
20
+ isContextFreeBinding: true,
21
+ };
22
+ }
23
+ const bindingConstraints = new BindingConstraintsImplementation_1.BindingConstraintsImplementation(bindingConstraintsList.last);
24
+ if (!binding.isSatisfiedBy(bindingConstraints) ||
25
+ bindingConstraintsList.last.elem.getAncestorsCalled) {
26
+ return {
27
+ bindingNodeRemoved: undefined,
28
+ isContextFreeBinding: !bindingConstraintsList.last.elem.getAncestorsCalled,
29
+ };
30
+ }
31
+ let bindingNodeRemoved;
32
+ if (Array.isArray(serviceNode.bindings)) {
33
+ serviceNode.bindings = serviceNode.bindings.filter((bindingNode) => {
34
+ if (bindingNode.binding === binding) {
35
+ bindingNodeRemoved = bindingNode;
36
+ return false;
37
+ }
38
+ return true;
39
+ });
40
+ }
41
+ else {
42
+ if (serviceNode.bindings?.binding === binding) {
43
+ bindingNodeRemoved = serviceNode.bindings;
44
+ if (optionalBindings) {
45
+ serviceNode.bindings = undefined;
46
+ }
47
+ else {
48
+ if (!LazyPlanServiceNode_1.LazyPlanServiceNode.is(serviceNode)) {
49
+ throw new InversifyCoreError_1.InversifyCoreError(InversifyCoreErrorKind_1.InversifyCoreErrorKind.planning, 'Unexpected non-lazy plan service node. This is likely a bug in the planning logic. Please, report this issue');
50
+ }
51
+ serviceNode.invalidate();
52
+ }
53
+ }
54
+ }
55
+ return {
56
+ bindingNodeRemoved: bindingNodeRemoved,
57
+ isContextFreeBinding: true,
58
+ };
59
+ }
60
+ //# sourceMappingURL=removeServiceNodeBindingIfContextFree.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"removeServiceNodeBindingIfContextFree.js","sourceRoot":"","sources":["../../../../src/planning/actions/removeServiceNodeBindingIfContextFree.ts"],"names":[],"mappings":";;AAsBA,sFA8DC;AAlFD,4GAG+D;AAE/D,8EAA2E;AAC3E,sFAAmF;AAEnF,uEAAoE;AAIpE;;;;;;;GAOG;AACH,SAAgB,qCAAqC,CACnD,WAA4B,EAC5B,OAAyB,EACzB,sBAA6E,EAC7E,gBAAyB;IAEzB,IAAI,yCAAmB,CAAC,EAAE,CAAC,WAAW,CAAC,IAAI,CAAC,WAAW,CAAC,UAAU,EAAE,EAAE,CAAC;QACrE,OAAO;YACL,kBAAkB,EAAE,SAAS;YAC7B,oBAAoB,EAAE,IAAI;SAC3B,CAAC;IACJ,CAAC;IAED,MAAM,kBAAkB,GACtB,IAAI,mEAAgC,CAAC,sBAAsB,CAAC,IAAI,CAAC,CAAC;IAEpE,IACE,CAAC,OAAO,CAAC,aAAa,CAAC,kBAAkB,CAAC;QAC1C,sBAAsB,CAAC,IAAI,CAAC,IAAI,CAAC,kBAAkB,EACnD,CAAC;QACD,OAAO;YACL,kBAAkB,EAAE,SAAS;YAC7B,oBAAoB,EAClB,CAAC,sBAAsB,CAAC,IAAI,CAAC,IAAI,CAAC,kBAAkB;SACvD,CAAC;IACJ,CAAC;IAED,IAAI,kBAA+C,CAAC;IAEpD,IAAI,KAAK,CAAC,OAAO,CAAC,WAAW,CAAC,QAAQ,CAAC,EAAE,CAAC;QACxC,WAAW,CAAC,QAAQ,GAAG,WAAW,CAAC,QAAQ,CAAC,MAAM,CAChD,CAAC,WAA4B,EAAW,EAAE;YACxC,IAAI,WAAW,CAAC,OAAO,KAAK,OAAO,EAAE,CAAC;gBACpC,kBAAkB,GAAG,WAAW,CAAC;gBACjC,OAAO,KAAK,CAAC;YACf,CAAC;YACD,OAAO,IAAI,CAAC;QACd,CAAC,CACF,CAAC;IACJ,CAAC;SAAM,CAAC;QACN,IAAI,WAAW,CAAC,QAAQ,EAAE,OAAO,KAAK,OAAO,EAAE,CAAC;YAC9C,kBAAkB,GAAG,WAAW,CAAC,QAAQ,CAAC;YAE1C,IAAI,gBAAgB,EAAE,CAAC;gBACrB,WAAW,CAAC,QAAQ,GAAG,SAAS,CAAC;YACnC,CAAC;iBAAM,CAAC;gBACN,IAAI,CAAC,yCAAmB,CAAC,EAAE,CAAC,WAAW,CAAC,EAAE,CAAC;oBACzC,MAAM,IAAI,uCAAkB,CAC1B,+CAAsB,CAAC,QAAQ,EAC/B,8GAA8G,CAC/G,CAAC;gBACJ,CAAC;gBAED,WAAW,CAAC,UAAU,EAAE,CAAC;YAC3B,CAAC;QACH,CAAC;IACH,CAAC;IAED,OAAO;QACL,kBAAkB,EAAE,kBAAkB;QACtC,oBAAoB,EAAE,IAAI;KAC3B,CAAC;AACJ,CAAC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=removeServiceNodeBindingIfContextFree.spec.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"removeServiceNodeBindingIfContextFree.spec.d.ts","sourceRoot":"","sources":["../../../../src/planning/actions/removeServiceNodeBindingIfContextFree.spec.ts"],"names":[],"mappings":""}
@@ -1,5 +1,5 @@
1
1
  import { InternalBindingConstraints } from '../../binding/models/BindingConstraintsImplementation';
2
- import { SingleInmutableLinkedList } from '../../common/models/SingleInmutableLinkedList';
2
+ import { SingleImmutableLinkedList } from '../../common/models/SingleImmutableLinkedList';
3
3
  import { PlanParams } from '../models/PlanParams';
4
- export declare function buildPlanBindingConstraintsList(params: PlanParams): SingleInmutableLinkedList<InternalBindingConstraints>;
4
+ export declare function buildPlanBindingConstraintsList(params: PlanParams): SingleImmutableLinkedList<InternalBindingConstraints>;
5
5
  //# sourceMappingURL=buildPlanBindingConstraintsList.d.ts.map
@@ -1,13 +1,13 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.buildPlanBindingConstraintsList = buildPlanBindingConstraintsList;
4
- const SingleInmutableLinkedList_1 = require("../../common/models/SingleInmutableLinkedList");
4
+ const SingleImmutableLinkedList_1 = require("../../common/models/SingleImmutableLinkedList");
5
5
  function buildPlanBindingConstraintsList(params) {
6
6
  const tags = new Map();
7
7
  if (params.rootConstraints.tag !== undefined) {
8
8
  tags.set(params.rootConstraints.tag.key, params.rootConstraints.tag.value);
9
9
  }
10
- return new SingleInmutableLinkedList_1.SingleInmutableLinkedList({
10
+ return new SingleImmutableLinkedList_1.SingleImmutableLinkedList({
11
11
  elem: {
12
12
  getAncestorsCalled: false,
13
13
  name: params.rootConstraints.name,
@@ -1,6 +1,6 @@
1
1
  import { ServiceIdentifier } from '@inversifyjs/common';
2
2
  import { InternalBindingConstraints } from '../../binding/models/BindingConstraintsImplementation';
3
- import { SingleInmutableLinkedListNode } from '../../common/models/SingleInmutableLinkedList';
3
+ import { SingleImmutableLinkedListNode } from '../../common/models/SingleImmutableLinkedList';
4
4
  import { PlanServiceRedirectionBindingNode } from '../models/PlanServiceRedirectionBindingNode';
5
- export declare function checkPlanServiceRedirectionBindingNodeSingleInjectionBindings(serviceRedirectionBindingNode: PlanServiceRedirectionBindingNode, isOptional: boolean, bindingConstraintNode: SingleInmutableLinkedListNode<InternalBindingConstraints>, serviceRedirections: readonly ServiceIdentifier[]): void;
5
+ export declare function checkPlanServiceRedirectionBindingNodeSingleInjectionBindings(serviceRedirectionBindingNode: PlanServiceRedirectionBindingNode, isOptional: boolean, bindingConstraintNode: SingleImmutableLinkedListNode<InternalBindingConstraints>, serviceRedirections: readonly ServiceIdentifier[]): void;
6
6
  //# sourceMappingURL=checkPlanServiceRedirectionBindingNodeSingleInjectionBindings.d.ts.map
@@ -1,5 +1,5 @@
1
1
  import { InternalBindingConstraints } from '../../binding/models/BindingConstraintsImplementation';
2
- import { SingleInmutableLinkedListNode } from '../../common/models/SingleInmutableLinkedList';
2
+ import { SingleImmutableLinkedListNode } from '../../common/models/SingleImmutableLinkedList';
3
3
  import { PlanServiceNode } from '../models/PlanServiceNode';
4
- export declare function checkServiceNodeSingleInjectionBindings(serviceNode: PlanServiceNode, isOptional: boolean, bindingConstraintNode: SingleInmutableLinkedListNode<InternalBindingConstraints>): void;
4
+ export declare function checkServiceNodeSingleInjectionBindings(serviceNode: PlanServiceNode, isOptional: boolean, bindingConstraintNode: SingleImmutableLinkedListNode<InternalBindingConstraints>): void;
5
5
  //# sourceMappingURL=checkServiceNodeSingleInjectionBindings.d.ts.map
@@ -0,0 +1,3 @@
1
+ import { ResolutionParams } from '../../resolution/models/ResolutionParams';
2
+ export declare function handleResolveError(params: ResolutionParams, error: unknown): never;
3
+ //# sourceMappingURL=handleResolveError.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"handleResolveError.d.ts","sourceRoot":"","sources":["../../../../src/planning/calculations/handleResolveError.ts"],"names":[],"mappings":"AASA,OAAO,EAAE,gBAAgB,EAAE,MAAM,0CAA0C,CAAC;AAS5E,wBAAgB,kBAAkB,CAChC,MAAM,EAAE,gBAAgB,EACxB,KAAK,EAAE,OAAO,GACb,KAAK,CAaP"}
@@ -0,0 +1,101 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.handleResolveError = handleResolveError;
4
+ const common_1 = require("@inversifyjs/common");
5
+ const BindingType_1 = require("../../binding/models/BindingType");
6
+ const isStackOverflowError_1 = require("../../error/calculations/isStackOverflowError");
7
+ const InversifyCoreError_1 = require("../../error/models/InversifyCoreError");
8
+ const InversifyCoreErrorKind_1 = require("../../error/models/InversifyCoreErrorKind");
9
+ const isPlanServiceRedirectionBindingNode_1 = require("./isPlanServiceRedirectionBindingNode");
10
+ const INDEX_NOT_FOUND = -1;
11
+ function handleResolveError(params, error) {
12
+ if ((0, isStackOverflowError_1.isStackOverflowError)(error)) {
13
+ const stringifiedCircularDependencies = stringifyServiceIdentifierTrace(extractLikelyCircularDependency(params));
14
+ throw new InversifyCoreError_1.InversifyCoreError(InversifyCoreErrorKind_1.InversifyCoreErrorKind.planning, `Circular dependency found: ${stringifiedCircularDependencies}`, { cause: error });
15
+ }
16
+ throw error;
17
+ }
18
+ function extractLikelyCircularDependency(params) {
19
+ const root = params.planResult.tree.root;
20
+ const stack = [];
21
+ function depthFirstSearch(node) {
22
+ const existingIndex = stack.indexOf(node);
23
+ if (existingIndex !== INDEX_NOT_FOUND) {
24
+ const cycleNodes = [
25
+ ...stack.slice(existingIndex),
26
+ node,
27
+ ];
28
+ return cycleNodes.map((n) => n.serviceIdentifier);
29
+ }
30
+ stack.push(node);
31
+ try {
32
+ for (const child of getChildServiceNodes(node)) {
33
+ const result = depthFirstSearch(child);
34
+ if (result !== undefined) {
35
+ return result;
36
+ }
37
+ }
38
+ }
39
+ finally {
40
+ stack.pop();
41
+ }
42
+ return undefined;
43
+ }
44
+ const result = depthFirstSearch(root);
45
+ return result ?? [];
46
+ }
47
+ function getChildServiceNodes(serviceNode) {
48
+ const children = [];
49
+ const bindings = serviceNode.bindings;
50
+ if (bindings === undefined) {
51
+ return children;
52
+ }
53
+ const processBindingNode = (bindingNode) => {
54
+ if ((0, isPlanServiceRedirectionBindingNode_1.isPlanServiceRedirectionBindingNode)(bindingNode)) {
55
+ for (const redirection of bindingNode.redirections) {
56
+ processBindingNode(redirection);
57
+ }
58
+ return;
59
+ }
60
+ switch (bindingNode.binding.type) {
61
+ case BindingType_1.bindingTypeValues.Instance: {
62
+ const instanceNode = bindingNode;
63
+ for (const ctorParam of instanceNode.constructorParams) {
64
+ if (ctorParam !== undefined) {
65
+ children.push(ctorParam);
66
+ }
67
+ }
68
+ for (const propParam of instanceNode.propertyParams.values()) {
69
+ children.push(propParam);
70
+ }
71
+ break;
72
+ }
73
+ case BindingType_1.bindingTypeValues.ResolvedValue: {
74
+ const resolvedValueNode = bindingNode;
75
+ for (const param of resolvedValueNode.params) {
76
+ children.push(param);
77
+ }
78
+ break;
79
+ }
80
+ default:
81
+ break;
82
+ }
83
+ };
84
+ if (Array.isArray(bindings)) {
85
+ for (const bindingNode of bindings) {
86
+ processBindingNode(bindingNode);
87
+ }
88
+ }
89
+ else {
90
+ processBindingNode(bindings);
91
+ }
92
+ return children;
93
+ }
94
+ function stringifyServiceIdentifierTrace(serviceIdentifiers) {
95
+ const serviceIdentifiersArray = [...serviceIdentifiers];
96
+ if (serviceIdentifiersArray.length === 0) {
97
+ return '(No dependency trace)';
98
+ }
99
+ return serviceIdentifiersArray.map(common_1.stringifyServiceIdentifier).join(' -> ');
100
+ }
101
+ //# sourceMappingURL=handleResolveError.js.map