@navios/di 0.3.1 → 0.4.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 (96) hide show
  1. package/README.md +67 -6
  2. package/coverage/base.css +224 -0
  3. package/coverage/block-navigation.js +87 -0
  4. package/coverage/clover.xml +2659 -0
  5. package/coverage/coverage-final.json +46 -0
  6. package/coverage/docs/examples/basic-usage.mts.html +376 -0
  7. package/coverage/docs/examples/factory-pattern.mts.html +1039 -0
  8. package/coverage/docs/examples/index.html +176 -0
  9. package/coverage/docs/examples/injection-tokens.mts.html +760 -0
  10. package/coverage/docs/examples/request-scope-example.mts.html +847 -0
  11. package/coverage/docs/examples/service-lifecycle.mts.html +1162 -0
  12. package/coverage/favicon.png +0 -0
  13. package/coverage/index.html +236 -0
  14. package/coverage/lib/_tsup-dts-rollup.d.mts.html +2806 -0
  15. package/coverage/lib/index.d.mts.html +310 -0
  16. package/coverage/lib/index.html +131 -0
  17. package/coverage/prettify.css +1 -0
  18. package/coverage/prettify.js +2 -0
  19. package/coverage/sort-arrow-sprite.png +0 -0
  20. package/coverage/sorter.js +196 -0
  21. package/coverage/src/container.mts.html +586 -0
  22. package/coverage/src/decorators/factory.decorator.mts.html +322 -0
  23. package/coverage/src/decorators/index.html +146 -0
  24. package/coverage/src/decorators/index.mts.html +91 -0
  25. package/coverage/src/decorators/injectable.decorator.mts.html +394 -0
  26. package/coverage/src/enums/index.html +146 -0
  27. package/coverage/src/enums/index.mts.html +91 -0
  28. package/coverage/src/enums/injectable-scope.enum.mts.html +127 -0
  29. package/coverage/src/enums/injectable-type.enum.mts.html +97 -0
  30. package/coverage/src/errors/errors.enum.mts.html +109 -0
  31. package/coverage/src/errors/factory-not-found.mts.html +109 -0
  32. package/coverage/src/errors/factory-token-not-resolved.mts.html +115 -0
  33. package/coverage/src/errors/index.html +221 -0
  34. package/coverage/src/errors/index.mts.html +106 -0
  35. package/coverage/src/errors/instance-destroying.mts.html +109 -0
  36. package/coverage/src/errors/instance-expired.mts.html +109 -0
  37. package/coverage/src/errors/instance-not-found.mts.html +109 -0
  38. package/coverage/src/errors/unknown-error.mts.html +130 -0
  39. package/coverage/src/event-emitter.mts.html +400 -0
  40. package/coverage/src/factory-context.mts.html +109 -0
  41. package/coverage/src/index.html +296 -0
  42. package/coverage/src/index.mts.html +139 -0
  43. package/coverage/src/injection-token.mts.html +571 -0
  44. package/coverage/src/injector.mts.html +133 -0
  45. package/coverage/src/interfaces/factory.interface.mts.html +121 -0
  46. package/coverage/src/interfaces/index.html +161 -0
  47. package/coverage/src/interfaces/index.mts.html +94 -0
  48. package/coverage/src/interfaces/on-service-destroy.interface.mts.html +94 -0
  49. package/coverage/src/interfaces/on-service-init.interface.mts.html +94 -0
  50. package/coverage/src/registry.mts.html +247 -0
  51. package/coverage/src/request-context-holder.mts.html +607 -0
  52. package/coverage/src/service-instantiator.mts.html +559 -0
  53. package/coverage/src/service-locator-event-bus.mts.html +289 -0
  54. package/coverage/src/service-locator-instance-holder.mts.html +307 -0
  55. package/coverage/src/service-locator-manager.mts.html +604 -0
  56. package/coverage/src/service-locator.mts.html +2911 -0
  57. package/coverage/src/symbols/index.html +131 -0
  58. package/coverage/src/symbols/index.mts.html +88 -0
  59. package/coverage/src/symbols/injectable-token.mts.html +88 -0
  60. package/coverage/src/utils/defer.mts.html +304 -0
  61. package/coverage/src/utils/get-injectable-token.mts.html +142 -0
  62. package/coverage/src/utils/get-injectors.mts.html +691 -0
  63. package/coverage/src/utils/index.html +176 -0
  64. package/coverage/src/utils/index.mts.html +97 -0
  65. package/coverage/src/utils/types.mts.html +241 -0
  66. package/docs/README.md +5 -2
  67. package/docs/api-reference.md +38 -0
  68. package/docs/container.md +75 -0
  69. package/docs/getting-started.md +4 -3
  70. package/docs/injectable.md +4 -3
  71. package/docs/migration.md +177 -0
  72. package/docs/request-contexts.md +364 -0
  73. package/lib/_tsup-dts-rollup.d.mts +177 -36
  74. package/lib/_tsup-dts-rollup.d.ts +177 -36
  75. package/lib/index.d.mts +1 -0
  76. package/lib/index.d.ts +1 -0
  77. package/lib/index.js +480 -294
  78. package/lib/index.js.map +1 -1
  79. package/lib/index.mjs +480 -295
  80. package/lib/index.mjs.map +1 -1
  81. package/package.json +1 -1
  82. package/src/__tests__/defer.spec.mts +166 -0
  83. package/src/__tests__/errors.spec.mts +61 -0
  84. package/src/__tests__/event-emitter.spec.mts +163 -0
  85. package/src/__tests__/get-injectors.spec.mts +70 -0
  86. package/src/__tests__/registry.spec.mts +335 -0
  87. package/src/__tests__/request-scope.spec.mts +34 -35
  88. package/src/__tests__/service-instantiator.spec.mts +408 -0
  89. package/src/__tests__/service-locator-event-bus.spec.mts +242 -0
  90. package/src/__tests__/service-locator-manager.spec.mts +370 -0
  91. package/src/__tests__/unified-api.spec.mts +130 -0
  92. package/src/base-instance-holder-manager.mts +175 -0
  93. package/src/index.mts +1 -0
  94. package/src/request-context-holder.mts +73 -44
  95. package/src/service-locator-manager.mts +12 -70
  96. package/src/service-locator.mts +421 -226
