@navios/di 0.9.1 → 1.0.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.
- package/CHANGELOG.md +17 -0
- package/README.md +28 -0
- package/coverage/block-navigation.js +1 -1
- package/coverage/clover.xml +1463 -3174
- package/coverage/coverage-final.json +56 -54
- package/coverage/index.html +179 -104
- package/coverage/sorter.js +21 -7
- package/coverage/src/{request-context-manager.mts.html → __tests__/gc/gc-test-utils.mts.html} +192 -231
- package/coverage/{lib → src/__tests__/gc}/index.html +25 -40
- package/coverage/src/container/abstract-container.mts.html +1066 -0
- package/coverage/src/container/container.mts.html +958 -0
- package/coverage/src/container/index.html +161 -0
- package/coverage/src/{testing → container}/index.mts.html +12 -9
- package/coverage/src/container/scoped-container.mts.html +907 -0
- package/coverage/src/decorators/factory.decorator.mts.html +68 -53
- package/coverage/src/decorators/index.html +34 -34
- package/coverage/src/decorators/index.mts.html +10 -10
- package/coverage/src/decorators/injectable.decorator.mts.html +144 -60
- package/coverage/src/enums/index.html +21 -21
- package/coverage/src/enums/index.mts.html +12 -12
- package/coverage/src/enums/injectable-scope.enum.mts.html +11 -8
- package/coverage/src/enums/injectable-type.enum.mts.html +10 -7
- package/coverage/src/errors/di-error.mts.html +380 -71
- package/coverage/src/errors/index.html +22 -127
- package/coverage/src/errors/index.mts.html +9 -33
- package/coverage/src/event-emitter.mts.html +35 -107
- package/coverage/src/index.html +14 -254
- package/coverage/src/index.mts.html +23 -50
- package/coverage/src/interfaces/container.interface.mts.html +370 -0
- package/coverage/src/interfaces/factory.interface.mts.html +12 -12
- package/coverage/src/interfaces/index.html +45 -30
- package/coverage/src/interfaces/index.mts.html +16 -13
- 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/internal/context/async-local-storage.browser.mts.html +142 -0
- package/coverage/src/internal/context/async-local-storage.mts.html +292 -0
- package/coverage/src/{factory-context.mts.html → internal/context/async-local-storage.types.mts.html} +17 -17
- package/coverage/src/internal/context/factory-context.mts.html +142 -0
- package/coverage/src/internal/context/index.html +221 -0
- package/coverage/src/internal/context/index.mts.html +100 -0
- package/coverage/src/{service-locator-instance-holder.mts.html → internal/context/resolution-context.mts.html} +114 -78
- package/coverage/src/internal/context/service-initialization-context.mts.html +214 -0
- package/coverage/src/internal/context/sync-local-storage.mts.html +244 -0
- package/coverage/src/internal/core/index.html +206 -0
- package/coverage/src/internal/core/index.mts.html +103 -0
- package/coverage/src/internal/core/instance-resolver.mts.html +2533 -0
- package/coverage/src/{request-context-holder.mts.html → internal/core/name-resolver.mts.html} +245 -260
- package/coverage/src/{container.mts.html → internal/core/scope-tracker.mts.html} +352 -310
- package/coverage/src/{service-instantiator.mts.html → internal/core/service-initializer.mts.html} +254 -176
- package/coverage/src/internal/core/service-invalidator.mts.html +955 -0
- package/coverage/src/internal/core/token-resolver.mts.html +451 -0
- package/coverage/src/internal/holder/holder-storage.interface.mts.html +451 -0
- package/coverage/src/internal/holder/index.html +161 -0
- package/coverage/src/internal/holder/index.mts.html +94 -0
- package/coverage/src/internal/holder/instance-holder.mts.html +406 -0
- package/coverage/src/{service-locator.mts.html → internal/holder/unified-storage.mts.html} +376 -379
- package/coverage/{lib/testing → src/internal}/index.html +26 -11
- package/coverage/src/internal/index.mts.html +100 -0
- package/coverage/src/internal/lifecycle/circular-detector.mts.html +364 -0
- package/coverage/src/internal/lifecycle/index.html +146 -0
- package/coverage/src/internal/lifecycle/index.mts.html +91 -0
- package/coverage/src/{service-locator-event-bus.mts.html → internal/lifecycle/lifecycle-event-bus.mts.html} +104 -80
- package/coverage/src/internal/stub-factory-class.mts.html +133 -0
- package/coverage/src/symbols/index.html +14 -14
- package/coverage/src/symbols/index.mts.html +9 -9
- package/coverage/src/symbols/injectable-token.mts.html +9 -3
- package/coverage/src/testing/index.html +32 -32
- package/coverage/src/testing/test-container.mts.html +1576 -139
- package/coverage/src/testing/unit-test-container.mts.html +1888 -0
- package/coverage/src/token/index.html +146 -0
- package/coverage/{lib/testing/index.d.mts.html → src/token/index.mts.html} +11 -11
- package/coverage/src/{injection-token.mts.html → token/injection-token.mts.html} +225 -111
- package/coverage/src/{base-instance-holder-manager.mts.html → token/registry.mts.html} +188 -269
- package/coverage/src/{injector.mts.html → utils/default-injectors.mts.html} +31 -31
- package/coverage/src/utils/get-injectable-token.mts.html +19 -22
- package/coverage/src/utils/get-injectors.mts.html +684 -177
- package/coverage/src/utils/index.html +36 -36
- package/coverage/src/utils/index.mts.html +18 -12
- package/coverage/src/utils/types.mts.html +26 -11
- package/docs/examples/basic-usage.mts +1 -1
- package/docs/examples/factory-pattern.mts +3 -3
- package/docs/examples/request-scope-example.mts +1 -1
- package/docs/examples/service-lifecycle.mts +1 -1
- package/lib/browser/internal/core/instance-resolver.d.mts.map +1 -1
- package/lib/browser/internal/core/instance-resolver.mjs.map +1 -1
- package/lib/browser/utils/get-injectors.mjs +9 -12
- package/lib/browser/utils/get-injectors.mjs.map +1 -1
- package/lib/{container-D-0Ho3qL.d.cts → container-D3j3KuD9.d.mts} +5 -289
- package/lib/container-D3j3KuD9.d.mts.map +1 -0
- package/lib/{container-8-z89TyQ.mjs → container-qgHMgGNG.mjs} +12 -239
- package/lib/container-qgHMgGNG.mjs.map +1 -0
- package/lib/{container-CNiqesCL.d.mts → container-r1KP4F-n.d.cts} +5 -289
- package/lib/container-r1KP4F-n.d.cts.map +1 -0
- package/lib/{container-CaY2fDuk.cjs → container-ycYJgTq7.cjs} +50 -331
- package/lib/container-ycYJgTq7.cjs.map +1 -0
- package/lib/factory.decorator-D4mem6YQ.cjs +21 -0
- package/lib/factory.decorator-D4mem6YQ.cjs.map +1 -0
- package/lib/factory.decorator-_IPWcwQn.mjs +16 -0
- package/lib/factory.decorator-_IPWcwQn.mjs.map +1 -0
- package/lib/index.cjs +14 -24
- package/lib/index.cjs.map +1 -1
- package/lib/index.d.cts +3 -52
- package/lib/index.d.cts.map +1 -1
- package/lib/index.d.mts +3 -52
- package/lib/index.d.mts.map +1 -1
- package/lib/index.mjs +3 -13
- package/lib/index.mjs.map +1 -1
- package/lib/injectable.decorator-BNfWpjr_.d.cts +56 -0
- package/lib/injectable.decorator-BNfWpjr_.d.cts.map +1 -0
- package/lib/injectable.decorator-Bc05hRQU.d.mts +56 -0
- package/lib/injectable.decorator-Bc05hRQU.d.mts.map +1 -0
- package/lib/injectable.decorator-CyPrBzBN.mjs +227 -0
- package/lib/injectable.decorator-CyPrBzBN.mjs.map +1 -0
- package/lib/injectable.decorator-DbpiDrg-.cjs +281 -0
- package/lib/injectable.decorator-DbpiDrg-.cjs.map +1 -0
- package/lib/legacy-compat/index.cjs +114 -0
- package/lib/legacy-compat/index.cjs.map +1 -0
- package/lib/legacy-compat/index.d.cts +63 -0
- package/lib/legacy-compat/index.d.cts.map +1 -0
- package/lib/legacy-compat/index.d.mts +63 -0
- package/lib/legacy-compat/index.d.mts.map +1 -0
- package/lib/legacy-compat/index.mjs +111 -0
- package/lib/legacy-compat/index.mjs.map +1 -0
- package/lib/registry-DKbKWFvJ.d.cts +290 -0
- package/lib/registry-DKbKWFvJ.d.cts.map +1 -0
- package/lib/registry-n8JhJoxm.d.mts +290 -0
- package/lib/registry-n8JhJoxm.d.mts.map +1 -0
- package/lib/testing/index.cjs +23 -22
- package/lib/testing/index.cjs.map +1 -1
- package/lib/testing/index.d.cts +2 -1
- package/lib/testing/index.d.cts.map +1 -1
- package/lib/testing/index.d.mts +2 -1
- package/lib/testing/index.d.mts.map +1 -1
- package/lib/testing/index.mjs +2 -1
- package/lib/testing/index.mjs.map +1 -1
- package/package.json +11 -1
- package/project.json +8 -0
- package/src/__tests__/gc/basic-container.spec.mts +358 -0
- package/src/__tests__/gc/circular-dependencies.spec.mts +501 -0
- package/src/__tests__/gc/gc-test-utils.mts +136 -0
- package/src/__tests__/gc/memory-pressure.spec.mts +542 -0
- package/src/__tests__/gc/scoped-container.spec.mts +444 -0
- package/src/__tests__/gc/transient-services.spec.mts +326 -0
- package/src/__tests__/get-injectors.spec.mts +166 -0
- package/src/__tests__/scope-upgrade.spec.mts +0 -18
- package/src/internal/core/instance-resolver.mts +0 -1
- package/src/legacy-compat/context-compat.mts +95 -0
- package/src/legacy-compat/factory.decorator.mts +37 -0
- package/src/legacy-compat/index.mts +16 -0
- package/src/legacy-compat/injectable.decorator.mts +41 -0
- package/src/utils/get-injectors.mts +36 -32
- package/tsdown.config.mts +1 -1
- package/vitest.config.mts +3 -7
- package/coverage/docs/examples/basic-usage.mts.html +0 -376
- package/coverage/docs/examples/factory-pattern.mts.html +0 -1039
- package/coverage/docs/examples/index.html +0 -176
- package/coverage/docs/examples/injection-tokens.mts.html +0 -760
- package/coverage/docs/examples/request-scope-example.mts.html +0 -847
- package/coverage/docs/examples/service-lifecycle.mts.html +0 -1162
- package/coverage/lib/_tsup-dts-rollup.d.mts.html +0 -3445
- package/coverage/lib/index.d.mts.html +0 -313
- package/coverage/src/errors/errors.enum.mts.html +0 -118
- package/coverage/src/errors/factory-not-found.mts.html +0 -118
- package/coverage/src/errors/factory-token-not-resolved.mts.html +0 -118
- package/coverage/src/errors/instance-destroying.mts.html +0 -118
- package/coverage/src/errors/instance-expired.mts.html +0 -118
- package/coverage/src/errors/instance-not-found.mts.html +0 -118
- package/coverage/src/errors/unknown-error.mts.html +0 -118
- package/coverage/src/instance-resolver.mts.html +0 -1762
- package/coverage/src/registry.mts.html +0 -247
- package/coverage/src/service-invalidator.mts.html +0 -1372
- package/coverage/src/service-locator-manager.mts.html +0 -340
- package/coverage/src/token-processor.mts.html +0 -607
- package/coverage/src/utils/defer.mts.html +0 -118
- package/lib/container-8-z89TyQ.mjs.map +0 -1
- package/lib/container-CNiqesCL.d.mts.map +0 -1
- package/lib/container-CaY2fDuk.cjs.map +0 -1
- package/lib/container-D-0Ho3qL.d.cts.map +0 -1
|
@@ -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">77.77% </span>
|
|
27
27
|
<span class="quiet">Statements</span>
|
|
28
|
-
<span class='fraction'>
|
|
28
|
+
<span class='fraction'>7/9</span>
|
|
29
29
|
</div>
|
|
30
30
|
|
|
31
31
|
|
|
32
32
|
<div class='fl pad1y space-right2'>
|
|
33
|
-
<span class="strong">
|
|
33
|
+
<span class="strong">87.5% </span>
|
|
34
34
|
<span class="quiet">Branches</span>
|
|
35
|
-
<span class='fraction'>
|
|
35
|
+
<span class='fraction'>14/16</span>
|
|
36
36
|
</div>
|
|
37
37
|
|
|
38
38
|
|
|
39
39
|
<div class='fl pad1y space-right2'>
|
|
40
40
|
<span class="strong">100% </span>
|
|
41
41
|
<span class="quiet">Functions</span>
|
|
42
|
-
<span class='fraction'>
|
|
42
|
+
<span class='fraction'>2/2</span>
|
|
43
43
|
</div>
|
|
44
44
|
|
|
45
45
|
|
|
46
46
|
<div class='fl pad1y space-right2'>
|
|
47
|
-
<span class="strong">
|
|
47
|
+
<span class="strong">77.77% </span>
|
|
48
48
|
<span class="quiet">Lines</span>
|
|
49
|
-
<span class='fraction'>
|
|
49
|
+
<span class='fraction'>7/9</span>
|
|
50
50
|
</div>
|
|
51
51
|
|
|
52
52
|
|
|
@@ -61,7 +61,7 @@
|
|
|
61
61
|
</div>
|
|
62
62
|
</template>
|
|
63
63
|
</div>
|
|
64
|
-
<div class='status-line
|
|
64
|
+
<div class='status-line medium'></div>
|
|
65
65
|
<pre><table class="coverage">
|
|
66
66
|
<tr><td class="line-count quiet"><a name='L1'></a><a href='#L1'>1</a>
|
|
67
67
|
<a name='L2'></a><a href='#L2'>2</a>
|
|
@@ -166,7 +166,35 @@
|
|
|
166
166
|
<a name='L101'></a><a href='#L101'>101</a>
|
|
167
167
|
<a name='L102'></a><a href='#L102'>102</a>
|
|
168
168
|
<a name='L103'></a><a href='#L103'>103</a>
|
|
169
|
-
<a name='L104'></a><a href='#L104'>104</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></td><td class="line-coverage quiet"><span class="cline-any cline-neutral"> </span>
|
|
170
198
|
<span class="cline-any cline-neutral"> </span>
|
|
171
199
|
<span class="cline-any cline-neutral"> </span>
|
|
172
200
|
<span class="cline-any cline-neutral"> </span>
|
|
@@ -180,10 +208,6 @@
|
|
|
180
208
|
<span class="cline-any cline-neutral"> </span>
|
|
181
209
|
<span class="cline-any cline-neutral"> </span>
|
|
182
210
|
<span class="cline-any cline-neutral"> </span>
|
|
183
|
-
<span class="cline-any cline-yes">1x</span>
|
|
184
|
-
<span class="cline-any cline-yes">1x</span>
|
|
185
|
-
<span class="cline-any cline-yes">1x</span>
|
|
186
|
-
<span class="cline-any cline-yes">1x</span>
|
|
187
211
|
<span class="cline-any cline-neutral"> </span>
|
|
188
212
|
<span class="cline-any cline-neutral"> </span>
|
|
189
213
|
<span class="cline-any cline-neutral"> </span>
|
|
@@ -241,35 +265,67 @@
|
|
|
241
265
|
<span class="cline-any cline-neutral"> </span>
|
|
242
266
|
<span class="cline-any cline-neutral"> </span>
|
|
243
267
|
<span class="cline-any cline-neutral"> </span>
|
|
244
|
-
<span class="cline-any cline-
|
|
245
|
-
<span class="cline-any cline-
|
|
246
|
-
<span class="cline-any cline-
|
|
247
|
-
<span class="cline-any cline-
|
|
248
|
-
<span class="cline-any cline-
|
|
249
|
-
<span class="cline-any cline-
|
|
250
|
-
<span class="cline-any cline-
|
|
251
|
-
<span class="cline-any cline-
|
|
252
|
-
<span class="cline-any cline-
|
|
253
|
-
<span class="cline-any cline-
|
|
254
|
-
<span class="cline-any cline-
|
|
255
|
-
<span class="cline-any cline-
|
|
256
|
-
<span class="cline-any cline-
|
|
257
|
-
<span class="cline-any cline-
|
|
258
|
-
<span class="cline-any cline-
|
|
268
|
+
<span class="cline-any cline-neutral"> </span>
|
|
269
|
+
<span class="cline-any cline-neutral"> </span>
|
|
270
|
+
<span class="cline-any cline-neutral"> </span>
|
|
271
|
+
<span class="cline-any cline-neutral"> </span>
|
|
272
|
+
<span class="cline-any cline-neutral"> </span>
|
|
273
|
+
<span class="cline-any cline-neutral"> </span>
|
|
274
|
+
<span class="cline-any cline-neutral"> </span>
|
|
275
|
+
<span class="cline-any cline-neutral"> </span>
|
|
276
|
+
<span class="cline-any cline-neutral"> </span>
|
|
277
|
+
<span class="cline-any cline-neutral"> </span>
|
|
278
|
+
<span class="cline-any cline-neutral"> </span>
|
|
279
|
+
<span class="cline-any cline-neutral"> </span>
|
|
280
|
+
<span class="cline-any cline-neutral"> </span>
|
|
281
|
+
<span class="cline-any cline-neutral"> </span>
|
|
282
|
+
<span class="cline-any cline-neutral"> </span>
|
|
283
|
+
<span class="cline-any cline-neutral"> </span>
|
|
284
|
+
<span class="cline-any cline-neutral"> </span>
|
|
285
|
+
<span class="cline-any cline-neutral"> </span>
|
|
286
|
+
<span class="cline-any cline-neutral"> </span>
|
|
287
|
+
<span class="cline-any cline-neutral"> </span>
|
|
288
|
+
<span class="cline-any cline-neutral"> </span>
|
|
289
|
+
<span class="cline-any cline-neutral"> </span>
|
|
290
|
+
<span class="cline-any cline-neutral"> </span>
|
|
291
|
+
<span class="cline-any cline-neutral"> </span>
|
|
292
|
+
<span class="cline-any cline-neutral"> </span>
|
|
293
|
+
<span class="cline-any cline-neutral"> </span>
|
|
294
|
+
<span class="cline-any cline-neutral"> </span>
|
|
295
|
+
<span class="cline-any cline-neutral"> </span>
|
|
296
|
+
<span class="cline-any cline-neutral"> </span>
|
|
297
|
+
<span class="cline-any cline-neutral"> </span>
|
|
298
|
+
<span class="cline-any cline-neutral"> </span>
|
|
299
|
+
<span class="cline-any cline-neutral"> </span>
|
|
300
|
+
<span class="cline-any cline-neutral"> </span>
|
|
301
|
+
<span class="cline-any cline-neutral"> </span>
|
|
302
|
+
<span class="cline-any cline-yes">419x</span>
|
|
303
|
+
<span class="cline-any cline-neutral"> </span>
|
|
304
|
+
<span class="cline-any cline-neutral"> </span>
|
|
305
|
+
<span class="cline-any cline-neutral"> </span>
|
|
306
|
+
<span class="cline-any cline-yes">419x</span>
|
|
307
|
+
<span class="cline-any cline-neutral"> </span>
|
|
308
|
+
<span class="cline-any cline-neutral"> </span>
|
|
309
|
+
<span class="cline-any cline-neutral"> </span>
|
|
259
310
|
<span class="cline-any cline-no"> </span>
|
|
311
|
+
<span class="cline-any cline-neutral"> </span>
|
|
312
|
+
<span class="cline-any cline-yes">419x</span>
|
|
260
313
|
<span class="cline-any cline-no"> </span>
|
|
261
|
-
<span class="cline-any cline-yes">264x</span>
|
|
262
|
-
<span class="cline-any cline-yes">264x</span>
|
|
263
314
|
<span class="cline-any cline-neutral"> </span>
|
|
264
|
-
<span class="cline-any cline-yes">264x</span>
|
|
265
315
|
<span class="cline-any cline-neutral"> </span>
|
|
266
316
|
<span class="cline-any cline-neutral"> </span>
|
|
267
|
-
<span class="cline-any cline-yes">264x</span>
|
|
268
317
|
<span class="cline-any cline-neutral"> </span>
|
|
269
|
-
<span class="cline-any cline-yes">
|
|
270
|
-
<span class="cline-any cline-
|
|
271
|
-
<span class="cline-any cline-yes">
|
|
272
|
-
<span class="cline-any cline-neutral"> </span
|
|
318
|
+
<span class="cline-any cline-yes">419x</span>
|
|
319
|
+
<span class="cline-any cline-neutral"> </span>
|
|
320
|
+
<span class="cline-any cline-yes">419x</span>
|
|
321
|
+
<span class="cline-any cline-neutral"> </span>
|
|
322
|
+
<span class="cline-any cline-neutral"> </span>
|
|
323
|
+
<span class="cline-any cline-yes">419x</span>
|
|
324
|
+
<span class="cline-any cline-neutral"> </span>
|
|
325
|
+
<span class="cline-any cline-yes">419x</span>
|
|
326
|
+
<span class="cline-any cline-neutral"> </span>
|
|
327
|
+
<span class="cline-any cline-neutral"> </span>
|
|
328
|
+
<span class="cline-any cline-neutral"> </span></td><td class="text"><pre class="prettyprint lang-js">import type { z } from 'zod/v4'
|
|
273
329
|
|
|
274
330
|
import type {
|
|
275
331
|
BaseInjectionTokenSchemaType,
|
|
@@ -279,56 +335,79 @@ import type {
|
|
|
279
335
|
ClassTypeWithInstanceAndArgument,
|
|
280
336
|
ClassTypeWithInstanceAndOptionalArgument,
|
|
281
337
|
ClassTypeWithOptionalArgument,
|
|
338
|
+
ClassTypeWithoutArguments,
|
|
339
|
+
InjectionTokenSchemaType,
|
|
282
340
|
OptionalInjectionTokenSchemaType,
|
|
283
|
-
} from '../injection-token.mjs'
|
|
284
|
-
import type { Registry } from '../registry.mjs'
|
|
341
|
+
} from '../token/injection-token.mjs'
|
|
342
|
+
import type { Registry } from '../token/registry.mjs'
|
|
285
343
|
|
|
286
344
|
import { InjectableScope, InjectableType } from '../enums/index.mjs'
|
|
287
|
-
import { InjectionToken } from '../injection-token.mjs'
|
|
288
|
-
import { globalRegistry } from '../registry.mjs'
|
|
289
345
|
import { InjectableTokenMeta } from '../symbols/index.mjs'
|
|
346
|
+
import { InjectionToken } from '../token/injection-token.mjs'
|
|
347
|
+
import { globalRegistry } from '../token/registry.mjs'
|
|
290
348
|
|
|
291
349
|
export interface InjectableOptions {
|
|
292
350
|
scope?: InjectableScope
|
|
293
351
|
token?: InjectionToken<any, any>
|
|
352
|
+
schema?: InjectionTokenSchemaType
|
|
294
353
|
registry?: Registry
|
|
354
|
+
priority?: number
|
|
295
355
|
}
|
|
356
|
+
|
|
296
357
|
// #1 Simple constructorless class
|
|
297
|
-
export function Injectable(): <T extends
|
|
358
|
+
export function Injectable(): <T extends ClassTypeWithoutArguments>(
|
|
298
359
|
target: T,
|
|
299
360
|
context?: ClassDecoratorContext,
|
|
300
361
|
) => T
|
|
301
362
|
export function Injectable(options: {
|
|
302
363
|
scope?: InjectableScope
|
|
303
364
|
registry: Registry
|
|
304
|
-
|
|
365
|
+
priority?: number
|
|
366
|
+
}): <T extends ClassTypeWithoutArguments>(
|
|
367
|
+
target: T,
|
|
368
|
+
context?: ClassDecoratorContext,
|
|
369
|
+
) => T
|
|
305
370
|
export function Injectable(options: {
|
|
306
371
|
scope: InjectableScope
|
|
307
|
-
|
|
372
|
+
priority?: number
|
|
373
|
+
}): <T extends ClassTypeWithoutArguments>(
|
|
374
|
+
target: T,
|
|
375
|
+
context?: ClassDecoratorContext,
|
|
376
|
+
) => T
|
|
377
|
+
// #2 Class with schema
|
|
378
|
+
export function Injectable<Schema extends InjectionTokenSchemaType>(options: {
|
|
379
|
+
scope?: InjectableScope
|
|
380
|
+
schema: Schema
|
|
381
|
+
registry?: Registry
|
|
382
|
+
priority?: number
|
|
383
|
+
}): <T extends ClassTypeWithArgument<z.output<Schema>>>(
|
|
384
|
+
target: T,
|
|
385
|
+
context?: ClassDecoratorContext,
|
|
386
|
+
) => T
|
|
308
387
|
|
|
309
388
|
// #3 Class with typeless token and schema
|
|
310
389
|
export function Injectable<Type, Schema>(options: {
|
|
311
390
|
scope?: InjectableScope
|
|
312
391
|
token: InjectionToken<Type, Schema>
|
|
313
392
|
registry?: Registry
|
|
314
|
-
|
|
393
|
+
priority?: number
|
|
394
|
+
}): Schema extends BaseInjectionTokenSchemaType
|
|
315
395
|
? Type extends undefined
|
|
316
|
-
? <T extends ClassTypeWithArgument<z.output<Schema>>>(
|
|
396
|
+
? <T extends ClassTypeWithArgument<z.output<Schema>>>(
|
|
317
397
|
target: T,
|
|
318
398
|
context?: ClassDecoratorContext,
|
|
319
399
|
) => T
|
|
320
|
-
: <T extends ClassTypeWithInstanceAndArgument<Type, z.output<Schema>>>(
|
|
400
|
+
: <T extends ClassTypeWithInstanceAndArgument<Type, z.output<Schema>>>(
|
|
321
401
|
target: T,
|
|
322
402
|
context?: ClassDecoratorContext,
|
|
323
403
|
) => T
|
|
324
|
-
: Schema extends OptionalInjectionTokenSchemaType
|
|
404
|
+
: Schema extends OptionalInjectionTokenSchemaType
|
|
325
405
|
? Type extends undefined
|
|
326
|
-
? <T extends ClassTypeWithOptionalArgument<z.output<Schema>>>(
|
|
406
|
+
? <T extends ClassTypeWithOptionalArgument<z.output<Schema>>>(
|
|
327
407
|
target: T,
|
|
328
408
|
context?: ClassDecoratorContext,
|
|
329
409
|
) => T
|
|
330
410
|
: <
|
|
331
|
-
// #3.2.2 Typed token
|
|
332
411
|
T extends ClassTypeWithInstanceAndOptionalArgument<
|
|
333
412
|
Type,
|
|
334
413
|
z.output<Schema>
|
|
@@ -337,34 +416,39 @@ export function Injectable<Type, Schema>(options: {
|
|
|
337
416
|
target: T,
|
|
338
417
|
context?: ClassDecoratorContext,
|
|
339
418
|
) => T
|
|
340
|
-
: Schema extends undefined
|
|
341
|
-
? <R extends ClassTypeWithInstance<Type>>(
|
|
419
|
+
: Schema extends undefined
|
|
420
|
+
? <R extends ClassTypeWithInstance<Type>>(
|
|
342
421
|
target: R,
|
|
343
422
|
context?: ClassDecoratorContext,
|
|
344
423
|
) => R
|
|
345
|
-
: never
|
|
424
|
+
: never
|
|
346
425
|
|
|
347
426
|
export function Injectable({
|
|
348
427
|
scope = InjectableScope.Singleton,
|
|
349
428
|
token,
|
|
429
|
+
schema,
|
|
350
430
|
registry = globalRegistry,
|
|
431
|
+
priority = 0,
|
|
351
432
|
}: InjectableOptions = {}) {
|
|
352
433
|
return <T extends ClassType>(
|
|
353
434
|
target: T,
|
|
354
435
|
context?: ClassDecoratorContext,
|
|
355
436
|
): T => {
|
|
356
|
-
if (
|
|
437
|
+
<span class="missing-if-branch" title="if path not taken" >I</span>if (
|
|
357
438
|
(context && context.kind !== 'class') ||
|
|
358
439
|
(target instanceof Function && !context)
|
|
359
|
-
)
|
|
440
|
+
) {
|
|
441
|
+
<span class="cstat-no" title="statement not covered" > throw new Error('[DI] @Injectable decorator can only be used on classes.')</span>
|
|
442
|
+
}
|
|
443
|
+
<span class="missing-if-branch" title="if path not taken" >I</span>if (schema && token) {
|
|
360
444
|
<span class="cstat-no" title="statement not covered" > throw new Error(</span>
|
|
361
|
-
|
|
362
|
-
|
|
363
|
-
|
|
445
|
+
'[DI] @Injectable decorator cannot have both a token and a schema',
|
|
446
|
+
)
|
|
447
|
+
}
|
|
364
448
|
let injectableToken: InjectionToken<any, any> =
|
|
365
|
-
token ?? InjectionToken.create(target)
|
|
449
|
+
token ?? InjectionToken.create(target, schema as InjectionTokenSchemaType)
|
|
366
450
|
|
|
367
|
-
registry.set(injectableToken, scope, target, InjectableType.Class)
|
|
451
|
+
registry.set(injectableToken, scope, target, InjectableType.Class, priority)
|
|
368
452
|
|
|
369
453
|
// @ts-expect-error
|
|
370
454
|
target[InjectableTokenMeta] = injectableToken
|
|
@@ -379,7 +463,7 @@ export function Injectable({
|
|
|
379
463
|
<div class='footer quiet pad2 space-top1 center small'>
|
|
380
464
|
Code coverage generated by
|
|
381
465
|
<a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
|
|
382
|
-
at
|
|
466
|
+
at 2026-01-08T12:15:46.476Z
|
|
383
467
|
</div>
|
|
384
468
|
<script src="../../prettify.js"></script>
|
|
385
469
|
<script>
|
|
@@ -32,21 +32,21 @@
|
|
|
32
32
|
<div class='fl pad1y space-right2'>
|
|
33
33
|
<span class="strong">100% </span>
|
|
34
34
|
<span class="quiet">Branches</span>
|
|
35
|
-
<span class='fraction'>
|
|
35
|
+
<span class='fraction'>4/4</span>
|
|
36
36
|
</div>
|
|
37
37
|
|
|
38
38
|
|
|
39
39
|
<div class='fl pad1y space-right2'>
|
|
40
40
|
<span class="strong">100% </span>
|
|
41
41
|
<span class="quiet">Functions</span>
|
|
42
|
-
<span class='fraction'>
|
|
42
|
+
<span class='fraction'>2/2</span>
|
|
43
43
|
</div>
|
|
44
44
|
|
|
45
45
|
|
|
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'>
|
|
49
|
+
<span class='fraction'>7/7</span>
|
|
50
50
|
</div>
|
|
51
51
|
|
|
52
52
|
|
|
@@ -79,18 +79,18 @@
|
|
|
79
79
|
</tr>
|
|
80
80
|
</thead>
|
|
81
81
|
<tbody><tr>
|
|
82
|
-
<td class="file
|
|
83
|
-
<td data-value="
|
|
84
|
-
<div class="chart"><div class="cover-fill
|
|
82
|
+
<td class="file empty" data-value="index.mts"><a href="index.mts.html">index.mts</a></td>
|
|
83
|
+
<td data-value="0" class="pic empty">
|
|
84
|
+
<div class="chart"><div class="cover-fill" style="width: 0%"></div><div class="cover-empty" style="width: 100%"></div></div>
|
|
85
85
|
</td>
|
|
86
|
-
<td data-value="
|
|
87
|
-
<td data-value="
|
|
88
|
-
<td data-value="
|
|
89
|
-
<td data-value="0" class="abs
|
|
90
|
-
<td data-value="
|
|
91
|
-
<td data-value="0" class="abs
|
|
92
|
-
<td data-value="
|
|
93
|
-
<td data-value="
|
|
86
|
+
<td data-value="0" class="pct empty">0%</td>
|
|
87
|
+
<td data-value="0" class="abs empty">0/0</td>
|
|
88
|
+
<td data-value="0" class="pct empty">0%</td>
|
|
89
|
+
<td data-value="0" class="abs empty">0/0</td>
|
|
90
|
+
<td data-value="0" class="pct empty">0%</td>
|
|
91
|
+
<td data-value="0" class="abs empty">0/0</td>
|
|
92
|
+
<td data-value="0" class="pct empty">0%</td>
|
|
93
|
+
<td data-value="0" class="abs empty">0/0</td>
|
|
94
94
|
</tr>
|
|
95
95
|
|
|
96
96
|
<tr>
|
|
@@ -99,11 +99,11 @@
|
|
|
99
99
|
<div class="chart"><div class="cover-fill cover-full" style="width: 100%"></div><div class="cover-empty" style="width: 0%"></div></div>
|
|
100
100
|
</td>
|
|
101
101
|
<td data-value="100" class="pct high">100%</td>
|
|
102
|
-
<td data-value="
|
|
102
|
+
<td data-value="5" class="abs high">5/5</td>
|
|
103
103
|
<td data-value="100" class="pct high">100%</td>
|
|
104
|
-
<td data-value="
|
|
104
|
+
<td data-value="2" class="abs high">2/2</td>
|
|
105
105
|
<td data-value="100" class="pct high">100%</td>
|
|
106
|
-
<td data-value="
|
|
106
|
+
<td data-value="1" class="abs high">1/1</td>
|
|
107
107
|
<td data-value="100" class="pct high">100%</td>
|
|
108
108
|
<td data-value="4" class="abs high">4/4</td>
|
|
109
109
|
</tr>
|
|
@@ -114,11 +114,11 @@
|
|
|
114
114
|
<div class="chart"><div class="cover-fill cover-full" style="width: 100%"></div><div class="cover-empty" style="width: 0%"></div></div>
|
|
115
115
|
</td>
|
|
116
116
|
<td data-value="100" class="pct high">100%</td>
|
|
117
|
-
<td data-value="
|
|
117
|
+
<td data-value="4" class="abs high">4/4</td>
|
|
118
118
|
<td data-value="100" class="pct high">100%</td>
|
|
119
|
-
<td data-value="
|
|
119
|
+
<td data-value="2" class="abs high">2/2</td>
|
|
120
120
|
<td data-value="100" class="pct high">100%</td>
|
|
121
|
-
<td data-value="
|
|
121
|
+
<td data-value="1" class="abs high">1/1</td>
|
|
122
122
|
<td data-value="100" class="pct high">100%</td>
|
|
123
123
|
<td data-value="3" class="abs high">3/3</td>
|
|
124
124
|
</tr>
|
|
@@ -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
|
|
134
|
+
at 2026-01-08T12:15:46.476Z
|
|
135
135
|
</div>
|
|
136
136
|
<script src="../../prettify.js"></script>
|
|
137
137
|
<script>
|
|
@@ -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">0% </span>
|
|
27
27
|
<span class="quiet">Statements</span>
|
|
28
|
-
<span class='fraction'>
|
|
28
|
+
<span class='fraction'>0/0</span>
|
|
29
29
|
</div>
|
|
30
30
|
|
|
31
31
|
|
|
32
32
|
<div class='fl pad1y space-right2'>
|
|
33
|
-
<span class="strong">
|
|
33
|
+
<span class="strong">0% </span>
|
|
34
34
|
<span class="quiet">Branches</span>
|
|
35
35
|
<span class='fraction'>0/0</span>
|
|
36
36
|
</div>
|
|
37
37
|
|
|
38
38
|
|
|
39
39
|
<div class='fl pad1y space-right2'>
|
|
40
|
-
<span class="strong">
|
|
40
|
+
<span class="strong">0% </span>
|
|
41
41
|
<span class="quiet">Functions</span>
|
|
42
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">
|
|
47
|
+
<span class="strong">0% </span>
|
|
48
48
|
<span class="quiet">Lines</span>
|
|
49
|
-
<span class='fraction'>
|
|
49
|
+
<span class='fraction'>0/0</span>
|
|
50
50
|
</div>
|
|
51
51
|
|
|
52
52
|
|
|
@@ -61,14 +61,14 @@
|
|
|
61
61
|
</div>
|
|
62
62
|
</template>
|
|
63
63
|
</div>
|
|
64
|
-
<div class='status-line
|
|
64
|
+
<div class='status-line low'></div>
|
|
65
65
|
<pre><table class="coverage">
|
|
66
66
|
<tr><td class="line-count quiet"><a name='L1'></a><a href='#L1'>1</a>
|
|
67
67
|
<a name='L2'></a><a href='#L2'>2</a>
|
|
68
|
-
<a name='L3'></a><a href='#L3'>3</a></td><td class="line-coverage quiet"><span class="cline-any cline-
|
|
69
|
-
<span class="cline-any cline-
|
|
70
|
-
<span class="cline-any cline-neutral"> </span></td><td class="text"><pre class="prettyprint lang-js">export
|
|
71
|
-
export
|
|
68
|
+
<a name='L3'></a><a href='#L3'>3</a></td><td class="line-coverage quiet"><span class="cline-any cline-neutral"> </span>
|
|
69
|
+
<span class="cline-any cline-neutral"> </span>
|
|
70
|
+
<span class="cline-any cline-neutral"> </span></td><td class="text"><pre class="prettyprint lang-js">export { InjectableScope } from './injectable-scope.enum.mjs'
|
|
71
|
+
export { InjectableType } from './injectable-type.enum.mjs'
|
|
72
72
|
</pre></td></tr></table></pre>
|
|
73
73
|
|
|
74
74
|
<div class='push'></div><!-- for sticky footer -->
|
|
@@ -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
|
|
79
|
+
at 2026-01-08T12:15:46.476Z
|
|
80
80
|
</div>
|
|
81
81
|
<script src="../../prettify.js"></script>
|
|
82
82
|
<script>
|
|
@@ -25,21 +25,21 @@
|
|
|
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'>
|
|
28
|
+
<span class='fraction'>5/5</span>
|
|
29
29
|
</div>
|
|
30
30
|
|
|
31
31
|
|
|
32
32
|
<div class='fl pad1y space-right2'>
|
|
33
33
|
<span class="strong">100% </span>
|
|
34
34
|
<span class="quiet">Branches</span>
|
|
35
|
-
<span class='fraction'>
|
|
35
|
+
<span class='fraction'>2/2</span>
|
|
36
36
|
</div>
|
|
37
37
|
|
|
38
38
|
|
|
39
39
|
<div class='fl pad1y space-right2'>
|
|
40
40
|
<span class="strong">100% </span>
|
|
41
41
|
<span class="quiet">Functions</span>
|
|
42
|
-
<span class='fraction'>
|
|
42
|
+
<span class='fraction'>1/1</span>
|
|
43
43
|
</div>
|
|
44
44
|
|
|
45
45
|
|
|
@@ -77,19 +77,21 @@
|
|
|
77
77
|
<a name='L12'></a><a href='#L12'>12</a>
|
|
78
78
|
<a name='L13'></a><a href='#L13'>13</a>
|
|
79
79
|
<a name='L14'></a><a href='#L14'>14</a>
|
|
80
|
-
<a name='L15'></a><a href='#L15'>15</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">23x</span>
|
|
82
|
+
<span class="cline-any cline-neutral"> </span>
|
|
81
83
|
<span class="cline-any cline-neutral"> </span>
|
|
82
84
|
<span class="cline-any cline-neutral"> </span>
|
|
85
|
+
<span class="cline-any cline-yes">23x</span>
|
|
83
86
|
<span class="cline-any cline-neutral"> </span>
|
|
84
|
-
<span class="cline-any cline-yes">1x</span>
|
|
85
87
|
<span class="cline-any cline-neutral"> </span>
|
|
86
88
|
<span class="cline-any cline-neutral"> </span>
|
|
89
|
+
<span class="cline-any cline-yes">23x</span>
|
|
87
90
|
<span class="cline-any cline-neutral"> </span>
|
|
88
|
-
<span class="cline-any cline-yes">1x</span>
|
|
89
91
|
<span class="cline-any cline-neutral"> </span>
|
|
90
92
|
<span class="cline-any cline-neutral"> </span>
|
|
93
|
+
<span class="cline-any cline-yes">23x</span>
|
|
91
94
|
<span class="cline-any cline-neutral"> </span>
|
|
92
|
-
<span class="cline-any cline-yes">1x</span>
|
|
93
95
|
<span class="cline-any cline-neutral"> </span>
|
|
94
96
|
<span class="cline-any cline-neutral"> </span></td><td class="text"><pre class="prettyprint lang-js">export enum InjectableScope {
|
|
95
97
|
/**
|
|
@@ -105,6 +107,7 @@
|
|
|
105
107
|
*/
|
|
106
108
|
Request = 'Request',
|
|
107
109
|
}
|
|
110
|
+
|
|
108
111
|
</pre></td></tr></table></pre>
|
|
109
112
|
|
|
110
113
|
<div class='push'></div><!-- for sticky footer -->
|
|
@@ -112,7 +115,7 @@
|
|
|
112
115
|
<div class='footer quiet pad2 space-top1 center small'>
|
|
113
116
|
Code coverage generated by
|
|
114
117
|
<a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
|
|
115
|
-
at
|
|
118
|
+
at 2026-01-08T12:15:46.476Z
|
|
116
119
|
</div>
|
|
117
120
|
<script src="../../prettify.js"></script>
|
|
118
121
|
<script>
|
|
@@ -25,21 +25,21 @@
|
|
|
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'>
|
|
28
|
+
<span class='fraction'>4/4</span>
|
|
29
29
|
</div>
|
|
30
30
|
|
|
31
31
|
|
|
32
32
|
<div class='fl pad1y space-right2'>
|
|
33
33
|
<span class="strong">100% </span>
|
|
34
34
|
<span class="quiet">Branches</span>
|
|
35
|
-
<span class='fraction'>
|
|
35
|
+
<span class='fraction'>2/2</span>
|
|
36
36
|
</div>
|
|
37
37
|
|
|
38
38
|
|
|
39
39
|
<div class='fl pad1y space-right2'>
|
|
40
40
|
<span class="strong">100% </span>
|
|
41
41
|
<span class="quiet">Functions</span>
|
|
42
|
-
<span class='fraction'>
|
|
42
|
+
<span class='fraction'>1/1</span>
|
|
43
43
|
</div>
|
|
44
44
|
|
|
45
45
|
|
|
@@ -67,14 +67,17 @@
|
|
|
67
67
|
<a name='L2'></a><a href='#L2'>2</a>
|
|
68
68
|
<a name='L3'></a><a href='#L3'>3</a>
|
|
69
69
|
<a name='L4'></a><a href='#L4'>4</a>
|
|
70
|
-
<a name='L5'></a><a href='#L5'>5</a
|
|
71
|
-
<span class="cline-any cline-yes">
|
|
72
|
-
<span class="cline-any cline-yes">
|
|
70
|
+
<a name='L5'></a><a href='#L5'>5</a>
|
|
71
|
+
<a name='L6'></a><a href='#L6'>6</a></td><td class="line-coverage quiet"><span class="cline-any cline-yes">23x</span>
|
|
72
|
+
<span class="cline-any cline-yes">23x</span>
|
|
73
|
+
<span class="cline-any cline-yes">23x</span>
|
|
74
|
+
<span class="cline-any cline-neutral"> </span>
|
|
73
75
|
<span class="cline-any cline-neutral"> </span>
|
|
74
76
|
<span class="cline-any cline-neutral"> </span></td><td class="text"><pre class="prettyprint lang-js">export enum InjectableType {
|
|
75
77
|
Class = 'Class',
|
|
76
78
|
Factory = 'Factory',
|
|
77
79
|
}
|
|
80
|
+
|
|
78
81
|
</pre></td></tr></table></pre>
|
|
79
82
|
|
|
80
83
|
<div class='push'></div><!-- for sticky footer -->
|
|
@@ -82,7 +85,7 @@
|
|
|
82
85
|
<div class='footer quiet pad2 space-top1 center small'>
|
|
83
86
|
Code coverage generated by
|
|
84
87
|
<a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
|
|
85
|
-
at
|
|
88
|
+
at 2026-01-08T12:15:46.476Z
|
|
86
89
|
</div>
|
|
87
90
|
<script src="../../prettify.js"></script>
|
|
88
91
|
<script>
|