@avijs/di 0.5.3 → 0.6.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/dist/index.d.ts +2 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -0
- package/dist/index.js.map +1 -1
- package/dist/provider.d.ts +14 -1
- package/dist/provider.d.ts.map +1 -1
- package/dist/provider.js +7 -0
- package/dist/provider.js.map +1 -1
- package/package.json +1 -1
- package/src/index.ts +9 -1
- package/src/provider.ts +20 -1
package/dist/index.d.ts
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
export { Container } from './container.js';
|
|
2
2
|
export type { ContainerOptions, ModuleDefinition, ModuleDescription, ProviderDescription, RequestScope, } from './container.js';
|
|
3
|
-
export
|
|
3
|
+
export { defineFactory } from './provider.js';
|
|
4
|
+
export type { ClassProvider, FactoryProvider, Provider, Scope, TypedFactoryProvider, ValueProvider, } from './provider.js';
|
|
4
5
|
export { createToken } from './token.js';
|
|
5
6
|
export type { Class, Constructor, InjectionToken, ResolveTokens, Token, TokenType, } from './token.js';
|
|
6
7
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAC3C,YAAY,EACV,gBAAgB,EAChB,gBAAgB,EAChB,iBAAiB,EACjB,mBAAmB,EACnB,YAAY,GACb,MAAM,gBAAgB,CAAC;AACxB,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAC3C,YAAY,EACV,gBAAgB,EAChB,gBAAgB,EAChB,iBAAiB,EACjB,mBAAmB,EACnB,YAAY,GACb,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAC9C,YAAY,EACV,aAAa,EACb,eAAe,EACf,QAAQ,EACR,KAAK,EACL,oBAAoB,EACpB,aAAa,GACd,MAAM,eAAe,CAAC;AACvB,OAAO,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AACzC,YAAY,EACV,KAAK,EACL,WAAW,EACX,cAAc,EACd,aAAa,EACb,KAAK,EACL,SAAS,GACV,MAAM,YAAY,CAAC"}
|
package/dist/index.js
CHANGED
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAQ3C,OAAO,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAS9C,OAAO,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC"}
|
package/dist/provider.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { type Constructor, type Token } from './token.js';
|
|
1
|
+
import { type Constructor, type ResolveTokens, type Token } from './token.js';
|
|
2
2
|
/**
|
|
3
3
|
* `singleton`: one instance per app. `transient`: a new one per injection. `request`: one per
|
|
4
4
|
* request, created on first use and disposed after the handler.
|
|
@@ -25,6 +25,19 @@ export interface FactoryProvider<T = unknown> {
|
|
|
25
25
|
*/
|
|
26
26
|
dispose?(value: T): unknown;
|
|
27
27
|
}
|
|
28
|
+
/** A factory provider whose parameters are typed from `inject`. */
|
|
29
|
+
export interface TypedFactoryProvider<T, K extends readonly Token[]> {
|
|
30
|
+
provide: Token<T>;
|
|
31
|
+
inject?: K;
|
|
32
|
+
useFactory: (...deps: ResolveTokens<K>) => T | Promise<T>;
|
|
33
|
+
scope?: Scope;
|
|
34
|
+
dispose?(value: T): unknown;
|
|
35
|
+
}
|
|
36
|
+
/**
|
|
37
|
+
* A factory provider checked against its `inject` list: parameters are inferred in order, and the
|
|
38
|
+
* result must fit `provide`. Inside a plain `providers` array TypeScript cannot do this.
|
|
39
|
+
*/
|
|
40
|
+
export declare function defineFactory<T, const K extends readonly Token[] = []>(provider: TypedFactoryProvider<T, K>): FactoryProvider<T>;
|
|
28
41
|
export type Provider<T = unknown> = Constructor<T> | ClassProvider<T> | ValueProvider<T> | FactoryProvider<T>;
|
|
29
42
|
export interface ProviderSpec {
|
|
30
43
|
readonly token: Token;
|
package/dist/provider.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"provider.d.ts","sourceRoot":"","sources":["../src/provider.ts"],"names":[],"mappings":"AAAA,OAAO,EAAsB,KAAK,WAAW,EAAE,KAAK,KAAK,EAAE,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"provider.d.ts","sourceRoot":"","sources":["../src/provider.ts"],"names":[],"mappings":"AAAA,OAAO,EAAsB,KAAK,WAAW,EAAE,KAAK,aAAa,EAAE,KAAK,KAAK,EAAE,MAAM,YAAY,CAAC;AAElG;;;GAGG;AACH,MAAM,MAAM,KAAK,GAAG,WAAW,GAAG,WAAW,GAAG,SAAS,CAAC;AAE1D,MAAM,WAAW,aAAa,CAAC,CAAC,GAAG,OAAO;IACxC,OAAO,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC;IAClB,QAAQ,EAAE,WAAW,CAAC,CAAC,CAAC,CAAC;IACzB,KAAK,CAAC,EAAE,KAAK,CAAC;CACf;AAED,MAAM,WAAW,aAAa,CAAC,CAAC,GAAG,OAAO;IACxC,OAAO,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC;IAClB,QAAQ,EAAE,CAAC,CAAC;CACb;AAED,MAAM,WAAW,eAAe,CAAC,CAAC,GAAG,OAAO;IAC1C,OAAO,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC;IAClB,iFAAiF;IACjF,UAAU,EAAE,CAAC,GAAG,IAAI,EAAE,KAAK,EAAE,KAAK,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;IACjD,MAAM,CAAC,EAAE,SAAS,KAAK,EAAE,CAAC;IAC1B,KAAK,CAAC,EAAE,KAAK,CAAC;IACd;;;OAGG;IACH,OAAO,CAAC,CAAC,KAAK,EAAE,CAAC,GAAG,OAAO,CAAC;CAC7B;AAED,mEAAmE;AACnE,MAAM,WAAW,oBAAoB,CAAC,CAAC,EAAE,CAAC,SAAS,SAAS,KAAK,EAAE;IACjE,OAAO,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC;IAClB,MAAM,CAAC,EAAE,CAAC,CAAC;IACX,UAAU,EAAE,CAAC,GAAG,IAAI,EAAE,aAAa,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;IAC1D,KAAK,CAAC,EAAE,KAAK,CAAC;IACd,OAAO,CAAC,CAAC,KAAK,EAAE,CAAC,GAAG,OAAO,CAAC;CAC7B;AAED;;;GAGG;AACH,wBAAgB,aAAa,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,SAAS,SAAS,KAAK,EAAE,GAAG,EAAE,EACpE,QAAQ,EAAE,oBAAoB,CAAC,CAAC,EAAE,CAAC,CAAC,GACnC,eAAe,CAAC,CAAC,CAAC,CAEpB;AAED,MAAM,MAAM,QAAQ,CAAC,CAAC,GAAG,OAAO,IAC9B,WAAW,CAAC,CAAC,CAAC,GAAG,aAAa,CAAC,CAAC,CAAC,GAAG,aAAa,CAAC,CAAC,CAAC,GAAG,eAAe,CAAC,CAAC,CAAC,CAAC;AAE5E,MAAM,WAAW,YAAY;IAC3B,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC;IACtB,QAAQ,CAAC,IAAI,EAAE,OAAO,GAAG,OAAO,GAAG,SAAS,CAAC;IAC7C,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC;IACtB,QAAQ,CAAC,IAAI,EAAE,SAAS,KAAK,EAAE,CAAC;IAChC,QAAQ,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,OAAO,EAAE,KAAK,OAAO,CAAC;IAC9C,QAAQ,CAAC,OAAO,EAAE,CAAC,CAAC,KAAK,EAAE,OAAO,KAAK,OAAO,CAAC,GAAG,SAAS,CAAC;CAC7D;AAED,yFAAyF;AACzF,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,GAAG,YAAY,CAsEhF"}
|
package/dist/provider.js
CHANGED
|
@@ -1,4 +1,11 @@
|
|
|
1
1
|
import { isToken, tokenName } from './token.js';
|
|
2
|
+
/**
|
|
3
|
+
* A factory provider checked against its `inject` list: parameters are inferred in order, and the
|
|
4
|
+
* result must fit `provide`. Inside a plain `providers` array TypeScript cannot do this.
|
|
5
|
+
*/
|
|
6
|
+
export function defineFactory(provider) {
|
|
7
|
+
return provider;
|
|
8
|
+
}
|
|
2
9
|
/** Validates a provider and converts it to one internal shape. `where` labels errors. */
|
|
3
10
|
export function normalizeProvider(provider, where) {
|
|
4
11
|
if (typeof provider === 'function') {
|
package/dist/provider.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"provider.js","sourceRoot":"","sources":["../src/provider.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,SAAS,
|
|
1
|
+
{"version":3,"file":"provider.js","sourceRoot":"","sources":["../src/provider.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,SAAS,EAAoD,MAAM,YAAY,CAAC;AAyClG;;;GAGG;AACH,MAAM,UAAU,aAAa,CAC3B,QAAoC;IAEpC,OAAO,QAAyC,CAAC;AACnD,CAAC;AAcD,yFAAyF;AACzF,MAAM,UAAU,iBAAiB,CAAC,QAAiB,EAAE,KAAa;IAChE,IAAI,OAAO,QAAQ,KAAK,UAAU,EAAE,CAAC;QACnC,OAAO,SAAS,CAAC,QAAuB,EAAE,QAAuB,EAAE,WAAW,EAAE,KAAK,CAAC,CAAC;IACzF,CAAC;IACD,IAAI,OAAO,QAAQ,KAAK,QAAQ,IAAI,QAAQ,KAAK,IAAI,EAAE,CAAC;QACtD,MAAM,IAAI,SAAS,CAAC,uBAAuB,KAAK,KAAK,MAAM,CAAC,QAAQ,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;IAC5F,CAAC;IAED,MAAM,CAAC,GAAG,QAAmC,CAAC;IAC9C,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC;QAC3B,MAAM,IAAI,SAAS,CACjB,8BAA8B,KAAK,KAAK,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,EAAE,CACpF,CAAC;IACJ,CAAC;IACD,MAAM,KAAK,GAAG,CAAC,CAAC,SAAS,CAAC,CAAC;IAC3B,MAAM,KAAK,GAAG,GAAG,KAAK,KAAK,SAAS,CAAC,KAAK,CAAC,GAAG,CAAC;IAC/C,MAAM,KAAK,GAAG,CAAC,UAAU,EAAE,UAAU,EAAE,YAAY,CAAC,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC;IAC/E,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACvB,MAAM,IAAI,SAAS,CACjB,eAAe,KAAK,wDAAwD,CAC7E,CAAC;IACJ,CAAC;IAED,IAAI,UAAU,IAAI,CAAC,EAAE,CAAC;QACpB,MAAM,KAAK,GAAG,CAAC,CAAC,UAAU,CAAC,CAAC;QAC5B,OAAO;YACL,KAAK;YACL,IAAI,EAAE,OAAO;YACb,KAAK,EAAE,WAAW;YAClB,IAAI,EAAE,EAAE;YACR,MAAM,EAAE,GAAG,EAAE,CAAC,KAAK;YACnB,OAAO,EAAE,SAAS;SACnB,CAAC;IACJ,CAAC;IAED,MAAM,KAAK,GAAG,CAAC,CAAC,OAAO,CAAC,IAAI,WAAW,CAAC;IACxC,IAAI,KAAK,KAAK,WAAW,IAAI,KAAK,KAAK,WAAW,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;QAC1E,MAAM,IAAI,SAAS,CACjB,iBAAiB,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,KAAK,GAAG,CAAC,CAAC,CAAC,OAAO,KAAK,OAAO,KAAK,EAAE,CACvF,CAAC;IACJ,CAAC;IAED,IAAI,UAAU,IAAI,CAAC,EAAE,CAAC;QACpB,IAAI,OAAO,CAAC,CAAC,UAAU,CAAC,KAAK,UAAU,EAAE,CAAC;YACxC,MAAM,IAAI,SAAS,CAAC,eAAe,KAAK,kBAAkB,CAAC,CAAC;QAC9D,CAAC;QACD,OAAO,SAAS,CAAC,KAAK,EAAE,CAAC,CAAC,UAAU,CAAgB,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC;IACtE,CAAC;IAED,MAAM,OAAO,GAAG,CAAC,CAAC,YAAY,CAAC,CAAC;IAChC,IAAI,OAAO,OAAO,KAAK,UAAU;QAC/B,MAAM,IAAI,SAAS,CAAC,iBAAiB,KAAK,qBAAqB,CAAC,CAAC;IACnE,MAAM,IAAI,GAAG,WAAW,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,GAAG,KAAK,SAAS,CAAC,CAAC;IACzD,IAAI,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC;QACjC,MAAM,IAAI,SAAS,CACjB,cAAc,KAAK,UAAU,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,+BAA+B,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CACxG,CAAC;IACJ,CAAC;IACD,MAAM,OAAO,GAAG,CAAC,CAAC,SAAS,CAAC,CAAC;IAC7B,IAAI,OAAO,KAAK,SAAS,IAAI,OAAO,OAAO,KAAK,UAAU,EAAE,CAAC;QAC3D,MAAM,IAAI,SAAS,CAAC,cAAc,KAAK,qBAAqB,CAAC,CAAC;IAChE,CAAC;IACD,OAAO;QACL,KAAK;QACL,IAAI,EAAE,SAAS;QACf,KAAK;QACL,IAAI;QACJ,MAAM,EAAE,CAAC,MAAM,EAAE,EAAE,CAAE,OAA2C,CAAC,GAAG,MAAM,CAAC;QAC3E,OAAO,EAAE,OAAoD;KAC9D,CAAC;AACJ,CAAC;AAED,SAAS,SAAS,CAAC,KAAY,EAAE,GAAgB,EAAE,KAAY,EAAE,KAAa;IAC5E,MAAM,IAAI,GAAG,WAAW,CAAC,GAAG,CAAC,MAAM,EAAE,GAAG,KAAK,IAAI,GAAG,CAAC,IAAI,SAAS,CAAC,CAAC;IACpE,IAAI,GAAG,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC;QAC7B,MAAM,IAAI,SAAS,CACjB,GAAG,GAAG,CAAC,IAAI,IAAI,OAAO,UAAU,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,kDAAkD,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,KAAK,GAAG,CACxI,CAAC;IACJ,CAAC;IACD,MAAM,IAAI,GAAG,GAAqD,CAAC;IACnE,OAAO;QACL,KAAK;QACL,IAAI,EAAE,OAAO;QACb,KAAK;QACL,IAAI;QACJ,MAAM,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,IAAI,IAAI,CAAC,GAAG,MAAM,CAAC;QACvC,OAAO,EAAE,SAAS;KACnB,CAAC;AACJ,CAAC;AAED,SAAS,WAAW,CAAC,MAAe,EAAE,KAAa;IACjD,IAAI,MAAM,KAAK,SAAS;QAAE,OAAO,EAAE,CAAC;IACpC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC;QAAE,MAAM,IAAI,SAAS,CAAC,GAAG,KAAK,6BAA6B,CAAC,CAAC;IACvF,MAAM,CAAC,OAAO,CAAC,CAAC,KAAc,EAAE,CAAC,EAAE,EAAE;QACnC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;YACpB,MAAM,IAAI,SAAS,CACjB,oBAAoB,KAAK,IAAI,MAAM,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,CAC1E,CAAC;QACJ,CAAC;IACH,CAAC,CAAC,CAAC;IACH,OAAO,MAA0B,CAAC;AACpC,CAAC;AAED,SAAS,IAAI,CAAC,KAAc;IAC1B,OAAO,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,gCAAgC,CAAC,CAAC,CAAC,EAAE,CAAC;AACrE,CAAC"}
|
package/package.json
CHANGED
package/src/index.ts
CHANGED
|
@@ -6,7 +6,15 @@ export type {
|
|
|
6
6
|
ProviderDescription,
|
|
7
7
|
RequestScope,
|
|
8
8
|
} from './container.js';
|
|
9
|
-
export
|
|
9
|
+
export { defineFactory } from './provider.js';
|
|
10
|
+
export type {
|
|
11
|
+
ClassProvider,
|
|
12
|
+
FactoryProvider,
|
|
13
|
+
Provider,
|
|
14
|
+
Scope,
|
|
15
|
+
TypedFactoryProvider,
|
|
16
|
+
ValueProvider,
|
|
17
|
+
} from './provider.js';
|
|
10
18
|
export { createToken } from './token.js';
|
|
11
19
|
export type {
|
|
12
20
|
Class,
|
package/src/provider.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { isToken, tokenName, type Constructor, type Token } from './token.js';
|
|
1
|
+
import { isToken, tokenName, type Constructor, type ResolveTokens, type Token } from './token.js';
|
|
2
2
|
|
|
3
3
|
/**
|
|
4
4
|
* `singleton`: one instance per app. `transient`: a new one per injection. `request`: one per
|
|
@@ -30,6 +30,25 @@ export interface FactoryProvider<T = unknown> {
|
|
|
30
30
|
dispose?(value: T): unknown;
|
|
31
31
|
}
|
|
32
32
|
|
|
33
|
+
/** A factory provider whose parameters are typed from `inject`. */
|
|
34
|
+
export interface TypedFactoryProvider<T, K extends readonly Token[]> {
|
|
35
|
+
provide: Token<T>;
|
|
36
|
+
inject?: K;
|
|
37
|
+
useFactory: (...deps: ResolveTokens<K>) => T | Promise<T>;
|
|
38
|
+
scope?: Scope;
|
|
39
|
+
dispose?(value: T): unknown;
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
/**
|
|
43
|
+
* A factory provider checked against its `inject` list: parameters are inferred in order, and the
|
|
44
|
+
* result must fit `provide`. Inside a plain `providers` array TypeScript cannot do this.
|
|
45
|
+
*/
|
|
46
|
+
export function defineFactory<T, const K extends readonly Token[] = []>(
|
|
47
|
+
provider: TypedFactoryProvider<T, K>,
|
|
48
|
+
): FactoryProvider<T> {
|
|
49
|
+
return provider as unknown as FactoryProvider<T>;
|
|
50
|
+
}
|
|
51
|
+
|
|
33
52
|
export type Provider<T = unknown> =
|
|
34
53
|
Constructor<T> | ClassProvider<T> | ValueProvider<T> | FactoryProvider<T>;
|
|
35
54
|
|