@openfeature/server-sdk 1.14.0 → 1.15.1

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.8.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.14.0">
20
- <img alt="Release" src="https://img.shields.io/static/v1?label=release&message=v1.14.0&color=blue&style=for-the-badge" />
19
+ <a href="https://github.com/open-feature/js-sdk/releases/tag/server-sdk-v1.15.1">
20
+ <img alt="Release" src="https://img.shields.io/static/v1?label=release&message=v1.15.1&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,8 +1,25 @@
1
1
  "use strict";
2
2
  var __defProp = Object.defineProperty;
3
+ var __defProps = Object.defineProperties;
3
4
  var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
5
+ var __getOwnPropDescs = Object.getOwnPropertyDescriptors;
4
6
  var __getOwnPropNames = Object.getOwnPropertyNames;
7
+ var __getOwnPropSymbols = Object.getOwnPropertySymbols;
5
8
  var __hasOwnProp = Object.prototype.hasOwnProperty;
9
+ var __propIsEnum = Object.prototype.propertyIsEnumerable;
10
+ var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
11
+ var __spreadValues = (a, b) => {
12
+ for (var prop in b || (b = {}))
13
+ if (__hasOwnProp.call(b, prop))
14
+ __defNormalProp(a, prop, b[prop]);
15
+ if (__getOwnPropSymbols)
16
+ for (var prop of __getOwnPropSymbols(b)) {
17
+ if (__propIsEnum.call(b, prop))
18
+ __defNormalProp(a, prop, b[prop]);
19
+ }
20
+ return a;
21
+ };
22
+ var __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));
6
23
  var __export = (target, all) => {
7
24
  for (var name in all)
8
25
  __defProp(target, name, { get: all[name], enumerable: true });
@@ -17,6 +34,26 @@ var __copyProps = (to, from, except, desc) => {
17
34
  };
18
35
  var __reExport = (target, mod, secondTarget) => (__copyProps(target, mod, "default"), secondTarget && __copyProps(secondTarget, mod, "default"));
19
36
  var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
37
+ var __async = (__this, __arguments, generator) => {
38
+ return new Promise((resolve, reject) => {
39
+ var fulfilled = (value) => {
40
+ try {
41
+ step(generator.next(value));
42
+ } catch (e) {
43
+ reject(e);
44
+ }
45
+ };
46
+ var rejected = (value) => {
47
+ try {
48
+ step(generator.throw(value));
49
+ } catch (e) {
50
+ reject(e);
51
+ }
52
+ };
53
+ var step = (x) => x.done ? resolve(x.value) : Promise.resolve(x.value).then(fulfilled, rejected);
54
+ step((generator = generator.apply(__this, __arguments)).next());
55
+ });
56
+ };
20
57
 
21
58
  // src/index.ts
22
59
  var src_exports = {};
@@ -39,9 +76,11 @@ var import_core = require("@openfeature/core");
39
76
  // src/provider/no-op-provider.ts
40
77
  var REASON_NO_OP = "No-op";
41
78
  var NoopFeatureProvider = class {
42
- metadata = {
43
- name: "No-op Provider"
44
- };
79
+ constructor() {
80
+ this.metadata = {
81
+ name: "No-op Provider"
82
+ };
83
+ }
45
84
  resolveBooleanEvaluation(_, defaultValue) {
46
85
  return this.noOp(defaultValue);
47
86
  }
@@ -69,7 +108,6 @@ var import_core3 = require("@openfeature/core");
69
108
  // src/provider/in-memory-provider/variant-not-found-error.ts
70
109
  var import_core2 = require("@openfeature/core");
71
110
  var VariantFoundError = class _VariantFoundError extends import_core2.OpenFeatureError {
72
- code;
73
111
  constructor(message) {
74
112
  super(message);
75
113
  Object.setPrototypeOf(this, _VariantFoundError.prototype);
@@ -80,14 +118,13 @@ var VariantFoundError = class _VariantFoundError extends import_core2.OpenFeatur
80
118
 
81
119
  // src/provider/in-memory-provider/in-memory-provider.ts
82
120
  var InMemoryProvider = class {
83
- events = new OpenFeatureEventEmitter();
84
- runsOn = "server";
85
- metadata = {
86
- name: "in-memory"
87
- };
88
- _flagConfiguration;
89
121
  constructor(flagConfiguration = {}) {
90
- this._flagConfiguration = { ...flagConfiguration };
122
+ this.events = new OpenFeatureEventEmitter();
123
+ this.runsOn = "server";
124
+ this.metadata = {
125
+ name: "in-memory"
126
+ };
127
+ this._flagConfiguration = __spreadValues({}, flagConfiguration);
91
128
  }
92
129
  /**
93
130
  * Overwrites the configured flags.
@@ -95,7 +132,7 @@ var InMemoryProvider = class {
95
132
  */
96
133
  putConfiguration(flagConfiguration) {
97
134
  const flagsChanged = Object.entries(flagConfiguration).filter(([key, value]) => this._flagConfiguration[key] !== value).map(([key]) => key);
98
- this._flagConfiguration = { ...flagConfiguration };
135
+ this._flagConfiguration = __spreadValues({}, flagConfiguration);
99
136
  this.events.emit(import_core6.ServerProviderEvents.ConfigurationChanged, { flagsChanged });
100
137
  }
101
138
  resolveBooleanEvaluation(flagKey, defaultValue, context, logger) {
@@ -104,49 +141,56 @@ var InMemoryProvider = class {
104
141
  resolveNumberEvaluation(flagKey, defaultValue, context, logger) {
105
142
  return this.resolveFlagWithReason(flagKey, defaultValue, context, logger);
106
143
  }
107
- async resolveStringEvaluation(flagKey, defaultValue, context, logger) {
108
- return this.resolveFlagWithReason(flagKey, defaultValue, context, logger);
144
+ resolveStringEvaluation(flagKey, defaultValue, context, logger) {
145
+ return __async(this, null, function* () {
146
+ return this.resolveFlagWithReason(flagKey, defaultValue, context, logger);
147
+ });
109
148
  }
110
- async resolveObjectEvaluation(flagKey, defaultValue, context, logger) {
111
- return this.resolveFlagWithReason(flagKey, defaultValue, context, logger);
149
+ resolveObjectEvaluation(flagKey, defaultValue, context, logger) {
150
+ return __async(this, null, function* () {
151
+ return this.resolveFlagWithReason(flagKey, defaultValue, context, logger);
152
+ });
112
153
  }
113
- async resolveFlagWithReason(flagKey, defaultValue, ctx, logger) {
114
- try {
115
- const resolutionResult = this.lookupFlagValue(flagKey, defaultValue, ctx, logger);
116
- if (typeof resolutionResult?.value != typeof defaultValue) {
117
- throw new import_core3.TypeMismatchError();
118
- }
119
- return resolutionResult;
120
- } catch (error) {
121
- if (!(error instanceof import_core3.OpenFeatureError)) {
122
- throw new import_core3.GeneralError(error?.message || "unknown error");
154
+ resolveFlagWithReason(flagKey, defaultValue, ctx, logger) {
155
+ return __async(this, null, function* () {
156
+ try {
157
+ const resolutionResult = this.lookupFlagValue(flagKey, defaultValue, ctx, logger);
158
+ if (typeof (resolutionResult == null ? void 0 : resolutionResult.value) != typeof defaultValue) {
159
+ throw new import_core3.TypeMismatchError();
160
+ }
161
+ return resolutionResult;
162
+ } catch (error) {
163
+ if (!(error instanceof import_core3.OpenFeatureError)) {
164
+ throw new import_core3.GeneralError((error == null ? void 0 : error.message) || "unknown error");
165
+ }
166
+ throw error;
123
167
  }
124
- throw error;
125
- }
168
+ });
126
169
  }
127
170
  lookupFlagValue(flagKey, defaultValue, ctx, logger) {
171
+ var _a;
128
172
  if (!(flagKey in this._flagConfiguration)) {
129
173
  const message = `no flag found with key ${flagKey}`;
130
- logger?.debug(message);
174
+ logger == null ? void 0 : logger.debug(message);
131
175
  throw new import_core3.FlagNotFoundError(message);
132
176
  }
133
177
  const flagSpec = this._flagConfiguration[flagKey];
134
178
  if (flagSpec.disabled) {
135
179
  return { value: defaultValue, reason: import_core3.StandardResolutionReasons.DISABLED };
136
180
  }
137
- const isContextEval = ctx && flagSpec?.contextEvaluator;
138
- const variant = isContextEval ? flagSpec.contextEvaluator?.(ctx) : flagSpec.defaultVariant;
139
- const value = variant && flagSpec?.variants[variant];
181
+ const isContextEval = ctx && (flagSpec == null ? void 0 : flagSpec.contextEvaluator);
182
+ const variant = isContextEval ? (_a = flagSpec.contextEvaluator) == null ? void 0 : _a.call(flagSpec, ctx) : flagSpec.defaultVariant;
183
+ const value = variant && (flagSpec == null ? void 0 : flagSpec.variants[variant]);
140
184
  if (value === void 0) {
141
185
  const message = `no value associated with variant ${variant}`;
142
- logger?.error(message);
186
+ logger == null ? void 0 : logger.error(message);
143
187
  throw new VariantFoundError(message);
144
188
  }
145
- return {
146
- value,
147
- ...variant && { variant },
189
+ return __spreadProps(__spreadValues({
190
+ value
191
+ }, variant && { variant }), {
148
192
  reason: isContextEval ? import_core3.StandardResolutionReasons.TARGETING_MATCH : import_core3.StandardResolutionReasons.STATIC
149
- };
193
+ });
150
194
  }
151
195
  };
152
196
 
@@ -162,16 +206,15 @@ var OpenFeatureClient = class {
162
206
  this.emitterAccessor = emitterAccessor;
163
207
  this.globalLogger = globalLogger;
164
208
  this.options = options;
209
+ this._hooks = [];
165
210
  this._context = context;
166
211
  }
167
- _context;
168
- _hooks = [];
169
- _clientLogger;
170
212
  get metadata() {
213
+ var _a, _b;
171
214
  return {
172
215
  // Use domain if name is not provided
173
- name: this.options.domain ?? this.options.name,
174
- domain: this.options.domain ?? this.options.name,
216
+ name: (_a = this.options.domain) != null ? _a : this.options.name,
217
+ domain: (_b = this.options.domain) != null ? _b : this.options.name,
175
218
  version: this.options.version,
176
219
  providerMetadata: this.providerAccessor().metadata
177
220
  };
@@ -180,6 +223,7 @@ var OpenFeatureClient = class {
180
223
  return this.providerStatusAccessor();
181
224
  }
182
225
  addHandler(eventType, handler) {
226
+ var _a;
183
227
  this.emitterAccessor().addHandler(eventType, handler);
184
228
  const shouldRunNow = (0, import_core4.statusMatchesEvent)(eventType, this._providerStatus);
185
229
  if (shouldRunNow) {
@@ -190,7 +234,7 @@ var OpenFeatureClient = class {
190
234
  providerName: this._provider.metadata.name
191
235
  });
192
236
  } catch (err) {
193
- this._logger?.error("Error running event handler:", err);
237
+ (_a = this._logger) == null ? void 0 : _a.error("Error running event handler:", err);
194
238
  }
195
239
  }
196
240
  }
@@ -222,8 +266,10 @@ var OpenFeatureClient = class {
222
266
  this._hooks = [];
223
267
  return this;
224
268
  }
225
- async getBooleanValue(flagKey, defaultValue, context, options) {
226
- return (await this.getBooleanDetails(flagKey, defaultValue, context, options)).value;
269
+ getBooleanValue(flagKey, defaultValue, context, options) {
270
+ return __async(this, null, function* () {
271
+ return (yield this.getBooleanDetails(flagKey, defaultValue, context, options)).value;
272
+ });
227
273
  }
228
274
  getBooleanDetails(flagKey, defaultValue, context, options) {
229
275
  return this.evaluate(
@@ -235,8 +281,10 @@ var OpenFeatureClient = class {
235
281
  options
236
282
  );
237
283
  }
238
- async getStringValue(flagKey, defaultValue, context, options) {
239
- return (await this.getStringDetails(flagKey, defaultValue, context, options)).value;
284
+ getStringValue(flagKey, defaultValue, context, options) {
285
+ return __async(this, null, function* () {
286
+ return (yield this.getStringDetails(flagKey, defaultValue, context, options)).value;
287
+ });
240
288
  }
241
289
  getStringDetails(flagKey, defaultValue, context, options) {
242
290
  return this.evaluate(
@@ -249,8 +297,10 @@ var OpenFeatureClient = class {
249
297
  options
250
298
  );
251
299
  }
252
- async getNumberValue(flagKey, defaultValue, context, options) {
253
- return (await this.getNumberDetails(flagKey, defaultValue, context, options)).value;
300
+ getNumberValue(flagKey, defaultValue, context, options) {
301
+ return __async(this, null, function* () {
302
+ return (yield this.getNumberDetails(flagKey, defaultValue, context, options)).value;
303
+ });
254
304
  }
255
305
  getNumberDetails(flagKey, defaultValue, context, options) {
256
306
  return this.evaluate(
@@ -263,109 +313,117 @@ var OpenFeatureClient = class {
263
313
  options
264
314
  );
265
315
  }
266
- async getObjectValue(flagKey, defaultValue, context, options) {
267
- return (await this.getObjectDetails(flagKey, defaultValue, context, options)).value;
316
+ getObjectValue(flagKey, defaultValue, context, options) {
317
+ return __async(this, null, function* () {
318
+ return (yield this.getObjectDetails(flagKey, defaultValue, context, options)).value;
319
+ });
268
320
  }
269
321
  getObjectDetails(flagKey, defaultValue, context, options) {
270
322
  return this.evaluate(flagKey, this._provider.resolveObjectEvaluation, defaultValue, "object", context, options);
271
323
  }
272
- async evaluate(flagKey, resolver, defaultValue, flagType, invocationContext = {}, options = {}) {
273
- const allHooks = [
274
- ...OpenFeature.getHooks(),
275
- ...this.getHooks(),
276
- ...options.hooks || [],
277
- ...this._provider.hooks || []
278
- ];
279
- const allHooksReversed = [...allHooks].reverse();
280
- const mergedContext = {
281
- ...OpenFeature.getContext(),
282
- ...OpenFeature.getTransactionContext(),
283
- ...this._context,
284
- ...invocationContext
285
- };
286
- const hookContext = {
287
- flagKey,
288
- defaultValue,
289
- flagValueType: flagType,
290
- clientMetadata: this.metadata,
291
- providerMetadata: this._provider.metadata,
292
- context: mergedContext,
293
- logger: this._logger
294
- };
295
- try {
296
- const frozenContext = await this.beforeHooks(allHooks, hookContext, options);
297
- if (this.providerStatus === import_core.ServerProviderStatus.NOT_READY) {
298
- throw new import_core4.ProviderNotReadyError("provider has not yet initialized");
299
- } else if (this.providerStatus === import_core.ServerProviderStatus.FATAL) {
300
- throw new import_core4.ProviderFatalError("provider is in an irrecoverable error state");
301
- }
302
- const resolution = await resolver.call(this._provider, flagKey, defaultValue, frozenContext, this._logger);
303
- const evaluationDetails = {
304
- ...resolution,
305
- flagMetadata: Object.freeze(resolution.flagMetadata ?? {}),
306
- flagKey
324
+ evaluate(_0, _1, _2, _3) {
325
+ return __async(this, arguments, function* (flagKey, resolver, defaultValue, flagType, invocationContext = {}, options = {}) {
326
+ var _a;
327
+ const allHooks = [
328
+ ...OpenFeature.getHooks(),
329
+ ...this.getHooks(),
330
+ ...options.hooks || [],
331
+ ...this._provider.hooks || []
332
+ ];
333
+ const allHooksReversed = [...allHooks].reverse();
334
+ const mergedContext = __spreadValues(__spreadValues(__spreadValues(__spreadValues({}, OpenFeature.getContext()), OpenFeature.getTransactionContext()), this._context), invocationContext);
335
+ const hookContext = {
336
+ flagKey,
337
+ defaultValue,
338
+ flagValueType: flagType,
339
+ clientMetadata: this.metadata,
340
+ providerMetadata: this._provider.metadata,
341
+ context: mergedContext,
342
+ logger: this._logger
307
343
  };
308
- if (evaluationDetails.errorCode) {
309
- throw (0, import_core4.instantiateErrorByErrorCode)(evaluationDetails.errorCode);
344
+ try {
345
+ const frozenContext = yield this.beforeHooks(allHooks, hookContext, options);
346
+ if (this.providerStatus === import_core.ServerProviderStatus.NOT_READY) {
347
+ throw new import_core4.ProviderNotReadyError("provider has not yet initialized");
348
+ } else if (this.providerStatus === import_core.ServerProviderStatus.FATAL) {
349
+ throw new import_core4.ProviderFatalError("provider is in an irrecoverable error state");
350
+ }
351
+ const resolution = yield resolver.call(this._provider, flagKey, defaultValue, frozenContext, this._logger);
352
+ const evaluationDetails = __spreadProps(__spreadValues({}, resolution), {
353
+ flagMetadata: Object.freeze((_a = resolution.flagMetadata) != null ? _a : {}),
354
+ flagKey
355
+ });
356
+ if (evaluationDetails.errorCode) {
357
+ throw (0, import_core4.instantiateErrorByErrorCode)(evaluationDetails.errorCode);
358
+ }
359
+ yield this.afterHooks(allHooksReversed, hookContext, evaluationDetails, options);
360
+ return evaluationDetails;
361
+ } catch (err) {
362
+ const errorMessage = err == null ? void 0 : err.message;
363
+ const errorCode = (err == null ? void 0 : err.code) || import_core4.ErrorCode.GENERAL;
364
+ yield this.errorHooks(allHooksReversed, hookContext, err, options);
365
+ return {
366
+ errorCode,
367
+ errorMessage,
368
+ value: defaultValue,
369
+ reason: import_core4.StandardResolutionReasons.ERROR,
370
+ flagMetadata: Object.freeze({}),
371
+ flagKey
372
+ };
373
+ } finally {
374
+ yield this.finallyHooks(allHooksReversed, hookContext, options);
310
375
  }
311
- await this.afterHooks(allHooksReversed, hookContext, evaluationDetails, options);
312
- return evaluationDetails;
313
- } catch (err) {
314
- const errorMessage = err?.message;
315
- const errorCode = err?.code || import_core4.ErrorCode.GENERAL;
316
- await this.errorHooks(allHooksReversed, hookContext, err, options);
317
- return {
318
- errorCode,
319
- errorMessage,
320
- value: defaultValue,
321
- reason: import_core4.StandardResolutionReasons.ERROR,
322
- flagMetadata: Object.freeze({}),
323
- flagKey
324
- };
325
- } finally {
326
- await this.finallyHooks(allHooksReversed, hookContext, options);
327
- }
376
+ });
328
377
  }
329
- async beforeHooks(hooks, hookContext, options) {
330
- for (const hook of hooks) {
331
- Object.freeze(hookContext);
332
- Object.assign(hookContext.context, {
333
- ...hookContext.context,
334
- ...await hook?.before?.(hookContext, Object.freeze(options.hookHints))
335
- });
336
- }
337
- return Object.freeze(hookContext.context);
378
+ beforeHooks(hooks, hookContext, options) {
379
+ return __async(this, null, function* () {
380
+ var _a;
381
+ for (const hook of hooks) {
382
+ Object.freeze(hookContext);
383
+ 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))));
384
+ }
385
+ return Object.freeze(hookContext.context);
386
+ });
338
387
  }
339
- async afterHooks(hooks, hookContext, evaluationDetails, options) {
340
- for (const hook of hooks) {
341
- await hook?.after?.(hookContext, evaluationDetails, options.hookHints);
342
- }
388
+ afterHooks(hooks, hookContext, evaluationDetails, options) {
389
+ return __async(this, null, function* () {
390
+ var _a;
391
+ for (const hook of hooks) {
392
+ yield (_a = hook == null ? void 0 : hook.after) == null ? void 0 : _a.call(hook, hookContext, evaluationDetails, options.hookHints);
393
+ }
394
+ });
343
395
  }
344
- async errorHooks(hooks, hookContext, err, options) {
345
- for (const hook of hooks) {
346
- try {
347
- await hook?.error?.(hookContext, err, options.hookHints);
348
- } catch (err2) {
349
- this._logger.error(`Unhandled error during 'error' hook: ${err2}`);
350
- if (err2 instanceof Error) {
351
- this._logger.error(err2.stack);
396
+ errorHooks(hooks, hookContext, err, options) {
397
+ return __async(this, null, function* () {
398
+ var _a;
399
+ for (const hook of hooks) {
400
+ try {
401
+ yield (_a = hook == null ? void 0 : hook.error) == null ? void 0 : _a.call(hook, hookContext, err, options.hookHints);
402
+ } catch (err2) {
403
+ this._logger.error(`Unhandled error during 'error' hook: ${err2}`);
404
+ if (err2 instanceof Error) {
405
+ this._logger.error(err2.stack);
406
+ }
407
+ this._logger.error(err2 == null ? void 0 : err2.stack);
352
408
  }
353
- this._logger.error(err2?.stack);
354
409
  }
355
- }
410
+ });
356
411
  }
357
- async finallyHooks(hooks, hookContext, options) {
358
- for (const hook of hooks) {
359
- try {
360
- await hook?.finally?.(hookContext, options.hookHints);
361
- } catch (err) {
362
- this._logger.error(`Unhandled error during 'finally' hook: ${err}`);
363
- if (err instanceof Error) {
364
- this._logger.error(err.stack);
412
+ finallyHooks(hooks, hookContext, options) {
413
+ return __async(this, null, function* () {
414
+ var _a;
415
+ for (const hook of hooks) {
416
+ try {
417
+ yield (_a = hook == null ? void 0 : hook.finally) == null ? void 0 : _a.call(hook, hookContext, options.hookHints);
418
+ } catch (err) {
419
+ this._logger.error(`Unhandled error during 'finally' hook: ${err}`);
420
+ if (err instanceof Error) {
421
+ this._logger.error(err.stack);
422
+ }
423
+ this._logger.error(err == null ? void 0 : err.stack);
365
424
  }
366
- this._logger.error(err?.stack);
367
425
  }
368
- }
426
+ });
369
427
  }
370
428
  get _provider() {
371
429
  return this.providerAccessor();
@@ -382,11 +440,12 @@ var OpenFeatureClient = class {
382
440
  var import_core5 = require("@openfeature/core");
383
441
  var import_node_events = require("events");
384
442
  var OpenFeatureEventEmitter = class extends import_core5.GenericEventEmitter {
385
- eventEmitter = new import_node_events.EventEmitter({ captureRejections: true });
386
443
  constructor() {
387
444
  super();
445
+ this.eventEmitter = new import_node_events.EventEmitter({ captureRejections: true });
388
446
  this.eventEmitter.on("error", (err) => {
389
- this._logger?.error("Error running event handler:", err);
447
+ var _a;
448
+ (_a = this._logger) == null ? void 0 : _a.error("Error running event handler:", err);
390
449
  });
391
450
  }
392
451
  };
@@ -408,9 +467,12 @@ var NOOP_TRANSACTION_CONTEXT_PROPAGATOR = new NoopTransactionContextPropagator()
408
467
  // src/transaction-context/async-local-storage-transaction-context-propagator.ts
409
468
  var import_async_hooks = require("async_hooks");
410
469
  var AsyncLocalStorageTransactionContextPropagator = class {
411
- asyncLocalStorage = new import_async_hooks.AsyncLocalStorage();
470
+ constructor() {
471
+ this.asyncLocalStorage = new import_async_hooks.AsyncLocalStorage();
472
+ }
412
473
  getTransactionContext() {
413
- return this.asyncLocalStorage.getStore() ?? {};
474
+ var _a;
475
+ return (_a = this.asyncLocalStorage.getStore()) != null ? _a : {};
414
476
  }
415
477
  setTransactionContext(transactionContext, callback, ...args) {
416
478
  this.asyncLocalStorage.run(transactionContext, callback, ...args);
@@ -421,18 +483,18 @@ var AsyncLocalStorageTransactionContextPropagator = class {
421
483
  var GLOBAL_OPENFEATURE_API_KEY = Symbol.for("@openfeature/js-sdk/api");
422
484
  var _globalThis = globalThis;
423
485
  var OpenFeatureAPI = class _OpenFeatureAPI extends import_core7.OpenFeatureCommonAPI {
424
- _statusEnumType = import_core.ServerProviderStatus;
425
- _apiEmitter = new OpenFeatureEventEmitter();
426
- _defaultProvider = new import_core7.ProviderWrapper(
427
- NOOP_PROVIDER,
428
- import_core.ServerProviderStatus.NOT_READY,
429
- this._statusEnumType
430
- );
431
- _domainScopedProviders = /* @__PURE__ */ new Map();
432
- _createEventEmitter = () => new OpenFeatureEventEmitter();
433
- _transactionContextPropagator = NOOP_TRANSACTION_CONTEXT_PROPAGATOR;
434
486
  constructor() {
435
487
  super("server");
488
+ this._statusEnumType = import_core.ServerProviderStatus;
489
+ this._apiEmitter = new OpenFeatureEventEmitter();
490
+ this._defaultProvider = new import_core7.ProviderWrapper(
491
+ NOOP_PROVIDER,
492
+ import_core.ServerProviderStatus.NOT_READY,
493
+ this._statusEnumType
494
+ );
495
+ this._domainScopedProviders = /* @__PURE__ */ new Map();
496
+ this._createEventEmitter = () => new OpenFeatureEventEmitter();
497
+ this._transactionContextPropagator = NOOP_TRANSACTION_CONTEXT_PROPAGATOR;
436
498
  }
437
499
  /**
438
500
  * Gets a singleton instance of the OpenFeature API.
@@ -449,15 +511,18 @@ var OpenFeatureAPI = class _OpenFeatureAPI extends import_core7.OpenFeatureCommo
449
511
  return instance;
450
512
  }
451
513
  getProviderStatus(domain) {
514
+ var _a, _b;
452
515
  if (!domain) {
453
516
  return this._defaultProvider.status;
454
517
  }
455
- return this._domainScopedProviders.get(domain)?.status ?? this._defaultProvider.status;
518
+ return (_b = (_a = this._domainScopedProviders.get(domain)) == null ? void 0 : _a.status) != null ? _b : this._defaultProvider.status;
456
519
  }
457
- async setProviderAndWait(domainOrProvider, providerOrUndefined) {
458
- const domain = (0, import_core7.stringOrUndefined)(domainOrProvider);
459
- const provider = domain ? (0, import_core7.objectOrUndefined)(providerOrUndefined) : (0, import_core7.objectOrUndefined)(domainOrProvider);
460
- await this.setAwaitableProvider(domain, provider);
520
+ setProviderAndWait(domainOrProvider, providerOrUndefined) {
521
+ return __async(this, null, function* () {
522
+ const domain = (0, import_core7.stringOrUndefined)(domainOrProvider);
523
+ const provider = domain ? (0, import_core7.objectOrUndefined)(providerOrUndefined) : (0, import_core7.objectOrUndefined)(domainOrProvider);
524
+ yield this.setAwaitableProvider(domain, provider);
525
+ });
461
526
  }
462
527
  setProvider(clientOrProvider, providerOrUndefined) {
463
528
  const domain = (0, import_core7.stringOrUndefined)(clientOrProvider);
@@ -476,9 +541,10 @@ var OpenFeatureAPI = class _OpenFeatureAPI extends import_core7.OpenFeatureCommo
476
541
  return this._context;
477
542
  }
478
543
  getClient(domainOrContext, versionOrContext, contextOrUndefined) {
544
+ var _a, _b;
479
545
  const domain = (0, import_core7.stringOrUndefined)(domainOrContext);
480
546
  const version = (0, import_core7.stringOrUndefined)(versionOrContext);
481
- const context = (0, import_core7.objectOrUndefined)(domainOrContext) ?? (0, import_core7.objectOrUndefined)(versionOrContext) ?? (0, import_core7.objectOrUndefined)(contextOrUndefined);
547
+ const context = (_b = (_a = (0, import_core7.objectOrUndefined)(domainOrContext)) != null ? _a : (0, import_core7.objectOrUndefined)(versionOrContext)) != null ? _b : (0, import_core7.objectOrUndefined)(contextOrUndefined);
482
548
  return new OpenFeatureClient(
483
549
  () => this.getProviderForClient(domain),
484
550
  () => this.getProviderStatus(domain),
@@ -497,9 +563,9 @@ var OpenFeatureAPI = class _OpenFeatureAPI extends import_core7.OpenFeatureCommo
497
563
  }
498
564
  setTransactionContextPropagator(transactionContextPropagator) {
499
565
  const baseMessage = "Invalid TransactionContextPropagator, will not be set: ";
500
- if (typeof transactionContextPropagator?.getTransactionContext !== "function") {
566
+ if (typeof (transactionContextPropagator == null ? void 0 : transactionContextPropagator.getTransactionContext) !== "function") {
501
567
  this._logger.error(`${baseMessage}: getTransactionContext is not a function.`);
502
- } else if (typeof transactionContextPropagator?.setTransactionContext !== "function") {
568
+ } else if (typeof (transactionContextPropagator == null ? void 0 : transactionContextPropagator.setTransactionContext) !== "function") {
503
569
  this._logger.error(`${baseMessage}: setTransactionContext is not a function.`);
504
570
  } else {
505
571
  this._transactionContextPropagator = transactionContextPropagator;
@@ -514,8 +580,8 @@ var OpenFeatureAPI = class _OpenFeatureAPI extends import_core7.OpenFeatureCommo
514
580
  return this._transactionContextPropagator.getTransactionContext();
515
581
  } catch (err) {
516
582
  const error = err;
517
- this._logger.error(`Error getting transaction context: ${error?.message}, returning empty context.`);
518
- this._logger.error(error?.stack);
583
+ this._logger.error(`Error getting transaction context: ${error == null ? void 0 : error.message}, returning empty context.`);
584
+ this._logger.error(error == null ? void 0 : error.stack);
519
585
  return {};
520
586
  }
521
587
  }