@openfeature/web-sdk 0.3.2-experimental → 0.3.3-experimental
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/dist/cjs/index.js +278 -121
- package/dist/cjs/index.js.map +4 -4
- package/dist/esm/index.js +278 -122
- package/dist/esm/index.js.map +4 -4
- package/dist/types.d.ts +167 -126
- package/package.json +2 -2
package/dist/types.d.ts
CHANGED
|
@@ -1,3 +1,67 @@
|
|
|
1
|
+
type EventMetadata = {
|
|
2
|
+
[key: string]: string | boolean | number;
|
|
3
|
+
};
|
|
4
|
+
type EventDetails = {
|
|
5
|
+
clientName?: string;
|
|
6
|
+
message?: string;
|
|
7
|
+
flagsChanged?: string[];
|
|
8
|
+
metadata?: EventMetadata;
|
|
9
|
+
};
|
|
10
|
+
type EventHandler = (eventDetails?: EventDetails) => Promise<unknown> | unknown;
|
|
11
|
+
interface Eventing {
|
|
12
|
+
/**
|
|
13
|
+
* Adds a handler for the given provider event type.
|
|
14
|
+
* The handlers are called in the order they have been added.
|
|
15
|
+
* @param {ProviderEvents} eventType The provider event type to listen to
|
|
16
|
+
* @param {EventHandler} handler The handler to run on occurrence of the event type
|
|
17
|
+
*/
|
|
18
|
+
addHandler(eventType: ProviderEvents, handler: EventHandler): void;
|
|
19
|
+
/**
|
|
20
|
+
* Removes a handler for the given provider event type.
|
|
21
|
+
* @param {ProviderEvents} eventType The provider event type to remove the listener for
|
|
22
|
+
* @param {EventHandler} handler The handler to remove for the provider event type
|
|
23
|
+
*/
|
|
24
|
+
removeHandler(eventType: ProviderEvents, handler: EventHandler): void;
|
|
25
|
+
/**
|
|
26
|
+
* Gets the current handlers for the given provider event type.
|
|
27
|
+
* @param {ProviderEvents} eventType The provider event type to get the current handlers for
|
|
28
|
+
* @returns {EventHandler[]} The handlers currently attached to the given provider event type
|
|
29
|
+
*/
|
|
30
|
+
getHandlers(eventType: ProviderEvents): EventHandler[];
|
|
31
|
+
}
|
|
32
|
+
declare enum ProviderEvents {
|
|
33
|
+
/**
|
|
34
|
+
* The provider is ready to evaluate flags.
|
|
35
|
+
*/
|
|
36
|
+
Ready = "PROVIDER_READY",
|
|
37
|
+
/**
|
|
38
|
+
* The provider is in an error state.
|
|
39
|
+
*/
|
|
40
|
+
Error = "PROVIDER_ERROR",
|
|
41
|
+
/**
|
|
42
|
+
* The flag configuration in the source-of-truth has changed.
|
|
43
|
+
*/
|
|
44
|
+
ConfigurationChanged = "PROVIDER_CONFIGURATION_CHANGED",
|
|
45
|
+
/**
|
|
46
|
+
* The provider's cached state is no longer valid and may not be up-to-date with the source of truth.
|
|
47
|
+
*/
|
|
48
|
+
Stale = "PROVIDER_STALE"
|
|
49
|
+
}
|
|
50
|
+
declare class OpenFeatureEventEmitter implements ManageLogger<OpenFeatureEventEmitter> {
|
|
51
|
+
private readonly globalLogger?;
|
|
52
|
+
private readonly _handlers;
|
|
53
|
+
private readonly eventEmitter;
|
|
54
|
+
private _eventLogger?;
|
|
55
|
+
constructor(globalLogger?: (() => Logger) | undefined);
|
|
56
|
+
emit(eventType: ProviderEvents, context?: EventDetails): void;
|
|
57
|
+
addHandler(eventType: ProviderEvents, handler: EventHandler): void;
|
|
58
|
+
removeHandler(eventType: ProviderEvents, handler: EventHandler): void;
|
|
59
|
+
removeAllHandlers(eventType?: ProviderEvents): void;
|
|
60
|
+
getHandlers(eventType: ProviderEvents): EventHandler[];
|
|
61
|
+
setLogger(logger: Logger): this;
|
|
62
|
+
private get _logger();
|
|
63
|
+
}
|
|
64
|
+
|
|
1
65
|
type PrimitiveValue = null | boolean | string | number;
|
|
2
66
|
type JsonObject = {
|
|
3
67
|
[key: string]: JsonValue;
|
|
@@ -46,7 +110,7 @@ declare const StandardResolutionReasons: {
|
|
|
46
110
|
*/
|
|
47
111
|
readonly DISABLED: "DISABLED";
|
|
48
112
|
/**
|
|
49
|
-
*
|
|
113
|
+
* The resolved value was configured statically, or otherwise fell back to a pre-configured value.
|
|
50
114
|
*/
|
|
51
115
|
readonly DEFAULT: "DEFAULT";
|
|
52
116
|
/**
|
|
@@ -99,27 +163,33 @@ declare enum ErrorCode {
|
|
|
99
163
|
GENERAL = "GENERAL"
|
|
100
164
|
}
|
|
101
165
|
type ResolutionReason = keyof typeof StandardResolutionReasons | (string & Record<never, never>);
|
|
166
|
+
/**
|
|
167
|
+
* A structure which supports definition of arbitrary properties, with keys of type string, and values of type boolean, string, or number.
|
|
168
|
+
*
|
|
169
|
+
* This structure is populated by a provider for use by an Application Author (via the Evaluation API) or an Application Integrator (via hooks).
|
|
170
|
+
*/
|
|
171
|
+
type FlagMetadata = Record<string, string | number | boolean>;
|
|
102
172
|
type ResolutionDetails<U> = {
|
|
103
173
|
value: U;
|
|
104
174
|
variant?: string;
|
|
175
|
+
flagMetadata?: FlagMetadata;
|
|
105
176
|
reason?: ResolutionReason;
|
|
106
177
|
errorCode?: ErrorCode;
|
|
107
178
|
errorMessage?: string;
|
|
108
179
|
};
|
|
109
180
|
type EvaluationDetails<T extends FlagValue> = {
|
|
110
181
|
flagKey: string;
|
|
182
|
+
flagMetadata: Readonly<FlagMetadata>;
|
|
111
183
|
} & ResolutionDetails<T>;
|
|
112
184
|
interface ManageContext<T> {
|
|
113
185
|
/**
|
|
114
186
|
* Access the evaluation context set on the receiver.
|
|
115
|
-
*
|
|
116
187
|
* @returns {EvaluationContext} Evaluation context
|
|
117
188
|
*/
|
|
118
189
|
getContext(): EvaluationContext;
|
|
119
190
|
/**
|
|
120
191
|
* Sets evaluation context that will be used during flag evaluations
|
|
121
192
|
* on this receiver.
|
|
122
|
-
*
|
|
123
193
|
* @template T The type of the receiver
|
|
124
194
|
* @param {EvaluationContext} context Evaluation context
|
|
125
195
|
* @returns {T} The receiver (this object)
|
|
@@ -132,7 +202,6 @@ interface ManageLogger<T> {
|
|
|
132
202
|
* and is passed to various components in the SDK.
|
|
133
203
|
* The logger configured on the global API object will be used for all evaluations,
|
|
134
204
|
* unless overridden in a particular client.
|
|
135
|
-
*
|
|
136
205
|
* @template T The type of the receiver
|
|
137
206
|
* @param {Logger} logger The logger to be used
|
|
138
207
|
* @returns {T} The receiver (this object)
|
|
@@ -145,6 +214,7 @@ interface Metadata {
|
|
|
145
214
|
interface ClientMetadata extends Metadata {
|
|
146
215
|
readonly version?: string;
|
|
147
216
|
readonly name?: string;
|
|
217
|
+
readonly providerMetadata: ProviderMetadata;
|
|
148
218
|
}
|
|
149
219
|
interface ProviderMetadata extends Metadata {
|
|
150
220
|
readonly name: string;
|
|
@@ -175,7 +245,6 @@ interface ManageTransactionContextPropagator<T> extends TransactionContextPropag
|
|
|
175
245
|
* Sets a transaction context propagator on this receiver. The transaction context
|
|
176
246
|
* propagator is responsible for persisting context for the duration of a single
|
|
177
247
|
* transaction.
|
|
178
|
-
*
|
|
179
248
|
* @experimental
|
|
180
249
|
* @template T The type of the receiver
|
|
181
250
|
* @param {TransactionContextPropagator} transactionContextPropagator The context propagator to be used
|
|
@@ -190,7 +259,6 @@ interface TransactionContextPropagator {
|
|
|
190
259
|
*
|
|
191
260
|
* Returns the currently defined transaction context using the registered transaction
|
|
192
261
|
* context propagator.
|
|
193
|
-
*
|
|
194
262
|
* @experimental
|
|
195
263
|
* @returns {TransactionContext} The current transaction context
|
|
196
264
|
*/
|
|
@@ -200,7 +268,6 @@ interface TransactionContextPropagator {
|
|
|
200
268
|
* The OpenFeature Enhancement Proposal regarding transaction context can be found [here](https://github.com/open-feature/ofep/pull/32).
|
|
201
269
|
*
|
|
202
270
|
* Sets the transaction context using the registered transaction context propagator.
|
|
203
|
-
*
|
|
204
271
|
* @experimental
|
|
205
272
|
* @template R The return value of the callback
|
|
206
273
|
* @param {TransactionContext} transactionContext The transaction specific context
|
|
@@ -209,8 +276,29 @@ interface TransactionContextPropagator {
|
|
|
209
276
|
*/
|
|
210
277
|
setTransactionContext<R>(transactionContext: TransactionContext, callback: (...args: unknown[]) => R, ...args: unknown[]): void;
|
|
211
278
|
}
|
|
279
|
+
declare enum ProviderStatus {
|
|
280
|
+
NOT_READY = "NOT_READY",
|
|
281
|
+
READY = "READY",
|
|
282
|
+
ERROR = "ERROR"
|
|
283
|
+
}
|
|
212
284
|
interface CommonProvider {
|
|
213
285
|
readonly metadata: ProviderMetadata;
|
|
286
|
+
readonly status?: ProviderStatus;
|
|
287
|
+
/**
|
|
288
|
+
* An event emitter for ProviderEvents.
|
|
289
|
+
* @see ProviderEvents
|
|
290
|
+
*/
|
|
291
|
+
events?: OpenFeatureEventEmitter;
|
|
292
|
+
onClose?(): Promise<void>;
|
|
293
|
+
/**
|
|
294
|
+
* A handler function used to setup the provider.
|
|
295
|
+
* Called by the SDK after the provider is set.
|
|
296
|
+
* When the returned promise resolves, the SDK fires the ProviderEvents.Ready event.
|
|
297
|
+
* If the returned promise rejects, the SDK fires the ProviderEvents.Error event.
|
|
298
|
+
* Use this function to perform any context-dependent setup within the provider.
|
|
299
|
+
* @param context
|
|
300
|
+
*/
|
|
301
|
+
initialize?(context?: EvaluationContext): Promise<void>;
|
|
214
302
|
}
|
|
215
303
|
|
|
216
304
|
declare abstract class OpenFeatureError extends Error {
|
|
@@ -271,83 +359,70 @@ declare class NoopTransactionContextPropagator implements TransactionContextProp
|
|
|
271
359
|
}
|
|
272
360
|
declare const NOOP_TRANSACTION_CONTEXT_PROPAGATOR: NoopTransactionContextPropagator;
|
|
273
361
|
|
|
274
|
-
declare abstract class OpenFeatureCommonAPI {
|
|
362
|
+
declare abstract class OpenFeatureCommonAPI<P extends CommonProvider = CommonProvider> implements Eventing {
|
|
275
363
|
protected _transactionContextPropagator: TransactionContextPropagator;
|
|
276
364
|
protected _context: EvaluationContext;
|
|
277
365
|
protected _logger: Logger;
|
|
366
|
+
protected abstract _defaultProvider: P;
|
|
367
|
+
private readonly _events;
|
|
368
|
+
protected _clientProviders: Map<string, P>;
|
|
369
|
+
protected _clientEvents: Map<string | undefined, OpenFeatureEventEmitter>;
|
|
278
370
|
abstract clearHooks(): this;
|
|
279
|
-
|
|
371
|
+
setLogger(logger: Logger): this;
|
|
372
|
+
/**
|
|
373
|
+
* Get metadata about registered provider.
|
|
374
|
+
* @returns {ProviderMetadata} Provider Metadata
|
|
375
|
+
*/
|
|
376
|
+
get providerMetadata(): ProviderMetadata;
|
|
280
377
|
getContext(): EvaluationContext;
|
|
281
|
-
setTransactionContextPropagator(transactionContextPropagator: TransactionContextPropagator): OpenFeatureCommonAPI;
|
|
282
|
-
setTransactionContext<R>(transactionContext: TransactionContext, callback: (...args: unknown[]) => R, ...args: unknown[]): void;
|
|
283
|
-
getTransactionContext(): TransactionContext;
|
|
284
|
-
}
|
|
285
|
-
|
|
286
|
-
// Type definitions for events 3.0
|
|
287
|
-
// Project: https://github.com/Gozala/events
|
|
288
|
-
// Definitions by: Yasunori Ohoka <https://github.com/yasupeke>
|
|
289
|
-
// Shenwei Wang <https://github.com/weareoutman>
|
|
290
|
-
// Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped
|
|
291
|
-
|
|
292
|
-
type Listener = (...args: any[]) => void;
|
|
293
|
-
|
|
294
|
-
declare class EventEmitter {
|
|
295
|
-
static listenerCount(emitter: EventEmitter, type: string | number): number;
|
|
296
|
-
static defaultMaxListeners: number;
|
|
297
|
-
|
|
298
|
-
eventNames(): Array<string | number>;
|
|
299
|
-
setMaxListeners(n: number): this;
|
|
300
|
-
getMaxListeners(): number;
|
|
301
|
-
emit(type: string | number, ...args: any[]): boolean;
|
|
302
|
-
addListener(type: string | number, listener: Listener): this;
|
|
303
|
-
on(type: string | number, listener: Listener): this;
|
|
304
|
-
once(type: string | number, listener: Listener): this;
|
|
305
|
-
prependListener(type: string | number, listener: Listener): this;
|
|
306
|
-
prependOnceListener(type: string | number, listener: Listener): this;
|
|
307
|
-
removeListener(type: string | number, listener: Listener): this;
|
|
308
|
-
off(type: string | number, listener: Listener): this;
|
|
309
|
-
removeAllListeners(type?: string | number): this;
|
|
310
|
-
listeners(type: string | number): Listener[];
|
|
311
|
-
listenerCount(type: string | number): number;
|
|
312
|
-
rawListeners(type: string | number): Listener[];
|
|
313
|
-
}
|
|
314
|
-
|
|
315
|
-
declare enum ProviderEvents {
|
|
316
378
|
/**
|
|
317
|
-
*
|
|
379
|
+
* Adds a handler for the given provider event type.
|
|
380
|
+
* The handlers are called in the order they have been added.
|
|
381
|
+
* When changing the provider, the currently attached handlers will listen to the events of the new provider.
|
|
382
|
+
* @param {ProviderEvents} eventType The provider event type to listen to
|
|
383
|
+
* @param {EventHandler} handler The handler to run on occurrence of the event type
|
|
318
384
|
*/
|
|
319
|
-
|
|
385
|
+
addHandler(eventType: ProviderEvents, handler: EventHandler): void;
|
|
320
386
|
/**
|
|
321
|
-
*
|
|
387
|
+
* Removes a handler for the given provider event type.
|
|
388
|
+
* @param {ProviderEvents} eventType The provider event type to remove the listener for
|
|
389
|
+
* @param {EventHandler} handler The handler to remove for the provider event type
|
|
322
390
|
*/
|
|
323
|
-
|
|
391
|
+
removeHandler(eventType: ProviderEvents, handler: EventHandler): void;
|
|
324
392
|
/**
|
|
325
|
-
*
|
|
393
|
+
* Gets the current handlers for the given provider event type.
|
|
394
|
+
* @param {ProviderEvents} eventType The provider event type to get the current handlers for
|
|
395
|
+
* @returns {EventHandler[]} The handlers currently attached to the given provider event type
|
|
326
396
|
*/
|
|
327
|
-
|
|
397
|
+
getHandlers(eventType: ProviderEvents): EventHandler[];
|
|
328
398
|
/**
|
|
329
|
-
*
|
|
399
|
+
* Sets the default provider for flag evaluations.
|
|
400
|
+
* This provider will be used by unnamed clients and named clients to which no provider is bound.
|
|
401
|
+
* Setting a provider supersedes the current provider used in new and existing clients without a name.
|
|
402
|
+
* @template P
|
|
403
|
+
* @param {P} provider The provider responsible for flag evaluations.
|
|
404
|
+
* @returns {OpenFeatureCommonAPI} OpenFeature API
|
|
330
405
|
*/
|
|
331
|
-
|
|
332
|
-
|
|
333
|
-
|
|
334
|
-
|
|
335
|
-
|
|
336
|
-
|
|
337
|
-
|
|
338
|
-
}
|
|
339
|
-
|
|
340
|
-
|
|
341
|
-
|
|
342
|
-
|
|
343
|
-
|
|
406
|
+
setProvider(provider: P): this;
|
|
407
|
+
/**
|
|
408
|
+
* Sets the provider that OpenFeature will use for flag evaluations of providers with the given name.
|
|
409
|
+
* Setting a provider supersedes the current provider used in new and existing clients with that name.
|
|
410
|
+
* @template P
|
|
411
|
+
* @param {string} clientName The name to identify the client
|
|
412
|
+
* @param {P} provider The provider responsible for flag evaluations.
|
|
413
|
+
* @returns {this} OpenFeature API
|
|
414
|
+
*/
|
|
415
|
+
setProvider(clientName: string, provider: P): this;
|
|
416
|
+
protected getProviderForClient(name?: string): P;
|
|
417
|
+
protected getEventEmitterForClient(name?: string): OpenFeatureEventEmitter;
|
|
418
|
+
private transferListeners;
|
|
419
|
+
close(): Promise<void>;
|
|
420
|
+
private handleShutdownError;
|
|
421
|
+
setTransactionContextPropagator(transactionContextPropagator: TransactionContextPropagator): OpenFeatureCommonAPI<P>;
|
|
422
|
+
setTransactionContext<R>(transactionContext: TransactionContext, callback: (...args: unknown[]) => R, ...args: unknown[]): void;
|
|
423
|
+
getTransactionContext(): TransactionContext;
|
|
344
424
|
}
|
|
345
|
-
|
|
346
|
-
notificationType: string;
|
|
347
|
-
[key: string]: unknown;
|
|
348
|
-
};
|
|
349
|
-
type Handler = (eventContext?: EventContext) => void;
|
|
350
|
-
type EventCallbackMessage = (eventContext: EventContext) => void;
|
|
425
|
+
|
|
351
426
|
/**
|
|
352
427
|
* Interface that providers must implement to resolve flag values for their particular
|
|
353
428
|
* backend or vendor.
|
|
@@ -362,31 +437,13 @@ interface Provider extends CommonProvider {
|
|
|
362
437
|
* provider. Provider hooks are not configured or controlled by the application author.
|
|
363
438
|
*/
|
|
364
439
|
readonly hooks?: Hook[];
|
|
365
|
-
/**
|
|
366
|
-
* An event emitter for ProviderEvents.
|
|
367
|
-
*
|
|
368
|
-
* @see ProviderEvents
|
|
369
|
-
*/
|
|
370
|
-
events?: EventEmitter;
|
|
371
440
|
/**
|
|
372
441
|
* A handler function to reconcile changes when the static context.
|
|
373
442
|
* Called by the SDK when the context is changed.
|
|
374
|
-
*
|
|
375
443
|
* @param oldContext
|
|
376
444
|
* @param newContext
|
|
377
445
|
*/
|
|
378
446
|
onContextChange?(oldContext: EvaluationContext, newContext: EvaluationContext): Promise<void>;
|
|
379
|
-
onClose?(): Promise<void>;
|
|
380
|
-
/**
|
|
381
|
-
* A handler function used to setup the provider.
|
|
382
|
-
* Called by the SDK after the provider is set.
|
|
383
|
-
* When the returned promise resolves, the SDK fires the ProviderEvents.Ready event.
|
|
384
|
-
* If the returned promise rejects, the SDK fires the ProviderEvents.Error event.
|
|
385
|
-
* Use this function to perform any context-dependent setup within the provider.
|
|
386
|
-
*
|
|
387
|
-
* @param context
|
|
388
|
-
*/
|
|
389
|
-
initialize?(context: EvaluationContext): Promise<void>;
|
|
390
447
|
/**
|
|
391
448
|
* Resolve a boolean flag and its evaluation details.
|
|
392
449
|
*/
|
|
@@ -408,14 +465,12 @@ interface Hook<T extends FlagValue = FlagValue> {
|
|
|
408
465
|
/**
|
|
409
466
|
* Runs before flag values are resolved from the provider.
|
|
410
467
|
* If an EvaluationContext is returned, it will be merged with the pre-existing EvaluationContext.
|
|
411
|
-
*
|
|
412
468
|
* @param hookContext
|
|
413
469
|
* @param hookHints
|
|
414
470
|
*/
|
|
415
471
|
before?(hookContext: BeforeHookContext, hookHints?: HookHints): EvaluationContext | void;
|
|
416
472
|
/**
|
|
417
473
|
* Runs after flag values are successfully resolved from the provider.
|
|
418
|
-
*
|
|
419
474
|
* @param hookContext
|
|
420
475
|
* @param evaluationDetails
|
|
421
476
|
* @param hookHints
|
|
@@ -423,7 +478,6 @@ interface Hook<T extends FlagValue = FlagValue> {
|
|
|
423
478
|
after?(hookContext: Readonly<HookContext<T>>, evaluationDetails: EvaluationDetails<T>, hookHints?: HookHints): void;
|
|
424
479
|
/**
|
|
425
480
|
* Runs in the event of an unhandled error or promise rejection during flag resolution, or any attached hooks.
|
|
426
|
-
*
|
|
427
481
|
* @param hookContext
|
|
428
482
|
* @param error
|
|
429
483
|
* @param hookHints
|
|
@@ -432,7 +486,6 @@ interface Hook<T extends FlagValue = FlagValue> {
|
|
|
432
486
|
/**
|
|
433
487
|
* Runs after all other hook stages, regardless of success or error.
|
|
434
488
|
* Errors thrown here are unhandled by the client and will surface in application code.
|
|
435
|
-
*
|
|
436
489
|
* @param hookContext
|
|
437
490
|
* @param hookHints
|
|
438
491
|
*/
|
|
@@ -445,7 +498,6 @@ interface EvaluationLifeCycle<T> {
|
|
|
445
498
|
* will not remove existing hooks.
|
|
446
499
|
* Hooks registered on the global API object run with all evaluations.
|
|
447
500
|
* Hooks registered on the client run with all evaluations on that client.
|
|
448
|
-
*
|
|
449
501
|
* @template T The type of the receiver
|
|
450
502
|
* @param {Hook<FlagValue>[]} hooks A list of hooks that should always run
|
|
451
503
|
* @returns {T} The receiver (this object)
|
|
@@ -453,13 +505,11 @@ interface EvaluationLifeCycle<T> {
|
|
|
453
505
|
addHooks(...hooks: Hook[]): T;
|
|
454
506
|
/**
|
|
455
507
|
* Access all the hooks that are registered on this receiver.
|
|
456
|
-
*
|
|
457
508
|
* @returns {Hook<FlagValue>[]} A list of the client hooks
|
|
458
509
|
*/
|
|
459
510
|
getHooks(): Hook[];
|
|
460
511
|
/**
|
|
461
512
|
* Clears all the hooks that are registered on this receiver.
|
|
462
|
-
*
|
|
463
513
|
* @template T The type of the receiver
|
|
464
514
|
* @returns {T} The receiver (this object)
|
|
465
515
|
*/
|
|
@@ -472,7 +522,6 @@ interface FlagEvaluationOptions {
|
|
|
472
522
|
interface Features {
|
|
473
523
|
/**
|
|
474
524
|
* Performs a flag evaluation that returns a boolean.
|
|
475
|
-
*
|
|
476
525
|
* @param {string} flagKey The flag key uniquely identifies a particular flag
|
|
477
526
|
* @param {boolean} defaultValue The value returned if an error occurs
|
|
478
527
|
* @param {FlagEvaluationOptions} options Additional flag evaluation options
|
|
@@ -481,7 +530,6 @@ interface Features {
|
|
|
481
530
|
getBooleanValue(flagKey: string, defaultValue: boolean, options?: FlagEvaluationOptions): boolean;
|
|
482
531
|
/**
|
|
483
532
|
* Performs a flag evaluation that a returns an evaluation details object.
|
|
484
|
-
*
|
|
485
533
|
* @param {string} flagKey The flag key uniquely identifies a particular flag
|
|
486
534
|
* @param {boolean} defaultValue The value returned if an error occurs
|
|
487
535
|
* @param {FlagEvaluationOptions} options Additional flag evaluation options
|
|
@@ -490,7 +538,6 @@ interface Features {
|
|
|
490
538
|
getBooleanDetails(flagKey: string, defaultValue: boolean, options?: FlagEvaluationOptions): EvaluationDetails<boolean>;
|
|
491
539
|
/**
|
|
492
540
|
* Performs a flag evaluation that returns a string.
|
|
493
|
-
*
|
|
494
541
|
* @param {string} flagKey The flag key uniquely identifies a particular flag
|
|
495
542
|
* @template {string} T A optional generic argument constraining the string
|
|
496
543
|
* @param {T} defaultValue The value returned if an error occurs
|
|
@@ -501,7 +548,6 @@ interface Features {
|
|
|
501
548
|
getStringValue<T extends string = string>(flagKey: string, defaultValue: T, options?: FlagEvaluationOptions): T;
|
|
502
549
|
/**
|
|
503
550
|
* Performs a flag evaluation that a returns an evaluation details object.
|
|
504
|
-
*
|
|
505
551
|
* @param {string} flagKey The flag key uniquely identifies a particular flag
|
|
506
552
|
* @template {string} T A optional generic argument constraining the string
|
|
507
553
|
* @param {T} defaultValue The value returned if an error occurs
|
|
@@ -512,7 +558,6 @@ interface Features {
|
|
|
512
558
|
getStringDetails<T extends string = string>(flagKey: string, defaultValue: T, options?: FlagEvaluationOptions): EvaluationDetails<T>;
|
|
513
559
|
/**
|
|
514
560
|
* Performs a flag evaluation that returns a number.
|
|
515
|
-
*
|
|
516
561
|
* @param {string} flagKey The flag key uniquely identifies a particular flag
|
|
517
562
|
* @template {number} T A optional generic argument constraining the number
|
|
518
563
|
* @param {T} defaultValue The value returned if an error occurs
|
|
@@ -523,7 +568,6 @@ interface Features {
|
|
|
523
568
|
getNumberValue<T extends number = number>(flagKey: string, defaultValue: T, options?: FlagEvaluationOptions): T;
|
|
524
569
|
/**
|
|
525
570
|
* Performs a flag evaluation that a returns an evaluation details object.
|
|
526
|
-
*
|
|
527
571
|
* @param {string} flagKey The flag key uniquely identifies a particular flag
|
|
528
572
|
* @template {number} T A optional generic argument constraining the number
|
|
529
573
|
* @param {T} defaultValue The value returned if an error occurs
|
|
@@ -534,7 +578,6 @@ interface Features {
|
|
|
534
578
|
getNumberDetails<T extends number = number>(flagKey: string, defaultValue: T, options?: FlagEvaluationOptions): EvaluationDetails<T>;
|
|
535
579
|
/**
|
|
536
580
|
* Performs a flag evaluation that returns an object.
|
|
537
|
-
*
|
|
538
581
|
* @param {string} flagKey The flag key uniquely identifies a particular flag
|
|
539
582
|
* @template {JsonValue} T A optional generic argument describing the structure
|
|
540
583
|
* @param {T} defaultValue The value returned if an error occurs
|
|
@@ -545,7 +588,6 @@ interface Features {
|
|
|
545
588
|
getObjectValue<T extends JsonValue = JsonValue>(flagKey: string, defaultValue: T, options?: FlagEvaluationOptions): T;
|
|
546
589
|
/**
|
|
547
590
|
* Performs a flag evaluation that a returns an evaluation details object.
|
|
548
|
-
*
|
|
549
591
|
* @param {string} flagKey The flag key uniquely identifies a particular flag
|
|
550
592
|
* @template {JsonValue} T A optional generic argument describing the structure
|
|
551
593
|
* @param {T} defaultValue The value returned if an error occurs
|
|
@@ -564,7 +606,6 @@ interface GlobalApi extends EvaluationLifeCycle<GlobalApi>, ManageContext<Global
|
|
|
564
606
|
* A factory function for creating new OpenFeature clients. Clients can contain
|
|
565
607
|
* their own state (e.g. logger, hook, context). Multiple clients can be used
|
|
566
608
|
* to segment feature flag configuration.
|
|
567
|
-
*
|
|
568
609
|
* @param {string} name The name of the client
|
|
569
610
|
* @param {string} version The version of the client
|
|
570
611
|
* @param {EvaluationContext} context Evaluation context that should be set on the client to used during flag evaluations
|
|
@@ -574,7 +615,6 @@ interface GlobalApi extends EvaluationLifeCycle<GlobalApi>, ManageContext<Global
|
|
|
574
615
|
/**
|
|
575
616
|
* Sets the provider that OpenFeature will use for flag evaluations. Setting
|
|
576
617
|
* a provider supersedes the current provider used in new and existing clients.
|
|
577
|
-
*
|
|
578
618
|
* @param {Provider} provider The provider responsible for flag evaluations.
|
|
579
619
|
* @returns {GlobalApi} OpenFeature API
|
|
580
620
|
*/
|
|
@@ -587,14 +627,16 @@ type OpenFeatureClientOptions = {
|
|
|
587
627
|
};
|
|
588
628
|
declare class OpenFeatureClient implements Client {
|
|
589
629
|
private readonly providerAccessor;
|
|
590
|
-
private readonly
|
|
630
|
+
private readonly events;
|
|
591
631
|
private readonly globalLogger;
|
|
592
|
-
readonly
|
|
632
|
+
private readonly options;
|
|
593
633
|
private _hooks;
|
|
594
634
|
private _clientLogger?;
|
|
595
|
-
|
|
596
|
-
|
|
597
|
-
addHandler(eventType: ProviderEvents, handler:
|
|
635
|
+
constructor(providerAccessor: () => Provider, events: () => OpenFeatureEventEmitter, globalLogger: () => Logger, options: OpenFeatureClientOptions);
|
|
636
|
+
get metadata(): ClientMetadata;
|
|
637
|
+
addHandler(eventType: ProviderEvents, handler: EventHandler): void;
|
|
638
|
+
removeHandler(notificationType: ProviderEvents, handler: EventHandler): void;
|
|
639
|
+
getHandlers(eventType: ProviderEvents): EventHandler[];
|
|
598
640
|
setLogger(logger: Logger): OpenFeatureClient;
|
|
599
641
|
addHooks(...hooks: Hook<FlagValue>[]): OpenFeatureClient;
|
|
600
642
|
getHooks(): Hook<FlagValue>[];
|
|
@@ -614,7 +656,6 @@ declare class OpenFeatureClient implements Client {
|
|
|
614
656
|
private finallyHooks;
|
|
615
657
|
private get _provider();
|
|
616
658
|
private get _logger();
|
|
617
|
-
private attachListeners;
|
|
618
659
|
}
|
|
619
660
|
|
|
620
661
|
/**
|
|
@@ -624,6 +665,7 @@ declare class NoopFeatureProvider implements Provider {
|
|
|
624
665
|
readonly metadata: {
|
|
625
666
|
readonly name: "No-op Provider";
|
|
626
667
|
};
|
|
668
|
+
get status(): ProviderStatus;
|
|
627
669
|
resolveBooleanEvaluation(_: string, defaultValue: boolean): ResolutionDetails<boolean>;
|
|
628
670
|
resolveStringEvaluation(_: string, defaultValue: string): ResolutionDetails<string>;
|
|
629
671
|
resolveNumberEvaluation(_: string, defaultValue: number): ResolutionDetails<number>;
|
|
@@ -632,39 +674,38 @@ declare class NoopFeatureProvider implements Provider {
|
|
|
632
674
|
}
|
|
633
675
|
declare const NOOP_PROVIDER: NoopFeatureProvider;
|
|
634
676
|
|
|
635
|
-
declare class OpenFeatureAPI extends OpenFeatureCommonAPI {
|
|
636
|
-
private _apiEvents;
|
|
637
|
-
private _providerReady;
|
|
677
|
+
declare class OpenFeatureAPI extends OpenFeatureCommonAPI<Provider> {
|
|
638
678
|
protected _hooks: Hook[];
|
|
639
|
-
protected
|
|
679
|
+
protected _defaultProvider: Provider;
|
|
640
680
|
private constructor();
|
|
641
681
|
/**
|
|
642
682
|
* Gets a singleton instance of the OpenFeature API.
|
|
643
|
-
*
|
|
644
683
|
* @ignore
|
|
645
684
|
* @returns {OpenFeatureAPI} OpenFeature API
|
|
646
685
|
*/
|
|
647
686
|
static getInstance(): OpenFeatureAPI;
|
|
648
|
-
/**
|
|
649
|
-
* Get metadata about registered provider.
|
|
650
|
-
*
|
|
651
|
-
* @returns {ProviderMetadata} Provider Metadata
|
|
652
|
-
*/
|
|
653
|
-
get providerMetadata(): ProviderMetadata;
|
|
654
687
|
setLogger(logger: Logger): this;
|
|
655
688
|
addHooks(...hooks: Hook<FlagValue>[]): this;
|
|
656
689
|
getHooks(): Hook<FlagValue>[];
|
|
657
690
|
clearHooks(): this;
|
|
658
691
|
setContext(context: EvaluationContext): Promise<void>;
|
|
659
|
-
|
|
660
|
-
|
|
692
|
+
/**
|
|
693
|
+
* A factory function for creating new named OpenFeature clients. Clients can contain
|
|
694
|
+
* their own state (e.g. logger, hook, context). Multiple clients can be used
|
|
695
|
+
* to segment feature flag configuration.
|
|
696
|
+
*
|
|
697
|
+
* If there is already a provider bound to this name via {@link this.setProvider setProvider}, this provider will be used.
|
|
698
|
+
* Otherwise, the default provider is used until a provider is assigned to that name.
|
|
699
|
+
* @param {string} name The name of the client
|
|
700
|
+
* @param {string} version The version of the client (only used for metadata)
|
|
701
|
+
* @returns {Client} OpenFeature Client
|
|
702
|
+
*/
|
|
661
703
|
getClient(name?: string, version?: string): Client;
|
|
662
704
|
}
|
|
663
705
|
/**
|
|
664
706
|
* A singleton instance of the OpenFeature API.
|
|
665
|
-
*
|
|
666
707
|
* @returns {OpenFeatureAPI} OpenFeature API
|
|
667
708
|
*/
|
|
668
709
|
declare const OpenFeature: OpenFeatureAPI;
|
|
669
710
|
|
|
670
|
-
export {
|
|
711
|
+
export { BeforeHookContext, Client, ClientMetadata, CommonProvider, DefaultLogger, ErrorCode, EvaluationContext, EvaluationContextValue, EvaluationDetails, EventDetails, EventHandler, EventMetadata, Eventing, Features, FlagEvaluationOptions, FlagMetadata, FlagNotFoundError, FlagValue, FlagValueType, GeneralError, GlobalApi, Hook, HookContext, HookHints, InvalidContextError, JsonArray, JsonObject, JsonValue, Logger, ManageContext, ManageLogger, ManageTransactionContextPropagator, NOOP_PROVIDER, NOOP_TRANSACTION_CONTEXT_PROPAGATOR, OpenFeature, OpenFeatureAPI, OpenFeatureClient, OpenFeatureCommonAPI, OpenFeatureError, OpenFeatureEventEmitter, ParseError, PrimitiveValue, Provider, ProviderEvents, ProviderMetadata, ProviderStatus, ResolutionDetails, ResolutionReason, SafeLogger, StandardResolutionReasons, TargetingKeyMissingError, TransactionContext, TransactionContextPropagator, TypeMismatchError };
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@openfeature/web-sdk",
|
|
3
|
-
"version": "0.3.
|
|
3
|
+
"version": "0.3.3-experimental",
|
|
4
4
|
"description": "OpenFeature SDK for Web",
|
|
5
5
|
"main": "./dist/cjs/index.js",
|
|
6
6
|
"files": [
|
|
@@ -46,7 +46,7 @@
|
|
|
46
46
|
},
|
|
47
47
|
"homepage": "https://github.com/open-feature/js-sdk#readme",
|
|
48
48
|
"devDependencies": {
|
|
49
|
-
"@openfeature/shared": "
|
|
49
|
+
"@openfeature/shared": "*"
|
|
50
50
|
},
|
|
51
51
|
"typedoc": {
|
|
52
52
|
"displayName": "OpenFeature Web SDK",
|