@@ -0,0 +1,571 @@
1
+
2
+ <!doctype html>
3
+ <html lang="en">
4
+
5
+ <head>
6
+ <title>Code coverage report for src/injection-token.mts</title>
7
+ <meta charset="utf-8" />
8
+ <link rel="stylesheet" href="../prettify.css" />
9
+ <link rel="stylesheet" href="../base.css" />
10
+ <link rel="shortcut icon" type="image/x-icon" href="../favicon.png" />
11
+ <meta name="viewport" content="width=device-width, initial-scale=1" />
12
+ <style type='text/css'>
13
+ .coverage-summary .sorter {
14
+ background-image: url(../sort-arrow-sprite.png);
15
+ }
16
+ </style>
17
+ </head>
18
+
19
+ <body>
20
+ <div class='wrapper'>
21
+ <div class='pad1'>
22
+ <h1><a href="../index.html">All files</a> / <a href="index.html">src</a> injection-token.mts</h1>
23
+ <div class='clearfix'>
24
+
25
+ <div class='fl pad1y space-right2'>
26
+ <span class="strong">95.29% </span>
27
+ <span class="quiet">Statements</span>
28
+ <span class='fraction'>81/85</span>
29
+ </div>
30
+
31
+
32
+ <div class='fl pad1y space-right2'>
33
+ <span class="strong">100% </span>
34
+ <span class="quiet">Branches</span>
35
+ <span class='fraction'>25/25</span>
36
+ </div>
37
+
38
+
39
+ <div class='fl pad1y space-right2'>
40
+ <span class="strong">92.85% </span>
41
+ <span class="quiet">Functions</span>
42
+ <span class='fraction'>13/14</span>
43
+ </div>
44
+
45
+
46
+ <div class='fl pad1y space-right2'>
47
+ <span class="strong">95.29% </span>
48
+ <span class="quiet">Lines</span>
49
+ <span class='fraction'>81/85</span>
50
+ </div>
51
+
52
+
53
+ </div>
54
+ <p class="quiet">
55
+ Press <em>n</em> or <em>j</em> to go to the next uncovered block, <em>b</em>, <em>p</em> or <em>k</em> for the previous block.
56
+ </p>
57
+ <template id="filterTemplate">
58
+ <div class="quiet">
59
+ Filter:
60
+ <input type="search" id="fileSearch">
61
+ </div>
62
+ </template>
63
+ </div>
64
+ <div class='status-line high'></div>
65
+ <pre><table class="coverage">
66
+ <tr><td class="line-count quiet"><a name='L1'></a><a href='#L1'>1</a>
67
+ <a name='L2'></a><a href='#L2'>2</a>
68
+ <a name='L3'></a><a href='#L3'>3</a>
69
+ <a name='L4'></a><a href='#L4'>4</a>
70
+ <a name='L5'></a><a href='#L5'>5</a>
71
+ <a name='L6'></a><a href='#L6'>6</a>
72
+ <a name='L7'></a><a href='#L7'>7</a>
73
+ <a name='L8'></a><a href='#L8'>8</a>
74
+ <a name='L9'></a><a href='#L9'>9</a>
75
+ <a name='L10'></a><a href='#L10'>10</a>
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>
82
+ <a name='L17'></a><a href='#L17'>17</a>
83
+ <a name='L18'></a><a href='#L18'>18</a>
84
+ <a name='L19'></a><a href='#L19'>19</a>
85
+ <a name='L20'></a><a href='#L20'>20</a>
86
+ <a name='L21'></a><a href='#L21'>21</a>
87
+ <a name='L22'></a><a href='#L22'>22</a>
88
+ <a name='L23'></a><a href='#L23'>23</a>
89
+ <a name='L24'></a><a href='#L24'>24</a>
90
+ <a name='L25'></a><a href='#L25'>25</a>
91
+ <a name='L26'></a><a href='#L26'>26</a>
92
+ <a name='L27'></a><a href='#L27'>27</a>
93
+ <a name='L28'></a><a href='#L28'>28</a>
94
+ <a name='L29'></a><a href='#L29'>29</a>
95
+ <a name='L30'></a><a href='#L30'>30</a>
96
+ <a name='L31'></a><a href='#L31'>31</a>
97
+ <a name='L32'></a><a href='#L32'>32</a>
98
+ <a name='L33'></a><a href='#L33'>33</a>
99
+ <a name='L34'></a><a href='#L34'>34</a>
100
+ <a name='L35'></a><a href='#L35'>35</a>
101
+ <a name='L36'></a><a href='#L36'>36</a>
102
+ <a name='L37'></a><a href='#L37'>37</a>
103
+ <a name='L38'></a><a href='#L38'>38</a>
104
+ <a name='L39'></a><a href='#L39'>39</a>
105
+ <a name='L40'></a><a href='#L40'>40</a>
106
+ <a name='L41'></a><a href='#L41'>41</a>
107
+ <a name='L42'></a><a href='#L42'>42</a>
108
+ <a name='L43'></a><a href='#L43'>43</a>
109
+ <a name='L44'></a><a href='#L44'>44</a>
110
+ <a name='L45'></a><a href='#L45'>45</a>
111
+ <a name='L46'></a><a href='#L46'>46</a>
112
+ <a name='L47'></a><a href='#L47'>47</a>
113
+ <a name='L48'></a><a href='#L48'>48</a>
114
+ <a name='L49'></a><a href='#L49'>49</a>
115
+ <a name='L50'></a><a href='#L50'>50</a>
116
+ <a name='L51'></a><a href='#L51'>51</a>
117
+ <a name='L52'></a><a href='#L52'>52</a>
118
+ <a name='L53'></a><a href='#L53'>53</a>
119
+ <a name='L54'></a><a href='#L54'>54</a>
120
+ <a name='L55'></a><a href='#L55'>55</a>
121
+ <a name='L56'></a><a href='#L56'>56</a>
122
+ <a name='L57'></a><a href='#L57'>57</a>
123
+ <a name='L58'></a><a href='#L58'>58</a>
124
+ <a name='L59'></a><a href='#L59'>59</a>
125
+ <a name='L60'></a><a href='#L60'>60</a>
126
+ <a name='L61'></a><a href='#L61'>61</a>
127
+ <a name='L62'></a><a href='#L62'>62</a>
128
+ <a name='L63'></a><a href='#L63'>63</a>
129
+ <a name='L64'></a><a href='#L64'>64</a>
130
+ <a name='L65'></a><a href='#L65'>65</a>
131
+ <a name='L66'></a><a href='#L66'>66</a>
132
+ <a name='L67'></a><a href='#L67'>67</a>
133
+ <a name='L68'></a><a href='#L68'>68</a>
134
+ <a name='L69'></a><a href='#L69'>69</a>
135
+ <a name='L70'></a><a href='#L70'>70</a>
136
+ <a name='L71'></a><a href='#L71'>71</a>
137
+ <a name='L72'></a><a href='#L72'>72</a>
138
+ <a name='L73'></a><a href='#L73'>73</a>
139
+ <a name='L74'></a><a href='#L74'>74</a>
140
+ <a name='L75'></a><a href='#L75'>75</a>
141
+ <a name='L76'></a><a href='#L76'>76</a>
142
+ <a name='L77'></a><a href='#L77'>77</a>
143
+ <a name='L78'></a><a href='#L78'>78</a>
144
+ <a name='L79'></a><a href='#L79'>79</a>
145
+ <a name='L80'></a><a href='#L80'>80</a>
146
+ <a name='L81'></a><a href='#L81'>81</a>
147
+ <a name='L82'></a><a href='#L82'>82</a>
148
+ <a name='L83'></a><a href='#L83'>83</a>
149
+ <a name='L84'></a><a href='#L84'>84</a>
150
+ <a name='L85'></a><a href='#L85'>85</a>
151
+ <a name='L86'></a><a href='#L86'>86</a>
152
+ <a name='L87'></a><a href='#L87'>87</a>
153
+ <a name='L88'></a><a href='#L88'>88</a>
154
+ <a name='L89'></a><a href='#L89'>89</a>
155
+ <a name='L90'></a><a href='#L90'>90</a>
156
+ <a name='L91'></a><a href='#L91'>91</a>
157
+ <a name='L92'></a><a href='#L92'>92</a>
158
+ <a name='L93'></a><a href='#L93'>93</a>
159
+ <a name='L94'></a><a href='#L94'>94</a>
160
+ <a name='L95'></a><a href='#L95'>95</a>
161
+ <a name='L96'></a><a href='#L96'>96</a>
162
+ <a name='L97'></a><a href='#L97'>97</a>
163
+ <a name='L98'></a><a href='#L98'>98</a>
164
+ <a name='L99'></a><a href='#L99'>99</a>
165
+ <a name='L100'></a><a href='#L100'>100</a>
166
+ <a name='L101'></a><a href='#L101'>101</a>
167
+ <a name='L102'></a><a href='#L102'>102</a>
168
+ <a name='L103'></a><a href='#L103'>103</a>
169
+ <a name='L104'></a><a href='#L104'>104</a>
170
+ <a name='L105'></a><a href='#L105'>105</a>
171
+ <a name='L106'></a><a href='#L106'>106</a>
172
+ <a name='L107'></a><a href='#L107'>107</a>
173
+ <a name='L108'></a><a href='#L108'>108</a>
174
+ <a name='L109'></a><a href='#L109'>109</a>
175
+ <a name='L110'></a><a href='#L110'>110</a>
176
+ <a name='L111'></a><a href='#L111'>111</a>
177
+ <a name='L112'></a><a href='#L112'>112</a>
178
+ <a name='L113'></a><a href='#L113'>113</a>
179
+ <a name='L114'></a><a href='#L114'>114</a>
180
+ <a name='L115'></a><a href='#L115'>115</a>
181
+ <a name='L116'></a><a href='#L116'>116</a>
182
+ <a name='L117'></a><a href='#L117'>117</a>
183
+ <a name='L118'></a><a href='#L118'>118</a>
184
+ <a name='L119'></a><a href='#L119'>119</a>
185
+ <a name='L120'></a><a href='#L120'>120</a>
186
+ <a name='L121'></a><a href='#L121'>121</a>
187
+ <a name='L122'></a><a href='#L122'>122</a>
188
+ <a name='L123'></a><a href='#L123'>123</a>
189
+ <a name='L124'></a><a href='#L124'>124</a>
190
+ <a name='L125'></a><a href='#L125'>125</a>
191
+ <a name='L126'></a><a href='#L126'>126</a>
192
+ <a name='L127'></a><a href='#L127'>127</a>
193
+ <a name='L128'></a><a href='#L128'>128</a>
194
+ <a name='L129'></a><a href='#L129'>129</a>
195
+ <a name='L130'></a><a href='#L130'>130</a>
196
+ <a name='L131'></a><a href='#L131'>131</a>
197
+ <a name='L132'></a><a href='#L132'>132</a>
198
+ <a name='L133'></a><a href='#L133'>133</a>
199
+ <a name='L134'></a><a href='#L134'>134</a>
200
+ <a name='L135'></a><a href='#L135'>135</a>
201
+ <a name='L136'></a><a href='#L136'>136</a>
202
+ <a name='L137'></a><a href='#L137'>137</a>
203
+ <a name='L138'></a><a href='#L138'>138</a>
204
+ <a name='L139'></a><a href='#L139'>139</a>
205
+ <a name='L140'></a><a href='#L140'>140</a>
206
+ <a name='L141'></a><a href='#L141'>141</a>
207
+ <a name='L142'></a><a href='#L142'>142</a>
208
+ <a name='L143'></a><a href='#L143'>143</a>
209
+ <a name='L144'></a><a href='#L144'>144</a>
210
+ <a name='L145'></a><a href='#L145'>145</a>
211
+ <a name='L146'></a><a href='#L146'>146</a>
212
+ <a name='L147'></a><a href='#L147'>147</a>
213
+ <a name='L148'></a><a href='#L148'>148</a>
214
+ <a name='L149'></a><a href='#L149'>149</a>
215
+ <a name='L150'></a><a href='#L150'>150</a>
216
+ <a name='L151'></a><a href='#L151'>151</a>
217
+ <a name='L152'></a><a href='#L152'>152</a>
218
+ <a name='L153'></a><a href='#L153'>153</a>
219
+ <a name='L154'></a><a href='#L154'>154</a>
220
+ <a name='L155'></a><a href='#L155'>155</a>
221
+ <a name='L156'></a><a href='#L156'>156</a>
222
+ <a name='L157'></a><a href='#L157'>157</a>
223
+ <a name='L158'></a><a href='#L158'>158</a>
224
+ <a name='L159'></a><a href='#L159'>159</a>
225
+ <a name='L160'></a><a href='#L160'>160</a>
226
+ <a name='L161'></a><a href='#L161'>161</a>
227
+ <a name='L162'></a><a href='#L162'>162</a>
228
+ <a name='L163'></a><a href='#L163'>163</a></td><td class="line-coverage quiet"><span class="cline-any cline-neutral">&nbsp;</span>
229
+ <span class="cline-any cline-neutral">&nbsp;</span>
230
+ <span class="cline-any cline-neutral">&nbsp;</span>
231
+ <span class="cline-any cline-neutral">&nbsp;</span>
232
+ <span class="cline-any cline-neutral">&nbsp;</span>
233
+ <span class="cline-any cline-neutral">&nbsp;</span>
234
+ <span class="cline-any cline-neutral">&nbsp;</span>
235
+ <span class="cline-any cline-neutral">&nbsp;</span>
236
+ <span class="cline-any cline-neutral">&nbsp;</span>
237
+ <span class="cline-any cline-neutral">&nbsp;</span>
238
+ <span class="cline-any cline-neutral">&nbsp;</span>
239
+ <span class="cline-any cline-neutral">&nbsp;</span>
240
+ <span class="cline-any cline-neutral">&nbsp;</span>
241
+ <span class="cline-any cline-neutral">&nbsp;</span>
242
+ <span class="cline-any cline-neutral">&nbsp;</span>
243
+ <span class="cline-any cline-neutral">&nbsp;</span>
244
+ <span class="cline-any cline-neutral">&nbsp;</span>
245
+ <span class="cline-any cline-neutral">&nbsp;</span>
246
+ <span class="cline-any cline-neutral">&nbsp;</span>
247
+ <span class="cline-any cline-neutral">&nbsp;</span>
248
+ <span class="cline-any cline-neutral">&nbsp;</span>
249
+ <span class="cline-any cline-neutral">&nbsp;</span>
250
+ <span class="cline-any cline-neutral">&nbsp;</span>
251
+ <span class="cline-any cline-neutral">&nbsp;</span>
252
+ <span class="cline-any cline-yes">1x</span>
253
+ <span class="cline-any cline-neutral">&nbsp;</span>
254
+ <span class="cline-any cline-neutral">&nbsp;</span>
255
+ <span class="cline-any cline-neutral">&nbsp;</span>
256
+ <span class="cline-any cline-neutral">&nbsp;</span>
257
+ <span class="cline-any cline-neutral">&nbsp;</span>
258
+ <span class="cline-any cline-neutral">&nbsp;</span>
259
+ <span class="cline-any cline-neutral">&nbsp;</span>
260
+ <span class="cline-any cline-neutral">&nbsp;</span>
261
+ <span class="cline-any cline-neutral">&nbsp;</span>
262
+ <span class="cline-any cline-neutral">&nbsp;</span>
263
+ <span class="cline-any cline-neutral">&nbsp;</span>
264
+ <span class="cline-any cline-neutral">&nbsp;</span>
265
+ <span class="cline-any cline-neutral">&nbsp;</span>
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>
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>
274
+ <span class="cline-any cline-neutral">&nbsp;</span>
275
+ <span class="cline-any cline-neutral">&nbsp;</span>
276
+ <span class="cline-any cline-neutral">&nbsp;</span>
277
+ <span class="cline-any cline-neutral">&nbsp;</span>
278
+ <span class="cline-any cline-neutral">&nbsp;</span>
279
+ <span class="cline-any cline-neutral">&nbsp;</span>
280
+ <span class="cline-any cline-neutral">&nbsp;</span>
281
+ <span class="cline-any cline-neutral">&nbsp;</span>
282
+ <span class="cline-any cline-neutral">&nbsp;</span>
283
+ <span class="cline-any cline-neutral">&nbsp;</span>
284
+ <span class="cline-any cline-neutral">&nbsp;</span>
285
+ <span class="cline-any cline-neutral">&nbsp;</span>
286
+ <span class="cline-any cline-neutral">&nbsp;</span>
287
+ <span class="cline-any cline-neutral">&nbsp;</span>
288
+ <span class="cline-any cline-neutral">&nbsp;</span>
289
+ <span class="cline-any cline-yes">300x</span>
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>
293
+ <span class="cline-any cline-neutral">&nbsp;</span>
294
+ <span class="cline-any cline-yes">300x</span>
295
+ <span class="cline-any cline-yes">8x</span>
296
+ <span class="cline-any cline-yes">8x</span>
297
+ <span class="cline-any cline-yes">8x</span>
298
+ <span class="cline-any cline-yes">8x</span>
299
+ <span class="cline-any cline-yes">8x</span>
300
+ <span class="cline-any cline-neutral">&nbsp;</span>
301
+ <span class="cline-any cline-yes">300x</span>
302
+ <span class="cline-any cline-yes">19x</span>
303
+ <span class="cline-any cline-yes">19x</span>
304
+ <span class="cline-any cline-yes">19x</span>
305
+ <span class="cline-any cline-yes">19x</span>
306
+ <span class="cline-any cline-yes">19x</span>
307
+ <span class="cline-any cline-neutral">&nbsp;</span>
308
+ <span class="cline-any cline-yes">300x</span>
309
+ <span class="cline-any cline-no">&nbsp;</span>
310
+ <span class="cline-any cline-no">&nbsp;</span>
311
+ <span class="cline-any cline-no">&nbsp;</span>
312
+ <span class="cline-any cline-no">&nbsp;</span>
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>
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>
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>
331
+ <span class="cline-any cline-neutral">&nbsp;</span>
332
+ <span class="cline-any cline-yes">1x</span>
333
+ <span class="cline-any cline-yes">8x</span>
334
+ <span class="cline-any cline-yes">8x</span>
335
+ <span class="cline-any cline-yes">8x</span>
336
+ <span class="cline-any cline-neutral">&nbsp;</span>
337
+ <span class="cline-any cline-yes">8x</span>
338
+ <span class="cline-any cline-yes">8x</span>
339
+ <span class="cline-any cline-yes">8x</span>
340
+ <span class="cline-any cline-yes">8x</span>
341
+ <span class="cline-any cline-yes">8x</span>
342
+ <span class="cline-any cline-yes">8x</span>
343
+ <span class="cline-any cline-yes">8x</span>
344
+ <span class="cline-any cline-yes">8x</span>
345
+ <span class="cline-any cline-neutral">&nbsp;</span>
346
+ <span class="cline-any cline-yes">8x</span>
347
+ <span class="cline-any cline-yes">11x</span>
348
+ <span class="cline-any cline-yes">11x</span>
349
+ <span class="cline-any cline-yes">8x</span>
350
+ <span class="cline-any cline-neutral">&nbsp;</span>
351
+ <span class="cline-any cline-yes">1x</span>
352
+ <span class="cline-any cline-yes">19x</span>
353
+ <span class="cline-any cline-yes">19x</span>
354
+ <span class="cline-any cline-yes">19x</span>
355
+ <span class="cline-any cline-yes">19x</span>
356
+ <span class="cline-any cline-yes">19x</span>
357
+ <span class="cline-any cline-neutral">&nbsp;</span>
358
+ <span class="cline-any cline-yes">19x</span>
359
+ <span class="cline-any cline-yes">19x</span>
360
+ <span class="cline-any cline-yes">19x</span>
361
+ <span class="cline-any cline-yes">19x</span>
362
+ <span class="cline-any cline-yes">19x</span>
363
+ <span class="cline-any cline-yes">19x</span>
364
+ <span class="cline-any cline-yes">19x</span>
365
+ <span class="cline-any cline-yes">19x</span>
366
+ <span class="cline-any cline-neutral">&nbsp;</span>
367
+ <span class="cline-any cline-yes">19x</span>
368
+ <span class="cline-any cline-yes">19x</span>
369
+ <span class="cline-any cline-yes">18x</span>
370
+ <span class="cline-any cline-yes">16x</span>
371
+ <span class="cline-any cline-yes">16x</span>
372
+ <span class="cline-any cline-yes">17x</span>
373
+ <span class="cline-any cline-yes">19x</span>
374
+ <span class="cline-any cline-neutral">&nbsp;</span>
375
+ <span class="cline-any cline-yes">19x</span>
376
+ <span class="cline-any cline-yes">16x</span>
377
+ <span class="cline-any cline-yes">16x</span>
378
+ <span class="cline-any cline-yes">19x</span>
379
+ <span class="cline-any cline-neutral">&nbsp;</span>
380
+ <span class="cline-any cline-neutral">&nbsp;</span>
381
+ <span class="cline-any cline-neutral">&nbsp;</span>
382
+ <span class="cline-any cline-neutral">&nbsp;</span>
383
+ <span class="cline-any cline-neutral">&nbsp;</span>
384
+ <span class="cline-any cline-neutral">&nbsp;</span>
385
+ <span class="cline-any cline-neutral">&nbsp;</span>
386
+ <span class="cline-any cline-neutral">&nbsp;</span>
387
+ <span class="cline-any cline-neutral">&nbsp;</span>
388
+ <span class="cline-any cline-neutral">&nbsp;</span>
389
+ <span class="cline-any cline-neutral">&nbsp;</span>
390
+ <span class="cline-any cline-neutral">&nbsp;</span></td><td class="text"><pre class="prettyprint lang-js">import type { z, ZodObject, ZodOptional, ZodRecord } from 'zod/v4'
391
+ &nbsp;
392
+ import type { FactoryContext } from './factory-context.mjs'
393
+ &nbsp;
394
+ export type ClassType = new (...args: any[]) =&gt; any
395
+ export type ClassTypeWithArgument&lt;Arg&gt; = new (arg: Arg) =&gt; any
396
+ export type ClassTypeWithOptionalArgument&lt;Arg&gt; = new (arg?: Arg) =&gt; any
397
+ &nbsp;
398
+ export type ClassTypeWithInstance&lt;T&gt; = new (...args: any[]) =&gt; T
399
+ export type ClassTypeWithInstanceAndArgument&lt;T, Arg&gt; = new (arg: Arg) =&gt; T
400
+ export type ClassTypeWithInstanceAndOptionalArgument&lt;T, Arg&gt; = new (
401
+ arg?: Arg,
402
+ ) =&gt; T
403
+ &nbsp;
404
+ export type BaseInjectionTokenSchemaType = ZodObject | ZodRecord
405
+ &nbsp;
406
+ export type OptionalInjectionTokenSchemaType =
407
+ | ZodOptional&lt;ZodObject&gt;
408
+ | ZodOptional&lt;ZodRecord&gt;
409
+ &nbsp;
410
+ export type InjectionTokenSchemaType =
411
+ | BaseInjectionTokenSchemaType
412
+ | OptionalInjectionTokenSchemaType
413
+ &nbsp;
414
+ export class InjectionToken&lt;
415
+ // oxlint-disable-next-line no-unused-vars
416
+ T,
417
+ S extends InjectionTokenSchemaType | unknown = unknown,
418
+ // oxlint-disable-next-line no-unused-vars
419
+ Required extends boolean = S extends ZodOptional&lt;ZodObject&gt;
420
+ ? false
421
+ : S extends ZodOptional&lt;ZodRecord&gt;
422
+ ? false
423
+ : S extends ZodObject
424
+ ? true
425
+ : S extends ZodRecord
426
+ ? true
427
+ : false,
428
+ &gt; {
429
+ public id = globalThis.crypto.randomUUID()
430
+ private formattedName: string | null = null
431
+ &nbsp;
432
+ constructor(
433
+ public readonly name: string | symbol | ClassType,
434
+ public readonly schema: ZodObject | undefined,
435
+ ) {}
436
+ &nbsp;
437
+ static create&lt;T extends ClassType&gt;(
438
+ name: T,
439
+ ): InjectionToken&lt;InstanceType&lt;T&gt;, undefined&gt;
440
+ static create&lt;T extends ClassType, Schema extends InjectionTokenSchemaType&gt;(
441
+ name: T,
442
+ schema: Schema,
443
+ ): Schema['_def']['type'] extends 'ZodOptional'
444
+ ? InjectionToken&lt;InstanceType&lt;T&gt;, Schema, false&gt;
445
+ : InjectionToken&lt;InstanceType&lt;T&gt;, Schema, true&gt;
446
+ static create&lt;T&gt;(name: string | symbol): InjectionToken&lt;T, undefined&gt;
447
+ static create&lt;T, Schema extends InjectionTokenSchemaType&gt;(
448
+ name: string | any,
449
+ schema: Schema,
450
+ ): InjectionToken&lt;T, Schema&gt;
451
+ static create(name: string | symbol, schema?: unknown) {
452
+ // @ts-expect-error
453
+ return new InjectionToken(name, schema)
454
+ }
455
+ &nbsp;
456
+ static bound&lt;T, S extends InjectionTokenSchemaType&gt;(
457
+ token: InjectionToken&lt;T, S&gt;,
458
+ value: z.input&lt;S&gt;,
459
+ ): BoundInjectionToken&lt;T, S&gt; {
460
+ return new BoundInjectionToken(token, value)
461
+ }
462
+ &nbsp;
463
+ static factory&lt;T, S extends InjectionTokenSchemaType&gt;(
464
+ token: InjectionToken&lt;T, S&gt;,
465
+ factory: (ctx: FactoryContext) =&gt; Promise&lt;z.input&lt;S&gt;&gt;,
466
+ ): FactoryInjectionToken&lt;T, S&gt; {
467
+ return new FactoryInjectionToken(token, factory)
468
+ }
469
+ &nbsp;
470
+ static <span class="fstat-no" title="function not covered" >refineType&lt;T&gt;(</span>
471
+ <span class="cstat-no" title="statement not covered" > token: BoundInjectionToken&lt;any, any&gt;,</span>
472
+ <span class="cstat-no" title="statement not covered" > ): BoundInjectionToken&lt;T, any&gt; {</span>
473
+ <span class="cstat-no" title="statement not covered" > return token as BoundInjectionToken&lt;T, any&gt;</span>
474
+ <span class="cstat-no" title="statement not covered" > }</span>
475
+ &nbsp;
476
+ toString() {
477
+ if (this.formattedName) {
478
+ return this.formattedName
479
+ }
480
+ const { name } = this
481
+ if (typeof name === 'function') {
482
+ const className = name.name
483
+ this.formattedName = `${className}(${this.id})`
484
+ } else if (typeof name === 'symbol') {
485
+ this.formattedName = `${name.toString()}(${this.id})`
486
+ } else {
487
+ this.formattedName = `${name}(${this.id})`
488
+ }
489
+ &nbsp;
490
+ return this.formattedName
491
+ }
492
+ }
493
+ &nbsp;
494
+ export class BoundInjectionToken&lt;T, S extends InjectionTokenSchemaType&gt; {
495
+ public id: string
496
+ public name: string | symbol | ClassType
497
+ public schema: InjectionTokenSchemaType
498
+ &nbsp;
499
+ constructor(
500
+ public readonly token: InjectionToken&lt;T, S&gt;,
501
+ public readonly value: z.input&lt;S&gt;,
502
+ ) {
503
+ this.name = token.name
504
+ this.id = token.id
505
+ this.schema = token.schema as InjectionTokenSchemaType
506
+ }
507
+ &nbsp;
508
+ toString() {
509
+ return this.token.toString()
510
+ }
511
+ }
512
+ &nbsp;
513
+ export class FactoryInjectionToken&lt;T, S extends InjectionTokenSchemaType&gt; {
514
+ public value?: z.input&lt;S&gt;
515
+ public resolved = false
516
+ public id: string
517
+ public name: string | symbol | ClassType
518
+ public schema: InjectionTokenSchemaType
519
+ &nbsp;
520
+ constructor(
521
+ public readonly token: InjectionToken&lt;T, S&gt;,
522
+ public readonly factory: (ctx: FactoryContext) =&gt; Promise&lt;z.input&lt;S&gt;&gt;,
523
+ ) {
524
+ this.name = token.name
525
+ this.id = token.id
526
+ this.schema = token.schema as InjectionTokenSchemaType
527
+ }
528
+ &nbsp;
529
+ async resolve(ctx: FactoryContext): Promise&lt;z.input&lt;S&gt;&gt; {
530
+ if (!this.value) {
531
+ this.value = await this.factory(ctx)
532
+ this.resolved = true
533
+ }
534
+ return this.value
535
+ }
536
+ &nbsp;
537
+ toString() {
538
+ return this.token.toString()
539
+ }
540
+ }
541
+ &nbsp;
542
+ export type AnyInjectableType =
543
+ | ClassType
544
+ | InjectionToken&lt;any, any&gt;
545
+ | BoundInjectionToken&lt;any, any&gt;
546
+ | FactoryInjectionToken&lt;any, any&gt;
547
+ &nbsp;
548
+ export type InjectionTokenType =
549
+ | InjectionToken&lt;any, any&gt;
550
+ | BoundInjectionToken&lt;any, any&gt;
551
+ | FactoryInjectionToken&lt;any, any&gt;
552
+ &nbsp;</pre></td></tr></table></pre>
553
+
554
+ <div class='push'></div><!-- for sticky footer -->
555
+ </div><!-- /wrapper -->
556
+ <div class='footer quiet pad2 space-top1 center small'>
557
+ Code coverage generated by
558
+ <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
559
+ at 2025-09-19T12:38:51.382Z
560
+ </div>
561
+ <script src="../prettify.js"></script>
562
+ <script>
563
+ window.onload = function () {
564
+ prettyPrint();
565
+ };
566
+ </script>
567
+ <script src="../sorter.js"></script>
568
+ <script src="../block-navigation.js"></script>
569
+ </body>
570
+ </html>
571
+