New Case Study:See how Anthropic automated 95% of dependency reviews with Socket.Learn More
Socket
Sign inDemoInstall
Socket

@openfeature/web-sdk

Package Overview
Dependencies
Maintainers
2
Versions
47
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@openfeature/web-sdk - npm Package Compare versions

Comparing version 0.3.7-experimental to 0.3.8-experimental

60

dist/cjs/index.js

@@ -449,2 +449,3 @@ "use strict";

GeneralError: () => GeneralError,
InternalEventEmitter: () => InternalEventEmitter,
InvalidContextError: () => InvalidContextError,

@@ -655,5 +656,6 @@ LOG_LEVELS: () => LOG_LEVELS,

var import_events = __toESM(require_events());
var OpenFeatureEventEmitter = class {
var GenericEventEmitter = class {
constructor(globalLogger) {
this.globalLogger = globalLogger;
// eslint-disable-next-line @typescript-eslint/no-explicit-any
this._handlers = /* @__PURE__ */ new WeakMap();

@@ -698,6 +700,10 @@ this.eventEmitter = new import_events.default({ captureRejections: true });

get _logger() {
var _a;
return this._eventLogger || ((_a = this.globalLogger) == null ? void 0 : _a.call(this));
var _a, _b;
return (_b = this._eventLogger) != null ? _b : (_a = this.globalLogger) == null ? void 0 : _a.call(this);
}
};
var OpenFeatureEventEmitter = class extends GenericEventEmitter {
};
var InternalEventEmitter = class extends GenericEventEmitter {
};

@@ -749,3 +755,3 @@ // ../shared/src/provider/provider.ts

this._logger = new DefaultLogger();
this._events = new OpenFeatureEventEmitter(() => this._logger);
this._events = new InternalEventEmitter(() => this._logger);
this._clientEventHandlers = /* @__PURE__ */ new Map();

@@ -814,7 +820,7 @@ this._clientProviders = /* @__PURE__ */ new Map();

}
const emitters = clientName ? [this.getAndCacheEventEmitterForClient(clientName)] : this.getUnboundEmitters();
const emitters = this.getAssociatedEventEmitters(clientName);
if (typeof provider.initialize === "function") {
(_d = (_c = (_b = provider.initialize) == null ? void 0 : _b.call(provider, this._context)) == null ? void 0 : _c.then(() => {
var _a2;
emitters.forEach((emitter) => {
this.getAssociatedEventEmitters(clientName).forEach((emitter) => {
emitter == null ? void 0 : emitter.emit("PROVIDER_READY" /* Ready */, { clientName });

@@ -825,3 +831,3 @@ });

var _a2;
emitters.forEach((emitter) => {
this.getAssociatedEventEmitters(clientName).forEach((emitter) => {
emitter == null ? void 0 : emitter.emit("PROVIDER_ERROR" /* Error */, { clientName, message: error.message });

@@ -855,3 +861,3 @@ });

}
getAndCacheEventEmitterForClient(name) {
buildAndCacheEventEmitterForClient(name) {
const emitter = this._clientEvents.get(name);

@@ -861,3 +867,3 @@ if (emitter) {

}
const newEmitter = new OpenFeatureEventEmitter(() => this._logger);
const newEmitter = new InternalEventEmitter(() => this._logger);
this._clientEvents.set(name, newEmitter);

@@ -886,2 +892,5 @@ const clientProvider = this.getProviderForClient(name);

}
getAssociatedEventEmitters(clientName) {
return clientName ? [this.buildAndCacheEventEmitterForClient(clientName)] : this.getUnboundEmitters();
}
transferListeners(oldProvider, newProvider, clientName, emitters) {

@@ -893,13 +902,11 @@ var _a;

});
const newClientHandlers = Object.values(ProviderEvents).map(
(eventType) => {
const handler = (details) => __async(this, null, function* () {
emitters.forEach((emitter) => {
emitter == null ? void 0 : emitter.emit(eventType, __spreadProps(__spreadValues({}, details), { clientName }));
});
this._events.emit(eventType, __spreadProps(__spreadValues({}, details), { clientName }));
const newClientHandlers = Object.values(ProviderEvents).map((eventType) => {
const handler = (details) => __async(this, null, function* () {
emitters.forEach((emitter) => {
emitter == null ? void 0 : emitter.emit(eventType, __spreadProps(__spreadValues({}, details), { clientName }));
});
return [eventType, handler];
}
);
this._events.emit(eventType, __spreadProps(__spreadValues({}, details), { clientName }));
});
return [eventType, handler];
});
this._clientEventHandlers.set(clientName, newClientHandlers);

@@ -1019,6 +1026,15 @@ newClientHandlers.forEach((eventHandler) => {

return __async(this, null, function* () {
var _a, _b;
const oldContext = this._context;
this._context = context;
yield (_b = (_a = this._defaultProvider) == null ? void 0 : _a.onContextChange) == null ? void 0 : _b.call(_a, oldContext, context);
const allProviders = [this._defaultProvider, ...this._clientProviders.values()];
yield Promise.all(
allProviders.map((provider) => __async(this, null, function* () {
var _a, _b;
try {
return yield (_a = provider.onContextChange) == null ? void 0 : _a.call(provider, oldContext, context);
} catch (err) {
(_b = this._logger) == null ? void 0 : _b.error(`Error running context change handler of provider ${provider.metadata.name}:`, err);
}
}))
);
});

@@ -1045,3 +1061,3 @@ }

() => this.getProviderForClient(name),
() => this.getAndCacheEventEmitterForClient(name),
() => this.buildAndCacheEventEmitterForClient(name),
() => this._logger,

@@ -1048,0 +1064,0 @@ { name, version }

@@ -617,5 +617,6 @@ var __create = Object.create;

var import_events = __toESM(require_events());
var OpenFeatureEventEmitter = class {
var GenericEventEmitter = class {
constructor(globalLogger) {
this.globalLogger = globalLogger;
// eslint-disable-next-line @typescript-eslint/no-explicit-any
this._handlers = /* @__PURE__ */ new WeakMap();

@@ -660,6 +661,10 @@ this.eventEmitter = new import_events.default({ captureRejections: true });

get _logger() {
var _a;
return this._eventLogger || ((_a = this.globalLogger) == null ? void 0 : _a.call(this));
var _a, _b;
return (_b = this._eventLogger) != null ? _b : (_a = this.globalLogger) == null ? void 0 : _a.call(this);
}
};
var OpenFeatureEventEmitter = class extends GenericEventEmitter {
};
var InternalEventEmitter = class extends GenericEventEmitter {
};

@@ -711,3 +716,3 @@ // ../shared/src/provider/provider.ts

this._logger = new DefaultLogger();
this._events = new OpenFeatureEventEmitter(() => this._logger);
this._events = new InternalEventEmitter(() => this._logger);
this._clientEventHandlers = /* @__PURE__ */ new Map();

@@ -776,7 +781,7 @@ this._clientProviders = /* @__PURE__ */ new Map();

}
const emitters = clientName ? [this.getAndCacheEventEmitterForClient(clientName)] : this.getUnboundEmitters();
const emitters = this.getAssociatedEventEmitters(clientName);
if (typeof provider.initialize === "function") {
(_d = (_c = (_b = provider.initialize) == null ? void 0 : _b.call(provider, this._context)) == null ? void 0 : _c.then(() => {
var _a2;
emitters.forEach((emitter) => {
this.getAssociatedEventEmitters(clientName).forEach((emitter) => {
emitter == null ? void 0 : emitter.emit("PROVIDER_READY" /* Ready */, { clientName });

@@ -787,3 +792,3 @@ });

var _a2;
emitters.forEach((emitter) => {
this.getAssociatedEventEmitters(clientName).forEach((emitter) => {
emitter == null ? void 0 : emitter.emit("PROVIDER_ERROR" /* Error */, { clientName, message: error.message });

@@ -817,3 +822,3 @@ });

}
getAndCacheEventEmitterForClient(name) {
buildAndCacheEventEmitterForClient(name) {
const emitter = this._clientEvents.get(name);

@@ -823,3 +828,3 @@ if (emitter) {

}
const newEmitter = new OpenFeatureEventEmitter(() => this._logger);
const newEmitter = new InternalEventEmitter(() => this._logger);
this._clientEvents.set(name, newEmitter);

@@ -848,2 +853,5 @@ const clientProvider = this.getProviderForClient(name);

}
getAssociatedEventEmitters(clientName) {
return clientName ? [this.buildAndCacheEventEmitterForClient(clientName)] : this.getUnboundEmitters();
}
transferListeners(oldProvider, newProvider, clientName, emitters) {

@@ -855,13 +863,11 @@ var _a;

});
const newClientHandlers = Object.values(ProviderEvents).map(
(eventType) => {
const handler = (details) => __async(this, null, function* () {
emitters.forEach((emitter) => {
emitter == null ? void 0 : emitter.emit(eventType, __spreadProps(__spreadValues({}, details), { clientName }));
});
this._events.emit(eventType, __spreadProps(__spreadValues({}, details), { clientName }));
const newClientHandlers = Object.values(ProviderEvents).map((eventType) => {
const handler = (details) => __async(this, null, function* () {
emitters.forEach((emitter) => {
emitter == null ? void 0 : emitter.emit(eventType, __spreadProps(__spreadValues({}, details), { clientName }));
});
return [eventType, handler];
}
);
this._events.emit(eventType, __spreadProps(__spreadValues({}, details), { clientName }));
});
return [eventType, handler];
});
this._clientEventHandlers.set(clientName, newClientHandlers);

@@ -981,6 +987,15 @@ newClientHandlers.forEach((eventHandler) => {

return __async(this, null, function* () {
var _a, _b;
const oldContext = this._context;
this._context = context;
yield (_b = (_a = this._defaultProvider) == null ? void 0 : _a.onContextChange) == null ? void 0 : _b.call(_a, oldContext, context);
const allProviders = [this._defaultProvider, ...this._clientProviders.values()];
yield Promise.all(
allProviders.map((provider) => __async(this, null, function* () {
var _a, _b;
try {
return yield (_a = provider.onContextChange) == null ? void 0 : _a.call(provider, oldContext, context);
} catch (err) {
(_b = this._logger) == null ? void 0 : _b.error(`Error running context change handler of provider ${provider.metadata.name}:`, err);
}
}))
);
});

@@ -1007,3 +1022,3 @@ }

() => this.getProviderForClient(name),
() => this.getAndCacheEventEmitterForClient(name),
() => this.buildAndCacheEventEmitterForClient(name),
() => this._logger,

@@ -1201,2 +1216,3 @@ { name, version }

GeneralError,
InternalEventEmitter,
InvalidContextError,

@@ -1203,0 +1219,0 @@ LOG_LEVELS,

@@ -23,9 +23,24 @@ declare enum ProviderEvents {

};
type EventDetails = {
type CommonEventDetails = {
clientName?: string;
};
type CommonEventProps = {
message?: string;
flagsChanged?: string[];
metadata?: EventMetadata;
};
type EventHandler = (eventDetails?: EventDetails) => Promise<unknown> | unknown;
type ReadyEvent = CommonEventProps;
type ErrorEvent = CommonEventProps;
type StaleEvent = CommonEventProps;
type ConfigChangeEvent = CommonEventProps & {
flagsChanged?: string[];
};
type EventMap = {
[ProviderEvents.Ready]: ReadyEvent;
[ProviderEvents.Error]: ErrorEvent;
[ProviderEvents.Stale]: StaleEvent;
[ProviderEvents.ConfigurationChanged]: ConfigChangeEvent;
};
type EventContext<T extends ProviderEvents, U extends Record<string, unknown> = Record<string, unknown>> = EventMap[T] & U;
type EventDetails<T extends ProviderEvents> = EventContext<T> & CommonEventDetails;
type EventHandler<T extends ProviderEvents> = (eventDetails?: EventDetails<T>) => Promise<unknown> | unknown;
interface Eventing {

@@ -38,3 +53,3 @@ /**

*/
addHandler(eventType: ProviderEvents, handler: EventHandler): void;
addHandler<T extends ProviderEvents>(eventType: T, handler: EventHandler<T>): void;
/**

@@ -45,3 +60,3 @@ * Removes a handler for the given provider event type.

*/
removeHandler(eventType: ProviderEvents, handler: EventHandler): void;
removeHandler<T extends ProviderEvents>(eventType: T, handler: EventHandler<T>): void;
/**

@@ -52,3 +67,3 @@ * Gets the current handlers for the given provider event type.

*/
getHandlers(eventType: ProviderEvents): EventHandler[];
getHandlers<T extends ProviderEvents>(eventType: T): EventHandler<T>[];
}

@@ -94,3 +109,3 @@

declare class OpenFeatureEventEmitter implements ManageLogger<OpenFeatureEventEmitter> {
declare abstract class GenericEventEmitter<AdditionalContext extends Record<string, unknown> = Record<string, unknown>> implements ManageLogger<GenericEventEmitter<AdditionalContext>> {
private readonly globalLogger?;

@@ -101,10 +116,26 @@ private readonly _handlers;

constructor(globalLogger?: (() => Logger) | undefined);
emit(eventType: ProviderEvents, context?: EventDetails): void;
addHandler(eventType: ProviderEvents, handler: EventHandler): void;
removeHandler(eventType: ProviderEvents, handler: EventHandler): void;
emit<T extends ProviderEvents>(eventType: T, context?: EventContext<T, AdditionalContext>): void;
addHandler<T extends ProviderEvents>(eventType: T, handler: EventHandler<T>): void;
removeHandler<T extends ProviderEvents>(eventType: T, handler: EventHandler<T>): void;
removeAllHandlers(eventType?: ProviderEvents): void;
getHandlers(eventType: ProviderEvents): EventHandler[];
getHandlers<T extends ProviderEvents>(eventType: T): EventHandler<T>[];
setLogger(logger: Logger): this;
private get _logger();
}
/**
* The OpenFeatureEventEmitter can be used by provider developers to emit
* events at various parts of the provider lifecycle.
*
* NOTE: Ready and error events are automatically emitted by the SDK based on
* the result of the initialize method.
*/
declare class OpenFeatureEventEmitter extends GenericEventEmitter {
}
/**
* The InternalEventEmitter should only be used within the SDK. It extends the
* OpenFeatureEventEmitter to include additional properties that can be included
* in the event details.
*/
declare class InternalEventEmitter extends GenericEventEmitter<CommonEventDetails> {
}

@@ -469,3 +500,3 @@ interface Metadata {

protected _clientProviders: Map<string, P>;
protected _clientEvents: Map<string | undefined, OpenFeatureEventEmitter>;
protected _clientEvents: Map<string | undefined, InternalEventEmitter>;
addHooks(...hooks: Hook<FlagValue>[]): this;

@@ -487,3 +518,3 @@ getHooks(): Hook<FlagValue>[];

*/
addHandler(eventType: ProviderEvents, handler: EventHandler): void;
addHandler<T extends ProviderEvents>(eventType: T, handler: EventHandler<T>): void;
/**

@@ -494,3 +525,3 @@ * Removes a handler for the given provider event type.

*/
removeHandler(eventType: ProviderEvents, handler: EventHandler): void;
removeHandler<T extends ProviderEvents>(eventType: T, handler: EventHandler<T>): void;
/**

@@ -501,3 +532,3 @@ * Gets the current handlers for the given provider event type.

*/
getHandlers(eventType: ProviderEvents): EventHandler[];
getHandlers<T extends ProviderEvents>(eventType: T): EventHandler<T>[];
/**

@@ -522,4 +553,5 @@ * Sets the default provider for flag evaluations.

protected getProviderForClient(name?: string): P;
protected getAndCacheEventEmitterForClient(name?: string): OpenFeatureEventEmitter;
protected buildAndCacheEventEmitterForClient(name?: string): InternalEventEmitter;
private getUnboundEmitters;
private getAssociatedEventEmitters;
private transferListeners;

@@ -688,9 +720,9 @@ close(): Promise<void>;

get metadata(): ClientMetadata;
addHandler(eventType: ProviderEvents, handler: EventHandler): void;
removeHandler(notificationType: ProviderEvents, handler: EventHandler): void;
getHandlers(eventType: ProviderEvents): EventHandler[];
setLogger(logger: Logger): OpenFeatureClient;
addHooks(...hooks: Hook<FlagValue>[]): OpenFeatureClient;
addHandler<T extends ProviderEvents>(eventType: T, handler: EventHandler<T>): void;
removeHandler<T extends ProviderEvents>(notificationType: T, handler: EventHandler<T>): void;
getHandlers(eventType: ProviderEvents): EventHandler<ProviderEvents>[];
setLogger(logger: Logger): this;
addHooks(...hooks: Hook<FlagValue>[]): this;
getHooks(): Hook<FlagValue>[];
clearHooks(): OpenFeatureClient;
clearHooks(): this;
getBooleanValue(flagKey: string, defaultValue: boolean, options?: FlagEvaluationOptions): boolean;

@@ -743,2 +775,2 @@ getBooleanDetails(flagKey: string, defaultValue: boolean, options?: FlagEvaluationOptions): EvaluationDetails<boolean>;

export { BeforeHookContext, Client, ClientMetadata, CommonProvider, DefaultLogger, ErrorCode, EvaluationContext, EvaluationContextValue, EvaluationDetails, EvaluationLifeCycle, EventDetails, EventHandler, EventMetadata, Eventing, Features, FlagEvaluationOptions, FlagMetadata, FlagNotFoundError, FlagValue, FlagValueType, GeneralError, Hook, HookContext, HookHints, InvalidContextError, JsonArray, JsonObject, JsonValue, LOG_LEVELS, Logger, ManageContext, ManageLogger, ManageTransactionContextPropagator, Metadata, 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, isObject, isString, objectOrUndefined, stringOrUndefined };
export { 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, Hook, HookContext, HookHints, InternalEventEmitter, InvalidContextError, JsonArray, JsonObject, JsonValue, LOG_LEVELS, Logger, ManageContext, ManageLogger, ManageTransactionContextPropagator, Metadata, NOOP_PROVIDER, NOOP_TRANSACTION_CONTEXT_PROPAGATOR, OpenFeature, OpenFeatureAPI, OpenFeatureClient, OpenFeatureCommonAPI, OpenFeatureError, OpenFeatureEventEmitter, ParseError, PrimitiveValue, Provider, ProviderEvents, ProviderMetadata, ProviderStatus, ReadyEvent, ResolutionDetails, ResolutionReason, SafeLogger, StaleEvent, StandardResolutionReasons, TargetingKeyMissingError, TransactionContext, TransactionContextPropagator, TypeMismatchError, isObject, isString, objectOrUndefined, stringOrUndefined };
{
"name": "@openfeature/web-sdk",
"version": "0.3.7-experimental",
"version": "0.3.8-experimental",
"description": "OpenFeature SDK for Web",

@@ -5,0 +5,0 @@ "main": "./dist/cjs/index.js",

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc