@powerlines/plugin-open-feature 0.1.2 → 0.1.4

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.
Files changed (23) hide show
  1. package/README.md +1 -1
  2. package/dist/types/plugin.cjs +2 -3
  3. package/dist/types/plugin.d.cts +1 -2
  4. package/dist/types/plugin.d.cts.map +1 -1
  5. package/dist/types/plugin.d.mts +1 -2
  6. package/dist/types/plugin.d.mts.map +1 -1
  7. package/dist/types/plugin.mjs +1 -2
  8. package/dist/types/plugin.mjs.map +1 -1
  9. package/package.json +10 -12
  10. package/dist/node_modules/.pnpm/@openfeature_core@1.9.2/node_modules/@openfeature/core/dist/esm/index.cjs +0 -643
  11. package/dist/node_modules/.pnpm/@openfeature_core@1.9.2/node_modules/@openfeature/core/dist/esm/index.mjs +0 -618
  12. package/dist/node_modules/.pnpm/@openfeature_core@1.9.2/node_modules/@openfeature/core/dist/esm/index.mjs.map +0 -1
  13. package/dist/node_modules/.pnpm/@openfeature_core@1.9.2/node_modules/@openfeature/core/dist/types.d.cts +0 -489
  14. package/dist/node_modules/.pnpm/@openfeature_core@1.9.2/node_modules/@openfeature/core/dist/types.d.cts.map +0 -1
  15. package/dist/node_modules/.pnpm/@openfeature_core@1.9.2/node_modules/@openfeature/core/dist/types.d.mts +0 -489
  16. package/dist/node_modules/.pnpm/@openfeature_core@1.9.2/node_modules/@openfeature/core/dist/types.d.mts.map +0 -1
  17. package/dist/node_modules/.pnpm/@openfeature_server-sdk@1.20.2_@openfeature_core@1.9.2/node_modules/@openfeature/server-sdk/dist/esm/index.cjs +0 -423
  18. package/dist/node_modules/.pnpm/@openfeature_server-sdk@1.20.2_@openfeature_core@1.9.2/node_modules/@openfeature/server-sdk/dist/esm/index.mjs +0 -424
  19. package/dist/node_modules/.pnpm/@openfeature_server-sdk@1.20.2_@openfeature_core@1.9.2/node_modules/@openfeature/server-sdk/dist/esm/index.mjs.map +0 -1
  20. package/dist/node_modules/.pnpm/@openfeature_server-sdk@1.20.2_@openfeature_core@1.9.2/node_modules/@openfeature/server-sdk/dist/types.d.cts +0 -41
  21. package/dist/node_modules/.pnpm/@openfeature_server-sdk@1.20.2_@openfeature_core@1.9.2/node_modules/@openfeature/server-sdk/dist/types.d.cts.map +0 -1
  22. package/dist/node_modules/.pnpm/@openfeature_server-sdk@1.20.2_@openfeature_core@1.9.2/node_modules/@openfeature/server-sdk/dist/types.d.mts +0 -42
  23. package/dist/node_modules/.pnpm/@openfeature_server-sdk@1.20.2_@openfeature_core@1.9.2/node_modules/@openfeature/server-sdk/dist/types.d.mts.map +0 -1
