ditox 2.3.0 → 2.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 (49) hide show
  1. package/LICENSE +1 -1
  2. package/README.md +134 -129
  3. package/dist/browser/index.d.ts +22 -1
  4. package/dist/browser/index.js +1 -1
  5. package/dist/cjs/{ditox.d.ts → container.d.ts} +1 -36
  6. package/dist/cjs/{ditox.js → container.js} +7 -22
  7. package/dist/cjs/container.js.map +1 -0
  8. package/dist/cjs/index.d.ts +4 -2
  9. package/dist/cjs/index.js +6 -5
  10. package/dist/cjs/index.js.map +1 -1
  11. package/dist/cjs/modules.d.ts +2 -1
  12. package/dist/cjs/modules.js +2 -2
  13. package/dist/cjs/modules.js.map +1 -1
  14. package/dist/cjs/tokens.d.ts +56 -0
  15. package/dist/cjs/tokens.js +20 -0
  16. package/dist/cjs/tokens.js.map +1 -0
  17. package/dist/cjs/utils.d.ts +2 -1
  18. package/dist/cjs/utils.js.map +1 -1
  19. package/dist/esm/{ditox.d.ts → container.d.ts} +1 -36
  20. package/dist/esm/{ditox.js → container.js} +2 -15
  21. package/dist/esm/container.js.map +1 -0
  22. package/dist/esm/index.d.ts +4 -2
  23. package/dist/esm/index.js +2 -1
  24. package/dist/esm/index.js.map +1 -1
  25. package/dist/esm/modules.d.ts +2 -1
  26. package/dist/esm/modules.js +1 -1
  27. package/dist/esm/modules.js.map +1 -1
  28. package/dist/esm/tokens.d.ts +56 -0
  29. package/dist/esm/tokens.js +15 -0
  30. package/dist/esm/tokens.js.map +1 -0
  31. package/dist/esm/utils.d.ts +2 -1
  32. package/dist/esm/utils.js.map +1 -1
  33. package/dist/umd/index.d.ts +22 -1
  34. package/dist/umd/index.js +1 -1
  35. package/package.json +11 -6
  36. package/src/{ditox.test.ts → container.test.ts} +25 -3
  37. package/src/{ditox.ts → container.ts} +1 -55
  38. package/src/index.ts +5 -9
  39. package/src/modules.test.ts +2 -1
  40. package/src/modules.ts +2 -1
  41. package/src/tokens.test.ts +54 -0
  42. package/src/tokens.ts +88 -0
  43. package/src/utils.test.ts +2 -1
  44. package/src/utils.ts +2 -1
  45. package/dist/cjs/ditox.js.map +0 -1
  46. package/dist/esm/ditox.js.map +0 -1
  47. package/docs/.nojekyll +0 -1
  48. package/docs/README.md +0 -793
  49. package/docs/classes/ResolverError.md +0 -167
