@openfeature/web-sdk 0.4.13 → 0.4.14

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/types.d.ts CHANGED
@@ -1,7 +1,7 @@
1
- import { BaseHook, HookHints, EvaluationDetails, JsonValue, EvaluationLifeCycle, ManageLogger, Eventing, ClientMetadata, ProviderStatus, ClientProviderEvents, GenericEventEmitter, CommonEventDetails, FlagValue, CommonProvider, EvaluationContext, Logger, ResolutionDetails, EventHandler, OpenFeatureCommonAPI, ManageContext } from '@openfeature/core';
1
+ import * as _openfeature_core from '@openfeature/core';
2
+ import { BaseHook, HookHints, EvaluationDetails, JsonValue, FlagValue, CommonProvider, ClientProviderStatus, EvaluationContext, Logger, ResolutionDetails, ClientProviderEvents, GenericEventEmitter, EvaluationLifeCycle, ManageLogger, Eventing, ClientMetadata, CommonEventDetails, EventHandler, OpenFeatureCommonAPI, ManageContext, ProviderWrapper } from '@openfeature/core';
2
3
  export * from '@openfeature/core';
3
- export { ClientProviderEvents as ProviderEvents } from '@openfeature/core';
4
- import EventEmitter from 'events';
4
+ export { ClientProviderEvents as ProviderEvents, ClientProviderStatus as ProviderStatus } from '@openfeature/core';
5
5
 
