ts-ioc-container 72.2.0 → 72.3.1

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 (58) hide show
  1. package/README.md +242 -0
  2. package/cjm/container/Container.js +3 -0
  3. package/cjm/container/EmptyContainer.js +3 -0
  4. package/cjm/feature/IFeatureFlags.js +6 -0
  5. package/cjm/index.js +11 -2
  6. package/cjm/token/BindableToken.js +63 -0
  7. package/cjm/token/GroupAliasToken.js +5 -50
  8. package/cjm/token/MultiVariantFeatureToken.js +84 -0
  9. package/cjm/token/SingleAliasToken.js +5 -50
  10. package/cjm/token/SingleToken.js +5 -50
  11. package/cjm/token/ToggleFeatureToken.js +10 -0
  12. package/esm/container/Container.js +3 -0
  13. package/esm/container/EmptyContainer.js +3 -0
  14. package/esm/feature/IFeatureFlags.js +3 -0
  15. package/esm/index.js +4 -0
  16. package/esm/token/BindableToken.js +59 -0
  17. package/esm/token/GroupAliasToken.js +5 -50
  18. package/esm/token/MultiVariantFeatureToken.js +80 -0
  19. package/esm/token/SingleAliasToken.js +5 -50
  20. package/esm/token/SingleToken.js +5 -50
  21. package/esm/token/ToggleFeatureToken.js +6 -0
  22. package/lib/container/Container.ts +4 -0
  23. package/lib/container/EmptyContainer.ts +4 -0
  24. package/lib/container/IContainer.ts +3 -0
  25. package/lib/feature/IFeatureFlags.ts +44 -0
  26. package/lib/index.ts +16 -0
  27. package/lib/registration/IRegistration.ts +12 -5
  28. package/lib/token/BindableToken.ts +137 -0
  29. package/lib/token/GroupAliasToken.ts +10 -69
  30. package/lib/token/MultiVariantFeatureToken.ts +160 -0
  31. package/lib/token/SingleAliasToken.ts +11 -67
  32. package/lib/token/SingleToken.ts +9 -67
  33. package/lib/token/ToggleFeatureToken.ts +27 -0
  34. package/package.json +3 -3
  35. package/typings/container/Container.d.ts +1 -0
  36. package/typings/container/Container.d.ts.map +1 -1
  37. package/typings/container/EmptyContainer.d.ts +1 -0
  38. package/typings/container/EmptyContainer.d.ts.map +1 -1
  39. package/typings/container/IContainer.d.ts +2 -0
  40. package/typings/container/IContainer.d.ts.map +1 -1
  41. package/typings/feature/IFeatureFlags.d.ts +42 -0
  42. package/typings/feature/IFeatureFlags.d.ts.map +1 -0
  43. package/typings/index.d.ts +4 -0
  44. package/typings/index.d.ts.map +1 -1
  45. package/typings/registration/IRegistration.d.ts +12 -5
  46. package/typings/registration/IRegistration.d.ts.map +1 -1
  47. package/typings/token/BindableToken.d.ts +80 -0
  48. package/typings/token/BindableToken.d.ts.map +1 -0
  49. package/typings/token/GroupAliasToken.d.ts +9 -24
  50. package/typings/token/GroupAliasToken.d.ts.map +1 -1
  51. package/typings/token/MultiVariantFeatureToken.d.ts +79 -0
  52. package/typings/token/MultiVariantFeatureToken.d.ts.map +1 -0
  53. package/typings/token/SingleAliasToken.d.ts +10 -22
  54. package/typings/token/SingleAliasToken.d.ts.map +1 -1
  55. package/typings/token/SingleToken.d.ts +8 -22
  56. package/typings/token/SingleToken.d.ts.map +1 -1
  57. package/typings/token/ToggleFeatureToken.d.ts +25 -0
  58. package/typings/token/ToggleFeatureToken.d.ts.map +1 -0
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../lib/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../lib/index.ts"],"names":[],"mappings":"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"}
@@ -72,11 +72,16 @@ export type ReturnTypeOfRegistration<T> = T extends IRegistration<infer R> ? R :
72
72
  export declare const getTransformers: (Target: constructor<unknown>) => MapFn<IRegistration<any>>[];
