@navios/di 0.4.1 → 0.5.0

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 (128) hide show
  1. package/README.md +211 -1
  2. package/coverage/clover.xml +1912 -1277
  3. package/coverage/coverage-final.json +37 -28
  4. package/coverage/docs/examples/basic-usage.mts.html +1 -1
  5. package/coverage/docs/examples/factory-pattern.mts.html +1 -1
  6. package/coverage/docs/examples/index.html +1 -1
  7. package/coverage/docs/examples/injection-tokens.mts.html +1 -1
  8. package/coverage/docs/examples/request-scope-example.mts.html +1 -1
  9. package/coverage/docs/examples/service-lifecycle.mts.html +1 -1
  10. package/coverage/index.html +71 -41
  11. package/coverage/lib/_tsup-dts-rollup.d.mts.html +682 -43
  12. package/coverage/lib/index.d.mts.html +7 -4
  13. package/coverage/lib/index.html +5 -5
  14. package/coverage/lib/testing/index.d.mts.html +91 -0
  15. package/coverage/lib/testing/index.html +116 -0
  16. package/coverage/src/base-instance-holder-manager.mts.html +589 -0
  17. package/coverage/src/container.mts.html +257 -74
  18. package/coverage/src/decorators/factory.decorator.mts.html +1 -1
  19. package/coverage/src/decorators/index.html +1 -1
  20. package/coverage/src/decorators/index.mts.html +1 -1
  21. package/coverage/src/decorators/injectable.decorator.mts.html +20 -20
  22. package/coverage/src/enums/index.html +1 -1
  23. package/coverage/src/enums/index.mts.html +1 -1
  24. package/coverage/src/enums/injectable-scope.enum.mts.html +1 -1
  25. package/coverage/src/enums/injectable-type.enum.mts.html +1 -1
  26. package/coverage/src/errors/di-error.mts.html +292 -0
  27. package/coverage/src/errors/errors.enum.mts.html +30 -21
  28. package/coverage/src/errors/factory-not-found.mts.html +31 -22
  29. package/coverage/src/errors/factory-token-not-resolved.mts.html +29 -26
  30. package/coverage/src/errors/index.html +56 -41
  31. package/coverage/src/errors/index.mts.html +15 -9
  32. package/coverage/src/errors/instance-destroying.mts.html +31 -22
  33. package/coverage/src/errors/instance-expired.mts.html +31 -22
  34. package/coverage/src/errors/instance-not-found.mts.html +31 -22
  35. package/coverage/src/errors/unknown-error.mts.html +31 -43
  36. package/coverage/src/event-emitter.mts.html +14 -14
  37. package/coverage/src/factory-context.mts.html +1 -1
  38. package/coverage/src/index.html +121 -46
  39. package/coverage/src/index.mts.html +7 -4
  40. package/coverage/src/injection-token.mts.html +28 -28
  41. package/coverage/src/injector.mts.html +1 -1
  42. package/coverage/src/instance-resolver.mts.html +1762 -0
  43. package/coverage/src/interfaces/factory.interface.mts.html +1 -1
  44. package/coverage/src/interfaces/index.html +1 -1
  45. package/coverage/src/interfaces/index.mts.html +1 -1
  46. package/coverage/src/interfaces/on-service-destroy.interface.mts.html +1 -1
  47. package/coverage/src/interfaces/on-service-init.interface.mts.html +1 -1
  48. package/coverage/src/registry.mts.html +28 -28
  49. package/coverage/src/request-context-holder.mts.html +183 -102
  50. package/coverage/src/request-context-manager.mts.html +532 -0
  51. package/coverage/src/service-instantiator.mts.html +49 -49
  52. package/coverage/src/service-invalidator.mts.html +1372 -0
  53. package/coverage/src/service-locator-event-bus.mts.html +48 -48
  54. package/coverage/src/service-locator-instance-holder.mts.html +2 -14
  55. package/coverage/src/service-locator-manager.mts.html +71 -335
  56. package/coverage/src/service-locator.mts.html +240 -2328
  57. package/coverage/src/symbols/index.html +1 -1
  58. package/coverage/src/symbols/index.mts.html +1 -1
  59. package/coverage/src/symbols/injectable-token.mts.html +1 -1
  60. package/coverage/src/testing/index.html +131 -0
  61. package/coverage/src/testing/index.mts.html +88 -0
  62. package/coverage/src/testing/test-container.mts.html +445 -0
  63. package/coverage/src/token-processor.mts.html +607 -0
  64. package/coverage/src/utils/defer.mts.html +28 -214
  65. package/coverage/src/utils/get-injectable-token.mts.html +7 -7
  66. package/coverage/src/utils/get-injectors.mts.html +99 -99
  67. package/coverage/src/utils/index.html +15 -15
  68. package/coverage/src/utils/index.mts.html +4 -7
  69. package/coverage/src/utils/types.mts.html +1 -1
  70. package/docs/injectable.md +51 -11
  71. package/docs/scopes.md +63 -29
  72. package/lib/_tsup-dts-rollup.d.mts +447 -212
  73. package/lib/_tsup-dts-rollup.d.ts +447 -212
  74. package/lib/chunk-44F3LXW5.mjs +2043 -0
  75. package/lib/chunk-44F3LXW5.mjs.map +1 -0
  76. package/lib/index.d.mts +6 -4
  77. package/lib/index.d.ts +6 -4
  78. package/lib/index.js +1199 -773
  79. package/lib/index.js.map +1 -1
  80. package/lib/index.mjs +4 -1599
  81. package/lib/index.mjs.map +1 -1
  82. package/lib/testing/index.d.mts +2 -0
  83. package/lib/testing/index.d.ts +2 -0
  84. package/lib/testing/index.js +2060 -0
  85. package/lib/testing/index.js.map +1 -0
  86. package/lib/testing/index.mjs +73 -0
  87. package/lib/testing/index.mjs.map +1 -0
  88. package/package.json +11 -1
  89. package/src/__tests__/container.spec.mts +47 -13
  90. package/src/__tests__/errors.spec.mts +53 -27
  91. package/src/__tests__/injectable.spec.mts +73 -0
  92. package/src/__tests__/request-scope.spec.mts +0 -2
  93. package/src/__tests__/service-locator-manager.spec.mts +12 -82
  94. package/src/__tests__/service-locator.spec.mts +1009 -1
  95. package/src/__type-tests__/inject.spec-d.mts +30 -7
  96. package/src/__type-tests__/injectable.spec-d.mts +76 -37
  97. package/src/base-instance-holder-manager.mts +2 -9
  98. package/src/container.mts +70 -10
  99. package/src/decorators/injectable.decorator.mts +29 -5
  100. package/src/errors/di-error.mts +69 -0
  101. package/src/errors/index.mts +9 -7
  102. package/src/injection-token.mts +1 -0
  103. package/src/injector.mts +2 -0
  104. package/src/instance-resolver.mts +559 -0
  105. package/src/request-context-holder.mts +0 -2
  106. package/src/request-context-manager.mts +149 -0
  107. package/src/service-invalidator.mts +429 -0
  108. package/src/service-locator-instance-holder.mts +0 -4
  109. package/src/service-locator-manager.mts +10 -40
  110. package/src/service-locator.mts +86 -782
  111. package/src/testing/README.md +80 -0
  112. package/src/testing/__tests__/test-container.spec.mts +173 -0
  113. package/src/testing/index.mts +1 -0
  114. package/src/testing/test-container.mts +120 -0
  115. package/src/token-processor.mts +174 -0
  116. package/src/utils/get-injectors.mts +161 -24
  117. package/src/utils/index.mts +0 -1
  118. package/src/utils/types.mts +12 -8
  119. package/tsup.config.mts +1 -1
  120. package/src/__tests__/defer.spec.mts +0 -166
  121. package/src/errors/errors.enum.mts +0 -8
  122. package/src/errors/factory-not-found.mts +0 -8
  123. package/src/errors/factory-token-not-resolved.mts +0 -10
  124. package/src/errors/instance-destroying.mts +0 -8
  125. package/src/errors/instance-expired.mts +0 -8
  126. package/src/errors/instance-not-found.mts +0 -8
  127. package/src/errors/unknown-error.mts +0 -15
  128. 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">92.3% </span>