6
6
  interface FlagEvaluationOptions {
7
7
  hooks?: BaseHook[];
@@ -86,39 +86,6 @@ interface Features {
86
86
  getObjectDetails<T extends JsonValue = JsonValue>(flagKey: string, defaultValue: T, options?: FlagEvaluationOptions): EvaluationDetails<T>;
87
87
  }
88
88
 
89
- interface Client extends EvaluationLifeCycle<Client>, Features, ManageLogger<Client>, Eventing {
90
- readonly metadata: ClientMetadata;
91
- /**
92
- * Returns the status of the associated provider.
93
- */
94
- readonly providerStatus: ProviderStatus;
95
- }
96
-
97
- /**
98
- * A subset of events that can be directly emitted by providers.
99
- */
100
- type ProviderEmittableEvents = Exclude<ClientProviderEvents, ClientProviderEvents.ContextChanged>;
101
-
102
- /**
103
- * The OpenFeatureEventEmitter can be used by provider developers to emit
104
- * events at various parts of the provider lifecycle.
105
- *
106
- * NOTE: Ready and error events are automatically emitted by the SDK based on
107
- * the result of the initialize method.
108
- */
109
- declare class OpenFeatureEventEmitter extends GenericEventEmitter<ProviderEmittableEvents> {
110
- protected readonly eventEmitter: EventEmitter;
111
- constructor();
112
- }
113
-
114
- /**
115
- * The InternalEventEmitter is not exported publicly and should only be used within the SDK. It extends the
116
- * OpenFeatureEventEmitter to include additional properties that can be included
117
- * in the event details.
118
- */
119
- declare abstract class InternalEventEmitter extends GenericEventEmitter<ClientProviderEvents, CommonEventDetails> {
120
- }
121
-
122
89
  type Hook = BaseHook<FlagValue, void, void>;
123
90
 
124
91
  /**
@@ -127,7 +94,7 @@ type Hook = BaseHook<FlagValue, void, void>;
127
94
  *
128
95
  * Implementation for resolving all the required flag types must be defined.
129
96
  */
130
- interface Provider extends CommonProvider {
97
+ interface Provider extends CommonProvider<ClientProviderStatus> {
131
98
  /**
132
99
  * A provider hook exposes a mechanism for provider authors to register hooks
133
100
  * to tap into various stages of the flag evaluation lifecycle. These hooks can
@@ -167,7 +134,6 @@ declare class NoopFeatureProvider implements Provider {
167
134
  readonly metadata: {
168
135
  readonly name: "No-op Provider";
169
136
  };
170
- get status(): ProviderStatus;
171
137
  resolveBooleanEvaluation(_: string, defaultValue: boolean): ResolutionDetails<boolean>;
172
138
  resolveStringEvaluation(_: string, defaultValue: string): ResolutionDetails<string>;
173
139
  resolveNumberEvaluation(_: string, defaultValue: number): ResolutionDetails<number>;
@@ -176,6 +142,46 @@ declare class NoopFeatureProvider implements Provider {
176
142
  }
177
143
  declare const NOOP_PROVIDER: NoopFeatureProvider;
178
144
 
145
+ type Listener = (...args: any[]) => void;
146
+
147
+ declare class EventEmitter {
148
+ static listenerCount(emitter: EventEmitter, type: string | number): number;
149
+ static defaultMaxListeners: number;
150
+
151
+ eventNames(): Array<string | number>;
152
+ setMaxListeners(n: number): this;
153
+ getMaxListeners(): number;
154
+ emit(type: string | number, ...args: any[]): boolean;
155
+ addListener(type: string | number, listener: Listener): this;
156
+ on(type: string | number, listener: Listener): this;
157
+ once(type: string | number, listener: Listener): this;
158
+ prependListener(type: string | number, listener: Listener): this;
159
+ prependOnceListener(type: string | number, listener: Listener): this;
160
+ removeListener(type: string | number, listener: Listener): this;
161
+ off(type: string | number, listener: Listener): this;
162
+ removeAllListeners(type?: string | number): this;
163
+ listeners(type: string | number): Listener[];
164
+ listenerCount(type: string | number): number;
165
+ rawListeners(type: string | number): Listener[];
166
+ }
167
+
168
+ /**
169
+ * A subset of events that can be directly emitted by providers.
170
+ */
171
+ type ProviderEmittableEvents = Exclude<ClientProviderEvents, ClientProviderEvents.ContextChanged>;
172
+
173
+ /**
174
+ * The OpenFeatureEventEmitter can be used by provider developers to emit
175
+ * events at various parts of the provider lifecycle.
176
+ *
177
+ * NOTE: Ready and error events are automatically emitted by the SDK based on
178
+ * the result of the initialize method.
179
+ */
180
+ declare class OpenFeatureEventEmitter extends GenericEventEmitter<ProviderEmittableEvents> {
181
+ protected readonly eventEmitter: EventEmitter;
182
+ constructor();
183
+ }
184
+
179
185
  /**
180
186
  * Don't export types from this file publicly.
181
187
  * It might cause confusion since these types are not a part of the general API,
@@ -216,7 +222,6 @@ type FlagConfiguration = Record<string, Flag>;
216
222
  declare class InMemoryProvider implements Provider {
217
223
  readonly events: OpenFeatureEventEmitter;
218
224
  readonly runsOn = "client";
219
- status: ProviderStatus;
220
225
  readonly metadata: {
221
226
  readonly name: "in-memory";
222
227
  };
@@ -238,6 +243,22 @@ declare class InMemoryProvider implements Provider {
238
243
  private lookupFlagValue;
239
244
  }
240
245
 
246
+ interface Client extends EvaluationLifeCycle<Client>, Features, ManageLogger<Client>, Eventing<ClientProviderEvents> {
247
+ readonly metadata: ClientMetadata;
248
+ /**
249
+ * Returns the status of the associated provider.
250
+ */
251
+ readonly providerStatus: ClientProviderStatus;
252
+ }
253
+
254
+ /**
255
+ * The InternalEventEmitter is not exported publicly and should only be used within the SDK. It extends the
256
+ * OpenFeatureEventEmitter to include additional properties that can be included
257
+ * in the event details.
258
+ */
259
+ declare abstract class InternalEventEmitter extends GenericEventEmitter<ClientProviderEvents, CommonEventDetails> {
260
+ }
261
+
241
262
  type OpenFeatureClientOptions = {
242
263
  /**
243
264
  * @deprecated Use `domain` instead.
@@ -248,17 +269,18 @@ type OpenFeatureClientOptions = {
248
269
  };
249
270
  declare class OpenFeatureClient implements Client {
250
271
  private readonly providerAccessor;
272
+ private readonly providerStatusAccessor;
251
273
  private readonly emitterAccessor;
252
274
  private readonly globalLogger;
253
275
  private readonly options;
254
276
  private _hooks;
255
277
  private _clientLogger?;
256
- constructor(providerAccessor: () => Provider, emitterAccessor: () => InternalEventEmitter, globalLogger: () => Logger, options: OpenFeatureClientOptions);
278
+ constructor(providerAccessor: () => Provider, providerStatusAccessor: () => ClientProviderStatus, emitterAccessor: () => InternalEventEmitter, globalLogger: () => Logger, options: OpenFeatureClientOptions);
257
279
  get metadata(): ClientMetadata;
258
- get providerStatus(): ProviderStatus;
280
+ get providerStatus(): ClientProviderStatus;
259
281
  addHandler(eventType: ClientProviderEvents, handler: EventHandler): void;
260
282
  removeHandler(notificationType: ClientProviderEvents, handler: EventHandler): void;
261
- getHandlers(eventType: ClientProviderEvents): EventHandler[];
283
+ getHandlers(eventType: ClientProviderEvents): EventHandler<ClientProviderEvents | _openfeature_core.ServerProviderEvents>[];
262
284
  setLogger(logger: Logger): this;
263
285
  addHooks(...hooks: Hook[]): this;
264
286
  getHooks(): Hook[];
@@ -280,9 +302,11 @@ declare class OpenFeatureClient implements Client {
280
302
  private get _logger();
281
303
  }
282
304
 
283
- declare class OpenFeatureAPI extends OpenFeatureCommonAPI<Provider, Hook> implements ManageContext<Promise<void>> {
284
- protected _events: GenericEventEmitter<ClientProviderEvents>;
285
- protected _defaultProvider: Provider;
305
+ declare class OpenFeatureAPI extends OpenFeatureCommonAPI<ClientProviderStatus, Provider, Hook> implements ManageContext<Promise<void>> {
306
+ protected _statusEnumType: typeof ClientProviderStatus;
307
+ protected _apiEmitter: GenericEventEmitter<ClientProviderEvents>;
308
+ protected _defaultProvider: ProviderWrapper<Provider, ClientProviderStatus>;
309
+ protected _domainScopedProviders: Map<string, ProviderWrapper<Provider, ClientProviderStatus>>;
286
310
  protected _createEventEmitter: () => OpenFeatureEventEmitter;
287
311
  private constructor();
288
312
  /**
@@ -291,6 +315,7 @@ declare class OpenFeatureAPI extends OpenFeatureCommonAPI<Provider, Hook> implem
291
315
  * @returns {OpenFeatureAPI} OpenFeature API
292
316
  */
293
317
  static getInstance(): OpenFeatureAPI;
318
+ private getProviderStatus;
294
319
  /**
295
320
  * Sets the evaluation context globally.
296
321
  * This will be used by all providers that have not bound to a domain.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@openfeature/web-sdk",
3
- "version": "0.4.13",
3
+ "version": "0.4.14",
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.26"
49
+ "@openfeature/core": "0.0.27"
50
50
  },
51
51
  "devDependencies": {
52
- "@openfeature/core": "0.0.26"
52
+ "@openfeature/core": "0.0.27"
53
53
  }
54
54
  }