ditox 3.1.0 → 3.2.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/README.md +91 -10
- package/dist/browser/index.d.ts +7 -2
- package/dist/cjs/container.d.ts +6 -1
- package/dist/cjs/container.js.map +1 -1
- package/dist/cjs/index.d.ts +1 -1
- package/dist/cjs/index.js.map +1 -1
- package/dist/esm/container.d.ts +6 -1
- package/dist/esm/container.js.map +1 -1
- package/dist/esm/index.d.ts +1 -1
- package/dist/esm/index.js.map +1 -1
- package/dist/umd/index.d.ts +7 -2
- package/package.json +2 -2
- package/src/container.ts +10 -4
- package/src/index.ts +6 -1
package/README.md
CHANGED
|
@@ -9,7 +9,7 @@ Please see the documentation at [ditox.js.org](https://ditox.js.org)
|
|
|
9
9
|
[](https://www.npmjs.com/package/ditox)
|
|
10
10
|
[](https://github.com/mnasyrov/ditox/stargazers)
|
|
11
11
|
[](https://www.npmjs.com/package/ditox)
|
|
12
|
-
[](https://github.com/mnasyrov/ditox/blob/master/LICENSE)
|
|
13
13
|
[](https://coveralls.io/github/mnasyrov/ditox)
|
|
14
14
|
|
|
15
15
|
## Installation
|
|
@@ -25,7 +25,7 @@ The package can be used as [UMD](https://github.com/umdjs/umd) module. Use
|
|
|
25
25
|
[ditox](https://www.jsdelivr.com/package/npm/ditox):
|
|
26
26
|
|
|
27
27
|
```html
|
|
28
|
-
<script src="//cdn.jsdelivr.net/npm/ditox/dist/umd/index.js"
|
|
28
|
+
<script src="//cdn.jsdelivr.net/npm/ditox/dist/umd/index.js"></script>
|
|
29
29
|
<script>
|
|
30
30
|
const container = Ditox.createContainer();
|
|
31
31
|
</script>
|
|
@@ -71,7 +71,7 @@ class UserService {
|
|
|
71
71
|
}
|
|
72
72
|
|
|
73
73
|
// Define tokens for injections.
|
|
74
|
-
const STORAGE_TOKEN = token
|
|
74
|
+
const STORAGE_TOKEN = token('Token description for debugging');
|
|
75
75
|
const LOGGER_TOKEN = token();
|
|
76
76
|
const USER_SERVICE_TOKEN = token();
|
|
77
77
|
|
|
@@ -130,11 +130,11 @@ container.removeAll();
|
|
|
130
130
|
|
|
131
131
|
## Container Hierarchy
|
|
132
132
|
|
|
133
|
-
Ditox.js supports "parent-child" hierarchy. If the child container cannot
|
|
133
|
+
Ditox.js supports a "parent-child" hierarchy. If the child container cannot
|
|
134
134
|
resolve a token, it asks the parent container to resolve it:
|
|
135
135
|
|
|
136
136
|
```js
|
|
137
|
-
import {
|
|
137
|
+
import {createContainer, token} from 'ditox';
|
|
138
138
|
|
|
139
139
|
const V1_TOKEN = token();
|
|
140
140
|
const V2_TOKEN = token();
|
|
@@ -197,7 +197,7 @@ factories. There are the following types:
|
|
|
197
197
|
most distant parent container which registered the factory function:
|
|
198
198
|
|
|
199
199
|
```js
|
|
200
|
-
import {
|
|
200
|
+
import {createContainer, token} from 'ditox';
|
|
201
201
|
|
|
202
202
|
const TAG_TOKEN = token();
|
|
203
203
|
const LOGGER_TOKEN = token();
|
|
@@ -228,7 +228,7 @@ services which can be disposed. For example, a context during HTTP request
|
|
|
228
228
|
handling, or other unit of work:
|
|
229
229
|
|
|
230
230
|
```js
|
|
231
|
-
import {
|
|
231
|
+
import {createContainer, token} from 'ditox';
|
|
232
232
|
|
|
233
233
|
const TAG_TOKEN = token();
|
|
234
234
|
const LOGGER_TOKEN = token();
|
|
@@ -257,7 +257,7 @@ container1.removeAll();
|
|
|
257
257
|
|
|
258
258
|
### `transient`
|
|
259
259
|
|
|
260
|
-
"Transient" makes
|
|
260
|
+
"Transient" makes the factory produce a new value for each resolution:
|
|
261
261
|
|
|
262
262
|
```js
|
|
263
263
|
import {createContainer, token} from 'ditox';
|
|
@@ -329,7 +329,7 @@ const container = createContainer();
|
|
|
329
329
|
// bind a single module
|
|
330
330
|
bindModule(container, LOGGER_MODULE);
|
|
331
331
|
|
|
332
|
-
// or bind multiple
|
|
332
|
+
// or bind multiple dependency modules
|
|
333
333
|
bindModules(container, [DATABASE_MODULE, CONFIG_MODULE, API_MODULE]);
|
|
334
334
|
```
|
|
335
335
|
|
|
@@ -350,9 +350,90 @@ const LOGGER_MODULE = declareModule<LoggerModule>({
|
|
|
350
350
|
},
|
|
351
351
|
});
|
|
352
352
|
|
|
353
|
-
const APP_MODULE =
|
|
353
|
+
const APP_MODULE = declareModuleBindings([LOGGER_MODULE, DATABASE_MODULE]);
|
|
354
354
|
```
|
|
355
355
|
|
|
356
|
+
## API Reference
|
|
357
|
+
|
|
358
|
+
- Tokens
|
|
359
|
+
|
|
360
|
+
- token<T>(options?: { key?: string; description?: string } | string):
|
|
361
|
+
Token<T>
|
|
362
|
+
- Creates a new binding token. Use `key` to create shareable tokens via
|
|
363
|
+
`Symbol.for(key)`; otherwise a descriptive `Symbol(description)` is
|
|
364
|
+
created
|
|
365
|
+
- optional<T>(token: Token<T>, optionalValue?: T): OptionalToken<T |
|
|
366
|
+
undefined>
|
|
367
|
+
- Marks the token as optional and provides a default value for resolution
|
|
368
|
+
when not bound
|
|
369
|
+
- Types: Token<T>, RequiredToken<T>, OptionalToken<T>
|
|
370
|
+
|
|
371
|
+
- Container
|
|
372
|
+
|
|
373
|
+
- createContainer(parent?: Container | ReadonlyArray<Container>): Container
|
|
374
|
+
- Creates a new container optionally linked to one or more parents; parents
|
|
375
|
+
are queried left-to-right
|
|
376
|
+
- class ResolverError extends Error
|
|
377
|
+
- Thrown by `resolve()` when a token is not found and no optional default
|
|
378
|
+
exists
|
|
379
|
+
- type FactoryScope = 'scoped' | 'singleton' | 'transient'
|
|
380
|
+
- type FactoryOptions<T>
|
|
381
|
+
- For 'scoped' | 'singleton': { scope?: 'scoped' | 'singleton'; onRemoved?:
|
|
382
|
+
(value: T) => void }
|
|
383
|
+
- For 'transient': { scope: 'transient' }
|
|
384
|
+
- type Container API
|
|
385
|
+
- bindValue<T>(token: Token<T>, value: T): void — bind a concrete value
|
|
386
|
+
- bindFactory<T>(token: Token<T>, factory: (container: Container) => T,
|
|
387
|
+
options?: FactoryOptions<T>): void — bind a factory with lifetime options
|
|
388
|
+
- hasToken(token: Token<unknown>): boolean — check token presence in
|
|
389
|
+
hierarchy
|
|
390
|
+
- get<T>(token: Token<T>): T | undefined — try resolve or return undefined;
|
|
391
|
+
optional tokens return their default
|
|
392
|
+
- resolve<T>(token: Token<T>): T — resolve or throw ResolverError; optional
|
|
393
|
+
tokens return their default
|
|
394
|
+
- remove<T>(token: Token<T>): void — remove binding; for scoped/singleton
|
|
395
|
+
factories calls `onRemoved` if provided
|
|
396
|
+
- removeAll(): void — remove all bindings and call `onRemoved` for
|
|
397
|
+
applicable factories
|
|
398
|
+
|
|
399
|
+
- Utilities
|
|
400
|
+
|
|
401
|
+
- isToken<T>(value: unknown): value is Token<T> — checks if a value looks like
|
|
402
|
+
a token
|
|
403
|
+
- bindMultiValue<T>(container: Container, token: Token<ReadonlyArray<T>>,
|
|
404
|
+
value: T): void — appends a value to an array token
|
|
405
|
+
- tryResolveValue(container: Container, tokenOrMap): value | object — resolves
|
|
406
|
+
or returns undefined for missing tokens; supports an object map of tokens
|
|
407
|
+
- tryResolveValues(container: Container, ...tokenOrMaps): array — batched
|
|
408
|
+
variant of tryResolveValue
|
|
409
|
+
- resolveValue(container: Container, tokenOrMap): value | object — resolves or
|
|
410
|
+
throws on missing tokens; supports an object map of tokens
|
|
411
|
+
- resolveValues(container: Container, ...tokenOrMaps): array — batched variant
|
|
412
|
+
of resolveValue
|
|
413
|
+
- injectable(factory, ...tokens): (container: Container) => Result — decorates
|
|
414
|
+
a factory to receive resolved values as arguments
|
|
415
|
+
- injectableClass(Class, ...tokens): (container: Container) => Instance —
|
|
416
|
+
decorates a class constructor to receive resolved values
|
|
417
|
+
|
|
418
|
+
- Modules
|
|
419
|
+
- Types
|
|
420
|
+
- Module<Props = {}> — a module object: exported values plus optional
|
|
421
|
+
destroy(): void
|
|
422
|
+
- ModuleDeclaration<T extends Module> — declarative description of a module
|
|
423
|
+
- BindModuleOptions — { scope?: 'scoped' | 'singleton' }
|
|
424
|
+
- ModuleBindingEntry — ModuleDeclaration or { module, options }
|
|
425
|
+
- bindModule(container: Container, module: ModuleDeclaration<T>, options?:
|
|
426
|
+
BindModuleOptions): void
|
|
427
|
+
- Binds a module; exported values are bound via factories; module factory
|
|
428
|
+
respects scope; calls destroy() and removes exports on unbind
|
|
429
|
+
- bindModules(container: Container, modules:
|
|
430
|
+
ReadonlyArray<ModuleBindingEntry>): void — binds multiple modules
|
|
431
|
+
- declareModule(declaration): ModuleDeclaration<T>
|
|
432
|
+
- Creates a module declaration; generates a token if not provided
|
|
433
|
+
- declareModuleBindings(modules: ReadonlyArray<ModuleBindingEntry>):
|
|
434
|
+
ModuleDeclaration<Module>
|
|
435
|
+
- Declares an anonymous module that binds the provided modules
|
|
436
|
+
|
|
356
437
|
---
|
|
357
438
|
|
|
358
439
|
This project is licensed under the
|
package/dist/browser/index.d.ts
CHANGED
|
@@ -114,6 +114,11 @@ type Container = {
|
|
|
114
114
|
*/
|
|
115
115
|
removeAll(): void;
|
|
116
116
|
};
|
|
117
|
+
/**
|
|
118
|
+
* A subset of Container interface that provides read-only access to dependency resolution.
|
|
119
|
+
* This type is used for parent containers to allow token resolution without exposing mutation methods.
|
|
120
|
+
*/
|
|
121
|
+
type ContainerResolver = Pick<Container, 'hasToken' | 'get' | 'resolve'>;
|
|
117
122
|
/**
|
|
118
123
|
* Creates a new dependency container.
|
|
119
124
|
*
|
|
@@ -121,7 +126,7 @@ type Container = {
|
|
|
121
126
|
*
|
|
122
127
|
* @param parentArg - Optional parent container or an array of containers.
|
|
123
128
|
*/
|
|
124
|
-
declare function createContainer(parentArg?:
|
|
129
|
+
declare function createContainer(parentArg?: ContainerResolver | ReadonlyArray<ContainerResolver>): Container;
|
|
125
130
|
|
|
126
131
|
type ValuesProps = {
|
|
127
132
|
[key: string]: unknown;
|
|
@@ -376,4 +381,4 @@ declare function declareModule<T extends Module<AnyObject>>(declaration: Omit<Mo
|
|
|
376
381
|
*/
|
|
377
382
|
declare function declareModuleBindings(modules: ReadonlyArray<ModuleBindingEntry>): ModuleDeclaration<Module>;
|
|
378
383
|
|
|
379
|
-
export { BindModuleOptions, Container, FactoryOptions, FactoryScope, Module, ModuleBindingEntry, ModuleDeclaration, OptionalToken, RequiredToken, ResolverError, Token, bindModule, bindModules, bindMultiValue, createContainer, declareModule, declareModuleBindings, injectable, injectableClass, isToken, optional, resolveValue, resolveValues, token, tryResolveValue, tryResolveValues };
|
|
384
|
+
export { BindModuleOptions, Container, ContainerResolver, FactoryOptions, FactoryScope, Module, ModuleBindingEntry, ModuleDeclaration, OptionalToken, RequiredToken, ResolverError, Token, bindModule, bindModules, bindMultiValue, createContainer, declareModule, declareModuleBindings, injectable, injectableClass, isToken, optional, resolveValue, resolveValues, token, tryResolveValue, tryResolveValues };
|
package/dist/cjs/container.d.ts
CHANGED
|
@@ -58,6 +58,11 @@ export type Container = {
|
|
|
58
58
|
*/
|
|
59
59
|
removeAll(): void;
|
|
60
60
|
};
|
|
61
|
+
/**
|
|
62
|
+
* A subset of Container interface that provides read-only access to dependency resolution.
|
|
63
|
+
* This type is used for parent containers to allow token resolution without exposing mutation methods.
|
|
64
|
+
*/
|
|
65
|
+
export type ContainerResolver = Pick<Container, 'hasToken' | 'get' | 'resolve'>;
|
|
61
66
|
/** @internal */
|
|
62
67
|
export declare const CONTAINER: Token<Container>;
|
|
63
68
|
/** @internal */
|
|
@@ -84,5 +89,5 @@ type Resolver = <T>(token: Token<T>, origin: Container) => T | typeof NOT_FOUND;
|
|
|
84
89
|
*
|
|
85
90
|
* @param parentArg - Optional parent container or an array of containers.
|
|
86
91
|
*/
|
|
87
|
-
export declare function createContainer(parentArg?:
|
|
92
|
+
export declare function createContainer(parentArg?: ContainerResolver | ReadonlyArray<ContainerResolver>): Container;
|
|
88
93
|
export {};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"container.js","sourceRoot":"","sources":["../../src/container.ts"],"names":[],"mappings":";;;AAAA,qCAAsC;AAEtC;;GAEG;AACH,MAAa,aAAc,SAAQ,KAAK;IACtC,YAAY,OAAe;QACzB,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,GAAG,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;QAClD,IAAI,CAAC,IAAI,GAAG,eAAe,CAAC;IAC9B,CAAC;CACF;AAND,sCAMC;
|
|
1
|
+
{"version":3,"file":"container.js","sourceRoot":"","sources":["../../src/container.ts"],"names":[],"mappings":"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"}
|
package/dist/cjs/index.d.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
export { token, optional } from './tokens';
|
|
2
2
|
export type { RequiredToken, OptionalToken, Token } from './tokens';
|
|
3
3
|
export { ResolverError, createContainer } from './container';
|
|
4
|
-
export type { FactoryScope, FactoryOptions, Container } from './container';
|
|
4
|
+
export type { FactoryScope, FactoryOptions, Container, ContainerResolver, } from './container';
|
|
5
5
|
export { isToken, bindMultiValue, tryResolveValue, tryResolveValues, resolveValue, resolveValues, injectable, injectableClass, } from './utils';
|
|
6
6
|
export { bindModule, bindModules, declareModule, declareModuleBindings, } from './modules';
|
|
7
7
|
export type { Module, ModuleDeclaration, BindModuleOptions, ModuleBindingEntry, } from './modules';
|
package/dist/cjs/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";;;AAAA,mCAAyC;AAAjC,+FAAA,KAAK,OAAA;AAAE,kGAAA,QAAQ,OAAA;AAGvB,yCAA2D;AAAnD,0GAAA,aAAa,OAAA;AAAE,4GAAA,eAAe,OAAA;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";;;AAAA,mCAAyC;AAAjC,+FAAA,KAAK,OAAA;AAAE,kGAAA,QAAQ,OAAA;AAGvB,yCAA2D;AAAnD,0GAAA,aAAa,OAAA;AAAE,4GAAA,eAAe,OAAA;AAQtC,iCASiB;AARf,gGAAA,OAAO,OAAA;AACP,uGAAA,cAAc,OAAA;AACd,wGAAA,eAAe,OAAA;AACf,yGAAA,gBAAgB,OAAA;AAChB,qGAAA,YAAY,OAAA;AACZ,sGAAA,aAAa,OAAA;AACb,mGAAA,UAAU,OAAA;AACV,wGAAA,eAAe,OAAA;AAGjB,qCAKmB;AAJjB,qGAAA,UAAU,OAAA;AACV,sGAAA,WAAW,OAAA;AACX,wGAAA,aAAa,OAAA;AACb,gHAAA,qBAAqB,OAAA"}
|
package/dist/esm/container.d.ts
CHANGED
|
@@ -58,6 +58,11 @@ export type Container = {
|
|
|
58
58
|
*/
|
|
59
59
|
removeAll(): void;
|
|
60
60
|
};
|
|
61
|
+
/**
|
|
62
|
+
* A subset of Container interface that provides read-only access to dependency resolution.
|
|
63
|
+
* This type is used for parent containers to allow token resolution without exposing mutation methods.
|
|
64
|
+
*/
|
|
65
|
+
export type ContainerResolver = Pick<Container, 'hasToken' | 'get' | 'resolve'>;
|
|
61
66
|
/** @internal */
|
|
62
67
|
export declare const CONTAINER: Token<Container>;
|
|
63
68
|
/** @internal */
|
|
@@ -84,5 +89,5 @@ type Resolver = <T>(token: Token<T>, origin: Container) => T | typeof NOT_FOUND;
|
|
|
84
89
|
*
|
|
85
90
|
* @param parentArg - Optional parent container or an array of containers.
|
|
86
91
|
*/
|
|
87
|
-
export declare function createContainer(parentArg?:
|
|
92
|
+
export declare function createContainer(parentArg?: ContainerResolver | ReadonlyArray<ContainerResolver>): Container;
|
|
88
93
|
export {};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"container.js","sourceRoot":"","sources":["../../src/container.ts"],"names":[],"mappings":"AAAA,OAAO,EAAQ,KAAK,EAAC,MAAM,UAAU,CAAC;AAEtC;;GAEG;AACH,MAAM,OAAO,aAAc,SAAQ,KAAK;IACtC,YAAY,OAAe;QACzB,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,GAAG,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;QAClD,IAAI,CAAC,IAAI,GAAG,eAAe,CAAC;IAC9B,CAAC;CACF;
|
|
1
|
+
{"version":3,"file":"container.js","sourceRoot":"","sources":["../../src/container.ts"],"names":[],"mappings":"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"}
|
package/dist/esm/index.d.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
export { token, optional } from './tokens';
|
|
2
2
|
export type { RequiredToken, OptionalToken, Token } from './tokens';
|
|
3
3
|
export { ResolverError, createContainer } from './container';
|
|
4
|
-
export type { FactoryScope, FactoryOptions, Container } from './container';
|
|
4
|
+
export type { FactoryScope, FactoryOptions, Container, ContainerResolver, } from './container';
|
|
5
5
|
export { isToken, bindMultiValue, tryResolveValue, tryResolveValues, resolveValue, resolveValues, injectable, injectableClass, } from './utils';
|
|
6
6
|
export { bindModule, bindModules, declareModule, declareModuleBindings, } from './modules';
|
|
7
7
|
export type { Module, ModuleDeclaration, BindModuleOptions, ModuleBindingEntry, } from './modules';
|
package/dist/esm/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,KAAK,EAAE,QAAQ,EAAC,MAAM,UAAU,CAAC;AAGzC,OAAO,EAAC,aAAa,EAAE,eAAe,EAAC,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,KAAK,EAAE,QAAQ,EAAC,MAAM,UAAU,CAAC;AAGzC,OAAO,EAAC,aAAa,EAAE,eAAe,EAAC,MAAM,aAAa,CAAC;AAQ3D,OAAO,EACL,OAAO,EACP,cAAc,EACd,eAAe,EACf,gBAAgB,EAChB,YAAY,EACZ,aAAa,EACb,UAAU,EACV,eAAe,GAChB,MAAM,SAAS,CAAC;AAEjB,OAAO,EACL,UAAU,EACV,WAAW,EACX,aAAa,EACb,qBAAqB,GACtB,MAAM,WAAW,CAAC"}
|
package/dist/umd/index.d.ts
CHANGED
|
@@ -114,6 +114,11 @@ type Container = {
|
|
|
114
114
|
*/
|
|
115
115
|
removeAll(): void;
|
|
116
116
|
};
|
|
117
|
+
/**
|
|
118
|
+
* A subset of Container interface that provides read-only access to dependency resolution.
|
|
119
|
+
* This type is used for parent containers to allow token resolution without exposing mutation methods.
|
|
120
|
+
*/
|
|
121
|
+
type ContainerResolver = Pick<Container, 'hasToken' | 'get' | 'resolve'>;
|
|
117
122
|
/**
|
|
118
123
|
* Creates a new dependency container.
|
|
119
124
|
*
|
|
@@ -121,7 +126,7 @@ type Container = {
|
|
|
121
126
|
*
|
|
122
127
|
* @param parentArg - Optional parent container or an array of containers.
|
|
123
128
|
*/
|
|
124
|
-
declare function createContainer(parentArg?:
|
|
129
|
+
declare function createContainer(parentArg?: ContainerResolver | ReadonlyArray<ContainerResolver>): Container;
|
|
125
130
|
|
|
126
131
|
type ValuesProps = {
|
|
127
132
|
[key: string]: unknown;
|
|
@@ -376,4 +381,4 @@ declare function declareModule<T extends Module<AnyObject>>(declaration: Omit<Mo
|
|
|
376
381
|
*/
|
|
377
382
|
declare function declareModuleBindings(modules: ReadonlyArray<ModuleBindingEntry>): ModuleDeclaration<Module>;
|
|
378
383
|
|
|
379
|
-
export { BindModuleOptions, Container, FactoryOptions, FactoryScope, Module, ModuleBindingEntry, ModuleDeclaration, OptionalToken, RequiredToken, ResolverError, Token, bindModule, bindModules, bindMultiValue, createContainer, declareModule, declareModuleBindings, injectable, injectableClass, isToken, optional, resolveValue, resolveValues, token, tryResolveValue, tryResolveValues };
|
|
384
|
+
export { BindModuleOptions, Container, ContainerResolver, FactoryOptions, FactoryScope, Module, ModuleBindingEntry, ModuleDeclaration, OptionalToken, RequiredToken, ResolverError, Token, bindModule, bindModules, bindMultiValue, createContainer, declareModule, declareModuleBindings, injectable, injectableClass, isToken, optional, resolveValue, resolveValues, token, tryResolveValue, tryResolveValues };
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "ditox",
|
|
3
|
-
"version": "3.
|
|
3
|
+
"version": "3.2.0",
|
|
4
4
|
"description": "Dependency injection for modular web applications",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"author": "Mikhail Nasyrov <mikhail@mnasyrov.com> (https://github.com/mnasyrov)",
|
|
@@ -51,5 +51,5 @@
|
|
|
51
51
|
"build:rollup": "rollup -c",
|
|
52
52
|
"typedoc": "typedoc"
|
|
53
53
|
},
|
|
54
|
-
"gitHead": "
|
|
54
|
+
"gitHead": "493e9ba9fcb36feea88e3948a23a4249a119d03e"
|
|
55
55
|
}
|
package/src/container.ts
CHANGED
|
@@ -79,6 +79,12 @@ export type Container = {
|
|
|
79
79
|
removeAll(): void;
|
|
80
80
|
};
|
|
81
81
|
|
|
82
|
+
/**
|
|
83
|
+
* A subset of Container interface that provides read-only access to dependency resolution.
|
|
84
|
+
* This type is used for parent containers to allow token resolution without exposing mutation methods.
|
|
85
|
+
*/
|
|
86
|
+
export type ContainerResolver = Pick<Container, 'hasToken' | 'get' | 'resolve'>;
|
|
87
|
+
|
|
82
88
|
/** @internal */
|
|
83
89
|
export const CONTAINER: Token<Container> = token('ditox.Container');
|
|
84
90
|
/** @internal */
|
|
@@ -143,9 +149,9 @@ function isInternalToken<T>(token: Token<T>): boolean {
|
|
|
143
149
|
* @param parentArg - Optional parent container or an array of containers.
|
|
144
150
|
*/
|
|
145
151
|
export function createContainer(
|
|
146
|
-
parentArg?:
|
|
152
|
+
parentArg?: ContainerResolver | ReadonlyArray<ContainerResolver>,
|
|
147
153
|
): Container {
|
|
148
|
-
const parents: ReadonlyArray<
|
|
154
|
+
const parents: ReadonlyArray<ContainerResolver> | undefined = parentArg
|
|
149
155
|
? Array.isArray(parentArg)
|
|
150
156
|
? [...parentArg]
|
|
151
157
|
: [parentArg]
|
|
@@ -324,7 +330,7 @@ export function createContainer(
|
|
|
324
330
|
}
|
|
325
331
|
|
|
326
332
|
function parentContainersHaveToken<T>(
|
|
327
|
-
parents: ReadonlyArray<
|
|
333
|
+
parents: ReadonlyArray<ContainerResolver> | undefined,
|
|
328
334
|
token: Token<T>,
|
|
329
335
|
): boolean {
|
|
330
336
|
if (!parents) return false;
|
|
@@ -339,7 +345,7 @@ function parentContainersHaveToken<T>(
|
|
|
339
345
|
}
|
|
340
346
|
|
|
341
347
|
function parentContainersResolveToken<T>(
|
|
342
|
-
parents: ReadonlyArray<
|
|
348
|
+
parents: ReadonlyArray<ContainerResolver>,
|
|
343
349
|
token: Token<T>,
|
|
344
350
|
origin: Container,
|
|
345
351
|
): T | typeof NOT_FOUND {
|
package/src/index.ts
CHANGED
|
@@ -2,7 +2,12 @@ export {token, optional} from './tokens';
|
|
|
2
2
|
export type {RequiredToken, OptionalToken, Token} from './tokens';
|
|
3
3
|
|
|
4
4
|
export {ResolverError, createContainer} from './container';
|
|
5
|
-
export type {
|
|
5
|
+
export type {
|
|
6
|
+
FactoryScope,
|
|
7
|
+
FactoryOptions,
|
|
8
|
+
Container,
|
|
9
|
+
ContainerResolver,
|
|
10
|
+
} from './container';
|
|
6
11
|
|
|
7
12
|
export {
|
|
8
13
|
isToken,
|