@configdirector/openfeature-server-provider 1.12.0 → 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.
@@ -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 {
@@ -26,24 +32,63 @@ interface ConfigDirectorLogMessageDecorator {
26
32
  }
27
33
  /**
28
34
  * Why an evaluation returned the value it did. `found-match` returns a value from ConfigDirector,
29
- * and `cached` a value kept on the device while a client SDK waits for live values. `value-missing`
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`
30
38
  * returns the in-code default value because the config has no value. Every other reason returns the
31
39
  * in-code default value because of an error: the config does not exist (`config-state-missing`), no
32
40
  * values have arrived yet (`client-not-ready`), or the value cannot be read as the type of the in-code
33
41
  * default value.
34
42
  */
35
- type EvaluationReason = "found-match" | "config-state-missing" | "client-not-ready" | "type-mismatch" | "value-missing" | "invalid-number" | "invalid-json" | "invalid-boolean" | "cached";
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
+ };
36
51
  /**
37
52
  * One evaluation of a config: the value it returned, why, and the context it was evaluated for.
38
53
  */
39
54
  type ConfigEvaluation<T extends ConfigValueType = ConfigValueType> = {
40
55
  /** The config key that was evaluated. */key: string; /** The value returned, which is the in-code default value when {@link isDefaultValue} is `true`. */
41
56
  value: T; /** The ID ConfigDirector assigned to the value returned, when ConfigDirector sent one with it. */
42
- valueId?: string; /** Whether the evaluation returned the in-code default value. */
57
+ valueId?: string;
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. */
43
63
  isDefaultValue: boolean; /** Why the evaluation returned this value. */
44
64
  reason: EvaluationReason; /** The context the config was evaluated for, if any. */
45
65
  context?: ConfigDirectorContext;
46
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
+ };
47
92
  /**
48
93
  * The context to be sent to ConfigDirector: the user or other entity, such as a device or an
49
94
  * organization, that configs are evaluated for. This context will be used for targeting rules
@@ -325,8 +370,8 @@ interface ConfigDirectorClient {
325
370
  getValue<T extends ConfigValueType>(configKey: string, defaultValue: T, context?: ConfigDirectorContext): T;
326
371
  /**
327
372
  * Evaluates a config as {@link getValue} does and returns the evaluation: the value, the reason it
328
- * was served and its value ID. Like every read, it fires `configEvaluated` and is counted in
329
- * telemetry.
373
+ * was served, its value ID and its variation. Like every read, it fires `configEvaluated` and is
374
+ * counted in telemetry.
330
375
  *
331
376
  * @returns The evaluation, whose `value` is what {@link getValue} returns
332
377
  * @param configKey The config key to evaluate
@@ -371,6 +416,21 @@ interface ConfigDirectorClient {
371
416
  context?: ConfigDirectorContext;
372
417
  configKeys?: string[];
373
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;
374
434
  on<T extends keyof ClientEvents>(eventName: T, handler: (args: ClientEvents[T]) => void): void;
375
435
  off<T extends keyof ClientEvents>(eventName: T, handler?: (args: ClientEvents[T]) => void): void;
376
436
  /**
@@ -408,6 +468,7 @@ declare class ConfigDirectorProvider implements Provider {
408
468
  resolveStringEvaluation(flagKey: string, defaultValue: string, context: EvaluationContext): Promise<ResolutionDetails<string>>;
409
469
  resolveNumberEvaluation(flagKey: string, defaultValue: number, context: EvaluationContext): Promise<ResolutionDetails<number>>;
410
470
  resolveObjectEvaluation<T extends JsonValue>(flagKey: string, defaultValue: T, context: EvaluationContext): Promise<ResolutionDetails<T>>;
471
+ track(trackingEventName: string, context: EvaluationContext, trackingEventDetails: TrackingEventDetails): void;
411
472
  onClose?(): Promise<void>;
412
473
  private mapContext;
413
474
  }
@@ -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":"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"}
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 {
@@ -26,24 +32,63 @@ interface ConfigDirectorLogMessageDecorator {
26
32
  }
27
33
  /**
28
34
  * Why an evaluation returned the value it did. `found-match` returns a value from ConfigDirector,
29
- * and `cached` a value kept on the device while a client SDK waits for live values. `value-missing`
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`
30
38
  * returns the in-code default value because the config has no value. Every other reason returns the
31
39
  * in-code default value because of an error: the config does not exist (`config-state-missing`), no
32
40
  * values have arrived yet (`client-not-ready`), or the value cannot be read as the type of the in-code
33
41
  * default value.
34
42
  */
