@openfeature/web-sdk 0.3.1-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/README.md +157 -9
- package/dist/cjs/index.js +279 -122
- package/dist/cjs/index.js.map +4 -4
- package/dist/esm/index.js +279 -123
- package/dist/esm/index.js.map +4 -4
- package/dist/types.d.ts +158 -117
- package/package.json +2 -2
package/dist/types.d.ts
CHANGED
|
@@ -1,4 +1,34 @@
|
|
|
1
|
-
type
|
|
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
|
+
}
|
|
2
32
|
declare enum ProviderEvents {
|
|
3
33
|
/**
|
|
4
34
|
* The provider is ready to evaluate flags.
|
|
@@ -13,28 +43,26 @@ declare enum ProviderEvents {
|
|
|
13
43
|
*/
|
|
14
44
|
ConfigurationChanged = "PROVIDER_CONFIGURATION_CHANGED",
|
|
15
45
|
/**
|
|
16
|
-
* The provider is
|
|
17
|
-
*/
|
|
18
|
-
|
|
19
|
-
}
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
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();
|
|
31
63
|
}
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
[key: string]: unknown;
|
|
35
|
-
};
|
|
36
|
-
type Handler = (eventContext?: EventContext) => void;
|
|
37
|
-
type EventCallbackMessage = (eventContext: EventContext) => void;
|
|
64
|
+
|
|
65
|
+
type PrimitiveValue = null | boolean | string | number;
|
|
38
66
|
type JsonObject = {
|
|
39
67
|
[key: string]: JsonValue;
|
|
40
68
|
};
|
|
@@ -82,7 +110,7 @@ declare const StandardResolutionReasons: {
|
|
|
82
110
|
*/
|
|
83
111
|
readonly DISABLED: "DISABLED";
|
|
84
112
|
/**
|
|
85
|
-
*
|
|
113
|
+
* The resolved value was configured statically, or otherwise fell back to a pre-configured value.
|
|
86
114
|
*/
|
|
87
115
|
readonly DEFAULT: "DEFAULT";
|
|
88
116
|
/**
|
|
@@ -135,27 +163,33 @@ declare enum ErrorCode {
|
|
|
135
163
|
GENERAL = "GENERAL"
|
|
136
164
|
}
|
|
137
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>;
|
|
138
172
|
type ResolutionDetails<U> = {
|
|
139
173
|
value: U;
|
|
140
174
|
variant?: string;
|
|
175
|
+
flagMetadata?: FlagMetadata;
|
|
141
176
|
reason?: ResolutionReason;
|
|
142
177
|
errorCode?: ErrorCode;
|
|
143
178
|
errorMessage?: string;
|
|
144
179
|
};
|
|
145
180
|
type EvaluationDetails<T extends FlagValue> = {
|
|
146
181
|
flagKey: string;
|
|
182
|
+
flagMetadata: Readonly<FlagMetadata>;
|
|
147
183
|
} & ResolutionDetails<T>;
|
|
148
184
|
interface ManageContext<T> {
|
|
149
185
|
/**
|
|
150
186
|
* Access the evaluation context set on the receiver.
|
|
151
|
-
*
|
|
152
187
|
* @returns {EvaluationContext} Evaluation context
|
|
153
188
|
*/
|
|
154
189
|
getContext(): EvaluationContext;
|
|
155
190
|
/**
|
|
156
191
|
* Sets evaluation context that will be used during flag evaluations
|
|
157
192
|
* on this receiver.
|
|
158
|
-
*
|
|
159
193
|
* @template T The type of the receiver
|
|
160
194
|
* @param {EvaluationContext} context Evaluation context
|
|
161
195
|
* @returns {T} The receiver (this object)
|
|
@@ -168,7 +202,6 @@ interface ManageLogger<T> {
|
|
|
168
202
|
* and is passed to various components in the SDK.
|
|
169
203
|
* The logger configured on the global API object will be used for all evaluations,
|
|
170
204
|
* unless overridden in a particular client.
|
|
171
|
-
*
|
|
172
205
|
* @template T The type of the receiver
|
|
173
206
|
* @param {Logger} logger The logger to be used
|
|
174
207
|
* @returns {T} The receiver (this object)
|
|
@@ -181,6 +214,7 @@ interface Metadata {
|
|
|
181
214
|
interface ClientMetadata extends Metadata {
|
|
182
215
|
readonly version?: string;
|
|
183
216
|
readonly name?: string;
|
|
217
|
+
readonly providerMetadata: ProviderMetadata;
|
|
184
218
|
}
|
|
185
219
|
interface ProviderMetadata extends Metadata {
|
|
186
220
|
readonly name: string;
|
|
@@ -211,7 +245,6 @@ interface ManageTransactionContextPropagator<T> extends TransactionContextPropag
|
|
|
211
245
|
* Sets a transaction context propagator on this receiver. The transaction context
|
|
212
246
|
* propagator is responsible for persisting context for the duration of a single
|
|
213
247
|
* transaction.
|
|
214
|
-
*
|
|
215
248
|
* @experimental
|
|
216
249
|
* @template T The type of the receiver
|
|
217
250
|
* @param {TransactionContextPropagator} transactionContextPropagator The context propagator to be used
|
|
@@ -226,7 +259,6 @@ interface TransactionContextPropagator {
|
|
|
226
259
|
*
|
|
227
260
|
* Returns the currently defined transaction context using the registered transaction
|
|
228
261
|
* context propagator.
|
|
229
|
-
*
|
|
230
262
|
* @experimental
|
|
231
263
|
* @returns {TransactionContext} The current transaction context
|
|
232
264
|
*/
|
|
@@ -236,7 +268,6 @@ interface TransactionContextPropagator {
|
|
|
236
268
|
* The OpenFeature Enhancement Proposal regarding transaction context can be found [here](https://github.com/open-feature/ofep/pull/32).
|
|
237
269
|
*
|
|
238
270
|
* Sets the transaction context using the registered transaction context propagator.
|
|
239
|
-
*
|
|
240
271
|
* @experimental
|
|
241
272
|
* @template R The return value of the callback
|
|
242
273
|
* @param {TransactionContext} transactionContext The transaction specific context
|
|
@@ -245,8 +276,29 @@ interface TransactionContextPropagator {
|
|
|
245
276
|
*/
|
|
246
277
|
setTransactionContext<R>(transactionContext: TransactionContext, callback: (...args: unknown[]) => R, ...args: unknown[]): void;
|
|
247
278
|
}
|
|
279
|
+
declare enum ProviderStatus {
|
|
280
|
+
NOT_READY = "NOT_READY",
|
|
281
|
+
READY = "READY",
|
|
282
|
+
ERROR = "ERROR"
|
|
283
|
+
}
|
|
248
284
|
interface CommonProvider {
|
|
249
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>;
|
|
250
302
|
}
|
|
251
303
|
|
|
252
304
|
declare abstract class OpenFeatureError extends Error {
|
|
@@ -307,47 +359,70 @@ declare class NoopTransactionContextPropagator implements TransactionContextProp
|
|
|
307
359
|
}
|
|
308
360
|
declare const NOOP_TRANSACTION_CONTEXT_PROPAGATOR: NoopTransactionContextPropagator;
|
|
309
361
|
|
|
310
|
-
declare abstract class OpenFeatureCommonAPI {
|
|
362
|
+
declare abstract class OpenFeatureCommonAPI<P extends CommonProvider = CommonProvider> implements Eventing {
|
|
311
363
|
protected _transactionContextPropagator: TransactionContextPropagator;
|
|
312
364
|
protected _context: EvaluationContext;
|
|
313
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>;
|
|
314
370
|
abstract clearHooks(): this;
|
|
315
|
-
|
|
371
|
+
setLogger(logger: Logger): this;
|
|
372
|
+
/**
|
|
373
|
+
* Get metadata about registered provider.
|
|
374
|
+
* @returns {ProviderMetadata} Provider Metadata
|
|
375
|
+
*/
|
|
376
|
+
get providerMetadata(): ProviderMetadata;
|
|
316
377
|
getContext(): EvaluationContext;
|
|
317
|
-
|
|
378
|
+
/**
|
|
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
|
|
384
|
+
*/
|
|
385
|
+
addHandler(eventType: ProviderEvents, handler: EventHandler): void;
|
|
386
|
+
/**
|
|
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
|
|
390
|
+
*/
|
|
391
|
+
removeHandler(eventType: ProviderEvents, handler: EventHandler): void;
|
|
392
|
+
/**
|
|
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
|
|
396
|
+
*/
|
|
397
|
+
getHandlers(eventType: ProviderEvents): EventHandler[];
|
|
398
|
+
/**
|
|
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
|
|
405
|
+
*/
|
|
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>;
|
|
318
422
|
setTransactionContext<R>(transactionContext: TransactionContext, callback: (...args: unknown[]) => R, ...args: unknown[]): void;
|
|
319
423
|
getTransactionContext(): TransactionContext;
|
|
320
424
|
}
|
|
321
425
|
|
|
322
|
-
// Type definitions for events 3.0
|
|
323
|
-
// Project: https://github.com/Gozala/events
|
|
324
|
-
// Definitions by: Yasunori Ohoka <https://github.com/yasupeke>
|
|
325
|
-
// Shenwei Wang <https://github.com/weareoutman>
|
|
326
|
-
// Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped
|
|
327
|
-
|
|
328
|
-
type Listener = (...args: any[]) => void;
|
|
329
|
-
|
|
330
|
-
declare class EventEmitter {
|
|
331
|
-
static listenerCount(emitter: EventEmitter, type: string | number): number;
|
|
332
|
-
static defaultMaxListeners: number;
|
|
333
|
-
|
|
334
|
-
eventNames(): Array<string | number>;
|
|
335
|
-
setMaxListeners(n: number): this;
|
|
336
|
-
getMaxListeners(): number;
|
|
337
|
-
emit(type: string | number, ...args: any[]): boolean;
|
|
338
|
-
addListener(type: string | number, listener: Listener): this;
|
|
339
|
-
on(type: string | number, listener: Listener): this;
|
|
340
|
-
once(type: string | number, listener: Listener): this;
|
|
341
|
-
prependListener(type: string | number, listener: Listener): this;
|
|
342
|
-
prependOnceListener(type: string | number, listener: Listener): this;
|
|
343
|
-
removeListener(type: string | number, listener: Listener): this;
|
|
344
|
-
off(type: string | number, listener: Listener): this;
|
|
345
|
-
removeAllListeners(type?: string | number): this;
|
|
346
|
-
listeners(type: string | number): Listener[];
|
|
347
|
-
listenerCount(type: string | number): number;
|
|
348
|
-
rawListeners(type: string | number): Listener[];
|
|
349
|
-
}
|
|
350
|
-
|
|
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",
|