@openfeature/server-sdk 1.9.0 → 1.10.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 CHANGED
@@ -16,8 +16,8 @@
16
16
  <img alt="Specification" src="https://img.shields.io/static/v1?label=specification&message=v0.7.0&color=yellow&style=for-the-badge" />
17
17
  </a>
18
18
  <!-- x-release-please-start-version -->
19
- <a href="https://github.com/open-feature/js-sdk/releases/tag/server-sdk-v1.9.0">
20
- <img alt="Release" src="https://img.shields.io/static/v1?label=release&message=v1.9.0&color=blue&style=for-the-badge" />
19
+ <a href="https://github.com/open-feature/js-sdk/releases/tag/server-sdk-v1.10.0">
20
+ <img alt="Release" src="https://img.shields.io/static/v1?label=release&message=v1.10.0&color=blue&style=for-the-badge" />
21
21
  </a>
22
22
  <!-- x-release-please-end -->
23
23
  <br/>
package/dist/cjs/index.js CHANGED
@@ -1,27 +1,10 @@
1
1
  "use strict";
2
2
  var __create = Object.create;
3
3
  var __defProp = Object.defineProperty;
4
- var __defProps = Object.defineProperties;
5
4
  var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
6
- var __getOwnPropDescs = Object.getOwnPropertyDescriptors;
7
5
  var __getOwnPropNames = Object.getOwnPropertyNames;
8
- var __getOwnPropSymbols = Object.getOwnPropertySymbols;
9
6
  var __getProtoOf = Object.getPrototypeOf;
10
7
  var __hasOwnProp = Object.prototype.hasOwnProperty;
11
- var __propIsEnum = Object.prototype.propertyIsEnumerable;
12
- var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
13
- var __spreadValues = (a, b) => {
14
- for (var prop in b || (b = {}))
15
- if (__hasOwnProp.call(b, prop))
16
- __defNormalProp(a, prop, b[prop]);
17
- if (__getOwnPropSymbols)
18
- for (var prop of __getOwnPropSymbols(b)) {
19
- if (__propIsEnum.call(b, prop))
20
- __defNormalProp(a, prop, b[prop]);
21
- }
22
- return a;
23
- };
24
- var __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));
25
8
  var __export = (target, all) => {
26
9
  for (var name in all)
27
10
  __defProp(target, name, { get: all[name], enumerable: true });
@@ -44,26 +27,6 @@ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__ge
44
27
  mod
45
28
  ));
46
29
  var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
47
- var __async = (__this, __arguments, generator) => {
48
- return new Promise((resolve, reject) => {
49
- var fulfilled = (value) => {
50
- try {
51
- step(generator.next(value));
52
- } catch (e) {
53
- reject(e);
54
- }
55
- };
56
- var rejected = (value) => {
57
- try {
58
- step(generator.throw(value));
59
- } catch (e) {
60
- reject(e);
61
- }
62
- };
63
- var step = (x) => x.done ? resolve(x.value) : Promise.resolve(x.value).then(fulfilled, rejected);
64
- step((generator = generator.apply(__this, __arguments)).next());
65
- });
66
- };
67
30
 
68
31
  // src/index.ts
69
32
  var src_exports = {};
@@ -86,11 +49,9 @@ var import_core7 = require("@openfeature/core");
86
49
  var import_core = require("@openfeature/core");
87
50
  var REASON_NO_OP = "No-op";