35
- type EvaluationReason = "found-match" | "config-state-missing" | "client-not-ready" | "type-mismatch" | "value-missing" | "invalid-number" | "invalid-json" | "invalid-boolean" | "cached";
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
+ };
36
51
  /**
37
52
  * One evaluation of a config: the value it returned, why, and the context it was evaluated for.
38
53
  */
39
54
  type ConfigEvaluation<T extends ConfigValueType = ConfigValueType> = {
40
55
  /** The config key that was evaluated. */key: string; /** The value returned, which is the in-code default value when {@link isDefaultValue} is `true`. */
41
56
  value: T; /** The ID ConfigDirector assigned to the value returned, when ConfigDirector sent one with it. */
42
- valueId?: string; /** Whether the evaluation returned the in-code default value. */
57
+ valueId?: string;
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. */
43
63
  isDefaultValue: boolean; /** Why the evaluation returned this value. */
44
64
  reason: EvaluationReason; /** The context the config was evaluated for, if any. */
45
65
  context?: ConfigDirectorContext;
46
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
+ };
47
92
  /**
48
93
  * The context to be sent to ConfigDirector: the user or other entity, such as a device or an
49
94
  * organization, that configs are evaluated for. This context will be used for targeting rules
@@ -325,8 +370,8 @@ interface ConfigDirectorClient {
325
370
  getValue<T extends ConfigValueType>(configKey: string, defaultValue: T, context?: ConfigDirectorContext): T;
326
371
  /**
327
372
  * Evaluates a config as {@link getValue} does and returns the evaluation: the value, the reason it
328
- * was served and its value ID. Like every read, it fires `configEvaluated` and is counted in
329
- * telemetry.
373
+ * was served, its value ID and its variation. Like every read, it fires `configEvaluated` and is
374
+ * counted in telemetry.
330
375
  *
331
376
  * @returns The evaluation, whose `value` is what {@link getValue} returns
332
377
  * @param configKey The config key to evaluate
@@ -371,6 +416,21 @@ interface ConfigDirectorClient {
371
416
  context?: ConfigDirectorContext;
372
417
  configKeys?: string[];
373
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;
374
434
  on<T extends keyof ClientEvents>(eventName: T, handler: (args: ClientEvents[T]) => void): void;
375
435
  off<T extends keyof ClientEvents>(eventName: T, handler?: (args: ClientEvents[T]) => void): void;
376
436
  /**
@@ -408,6 +468,7 @@ declare class ConfigDirectorProvider implements Provider {
408
468
  resolveStringEvaluation(flagKey: string, defaultValue: string, context: EvaluationContext): Promise<ResolutionDetails<string>>;
409
469
  resolveNumberEvaluation(flagKey: string, defaultValue: number, context: EvaluationContext): Promise<ResolutionDetails<number>>;
410
470
  resolveObjectEvaluation<T extends JsonValue>(flagKey: string, defaultValue: T, context: EvaluationContext): Promise<ResolutionDetails<T>>;
471
+ track(trackingEventName: string, context: EvaluationContext, trackingEventDetails: TrackingEventDetails): void;
411
472
  onClose?(): Promise<void>;
412
473
  private mapContext;
413
474
  }
@@ -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;;;;;;;;;KAWN,gBAAA;;;;KAcA,gBAAA,WAA2B,eAAA,GAAkB,eAAA;EApCxC,yCAsCf,GAAA;EAEA,KAAA,EAAO,CAAA,EAvCP;EAyCA,OAAA,WAzC0B;EA2C1B,cAAA,WAzCK;EA2CL,MAAA,EAAQ,gBAAA,EAzCR;EA2CA,OAAA,GAAU,qBAAA;AAAA;;;;;;KAOA,qBAAA;EA7CsC;;;;AAYlD;;;;;AAcA;EA8BE,EAAA;EA9B0B;;;;;;;;;;;EA2C1B,IAAA;EAvCA;;;;EA6CA,IAAA;EAvCQ;;;;EA6CR,MAAA;IAAA,CAAY,GAAA;EAAA;;;;;;;;EASZ,SAAA;AAAA;;AAOF;;;KAAY,yBAAA;EACV,UAAA;EACA,OAAA;AAAA;AAAA,KAGU,cAAA;;;KC5IA,eAAA,sCAAqD,eAAA;EAAA,CAAuB,GAAA,WAAc,eAAA;AAAA;AAAA,KAE1F,WAAA,+BAA0C,eAAA;EAAA,CAAuB,GAAA,WAAc,eAAA;AAAA;AAAA,KAE/E,YAAA,GAAe,MAAA,SAAe,WAAA;;;;;;ADG1C;;KEqBY,YAAA,GAAe,WAAA;;;AFnB3B;;KEyBY,aAAA,GAAgB,YAAA;;;AFvB5B;KE4BY,iBAAA;;;;AF1BZ;;;;;;;;;EEuCE,IAAA,GAAO,cAAA;EFlCA;;AAQT;;;;;AAEA;;;EEmCE,IAAA;EFlCA;;;;;;;EE0CA,MAAA,GAAS,aAAA;EFtCgB;;;;;;AAK3B;EEyCE,eAAA;;;;AF7BF;;;;;AAcA;EEyBE,OAAA;EFzB0B;;;;;EE+B1B,GAAA;AAAA;;;;KAMU,2BAAA;EFnCV;;;EEuCA,QAAA,GAAW,yBAAA;EFjCX;;;EEqCA,UAAA,GAAa,iBAAA;EFjCH;;;AAOZ;;;;;;;;;;EEwCE,MAAA,GAAS,oBAAA;EFKA;AAOX;;;;;AAKA;EERE,SAAA;IFQwB;;;;;;AC5I1B;;;IC8II,eAAA;ID9I6D;;;;;AAEjE;;;ICsJI,aAAA;EAAA;EDtJyE;;;;AAE7E;;;;;;;;ACwBA;;;EA8IE,KAAA,GAAQ,WAAA;AAAA;AAxIV;;;AAAA,KA8IY,oBAAA,GAAuB,2BAAA;EACjC,UAAA,EAAY,iBAAA;IAAsB,IAAA;EAAA;AAAA;AAAA,KAGxB,YAAA;EACV,cAAA;IAAkB,IAAA;IAAgB,WAAA;EAAA;EAClC,WAAA;EACA,eAAA;IAAmB,UAAA,EAAY,gBAAA;EAAA;EAC/B,eAAA;IAAmB,KAAA,EAAO,KAAA;EAAA;AAAA;AAAA,KAGhB,WAAA;EACV,WAAA,GAAc,WAAA,kBAA6B,WAAA;EAC3C,cAAA,GAAiB,WAAA,qBAAgC,WAAA;EACjD,eAAA,GAAkB,WAAA,sBAAiC,WAAA;EACnD,eAAA,GAAkB,WAAA,sBAAiC,WAAA;AAAA;AAAA,KAGzC,WAAA,sBAAiC,YAAA,KAAiB,OAAA,EAAS,YAAA,CAAa,MAAA;AAAA,KAExE,YAAA,WAAuB,eAAA,KAAoB,OAAA,EAAS,CAAA;;;;;;;UAQ/C,oBAAA;EApDb;;;;;AAwBJ;;;;;;EAwCE,UAAA,IAAc,OAAA;EAvCoB;;;AAGpC;;;EAHoC,IA+C9B,OAAA;EA3CJ;;;;;;;;;;EAuDA,QAAA,WAAmB,eAAA,EAAiB,SAAA,UAAmB,YAAA,EAAc,CAAA,EAAG,OAAA,GAAU,qBAAA,GAAwB,CAAA;EApD3E;AAGjC;;;;;;;;;EA6DE,QAAA,WAAmB,eAAA,EACjB,SAAA,UACA,YAAA,EAAc,CAAA,EACd,OAAA,GAAU,qBAAA,GACT,gBAAA,CAAiB,CAAA;EA7D+B;;;;;;;;;;;;EA2EnD,KAAA,WAAgB,eAAA,EACd,SAAA,UACA,YAAA,EAAc,CAAA,EACd,QAAA,EAAU,YAAA,CAAa,CAAA,GACvB,OAAA,GAAU,qBAAA;EA/EM;;;;AAGpB;;;;EAuFE,OAAA,WAAkB,eAAA,EAAiB,SAAA,UAAmB,QAAA,GAAW,YAAA,CAAa,CAAA;EAvFI;;;EA4FlF,UAAA;EA5F2C;;;;;;AAE7C;EAmGE,aAAA,CAAc,OAAA;IACZ,OAAA,GAAU,qBAAA;IACV,UAAA;EAAA,IACE,MAAA,SAAe,WAAA;EAEnB,EAAA,iBAAmB,YAAA,EAAc,SAAA,EAAW,CAAA,EAAG,OAAA,GAAU,IAAA,EAAM,YAAA,CAAa,CAAA;EAE5E,GAAA,iBAAoB,YAAA,EAAc,SAAA,EAAW,CAAA,EAAG,OAAA,IAAW,IAAA,EAAM,YAAA,CAAa,CAAA;EA1GzB;;;AAQvD;;;EA0GE,OAAA;AAAA;;;cCnSW,iCAAA,SAA0C,KAAA;EAAA,SAC5B,IAAA;cAEb,OAAA;AAAA;;;cCTD,sBAAA,YAAkC,QAAA;EAAA,iBAC5B,MAAA;EAAA,SAER,QAAA,EAAU,gBAAA;EAAA,SAGV,MAAA,EAAQ,QAAA;EAAA,SACR,MAAA,EAAM,uBAAA;EJbL;;;cIkBS,YAAA,UAAsB,aAAA,GAAgB,2BAAA;EJlBZ;AAE/C;;;cIqBqB,aAAA,EAAe,oBAAA;EAW5B,UAAA,CAAA,GAAU,OAAA;EAYhB,wBAAA,CACE,OAAA,UACA,YAAA,WACA,OAAA,EAAS,iBAAA,GACR,OAAA,CAAQ,iBAAA;EAMX,uBAAA,CACE,OAAA,UACA,YAAA,UACA,OAAA,EAAS,iBAAA,GACR,OAAA,CAAQ,iBAAA;EAMX,uBAAA,CACE,OAAA,UACA,YAAA,UACA,OAAA,EAAS,iBAAA,GACR,OAAA,CAAQ,iBAAA;EAMX,uBAAA,WAAkC,SAAA,CAAA,CAChC,OAAA,UACA,YAAA,EAAc,CAAA,EACd,OAAA,EAAS,iBAAA,GACR,OAAA,CAAQ,iBAAA,CAAkB,CAAA;EAQ7B,OAAA,CAAA,CAAA,GAAY,OAAA;EAAA,QAKJ,UAAA;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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"}