73
73
  /**
74
74
  * Class decorator that configures how `Registration.fromClass(Target)` registers
75
- * the class: binding keys, scope rules and provider pipes. A bare key or token
76
- * is shorthand for `bindTo(...)`. Without a key the class name is used.
75
+ * the class: binding keys, scope rules and provider pipes. Without a key the
76
+ * class name is used.
77
+ *
78
+ * Pass a key or a token directly - `@register(ILoggerToken)`, `@register('ILogger')`.
79
+ * It is bound exactly as `bindTo(...)` would bind it, so wrapping it in
80
+ * `bindTo(...)` here is redundant; `bindTo` is for the fluent
81
+ * `Registration...` chain.
77
82
  *
78
83
  * @example
79
- * @register(bindTo(ILoggerToken), scope((s) => s.hasTag('application')), singleton())
84
+ * @register(ILoggerToken, scope((s) => s.hasTag('application')), singleton())
80
85
  * class Logger implements ILogger {}
81
86
  *
82
87
  * container.addRegistration(Registration.fromClass(Logger));
@@ -86,9 +91,11 @@ export declare const register: (...mappers: RegistrationMapper[]) => ClassDecora
86
91
  * Binds a registration to one or more keys or tokens. A `SingleToken` binds its
87
92
  * key; an alias token (`toSingleAlias`, `toGroupAlias`) adds an alias.
88
93
  *
94
+ * Inside `@register(...)` pass the token itself instead - `@register(ILoggerToken)`
95
+ * binds it the same way, so `@register(bindTo(ILoggerToken))` is redundant.
96
+ *
89
97
  * @example
90
- * @register(bindTo(ILoggerToken))
91
- * class Logger {}
98
+ * Registration.fromClass(Logger).bindTo(ILoggerToken);
92
99
  *
93
100
  * @example
94
101
  * Registration.fromValue(config).bindTo('Config');
@@ -1 +1 @@
1
- {"version":3,"file":"IRegistration.d.ts","sourceRoot":"","sources":["../../lib/registration/IRegistration.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"IRegistration.d.ts","sourceRoot":"","sources":["../../lib/registration/IRegistration.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,80 @@
1
+ import { type DependencyKey, type IContainer } from '../container/IContainer.js';
2
+ import { InjectionToken } from './InjectionToken.js';
3
+ import { type BindToken } from './BindToken.js';
4
+ import { type IRegistration } from '../registration/IRegistration.js';
5
+ import { type ArgsFn, type ResolveOptions } from '../provider/IProvider.js';
6
+ import { type Serializable } from '../utils/basic.js';
7
+ import { type MultiVariantFeatureToken } from './MultiVariantFeatureToken.js';
8
+ type NoInferVariant<V> = [V][V extends unknown ? 0 : never];
9
+ /** Internal state of a {@link BindableToken}, propagated by its modifiers. Never pass it from outside. */
10
+ export type BindableTokenOptions = {
11
+ getArgsFn?: ArgsFn;
12
+ isLazy?: boolean;
13
+ tags?: string[];
14
+ memberships?: DependencyKey[];
15
+ };
16
+ /**
17
+ * Base of every token a registration can be bound to (`SingleToken`,
18
+ * `SingleAliasToken`, `GroupAliasToken`): a key, the args / lazy / tags state
19
+ * every modifier copies, and the feature memberships the token declares.
20
+ *
21
+ * `T` is the type bound to the token, `R` the type resolving it returns (an
22
+ * alias group resolves `T[]`). A subclass says only how it binds (`bindKey`)
23
+ * and how it resolves.
24
+ */
25
+ export declare abstract class BindableToken<T = any, R = T> extends InjectionToken<R> implements BindToken<T>, Serializable {
26
+ readonly token: DependencyKey;
27
+ private readonly getArgsFn;
28
+ private readonly isLazyByDefault;
29
+ private readonly memberships;
30
+ constructor(token: DependencyKey, { getArgsFn, isLazy, tags, memberships }?: BindableTokenOptions);
31
+ /** Binds `r` under this token, and into every feature this token declared itself a variant or fallback of. */
32
+ bindTo(r: IRegistration<T>): void;
33
+ /**
34
+ * Declares the dependency bound to this token the implementation of `feature`
35
+ * while the flag serves the variant `name`.
36
+ *
37
+ * @example
38
+ * const BlueButtonToken = new SingleToken<IButton>('BlueButton').variantOf(CheckoutButtonToken, 'blue');
39
+ *
40
+ * @register(BlueButtonToken)
41
+ * class BlueButton implements IButton {}
42
+ */
43
+ variantOf<V extends string>(feature: MultiVariantFeatureToken<T, V>, name: NoInferVariant<V>): this;
44
+ /**
45
+ * Declares the dependency bound to this token the primary variant of
46
+ * `feature`: used while the flag is on and no named variant implementation
47
+ * matches. The enabled implementation of a `ToggleFeatureToken`.
48
+ *
49
+ * @example
50
+ * const StripeGatewayToken = new SingleToken<IPaymentGateway>('StripeGateway').primaryVariantOf(PaymentGatewayToken);
51
+ *
52
+ * @register(StripeGatewayToken)
53
+ * class StripeGateway implements IPaymentGateway {}
54
+ */
55
+ primaryVariantOf(feature: MultiVariantFeatureToken<T, string>): this;
56
+ /**
57
+ * Declares the dependency bound to this token the fallback of `feature`: used
58
+ * whenever no variant implementation applies - the flag is off, serves
59
+ * nothing implemented, or its client throws.
60
+ *
61
+ * @example
62
+ * const LegacyGatewayToken = new SingleToken<IPaymentGateway>('LegacyGateway').fallbackOf(PaymentGatewayToken);
63
+ *
64
+ * @register(LegacyGatewayToken)
65
+ * class LegacyGateway implements IPaymentGateway {}
66
+ */
67
+ fallbackOf(feature: MultiVariantFeatureToken<T, string>): this;
68
+ args(...newArgs: unknown[]): this;
69
+ argsFn(fn: (s: IContainer) => unknown[]): this;
70
+ lazy(): this;
71
+ addTags(...tags: string[]): this;
72
+ toString(): string;
73
+ /** Binds `r` under this token's own key or alias. */
74
+ protected abstract bindKey(r: IRegistration<T>): void;
75
+ /** The options a subclass resolves with: runtime args first, then this token's args; lazy if either asks. */
76
+ protected toResolveOptions(s: IContainer, { args, lazy }?: ResolveOptions): ResolveOptions;
77
+ private copy;
78
+ }
79
+ export {};
80
+ //# sourceMappingURL=BindableToken.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"BindableToken.d.ts","sourceRoot":"","sources":["../../lib/token/BindableToken.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,aAAa,EAAE,KAAK,UAAU,EAAE,MAAM,yBAAyB,CAAC;AAC9E,OAAO,EAAe,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAC/D,OAAO,EAAE,KAAK,SAAS,EAAE,MAAM,aAAa,CAAC;AAC7C,OAAO,EAAE,KAAK,aAAa,EAAE,MAAM,+BAA+B,CAAC;AACnE,OAAO,EAAE,KAAK,MAAM,EAAE,KAAK,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACzE,OAAO,EAAE,KAAK,YAAY,EAAE,MAAM,gBAAgB,CAAC;AACnD,OAAO,EAAE,KAAK,wBAAwB,EAAE,MAAM,4BAA4B,CAAC;AAG3E,KAAK,cAAc,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,OAAO,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC;AAE5D,0GAA0G;AAC1G,MAAM,MAAM,oBAAoB,GAAG;IACjC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAChB,WAAW,CAAC,EAAE,aAAa,EAAE,CAAC;CAC/B,CAAC;AAEF;;;;;;;;GAQG;AACH,8BAAsB,aAAa,CAAC,CAAC,GAAG,GAAG,EAAE,CAAC,GAAG,CAAC,CAAE,SAAQ,cAAc,CAAC,CAAC,CAAE,YAAW,SAAS,CAAC,CAAC,CAAC,EAAE,YAAY;IAM/G,QAAQ,CAAC,KAAK,EAAE,aAAa;IAL/B,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAS;IACnC,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAU;IAC1C,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAkB;gBAGnC,KAAK,EAAE,aAAa,EAC7B,EAAE,SAAuB,EAAE,MAAc,EAAE,IAAS,EAAE,WAAgB,EAAE,GAAE,oBAAyB;IAQrG,8GAA8G;IAC9G,MAAM,CAAC,CAAC,EAAE,aAAa,CAAC,CAAC,CAAC,GAAG,IAAI;IAOjC;;;;;;;;;OASG;IACH,SAAS,CAAC,CAAC,SAAS,MAAM,EAAE,OAAO,EAAE,wBAAwB,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,cAAc,CAAC,CAAC,CAAC,GAAG,IAAI;IAInG;;;;;;;;;;OAUG;IACH,gBAAgB,CAAC,OAAO,EAAE,wBAAwB,CAAC,CAAC,EAAE,MAAM,CAAC,GAAG,IAAI;IAIpE;;;;;;;;;;OAUG;IACH,UAAU,CAAC,OAAO,EAAE,wBAAwB,CAAC,CAAC,EAAE,MAAM,CAAC,GAAG,IAAI;IAI9D,IAAI,CAAC,GAAG,OAAO,EAAE,OAAO,EAAE,GAAG,IAAI;IAKjC,MAAM,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,UAAU,KAAK,OAAO,EAAE,GAAG,IAAI;IAK9C,IAAI,IAAI,IAAI;IAIZ,OAAO,CAAC,GAAG,IAAI,EAAE,MAAM,EAAE,GAAG,IAAI;IAIhC,QAAQ,IAAI,MAAM;IAIlB,qDAAqD;IACrD,SAAS,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,EAAE,aAAa,CAAC,CAAC,CAAC,GAAG,IAAI;IAErD,6GAA6G;IAC7G,SAAS,CAAC,gBAAgB,CAAC,CAAC,EAAE,UAAU,EAAE,EAAE,IAAS,EAAE,IAAI,EAAE,GAAE,cAAmB,GAAG,cAAc;IAKnG,OAAO,CAAC,IAAI;CAUb"}
@@ -1,38 +1,23 @@
1
- import { DependencyKey, IContainer } from '../container/IContainer.js';
2
- import { InjectionToken } from './InjectionToken.js';
3
- import { IRegistration } from '../registration/IRegistration.js';
4
- import { BindToken } from './BindToken.js';
5
- import { ArgsFn, ResolveOptions } from '../provider/IProvider.js';
6
- import { Serializable } from '../utils/basic.js';
1
+ import { type DependencyKey, type IContainer } from '../container/IContainer.js';
2
+ import { BindableToken } from './BindableToken.js';
3
+ import { type IRegistration } from '../registration/IRegistration.js';
4
+ import { type ResolveOptions } from '../provider/IProvider.js';
7
5
  /**
8
- * A token for every dependency registered under an alias. As a `bindTo(...)`
6
+ * A token for every dependency registered under an alias. As a `@register(...)`
9
7
  * target it adds the alias; resolving returns all matches as an array.
10
8
  *
11
9
  * @example
12
10
  * const IMiddlewareToken = toGroupAlias<IMiddleware>('IMiddleware');
13
11
  *
14
- * @register(bindTo(IMiddlewareToken))
12
+ * @register(IMiddlewareToken)
15
13
  * class Auth implements IMiddleware {}
16
14
  *
17
15
  * IMiddlewareToken.resolve(scope); // IMiddleware[]
18
16
  */