26
+ <span class="strong">100% </span>
27
27
  <span class="quiet">Statements</span>
28
- <span class='fraction'>12/13</span>
28
+ <span class='fraction'>15/15</span>
29
29
  </div>
30
30
 
31
31
 
32
32
  <div class='fl pad1y space-right2'>
33
- <span class="strong">66.66% </span>
33
+ <span class="strong">100% </span>
34
34
  <span class="quiet">Branches</span>
35
- <span class='fraction'>2/3</span>
35
+ <span class='fraction'>0/0</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'>2/2</span>
42
+ <span class='fraction'>0/0</span>
43
43
  </div>
44
44
 
45
45
 
46
46
  <div class='fl pad1y space-right2'>
47
- <span class="strong">92.3% </span>
47
+ <span class="strong">100% </span>
48
48
  <span class="quiet">Lines</span>
49
- <span class='fraction'>12/13</span>
49
+ <span class='fraction'>15/15</span>
50
50
  </div>
51
51
 
52
52
 
@@ -74,48 +74,36 @@
74
74
  <a name='L9'></a><a href='#L9'>9</a>
75
75
  <a name='L10'></a><a href='#L10'>10</a>
76
76
  <a name='L11'></a><a href='#L11'>11</a>
77
- <a name='L12'></a><a href='#L12'>12</a>
78
- <a name='L13'></a><a href='#L13'>13</a>
79
- <a name='L14'></a><a href='#L14'>14</a>
80
- <a name='L15'></a><a href='#L15'>15</a>
81
- <a name='L16'></a><a href='#L16'>16</a></td><td class="line-coverage quiet"><span class="cline-any cline-yes">1x</span>
82
- <span class="cline-any cline-neutral">&nbsp;</span>
83
- <span class="cline-any cline-yes">1x</span>
84
- <span class="cline-any cline-yes">3x</span>
85
- <span class="cline-any cline-yes">3x</span>
86
- <span class="cline-any cline-neutral">&nbsp;</span>
87
- <span class="cline-any cline-yes">3x</span>
88
- <span class="cline-any cline-yes">3x</span>
89
- <span class="cline-any cline-yes">3x</span>
90
- <span class="cline-any cline-yes">3x</span>
91
- <span class="cline-any cline-yes">3x</span>
92
- <span class="cline-any cline-yes">3x</span>
93
- <span class="cline-any cline-no">&nbsp;</span>
94
- <span class="cline-any cline-yes">3x</span>
95
- <span class="cline-any cline-yes">3x</span>
96
- <span class="cline-any cline-neutral">&nbsp;</span></td><td class="text"><pre class="prettyprint lang-js">import { ErrorsEnum } from './errors.enum.mjs'
97
- &nbsp;
98
- export class UnknownError extends Error {
99
- code = ErrorsEnum.UnknownError
100
- parent?: Error
101
- &nbsp;
102
- constructor(message: string | Error) {
103
- if (message instanceof Error) {
104
- super(message.message)
105
- this.parent = message
106
- return
107
- <span class="branch-0 cbranch-no" title="branch not covered" > }</span>
108
- <span class="cstat-no" title="statement not covered" > super(message)</span>
109
- }
110
- }
111
- &nbsp;</pre></td></tr></table></pre>
77
+ <a name='L12'></a><a href='#L12'>12</a></td><td class="line-coverage quiet"><span class="cline-any cline-no">0</span>
78
+ <span class="cline-any cline-no">0</span>
79
+ <span class="cline-any cline-no">0</span>
80
+ <span class="cline-any cline-no">0</span>
81
+ <span class="cline-any cline-no">0</span>
82
+ <span class="cline-any cline-no">0</span>
83
+ <span class="cline-any cline-no">0</span>
84
+ <span class="cline-any cline-no">0</span>
85
+ <span class="cline-any cline-no">0</span>
86
+ <span class="cline-any cline-no">0</span>
87
+ <span class="cline-any cline-no">0</span>
88
+ <span class="cline-any cline-no">0</span></td><td class="text"><pre class="prettyprint lang-js">Unable to lookup source: /Volumes/Dev/Projects/krona/navios/packages/di/src/errors/unknown-error.mts (ENOENT: no such file or directory, open '/Volumes/Dev/Projects/krona/navios/packages/di/src/errors/unknown-error.mts')
89
+ Error: Unable to lookup source: /Volumes/Dev/Projects/krona/navios/packages/di/src/errors/unknown-error.mts (ENOENT: no such file or directory, open '/Volumes/Dev/Projects/krona/navios/packages/di/src/errors/unknown-error.mts')
90
+ at Context.defaultSourceLookup [as sourceFinder] (/Volumes/Dev/Projects/krona/navios/node_modules/istanbul-lib-report/lib/context.js:17:15)
91
+ at Context.getSource (/Volumes/Dev/Projects/krona/navios/node_modules/istanbul-lib-report/lib/context.js:71:21)
92
+ at annotateSourceCode (/Volumes/Dev/Projects/krona/navios/node_modules/istanbul-reports/lib/html/annotator.js:249:40)
93
+ at HtmlReport.onDetail (/Volumes/Dev/Projects/krona/navios/node_modules/istanbul-reports/lib/html/index.js:414:33)
94
+ at Visitor.value (/Volumes/Dev/Projects/krona/navios/node_modules/istanbul-lib-report/lib/tree.js:38:38)
95
+ at ReportNode.visit (/Volumes/Dev/Projects/krona/navios/node_modules/istanbul-lib-report/lib/tree.js:88:21)
96
+ at /Volumes/Dev/Projects/krona/navios/node_modules/istanbul-lib-report/lib/tree.js:92:19
97
+ at Array.forEach (<anonymous>)
98
+ at ReportNode.visit (/Volumes/Dev/Projects/krona/navios/node_modules/istanbul-lib-report/lib/tree.js:91:28)
99
+ at /Volumes/Dev/Projects/krona/navios/node_modules/istanbul-lib-report/lib/tree.js:92:19</pre></td></tr></table></pre>
112
100
 
