@powerlines/plugin-open-feature 0.1.2 → 0.1.3

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,423 +0,0 @@
1
- const require_runtime = require('../../../../../../../../_virtual/_rolldown/runtime.cjs');
2
- const require_index = require('../../../../../../@openfeature_core@1.9.2/node_modules/@openfeature/core/dist/esm/index.cjs');
3
- let node_events = require("node:events");
4
-
5
- //#region ../../node_modules/.pnpm/@openfeature+server-sdk@1.20.2_@openfeature+core@1.9.2/node_modules/@openfeature/server-sdk/dist/esm/index.js
6
- var __defProp = Object.defineProperty;
7
- var __defProps = Object.defineProperties;
8
- var __getOwnPropDescs = Object.getOwnPropertyDescriptors;
9
- var __getOwnPropSymbols = Object.getOwnPropertySymbols;
10
- var __hasOwnProp = Object.prototype.hasOwnProperty;
11
- var __propIsEnum = Object.prototype.propertyIsEnumerable;
12
- var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, {
13
- enumerable: true,
14
- configurable: true,
15
- writable: true,
16
- value
17
- }) : obj[key] = value;
18
- var __spreadValues = (a, b) => {
19
- for (var prop in b || (b = {})) if (__hasOwnProp.call(b, prop)) __defNormalProp(a, prop, b[prop]);
20
- if (__getOwnPropSymbols) {
21
- for (var prop of __getOwnPropSymbols(b)) if (__propIsEnum.call(b, prop)) __defNormalProp(a, prop, b[prop]);
22
- }
23
- return a;
24
- };
25
- var __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));
26
- var __async = (__this, __arguments, generator) => {
27
- return new Promise((resolve, reject) => {
28
- var fulfilled = (value) => {
29
- try {
30
- step(generator.next(value));
31
- } catch (e) {
32
- reject(e);
33
- }
34
- };
35
- var rejected = (value) => {
36
- try {
37
- step(generator.throw(value));
38
- } catch (e) {
39
- reject(e);
40
- }
41
- };
42
- var step = (x) => x.done ? resolve(x.value) : Promise.resolve(x.value).then(fulfilled, rejected);
43
- step((generator = generator.apply(__this, __arguments)).next());
44
- });
45
- };
46
- var REASON_NO_OP = "No-op";
47
- var NoopFeatureProvider = class {
48
- constructor() {
49
- this.metadata = { name: "No-op Provider" };
50
- }
51
- resolveBooleanEvaluation(_, defaultValue) {
52
- return this.noOp(defaultValue);
53
- }
54
- resolveStringEvaluation(_, defaultValue) {
55
- return this.noOp(defaultValue);
56
- }
57
- resolveNumberEvaluation(_, defaultValue) {
58
- return this.noOp(defaultValue);
59
- }
60
- resolveObjectEvaluation(_, defaultValue) {
61
- return this.noOp(defaultValue);
62
- }
63
- noOp(defaultValue) {
64
- return Promise.resolve({
65
- value: defaultValue,
66
- reason: REASON_NO_OP
67
- });
68
- }
69
- };
70
- var NOOP_PROVIDER = new NoopFeatureProvider();
71
- var OpenFeatureEventEmitter = class extends require_index.GenericEventEmitter {
72
- constructor() {
73
- super();
74
- this.eventEmitter = new node_events.EventEmitter({ captureRejections: true });
75
- this.eventEmitter.on("error", (err) => {
76
- var _a;
77
- (_a = this._logger) == null || _a.error("Error running event handler:", err);
78
- });
79
- }
80
- };
81
- var OpenFeatureClient = class {
82
- constructor(providerAccessor, providerStatusAccessor, emitterAccessor, apiContextAccessor, apiHooksAccessor, transactionContextAccessor, globalLogger, options, context = {}) {
83
- this.providerAccessor = providerAccessor;
84
- this.providerStatusAccessor = providerStatusAccessor;
85
- this.emitterAccessor = emitterAccessor;
86
- this.apiContextAccessor = apiContextAccessor;
87
- this.apiHooksAccessor = apiHooksAccessor;
88
- this.transactionContextAccessor = transactionContextAccessor;
89
- this.globalLogger = globalLogger;
90
- this.options = options;
91
- this._hooks = [];
92
- this._context = context;
93
- }
94
- get metadata() {
95
- var _a, _b;
96
- return {
97
- name: (_a = this.options.domain) != null ? _a : this.options.name,
98
- domain: (_b = this.options.domain) != null ? _b : this.options.name,
99
- version: this.options.version,
100
- providerMetadata: this.providerAccessor().metadata
101
- };
102
- }
103
- get providerStatus() {
104
- return this.providerStatusAccessor();
105
- }
106
- addHandler(eventType, handler, options) {
107
- var _a;
108
- this.emitterAccessor().addHandler(eventType, handler);
109
- if (require_index.statusMatchesEvent(eventType, this._providerStatus)) try {
110
- handler({
111
- clientName: this.metadata.name,
112
- domain: this.metadata.domain,
113
- providerName: this._provider.metadata.name
114
- });
115
- } catch (err) {
116
- (_a = this._logger) == null || _a.error("Error running event handler:", err);
117
- }
118
- if ((options == null ? void 0 : options.signal) && typeof options.signal.addEventListener === "function") options.signal.addEventListener("abort", () => {
119
- this.removeHandler(eventType, handler);
120
- });
121
- }
122
- removeHandler(eventType, handler) {
123
- this.emitterAccessor().removeHandler(eventType, handler);
124
- }
125
- getHandlers(eventType) {
126
- return this.emitterAccessor().getHandlers(eventType);
127
- }
128
- setLogger(logger) {
129
- this._clientLogger = new require_index.SafeLogger(logger);
130
- return this;
131
- }
132
- setContext(context) {
133
- this._context = context;
134
- return this;
135
- }
136
- getContext() {
137
- return this._context;
138
- }
139
- addHooks(...hooks) {
140
- this._hooks = [...this._hooks, ...hooks];
141
- return this;
142
- }
143
- getHooks() {
144
- return this._hooks;
145
- }
146
- clearHooks() {
147
- this._hooks = [];
148
- return this;
149
- }
150
- getBooleanValue(flagKey, defaultValue, context, options) {
151
- return __async(this, null, function* () {
152
- return (yield this.getBooleanDetails(flagKey, defaultValue, context, options)).value;
153
- });
154
- }
155
- getBooleanDetails(flagKey, defaultValue, context, options) {
156
- return this.evaluate(flagKey, this._provider.resolveBooleanEvaluation, defaultValue, "boolean", context, options);
157
- }
158
- getStringValue(flagKey, defaultValue, context, options) {
159
- return __async(this, null, function* () {
160
- return (yield this.getStringDetails(flagKey, defaultValue, context, options)).value;
161
- });
162
- }
163
- getStringDetails(flagKey, defaultValue, context, options) {
164
- return this.evaluate(flagKey, this._provider.resolveStringEvaluation, defaultValue, "string", context, options);
165
- }
166
- getNumberValue(flagKey, defaultValue, context, options) {
167
- return __async(this, null, function* () {
168
- return (yield this.getNumberDetails(flagKey, defaultValue, context, options)).value;
169
- });
170
- }
171
- getNumberDetails(flagKey, defaultValue, context, options) {
172
- return this.evaluate(flagKey, this._provider.resolveNumberEvaluation, defaultValue, "number", context, options);
173
- }
174
- getObjectValue(flagKey, defaultValue, context, options) {
175
- return __async(this, null, function* () {
176
- return (yield this.getObjectDetails(flagKey, defaultValue, context, options)).value;
177
- });
178
- }
179
- getObjectDetails(flagKey, defaultValue, context, options) {
180
- return this.evaluate(flagKey, this._provider.resolveObjectEvaluation, defaultValue, "object", context, options);
181
- }
182
- track(occurrenceKey, context = {}, occurrenceDetails = {}) {
183
- var _a, _b;
184
- try {
185
- this.shortCircuitIfNotReady();
186
- if (typeof this._provider.track === "function") {
187
- const frozenContext = Object.freeze(this.mergeContexts(context));
188
- return (_b = (_a = this._provider).track) == null ? void 0 : _b.call(_a, occurrenceKey, frozenContext, occurrenceDetails);
189
- } else this._logger.debug("Provider does not support the track function; will no-op.");
190
- } catch (err) {
191
- this._logger.debug("Error recording tracking event.", err);
192
- }
193
- }
194
- evaluate(_0, _1, _2, _3) {
195
- return __async(this, arguments, function* (flagKey, resolver, defaultValue, flagType, invocationContext = {}, options = {}) {
196
- var _a;
197
- const allHooks = [
198
- ...this.apiHooksAccessor(),
199
- ...this.getHooks(),
200
- ...options.hooks || [],
201
- ...this._provider.hooks || []
202
- ];
203
- const allHooksReversed = [...allHooks].reverse();
204
- const mergedContext = this.mergeContexts(invocationContext);
205
- const hookContexts = allHooksReversed.map(() => Object.freeze({
206
- flagKey,
207
- defaultValue,
208
- flagValueType: flagType,
209
- clientMetadata: this.metadata,
210
- providerMetadata: this._provider.metadata,
211
- context: mergedContext,
212
- logger: this._logger,
213
- hookData: new require_index.MapHookData()
214
- }));
215
- let evaluationDetails;
216
- try {
217
- const frozenContext = yield this.beforeHooks(allHooks, hookContexts, mergedContext, options);
218
- this.shortCircuitIfNotReady();
219
- const resolution = yield resolver.call(this._provider, flagKey, defaultValue, frozenContext, this._logger);
220
- const resolutionDetails = __spreadProps(__spreadValues({}, resolution), {
221
- flagMetadata: Object.freeze((_a = resolution.flagMetadata) != null ? _a : {}),
222
- flagKey
223
- });
224
- if (resolutionDetails.errorCode) {
225
- const err = require_index.instantiateErrorByErrorCode(resolutionDetails.errorCode, resolutionDetails.errorMessage);
226
- yield this.errorHooks(allHooksReversed, hookContexts, err, options);
227
- evaluationDetails = this.getErrorEvaluationDetails(flagKey, defaultValue, err, resolutionDetails.flagMetadata);
228
- } else {
229
- yield this.afterHooks(allHooksReversed, hookContexts, resolutionDetails, options);
230
- evaluationDetails = resolutionDetails;
231
- }
232
- } catch (err) {
233
- yield this.errorHooks(allHooksReversed, hookContexts, err, options);
234
- evaluationDetails = this.getErrorEvaluationDetails(flagKey, defaultValue, err);
235
- }
236
- yield this.finallyHooks(allHooksReversed, hookContexts, evaluationDetails, options);
237
- return evaluationDetails;
238
- });
239
- }
240
- beforeHooks(hooks, hookContexts, mergedContext, options) {
241
- return __async(this, null, function* () {
242
- var _a;
243
- const accumulatedContext = mergedContext;
244
- for (const [index, hook] of hooks.entries()) {
245
- const hookContext = hookContexts[hooks.length - 1 - index];
246
- Object.assign(hookContext.context, accumulatedContext);
247
- const hookResult = yield (_a = hook == null ? void 0 : hook.before) == null ? void 0 : _a.call(hook, hookContext, Object.freeze(options.hookHints));
248
- if (hookResult) {
249
- Object.assign(accumulatedContext, hookResult);
250
- Object.assign(hookContext.context, accumulatedContext);
251
- }
252
- }
253
- return Object.freeze(accumulatedContext);
254
- });
255
- }
256
- afterHooks(hooks, hookContexts, evaluationDetails, options) {
257
- return __async(this, null, function* () {
258
- var _a;
259
- for (const [index, hook] of hooks.entries()) {
260
- const hookContext = hookContexts[index];
261
- yield (_a = hook == null ? void 0 : hook.after) == null ? void 0 : _a.call(hook, hookContext, evaluationDetails, options.hookHints);
262
- }
263
- });
264
- }
265
- errorHooks(hooks, hookContexts, err, options) {
266
- return __async(this, null, function* () {
267
- var _a;
268
- for (const [index, hook] of hooks.entries()) try {
269
- const hookContext = hookContexts[index];
270
- yield (_a = hook == null ? void 0 : hook.error) == null ? void 0 : _a.call(hook, hookContext, err, options.hookHints);
271
- } catch (err2) {
272
- this._logger.error(`Unhandled error during 'error' hook: ${err2}`);
273
- if (err2 instanceof Error) this._logger.error(err2.stack);
274
- this._logger.error(err2 == null ? void 0 : err2.stack);
275
- }
276
- });
277
- }
278
- finallyHooks(hooks, hookContexts, evaluationDetails, options) {
279
- return __async(this, null, function* () {
280
- var _a;
281
- for (const [index, hook] of hooks.entries()) try {
282
- const hookContext = hookContexts[index];
283
- yield (_a = hook == null ? void 0 : hook.finally) == null ? void 0 : _a.call(hook, hookContext, evaluationDetails, options.hookHints);
284
- } catch (err) {
285
- this._logger.error(`Unhandled error during 'finally' hook: ${err}`);
286
- if (err instanceof Error) this._logger.error(err.stack);
287
- this._logger.error(err == null ? void 0 : err.stack);
288
- }
289
- });
290
- }
291
- get _provider() {
292
- return this.providerAccessor();
293
- }
294
- get _providerStatus() {
295
- return this.providerStatusAccessor();
296
- }
297
- get _logger() {
298
- return this._clientLogger || this.globalLogger();
299
- }
300
- mergeContexts(invocationContext) {
301
- return __spreadValues(__spreadValues(__spreadValues(__spreadValues({}, this.apiContextAccessor()), this.transactionContextAccessor()), this._context), invocationContext);
302
- }
303
- shortCircuitIfNotReady() {
304
- if (this.providerStatus === require_index.ServerProviderStatus.NOT_READY) throw new require_index.ProviderNotReadyError("provider has not yet initialized");
305
- else if (this.providerStatus === require_index.ServerProviderStatus.FATAL) throw new require_index.ProviderFatalError("provider is in an irrecoverable error state");
306
- }
307
- getErrorEvaluationDetails(flagKey, defaultValue, err, flagMetadata = {}) {
308
- const errorMessage = err == null ? void 0 : err.message;
309
- return {
310
- errorCode: (err == null ? void 0 : err.code) || require_index.ErrorCode.GENERAL,
311
- errorMessage,
312
- value: defaultValue,
313
- reason: require_index.StandardResolutionReasons.ERROR,
314
- flagMetadata: Object.freeze(flagMetadata),
315
- flagKey
316
- };
317
- }
318
- };
319
- var NoopTransactionContextPropagator = class {
320
- getTransactionContext() {
321
- return {};
322
- }
323
- setTransactionContext(_, callback, ...args) {
324
- callback(...args);
325
- }
326
- };
327
- var NOOP_TRANSACTION_CONTEXT_PROPAGATOR = new NoopTransactionContextPropagator();
328
- var GLOBAL_OPENFEATURE_API_KEY = Symbol.for("@openfeature/js-sdk/api");
329
- var _globalThis = globalThis;
330
- var OpenFeatureAPI = class _OpenFeatureAPI extends require_index.OpenFeatureCommonAPI {
331
- constructor() {
332
- super("server");
333
- this._statusEnumType = require_index.ServerProviderStatus;
334
- this._apiEmitter = new OpenFeatureEventEmitter();
335
- this._defaultProvider = new require_index.ProviderWrapper(NOOP_PROVIDER, require_index.ServerProviderStatus.NOT_READY, this._statusEnumType);
336
- this._domainScopedProviders = /* @__PURE__ */ new Map();
337
- this._createEventEmitter = () => new OpenFeatureEventEmitter();
338
- this._transactionContextPropagator = NOOP_TRANSACTION_CONTEXT_PROPAGATOR;
339
- }
340
- /**
341
- * Gets a singleton instance of the OpenFeature API.
342
- * @ignore
343
- * @returns {OpenFeatureAPI} OpenFeature API
344
- */
345
- static getInstance() {
346
- const globalApi = _globalThis[GLOBAL_OPENFEATURE_API_KEY];
347
- if (globalApi) return globalApi;
348
- const instance = new _OpenFeatureAPI();
349
- _globalThis[GLOBAL_OPENFEATURE_API_KEY] = instance;
350
- return instance;
351
- }
352
- getProviderStatus(domain) {
353
- var _a, _b;
354
- if (!domain) return this._defaultProvider.status;
355
- return (_b = (_a = this._domainScopedProviders.get(domain)) == null ? void 0 : _a.status) != null ? _b : this._defaultProvider.status;
356
- }
357
- setProviderAndWait(domainOrProvider, providerOrUndefined) {
358
- return __async(this, null, function* () {
359
- const domain = require_index.stringOrUndefined(domainOrProvider);
360
- const provider = domain ? require_index.objectOrUndefined(providerOrUndefined) : require_index.objectOrUndefined(domainOrProvider);
361
- yield this.setAwaitableProvider(domain, provider);
362
- });
363
- }
364
- setProvider(clientOrProvider, providerOrUndefined) {
365
- const domain = require_index.stringOrUndefined(clientOrProvider);
366
- const provider = domain ? require_index.objectOrUndefined(providerOrUndefined) : require_index.objectOrUndefined(clientOrProvider);
367
- const maybePromise = this.setAwaitableProvider(domain, provider);
368
- Promise.resolve(maybePromise).catch((err) => {
369
- this._logger.error("Error during provider initialization:", err);
370
- });
371
- return this;
372
- }
373
- getProvider(domain) {
374
- return this.getProviderForClient(domain);
375
- }
376
- setContext(context) {
377
- this._context = context;
378
- return this;
379
- }
380
- getContext() {
381
- return this._context;
382
- }
383
- getClient(domainOrContext, versionOrContext, contextOrUndefined) {
384
- var _a, _b;
385
- const domain = require_index.stringOrUndefined(domainOrContext);
386
- const version = require_index.stringOrUndefined(versionOrContext);
387
- const context = (_b = (_a = require_index.objectOrUndefined(domainOrContext)) != null ? _a : require_index.objectOrUndefined(versionOrContext)) != null ? _b : require_index.objectOrUndefined(contextOrUndefined);
388
- return new OpenFeatureClient(() => this.getProviderForClient(domain), () => this.getProviderStatus(domain), () => this.buildAndCacheEventEmitterForClient(domain), () => this.getContext(), () => this.getHooks(), () => this.getTransactionContext(), () => this._logger, {
389
- domain,
390
- version
391
- }, context);
392
- }
393
- /**
394
- * Clears all registered providers and resets the default provider.
395
- * @returns {Promise<void>}
396
- */
397
- clearProviders() {
398
- return super.clearProvidersAndSetDefault(NOOP_PROVIDER);
399
- }
400
- setTransactionContextPropagator(transactionContextPropagator) {
401
- const baseMessage = "Invalid TransactionContextPropagator, will not be set: ";
402
- if (typeof (transactionContextPropagator == null ? void 0 : transactionContextPropagator.getTransactionContext) !== "function") this._logger.error(`${baseMessage}: getTransactionContext is not a function.`);
403
- else if (typeof (transactionContextPropagator == null ? void 0 : transactionContextPropagator.setTransactionContext) !== "function") this._logger.error(`${baseMessage}: setTransactionContext is not a function.`);
404
- else this._transactionContextPropagator = transactionContextPropagator;
405
- return this;
406
- }
407
- setTransactionContext(transactionContext, callback, ...args) {
408
- this._transactionContextPropagator.setTransactionContext(transactionContext, callback, ...args);
409
- }
410
- getTransactionContext() {
411
- try {
412
- return this._transactionContextPropagator.getTransactionContext();
413
- } catch (err) {
414
- const error = err;
415
- this._logger.error(`Error getting transaction context: ${error == null ? void 0 : error.message}, returning empty context.`);
416
- this._logger.error(error == null ? void 0 : error.stack);
417
- return {};
418
- }
419
- }
420
- };
421
- var OpenFeature = OpenFeatureAPI.getInstance();
422
-
423
- //#endregion