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.
- package/README.md +242 -0
- package/cjm/container/Container.js +3 -0
- package/cjm/container/EmptyContainer.js +3 -0
- package/cjm/feature/IFeatureFlags.js +6 -0
- package/cjm/index.js +11 -2
- package/cjm/token/BindableToken.js +63 -0
- package/cjm/token/GroupAliasToken.js +5 -50
- package/cjm/token/MultiVariantFeatureToken.js +84 -0
- package/cjm/token/SingleAliasToken.js +5 -50
- package/cjm/token/SingleToken.js +5 -50
- package/cjm/token/ToggleFeatureToken.js +10 -0
- package/esm/container/Container.js +3 -0
- package/esm/container/EmptyContainer.js +3 -0
- package/esm/feature/IFeatureFlags.js +3 -0
- package/esm/index.js +4 -0
- package/esm/token/BindableToken.js +59 -0
- package/esm/token/GroupAliasToken.js +5 -50
- package/esm/token/MultiVariantFeatureToken.js +80 -0
- package/esm/token/SingleAliasToken.js +5 -50
- package/esm/token/SingleToken.js +5 -50
- package/esm/token/ToggleFeatureToken.js +6 -0
- package/lib/container/Container.ts +4 -0
- package/lib/container/EmptyContainer.ts +4 -0
- package/lib/container/IContainer.ts +3 -0
- package/lib/feature/IFeatureFlags.ts +44 -0
- package/lib/index.ts +16 -0
- package/lib/registration/IRegistration.ts +12 -5
- package/lib/token/BindableToken.ts +137 -0
- package/lib/token/GroupAliasToken.ts +10 -69
- package/lib/token/MultiVariantFeatureToken.ts +160 -0
- package/lib/token/SingleAliasToken.ts +11 -67
- package/lib/token/SingleToken.ts +9 -67
- package/lib/token/ToggleFeatureToken.ts +27 -0
- package/package.json +3 -3
- package/typings/container/Container.d.ts +1 -0
- package/typings/container/Container.d.ts.map +1 -1
- package/typings/container/EmptyContainer.d.ts +1 -0
- package/typings/container/EmptyContainer.d.ts.map +1 -1
- package/typings/container/IContainer.d.ts +2 -0
- package/typings/container/IContainer.d.ts.map +1 -1
- package/typings/feature/IFeatureFlags.d.ts +42 -0
- package/typings/feature/IFeatureFlags.d.ts.map +1 -0
- package/typings/index.d.ts +4 -0
- package/typings/index.d.ts.map +1 -1
- package/typings/registration/IRegistration.d.ts +12 -5
- package/typings/registration/IRegistration.d.ts.map +1 -1
- package/typings/token/BindableToken.d.ts +80 -0
- package/typings/token/BindableToken.d.ts.map +1 -0
- package/typings/token/GroupAliasToken.d.ts +9 -24
- package/typings/token/GroupAliasToken.d.ts.map +1 -1
- package/typings/token/MultiVariantFeatureToken.d.ts +79 -0
- package/typings/token/MultiVariantFeatureToken.d.ts.map +1 -0
- package/typings/token/SingleAliasToken.d.ts +10 -22
- package/typings/token/SingleAliasToken.d.ts.map +1 -1
- package/typings/token/SingleToken.d.ts +8 -22
- package/typings/token/SingleToken.d.ts.map +1 -1
- package/typings/token/ToggleFeatureToken.d.ts +25 -0
- package/typings/token/ToggleFeatureToken.d.ts.map +1 -0
package/typings/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../lib/index.ts"],"names":[],"mappings":"AACA,OAAO,EACL,KAAK,UAAU,EACf,KAAK,UAAU,EACf,KAAK,gBAAgB,EACrB,KAAK,aAAa,EAClB,KAAK,GAAG,EACR,KAAK,MAAM,EACX,KAAK,iBAAiB,EACtB,KAAK,kBAAkB,EACvB,KAAK,SAAS,EACd,KAAK,cAAc,EACnB,KAAK,kBAAkB,EACvB,eAAe,GAChB,MAAM,wBAAwB,CAAC;AAChC,OAAO,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAClD,OAAO,EAAE,iBAAiB,EAAE,MAAM,+BAA+B,CAAC;AAClE,OAAO,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AAG5D,OAAO,EACL,KAAK,SAAS,EACd,KAAK,aAAa,EAClB,KAAK,SAAS,EACd,KAAK,QAAQ,EACb,KAAK,iBAAiB,EACtB,KAAK,eAAe,EACpB,KAAK,YAAY,EACjB,QAAQ,GACT,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,gBAAgB,EAAE,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,WAAW,EAAE,MAAM,6BAA6B,CAAC;AAC3G,OAAO,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAC3D,OAAO,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AAGzD,OAAO,EACL,KAAK,iBAAiB,EACtB,KAAK,SAAS,EACd,KAAK,UAAU,EACf,KAAK,MAAM,EACX,KAAK,eAAe,EACpB,KAAK,cAAc,EACnB,KAAK,WAAW,EAChB,KAAK,kBAAkB,EACvB,KAAK,eAAe,EACpB,KAAK,YAAY,GAClB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAG/C,OAAO,EACL,KAAK,aAAa,EAClB,KAAK,wBAAwB,EAC7B,KAAK,cAAc,EACnB,KAAK,YAAY,EACjB,KAAK,QAAQ,EACb,KAAK,cAAc,EACnB,KAAK,kBAAkB,EACvB,cAAc,EACd,YAAY,EACZ,WAAW,EACX,YAAY,EACZ,gBAAgB,EAChB,QAAQ,EACR,MAAM,EACN,KAAK,EACL,WAAW,EACX,IAAI,EACJ,WAAW,EACX,SAAS,EACT,QAAQ,EACR,UAAU,EACV,YAAY,EACZ,SAAS,GACV,MAAM,8BAA8B,CAAC;AACtC,OAAO,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAG3D,OAAO,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AACzD,OAAO,EAAE,uBAAuB,EAAE,MAAM,kCAAkC,CAAC;AAC3E,OAAO,EAAE,sBAAsB,EAAE,MAAM,iCAAiC,CAAC;AACzE,OAAO,EAAE,yBAAyB,EAAE,MAAM,oCAAoC,CAAC;AAC/E,OAAO,EAAE,yBAAyB,EAAE,MAAM,oCAAoC,CAAC;AAC/E,OAAO,EAAE,sBAAsB,EAAE,MAAM,iCAAiC,CAAC;AACzE,OAAO,EAAE,qBAAqB,EAAE,MAAM,gCAAgC,CAAC;AACvE,OAAO,EAAE,8BAA8B,EAAE,MAAM,yCAAyC,CAAC;AACzF,OAAO,EAAE,8BAA8B,EAAE,MAAM,yCAAyC,CAAC;AACzF,OAAO,EAAE,yBAAyB,EAAE,MAAM,oCAAoC,CAAC;AAC/E,OAAO,EAAE,uBAAuB,EAAE,MAAM,kCAAkC,CAAC;AAC3E,OAAO,EAAE,qBAAqB,EAAE,MAAM,gCAAgC,CAAC;AAGvE,OAAO,EACL,QAAQ,EACR,IAAI,EACJ,QAAQ,EACR,QAAQ,EACR,KAAK,MAAM,EACX,KAAK,SAAS,EACd,KAAK,QAAQ,EACb,KAAK,QAAQ,EACb,KAAK,YAAY,GAClB,MAAM,cAAc,CAAC;AACtB,OAAO,EACL,WAAW,EACX,wBAAwB,EACxB,0BAA0B,EAC1B,KAAK,0BAA0B,EAC/B,KAAK,YAAY,GAClB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAChD,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,eAAe,EAAE,KAAK,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AACrG,OAAO,EACL,aAAa,EACb,MAAM,EACN,KAAK,UAAU,EACf,KAAK,qBAAqB,EAC1B,KAAK,oBAAoB,EACzB,KAAK,kBAAkB,EACvB,KAAK,uBAAuB,GAC7B,MAAM,uBAAuB,CAAC;AAG/B,OAAO,EAAE,cAAc,EAAE,gBAAgB,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AACvF,OAAO,EAAE,KAAK,UAAU,EAAE,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AACvE,OAAO,EAAE,eAAe,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AACxE,OAAO,EAAE,gBAAgB,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AAC3E,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAChD,OAAO,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAClD,OAAO,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AACtD,OAAO,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AACtD,OAAO,EAAE,KAAK,iBAAiB,EAAE,kBAAkB,EAAE,MAAM,4BAA4B,CAAC;
|
|
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.
|
|
76
|
-
*
|
|
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(
|
|
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
|
-
*
|
|
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 {
|
|
3
|
-
import { IRegistration } from '../registration/IRegistration.js';
|
|
4
|
-
import {
|
|
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
|
|
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(
|
|
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
|
|
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,
|
|
30
|
-
|
|
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;
|
|
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 {
|
|
3
|
-
import { IRegistration } from '../registration/IRegistration.js';
|
|
4
|
-
import {
|
|
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
|
|
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
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
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;
|
|
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 {
|
|
2
|
-
import {
|
|
3
|
-
import { IRegistration } from '../registration/IRegistration.js';
|
|
4
|
-
import {
|
|
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(
|
|
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
|
|
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,
|
|
34
|
-
|
|
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,
|
|
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"}
|