@@ -1,424 +0,0 @@
1
- import { ClientProviderEvents, DefaultLogger, ErrorCode, FlagNotFoundError, GeneralError, GenericEventEmitter, InvalidContextError, LOG_LEVELS, MapHookData, OpenFeatureCommonAPI, OpenFeatureError, ParseError, ProviderFatalError, ProviderNotReadyError, ProviderWrapper, SafeLogger, ServerProviderStatus, StandardResolutionReasons, TargetingKeyMissingError, TypeMismatchError, instantiateErrorByErrorCode, isObject, isString, objectOrUndefined, statusMatchesEvent, stringOrUndefined } from "../../../../../../@openfeature_core@1.9.2/node_modules/@openfeature/core/dist/esm/index.mjs";
2
- import { EventEmitter } from "node:events";
3
-
4
- //#region ../../node_modules/.pnpm/@openfeature+server-sdk@1.20.2_@openfeature+core@1.9.2/node_modules/@openfeature/server-sdk/dist/esm/index.js
5
- var __defProp = Object.defineProperty;
6
- var __defProps = Object.defineProperties;
7
- var __getOwnPropDescs = Object.getOwnPropertyDescriptors;
8
- var __getOwnPropSymbols = Object.getOwnPropertySymbols;
9
- var __hasOwnProp = Object.prototype.hasOwnProperty;
10
- var __propIsEnum = Object.prototype.propertyIsEnumerable;
11
- var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, {
12
- enumerable: true,
13
- configurable: true,
14
- writable: true,
15
- value
16
- }) : obj[key] = value;
17
- var __spreadValues = (a, b) => {
18
- for (var prop in b || (b = {})) if (__hasOwnProp.call(b, prop)) __defNormalProp(a, prop, b[prop]);
19
- if (__getOwnPropSymbols) {
20
- for (var prop of __getOwnPropSymbols(b)) if (__propIsEnum.call(b, prop)) __defNormalProp(a, prop, b[prop]);
21
- }
22
- return a;
23
- };
24
- var __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));
25
- var __async = (__this, __arguments, generator) => {
26
- return new Promise((resolve, reject) => {
27
- var fulfilled = (value) => {
28
- try {
29
- step(generator.next(value));
30
- } catch (e) {
31
- reject(e);
32
- }
33
- };
34
- var rejected = (value) => {
35
- try {
36
- step(generator.throw(value));
37
- } catch (e) {
38
- reject(e);
39
- }
40
- };
41
- var step = (x) => x.done ? resolve(x.value) : Promise.resolve(x.value).then(fulfilled, rejected);
42
- step((generator = generator.apply(__this, __arguments)).next());
43
- });
44
- };
45
- var REASON_NO_OP = "No-op";
46
- var NoopFeatureProvider = class {
47
- constructor() {
48
- this.metadata = { name: "No-op Provider" };
49
- }
50
- resolveBooleanEvaluation(_, defaultValue) {
51
- return this.noOp(defaultValue);
52
- }
53
- resolveStringEvaluation(_, defaultValue) {
54
- return this.noOp(defaultValue);
55
- }
56
- resolveNumberEvaluation(_, defaultValue) {
57
- return this.noOp(defaultValue);
58
- }
59
- resolveObjectEvaluation(_, defaultValue) {
60
- return this.noOp(defaultValue);
61
- }
62
- noOp(defaultValue) {
63
- return Promise.resolve({
64
- value: defaultValue,
65
- reason: REASON_NO_OP
66
- });
67
- }
68
- };
69
- var NOOP_PROVIDER = new NoopFeatureProvider();
70
- var OpenFeatureEventEmitter = class extends GenericEventEmitter {
71
- constructor() {
72
- super();
73
- this.eventEmitter = new EventEmitter({ captureRejections: true });
74
- this.eventEmitter.on("error", (err) => {
75
- var _a;
76
- (_a = this._logger) == null || _a.error("Error running event handler:", err);
77
- });
78
- }
79
- };
80
- var OpenFeatureClient = class {
81
- constructor(providerAccessor, providerStatusAccessor, emitterAccessor, apiContextAccessor, apiHooksAccessor, transactionContextAccessor, globalLogger, options, context = {}) {
82
- this.providerAccessor = providerAccessor;
83
- this.providerStatusAccessor = providerStatusAccessor;
84
- this.emitterAccessor = emitterAccessor;
85
- this.apiContextAccessor = apiContextAccessor;
86
- this.apiHooksAccessor = apiHooksAccessor;
87
- this.transactionContextAccessor = transactionContextAccessor;
88
- this.globalLogger = globalLogger;
89
- this.options = options;
90
- this._hooks = [];
91
- this._context = context;
92
- }
93
- get metadata() {
94
- var _a, _b;
95
- return {
96
- name: (_a = this.options.domain) != null ? _a : this.options.name,
97
- domain: (_b = this.options.domain) != null ? _b : this.options.name,
98
- version: this.options.version,
99
- providerMetadata: this.providerAccessor().metadata
100
- };
101
- }
102
- get providerStatus() {
103
- return this.providerStatusAccessor();
104
- }
105
- addHandler(eventType, handler, options) {
106
- var _a;
107
- this.emitterAccessor().addHandler(eventType, handler);
108
- if (statusMatchesEvent(eventType, this._providerStatus)) try {
109
- handler({
110
- clientName: this.metadata.name,
111
- domain: this.metadata.domain,
112
- providerName: this._provider.metadata.name
113
- });
114
- } catch (err) {
115
- (_a = this._logger) == null || _a.error("Error running event handler:", err);
116
- }
117
- if ((options == null ? void 0 : options.signal) && typeof options.signal.addEventListener === "function") options.signal.addEventListener("abort", () => {
118
- this.removeHandler(eventType, handler);
119
- });
120
- }
121
- removeHandler(eventType, handler) {
122
- this.emitterAccessor().removeHandler(eventType, handler);
123
- }
124
- getHandlers(eventType) {
125
- return this.emitterAccessor().getHandlers(eventType);
126
- }
127
- setLogger(logger) {
128
- this._clientLogger = new SafeLogger(logger);
129
- return this;
130
- }
131
- setContext(context) {
132
- this._context = context;
133
- return this;
134
- }
135
- getContext() {
136
- return this._context;
137
- }
138
- addHooks(...hooks) {
139
- this._hooks = [...this._hooks, ...hooks];
140
- return this;
141
- }
142
- getHooks() {
143
- return this._hooks;
144
- }
145
- clearHooks() {
146
- this._hooks = [];
147
- return this;
148
- }
149
- getBooleanValue(flagKey, defaultValue, context, options) {
150
- return __async(this, null, function* () {
151
- return (yield this.getBooleanDetails(flagKey, defaultValue, context, options)).value;
152
- });
153
- }
154
- getBooleanDetails(flagKey, defaultValue, context, options) {
155
- return this.evaluate(flagKey, this._provider.resolveBooleanEvaluation, defaultValue, "boolean", context, options);
156
- }
157
- getStringValue(flagKey, defaultValue, context, options) {
158
- return __async(this, null, function* () {
159
- return (yield this.getStringDetails(flagKey, defaultValue, context, options)).value;
160
- });
161
- }
162
- getStringDetails(flagKey, defaultValue, context, options) {
163
- return this.evaluate(flagKey, this._provider.resolveStringEvaluation, defaultValue, "string", context, options);
164
- }
165
- getNumberValue(flagKey, defaultValue, context, options) {
166
- return __async(this, null, function* () {
167
- return (yield this.getNumberDetails(flagKey, defaultValue, context, options)).value;
168
- });
169
- }
170
- getNumberDetails(flagKey, defaultValue, context, options) {
171
- return this.evaluate(flagKey, this._provider.resolveNumberEvaluation, defaultValue, "number", context, options);
172
- }
173
- getObjectValue(flagKey, defaultValue, context, options) {
174
- return __async(this, null, function* () {
175
- return (yield this.getObjectDetails(flagKey, defaultValue, context, options)).value;
176
- });
177
- }
178
- getObjectDetails(flagKey, defaultValue, context, options) {
179
- return this.evaluate(flagKey, this._provider.resolveObjectEvaluation, defaultValue, "object", context, options);
180
- }
181
- track(occurrenceKey, context = {}, occurrenceDetails = {}) {
182
- var _a, _b;
183
- try {
184
- this.shortCircuitIfNotReady();
185
- if (typeof this._provider.track === "function") {
186
- const frozenContext = Object.freeze(this.mergeContexts(context));
187
- return (_b = (_a = this._provider).track) == null ? void 0 : _b.call(_a, occurrenceKey, frozenContext, occurrenceDetails);
188
- } else this._logger.debug("Provider does not support the track function; will no-op.");
189
- } catch (err) {
190
- this._logger.debug("Error recording tracking event.", err);
191
- }
192
- }
193
- evaluate(_0, _1, _2, _3) {
194
- return __async(this, arguments, function* (flagKey, resolver, defaultValue, flagType, invocationContext = {}, options = {}) {
195
- var _a;
196
- const allHooks = [
197
- ...this.apiHooksAccessor(),
198
- ...this.getHooks(),
199
- ...options.hooks || [],
200
- ...this._provider.hooks || []
201
- ];
202
- const allHooksReversed = [...allHooks].reverse();
203
- const mergedContext = this.mergeContexts(invocationContext);
204
- const hookContexts = allHooksReversed.map(() => Object.freeze({
205
- flagKey,
206
- defaultValue,
207
- flagValueType: flagType,
208
- clientMetadata: this.metadata,
209
- providerMetadata: this._provider.metadata,
210
- context: mergedContext,
211
- logger: this._logger,
212
- hookData: new MapHookData()
213
- }));
214
- let evaluationDetails;
215
- try {
216
- const frozenContext = yield this.beforeHooks(allHooks, hookContexts, mergedContext, options);
217
- this.shortCircuitIfNotReady();
218
- const resolution = yield resolver.call(this._provider, flagKey, defaultValue, frozenContext, this._logger);
219
- const resolutionDetails = __spreadProps(__spreadValues({}, resolution), {
220
- flagMetadata: Object.freeze((_a = resolution.flagMetadata) != null ? _a : {}),
221
- flagKey
222
- });
223
- if (resolutionDetails.errorCode) {
224
- const err = instantiateErrorByErrorCode(resolutionDetails.errorCode, resolutionDetails.errorMessage);
225
- yield this.errorHooks(allHooksReversed, hookContexts, err, options);
226
- evaluationDetails = this.getErrorEvaluationDetails(flagKey, defaultValue, err, resolutionDetails.flagMetadata);
227
- } else {
228
- yield this.afterHooks(allHooksReversed, hookContexts, resolutionDetails, options);
229
- evaluationDetails = resolutionDetails;
230
- }
231
- } catch (err) {
232
- yield this.errorHooks(allHooksReversed, hookContexts, err, options);
233
- evaluationDetails = this.getErrorEvaluationDetails(flagKey, defaultValue, err);
234
- }
235
- yield this.finallyHooks(allHooksReversed, hookContexts, evaluationDetails, options);
236
- return evaluationDetails;
237
- });
238
- }
239
- beforeHooks(hooks, hookContexts, mergedContext, options) {
240
- return __async(this, null, function* () {
241
- var _a;
242
- const accumulatedContext = mergedContext;
243
- for (const [index, hook] of hooks.entries()) {
244
- const hookContext = hookContexts[hooks.length - 1 - index];
245
- Object.assign(hookContext.context, accumulatedContext);
246
- const hookResult = yield (_a = hook == null ? void 0 : hook.before) == null ? void 0 : _a.call(hook, hookContext, Object.freeze(options.hookHints));
247
- if (hookResult) {
248
- Object.assign(accumulatedContext, hookResult);
249
- Object.assign(hookContext.context, accumulatedContext);
250
- }
251
- }
252
- return Object.freeze(accumulatedContext);
253
- });
254
- }
255
- afterHooks(hooks, hookContexts, evaluationDetails, options) {
256
- return __async(this, null, function* () {
257
- var _a;
258
- for (const [index, hook] of hooks.entries()) {
259
- const hookContext = hookContexts[index];
260
- yield (_a = hook == null ? void 0 : hook.after) == null ? void 0 : _a.call(hook, hookContext, evaluationDetails, options.hookHints);
261
- }
262
- });
263
- }
264
- errorHooks(hooks, hookContexts, err, options) {
265
- return __async(this, null, function* () {
266
- var _a;
267
- for (const [index, hook] of hooks.entries()) try {
268
- const hookContext = hookContexts[index];
269
- yield (_a = hook == null ? void 0 : hook.error) == null ? void 0 : _a.call(hook, hookContext, err, options.hookHints);
270
- } catch (err2) {
271
- this._logger.error(`Unhandled error during 'error' hook: ${err2}`);
272
- if (err2 instanceof Error) this._logger.error(err2.stack);
273
- this._logger.error(err2 == null ? void 0 : err2.stack);
274
- }
275
- });
276
- }
277
- finallyHooks(hooks, hookContexts, evaluationDetails, options) {
278
- return __async(this, null, function* () {
279
- var _a;
280
- for (const [index, hook] of hooks.entries()) try {
281
- const hookContext = hookContexts[index];
282
- yield (_a = hook == null ? void 0 : hook.finally) == null ? void 0 : _a.call(hook, hookContext, evaluationDetails, options.hookHints);
283
- } catch (err) {
284
- this._logger.error(`Unhandled error during 'finally' hook: ${err}`);
285
- if (err instanceof Error) this._logger.error(err.stack);
286
- this._logger.error(err == null ? void 0 : err.stack);
287
- }
288
- });
289
- }
290
- get _provider() {
291
- return this.providerAccessor();
292
- }
293
- get _providerStatus() {
294
- return this.providerStatusAccessor();
295
- }
296
- get _logger() {
297
- return this._clientLogger || this.globalLogger();
298
- }
299
- mergeContexts(invocationContext) {
300
- return __spreadValues(__spreadValues(__spreadValues(__spreadValues({}, this.apiContextAccessor()), this.transactionContextAccessor()), this._context), invocationContext);
301
- }
302
- shortCircuitIfNotReady() {
303
- if (this.providerStatus === ServerProviderStatus.NOT_READY) throw new ProviderNotReadyError("provider has not yet initialized");
304
- else if (this.providerStatus === ServerProviderStatus.FATAL) throw new ProviderFatalError("provider is in an irrecoverable error state");
305
- }
306
- getErrorEvaluationDetails(flagKey, defaultValue, err, flagMetadata = {}) {
307
- const errorMessage = err == null ? void 0 : err.message;
308
- return {
309
- errorCode: (err == null ? void 0 : err.code) || ErrorCode.GENERAL,
310
- errorMessage,
311
- value: defaultValue,
312
- reason: StandardResolutionReasons.ERROR,
313
- flagMetadata: Object.freeze(flagMetadata),
314
- flagKey
315
- };
316
- }
317
- };
318
- var NoopTransactionContextPropagator = class {
319
- getTransactionContext() {
320
- return {};
321
- }
322
- setTransactionContext(_, callback, ...args) {
323
- callback(...args);
324
- }
325
- };
326
- var NOOP_TRANSACTION_CONTEXT_PROPAGATOR = new NoopTransactionContextPropagator();
327
- var GLOBAL_OPENFEATURE_API_KEY = Symbol.for("@openfeature/js-sdk/api");
328
- var _globalThis = globalThis;
329
- var OpenFeatureAPI = class _OpenFeatureAPI extends OpenFeatureCommonAPI {
330
- constructor() {
331
- super("server");
332
- this._statusEnumType = ServerProviderStatus;
333
- this._apiEmitter = new OpenFeatureEventEmitter();
334
- this._defaultProvider = new ProviderWrapper(NOOP_PROVIDER, ServerProviderStatus.NOT_READY, this._statusEnumType);
335
- this._domainScopedProviders = /* @__PURE__ */ new Map();
336
- this._createEventEmitter = () => new OpenFeatureEventEmitter();
337
- this._transactionContextPropagator = NOOP_TRANSACTION_CONTEXT_PROPAGATOR;
338
- }
339
- /**
340
- * Gets a singleton instance of the OpenFeature API.
341
- * @ignore
342
- * @returns {OpenFeatureAPI} OpenFeature API
343
- */
344
- static getInstance() {
345
- const globalApi = _globalThis[GLOBAL_OPENFEATURE_API_KEY];
346
- if (globalApi) return globalApi;
347
- const instance = new _OpenFeatureAPI();
348
- _globalThis[GLOBAL_OPENFEATURE_API_KEY] = instance;
349
- return instance;
350
- }
351
- getProviderStatus(domain) {
352
- var _a, _b;
353
- if (!domain) return this._defaultProvider.status;
354
- return (_b = (_a = this._domainScopedProviders.get(domain)) == null ? void 0 : _a.status) != null ? _b : this._defaultProvider.status;
355
- }
356
- setProviderAndWait(domainOrProvider, providerOrUndefined) {
357
- return __async(this, null, function* () {
358
- const domain = stringOrUndefined(domainOrProvider);
359
- const provider = domain ? objectOrUndefined(providerOrUndefined) : objectOrUndefined(domainOrProvider);
360
- yield this.setAwaitableProvider(domain, provider);
361
- });
362
- }
363
- setProvider(clientOrProvider, providerOrUndefined) {
364
- const domain = stringOrUndefined(clientOrProvider);
365
- const provider = domain ? objectOrUndefined(providerOrUndefined) : objectOrUndefined(clientOrProvider);
366
- const maybePromise = this.setAwaitableProvider(domain, provider);
367
- Promise.resolve(maybePromise).catch((err) => {
368
- this._logger.error("Error during provider initialization:", err);
369
- });
370
- return this;
371
- }
372
- getProvider(domain) {
373
- return this.getProviderForClient(domain);
374
- }
375
- setContext(context) {
376
- this._context = context;
377
- return this;
378
- }
379
- getContext() {
380
- return this._context;
381
- }
382
- getClient(domainOrContext, versionOrContext, contextOrUndefined) {
383
- var _a, _b;
384
- const domain = stringOrUndefined(domainOrContext);
385
- const version = stringOrUndefined(versionOrContext);
386
- const context = (_b = (_a = objectOrUndefined(domainOrContext)) != null ? _a : objectOrUndefined(versionOrContext)) != null ? _b : objectOrUndefined(contextOrUndefined);
387
- return new OpenFeatureClient(() => this.getProviderForClient(domain), () => this.getProviderStatus(domain), () => this.buildAndCacheEventEmitterForClient(domain), () => this.getContext(), () => this.getHooks(), () => this.getTransactionContext(), () => this._logger, {
388
- domain,
389
- version
390
- }, context);
391
- }
392
- /**
393
- * Clears all registered providers and resets the default provider.
394
- * @returns {Promise<void>}
395
- */
396
- clearProviders() {
397
- return super.clearProvidersAndSetDefault(NOOP_PROVIDER);
398
- }
399
- setTransactionContextPropagator(transactionContextPropagator) {
400
- const baseMessage = "Invalid TransactionContextPropagator, will not be set: ";
401
- if (typeof (transactionContextPropagator == null ? void 0 : transactionContextPropagator.getTransactionContext) !== "function") this._logger.error(`${baseMessage}: getTransactionContext is not a function.`);
402
- else if (typeof (transactionContextPropagator == null ? void 0 : transactionContextPropagator.setTransactionContext) !== "function") this._logger.error(`${baseMessage}: setTransactionContext is not a function.`);
403
- else this._transactionContextPropagator = transactionContextPropagator;
404
- return this;
405
- }
406
- setTransactionContext(transactionContext, callback, ...args) {
407
- this._transactionContextPropagator.setTransactionContext(transactionContext, callback, ...args);
408
- }
409
- getTransactionContext() {
410
- try {
411
- return this._transactionContextPropagator.getTransactionContext();
412
- } catch (err) {
413
- const error = err;
414
- this._logger.error(`Error getting transaction context: ${error == null ? void 0 : error.message}, returning empty context.`);
415
- this._logger.error(error == null ? void 0 : error.stack);
416
- return {};
417
- }
418
- }
419
- };
420
- var OpenFeature = OpenFeatureAPI.getInstance();
421
-
422
- //#endregion
423
- export { };
424
- //# sourceMappingURL=index.mjs.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.mjs","names":["ErrorCode3","StandardResolutionReasons3"],"sources":["../../../../../../../../../../../node_modules/.pnpm/@openfeature+server-sdk@1.20.2_@openfeature+core@1.9.2/node_modules/@openfeature/server-sdk/dist/esm/index.js"],"sourcesContent":["var __defProp = Object.defineProperty;\nvar __defProps = Object.defineProperties;\nvar __getOwnPropDescs = Object.getOwnPropertyDescriptors;\nvar __getOwnPropSymbols = Object.getOwnPropertySymbols;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __propIsEnum = Object.prototype.propertyIsEnumerable;\nvar __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __spreadValues = (a, b) => {\n for (var prop in b || (b = {}))\n if (__hasOwnProp.call(b, prop))\n __defNormalProp(a, prop, b[prop]);\n if (__getOwnPropSymbols)\n for (var prop of __getOwnPropSymbols(b)) {\n if (__propIsEnum.call(b, prop))\n __defNormalProp(a, prop, b[prop]);\n }\n return a;\n};\nvar __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));\nvar __async = (__this, __arguments, generator) => {\n return new Promise((resolve, reject) => {\n var fulfilled = (value) => {\n try {\n step(generator.next(value));\n } catch (e) {\n reject(e);\n }\n };\n var rejected = (value) => {\n try {\n step(generator.throw(value));\n } catch (e) {\n reject(e);\n }\n };\n var step = (x) => x.done ? resolve(x.value) : Promise.resolve(x.value).then(fulfilled, rejected);\n step((generator = generator.apply(__this, __arguments)).next());\n });\n};\n\n// src/provider/provider.ts\nimport { ServerProviderStatus } from \"@openfeature/core\";\n\n// src/provider/no-op-provider.ts\nvar REASON_NO_OP = \"No-op\";\nvar NoopFeatureProvider = class {\n constructor() {\n this.metadata = {\n name: \"No-op Provider\"\n };\n }\n resolveBooleanEvaluation(_, defaultValue) {\n return this.noOp(defaultValue);\n }\n resolveStringEvaluation(_, defaultValue) {\n return this.noOp(defaultValue);\n }\n resolveNumberEvaluation(_, defaultValue) {\n return this.noOp(defaultValue);\n }\n resolveObjectEvaluation(_, defaultValue) {\n return this.noOp(defaultValue);\n }\n noOp(defaultValue) {\n return Promise.resolve({\n value: defaultValue,\n reason: REASON_NO_OP\n });\n }\n};\nvar NOOP_PROVIDER = new NoopFeatureProvider();\n\n// src/provider/in-memory-provider/in-memory-provider.ts\nimport {\n FlagNotFoundError,\n GeneralError,\n OpenFeatureError as OpenFeatureError2,\n StandardResolutionReasons,\n TypeMismatchError\n} from \"@openfeature/core\";\n\n// src/provider/in-memory-provider/variant-not-found-error.ts\nimport { ErrorCode, OpenFeatureError } from \"@openfeature/core\";\nvar VariantFoundError = class _VariantFoundError extends OpenFeatureError {\n constructor(message) {\n super(message);\n Object.setPrototypeOf(this, _VariantFoundError.prototype);\n this.name = \"VariantFoundError\";\n this.code = ErrorCode.GENERAL;\n }\n};\n\n// src/provider/in-memory-provider/in-memory-provider.ts\nvar InMemoryProvider = class {\n constructor(flagConfiguration = {}) {\n this.events = new OpenFeatureEventEmitter();\n this.runsOn = \"server\";\n this.metadata = {\n name: \"in-memory\"\n };\n this._flagConfiguration = __spreadValues({}, flagConfiguration);\n }\n /**\n * Overwrites the configured flags.\n * @param { FlagConfiguration } flagConfiguration new flag configuration\n */\n putConfiguration(flagConfiguration) {\n const flagsChanged = Object.entries(flagConfiguration).filter(([key, value]) => this._flagConfiguration[key] !== value).map(([key]) => key);\n this._flagConfiguration = __spreadValues({}, flagConfiguration);\n this.events.emit(ServerProviderEvents.ConfigurationChanged, { flagsChanged });\n }\n resolveBooleanEvaluation(flagKey, defaultValue, context, logger) {\n return this.resolveFlagWithReason(flagKey, defaultValue, context, logger);\n }\n resolveNumberEvaluation(flagKey, defaultValue, context, logger) {\n return this.resolveFlagWithReason(flagKey, defaultValue, context, logger);\n }\n resolveStringEvaluation(flagKey, defaultValue, context, logger) {\n return __async(this, null, function* () {\n return this.resolveFlagWithReason(flagKey, defaultValue, context, logger);\n });\n }\n resolveObjectEvaluation(flagKey, defaultValue, context, logger) {\n return __async(this, null, function* () {\n return this.resolveFlagWithReason(flagKey, defaultValue, context, logger);\n });\n }\n resolveFlagWithReason(flagKey, defaultValue, ctx, logger) {\n return __async(this, null, function* () {\n try {\n const resolutionResult = this.lookupFlagValue(flagKey, defaultValue, ctx, logger);\n if (typeof (resolutionResult == null ? void 0 : resolutionResult.value) != typeof defaultValue) {\n throw new TypeMismatchError();\n }\n return resolutionResult;\n } catch (error) {\n if (!(error instanceof OpenFeatureError2)) {\n throw new GeneralError((error == null ? void 0 : error.message) || \"unknown error\");\n }\n throw error;\n }\n });\n }\n lookupFlagValue(flagKey, defaultValue, ctx, logger) {\n var _a;\n if (!(flagKey in this._flagConfiguration)) {\n const message = `no flag found with key ${flagKey}`;\n logger == null ? void 0 : logger.debug(message);\n throw new FlagNotFoundError(message);\n }\n const flagSpec = this._flagConfiguration[flagKey];\n if (flagSpec.disabled) {\n return { value: defaultValue, reason: StandardResolutionReasons.DISABLED };\n }\n const isContextEval = ctx && (flagSpec == null ? void 0 : flagSpec.contextEvaluator);\n const variant = isContextEval ? (_a = flagSpec.contextEvaluator) == null ? void 0 : _a.call(flagSpec, ctx) : flagSpec.defaultVariant;\n const value = variant && (flagSpec == null ? void 0 : flagSpec.variants[variant]);\n if (value === void 0) {\n const message = `no value associated with variant ${variant}`;\n logger == null ? void 0 : logger.error(message);\n throw new VariantFoundError(message);\n }\n return __spreadProps(__spreadValues({\n value\n }, variant && { variant }), {\n reason: isContextEval ? StandardResolutionReasons.TARGETING_MATCH : StandardResolutionReasons.STATIC\n });\n }\n};\n\n// src/provider/multi-provider/multi-provider.ts\nimport {\n DefaultLogger,\n ErrorCode as ErrorCode2,\n GeneralError as GeneralError2,\n StandardResolutionReasons as StandardResolutionReasons2,\n constructAggregateError,\n throwAggregateErrorFromPromiseResults,\n StatusTracker\n} from \"@openfeature/core\";\n\n// src/provider/multi-provider/strategies.ts\nimport {\n BaseFirstMatchStrategy,\n BaseFirstSuccessfulStrategy,\n BaseComparisonStrategy\n} from \"@openfeature/core\";\nvar FirstMatchStrategy = class extends BaseFirstMatchStrategy {\n constructor() {\n super(ServerProviderStatus);\n }\n};\nvar FirstSuccessfulStrategy = class extends BaseFirstSuccessfulStrategy {\n constructor() {\n super(ServerProviderStatus);\n }\n};\nvar ComparisonStrategy = class extends BaseComparisonStrategy {\n constructor(fallbackProvider, onMismatch) {\n super(ServerProviderStatus, fallbackProvider, onMismatch);\n }\n};\n\n// src/events/open-feature-event-emitter.ts\nimport { GenericEventEmitter } from \"@openfeature/core\";\nimport { EventEmitter } from \"node:events\";\nvar OpenFeatureEventEmitter = class extends GenericEventEmitter {\n constructor() {\n super();\n this.eventEmitter = new EventEmitter({ captureRejections: true });\n this.eventEmitter.on(\"error\", (err) => {\n var _a;\n (_a = this._logger) == null ? void 0 : _a.error(\"Error running event handler:\", err);\n });\n }\n};\n\n// src/events/events.ts\nimport { ServerProviderEvents } from \"@openfeature/core\";\n\n// src/provider/multi-provider/hook-executor.ts\nvar HookExecutor = class {\n constructor(logger) {\n this.logger = logger;\n }\n beforeHooks(hooks, hookContext, hints) {\n return __async(this, null, function* () {\n var _a;\n for (const hook of hooks != null ? hooks : []) {\n Object.freeze(hookContext);\n Object.assign(hookContext.context, __spreadValues({}, yield (_a = hook == null ? void 0 : hook.before) == null ? void 0 : _a.call(hook, hookContext, Object.freeze(hints))));\n }\n return Object.freeze(hookContext.context);\n });\n }\n afterHooks(hooks, hookContext, evaluationDetails, hints) {\n return __async(this, null, function* () {\n var _a;\n for (const hook of hooks != null ? hooks : []) {\n yield (_a = hook == null ? void 0 : hook.after) == null ? void 0 : _a.call(hook, hookContext, evaluationDetails, hints);\n }\n });\n }\n errorHooks(hooks, hookContext, err, hints) {\n return __async(this, null, function* () {\n var _a;\n for (const hook of hooks != null ? hooks : []) {\n try {\n yield (_a = hook == null ? void 0 : hook.error) == null ? void 0 : _a.call(hook, hookContext, err, hints);\n } catch (err2) {\n this.logger.error(`Unhandled error during 'error' hook: ${err2}`);\n if (err2 instanceof Error) {\n this.logger.error(err2.stack);\n }\n this.logger.error(err2 == null ? void 0 : err2.stack);\n }\n }\n });\n }\n finallyHooks(hooks, hookContext, evaluationDetails, hints) {\n return __async(this, null, function* () {\n var _a;\n for (const hook of hooks != null ? hooks : []) {\n try {\n yield (_a = hook == null ? void 0 : hook.finally) == null ? void 0 : _a.call(hook, hookContext, evaluationDetails, hints);\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 == null ? void 0 : err.stack);\n }\n }\n });\n }\n};\n\n// src/provider/multi-provider/multi-provider.ts\nvar MultiProvider = class _MultiProvider {\n constructor(constructorProviders, evaluationStrategy = new FirstMatchStrategy(), logger = new DefaultLogger()) {\n this.constructorProviders = constructorProviders;\n this.evaluationStrategy = evaluationStrategy;\n this.logger = logger;\n this.runsOn = \"server\";\n this.events = new OpenFeatureEventEmitter();\n this.hookContexts = /* @__PURE__ */ new WeakMap();\n this.hookHints = /* @__PURE__ */ new WeakMap();\n this.providerEntries = [];\n this.providerEntriesByName = {};\n this.statusTracker = new StatusTracker(this.events, ServerProviderStatus, ServerProviderEvents);\n this.hookExecutor = new HookExecutor(this.logger);\n this.registerProviders(constructorProviders);\n const aggregateMetadata = Object.keys(this.providerEntriesByName).reduce((acc, name) => {\n return __spreadProps(__spreadValues({}, acc), { [name]: this.providerEntriesByName[name].provider.metadata });\n }, {});\n this.metadata = __spreadProps(__spreadValues({}, aggregateMetadata), {\n name: _MultiProvider.name\n });\n }\n registerProviders(constructorProviders) {\n var _a, _b;\n const providersByName = {};\n for (const constructorProvider of constructorProviders) {\n const providerName = constructorProvider.provider.metadata.name;\n const candidateName = (_a = constructorProvider.name) != null ? _a : providerName;\n if (constructorProvider.name && providersByName[constructorProvider.name]) {\n throw new Error(\"Provider names must be unique\");\n }\n (_b = providersByName[candidateName]) != null ? _b : providersByName[candidateName] = [];\n providersByName[candidateName].push(constructorProvider.provider);\n }\n for (const name of Object.keys(providersByName)) {\n const useIndexedNames = providersByName[name].length > 1;\n for (let i = 0; i < providersByName[name].length; i++) {\n const indexedName = useIndexedNames ? `${name}-${i + 1}` : name;\n this.providerEntriesByName[indexedName] = { provider: providersByName[name][i], name: indexedName };\n this.providerEntries.push(this.providerEntriesByName[indexedName]);\n this.statusTracker.wrapEventHandler(this.providerEntriesByName[indexedName]);\n }\n }\n Object.freeze(this.providerEntries);\n Object.freeze(this.providerEntriesByName);\n }\n initialize(context) {\n return __async(this, null, function* () {\n const result = yield Promise.allSettled(\n this.providerEntries.map((provider) => {\n var _a, _b;\n return (_b = (_a = provider.provider).initialize) == null ? void 0 : _b.call(_a, context);\n })\n );\n throwAggregateErrorFromPromiseResults(result, this.providerEntries);\n });\n }\n onClose() {\n return __async(this, null, function* () {\n const result = yield Promise.allSettled(this.providerEntries.map((provider) => {\n var _a, _b;\n return (_b = (_a = provider.provider).onClose) == null ? void 0 : _b.call(_a);\n }));\n throwAggregateErrorFromPromiseResults(result, this.providerEntries);\n });\n }\n resolveBooleanEvaluation(flagKey, defaultValue, context) {\n return this.flagResolutionProxy(flagKey, \"boolean\", defaultValue, context);\n }\n resolveStringEvaluation(flagKey, defaultValue, context) {\n return this.flagResolutionProxy(flagKey, \"string\", defaultValue, context);\n }\n resolveNumberEvaluation(flagKey, defaultValue, context) {\n return this.flagResolutionProxy(flagKey, \"number\", defaultValue, context);\n }\n resolveObjectEvaluation(flagKey, defaultValue, context) {\n return this.flagResolutionProxy(flagKey, \"object\", defaultValue, context);\n }\n flagResolutionProxy(flagKey, flagType, defaultValue, context) {\n return __async(this, null, function* () {\n var _a;\n const hookContext = this.hookContexts.get(context);\n const hookHints = this.hookHints.get(context);\n if (!hookContext || !hookHints) {\n throw new GeneralError2(\"Hook context not available for evaluation\");\n }\n const tasks = [];\n for (const providerEntry of this.providerEntries) {\n const task = this.evaluateProviderEntry(\n flagKey,\n flagType,\n defaultValue,\n providerEntry,\n hookContext,\n hookHints,\n context\n );\n tasks.push(task);\n if (this.evaluationStrategy.runMode === \"sequential\") {\n const [shouldEvaluateNext] = yield task;\n if (!shouldEvaluateNext) {\n break;\n }\n }\n }\n const results = yield Promise.all(tasks);\n const resolutions = results.map(([, resolution]) => resolution).filter((r) => Boolean(r));\n const finalResult = this.evaluationStrategy.determineFinalResult({ flagKey, flagType }, context, resolutions);\n if ((_a = finalResult.errors) == null ? void 0 : _a.length) {\n throw constructAggregateError(finalResult.errors);\n }\n if (!finalResult.details) {\n throw new GeneralError2(\"No result was returned from any provider\");\n }\n return finalResult.details;\n });\n }\n evaluateProviderEntry(flagKey, flagType, defaultValue, providerEntry, hookContext, hookHints, context) {\n return __async(this, null, function* () {\n let evaluationResult = void 0;\n const provider = providerEntry.provider;\n const strategyContext = {\n flagKey,\n flagType,\n provider,\n providerName: providerEntry.name,\n providerStatus: this.statusTracker.providerStatus(providerEntry.name)\n };\n if (!this.evaluationStrategy.shouldEvaluateThisProvider(strategyContext, context)) {\n return [true, null];\n }\n let resolution;\n try {\n evaluationResult = yield this.evaluateProviderAndHooks(flagKey, defaultValue, provider, hookContext, hookHints);\n resolution = {\n details: evaluationResult,\n provider,\n providerName: providerEntry.name\n };\n } catch (error) {\n resolution = {\n thrownError: error,\n provider,\n providerName: providerEntry.name\n };\n }\n return [\n this.evaluationStrategy.runMode === \"sequential\" ? this.evaluationStrategy.shouldEvaluateNextProvider(strategyContext, context, resolution) : true,\n resolution\n ];\n });\n }\n evaluateProviderAndHooks(flagKey, defaultValue, provider, hookContext, hookHints) {\n return __async(this, null, function* () {\n var _a;\n let providerContext = void 0;\n let evaluationDetails;\n const hookContextCopy = __spreadProps(__spreadValues({}, hookContext), { context: __spreadValues({}, hookContext.context) });\n try {\n providerContext = yield this.hookExecutor.beforeHooks(provider.hooks, hookContextCopy, hookHints);\n const resolutionDetails = yield this.callProviderResolve(\n provider,\n flagKey,\n defaultValue,\n providerContext || {}\n );\n evaluationDetails = __spreadProps(__spreadValues({}, resolutionDetails), {\n flagMetadata: Object.freeze((_a = resolutionDetails.flagMetadata) != null ? _a : {}),\n flagKey\n });\n yield this.hookExecutor.afterHooks(provider.hooks, hookContextCopy, evaluationDetails, hookHints);\n } catch (error) {\n yield this.hookExecutor.errorHooks(provider.hooks, hookContextCopy, error, hookHints);\n evaluationDetails = this.getErrorEvaluationDetails(flagKey, defaultValue, error);\n }\n yield this.hookExecutor.finallyHooks(provider.hooks, hookContextCopy, evaluationDetails, hookHints);\n return evaluationDetails;\n });\n }\n callProviderResolve(provider, flagKey, defaultValue, context) {\n return __async(this, null, function* () {\n switch (typeof defaultValue) {\n case \"string\":\n return yield provider.resolveStringEvaluation(flagKey, defaultValue, context, this.logger);\n case \"number\":\n return yield provider.resolveNumberEvaluation(flagKey, defaultValue, context, this.logger);\n case \"object\":\n return yield provider.resolveObjectEvaluation(flagKey, defaultValue, context, this.logger);\n case \"boolean\":\n return yield provider.resolveBooleanEvaluation(flagKey, defaultValue, context, this.logger);\n default:\n throw new GeneralError2(\"Invalid flag evaluation type\");\n }\n });\n }\n get hooks() {\n return [\n {\n before: (hookContext, hints) => __async(this, null, function* () {\n this.hookContexts.set(hookContext.context, hookContext);\n this.hookHints.set(hookContext.context, hints != null ? hints : {});\n return hookContext.context;\n })\n }\n ];\n }\n track(trackingEventName, context, trackingEventDetails) {\n var _a, _b;\n for (const providerEntry of this.providerEntries) {\n if (!providerEntry.provider.track) {\n continue;\n }\n const strategyContext = {\n provider: providerEntry.provider,\n providerName: providerEntry.name,\n providerStatus: this.statusTracker.providerStatus(providerEntry.name)\n };\n if (this.evaluationStrategy.shouldTrackWithThisProvider(\n strategyContext,\n context,\n trackingEventName,\n trackingEventDetails\n )) {\n try {\n (_b = (_a = providerEntry.provider).track) == null ? void 0 : _b.call(_a, trackingEventName, context, trackingEventDetails);\n } catch (error) {\n this.logger.error(\n `Error tracking event \"${trackingEventName}\" with provider \"${providerEntry.name}\":`,\n error\n );\n }\n }\n }\n }\n getErrorEvaluationDetails(flagKey, defaultValue, err, flagMetadata = {}) {\n const errorMessage = err == null ? void 0 : err.message;\n const errorCode = (err == null ? void 0 : err.code) || ErrorCode2.GENERAL;\n return {\n errorCode,\n errorMessage,\n value: defaultValue,\n reason: StandardResolutionReasons2.ERROR,\n flagMetadata: Object.freeze(flagMetadata),\n flagKey\n };\n }\n};\n\n// src/open-feature.ts\nimport { OpenFeatureCommonAPI, ProviderWrapper, objectOrUndefined, stringOrUndefined } from \"@openfeature/core\";\n\n// src/client/internal/open-feature-client.ts\nimport {\n ErrorCode as ErrorCode3,\n ProviderFatalError,\n ProviderNotReadyError,\n SafeLogger,\n StandardResolutionReasons as StandardResolutionReasons3,\n instantiateErrorByErrorCode,\n statusMatchesEvent,\n MapHookData\n} from \"@openfeature/core\";\nvar OpenFeatureClient = class {\n constructor(providerAccessor, providerStatusAccessor, emitterAccessor, apiContextAccessor, apiHooksAccessor, transactionContextAccessor, globalLogger, options, context = {}) {\n this.providerAccessor = providerAccessor;\n this.providerStatusAccessor = providerStatusAccessor;\n this.emitterAccessor = emitterAccessor;\n this.apiContextAccessor = apiContextAccessor;\n this.apiHooksAccessor = apiHooksAccessor;\n this.transactionContextAccessor = transactionContextAccessor;\n this.globalLogger = globalLogger;\n this.options = options;\n this._hooks = [];\n this._context = context;\n }\n get metadata() {\n var _a, _b;\n return {\n // Use domain if name is not provided\n name: (_a = this.options.domain) != null ? _a : this.options.name,\n domain: (_b = this.options.domain) != null ? _b : this.options.name,\n version: this.options.version,\n providerMetadata: this.providerAccessor().metadata\n };\n }\n get providerStatus() {\n return this.providerStatusAccessor();\n }\n addHandler(eventType, handler, options) {\n var _a;\n this.emitterAccessor().addHandler(eventType, handler);\n const shouldRunNow = statusMatchesEvent(eventType, this._providerStatus);\n if (shouldRunNow) {\n try {\n handler({\n clientName: this.metadata.name,\n domain: this.metadata.domain,\n providerName: this._provider.metadata.name\n });\n } catch (err) {\n (_a = this._logger) == null ? void 0 : _a.error(\"Error running event handler:\", err);\n }\n }\n if ((options == null ? void 0 : options.signal) && typeof options.signal.addEventListener === \"function\") {\n options.signal.addEventListener(\"abort\", () => {\n this.removeHandler(eventType, handler);\n });\n }\n }\n removeHandler(eventType, handler) {\n this.emitterAccessor().removeHandler(eventType, handler);\n }\n getHandlers(eventType) {\n return this.emitterAccessor().getHandlers(eventType);\n }\n setLogger(logger) {\n this._clientLogger = new SafeLogger(logger);\n return this;\n }\n setContext(context) {\n this._context = context;\n return this;\n }\n getContext() {\n return this._context;\n }\n addHooks(...hooks) {\n this._hooks = [...this._hooks, ...hooks];\n return this;\n }\n getHooks() {\n return this._hooks;\n }\n clearHooks() {\n this._hooks = [];\n return this;\n }\n getBooleanValue(flagKey, defaultValue, context, options) {\n return __async(this, null, function* () {\n return (yield this.getBooleanDetails(flagKey, defaultValue, context, options)).value;\n });\n }\n getBooleanDetails(flagKey, defaultValue, context, options) {\n return this.evaluate(\n flagKey,\n this._provider.resolveBooleanEvaluation,\n defaultValue,\n \"boolean\",\n context,\n options\n );\n }\n getStringValue(flagKey, defaultValue, context, options) {\n return __async(this, null, function* () {\n return (yield this.getStringDetails(flagKey, defaultValue, context, options)).value;\n });\n }\n getStringDetails(flagKey, defaultValue, context, options) {\n return this.evaluate(\n flagKey,\n // this isolates providers from our restricted string generic argument.\n this._provider.resolveStringEvaluation,\n defaultValue,\n \"string\",\n context,\n options\n );\n }\n getNumberValue(flagKey, defaultValue, context, options) {\n return __async(this, null, function* () {\n return (yield this.getNumberDetails(flagKey, defaultValue, context, options)).value;\n });\n }\n getNumberDetails(flagKey, defaultValue, context, options) {\n return this.evaluate(\n flagKey,\n // this isolates providers from our restricted number generic argument.\n this._provider.resolveNumberEvaluation,\n defaultValue,\n \"number\",\n context,\n options\n );\n }\n getObjectValue(flagKey, defaultValue, context, options) {\n return __async(this, null, function* () {\n return (yield this.getObjectDetails(flagKey, defaultValue, context, options)).value;\n });\n }\n getObjectDetails(flagKey, defaultValue, context, options) {\n return this.evaluate(flagKey, this._provider.resolveObjectEvaluation, defaultValue, \"object\", context, options);\n }\n track(occurrenceKey, context = {}, occurrenceDetails = {}) {\n var _a, _b;\n try {\n this.shortCircuitIfNotReady();\n if (typeof this._provider.track === \"function\") {\n const frozenContext = Object.freeze(this.mergeContexts(context));\n return (_b = (_a = this._provider).track) == null ? void 0 : _b.call(_a, occurrenceKey, frozenContext, occurrenceDetails);\n } else {\n this._logger.debug(\"Provider does not support the track function; will no-op.\");\n }\n } catch (err) {\n this._logger.debug(\"Error recording tracking event.\", err);\n }\n }\n evaluate(_0, _1, _2, _3) {\n return __async(this, arguments, function* (flagKey, resolver, defaultValue, flagType, invocationContext = {}, options = {}) {\n var _a;\n const allHooks = [\n ...this.apiHooksAccessor(),\n ...this.getHooks(),\n ...options.hooks || [],\n ...this._provider.hooks || []\n ];\n const allHooksReversed = [...allHooks].reverse();\n const mergedContext = this.mergeContexts(invocationContext);\n const hookContexts = allHooksReversed.map(\n () => Object.freeze({\n flagKey,\n defaultValue,\n flagValueType: flagType,\n clientMetadata: this.metadata,\n providerMetadata: this._provider.metadata,\n context: mergedContext,\n logger: this._logger,\n hookData: new MapHookData()\n })\n );\n let evaluationDetails;\n try {\n const frozenContext = yield this.beforeHooks(allHooks, hookContexts, mergedContext, options);\n this.shortCircuitIfNotReady();\n const resolution = yield resolver.call(this._provider, flagKey, defaultValue, frozenContext, this._logger);\n const resolutionDetails = __spreadProps(__spreadValues({}, resolution), {\n flagMetadata: Object.freeze((_a = resolution.flagMetadata) != null ? _a : {}),\n flagKey\n });\n if (resolutionDetails.errorCode) {\n const err = instantiateErrorByErrorCode(resolutionDetails.errorCode, resolutionDetails.errorMessage);\n yield this.errorHooks(allHooksReversed, hookContexts, err, options);\n evaluationDetails = this.getErrorEvaluationDetails(flagKey, defaultValue, err, resolutionDetails.flagMetadata);\n } else {\n yield this.afterHooks(allHooksReversed, hookContexts, resolutionDetails, options);\n evaluationDetails = resolutionDetails;\n }\n } catch (err) {\n yield this.errorHooks(allHooksReversed, hookContexts, err, options);\n evaluationDetails = this.getErrorEvaluationDetails(flagKey, defaultValue, err);\n }\n yield this.finallyHooks(allHooksReversed, hookContexts, evaluationDetails, options);\n return evaluationDetails;\n });\n }\n beforeHooks(hooks, hookContexts, mergedContext, options) {\n return __async(this, null, function* () {\n var _a;\n const accumulatedContext = mergedContext;\n for (const [index, hook] of hooks.entries()) {\n const hookContextIndex = hooks.length - 1 - index;\n const hookContext = hookContexts[hookContextIndex];\n Object.assign(hookContext.context, accumulatedContext);\n const hookResult = yield (_a = hook == null ? void 0 : hook.before) == null ? void 0 : _a.call(hook, hookContext, Object.freeze(options.hookHints));\n if (hookResult) {\n Object.assign(accumulatedContext, hookResult);\n Object.assign(hookContext.context, accumulatedContext);\n }\n }\n return Object.freeze(accumulatedContext);\n });\n }\n afterHooks(hooks, hookContexts, evaluationDetails, options) {\n return __async(this, null, function* () {\n var _a;\n for (const [index, hook] of hooks.entries()) {\n const hookContext = hookContexts[index];\n yield (_a = hook == null ? void 0 : hook.after) == null ? void 0 : _a.call(hook, hookContext, evaluationDetails, options.hookHints);\n }\n });\n }\n errorHooks(hooks, hookContexts, err, options) {\n return __async(this, null, function* () {\n var _a;\n for (const [index, hook] of hooks.entries()) {\n try {\n const hookContext = hookContexts[index];\n yield (_a = hook == null ? void 0 : hook.error) == null ? void 0 : _a.call(hook, hookContext, err, options.hookHints);\n } catch (err2) {\n this._logger.error(`Unhandled error during 'error' hook: ${err2}`);\n if (err2 instanceof Error) {\n this._logger.error(err2.stack);\n }\n this._logger.error(err2 == null ? void 0 : err2.stack);\n }\n }\n });\n }\n finallyHooks(hooks, hookContexts, evaluationDetails, options) {\n return __async(this, null, function* () {\n var _a;\n for (const [index, hook] of hooks.entries()) {\n try {\n const hookContext = hookContexts[index];\n yield (_a = hook == null ? void 0 : hook.finally) == null ? void 0 : _a.call(hook, hookContext, evaluationDetails, 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 == null ? void 0 : err.stack);\n }\n }\n });\n }\n get _provider() {\n return this.providerAccessor();\n }\n get _providerStatus() {\n return this.providerStatusAccessor();\n }\n get _logger() {\n return this._clientLogger || this.globalLogger();\n }\n mergeContexts(invocationContext) {\n return __spreadValues(__spreadValues(__spreadValues(__spreadValues({}, this.apiContextAccessor()), this.transactionContextAccessor()), this._context), invocationContext);\n }\n shortCircuitIfNotReady() {\n if (this.providerStatus === ServerProviderStatus.NOT_READY) {\n throw new ProviderNotReadyError(\"provider has not yet initialized\");\n } else if (this.providerStatus === ServerProviderStatus.FATAL) {\n throw new ProviderFatalError(\"provider is in an irrecoverable error state\");\n }\n }\n getErrorEvaluationDetails(flagKey, defaultValue, err, flagMetadata = {}) {\n const errorMessage = err == null ? void 0 : err.message;\n const errorCode = (err == null ? void 0 : err.code) || ErrorCode3.GENERAL;\n return {\n errorCode,\n errorMessage,\n value: defaultValue,\n reason: StandardResolutionReasons3.ERROR,\n flagMetadata: Object.freeze(flagMetadata),\n flagKey\n };\n }\n};\n\n// src/transaction-context/no-op-transaction-context-propagator.ts\nvar NoopTransactionContextPropagator = class {\n getTransactionContext() {\n return {};\n }\n setTransactionContext(_, callback, ...args) {\n callback(...args);\n }\n};\nvar NOOP_TRANSACTION_CONTEXT_PROPAGATOR = new NoopTransactionContextPropagator();\n\n// src/transaction-context/async-local-storage-transaction-context-propagator.ts\nimport { AsyncLocalStorage } from \"async_hooks\";\nvar AsyncLocalStorageTransactionContextPropagator = class {\n constructor() {\n this.asyncLocalStorage = new AsyncLocalStorage();\n }\n getTransactionContext() {\n var _a;\n return (_a = this.asyncLocalStorage.getStore()) != null ? _a : {};\n }\n setTransactionContext(transactionContext, callback, ...args) {\n this.asyncLocalStorage.run(transactionContext, callback, ...args);\n }\n};\n\n// src/open-feature.ts\nvar GLOBAL_OPENFEATURE_API_KEY = Symbol.for(\"@openfeature/js-sdk/api\");\nvar _globalThis = globalThis;\nvar OpenFeatureAPI = class _OpenFeatureAPI extends OpenFeatureCommonAPI {\n constructor() {\n super(\"server\");\n this._statusEnumType = ServerProviderStatus;\n this._apiEmitter = new OpenFeatureEventEmitter();\n this._defaultProvider = new ProviderWrapper(\n NOOP_PROVIDER,\n ServerProviderStatus.NOT_READY,\n this._statusEnumType\n );\n this._domainScopedProviders = /* @__PURE__ */ new Map();\n this._createEventEmitter = () => new OpenFeatureEventEmitter();\n this._transactionContextPropagator = NOOP_TRANSACTION_CONTEXT_PROPAGATOR;\n }\n /**\n * Gets a singleton instance of the OpenFeature API.\n * @ignore\n * @returns {OpenFeatureAPI} OpenFeature API\n */\n static getInstance() {\n const globalApi = _globalThis[GLOBAL_OPENFEATURE_API_KEY];\n if (globalApi) {\n return globalApi;\n }\n const instance = new _OpenFeatureAPI();\n _globalThis[GLOBAL_OPENFEATURE_API_KEY] = instance;\n return instance;\n }\n getProviderStatus(domain) {\n var _a, _b;\n if (!domain) {\n return this._defaultProvider.status;\n }\n return (_b = (_a = this._domainScopedProviders.get(domain)) == null ? void 0 : _a.status) != null ? _b : this._defaultProvider.status;\n }\n setProviderAndWait(domainOrProvider, providerOrUndefined) {\n return __async(this, null, function* () {\n const domain = stringOrUndefined(domainOrProvider);\n const provider = domain ? objectOrUndefined(providerOrUndefined) : objectOrUndefined(domainOrProvider);\n yield this.setAwaitableProvider(domain, provider);\n });\n }\n setProvider(clientOrProvider, providerOrUndefined) {\n const domain = stringOrUndefined(clientOrProvider);\n const provider = domain ? objectOrUndefined(providerOrUndefined) : objectOrUndefined(clientOrProvider);\n const maybePromise = this.setAwaitableProvider(domain, provider);\n Promise.resolve(maybePromise).catch((err) => {\n this._logger.error(\"Error during provider initialization:\", err);\n });\n return this;\n }\n getProvider(domain) {\n return this.getProviderForClient(domain);\n }\n setContext(context) {\n this._context = context;\n return this;\n }\n getContext() {\n return this._context;\n }\n getClient(domainOrContext, versionOrContext, contextOrUndefined) {\n var _a, _b;\n const domain = stringOrUndefined(domainOrContext);\n const version = stringOrUndefined(versionOrContext);\n const context = (_b = (_a = objectOrUndefined(domainOrContext)) != null ? _a : objectOrUndefined(versionOrContext)) != null ? _b : objectOrUndefined(contextOrUndefined);\n return new OpenFeatureClient(\n () => this.getProviderForClient(domain),\n () => this.getProviderStatus(domain),\n () => this.buildAndCacheEventEmitterForClient(domain),\n () => this.getContext(),\n () => this.getHooks(),\n () => this.getTransactionContext(),\n () => this._logger,\n { domain, version },\n context\n );\n }\n /**\n * Clears all registered providers and resets the default provider.\n * @returns {Promise<void>}\n */\n clearProviders() {\n return super.clearProvidersAndSetDefault(NOOP_PROVIDER);\n }\n setTransactionContextPropagator(transactionContextPropagator) {\n const baseMessage = \"Invalid TransactionContextPropagator, will not be set: \";\n if (typeof (transactionContextPropagator == null ? void 0 : transactionContextPropagator.getTransactionContext) !== \"function\") {\n this._logger.error(`${baseMessage}: getTransactionContext is not a function.`);\n } else if (typeof (transactionContextPropagator == null ? void 0 : 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 setTransactionContext(transactionContext, callback, ...args) {\n this._transactionContextPropagator.setTransactionContext(transactionContext, callback, ...args);\n }\n getTransactionContext() {\n try {\n return this._transactionContextPropagator.getTransactionContext();\n } catch (err) {\n const error = err;\n this._logger.error(`Error getting transaction context: ${error == null ? void 0 : error.message}, returning empty context.`);\n this._logger.error(error == null ? void 0 : error.stack);\n return {};\n }\n }\n};\nvar OpenFeature = OpenFeatureAPI.getInstance();\n\n// src/index.ts\nexport * from \"@openfeature/core\";\nexport {\n AsyncLocalStorageTransactionContextPropagator,\n ComparisonStrategy,\n FirstMatchStrategy,\n FirstSuccessfulStrategy,\n InMemoryProvider,\n MultiProvider,\n NOOP_PROVIDER,\n NOOP_TRANSACTION_CONTEXT_PROPAGATOR,\n OpenFeature,\n OpenFeatureAPI,\n OpenFeatureEventEmitter,\n ServerProviderEvents as ProviderEvents,\n ServerProviderStatus as ProviderStatus\n};\n//# sourceMappingURL=index.js.map\n"],"x_google_ignoreList":[0],"mappings":"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"}
@@ -1,41 +0,0 @@
1
- import { AnyProviderEvent, BaseHook, BeforeHookContext, ClientMetadata, ClientProviderEvents, ClientProviderStatus, CommonEventDetails, CommonProvider, ConfigChangeEvent, ErrorCode, ErrorEvent, EvaluationContext, EvaluationContextValue, EvaluationDetails, EventContext, EventDetails, EventHandler, EventMetadata, FlagMetadata, FlagValue, FlagValueType, HookContext, HookData, HookHints, JsonArray, JsonObject, JsonValue, Logger, ManageLogger, Metadata, Paradigm, PrimitiveValue, ProviderEventEmitter, ProviderMetadata, ProviderWrapper, ReadyEvent, ResolutionDetails, ResolutionReason, ServerProviderEvents, ServerProviderStatus, StaleEvent, StandardResolutionReasons, TrackingEventDetails, TrackingEventValue } from "../../../../../@openfeature_core@1.9.2/node_modules/@openfeature/core/dist/types.cjs";
2
-
3
- //#region ../../node_modules/.pnpm/@openfeature+server-sdk@1.20.2_@openfeature+core@1.9.2/node_modules/@openfeature/server-sdk/dist/types.d.ts
4
- type Hook<TData = Record<string, unknown>> = BaseHook<FlagValue, TData, Promise<EvaluationContext | void> | EvaluationContext | void, Promise<void> | void>;
5
- /**
6
- * Interface that providers must implement to resolve flag values for their particular
7
- * backend or vendor.
8
- *
9
- * Implementation for resolving all the required flag types must be defined.
10
- */
11
- interface Provider extends CommonProvider<ServerProviderStatus> {
12
- /**
13
- * A provider hook exposes a mechanism for provider authors to register hooks
14
- * to tap into various stages of the flag evaluation lifecycle. These hooks can
15
- * be used to perform side effects and mutate the context for purposes of the
16
- * provider. Provider hooks are not configured or controlled by the application author.
17
- */
18
- readonly hooks?: Hook[];
19
- /**
20
- * Resolve a boolean flag and its evaluation details.
21
- */
22
- resolveBooleanEvaluation(flagKey: string, defaultValue: boolean, context: EvaluationContext, logger: Logger): Promise<ResolutionDetails<boolean>>;
23
- /**
24
- * Resolve a string flag and its evaluation details.
25
- */
26
- resolveStringEvaluation(flagKey: string, defaultValue: string, context: EvaluationContext, logger: Logger): Promise<ResolutionDetails<string>>;
27
- /**
28
- * Resolve a numeric flag and its evaluation details.
29
- */
30
- resolveNumberEvaluation(flagKey: string, defaultValue: number, context: EvaluationContext, logger: Logger): Promise<ResolutionDetails<number>>;
31
- /**
32
- * Resolve and parse an object flag and its evaluation details.
33
- */
34
- resolveObjectEvaluation<T extends JsonValue>(flagKey: string, defaultValue: T, context: EvaluationContext, logger: Logger): Promise<ResolutionDetails<T>>;
35
- }
36
- /**
37
- * The No-op provider is set by default, and simply always returns the default value.
38
- */
39
- //#endregion
40
- export { type Provider };
41
- //# sourceMappingURL=types.d.cts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"types.d.cts","names":["BaseHook","FlagValue","EvaluationContext","HookHints","EvaluationDetails","JsonValue","CommonProvider","ServerProviderStatus","Logger","ResolutionDetails","GenericEventEmitter","ServerProviderEvents","ProviderEntryInput","ProviderMetadata","RegisteredProvider","BaseEvaluationStrategy","TrackingEventDetails","BaseStrategyProviderContext","BaseStrategyPerProviderContext","BaseProviderResolutionResult","BaseProviderResolutionSuccessResult","BaseProviderResolutionErrorResult","BaseFinalResult","BaseFirstMatchStrategy","BaseFirstSuccessfulStrategy","BaseComparisonStrategy","EvaluationLifeCycle","ManageContext","ManageLogger","Eventing","ClientMetadata","OpenFeatureCommonAPI","ProviderWrapper","ProviderEvents","ProviderStatus","StrategyEvaluationContext","EventEmitter","Hook","TData","Record","Promise","FlagEvaluationOptions","hooks","hookHints","Features","T","getBooleanValue","flagKey","defaultValue","context","options","getBooleanDetails","getStringValue","getStringDetails","getNumberValue","getNumberDetails","getObjectValue","getObjectDetails","Provider","resolveBooleanEvaluation","logger","resolveStringEvaluation","resolveNumberEvaluation","resolveObjectEvaluation","NoopFeatureProvider","metadata","name","_","noOp","NOOP_PROVIDER","Variants","Flag","variants","defaultVariant","disabled","contextEvaluator","ctx","FlagConfiguration","InMemoryProvider","OpenFeatureEventEmitter","events","runsOn","_flagConfiguration","constructor","flagConfiguration","putConfiguration","resolveFlagWithReason","lookupFlagValue","eventEmitter","MultiProvider","U","constructorProviders","evaluationStrategy","hookContexts","providerEntries","providerEntriesByName","hookExecutor","statusTracker","registerProviders","initialize","onClose","flagResolutionProxy","evaluateProviderEntry","evaluateProviderAndHooks","callProviderResolve","track","trackingEventName","trackingEventDetails","getErrorEvaluationDetails","StrategyProviderContext","StrategyPerProviderContext","ProviderResolutionResult","ProviderResolutionSuccessResult","ProviderResolutionErrorResult","FinalResult","FirstMatchStrategy","FirstSuccessfulStrategy","ComparisonStrategy","fallbackProvider","resolutions","onMismatch","Tracking","Client","providerStatus","TransactionContext","ManageTransactionContextPropagator","TransactionContextPropagator","setTransactionContextPropagator","transactionContextPropagator","TArgs","R","getTransactionContext","setTransactionContext","transactionContext","args","callback","NoopTransactionContextPropagator","NOOP_TRANSACTION_CONTEXT_PROPAGATOR","AsyncLocalStorageTransactionContextPropagator","asyncLocalStorage","OpenFeatureAPI","Map","_statusEnumType","_apiEmitter","_defaultProvider","_domainScopedProviders","_createEventEmitter","_transactionContextPropagator","getInstance","getProviderStatus","setProviderAndWait","provider","domain","setProvider","getProvider","setContext","getContext","getClient","version","clearProviders","OpenFeature"],"sources":["../../../../../../../../../../node_modules/.pnpm/@openfeature+server-sdk@1.20.2_@openfeature+core@1.9.2/node_modules/@openfeature/server-sdk/dist/types.d.ts"],"x_google_ignoreList":[0],"mappings":";;;KAKKqC,IAAAA,SAAaE,MAAAA,qBAA2BvC,QAAAA,CAASC,SAAAA,EAAWqC,KAAAA,EAAOE,OAAAA,CAAQtC,iBAAAA,WAA4BA,iBAAAA,SAA0BsC,OAAAA;;;;;;;UAmG5HkB,QAAAA,SAAiBpD,cAAAA,CAAeC,oBAAAA;;;;;;;WAO7BmC,KAAAA,GAAQL,IAAAA;;;;EAIjBsB,wBAAAA,CAAyBZ,OAAAA,UAAiBC,YAAAA,WAAuBC,OAAAA,EAAS/C,iBAAAA,EAAmB0D,MAAAA,EAAQpD,MAAAA,GAASgC,OAAAA,CAAQ/B,iBAAAA;;;;EAItHoD,uBAAAA,CAAwBd,OAAAA,UAAiBC,YAAAA,UAAsBC,OAAAA,EAAS/C,iBAAAA,EAAmB0D,MAAAA,EAAQpD,MAAAA,GAASgC,OAAAA,CAAQ/B,iBAAAA;;;;EAIpHqD,uBAAAA,CAAwBf,OAAAA,UAAiBC,YAAAA,UAAsBC,OAAAA,EAAS/C,iBAAAA,EAAmB0D,MAAAA,EAAQpD,MAAAA,GAASgC,OAAAA,CAAQ/B,iBAAAA;;;;EAIpHsD,uBAAAA,WAAkC1D,SAAAA,EAAW0C,OAAAA,UAAiBC,YAAAA,EAAcH,CAAAA,EAAGI,OAAAA,EAAS/C,iBAAAA,EAAmB0D,MAAAA,EAAQpD,MAAAA,GAASgC,OAAAA,CAAQ/B,iBAAAA,CAAkBoC,CAAAA;AAAAA"}
@@ -1,42 +0,0 @@
1
- import { AnyProviderEvent, BaseHook, BeforeHookContext, ClientMetadata, ClientProviderEvents, ClientProviderStatus, CommonEventDetails, CommonProvider, ConfigChangeEvent, ErrorCode, ErrorEvent, EvaluationContext, EvaluationContextValue, EvaluationDetails, EventContext, EventDetails, EventHandler, EventMetadata, FlagMetadata, FlagValue, FlagValueType, HookContext, HookData, HookHints, JsonArray, JsonObject, JsonValue, Logger, ManageLogger, Metadata, Paradigm, PrimitiveValue, ProviderEventEmitter, ProviderMetadata, ProviderWrapper, ReadyEvent, ResolutionDetails, ResolutionReason, ServerProviderEvents, ServerProviderStatus, StaleEvent, StandardResolutionReasons, TrackingEventDetails, TrackingEventValue } from "../../../../../@openfeature_core@1.9.2/node_modules/@openfeature/core/dist/types.mjs";
2
- import { EventEmitter } from "node:events";
3
-
4
- //#region ../../node_modules/.pnpm/@openfeature+server-sdk@1.20.2_@openfeature+core@1.9.2/node_modules/@openfeature/server-sdk/dist/types.d.ts
5
- type Hook<TData = Record<string, unknown>> = BaseHook<FlagValue, TData, Promise<EvaluationContext | void> | EvaluationContext | void, Promise<void> | void>;
6
- /**
7
- * Interface that providers must implement to resolve flag values for their particular
8
- * backend or vendor.
9
- *
10
- * Implementation for resolving all the required flag types must be defined.
11
- */
12
- interface Provider extends CommonProvider<ServerProviderStatus> {
13
- /**
14
- * A provider hook exposes a mechanism for provider authors to register hooks
15
- * to tap into various stages of the flag evaluation lifecycle. These hooks can
16
- * be used to perform side effects and mutate the context for purposes of the
17
- * provider. Provider hooks are not configured or controlled by the application author.
18
- */
19
- readonly hooks?: Hook[];
20
- /**
21
- * Resolve a boolean flag and its evaluation details.
22
- */
23
- resolveBooleanEvaluation(flagKey: string, defaultValue: boolean, context: EvaluationContext, logger: Logger): Promise<ResolutionDetails<boolean>>;
24
- /**
25
- * Resolve a string flag and its evaluation details.
26
- */
27
- resolveStringEvaluation(flagKey: string, defaultValue: string, context: EvaluationContext, logger: Logger): Promise<ResolutionDetails<string>>;
28
- /**
29
- * Resolve a numeric flag and its evaluation details.
30
- */
31
- resolveNumberEvaluation(flagKey: string, defaultValue: number, context: EvaluationContext, logger: Logger): Promise<ResolutionDetails<number>>;
32
- /**
33
- * Resolve and parse an object flag and its evaluation details.
34
- */
35
- resolveObjectEvaluation<T extends JsonValue>(flagKey: string, defaultValue: T, context: EvaluationContext, logger: Logger): Promise<ResolutionDetails<T>>;
36
- }
37
- /**
38
- * The No-op provider is set by default, and simply always returns the default value.
39
- */
40
- //#endregion
41
- export { type Provider };
42
- //# sourceMappingURL=types.d.mts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"types.d.mts","names":["BaseHook","FlagValue","EvaluationContext","HookHints","EvaluationDetails","JsonValue","CommonProvider","ServerProviderStatus","Logger","ResolutionDetails","GenericEventEmitter","ServerProviderEvents","ProviderEntryInput","ProviderMetadata","RegisteredProvider","BaseEvaluationStrategy","TrackingEventDetails","BaseStrategyProviderContext","BaseStrategyPerProviderContext","BaseProviderResolutionResult","BaseProviderResolutionSuccessResult","BaseProviderResolutionErrorResult","BaseFinalResult","BaseFirstMatchStrategy","BaseFirstSuccessfulStrategy","BaseComparisonStrategy","EvaluationLifeCycle","ManageContext","ManageLogger","Eventing","ClientMetadata","OpenFeatureCommonAPI","ProviderWrapper","ProviderEvents","ProviderStatus","StrategyEvaluationContext","EventEmitter","Hook","TData","Record","Promise","FlagEvaluationOptions","hooks","hookHints","Features","T","getBooleanValue","flagKey","defaultValue","context","options","getBooleanDetails","getStringValue","getStringDetails","getNumberValue","getNumberDetails","getObjectValue","getObjectDetails","Provider","resolveBooleanEvaluation","logger","resolveStringEvaluation","resolveNumberEvaluation","resolveObjectEvaluation","NoopFeatureProvider","metadata","name","_","noOp","NOOP_PROVIDER","Variants","Flag","variants","defaultVariant","disabled","contextEvaluator","ctx","FlagConfiguration","InMemoryProvider","OpenFeatureEventEmitter","events","runsOn","_flagConfiguration","constructor","flagConfiguration","putConfiguration","resolveFlagWithReason","lookupFlagValue","eventEmitter","MultiProvider","U","constructorProviders","evaluationStrategy","hookContexts","providerEntries","providerEntriesByName","hookExecutor","statusTracker","registerProviders","initialize","onClose","flagResolutionProxy","evaluateProviderEntry","evaluateProviderAndHooks","callProviderResolve","track","trackingEventName","trackingEventDetails","getErrorEvaluationDetails","StrategyProviderContext","StrategyPerProviderContext","ProviderResolutionResult","ProviderResolutionSuccessResult","ProviderResolutionErrorResult","FinalResult","FirstMatchStrategy","FirstSuccessfulStrategy","ComparisonStrategy","fallbackProvider","resolutions","onMismatch","Tracking","Client","providerStatus","TransactionContext","ManageTransactionContextPropagator","TransactionContextPropagator","setTransactionContextPropagator","transactionContextPropagator","TArgs","R","getTransactionContext","setTransactionContext","transactionContext","args","callback","NoopTransactionContextPropagator","NOOP_TRANSACTION_CONTEXT_PROPAGATOR","AsyncLocalStorageTransactionContextPropagator","asyncLocalStorage","OpenFeatureAPI","Map","_statusEnumType","_apiEmitter","_defaultProvider","_domainScopedProviders","_createEventEmitter","_transactionContextPropagator","getInstance","getProviderStatus","setProviderAndWait","provider","domain","setProvider","getProvider","setContext","getContext","getClient","version","clearProviders","OpenFeature"],"sources":["../../../../../../../../../../node_modules/.pnpm/@openfeature+server-sdk@1.20.2_@openfeature+core@1.9.2/node_modules/@openfeature/server-sdk/dist/types.d.ts"],"x_google_ignoreList":[0],"mappings":";;;;KAKKqC,IAAAA,SAAaE,MAAAA,qBAA2BvC,QAAAA,CAASC,SAAAA,EAAWqC,KAAAA,EAAOE,OAAAA,CAAQtC,iBAAAA,WAA4BA,iBAAAA,SAA0BsC,OAAAA;;;;;;;UAmG5HkB,QAAAA,SAAiBpD,cAAAA,CAAeC,oBAAAA;;;;;;;WAO7BmC,KAAAA,GAAQL,IAAAA;;;;EAIjBsB,wBAAAA,CAAyBZ,OAAAA,UAAiBC,YAAAA,WAAuBC,OAAAA,EAAS/C,iBAAAA,EAAmB0D,MAAAA,EAAQpD,MAAAA,GAASgC,OAAAA,CAAQ/B,iBAAAA;;;;EAItHoD,uBAAAA,CAAwBd,OAAAA,UAAiBC,YAAAA,UAAsBC,OAAAA,EAAS/C,iBAAAA,EAAmB0D,MAAAA,EAAQpD,MAAAA,GAASgC,OAAAA,CAAQ/B,iBAAAA;;;;EAIpHqD,uBAAAA,CAAwBf,OAAAA,UAAiBC,YAAAA,UAAsBC,OAAAA,EAAS/C,iBAAAA,EAAmB0D,MAAAA,EAAQpD,MAAAA,GAASgC,OAAAA,CAAQ/B,iBAAAA;;;;EAIpHsD,uBAAAA,WAAkC1D,SAAAA,EAAW0C,OAAAA,UAAiBC,YAAAA,EAAcH,CAAAA,EAAGI,OAAAA,EAAS/C,iBAAAA,EAAmB0D,MAAAA,EAAQpD,MAAAA,GAASgC,OAAAA,CAAQ/B,iBAAAA,CAAkBoC,CAAAA;AAAAA"}