ditox 1.3.0 → 2.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/README.md +5 -5
- package/dist/{index.d.ts → browser/index.d.ts} +18 -10
- package/dist/browser/index.js +2 -0
- package/dist/browser/index.js.map +1 -0
- package/dist/cjs/ditox.d.ts +125 -0
- package/dist/cjs/ditox.js +210 -0
- package/dist/cjs/ditox.js.map +1 -0
- package/dist/cjs/index.d.ts +5 -0
- package/dist/cjs/index.js +22 -0
- package/dist/cjs/index.js.map +1 -0
- package/dist/cjs/modules.d.ts +124 -0
- package/dist/cjs/modules.js +110 -0
- package/dist/cjs/modules.js.map +1 -0
- package/{src/utils.js.flow → dist/cjs/utils.d.ts} +21 -60
- package/dist/cjs/utils.js +98 -0
- package/dist/cjs/utils.js.map +1 -0
- package/dist/esm/ditox.d.ts +125 -0
- package/{lib/index.js → dist/esm/ditox.js} +10 -196
- package/dist/esm/ditox.js.map +1 -0
- package/dist/esm/index.d.ts +5 -0
- package/dist/esm/index.js +4 -0
- package/dist/esm/index.js.map +1 -0
- package/dist/esm/modules.d.ts +124 -0
- package/dist/esm/modules.js +103 -0
- package/dist/esm/modules.js.map +1 -0
- package/dist/esm/utils.d.ts +74 -0
- package/dist/esm/utils.js +88 -0
- package/dist/esm/utils.js.map +1 -0
- package/{lib → dist/umd}/index.d.ts +18 -10
- package/dist/umd/index.js +2 -0
- package/dist/umd/index.js.map +1 -0
- package/docs/.nojekyll +1 -0
- package/docs/README.md +113 -96
- package/docs/classes/{resolvererror.md → ResolverError.md} +14 -12
- package/package.json +16 -17
- package/src/ditox.test.ts +10 -1
- package/src/index.ts +8 -9
- package/src/modules.test.ts +79 -5
- package/src/modules.ts +33 -17
- package/src/utils.ts +4 -4
- package/CHANGELOG.md +0 -99
- package/dist/index.browser.js +0 -2
- package/dist/index.browser.js.flow +0 -4
- package/dist/index.browser.js.map +0 -1
- package/dist/index.js +0 -406
- package/dist/index.js.flow +0 -4
- package/dist/index.js.map +0 -1
- package/dist/index.module.d.ts +0 -293
- package/dist/index.module.js +0 -388
- package/dist/index.module.js.flow +0 -4
- package/dist/index.module.js.map +0 -1
- package/dist/index.umd.d.ts +0 -293
- package/dist/index.umd.js +0 -2
- package/dist/index.umd.js.flow +0 -4
- package/dist/index.umd.js.map +0 -1
- package/lib/index.js.flow +0 -4
- package/lib/index.js.map +0 -1
- package/mod.ts +0 -2
- package/src/ditox.js.flow +0 -131
- package/src/index.js.flow +0 -34
- package/src/modules.js.flow +0 -146
package/src/modules.js.flow
DELETED
|
@@ -1,146 +0,0 @@
|
|
|
1
|
-
// @flow strict
|
|
2
|
-
|
|
3
|
-
import type {Container, Token} from './ditox';
|
|
4
|
-
import {token} from './ditox';
|
|
5
|
-
import type {TokenProps, ValueProps} from './utils';
|
|
6
|
-
|
|
7
|
-
type ModuleController = {
|
|
8
|
-
/** Dispose the module and clean its resources */
|
|
9
|
-
destroy?: () => void,
|
|
10
|
-
};
|
|
11
|
-
|
|
12
|
-
/**
|
|
13
|
-
* Dependency module
|
|
14
|
-
*
|
|
15
|
-
* @example
|
|
16
|
-
* ```ts
|
|
17
|
-
* type LoggerModule = Module<{
|
|
18
|
-
* logger: Logger;
|
|
19
|
-
* }>;
|
|
20
|
-
* ```
|
|
21
|
-
*/
|
|
22
|
-
export type Module<ModuleProps: ValueProps = {}> = {
|
|
23
|
-
...ModuleController,
|
|
24
|
-
...ModuleProps,
|
|
25
|
-
};
|
|
26
|
-
|
|
27
|
-
/**
|
|
28
|
-
* Description of a dependency module in declarative way.
|
|
29
|
-
*
|
|
30
|
-
* @example
|
|
31
|
-
* ```ts
|
|
32
|
-
* const LOGGER_MODULE: ModuleDeclaration<LoggerModule> = {
|
|
33
|
-
* token: LOGGER_MODULE_TOKEN,
|
|
34
|
-
* factory: (container) => {
|
|
35
|
-
* const transport = container.resolve(TRANSPORT_TOKEN).open();
|
|
36
|
-
* return {
|
|
37
|
-
* logger: { log: (message) => transport.write(message) },
|
|
38
|
-
* destroy: () => transport.close(),
|
|
39
|
-
* }
|
|
40
|
-
* },
|
|
41
|
-
* exportedProps: {
|
|
42
|
-
* logger: LOGGER_TOKEN,
|
|
43
|
-
* },
|
|
44
|
-
* };
|
|
45
|
-
* ```
|
|
46
|
-
*/
|
|
47
|
-
export type ModuleDeclaration<T: Module<*>> = {
|
|
48
|
-
/** Token for the module */
|
|
49
|
-
token: Token<T>,
|
|
50
|
-
|
|
51
|
-
/** Factory of the module */
|
|
52
|
-
factory: (container: Container) => T,
|
|
53
|
-
|
|
54
|
-
/** Dictionary of module properties which are bound to tokens. */
|
|
55
|
-
exportedProps?: $Shape<TokenProps<T>>,
|
|
56
|
-
|
|
57
|
-
/** Callback could be used to prepare an environment. It is called before binding the module. */
|
|
58
|
-
beforeBinding?: (container: Container) => void,
|
|
59
|
-
|
|
60
|
-
/** Callback could be used to export complex dependencies from the module. It is called after binding the module. */
|
|
61
|
-
afterBinding?: (container: Container) => void,
|
|
62
|
-
};
|
|
63
|
-
|
|
64
|
-
/**
|
|
65
|
-
* Options for module binding.
|
|
66
|
-
*
|
|
67
|
-
* `scope` types:
|
|
68
|
-
* - `singleton` - **This is the default**. The module is created and cached by the container which registered the factory.
|
|
69
|
-
* - `scoped` - The module is created and cached by the container which starts resolving.
|
|
70
|
-
*/
|
|
71
|
-
export type BindModuleOptions = {
|
|
72
|
-
scope?: 'scoped' | 'singleton',
|
|
73
|
-
};
|
|
74
|
-
|
|
75
|
-
/**
|
|
76
|
-
* Binds the dependency module to the container
|
|
77
|
-
* @param container - Dependency container.
|
|
78
|
-
* @param moduleDeclaration - Declaration of the dependency module.
|
|
79
|
-
* @param options - Options for module binding.
|
|
80
|
-
*
|
|
81
|
-
* @example
|
|
82
|
-
* ```ts
|
|
83
|
-
* bindModule(container, LOGGER_MODULE);
|
|
84
|
-
* ```
|
|
85
|
-
*/
|
|
86
|
-
declare export function bindModule<T: Module<*>>(
|
|
87
|
-
container: Container,
|
|
88
|
-
moduleDeclaration: ModuleDeclaration<T>,
|
|
89
|
-
options?: BindModuleOptions,
|
|
90
|
-
): void;
|
|
91
|
-
|
|
92
|
-
export type ModuleBindingEntry =
|
|
93
|
-
| ModuleDeclaration<*>
|
|
94
|
-
| {
|
|
95
|
-
module: ModuleDeclaration<*>,
|
|
96
|
-
options: BindModuleOptions,
|
|
97
|
-
};
|
|
98
|
-
|
|
99
|
-
/**
|
|
100
|
-
* Binds dependency modules to the container
|
|
101
|
-
*
|
|
102
|
-
* @param container - Dependency container for binding
|
|
103
|
-
* @param modules - Array of module binding entries: module declaration or `{module: ModuleDeclaration, options: BindModuleOptions}` objects.
|
|
104
|
-
*/
|
|
105
|
-
declare export function bindModules(
|
|
106
|
-
container: Container,
|
|
107
|
-
modules: Array<ModuleBindingEntry>,
|
|
108
|
-
): void;
|
|
109
|
-
|
|
110
|
-
/**
|
|
111
|
-
* Declares a module binding
|
|
112
|
-
*
|
|
113
|
-
* @param declaration - a module declaration
|
|
114
|
-
* @param declaration.token - optional field
|
|
115
|
-
*
|
|
116
|
-
* @example
|
|
117
|
-
* ```ts
|
|
118
|
-
* const LOGGER_MODULE = declareModule<LoggerModule>({
|
|
119
|
-
* factory: (container) => {
|
|
120
|
-
* const transport = container.resolve(TRANSPORT_TOKEN).open();
|
|
121
|
-
* return {
|
|
122
|
-
* logger: { log: (message) => transport.write(message) },
|
|
123
|
-
* destroy: () => transport.close(),
|
|
124
|
-
* }
|
|
125
|
-
* },
|
|
126
|
-
* exportedProps: {
|
|
127
|
-
* logger: LOGGER_TOKEN,
|
|
128
|
-
* },
|
|
129
|
-
* });
|
|
130
|
-
* ```
|
|
131
|
-
*/
|
|
132
|
-
declare export function declareModule<T>(
|
|
133
|
-
declaration: ModuleDeclaration<T> | {
|
|
134
|
-
...$Rest<ModuleDeclaration<T>, {token: *}>,
|
|
135
|
-
token?: $PropertyType<ModuleDeclaration<T>, 'token'>,
|
|
136
|
-
},
|
|
137
|
-
): ModuleDeclaration<T>;
|
|
138
|
-
|
|
139
|
-
/**
|
|
140
|
-
* Declares bindings of several modules
|
|
141
|
-
*
|
|
142
|
-
* @param modules - module declaration entries
|
|
143
|
-
*/
|
|
144
|
-
declare export function declareModuleBindings(
|
|
145
|
-
modules: Array<ModuleBindingEntry>,
|
|
146
|
-
): ModuleDeclaration<Module<*>>;
|