@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
|
@@ -23,30 +23,30 @@
|
|
|
23
23
|
<div class='clearfix'>
|
|
24
24
|
|
|
25
25
|
<div class='fl pad1y space-right2'>
|
|
26
|
-
<span class="strong">
|
|
26
|
+
<span class="strong">91.96% </span>
|
|
27
27
|
<span class="quiet">Statements</span>
|
|
28
|
-
<span class='fraction'>
|
|
28
|
+
<span class='fraction'>103/112</span>
|
|
29
29
|
</div>
|
|
30
30
|
|
|
31
31
|
|
|
32
32
|
<div class='fl pad1y space-right2'>
|
|
33
|
-
<span class="strong">
|
|
33
|
+
<span class="strong">95.45% </span>
|
|
34
34
|
<span class="quiet">Branches</span>
|
|
35
|
-
<span class='fraction'>
|
|
35
|
+
<span class='fraction'>21/22</span>
|
|
36
36
|
</div>
|
|
37
37
|
|
|
38
38
|
|
|
39
39
|
<div class='fl pad1y space-right2'>
|
|
40
|
-
<span class="strong">
|
|
40
|
+
<span class="strong">87.5% </span>
|
|
41
41
|
<span class="quiet">Functions</span>
|
|
42
|
-
<span class='fraction'>
|
|
42
|
+
<span class='fraction'>14/16</span>
|
|
43
43
|
</div>
|
|
44
44
|
|
|
45
45
|
|
|
46
46
|
<div class='fl pad1y space-right2'>
|
|
47
|
-
<span class="strong">
|
|
47
|
+
<span class="strong">91.96% </span>
|
|
48
48
|
<span class="quiet">Lines</span>
|
|
49
|
-
<span class='fraction'>
|
|
49
|
+
<span class='fraction'>103/112</span>
|
|
50
50
|
</div>
|
|
51
51
|
|
|
52
52
|
|
|
@@ -230,7 +230,69 @@
|
|
|
230
230
|
<a name='L165'></a><a href='#L165'>165</a>
|
|
231
231
|
<a name='L166'></a><a href='#L166'>166</a>
|
|
232
232
|
<a name='L167'></a><a href='#L167'>167</a>
|
|
233
|
-
<a name='L168'></a><a href='#L168'>168</a
|
|
233
|
+
<a name='L168'></a><a href='#L168'>168</a>
|
|
234
|
+
<a name='L169'></a><a href='#L169'>169</a>
|
|
235
|
+
<a name='L170'></a><a href='#L170'>170</a>
|
|
236
|
+
<a name='L171'></a><a href='#L171'>171</a>
|
|
237
|
+
<a name='L172'></a><a href='#L172'>172</a>
|
|
238
|
+
<a name='L173'></a><a href='#L173'>173</a>
|
|
239
|
+
<a name='L174'></a><a href='#L174'>174</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>
|
|
268
|
+
<a name='L203'></a><a href='#L203'>203</a>
|
|
269
|
+
<a name='L204'></a><a href='#L204'>204</a>
|
|
270
|
+
<a name='L205'></a><a href='#L205'>205</a>
|
|
271
|
+
<a name='L206'></a><a href='#L206'>206</a>
|
|
272
|
+
<a name='L207'></a><a href='#L207'>207</a>
|
|
273
|
+
<a name='L208'></a><a href='#L208'>208</a>
|
|
274
|
+
<a name='L209'></a><a href='#L209'>209</a>
|
|
275
|
+
<a name='L210'></a><a href='#L210'>210</a>
|
|
276
|
+
<a name='L211'></a><a href='#L211'>211</a>
|
|
277
|
+
<a name='L212'></a><a href='#L212'>212</a>
|
|
278
|
+
<a name='L213'></a><a href='#L213'>213</a>
|
|
279
|
+
<a name='L214'></a><a href='#L214'>214</a>
|
|
280
|
+
<a name='L215'></a><a href='#L215'>215</a>
|
|
281
|
+
<a name='L216'></a><a href='#L216'>216</a>
|
|
282
|
+
<a name='L217'></a><a href='#L217'>217</a>
|
|
283
|
+
<a name='L218'></a><a href='#L218'>218</a>
|
|
284
|
+
<a name='L219'></a><a href='#L219'>219</a>
|
|
285
|
+
<a name='L220'></a><a href='#L220'>220</a>
|
|
286
|
+
<a name='L221'></a><a href='#L221'>221</a>
|
|
287
|
+
<a name='L222'></a><a href='#L222'>222</a>
|
|
288
|
+
<a name='L223'></a><a href='#L223'>223</a>
|
|
289
|
+
<a name='L224'></a><a href='#L224'>224</a>
|
|
290
|
+
<a name='L225'></a><a href='#L225'>225</a>
|
|
291
|
+
<a name='L226'></a><a href='#L226'>226</a>
|
|
292
|
+
<a name='L227'></a><a href='#L227'>227</a>
|
|
293
|
+
<a name='L228'></a><a href='#L228'>228</a>
|
|
294
|
+
<a name='L229'></a><a href='#L229'>229</a></td><td class="line-coverage quiet"><span class="cline-any cline-yes">1x</span>
|
|
295
|
+
<span class="cline-any cline-neutral"> </span>
|
|
234
296
|
<span class="cline-any cline-neutral"> </span>
|
|
235
297
|
<span class="cline-any cline-neutral"> </span>
|
|
236
298
|
<span class="cline-any cline-neutral"> </span>
|
|
@@ -258,29 +320,29 @@
|
|
|
258
320
|
<span class="cline-any cline-neutral"> </span>
|
|
259
321
|
<span class="cline-any cline-yes">1x</span>
|
|
260
322
|
<span class="cline-any cline-yes">1x</span>
|
|
261
|
-
<span class="cline-any cline-yes">
|
|
323
|
+
<span class="cline-any cline-yes">119x</span>
|
|
262
324
|
<span class="cline-any cline-neutral"> </span>
|
|
263
|
-
<span class="cline-any cline-yes">
|
|
264
|
-
<span class="cline-any cline-yes">
|
|
265
|
-
<span class="cline-any cline-yes">
|
|
266
|
-
<span class="cline-any cline-yes">
|
|
267
|
-
<span class="cline-any cline-yes">
|
|
268
|
-
<span class="cline-any cline-yes">
|
|
269
|
-
<span class="cline-any cline-yes">
|
|
270
|
-
<span class="cline-any cline-yes">
|
|
325
|
+
<span class="cline-any cline-yes">119x</span>
|
|
326
|
+
<span class="cline-any cline-yes">119x</span>
|
|
327
|
+
<span class="cline-any cline-yes">119x</span>
|
|
328
|
+
<span class="cline-any cline-yes">119x</span>
|
|
329
|
+
<span class="cline-any cline-yes">119x</span>
|
|
330
|
+
<span class="cline-any cline-yes">119x</span>
|
|
331
|
+
<span class="cline-any cline-yes">119x</span>
|
|
332
|
+
<span class="cline-any cline-yes">119x</span>
|
|
271
333
|
<span class="cline-any cline-neutral"> </span>
|
|
272
|
-
<span class="cline-any cline-yes">
|
|
273
|
-
<span class="cline-any cline-yes">
|
|
274
|
-
<span class="cline-any cline-yes">
|
|
275
|
-
<span class="cline-any cline-yes">
|
|
276
|
-
<span class="cline-any cline-yes">
|
|
277
|
-
<span class="cline-any cline-yes">
|
|
278
|
-
<span class="cline-any cline-yes">
|
|
279
|
-
<span class="cline-any cline-yes">
|
|
280
|
-
<span class="cline-any cline-yes">
|
|
281
|
-
<span class="cline-any cline-yes">
|
|
282
|
-
<span class="cline-any cline-yes">
|
|
283
|
-
<span class="cline-any cline-yes">
|
|
334
|
+
<span class="cline-any cline-yes">119x</span>
|
|
335
|
+
<span class="cline-any cline-yes">119x</span>
|
|
336
|
+
<span class="cline-any cline-yes">119x</span>
|
|
337
|
+
<span class="cline-any cline-yes">119x</span>
|
|
338
|
+
<span class="cline-any cline-yes">119x</span>
|
|
339
|
+
<span class="cline-any cline-yes">119x</span>
|
|
340
|
+
<span class="cline-any cline-yes">119x</span>
|
|
341
|
+
<span class="cline-any cline-yes">119x</span>
|
|
342
|
+
<span class="cline-any cline-yes">119x</span>
|
|
343
|
+
<span class="cline-any cline-yes">119x</span>
|
|
344
|
+
<span class="cline-any cline-yes">119x</span>
|
|
345
|
+
<span class="cline-any cline-yes">119x</span>
|
|
284
346
|
<span class="cline-any cline-neutral"> </span>
|
|
285
347
|
<span class="cline-any cline-neutral"> </span>
|
|
286
348
|
<span class="cline-any cline-neutral"> </span>
|
|
@@ -313,48 +375,99 @@
|
|
|
313
375
|
<span class="cline-any cline-neutral"> </span>
|
|
314
376
|
<span class="cline-any cline-neutral"> </span>
|
|
315
377
|
<span class="cline-any cline-neutral"> </span>
|
|
316
|
-
<span class="cline-any cline-yes">
|
|
317
|
-
<span class="cline-any cline-yes">
|
|
378
|
+
<span class="cline-any cline-yes">119x</span>
|
|
379
|
+
<span class="cline-any cline-yes">235x</span>
|
|
318
380
|
<span class="cline-any cline-neutral"> </span>
|
|
319
381
|
<span class="cline-any cline-neutral"> </span>
|
|
320
382
|
<span class="cline-any cline-neutral"> </span>
|
|
321
383
|
<span class="cline-any cline-neutral"> </span>
|
|
322
|
-
<span class="cline-any cline-yes">
|
|
323
|
-
<span class="cline-any cline-yes">
|
|
324
|
-
<span class="cline-any cline-yes">
|
|
325
|
-
<span class="cline-any cline-yes">
|
|
384
|
+
<span class="cline-any cline-yes">235x</span>
|
|
385
|
+
<span class="cline-any cline-yes">235x</span>
|
|
386
|
+
<span class="cline-any cline-yes">235x</span>
|
|
387
|
+
<span class="cline-any cline-yes">235x</span>
|
|
326
388
|
<span class="cline-any cline-neutral"> </span>
|
|
327
389
|
<span class="cline-any cline-neutral"> </span>
|
|
328
390
|
<span class="cline-any cline-neutral"> </span>
|
|
329
391
|
<span class="cline-any cline-neutral"> </span>
|
|
330
|
-
<span class="cline-any cline-yes">
|
|
331
|
-
<span class="cline-any cline-yes">
|
|
332
|
-
<span class="cline-any cline-yes">
|
|
392
|
+
<span class="cline-any cline-yes">119x</span>
|
|
393
|
+
<span class="cline-any cline-yes">13x</span>
|
|
394
|
+
<span class="cline-any cline-yes">13x</span>
|
|
333
395
|
<span class="cline-any cline-neutral"> </span>
|
|
334
396
|
<span class="cline-any cline-neutral"> </span>
|
|
335
397
|
<span class="cline-any cline-neutral"> </span>
|
|
336
398
|
<span class="cline-any cline-neutral"> </span>
|
|
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">11x</span>
|
|
341
|
-
<span class="cline-any cline-yes">11x</span>
|
|
342
|
-
<span class="cline-any cline-yes">1x</span>
|
|
343
|
-
<span class="cline-any cline-yes">1x</span>
|
|
344
|
-
<span class="cline-any cline-yes">10x</span>
|
|
399
|
+
<span class="cline-any cline-yes">119x</span>
|
|
400
|
+
<span class="cline-any cline-yes">12x</span>
|
|
401
|
+
<span class="cline-any cline-yes">12x</span>
|
|
345
402
|
<span class="cline-any cline-yes">10x</span>
|
|
346
403
|
<span class="cline-any cline-yes">10x</span>
|
|
347
|
-
<span class="cline-any cline-yes">
|
|
348
|
-
<span class="cline-any cline-yes">
|
|
404
|
+
<span class="cline-any cline-yes">12x</span>
|
|
405
|
+
<span class="cline-any cline-yes">2x</span>
|
|
406
|
+
<span class="cline-any cline-yes">2x</span>
|
|
407
|
+
<span class="cline-any cline-yes">1x</span>
|
|
408
|
+
<span class="cline-any cline-yes">1x</span>
|
|
409
|
+
<span class="cline-any cline-yes">2x</span>
|
|
410
|
+
<span class="cline-any cline-yes">12x</span>
|
|
411
|
+
<span class="cline-any cline-neutral"> </span>
|
|
349
412
|
<span class="cline-any cline-neutral"> </span>
|
|
350
413
|
<span class="cline-any cline-neutral"> </span>
|
|
351
414
|
<span class="cline-any cline-neutral"> </span>
|
|
415
|
+
<span class="cline-any cline-yes">119x</span>
|
|
416
|
+
<span class="cline-any cline-yes">12x</span>
|
|
417
|
+
<span class="cline-any cline-yes">12x</span>
|
|
418
|
+
<span class="cline-any cline-yes">12x</span>
|
|
419
|
+
<span class="cline-any cline-yes">12x</span>
|
|
420
|
+
<span class="cline-any cline-yes">12x</span>
|
|
421
|
+
<span class="cline-any cline-yes">12x</span>
|
|
422
|
+
<span class="cline-any cline-yes">12x</span>
|
|
423
|
+
<span class="cline-any cline-yes">12x</span>
|
|
352
424
|
<span class="cline-any cline-neutral"> </span>
|
|
353
|
-
<span class="cline-any cline-yes">
|
|
425
|
+
<span class="cline-any cline-yes">12x</span>
|
|
426
|
+
<span class="cline-any cline-yes">12x</span>
|
|
427
|
+
<span class="cline-any cline-neutral"> </span>
|
|
428
|
+
<span class="cline-any cline-yes">119x</span>
|
|
429
|
+
<span class="cline-any cline-yes">2x</span>
|
|
430
|
+
<span class="cline-any cline-yes">2x</span>
|
|
431
|
+
<span class="cline-any cline-yes">2x</span>
|
|
432
|
+
<span class="cline-any cline-yes">2x</span>
|
|
433
|
+
<span class="cline-any cline-yes">2x</span>
|
|
434
|
+
<span class="cline-any cline-yes">2x</span>
|
|
435
|
+
<span class="cline-any cline-yes">2x</span>
|
|
436
|
+
<span class="cline-any cline-yes">1x</span>
|
|
437
|
+
<span class="cline-any cline-yes">1x</span>
|
|
438
|
+
<span class="cline-any cline-yes">1x</span>
|
|
439
|
+
<span class="cline-any cline-yes">1x</span>
|
|
354
440
|
<span class="cline-any cline-yes">1x</span>
|
|
441
|
+
<span class="cline-any cline-no"> </span>
|
|
355
442
|
<span class="cline-any cline-yes">1x</span>
|
|
443
|
+
<span class="cline-any cline-yes">1x</span>
|
|
444
|
+
<span class="cline-any cline-yes">2x</span>
|
|
445
|
+
<span class="cline-any cline-neutral"> </span>
|
|
446
|
+
<span class="cline-any cline-neutral"> </span>
|
|
447
|
+
<span class="cline-any cline-neutral"> </span>
|
|
448
|
+
<span class="cline-any cline-neutral"> </span>
|
|
449
|
+
<span class="cline-any cline-yes">119x</span>
|
|
450
|
+
<span class="cline-any cline-no"> </span>
|
|
451
|
+
<span class="cline-any cline-no"> </span>
|
|
452
|
+
<span class="cline-any cline-no"> </span>
|
|
453
|
+
<span class="cline-any cline-no"> </span>
|
|
454
|
+
<span class="cline-any cline-no"> </span>
|
|
455
|
+
<span class="cline-any cline-no"> </span>
|
|
456
|
+
<span class="cline-any cline-neutral"> </span>
|
|
457
|
+
<span class="cline-any cline-neutral"> </span>
|
|
356
458
|
<span class="cline-any cline-neutral"> </span>
|
|
357
459
|
<span class="cline-any cline-neutral"> </span>
|
|
460
|
+
<span class="cline-any cline-yes">119x</span>
|
|
461
|
+
<span class="cline-any cline-no"> </span>
|
|
462
|
+
<span class="cline-any cline-no"> </span>
|
|
463
|
+
<span class="cline-any cline-neutral"> </span>
|
|
464
|
+
<span class="cline-any cline-neutral"> </span>
|
|
465
|
+
<span class="cline-any cline-neutral"> </span>
|
|
466
|
+
<span class="cline-any cline-neutral"> </span>
|
|
467
|
+
<span class="cline-any cline-yes">119x</span>
|
|
468
|
+
<span class="cline-any cline-yes">1x</span>
|
|
469
|
+
<span class="cline-any cline-yes">1x</span>
|
|
470
|
+
<span class="cline-any cline-neutral"> </span>
|
|
358
471
|
<span class="cline-any cline-neutral"> </span>
|
|
359
472
|
<span class="cline-any cline-neutral"> </span>
|
|
360
473
|
<span class="cline-any cline-neutral"> </span>
|
|
@@ -365,27 +478,28 @@
|
|
|
365
478
|
<span class="cline-any cline-neutral"> </span>
|
|
366
479
|
<span class="cline-any cline-neutral"> </span>
|
|
367
480
|
<span class="cline-any cline-neutral"> </span>
|
|
368
|
-
<span class="cline-any cline-yes">105x</span>
|
|
369
|
-
<span class="cline-any cline-yes">11x</span>
|
|
370
|
-
<span class="cline-any cline-yes">11x</span>
|
|
371
|
-
<span class="cline-any cline-yes">11x</span>
|
|
372
|
-
<span class="cline-any cline-yes">11x</span>
|
|
373
|
-
<span class="cline-any cline-yes">11x</span>
|
|
374
|
-
<span class="cline-any cline-yes">11x</span>
|
|
375
481
|
<span class="cline-any cline-neutral"> </span>
|
|
482
|
+
<span class="cline-any cline-yes">119x</span>
|
|
483
|
+
<span class="cline-any cline-yes">12x</span>
|
|
484
|
+
<span class="cline-any cline-yes">12x</span>
|
|
485
|
+
<span class="cline-any cline-yes">12x</span>
|
|
486
|
+
<span class="cline-any cline-yes">12x</span>
|
|
487
|
+
<span class="cline-any cline-yes">12x</span>
|
|
488
|
+
<span class="cline-any cline-yes">12x</span>
|
|
376
489
|
<span class="cline-any cline-neutral"> </span>
|
|
377
490
|
<span class="cline-any cline-neutral"> </span>
|
|
378
491
|
<span class="cline-any cline-neutral"> </span>
|
|
379
492
|
<span class="cline-any cline-neutral"> </span>
|
|
380
|
-
<span class="cline-any cline-yes">105x</span>
|
|
381
|
-
<span class="cline-any cline-yes">11x</span>
|
|
382
|
-
<span class="cline-any cline-yes">11x</span>
|
|
383
493
|
<span class="cline-any cline-neutral"> </span>
|
|
494
|
+
<span class="cline-any cline-yes">119x</span>
|
|
495
|
+
<span class="cline-any cline-yes">12x</span>
|
|
496
|
+
<span class="cline-any cline-yes">12x</span>
|
|
384
497
|
<span class="cline-any cline-neutral"> </span>
|
|
385
498
|
<span class="cline-any cline-neutral"> </span>
|
|
386
499
|
<span class="cline-any cline-neutral"> </span>
|
|
387
500
|
<span class="cline-any cline-neutral"> </span>
|
|
388
|
-
<span class="cline-any cline-
|
|
501
|
+
<span class="cline-any cline-neutral"> </span>
|
|
502
|
+
<span class="cline-any cline-yes">119x</span>
|
|
389
503
|
<span class="cline-any cline-yes">1x</span>
|
|
390
504
|
<span class="cline-any cline-yes">1x</span>
|
|
391
505
|
<span class="cline-any cline-neutral"> </span>
|
|
@@ -393,10 +507,18 @@
|
|
|
393
507
|
<span class="cline-any cline-neutral"> </span>
|
|
394
508
|
<span class="cline-any cline-neutral"> </span>
|
|
395
509
|
<span class="cline-any cline-neutral"> </span>
|
|
396
|
-
<span class="cline-any cline-yes">
|
|
510
|
+
<span class="cline-any cline-yes">119x</span>
|
|
397
511
|
<span class="cline-any cline-yes">3x</span>
|
|
398
512
|
<span class="cline-any cline-yes">3x</span>
|
|
399
|
-
<span class="cline-any cline-
|
|
513
|
+
<span class="cline-any cline-neutral"> </span>
|
|
514
|
+
<span class="cline-any cline-neutral"> </span>
|
|
515
|
+
<span class="cline-any cline-neutral"> </span>
|
|
516
|
+
<span class="cline-any cline-neutral"> </span>
|
|
517
|
+
<span class="cline-any cline-neutral"> </span>
|
|
518
|
+
<span class="cline-any cline-yes">119x</span>
|
|
519
|
+
<span class="cline-any cline-yes">1x</span>
|
|
520
|
+
<span class="cline-any cline-yes">1x</span>
|
|
521
|
+
<span class="cline-any cline-yes">119x</span>
|
|
400
522
|
<span class="cline-any cline-neutral"> </span></td><td class="text"><pre class="prettyprint lang-js">import type { z, ZodType } from 'zod/v4'
|
|
401
523
|
|
|
402
524
|
import type {
|
|
@@ -409,6 +531,7 @@ import type {
|
|
|
409
531
|
import type { Factorable } from './interfaces/factory.interface.mjs'
|
|
410
532
|
import type { Registry } from './registry.mjs'
|
|
411
533
|
import type { RequestContextHolder } from './request-context-holder.mjs'
|
|
534
|
+
import type { ServiceLocatorInstanceHolder } from './service-locator-instance-holder.mjs'
|
|
412
535
|
import type { Injectors } from './utils/index.mjs'
|
|
413
536
|
import type { Join, UnionToArray } from './utils/types.mjs'
|
|
414
537
|
|
|
@@ -428,9 +551,9 @@ export class Container {
|
|
|
428
551
|
private readonly serviceLocator: ServiceLocator
|
|
429
552
|
|
|
430
553
|
constructor(
|
|
431
|
-
registry: Registry = globalRegistry,
|
|
432
|
-
logger: Console | null = null,
|
|
433
|
-
injectors: Injectors = defaultInjectors,
|
|
554
|
+
protected readonly registry: Registry = globalRegistry,
|
|
555
|
+
protected readonly logger: Console | null = null,
|
|
556
|
+
protected readonly injectors: Injectors = defaultInjectors,
|
|
434
557
|
) {
|
|
435
558
|
this.serviceLocator = new ServiceLocator(registry, logger, injectors)
|
|
436
559
|
this.registerSelf()
|
|
@@ -502,17 +625,69 @@ export class Container {
|
|
|
502
625
|
* Invalidates a service and its dependencies
|
|
503
626
|
*/
|
|
504
627
|
async invalidate(service: unknown): Promise<void> {
|
|
505
|
-
const
|
|
506
|
-
.getManager()
|
|
507
|
-
.filter((holder) => holder.instance === service)
|
|
508
|
-
if (holderMap.size === 0) {
|
|
509
|
-
return
|
|
510
|
-
}
|
|
511
|
-
const holder = holderMap.values().next().value
|
|
628
|
+
const holder = this.getHolderByInstance(service)
|
|
512
629
|
if (holder) {
|
|
630
|
+
console.log('invalidating', holder.name)
|
|
513
631
|
await this.serviceLocator.invalidate(holder.name)
|
|
632
|
+
} else {
|
|
633
|
+
const requestHolder = this.getRequestHolderByInstance(service)
|
|
634
|
+
if (requestHolder) {
|
|
635
|
+
await this.serviceLocator.invalidate(requestHolder.name)
|
|
636
|
+
}
|
|
637
|
+
}
|
|
638
|
+
}
|
|
639
|
+
|
|
640
|
+
/**
|
|
641
|
+
* Gets a service holder by instance (reverse lookup)
|
|
642
|
+
*/
|
|
643
|
+
private getHolderByInstance(
|
|
644
|
+
instance: unknown,
|
|
645
|
+
): ServiceLocatorInstanceHolder | null {
|
|
646
|
+
const holderMap = Array.from(
|
|
647
|
+
this.serviceLocator
|
|
648
|
+
.getManager()
|
|
649
|
+
.filter((holder) => holder.instance === instance)
|
|
650
|
+
.values(),
|
|
651
|
+
)
|
|
652
|
+
|
|
653
|
+
return holderMap.length > 0 ? holderMap[0] : null
|
|
654
|
+
}
|
|
655
|
+
|
|
656
|
+
private getRequestHolderByInstance(
|
|
657
|
+
instance: unknown,
|
|
658
|
+
): ServiceLocatorInstanceHolder | null {
|
|
659
|
+
const requestContexts = this.serviceLocator
|
|
660
|
+
.getRequestContextManager()
|
|
661
|
+
.getRequestContexts()
|
|
662
|
+
if (requestContexts) {
|
|
663
|
+
for (const requestContext of requestContexts.values()) {
|
|
664
|
+
for (const holder of requestContext.holders.values()) {
|
|
665
|
+
if (holder.instance === instance) {
|
|
666
|
+
return holder
|
|
667
|
+
}
|
|
668
|
+
<span class="branch-0 cbranch-no" title="branch not covered" > }</span>
|
|
669
|
+
<span class="cstat-no" title="statement not covered" > }</span>
|
|
514
670
|
}
|
|
671
|
+
return null
|
|
515
672
|
}
|
|
673
|
+
|
|
674
|
+
/**
|
|
675
|
+
* Checks if a service is registered in the container
|
|
676
|
+
*/
|
|
677
|
+
<span class="fstat-no" title="function not covered" > isRegistered(token: any): boolean {</span>
|
|
678
|
+
<span class="cstat-no" title="statement not covered" > try {</span>
|
|
679
|
+
<span class="cstat-no" title="statement not covered" > return this.serviceLocator.getInstanceIdentifier(token) !== null</span>
|
|
680
|
+
<span class="cstat-no" title="statement not covered" > } catch {</span>
|
|
681
|
+
<span class="cstat-no" title="statement not covered" > return false</span>
|
|
682
|
+
<span class="cstat-no" title="statement not covered" > }</span>
|
|
683
|
+
<span class="cstat-no" title="statement not covered" > }</span>
|
|
684
|
+
|
|
685
|
+
/**
|
|
686
|
+
* Disposes the container and cleans up all resources
|
|
687
|
+
*/
|
|
688
|
+
<span class="fstat-no" title="function not covered" > async dispose(): Promise<void> {</span>
|
|
689
|
+
<span class="cstat-no" title="statement not covered" > await this.serviceLocator.clearAll()</span>
|
|
690
|
+
<span class="cstat-no" title="statement not covered" > }</span>
|
|
516
691
|
|
|
517
692
|
/**
|
|
518
693
|
* Waits for all pending operations to complete
|
|
@@ -563,6 +738,14 @@ export class Container {
|
|
|
563
738
|
setCurrentRequestContext(requestId: string): void {
|
|
564
739
|
this.serviceLocator.setCurrentRequestContext(requestId)
|
|
565
740
|
}
|
|
741
|
+
|
|
742
|
+
/**
|
|
743
|
+
* Clears all instances and bindings from the container.
|
|
744
|
+
* This is useful for testing or resetting the container state.
|
|
745
|
+
*/
|
|
746
|
+
clear(): Promise<void> {
|
|
747
|
+
return this.serviceLocator.clearAll()
|
|
748
|
+
}
|
|
566
749
|
}
|
|
567
750
|
</pre></td></tr></table></pre>
|
|
568
751
|
|
|
@@ -571,7 +754,7 @@ export class Container {
|
|
|
571
754
|
<div class='footer quiet pad2 space-top1 center small'>
|
|
572
755
|
Code coverage generated by
|
|
573
756
|
<a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
|
|
574
|
-
at 2025-09-
|
|
757
|
+
at 2025-09-21T17:47:07.632Z
|
|
575
758
|
</div>
|
|
576
759
|
<script src="../prettify.js"></script>
|
|
577
760
|
<script>
|
|
@@ -307,7 +307,7 @@ export function Factory({
|
|
|
307
307
|
<div class='footer quiet pad2 space-top1 center small'>
|
|
308
308
|
Code coverage generated by
|
|
309
309
|
<a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
|
|
310
|
-
at 2025-09-
|
|
310
|
+
at 2025-09-21T17:47:07.632Z
|
|
311
311
|
</div>
|
|
312
312
|
<script src="../../prettify.js"></script>
|
|
313
313
|
<script>
|
|
@@ -131,7 +131,7 @@
|
|
|
131
131
|
<div class='footer quiet pad2 space-top1 center small'>
|
|
132
132
|
Code coverage generated by
|
|
133
133
|
<a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
|
|
134
|
-
at 2025-09-
|
|
134
|
+
at 2025-09-21T17:47:07.632Z
|
|
135
135
|
</div>
|
|
136
136
|
<script src="../../prettify.js"></script>
|
|
137
137
|
<script>
|
|
@@ -76,7 +76,7 @@ export * from './injectable.decorator.mjs'
|
|
|
76
76
|
<div class='footer quiet pad2 space-top1 center small'>
|
|
77
77
|
Code coverage generated by
|
|
78
78
|
<a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
|
|
79
|
-
at 2025-09-
|
|
79
|
+
at 2025-09-21T17:47:07.632Z
|
|
80
80
|
</div>
|
|
81
81
|
<script src="../../prettify.js"></script>
|
|
82
82
|
<script>
|
|
@@ -242,33 +242,33 @@
|
|
|
242
242
|
<span class="cline-any cline-neutral"> </span>
|
|
243
243
|
<span class="cline-any cline-neutral"> </span>
|
|
244
244
|
<span class="cline-any cline-yes">1x</span>
|
|
245
|
-
<span class="cline-any cline-yes">
|
|
246
|
-
<span class="cline-any cline-yes">
|
|
247
|
-
<span class="cline-any cline-yes">
|
|
248
|
-
<span class="cline-any cline-yes">
|
|
249
|
-
<span class="cline-any cline-yes">
|
|
250
|
-
<span class="cline-any cline-yes">
|
|
251
|
-
<span class="cline-any cline-yes">
|
|
252
|
-
<span class="cline-any cline-yes">
|
|
253
|
-
<span class="cline-any cline-yes">
|
|
254
|
-
<span class="cline-any cline-yes">
|
|
255
|
-
<span class="cline-any cline-yes">
|
|
256
|
-
<span class="cline-any cline-yes">
|
|
245
|
+
<span class="cline-any cline-yes">264x</span>
|
|
246
|
+
<span class="cline-any cline-yes">264x</span>
|
|
247
|
+
<span class="cline-any cline-yes">264x</span>
|
|
248
|
+
<span class="cline-any cline-yes">264x</span>
|
|
249
|
+
<span class="cline-any cline-yes">264x</span>
|
|
250
|
+
<span class="cline-any cline-yes">264x</span>
|
|
251
|
+
<span class="cline-any cline-yes">264x</span>
|
|
252
|
+
<span class="cline-any cline-yes">264x</span>
|
|
253
|
+
<span class="cline-any cline-yes">264x</span>
|
|
254
|
+
<span class="cline-any cline-yes">264x</span>
|
|
255
|
+
<span class="cline-any cline-yes">264x</span>
|
|
256
|
+
<span class="cline-any cline-yes">264x</span>
|
|
257
257
|
<span class="cline-any cline-no"> </span>
|
|
258
258
|
<span class="cline-any cline-no"> </span>
|
|
259
259
|
<span class="cline-any cline-no"> </span>
|
|
260
260
|
<span class="cline-any cline-no"> </span>
|
|
261
|
-
<span class="cline-any cline-yes">
|
|
262
|
-
<span class="cline-any cline-yes">
|
|
261
|
+
<span class="cline-any cline-yes">264x</span>
|
|
262
|
+
<span class="cline-any cline-yes">264x</span>
|
|
263
263
|
<span class="cline-any cline-neutral"> </span>
|
|
264
|
-
<span class="cline-any cline-yes">
|
|
264
|
+
<span class="cline-any cline-yes">264x</span>
|
|
265
265
|
<span class="cline-any cline-neutral"> </span>
|
|
266
266
|
<span class="cline-any cline-neutral"> </span>
|
|
267
|
-
<span class="cline-any cline-yes">
|
|
267
|
+
<span class="cline-any cline-yes">264x</span>
|
|
268
268
|
<span class="cline-any cline-neutral"> </span>
|
|
269
|
-
<span class="cline-any cline-yes">
|
|
270
|
-
<span class="cline-any cline-yes">
|
|
271
|
-
<span class="cline-any cline-yes">
|
|
269
|
+
<span class="cline-any cline-yes">264x</span>
|
|
270
|
+
<span class="cline-any cline-yes">264x</span>
|
|
271
|
+
<span class="cline-any cline-yes">264x</span>
|
|
272
272
|
<span class="cline-any cline-neutral"> </span></td><td class="text"><pre class="prettyprint lang-js">import { z } from 'zod/v4'
|
|
273
273
|
|
|
274
274
|
import type {
|
|
@@ -379,7 +379,7 @@ export function Injectable({
|
|
|
379
379
|
<div class='footer quiet pad2 space-top1 center small'>
|
|
380
380
|
Code coverage generated by
|
|
381
381
|
<a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
|
|
382
|
-
at 2025-09-
|
|
382
|
+
at 2025-09-21T17:47:07.632Z
|
|
383
383
|
</div>
|
|
384
384
|
<script src="../../prettify.js"></script>
|
|
385
385
|
<script>
|
|
@@ -131,7 +131,7 @@
|
|
|
131
131
|
<div class='footer quiet pad2 space-top1 center small'>
|
|
132
132
|
Code coverage generated by
|
|
133
133
|
<a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
|
|
134
|
-
at 2025-09-
|
|
134
|
+
at 2025-09-21T17:47:07.632Z
|
|
135
135
|
</div>
|
|
136
136
|
<script src="../../prettify.js"></script>
|
|
137
137
|
<script>
|
|
@@ -76,7 +76,7 @@ export * from './injectable-type.enum.mjs'
|
|
|
76
76
|
<div class='footer quiet pad2 space-top1 center small'>
|
|
77
77
|
Code coverage generated by
|
|
78
78
|
<a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
|
|
79
|
-
at 2025-09-
|
|
79
|
+
at 2025-09-21T17:47:07.632Z
|
|
80
80
|
</div>
|
|
81
81
|
<script src="../../prettify.js"></script>
|
|
82
82
|
<script>
|
|
@@ -112,7 +112,7 @@
|
|
|
112
112
|
<div class='footer quiet pad2 space-top1 center small'>
|
|
113
113
|
Code coverage generated by
|
|
114
114
|
<a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
|
|
115
|
-
at 2025-09-
|
|
115
|
+
at 2025-09-21T17:47:07.632Z
|
|
116
116
|
</div>
|
|
117
117
|
<script src="../../prettify.js"></script>
|
|
118
118
|
<script>
|
|
@@ -82,7 +82,7 @@
|
|
|
82
82
|
<div class='footer quiet pad2 space-top1 center small'>
|
|
83
83
|
Code coverage generated by
|
|
84
84
|
<a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
|
|
85
|
-
at 2025-09-
|
|
85
|
+
at 2025-09-21T17:47:07.632Z
|
|
86
86
|
</div>
|
|
87
87
|
<script src="../../prettify.js"></script>
|
|
88
88
|
<script>
|