@openfeature/web-sdk
Advanced tools
Comparing version
@@ -730,2 +730,3 @@ "use strict"; | ||
this._events = new OpenFeatureEventEmitter(() => this._logger); | ||
this._clientEventHandlers = /* @__PURE__ */ new Map(); | ||
this._clientProviders = /* @__PURE__ */ new Map(); | ||
@@ -785,3 +786,3 @@ this._clientEvents = /* @__PURE__ */ new Map(); | ||
} | ||
const clientEmitter = this.getEventEmitterForClient(clientName); | ||
const clientEmitter = this.getAndCacheEventEmitterForClient(clientName); | ||
if (typeof provider.initialize === "function") { | ||
@@ -819,3 +820,3 @@ (_d = (_c = (_b = provider.initialize) == null ? void 0 : _b.call(provider, this._context)) == null ? void 0 : _c.then(() => { | ||
} | ||
getEventEmitterForClient(name) { | ||
getAndCacheEventEmitterForClient(name) { | ||
const emitter = this._clientEvents.get(name); | ||
@@ -827,2 +828,11 @@ if (emitter) { | ||
this._clientEvents.set(name, newEmitter); | ||
const clientProvider = this.getProviderForClient(name); | ||
Object.values(ProviderEvents).forEach( | ||
(eventType) => { | ||
var _a; | ||
return (_a = clientProvider.events) == null ? void 0 : _a.addHandler(eventType, (details) => __async(this, null, function* () { | ||
newEmitter.emit(eventType, __spreadProps(__spreadValues({}, details), { clientName: name })); | ||
})); | ||
} | ||
); | ||
return newEmitter; | ||
@@ -832,12 +842,20 @@ } | ||
var _a; | ||
(_a = oldProvider.events) == null ? void 0 : _a.removeAllHandlers(); | ||
Object.values(ProviderEvents).forEach( | ||
(_a = this._clientEventHandlers.get(clientName)) == null ? void 0 : _a.forEach((eventHandler) => { | ||
var _a2; | ||
return (_a2 = oldProvider.events) == null ? void 0 : _a2.removeHandler(...eventHandler); | ||
}); | ||
const newClientHandlers = Object.values(ProviderEvents).map( | ||
(eventType) => { | ||
var _a2; | ||
return (_a2 = newProvider.events) == null ? void 0 : _a2.addHandler(eventType, (details) => __async(this, null, function* () { | ||
const handler = (details) => __async(this, null, function* () { | ||
clientEmitter.emit(eventType, __spreadProps(__spreadValues({}, details), { clientName })); | ||
this._events.emit(eventType, __spreadProps(__spreadValues({}, details), { clientName })); | ||
})); | ||
}); | ||
return [eventType, handler]; | ||
} | ||
); | ||
this._clientEventHandlers.set(clientName, newClientHandlers); | ||
newClientHandlers.forEach((eventHandler) => { | ||
var _a2; | ||
return (_a2 = newProvider.events) == null ? void 0 : _a2.addHandler(...eventHandler); | ||
}); | ||
} | ||
@@ -990,3 +1008,3 @@ close() { | ||
() => this.getProviderForClient(name), | ||
() => this.getEventEmitterForClient(name), | ||
() => this.getAndCacheEventEmitterForClient(name), | ||
() => this._logger, | ||
@@ -1001,5 +1019,5 @@ { name, version } | ||
var OpenFeatureClient = class { | ||
constructor(providerAccessor, events, globalLogger, options) { | ||
constructor(providerAccessor, emitterAccessor, globalLogger, options) { | ||
this.providerAccessor = providerAccessor; | ||
this.events = events; | ||
this.emitterAccessor = emitterAccessor; | ||
this.globalLogger = globalLogger; | ||
@@ -1017,13 +1035,18 @@ this.options = options; | ||
addHandler(eventType, handler) { | ||
this.events().addHandler(eventType, handler); | ||
var _a; | ||
this.emitterAccessor().addHandler(eventType, handler); | ||
const providerReady = !this._provider.status || this._provider.status === "READY" /* READY */; | ||
if (eventType === "PROVIDER_READY" /* Ready */ && providerReady) { | ||
handler({ clientName: this.metadata.name }); | ||
try { | ||
handler({ clientName: this.metadata.name }); | ||
} catch (err) { | ||
(_a = this._logger) == null ? void 0 : _a.error("Error running event handler:", err); | ||
} | ||
} | ||
} | ||
removeHandler(notificationType, handler) { | ||
this.events().removeHandler(notificationType, handler); | ||
this.emitterAccessor().removeHandler(notificationType, handler); | ||
} | ||
getHandlers(eventType) { | ||
return this.events().getHandlers(eventType); | ||
return this.emitterAccessor().getHandlers(eventType); | ||
} | ||
@@ -1030,0 +1053,0 @@ setLogger(logger) { |
@@ -698,2 +698,3 @@ var __create = Object.create; | ||
this._events = new OpenFeatureEventEmitter(() => this._logger); | ||
this._clientEventHandlers = /* @__PURE__ */ new Map(); | ||
this._clientProviders = /* @__PURE__ */ new Map(); | ||
@@ -753,3 +754,3 @@ this._clientEvents = /* @__PURE__ */ new Map(); | ||
} | ||
const clientEmitter = this.getEventEmitterForClient(clientName); | ||
const clientEmitter = this.getAndCacheEventEmitterForClient(clientName); | ||
if (typeof provider.initialize === "function") { | ||
@@ -787,3 +788,3 @@ (_d = (_c = (_b = provider.initialize) == null ? void 0 : _b.call(provider, this._context)) == null ? void 0 : _c.then(() => { | ||
} | ||
getEventEmitterForClient(name) { | ||
getAndCacheEventEmitterForClient(name) { | ||
const emitter = this._clientEvents.get(name); | ||
@@ -795,2 +796,11 @@ if (emitter) { | ||
this._clientEvents.set(name, newEmitter); | ||
const clientProvider = this.getProviderForClient(name); | ||
Object.values(ProviderEvents).forEach( | ||
(eventType) => { | ||
var _a; | ||
return (_a = clientProvider.events) == null ? void 0 : _a.addHandler(eventType, (details) => __async(this, null, function* () { | ||
newEmitter.emit(eventType, __spreadProps(__spreadValues({}, details), { clientName: name })); | ||
})); | ||
} | ||
); | ||
return newEmitter; | ||
@@ -800,12 +810,20 @@ } | ||
var _a; | ||
(_a = oldProvider.events) == null ? void 0 : _a.removeAllHandlers(); | ||
Object.values(ProviderEvents).forEach( | ||
(_a = this._clientEventHandlers.get(clientName)) == null ? void 0 : _a.forEach((eventHandler) => { | ||
var _a2; | ||
return (_a2 = oldProvider.events) == null ? void 0 : _a2.removeHandler(...eventHandler); | ||
}); | ||
const newClientHandlers = Object.values(ProviderEvents).map( | ||
(eventType) => { | ||
var _a2; | ||
return (_a2 = newProvider.events) == null ? void 0 : _a2.addHandler(eventType, (details) => __async(this, null, function* () { | ||
const handler = (details) => __async(this, null, function* () { | ||
clientEmitter.emit(eventType, __spreadProps(__spreadValues({}, details), { clientName })); | ||
this._events.emit(eventType, __spreadProps(__spreadValues({}, details), { clientName })); | ||
})); | ||
}); | ||
return [eventType, handler]; | ||
} | ||
); | ||
this._clientEventHandlers.set(clientName, newClientHandlers); | ||
newClientHandlers.forEach((eventHandler) => { | ||
var _a2; | ||
return (_a2 = newProvider.events) == null ? void 0 : _a2.addHandler(...eventHandler); | ||
}); | ||
} | ||
@@ -958,3 +976,3 @@ close() { | ||
() => this.getProviderForClient(name), | ||
() => this.getEventEmitterForClient(name), | ||
() => this.getAndCacheEventEmitterForClient(name), | ||
() => this._logger, | ||
@@ -969,5 +987,5 @@ { name, version } | ||
var OpenFeatureClient = class { | ||
constructor(providerAccessor, events, globalLogger, options) { | ||
constructor(providerAccessor, emitterAccessor, globalLogger, options) { | ||
this.providerAccessor = providerAccessor; | ||
this.events = events; | ||
this.emitterAccessor = emitterAccessor; | ||
this.globalLogger = globalLogger; | ||
@@ -985,13 +1003,18 @@ this.options = options; | ||
addHandler(eventType, handler) { | ||
this.events().addHandler(eventType, handler); | ||
var _a; | ||
this.emitterAccessor().addHandler(eventType, handler); | ||
const providerReady = !this._provider.status || this._provider.status === "READY" /* READY */; | ||
if (eventType === "PROVIDER_READY" /* Ready */ && providerReady) { | ||
handler({ clientName: this.metadata.name }); | ||
try { | ||
handler({ clientName: this.metadata.name }); | ||
} catch (err) { | ||
(_a = this._logger) == null ? void 0 : _a.error("Error running event handler:", err); | ||
} | ||
} | ||
} | ||
removeHandler(notificationType, handler) { | ||
this.events().removeHandler(notificationType, handler); | ||
this.emitterAccessor().removeHandler(notificationType, handler); | ||
} | ||
getHandlers(eventType) { | ||
return this.events().getHandlers(eventType); | ||
return this.emitterAccessor().getHandlers(eventType); | ||
} | ||
@@ -998,0 +1021,0 @@ setLogger(logger) { |
@@ -368,2 +368,3 @@ type EventMetadata = { | ||
private readonly _events; | ||
private readonly _clientEventHandlers; | ||
protected _clientProviders: Map<string, P>; | ||
@@ -418,3 +419,3 @@ protected _clientEvents: Map<string | undefined, OpenFeatureEventEmitter>; | ||
protected getProviderForClient(name?: string): P; | ||
protected getEventEmitterForClient(name?: string): OpenFeatureEventEmitter; | ||
protected getAndCacheEventEmitterForClient(name?: string): OpenFeatureEventEmitter; | ||
private transferListeners; | ||
@@ -632,3 +633,3 @@ close(): Promise<void>; | ||
private readonly providerAccessor; | ||
private readonly events; | ||
private readonly emitterAccessor; | ||
private readonly globalLogger; | ||
@@ -638,3 +639,3 @@ private readonly options; | ||
private _clientLogger?; | ||
constructor(providerAccessor: () => Provider, events: () => OpenFeatureEventEmitter, globalLogger: () => Logger, options: OpenFeatureClientOptions); | ||
constructor(providerAccessor: () => Provider, emitterAccessor: () => OpenFeatureEventEmitter, globalLogger: () => Logger, options: OpenFeatureClientOptions); | ||
get metadata(): ClientMetadata; | ||
@@ -641,0 +642,0 @@ addHandler(eventType: ProviderEvents, handler: EventHandler): void; |
{ | ||
"name": "@openfeature/web-sdk", | ||
"version": "0.3.4-experimental", | ||
"version": "0.3.5-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
297736
1.82%3036
1.57%