@openfeature/web-sdk 0.1.0-experimental → 0.3.0-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 +1 -1
- package/dist/cjs/index.js +426 -10
- package/dist/cjs/index.js.map +4 -4
- package/dist/esm/index.js +439 -10
- package/dist/esm/index.js.map +4 -4
- package/dist/types.d.ts +61 -9
- package/package.json +2 -2
package/README.md
CHANGED
package/dist/cjs/index.js
CHANGED
|
@@ -1,10 +1,12 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
+
var __create = Object.create;
|
|
2
3
|
var __defProp = Object.defineProperty;
|
|
3
4
|
var __defProps = Object.defineProperties;
|
|
4
5
|
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
5
6
|
var __getOwnPropDescs = Object.getOwnPropertyDescriptors;
|
|
6
7
|
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
7
8
|
var __getOwnPropSymbols = Object.getOwnPropertySymbols;
|
|
9
|
+
var __getProtoOf = Object.getPrototypeOf;
|
|
8
10
|
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
9
11
|
var __propIsEnum = Object.prototype.propertyIsEnumerable;
|
|
10
12
|
var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
|
|
@@ -20,6 +22,9 @@ var __spreadValues = (a, b) => {
|
|
|
20
22
|
return a;
|
|
21
23
|
};
|
|
22
24
|
var __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));
|
|
25
|
+
var __commonJS = (cb, mod) => function __require() {
|
|
26
|
+
return mod || (0, cb[__getOwnPropNames(cb)[0]])((mod = { exports: {} }).exports, mod), mod.exports;
|
|
27
|
+
};
|
|
23
28
|
var __export = (target, all) => {
|
|
24
29
|
for (var name in all)
|
|
25
30
|
__defProp(target, name, { get: all[name], enumerable: true });
|
|
@@ -32,6 +37,14 @@ var __copyProps = (to, from, except, desc) => {
|
|
|
32
37
|
}
|
|
33
38
|
return to;
|
|
34
39
|
};
|
|
40
|
+
var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
|
|
41
|
+
// If the importer is in node compatibility mode or this is not an ESM
|
|
42
|
+
// file that has been converted to a CommonJS file using a Babel-
|
|
43
|
+
// compatible transform (i.e. "__esModule" has not been set), then set
|
|
44
|
+
// "default" to the CommonJS "module.exports" for node compatibility.
|
|
45
|
+
isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
|
|
46
|
+
mod
|
|
47
|
+
));
|
|
35
48
|
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
36
49
|
var __async = (__this, __arguments, generator) => {
|
|
37
50
|
return new Promise((resolve, reject) => {
|
|
@@ -54,6 +67,378 @@ var __async = (__this, __arguments, generator) => {
|
|
|
54
67
|
});
|
|
55
68
|
};
|
|
56
69
|
|
|
70
|
+
// ../../node_modules/events/events.js
|
|
71
|
+
var require_events = __commonJS({
|
|
72
|
+
"../../node_modules/events/events.js"(exports, module2) {
|
|
73
|
+
"use strict";
|
|
74
|
+
var R = typeof Reflect === "object" ? Reflect : null;
|
|
75
|
+
var ReflectApply = R && typeof R.apply === "function" ? R.apply : function ReflectApply2(target, receiver, args) {
|
|
76
|
+
return Function.prototype.apply.call(target, receiver, args);
|
|
77
|
+
};
|
|
78
|
+
var ReflectOwnKeys;
|
|
79
|
+
if (R && typeof R.ownKeys === "function") {
|
|
80
|
+
ReflectOwnKeys = R.ownKeys;
|
|
81
|
+
} else if (Object.getOwnPropertySymbols) {
|
|
82
|
+
ReflectOwnKeys = function ReflectOwnKeys2(target) {
|
|
83
|
+
return Object.getOwnPropertyNames(target).concat(Object.getOwnPropertySymbols(target));
|
|
84
|
+
};
|
|
85
|
+
} else {
|
|
86
|
+
ReflectOwnKeys = function ReflectOwnKeys2(target) {
|
|
87
|
+
return Object.getOwnPropertyNames(target);
|
|
88
|
+
};
|
|
89
|
+
}
|
|
90
|
+
function ProcessEmitWarning(warning) {
|
|
91
|
+
if (console && console.warn)
|
|
92
|
+
console.warn(warning);
|
|
93
|
+
}
|
|
94
|
+
var NumberIsNaN = Number.isNaN || function NumberIsNaN2(value) {
|
|
95
|
+
return value !== value;
|
|
96
|
+
};
|
|
97
|
+
function EventEmitter2() {
|
|
98
|
+
EventEmitter2.init.call(this);
|
|
99
|
+
}
|
|
100
|
+
module2.exports = EventEmitter2;
|
|
101
|
+
module2.exports.once = once;
|
|
102
|
+
EventEmitter2.EventEmitter = EventEmitter2;
|
|
103
|
+
EventEmitter2.prototype._events = void 0;
|
|
104
|
+
EventEmitter2.prototype._eventsCount = 0;
|
|
105
|
+
EventEmitter2.prototype._maxListeners = void 0;
|
|
106
|
+
var defaultMaxListeners = 10;
|
|
107
|
+
function checkListener(listener) {
|
|
108
|
+
if (typeof listener !== "function") {
|
|
109
|
+
throw new TypeError('The "listener" argument must be of type Function. Received type ' + typeof listener);
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
Object.defineProperty(EventEmitter2, "defaultMaxListeners", {
|
|
113
|
+
enumerable: true,
|
|
114
|
+
get: function() {
|
|
115
|
+
return defaultMaxListeners;
|
|
116
|
+
},
|
|
117
|
+
set: function(arg) {
|
|
118
|
+
if (typeof arg !== "number" || arg < 0 || NumberIsNaN(arg)) {
|
|
119
|
+
throw new RangeError('The value of "defaultMaxListeners" is out of range. It must be a non-negative number. Received ' + arg + ".");
|
|
120
|
+
}
|
|
121
|
+
defaultMaxListeners = arg;
|
|
122
|
+
}
|
|
123
|
+
});
|
|
124
|
+
EventEmitter2.init = function() {
|
|
125
|
+
if (this._events === void 0 || this._events === Object.getPrototypeOf(this)._events) {
|
|
126
|
+
this._events = /* @__PURE__ */ Object.create(null);
|
|
127
|
+
this._eventsCount = 0;
|
|
128
|
+
}
|
|
129
|
+
this._maxListeners = this._maxListeners || void 0;
|
|
130
|
+
};
|
|
131
|
+
EventEmitter2.prototype.setMaxListeners = function setMaxListeners(n) {
|
|
132
|
+
if (typeof n !== "number" || n < 0 || NumberIsNaN(n)) {
|
|
133
|
+
throw new RangeError('The value of "n" is out of range. It must be a non-negative number. Received ' + n + ".");
|
|
134
|
+
}
|
|
135
|
+
this._maxListeners = n;
|
|
136
|
+
return this;
|
|
137
|
+
};
|
|
138
|
+
function _getMaxListeners(that) {
|
|
139
|
+
if (that._maxListeners === void 0)
|
|
140
|
+
return EventEmitter2.defaultMaxListeners;
|
|
141
|
+
return that._maxListeners;
|
|
142
|
+
}
|
|
143
|
+
EventEmitter2.prototype.getMaxListeners = function getMaxListeners() {
|
|
144
|
+
return _getMaxListeners(this);
|
|
145
|
+
};
|
|
146
|
+
EventEmitter2.prototype.emit = function emit(type) {
|
|
147
|
+
var args = [];
|
|
148
|
+
for (var i = 1; i < arguments.length; i++)
|
|
149
|
+
args.push(arguments[i]);
|
|
150
|
+
var doError = type === "error";
|
|
151
|
+
var events = this._events;
|
|
152
|
+
if (events !== void 0)
|
|
153
|
+
doError = doError && events.error === void 0;
|
|
154
|
+
else if (!doError)
|
|
155
|
+
return false;
|
|
156
|
+
if (doError) {
|
|
157
|
+
var er;
|
|
158
|
+
if (args.length > 0)
|
|
159
|
+
er = args[0];
|
|
160
|
+
if (er instanceof Error) {
|
|
161
|
+
throw er;
|
|
162
|
+
}
|
|
163
|
+
var err = new Error("Unhandled error." + (er ? " (" + er.message + ")" : ""));
|
|
164
|
+
err.context = er;
|
|
165
|
+
throw err;
|
|
166
|
+
}
|
|
167
|
+
var handler = events[type];
|
|
168
|
+
if (handler === void 0)
|
|
169
|
+
return false;
|
|
170
|
+
if (typeof handler === "function") {
|
|
171
|
+
ReflectApply(handler, this, args);
|
|
172
|
+
} else {
|
|
173
|
+
var len = handler.length;
|
|
174
|
+
var listeners = arrayClone(handler, len);
|
|
175
|
+
for (var i = 0; i < len; ++i)
|
|
176
|
+
ReflectApply(listeners[i], this, args);
|
|
177
|
+
}
|
|
178
|
+
return true;
|
|
179
|
+
};
|
|
180
|
+
function _addListener(target, type, listener, prepend) {
|
|
181
|
+
var m;
|
|
182
|
+
var events;
|
|
183
|
+
var existing;
|
|
184
|
+
checkListener(listener);
|
|
185
|
+
events = target._events;
|
|
186
|
+
if (events === void 0) {
|
|
187
|
+
events = target._events = /* @__PURE__ */ Object.create(null);
|
|
188
|
+
target._eventsCount = 0;
|
|
189
|
+
} else {
|
|
190
|
+
if (events.newListener !== void 0) {
|
|
191
|
+
target.emit(
|
|
192
|
+
"newListener",
|
|
193
|
+
type,
|
|
194
|
+
listener.listener ? listener.listener : listener
|
|
195
|
+
);
|
|
196
|
+
events = target._events;
|
|
197
|
+
}
|
|
198
|
+
existing = events[type];
|
|
199
|
+
}
|
|
200
|
+
if (existing === void 0) {
|
|
201
|
+
existing = events[type] = listener;
|
|
202
|
+
++target._eventsCount;
|
|
203
|
+
} else {
|
|
204
|
+
if (typeof existing === "function") {
|
|
205
|
+
existing = events[type] = prepend ? [listener, existing] : [existing, listener];
|
|
206
|
+
} else if (prepend) {
|
|
207
|
+
existing.unshift(listener);
|
|
208
|
+
} else {
|
|
209
|
+
existing.push(listener);
|
|
210
|
+
}
|
|
211
|
+
m = _getMaxListeners(target);
|
|
212
|
+
if (m > 0 && existing.length > m && !existing.warned) {
|
|
213
|
+
existing.warned = true;
|
|
214
|
+
var w = new Error("Possible EventEmitter memory leak detected. " + existing.length + " " + String(type) + " listeners added. Use emitter.setMaxListeners() to increase limit");
|
|
215
|
+
w.name = "MaxListenersExceededWarning";
|
|
216
|
+
w.emitter = target;
|
|
217
|
+
w.type = type;
|
|
218
|
+
w.count = existing.length;
|
|
219
|
+
ProcessEmitWarning(w);
|
|
220
|
+
}
|
|
221
|
+
}
|
|
222
|
+
return target;
|
|
223
|
+
}
|
|
224
|
+
EventEmitter2.prototype.addListener = function addListener(type, listener) {
|
|
225
|
+
return _addListener(this, type, listener, false);
|
|
226
|
+
};
|
|
227
|
+
EventEmitter2.prototype.on = EventEmitter2.prototype.addListener;
|
|
228
|
+
EventEmitter2.prototype.prependListener = function prependListener(type, listener) {
|
|
229
|
+
return _addListener(this, type, listener, true);
|
|
230
|
+
};
|
|
231
|
+
function onceWrapper() {
|
|
232
|
+
if (!this.fired) {
|
|
233
|
+
this.target.removeListener(this.type, this.wrapFn);
|
|
234
|
+
this.fired = true;
|
|
235
|
+
if (arguments.length === 0)
|
|
236
|
+
return this.listener.call(this.target);
|
|
237
|
+
return this.listener.apply(this.target, arguments);
|
|
238
|
+
}
|
|
239
|
+
}
|
|
240
|
+
function _onceWrap(target, type, listener) {
|
|
241
|
+
var state = { fired: false, wrapFn: void 0, target, type, listener };
|
|
242
|
+
var wrapped = onceWrapper.bind(state);
|
|
243
|
+
wrapped.listener = listener;
|
|
244
|
+
state.wrapFn = wrapped;
|
|
245
|
+
return wrapped;
|
|
246
|
+
}
|
|
247
|
+
EventEmitter2.prototype.once = function once2(type, listener) {
|
|
248
|
+
checkListener(listener);
|
|
249
|
+
this.on(type, _onceWrap(this, type, listener));
|
|
250
|
+
return this;
|
|
251
|
+
};
|
|
252
|
+
EventEmitter2.prototype.prependOnceListener = function prependOnceListener(type, listener) {
|
|
253
|
+
checkListener(listener);
|
|
254
|
+
this.prependListener(type, _onceWrap(this, type, listener));
|
|
255
|
+
return this;
|
|
256
|
+
};
|
|
257
|
+
EventEmitter2.prototype.removeListener = function removeListener(type, listener) {
|
|
258
|
+
var list, events, position, i, originalListener;
|
|
259
|
+
checkListener(listener);
|
|
260
|
+
events = this._events;
|
|
261
|
+
if (events === void 0)
|
|
262
|
+
return this;
|
|
263
|
+
list = events[type];
|
|
264
|
+
if (list === void 0)
|
|
265
|
+
return this;
|
|
266
|
+
if (list === listener || list.listener === listener) {
|
|
267
|
+
if (--this._eventsCount === 0)
|
|
268
|
+
this._events = /* @__PURE__ */ Object.create(null);
|
|
269
|
+
else {
|
|
270
|
+
delete events[type];
|
|
271
|
+
if (events.removeListener)
|
|
272
|
+
this.emit("removeListener", type, list.listener || listener);
|
|
273
|
+
}
|
|
274
|
+
} else if (typeof list !== "function") {
|
|
275
|
+
position = -1;
|
|
276
|
+
for (i = list.length - 1; i >= 0; i--) {
|
|
277
|
+
if (list[i] === listener || list[i].listener === listener) {
|
|
278
|
+
originalListener = list[i].listener;
|
|
279
|
+
position = i;
|
|
280
|
+
break;
|
|
281
|
+
}
|
|
282
|
+
}
|
|
283
|
+
if (position < 0)
|
|
284
|
+
return this;
|
|
285
|
+
if (position === 0)
|
|
286
|
+
list.shift();
|
|
287
|
+
else {
|
|
288
|
+
spliceOne(list, position);
|
|
289
|
+
}
|
|
290
|
+
if (list.length === 1)
|
|
291
|
+
events[type] = list[0];
|
|
292
|
+
if (events.removeListener !== void 0)
|
|
293
|
+
this.emit("removeListener", type, originalListener || listener);
|
|
294
|
+
}
|
|
295
|
+
return this;
|
|
296
|
+
};
|
|
297
|
+
EventEmitter2.prototype.off = EventEmitter2.prototype.removeListener;
|
|
298
|
+
EventEmitter2.prototype.removeAllListeners = function removeAllListeners(type) {
|
|
299
|
+
var listeners, events, i;
|
|
300
|
+
events = this._events;
|
|
301
|
+
if (events === void 0)
|
|
302
|
+
return this;
|
|
303
|
+
if (events.removeListener === void 0) {
|
|
304
|
+
if (arguments.length === 0) {
|
|
305
|
+
this._events = /* @__PURE__ */ Object.create(null);
|
|
306
|
+
this._eventsCount = 0;
|
|
307
|
+
} else if (events[type] !== void 0) {
|
|
308
|
+
if (--this._eventsCount === 0)
|
|
309
|
+
this._events = /* @__PURE__ */ Object.create(null);
|
|
310
|
+
else
|
|
311
|
+
delete events[type];
|
|
312
|
+
}
|
|
313
|
+
return this;
|
|
314
|
+
}
|
|
315
|
+
if (arguments.length === 0) {
|
|
316
|
+
var keys = Object.keys(events);
|
|
317
|
+
var key;
|
|
318
|
+
for (i = 0; i < keys.length; ++i) {
|
|
319
|
+
key = keys[i];
|
|
320
|
+
if (key === "removeListener")
|
|
321
|
+
continue;
|
|
322
|
+
this.removeAllListeners(key);
|
|
323
|
+
}
|
|
324
|
+
this.removeAllListeners("removeListener");
|
|
325
|
+
this._events = /* @__PURE__ */ Object.create(null);
|
|
326
|
+
this._eventsCount = 0;
|
|
327
|
+
return this;
|
|
328
|
+
}
|
|
329
|
+
listeners = events[type];
|
|
330
|
+
if (typeof listeners === "function") {
|
|
331
|
+
this.removeListener(type, listeners);
|
|
332
|
+
} else if (listeners !== void 0) {
|
|
333
|
+
for (i = listeners.length - 1; i >= 0; i--) {
|
|
334
|
+
this.removeListener(type, listeners[i]);
|
|
335
|
+
}
|
|
336
|
+
}
|
|
337
|
+
return this;
|
|
338
|
+
};
|
|
339
|
+
function _listeners(target, type, unwrap) {
|
|
340
|
+
var events = target._events;
|
|
341
|
+
if (events === void 0)
|
|
342
|
+
return [];
|
|
343
|
+
var evlistener = events[type];
|
|
344
|
+
if (evlistener === void 0)
|
|
345
|
+
return [];
|
|
346
|
+
if (typeof evlistener === "function")
|
|
347
|
+
return unwrap ? [evlistener.listener || evlistener] : [evlistener];
|
|
348
|
+
return unwrap ? unwrapListeners(evlistener) : arrayClone(evlistener, evlistener.length);
|
|
349
|
+
}
|
|
350
|
+
EventEmitter2.prototype.listeners = function listeners(type) {
|
|
351
|
+
return _listeners(this, type, true);
|
|
352
|
+
};
|
|
353
|
+
EventEmitter2.prototype.rawListeners = function rawListeners(type) {
|
|
354
|
+
return _listeners(this, type, false);
|
|
355
|
+
};
|
|
356
|
+
EventEmitter2.listenerCount = function(emitter, type) {
|
|
357
|
+
if (typeof emitter.listenerCount === "function") {
|
|
358
|
+
return emitter.listenerCount(type);
|
|
359
|
+
} else {
|
|
360
|
+
return listenerCount.call(emitter, type);
|
|
361
|
+
}
|
|
362
|
+
};
|
|
363
|
+
EventEmitter2.prototype.listenerCount = listenerCount;
|
|
364
|
+
function listenerCount(type) {
|
|
365
|
+
var events = this._events;
|
|
366
|
+
if (events !== void 0) {
|
|
367
|
+
var evlistener = events[type];
|
|
368
|
+
if (typeof evlistener === "function") {
|
|
369
|
+
return 1;
|
|
370
|
+
} else if (evlistener !== void 0) {
|
|
371
|
+
return evlistener.length;
|
|
372
|
+
}
|
|
373
|
+
}
|
|
374
|
+
return 0;
|
|
375
|
+
}
|
|
376
|
+
EventEmitter2.prototype.eventNames = function eventNames() {
|
|
377
|
+
return this._eventsCount > 0 ? ReflectOwnKeys(this._events) : [];
|
|
378
|
+
};
|
|
379
|
+
function arrayClone(arr, n) {
|
|
380
|
+
var copy = new Array(n);
|
|
381
|
+
for (var i = 0; i < n; ++i)
|
|
382
|
+
copy[i] = arr[i];
|
|
383
|
+
return copy;
|
|
384
|
+
}
|
|
385
|
+
function spliceOne(list, index) {
|
|
386
|
+
for (; index + 1 < list.length; index++)
|
|
387
|
+
list[index] = list[index + 1];
|
|
388
|
+
list.pop();
|
|
389
|
+
}
|
|
390
|
+
function unwrapListeners(arr) {
|
|
391
|
+
var ret = new Array(arr.length);
|
|
392
|
+
for (var i = 0; i < ret.length; ++i) {
|
|
393
|
+
ret[i] = arr[i].listener || arr[i];
|
|
394
|
+
}
|
|
395
|
+
return ret;
|
|
396
|
+
}
|
|
397
|
+
function once(emitter, name) {
|
|
398
|
+
return new Promise(function(resolve, reject) {
|
|
399
|
+
function errorListener(err) {
|
|
400
|
+
emitter.removeListener(name, resolver);
|
|
401
|
+
reject(err);
|
|
402
|
+
}
|
|
403
|
+
function resolver() {
|
|
404
|
+
if (typeof emitter.removeListener === "function") {
|
|
405
|
+
emitter.removeListener("error", errorListener);
|
|
406
|
+
}
|
|
407
|
+
resolve([].slice.call(arguments));
|
|
408
|
+
}
|
|
409
|
+
;
|
|
410
|
+
eventTargetAgnosticAddListener(emitter, name, resolver, { once: true });
|
|
411
|
+
if (name !== "error") {
|
|
412
|
+
addErrorHandlerIfEventEmitter(emitter, errorListener, { once: true });
|
|
413
|
+
}
|
|
414
|
+
});
|
|
415
|
+
}
|
|
416
|
+
function addErrorHandlerIfEventEmitter(emitter, handler, flags) {
|
|
417
|
+
if (typeof emitter.on === "function") {
|
|
418
|
+
eventTargetAgnosticAddListener(emitter, "error", handler, flags);
|
|
419
|
+
}
|
|
420
|
+
}
|
|
421
|
+
function eventTargetAgnosticAddListener(emitter, name, listener, flags) {
|
|
422
|
+
if (typeof emitter.on === "function") {
|
|
423
|
+
if (flags.once) {
|
|
424
|
+
emitter.once(name, listener);
|
|
425
|
+
} else {
|
|
426
|
+
emitter.on(name, listener);
|
|
427
|
+
}
|
|
428
|
+
} else if (typeof emitter.addEventListener === "function") {
|
|
429
|
+
emitter.addEventListener(name, function wrapListener(arg) {
|
|
430
|
+
if (flags.once) {
|
|
431
|
+
emitter.removeEventListener(name, wrapListener);
|
|
432
|
+
}
|
|
433
|
+
listener(arg);
|
|
434
|
+
});
|
|
435
|
+
} else {
|
|
436
|
+
throw new TypeError('The "emitter" argument must be of type EventEmitter. Received type ' + typeof emitter);
|
|
437
|
+
}
|
|
438
|
+
}
|
|
439
|
+
}
|
|
440
|
+
});
|
|
441
|
+
|
|
57
442
|
// src/index.ts
|
|
58
443
|
var src_exports = {};
|
|
59
444
|
__export(src_exports, {
|
|
@@ -70,6 +455,7 @@ __export(src_exports, {
|
|
|
70
455
|
OpenFeatureClient: () => OpenFeatureClient,
|
|
71
456
|
OpenFeatureCommonAPI: () => OpenFeatureCommonAPI,
|
|
72
457
|
OpenFeatureError: () => OpenFeatureError,
|
|
458
|
+
OpenFeatureEventEmitter: () => import_events.EventEmitter,
|
|
73
459
|
ParseError: () => ParseError,
|
|
74
460
|
ProviderEvents: () => ProviderEvents,
|
|
75
461
|
SafeLogger: () => SafeLogger,
|
|
@@ -78,6 +464,7 @@ __export(src_exports, {
|
|
|
78
464
|
TypeMismatchError: () => TypeMismatchError
|
|
79
465
|
});
|
|
80
466
|
module.exports = __toCommonJS(src_exports);
|
|
467
|
+
var import_events = __toESM(require_events());
|
|
81
468
|
|
|
82
469
|
// ../shared/src/types.ts
|
|
83
470
|
var ProviderEvents = /* @__PURE__ */ ((ProviderEvents2) => {
|
|
@@ -341,6 +728,8 @@ var OpenFeatureAPI = class extends OpenFeatureCommonAPI {
|
|
|
341
728
|
// eslint-disable-next-line @typescript-eslint/no-empty-function
|
|
342
729
|
constructor() {
|
|
343
730
|
super();
|
|
731
|
+
this._apiEvents = new import_events.EventEmitter();
|
|
732
|
+
this._providerReady = false;
|
|
344
733
|
this._hooks = [];
|
|
345
734
|
this._provider = NOOP_PROVIDER;
|
|
346
735
|
}
|
|
@@ -391,12 +780,29 @@ var OpenFeatureAPI = class extends OpenFeatureCommonAPI {
|
|
|
391
780
|
});
|
|
392
781
|
}
|
|
393
782
|
setProvider(provider) {
|
|
394
|
-
var _a;
|
|
783
|
+
var _a, _b, _c, _d, _e, _f, _g;
|
|
395
784
|
if (this._provider !== provider) {
|
|
396
785
|
const oldProvider = this._provider;
|
|
397
786
|
this._provider = provider;
|
|
398
|
-
|
|
399
|
-
(
|
|
787
|
+
this._providerReady = false;
|
|
788
|
+
if (!this._provider.events) {
|
|
789
|
+
this._provider.events = new import_events.EventEmitter();
|
|
790
|
+
}
|
|
791
|
+
if (typeof ((_a = this._provider) == null ? void 0 : _a.initialize) === "function") {
|
|
792
|
+
(_e = (_d = (_c = (_b = this._provider).initialize) == null ? void 0 : _c.call(_b, this._context)) == null ? void 0 : _d.then(() => {
|
|
793
|
+
var _a2;
|
|
794
|
+
this._providerReady = true;
|
|
795
|
+
(_a2 = this._provider.events) == null ? void 0 : _a2.emit("PROVIDER_READY" /* Ready */);
|
|
796
|
+
})) == null ? void 0 : _e.catch(() => {
|
|
797
|
+
var _a2;
|
|
798
|
+
(_a2 = this._provider.events) == null ? void 0 : _a2.emit("PROVIDER_ERROR" /* Error */);
|
|
799
|
+
});
|
|
800
|
+
} else {
|
|
801
|
+
this._providerReady = true;
|
|
802
|
+
(_f = this._provider.events) == null ? void 0 : _f.emit("PROVIDER_READY" /* Ready */);
|
|
803
|
+
}
|
|
804
|
+
this._apiEvents.emit("providerChanged" /* ProviderChanged */);
|
|
805
|
+
(_g = oldProvider == null ? void 0 : oldProvider.onClose) == null ? void 0 : _g.call(oldProvider);
|
|
400
806
|
}
|
|
401
807
|
return this;
|
|
402
808
|
}
|
|
@@ -408,7 +814,11 @@ var OpenFeatureAPI = class extends OpenFeatureCommonAPI {
|
|
|
408
814
|
}
|
|
409
815
|
getClient(name, version) {
|
|
410
816
|
return new OpenFeatureClient(
|
|
817
|
+
// functions are passed here to make sure that these values are always up to date,
|
|
818
|
+
// and so we don't have to make these public properties on the API class.
|
|
411
819
|
() => this._provider,
|
|
820
|
+
() => this._providerReady,
|
|
821
|
+
() => this._apiEvents,
|
|
412
822
|
() => this._logger,
|
|
413
823
|
{ name, version }
|
|
414
824
|
);
|
|
@@ -418,8 +828,9 @@ var OpenFeature = OpenFeatureAPI.getInstance();
|
|
|
418
828
|
|
|
419
829
|
// src/client.ts
|
|
420
830
|
var OpenFeatureClient = class {
|
|
421
|
-
constructor(providerAccessor, globalLogger, options) {
|
|
831
|
+
constructor(providerAccessor, providerReady, apiEvents, globalLogger, options) {
|
|
422
832
|
this.providerAccessor = providerAccessor;
|
|
833
|
+
this.providerReady = providerReady;
|
|
423
834
|
this.globalLogger = globalLogger;
|
|
424
835
|
this._hooks = [];
|
|
425
836
|
this._handlerWrappers = [];
|
|
@@ -428,11 +839,13 @@ var OpenFeatureClient = class {
|
|
|
428
839
|
version: options.version
|
|
429
840
|
};
|
|
430
841
|
this.attachListeners();
|
|
431
|
-
|
|
842
|
+
apiEvents().on("providerChanged" /* ProviderChanged */, () => {
|
|
843
|
+
this.attachListeners();
|
|
844
|
+
});
|
|
432
845
|
}
|
|
433
846
|
addHandler(eventType, handler) {
|
|
434
847
|
this._handlerWrappers.push({ eventType, handler });
|
|
435
|
-
if (eventType === "PROVIDER_READY" /* Ready */ && this.
|
|
848
|
+
if (eventType === "PROVIDER_READY" /* Ready */ && this.providerReady()) {
|
|
436
849
|
handler();
|
|
437
850
|
}
|
|
438
851
|
}
|
|
@@ -515,7 +928,7 @@ var OpenFeatureClient = class {
|
|
|
515
928
|
};
|
|
516
929
|
try {
|
|
517
930
|
this.beforeHooks(allHooks, hookContext, options);
|
|
518
|
-
const resolution = resolver.call(this._provider, flagKey, defaultValue, this._logger);
|
|
931
|
+
const resolution = resolver.call(this._provider, flagKey, defaultValue, context, this._logger);
|
|
519
932
|
const evaluationDetails = __spreadProps(__spreadValues({}, resolution), {
|
|
520
933
|
flagKey
|
|
521
934
|
});
|
|
@@ -585,9 +998,12 @@ var OpenFeatureClient = class {
|
|
|
585
998
|
return this._clientLogger || this.globalLogger();
|
|
586
999
|
}
|
|
587
1000
|
attachListeners() {
|
|
588
|
-
Object.values(ProviderEvents).forEach((eventType) =>
|
|
589
|
-
|
|
590
|
-
|
|
1001
|
+
Object.values(ProviderEvents).forEach((eventType) => {
|
|
1002
|
+
var _a;
|
|
1003
|
+
return (_a = this._provider.events) == null ? void 0 : _a.on(eventType, () => {
|
|
1004
|
+
this._handlerWrappers.filter((wrapper) => wrapper.eventType === eventType).forEach((wrapper) => wrapper.handler());
|
|
1005
|
+
});
|
|
1006
|
+
});
|
|
591
1007
|
}
|
|
592
1008
|
};
|
|
593
1009
|
//# sourceMappingURL=index.js.map
|