@openfeature/web-sdk 0.4.8 → 0.4.9
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 +2 -2
- package/dist/cjs/index.js +72 -58
- package/dist/cjs/index.js.map +4 -4
- package/dist/esm/index.js +43 -30
- package/dist/esm/index.js.map +4 -4
- package/dist/types.d.ts +100 -53
- package/package.json +3 -3
package/dist/types.d.ts
CHANGED
|
@@ -130,7 +130,10 @@ interface ManageContext<T> {
|
|
|
130
130
|
setContext(context: EvaluationContext): T;
|
|
131
131
|
}
|
|
132
132
|
|
|
133
|
-
|
|
133
|
+
/**
|
|
134
|
+
* An enumeration of possible events for server-sdk providers.
|
|
135
|
+
*/
|
|
136
|
+
declare enum ServerProviderEvents {
|
|
134
137
|
/**
|
|
135
138
|
* The provider is ready to evaluate flags.
|
|
136
139
|
*/
|
|
@@ -148,15 +151,46 @@ declare enum ProviderEvents {
|
|
|
148
151
|
*/
|
|
149
152
|
Stale = "PROVIDER_STALE"
|
|
150
153
|
}
|
|
154
|
+
/**
|
|
155
|
+
* An enumeration of possible events for web-sdk providers.
|
|
156
|
+
*/
|
|
157
|
+
declare enum ClientProviderEvents {
|
|
158
|
+
/**
|
|
159
|
+
* The provider is ready to evaluate flags.
|
|
160
|
+
*/
|
|
161
|
+
Ready = "PROVIDER_READY",
|
|
162
|
+
/**
|
|
163
|
+
* The provider is in an error state.
|
|
164
|
+
*/
|
|
165
|
+
Error = "PROVIDER_ERROR",
|
|
166
|
+
/**
|
|
167
|
+
* The flag configuration in the source-of-truth has changed.
|
|
168
|
+
*/
|
|
169
|
+
ConfigurationChanged = "PROVIDER_CONFIGURATION_CHANGED",
|
|
170
|
+
/**
|
|
171
|
+
* The context associated with the provider has changed, and the provider has reconciled it's associated state.
|
|
172
|
+
*/
|
|
173
|
+
ContextChanged = "PROVIDER_CONTEXT_CHANGED",
|
|
174
|
+
/**
|
|
175
|
+
* The provider's cached state is no longer valid and may not be up-to-date with the source of truth.
|
|
176
|
+
*/
|
|
177
|
+
Stale = "PROVIDER_STALE"
|
|
178
|
+
}
|
|
179
|
+
|
|
180
|
+
/**
|
|
181
|
+
* A type representing any possible ProviderEvent (server or client side).
|
|
182
|
+
* If you are implementing a hook or provider, you probably want to import `ProviderEvents` from the respective SDK.
|
|
183
|
+
*/
|
|
184
|
+
type AnyProviderEvent = ServerProviderEvents | ClientProviderEvents;
|
|
151
185
|
|
|
152
186
|
/**
|
|
153
187
|
* Returns true if the provider's status corresponds to the event.
|
|
154
188
|
* If the provider's status is not defined, it matches READY.
|
|
155
|
-
* @param {
|
|
189
|
+
* @param {AnyProviderEvent} event event to match
|
|
156
190
|
* @param {ProviderStatus} status status of provider
|
|
157
191
|
* @returns {boolean} boolean indicating if the provider status corresponds to the event.
|
|
158
192
|
*/
|
|
159
|
-
declare const statusMatchesEvent: (event:
|
|
193
|
+
declare const statusMatchesEvent: <T extends AnyProviderEvent>(event: T, status?: ProviderStatus) => boolean;
|
|
160
194
|
|
|
161
195
|
type EventMetadata = {
|
|
162
196
|
[key: string]: string | boolean | number;
|
|
@@ -176,34 +210,35 @@ type ConfigChangeEvent = CommonEventProps & {
|
|
|
176
210
|
flagsChanged?: string[];
|
|
177
211
|
};
|
|
178
212
|
type EventMap = {
|
|
179
|
-
[
|
|
180
|
-
[
|
|
181
|
-
[
|
|
182
|
-
[
|
|
213
|
+
[ClientProviderEvents.Ready]: ReadyEvent;
|
|
214
|
+
[ClientProviderEvents.Error]: ErrorEvent;
|
|
215
|
+
[ClientProviderEvents.Stale]: StaleEvent;
|
|
216
|
+
[ClientProviderEvents.ContextChanged]: CommonEventProps;
|
|
217
|
+
[ClientProviderEvents.ConfigurationChanged]: ConfigChangeEvent;
|
|
183
218
|
};
|
|
184
|
-
type EventContext<
|
|
185
|
-
type EventDetails
|
|
186
|
-
type EventHandler
|
|
219
|
+
type EventContext<U extends Record<string, unknown> = Record<string, unknown>> = EventMap[ClientProviderEvents] & U;
|
|
220
|
+
type EventDetails = EventContext & CommonEventDetails;
|
|
221
|
+
type EventHandler = (eventDetails?: EventDetails) => Promise<unknown> | unknown;
|
|
187
222
|
interface Eventing {
|
|
188
223
|
/**
|
|
189
224
|
* Adds a handler for the given provider event type.
|
|
190
225
|
* The handlers are called in the order they have been added.
|
|
191
|
-
* @param {
|
|
226
|
+
* @param {AnyProviderEvent} eventType The provider event type to listen to
|
|
192
227
|
* @param {EventHandler} handler The handler to run on occurrence of the event type
|
|
193
228
|
*/
|
|
194
|
-
addHandler
|
|
229
|
+
addHandler(eventType: AnyProviderEvent, handler: EventHandler): void;
|
|
195
230
|
/**
|
|
196
231
|
* Removes a handler for the given provider event type.
|
|
197
|
-
* @param {
|
|
232
|
+
* @param {AnyProviderEvent} eventType The provider event type to remove the listener for
|
|
198
233
|
* @param {EventHandler} handler The handler to remove for the provider event type
|
|
199
234
|
*/
|
|
200
|
-
removeHandler
|
|
235
|
+
removeHandler(eventType: AnyProviderEvent, handler: EventHandler): void;
|
|
201
236
|
/**
|
|
202
237
|
* Gets the current handlers for the given provider event type.
|
|
203
|
-
* @param {
|
|
238
|
+
* @param {AnyProviderEvent} eventType The provider event type to get the current handlers for
|
|
204
239
|
* @returns {EventHandler[]} The handlers currently attached to the given provider event type
|
|
205
240
|
*/
|
|
206
|
-
getHandlers
|
|
241
|
+
getHandlers(eventType: AnyProviderEvent): EventHandler[];
|
|
207
242
|
}
|
|
208
243
|
|
|
209
244
|
interface Logger {
|
|
@@ -248,17 +283,17 @@ declare class SafeLogger implements Logger {
|
|
|
248
283
|
* The GenericEventEmitter should only be used within the SDK. It supports additional properties that can be included
|
|
249
284
|
* in the event details.
|
|
250
285
|
*/
|
|
251
|
-
declare abstract class GenericEventEmitter<AdditionalContext extends Record<string, unknown> = Record<string, unknown>> implements ManageLogger<GenericEventEmitter<AdditionalContext>> {
|
|
286
|
+
declare abstract class GenericEventEmitter<E extends AnyProviderEvent, AdditionalContext extends Record<string, unknown> = Record<string, unknown>> implements ManageLogger<GenericEventEmitter<E, AdditionalContext>> {
|
|
252
287
|
private readonly globalLogger?;
|
|
253
288
|
protected abstract readonly eventEmitter: PlatformEventEmitter;
|
|
254
289
|
private readonly _handlers;
|
|
255
290
|
private _eventLogger?;
|
|
256
291
|
constructor(globalLogger?: (() => Logger) | undefined);
|
|
257
|
-
emit
|
|
258
|
-
addHandler
|
|
259
|
-
removeHandler
|
|
260
|
-
removeAllHandlers(eventType?:
|
|
261
|
-
getHandlers
|
|
292
|
+
emit(eventType: E, context?: EventContext): void;
|
|
293
|
+
addHandler(eventType: AnyProviderEvent, handler: EventHandler): void;
|
|
294
|
+
removeHandler(eventType: AnyProviderEvent, handler: EventHandler): void;
|
|
295
|
+
removeAllHandlers(eventType?: AnyProviderEvent): void;
|
|
296
|
+
getHandlers(eventType: AnyProviderEvent): EventHandler[];
|
|
262
297
|
setLogger(logger: Logger): this;
|
|
263
298
|
protected get _logger(): Logger | undefined;
|
|
264
299
|
}
|
|
@@ -341,7 +376,7 @@ interface CommonProvider {
|
|
|
341
376
|
* An event emitter for ProviderEvents.
|
|
342
377
|
* @see ProviderEvents
|
|
343
378
|
*/
|
|
344
|
-
events?: GenericEventEmitter
|
|
379
|
+
events?: GenericEventEmitter<AnyProviderEvent>;
|
|
345
380
|
/**
|
|
346
381
|
* A function used to shut down the provider.
|
|
347
382
|
* Called when this provider is replaced with a new one, or when the OpenFeature is shut down.
|
|
@@ -500,15 +535,15 @@ declare function isObject<T extends object>(value: unknown): value is T;
|
|
|
500
535
|
declare function objectOrUndefined<T extends object>(value: unknown): T | undefined;
|
|
501
536
|
|
|
502
537
|
declare abstract class OpenFeatureCommonAPI<P extends CommonProvider = CommonProvider, H extends BaseHook = BaseHook> implements Eventing, EvaluationLifeCycle<OpenFeatureCommonAPI<P>>, ManageLogger<OpenFeatureCommonAPI<P>> {
|
|
503
|
-
protected abstract _createEventEmitter(): GenericEventEmitter
|
|
538
|
+
protected abstract _createEventEmitter(): GenericEventEmitter<AnyProviderEvent>;
|
|
504
539
|
protected abstract _defaultProvider: P;
|
|
505
|
-
protected abstract readonly _events: GenericEventEmitter
|
|
540
|
+
protected abstract readonly _events: GenericEventEmitter<AnyProviderEvent>;
|
|
506
541
|
protected _hooks: H[];
|
|
507
542
|
protected _context: EvaluationContext;
|
|
508
543
|
protected _logger: Logger;
|
|
509
544
|
private readonly _clientEventHandlers;
|
|
510
545
|
protected _clientProviders: Map<string, P>;
|
|
511
|
-
protected _clientEvents: Map<string | undefined, GenericEventEmitter
|
|
546
|
+
protected _clientEvents: Map<string | undefined, GenericEventEmitter<AnyProviderEvent>>;
|
|
512
547
|
protected _runsOn: Paradigm;
|
|
513
548
|
constructor(category: Paradigm);
|
|
514
549
|
addHooks(...hooks: H[]): this;
|
|
@@ -516,30 +551,37 @@ declare abstract class OpenFeatureCommonAPI<P extends CommonProvider = CommonPro
|
|
|
516
551
|
clearHooks(): this;
|
|
517
552
|
setLogger(logger: Logger): this;
|
|
518
553
|
/**
|
|
519
|
-
* Get metadata about
|
|
554
|
+
* Get metadata about the default provider.
|
|
520
555
|
* @returns {ProviderMetadata} Provider Metadata
|
|
521
556
|
*/
|
|
522
557
|
get providerMetadata(): ProviderMetadata;
|
|
558
|
+
/**
|
|
559
|
+
* Get metadata about a registered provider using the client name.
|
|
560
|
+
* An unbound or empty client name will return metadata from the default provider.
|
|
561
|
+
* @param {string} [clientName] The name to identify the client
|
|
562
|
+
* @returns {ProviderMetadata} Provider Metadata
|
|
563
|
+
*/
|
|
564
|
+
getProviderMetadata(clientName?: string): ProviderMetadata;
|
|
523
565
|
/**
|
|
524
566
|
* Adds a handler for the given provider event type.
|
|
525
567
|
* The handlers are called in the order they have been added.
|
|
526
568
|
* API (global) events run for all providers.
|
|
527
|
-
* @param {
|
|
569
|
+
* @param {AnyProviderEvent} eventType The provider event type to listen to
|
|
528
570
|
* @param {EventHandler} handler The handler to run on occurrence of the event type
|
|
529
571
|
*/
|
|
530
|
-
addHandler<T extends
|
|
572
|
+
addHandler<T extends AnyProviderEvent>(eventType: T, handler: EventHandler): void;
|
|
531
573
|
/**
|
|
532
574
|
* Removes a handler for the given provider event type.
|
|
533
|
-
* @param {
|
|
575
|
+
* @param {AnyProviderEvent} eventType The provider event type to remove the listener for
|
|
534
576
|
* @param {EventHandler} handler The handler to remove for the provider event type
|
|
535
577
|
*/
|
|
536
|
-
removeHandler<T extends
|
|
578
|
+
removeHandler<T extends AnyProviderEvent>(eventType: T, handler: EventHandler): void;
|
|
537
579
|
/**
|
|
538
580
|
* Gets the current handlers for the given provider event type.
|
|
539
|
-
* @param {
|
|
581
|
+
* @param {AnyProviderEvent} eventType The provider event type to get the current handlers for
|
|
540
582
|
* @returns {EventHandler[]} The handlers currently attached to the given provider event type
|
|
541
583
|
*/
|
|
542
|
-
getHandlers<T extends
|
|
584
|
+
getHandlers<T extends AnyProviderEvent>(eventType: T): EventHandler[];
|
|
543
585
|
/**
|
|
544
586
|
* Sets the default provider for flag evaluations and returns a promise that resolves when the provider is ready.
|
|
545
587
|
* This provider will be used by unnamed clients and named clients to which no provider is bound.
|
|
@@ -581,9 +623,9 @@ declare abstract class OpenFeatureCommonAPI<P extends CommonProvider = CommonPro
|
|
|
581
623
|
setProvider(clientName: string, provider: P): this;
|
|
582
624
|
private setAwaitableProvider;
|
|
583
625
|
protected getProviderForClient(name?: string): P;
|
|
584
|
-
protected buildAndCacheEventEmitterForClient(name?: string): GenericEventEmitter
|
|
626
|
+
protected buildAndCacheEventEmitterForClient(name?: string): GenericEventEmitter<AnyProviderEvent>;
|
|
585
627
|
private getUnboundEmitters;
|
|
586
|
-
|
|
628
|
+
protected getAssociatedEventEmitters(clientName: string | undefined): GenericEventEmitter<AnyProviderEvent, Record<string, unknown>>[];
|
|
587
629
|
private transferListeners;
|
|
588
630
|
close(): Promise<void>;
|
|
589
631
|
protected clearProvidersAndSetDefault(defaultProvider: P): Promise<void>;
|
|
@@ -681,12 +723,29 @@ interface Client extends EvaluationLifeCycle<Client>, Features, ManageLogger<Cli
|
|
|
681
723
|
readonly providerStatus: ProviderStatus;
|
|
682
724
|
}
|
|
683
725
|
|
|
726
|
+
/**
|
|
727
|
+
* A subset of events that can be directly emitted by providers.
|
|
728
|
+
*/
|
|
729
|
+
type ProviderEmittableEvents = Exclude<ClientProviderEvents, ClientProviderEvents.ContextChanged>;
|
|
730
|
+
|
|
731
|
+
/**
|
|
732
|
+
* The OpenFeatureEventEmitter can be used by provider developers to emit
|
|
733
|
+
* events at various parts of the provider lifecycle.
|
|
734
|
+
*
|
|
735
|
+
* NOTE: Ready and error events are automatically emitted by the SDK based on
|
|
736
|
+
* the result of the initialize method.
|
|
737
|
+
*/
|
|
738
|
+
declare class OpenFeatureEventEmitter extends GenericEventEmitter<ProviderEmittableEvents> {
|
|
739
|
+
protected readonly eventEmitter: EventEmitter;
|
|
740
|
+
constructor();
|
|
741
|
+
}
|
|
742
|
+
|
|
684
743
|
/**
|
|
685
744
|
* The InternalEventEmitter is not exported publicly and should only be used within the SDK. It extends the
|
|
686
745
|
* OpenFeatureEventEmitter to include additional properties that can be included
|
|
687
746
|
* in the event details.
|
|
688
747
|
*/
|
|
689
|
-
declare abstract class InternalEventEmitter extends GenericEventEmitter<CommonEventDetails> {
|
|
748
|
+
declare abstract class InternalEventEmitter extends GenericEventEmitter<ClientProviderEvents, CommonEventDetails> {
|
|
690
749
|
}
|
|
691
750
|
|
|
692
751
|
type Hook = BaseHook<FlagValue, void, void>;
|
|
@@ -746,18 +805,6 @@ declare class NoopFeatureProvider implements Provider {
|
|
|
746
805
|
}
|
|
747
806
|
declare const NOOP_PROVIDER: NoopFeatureProvider;
|
|
748
807
|
|
|
749
|
-
/**
|
|
750
|
-
* The OpenFeatureEventEmitter can be used by provider developers to emit
|
|
751
|
-
* events at various parts of the provider lifecycle.
|
|
752
|
-
*
|
|
753
|
-
* NOTE: Ready and error events are automatically emitted by the SDK based on
|
|
754
|
-
* the result of the initialize method.
|
|
755
|
-
*/
|
|
756
|
-
declare class OpenFeatureEventEmitter extends GenericEventEmitter {
|
|
757
|
-
protected readonly eventEmitter: EventEmitter;
|
|
758
|
-
constructor();
|
|
759
|
-
}
|
|
760
|
-
|
|
761
808
|
/**
|
|
762
809
|
* Don't export types from this file publicly.
|
|
763
810
|
* It might cause confusion since these types are not a part of the general API,
|
|
@@ -834,9 +881,9 @@ declare class OpenFeatureClient implements Client {
|
|
|
834
881
|
constructor(providerAccessor: () => Provider, emitterAccessor: () => InternalEventEmitter, globalLogger: () => Logger, options: OpenFeatureClientOptions);
|
|
835
882
|
get metadata(): ClientMetadata;
|
|
836
883
|
get providerStatus(): ProviderStatus;
|
|
837
|
-
addHandler
|
|
838
|
-
removeHandler
|
|
839
|
-
getHandlers(eventType:
|
|
884
|
+
addHandler(eventType: ClientProviderEvents, handler: EventHandler): void;
|
|
885
|
+
removeHandler(notificationType: ClientProviderEvents, handler: EventHandler): void;
|
|
886
|
+
getHandlers(eventType: ClientProviderEvents): EventHandler[];
|
|
840
887
|
setLogger(logger: Logger): this;
|
|
841
888
|
addHooks(...hooks: Hook[]): this;
|
|
842
889
|
getHooks(): Hook[];
|
|
@@ -859,7 +906,7 @@ declare class OpenFeatureClient implements Client {
|
|
|
859
906
|
}
|
|
860
907
|
|
|
861
908
|
declare class OpenFeatureAPI extends OpenFeatureCommonAPI<Provider, Hook> implements ManageContext<Promise<void>> {
|
|
862
|
-
protected _events:
|
|
909
|
+
protected _events: GenericEventEmitter<ClientProviderEvents>;
|
|
863
910
|
protected _defaultProvider: Provider;
|
|
864
911
|
protected _createEventEmitter: () => OpenFeatureEventEmitter;
|
|
865
912
|
protected _namedProviderContext: Map<string, EvaluationContext>;
|
|
@@ -940,4 +987,4 @@ declare class OpenFeatureAPI extends OpenFeatureCommonAPI<Provider, Hook> implem
|
|
|
940
987
|
*/
|
|
941
988
|
declare const OpenFeature: OpenFeatureAPI;
|
|
942
989
|
|
|
943
|
-
export { BaseHook, BeforeHookContext, Client, ClientMetadata, CommonEventDetails, CommonProvider, ConfigChangeEvent, DefaultLogger, ErrorCode, ErrorEvent, EvaluationContext, EvaluationContextValue, EvaluationDetails, EvaluationLifeCycle, EventContext, EventDetails, EventHandler, EventMetadata, Eventing, Features, FlagEvaluationOptions, FlagMetadata, FlagNotFoundError, FlagValue, FlagValueType, GeneralError, GenericEventEmitter, Hook, HookContext, HookHints, InMemoryProvider, InvalidContextError, JsonArray, JsonObject, JsonValue, LOG_LEVELS, Logger, ManageContext, ManageLogger, Metadata, NOOP_PROVIDER, OpenFeature, OpenFeatureAPI, OpenFeatureClient, OpenFeatureCommonAPI, OpenFeatureError, OpenFeatureEventEmitter, Paradigm, ParseError, PrimitiveValue, Provider, ProviderEvents, ProviderMetadata, ProviderNotReadyError, ProviderStatus, ReadyEvent, ResolutionDetails, ResolutionReason, SafeLogger, StaleEvent, StandardResolutionReasons, TargetingKeyMissingError, TypeMismatchError, isObject, isString, objectOrUndefined, statusMatchesEvent, stringOrUndefined };
|
|
990
|
+
export { ClientProviderEvents as AllProviderEvents, AnyProviderEvent, BaseHook, BeforeHookContext, Client, ClientMetadata, ClientProviderEvents, CommonEventDetails, CommonProvider, ConfigChangeEvent, DefaultLogger, ErrorCode, ErrorEvent, EvaluationContext, EvaluationContextValue, EvaluationDetails, EvaluationLifeCycle, EventContext, EventDetails, EventHandler, EventMetadata, Eventing, Features, FlagEvaluationOptions, FlagMetadata, FlagNotFoundError, FlagValue, FlagValueType, GeneralError, GenericEventEmitter, Hook, HookContext, HookHints, InMemoryProvider, InvalidContextError, JsonArray, JsonObject, JsonValue, LOG_LEVELS, Logger, ManageContext, ManageLogger, Metadata, NOOP_PROVIDER, OpenFeature, OpenFeatureAPI, OpenFeatureClient, OpenFeatureCommonAPI, OpenFeatureError, OpenFeatureEventEmitter, Paradigm, ParseError, PrimitiveValue, Provider, ProviderEmittableEvents, ClientProviderEvents as ProviderEvents, ProviderMetadata, ProviderNotReadyError, ProviderStatus, ReadyEvent, ResolutionDetails, ResolutionReason, SafeLogger, ServerProviderEvents, StaleEvent, StandardResolutionReasons, TargetingKeyMissingError, TypeMismatchError, isObject, isString, objectOrUndefined, statusMatchesEvent, stringOrUndefined };
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@openfeature/web-sdk",
|
|
3
|
-
"version": "0.4.
|
|
3
|
+
"version": "0.4.9",
|
|
4
4
|
"description": "OpenFeature SDK for Web",
|
|
5
5
|
"main": "./dist/cjs/index.js",
|
|
6
6
|
"files": [
|
|
@@ -46,9 +46,9 @@
|
|
|
46
46
|
},
|
|
47
47
|
"homepage": "https://github.com/open-feature/js-sdk#readme",
|
|
48
48
|
"peerDependencies": {
|
|
49
|
-
"@openfeature/core": "0.0.
|
|
49
|
+
"@openfeature/core": "0.0.22"
|
|
50
50
|
},
|
|
51
51
|
"devDependencies": {
|
|
52
|
-
"@openfeature/core": "0.0.
|
|
52
|
+
"@openfeature/core": "0.0.22"
|
|
53
53
|
}
|
|
54
54
|
}
|