88
51
  var NoopFeatureProvider = class {
89
- constructor() {
90
- this.metadata = {
91
- name: "No-op Provider"
92
- };
93
- }
52
+ metadata = {
53
+ name: "No-op Provider"
54
+ };
94
55
  get status() {
95
56
  return import_core.ProviderStatus.NOT_READY;
96
57
  }
@@ -121,6 +82,7 @@ var import_core3 = require("@openfeature/core");
121
82
  // src/provider/in-memory-provider/variant-not-found-error.ts
122
83
  var import_core2 = require("@openfeature/core");
123
84
  var VariantFoundError = class extends import_core2.OpenFeatureError {
85
+ code;
124
86
  constructor(message) {
125
87
  super(message);
126
88
  Object.setPrototypeOf(this, VariantFoundError.prototype);
@@ -131,13 +93,14 @@ var VariantFoundError = class extends import_core2.OpenFeatureError {
131
93
 
132
94
  // src/provider/in-memory-provider/in-memory-provider.ts
133
95
  var InMemoryProvider = class {
96
+ events = new OpenFeatureEventEmitter();
97
+ runsOn = "server";
98
+ metadata = {
99
+ name: "in-memory"
100
+ };
101
+ _flagConfiguration;
134
102
  constructor(flagConfiguration = {}) {
135
- this.events = new OpenFeatureEventEmitter();
136
- this.runsOn = "server";
137
- this.metadata = {
138
- name: "in-memory"
139
- };
140
- this._flagConfiguration = __spreadValues({}, flagConfiguration);
103
+ this._flagConfiguration = { ...flagConfiguration };
141
104
  }
142
105
  /**
143
106
  * Overwrites the configured flags.
@@ -145,7 +108,7 @@ var InMemoryProvider = class {
145
108
  */
146
109
  putConfiguration(flagConfiguration) {
147
110
  const flagsChanged = Object.entries(flagConfiguration).filter(([key, value]) => this._flagConfiguration[key] !== value).map(([key]) => key);
148
- this._flagConfiguration = __spreadValues({}, flagConfiguration);
111
+ this._flagConfiguration = { ...flagConfiguration };
149
112
  this.events.emit(import_core5.ServerProviderEvents.ConfigurationChanged, { flagsChanged });
150
113
  }
151
114
  resolveBooleanEvaluation(flagKey, defaultValue, context, logger) {
@@ -154,56 +117,49 @@ var InMemoryProvider = class {
154
117
  resolveNumberEvaluation(flagKey, defaultValue, context, logger) {
155
118
  return this.resolveFlagWithReason(flagKey, defaultValue, context, logger);
156
119
  }
157
- resolveStringEvaluation(flagKey, defaultValue, context, logger) {
158
- return __async(this, null, function* () {
159
- return this.resolveFlagWithReason(flagKey, defaultValue, context, logger);
160
- });
120
+ async resolveStringEvaluation(flagKey, defaultValue, context, logger) {
121
+ return this.resolveFlagWithReason(flagKey, defaultValue, context, logger);
161
122
  }
162
- resolveObjectEvaluation(flagKey, defaultValue, context, logger) {
163
- return __async(this, null, function* () {
164
- return this.resolveFlagWithReason(flagKey, defaultValue, context, logger);
165
- });
123
+ async resolveObjectEvaluation(flagKey, defaultValue, context, logger) {
124
+ return this.resolveFlagWithReason(flagKey, defaultValue, context, logger);
166
125
  }
167
- resolveFlagWithReason(flagKey, defaultValue, ctx, logger) {
168
- return __async(this, null, function* () {
169
- try {
170
- const resolutionResult = this.lookupFlagValue(flagKey, defaultValue, ctx, logger);
171
- if (typeof (resolutionResult == null ? void 0 : resolutionResult.value) != typeof defaultValue) {
172
- throw new import_core3.TypeMismatchError();
173
- }
174
- return resolutionResult;
175
- } catch (error) {
176
- if (!(error instanceof import_core3.OpenFeatureError)) {
177
- throw new import_core3.GeneralError((error == null ? void 0 : error.message) || "unknown error");
178
- }
179
- throw error;
126
+ async resolveFlagWithReason(flagKey, defaultValue, ctx, logger) {
127
+ try {
128
+ const resolutionResult = this.lookupFlagValue(flagKey, defaultValue, ctx, logger);
129
+ if (typeof resolutionResult?.value != typeof defaultValue) {
130
+ throw new import_core3.TypeMismatchError();
180
131
  }
181
- });
132
+ return resolutionResult;
133
+ } catch (error) {
134
+ if (!(error instanceof import_core3.OpenFeatureError)) {
135
+ throw new import_core3.GeneralError(error?.message || "unknown error");
136
+ }
137
+ throw error;
138
+ }
182
139
  }
183
140
  lookupFlagValue(flagKey, defaultValue, ctx, logger) {
184
- var _a;
185
141
  if (!(flagKey in this._flagConfiguration)) {
186
142
  const message = `no flag found with key ${flagKey}`;
187
- logger == null ? void 0 : logger.debug(message);
143
+ logger?.debug(message);
188
144
  throw new import_core3.FlagNotFoundError(message);
189
145
  }
190
146
  const flagSpec = this._flagConfiguration[flagKey];
191
147
  if (flagSpec.disabled) {
192
148
  return { value: defaultValue, reason: import_core3.StandardResolutionReasons.DISABLED };
193
149
  }
194
- const isContextEval = ctx && (flagSpec == null ? void 0 : flagSpec.contextEvaluator);
195
- const variant = isContextEval ? (_a = flagSpec.contextEvaluator) == null ? void 0 : _a.call(flagSpec, ctx) : flagSpec.defaultVariant;
196
- const value = variant && (flagSpec == null ? void 0 : flagSpec.variants[variant]);
150
+ const isContextEval = ctx && flagSpec?.contextEvaluator;
151
+ const variant = isContextEval ? flagSpec.contextEvaluator?.(ctx) : flagSpec.defaultVariant;
152
+ const value = variant && flagSpec?.variants[variant];
197
153
  if (value === void 0) {
198
154
  const message = `no value associated with variant ${variant}`;
199
- logger == null ? void 0 : logger.error(message);
155
+ logger?.error(message);
200
156
  throw new VariantFoundError(message);
201
157
  }
202
- return __spreadProps(__spreadValues({
203
- value
204
- }, variant && { variant }), {
158
+ return {
159
+ value,
160
+ ...variant && { variant },
205
161
  reason: isContextEval ? import_core3.StandardResolutionReasons.TARGETING_MATCH : import_core3.StandardResolutionReasons.STATIC
206
- });
162
+ };
207
163
  }
208
164
  };
209
165
 
@@ -225,12 +181,11 @@ var NOOP_TRANSACTION_CONTEXT_PROPAGATOR = new NoopTransactionContextPropagator()
225
181
  var import_core4 = require("@openfeature/core");
226
182
  var import_events = __toESM(require("events"));
227
183
  var OpenFeatureEventEmitter = class extends import_core4.GenericEventEmitter {
184
+ eventEmitter = new import_events.default({ captureRejections: true });
228
185
  constructor() {
229
186
  super();
230
- this.eventEmitter = new import_events.default({ captureRejections: true });
231
187
  this.eventEmitter.on("error", (err) => {
232
- var _a;
233
- (_a = this._logger) == null ? void 0 : _a.error("Error running event handler:", err);
188
+ this._logger?.error("Error running event handler:", err);
234
189
  });
235
190
  }
236
191
  };
@@ -242,12 +197,12 @@ var import_core5 = require("@openfeature/core");
242
197
  var GLOBAL_OPENFEATURE_API_KEY = Symbol.for("@openfeature/js-sdk/api");
243
198
  var _globalThis = globalThis;
244
199
  var OpenFeatureAPI = class extends import_core6.OpenFeatureCommonAPI {
200
+ _events = new OpenFeatureEventEmitter();
201
+ _defaultProvider = NOOP_PROVIDER;
202
+ _createEventEmitter = () => new OpenFeatureEventEmitter();
203
+ _transactionContextPropagator = NOOP_TRANSACTION_CONTEXT_PROPAGATOR;
245
204
  constructor() {
246
205
  super("server");
247
- this._events = new OpenFeatureEventEmitter();
248
- this._defaultProvider = NOOP_PROVIDER;
249
- this._createEventEmitter = () => new OpenFeatureEventEmitter();
250
- this._transactionContextPropagator = NOOP_TRANSACTION_CONTEXT_PROPAGATOR;
251
206
  }
252
207
  /**
253
208
  * Gets a singleton instance of the OpenFeature API.
@@ -271,10 +226,9 @@ var OpenFeatureAPI = class extends import_core6.OpenFeatureCommonAPI {
271
226
  return this._context;
272
227
  }
273
228
  getClient(nameOrContext, versionOrContext, contextOrUndefined) {
274
- var _a, _b;
275
229
  const name = (0, import_core6.stringOrUndefined)(nameOrContext);
276
230
  const version = (0, import_core6.stringOrUndefined)(versionOrContext);
277
- const context = (_b = (_a = (0, import_core6.objectOrUndefined)(nameOrContext)) != null ? _a : (0, import_core6.objectOrUndefined)(versionOrContext)) != null ? _b : (0, import_core6.objectOrUndefined)(contextOrUndefined);
231
+ const context = (0, import_core6.objectOrUndefined)(nameOrContext) ?? (0, import_core6.objectOrUndefined)(versionOrContext) ?? (0, import_core6.objectOrUndefined)(contextOrUndefined);
278
232
  return new OpenFeatureClient(
279
233
  () => this.getProviderForClient(name),
280
234
  () => this.buildAndCacheEventEmitterForClient(name),
@@ -292,9 +246,9 @@ var OpenFeatureAPI = class extends import_core6.OpenFeatureCommonAPI {
292
246
  }
293
247
  setTransactionContextPropagator(transactionContextPropagator) {
294
248
  const baseMessage = "Invalid TransactionContextPropagator, will not be set: ";
295
- if (typeof (transactionContextPropagator == null ? void 0 : transactionContextPropagator.getTransactionContext) !== "function") {
249
+ if (typeof transactionContextPropagator?.getTransactionContext !== "function") {
296
250
  this._logger.error(`${baseMessage}: getTransactionContext is not a function.`);
297
- } else if (typeof (transactionContextPropagator == null ? void 0 : transactionContextPropagator.setTransactionContext) !== "function") {
251
+ } else if (typeof transactionContextPropagator?.setTransactionContext !== "function") {
298
252
  this._logger.error(`${baseMessage}: setTransactionContext is not a function.`);
299
253
  } else {
300
254
  this._transactionContextPropagator = transactionContextPropagator;
@@ -309,8 +263,8 @@ var OpenFeatureAPI = class extends import_core6.OpenFeatureCommonAPI {
309
263
  return this._transactionContextPropagator.getTransactionContext();
310
264
  } catch (err) {
311
265
  const error = err;
312
- this._logger.error(`Error getting transaction context: ${error == null ? void 0 : error.message}, returning empty context.`);
313
- this._logger.error(error == null ? void 0 : error.stack);
266
+ this._logger.error(`Error getting transaction context: ${error?.message}, returning empty context.`);
267
+ this._logger.error(error?.stack);
314
268
  return {};
315
269
  }
316
270
  }
@@ -324,9 +278,11 @@ var OpenFeatureClient = class {
324
278
  this.emitterAccessor = emitterAccessor;
325
279
  this.globalLogger = globalLogger;
326
280
  this.options = options;
327
- this._hooks = [];
328
281
  this._context = context;
329
282
  }
283
+ _context;
284
+ _hooks = [];
285
+ _clientLogger;
330
286
  get metadata() {
331
287
  return {
332
288
  name: this.options.name,
@@ -335,14 +291,13 @@ var OpenFeatureClient = class {
335
291
  };
336
292
  }
337
293
  addHandler(eventType, handler) {
338
- var _a;
339
294
  this.emitterAccessor().addHandler(eventType, handler);
340
295
  const shouldRunNow = (0, import_core7.statusMatchesEvent)(eventType, this._provider.status);
341
296
  if (shouldRunNow) {
342
297
  try {
343
298
  handler({ clientName: this.metadata.name, providerName: this._provider.metadata.name });
344
299
  } catch (err) {
345
- (_a = this._logger) == null ? void 0 : _a.error("Error running event handler:", err);
300
+ this._logger?.error("Error running event handler:", err);
346
301
  }
347
302
  }
348
303
  }
@@ -374,10 +329,8 @@ var OpenFeatureClient = class {
374
329
  this._hooks = [];
375
330
  return this;
376
331
  }
377
- getBooleanValue(flagKey, defaultValue, context, options) {
378
- return __async(this, null, function* () {
379
- return (yield this.getBooleanDetails(flagKey, defaultValue, context, options)).value;
380
- });
332
+ async getBooleanValue(flagKey, defaultValue, context, options) {
333
+ return (await this.getBooleanDetails(flagKey, defaultValue, context, options)).value;
381
334
  }
382
335
  getBooleanDetails(flagKey, defaultValue, context, options) {
383
336
  return this.evaluate(
@@ -389,10 +342,8 @@ var OpenFeatureClient = class {
389
342
  options
390
343
  );
391
344
  }
392
- getStringValue(flagKey, defaultValue, context, options) {
393
- return __async(this, null, function* () {
394
- return (yield this.getStringDetails(flagKey, defaultValue, context, options)).value;
395
- });
345
+ async getStringValue(flagKey, defaultValue, context, options) {
346
+ return (await this.getStringDetails(flagKey, defaultValue, context, options)).value;
396
347
  }
397
348
  getStringDetails(flagKey, defaultValue, context, options) {
398
349
  return this.evaluate(
@@ -405,10 +356,8 @@ var OpenFeatureClient = class {
405
356
  options
406
357
  );
407
358
  }
408
- getNumberValue(flagKey, defaultValue, context, options) {
409
- return __async(this, null, function* () {
410
- return (yield this.getNumberDetails(flagKey, defaultValue, context, options)).value;
411
- });
359
+ async getNumberValue(flagKey, defaultValue, context, options) {
360
+ return (await this.getNumberDetails(flagKey, defaultValue, context, options)).value;
412
361
  }
413
362
  getNumberDetails(flagKey, defaultValue, context, options) {
414
363
  return this.evaluate(
@@ -421,109 +370,101 @@ var OpenFeatureClient = class {
421
370
  options
422
371
  );
423
372
  }
424
- getObjectValue(flagKey, defaultValue, context, options) {
425
- return __async(this, null, function* () {
426
- return (yield this.getObjectDetails(flagKey, defaultValue, context, options)).value;
427
- });
373
+ async getObjectValue(flagKey, defaultValue, context, options) {
374
+ return (await this.getObjectDetails(flagKey, defaultValue, context, options)).value;
428
375
  }
429
376
  getObjectDetails(flagKey, defaultValue, context, options) {
430
377
  return this.evaluate(flagKey, this._provider.resolveObjectEvaluation, defaultValue, "object", context, options);
431
378
  }
432
- evaluate(_0, _1, _2, _3) {
433
- return __async(this, arguments, function* (flagKey, resolver, defaultValue, flagType, invocationContext = {}, options = {}) {
434
- var _a;
435
- const allHooks = [
436
- ...OpenFeature.getHooks(),
437
- ...this.getHooks(),
438
- ...options.hooks || [],
439
- ...this._provider.hooks || []
440
- ];
441
- const allHooksReversed = [...allHooks].reverse();
442
- const mergedContext = __spreadValues(__spreadValues(__spreadValues(__spreadValues({}, OpenFeature.getContext()), OpenFeature.getTransactionContext()), this._context), invocationContext);
443
- const hookContext = {
444
- flagKey,
445
- defaultValue,
446
- flagValueType: flagType,
447
- clientMetadata: this.metadata,
448
- providerMetadata: OpenFeature.providerMetadata,
449
- context: mergedContext,
450
- logger: this._logger
379
+ async evaluate(flagKey, resolver, defaultValue, flagType, invocationContext = {}, options = {}) {
380
+ const allHooks = [
381
+ ...OpenFeature.getHooks(),
382
+ ...this.getHooks(),
383
+ ...options.hooks || [],
384
+ ...this._provider.hooks || []
385
+ ];
386
+ const allHooksReversed = [...allHooks].reverse();
387
+ const mergedContext = {
388
+ ...OpenFeature.getContext(),
389
+ ...OpenFeature.getTransactionContext(),
390
+ ...this._context,
391
+ ...invocationContext
392
+ };
393
+ const hookContext = {
394
+ flagKey,
395
+ defaultValue,
396
+ flagValueType: flagType,
397
+ clientMetadata: this.metadata,
398
+ providerMetadata: OpenFeature.providerMetadata,
399
+ context: mergedContext,
400
+ logger: this._logger
401
+ };
402
+ try {
403
+ const frozenContext = await this.beforeHooks(allHooks, hookContext, options);
404
+ const resolution = await resolver.call(this._provider, flagKey, defaultValue, frozenContext, this._logger);
405
+ const evaluationDetails = {
406
+ ...resolution,
407
+ flagMetadata: Object.freeze(resolution.flagMetadata ?? {}),
408
+ flagKey
451
409
  };
452
- try {
453
- const frozenContext = yield this.beforeHooks(allHooks, hookContext, options);
454
- const resolution = yield resolver.call(this._provider, flagKey, defaultValue, frozenContext, this._logger);
455
- const evaluationDetails = __spreadProps(__spreadValues({}, resolution), {
456
- flagMetadata: Object.freeze((_a = resolution.flagMetadata) != null ? _a : {}),
457
- flagKey
458
- });
459
- yield this.afterHooks(allHooksReversed, hookContext, evaluationDetails, options);
460
- return evaluationDetails;
461
- } catch (err) {
462
- const errorMessage = err == null ? void 0 : err.message;
463
- const errorCode = (err == null ? void 0 : err.code) || import_core7.ErrorCode.GENERAL;
464
- yield this.errorHooks(allHooksReversed, hookContext, err, options);
465
- return {
466
- errorCode,
467
- errorMessage,
468
- value: defaultValue,
469
- reason: import_core7.StandardResolutionReasons.ERROR,
470
- flagMetadata: Object.freeze({}),
471
- flagKey
472
- };
473
- } finally {
474
- yield this.finallyHooks(allHooksReversed, hookContext, options);
475
- }
476
- });
410
+ await this.afterHooks(allHooksReversed, hookContext, evaluationDetails, options);
411
+ return evaluationDetails;
412
+ } catch (err) {
413
+ const errorMessage = err?.message;
414
+ const errorCode = err?.code || import_core7.ErrorCode.GENERAL;
415
+ await this.errorHooks(allHooksReversed, hookContext, err, options);
416
+ return {
417
+ errorCode,
418
+ errorMessage,
419
+ value: defaultValue,
420
+ reason: import_core7.StandardResolutionReasons.ERROR,
421
+ flagMetadata: Object.freeze({}),
422
+ flagKey
423
+ };
424
+ } finally {
425
+ await this.finallyHooks(allHooksReversed, hookContext, options);
426
+ }
477
427
  }
478
- beforeHooks(hooks, hookContext, options) {
479
- return __async(this, null, function* () {
480
- var _a;
481
- for (const hook of hooks) {
482
- Object.freeze(hookContext);
483
- Object.assign(hookContext.context, __spreadValues(__spreadValues({}, hookContext.context), yield (_a = hook == null ? void 0 : hook.before) == null ? void 0 : _a.call(hook, hookContext, Object.freeze(options.hookHints))));
484
- }
485
- return Object.freeze(hookContext.context);
486
- });
428
+ async beforeHooks(hooks, hookContext, options) {
429
+ for (const hook of hooks) {
430
+ Object.freeze(hookContext);
431
+ Object.assign(hookContext.context, {
432
+ ...hookContext.context,
433
+ ...await hook?.before?.(hookContext, Object.freeze(options.hookHints))
434
+ });
435
+ }
436
+ return Object.freeze(hookContext.context);
487
437
  }
488
- afterHooks(hooks, hookContext, evaluationDetails, options) {
489
- return __async(this, null, function* () {
490
- var _a;
491
- for (const hook of hooks) {
492
- yield (_a = hook == null ? void 0 : hook.after) == null ? void 0 : _a.call(hook, hookContext, evaluationDetails, options.hookHints);
493
- }
494
- });
438
+ async afterHooks(hooks, hookContext, evaluationDetails, options) {
439
+ for (const hook of hooks) {
440
+ await hook?.after?.(hookContext, evaluationDetails, options.hookHints);
441
+ }
495
442
  }
496
- errorHooks(hooks, hookContext, err, options) {
497
- return __async(this, null, function* () {
498
- var _a;
499
- for (const hook of hooks) {
500
- try {
501
- yield (_a = hook == null ? void 0 : hook.error) == null ? void 0 : _a.call(hook, hookContext, err, options.hookHints);
502
- } catch (err2) {
503
- this._logger.error(`Unhandled error during 'error' hook: ${err2}`);
504
- if (err2 instanceof Error) {
505
- this._logger.error(err2.stack);
506
- }
507
- this._logger.error(err2 == null ? void 0 : err2.stack);
443
+ async errorHooks(hooks, hookContext, err, options) {
444
+ for (const hook of hooks) {
445
+ try {
446
+ await hook?.error?.(hookContext, err, options.hookHints);
447
+ } catch (err2) {
448
+ this._logger.error(`Unhandled error during 'error' hook: ${err2}`);
449
+ if (err2 instanceof Error) {
450
+ this._logger.error(err2.stack);
508
451
  }
452
+ this._logger.error(err2?.stack);
509
453
  }
510
- });
454
+ }
511
455
  }
512
- finallyHooks(hooks, hookContext, options) {
513
- return __async(this, null, function* () {
514
- var _a;
515
- for (const hook of hooks) {
516
- try {
517
- yield (_a = hook == null ? void 0 : hook.finally) == null ? void 0 : _a.call(hook, hookContext, options.hookHints);
518
- } catch (err) {
519
- this._logger.error(`Unhandled error during 'finally' hook: ${err}`);
520
- if (err instanceof Error) {
521
- this._logger.error(err.stack);
522
- }
523
- this._logger.error(err == null ? void 0 : err.stack);
456
+ async finallyHooks(hooks, hookContext, options) {
457
+ for (const hook of hooks) {
458
+ try {
459
+ await hook?.finally?.(hookContext, options.hookHints);
460
+ } catch (err) {
461
+ this._logger.error(`Unhandled error during 'finally' hook: ${err}`);
462
+ if (err instanceof Error) {
463
+ this._logger.error(err.stack);
524
464
  }
465
+ this._logger.error(err?.stack);
525
466
  }
526
- });
467
+ }
527
468
  }
528
469
  get _provider() {
529
470
  return this.providerAccessor();
@@ -2,6 +2,6 @@
2
2
  "version": 3,
3
3
  "sources": ["../../src/index.ts", "../../src/client/open-feature-client.ts", "../../src/provider/no-op-provider.ts", "../../src/provider/in-memory-provider/in-memory-provider.ts", "../../src/provider/in-memory-provider/variant-not-found-error.ts", "../../src/open-feature.ts", "../../src/transaction-context/no-op-transaction-context-propagator.ts", "../../src/events/open-feature-event-emitter.ts", "../../src/events/events.ts"],
4
4
  "sourcesContent": ["export * from './client';\nexport * from './provider';\nexport * from './evaluation';\nexport * from './open-feature';\nexport * from './transaction-context';\nexport * from './events';\nexport * from './hooks';\nexport * from '@openfeature/core';\n", "import {\n ClientMetadata,\n ErrorCode,\n EvaluationContext,\n EvaluationDetails,\n EventHandler,\n FlagValue,\n FlagValueType,\n HookContext,\n JsonValue,\n Logger,\n ManageContext,\n OpenFeatureError,\n ResolutionDetails,\n SafeLogger,\n StandardResolutionReasons,\n statusMatchesEvent,\n} from '@openfeature/core';\nimport { FlagEvaluationOptions } from '../evaluation';\nimport { ProviderEvents } from '../events';\nimport { InternalEventEmitter } from '../events/internal/internal-event-emitter';\nimport { Hook } from '../hooks';\nimport { OpenFeature } from '../open-feature';\nimport { Provider } from '../provider';\nimport { Client } from './client';\n\ntype OpenFeatureClientOptions = {\n name?: string;\n version?: string;\n};\n\nexport class OpenFeatureClient implements Client, ManageContext<OpenFeatureClient> {\n private _context: EvaluationContext;\n private _hooks: Hook[] = [];\n private _clientLogger?: Logger;\n\n constructor(\n // we always want the client to use the current provider,\n // so pass a function to always access the currently registered one.\n private readonly providerAccessor: () => Provider,\n private readonly emitterAccessor: () => InternalEventEmitter,\n private readonly globalLogger: () => Logger,\n private readonly options: OpenFeatureClientOptions,\n context: EvaluationContext = {},\n ) {\n this._context = context;\n }\n\n get metadata(): ClientMetadata {\n return {\n name: this.options.name,\n version: this.options.version,\n providerMetadata: this.providerAccessor().metadata,\n };\n }\n\n addHandler(eventType: ProviderEvents, handler: EventHandler): void {\n this.emitterAccessor().addHandler(eventType, handler);\n const shouldRunNow = statusMatchesEvent(eventType, this._provider.status);\n\n if (shouldRunNow) {\n // run immediately, we're in the matching state\n try {\n handler({ clientName: this.metadata.name, providerName: this._provider.metadata.name });\n } catch (err) {\n this._logger?.error('Error running event handler:', err);\n }\n }\n }\n\n removeHandler(eventType: ProviderEvents, handler: EventHandler) {\n this.emitterAccessor().removeHandler(eventType, handler);\n }\n\n getHandlers(eventType: ProviderEvents) {\n return this.emitterAccessor().getHandlers(eventType);\n }\n\n setLogger(logger: Logger): OpenFeatureClient {\n this._clientLogger = new SafeLogger(logger);\n return this;\n }\n\n setContext(context: EvaluationContext): OpenFeatureClient {\n this._context = context;\n return this;\n }\n\n getContext(): EvaluationContext {\n return this._context;\n }\n\n addHooks(...hooks: Hook[]): OpenFeatureClient {\n this._hooks = [...this._hooks, ...hooks];\n return this;\n }\n\n getHooks(): Hook[] {\n return this._hooks;\n }\n\n clearHooks(): OpenFeatureClient {\n this._hooks = [];\n return this;\n }\n\n async getBooleanValue(\n flagKey: string,\n defaultValue: boolean,\n context?: EvaluationContext,\n options?: FlagEvaluationOptions,\n ): Promise<boolean> {\n return (await this.getBooleanDetails(flagKey, defaultValue, context, options)).value;\n }\n\n getBooleanDetails(\n flagKey: string,\n defaultValue: boolean,\n context?: EvaluationContext,\n options?: FlagEvaluationOptions,\n ): Promise<EvaluationDetails<boolean>> {\n return this.evaluate<boolean>(\n flagKey,\n this._provider.resolveBooleanEvaluation,\n defaultValue,\n 'boolean',\n context,\n options,\n );\n }\n\n async getStringValue<T extends string = string>(\n flagKey: string,\n defaultValue: T,\n context?: EvaluationContext,\n options?: FlagEvaluationOptions,\n ): Promise<T> {\n return (await this.getStringDetails<T>(flagKey, defaultValue, context, options)).value;\n }\n\n getStringDetails<T extends string = string>(\n flagKey: string,\n defaultValue: T,\n context?: EvaluationContext,\n options?: FlagEvaluationOptions,\n ): Promise<EvaluationDetails<T>> {\n return this.evaluate<T>(\n flagKey,\n // this isolates providers from our restricted string generic argument.\n this._provider.resolveStringEvaluation as () => Promise<EvaluationDetails<T>>,\n defaultValue,\n 'string',\n context,\n options,\n );\n }\n\n async getNumberValue<T extends number = number>(\n flagKey: string,\n defaultValue: T,\n context?: EvaluationContext,\n options?: FlagEvaluationOptions,\n ): Promise<T> {\n return (await this.getNumberDetails(flagKey, defaultValue, context, options)).value;\n }\n\n getNumberDetails<T extends number = number>(\n flagKey: string,\n defaultValue: T,\n context?: EvaluationContext,\n options?: FlagEvaluationOptions,\n ): Promise<EvaluationDetails<T>> {\n return this.evaluate<T>(\n flagKey,\n // this isolates providers from our restricted number generic argument.\n this._provider.resolveNumberEvaluation as () => Promise<EvaluationDetails<T>>,\n defaultValue,\n 'number',\n context,\n options,\n );\n }\n\n async getObjectValue<T extends JsonValue = JsonValue>(\n flagKey: string,\n defaultValue: T,\n context?: EvaluationContext,\n options?: FlagEvaluationOptions,\n ): Promise<T> {\n return (await this.getObjectDetails(flagKey, defaultValue, context, options)).value;\n }\n\n getObjectDetails<T extends JsonValue = JsonValue>(\n flagKey: string,\n defaultValue: T,\n context?: EvaluationContext,\n options?: FlagEvaluationOptions,\n ): Promise<EvaluationDetails<T>> {\n return this.evaluate<T>(flagKey, this._provider.resolveObjectEvaluation, defaultValue, 'object', context, options);\n }\n\n private async evaluate<T extends FlagValue>(\n flagKey: string,\n resolver: (\n flagKey: string,\n defaultValue: T,\n context: EvaluationContext,\n logger: Logger,\n ) => Promise<ResolutionDetails<T>>,\n defaultValue: T,\n flagType: FlagValueType,\n invocationContext: EvaluationContext = {},\n options: FlagEvaluationOptions = {},\n ): Promise<EvaluationDetails<T>> {\n // merge global, client, and evaluation context\n\n const allHooks = [\n ...OpenFeature.getHooks(),\n ...this.getHooks(),\n ...(options.hooks || []),\n ...(this._provider.hooks || []),\n ];\n const allHooksReversed = [...allHooks].reverse();\n\n // merge global and client contexts\n const mergedContext = {\n ...OpenFeature.getContext(),\n ...OpenFeature.getTransactionContext(),\n ...this._context,\n ...invocationContext,\n };\n\n // this reference cannot change during the course of evaluation\n // it may be used as a key in WeakMaps\n const hookContext: Readonly<HookContext> = {\n flagKey,\n defaultValue,\n flagValueType: flagType,\n clientMetadata: this.metadata,\n providerMetadata: OpenFeature.providerMetadata,\n context: mergedContext,\n logger: this._logger,\n };\n\n try {\n const frozenContext = await this.beforeHooks(allHooks, hookContext, options);\n\n // run the referenced resolver, binding the provider.\n const resolution = await resolver.call(this._provider, flagKey, defaultValue, frozenContext, this._logger);\n\n const evaluationDetails = {\n ...resolution,\n flagMetadata: Object.freeze(resolution.flagMetadata ?? {}),\n flagKey,\n };\n\n await this.afterHooks(allHooksReversed, hookContext, evaluationDetails, options);\n\n return evaluationDetails;\n } catch (err: unknown) {\n const errorMessage: string = (err as Error)?.message;\n const errorCode: ErrorCode = (err as OpenFeatureError)?.code || ErrorCode.GENERAL;\n\n await this.errorHooks(allHooksReversed, hookContext, err, options);\n\n return {\n errorCode,\n errorMessage,\n value: defaultValue,\n reason: StandardResolutionReasons.ERROR,\n flagMetadata: Object.freeze({}),\n flagKey,\n };\n } finally {\n await this.finallyHooks(allHooksReversed, hookContext, options);\n }\n }\n\n private async beforeHooks(hooks: Hook[], hookContext: HookContext, options: FlagEvaluationOptions) {\n for (const hook of hooks) {\n // freeze the hookContext\n Object.freeze(hookContext);\n\n // use Object.assign to avoid modification of frozen hookContext\n Object.assign(hookContext.context, {\n ...hookContext.context,\n ...(await hook?.before?.(hookContext, Object.freeze(options.hookHints))),\n });\n }\n\n // after before hooks, freeze the EvaluationContext.\n return Object.freeze(hookContext.context);\n }\n\n private async afterHooks(\n hooks: Hook[],\n hookContext: HookContext,\n evaluationDetails: EvaluationDetails<FlagValue>,\n options: FlagEvaluationOptions,\n ) {\n // run \"after\" hooks sequentially\n for (const hook of hooks) {\n await hook?.after?.(hookContext, evaluationDetails, options.hookHints);\n }\n }\n\n private async errorHooks(hooks: Hook[], hookContext: HookContext, err: unknown, options: FlagEvaluationOptions) {\n // run \"error\" hooks sequentially\n for (const hook of hooks) {\n try {\n await hook?.error?.(hookContext, err, options.hookHints);\n } catch (err) {\n this._logger.error(`Unhandled error during 'error' hook: ${err}`);\n if (err instanceof Error) {\n this._logger.error(err.stack);\n }\n this._logger.error((err as Error)?.stack);\n }\n }\n }\n\n private async finallyHooks(hooks: Hook[], hookContext: HookContext, options: FlagEvaluationOptions) {\n // run \"finally\" hooks sequentially\n for (const hook of hooks) {\n try {\n await hook?.finally?.(hookContext, options.hookHints);\n } catch (err) {\n this._logger.error(`Unhandled error during 'finally' hook: ${err}`);\n if (err instanceof Error) {\n this._logger.error(err.stack);\n }\n this._logger.error((err as Error)?.stack);\n }\n }\n }\n\n private get _provider(): Provider {\n return this.providerAccessor();\n }\n\n private get _logger() {\n return this._clientLogger || this.globalLogger();\n }\n}\n", "import { ResolutionDetails, JsonValue, ProviderStatus } from '@openfeature/core';\nimport { Provider } from './provider';\n\nconst REASON_NO_OP = 'No-op';\n\n/**\n * The No-op provider is set by default, and simply always returns the default value.\n */\nclass NoopFeatureProvider implements Provider {\n readonly metadata = {\n name: 'No-op Provider',\n } as const;\n\n get status(): ProviderStatus {\n /**\n * This is due to the NoopProvider not being a real provider.\n * We do not want it to trigger the Ready event handlers, so we never set this to ready.\n * With the NoopProvider assigned, the client can be assumed to be uninitialized.\n * https://github.com/open-feature/js-sdk/pull/429#discussion_r1202642654\n */\n return ProviderStatus.NOT_READY;\n }\n\n resolveBooleanEvaluation(_: string, defaultValue: boolean): Promise<ResolutionDetails<boolean>> {\n return this.noOp(defaultValue);\n }\n\n resolveStringEvaluation(_: string, defaultValue: string): Promise<ResolutionDetails<string>> {\n return this.noOp(defaultValue);\n }\n\n resolveNumberEvaluation(_: string, defaultValue: number): Promise<ResolutionDetails<number>> {\n return this.noOp(defaultValue);\n }\n\n resolveObjectEvaluation<T extends JsonValue>(_: string, defaultValue: T): Promise<ResolutionDetails<T>> {\n return this.noOp<T>(defaultValue);\n }\n\n private noOp<T>(defaultValue: T) {\n return Promise.resolve({\n value: defaultValue,\n reason: REASON_NO_OP,\n });\n }\n}\n\nexport const NOOP_PROVIDER = new NoopFeatureProvider();\n", "import {\n EvaluationContext,\n FlagNotFoundError,\n FlagValueType,\n GeneralError,\n JsonValue,\n Logger,\n OpenFeatureError,\n ResolutionDetails,\n StandardResolutionReasons,\n TypeMismatchError\n} from '@openfeature/core';\nimport { Provider } from '../provider';\nimport { Flag, FlagConfiguration } from './flag-configuration';\nimport { VariantFoundError } from './variant-not-found-error';\nimport { OpenFeatureEventEmitter, ProviderEvents } from '../..';\n\n/**\n * A simple OpenFeature provider intended for demos and as a test stub.\n */\nexport class InMemoryProvider implements Provider {\n public readonly events = new OpenFeatureEventEmitter();\n public readonly runsOn = 'server';\n readonly metadata = {\n name: 'in-memory',\n } as const;\n private _flagConfiguration: FlagConfiguration;\n\n constructor(flagConfiguration: FlagConfiguration = {}) {\n this._flagConfiguration = { ...flagConfiguration };\n }\n\n /**\n * Overwrites the configured flags.\n * @param { FlagConfiguration } flagConfiguration new flag configuration\n */\n putConfiguration(flagConfiguration: FlagConfiguration) {\n const flagsChanged = Object.entries(flagConfiguration)\n .filter(([key, value]) => this._flagConfiguration[key] !== value)\n .map(([key]) => key);\n\n this._flagConfiguration = { ...flagConfiguration };\n this.events.emit(ProviderEvents.ConfigurationChanged, { flagsChanged });\n }\n\n resolveBooleanEvaluation(\n flagKey: string,\n defaultValue: boolean,\n context?: EvaluationContext,\n logger?: Logger,\n ): Promise<ResolutionDetails<boolean>> {\n return this.resolveFlagWithReason<boolean>(flagKey, defaultValue, context, logger);\n }\n\n resolveNumberEvaluation(\n flagKey: string,\n defaultValue: number,\n context?: EvaluationContext,\n logger?: Logger,\n ): Promise<ResolutionDetails<number>> {\n return this.resolveFlagWithReason<number>(flagKey, defaultValue, context, logger);\n }\n\n async resolveStringEvaluation(\n flagKey: string,\n defaultValue: string,\n context?: EvaluationContext,\n logger?: Logger,\n ): Promise<ResolutionDetails<string>> {\n return this.resolveFlagWithReason<string>(flagKey, defaultValue, context, logger);\n }\n\n async resolveObjectEvaluation<T extends JsonValue>(\n flagKey: string,\n defaultValue: T,\n context?: EvaluationContext,\n logger?: Logger,\n ): Promise<ResolutionDetails<T>> {\n return this.resolveFlagWithReason<T>(flagKey, defaultValue, context, logger);\n }\n\n private async resolveFlagWithReason<T extends JsonValue | FlagValueType>(\n flagKey: string,\n defaultValue: T,\n ctx?: EvaluationContext,\n logger?: Logger,\n ): Promise<ResolutionDetails<T>> {\n try {\n const resolutionResult = this.lookupFlagValue(flagKey, defaultValue, ctx, logger);\n\n if (typeof resolutionResult?.value != typeof defaultValue) {\n throw new TypeMismatchError();\n }\n\n return resolutionResult;\n } catch (error: unknown) {\n if (!(error instanceof OpenFeatureError)) {\n throw new GeneralError((error as Error)?.message || 'unknown error'); \n }\n throw error;\n }\n }\n\n private lookupFlagValue<T extends JsonValue | FlagValueType>(\n flagKey: string,\n defaultValue: T,\n ctx?: EvaluationContext,\n logger?: Logger,\n ): ResolutionDetails<T> {\n if (!(flagKey in this._flagConfiguration)) {\n const message = `no flag found with key ${flagKey}`;\n logger?.debug(message);\n throw new FlagNotFoundError(message);\n }\n const flagSpec: Flag = this._flagConfiguration[flagKey];\n\n if (flagSpec.disabled) {\n return { value: defaultValue, reason: StandardResolutionReasons.DISABLED };\n }\n\n const isContextEval = ctx && flagSpec?.contextEvaluator;\n const variant = isContextEval ? flagSpec.contextEvaluator?.(ctx) : flagSpec.defaultVariant;\n\n const value = variant && flagSpec?.variants[variant];\n\n if (value === undefined) {\n const message = `no value associated with variant ${variant}`;\n logger?.error(message);\n throw new VariantFoundError(message);\n }\n\n return {\n value: value as T,\n ...(variant && { variant }),\n reason: isContextEval ? StandardResolutionReasons.TARGETING_MATCH : StandardResolutionReasons.STATIC,\n };\n }\n}\n", "import { ErrorCode, OpenFeatureError } from '@openfeature/core';\n\n/**\n * A custom error for the in-memory provider.\n * Indicates the resolved or default variant doesn't exist.\n */\nexport class VariantFoundError extends OpenFeatureError {\n code: ErrorCode;\n constructor(message?: string) {\n super(message);\n Object.setPrototypeOf(this, VariantFoundError.prototype);\n this.name = 'VariantFoundError';\n this.code = ErrorCode.GENERAL;\n }\n}\n", "import { NOOP_PROVIDER, Provider } from './provider';\nimport {\n ManageContext,\n OpenFeatureCommonAPI,\n EvaluationContext,\n objectOrUndefined,\n stringOrUndefined,\n} from '@openfeature/core';\nimport {\n ManageTransactionContextPropagator,\n NOOP_TRANSACTION_CONTEXT_PROPAGATOR,\n TransactionContext,\n TransactionContextPropagator,\n} from './transaction-context';\nimport { Client, OpenFeatureClient } from './client';\nimport { OpenFeatureEventEmitter } from './events';\nimport { Hook } from './hooks';\n\n// use a symbol as a key for the global singleton\nconst GLOBAL_OPENFEATURE_API_KEY = Symbol.for('@openfeature/js-sdk/api');\n\ntype OpenFeatureGlobal = {\n [GLOBAL_OPENFEATURE_API_KEY]?: OpenFeatureAPI;\n};\nconst _globalThis = globalThis as OpenFeatureGlobal;\n\nexport class OpenFeatureAPI\n extends OpenFeatureCommonAPI<Provider, Hook>\n implements ManageContext<OpenFeatureAPI>, ManageTransactionContextPropagator<OpenFeatureCommonAPI<Provider>>\n{\n protected _events = new OpenFeatureEventEmitter();\n protected _defaultProvider: Provider = NOOP_PROVIDER;\n protected _createEventEmitter = () => new OpenFeatureEventEmitter();\n\n private _transactionContextPropagator: TransactionContextPropagator = NOOP_TRANSACTION_CONTEXT_PROPAGATOR;\n\n private constructor() {\n super('server');\n }\n\n /**\n * Gets a singleton instance of the OpenFeature API.\n * @ignore\n * @returns {OpenFeatureAPI} OpenFeature API\n */\n static getInstance(): OpenFeatureAPI {\n const globalApi = _globalThis[GLOBAL_OPENFEATURE_API_KEY];\n if (globalApi) {\n return globalApi;\n }\n\n const instance = new OpenFeatureAPI();\n _globalThis[GLOBAL_OPENFEATURE_API_KEY] = instance;\n return instance;\n }\n\n setContext(context: EvaluationContext): this {\n this._context = context;\n return this;\n }\n\n getContext(): EvaluationContext {\n return this._context;\n }\n\n /**\n * A factory function for creating new unnamed OpenFeature clients. Clients can contain\n * their own state (e.g. logger, hook, context). Multiple clients can be used\n * to segment feature flag configuration.\n *\n * All unnamed clients use the same provider set via {@link this.setProvider setProvider}.\n * @param {EvaluationContext} context Evaluation context that should be set on the client to used during flag evaluations\n * @returns {Client} OpenFeature Client\n */\n getClient(context?: EvaluationContext): Client;\n /**\n * A factory function for creating new named OpenFeature clients. Clients can contain\n * their own state (e.g. logger, hook, context). Multiple clients can be used\n * to segment feature flag configuration.\n *\n * If there is already a provider bound to this name via {@link this.setProvider setProvider}, this provider will be used.\n * Otherwise, the default provider is used until a provider is assigned to that name.\n * @param {string} name The name of the client\n * @param {EvaluationContext} context Evaluation context that should be set on the client to used during flag evaluations\n * @returns {Client} OpenFeature Client\n */\n getClient(name: string, context?: EvaluationContext): Client;\n /**\n * A factory function for creating new named OpenFeature clients. Clients can contain\n * their own state (e.g. logger, hook, context). Multiple clients can be used\n * to segment feature flag configuration.\n *\n * If there is already a provider bound to this name via {@link this.setProvider setProvider}, this provider will be used.\n * Otherwise, the default provider is used until a provider is assigned to that name.\n * @param {string} name The name of the client\n * @param {string} version The version of the client (only used for metadata)\n * @param {EvaluationContext} context Evaluation context that should be set on the client to used during flag evaluations\n * @returns {Client} OpenFeature Client\n */\n getClient(name: string, version: string, context?: EvaluationContext): Client;\n getClient(\n nameOrContext?: string | EvaluationContext,\n versionOrContext?: string | EvaluationContext,\n contextOrUndefined?: EvaluationContext,\n ): Client {\n const name = stringOrUndefined(nameOrContext);\n const version = stringOrUndefined(versionOrContext);\n const context =\n objectOrUndefined<EvaluationContext>(nameOrContext) ??\n objectOrUndefined<EvaluationContext>(versionOrContext) ??\n objectOrUndefined<EvaluationContext>(contextOrUndefined);\n\n return new OpenFeatureClient(\n () => this.getProviderForClient(name),\n () => this.buildAndCacheEventEmitterForClient(name),\n () => this._logger,\n { name, version },\n context,\n );\n }\n\n /**\n * Clears all registered providers and resets the default provider.\n * @returns {Promise<void>}\n */\n clearProviders(): Promise<void> {\n return super.clearProvidersAndSetDefault(NOOP_PROVIDER);\n }\n\n setTransactionContextPropagator(\n transactionContextPropagator: TransactionContextPropagator,\n ): OpenFeatureCommonAPI<Provider> {\n const baseMessage = 'Invalid TransactionContextPropagator, will not be set: ';\n if (typeof transactionContextPropagator?.getTransactionContext !== 'function') {\n this._logger.error(`${baseMessage}: getTransactionContext is not a function.`);\n } else if (typeof transactionContextPropagator?.setTransactionContext !== 'function') {\n this._logger.error(`${baseMessage}: setTransactionContext is not a function.`);\n } else {\n this._transactionContextPropagator = transactionContextPropagator;\n }\n return this;\n }\n\n setTransactionContext<R>(\n transactionContext: TransactionContext,\n callback: (...args: unknown[]) => R,\n ...args: unknown[]\n ): void {\n this._transactionContextPropagator.setTransactionContext(transactionContext, callback, ...args);\n }\n\n getTransactionContext(): TransactionContext {\n try {\n return this._transactionContextPropagator.getTransactionContext();\n } catch (err: unknown) {\n const error = err as Error | undefined;\n this._logger.error(`Error getting transaction context: ${error?.message}, returning empty context.`);\n this._logger.error(error?.stack);\n return {};\n }\n }\n}\n\n/**\n * A singleton instance of the OpenFeature API.\n * @returns {OpenFeatureAPI} OpenFeature API\n */\nexport const OpenFeature = OpenFeatureAPI.getInstance();\n", "import { EvaluationContext } from '@openfeature/core';\nimport { TransactionContextPropagator } from './transaction-context';\n\nclass NoopTransactionContextPropagator implements TransactionContextPropagator {\n getTransactionContext(): EvaluationContext {\n return {};\n }\n\n setTransactionContext(_: EvaluationContext, callback: () => void): void {\n callback();\n }\n}\n\nexport const NOOP_TRANSACTION_CONTEXT_PROPAGATOR = new NoopTransactionContextPropagator();\n", "import { GenericEventEmitter } from '@openfeature/core';\nimport EventEmitter from 'events';\nimport { ProviderEvents } from './events';\n\n/**\n * The OpenFeatureEventEmitter can be used by provider developers to emit\n * events at various parts of the provider lifecycle.\n * \n * NOTE: Ready and error events are automatically emitted by the SDK based on\n * the result of the initialize method.\n */\nexport class OpenFeatureEventEmitter extends GenericEventEmitter<ProviderEvents> {\n protected readonly eventEmitter = new EventEmitter({ captureRejections: true });\n\n constructor() {\n super();\n this.eventEmitter.on('error', (err) => {\n this._logger?.error('Error running event handler:', err);\n });\n }\n};", "import { ServerProviderEvents } from '@openfeature/core';\n\nexport { ServerProviderEvents as ProviderEvents };"],
5
- "mappings": "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",
5
+ "mappings": "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",
6
6
  "names": ["import_core", "import_core", "import_core", "import_core", "import_core", "EventEmitter", "import_core", "err"]
7
7
  }