113
101
  <div class='push'></div><!-- for sticky footer -->
114
102
  </div><!-- /wrapper -->
115
103
  <div class='footer quiet pad2 space-top1 center small'>
116
104
  Code coverage generated by
117
105
  <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
118
- at 2025-09-19T12:38:51.382Z
106
+ at 2025-09-21T17:47:07.632Z
119
107
  </div>
120
108
  <script src="../../prettify.js"></script>
121
109
  <script>
@@ -232,18 +232,18 @@
232
232
  <span class="cline-any cline-yes">14x</span>
233
233
  <span class="cline-any cline-neutral">&nbsp;</span>
234
234
  <span class="cline-any cline-yes">14x</span>
235
- <span class="cline-any cline-yes">7x</span>
236
- <span class="cline-any cline-yes">7x</span>
237
- <span class="cline-any cline-yes">7x</span>
238
- <span class="cline-any cline-yes">7x</span>
235
+ <span class="cline-any cline-yes">8x</span>
236
+ <span class="cline-any cline-yes">8x</span>
237
+ <span class="cline-any cline-yes">8x</span>
238
+ <span class="cline-any cline-yes">8x</span>
239
239
  <span class="cline-any cline-yes">1x</span>
240
240
  <span class="cline-any cline-yes">1x</span>
241
241
  <span class="cline-any cline-neutral">&nbsp;</span>
242
- <span class="cline-any cline-yes">6x</span>
243
- <span class="cline-any cline-yes">7x</span>
244
- <span class="cline-any cline-yes">5x</span>
245
- <span class="cline-any cline-yes">5x</span>
246
242
  <span class="cline-any cline-yes">7x</span>
243
+ <span class="cline-any cline-yes">8x</span>
244
+ <span class="cline-any cline-yes">6x</span>
245
+ <span class="cline-any cline-yes">6x</span>
246
+ <span class="cline-any cline-yes">8x</span>
247
247
  <span class="cline-any cline-neutral">&nbsp;</span>
