@configdirector/openfeature-server-provider 1.11.1 → 1.13.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 +16 -0
- package/dist/configdirector-openfeature-server-provider.cjs +1 -1
- package/dist/configdirector-openfeature-server-provider.d.cts +90 -9
- package/dist/configdirector-openfeature-server-provider.d.cts.map +1 -1
- package/dist/configdirector-openfeature-server-provider.d.mts +90 -9
- package/dist/configdirector-openfeature-server-provider.d.mts.map +1 -1
- package/dist/configdirector-openfeature-server-provider.mjs +2 -2
- package/dist/configdirector-openfeature-server-provider.mjs.map +1 -1
- package/package.json +1 -1
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { EvaluationContext, JsonValue, OpenFeatureEventEmitter, Paradigm, Provider, ProviderMetadata, ResolutionDetails } from "@openfeature/server-sdk";
|
|
1
|
+
import { EvaluationContext, JsonValue, OpenFeatureEventEmitter, Paradigm, Provider, ProviderMetadata, ResolutionDetails, TrackingEventDetails } from "@openfeature/server-sdk";
|
|
2
2
|
|
|
3
3
|
//#region ../shared/src/types.d.ts
|
|
4
4
|
declare const ConfigTypeList: readonly ["custom", "boolean", "string", "integer", "float", "enum", "url", "json"];
|
|
@@ -13,6 +13,12 @@ type ConfigState = {
|
|
|
13
13
|
type: ConfigType;
|
|
14
14
|
value: string | undefined | null;
|
|
15
15
|
valueId?: string | undefined | null;
|
|
16
|
+
variation?: {
|
|
17
|
+
id: string;
|
|
18
|
+
name?: string | undefined | null;
|
|
19
|
+
} | undefined | null;
|
|
20
|
+
ruleId?: string | undefined | null;
|
|
21
|
+
shareId?: string | undefined | null;
|
|
16
22
|
};
|
|
17
23
|
type ConfigDirectorLoggingLevel = "debug" | "info" | "warn" | "error" | "off";
|
|
18
24
|
interface ConfigDirectorLogger {
|
|
@@ -24,15 +30,65 @@ interface ConfigDirectorLogger {
|
|
|
24
30
|
interface ConfigDirectorLogMessageDecorator {
|
|
25
31
|
decorateMessage(message: string): string;
|
|
26
32
|
}
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
33
|
+
/**
|
|
34
|
+
* Why an evaluation returned the value it did. `found-match` returns a value from ConfigDirector,
|
|
35
|
+
* and `cached` a value kept on the device while a client SDK waits for live values.
|
|
36
|
+
* `rollout-skipped-no-identifier` returns the default targeting rule value: a server SDK skipped a
|
|
37
|
+
* percentage rollout because the context has no `id` to place it in a share. `value-missing`
|
|
38
|
+
* returns the in-code default value because the config has no value. Every other reason returns the
|
|
39
|
+
* in-code default value because of an error: the config does not exist (`config-state-missing`), no
|
|
40
|
+
* values have arrived yet (`client-not-ready`), or the value cannot be read as the type of the in-code
|
|
41
|
+
* default value.
|
|
42
|
+
*/
|
|
43
|
+
type EvaluationReason = "found-match" | "rollout-skipped-no-identifier" | "config-state-missing" | "client-not-ready" | "type-mismatch" | "value-missing" | "invalid-number" | "invalid-json" | "invalid-boolean" | "cached";
|
|
44
|
+
/**
|
|
45
|
+
* One of the values a config can serve, such as the control or a treatment of an experiment.
|
|
46
|
+
*/
|
|
47
|
+
type Variation = {
|
|
48
|
+
/** The ID ConfigDirector assigned to the variation, which stays the same when it is renamed. */id: string; /** The variation's name, when it has one. */
|
|
49
|
+
name?: string;
|
|
50
|
+
};
|
|
51
|
+
/**
|
|
52
|
+
* One evaluation of a config: the value it returned, why, and the context it was evaluated for.
|
|
53
|
+
*/
|
|
54
|
+
type ConfigEvaluation<T extends ConfigValueType = ConfigValueType> = {
|
|
55
|
+
/** The config key that was evaluated. */key: string; /** The value returned, which is the in-code default value when {@link isDefaultValue} is `true`. */
|
|
56
|
+
value: T; /** The ID ConfigDirector assigned to the value returned, when ConfigDirector sent one with it. */
|
|
31
57
|
valueId?: string;
|
|
32
|
-
|
|
33
|
-
|
|
58
|
+
/**
|
|
59
|
+
* The variation that was served. It is `undefined` when the config has no variations or the
|
|
60
|
+
* in-code default value is returned.
|
|
61
|
+
*/
|
|
62
|
+
variation?: Variation; /** Whether the evaluation returned the in-code default value. */
|
|
63
|
+
isDefaultValue: boolean; /** Why the evaluation returned this value. */
|
|
64
|
+
reason: EvaluationReason; /** The context the config was evaluated for, if any. */
|
|
34
65
|
context?: ConfigDirectorContext;
|
|
35
66
|
};
|
|
67
|
+
/**
|
|
68
|
+
* A value in the details of a tracked event: a string, a number, a boolean, or an array or object
|
|
69
|
+
* of such values.
|
|
70
|
+
*/
|
|
71
|
+
type TrackedEventDetailValue = string | number | boolean | TrackedEventDetailValue[] | {
|
|
72
|
+
[key: string]: TrackedEventDetailValue;
|
|
73
|
+
};
|
|
74
|
+
/**
|
|
75
|
+
* Details of a tracked event, such as the plan a customer chose. Details with more than 20
|
|
76
|
+
* top-level keys, or larger than 1 KB as JSON, are left out and the event is still reported.
|
|
77
|
+
*/
|
|
78
|
+
type TrackedEventDetails = {
|
|
79
|
+
[key: string]: TrackedEventDetailValue;
|
|
80
|
+
};
|
|
81
|
+
/**
|
|
82
|
+
* What a tracked event carries besides its name.
|
|
83
|
+
*/
|
|
84
|
+
type TrackOptions = {
|
|
85
|
+
/**
|
|
86
|
+
* A number the event measures, such as an amount of money, a count or a duration. A value that
|
|
87
|
+
* is not a finite number is left out and the event is still reported.
|
|
88
|
+
*/
|
|
89
|
+
value?: number; /** Details of the event. */
|
|
90
|
+
details?: TrackedEventDetails;
|
|
91
|
+
};
|
|
36
92
|
/**
|
|
37
93
|
* The context to be sent to ConfigDirector: the user or other entity, such as a device or an
|
|
38
94
|
* organization, that configs are evaluated for. This context will be used for targeting rules
|
|
@@ -312,6 +368,17 @@ interface ConfigDirectorClient {
|
|
|
312
368
|
* @param context The user's context to be used for targeting rules evaluation (optional)
|
|
313
369
|
*/
|
|
314
370
|
getValue<T extends ConfigValueType>(configKey: string, defaultValue: T, context?: ConfigDirectorContext): T;
|
|
371
|
+
/**
|
|
372
|
+
* Evaluates a config as {@link getValue} does and returns the evaluation: the value, the reason it
|
|
373
|
+
* was served, its value ID and its variation. Like every read, it fires `configEvaluated` and is
|
|
374
|
+
* counted in telemetry.
|
|
375
|
+
*
|
|
376
|
+
* @returns The evaluation, whose `value` is what {@link getValue} returns
|
|
377
|
+
* @param configKey The config key to evaluate
|
|
378
|
+
* @param defaultValue The in-code default value, returned when no value from ConfigDirector can be served
|
|
379
|
+
* @param context The user's context to be used for targeting rules evaluation (optional)
|
|
380
|
+
*/
|
|
381
|
+
evaluate<T extends ConfigValueType>(configKey: string, defaultValue: T, context?: ConfigDirectorContext): ConfigEvaluation<T>;
|
|
315
382
|
/**
|
|
316
383
|
* Watches for changes to a a config evaluation value. Whenever the config value changes, the
|
|
317
384
|
* provided callback function will be called with the new value. Changes can happen due to updates
|
|
@@ -349,6 +416,21 @@ interface ConfigDirectorClient {
|
|
|
349
416
|
context?: ConfigDirectorContext;
|
|
350
417
|
configKeys?: string[];
|
|
351
418
|
}): Record<string, ConfigState>;
|
|
419
|
+
/**
|
|
420
|
+
* Reports to ConfigDirector that something happened, such as a completed checkout, so it can be
|
|
421
|
+
* counted. The event is sent with the next telemetry batch. `track` never throws, and does nothing
|
|
422
|
+
* in `offline` mode.
|
|
423
|
+
*
|
|
424
|
+
* An event counts for an experiment only when it is tracked for a context with an `id`, the one
|
|
425
|
+
* the experiment's config was evaluated for. Without a context, or for a context without an
|
|
426
|
+
* `id`, the event is still reported.
|
|
427
|
+
*
|
|
428
|
+
* @param eventName The name of the event, 1 to 150 characters. An event with any other name is
|
|
429
|
+
* not reported and a warning is logged.
|
|
430
|
+
* @param context The context the event happened for (optional)
|
|
431
|
+
* @param options The event's {@link TrackOptions.value} and {@link TrackOptions.details} (optional)
|
|
432
|
+
*/
|
|
433
|
+
track(eventName: string, context?: ConfigDirectorContext, options?: TrackOptions): void;
|
|
352
434
|
on<T extends keyof ClientEvents>(eventName: T, handler: (args: ClientEvents[T]) => void): void;
|
|
353
435
|
off<T extends keyof ClientEvents>(eventName: T, handler?: (args: ClientEvents[T]) => void): void;
|
|
354
436
|
/**
|
|
@@ -369,7 +451,6 @@ declare class ConfigDirectorInitializationError extends Error {
|
|
|
369
451
|
//#region src/ConfigDirectorProvider.d.ts
|
|
370
452
|
declare class ConfigDirectorProvider implements Provider {
|
|
371
453
|
private readonly client;
|
|
372
|
-
private readonly readyHandler;
|
|
373
454
|
readonly metadata: ProviderMetadata;
|
|
374
455
|
readonly runsOn: Paradigm;
|
|
375
456
|
readonly events: OpenFeatureEventEmitter;
|
|
@@ -387,8 +468,8 @@ declare class ConfigDirectorProvider implements Provider {
|
|
|
387
468
|
resolveStringEvaluation(flagKey: string, defaultValue: string, context: EvaluationContext): Promise<ResolutionDetails<string>>;
|
|
388
469
|
resolveNumberEvaluation(flagKey: string, defaultValue: number, context: EvaluationContext): Promise<ResolutionDetails<number>>;
|
|
389
470
|
resolveObjectEvaluation<T extends JsonValue>(flagKey: string, defaultValue: T, context: EvaluationContext): Promise<ResolutionDetails<T>>;
|
|
471
|
+
track(trackingEventName: string, context: EvaluationContext, trackingEventDetails: TrackingEventDetails): void;
|
|
390
472
|
onClose?(): Promise<void>;
|
|
391
|
-
private evaluate;
|
|
392
473
|
private mapContext;
|
|
393
474
|
}
|
|
394
475
|
//#endregion
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"configdirector-openfeature-server-provider.d.cts","names":[],"sources":["../../shared/src/types.ts","../../shared/src/native-values.ts","../../js-server-sdk/src/types.ts","../../shared/src/errors.ts","../src/ConfigDirectorProvider.ts"],"mappings":";;;cAAa,cAAA;AAAA,KAUD,UAAA,WAAqB,cAAA;AAAA,KAErB,kBAAA;EAAA,CAAwB,GAAA;AAAA;AAAA,KAExB,eAAA,wCAAuD,kBAAA;AAAA,KAEvD,WAAA;EACV,EAAA;EACA,GAAA;EACA,IAAA,EAAM,UAAA;EACN,KAAA;EACA,OAAA;AAAA;AAAA,KAQU,0BAAA;AAAA,UAEK,oBAAA;EACf,KAAA,CAAM,OAAA,aAAoB,IAAA;EAE1B,IAAA,CAAK,OAAA,aAAoB,IAAA;EAEzB,IAAA,CAAK,OAAA,aAAoB,IAAA;EAEzB,KAAA,CAAM,OAAA,aAAoB,IAAA;AAAA;AAAA,UAGX,iCAAA;EACf,eAAA,CAAgB,OAAA;AAAA;
|
|
1
|
+
{"version":3,"file":"configdirector-openfeature-server-provider.d.cts","names":[],"sources":["../../shared/src/types.ts","../../shared/src/native-values.ts","../../js-server-sdk/src/types.ts","../../shared/src/errors.ts","../src/ConfigDirectorProvider.ts"],"mappings":"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"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { EvaluationContext, JsonValue, OpenFeatureEventEmitter, Paradigm, Provider, ProviderMetadata, ResolutionDetails } from "@openfeature/server-sdk";
|
|
1
|
+
import { EvaluationContext, JsonValue, OpenFeatureEventEmitter, Paradigm, Provider, ProviderMetadata, ResolutionDetails, TrackingEventDetails } from "@openfeature/server-sdk";
|
|
2
2
|
|
|
3
3
|
//#region ../shared/src/types.d.ts
|
|
4
4
|
declare const ConfigTypeList: readonly ["custom", "boolean", "string", "integer", "float", "enum", "url", "json"];
|
|
@@ -13,6 +13,12 @@ type ConfigState = {
|
|
|
13
13
|
type: ConfigType;
|
|
14
14
|
value: string | undefined | null;
|
|
15
15
|
valueId?: string | undefined | null;
|
|
16
|
+
variation?: {
|
|
17
|
+
id: string;
|
|
18
|
+
name?: string | undefined | null;
|
|
19
|
+
} | undefined | null;
|
|
20
|
+
ruleId?: string | undefined | null;
|
|
21
|
+
shareId?: string | undefined | null;
|
|
16
22
|
};
|
|
17
23
|
type ConfigDirectorLoggingLevel = "debug" | "info" | "warn" | "error" | "off";
|
|
18
24
|
interface ConfigDirectorLogger {
|
|
@@ -24,15 +30,65 @@ interface ConfigDirectorLogger {
|
|
|
24
30
|
interface ConfigDirectorLogMessageDecorator {
|
|
25
31
|
decorateMessage(message: string): string;
|
|
26
32
|
}
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
33
|
+
/**
|
|
34
|
+
* Why an evaluation returned the value it did. `found-match` returns a value from ConfigDirector,
|
|
35
|
+
* and `cached` a value kept on the device while a client SDK waits for live values.
|
|
36
|
+
* `rollout-skipped-no-identifier` returns the default targeting rule value: a server SDK skipped a
|
|
37
|
+
* percentage rollout because the context has no `id` to place it in a share. `value-missing`
|
|
38
|
+
* returns the in-code default value because the config has no value. Every other reason returns the
|
|
39
|
+
* in-code default value because of an error: the config does not exist (`config-state-missing`), no
|
|
40
|
+
* values have arrived yet (`client-not-ready`), or the value cannot be read as the type of the in-code
|
|
41
|
+
* default value.
|
|
42
|
+
*/
|
|
43
|
+
type EvaluationReason = "found-match" | "rollout-skipped-no-identifier" | "config-state-missing" | "client-not-ready" | "type-mismatch" | "value-missing" | "invalid-number" | "invalid-json" | "invalid-boolean" | "cached";
|
|
44
|
+
/**
|
|
45
|
+
* One of the values a config can serve, such as the control or a treatment of an experiment.
|
|
46
|
+
*/
|
|
47
|
+
type Variation = {
|
|
48
|
+
/** The ID ConfigDirector assigned to the variation, which stays the same when it is renamed. */id: string; /** The variation's name, when it has one. */
|
|
49
|
+
name?: string;
|
|
50
|
+
};
|
|
51
|
+
/**
|
|
52
|
+
* One evaluation of a config: the value it returned, why, and the context it was evaluated for.
|
|
53
|
+
*/
|
|
54
|
+
type ConfigEvaluation<T extends ConfigValueType = ConfigValueType> = {
|
|
55
|
+
/** The config key that was evaluated. */key: string; /** The value returned, which is the in-code default value when {@link isDefaultValue} is `true`. */
|
|
56
|
+
value: T; /** The ID ConfigDirector assigned to the value returned, when ConfigDirector sent one with it. */
|
|
31
57
|
valueId?: string;
|
|
32
|
-
|
|
33
|
-
|
|
58
|
+
/**
|
|
59
|
+
* The variation that was served. It is `undefined` when the config has no variations or the
|
|
60
|
+
* in-code default value is returned.
|
|
61
|
+
*/
|
|
62
|
+
variation?: Variation; /** Whether the evaluation returned the in-code default value. */
|
|
63
|
+
isDefaultValue: boolean; /** Why the evaluation returned this value. */
|
|
64
|
+
reason: EvaluationReason; /** The context the config was evaluated for, if any. */
|
|
34
65
|
context?: ConfigDirectorContext;
|
|
35
66
|
};
|
|
67
|
+
/**
|
|
68
|
+
* A value in the details of a tracked event: a string, a number, a boolean, or an array or object
|
|
69
|
+
* of such values.
|
|
70
|
+
*/
|
|
71
|
+
type TrackedEventDetailValue = string | number | boolean | TrackedEventDetailValue[] | {
|
|
72
|
+
[key: string]: TrackedEventDetailValue;
|
|
73
|
+
};
|
|
74
|
+
/**
|
|
75
|
+
* Details of a tracked event, such as the plan a customer chose. Details with more than 20
|
|
76
|
+
* top-level keys, or larger than 1 KB as JSON, are left out and the event is still reported.
|
|
77
|
+
*/
|
|
78
|
+
type TrackedEventDetails = {
|
|
79
|
+
[key: string]: TrackedEventDetailValue;
|
|
80
|
+
};
|
|
81
|
+
/**
|
|
82
|
+
* What a tracked event carries besides its name.
|
|
83
|
+
*/
|
|
84
|
+
type TrackOptions = {
|
|
85
|
+
/**
|
|
86
|
+
* A number the event measures, such as an amount of money, a count or a duration. A value that
|
|
87
|
+
* is not a finite number is left out and the event is still reported.
|
|
88
|
+
*/
|
|
89
|
+
value?: number; /** Details of the event. */
|
|
90
|
+
details?: TrackedEventDetails;
|
|
91
|
+
};
|
|
36
92
|
/**
|
|
37
93
|
* The context to be sent to ConfigDirector: the user or other entity, such as a device or an
|
|
38
94
|
* organization, that configs are evaluated for. This context will be used for targeting rules
|
|
@@ -312,6 +368,17 @@ interface ConfigDirectorClient {
|
|
|
312
368
|
* @param context The user's context to be used for targeting rules evaluation (optional)
|
|
313
369
|
*/
|
|
314
370
|
getValue<T extends ConfigValueType>(configKey: string, defaultValue: T, context?: ConfigDirectorContext): T;
|
|
371
|
+
/**
|
|
372
|
+
* Evaluates a config as {@link getValue} does and returns the evaluation: the value, the reason it
|
|
373
|
+
* was served, its value ID and its variation. Like every read, it fires `configEvaluated` and is
|
|
374
|
+
* counted in telemetry.
|
|
375
|
+
*
|
|
376
|
+
* @returns The evaluation, whose `value` is what {@link getValue} returns
|
|
377
|
+
* @param configKey The config key to evaluate
|
|
378
|
+
* @param defaultValue The in-code default value, returned when no value from ConfigDirector can be served
|
|
379
|
+
* @param context The user's context to be used for targeting rules evaluation (optional)
|
|
380
|
+
*/
|
|
381
|
+
evaluate<T extends ConfigValueType>(configKey: string, defaultValue: T, context?: ConfigDirectorContext): ConfigEvaluation<T>;
|
|
315
382
|
/**
|
|
316
383
|
* Watches for changes to a a config evaluation value. Whenever the config value changes, the
|
|
317
384
|
* provided callback function will be called with the new value. Changes can happen due to updates
|
|
@@ -349,6 +416,21 @@ interface ConfigDirectorClient {
|
|
|
349
416
|
context?: ConfigDirectorContext;
|
|
350
417
|
configKeys?: string[];
|
|
351
418
|
}): Record<string, ConfigState>;
|
|
419
|
+
/**
|
|
420
|
+
* Reports to ConfigDirector that something happened, such as a completed checkout, so it can be
|
|
421
|
+
* counted. The event is sent with the next telemetry batch. `track` never throws, and does nothing
|
|
422
|
+
* in `offline` mode.
|
|
423
|
+
*
|
|
424
|
+
* An event counts for an experiment only when it is tracked for a context with an `id`, the one
|
|
425
|
+
* the experiment's config was evaluated for. Without a context, or for a context without an
|
|
426
|
+
* `id`, the event is still reported.
|
|
427
|
+
*
|
|
428
|
+
* @param eventName The name of the event, 1 to 150 characters. An event with any other name is
|
|
429
|
+
* not reported and a warning is logged.
|
|
430
|
+
* @param context The context the event happened for (optional)
|
|
431
|
+
* @param options The event's {@link TrackOptions.value} and {@link TrackOptions.details} (optional)
|
|
432
|
+
*/
|
|
433
|
+
track(eventName: string, context?: ConfigDirectorContext, options?: TrackOptions): void;
|
|
352
434
|
on<T extends keyof ClientEvents>(eventName: T, handler: (args: ClientEvents[T]) => void): void;
|
|
353
435
|
off<T extends keyof ClientEvents>(eventName: T, handler?: (args: ClientEvents[T]) => void): void;
|
|
354
436
|
/**
|
|
@@ -369,7 +451,6 @@ declare class ConfigDirectorInitializationError extends Error {
|
|
|
369
451
|
//#region src/ConfigDirectorProvider.d.ts
|
|
370
452
|
declare class ConfigDirectorProvider implements Provider {
|
|
371
453
|
private readonly client;
|
|
372
|
-
private readonly readyHandler;
|
|
373
454
|
readonly metadata: ProviderMetadata;
|
|
374
455
|
readonly runsOn: Paradigm;
|
|
375
456
|
readonly events: OpenFeatureEventEmitter;
|
|
@@ -387,8 +468,8 @@ declare class ConfigDirectorProvider implements Provider {
|
|
|
387
468
|
resolveStringEvaluation(flagKey: string, defaultValue: string, context: EvaluationContext): Promise<ResolutionDetails<string>>;
|
|
388
469
|
resolveNumberEvaluation(flagKey: string, defaultValue: number, context: EvaluationContext): Promise<ResolutionDetails<number>>;
|
|
389
470
|
resolveObjectEvaluation<T extends JsonValue>(flagKey: string, defaultValue: T, context: EvaluationContext): Promise<ResolutionDetails<T>>;
|
|
471
|
+
track(trackingEventName: string, context: EvaluationContext, trackingEventDetails: TrackingEventDetails): void;
|
|
390
472
|
onClose?(): Promise<void>;
|
|
391
|
-
private evaluate;
|
|
392
473
|
private mapContext;
|
|
393
474
|
}
|
|
394
475
|
//#endregion
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"configdirector-openfeature-server-provider.d.mts","names":[],"sources":["../../shared/src/types.ts","../../shared/src/native-values.ts","../../js-server-sdk/src/types.ts","../../shared/src/errors.ts","../src/ConfigDirectorProvider.ts"],"mappings":";;;cAAa,cAAA;AAAA,KAUD,UAAA,WAAqB,cAAA;AAAA,KAErB,kBAAA;EAAA,CAAwB,GAAA;AAAA;AAAA,KAExB,eAAA,wCAAuD,kBAAA;AAAA,KAEvD,WAAA;EACV,EAAA;EACA,GAAA;EACA,IAAA,EAAM,UAAA;EACN,KAAA;EACA,OAAA;AAAA;AAAA,KAQU,0BAAA;AAAA,UAEK,oBAAA;EACf,KAAA,CAAM,OAAA,aAAoB,IAAA;EAE1B,IAAA,CAAK,OAAA,aAAoB,IAAA;EAEzB,IAAA,CAAK,OAAA,aAAoB,IAAA;EAEzB,KAAA,CAAM,OAAA,aAAoB,IAAA;AAAA;AAAA,UAGX,iCAAA;EACf,eAAA,CAAgB,OAAA;AAAA;
|
|
1
|
+
{"version":3,"file":"configdirector-openfeature-server-provider.d.mts","names":[],"sources":["../../shared/src/types.ts","../../shared/src/native-values.ts","../../js-server-sdk/src/types.ts","../../shared/src/errors.ts","../src/ConfigDirectorProvider.ts"],"mappings":"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"}
|