19
- export declare class GroupAliasToken<T = any> extends InjectionToken<T[]> implements BindToken<T>, Serializable {
20
- readonly token: DependencyKey;
21
- private readonly _getArgsFn;
22
- private readonly _isLazy;
23
- constructor(token: DependencyKey, { getArgsFn, isLazy, tags, }?: {
24
- getArgsFn?: ArgsFn;
25
- isLazy?: boolean;
26
- tags?: string[];
27
- });
17
+ export declare class GroupAliasToken<T = any> extends BindableToken<T, T[]> {
28
18
  select<R>(fn: (target: T[]) => R[]): (s: IContainer) => R[];
29
- resolve(s: IContainer, { args, lazy }?: ResolveOptions): T[];
30
- bindTo(r: IRegistration<T>): void;
31
- args(...newArgs: unknown[]): GroupAliasToken<T>;
32
- argsFn(fn: (s: IContainer) => unknown[]): GroupAliasToken<T>;
33
- lazy(): GroupAliasToken<T>;
34
- addTags(...tags: string[]): GroupAliasToken<T>;
35
- toString(): string;
19
+ resolve(s: IContainer, options?: ResolveOptions): T[];
20
+ protected bindKey(r: IRegistration<T>): void;
36
21
  }
37
22
  /** Creates a {@link GroupAliasToken} for `token`. */
38
23
  export declare const toGroupAlias: <T>(token: DependencyKey) => GroupAliasToken<T>;
@@ -1 +1 @@
1
- {"version":3,"file":"GroupAliasToken.d.ts","sourceRoot":"","sources":["../../lib/token/GroupAliasToken.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AACpE,OAAO,EAAe,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAC/D,OAAO,EAAE,aAAa,EAAE,MAAM,+BAA+B,CAAC;AAC9D,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxC,OAAO,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAC/D,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAE9C;;;;;;;;;;;GAWG;AACH,qBAAa,eAAe,CAAC,CAAC,GAAG,GAAG,CAAE,SAAQ,cAAc,CAAC,CAAC,EAAE,CAAE,YAAW,SAAS,CAAC,CAAC,CAAC,EAAE,YAAY;IAKnG,QAAQ,CAAC,KAAK,EAAE,aAAa;IAJ/B,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAS;IACpC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAU;gBAGvB,KAAK,EAAE,aAAa,EAC7B,EACE,SAAuB,EACvB,MAAc,EACd,IAAS,GACV,GAAE;QAAE,SAAS,CAAC,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,OAAO,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,EAAE,CAAA;KAAO;IAOnE,MAAM,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,MAAM,EAAE,CAAC,EAAE,KAAK,CAAC,EAAE,IACxB,GAAG,UAAU;IAGvB,OAAO,CAAC,CAAC,EAAE,UAAU,EAAE,EAAE,IAAS,EAAE,IAAI,EAAE,GAAE,cAAmB,GAAG,CAAC,EAAE;IAOrE,MAAM,CAAC,CAAC,EAAE,aAAa,CAAC,CAAC,CAAC;IAI1B,IAAI,CAAC,GAAG,OAAO,EAAE,OAAO,EAAE;IAS1B,MAAM,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,UAAU,KAAK,OAAO,EAAE;IASvC,IAAI;IAQJ,OAAO,CAAC,GAAG,IAAI,EAAE,MAAM,EAAE,GAAG,eAAe,CAAC,CAAC,CAAC;IAQ9C,QAAQ,IAAI,MAAM;CAGnB;AAED,qDAAqD;AACrD,eAAO,MAAM,YAAY,GAAI,CAAC,EAAE,OAAO,aAAa,uBAAkC,CAAC"}
1
+ {"version":3,"file":"GroupAliasToken.d.ts","sourceRoot":"","sources":["../../lib/token/GroupAliasToken.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,aAAa,EAAE,KAAK,UAAU,EAAE,MAAM,yBAAyB,CAAC;AAC9E,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,EAAE,KAAK,aAAa,EAAE,MAAM,+BAA+B,CAAC;AACnE,OAAO,EAAE,KAAK,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAE5D;;;;;;;;;;;GAWG;AACH,qBAAa,eAAe,CAAC,CAAC,GAAG,GAAG,CAAE,SAAQ,aAAa,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC;IACjE,MAAM,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,MAAM,EAAE,CAAC,EAAE,KAAK,CAAC,EAAE,IACxB,GAAG,UAAU;IAGvB,OAAO,CAAC,CAAC,EAAE,UAAU,EAAE,OAAO,CAAC,EAAE,cAAc,GAAG,CAAC,EAAE;IAIrD,SAAS,CAAC,OAAO,CAAC,CAAC,EAAE,aAAa,CAAC,CAAC,CAAC;CAGtC;AAED,qDAAqD;AACrD,eAAO,MAAM,YAAY,GAAI,CAAC,EAAE,OAAO,aAAa,uBAAkC,CAAC"}
@@ -0,0 +1,79 @@
1
+ import { type DependencyKey, type IContainer } from '../container/IContainer.js';
2
+ import { InjectionToken } from './InjectionToken.js';
3
+ import { type ArgsFn, type ResolveOptions } from '../provider/IProvider.js';
4
+ import { type Serializable } from '../utils/basic.js';
5
+ import { type FeatureContext, type IFeatureFlags } from '../feature/IFeatureFlags.js';
6
+ export type FeatureTokenOptions = {
7
+ getArgsFn?: ArgsFn;
8
+ isLazy?: boolean;
9
+ tags?: string[];
10
+ };
11
+ /** What a feature token reads from its flag: whether it is on, and the named variant served, if any. */
12
+ export type FeatureEvaluation<V extends string = string> = {
13
+ enabled: boolean;
14
+ variant?: V;
15
+ };
16
+ /**
17
+ * A dependency switched by a multi-variant feature flag. The implementations
18
+ * decide where they belong - a bindable token declares itself
19
+ *
20
+ * - a named variant with `variantOf(feature, name)`: used while the flag serves `name`;
21
+ * - the primary variant with `primaryVariantOf(feature)`: used while the flag is
22
+ * on and no named variant implementation matches;
23
+ * - the fallback with `fallbackOf(feature)`: used otherwise - the flag is off,
24
+ * or its client throws.
25
+ *
26
+ * A flag always has a fallback: resolving a feature without one registered fails.
27
+ *
28
+ * `flag` is the flag's name on the flag service. `V` narrows the variant names
29
+ * implementations may claim. The flag client comes from `IFeatureFlagsToken`
30
+ * and the context from `IFeatureContextToken`, both resolved from the resolving
31
+ * scope, on every resolution.
32
+ *
33
+ * Subclasses change only how the served variant is evaluated - see
34
+ * `ToggleFeatureToken`, the on/off case.
35
+ *
36
+ * @example
37
+ * const CheckoutButtonToken = new MultiVariantFeatureToken<IButton, 'blue' | 'green'>('checkout-button');
38
+ *
39
+ * @register(new SingleToken<IButton>('GreyButton').fallbackOf(CheckoutButtonToken))
40
+ * class GreyButton implements IButton {}
41
+ *
42
+ * @register(new SingleToken<IButton>('BlueButton').variantOf(CheckoutButtonToken, 'blue'))
43
+ * class BlueButton implements IButton {}
44
+ *
45
+ * @register(new SingleToken<IButton>('GreenButton').primaryVariantOf(CheckoutButtonToken))
46
+ * class GreenButton implements IButton {}
47
+ */
48
+ export declare class MultiVariantFeatureToken<T = any, V extends string = string> extends InjectionToken<T> implements Serializable {
49
+ readonly flag: string;
50
+ private readonly _getArgsFn;
51
+ private readonly _isLazy;
52
+ constructor(flag: string, { getArgsFn, isLazy, tags }?: FeatureTokenOptions);
53
+ /** The alias an implementation of the variant `name` is bound to. Declare it with `token.variantOf(feature, name)`. */
54
+ variantAlias(name: V): DependencyKey;
55
+ /** The alias the primary variant is bound to. Declare it with `token.primaryVariantOf(feature)`. */
56
+ primaryAlias(): DependencyKey;
57
+ /** The alias the fallback is bound to. Declare it with `token.fallbackOf(feature)`. */
58
+ fallbackAlias(): DependencyKey;
59
+ /**
60
+ * @throws {DependencyNotFoundError} when the flag has no fallback, or the flag client, the feature context or the selected implementation cannot be resolved.
61
+ * @throws {ContainerDisposedError} when `s` has already been disposed.
62
+ */
63
+ resolve(s: IContainer, { args, lazy }?: ResolveOptions): T;
64
+ args(...newArgs: unknown[]): this;
65
+ argsFn(fn: (s: IContainer) => unknown[]): this;
66
+ lazy(): this;
67
+ addTags(...tags: string[]): this;
68
+ toString(): string;
69
+ /** Whether the flag is on for `context`, and the named variant it serves, if any. */
70
+ protected evaluate(flags: IFeatureFlags, context: FeatureContext): FeatureEvaluation<V>;
71
+ private copy;
72
+ /**
73
+ * The alias of the served variant's implementation, or of the fallback.
74
+ *
75
+ * @throws {DependencyNotFoundError} when the flag has no fallback, or the flag client or the feature context cannot be resolved.
76
+ */
77
+ private selectAlias;
78
+ }
79
+ //# sourceMappingURL=MultiVariantFeatureToken.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MultiVariantFeatureToken.d.ts","sourceRoot":"","sources":["../../lib/token/MultiVariantFeatureToken.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,aAAa,EAAE,KAAK,UAAU,EAAE,MAAM,yBAAyB,CAAC;AAC9E,OAAO,EAAe,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAC/D,OAAO,EAAE,KAAK,MAAM,EAAE,KAAK,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACzE,OAAO,EAAE,KAAK,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAGnD,OAAO,EACL,KAAK,cAAc,EACnB,KAAK,aAAa,EAGnB,MAAM,0BAA0B,CAAC;AAElC,MAAM,MAAM,mBAAmB,GAAG;IAAE,SAAS,CAAC,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,OAAO,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,EAAE,CAAA;CAAE,CAAC;AAE5F,wGAAwG;AACxG,MAAM,MAAM,iBAAiB,CAAC,CAAC,SAAS,MAAM,GAAG,MAAM,IAAI;IAAE,OAAO,EAAE,OAAO,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC,CAAA;CAAE,CAAC;AAE7F;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;AACH,qBAAa,wBAAwB,CAAC,CAAC,GAAG,GAAG,EAAE,CAAC,SAAS,MAAM,GAAG,MAAM,CACtE,SAAQ,cAAc,CAAC,CAAC,CACxB,YAAW,YAAY;IAMrB,QAAQ,CAAC,IAAI,EAAE,MAAM;IAJvB,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAS;IACpC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAU;gBAGvB,IAAI,EAAE,MAAM,EACrB,EAAE,SAAuB,EAAE,MAAc,EAAE,IAAS,EAAE,GAAE,mBAAwB;IAOlF,uHAAuH;IACvH,YAAY,CAAC,IAAI,EAAE,CAAC,GAAG,aAAa;IAIpC,oGAAoG;IACpG,YAAY,IAAI,aAAa;IAI7B,uFAAuF;IACvF,aAAa,IAAI,aAAa;IAI9B;;;OAGG;IACH,OAAO,CAAC,CAAC,EAAE,UAAU,EAAE,EAAE,IAAS,EAAE,IAAI,EAAE,GAAE,cAAmB,GAAG,CAAC;IAMnE,IAAI,CAAC,GAAG,OAAO,EAAE,OAAO,EAAE,GAAG,IAAI;IAKjC,MAAM,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,UAAU,KAAK,OAAO,EAAE,GAAG,IAAI;IAK9C,IAAI,IAAI,IAAI;IAIZ,OAAO,CAAC,GAAG,IAAI,EAAE,MAAM,EAAE,GAAG,IAAI;IAIhC,QAAQ,IAAI,MAAM;IAIlB,qFAAqF;IACrF,SAAS,CAAC,QAAQ,CAAC,KAAK,EAAE,aAAa,EAAE,OAAO,EAAE,cAAc,GAAG,iBAAiB,CAAC,CAAC,CAAC;IAOvF,OAAO,CAAC,IAAI;IAUZ;;;;OAIG;IACH,OAAO,CAAC,WAAW;CAuBpB"}
@@ -1,30 +1,18 @@
1
- import { DependencyKey, IContainer } from '../container/IContainer.js';
2
- import { InjectionToken } from './InjectionToken.js';
3
- import { IRegistration } from '../registration/IRegistration.js';
4
- import { BindToken } from './BindToken.js';
5
- import { ArgsFn, ResolveOptions } from '../provider/IProvider.js';
6
- import { Serializable } from '../utils/basic.js';
1
+ import { type DependencyKey, type IContainer } from '../container/IContainer.js';
2
+ import { BindableToken } from './BindableToken.js';
3
+ import { type IRegistration } from '../registration/IRegistration.js';
4
+ import { type ResolveOptions } from '../provider/IProvider.js';
7
5
  /**
8
6
  * Like {@link GroupAliasToken}, but resolves exactly one dependency registered
9
7
  * under the alias, and throws `DependencyNotFoundError` when there is none.
10
8
  */
11
- export declare class SingleAliasToken<T = any> extends InjectionToken<T> implements BindToken<T>, Serializable {
12
- readonly token: DependencyKey;
13
- private readonly _getArgsFn;
14
- private readonly _isLazy;
15
- constructor(token: DependencyKey, { getArgsFn, isLazy, tags, }?: {
16
- getArgsFn?: ArgsFn;
17
- isLazy?: boolean;
18
- tags?: string[];
19
- });
9
+ export declare class SingleAliasToken<T = any> extends BindableToken<T> {
20
10
  select<R>(fn: (target: T) => R): (s: IContainer) => R;
21
- resolve(s: IContainer, { args, lazy }?: ResolveOptions): T;
22
- bindTo(r: IRegistration<T>): void;
23
- args(...newArgs: unknown[]): SingleAliasToken<T>;
24
- argsFn(fn: (s: IContainer) => unknown[]): SingleAliasToken<T>;
25
- lazy(): SingleAliasToken<T>;
26
- addTags(...tags: string[]): SingleAliasToken<T>;
27
- toString(): string;
11
+ /**
12
+ * @throws {DependencyNotFoundError} when no accessible registration carries the alias.
13
+ */
14
+ resolve(s: IContainer, options?: ResolveOptions): T;
15
+ protected bindKey(r: IRegistration<T>): void;
28
16
  }
29
17
  /** Creates a {@link SingleAliasToken} for `token`. */
30
18
  export declare const toSingleAlias: <T>(token: DependencyKey) => SingleAliasToken<T>;
@@ -1 +1 @@
1
- {"version":3,"file":"SingleAliasToken.d.ts","sourceRoot":"","sources":["../../lib/token/SingleAliasToken.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AACpE,OAAO,EAAe,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAC/D,OAAO,EAAE,aAAa,EAAE,MAAM,+BAA+B,CAAC;AAC9D,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxC,OAAO,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAC/D,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAE9C;;;GAGG;AACH,qBAAa,gBAAgB,CAAC,CAAC,GAAG,GAAG,CAAE,SAAQ,cAAc,CAAC,CAAC,CAAE,YAAW,SAAS,CAAC,CAAC,CAAC,EAAE,YAAY;IAKlG,QAAQ,CAAC,KAAK,EAAE,aAAa;IAJ/B,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAS;IACpC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAU;gBAGvB,KAAK,EAAE,aAAa,EAC7B,EACE,SAAuB,EACvB,MAAc,EACd,IAAS,GACV,GAAE;QAAE,SAAS,CAAC,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,OAAO,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,EAAE,CAAA;KAAO;IAOnE,MAAM,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,MAAM,EAAE,CAAC,KAAK,CAAC,IACpB,GAAG,UAAU;IAGvB,OAAO,CAAC,CAAC,EAAE,UAAU,EAAE,EAAE,IAAS,EAAE,IAAI,EAAE,GAAE,cAAmB,GAAG,CAAC;IAOnE,MAAM,CAAC,CAAC,EAAE,aAAa,CAAC,CAAC,CAAC;IAI1B,IAAI,CAAC,GAAG,OAAO,EAAE,OAAO,EAAE;IAS1B,MAAM,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,UAAU,KAAK,OAAO,EAAE;IASvC,IAAI;IAQJ,OAAO,CAAC,GAAG,IAAI,EAAE,MAAM,EAAE,GAAG,gBAAgB,CAAC,CAAC,CAAC;IAQ/C,QAAQ,IAAI,MAAM;CAGnB;AAED,sDAAsD;AACtD,eAAO,MAAM,aAAa,GAAI,CAAC,EAAE,OAAO,aAAa,wBAAmC,CAAC"}
1
+ {"version":3,"file":"SingleAliasToken.d.ts","sourceRoot":"","sources":["../../lib/token/SingleAliasToken.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,aAAa,EAAE,KAAK,UAAU,EAAE,MAAM,yBAAyB,CAAC;AAC9E,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,EAAE,KAAK,aAAa,EAAE,MAAM,+BAA+B,CAAC;AACnE,OAAO,EAAE,KAAK,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAE5D;;;GAGG;AACH,qBAAa,gBAAgB,CAAC,CAAC,GAAG,GAAG,CAAE,SAAQ,aAAa,CAAC,CAAC,CAAC;IAC7D,MAAM,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,MAAM,EAAE,CAAC,KAAK,CAAC,IACpB,GAAG,UAAU;IAGvB;;OAEG;IACH,OAAO,CAAC,CAAC,EAAE,UAAU,EAAE,OAAO,CAAC,EAAE,cAAc,GAAG,CAAC;IAInD,SAAS,CAAC,OAAO,CAAC,CAAC,EAAE,aAAa,CAAC,CAAC,CAAC;CAGtC;AAED,sDAAsD;AACtD,eAAO,MAAM,aAAa,GAAI,CAAC,EAAE,OAAO,aAAa,wBAAmC,CAAC"}
@@ -1,8 +1,7 @@
1
- import { DependencyKey, IContainer } from '../container/IContainer.js';
2
- import { InjectionToken } from './InjectionToken.js';
3
- import { IRegistration } from '../registration/IRegistration.js';
4
- import { ArgsFn, ResolveOptions } from '../provider/IProvider.js';
5
- import { Serializable } from '../utils/basic.js';
1
+ import { type IContainer } from '../container/IContainer.js';
2
+ import { BindableToken } from './BindableToken.js';
3
+ import { type IRegistration } from '../registration/IRegistration.js';
4
+ import { type ResolveOptions } from '../provider/IProvider.js';
6
5
  /**
7
6
  * A typed handle for one dependency key - the usual way to name a dependency.
8
7
  * `args(...)`, `argsFn(...)` and `lazy()` return a new token and never change
@@ -11,7 +10,7 @@ import { Serializable } from '../utils/basic.js';
11
10
  * @example
12
11
  * const ILoggerToken = new SingleToken<ILogger>('ILogger');
13
12
  *
14
- * @register(bindTo(ILoggerToken))
13
+ * @register(ILoggerToken)
15
14
  * class Logger implements ILogger {}
16
15
  *
17
16
  * class App {
@@ -20,22 +19,9 @@ import { Serializable } from '../utils/basic.js';
20
19
  * ILoggerToken.resolve(scope);
21
20
  * ILoggerToken.args('prefix').lazy().resolve(scope);
22
21
  */
23
- export declare class SingleToken<T = any> extends InjectionToken<T> implements Serializable {
24
- token: DependencyKey;
25
- private readonly _getArgsFn;
26
- private readonly _isLazy;
27
- constructor(token: DependencyKey, { getArgsFn, isLazy, tags, }?: {
28
- getArgsFn?: ArgsFn;
29
- isLazy?: boolean;
30
- tags?: string[];
31
- });
22
+ export declare class SingleToken<T = any> extends BindableToken<T> {
32
23
  select<R>(fn: (target: T) => R): (s: IContainer) => R;
33
- resolve(s: IContainer, { args, lazy }?: ResolveOptions): T;
34
- bindTo(r: IRegistration<T>): void;
35
- args(...newArgs: unknown[]): SingleToken<T>;
36
- argsFn(fn: (s: IContainer) => unknown[]): SingleToken<T>;
37
- lazy(): SingleToken<T>;
38
- addTags(...tags: string[]): SingleToken<T>;
39
- toString(): string;
24
+ resolve(s: IContainer, options?: ResolveOptions): T;
25
+ protected bindKey(r: IRegistration<T>): void;
40
26
  }
41
27
  //# sourceMappingURL=SingleToken.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"SingleToken.d.ts","sourceRoot":"","sources":["../../lib/token/SingleToken.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AACpE,OAAO,EAAe,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAC/D,OAAO,EAAE,aAAa,EAAE,MAAM,+BAA+B,CAAC;AAC9D,OAAO,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAC/D,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAE9C;;;;;;;;;;;;;;;;GAgBG;AACH,qBAAa,WAAW,CAAC,CAAC,GAAG,GAAG,CAAE,SAAQ,cAAc,CAAC,CAAC,CAAE,YAAW,YAAY;IAKxE,KAAK,EAAE,aAAa;IAJ7B,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAS;IACpC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAU;gBAGzB,KAAK,EAAE,aAAa,EAC3B,EACE,SAAuB,EACvB,MAAc,EACd,IAAS,GACV,GAAE;QAAE,SAAS,CAAC,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,OAAO,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,EAAE,CAAA;KAAO;IAOnE,MAAM,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,MAAM,EAAE,CAAC,KAAK,CAAC,IACpB,GAAG,UAAU;IAGvB,OAAO,CAAC,CAAC,EAAE,UAAU,EAAE,EAAE,IAAS,EAAE,IAAI,EAAE,GAAE,cAAmB,GAAG,CAAC;IAOnE,MAAM,CAAC,CAAC,EAAE,aAAa,CAAC,CAAC,CAAC;IAI1B,IAAI,CAAC,GAAG,OAAO,EAAE,OAAO,EAAE;IAS1B,MAAM,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,UAAU,KAAK,OAAO,EAAE;IASvC,IAAI;IAQJ,OAAO,CAAC,GAAG,IAAI,EAAE,MAAM,EAAE,GAAG,WAAW,CAAC,CAAC,CAAC;IAQ1C,QAAQ,IAAI,MAAM;CAGnB"}
1
+ {"version":3,"file":"SingleToken.d.ts","sourceRoot":"","sources":["../../lib/token/SingleToken.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,UAAU,EAAE,MAAM,yBAAyB,CAAC;AAC1D,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,EAAE,KAAK,aAAa,EAAE,MAAM,+BAA+B,CAAC;AACnE,OAAO,EAAE,KAAK,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAE5D;;;;;;;;;;;;;;;;GAgBG;AACH,qBAAa,WAAW,CAAC,CAAC,GAAG,GAAG,CAAE,SAAQ,aAAa,CAAC,CAAC,CAAC;IACxD,MAAM,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,MAAM,EAAE,CAAC,KAAK,CAAC,IACpB,GAAG,UAAU;IAGvB,OAAO,CAAC,CAAC,EAAE,UAAU,EAAE,OAAO,CAAC,EAAE,cAAc,GAAG,CAAC;IAInD,SAAS,CAAC,OAAO,CAAC,CAAC,EAAE,aAAa,CAAC,CAAC,CAAC;CAGtC"}
@@ -0,0 +1,25 @@
1
+ import { type FeatureEvaluation, MultiVariantFeatureToken } from './MultiVariantFeatureToken.js';
2
+ import { type FeatureContext, type IFeatureFlags } from '../feature/IFeatureFlags.js';
3
+ /**
4
+ * The on/off case of {@link MultiVariantFeatureToken}: a flag with no named
5
+ * variants, only a primary one, served while `isEnabled` says so. Everything
6
+ * else - the fallback, the context, args and laziness - is the multi-variant
7
+ * token's.
8
+ *
9
+ * @example
10
+ * const PaymentGatewayToken = new ToggleFeatureToken<IPaymentGateway>('new-checkout');
11
+ *
12
+ * @register(new SingleToken<IPaymentGateway>('LegacyGateway').fallbackOf(PaymentGatewayToken))
13
+ * class LegacyGateway implements IPaymentGateway {}
14
+ *
15
+ * @register(new SingleToken<IPaymentGateway>('StripeGateway').primaryVariantOf(PaymentGatewayToken))
16
+ * class StripeGateway implements IPaymentGateway {}
17
+ *
18
+ * class Checkout {
19
+ * constructor(@inject(by(PaymentGatewayToken)) gateway: IPaymentGateway) {}
20
+ * }
21
+ */
22
+ export declare class ToggleFeatureToken<T = any> extends MultiVariantFeatureToken<T, never> {
23
+ protected evaluate(flags: IFeatureFlags, context: FeatureContext): FeatureEvaluation<never>;
24
+ }
25
+ //# sourceMappingURL=ToggleFeatureToken.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ToggleFeatureToken.d.ts","sourceRoot":"","sources":["../../lib/token/ToggleFeatureToken.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,iBAAiB,EAAE,wBAAwB,EAAE,MAAM,4BAA4B,CAAC;AAC9F,OAAO,EAAE,KAAK,cAAc,EAAE,KAAK,aAAa,EAAE,MAAM,0BAA0B,CAAC;AAEnF;;;;;;;;;;;;;;;;;;GAkBG;AACH,qBAAa,kBAAkB,CAAC,CAAC,GAAG,GAAG,CAAE,SAAQ,wBAAwB,CAAC,CAAC,EAAE,KAAK,CAAC;cAC9D,QAAQ,CAAC,KAAK,EAAE,aAAa,EAAE,OAAO,EAAE,cAAc,GAAG,iBAAiB,CAAC,KAAK,CAAC;CAGrG"}