@powerlines/plugin-open-feature 0.1.1 → 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.
- package/README.md +1 -1
- package/dist/types/plugin.cjs +2 -3
- package/dist/types/plugin.d.cts +1 -2
- package/dist/types/plugin.d.cts.map +1 -1
- package/dist/types/plugin.d.mts +1 -2
- package/dist/types/plugin.d.mts.map +1 -1
- package/dist/types/plugin.mjs +1 -2
- package/dist/types/plugin.mjs.map +1 -1
- package/package.json +10 -12
- package/dist/node_modules/.pnpm/@openfeature_core@1.9.2/node_modules/@openfeature/core/dist/esm/index.cjs +0 -643
- package/dist/node_modules/.pnpm/@openfeature_core@1.9.2/node_modules/@openfeature/core/dist/esm/index.mjs +0 -618
- package/dist/node_modules/.pnpm/@openfeature_core@1.9.2/node_modules/@openfeature/core/dist/esm/index.mjs.map +0 -1
- package/dist/node_modules/.pnpm/@openfeature_core@1.9.2/node_modules/@openfeature/core/dist/types.d.cts +0 -489
- package/dist/node_modules/.pnpm/@openfeature_core@1.9.2/node_modules/@openfeature/core/dist/types.d.cts.map +0 -1
- package/dist/node_modules/.pnpm/@openfeature_core@1.9.2/node_modules/@openfeature/core/dist/types.d.mts +0 -489
- package/dist/node_modules/.pnpm/@openfeature_core@1.9.2/node_modules/@openfeature/core/dist/types.d.mts.map +0 -1
- 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
- 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
- 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
- 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
- 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
- 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
- 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 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.mjs","names":[],"sources":["../../../../../../../../../../../node_modules/.pnpm/@openfeature+core@1.9.2/node_modules/@openfeature/core/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/hooks/hook-data.ts\nvar MapHookData = class {\n constructor() {\n this.data = /* @__PURE__ */ new Map();\n }\n set(key, value) {\n this.data.set(key, value);\n }\n get(key) {\n return this.data.get(key);\n }\n has(key) {\n return this.data.has(key);\n }\n delete(key) {\n return this.data.delete(key);\n }\n clear() {\n this.data.clear();\n }\n};\n\n// src/evaluation/evaluation.ts\nvar StandardResolutionReasons = {\n /**\n * The resolved value is static (no dynamic evaluation).\n */\n STATIC: \"STATIC\",\n /**\n * The resolved value was configured statically, or otherwise fell back to a pre-configured value.\n */\n DEFAULT: \"DEFAULT\",\n /**\n * The resolved value was the result of a dynamic evaluation, such as a rule or specific user-targeting.\n */\n TARGETING_MATCH: \"TARGETING_MATCH\",\n /**\n * The resolved value was the result of pseudorandom assignment.\n */\n SPLIT: \"SPLIT\",\n /**\n * The resolved value was retrieved from cache.\n */\n CACHED: \"CACHED\",\n /**\n * The resolved value was the result of the flag being disabled in the management system.\n */\n DISABLED: \"DISABLED\",\n /**\n * The reason for the resolved value could not be determined.\n */\n UNKNOWN: \"UNKNOWN\",\n /**\n * The resolved value is non-authoritative or possibly out of date.\n */\n STALE: \"STALE\",\n /**\n * The resolved value was the result of an error.\n *\n * Note: The `errorCode` and `errorMessage` fields may contain additional details of this error.\n */\n ERROR: \"ERROR\"\n};\nvar ErrorCode = /* @__PURE__ */ ((ErrorCode2) => {\n ErrorCode2[\"PROVIDER_NOT_READY\"] = \"PROVIDER_NOT_READY\";\n ErrorCode2[\"PROVIDER_FATAL\"] = \"PROVIDER_FATAL\";\n ErrorCode2[\"FLAG_NOT_FOUND\"] = \"FLAG_NOT_FOUND\";\n ErrorCode2[\"PARSE_ERROR\"] = \"PARSE_ERROR\";\n ErrorCode2[\"TYPE_MISMATCH\"] = \"TYPE_MISMATCH\";\n ErrorCode2[\"TARGETING_KEY_MISSING\"] = \"TARGETING_KEY_MISSING\";\n ErrorCode2[\"INVALID_CONTEXT\"] = \"INVALID_CONTEXT\";\n ErrorCode2[\"GENERAL\"] = \"GENERAL\";\n return ErrorCode2;\n})(ErrorCode || {});\n\n// src/errors/open-feature-error-abstract.ts\nvar OpenFeatureError = class _OpenFeatureError extends Error {\n constructor(message, options) {\n super(message);\n Object.setPrototypeOf(this, _OpenFeatureError.prototype);\n this.name = \"OpenFeatureError\";\n this.cause = options == null ? void 0 : options.cause;\n }\n};\n\n// src/errors/flag-not-found-error.ts\nvar FlagNotFoundError = class _FlagNotFoundError extends OpenFeatureError {\n constructor(message, options) {\n super(message, options);\n Object.setPrototypeOf(this, _FlagNotFoundError.prototype);\n this.name = \"FlagNotFoundError\";\n this.code = \"FLAG_NOT_FOUND\" /* FLAG_NOT_FOUND */;\n }\n};\n\n// src/errors/general-error.ts\nvar GeneralError = class _GeneralError extends OpenFeatureError {\n constructor(message, options) {\n super(message, options);\n Object.setPrototypeOf(this, _GeneralError.prototype);\n this.name = \"GeneralError\";\n this.code = \"GENERAL\" /* GENERAL */;\n }\n};\n\n// src/errors/invalid-context-error.ts\nvar InvalidContextError = class _InvalidContextError extends OpenFeatureError {\n constructor(message, options) {\n super(message, options);\n Object.setPrototypeOf(this, _InvalidContextError.prototype);\n this.name = \"InvalidContextError\";\n this.code = \"INVALID_CONTEXT\" /* INVALID_CONTEXT */;\n }\n};\n\n// src/errors/parse-error.ts\nvar ParseError = class _ParseError extends OpenFeatureError {\n constructor(message, options) {\n super(message, options);\n Object.setPrototypeOf(this, _ParseError.prototype);\n this.name = \"ParseError\";\n this.code = \"PARSE_ERROR\" /* PARSE_ERROR */;\n }\n};\n\n// src/errors/provider-fatal-error.ts\nvar ProviderFatalError = class _ProviderFatalError extends OpenFeatureError {\n constructor(message, options) {\n super(message, options);\n Object.setPrototypeOf(this, _ProviderFatalError.prototype);\n this.name = \"ProviderFatalError\";\n this.code = \"PROVIDER_FATAL\" /* PROVIDER_FATAL */;\n }\n};\n\n// src/errors/provider-not-ready-error.ts\nvar ProviderNotReadyError = class _ProviderNotReadyError extends OpenFeatureError {\n constructor(message, options) {\n super(message, options);\n Object.setPrototypeOf(this, _ProviderNotReadyError.prototype);\n this.name = \"ProviderNotReadyError\";\n this.code = \"PROVIDER_NOT_READY\" /* PROVIDER_NOT_READY */;\n }\n};\n\n// src/errors/targeting-key-missing-error.ts\nvar TargetingKeyMissingError = class _TargetingKeyMissingError extends OpenFeatureError {\n constructor(message, options) {\n super(message, options);\n Object.setPrototypeOf(this, _TargetingKeyMissingError.prototype);\n this.name = \"TargetingKeyMissingError\";\n this.code = \"TARGETING_KEY_MISSING\" /* TARGETING_KEY_MISSING */;\n }\n};\n\n// src/errors/type-mismatch-error.ts\nvar TypeMismatchError = class _TypeMismatchError extends OpenFeatureError {\n constructor(message, options) {\n super(message, options);\n Object.setPrototypeOf(this, _TypeMismatchError.prototype);\n this.name = \"TypeMismatchError\";\n this.code = \"TYPE_MISMATCH\" /* TYPE_MISMATCH */;\n }\n};\n\n// src/errors/index.ts\nvar instantiateErrorByErrorCode = (errorCode, message) => {\n switch (errorCode) {\n case \"FLAG_NOT_FOUND\" /* FLAG_NOT_FOUND */:\n return new FlagNotFoundError(message);\n case \"PARSE_ERROR\" /* PARSE_ERROR */:\n return new ParseError(message);\n case \"TYPE_MISMATCH\" /* TYPE_MISMATCH */:\n return new TypeMismatchError(message);\n case \"TARGETING_KEY_MISSING\" /* TARGETING_KEY_MISSING */:\n return new TargetingKeyMissingError(message);\n case \"INVALID_CONTEXT\" /* INVALID_CONTEXT */:\n return new InvalidContextError(message);\n case \"PROVIDER_NOT_READY\" /* PROVIDER_NOT_READY */:\n return new ProviderNotReadyError(message);\n case \"PROVIDER_FATAL\" /* PROVIDER_FATAL */:\n return new ProviderFatalError(message);\n default:\n return new GeneralError(message);\n }\n};\n\n// src/provider/provider.ts\nvar ServerProviderStatus = /* @__PURE__ */ ((ServerProviderStatus2) => {\n ServerProviderStatus2[\"NOT_READY\"] = \"NOT_READY\";\n ServerProviderStatus2[\"READY\"] = \"READY\";\n ServerProviderStatus2[\"ERROR\"] = \"ERROR\";\n ServerProviderStatus2[\"STALE\"] = \"STALE\";\n ServerProviderStatus2[\"FATAL\"] = \"FATAL\";\n return ServerProviderStatus2;\n})(ServerProviderStatus || {});\nvar ClientProviderStatus = /* @__PURE__ */ ((ClientProviderStatus2) => {\n ClientProviderStatus2[\"NOT_READY\"] = \"NOT_READY\";\n ClientProviderStatus2[\"READY\"] = \"READY\";\n ClientProviderStatus2[\"ERROR\"] = \"ERROR\";\n ClientProviderStatus2[\"STALE\"] = \"STALE\";\n ClientProviderStatus2[\"FATAL\"] = \"FATAL\";\n ClientProviderStatus2[\"RECONCILING\"] = \"RECONCILING\";\n return ClientProviderStatus2;\n})(ClientProviderStatus || {});\n\n// src/provider/multi-provider/errors.ts\nvar ErrorWithCode = class extends OpenFeatureError {\n constructor(code, message) {\n super(message);\n this.code = code;\n }\n};\nvar AggregateError = class _AggregateError extends GeneralError {\n constructor(message, originalErrors) {\n super(message);\n this.originalErrors = originalErrors;\n Object.setPrototypeOf(this, _AggregateError.prototype);\n this.name = \"AggregateError\";\n }\n};\nvar constructAggregateError = (providerErrors) => {\n const errorsWithSource = providerErrors.map(({ providerName, error }) => {\n return { source: providerName, error };\n }).flat();\n const firstError = errorsWithSource[0];\n const message = firstError ? `Provider errors occurred: ${firstError.source}: ${firstError.error}` : \"Provider errors occurred\";\n return new AggregateError(message, errorsWithSource);\n};\nvar throwAggregateErrorFromPromiseResults = (result, providerEntries) => {\n const errors = result.map((r, i) => {\n if (r.status === \"rejected\") {\n return { error: r.reason, providerName: providerEntries[i].name };\n }\n return null;\n }).filter((val) => Boolean(val));\n if (errors.length) {\n throw constructAggregateError(errors);\n }\n};\n\n// src/provider/multi-provider/status-tracker.ts\nvar StatusTracker = class {\n constructor(events, statusEnum, eventEnum) {\n this.events = events;\n this.statusEnum = statusEnum;\n this.eventEnum = eventEnum;\n this.providerStatuses = {};\n }\n wrapEventHandler(providerEntry) {\n var _a, _b, _c, _d, _e;\n const provider = providerEntry.provider;\n (_a = provider.events) == null ? void 0 : _a.addHandler(this.eventEnum.Error, (details) => {\n this.changeProviderStatus(providerEntry.name, this.statusEnum.ERROR, details);\n });\n (_b = provider.events) == null ? void 0 : _b.addHandler(this.eventEnum.Stale, (details) => {\n this.changeProviderStatus(providerEntry.name, this.statusEnum.STALE, details);\n });\n (_c = provider.events) == null ? void 0 : _c.addHandler(this.eventEnum.ConfigurationChanged, (details) => {\n this.events.emit(this.eventEnum.ConfigurationChanged, details);\n });\n (_d = provider.events) == null ? void 0 : _d.addHandler(this.eventEnum.Ready, (details) => {\n this.changeProviderStatus(providerEntry.name, this.statusEnum.READY, details);\n });\n const reconcilingEvent = this.eventEnum.Reconciling;\n const reconcilingStatus = this.statusEnum.RECONCILING;\n if (reconcilingEvent && reconcilingStatus) {\n (_e = provider.events) == null ? void 0 : _e.addHandler(reconcilingEvent, (details) => {\n this.changeProviderStatus(providerEntry.name, reconcilingStatus, details);\n });\n }\n }\n providerStatus(name) {\n return this.providerStatuses[name];\n }\n getStatusFromProviderStatuses() {\n const statuses = Object.values(this.providerStatuses);\n if (statuses.includes(this.statusEnum.FATAL)) {\n return this.statusEnum.FATAL;\n } else if (statuses.includes(this.statusEnum.NOT_READY)) {\n return this.statusEnum.NOT_READY;\n } else if (statuses.includes(this.statusEnum.ERROR)) {\n return this.statusEnum.ERROR;\n } else if (statuses.includes(this.statusEnum.STALE)) {\n return this.statusEnum.STALE;\n } else if (this.statusEnum.RECONCILING && statuses.includes(this.statusEnum.RECONCILING)) {\n return this.statusEnum.RECONCILING;\n }\n return this.statusEnum.READY;\n }\n changeProviderStatus(name, status, details) {\n const currentStatus = this.getStatusFromProviderStatuses();\n this.providerStatuses[name] = status;\n const newStatus = this.getStatusFromProviderStatuses();\n if (currentStatus !== newStatus) {\n if (newStatus === this.statusEnum.FATAL || newStatus === this.statusEnum.ERROR) {\n this.events.emit(this.eventEnum.Error, details);\n } else if (newStatus === this.statusEnum.STALE) {\n this.events.emit(this.eventEnum.Stale, details);\n } else if (newStatus === this.statusEnum.READY) {\n this.events.emit(this.eventEnum.Ready, details);\n } else {\n const reconcilingEvent = this.eventEnum.Reconciling;\n if (reconcilingEvent && this.statusEnum.RECONCILING && newStatus === this.statusEnum.RECONCILING) {\n this.events.emit(reconcilingEvent, details);\n }\n }\n }\n }\n};\n\n// src/provider/multi-provider/strategies/base-evaluation-strategy.ts\nvar BaseEvaluationStrategy = class {\n constructor(statusEnum) {\n this.statusEnum = statusEnum;\n this.runMode = \"sequential\";\n }\n shouldEvaluateThisProvider(strategyContext, _evalContext) {\n if (strategyContext.providerStatus === this.statusEnum.NOT_READY || strategyContext.providerStatus === this.statusEnum.FATAL) {\n return false;\n }\n return true;\n }\n shouldEvaluateNextProvider(_strategyContext, _context, _result) {\n return true;\n }\n shouldTrackWithThisProvider(strategyContext, _context, _trackingEventName, _trackingEventDetails) {\n if (strategyContext.providerStatus === this.statusEnum.NOT_READY || strategyContext.providerStatus === this.statusEnum.FATAL) {\n return false;\n }\n return true;\n }\n hasError(resolution) {\n return \"thrownError\" in resolution || !!resolution.details.errorCode;\n }\n hasErrorWithCode(resolution, code) {\n var _a;\n return \"thrownError\" in resolution ? ((_a = resolution.thrownError) == null ? void 0 : _a.code) === code : resolution.details.errorCode === code;\n }\n collectProviderErrors(resolutions) {\n var _a;\n const errors = [];\n for (const resolution of resolutions) {\n if (\"thrownError\" in resolution) {\n errors.push({ providerName: resolution.providerName, error: resolution.thrownError });\n } else if (resolution.details.errorCode) {\n errors.push({\n providerName: resolution.providerName,\n error: new ErrorWithCode(resolution.details.errorCode, (_a = resolution.details.errorMessage) != null ? _a : \"unknown error\")\n });\n }\n }\n return { errors };\n }\n resolutionToFinalResult(resolution) {\n return { details: resolution.details, provider: resolution.provider, providerName: resolution.providerName };\n }\n};\n\n// src/provider/multi-provider/strategies/first-match-strategy.ts\nvar FirstMatchStrategy = class extends BaseEvaluationStrategy {\n shouldEvaluateNextProvider(strategyContext, context, result) {\n if (this.hasErrorWithCode(result, \"FLAG_NOT_FOUND\" /* FLAG_NOT_FOUND */)) {\n return true;\n }\n if (this.hasError(result)) {\n return false;\n }\n return false;\n }\n determineFinalResult(strategyContext, context, resolutions) {\n const finalResolution = resolutions[resolutions.length - 1];\n if (this.hasError(finalResolution)) {\n return this.collectProviderErrors(resolutions);\n }\n return this.resolutionToFinalResult(finalResolution);\n }\n};\n\n// src/provider/multi-provider/strategies/first-successful-strategy.ts\nvar FirstSuccessfulStrategy = class extends BaseEvaluationStrategy {\n shouldEvaluateNextProvider(strategyContext, context, result) {\n return this.hasError(result);\n }\n determineFinalResult(strategyContext, context, resolutions) {\n const finalResolution = resolutions[resolutions.length - 1];\n if (this.hasError(finalResolution)) {\n return this.collectProviderErrors(resolutions);\n }\n return this.resolutionToFinalResult(finalResolution);\n }\n};\n\n// src/provider/multi-provider/strategies/comparison-strategy.ts\nvar ComparisonStrategy = class extends BaseEvaluationStrategy {\n constructor(statusEnum, fallbackProvider, onMismatch) {\n super(statusEnum);\n this.fallbackProvider = fallbackProvider;\n this.onMismatch = onMismatch;\n this.runMode = \"parallel\";\n }\n determineFinalResult(strategyContext, context, resolutions) {\n var _a;\n let value;\n let fallbackResolution;\n let finalResolution;\n let mismatch = false;\n for (const [i, resolution] of resolutions.entries()) {\n if (this.hasError(resolution)) {\n return this.collectProviderErrors(resolutions);\n }\n if (resolution.provider === this.fallbackProvider) {\n fallbackResolution = resolution;\n }\n if (i === 0) {\n finalResolution = resolution;\n }\n if (typeof value !== \"undefined\" && value !== resolution.details.value) {\n mismatch = true;\n } else {\n value = resolution.details.value;\n }\n }\n if (!fallbackResolution) {\n throw new GeneralError(\"Fallback provider not found in resolution results\");\n }\n if (!finalResolution) {\n throw new GeneralError(\"Final resolution not found in resolution results\");\n }\n if (mismatch) {\n (_a = this.onMismatch) == null ? void 0 : _a.call(this, resolutions);\n return {\n details: fallbackResolution.details,\n provider: fallbackResolution.provider\n };\n }\n return this.resolutionToFinalResult(finalResolution);\n }\n};\n\n// src/events/events.ts\nvar ServerProviderEvents = /* @__PURE__ */ ((ServerProviderEvents2) => {\n ServerProviderEvents2[\"Ready\"] = \"PROVIDER_READY\";\n ServerProviderEvents2[\"Error\"] = \"PROVIDER_ERROR\";\n ServerProviderEvents2[\"ConfigurationChanged\"] = \"PROVIDER_CONFIGURATION_CHANGED\";\n ServerProviderEvents2[\"Stale\"] = \"PROVIDER_STALE\";\n return ServerProviderEvents2;\n})(ServerProviderEvents || {});\nvar ClientProviderEvents = /* @__PURE__ */ ((ClientProviderEvents2) => {\n ClientProviderEvents2[\"Ready\"] = \"PROVIDER_READY\";\n ClientProviderEvents2[\"Error\"] = \"PROVIDER_ERROR\";\n ClientProviderEvents2[\"ConfigurationChanged\"] = \"PROVIDER_CONFIGURATION_CHANGED\";\n ClientProviderEvents2[\"ContextChanged\"] = \"PROVIDER_CONTEXT_CHANGED\";\n ClientProviderEvents2[\"Reconciling\"] = \"PROVIDER_RECONCILING\";\n ClientProviderEvents2[\"Stale\"] = \"PROVIDER_STALE\";\n return ClientProviderEvents2;\n})(ClientProviderEvents || {});\n\n// src/events/event-utils.ts\nvar eventStatusMap = {\n [\"READY\" /* READY */]: \"PROVIDER_READY\" /* Ready */,\n [\"ERROR\" /* ERROR */]: \"PROVIDER_ERROR\" /* Error */,\n [\"FATAL\" /* FATAL */]: \"PROVIDER_ERROR\" /* Error */,\n [\"STALE\" /* STALE */]: \"PROVIDER_STALE\" /* Stale */,\n [\"RECONCILING\" /* RECONCILING */]: \"PROVIDER_RECONCILING\" /* Reconciling */,\n [\"NOT_READY\" /* NOT_READY */]: void 0\n};\nvar statusMatchesEvent = (event, status) => {\n return !status && event === \"PROVIDER_READY\" /* Ready */ || eventStatusMap[status] === event;\n};\n\n// src/logger/default-logger.ts\nvar DefaultLogger = class {\n error(...args) {\n console.error(...args);\n }\n warn(...args) {\n console.warn(...args);\n }\n info() {\n }\n debug() {\n }\n};\n\n// src/logger/safe-logger.ts\nvar LOG_LEVELS = [\"error\", \"warn\", \"info\", \"debug\"];\nvar SafeLogger = class {\n constructor(logger) {\n this.fallbackLogger = new DefaultLogger();\n try {\n for (const level of LOG_LEVELS) {\n if (!logger[level] || typeof logger[level] !== \"function\") {\n throw new Error(`The provided logger is missing the ${level} method.`);\n }\n }\n this.logger = logger;\n } catch (err) {\n console.error(err);\n console.error(\"Falling back to the default logger.\");\n this.logger = this.fallbackLogger;\n }\n }\n error(...args) {\n this.log(\"error\", ...args);\n }\n warn(...args) {\n this.log(\"warn\", ...args);\n }\n info(...args) {\n this.log(\"info\", ...args);\n }\n debug(...args) {\n this.log(\"debug\", ...args);\n }\n log(level, ...args) {\n try {\n this.logger[level](...args);\n } catch (error) {\n this.fallbackLogger[level](...args);\n }\n }\n};\n\n// src/events/generic-event-emitter.ts\nvar GenericEventEmitter = class {\n constructor(globalLogger) {\n this.globalLogger = globalLogger;\n this._handlers = {\n [\"PROVIDER_CONFIGURATION_CHANGED\" /* ConfigurationChanged */]: /* @__PURE__ */ new WeakMap(),\n [\"PROVIDER_CONTEXT_CHANGED\" /* ContextChanged */]: /* @__PURE__ */ new WeakMap(),\n [\"PROVIDER_READY\" /* Ready */]: /* @__PURE__ */ new WeakMap(),\n [\"PROVIDER_ERROR\" /* Error */]: /* @__PURE__ */ new WeakMap(),\n [\"PROVIDER_STALE\" /* Stale */]: /* @__PURE__ */ new WeakMap(),\n [\"PROVIDER_RECONCILING\" /* Reconciling */]: /* @__PURE__ */ new WeakMap()\n };\n }\n // here we use E, to restrict the events a provider can manually emit (PROVIDER_CONTEXT_CHANGED is emitted by the SDK)\n emit(eventType, context) {\n this.eventEmitter.emit(eventType, context);\n }\n addHandler(eventType, handler) {\n const asyncHandler = (details) => __async(this, null, function* () {\n var _a;\n try {\n yield handler(details);\n } catch (err) {\n (_a = this._logger) == null ? void 0 : _a.error(\"Error running event handler:\", err);\n }\n });\n const existingAsyncHandlers = this._handlers[eventType].get(handler);\n this._handlers[eventType].set(handler, [...existingAsyncHandlers || [], asyncHandler]);\n this.eventEmitter.on(eventType, asyncHandler);\n }\n removeHandler(eventType, handler) {\n const existingAsyncHandlers = this._handlers[eventType].get(handler);\n if (existingAsyncHandlers) {\n const removedAsyncHandler = existingAsyncHandlers.pop();\n if (removedAsyncHandler) {\n this.eventEmitter.removeListener(eventType, removedAsyncHandler);\n }\n }\n }\n removeAllHandlers(eventType) {\n if (eventType) {\n this.eventEmitter.removeAllListeners(eventType);\n } else {\n this.eventEmitter.removeAllListeners();\n }\n }\n getHandlers(eventType) {\n return this.eventEmitter.listeners(eventType);\n }\n setLogger(logger) {\n this._eventLogger = new SafeLogger(logger);\n return this;\n }\n get _logger() {\n var _a, _b;\n return (_b = this._eventLogger) != null ? _b : (_a = this.globalLogger) == null ? void 0 : _a.call(this);\n }\n};\n\n// src/telemetry/attributes.ts\nvar TelemetryAttribute = {\n /**\n * The lookup key of the feature flag.\n *\n * - type: `string`\n * - requirement level: `required`\n * - example: `logo-color`\n */\n KEY: \"feature_flag.key\",\n /**\n * Describes a class of error the operation ended with.\n *\n * - type: `string`\n * - requirement level: `conditionally required`\n * - condition: `reason` is `error`\n * - example: `flag_not_found`\n */\n ERROR_CODE: \"error.type\",\n /**\n * A message explaining the nature of an error occurring during flag evaluation.\n *\n * - type: `string`\n * - requirement level: `recommended`\n * - example: `Flag not found`\n */\n ERROR_MESSAGE: \"error.message\",\n /**\n * A semantic identifier for an evaluated flag value.\n *\n * - type: `string`\n * - requirement level: `conditionally required`\n * - condition: variant is defined on the evaluation details\n * - example: `blue`; `on`; `true`\n */\n VARIANT: \"feature_flag.result.variant\",\n /**\n * The evaluated value of the feature flag.\n *\n * - type: `undefined`\n * - requirement level: `conditionally required`\n * - example: `#ff0000`; `1`; `true`\n */\n VALUE: \"feature_flag.result.value\",\n /**\n * The unique identifier for the flag evaluation context. For example, the targeting key.\n *\n * - type: `string`\n * - requirement level: `recommended`\n * - example: `5157782b-2203-4c80-a857-dbbd5e7761db`\n */\n CONTEXT_ID: \"feature_flag.context.id\",\n /**\n * The reason code which shows how a feature flag value was determined.\n *\n * - type: `string`\n * - requirement level: `recommended`\n * - example: `targeting_match`\n */\n REASON: \"feature_flag.result.reason\",\n /**\n * Describes a class of error the operation ended with.\n *\n * - type: `string`\n * - requirement level: `recommended`\n * - example: `flag_not_found`\n */\n PROVIDER: \"feature_flag.provider.name\",\n /**\n * The identifier of the flag set to which the feature flag belongs.\n *\n * - type: `string`\n * - requirement level: `recommended`\n * - example: `proj-1`; `ab98sgs`; `service1/dev`\n */\n FLAG_SET_ID: \"feature_flag.set.id\",\n /**\n * The version of the ruleset used during the evaluation. This may be any stable value which uniquely identifies the ruleset.\n *\n * - type: `string`\n * - requirement level: `recommended`\n * - example: `1.0.0`; `2021-01-01`\n */\n VERSION: \"feature_flag.version\"\n};\n\n// src/telemetry/flag-metadata.ts\nvar TelemetryFlagMetadata = {\n /**\n * The context identifier returned in the flag metadata uniquely identifies\n * the subject of the flag evaluation. If not available, the targeting key\n * should be used.\n */\n CONTEXT_ID: \"contextId\",\n /**\n * \tA logical identifier for the flag set.\n */\n FLAG_SET_ID: \"flagSetId\",\n /**\n * \tA version string (format unspecified) for the flag or flag set.\n */\n VERSION: \"version\"\n};\n\n// src/telemetry/evaluation-event.ts\nvar FLAG_EVALUATION_EVENT_NAME = \"feature_flag.evaluation\";\nfunction createEvaluationEvent(hookContext, evaluationDetails) {\n var _a, _b, _c;\n const attributes = {\n [TelemetryAttribute.KEY]: hookContext.flagKey,\n [TelemetryAttribute.PROVIDER]: hookContext.providerMetadata.name,\n [TelemetryAttribute.REASON]: ((_a = evaluationDetails.reason) != null ? _a : StandardResolutionReasons.UNKNOWN).toLowerCase()\n };\n if (evaluationDetails.variant) {\n attributes[TelemetryAttribute.VARIANT] = evaluationDetails.variant;\n }\n if (evaluationDetails.value !== null) {\n if (typeof evaluationDetails.value !== \"object\") {\n attributes[TelemetryAttribute.VALUE] = evaluationDetails.value;\n } else {\n try {\n attributes[TelemetryAttribute.VALUE] = JSON.stringify(evaluationDetails.value);\n } catch (e) {\n }\n }\n }\n const contextId = (_b = evaluationDetails.flagMetadata[TelemetryFlagMetadata.CONTEXT_ID]) != null ? _b : hookContext.context.targetingKey;\n if (contextId) {\n attributes[TelemetryAttribute.CONTEXT_ID] = contextId;\n }\n const setId = evaluationDetails.flagMetadata[TelemetryFlagMetadata.FLAG_SET_ID];\n if (setId) {\n attributes[TelemetryAttribute.FLAG_SET_ID] = setId;\n }\n const version = evaluationDetails.flagMetadata[TelemetryFlagMetadata.VERSION];\n if (version) {\n attributes[TelemetryAttribute.VERSION] = version;\n }\n if (evaluationDetails.reason === StandardResolutionReasons.ERROR) {\n attributes[TelemetryAttribute.ERROR_CODE] = ((_c = evaluationDetails.errorCode) != null ? _c : \"GENERAL\" /* GENERAL */).toLowerCase();\n if (evaluationDetails.errorMessage) {\n attributes[TelemetryAttribute.ERROR_MESSAGE] = evaluationDetails.errorMessage;\n }\n }\n return {\n name: FLAG_EVALUATION_EVENT_NAME,\n attributes\n };\n}\n\n// src/type-guards.ts\nfunction isString(value) {\n return typeof value === \"string\";\n}\nfunction stringOrUndefined(value) {\n return isString(value) ? value : void 0;\n}\nfunction isObject(value) {\n return typeof value === \"object\";\n}\nfunction objectOrUndefined(value) {\n return isObject(value) ? value : void 0;\n}\n\n// src/filter.ts\nfunction isDefined(input) {\n return typeof input !== \"undefined\" && input !== null;\n}\n\n// src/open-feature.ts\nvar ProviderWrapper = class {\n constructor(_provider, _status, _statusEnumType) {\n this._provider = _provider;\n this._status = _status;\n this._pendingContextChanges = 0;\n var _a, _b, _c;\n (_a = _provider.events) == null ? void 0 : _a.addHandler(\"PROVIDER_READY\" /* Ready */, () => {\n this._status = _statusEnumType.READY;\n });\n (_b = _provider.events) == null ? void 0 : _b.addHandler(\"PROVIDER_STALE\" /* Stale */, () => {\n this._status = _statusEnumType.STALE;\n });\n (_c = _provider.events) == null ? void 0 : _c.addHandler(\"PROVIDER_ERROR\" /* Error */, (details) => {\n if ((details == null ? void 0 : details.errorCode) === \"PROVIDER_FATAL\" /* PROVIDER_FATAL */) {\n this._status = _statusEnumType.FATAL;\n } else {\n this._status = _statusEnumType.ERROR;\n }\n });\n }\n get provider() {\n return this._provider;\n }\n set provider(provider) {\n this._provider = provider;\n }\n get status() {\n return this._status;\n }\n set status(status) {\n this._status = status;\n }\n get allContextChangesSettled() {\n return this._pendingContextChanges === 0;\n }\n incrementPendingContextChanges() {\n this._pendingContextChanges++;\n }\n decrementPendingContextChanges() {\n this._pendingContextChanges--;\n }\n};\nvar OpenFeatureCommonAPI = class {\n constructor(category) {\n this._hooks = [];\n this._context = {};\n this._logger = new DefaultLogger();\n this._clientEventHandlers = /* @__PURE__ */ new Map();\n this._domainScopedContext = /* @__PURE__ */ new Map();\n this._clientEvents = /* @__PURE__ */ new Map();\n this._runsOn = category;\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 setLogger(logger) {\n this._logger = new SafeLogger(logger);\n return this;\n }\n /**\n * Get metadata about the default provider.\n * @returns {ProviderMetadata} Provider Metadata\n */\n get providerMetadata() {\n return this.getProviderMetadata();\n }\n /**\n * Get metadata about a registered provider using the client name.\n * An unbound or empty client name will return metadata from the default provider.\n * @param {string} domain An identifier which logically binds clients with providers\n * @returns {ProviderMetadata} Provider Metadata\n */\n getProviderMetadata(domain) {\n return this.getProviderForClient(domain).metadata;\n }\n /**\n * Adds a handler for the given provider event type.\n * The handlers are called in the order they have been added.\n * API (global) events run for all providers.\n * @param {AnyProviderEvent} eventType The provider event type to listen to\n * @param {EventHandler} handler The handler to run on occurrence of the event type\n * @param {EventOptions} options Optional options such as signal for aborting\n */\n addHandler(eventType, handler, options) {\n [.../* @__PURE__ */ new Map([[void 0, this._defaultProvider]]), ...this._domainScopedProviders].forEach((keyProviderTuple) => {\n var _a;\n const domain = keyProviderTuple[0];\n const provider = keyProviderTuple[1].provider;\n const status = keyProviderTuple[1].status;\n const shouldRunNow = statusMatchesEvent(eventType, status);\n if (shouldRunNow) {\n try {\n handler({ domain, providerName: provider.metadata.name });\n } catch (err) {\n (_a = this._logger) == null ? void 0 : _a.error(\"Error running event handler:\", err);\n }\n }\n });\n this._apiEmitter.addHandler(eventType, handler);\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 /**\n * Removes a handler for the given provider event type.\n * @param {AnyProviderEvent} eventType The provider event type to remove the listener for\n * @param {EventHandler} handler The handler to remove for the provider event type\n */\n removeHandler(eventType, handler) {\n this._apiEmitter.removeHandler(eventType, handler);\n }\n /**\n * Removes all event handlers.\n */\n clearHandlers() {\n this._apiEmitter.removeAllHandlers();\n }\n /**\n * Gets the current handlers for the given provider event type.\n * @param {AnyProviderEvent} eventType The provider event type to get the current handlers for\n * @returns {EventHandler[]} The handlers currently attached to the given provider event type\n */\n getHandlers(eventType) {\n return this._apiEmitter.getHandlers(eventType);\n }\n setAwaitableProvider(domainOrProvider, providerOrUndefined) {\n var _a, _b, _c, _d, _e, _f, _g, _h;\n const domain = stringOrUndefined(domainOrProvider);\n const provider = (_a = objectOrUndefined(domainOrProvider)) != null ? _a : objectOrUndefined(providerOrUndefined);\n if (!provider) {\n this._logger.debug(\"No provider defined, ignoring setProvider call\");\n return;\n }\n const oldProvider = this.getProviderForClient(domain);\n const providerName = provider.metadata.name;\n if (oldProvider === provider) {\n this._logger.debug(\"Provider is already set, ignoring setProvider call\");\n return;\n }\n if (!provider.runsOn) {\n this._logger.debug(`Provider '${provider.metadata.name}' has not defined its intended use.`);\n } else if (provider.runsOn !== this._runsOn) {\n throw new GeneralError(`Provider '${provider.metadata.name}' is intended for use on the ${provider.runsOn}.`);\n }\n const emitters = this.getAssociatedEventEmitters(domain);\n let initializationPromise = void 0;\n const wrappedProvider = new ProviderWrapper(\n provider,\n this._statusEnumType.NOT_READY,\n this._statusEnumType\n );\n if (typeof provider.initialize === \"function\" && !this.allProviders.includes(provider)) {\n initializationPromise = (_e = (_d = (_c = provider.initialize) == null ? void 0 : _c.call(provider, domain ? (_b = this._domainScopedContext.get(domain)) != null ? _b : this._context : this._context)) == null ? void 0 : _d.then(() => {\n var _a2;\n wrappedProvider.status = this._statusEnumType.READY;\n this.getAssociatedEventEmitters(domain).forEach((emitter) => {\n emitter == null ? void 0 : emitter.emit(\"PROVIDER_READY\" /* Ready */, { clientName: domain, domain, providerName });\n });\n (_a2 = this._apiEmitter) == null ? void 0 : _a2.emit(\"PROVIDER_READY\" /* Ready */, { clientName: domain, domain, providerName });\n })) == null ? void 0 : _e.catch((error) => {\n var _a2;\n if ((error == null ? void 0 : error.code) === \"PROVIDER_FATAL\" /* PROVIDER_FATAL */) {\n wrappedProvider.status = this._statusEnumType.FATAL;\n } else {\n wrappedProvider.status = this._statusEnumType.ERROR;\n }\n this.getAssociatedEventEmitters(domain).forEach((emitter) => {\n emitter == null ? void 0 : emitter.emit(\"PROVIDER_ERROR\" /* Error */, {\n clientName: domain,\n domain,\n providerName,\n message: error == null ? void 0 : error.message\n });\n });\n (_a2 = this._apiEmitter) == null ? void 0 : _a2.emit(\"PROVIDER_ERROR\" /* Error */, {\n clientName: domain,\n domain,\n providerName,\n message: error == null ? void 0 : error.message\n });\n throw error;\n });\n } else {\n wrappedProvider.status = this._statusEnumType.READY;\n emitters.forEach((emitter) => {\n emitter == null ? void 0 : emitter.emit(\"PROVIDER_READY\" /* Ready */, { clientName: domain, domain, providerName });\n });\n (_f = this._apiEmitter) == null ? void 0 : _f.emit(\"PROVIDER_READY\" /* Ready */, { clientName: domain, domain, providerName });\n }\n if (domain) {\n this._domainScopedProviders.set(domain, wrappedProvider);\n } else {\n this._defaultProvider = wrappedProvider;\n }\n this.transferListeners(oldProvider, provider, domain, emitters);\n if (!this.allProviders.includes(oldProvider)) {\n (_h = (_g = oldProvider == null ? void 0 : oldProvider.onClose) == null ? void 0 : _g.call(oldProvider)) == null ? void 0 : _h.catch((err) => {\n this._logger.error(`error closing provider: ${err == null ? void 0 : err.message}, ${err == null ? void 0 : err.stack}`);\n });\n }\n return initializationPromise;\n }\n getProviderForClient(domain) {\n var _a, _b;\n if (!domain) {\n return this._defaultProvider.provider;\n }\n return (_b = (_a = this._domainScopedProviders.get(domain)) == null ? void 0 : _a.provider) != null ? _b : this._defaultProvider.provider;\n }\n buildAndCacheEventEmitterForClient(domain) {\n const emitter = this._clientEvents.get(domain);\n if (emitter) {\n return emitter;\n }\n const newEmitter = this._createEventEmitter();\n this._clientEvents.set(domain, newEmitter);\n const clientProvider = this.getProviderForClient(domain);\n Object.values(ClientProviderEvents).forEach(\n (eventType) => {\n var _a;\n return (_a = clientProvider.events) == null ? void 0 : _a.addHandler(eventType, (details) => __async(this, null, function* () {\n newEmitter.emit(eventType, __spreadProps(__spreadValues({}, details), {\n clientName: domain,\n domain,\n providerName: clientProvider.metadata.name\n }));\n }));\n }\n );\n return newEmitter;\n }\n getUnboundEmitters() {\n const domainScopedProviders = [...this._domainScopedProviders.keys()];\n const eventEmitterNames = [...this._clientEvents.keys()].filter(isDefined);\n const unboundEmitterNames = eventEmitterNames.filter((name) => !domainScopedProviders.includes(name));\n return [\n // all unbound, named emitters\n ...unboundEmitterNames.map((name) => this._clientEvents.get(name)),\n // the default emitter\n this._clientEvents.get(void 0)\n ].filter(isDefined);\n }\n getAssociatedEventEmitters(domain) {\n return domain ? [this.buildAndCacheEventEmitterForClient(domain)] : this.getUnboundEmitters();\n }\n transferListeners(oldProvider, newProvider, domain, emitters) {\n var _a;\n (_a = this._clientEventHandlers.get(domain)) == null ? void 0 : _a.forEach((eventHandler) => {\n var _a2;\n return (_a2 = oldProvider.events) == null ? void 0 : _a2.removeHandler(...eventHandler);\n });\n const newClientHandlers = Object.values(ClientProviderEvents).map((eventType) => {\n const handler = (details) => __async(this, null, function* () {\n emitters.forEach((emitter) => {\n emitter == null ? void 0 : emitter.emit(eventType, __spreadProps(__spreadValues({}, details), { clientName: domain, domain, providerName: newProvider.metadata.name }));\n });\n this._apiEmitter.emit(eventType, __spreadProps(__spreadValues({}, details), {\n clientName: domain,\n domain,\n providerName: newProvider.metadata.name\n }));\n });\n return [eventType, handler];\n });\n this._clientEventHandlers.set(domain, newClientHandlers);\n newClientHandlers.forEach((eventHandler) => {\n var _a2;\n return (_a2 = newProvider.events) == null ? void 0 : _a2.addHandler(...eventHandler);\n });\n }\n close() {\n return __async(this, null, function* () {\n var _a, _b;\n try {\n yield (_b = (_a = this == null ? void 0 : this._defaultProvider.provider) == null ? void 0 : _a.onClose) == null ? void 0 : _b.call(_a);\n } catch (err) {\n this.handleShutdownError(this._defaultProvider.provider, err);\n }\n const wrappers = Array.from(this._domainScopedProviders);\n yield Promise.all(\n wrappers.map((_0) => __async(this, [_0], function* ([, wrapper]) {\n var _a2, _b2;\n try {\n yield (_b2 = wrapper == null ? void 0 : (_a2 = wrapper.provider).onClose) == null ? void 0 : _b2.call(_a2);\n } catch (err) {\n this.handleShutdownError(wrapper == null ? void 0 : wrapper.provider, err);\n }\n }))\n );\n });\n }\n clearProvidersAndSetDefault(defaultProvider) {\n return __async(this, null, function* () {\n try {\n yield this.close();\n } catch (err) {\n this._logger.error(\"Unable to cleanly close providers. Resetting to the default configuration.\");\n } finally {\n this._domainScopedProviders.clear();\n this._defaultProvider = new ProviderWrapper(\n defaultProvider,\n this._statusEnumType.NOT_READY,\n this._statusEnumType\n );\n }\n });\n }\n get allProviders() {\n return [\n ...[...this._domainScopedProviders.values()].map((wrappers) => wrappers.provider),\n this._defaultProvider.provider\n ];\n }\n handleShutdownError(provider, err) {\n this._logger.error(`Error during shutdown of provider ${provider.metadata.name}: ${err}`);\n this._logger.error(err == null ? void 0 : err.stack);\n }\n};\nexport {\n AggregateError,\n ClientProviderEvents as AllProviderEvents,\n ClientProviderStatus as AllProviderStatus,\n ComparisonStrategy as BaseComparisonStrategy,\n BaseEvaluationStrategy,\n FirstMatchStrategy as BaseFirstMatchStrategy,\n FirstSuccessfulStrategy as BaseFirstSuccessfulStrategy,\n ClientProviderEvents,\n ClientProviderStatus,\n DefaultLogger,\n ErrorCode,\n ErrorWithCode,\n FlagNotFoundError,\n GeneralError,\n GenericEventEmitter,\n InvalidContextError,\n LOG_LEVELS,\n MapHookData,\n OpenFeatureCommonAPI,\n OpenFeatureError,\n ParseError,\n ProviderFatalError,\n ProviderNotReadyError,\n ProviderWrapper,\n SafeLogger,\n ServerProviderEvents,\n ServerProviderStatus,\n StandardResolutionReasons,\n StatusTracker,\n TargetingKeyMissingError,\n TelemetryAttribute,\n TelemetryFlagMetadata,\n TypeMismatchError,\n constructAggregateError,\n createEvaluationEvent,\n instantiateErrorByErrorCode,\n isObject,\n isString,\n objectOrUndefined,\n statusMatchesEvent,\n stringOrUndefined,\n throwAggregateErrorFromPromiseResults\n};\n//# sourceMappingURL=index.js.map\n"],"x_google_ignoreList":[0],"mappings":"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"}
|
|
@@ -1,489 +0,0 @@
|
|
|
1
|
-
//#region ../../node_modules/.pnpm/@openfeature+core@1.9.2/node_modules/@openfeature/core/dist/types.d.ts
|
|
2
|
-
type Metadata = Record<string, string>;
|
|
3
|
-
/**
|
|
4
|
-
* Defines where the library is intended to be run.
|
|
5
|
-
*/
|
|
6
|
-
type Paradigm = 'server' | 'client';
|
|
7
|
-
type PrimitiveValue = null | boolean | string | number;
|
|
8
|
-
type JsonObject = {
|
|
9
|
-
[key: string]: JsonValue;
|
|
10
|
-
};
|
|
11
|
-
type JsonArray = JsonValue[];
|
|
12
|
-
/**
|
|
13
|
-
* Represents a JSON node value.
|
|
14
|
-
*/
|
|
15
|
-
type JsonValue = PrimitiveValue | JsonObject | JsonArray;
|
|
16
|
-
type EvaluationContextValue = PrimitiveValue | Date | {
|
|
17
|
-
[key: string]: EvaluationContextValue;
|
|
18
|
-
} | EvaluationContextValue[];
|
|
19
|
-
/**
|
|
20
|
-
* A container for arbitrary contextual data that can be used as a basis for dynamic evaluation
|
|
21
|
-
*/
|
|
22
|
-
type EvaluationContext = {
|
|
23
|
-
/**
|
|
24
|
-
* A string uniquely identifying the subject (end-user, or client service) of a flag evaluation.
|
|
25
|
-
* Providers may require this field for fractional flag evaluation, rules, or overrides targeting specific users.
|
|
26
|
-
* Such providers may behave unpredictably if a targeting key is not specified at flag resolution.
|
|
27
|
-
*/
|
|
28
|
-
targetingKey?: string;
|
|
29
|
-
} & Record<string, EvaluationContextValue>;
|
|
30
|
-
type FlagValueType = 'boolean' | 'string' | 'number' | 'object';
|
|
31
|
-
/**
|
|
32
|
-
* Represents a JSON node value.
|
|
33
|
-
*/
|
|
34
|
-
type FlagValue = boolean | string | number | JsonValue;
|
|
35
|
-
type ResolutionReason = keyof typeof StandardResolutionReasons | (string & Record<never, never>);
|
|
36
|
-
/**
|
|
37
|
-
* A structure which supports definition of arbitrary properties, with keys of type string, and values of type boolean, string, or number.
|
|
38
|
-
*
|
|
39
|
-
* This structure is populated by a provider for use by an Application Author (via the Evaluation API) or an Application Integrator (via hooks).
|
|
40
|
-
*/
|
|
41
|
-
type FlagMetadata = Record<string, string | number | boolean>;
|
|
42
|
-
type ResolutionDetails<U> = {
|
|
43
|
-
value: U;
|
|
44
|
-
variant?: string;
|
|
45
|
-
flagMetadata?: FlagMetadata;
|
|
46
|
-
reason?: ResolutionReason;
|
|
47
|
-
errorCode?: ErrorCode;
|
|
48
|
-
errorMessage?: string;
|
|
49
|
-
};
|
|
50
|
-
type EvaluationDetails<T extends FlagValue> = {
|
|
51
|
-
flagKey: string;
|
|
52
|
-
flagMetadata: Readonly<FlagMetadata>;
|
|
53
|
-
} & ResolutionDetails<T>;
|
|
54
|
-
declare const StandardResolutionReasons: {
|
|
55
|
-
/**
|
|
56
|
-
* The resolved value is static (no dynamic evaluation).
|
|
57
|
-
*/
|
|
58
|
-
readonly STATIC: "STATIC";
|
|
59
|
-
/**
|
|
60
|
-
* The resolved value was configured statically, or otherwise fell back to a pre-configured value.
|
|
61
|
-
*/
|
|
62
|
-
readonly DEFAULT: "DEFAULT";
|
|
63
|
-
/**
|
|
64
|
-
* The resolved value was the result of a dynamic evaluation, such as a rule or specific user-targeting.
|
|
65
|
-
*/
|
|
66
|
-
readonly TARGETING_MATCH: "TARGETING_MATCH";
|
|
67
|
-
/**
|
|
68
|
-
* The resolved value was the result of pseudorandom assignment.
|
|
69
|
-
*/
|
|
70
|
-
readonly SPLIT: "SPLIT";
|
|
71
|
-
/**
|
|
72
|
-
* The resolved value was retrieved from cache.
|
|
73
|
-
*/
|
|
74
|
-
readonly CACHED: "CACHED";
|
|
75
|
-
/**
|
|
76
|
-
* The resolved value was the result of the flag being disabled in the management system.
|
|
77
|
-
*/
|
|
78
|
-
readonly DISABLED: "DISABLED";
|
|
79
|
-
/**
|
|
80
|
-
* The reason for the resolved value could not be determined.
|
|
81
|
-
*/
|
|
82
|
-
readonly UNKNOWN: "UNKNOWN";
|
|
83
|
-
/**
|
|
84
|
-
* The resolved value is non-authoritative or possibly out of date.
|
|
85
|
-
*/
|
|
86
|
-
readonly STALE: "STALE";
|
|
87
|
-
/**
|
|
88
|
-
* The resolved value was the result of an error.
|
|
89
|
-
*
|
|
90
|
-
* Note: The `errorCode` and `errorMessage` fields may contain additional details of this error.
|
|
91
|
-
*/
|
|
92
|
-
readonly ERROR: "ERROR";
|
|
93
|
-
};
|
|
94
|
-
declare enum ErrorCode {
|
|
95
|
-
/**
|
|
96
|
-
* The value was resolved before the provider was ready.
|
|
97
|
-
*/
|
|
98
|
-
PROVIDER_NOT_READY = "PROVIDER_NOT_READY",
|
|
99
|
-
/**
|
|
100
|
-
* The provider has entered an irrecoverable error state.
|
|
101
|
-
*/
|
|
102
|
-
PROVIDER_FATAL = "PROVIDER_FATAL",
|
|
103
|
-
/**
|
|
104
|
-
* The flag could not be found.
|
|
105
|
-
*/
|
|
106
|
-
FLAG_NOT_FOUND = "FLAG_NOT_FOUND",
|
|
107
|
-
/**
|
|
108
|
-
* An error was encountered parsing data, such as a flag configuration.
|
|
109
|
-
*/
|
|
110
|
-
PARSE_ERROR = "PARSE_ERROR",
|
|
111
|
-
/**
|
|
112
|
-
* The type of the flag value does not match the expected type.
|
|
113
|
-
*/
|
|
114
|
-
TYPE_MISMATCH = "TYPE_MISMATCH",
|
|
115
|
-
/**
|
|
116
|
-
* The provider requires a targeting key and one was not provided in the evaluation context.
|
|
117
|
-
*/
|
|
118
|
-
TARGETING_KEY_MISSING = "TARGETING_KEY_MISSING",
|
|
119
|
-
/**
|
|
120
|
-
* The evaluation context does not meet provider requirements.
|
|
121
|
-
*/
|
|
122
|
-
INVALID_CONTEXT = "INVALID_CONTEXT",
|
|
123
|
-
/**
|
|
124
|
-
* An error with an unspecified code.
|
|
125
|
-
*/
|
|
126
|
-
GENERAL = "GENERAL"
|
|
127
|
-
}
|
|
128
|
-
interface Logger {
|
|
129
|
-
error(...args: unknown[]): void;
|
|
130
|
-
warn(...args: unknown[]): void;
|
|
131
|
-
info(...args: unknown[]): void;
|
|
132
|
-
debug(...args: unknown[]): void;
|
|
133
|
-
}
|
|
134
|
-
interface ManageLogger<T> {
|
|
135
|
-
/**
|
|
136
|
-
* Sets a logger on this receiver. This logger supersedes to the global logger
|
|
137
|
-
* and is passed to various components in the SDK.
|
|
138
|
-
* The logger configured on the global API object will be used for all evaluations,
|
|
139
|
-
* unless overridden in a particular client.
|
|
140
|
-
* @template T The type of the receiver
|
|
141
|
-
* @param {Logger} logger The logger to be used
|
|
142
|
-
* @returns {T} The receiver (this object)
|
|
143
|
-
*/
|
|
144
|
-
setLogger(logger: Logger): T;
|
|
145
|
-
}
|
|
146
|
-
/**
|
|
147
|
-
* An enumeration of possible events for server-sdk providers.
|
|
148
|
-
*/
|
|
149
|
-
declare enum ServerProviderEvents {
|
|
150
|
-
/**
|
|
151
|
-
* The provider is ready to evaluate flags.
|
|
152
|
-
*/
|
|
153
|
-
Ready = "PROVIDER_READY",
|
|
154
|
-
/**
|
|
155
|
-
* The provider is in an error state.
|
|
156
|
-
*/
|
|
157
|
-
Error = "PROVIDER_ERROR",
|
|
158
|
-
/**
|
|
159
|
-
* The flag configuration in the source-of-truth has changed.
|
|
160
|
-
*/
|
|
161
|
-
ConfigurationChanged = "PROVIDER_CONFIGURATION_CHANGED",
|
|
162
|
-
/**
|
|
163
|
-
* The provider's cached state is no longer valid and may not be up-to-date with the source of truth.
|
|
164
|
-
*/
|
|
165
|
-
Stale = "PROVIDER_STALE"
|
|
166
|
-
}
|
|
167
|
-
/**
|
|
168
|
-
* An enumeration of possible events for web-sdk providers.
|
|
169
|
-
*/
|
|
170
|
-
declare enum ClientProviderEvents {
|
|
171
|
-
/**
|
|
172
|
-
* The provider is ready to evaluate flags.
|
|
173
|
-
*/
|
|
174
|
-
Ready = "PROVIDER_READY",
|
|
175
|
-
/**
|
|
176
|
-
* The provider is in an error state.
|
|
177
|
-
*/
|
|
178
|
-
Error = "PROVIDER_ERROR",
|
|
179
|
-
/**
|
|
180
|
-
* The flag configuration in the source-of-truth has changed.
|
|
181
|
-
*/
|
|
182
|
-
ConfigurationChanged = "PROVIDER_CONFIGURATION_CHANGED",
|
|
183
|
-
/**
|
|
184
|
-
* The context associated with the provider has changed, and the provider has reconciled it's associated state.
|
|
185
|
-
*/
|
|
186
|
-
ContextChanged = "PROVIDER_CONTEXT_CHANGED",
|
|
187
|
-
/**
|
|
188
|
-
* The context associated with the provider has changed, and the provider has not yet reconciled its associated state.
|
|
189
|
-
*/
|
|
190
|
-
Reconciling = "PROVIDER_RECONCILING",
|
|
191
|
-
/**
|
|
192
|
-
* The provider's cached state is no longer valid and may not be up-to-date with the source of truth.
|
|
193
|
-
*/
|
|
194
|
-
Stale = "PROVIDER_STALE"
|
|
195
|
-
}
|
|
196
|
-
/**
|
|
197
|
-
* A type representing any possible ProviderEvent (server or client side).
|
|
198
|
-
* In most cases, you probably want to import `ProviderEvents` from the respective SDK.
|
|
199
|
-
*/
|
|
200
|
-
type AnyProviderEvent = ServerProviderEvents | ClientProviderEvents;
|
|
201
|
-
type EventMetadata = {
|
|
202
|
-
[key: string]: string | boolean | number;
|
|
203
|
-
};
|
|
204
|
-
type CommonEventDetails = {
|
|
205
|
-
readonly providerName: string;
|
|
206
|
-
/**
|
|
207
|
-
* @deprecated alias of "domain", use domain instead
|
|
208
|
-
*/
|
|
209
|
-
readonly clientName?: string;
|
|
210
|
-
readonly domain?: string;
|
|
211
|
-
};
|
|
212
|
-
type CommonEventProps = {
|
|
213
|
-
readonly message?: string;
|
|
214
|
-
readonly metadata?: EventMetadata;
|
|
215
|
-
};
|
|
216
|
-
type ReadyEvent = CommonEventProps;
|
|
217
|
-
type ErrorEvent = CommonEventProps;
|
|
218
|
-
type StaleEvent = CommonEventProps;
|
|
219
|
-
type ConfigChangeEvent = CommonEventProps & {
|
|
220
|
-
readonly flagsChanged?: string[];
|
|
221
|
-
};
|
|
222
|
-
type ServerEventMap = {
|
|
223
|
-
[ServerProviderEvents.Ready]: ReadyEvent;
|
|
224
|
-
[ServerProviderEvents.Error]: ErrorEvent;
|
|
225
|
-
[ServerProviderEvents.Stale]: StaleEvent;
|
|
226
|
-
[ServerProviderEvents.ConfigurationChanged]: ConfigChangeEvent;
|
|
227
|
-
};
|
|
228
|
-
type ClientEventMap = {
|
|
229
|
-
[ClientProviderEvents.Ready]: ReadyEvent;
|
|
230
|
-
[ClientProviderEvents.Error]: ErrorEvent;
|
|
231
|
-
[ClientProviderEvents.Stale]: StaleEvent;
|
|
232
|
-
[ClientProviderEvents.ConfigurationChanged]: ConfigChangeEvent;
|
|
233
|
-
[ClientProviderEvents.Reconciling]: CommonEventProps;
|
|
234
|
-
[ClientProviderEvents.ContextChanged]: CommonEventProps;
|
|
235
|
-
};
|
|
236
|
-
type EventContext<U extends Record<string, unknown> = Record<string, unknown>, T extends ServerProviderEvents | ClientProviderEvents = ServerProviderEvents | ClientProviderEvents> = (T extends ClientProviderEvents ? ClientEventMap[T] : T extends ServerProviderEvents ? ServerEventMap[T] : never) & U;
|
|
237
|
-
type EventDetails<T extends ServerProviderEvents | ClientProviderEvents = ServerProviderEvents | ClientProviderEvents> = EventContext<Record<string, unknown>, T> & CommonEventDetails;
|
|
238
|
-
type EventHandler<T extends ServerProviderEvents | ClientProviderEvents = ServerProviderEvents | ClientProviderEvents> = (eventDetails?: EventDetails<T>) => Promise<unknown> | unknown;
|
|
239
|
-
/**
|
|
240
|
-
* Event emitter to be optionally implemented by providers.
|
|
241
|
-
* Implemented by @see OpenFeatureEventEmitter.
|
|
242
|
-
*/
|
|
243
|
-
interface ProviderEventEmitter<E extends AnyProviderEvent, AdditionalContext extends Record<string, unknown> = Record<string, unknown>> extends ManageLogger<ProviderEventEmitter<E, AdditionalContext>> {
|
|
244
|
-
emit(eventType: E, context?: EventContext): void;
|
|
245
|
-
addHandler(eventType: AnyProviderEvent, handler: EventHandler): void;
|
|
246
|
-
removeHandler(eventType: AnyProviderEvent, handler: EventHandler): void;
|
|
247
|
-
removeAllHandlers(eventType?: AnyProviderEvent): void;
|
|
248
|
-
getHandlers(eventType: AnyProviderEvent): EventHandler[];
|
|
249
|
-
}
|
|
250
|
-
/**
|
|
251
|
-
* Returns true if the provider's status corresponds to the event.
|
|
252
|
-
* If the provider's status is not defined, it matches READY.
|
|
253
|
-
* @param {AnyProviderEvent} event event to match
|
|
254
|
-
* @param {ClientProviderStatus | ServerProviderStatus} status status of provider
|
|
255
|
-
* @returns {boolean} boolean indicating if the provider status corresponds to the event.
|
|
256
|
-
*/
|
|
257
|
-
type TrackingEventValue = PrimitiveValue | Date | {
|
|
258
|
-
[key: string]: TrackingEventValue;
|
|
259
|
-
} | TrackingEventValue[];
|
|
260
|
-
/**
|
|
261
|
-
* A container for arbitrary data that can relevant to tracking events.
|
|
262
|
-
*/
|
|
263
|
-
type TrackingEventDetails = {
|
|
264
|
-
/**
|
|
265
|
-
* A numeric value associated with this event.
|
|
266
|
-
*/
|
|
267
|
-
value?: number;
|
|
268
|
-
} & Record<string, TrackingEventValue>;
|
|
269
|
-
/**
|
|
270
|
-
* The state of the provider.
|
|
271
|
-
* Note that the provider's state is handled by the SDK.
|
|
272
|
-
*/
|
|
273
|
-
declare enum ServerProviderStatus {
|
|
274
|
-
/**
|
|
275
|
-
* The provider has not been initialized and cannot yet evaluate flags.
|
|
276
|
-
*/
|
|
277
|
-
NOT_READY = "NOT_READY",
|
|
278
|
-
/**
|
|
279
|
-
* The provider is ready to resolve flags.
|
|
280
|
-
*/
|
|
281
|
-
READY = "READY",
|
|
282
|
-
/**
|
|
283
|
-
* The provider is in an error state and unable to evaluate flags.
|
|
284
|
-
*/
|
|
285
|
-
ERROR = "ERROR",
|
|
286
|
-
/**
|
|
287
|
-
* The provider's cached state is no longer valid and may not be up-to-date with the source of truth.
|
|
288
|
-
*/
|
|
289
|
-
STALE = "STALE",
|
|
290
|
-
/**
|
|
291
|
-
* The provider has entered an irrecoverable error state.
|
|
292
|
-
*/
|
|
293
|
-
FATAL = "FATAL"
|
|
294
|
-
}
|
|
295
|
-
/**
|
|
296
|
-
* The state of the provider.
|
|
297
|
-
* Note that the provider's state is handled by the SDK.
|
|
298
|
-
*/
|
|
299
|
-
declare enum ClientProviderStatus {
|
|
300
|
-
/**
|
|
301
|
-
* The provider has not been initialized and cannot yet evaluate flags.
|
|
302
|
-
*/
|
|
303
|
-
NOT_READY = "NOT_READY",
|
|
304
|
-
/**
|
|
305
|
-
* The provider is ready to resolve flags.
|
|
306
|
-
*/
|
|
307
|
-
READY = "READY",
|
|
308
|
-
/**
|
|
309
|
-
* The provider is in an error state and unable to evaluate flags.
|
|
310
|
-
*/
|
|
311
|
-
ERROR = "ERROR",
|
|
312
|
-
/**
|
|
313
|
-
* The provider's cached state is no longer valid and may not be up-to-date with the source of truth.
|
|
314
|
-
*/
|
|
315
|
-
STALE = "STALE",
|
|
316
|
-
/**
|
|
317
|
-
* The provider has entered an irrecoverable error state.
|
|
318
|
-
*/
|
|
319
|
-
FATAL = "FATAL",
|
|
320
|
-
/**
|
|
321
|
-
* The provider is reconciling its state with a context change.
|
|
322
|
-
*/
|
|
323
|
-
RECONCILING = "RECONCILING"
|
|
324
|
-
}
|
|
325
|
-
/**
|
|
326
|
-
* Static data about the provider.
|
|
327
|
-
*/
|
|
328
|
-
interface ProviderMetadata extends Readonly<Metadata> {
|
|
329
|
-
readonly name: string;
|
|
330
|
-
}
|
|
331
|
-
interface CommonProvider<S extends ClientProviderStatus | ServerProviderStatus> {
|
|
332
|
-
readonly metadata: ProviderMetadata;
|
|
333
|
-
/**
|
|
334
|
-
* Represents where the provider is intended to be run. If defined,
|
|
335
|
-
* the SDK will enforce that the defined paradigm at runtime.
|
|
336
|
-
*/
|
|
337
|
-
readonly runsOn?: Paradigm;
|
|
338
|
-
/**
|
|
339
|
-
* @deprecated the SDK now maintains the provider's state; there's no need for providers to implement this field.
|
|
340
|
-
* Returns a representation of the current readiness of the provider.
|
|
341
|
-
*
|
|
342
|
-
* _Providers which do not implement this method are assumed to be ready immediately._
|
|
343
|
-
*/
|
|
344
|
-
readonly status?: S;
|
|
345
|
-
/**
|
|
346
|
-
* An event emitter for ProviderEvents.
|
|
347
|
-
* @see ProviderEvents
|
|
348
|
-
*/
|
|
349
|
-
events?: ProviderEventEmitter<AnyProviderEvent>;
|
|
350
|
-
/**
|
|
351
|
-
* A function used to shut down the provider.
|
|
352
|
-
* Called when this provider is replaced with a new one, or when the OpenFeature is shut down.
|
|
353
|
-
*/
|
|
354
|
-
onClose?(): Promise<void>;
|
|
355
|
-
/**
|
|
356
|
-
* A function used to setup the provider.
|
|
357
|
-
* Called by the SDK after the provider is set if the provider's status is NOT_READY.
|
|
358
|
-
* When the returned promise resolves, the SDK fires the ProviderEvents.Ready event.
|
|
359
|
-
* If the returned promise rejects, the SDK fires the ProviderEvents.Error event.
|
|
360
|
-
* Use this function to perform any context-dependent setup within the provider.
|
|
361
|
-
* @param context
|
|
362
|
-
*/
|
|
363
|
-
initialize?(context?: EvaluationContext): Promise<void>;
|
|
364
|
-
/**
|
|
365
|
-
* Track a user action or application state, usually representing a business objective or outcome.
|
|
366
|
-
* @param trackingEventName
|
|
367
|
-
* @param context
|
|
368
|
-
* @param trackingEventDetails
|
|
369
|
-
*/
|
|
370
|
-
track?(trackingEventName: string, context: EvaluationContext, trackingEventDetails: TrackingEventDetails): void;
|
|
371
|
-
}
|
|
372
|
-
interface ClientMetadata {
|
|
373
|
-
/**
|
|
374
|
-
* @deprecated alias of "domain", use domain instead
|
|
375
|
-
*/
|
|
376
|
-
readonly name?: string;
|
|
377
|
-
readonly domain?: string;
|
|
378
|
-
readonly version?: string;
|
|
379
|
-
readonly providerMetadata: ProviderMetadata;
|
|
380
|
-
}
|
|
381
|
-
/**
|
|
382
|
-
* A mutable data structure for hooks to maintain state across their lifecycle.
|
|
383
|
-
* Each hook instance gets its own isolated data store that persists for the
|
|
384
|
-
* duration of a single flag evaluation.
|
|
385
|
-
* @template TData - A record type that defines the shape of the stored data
|
|
386
|
-
*/
|
|
387
|
-
interface HookData<TData = Record<string, unknown>> {
|
|
388
|
-
/**
|
|
389
|
-
* Sets a value in the hook data store.
|
|
390
|
-
* @param key The key to store the value under
|
|
391
|
-
* @param value The value to store
|
|
392
|
-
*/
|
|
393
|
-
set<K extends keyof TData>(key: K, value: TData[K]): void;
|
|
394
|
-
set(key: string, value: unknown): void;
|
|
395
|
-
/**
|
|
396
|
-
* Gets a value from the hook data store.
|
|
397
|
-
* @param key The key to retrieve the value for
|
|
398
|
-
* @returns The stored value, or undefined if not found
|
|
399
|
-
*/
|
|
400
|
-
get<K extends keyof TData>(key: K): TData[K] | undefined;
|
|
401
|
-
get(key: string): unknown;
|
|
402
|
-
/**
|
|
403
|
-
* Checks if a key exists in the hook data store.
|
|
404
|
-
* @param key The key to check
|
|
405
|
-
* @returns True if the key exists, false otherwise
|
|
406
|
-
*/
|
|
407
|
-
has<K extends keyof TData>(key: K): boolean;
|
|
408
|
-
has(key: string): boolean;
|
|
409
|
-
/**
|
|
410
|
-
* Deletes a value from the hook data store.
|
|
411
|
-
* @param key The key to delete
|
|
412
|
-
* @returns True if the key was deleted, false if it didn't exist
|
|
413
|
-
*/
|
|
414
|
-
delete<K extends keyof TData>(key: K): boolean;
|
|
415
|
-
delete(key: string): boolean;
|
|
416
|
-
/**
|
|
417
|
-
* Clears all values from the hook data store.
|
|
418
|
-
*/
|
|
419
|
-
clear(): void;
|
|
420
|
-
}
|
|
421
|
-
/**
|
|
422
|
-
* Default implementation of HookData using a Map.
|
|
423
|
-
* @template TData - A record type that defines the shape of the stored data
|
|
424
|
-
*/
|
|
425
|
-
type HookHints = Readonly<Record<string, unknown>>;
|
|
426
|
-
interface HookContext<T extends FlagValue = FlagValue, TData = Record<string, unknown>> {
|
|
427
|
-
readonly flagKey: string;
|
|
428
|
-
readonly defaultValue: T;
|
|
429
|
-
readonly flagValueType: FlagValueType;
|
|
430
|
-
readonly context: Readonly<EvaluationContext>;
|
|
431
|
-
readonly clientMetadata: ClientMetadata;
|
|
432
|
-
readonly providerMetadata: ProviderMetadata;
|
|
433
|
-
readonly logger: Logger;
|
|
434
|
-
readonly hookData: HookData<TData>;
|
|
435
|
-
}
|
|
436
|
-
interface BeforeHookContext<T extends FlagValue = FlagValue, TData = Record<string, unknown>> extends HookContext<T, TData> {
|
|
437
|
-
context: EvaluationContext;
|
|
438
|
-
}
|
|
439
|
-
interface BaseHook<T extends FlagValue = FlagValue, TData = Record<string, unknown>, BeforeHookReturn = unknown, HooksReturn = unknown> {
|
|
440
|
-
/**
|
|
441
|
-
* Runs before flag values are resolved from the provider.
|
|
442
|
-
* If an EvaluationContext is returned, it will be merged with the pre-existing EvaluationContext.
|
|
443
|
-
* @param hookContext
|
|
444
|
-
* @param hookHints
|
|
445
|
-
*/
|
|
446
|
-
before?(hookContext: BeforeHookContext<T, TData>, hookHints?: HookHints): BeforeHookReturn;
|
|
447
|
-
/**
|
|
448
|
-
* Runs after flag values are successfully resolved from the provider.
|
|
449
|
-
* @param hookContext
|
|
450
|
-
* @param evaluationDetails
|
|
451
|
-
* @param hookHints
|
|
452
|
-
*/
|
|
453
|
-
after?(hookContext: Readonly<HookContext<T, TData>>, evaluationDetails: EvaluationDetails<T>, hookHints?: HookHints): HooksReturn;
|
|
454
|
-
/**
|
|
455
|
-
* Runs in the event of an unhandled error or promise rejection during flag resolution, or any attached hooks.
|
|
456
|
-
* @param hookContext
|
|
457
|
-
* @param error
|
|
458
|
-
* @param hookHints
|
|
459
|
-
*/
|
|
460
|
-
error?(hookContext: Readonly<HookContext<T, TData>>, error: unknown, hookHints?: HookHints): HooksReturn;
|
|
461
|
-
/**
|
|
462
|
-
* Runs after all other hook stages, regardless of success or error.
|
|
463
|
-
* @param hookContext
|
|
464
|
-
* @param evaluationDetails
|
|
465
|
-
* @param hookHints
|
|
466
|
-
*/
|
|
467
|
-
finally?(hookContext: Readonly<HookContext<T, TData>>, evaluationDetails: EvaluationDetails<T>, hookHints?: HookHints): HooksReturn;
|
|
468
|
-
}
|
|
469
|
-
type AnyProviderStatus = ClientProviderStatus | ServerProviderStatus;
|
|
470
|
-
/**
|
|
471
|
-
* A provider and its current status.
|
|
472
|
-
* For internal use only.
|
|
473
|
-
*/
|
|
474
|
-
declare class ProviderWrapper<P extends CommonProvider<AnyProviderStatus>, S extends AnyProviderStatus> {
|
|
475
|
-
private _provider;
|
|
476
|
-
private _status;
|
|
477
|
-
private _pendingContextChanges;
|
|
478
|
-
constructor(_provider: P, _status: S, _statusEnumType: typeof ClientProviderStatus | typeof ServerProviderStatus);
|
|
479
|
-
get provider(): P;
|
|
480
|
-
set provider(provider: P);
|
|
481
|
-
get status(): S;
|
|
482
|
-
set status(status: S);
|
|
483
|
-
get allContextChangesSettled(): boolean;
|
|
484
|
-
incrementPendingContextChanges(): void;
|
|
485
|
-
decrementPendingContextChanges(): void;
|
|
486
|
-
}
|
|
487
|
-
//#endregion
|
|
488
|
-
export { type AnyProviderEvent, type BaseHook, type BeforeHookContext, type ClientMetadata, ClientProviderEvents, ClientProviderStatus, type CommonEventDetails, type CommonProvider, type ConfigChangeEvent, ErrorCode, type ErrorEvent, type EvaluationContext, type EvaluationContextValue, type EvaluationDetails, type EventContext, type EventDetails, type EventHandler, type EventMetadata, type FlagMetadata, type FlagValue, type FlagValueType, type HookContext, type HookData, type HookHints, type JsonArray, type JsonObject, type JsonValue, type Logger, type ManageLogger, type Metadata, type Paradigm, type PrimitiveValue, type ProviderEventEmitter, type ProviderMetadata, ProviderWrapper, type ReadyEvent, type ResolutionDetails, type ResolutionReason, ServerProviderEvents, ServerProviderStatus, type StaleEvent, StandardResolutionReasons, type TrackingEventDetails, type TrackingEventValue };
|
|
489
|
-
//# sourceMappingURL=types.d.cts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.cts","names":["Metadata","Record","Paradigm","PrimitiveValue","JsonObject","JsonValue","key","JsonArray","EvaluationContextValue","Date","EvaluationContext","targetingKey","ManageContext","T","getContext","setContext","context","FlagValueType","FlagValue","ResolutionReason","StandardResolutionReasons","FlagMetadata","ResolutionDetails","U","ErrorCode","value","variant","flagMetadata","reason","errorCode","errorMessage","EvaluationDetails","Readonly","flagKey","STATIC","DEFAULT","TARGETING_MATCH","SPLIT","CACHED","DISABLED","UNKNOWN","STALE","ERROR","PROVIDER_NOT_READY","PROVIDER_FATAL","FLAG_NOT_FOUND","PARSE_ERROR","TYPE_MISMATCH","TARGETING_KEY_MISSING","INVALID_CONTEXT","GENERAL","Logger","error","args","warn","info","debug","ManageLogger","setLogger","logger","DefaultLogger","LOG_LEVELS","Array","SafeLogger","fallbackLogger","constructor","log","ServerProviderEvents","Ready","Error","ConfigurationChanged","Stale","ClientProviderEvents","ContextChanged","Reconciling","AnyProviderEvent","EventMetadata","CommonEventDetails","providerName","clientName","domain","CommonEventProps","message","metadata","ReadyEvent","ErrorEvent","StaleEvent","ReconcilingEvent","ConfigChangeEvent","flagsChanged","ServerEventMap","ClientEventMap","ServerNotChangeEvents","ClientNotChangeEvents","NotChangeEvents","EventContext","EventDetails","EventHandler","Promise","eventDetails","EventOptions","AbortSignal","signal","Eventing","addHandler","eventType","handler","options","removeHandler","getHandlers","ProviderEventEmitter","E","AdditionalContext","emit","removeAllHandlers","statusMatchesEvent","ClientProviderStatus","ServerProviderStatus","event","status","GenericEventEmitter","PlatformEventEmitter","globalLogger","eventEmitter","_handlers","_eventLogger","_logger","Function","addListener","eventName","listener","on","once","removeListener","off","removeAllListeners","listeners","listenerCount","eventNames","TrackingEventValue","TrackingEventDetails","NOT_READY","READY","FATAL","RECONCILING","ProviderMetadata","name","CommonProvider","S","runsOn","events","onClose","initialize","track","trackingEventName","trackingEventDetails","ProviderEntryInput","TProvider","provider","RegisteredProvider","Required","ErrorOptions","cause","OpenFeatureError","code","FlagNotFoundError","GeneralError","InvalidContextError","ParseError","ProviderFatalError","ProviderNotReadyError","TargetingKeyMissingError","TypeMismatchError","instantiateErrorByErrorCode","ErrorWithCode","AggregateError","originalErrors","source","constructAggregateError","providerErrors","throwAggregateErrorFromPromiseResults","PromiseSettledResult","result","providerEntries","ProviderEventsEnum","ProviderStatusEnum","StatusTracker","TProviderEvents","TProviderStatus","statusEnum","eventEnum","providerStatuses","wrapEventHandler","providerEntry","providerStatus","getStatusFromProviderStatuses","changeProviderStatus","StrategyEvaluationContext","flagType","BaseStrategyProviderContext","BaseStrategyPerProviderContext","BaseProviderResolutionResultBase","BaseProviderResolutionSuccessResult","_TProviderStatus","details","BaseProviderResolutionErrorResult","thrownError","BaseProviderResolutionResult","BaseFinalResult","errors","BaseEvaluationStrategy","runMode","shouldEvaluateThisProvider","strategyContext","_evalContext","shouldEvaluateNextProvider","_strategyContext","_context","_result","shouldTrackWithThisProvider","_trackingEventName","_trackingEventDetails","determineFinalResult","resolutions","hasError","resolution","hasErrorWithCode","collectProviderErrors","resolutionToFinalResult","FirstMatchStrategy","FirstSuccessfulStrategy","ComparisonStrategy","fallbackProvider","onMismatch","ClientMetadata","version","providerMetadata","HookData","K","TData","set","get","has","delete","clear","MapHookData","data","HookHints","HookContext","defaultValue","flagValueType","clientMetadata","hookData","BeforeHookContext","BaseHook","BeforeHookReturn","HooksReturn","before","hookContext","hookHints","after","evaluationDetails","finally","EvaluationLifeCycle","addHooks","hooks","getHooks","clearHooks","TelemetryAttribute","KEY","ERROR_CODE","ERROR_MESSAGE","VARIANT","VALUE","CONTEXT_ID","REASON","PROVIDER","FLAG_SET_ID","VERSION","TelemetryFlagMetadata","AttributeValue","EvaluationEvent","attributes","createEvaluationEvent","isString","stringOrUndefined","isObject","objectOrUndefined","AnyProviderStatus","ProviderWrapper","P","_provider","_status","_pendingContextChanges","_statusEnumType","allContextChangesSettled","incrementPendingContextChanges","decrementPendingContextChanges","OpenFeatureCommonAPI","H","Map","_createEventEmitter","_defaultProvider","_domainScopedProviders","_apiEmitter","_hooks","_clientEventHandlers","_domainScopedContext","_clientEvents","_runsOn","category","getProviderMetadata","clearHandlers","setProviderAndWait","clientOrProvider","providerContextOrUndefined","contextOrUndefined","setProvider","setAwaitableProvider","domainOrProvider","providerOrUndefined","getProviderForClient","buildAndCacheEventEmitterForClient","getUnboundEmitters","getAssociatedEventEmitters","transferListeners","close","clearProvidersAndSetDefault","defaultProvider","allProviders","handleShutdownError","AllProviderEvents","AllProviderStatus","BaseComparisonStrategy","BaseFirstMatchStrategy","BaseFirstSuccessfulStrategy"],"sources":["../../../../../../../../../../node_modules/.pnpm/@openfeature+core@1.9.2/node_modules/@openfeature/core/dist/types.d.ts"],"x_google_ignoreList":[0],"mappings":"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"}
|