@navios/di 0.4.2 → 0.5.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.
- package/README.md +211 -1
- package/coverage/clover.xml +1912 -1277
- package/coverage/coverage-final.json +37 -28
- package/coverage/docs/examples/basic-usage.mts.html +1 -1
- package/coverage/docs/examples/factory-pattern.mts.html +1 -1
- package/coverage/docs/examples/index.html +1 -1
- package/coverage/docs/examples/injection-tokens.mts.html +1 -1
- package/coverage/docs/examples/request-scope-example.mts.html +1 -1
- package/coverage/docs/examples/service-lifecycle.mts.html +1 -1
- package/coverage/index.html +71 -41
- package/coverage/lib/_tsup-dts-rollup.d.mts.html +682 -43
- package/coverage/lib/index.d.mts.html +7 -4
- package/coverage/lib/index.html +5 -5
- package/coverage/lib/testing/index.d.mts.html +91 -0
- package/coverage/lib/testing/index.html +116 -0
- package/coverage/src/base-instance-holder-manager.mts.html +589 -0
- package/coverage/src/container.mts.html +257 -74
- package/coverage/src/decorators/factory.decorator.mts.html +1 -1
- package/coverage/src/decorators/index.html +1 -1
- package/coverage/src/decorators/index.mts.html +1 -1
- package/coverage/src/decorators/injectable.decorator.mts.html +20 -20
- package/coverage/src/enums/index.html +1 -1
- package/coverage/src/enums/index.mts.html +1 -1
- package/coverage/src/enums/injectable-scope.enum.mts.html +1 -1
- package/coverage/src/enums/injectable-type.enum.mts.html +1 -1
- package/coverage/src/errors/di-error.mts.html +292 -0
- package/coverage/src/errors/errors.enum.mts.html +30 -21
- package/coverage/src/errors/factory-not-found.mts.html +31 -22
- package/coverage/src/errors/factory-token-not-resolved.mts.html +29 -26
- package/coverage/src/errors/index.html +56 -41
- package/coverage/src/errors/index.mts.html +15 -9
- package/coverage/src/errors/instance-destroying.mts.html +31 -22
- package/coverage/src/errors/instance-expired.mts.html +31 -22
- package/coverage/src/errors/instance-not-found.mts.html +31 -22
- package/coverage/src/errors/unknown-error.mts.html +31 -43
- package/coverage/src/event-emitter.mts.html +14 -14
- package/coverage/src/factory-context.mts.html +1 -1
- package/coverage/src/index.html +121 -46
- package/coverage/src/index.mts.html +7 -4
- package/coverage/src/injection-token.mts.html +28 -28
- package/coverage/src/injector.mts.html +1 -1
- package/coverage/src/instance-resolver.mts.html +1762 -0
- package/coverage/src/interfaces/factory.interface.mts.html +1 -1
- package/coverage/src/interfaces/index.html +1 -1
- package/coverage/src/interfaces/index.mts.html +1 -1
- package/coverage/src/interfaces/on-service-destroy.interface.mts.html +1 -1
- package/coverage/src/interfaces/on-service-init.interface.mts.html +1 -1
- package/coverage/src/registry.mts.html +28 -28
- package/coverage/src/request-context-holder.mts.html +183 -102
- package/coverage/src/request-context-manager.mts.html +532 -0
- package/coverage/src/service-instantiator.mts.html +49 -49
- package/coverage/src/service-invalidator.mts.html +1372 -0
- package/coverage/src/service-locator-event-bus.mts.html +48 -48
- package/coverage/src/service-locator-instance-holder.mts.html +2 -14
- package/coverage/src/service-locator-manager.mts.html +71 -335
- package/coverage/src/service-locator.mts.html +240 -2328
- package/coverage/src/symbols/index.html +1 -1
- package/coverage/src/symbols/index.mts.html +1 -1
- package/coverage/src/symbols/injectable-token.mts.html +1 -1
- package/coverage/src/testing/index.html +131 -0
- package/coverage/src/testing/index.mts.html +88 -0
- package/coverage/src/testing/test-container.mts.html +445 -0
- package/coverage/src/token-processor.mts.html +607 -0
- package/coverage/src/utils/defer.mts.html +28 -214
- package/coverage/src/utils/get-injectable-token.mts.html +7 -7
- package/coverage/src/utils/get-injectors.mts.html +99 -99
- package/coverage/src/utils/index.html +15 -15
- package/coverage/src/utils/index.mts.html +4 -7
- package/coverage/src/utils/types.mts.html +1 -1
- package/docs/injectable.md +51 -11
- package/docs/scopes.md +63 -29
- package/lib/_tsup-dts-rollup.d.mts +376 -213
- package/lib/_tsup-dts-rollup.d.ts +376 -213
- package/lib/{chunk-3NLYPYBY.mjs → chunk-2M576LCC.mjs} +1024 -608
- package/lib/chunk-2M576LCC.mjs.map +1 -0
- package/lib/index.d.mts +6 -4
- package/lib/index.d.ts +6 -4
- package/lib/index.js +1189 -773
- package/lib/index.js.map +1 -1
- package/lib/index.mjs +2 -2
- package/lib/testing/index.js +1261 -843
- package/lib/testing/index.js.map +1 -1
- package/lib/testing/index.mjs +1 -1
- package/package.json +4 -4
- package/src/__tests__/container.spec.mts +47 -13
- package/src/__tests__/errors.spec.mts +53 -27
- package/src/__tests__/injectable.spec.mts +73 -0
- package/src/__tests__/request-scope.spec.mts +0 -2
- package/src/__tests__/service-instantiator.spec.mts +1 -0
- package/src/__tests__/service-locator-manager.spec.mts +12 -82
- package/src/__tests__/service-locator.spec.mts +1009 -1
- package/src/__type-tests__/inject.spec-d.mts +30 -7
- package/src/__type-tests__/injectable.spec-d.mts +76 -37
- package/src/base-instance-holder-manager.mts +2 -9
- package/src/container.mts +61 -9
- package/src/decorators/injectable.decorator.mts +29 -5
- package/src/errors/di-error.mts +69 -0
- package/src/errors/index.mts +9 -7
- package/src/injection-token.mts +1 -0
- package/src/injector.mts +2 -0
- package/src/instance-resolver.mts +559 -0
- package/src/request-context-holder.mts +0 -2
- package/src/request-context-manager.mts +149 -0
- package/src/service-invalidator.mts +429 -0
- package/src/service-locator-event-bus.mts +1 -1
- package/src/service-locator-instance-holder.mts +0 -4
- package/src/service-locator-manager.mts +10 -40
- package/src/service-locator.mts +86 -782
- package/src/token-processor.mts +174 -0
- package/src/utils/get-injectors.mts +161 -24
- package/src/utils/index.mts +0 -1
- package/src/utils/types.mts +12 -8
- package/lib/chunk-3NLYPYBY.mjs.map +0 -1
- package/src/__tests__/defer.spec.mts +0 -166
- package/src/errors/errors.enum.mts +0 -8
- package/src/errors/factory-not-found.mts +0 -8
- package/src/errors/factory-token-not-resolved.mts +0 -10
- package/src/errors/instance-destroying.mts +0 -8
- package/src/errors/instance-expired.mts +0 -8
- package/src/errors/instance-not-found.mts +0 -8
- package/src/errors/unknown-error.mts +0 -15
- package/src/utils/defer.mts +0 -73
|
@@ -106,7 +106,7 @@ export interface FactorableWithArgs<T, A extends InjectionTokenSchemaType>
|
|
|
106
106
|
<div class='footer quiet pad2 space-top1 center small'>
|
|
107
107
|
Code coverage generated by
|
|
108
108
|
<a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
|
|
109
|
-
at 2025-09-
|
|
109
|
+
at 2025-09-21T17:47:07.632Z
|
|
110
110
|
</div>
|
|
111
111
|
<script src="../../prettify.js"></script>
|
|
112
112
|
<script>
|
|
@@ -146,7 +146,7 @@
|
|
|
146
146
|
<div class='footer quiet pad2 space-top1 center small'>
|
|
147
147
|
Code coverage generated by
|
|
148
148
|
<a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
|
|
149
|
-
at 2025-09-
|
|
149
|
+
at 2025-09-21T17:47:07.632Z
|
|
150
150
|
</div>
|
|
151
151
|
<script src="../../prettify.js"></script>
|
|
152
152
|
<script>
|
|
@@ -79,7 +79,7 @@ export * from './on-service-destroy.interface.mjs'
|
|
|
79
79
|
<div class='footer quiet pad2 space-top1 center small'>
|
|
80
80
|
Code coverage generated by
|
|
81
81
|
<a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
|
|
82
|
-
at 2025-09-
|
|
82
|
+
at 2025-09-21T17:47:07.632Z
|
|
83
83
|
</div>
|
|
84
84
|
<script src="../../prettify.js"></script>
|
|
85
85
|
<script>
|
|
@@ -79,7 +79,7 @@
|
|
|
79
79
|
<div class='footer quiet pad2 space-top1 center small'>
|
|
80
80
|
Code coverage generated by
|
|
81
81
|
<a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
|
|
82
|
-
at 2025-09-
|
|
82
|
+
at 2025-09-21T17:47:07.632Z
|
|
83
83
|
</div>
|
|
84
84
|
<script src="../../prettify.js"></script>
|
|
85
85
|
<script>
|
|
@@ -79,7 +79,7 @@
|
|
|
79
79
|
<div class='footer quiet pad2 space-top1 center small'>
|
|
80
80
|
Code coverage generated by
|
|
81
81
|
<a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
|
|
82
|
-
at 2025-09-
|
|
82
|
+
at 2025-09-21T17:47:07.632Z
|
|
83
83
|
</div>
|
|
84
84
|
<script src="../../prettify.js"></script>
|
|
85
85
|
<script>
|
|
@@ -32,7 +32,7 @@
|
|
|
32
32
|
<div class='fl pad1y space-right2'>
|
|
33
33
|
<span class="strong">100% </span>
|
|
34
34
|
<span class="quiet">Branches</span>
|
|
35
|
-
<span class='fraction'>
|
|
35
|
+
<span class='fraction'>15/15</span>
|
|
36
36
|
</div>
|
|
37
37
|
|
|
38
38
|
|
|
@@ -129,46 +129,46 @@
|
|
|
129
129
|
<span class="cline-any cline-neutral"> </span>
|
|
130
130
|
<span class="cline-any cline-neutral"> </span>
|
|
131
131
|
<span class="cline-any cline-yes">1x</span>
|
|
132
|
-
<span class="cline-any cline-yes">
|
|
132
|
+
<span class="cline-any cline-yes">124x</span>
|
|
133
133
|
<span class="cline-any cline-neutral"> </span>
|
|
134
|
-
<span class="cline-any cline-yes">
|
|
134
|
+
<span class="cline-any cline-yes">124x</span>
|
|
135
135
|
<span class="cline-any cline-neutral"> </span>
|
|
136
|
-
<span class="cline-any cline-yes">
|
|
137
|
-
<span class="cline-any cline-yes">
|
|
138
|
-
<span class="cline-any cline-yes">
|
|
139
|
-
<span class="cline-any cline-yes">
|
|
140
|
-
<span class="cline-any cline-yes">
|
|
136
|
+
<span class="cline-any cline-yes">124x</span>
|
|
137
|
+
<span class="cline-any cline-yes">642x</span>
|
|
138
|
+
<span class="cline-any cline-yes">629x</span>
|
|
139
|
+
<span class="cline-any cline-yes">629x</span>
|
|
140
|
+
<span class="cline-any cline-yes">421x</span>
|
|
141
141
|
<span class="cline-any cline-yes">5x</span>
|
|
142
142
|
<span class="cline-any cline-yes">5x</span>
|
|
143
|
-
<span class="cline-any cline-yes">
|
|
144
|
-
<span class="cline-any cline-yes">
|
|
143
|
+
<span class="cline-any cline-yes">8x</span>
|
|
144
|
+
<span class="cline-any cline-yes">642x</span>
|
|
145
145
|
<span class="cline-any cline-neutral"> </span>
|
|
146
|
-
<span class="cline-any cline-yes">
|
|
147
|
-
<span class="cline-any cline-yes">
|
|
148
|
-
<span class="cline-any cline-yes">
|
|
149
|
-
<span class="cline-any cline-yes">
|
|
150
|
-
<span class="cline-any cline-yes">
|
|
146
|
+
<span class="cline-any cline-yes">124x</span>
|
|
147
|
+
<span class="cline-any cline-yes">636x</span>
|
|
148
|
+
<span class="cline-any cline-yes">636x</span>
|
|
149
|
+
<span class="cline-any cline-yes">636x</span>
|
|
150
|
+
<span class="cline-any cline-yes">636x</span>
|
|
151
151
|
<span class="cline-any cline-yes">8x</span>
|
|
152
152
|
<span class="cline-any cline-yes">6x</span>
|
|
153
153
|
<span class="cline-any cline-yes">6x</span>
|
|
154
154
|
<span class="cline-any cline-yes">2x</span>
|
|
155
155
|
<span class="cline-any cline-yes">2x</span>
|
|
156
|
-
<span class="cline-any cline-yes">
|
|
157
|
-
<span class="cline-any cline-yes">
|
|
156
|
+
<span class="cline-any cline-yes">628x</span>
|
|
157
|
+
<span class="cline-any cline-yes">636x</span>
|
|
158
158
|
<span class="cline-any cline-neutral"> </span>
|
|
159
|
-
<span class="cline-any cline-yes">
|
|
160
|
-
<span class="cline-any cline-yes">
|
|
161
|
-
<span class="cline-any cline-yes">
|
|
162
|
-
<span class="cline-any cline-yes">
|
|
163
|
-
<span class="cline-any cline-yes">
|
|
164
|
-
<span class="cline-any cline-yes">
|
|
165
|
-
<span class="cline-any cline-yes">
|
|
166
|
-
<span class="cline-any cline-yes">
|
|
159
|
+
<span class="cline-any cline-yes">124x</span>
|
|
160
|
+
<span class="cline-any cline-yes">311x</span>
|
|
161
|
+
<span class="cline-any cline-yes">311x</span>
|
|
162
|
+
<span class="cline-any cline-yes">311x</span>
|
|
163
|
+
<span class="cline-any cline-yes">311x</span>
|
|
164
|
+
<span class="cline-any cline-yes">311x</span>
|
|
165
|
+
<span class="cline-any cline-yes">311x</span>
|
|
166
|
+
<span class="cline-any cline-yes">311x</span>
|
|
167
167
|
<span class="cline-any cline-neutral"> </span>
|
|
168
|
-
<span class="cline-any cline-yes">
|
|
168
|
+
<span class="cline-any cline-yes">124x</span>
|
|
169
169
|
<span class="cline-any cline-yes">4x</span>
|
|
170
170
|
<span class="cline-any cline-yes">4x</span>
|
|
171
|
-
<span class="cline-any cline-yes">
|
|
171
|
+
<span class="cline-any cline-yes">124x</span>
|
|
172
172
|
<span class="cline-any cline-neutral"> </span>
|
|
173
173
|
<span class="cline-any cline-yes">1x</span>
|
|
174
174
|
<span class="cline-any cline-neutral"> </span></td><td class="text"><pre class="prettyprint lang-js">import type { ClassType, InjectionToken } from './injection-token.mjs'
|
|
@@ -232,7 +232,7 @@ export const globalRegistry = new Registry()
|
|
|
232
232
|
<div class='footer quiet pad2 space-top1 center small'>
|
|
233
233
|
Code coverage generated by
|
|
234
234
|
<a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
|
|
235
|
-
at 2025-09-
|
|
235
|
+
at 2025-09-21T17:47:07.632Z
|
|
236
236
|
</div>
|
|
237
237
|
<script src="../prettify.js"></script>
|
|
238
238
|
<script>
|
|
@@ -23,30 +23,30 @@
|
|
|
23
23
|
<div class='clearfix'>
|
|
24
24
|
|
|
25
25
|
<div class='fl pad1y space-right2'>
|
|
26
|
-
<span class="strong">97.
|
|
26
|
+
<span class="strong">97.22% </span>
|
|
27
27
|
<span class="quiet">Statements</span>
|
|
28
|
-
<span class='fraction'>
|
|
28
|
+
<span class='fraction'>70/72</span>
|
|
29
29
|
</div>
|
|
30
30
|
|
|
31
31
|
|
|
32
32
|
<div class='fl pad1y space-right2'>
|
|
33
|
-
<span class="strong">93.
|
|
33
|
+
<span class="strong">93.75% </span>
|
|
34
34
|
<span class="quiet">Branches</span>
|
|
35
|
-
<span class='fraction'>
|
|
35
|
+
<span class='fraction'>15/16</span>
|
|
36
36
|
</div>
|
|
37
37
|
|
|
38
38
|
|
|
39
39
|
<div class='fl pad1y space-right2'>
|
|
40
40
|
<span class="strong">100% </span>
|
|
41
41
|
<span class="quiet">Functions</span>
|
|
42
|
-
<span class='fraction'>
|
|
42
|
+
<span class='fraction'>11/11</span>
|
|
43
43
|
</div>
|
|
44
44
|
|
|
45
45
|
|
|
46
46
|
<div class='fl pad1y space-right2'>
|
|
47
|
-
<span class="strong">97.
|
|
47
|
+
<span class="strong">97.22% </span>
|
|
48
48
|
<span class="quiet">Lines</span>
|
|
49
|
-
<span class='fraction'>
|
|
49
|
+
<span class='fraction'>70/72</span>
|
|
50
50
|
</div>
|
|
51
51
|
|
|
52
52
|
|
|
@@ -237,7 +237,34 @@
|
|
|
237
237
|
<a name='L172'></a><a href='#L172'>172</a>
|
|
238
238
|
<a name='L173'></a><a href='#L173'>173</a>
|
|
239
239
|
<a name='L174'></a><a href='#L174'>174</a>
|
|
240
|
-
<a name='L175'></a><a href='#L175'>175</a
|
|
240
|
+
<a name='L175'></a><a href='#L175'>175</a>
|
|
241
|
+
<a name='L176'></a><a href='#L176'>176</a>
|
|
242
|
+
<a name='L177'></a><a href='#L177'>177</a>
|
|
243
|
+
<a name='L178'></a><a href='#L178'>178</a>
|
|
244
|
+
<a name='L179'></a><a href='#L179'>179</a>
|
|
245
|
+
<a name='L180'></a><a href='#L180'>180</a>
|
|
246
|
+
<a name='L181'></a><a href='#L181'>181</a>
|
|
247
|
+
<a name='L182'></a><a href='#L182'>182</a>
|
|
248
|
+
<a name='L183'></a><a href='#L183'>183</a>
|
|
249
|
+
<a name='L184'></a><a href='#L184'>184</a>
|
|
250
|
+
<a name='L185'></a><a href='#L185'>185</a>
|
|
251
|
+
<a name='L186'></a><a href='#L186'>186</a>
|
|
252
|
+
<a name='L187'></a><a href='#L187'>187</a>
|
|
253
|
+
<a name='L188'></a><a href='#L188'>188</a>
|
|
254
|
+
<a name='L189'></a><a href='#L189'>189</a>
|
|
255
|
+
<a name='L190'></a><a href='#L190'>190</a>
|
|
256
|
+
<a name='L191'></a><a href='#L191'>191</a>
|
|
257
|
+
<a name='L192'></a><a href='#L192'>192</a>
|
|
258
|
+
<a name='L193'></a><a href='#L193'>193</a>
|
|
259
|
+
<a name='L194'></a><a href='#L194'>194</a>
|
|
260
|
+
<a name='L195'></a><a href='#L195'>195</a>
|
|
261
|
+
<a name='L196'></a><a href='#L196'>196</a>
|
|
262
|
+
<a name='L197'></a><a href='#L197'>197</a>
|
|
263
|
+
<a name='L198'></a><a href='#L198'>198</a>
|
|
264
|
+
<a name='L199'></a><a href='#L199'>199</a>
|
|
265
|
+
<a name='L200'></a><a href='#L200'>200</a>
|
|
266
|
+
<a name='L201'></a><a href='#L201'>201</a>
|
|
267
|
+
<a name='L202'></a><a href='#L202'>202</a></td><td class="line-coverage quiet"><span class="cline-any cline-neutral"> </span>
|
|
241
268
|
<span class="cline-any cline-neutral"> </span>
|
|
242
269
|
<span class="cline-any cline-yes">1x</span>
|
|
243
270
|
<span class="cline-any cline-yes">1x</span>
|
|
@@ -327,35 +354,76 @@
|
|
|
327
354
|
<span class="cline-any cline-neutral"> </span>
|
|
328
355
|
<span class="cline-any cline-neutral"> </span>
|
|
329
356
|
<span class="cline-any cline-neutral"> </span>
|
|
357
|
+
<span class="cline-any cline-neutral"> </span>
|
|
358
|
+
<span class="cline-any cline-neutral"> </span>
|
|
359
|
+
<span class="cline-any cline-neutral"> </span>
|
|
360
|
+
<span class="cline-any cline-neutral"> </span>
|
|
361
|
+
<span class="cline-any cline-neutral"> </span>
|
|
362
|
+
<span class="cline-any cline-neutral"> </span>
|
|
363
|
+
<span class="cline-any cline-neutral"> </span>
|
|
364
|
+
<span class="cline-any cline-neutral"> </span>
|
|
365
|
+
<span class="cline-any cline-neutral"> </span>
|
|
366
|
+
<span class="cline-any cline-neutral"> </span>
|
|
367
|
+
<span class="cline-any cline-neutral"> </span>
|
|
368
|
+
<span class="cline-any cline-neutral"> </span>
|
|
369
|
+
<span class="cline-any cline-neutral"> </span>
|
|
370
|
+
<span class="cline-any cline-neutral"> </span>
|
|
371
|
+
<span class="cline-any cline-neutral"> </span>
|
|
372
|
+
<span class="cline-any cline-neutral"> </span>
|
|
373
|
+
<span class="cline-any cline-yes">1x</span>
|
|
330
374
|
<span class="cline-any cline-yes">1x</span>
|
|
331
|
-
<span class="cline-any cline-
|
|
332
|
-
<span class="cline-any cline-yes">
|
|
333
|
-
<span class="cline-any cline-yes">
|
|
334
|
-
<span class="cline-any cline-yes">
|
|
335
|
-
<span class="cline-any cline-neutral"> </span>
|
|
336
|
-
<span class="cline-any cline-yes">
|
|
337
|
-
<span class="cline-any cline-yes">
|
|
338
|
-
<span class="cline-any cline-yes">
|
|
339
|
-
<span class="cline-any cline-yes">
|
|
340
|
-
<span class="cline-any cline-yes">
|
|
341
|
-
<span class="cline-any cline-yes">
|
|
375
|
+
<span class="cline-any cline-neutral"> </span>
|
|
376
|
+
<span class="cline-any cline-yes">44x</span>
|
|
377
|
+
<span class="cline-any cline-yes">44x</span>
|
|
378
|
+
<span class="cline-any cline-yes">44x</span>
|
|
379
|
+
<span class="cline-any cline-neutral"> </span>
|
|
380
|
+
<span class="cline-any cline-yes">44x</span>
|
|
381
|
+
<span class="cline-any cline-yes">44x</span>
|
|
382
|
+
<span class="cline-any cline-yes">44x</span>
|
|
383
|
+
<span class="cline-any cline-yes">44x</span>
|
|
384
|
+
<span class="cline-any cline-yes">44x</span>
|
|
385
|
+
<span class="cline-any cline-yes">44x</span>
|
|
386
|
+
<span class="cline-any cline-yes">44x</span>
|
|
342
387
|
<span class="cline-any cline-yes">2x</span>
|
|
343
388
|
<span class="cline-any cline-yes">3x</span>
|
|
344
389
|
<span class="cline-any cline-yes">2x</span>
|
|
345
390
|
<span class="cline-any cline-yes">2x</span>
|
|
346
|
-
<span class="cline-any cline-yes">
|
|
347
|
-
<span class="cline-any cline-neutral"> </span>
|
|
348
|
-
<span class="cline-any cline-
|
|
349
|
-
<span class="cline-any cline-
|
|
350
|
-
<span class="cline-any cline-
|
|
351
|
-
<span class="cline-any cline-yes">
|
|
352
|
-
<span class="cline-any cline-yes">
|
|
353
|
-
<span class="cline-any cline-yes">
|
|
354
|
-
<span class="cline-any cline-
|
|
355
|
-
<span class="cline-any cline-
|
|
356
|
-
<span class="cline-any cline-
|
|
391
|
+
<span class="cline-any cline-yes">44x</span>
|
|
392
|
+
<span class="cline-any cline-neutral"> </span>
|
|
393
|
+
<span class="cline-any cline-neutral"> </span>
|
|
394
|
+
<span class="cline-any cline-neutral"> </span>
|
|
395
|
+
<span class="cline-any cline-neutral"> </span>
|
|
396
|
+
<span class="cline-any cline-yes">44x</span>
|
|
397
|
+
<span class="cline-any cline-yes">27x</span>
|
|
398
|
+
<span class="cline-any cline-yes">27x</span>
|
|
399
|
+
<span class="cline-any cline-neutral"> </span>
|
|
400
|
+
<span class="cline-any cline-neutral"> </span>
|
|
401
|
+
<span class="cline-any cline-neutral"> </span>
|
|
402
|
+
<span class="cline-any cline-neutral"> </span>
|
|
403
|
+
<span class="cline-any cline-yes">44x</span>
|
|
404
|
+
<span class="cline-any cline-yes">96x</span>
|
|
405
|
+
<span class="cline-any cline-yes">96x</span>
|
|
406
|
+
<span class="cline-any cline-neutral"> </span>
|
|
407
|
+
<span class="cline-any cline-neutral"> </span>
|
|
408
|
+
<span class="cline-any cline-neutral"> </span>
|
|
409
|
+
<span class="cline-any cline-neutral"> </span>
|
|
410
|
+
<span class="cline-any cline-yes">44x</span>
|
|
411
|
+
<span class="cline-any cline-yes">2x</span>
|
|
412
|
+
<span class="cline-any cline-yes">2x</span>
|
|
413
|
+
<span class="cline-any cline-neutral"> </span>
|
|
414
|
+
<span class="cline-any cline-neutral"> </span>
|
|
415
|
+
<span class="cline-any cline-neutral"> </span>
|
|
416
|
+
<span class="cline-any cline-neutral"> </span>
|
|
417
|
+
<span class="cline-any cline-yes">44x</span>
|
|
357
418
|
<span class="cline-any cline-yes">12x</span>
|
|
358
419
|
<span class="cline-any cline-yes">12x</span>
|
|
420
|
+
<span class="cline-any cline-neutral"> </span>
|
|
421
|
+
<span class="cline-any cline-yes">44x</span>
|
|
422
|
+
<span class="cline-any cline-yes">41x</span>
|
|
423
|
+
<span class="cline-any cline-yes">41x</span>
|
|
424
|
+
<span class="cline-any cline-yes">41x</span>
|
|
425
|
+
<span class="cline-any cline-yes">41x</span>
|
|
426
|
+
<span class="cline-any cline-yes">41x</span>
|
|
359
427
|
<span class="cline-any cline-yes">12x</span>
|
|
360
428
|
<span class="cline-any cline-yes">12x</span>
|
|
361
429
|
<span class="cline-any cline-yes">12x</span>
|
|
@@ -365,41 +433,27 @@
|
|
|
365
433
|
<span class="cline-any cline-yes">12x</span>
|
|
366
434
|
<span class="cline-any cline-yes">12x</span>
|
|
367
435
|
<span class="cline-any cline-yes">12x</span>
|
|
368
|
-
<span class="cline-any cline-yes">
|
|
369
|
-
<span class="cline-any cline-yes">
|
|
436
|
+
<span class="cline-any cline-yes">41x</span>
|
|
437
|
+
<span class="cline-any cline-yes">29x</span>
|
|
370
438
|
<span class="cline-any cline-no"> </span>
|
|
371
439
|
<span class="cline-any cline-no"> </span>
|
|
372
|
-
<span class="cline-any cline-yes">
|
|
373
|
-
<span class="cline-any cline-yes">
|
|
374
|
-
<span class="cline-any cline-yes">
|
|
375
|
-
<span class="cline-any cline-yes">23x</span>
|
|
376
|
-
<span class="cline-any cline-neutral"> </span>
|
|
377
|
-
<span class="cline-any cline-yes">19x</span>
|
|
378
|
-
<span class="cline-any cline-yes">16x</span>
|
|
379
|
-
<span class="cline-any cline-yes">16x</span>
|
|
380
|
-
<span class="cline-any cline-neutral"> </span>
|
|
381
|
-
<span class="cline-any cline-yes">19x</span>
|
|
382
|
-
<span class="cline-any cline-yes">26x</span>
|
|
383
|
-
<span class="cline-any cline-yes">26x</span>
|
|
384
|
-
<span class="cline-any cline-neutral"> </span>
|
|
385
|
-
<span class="cline-any cline-yes">19x</span>
|
|
386
|
-
<span class="cline-any cline-yes">12x</span>
|
|
387
|
-
<span class="cline-any cline-yes">12x</span>
|
|
440
|
+
<span class="cline-any cline-yes">29x</span>
|
|
441
|
+
<span class="cline-any cline-yes">29x</span>
|
|
442
|
+
<span class="cline-any cline-yes">41x</span>
|
|
388
443
|
<span class="cline-any cline-neutral"> </span>
|
|
389
|
-
<span class="cline-any cline-yes">
|
|
390
|
-
<span class="cline-any cline-yes">
|
|
391
|
-
<span class="cline-any cline-yes">
|
|
392
|
-
<span class="cline-any cline-yes">
|
|
393
|
-
<span class="cline-any cline-yes">14x</span>
|
|
444
|
+
<span class="cline-any cline-yes">44x</span>
|
|
445
|
+
<span class="cline-any cline-yes">29x</span>
|
|
446
|
+
<span class="cline-any cline-yes">29x</span>
|
|
447
|
+
<span class="cline-any cline-yes">29x</span>
|
|
394
448
|
<span class="cline-any cline-neutral"> </span>
|
|
395
|
-
<span class="cline-any cline-yes">
|
|
449
|
+
<span class="cline-any cline-yes">44x</span>
|
|
396
450
|
<span class="cline-any cline-yes">7x</span>
|
|
397
451
|
<span class="cline-any cline-yes">7x</span>
|
|
398
452
|
<span class="cline-any cline-neutral"> </span>
|
|
399
|
-
<span class="cline-any cline-yes">
|
|
453
|
+
<span class="cline-any cline-yes">44x</span>
|
|
400
454
|
<span class="cline-any cline-yes">2x</span>
|
|
401
455
|
<span class="cline-any cline-yes">2x</span>
|
|
402
|
-
<span class="cline-any cline-yes">
|
|
456
|
+
<span class="cline-any cline-yes">44x</span>
|
|
403
457
|
<span class="cline-any cline-neutral"> </span>
|
|
404
458
|
<span class="cline-any cline-neutral"> </span>
|
|
405
459
|
<span class="cline-any cline-neutral"> </span>
|
|
@@ -413,9 +467,9 @@
|
|
|
413
467
|
<span class="cline-any cline-yes">8x</span>
|
|
414
468
|
<span class="cline-any cline-neutral"> </span></td><td class="text"><pre class="prettyprint lang-js">import type { ServiceLocatorInstanceHolder } from './service-locator-instance-holder.mjs'
|
|
415
469
|
|
|
470
|
+
import { BaseInstanceHolderManager } from './base-instance-holder-manager.mjs'
|
|
416
471
|
import { InjectableScope, InjectableType } from './enums/index.mjs'
|
|
417
472
|
import { InjectionToken } from './injection-token.mjs'
|
|
418
|
-
import { ServiceLocatorInstanceHolderStatus } from './service-locator-instance-holder.mjs'
|
|
419
473
|
|
|
420
474
|
/**
|
|
421
475
|
* Request context holder that manages pre-prepared instances for a specific request.
|
|
@@ -426,11 +480,6 @@ export interface RequestContextHolder {
|
|
|
426
480
|
* Unique identifier for this request context.
|
|
427
481
|
*/
|
|
428
482
|
readonly requestId: string
|
|
429
|
-
|
|
430
|
-
/**
|
|
431
|
-
* Pre-prepared instances for this request, keyed by instance name.
|
|
432
|
-
*/
|
|
433
|
-
readonly instances: Map<string, any>
|
|
434
483
|
|
|
435
484
|
/**
|
|
436
485
|
* Instance holders for request-scoped services.
|
|
@@ -466,21 +515,16 @@ export interface RequestContextHolder {
|
|
|
466
515
|
* Adds a pre-prepared instance to this context.
|
|
467
516
|
*/
|
|
468
517
|
addInstance(token: InjectionToken<any, undefined>, instance: any): void
|
|
469
|
-
|
|
470
|
-
/**
|
|
471
|
-
* Gets a pre-prepared instance from this context.
|
|
472
|
-
*/
|
|
473
|
-
getInstance(instanceName: string): any | undefined
|
|
474
518
|
|
|
475
519
|
/**
|
|
476
520
|
* Gets an instance holder from this context.
|
|
477
521
|
*/
|
|
478
|
-
|
|
522
|
+
get(instanceName: string): ServiceLocatorInstanceHolder | undefined
|
|
479
523
|
|
|
480
524
|
/**
|
|
481
525
|
* Checks if this context has a pre-prepared instance.
|
|
482
526
|
*/
|
|
483
|
-
|
|
527
|
+
has(instanceName: string): boolean
|
|
484
528
|
|
|
485
529
|
/**
|
|
486
530
|
* Clears all instances and holders from this context.
|
|
@@ -496,14 +540,41 @@ export interface RequestContextHolder {
|
|
|
496
540
|
* Sets metadata value by key.
|
|
497
541
|
*/
|
|
498
542
|
setMetadata(key: string, value: any): void
|
|
543
|
+
|
|
544
|
+
// Methods inherited from BaseInstanceHolderManager
|
|
545
|
+
/**
|
|
546
|
+
* Filters holders based on a predicate function.
|
|
547
|
+
*/
|
|
548
|
+
filter(
|
|
549
|
+
predicate: (
|
|
550
|
+
value: ServiceLocatorInstanceHolder<any>,
|
|
551
|
+
key: string,
|
|
552
|
+
) => boolean,
|
|
553
|
+
): Map<string, ServiceLocatorInstanceHolder>
|
|
554
|
+
|
|
555
|
+
/**
|
|
556
|
+
* Deletes a holder by name.
|
|
557
|
+
*/
|
|
558
|
+
delete(name: string): boolean
|
|
559
|
+
|
|
560
|
+
/**
|
|
561
|
+
* Gets the number of holders currently managed.
|
|
562
|
+
*/
|
|
563
|
+
size(): number
|
|
564
|
+
|
|
565
|
+
/**
|
|
566
|
+
* Checks if this manager has any holders.
|
|
567
|
+
*/
|
|
568
|
+
isEmpty(): boolean
|
|
499
569
|
}
|
|
500
570
|
|
|
501
571
|
/**
|
|
502
572
|
* Default implementation of RequestContextHolder.
|
|
503
573
|
*/
|
|
504
|
-
export class DefaultRequestContextHolder
|
|
505
|
-
|
|
506
|
-
|
|
574
|
+
export class DefaultRequestContextHolder
|
|
575
|
+
extends BaseInstanceHolderManager
|
|
576
|
+
implements RequestContextHolder
|
|
577
|
+
{
|
|
507
578
|
public readonly metadata = new Map<string, any>()
|
|
508
579
|
public readonly createdAt = Date.now()
|
|
509
580
|
|
|
@@ -512,12 +583,41 @@ export class DefaultRequestContextHolder implements RequestContextHolder {
|
|
|
512
583
|
public readonly priority: number = 100,
|
|
513
584
|
initialMetadata?: Record<string, any>,
|
|
514
585
|
) {
|
|
586
|
+
super(null) // RequestContextHolder doesn't need logging
|
|
515
587
|
if (initialMetadata) {
|
|
516
588
|
Object.entries(initialMetadata).forEach(([key, value]) => {
|
|
517
589
|
this.metadata.set(key, value)
|
|
518
590
|
})
|
|
519
591
|
}
|
|
520
592
|
}
|
|
593
|
+
|
|
594
|
+
/**
|
|
595
|
+
* Public getter for holders to maintain interface compatibility.
|
|
596
|
+
*/
|
|
597
|
+
get holders(): Map<string, ServiceLocatorInstanceHolder> {
|
|
598
|
+
return this._holders
|
|
599
|
+
}
|
|
600
|
+
|
|
601
|
+
/**
|
|
602
|
+
* Gets a holder by name. For RequestContextHolder, this is a simple lookup.
|
|
603
|
+
*/
|
|
604
|
+
get(name: string): ServiceLocatorInstanceHolder | undefined {
|
|
605
|
+
return this._holders.get(name)
|
|
606
|
+
}
|
|
607
|
+
|
|
608
|
+
/**
|
|
609
|
+
* Sets a holder by name.
|
|
610
|
+
*/
|
|
611
|
+
set(name: string, holder: ServiceLocatorInstanceHolder): void {
|
|
612
|
+
this._holders.set(name, holder)
|
|
613
|
+
}
|
|
614
|
+
|
|
615
|
+
/**
|
|
616
|
+
* Checks if a holder exists by name.
|
|
617
|
+
*/
|
|
618
|
+
has(name: string): boolean {
|
|
619
|
+
return this._holders.has(name)
|
|
620
|
+
}
|
|
521
621
|
|
|
522
622
|
addInstance(
|
|
523
623
|
instanceName: string | InjectionToken<any, undefined>,
|
|
@@ -525,44 +625,25 @@ export class DefaultRequestContextHolder implements RequestContextHolder {
|
|
|
525
625
|
holder?: ServiceLocatorInstanceHolder,
|
|
526
626
|
): void {
|
|
527
627
|
if (instanceName instanceof InjectionToken) {
|
|
528
|
-
|
|
529
|
-
this.
|
|
628
|
+
const name = instanceName.toString()
|
|
629
|
+
const createdHolder = this.createCreatedHolder(
|
|
630
|
+
name,
|
|
530
631
|
instance,
|
|
531
|
-
|
|
532
|
-
|
|
533
|
-
|
|
534
|
-
|
|
535
|
-
|
|
536
|
-
name: instanceName.toString(),
|
|
537
|
-
type: InjectableType.Class,
|
|
538
|
-
scope: InjectableScope.Singleton,
|
|
539
|
-
createdAt: Date.now(),
|
|
540
|
-
ttl: Infinity,
|
|
541
|
-
})
|
|
632
|
+
InjectableType.Class,
|
|
633
|
+
InjectableScope.Singleton,
|
|
634
|
+
new Set(),
|
|
635
|
+
)
|
|
636
|
+
this._holders.set(name, createdHolder)
|
|
542
637
|
} else {
|
|
543
638
|
if (!holder) <span class="branch-0 cbranch-no" title="branch not covered" >{</span>
|
|
544
639
|
<span class="cstat-no" title="statement not covered" > throw new Error('Holder is required when adding an instance by name')</span>
|
|
545
640
|
<span class="cstat-no" title="statement not covered" > }</span>
|
|
546
|
-
this.
|
|
547
|
-
this.holders.set(instanceName, holder)
|
|
641
|
+
this._holders.set(instanceName, holder)
|
|
548
642
|
}
|
|
549
643
|
}
|
|
550
|
-
|
|
551
|
-
getInstance(instanceName: string): any | undefined {
|
|
552
|
-
return this.instances.get(instanceName)
|
|
553
|
-
}
|
|
554
|
-
|
|
555
|
-
getHolder(instanceName: string): ServiceLocatorInstanceHolder | undefined {
|
|
556
|
-
return this.holders.get(instanceName)
|
|
557
|
-
}
|
|
558
|
-
|
|
559
|
-
hasInstance(instanceName: string): boolean {
|
|
560
|
-
return this.instances.has(instanceName)
|
|
561
|
-
}
|
|
562
644
|
|
|
563
645
|
clear(): void {
|
|
564
|
-
|
|
565
|
-
this.holders.clear()
|
|
646
|
+
super.clear() // Use the base class clear method for holders
|
|
566
647
|
this.metadata.clear()
|
|
567
648
|
}
|
|
568
649
|
|
|
@@ -592,7 +673,7 @@ export function createRequestContextHolder(
|
|
|
592
673
|
<div class='footer quiet pad2 space-top1 center small'>
|
|
593
674
|
Code coverage generated by
|
|
594
675
|
<a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
|
|
595
|
-
at 2025-09-
|
|
676
|
+
at 2025-09-21T17:47:07.632Z
|
|
596
677
|
</div>
|
|
597
678
|
<script src="../prettify.js"></script>
|
|
598
679
|
<script>
|