package/docs/README.md DELETED
@@ -1,793 +0,0 @@
1
- ditox
2
-
3
- # ditox
4
-
5
- ## Table of contents
6
-
7
- ### Classes
8
-
9
- - [ResolverError](classes/ResolverError.md)
10
-
11
- ### Type Aliases
12
-
13
- - [BindModuleOptions](README.md#bindmoduleoptions)
14
- - [Container](README.md#container)
15
- - [FactoryOptions](README.md#factoryoptions)
16
- - [FactoryScope](README.md#factoryscope)
17
- - [Module](README.md#module)
18
- - [ModuleBindingEntry](README.md#modulebindingentry)
19
- - [ModuleDeclaration](README.md#moduledeclaration)
20
- - [Token](README.md#token)
21
-
22
- ### Functions
23
-
24
- - [bindModule](README.md#bindmodule)
25
- - [bindModules](README.md#bindmodules)
26
- - [bindMultiValue](README.md#bindmultivalue)
27
- - [createContainer](README.md#createcontainer)
28
- - [declareModule](README.md#declaremodule)
29
- - [declareModuleBindings](README.md#declaremodulebindings)
30
- - [injectable](README.md#injectable)
31
- - [injectableClass](README.md#injectableclass)
32
- - [isToken](README.md#istoken)
33
- - [optional](README.md#optional)
34
- - [resolveValue](README.md#resolvevalue)
35
- - [resolveValues](README.md#resolvevalues)
36
- - [token](README.md#token-1)
37
- - [tryResolveValue](README.md#tryresolvevalue)
38
- - [tryResolveValues](README.md#tryresolvevalues)
39
-
40
- ## Type Aliases
41
-
42
- ### BindModuleOptions
43
-
44
- Ƭ **BindModuleOptions**: `Object`
45
-
46
- Options for module binding.
47
-
48
- `scope` types:
49
-
50
- - `singleton` - **This is the default**. The module is created and cached by the container which registered the factory.
51
- - `scoped` - The module is created and cached by the container which starts resolving.
52
-
53
- #### Type declaration
54
-
55
- | Name | Type |
56
- | :------- | :-------------------------- |
57
- | `scope?` | `"scoped"` \| `"singleton"` |
58
-
59
- #### Defined in
60
-
61
- [packages/ditox/src/modules.ts:78](https://github.com/mnasyrov/ditox/blob/37f658c/packages/ditox/src/modules.ts#L78)
62
-
63
- ---
64
-
65
- ### Container
66
-
67
- Ƭ **Container**: `Object`
68
-
69
- Dependency container.
70
-
71
- #### Type declaration
72
-
73
- | Name | Type |
74
- | :------------ | :--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
75
- | `bindFactory` | <T\>(`token`: [`Token`](README.md#token)<`T`\>, `factory`: (`container`: [`Container`](README.md#container)) => `T`, `options?`: [`FactoryOptions`](README.md#factoryoptions)<`T`\>) => `void` |
76
- | `bindValue` | <T\>(`token`: [`Token`](README.md#token)<`T`\>, `value`: `T`) => `void` |
77
- | `get` | <T\>(`token`: [`Token`](README.md#token)<`T`\>) => `undefined` \| `T` |
78
- | `hasToken` | (`token`: [`Token`](README.md#token)<`unknown`\>) => `boolean` |
79
- | `remove` | <T\>(`token`: [`Token`](README.md#token)<`T`\>) => `void` |
80
- | `removeAll` | () => `void` |
81
- | `resolve` | <T\>(`token`: [`Token`](README.md#token)<`T`\>) => `T` |
82
-
83
- #### Defined in
84
-
85
- [packages/ditox/src/ditox.ts:95](https://github.com/mnasyrov/ditox/blob/37f658c/packages/ditox/src/ditox.ts#L95)
86
-
87
- ---
88
-
89
- ### FactoryOptions
90
-
91
- Ƭ **FactoryOptions**<`T`\>: { `onRemoved?`: (`value`: `T`) => `void` ; `scope?`: `"scoped"` \| `"singleton"` } \| { `scope`: `"transient"` }
92
-
93
- Options for factory binding.
94
-
95
- `scope` types:
96
-
97
- - `singleton` - **This is the default**. The value is created and cached by the container which registered the factory.
98
- - `scoped` - The value is created and cached by the container which starts resolving.
99
- - `transient` - The value is created every time it is resolved.
100
-
101
- `scoped` and `singleton` scopes can have `onRemoved` callback. It is called when a token is removed from the container.
102
-
103
- #### Type parameters
104
-
105
- | Name |
106
- | :--- |
107
- | `T` |
108
-
109
- #### Defined in
110
-
111
- [packages/ditox/src/ditox.ts:83](https://github.com/mnasyrov/ditox/blob/37f658c/packages/ditox/src/ditox.ts#L83)
112
-
113
- ---
114
-
115
- ### FactoryScope
116
-
117
- Ƭ **FactoryScope**: `"scoped"` \| `"singleton"` \| `"transient"`
118
-
119
- **`See`**
120
-
121
- https://github.com/mnasyrov/ditox#factory-lifetimes
122
-
123
- #### Defined in
124
-
125
- [packages/ditox/src/ditox.ts:71](https://github.com/mnasyrov/ditox/blob/37f658c/packages/ditox/src/ditox.ts#L71)
126
-
127
- ---
128
-
129
- ### Module
130
-
131
- Ƭ **Module**<`ModuleProps`\>: `ModuleController` & `ModuleProps`
132
-
133
- Dependency module
134
-
135
- **`Example`**
136
-
137
- ```ts
138
- type LoggerModule = Module<{
139
- logger: Logger;
140
- }>;
141
- ```
142
-
143
- #### Type parameters
144
-
145
- | Name | Type |
146
- | :------------ | :---------------------------------- |
147
- | `ModuleProps` | extends `AnyObject` = `EmptyObject` |
148
-
149
- #### Defined in
150
-
151
- [packages/ditox/src/modules.ts:22](https://github.com/mnasyrov/ditox/blob/37f658c/packages/ditox/src/modules.ts#L22)
152
-
153
- ---
154
-
155
- ### ModuleBindingEntry
156
-
157
- Ƭ **ModuleBindingEntry**: [`ModuleDeclaration`](README.md#moduledeclaration)<`AnyObject`\> \| { `module`: [`ModuleDeclaration`](README.md#moduledeclaration)<`AnyObject`\> ; `options`: [`BindModuleOptions`](README.md#bindmoduleoptions) }
158
-
159
- #### Defined in
160
-
161
- [packages/ditox/src/modules.ts:82](https://github.com/mnasyrov/ditox/blob/37f658c/packages/ditox/src/modules.ts#L82)
162
-
163
- ---
164
-
165
- ### ModuleDeclaration
166
-
167
- Ƭ **ModuleDeclaration**<`T`\>: `Object`
168
-
169
- Description how to bind the module in declarative way.
170
-
171
- **`Example`**
172
-
173
- ```ts
174
- const LOGGER_MODULE: ModuleDeclaration<LoggerModule> = {
175
- token: LOGGER_MODULE_TOKEN,
176
- factory: (container) => {
177
- const transport = container.resolve(TRANSPORT_TOKEN).open();
178
- return {
179
- logger: {log: (message) => transport.write(message)},
180
- destroy: () => transport.close(),
181
- };
182
- },
183
- exports: {
184
- logger: LOGGER_TOKEN,
185
- },
186
- };
187
- ```
188
-
189
- #### Type parameters
190
-
191
- | Name | Type |
192
- | :--- | :------------------------------------------------- |
193
- | `T` | extends [`Module`](README.md#module)<`AnyObject`\> |
194
-
195
- #### Type declaration
196
-
197
- | Name | Type | Description |
198
- | :--------------- | :--------------------------------------------------------------------- | :------------------------------------------------------------------------------------------------------------ |
199
- | `afterBinding?` | (`container`: [`Container`](README.md#container)) => `void` | Callback could be used to export complex dependencies from the module. It is called after binding the module. |
200
- | `beforeBinding?` | (`container`: [`Container`](README.md#container)) => `void` | Callback could be used to prepare an environment. It is called before binding the module. |
201
- | `exports?` | { [K in keyof GetModuleProps<T\>]?: Token<GetModuleProps<T\>[K]\> } | Dictionary of module properties which are bound to tokens. |
202
- | `factory` | (`container`: [`Container`](README.md#container)) => `T` | Factory of the module |
203
- | `imports?` | `ReadonlyArray`<[`ModuleBindingEntry`](README.md#modulebindingentry)\> | Modules for binding |
204
- | `token` | [`Token`](README.md#token)<`T`\> | Token for the module |
205
-
206
- #### Defined in
207
-
208
- [packages/ditox/src/modules.ts:47](https://github.com/mnasyrov/ditox/blob/37f658c/packages/ditox/src/modules.ts#L47)
209
-
210
- ---
211
-
212
- ### Token
213
-
214
- Ƭ **Token**<`T`\>: `RequiredToken`<`T`\> \| `OptionalToken`<`T`\>
215
-
216
- Binding token.
217
-
218
- #### Type parameters
219
-
220
- | Name |
221
- | :--- |
222
- | `T` |
223
-
224
- #### Defined in
225
-
226
- [packages/ditox/src/ditox.ts:25](https://github.com/mnasyrov/ditox/blob/37f658c/packages/ditox/src/ditox.ts#L25)
227
-
228
- ## Functions
229
-
230
- ### bindModule
231
-
232
- ▸ **bindModule**<`T`\>(`container`, `moduleDeclaration`, `options?`): `void`
233
-
234
- Binds the dependency module to the container
235
-
236
- **`Example`**
237
-
238
- ```ts
239
- bindModule(container, LOGGER_MODULE);
240
- ```
241
-
242
- #### Type parameters
243
-
244
- | Name | Type |
245
- | :--- | :------------------------------------------------- |
246
- | `T` | extends [`Module`](README.md#module)<`AnyObject`\> |
247
-
248
- #### Parameters
249
-
250
- | Name | Type | Description |
251
- | :------------------ | :------------------------------------------------------- | :------------------------------------ |
252
- | `container` | [`Container`](README.md#container) | Dependency container. |
253
- | `moduleDeclaration` | [`ModuleDeclaration`](README.md#moduledeclaration)<`T`\> | Declaration of the dependency module. |
254
- | `options?` | [`BindModuleOptions`](README.md#bindmoduleoptions) | Options for module binding. |
255
-
256
- #### Returns
257
-
258
- `void`
259
-
260
- #### Defined in
261
-
262
- [packages/ditox/src/modules.ts:100](https://github.com/mnasyrov/ditox/blob/37f658c/packages/ditox/src/modules.ts#L100)
263
-
264
- ---
265
-
266
- ### bindModules
267
-
268
- ▸ **bindModules**(`container`, `modules`): `void`
269
-
270
- Binds dependency modules to the container
271
-
272
- #### Parameters
273
-
274
- | Name | Type | Description |
275
- | :---------- | :-------------------------------------------------------------- | :------------------------------------------------------------------------------------------------------------------------ |
276
- | `container` | [`Container`](README.md#container) | Dependency container for binding |
277
- | `modules` | readonly [`ModuleBindingEntry`](README.md#modulebindingentry)[] | Array of module binding entries: module declaration or `{module: ModuleDeclaration, options: BindModuleOptions}` objects. |
278
-
279
- #### Returns
280
-
281
- `void`
282
-
283
- #### Defined in
284
-
285
- [packages/ditox/src/modules.ts:161](https://github.com/mnasyrov/ditox/blob/37f658c/packages/ditox/src/modules.ts#L161)
286
-
287
- ---
288
-
289
- ### bindMultiValue
290
-
291
- ▸ **bindMultiValue**<`T`\>(`container`, `token`, `value`): `void`
292
-
293
- Rebinds the array by the token with added new value.
294
-
295
- #### Type parameters
296
-
297
- | Name |
298
- | :--- |
299
- | `T` |
300
-
301
- #### Parameters
302
-
303
- | Name | Type | Description |
304
- | :---------- | :------------------------------------------ | :------------------------------------------------ |
305
- | `container` | [`Container`](README.md#container) | Dependency container. |
306
- | `token` | [`Token`](README.md#token)<readonly `T`[]\> | Token for an array of values. |
307
- | `value` | `T` | New value which is added to the end of the array. |
308
-
309
- #### Returns
310
-
311
- `void`
312
-
313
- #### Defined in
314
-
315
- [packages/ditox/src/utils.ts:27](https://github.com/mnasyrov/ditox/blob/37f658c/packages/ditox/src/utils.ts#L27)
316
-
317
- ---
318
-
319
- ### createContainer
320
-
321
- ▸ **createContainer**(`parentContainer?`): [`Container`](README.md#container)
322
-
323
- Creates a new dependency container.
324
-
325
- Container can have an optional parent to chain token resolution. The parent is used in case the current container does not have a registered token.
326
-
327
- #### Parameters
328
-
329
- | Name | Type | Description |
330
- | :----------------- | :--------------------------------- | :------------------------- |
331
- | `parentContainer?` | [`Container`](README.md#container) | Optional parent container. |
332
-
333
- #### Returns
334
-
335
- [`Container`](README.md#container)
336
-
337
- #### Defined in
338
-
339
- [packages/ditox/src/ditox.ts:204](https://github.com/mnasyrov/ditox/blob/37f658c/packages/ditox/src/ditox.ts#L204)
340
-
341
- ---
342
-
343
- ### declareModule
344
-
345
- ▸ **declareModule**<`T`\>(`declaration`): [`ModuleDeclaration`](README.md#moduledeclaration)<`T`\>
346
-
347
- Declares a module binding
348
-
349
- **`Example`**
350
-
351
- ```ts
352
- const LOGGER_MODULE = declareModule<LoggerModule>({
353
- factory: (container) => {
354
- const transport = container.resolve(TRANSPORT_TOKEN).open();
355
- return {
356
- logger: {log: (message) => transport.write(message)},
357
- destroy: () => transport.close(),
358
- };
359
- },
360
- exports: {
361
- logger: LOGGER_TOKEN,
362
- },
363
- });
364
- ```
365
-
366
- #### Type parameters
367
-
368
- | Name | Type |
369
- | :--- | :------------------------------------------------- |
370
- | `T` | extends [`Module`](README.md#module)<`AnyObject`\> |
371
-
372
- #### Parameters
373
-
374
- | Name | Type | Description |
375
- | :------------ | :---------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :------------------- |
376
- | `declaration` | `Omit`<[`ModuleDeclaration`](README.md#moduledeclaration)<`T`\>, `"token"`\> & `Partial`<`Pick`<[`ModuleDeclaration`](README.md#moduledeclaration)<`T`\>, `"token"`\>\> | a module declaration |
377
-
378
- #### Returns
379
-
380
- [`ModuleDeclaration`](README.md#moduledeclaration)<`T`\>
381
-
382
- #### Defined in
383
-
384
- [packages/ditox/src/modules.ts:196](https://github.com/mnasyrov/ditox/blob/37f658c/packages/ditox/src/modules.ts#L196)
385
-
386
- ---
387
-
388
- ### declareModuleBindings
389
-
390
- ▸ **declareModuleBindings**(`modules`): [`ModuleDeclaration`](README.md#moduledeclaration)<[`Module`](README.md#module)\>
391
-
392
- Declares bindings of several modules
393
-
394
- #### Parameters
395
-
396
- | Name | Type | Description |
397
- | :-------- | :-------------------------------------------------------------- | :------------------------- |
398
- | `modules` | readonly [`ModuleBindingEntry`](README.md#modulebindingentry)[] | module declaration entries |
399
-
400
- #### Returns
401
-
402
- [`ModuleDeclaration`](README.md#moduledeclaration)<[`Module`](README.md#module)\>
403
-
404
- #### Defined in
405
-
406
- [packages/ditox/src/modules.ts:208](https://github.com/mnasyrov/ditox/blob/37f658c/packages/ditox/src/modules.ts#L208)
407
-
408
- ---
409
-
410
- ### injectable
411
-
412
- ▸ **injectable**<`Tokens`, `Values`, `Result`\>(`this`, `factory`, `...tokens`): (`container`: [`Container`](README.md#container)) => `Result`
413
-
414
- Decorates a factory by passing resolved values as factory arguments.
415
-
416
- If an argument is an object which has tokens as its properties,
417
- then returns an object containing resolved values as properties.
418
-
419
- #### Type parameters
420
-
421
- | Name | Type |
422
- | :------- | :------------------------------------------------------------------------------------------------------------------------------------ |
423
- | `Tokens` | extends ([`Token`](README.md#token)<`unknown`\> \| { `[key: string]`: [`Token`](README.md#token)<`unknown`\>; })[] |
424
- | `Values` | extends { [K in string \| number \| symbol]: Tokens[K] extends Token<V\> ? V : Tokens[K] extends TokenProps<Props\> ? Props : never } |
425
- | `Result` | `Result` |
426
-
427
- #### Parameters
428
-
429
- | Name | Type | Description |
430
- | :---------- | :---------------------------------- | :-------------------------------------------- |
431
- | `this` | `unknown` | - |
432
- | `factory` | (...`params`: `Values`) => `Result` | A factory. |
433
- | `...tokens` | `Tokens` | Tokens which correspond to factory arguments. |
434
-
435
- #### Returns
436
-
437
- `fn`
438
-
439
- Decorated factory which takes a dependency container as a single argument.
440
-
441
- ▸ (`container`): `Result`
442
-
443
- ##### Parameters
444
-
445
- | Name | Type |
446
- | :---------- | :--------------------------------- |
447
- | `container` | [`Container`](README.md#container) |
448
-
449
- ##### Returns
450
-
451
- `Result`
452
-
453
- #### Defined in
454
-
455
- [packages/ditox/src/utils.ts:178](https://github.com/mnasyrov/ditox/blob/37f658c/packages/ditox/src/utils.ts#L178)
456
-
457
- ---
458
-
459
- ### injectableClass
460
-
461
- ▸ **injectableClass**<`Tokens`, `Values`, `Result`\>(`this`, `constructor`, `...tokens`): (`container`: [`Container`](README.md#container)) => `Result`
462
-
463
- Decorates a class by passing resolved values as arguments to its constructor.
464
-
465
- If an argument is an object which has tokens as its properties,
466
- then returns an object containing resolved values as properties.
467
-
468
- #### Type parameters
469
-
470
- | Name | Type |
471
- | :------- | :------------------------------------------------------------------------------------------------------------------------------------ |
472
- | `Tokens` | extends ([`Token`](README.md#token)<`unknown`\> \| { `[key: string]`: [`Token`](README.md#token)<`unknown`\>; })[] |
473
- | `Values` | extends { [K in string \| number \| symbol]: Tokens[K] extends Token<V\> ? V : Tokens[K] extends TokenProps<Props\> ? Props : never } |
474
- | `Result` | `Result` |
475
-
476
- #### Parameters
477
-
478
- | Name | Type | Description |
479
- | :------------ | :---------------------------------- | :----------------------------------------------- |
480
- | `this` | `unknown` | - |
481
- | `constructor` | (...`params`: `Values`) => `Result` | Constructor of a class |
482
- | `...tokens` | `Tokens` | Tokens which correspond to constructor arguments |
483
-
484
- #### Returns
485
-
486
- `fn`
487
-
488
- A factory function which takes a dependency container as a single argument
489
- and returns a new created class.
490
-
491
- ▸ (`container`): `Result`
492
-
493
- ##### Parameters
494
-
495
- | Name | Type |
496
- | :---------- | :--------------------------------- |
497
- | `container` | [`Container`](README.md#container) |
498
-
499
- ##### Returns
500
-
501
- `Result`
502
-
503
- #### Defined in
504
-
505
- [packages/ditox/src/utils.ts:211](https://github.com/mnasyrov/ditox/blob/37f658c/packages/ditox/src/utils.ts#L211)
506
-
507
- ---
508
-
509
- ### isToken
510
-
511
- ▸ **isToken**<`T`\>(`value`): value is Token<T\>
512
-
513
- Checks if a value is the token
514
-
515
- #### Type parameters
516
-
517
- | Name |
518
- | :--- |
519
- | `T` |
520
-
521
- #### Parameters
522
-
523
- | Name | Type |
524
- | :------ | :-------- |
525
- | `value` | `unknown` |
526
-
527
- #### Returns
528
-
529
- value is Token<T\>
530
-
531
- #### Defined in
532
-
533
- [packages/ditox/src/utils.ts:11](https://github.com/mnasyrov/ditox/blob/37f658c/packages/ditox/src/utils.ts#L11)
534
-
535
- ---
536
-
537
- ### optional
538
-
539
- ▸ **optional**<`T`\>(`token`, `optionalValue`): `OptionalToken`<`T`\>
540
-
541
- Decorate a token with an optional value.
542
- This value is be used as default value in case a container does not have registered token.
543
-
544
- #### Type parameters
545
-
546
- | Name |
547
- | :--- |
548
- | `T` |
549
-
550
- #### Parameters
551
-
552
- | Name | Type | Description |
553
- | :-------------- | :------------------------------- | :------------------------------ |
554
- | `token` | [`Token`](README.md#token)<`T`\> | Existed token. |
555
- | `optionalValue` | `T` | Default value for the resolver. |
556
-
557
- #### Returns
558
-
559
- `OptionalToken`<`T`\>
560
-
561
- #### Defined in
562
-
563
- [packages/ditox/src/ditox.ts:41](https://github.com/mnasyrov/ditox/blob/37f658c/packages/ditox/src/ditox.ts#L41)
564
-
565
- ▸ **optional**<`T`\>(`token`): `OptionalToken`<`T` \| `undefined`\>
566
-
567
- #### Type parameters
568
-
569
- | Name |
570
- | :--- |
571
- | `T` |
572
-
573
- #### Parameters
574
-
575
- | Name | Type |
576
- | :------ | :------------------------------- |
577
- | `token` | [`Token`](README.md#token)<`T`\> |
578
-
579
- #### Returns
580
-
581
- `OptionalToken`<`T` \| `undefined`\>
582
-
583
- #### Defined in
584
-
585
- [packages/ditox/src/ditox.ts:45](https://github.com/mnasyrov/ditox/blob/37f658c/packages/ditox/src/ditox.ts#L45)
586
-
587
- ---
588
-
589
- ### resolveValue
590
-
591
- ▸ **resolveValue**<`Tokens`, `Values`\>(`container`, `token`): `Values`
592
-
593
- Resolves a value by the provided token.
594
-
595
- If an argument is an object which has tokens as its properties,
596
- then returns an object containing resolved values as properties.
597
-
598
- If a value is not found by the token, then `ResolverError` is thrown.
599
-
600
- **`Example`**
601
-
602
- ```ts
603
- const value = resolveValue(container, tokenA);
604
- console.log(value); // 1
605
-
606
- const props = resolveValue(container, {a: tokenA, b: tokenB});
607
- console.log(props); // {a: 1, b: 2}
608
- ```
609
-
610
- #### Type parameters
611
-
612
- | Name | Type |
613
- | :------- | :------------------------------------------------------------------------------------------------------------- |
614
- | `Tokens` | extends [`Token`](README.md#token)<`unknown`\> \| { `[key: string]`: [`Token`](README.md#token)<`unknown`\>; } |
615
- | `Values` | extends `unknown` |
616
-
617
- #### Parameters
618
-
619
- | Name | Type |
620
- | :---------- | :--------------------------------- |
621
- | `container` | [`Container`](README.md#container) |
622
- | `token` | `Tokens` |
623
-
624
- #### Returns
625
-
626
- `Values`
627
-
628
- #### Defined in
629
-
630
- [packages/ditox/src/utils.ts:118](https://github.com/mnasyrov/ditox/blob/37f658c/packages/ditox/src/utils.ts#L118)
631
-
632
- ---
633
-
634
- ### resolveValues
635
-
636
- ▸ **resolveValues**<`Tokens`, `Values`\>(`container`, `...tokens`): `Values`
637
-
638
- Returns an array of resolved values or objects with resolved values.
639
-
640
- If an item of the array is an object which has tokens as its properties,
641
- then returns an object containing resolved values as properties.
642
-
643
- If a token is not found, then `ResolverError` is thrown.
644
-
645
- **`Example`**
646
-
647
- ```ts
648
- const items1 = resolveValues(container, tokenA);
649
- console.log(items1); // [1]
650
-
651
- const items2 = resolveValues(container, tokenA, {a: tokenA, b: tokenB});
652
- console.log(items2); // [1, {a: 1, b: 2}]
653
- ```
654
-
655
- #### Type parameters
656
-
657
- | Name | Type |
658
- | :------- | :------------------------------------------------------------------------------------------------------------------------------------ |
659
- | `Tokens` | extends ([`Token`](README.md#token)<`unknown`\> \| { `[key: string]`: [`Token`](README.md#token)<`unknown`\>; })[] |
660
- | `Values` | extends { [K in string \| number \| symbol]: Tokens[K] extends Token<V\> ? V : Tokens[K] extends TokenProps<Props\> ? Props : never } |
661
-
662
- #### Parameters
663
-
664
- | Name | Type |
665
- | :---------- | :--------------------------------- |
666
- | `container` | [`Container`](README.md#container) |
667
- | `...tokens` | `Tokens` |
668
-
669
- #### Returns
670
-
671
- `Values`
672
-
673
- #### Defined in
674
-
675
- [packages/ditox/src/utils.ts:154](https://github.com/mnasyrov/ditox/blob/37f658c/packages/ditox/src/utils.ts#L154)
676
-
677
- ---
678
-
679
- ### token
680
-
681
- ▸ **token**<`T`\>(`description?`): [`Token`](README.md#token)<`T`\>
682
-
683
- Creates a new binding token.
684
-
685
- #### Type parameters
686
-
687
- | Name |
688
- | :--- |
689
- | `T` |
690
-
691
- #### Parameters
692
-
693
- | Name | Type | Description |
694
- | :------------- | :------- | :------------------------------------------- |
695
- | `description?` | `string` | Token description for better error messages. |
696
-
697
- #### Returns
698
-
699
- [`Token`](README.md#token)<`T`\>
700
-
701
- #### Defined in
702
-
703
- [packages/ditox/src/ditox.ts:31](https://github.com/mnasyrov/ditox/blob/37f658c/packages/ditox/src/ditox.ts#L31)
704
-
705
- ---
706
-
707
- ### tryResolveValue
708
-
709
- ▸ **tryResolveValue**<`Tokens`, `Values`\>(`container`, `token`): `Values`
710
-
711
- Tries to resolve a value by the provided token.
712
-
713
- If an argument is an object which has tokens as its properties,
714
- then returns an object containing resolved values as properties.
715
-
716
- If a token is not found, then `undefined` value is used.
717
-
718
- **`Example`**
719
-
720
- ```ts
721
- const value = tryResolveValue(container, tokenA);
722
- console.log(value); // 1
723
-
724
- const props = tryResolveValue(container, {a: tokenA, b: tokenB});
725
- console.log(props); // {a: 1, b: 2}
726
- ```
727
-
728
- #### Type parameters
729
-
730
- | Name | Type |
731
- | :------- | :------------------------------------------------------------------------------------------------------------- |
732
- | `Tokens` | extends [`Token`](README.md#token)<`unknown`\> \| { `[key: string]`: [`Token`](README.md#token)<`unknown`\>; } |
733
- | `Values` | extends `unknown` |
734
-
735
- #### Parameters
736
-
737
- | Name | Type |
738
- | :---------- | :--------------------------------- |
739
- | `container` | [`Container`](README.md#container) |
740
- | `token` | `Tokens` |
741
-
742
- #### Returns
743
-
744
- `Values`
745
-
746
- #### Defined in
747
-
748
- [packages/ditox/src/utils.ts:54](https://github.com/mnasyrov/ditox/blob/37f658c/packages/ditox/src/utils.ts#L54)
749
-
750
- ---
751
-
752
- ### tryResolveValues
753
-
754
- ▸ **tryResolveValues**<`Tokens`, `Values`\>(`container`, `...tokens`): `Values`
755
-
756
- Returns an array of resolved values or objects with resolved values.
757
-
758
- If an item of the array is an object which has tokens as its properties,
759
- then returns an object containing resolved values as properties.
760
-
761
- If a token is not found, then `undefined` value is used.
762
-
763
- **`Example`**
764
-
765
- ```ts
766
- const items1 = tryResolveValues(container, tokenA);
767
- console.log(items1); // [1]
768
-
769
- const items2 = tryResolveValues(container, tokenA, {a: tokenA, b: tokenB});
770
- console.log(items2); // [1, {a: 1, b: 2}]
771
- ```
772
-
773
- #### Type parameters
774
-
775
- | Name | Type |
776
- | :------- | :----------------------------------------------------------------------------------------------------------------------------------------------------------- |
777
- | `Tokens` | extends ([`Token`](README.md#token)<`unknown`\> \| { `[key: string]`: [`Token`](README.md#token)<`unknown`\>; })[] |
778
- | `Values` | extends { [K in string \| number \| symbol]: Tokens[K] extends Token<V\> ? undefined \| V : Tokens[K] extends TokenProps<Props\> ? Partial<Props\> : never } |
779
-
780
- #### Parameters
781
-
782
- | Name | Type |
783
- | :---------- | :--------------------------------- |
784
- | `container` | [`Container`](README.md#container) |
785
- | `...tokens` | `Tokens` |
786
-
787
- #### Returns
788
-
789
- `Values`
790
-
791
- #### Defined in
792
-
793
- [packages/ditox/src/utils.ts:88](https://github.com/mnasyrov/ditox/blob/37f658c/packages/ditox/src/utils.ts#L88)