248
248
  <span class="cline-any cline-yes">14x</span>
249
249
  <span class="cline-any cline-yes">2x</span>
@@ -307,12 +307,12 @@ export type ChannelEmitter&lt;
307
307
  export interface EventEmitterInterface&lt;Events extends EventsConfig&gt; {
308
308
  on&lt;E extends EventsNames&lt;Events&gt;, Args extends EventsArgs&lt;Events, E&gt;&gt;(
309
309
  event: E,
310
- listener: (...args: Args) =&gt; void,
310
+ listener: (...args: Args) =&gt; void | Promise&lt;void&gt;,
311
311
  ): () =&gt; void
312
312
  emit&lt;E extends EventsNames&lt;Events&gt;, Args extends EventsArgs&lt;Events, E&gt;&gt;(
313
313
  event: E,
314
314
  ...args: Args
315
- ): void
315
+ ): void | Promise&lt;void&gt;
316
316
  }
317
317
  &nbsp;
318
318
  @Injectable({ scope: InjectableScope.Transient })
@@ -323,7 +323,7 @@ export class EventEmitter&lt;Events extends EventsConfig = {}&gt;
323
323
  &nbsp;
324
324
  on&lt;E extends EventsNames&lt;Events&gt;, Args extends EventsArgs&lt;Events, E&gt;&gt;(
325
325
  event: E,
326
- listener: (...args: Args) =&gt; void,
326
+ listener: (...args: Args) =&gt; void | Promise&lt;void&gt;,
327
327
  ) {
328
328
  if (!this.listeners.has(event)) {
329
329
  this.listeners.set(event, new Set())
@@ -338,7 +338,7 @@ export class EventEmitter&lt;Events extends EventsConfig = {}&gt;
338
338
  &nbsp;
339
339
  off&lt;E extends EventsNames&lt;Events&gt;, Args extends EventsArgs&lt;Events, E&gt;&gt;(
340
340
  event: E,
341
- listener: (...args: Args) =&gt; void,
341
+ listener: (...args: Args) =&gt; void | Promise&lt;void&gt;,
342
342
  ) {
343
343
  if (!this.listeners.has(event)) {
344
344
  return
@@ -352,7 +352,7 @@ export class EventEmitter&lt;Events extends EventsConfig = {}&gt;
352
352
  &nbsp;
353
353
  once&lt;E extends EventsNames&lt;Events&gt;, Args extends EventsArgs&lt;Events, E&gt;&gt;(
354
354
  event: E,
355
- listener: (...args: Args) =&gt; void,
355
+ listener: (...args: Args) =&gt; void | Promise&lt;void&gt;,
356
356
  ) {
357
357
  const off = this.on(event, (...args) =&gt; {
358
358
  off()
@@ -385,7 +385,7 @@ export class EventEmitter&lt;Events extends EventsConfig = {}&gt;
385
385
  <div class='footer quiet pad2 space-top1 center small'>
386
386
  Code coverage generated by
387
387
  <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
388
- at 2025-09-19T12:38:51.382Z
388
+ at 2025-09-21T17:47:07.632Z
389
389
  </div>
390
390
  <script src="../prettify.js"></script>
391
391
  <script>
@@ -94,7 +94,7 @@ export interface FactoryContext {
94
94
  <div class='footer quiet pad2 space-top1 center small'>
95
95
  Code coverage generated by
96
96
  <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
97
- at 2025-09-19T12:38:51.382Z
97
+ at 2025-09-21T17:47:07.632Z
98
98
  </div>
99
99
  <script src="../prettify.js"></script>
100
100
  <script>
@@ -23,30 +23,30 @@
23
23
  <div class='clearfix'>
24
24
 
25
25
  <div class='fl pad1y space-right2'>
26
- <span class="strong">92.02% </span>
26
+ <span class="strong">89.61% </span>
27
27
  <span class="quiet">Statements</span>
28
- <span class='fraction'>1188/1291</span>
28
+ <span class='fraction'>1545/1724</span>
29
29
  </div>
30
30
 
31
31
 
32
32
  <div class='fl pad1y space-right2'>
33
- <span class="strong">89.93% </span>
33
+ <span class="strong">93.01% </span>
34
34
  <span class="quiet">Branches</span>
35
- <span class='fraction'>295/328</span>
35
+ <span class='fraction'>373/401</span>
36
36
  </div>
37
37
 
38
38
 
39
39
  <div class='fl pad1y space-right2'>
40
- <span class="strong">98.01% </span>
40
+ <span class="strong">90.25% </span>
41
41
  <span class="quiet">Functions</span>
42
- <span class='fraction'>99/101</span>
42
+ <span class='fraction'>139/154</span>
43
43
  </div>
44
44
 
45
45
 
46
46
  <div class='fl pad1y space-right2'>
47
- <span class="strong">92.02% </span>
47
+ <span class="strong">89.61% </span>
48
48
  <span class="quiet">Lines</span>
49
- <span class='fraction'>1188/1291</span>
49
+ <span class='fraction'>1545/1724</span>
50
50
  </div>
51
51
 
52
52
 
@@ -79,18 +79,33 @@
79
79
  </tr>
80
80
  </thead>
81
81
  <tbody><tr>
82
- <td class="file high" data-value="container.mts"><a href="container.mts.html">container.mts</a></td>
83
- <td data-value="100" class="pic high">
84
- <div class="chart"><div class="cover-fill cover-full" style="width: 100%"></div><div class="cover-empty" style="width: 0%"></div></div>
82
+ <td class="file high" data-value="base-instance-holder-manager.mts"><a href="base-instance-holder-manager.mts.html">base-instance-holder-manager.mts</a></td>
83
+ <td data-value="92.3" class="pic high">
84
+ <div class="chart"><div class="cover-fill" style="width: 92%"></div><div class="cover-empty" style="width: 8%"></div></div>
85
85
  </td>
86
+ <td data-value="92.3" class="pct high">92.3%</td>
87
+ <td data-value="78" class="abs high">72/78</td>
86
88
  <td data-value="100" class="pct high">100%</td>
87
- <td data-value="71" class="abs high">71/71</td>
88
- <td data-value="100" class="pct high">100%</td>
89
- <td data-value="14" class="abs high">14/14</td>
90
- <td data-value="100" class="pct high">100%</td>
91
- <td data-value="11" class="abs high">11/11</td>
92
- <td data-value="100" class="pct high">100%</td>
93
- <td data-value="71" class="abs high">71/71</td>
89
+ <td data-value="10" class="abs high">10/10</td>
90
+ <td data-value="75" class="pct medium">75%</td>
91
+ <td data-value="12" class="abs medium">9/12</td>
92
+ <td data-value="92.3" class="pct high">92.3%</td>
93
+ <td data-value="78" class="abs high">72/78</td>
94
+ </tr>
95
+
96
+ <tr>
97
+ <td class="file high" data-value="container.mts"><a href="container.mts.html">container.mts</a></td>
98
+ <td data-value="91.96" class="pic high">
99
+ <div class="chart"><div class="cover-fill" style="width: 91%"></div><div class="cover-empty" style="width: 9%"></div></div>
100
+ </td>
101
+ <td data-value="91.96" class="pct high">91.96%</td>
102
+ <td data-value="112" class="abs high">103/112</td>
103
+ <td data-value="95.45" class="pct high">95.45%</td>
104
+ <td data-value="22" class="abs high">21/22</td>
105
+ <td data-value="87.5" class="pct high">87.5%</td>
106
+ <td data-value="16" class="abs high">14/16</td>
107
+ <td data-value="91.96" class="pct high">91.96%</td>
108
+ <td data-value="112" class="abs high">103/112</td>
94
109
  </tr>
95
110
 
96
111
  <tr>
@@ -129,13 +144,13 @@
129
144
  <div class="chart"><div class="cover-fill cover-full" style="width: 100%"></div><div class="cover-empty" style="width: 0%"></div></div>
130
145
  </td>
131
146
  <td data-value="100" class="pct high">100%</td>
132
- <td data-value="18" class="abs high">18/18</td>
147
+ <td data-value="19" class="abs high">19/19</td>
133
148
  <td data-value="100" class="pct high">100%</td>
134
149
  <td data-value="0" class="abs high">0/0</td>
135
150
  <td data-value="100" class="pct high">100%</td>
136
151
  <td data-value="0" class="abs high">0/0</td>
137
152
  <td data-value="100" class="pct high">100%</td>
138
- <td data-value="18" class="abs high">18/18</td>
153
+ <td data-value="19" class="abs high">19/19</td>
139
154
  </tr>
140
155
 
141
156
  <tr>
@@ -168,6 +183,21 @@
168
183
  <td data-value="9" class="abs high">9/9</td>
169
184
  </tr>
170
185
 
186
+ <tr>
187
+ <td class="file high" data-value="instance-resolver.mts"><a href="instance-resolver.mts.html">instance-resolver.mts</a></td>
188
+ <td data-value="94.14" class="pic high">
189
+ <div class="chart"><div class="cover-fill" style="width: 94%"></div><div class="cover-empty" style="width: 6%"></div></div>
190
+ </td>
191
+ <td data-value="94.14" class="pct high">94.14%</td>
192
+ <td data-value="376" class="abs high">354/376</td>
193
+ <td data-value="90.8" class="pct high">90.8%</td>
194
+ <td data-value="87" class="abs high">79/87</td>
195
+ <td data-value="100" class="pct high">100%</td>
196
+ <td data-value="16" class="abs high">16/16</td>
197
+ <td data-value="94.14" class="pct high">94.14%</td>
198
+ <td data-value="376" class="abs high">354/376</td>
199
+ </tr>
200
+
171
201
  <tr>
172
202
  <td class="file high" data-value="registry.mts"><a href="registry.mts.html">registry.mts</a></td>
173
203
  <td data-value="100" class="pic high">
@@ -176,7 +206,7 @@
176
206
  <td data-value="100" class="pct high">100%</td>
177
207
  <td data-value="38" class="abs high">38/38</td>
178
208
  <td data-value="100" class="pct high">100%</td>
179
- <td data-value="14" class="abs high">14/14</td>
209
+ <td data-value="15" class="abs high">15/15</td>
180
210
  <td data-value="100" class="pct high">100%</td>
181
211
  <td data-value="6" class="abs high">6/6</td>
182
212
  <td data-value="100" class="pct high">100%</td>
@@ -185,17 +215,32 @@
185
215
 
186
216
  <tr>
187
217
  <td class="file high" data-value="request-context-holder.mts"><a href="request-context-holder.mts.html">request-context-holder.mts</a></td>
188
- <td data-value="97.33" class="pic high">
218
+ <td data-value="97.22" class="pic high">
189
219
  <div class="chart"><div class="cover-fill" style="width: 97%"></div><div class="cover-empty" style="width: 3%"></div></div>
190
220
  </td>
191
- <td data-value="97.33" class="pct high">97.33%</td>
192
- <td data-value="75" class="abs high">73/75</td>
193
- <td data-value="93.33" class="pct high">93.33%</td>
194
- <td data-value="15" class="abs high">14/15</td>
221
+ <td data-value="97.22" class="pct high">97.22%</td>
222
+ <td data-value="72" class="abs high">70/72</td>
223
+ <td data-value="93.75" class="pct high">93.75%</td>
224
+ <td data-value="16" class="abs high">15/16</td>
195
225
  <td data-value="100" class="pct high">100%</td>
196
- <td data-value="10" class="abs high">10/10</td>
197
- <td data-value="97.33" class="pct high">97.33%</td>
198
- <td data-value="75" class="abs high">73/75</td>
226
+ <td data-value="11" class="abs high">11/11</td>
227
+ <td data-value="97.22" class="pct high">97.22%</td>
228
+ <td data-value="72" class="abs high">70/72</td>
229
+ </tr>
230
+
231
+ <tr>
232
+ <td class="file high" data-value="request-context-manager.mts"><a href="request-context-manager.mts.html">request-context-manager.mts</a></td>
233
+ <td data-value="80.64" class="pic high">
234
+ <div class="chart"><div class="cover-fill" style="width: 80%"></div><div class="cover-empty" style="width: 20%"></div></div>
235
+ </td>
236
+ <td data-value="80.64" class="pct high">80.64%</td>
237
+ <td data-value="93" class="abs high">75/93</td>
238
+ <td data-value="83.33" class="pct high">83.33%</td>
239
+ <td data-value="24" class="abs high">20/24</td>
240
+ <td data-value="100" class="pct high">100%</td>
241
+ <td data-value="8" class="abs high">8/8</td>
242
+ <td data-value="80.64" class="pct high">80.64%</td>
243
+ <td data-value="93" class="abs high">75/93</td>
199
244
  </tr>
200
245
 
201
246
  <tr>
@@ -213,6 +258,21 @@
213
258
  <td data-value="110" class="abs high">110/110</td>
214
259
  </tr>
215
260
 
261
+ <tr>
262
+ <td class="file medium" data-value="service-invalidator.mts"><a href="service-invalidator.mts.html">service-invalidator.mts</a></td>
263
+ <td data-value="78.91" class="pic medium">
264
+ <div class="chart"><div class="cover-fill" style="width: 78%"></div><div class="cover-empty" style="width: 22%"></div></div>
265
+ </td>
266
+ <td data-value="78.91" class="pct medium">78.91%</td>
267
+ <td data-value="294" class="abs medium">232/294</td>
268
+ <td data-value="87.27" class="pct high">87.27%</td>
269
+ <td data-value="55" class="abs high">48/55</td>
270
+ <td data-value="79.16" class="pct medium">79.16%</td>
271
+ <td data-value="24" class="abs medium">19/24</td>
272
+ <td data-value="78.91" class="pct medium">78.91%</td>
273
+ <td data-value="294" class="abs medium">232/294</td>
274
+ </tr>
275
+
216
276
  <tr>
217
277
  <td class="file high" data-value="service-locator-event-bus.mts"><a href="service-locator-event-bus.mts.html">service-locator-event-bus.mts</a></td>
218
278
  <td data-value="86.79" class="pic high">
@@ -220,8 +280,8 @@
220
280
  </td>
221
281
  <td data-value="86.79" class="pct high">86.79%</td>
222
282
  <td data-value="53" class="abs high">46/53</td>
223
- <td data-value="95" class="pct high">95%</td>
224
- <td data-value="20" class="abs high">19/20</td>
283
+ <td data-value="94.44" class="pct high">94.44%</td>
284
+ <td data-value="18" class="abs high">17/18</td>
225
285
  <td data-value="100" class="pct high">100%</td>
226
286
  <td data-value="4" class="abs high">4/4</td>
227
287
  <td data-value="86.79" class="pct high">86.79%</td>
@@ -249,28 +309,43 @@
249
309
  <div class="chart"><div class="cover-fill cover-full" style="width: 100%"></div><div class="cover-empty" style="width: 0%"></div></div>
250
310
  </td>
251
311
  <td data-value="100" class="pct high">100%</td>
252
- <td data-value="121" class="abs high">121/121</td>
312
+ <td data-value="57" class="abs high">57/57</td>
253
313
  <td data-value="100" class="pct high">100%</td>
254
- <td data-value="23" class="abs high">23/23</td>
314
+ <td data-value="15" class="abs high">15/15</td>
255
315
  <td data-value="100" class="pct high">100%</td>
256
- <td data-value="9" class="abs high">9/9</td>
316
+ <td data-value="5" class="abs high">5/5</td>
257
317
  <td data-value="100" class="pct high">100%</td>
258
- <td data-value="121" class="abs high">121/121</td>
318
+ <td data-value="57" class="abs high">57/57</td>
259
319
  </tr>
260
320
 
261
321
  <tr>
262
322
  <td class="file high" data-value="service-locator.mts"><a href="service-locator.mts.html">service-locator.mts</a></td>
263
- <td data-value="86.19" class="pic high">
264
- <div class="chart"><div class="cover-fill" style="width: 86%"></div><div class="cover-empty" style="width: 14%"></div></div>
323
+ <td data-value="88.88" class="pic high">
324
+ <div class="chart"><div class="cover-fill" style="width: 88%"></div><div class="cover-empty" style="width: 12%"></div></div>
325
+ </td>
326
+ <td data-value="88.88" class="pct high">88.88%</td>
327
+ <td data-value="153" class="abs high">136/153</td>
328
+ <td data-value="96.29" class="pct high">96.29%</td>
329
+ <td data-value="27" class="abs high">26/27</td>
330
+ <td data-value="85" class="pct high">85%</td>
331
+ <td data-value="20" class="abs high">17/20</td>
332
+ <td data-value="88.88" class="pct high">88.88%</td>
333
+ <td data-value="153" class="abs high">136/153</td>
334
+ </tr>
335
+
336
+ <tr>
337
+ <td class="file medium" data-value="token-processor.mts"><a href="token-processor.mts.html">token-processor.mts</a></td>
338
+ <td data-value="72.41" class="pic medium">
339
+ <div class="chart"><div class="cover-fill" style="width: 72%"></div><div class="cover-empty" style="width: 28%"></div></div>
265
340
  </td>
266
- <td data-value="86.19" class="pct high">86.19%</td>
267
- <td data-value="652" class="abs high">562/652</td>
268
- <td data-value="82.82" class="pct high">82.82%</td>
269
- <td data-value="163" class="abs high">135/163</td>
270
- <td data-value="97.36" class="pct high">97.36%</td>
271
- <td data-value="38" class="abs high">37/38</td>
272
- <td data-value="86.19" class="pct high">86.19%</td>
273
- <td data-value="652" class="abs high">562/652</td>
341
+ <td data-value="72.41" class="pct medium">72.41%</td>
342
+ <td data-value="116" class="abs medium">84/116</td>
343
+ <td data-value="93.93" class="pct high">93.93%</td>
344
+ <td data-value="33" class="abs high">31/33</td>
345
+ <td data-value="88.88" class="pct high">88.88%</td>
346
+ <td data-value="9" class="abs high">8/9</td>
347
+ <td data-value="72.41" class="pct medium">72.41%</td>
348
+ <td data-value="116" class="abs medium">84/116</td>
274
349
  </tr>
275
350
 
276
351
  </tbody>
@@ -281,7 +356,7 @@
281
356
  <div class='footer quiet pad2 space-top1 center small'>
282
357
  Code coverage generated by
283
358
  <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
284
- at 2025-09-19T12:38:51.382Z
359
+ at 2025-09-21T17:47:07.632Z
285
360
  </div>
286
361
  <script src="../prettify.js"></script>
287
362
  <script>
@@ -25,7 +25,7 @@
25
25
  <div class='fl pad1y space-right2'>
26
26
  <span class="strong">100% </span>
27
27
  <span class="quiet">Statements</span>
28
- <span class='fraction'>18/18</span>
28
+ <span class='fraction'>19/19</span>
29
29
  </div>
30
30
 
31
31
 
@@ -46,7 +46,7 @@
46
46
  <div class='fl pad1y space-right2'>
47
47
  <span class="strong">100% </span>
48
48
  <span class="quiet">Lines</span>
49
- <span class='fraction'>18/18</span>
49
+ <span class='fraction'>19/19</span>
50
50
  </div>
51
51
 
52
52
 
@@ -81,7 +81,9 @@
81
81
  <a name='L16'></a><a href='#L16'>16</a>
82
82
  <a name='L17'></a><a href='#L17'>17</a>
83
83
  <a name='L18'></a><a href='#L18'>18</a>
84
- <a name='L19'></a><a href='#L19'>19</a></td><td class="line-coverage quiet"><span class="cline-any cline-yes">1x</span>
84
+ <a name='L19'></a><a href='#L19'>19</a>
85
+ <a name='L20'></a><a href='#L20'>20</a></td><td class="line-coverage quiet"><span class="cline-any cline-yes">1x</span>
86
+ <span class="cline-any cline-yes">1x</span>
85
87
  <span class="cline-any cline-yes">1x</span>
86
88
  <span class="cline-any cline-yes">1x</span>
87
89
  <span class="cline-any cline-yes">1x</span>
@@ -104,6 +106,7 @@ export * from './enums/index.mjs'
104
106
  export * from './errors/index.mjs'
105
107
  export * from './interfaces/index.mjs'
106
108
  export * from './utils/index.mjs'
109
+ export * from './base-instance-holder-manager.mjs'
107
110
  export * from './event-emitter.mjs'
108
111
  export * from './factory-context.mjs'
109
112
  export * from './injection-token.mjs'
@@ -124,7 +127,7 @@ export * from './container.mjs'
124
127
  <div class='footer quiet pad2 space-top1 center small'>
125
128
  Code coverage generated by
126
129
  <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
127
- at 2025-09-19T12:38:51.382Z
130
+ at 2025-09-21T17:47:07.632Z
128
131
  </div>
129
132
  <script src="../prettify.js"></script>
130
133
  <script>
@@ -264,13 +264,13 @@
264
264
  <span class="cline-any cline-neutral">&nbsp;</span>
265
265
  <span class="cline-any cline-neutral">&nbsp;</span>
266
266
  <span class="cline-any cline-yes">1x</span>
267
- <span class="cline-any cline-yes">300x</span>
268
- <span class="cline-any cline-yes">300x</span>
267
+ <span class="cline-any cline-yes">357x</span>
268
+ <span class="cline-any cline-yes">357x</span>
269
269
  <span class="cline-any cline-neutral">&nbsp;</span>
270
- <span class="cline-any cline-yes">300x</span>
271
- <span class="cline-any cline-yes">300x</span>
272
- <span class="cline-any cline-yes">300x</span>
273
- <span class="cline-any cline-yes">300x</span>
270
+ <span class="cline-any cline-yes">357x</span>
271
+ <span class="cline-any cline-yes">357x</span>
272
+ <span class="cline-any cline-yes">357x</span>
273
+ <span class="cline-any cline-yes">357x</span>
274
274
  <span class="cline-any cline-neutral">&nbsp;</span>
275
275
  <span class="cline-any cline-neutral">&nbsp;</span>
276
276
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -286,48 +286,48 @@
286
286
  <span class="cline-any cline-neutral">&nbsp;</span>
287
287
  <span class="cline-any cline-neutral">&nbsp;</span>
288
288
  <span class="cline-any cline-neutral">&nbsp;</span>
289
- <span class="cline-any cline-yes">300x</span>
289
+ <span class="cline-any cline-yes">357x</span>
290
290
  <span class="cline-any cline-neutral">&nbsp;</span>
291
- <span class="cline-any cline-yes">257x</span>
292
- <span class="cline-any cline-yes">257x</span>
291
+ <span class="cline-any cline-yes">314x</span>
292
+ <span class="cline-any cline-yes">314x</span>
293
293
  <span class="cline-any cline-neutral">&nbsp;</span>
294
- <span class="cline-any cline-yes">300x</span>
294
+ <span class="cline-any cline-yes">357x</span>
295
295
  <span class="cline-any cline-yes">8x</span>
296
296
  <span class="cline-any cline-yes">8x</span>
297
297
  <span class="cline-any cline-yes">8x</span>
298
298
  <span class="cline-any cline-yes">8x</span>
299
299
  <span class="cline-any cline-yes">8x</span>
300
300
  <span class="cline-any cline-neutral">&nbsp;</span>
301
- <span class="cline-any cline-yes">300x</span>
301
+ <span class="cline-any cline-yes">357x</span>
302
302
  <span class="cline-any cline-yes">19x</span>
303
303
  <span class="cline-any cline-yes">19x</span>
304
304
  <span class="cline-any cline-yes">19x</span>
305
305
  <span class="cline-any cline-yes">19x</span>
306
306
  <span class="cline-any cline-yes">19x</span>
307
307
  <span class="cline-any cline-neutral">&nbsp;</span>
308
- <span class="cline-any cline-yes">300x</span>
308
+ <span class="cline-any cline-yes">357x</span>
309
309
  <span class="cline-any cline-no">&nbsp;</span>
310
310
  <span class="cline-any cline-no">&nbsp;</span>
311
311
  <span class="cline-any cline-no">&nbsp;</span>
312
312
  <span class="cline-any cline-no">&nbsp;</span>
313
313
  <span class="cline-any cline-neutral">&nbsp;</span>
314
- <span class="cline-any cline-yes">300x</span>
315
- <span class="cline-any cline-yes">523x</span>
316
- <span class="cline-any cline-yes">293x</span>
317
- <span class="cline-any cline-yes">293x</span>
318
- <span class="cline-any cline-yes">230x</span>
319
- <span class="cline-any cline-yes">523x</span>
320
- <span class="cline-any cline-yes">178x</span>
321
- <span class="cline-any cline-yes">178x</span>
322
- <span class="cline-any cline-yes">429x</span>
314
+ <span class="cline-any cline-yes">357x</span>
315
+ <span class="cline-any cline-yes">657x</span>
316
+ <span class="cline-any cline-yes">379x</span>
317
+ <span class="cline-any cline-yes">379x</span>
318
+ <span class="cline-any cline-yes">278x</span>
319
+ <span class="cline-any cline-yes">657x</span>
320
+ <span class="cline-any cline-yes">218x</span>
321
+ <span class="cline-any cline-yes">218x</span>
322
+ <span class="cline-any cline-yes">587x</span>
323
323
  <span class="cline-any cline-yes">3x</span>
324
- <span class="cline-any cline-yes">52x</span>
325
- <span class="cline-any cline-yes">49x</span>
326
- <span class="cline-any cline-yes">49x</span>
324
+ <span class="cline-any cline-yes">60x</span>
325
+ <span class="cline-any cline-yes">57x</span>
326
+ <span class="cline-any cline-yes">57x</span>
327
327
  <span class="cline-any cline-neutral">&nbsp;</span>
328
- <span class="cline-any cline-yes">230x</span>
329
- <span class="cline-any cline-yes">523x</span>
330
- <span class="cline-any cline-yes">300x</span>
328
+ <span class="cline-any cline-yes">278x</span>
329
+ <span class="cline-any cline-yes">657x</span>
330
+ <span class="cline-any cline-yes">357x</span>
331
331
  <span class="cline-any cline-neutral">&nbsp;</span>
332
332
  <span class="cline-any cline-yes">1x</span>
333
333
  <span class="cline-any cline-yes">8x</span>
@@ -556,7 +556,7 @@ export type InjectionTokenType =
556
556
  <div class='footer quiet pad2 space-top1 center small'>
557
557
  Code coverage generated by
558
558
  <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
559
- at 2025-09-19T12:38:51.382Z
559
+ at 2025-09-21T17:47:07.632Z
560
560
  </div>
561
561
  <script src="../prettify.js"></script>
562
562
  <script>