@openfeature/server-sdk 1.6.2 → 1.7.0
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 +17 -17
- package/dist/cjs/index.js +78 -617
- package/dist/cjs/index.js.map +4 -4
- package/dist/esm/index.js +80 -571
- package/dist/esm/index.js.map +4 -4
- package/dist/types.d.ts +65 -629
- package/package.json +9 -10
package/dist/cjs/index.js
CHANGED
|
@@ -1,12 +1,10 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
var __create = Object.create;
|
|
3
2
|
var __defProp = Object.defineProperty;
|
|
4
3
|
var __defProps = Object.defineProperties;
|
|
5
4
|
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
6
5
|
var __getOwnPropDescs = Object.getOwnPropertyDescriptors;
|
|
7
6
|
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
8
7
|
var __getOwnPropSymbols = Object.getOwnPropertySymbols;
|
|
9
|
-
var __getProtoOf = Object.getPrototypeOf;
|
|
10
8
|
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
11
9
|
var __propIsEnum = Object.prototype.propertyIsEnumerable;
|
|
12
10
|
var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
|
|
@@ -34,14 +32,7 @@ var __copyProps = (to, from, except, desc) => {
|
|
|
34
32
|
}
|
|
35
33
|
return to;
|
|
36
34
|
};
|
|
37
|
-
var
|
|
38
|
-
// If the importer is in node compatibility mode or this is not an ESM
|
|
39
|
-
// file that has been converted to a CommonJS file using a Babel-
|
|
40
|
-
// compatible transform (i.e. "__esModule" has not been set), then set
|
|
41
|
-
// "default" to the CommonJS "module.exports" for node compatibility.
|
|
42
|
-
isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
|
|
43
|
-
mod
|
|
44
|
-
));
|
|
35
|
+
var __reExport = (target, mod, secondTarget) => (__copyProps(target, mod, "default"), secondTarget && __copyProps(secondTarget, mod, "default"));
|
|
45
36
|
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
46
37
|
var __async = (__this, __arguments, generator) => {
|
|
47
38
|
return new Promise((resolve, reject) => {
|
|
@@ -67,580 +58,20 @@ var __async = (__this, __arguments, generator) => {
|
|
|
67
58
|
// src/index.ts
|
|
68
59
|
var src_exports = {};
|
|
69
60
|
__export(src_exports, {
|
|
70
|
-
DefaultLogger: () => DefaultLogger,
|
|
71
|
-
ErrorCode: () => ErrorCode,
|
|
72
|
-
FlagNotFoundError: () => FlagNotFoundError,
|
|
73
|
-
GeneralError: () => GeneralError,
|
|
74
61
|
InMemoryProvider: () => InMemoryProvider,
|
|
75
|
-
InternalEventEmitter: () => InternalEventEmitter,
|
|
76
|
-
InvalidContextError: () => InvalidContextError,
|
|
77
|
-
LOG_LEVELS: () => LOG_LEVELS,
|
|
78
62
|
NOOP_PROVIDER: () => NOOP_PROVIDER,
|
|
79
63
|
NOOP_TRANSACTION_CONTEXT_PROPAGATOR: () => NOOP_TRANSACTION_CONTEXT_PROPAGATOR,
|
|
80
64
|
OpenFeature: () => OpenFeature,
|
|
81
65
|
OpenFeatureAPI: () => OpenFeatureAPI,
|
|
82
|
-
OpenFeatureClient: () => OpenFeatureClient
|
|
83
|
-
OpenFeatureCommonAPI: () => OpenFeatureCommonAPI,
|
|
84
|
-
OpenFeatureError: () => OpenFeatureError,
|
|
85
|
-
OpenFeatureEventEmitter: () => OpenFeatureEventEmitter,
|
|
86
|
-
ParseError: () => ParseError,
|
|
87
|
-
ProviderEvents: () => ProviderEvents,
|
|
88
|
-
ProviderStatus: () => ProviderStatus,
|
|
89
|
-
SafeLogger: () => SafeLogger,
|
|
90
|
-
StandardResolutionReasons: () => StandardResolutionReasons,
|
|
91
|
-
TargetingKeyMissingError: () => TargetingKeyMissingError,
|
|
92
|
-
TypeMismatchError: () => TypeMismatchError,
|
|
93
|
-
isObject: () => isObject,
|
|
94
|
-
isString: () => isString,
|
|
95
|
-
objectOrUndefined: () => objectOrUndefined,
|
|
96
|
-
statusMatchesEvent: () => statusMatchesEvent,
|
|
97
|
-
stringOrUndefined: () => stringOrUndefined
|
|
66
|
+
OpenFeatureClient: () => OpenFeatureClient
|
|
98
67
|
});
|
|
99
68
|
module.exports = __toCommonJS(src_exports);
|
|
100
69
|
|
|
101
|
-
//
|
|
102
|
-
var
|
|
103
|
-
constructor(message) {
|
|
104
|
-
super(message);
|
|
105
|
-
Object.setPrototypeOf(this, OpenFeatureError.prototype);
|
|
106
|
-
this.name = "OpenFeatureError";
|
|
107
|
-
}
|
|
108
|
-
};
|
|
109
|
-
|
|
110
|
-
// ../shared/src/evaluation/evaluation.ts
|
|
111
|
-
var StandardResolutionReasons = {
|
|
112
|
-
/**
|
|
113
|
-
* The resolved value was the result of a dynamic evaluation, such as a rule or specific user-targeting.
|
|
114
|
-
*/
|
|
115
|
-
TARGETING_MATCH: "TARGETING_MATCH",
|
|
116
|
-
/**
|
|
117
|
-
* The resolved value was the result of pseudorandom assignment.
|
|
118
|
-
*/
|
|
119
|
-
SPLIT: "SPLIT",
|
|
120
|
-
/**
|
|
121
|
-
* The resolved value was the result of the flag being disabled in the management system.
|
|
122
|
-
*/
|
|
123
|
-
DISABLED: "DISABLED",
|
|
124
|
-
/**
|
|
125
|
-
* The resolved value was configured statically, or otherwise fell back to a pre-configured value.
|
|
126
|
-
*/
|
|
127
|
-
DEFAULT: "DEFAULT",
|
|
128
|
-
/**
|
|
129
|
-
* The reason for the resolved value could not be determined.
|
|
130
|
-
*/
|
|
131
|
-
UNKNOWN: "UNKNOWN",
|
|
132
|
-
/**
|
|
133
|
-
* The resolved value is static (no dynamic evaluation).
|
|
134
|
-
*/
|
|
135
|
-
STATIC: "STATIC",
|
|
136
|
-
/**
|
|
137
|
-
* The resolved value was retrieved from cache.
|
|
138
|
-
*/
|
|
139
|
-
CACHED: "CACHED",
|
|
140
|
-
/**
|
|
141
|
-
* The resolved value was the result of an error.
|
|
142
|
-
*
|
|
143
|
-
* Note: The `errorCode` and `errorMessage` fields may contain additional details of this error.
|
|
144
|
-
*/
|
|
145
|
-
ERROR: "ERROR"
|
|
146
|
-
};
|
|
147
|
-
var ErrorCode = /* @__PURE__ */ ((ErrorCode2) => {
|
|
148
|
-
ErrorCode2["PROVIDER_NOT_READY"] = "PROVIDER_NOT_READY";
|
|
149
|
-
ErrorCode2["FLAG_NOT_FOUND"] = "FLAG_NOT_FOUND";
|
|
150
|
-
ErrorCode2["PARSE_ERROR"] = "PARSE_ERROR";
|
|
151
|
-
ErrorCode2["TYPE_MISMATCH"] = "TYPE_MISMATCH";
|
|
152
|
-
ErrorCode2["TARGETING_KEY_MISSING"] = "TARGETING_KEY_MISSING";
|
|
153
|
-
ErrorCode2["INVALID_CONTEXT"] = "INVALID_CONTEXT";
|
|
154
|
-
ErrorCode2["GENERAL"] = "GENERAL";
|
|
155
|
-
return ErrorCode2;
|
|
156
|
-
})(ErrorCode || {});
|
|
157
|
-
|
|
158
|
-
// ../shared/src/errors/general-error.ts
|
|
159
|
-
var GeneralError = class extends OpenFeatureError {
|
|
160
|
-
constructor(message) {
|
|
161
|
-
super(message);
|
|
162
|
-
Object.setPrototypeOf(this, GeneralError.prototype);
|
|
163
|
-
this.name = "GeneralError";
|
|
164
|
-
this.code = "GENERAL" /* GENERAL */;
|
|
165
|
-
}
|
|
166
|
-
};
|
|
167
|
-
|
|
168
|
-
// ../shared/src/errors/flag-not-found-error.ts
|
|
169
|
-
var FlagNotFoundError = class extends OpenFeatureError {
|
|
170
|
-
constructor(message) {
|
|
171
|
-
super(message);
|
|
172
|
-
Object.setPrototypeOf(this, FlagNotFoundError.prototype);
|
|
173
|
-
this.name = "FlagNotFoundError";
|
|
174
|
-
this.code = "FLAG_NOT_FOUND" /* FLAG_NOT_FOUND */;
|
|
175
|
-
}
|
|
176
|
-
};
|
|
177
|
-
|
|
178
|
-
// ../shared/src/errors/parse-error.ts
|
|
179
|
-
var ParseError = class extends OpenFeatureError {
|
|
180
|
-
constructor(message) {
|
|
181
|
-
super(message);
|
|
182
|
-
Object.setPrototypeOf(this, ParseError.prototype);
|
|
183
|
-
this.name = "ParseError";
|
|
184
|
-
this.code = "PARSE_ERROR" /* PARSE_ERROR */;
|
|
185
|
-
}
|
|
186
|
-
};
|
|
187
|
-
|
|
188
|
-
// ../shared/src/errors/type-mismatch-error.ts
|
|
189
|
-
var TypeMismatchError = class extends OpenFeatureError {
|
|
190
|
-
constructor(message) {
|
|
191
|
-
super(message);
|
|
192
|
-
Object.setPrototypeOf(this, TypeMismatchError.prototype);
|
|
193
|
-
this.name = "TypeMismatchError";
|
|
194
|
-
this.code = "TYPE_MISMATCH" /* TYPE_MISMATCH */;
|
|
195
|
-
}
|
|
196
|
-
};
|
|
197
|
-
|
|
198
|
-
// ../shared/src/errors/targeting-key-missing-error.ts
|
|
199
|
-
var TargetingKeyMissingError = class extends OpenFeatureError {
|
|
200
|
-
constructor(message) {
|
|
201
|
-
super(message);
|
|
202
|
-
Object.setPrototypeOf(this, TargetingKeyMissingError.prototype);
|
|
203
|
-
this.name = "TargetingKeyMissingError";
|
|
204
|
-
this.code = "TARGETING_KEY_MISSING" /* TARGETING_KEY_MISSING */;
|
|
205
|
-
}
|
|
206
|
-
};
|
|
207
|
-
|
|
208
|
-
// ../shared/src/errors/invalid-context-error.ts
|
|
209
|
-
var InvalidContextError = class extends OpenFeatureError {
|
|
210
|
-
constructor(message) {
|
|
211
|
-
super(message);
|
|
212
|
-
Object.setPrototypeOf(this, InvalidContextError.prototype);
|
|
213
|
-
this.name = "InvalidContextError";
|
|
214
|
-
this.code = "INVALID_CONTEXT" /* INVALID_CONTEXT */;
|
|
215
|
-
}
|
|
216
|
-
};
|
|
217
|
-
|
|
218
|
-
// ../shared/src/provider/provider.ts
|
|
219
|
-
var ProviderStatus = /* @__PURE__ */ ((ProviderStatus2) => {
|
|
220
|
-
ProviderStatus2["NOT_READY"] = "NOT_READY";
|
|
221
|
-
ProviderStatus2["READY"] = "READY";
|
|
222
|
-
ProviderStatus2["ERROR"] = "ERROR";
|
|
223
|
-
ProviderStatus2["STALE"] = "STALE";
|
|
224
|
-
return ProviderStatus2;
|
|
225
|
-
})(ProviderStatus || {});
|
|
226
|
-
|
|
227
|
-
// ../shared/src/events/events.ts
|
|
228
|
-
var ProviderEvents = /* @__PURE__ */ ((ProviderEvents3) => {
|
|
229
|
-
ProviderEvents3["Ready"] = "PROVIDER_READY";
|
|
230
|
-
ProviderEvents3["Error"] = "PROVIDER_ERROR";
|
|
231
|
-
ProviderEvents3["ConfigurationChanged"] = "PROVIDER_CONFIGURATION_CHANGED";
|
|
232
|
-
ProviderEvents3["Stale"] = "PROVIDER_STALE";
|
|
233
|
-
return ProviderEvents3;
|
|
234
|
-
})(ProviderEvents || {});
|
|
235
|
-
|
|
236
|
-
// ../shared/src/events/event-utils.ts
|
|
237
|
-
var eventStatusMap = {
|
|
238
|
-
["READY" /* READY */]: "PROVIDER_READY" /* Ready */,
|
|
239
|
-
["ERROR" /* ERROR */]: "PROVIDER_ERROR" /* Error */,
|
|
240
|
-
["STALE" /* STALE */]: "PROVIDER_STALE" /* Stale */,
|
|
241
|
-
["NOT_READY" /* NOT_READY */]: void 0
|
|
242
|
-
};
|
|
243
|
-
var statusMatchesEvent = (event, status) => {
|
|
244
|
-
return !status && event === "PROVIDER_READY" /* Ready */ || eventStatusMap[status] === event;
|
|
245
|
-
};
|
|
246
|
-
|
|
247
|
-
// ../shared/src/events/open-feature-event-emitter.ts
|
|
248
|
-
var import_events2 = __toESM(require("events"));
|
|
249
|
-
|
|
250
|
-
// ../shared/src/logger/default-logger.ts
|
|
251
|
-
var DefaultLogger = class {
|
|
252
|
-
error(...args) {
|
|
253
|
-
console.error(...args);
|
|
254
|
-
}
|
|
255
|
-
warn(...args) {
|
|
256
|
-
console.warn(...args);
|
|
257
|
-
}
|
|
258
|
-
info() {
|
|
259
|
-
}
|
|
260
|
-
debug() {
|
|
261
|
-
}
|
|
262
|
-
};
|
|
263
|
-
|
|
264
|
-
// ../shared/src/logger/safe-logger.ts
|
|
265
|
-
var LOG_LEVELS = ["error", "warn", "info", "debug"];
|
|
266
|
-
var SafeLogger = class {
|
|
267
|
-
constructor(logger) {
|
|
268
|
-
this.fallbackLogger = new DefaultLogger();
|
|
269
|
-
try {
|
|
270
|
-
for (const level of LOG_LEVELS) {
|
|
271
|
-
if (!logger[level] || typeof logger[level] !== "function") {
|
|
272
|
-
throw new Error(`The provided logger is missing the ${level} method.`);
|
|
273
|
-
}
|
|
274
|
-
}
|
|
275
|
-
this.logger = logger;
|
|
276
|
-
} catch (err) {
|
|
277
|
-
console.error(err);
|
|
278
|
-
console.error("Falling back to the default logger.");
|
|
279
|
-
this.logger = this.fallbackLogger;
|
|
280
|
-
}
|
|
281
|
-
}
|
|
282
|
-
error(...args) {
|
|
283
|
-
this.log("error", ...args);
|
|
284
|
-
}
|
|
285
|
-
warn(...args) {
|
|
286
|
-
this.log("warn", ...args);
|
|
287
|
-
}
|
|
288
|
-
info(...args) {
|
|
289
|
-
this.log("info", ...args);
|
|
290
|
-
}
|
|
291
|
-
debug(...args) {
|
|
292
|
-
this.log("debug", ...args);
|
|
293
|
-
}
|
|
294
|
-
log(level, ...args) {
|
|
295
|
-
try {
|
|
296
|
-
this.logger[level](...args);
|
|
297
|
-
} catch (error) {
|
|
298
|
-
this.fallbackLogger[level](...args);
|
|
299
|
-
}
|
|
300
|
-
}
|
|
301
|
-
};
|
|
302
|
-
|
|
303
|
-
// ../shared/src/events/open-feature-event-emitter.ts
|
|
304
|
-
var GenericEventEmitter = class {
|
|
305
|
-
constructor(globalLogger) {
|
|
306
|
-
this.globalLogger = globalLogger;
|
|
307
|
-
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
308
|
-
this._handlers = /* @__PURE__ */ new WeakMap();
|
|
309
|
-
this.eventEmitter = new import_events2.default({ captureRejections: true });
|
|
310
|
-
this.eventEmitter.on("error", (err) => {
|
|
311
|
-
var _a;
|
|
312
|
-
(_a = this._logger) == null ? void 0 : _a.error("Error running event handler:", err);
|
|
313
|
-
});
|
|
314
|
-
}
|
|
315
|
-
emit(eventType, context) {
|
|
316
|
-
this.eventEmitter.emit(eventType, context);
|
|
317
|
-
}
|
|
318
|
-
addHandler(eventType, handler) {
|
|
319
|
-
const asyncHandler = (details) => __async(this, null, function* () {
|
|
320
|
-
yield handler(details);
|
|
321
|
-
});
|
|
322
|
-
this._handlers.set(handler, asyncHandler);
|
|
323
|
-
this.eventEmitter.on(eventType, asyncHandler);
|
|
324
|
-
}
|
|
325
|
-
removeHandler(eventType, handler) {
|
|
326
|
-
const asyncHandler = this._handlers.get(handler);
|
|
327
|
-
if (!asyncHandler) {
|
|
328
|
-
return;
|
|
329
|
-
}
|
|
330
|
-
this.eventEmitter.removeListener(eventType, asyncHandler);
|
|
331
|
-
}
|
|
332
|
-
removeAllHandlers(eventType) {
|
|
333
|
-
if (eventType) {
|
|
334
|
-
this.eventEmitter.removeAllListeners(eventType);
|
|
335
|
-
} else {
|
|
336
|
-
this.eventEmitter.removeAllListeners();
|
|
337
|
-
}
|
|
338
|
-
}
|
|
339
|
-
getHandlers(eventType) {
|
|
340
|
-
return this.eventEmitter.listeners(eventType);
|
|
341
|
-
}
|
|
342
|
-
setLogger(logger) {
|
|
343
|
-
this._eventLogger = new SafeLogger(logger);
|
|
344
|
-
return this;
|
|
345
|
-
}
|
|
346
|
-
get _logger() {
|
|
347
|
-
var _a, _b;
|
|
348
|
-
return (_b = this._eventLogger) != null ? _b : (_a = this.globalLogger) == null ? void 0 : _a.call(this);
|
|
349
|
-
}
|
|
350
|
-
};
|
|
351
|
-
var OpenFeatureEventEmitter = class extends GenericEventEmitter {
|
|
352
|
-
};
|
|
353
|
-
var InternalEventEmitter = class extends GenericEventEmitter {
|
|
354
|
-
};
|
|
355
|
-
|
|
356
|
-
// ../shared/src/transaction-context/no-op-transaction-context-propagator.ts
|
|
357
|
-
var NoopTransactionContextPropagator = class {
|
|
358
|
-
getTransactionContext() {
|
|
359
|
-
return {};
|
|
360
|
-
}
|
|
361
|
-
setTransactionContext(_, callback) {
|
|
362
|
-
callback();
|
|
363
|
-
}
|
|
364
|
-
};
|
|
365
|
-
var NOOP_TRANSACTION_CONTEXT_PROPAGATOR = new NoopTransactionContextPropagator();
|
|
366
|
-
|
|
367
|
-
// ../shared/src/type-guards.ts
|
|
368
|
-
function isString(value) {
|
|
369
|
-
return typeof value === "string";
|
|
370
|
-
}
|
|
371
|
-
function stringOrUndefined(value) {
|
|
372
|
-
return isString(value) ? value : void 0;
|
|
373
|
-
}
|
|
374
|
-
function isObject(value) {
|
|
375
|
-
return typeof value === "object";
|
|
376
|
-
}
|
|
377
|
-
function objectOrUndefined(value) {
|
|
378
|
-
return isObject(value) ? value : void 0;
|
|
379
|
-
}
|
|
380
|
-
|
|
381
|
-
// ../shared/src/filter.ts
|
|
382
|
-
function isDefined(input) {
|
|
383
|
-
return typeof input !== "undefined" && input !== null;
|
|
384
|
-
}
|
|
385
|
-
|
|
386
|
-
// ../shared/src/open-feature.ts
|
|
387
|
-
var OpenFeatureCommonAPI = class {
|
|
388
|
-
constructor(category) {
|
|
389
|
-
this._hooks = [];
|
|
390
|
-
this._transactionContextPropagator = NOOP_TRANSACTION_CONTEXT_PROPAGATOR;
|
|
391
|
-
this._context = {};
|
|
392
|
-
this._logger = new DefaultLogger();
|
|
393
|
-
this._events = new InternalEventEmitter(() => this._logger);
|
|
394
|
-
this._clientEventHandlers = /* @__PURE__ */ new Map();
|
|
395
|
-
this._clientProviders = /* @__PURE__ */ new Map();
|
|
396
|
-
this._clientEvents = /* @__PURE__ */ new Map();
|
|
397
|
-
this._runsOn = category;
|
|
398
|
-
}
|
|
399
|
-
addHooks(...hooks) {
|
|
400
|
-
this._hooks = [...this._hooks, ...hooks];
|
|
401
|
-
return this;
|
|
402
|
-
}
|
|
403
|
-
getHooks() {
|
|
404
|
-
return this._hooks;
|
|
405
|
-
}
|
|
406
|
-
clearHooks() {
|
|
407
|
-
this._hooks = [];
|
|
408
|
-
return this;
|
|
409
|
-
}
|
|
410
|
-
setLogger(logger) {
|
|
411
|
-
this._logger = new SafeLogger(logger);
|
|
412
|
-
return this;
|
|
413
|
-
}
|
|
414
|
-
/**
|
|
415
|
-
* Get metadata about registered provider.
|
|
416
|
-
* @returns {ProviderMetadata} Provider Metadata
|
|
417
|
-
*/
|
|
418
|
-
get providerMetadata() {
|
|
419
|
-
return this._defaultProvider.metadata;
|
|
420
|
-
}
|
|
421
|
-
/**
|
|
422
|
-
* Adds a handler for the given provider event type.
|
|
423
|
-
* The handlers are called in the order they have been added.
|
|
424
|
-
* API (global) events run for all providers.
|
|
425
|
-
* @param {ProviderEvents} eventType The provider event type to listen to
|
|
426
|
-
* @param {EventHandler} handler The handler to run on occurrence of the event type
|
|
427
|
-
*/
|
|
428
|
-
addHandler(eventType, handler) {
|
|
429
|
-
[.../* @__PURE__ */ new Map([[void 0, this._defaultProvider]]), ...this._clientProviders].forEach((keyProviderTuple) => {
|
|
430
|
-
var _a;
|
|
431
|
-
const clientName = keyProviderTuple[0];
|
|
432
|
-
const provider = keyProviderTuple[1];
|
|
433
|
-
const shouldRunNow = statusMatchesEvent(eventType, keyProviderTuple[1].status);
|
|
434
|
-
if (shouldRunNow) {
|
|
435
|
-
try {
|
|
436
|
-
handler({ clientName, providerName: provider.metadata.name });
|
|
437
|
-
} catch (err) {
|
|
438
|
-
(_a = this._logger) == null ? void 0 : _a.error("Error running event handler:", err);
|
|
439
|
-
}
|
|
440
|
-
}
|
|
441
|
-
});
|
|
442
|
-
this._events.addHandler(eventType, handler);
|
|
443
|
-
}
|
|
444
|
-
/**
|
|
445
|
-
* Removes a handler for the given provider event type.
|
|
446
|
-
* @param {ProviderEvents} eventType The provider event type to remove the listener for
|
|
447
|
-
* @param {EventHandler} handler The handler to remove for the provider event type
|
|
448
|
-
*/
|
|
449
|
-
removeHandler(eventType, handler) {
|
|
450
|
-
this._events.removeHandler(eventType, handler);
|
|
451
|
-
}
|
|
452
|
-
/**
|
|
453
|
-
* Gets the current handlers for the given provider event type.
|
|
454
|
-
* @param {ProviderEvents} eventType The provider event type to get the current handlers for
|
|
455
|
-
* @returns {EventHandler[]} The handlers currently attached to the given provider event type
|
|
456
|
-
*/
|
|
457
|
-
getHandlers(eventType) {
|
|
458
|
-
return this._events.getHandlers(eventType);
|
|
459
|
-
}
|
|
460
|
-
setProviderAndWait(clientOrProvider, providerOrUndefined) {
|
|
461
|
-
return __async(this, null, function* () {
|
|
462
|
-
yield this.setAwaitableProvider(clientOrProvider, providerOrUndefined);
|
|
463
|
-
});
|
|
464
|
-
}
|
|
465
|
-
setProvider(clientOrProvider, providerOrUndefined) {
|
|
466
|
-
const maybePromise = this.setAwaitableProvider(clientOrProvider, providerOrUndefined);
|
|
467
|
-
if (maybePromise) {
|
|
468
|
-
maybePromise.catch(() => {
|
|
469
|
-
});
|
|
470
|
-
}
|
|
471
|
-
return this;
|
|
472
|
-
}
|
|
473
|
-
setAwaitableProvider(clientOrProvider, providerOrUndefined) {
|
|
474
|
-
var _a, _b, _c, _d, _e, _f;
|
|
475
|
-
const clientName = stringOrUndefined(clientOrProvider);
|
|
476
|
-
const provider = (_a = objectOrUndefined(clientOrProvider)) != null ? _a : objectOrUndefined(providerOrUndefined);
|
|
477
|
-
if (!provider) {
|
|
478
|
-
this._logger.debug("No provider defined, ignoring setProvider call");
|
|
479
|
-
return;
|
|
480
|
-
}
|
|
481
|
-
const oldProvider = this.getProviderForClient(clientName);
|
|
482
|
-
const providerName = provider.metadata.name;
|
|
483
|
-
if (oldProvider === provider) {
|
|
484
|
-
this._logger.debug("Provider is already set, ignoring setProvider call");
|
|
485
|
-
return;
|
|
486
|
-
}
|
|
487
|
-
if (!provider.runsOn) {
|
|
488
|
-
this._logger.debug(`Provider '${provider.metadata.name}' has not defined its intended use.`);
|
|
489
|
-
} else if (provider.runsOn !== this._runsOn) {
|
|
490
|
-
throw new GeneralError(`Provider '${provider.metadata.name}' is intended for use on the ${provider.runsOn}.`);
|
|
491
|
-
}
|
|
492
|
-
const emitters = this.getAssociatedEventEmitters(clientName);
|
|
493
|
-
if (typeof provider.initialize === "function" && provider.status === void 0) {
|
|
494
|
-
const activeLogger = this._logger || console;
|
|
495
|
-
activeLogger.warn(
|
|
496
|
-
`Provider ${providerName} implements 'initialize' but not 'status'. Please implement 'status'.`
|
|
497
|
-
);
|
|
498
|
-
}
|
|
499
|
-
let initializationPromise = void 0;
|
|
500
|
-
if ((provider == null ? void 0 : provider.status) === "NOT_READY" /* NOT_READY */ && typeof provider.initialize === "function") {
|
|
501
|
-
initializationPromise = (_d = (_c = (_b = provider.initialize) == null ? void 0 : _b.call(provider, this._context)) == null ? void 0 : _c.then(() => {
|
|
502
|
-
var _a2;
|
|
503
|
-
this.getAssociatedEventEmitters(clientName).forEach((emitter) => {
|
|
504
|
-
emitter == null ? void 0 : emitter.emit("PROVIDER_READY" /* Ready */, { clientName, providerName });
|
|
505
|
-
});
|
|
506
|
-
(_a2 = this._events) == null ? void 0 : _a2.emit("PROVIDER_READY" /* Ready */, { clientName, providerName });
|
|
507
|
-
})) == null ? void 0 : _d.catch((error) => {
|
|
508
|
-
var _a2;
|
|
509
|
-
this.getAssociatedEventEmitters(clientName).forEach((emitter) => {
|
|
510
|
-
emitter == null ? void 0 : emitter.emit("PROVIDER_ERROR" /* Error */, { clientName, providerName, message: error.message });
|
|
511
|
-
});
|
|
512
|
-
(_a2 = this._events) == null ? void 0 : _a2.emit("PROVIDER_ERROR" /* Error */, { clientName, providerName, message: error.message });
|
|
513
|
-
throw error;
|
|
514
|
-
});
|
|
515
|
-
} else {
|
|
516
|
-
emitters.forEach((emitter) => {
|
|
517
|
-
emitter == null ? void 0 : emitter.emit("PROVIDER_READY" /* Ready */, { clientName, providerName });
|
|
518
|
-
});
|
|
519
|
-
(_e = this._events) == null ? void 0 : _e.emit("PROVIDER_READY" /* Ready */, { clientName, providerName });
|
|
520
|
-
}
|
|
521
|
-
if (clientName) {
|
|
522
|
-
this._clientProviders.set(clientName, provider);
|
|
523
|
-
} else {
|
|
524
|
-
this._defaultProvider = provider;
|
|
525
|
-
}
|
|
526
|
-
this.transferListeners(oldProvider, provider, clientName, emitters);
|
|
527
|
-
if (![...this._clientProviders.values(), this._defaultProvider].includes(oldProvider)) {
|
|
528
|
-
(_f = oldProvider == null ? void 0 : oldProvider.onClose) == null ? void 0 : _f.call(oldProvider);
|
|
529
|
-
}
|
|
530
|
-
return initializationPromise;
|
|
531
|
-
}
|
|
532
|
-
getProviderForClient(name) {
|
|
533
|
-
var _a;
|
|
534
|
-
if (!name) {
|
|
535
|
-
return this._defaultProvider;
|
|
536
|
-
}
|
|
537
|
-
return (_a = this._clientProviders.get(name)) != null ? _a : this._defaultProvider;
|
|
538
|
-
}
|
|
539
|
-
buildAndCacheEventEmitterForClient(name) {
|
|
540
|
-
const emitter = this._clientEvents.get(name);
|
|
541
|
-
if (emitter) {
|
|
542
|
-
return emitter;
|
|
543
|
-
}
|
|
544
|
-
const newEmitter = new InternalEventEmitter(() => this._logger);
|
|
545
|
-
this._clientEvents.set(name, newEmitter);
|
|
546
|
-
const clientProvider = this.getProviderForClient(name);
|
|
547
|
-
Object.values(ProviderEvents).forEach(
|
|
548
|
-
(eventType) => {
|
|
549
|
-
var _a;
|
|
550
|
-
return (_a = clientProvider.events) == null ? void 0 : _a.addHandler(eventType, (details) => __async(this, null, function* () {
|
|
551
|
-
newEmitter.emit(eventType, __spreadProps(__spreadValues({}, details), { clientName: name, providerName: clientProvider.metadata.name }));
|
|
552
|
-
}));
|
|
553
|
-
}
|
|
554
|
-
);
|
|
555
|
-
return newEmitter;
|
|
556
|
-
}
|
|
557
|
-
getUnboundEmitters() {
|
|
558
|
-
const namedProviders = [...this._clientProviders.keys()];
|
|
559
|
-
const eventEmitterNames = [...this._clientEvents.keys()].filter(isDefined);
|
|
560
|
-
const unboundEmitterNames = eventEmitterNames.filter((name) => !namedProviders.includes(name));
|
|
561
|
-
return [
|
|
562
|
-
// all unbound, named emitters
|
|
563
|
-
...unboundEmitterNames.map((name) => this._clientEvents.get(name)),
|
|
564
|
-
// the default emitter
|
|
565
|
-
this._clientEvents.get(void 0)
|
|
566
|
-
].filter(isDefined);
|
|
567
|
-
}
|
|
568
|
-
getAssociatedEventEmitters(clientName) {
|
|
569
|
-
return clientName ? [this.buildAndCacheEventEmitterForClient(clientName)] : this.getUnboundEmitters();
|
|
570
|
-
}
|
|
571
|
-
transferListeners(oldProvider, newProvider, clientName, emitters) {
|
|
572
|
-
var _a;
|
|
573
|
-
(_a = this._clientEventHandlers.get(clientName)) == null ? void 0 : _a.forEach((eventHandler) => {
|
|
574
|
-
var _a2;
|
|
575
|
-
return (_a2 = oldProvider.events) == null ? void 0 : _a2.removeHandler(...eventHandler);
|
|
576
|
-
});
|
|
577
|
-
const newClientHandlers = Object.values(ProviderEvents).map((eventType) => {
|
|
578
|
-
const handler = (details) => __async(this, null, function* () {
|
|
579
|
-
emitters.forEach((emitter) => {
|
|
580
|
-
emitter == null ? void 0 : emitter.emit(eventType, __spreadProps(__spreadValues({}, details), { clientName, providerName: newProvider.metadata.name }));
|
|
581
|
-
});
|
|
582
|
-
this._events.emit(eventType, __spreadProps(__spreadValues({}, details), { clientName, providerName: newProvider.metadata.name }));
|
|
583
|
-
});
|
|
584
|
-
return [eventType, handler];
|
|
585
|
-
});
|
|
586
|
-
this._clientEventHandlers.set(clientName, newClientHandlers);
|
|
587
|
-
newClientHandlers.forEach((eventHandler) => {
|
|
588
|
-
var _a2;
|
|
589
|
-
return (_a2 = newProvider.events) == null ? void 0 : _a2.addHandler(...eventHandler);
|
|
590
|
-
});
|
|
591
|
-
}
|
|
592
|
-
close() {
|
|
593
|
-
return __async(this, null, function* () {
|
|
594
|
-
var _a, _b;
|
|
595
|
-
try {
|
|
596
|
-
yield (_b = (_a = this == null ? void 0 : this._defaultProvider) == null ? void 0 : _a.onClose) == null ? void 0 : _b.call(_a);
|
|
597
|
-
} catch (err) {
|
|
598
|
-
this.handleShutdownError(this._defaultProvider, err);
|
|
599
|
-
}
|
|
600
|
-
const providers = Array.from(this._clientProviders);
|
|
601
|
-
yield Promise.all(
|
|
602
|
-
providers.map((_0) => __async(this, [_0], function* ([, provider]) {
|
|
603
|
-
var _a2;
|
|
604
|
-
try {
|
|
605
|
-
yield (_a2 = provider.onClose) == null ? void 0 : _a2.call(provider);
|
|
606
|
-
} catch (err) {
|
|
607
|
-
this.handleShutdownError(this._defaultProvider, err);
|
|
608
|
-
}
|
|
609
|
-
}))
|
|
610
|
-
);
|
|
611
|
-
});
|
|
612
|
-
}
|
|
613
|
-
handleShutdownError(provider, err) {
|
|
614
|
-
this._logger.error(`Error during shutdown of provider ${provider.metadata.name}: ${err}`);
|
|
615
|
-
this._logger.error(err == null ? void 0 : err.stack);
|
|
616
|
-
}
|
|
617
|
-
setTransactionContextPropagator(transactionContextPropagator) {
|
|
618
|
-
const baseMessage = "Invalid TransactionContextPropagator, will not be set: ";
|
|
619
|
-
if (typeof (transactionContextPropagator == null ? void 0 : transactionContextPropagator.getTransactionContext) !== "function") {
|
|
620
|
-
this._logger.error(`${baseMessage}: getTransactionContext is not a function.`);
|
|
621
|
-
} else if (typeof (transactionContextPropagator == null ? void 0 : transactionContextPropagator.setTransactionContext) !== "function") {
|
|
622
|
-
this._logger.error(`${baseMessage}: setTransactionContext is not a function.`);
|
|
623
|
-
} else {
|
|
624
|
-
this._transactionContextPropagator = transactionContextPropagator;
|
|
625
|
-
}
|
|
626
|
-
return this;
|
|
627
|
-
}
|
|
628
|
-
setTransactionContext(transactionContext, callback, ...args) {
|
|
629
|
-
this._transactionContextPropagator.setTransactionContext(transactionContext, callback, ...args);
|
|
630
|
-
}
|
|
631
|
-
getTransactionContext() {
|
|
632
|
-
try {
|
|
633
|
-
return this._transactionContextPropagator.getTransactionContext();
|
|
634
|
-
} catch (err) {
|
|
635
|
-
const error = err;
|
|
636
|
-
this._logger.error(`Error getting transaction context: ${error == null ? void 0 : error.message}, returning empty context.`);
|
|
637
|
-
this._logger.error(error == null ? void 0 : error.stack);
|
|
638
|
-
return {};
|
|
639
|
-
}
|
|
640
|
-
}
|
|
641
|
-
};
|
|
70
|
+
// src/client/open-feature-client.ts
|
|
71
|
+
var import_core5 = require("@openfeature/core");
|
|
642
72
|
|
|
643
73
|
// src/provider/no-op-provider.ts
|
|
74
|
+
var import_core = require("@openfeature/core");
|
|
644
75
|
var REASON_NO_OP = "No-op";
|
|
645
76
|
var NoopFeatureProvider = class {
|
|
646
77
|
constructor() {
|
|
@@ -649,7 +80,7 @@ var NoopFeatureProvider = class {
|
|
|
649
80
|
};
|
|
650
81
|
}
|
|
651
82
|
get status() {
|
|
652
|
-
return
|
|
83
|
+
return import_core.ProviderStatus.NOT_READY;
|
|
653
84
|
}
|
|
654
85
|
resolveBooleanEvaluation(_, defaultValue) {
|
|
655
86
|
return this.noOp(defaultValue);
|
|
@@ -672,20 +103,24 @@ var NoopFeatureProvider = class {
|
|
|
672
103
|
};
|
|
673
104
|
var NOOP_PROVIDER = new NoopFeatureProvider();
|
|
674
105
|
|
|
106
|
+
// src/provider/in-memory-provider/in-memory-provider.ts
|
|
107
|
+
var import_core3 = require("@openfeature/core");
|
|
108
|
+
|
|
675
109
|
// src/provider/in-memory-provider/variant-not-found-error.ts
|
|
676
|
-
var
|
|
110
|
+
var import_core2 = require("@openfeature/core");
|
|
111
|
+
var VariantFoundError = class extends import_core2.OpenFeatureError {
|
|
677
112
|
constructor(message) {
|
|
678
113
|
super(message);
|
|
679
114
|
Object.setPrototypeOf(this, VariantFoundError.prototype);
|
|
680
115
|
this.name = "VariantFoundError";
|
|
681
|
-
this.code =
|
|
116
|
+
this.code = import_core2.ErrorCode.GENERAL;
|
|
682
117
|
}
|
|
683
118
|
};
|
|
684
119
|
|
|
685
120
|
// src/provider/in-memory-provider/in-memory-provider.ts
|
|
686
121
|
var InMemoryProvider = class {
|
|
687
122
|
constructor(flagConfiguration = {}) {
|
|
688
|
-
this.events = new OpenFeatureEventEmitter();
|
|
123
|
+
this.events = new import_core3.OpenFeatureEventEmitter();
|
|
689
124
|
this.runsOn = "server";
|
|
690
125
|
this.metadata = {
|
|
691
126
|
name: "in-memory"
|
|
@@ -699,7 +134,7 @@ var InMemoryProvider = class {
|
|
|
699
134
|
putConfiguration(flagConfiguration) {
|
|
700
135
|
const flagsChanged = Object.entries(flagConfiguration).filter(([key, value]) => this._flagConfiguration[key] !== value).map(([key]) => key);
|
|
701
136
|
this._flagConfiguration = __spreadValues({}, flagConfiguration);
|
|
702
|
-
this.events.emit(
|
|
137
|
+
this.events.emit(import_core3.ProviderEvents.ConfigurationChanged, { flagsChanged });
|
|
703
138
|
}
|
|
704
139
|
resolveBooleanEvaluation(flagKey, defaultValue, context, logger) {
|
|
705
140
|
return this.resolveFlagWithReason(flagKey, defaultValue, context, logger);
|
|
@@ -722,12 +157,12 @@ var InMemoryProvider = class {
|
|
|
722
157
|
try {
|
|
723
158
|
const resolutionResult = this.lookupFlagValue(flagKey, defaultValue, ctx, logger);
|
|
724
159
|
if (typeof (resolutionResult == null ? void 0 : resolutionResult.value) != typeof defaultValue) {
|
|
725
|
-
throw new TypeMismatchError();
|
|
160
|
+
throw new import_core3.TypeMismatchError();
|
|
726
161
|
}
|
|
727
162
|
return resolutionResult;
|
|
728
163
|
} catch (error) {
|
|
729
|
-
if (!(error instanceof OpenFeatureError)) {
|
|
730
|
-
throw new GeneralError((error == null ? void 0 : error.message) || "unknown error");
|
|
164
|
+
if (!(error instanceof import_core3.OpenFeatureError)) {
|
|
165
|
+
throw new import_core3.GeneralError((error == null ? void 0 : error.message) || "unknown error");
|
|
731
166
|
}
|
|
732
167
|
throw error;
|
|
733
168
|
}
|
|
@@ -738,11 +173,11 @@ var InMemoryProvider = class {
|
|
|
738
173
|
if (!(flagKey in this._flagConfiguration)) {
|
|
739
174
|
const message = `no flag found with key ${flagKey}`;
|
|
740
175
|
logger == null ? void 0 : logger.debug(message);
|
|
741
|
-
throw new FlagNotFoundError(message);
|
|
176
|
+
throw new import_core3.FlagNotFoundError(message);
|
|
742
177
|
}
|
|
743
178
|
const flagSpec = this._flagConfiguration[flagKey];
|
|
744
179
|
if (flagSpec.disabled) {
|
|
745
|
-
return { value: defaultValue, reason: StandardResolutionReasons.DISABLED };
|
|
180
|
+
return { value: defaultValue, reason: import_core3.StandardResolutionReasons.DISABLED };
|
|
746
181
|
}
|
|
747
182
|
const isContextEval = ctx && (flagSpec == null ? void 0 : flagSpec.contextEvaluator);
|
|
748
183
|
const variant = isContextEval ? (_a = flagSpec.contextEvaluator) == null ? void 0 : _a.call(flagSpec, ctx) : flagSpec.defaultVariant;
|
|
@@ -755,18 +190,32 @@ var InMemoryProvider = class {
|
|
|
755
190
|
return __spreadProps(__spreadValues({
|
|
756
191
|
value
|
|
757
192
|
}, variant && { variant }), {
|
|
758
|
-
reason: isContextEval ? StandardResolutionReasons.TARGETING_MATCH : StandardResolutionReasons.STATIC
|
|
193
|
+
reason: isContextEval ? import_core3.StandardResolutionReasons.TARGETING_MATCH : import_core3.StandardResolutionReasons.STATIC
|
|
759
194
|
});
|
|
760
195
|
}
|
|
761
196
|
};
|
|
762
197
|
|
|
198
|
+
// src/open-feature.ts
|
|
199
|
+
var import_core4 = require("@openfeature/core");
|
|
200
|
+
|
|
201
|
+
// src/transaction-context/no-op-transaction-context-propagator.ts
|
|
202
|
+
var NoopTransactionContextPropagator = class {
|
|
203
|
+
getTransactionContext() {
|
|
204
|
+
return {};
|
|
205
|
+
}
|
|
206
|
+
setTransactionContext(_, callback) {
|
|
207
|
+
callback();
|
|
208
|
+
}
|
|
209
|
+
};
|
|
210
|
+
var NOOP_TRANSACTION_CONTEXT_PROPAGATOR = new NoopTransactionContextPropagator();
|
|
211
|
+
|
|
763
212
|
// src/open-feature.ts
|
|
764
213
|
var GLOBAL_OPENFEATURE_API_KEY = Symbol.for("@openfeature/js-sdk/api");
|
|
765
214
|
var _globalThis = globalThis;
|
|
766
|
-
var OpenFeatureAPI = class extends OpenFeatureCommonAPI {
|
|
767
|
-
// eslint-disable-next-line @typescript-eslint/no-empty-function
|
|
215
|
+
var OpenFeatureAPI = class extends import_core4.OpenFeatureCommonAPI {
|
|
768
216
|
constructor() {
|
|
769
217
|
super("server");
|
|
218
|
+
this._transactionContextPropagator = NOOP_TRANSACTION_CONTEXT_PROPAGATOR;
|
|
770
219
|
this._defaultProvider = NOOP_PROVIDER;
|
|
771
220
|
}
|
|
772
221
|
/**
|
|
@@ -792,9 +241,9 @@ var OpenFeatureAPI = class extends OpenFeatureCommonAPI {
|
|
|
792
241
|
}
|
|
793
242
|
getClient(nameOrContext, versionOrContext, contextOrUndefined) {
|
|
794
243
|
var _a, _b;
|
|
795
|
-
const name = stringOrUndefined(nameOrContext);
|
|
796
|
-
const version = stringOrUndefined(versionOrContext);
|
|
797
|
-
const context = (_b = (_a = objectOrUndefined(nameOrContext)) != null ? _a : objectOrUndefined(versionOrContext)) != null ? _b : objectOrUndefined(contextOrUndefined);
|
|
244
|
+
const name = (0, import_core4.stringOrUndefined)(nameOrContext);
|
|
245
|
+
const version = (0, import_core4.stringOrUndefined)(versionOrContext);
|
|
246
|
+
const context = (_b = (_a = (0, import_core4.objectOrUndefined)(nameOrContext)) != null ? _a : (0, import_core4.objectOrUndefined)(versionOrContext)) != null ? _b : (0, import_core4.objectOrUndefined)(contextOrUndefined);
|
|
798
247
|
return new OpenFeatureClient(
|
|
799
248
|
() => this.getProviderForClient(name),
|
|
800
249
|
() => this.buildAndCacheEventEmitterForClient(name),
|
|
@@ -803,6 +252,37 @@ var OpenFeatureAPI = class extends OpenFeatureCommonAPI {
|
|
|
803
252
|
context
|
|
804
253
|
);
|
|
805
254
|
}
|
|
255
|
+
/**
|
|
256
|
+
* Clears all registered providers and resets the default provider.
|
|
257
|
+
* @returns {Promise<void>}
|
|
258
|
+
*/
|
|
259
|
+
clearProviders() {
|
|
260
|
+
return super.clearProvidersAndSetDefault(NOOP_PROVIDER);
|
|
261
|
+
}
|
|
262
|
+
setTransactionContextPropagator(transactionContextPropagator) {
|
|
263
|
+
const baseMessage = "Invalid TransactionContextPropagator, will not be set: ";
|
|
264
|
+
if (typeof (transactionContextPropagator == null ? void 0 : transactionContextPropagator.getTransactionContext) !== "function") {
|
|
265
|
+
this._logger.error(`${baseMessage}: getTransactionContext is not a function.`);
|
|
266
|
+
} else if (typeof (transactionContextPropagator == null ? void 0 : transactionContextPropagator.setTransactionContext) !== "function") {
|
|
267
|
+
this._logger.error(`${baseMessage}: setTransactionContext is not a function.`);
|
|
268
|
+
} else {
|
|
269
|
+
this._transactionContextPropagator = transactionContextPropagator;
|
|
270
|
+
}
|
|
271
|
+
return this;
|
|
272
|
+
}
|
|
273
|
+
setTransactionContext(transactionContext, callback, ...args) {
|
|
274
|
+
this._transactionContextPropagator.setTransactionContext(transactionContext, callback, ...args);
|
|
275
|
+
}
|
|
276
|
+
getTransactionContext() {
|
|
277
|
+
try {
|
|
278
|
+
return this._transactionContextPropagator.getTransactionContext();
|
|
279
|
+
} catch (err) {
|
|
280
|
+
const error = err;
|
|
281
|
+
this._logger.error(`Error getting transaction context: ${error == null ? void 0 : error.message}, returning empty context.`);
|
|
282
|
+
this._logger.error(error == null ? void 0 : error.stack);
|
|
283
|
+
return {};
|
|
284
|
+
}
|
|
285
|
+
}
|
|
806
286
|
};
|
|
807
287
|
var OpenFeature = OpenFeatureAPI.getInstance();
|
|
808
288
|
|
|
@@ -826,7 +306,7 @@ var OpenFeatureClient = class {
|
|
|
826
306
|
addHandler(eventType, handler) {
|
|
827
307
|
var _a;
|
|
828
308
|
this.emitterAccessor().addHandler(eventType, handler);
|
|
829
|
-
const shouldRunNow = statusMatchesEvent(eventType, this._provider.status);
|
|
309
|
+
const shouldRunNow = (0, import_core5.statusMatchesEvent)(eventType, this._provider.status);
|
|
830
310
|
if (shouldRunNow) {
|
|
831
311
|
try {
|
|
832
312
|
handler({ clientName: this.metadata.name, providerName: this._provider.metadata.name });
|
|
@@ -842,7 +322,7 @@ var OpenFeatureClient = class {
|
|
|
842
322
|
return this.emitterAccessor().getHandlers(eventType);
|
|
843
323
|
}
|
|
844
324
|
setLogger(logger) {
|
|
845
|
-
this._clientLogger = new SafeLogger(logger);
|
|
325
|
+
this._clientLogger = new import_core5.SafeLogger(logger);
|
|
846
326
|
return this;
|
|
847
327
|
}
|
|
848
328
|
setContext(context) {
|
|
@@ -949,13 +429,13 @@ var OpenFeatureClient = class {
|
|
|
949
429
|
return evaluationDetails;
|
|
950
430
|
} catch (err) {
|
|
951
431
|
const errorMessage = err == null ? void 0 : err.message;
|
|
952
|
-
const errorCode = (err == null ? void 0 : err.code) ||
|
|
432
|
+
const errorCode = (err == null ? void 0 : err.code) || import_core5.ErrorCode.GENERAL;
|
|
953
433
|
yield this.errorHooks(allHooksReversed, hookContext, err, options);
|
|
954
434
|
return {
|
|
955
435
|
errorCode,
|
|
956
436
|
errorMessage,
|
|
957
437
|
value: defaultValue,
|
|
958
|
-
reason: StandardResolutionReasons.ERROR,
|
|
438
|
+
reason: import_core5.StandardResolutionReasons.ERROR,
|
|
959
439
|
flagMetadata: Object.freeze({}),
|
|
960
440
|
flagKey
|
|
961
441
|
};
|
|
@@ -1021,35 +501,16 @@ var OpenFeatureClient = class {
|
|
|
1021
501
|
return this._clientLogger || this.globalLogger();
|
|
1022
502
|
}
|
|
1023
503
|
};
|
|
504
|
+
|
|
505
|
+
// src/index.ts
|
|
506
|
+
__reExport(src_exports, require("@openfeature/core"), module.exports);
|
|
1024
507
|
// Annotate the CommonJS export names for ESM import in node:
|
|
1025
508
|
0 && (module.exports = {
|
|
1026
|
-
DefaultLogger,
|
|
1027
|
-
ErrorCode,
|
|
1028
|
-
FlagNotFoundError,
|
|
1029
|
-
GeneralError,
|
|
1030
509
|
InMemoryProvider,
|
|
1031
|
-
InternalEventEmitter,
|
|
1032
|
-
InvalidContextError,
|
|
1033
|
-
LOG_LEVELS,
|
|
1034
510
|
NOOP_PROVIDER,
|
|
1035
511
|
NOOP_TRANSACTION_CONTEXT_PROPAGATOR,
|
|
1036
512
|
OpenFeature,
|
|
1037
513
|
OpenFeatureAPI,
|
|
1038
|
-
OpenFeatureClient
|
|
1039
|
-
OpenFeatureCommonAPI,
|
|
1040
|
-
OpenFeatureError,
|
|
1041
|
-
OpenFeatureEventEmitter,
|
|
1042
|
-
ParseError,
|
|
1043
|
-
ProviderEvents,
|
|
1044
|
-
ProviderStatus,
|
|
1045
|
-
SafeLogger,
|
|
1046
|
-
StandardResolutionReasons,
|
|
1047
|
-
TargetingKeyMissingError,
|
|
1048
|
-
TypeMismatchError,
|
|
1049
|
-
isObject,
|
|
1050
|
-
isString,
|
|
1051
|
-
objectOrUndefined,
|
|
1052
|
-
statusMatchesEvent,
|
|
1053
|
-
stringOrUndefined
|
|
514
|
+
OpenFeatureClient
|
|
1054
515
|
});
|
|
1055
516
|
//# sourceMappingURL=index.js.map
|