{"version":3,"file":"@configcat-NNkSG0qb.js","sources":["../../node_modules/@openfeature/core/dist/esm/index.js","../../node_modules/@openfeature/web-sdk/dist/esm/index.js","../../node_modules/@openfeature/react-sdk/dist/esm/index.js","../../node_modules/@openfeature/config-cat-core/index.esm.js","../../node_modules/configcat-common/lib/esm/ConfigFetcher.js","../../node_modules/configcat-common/lib/esm/ConfigJson.js","../../node_modules/configcat-common/lib/esm/ProjectConfig.js","../../node_modules/configcat-common/lib/esm/ConfigServiceBase.js","../../node_modules/configcat-common/lib/esm/Utils.js","../../node_modules/configcat-common/lib/esm/AutoPollConfigService.js","../../node_modules/configcat-common/lib/esm/ConfigCatCache.js","../../node_modules/configcat-common/lib/esm/ConfigCatLogger.js","../../node_modules/configcat-common/lib/esm/DefaultEventEmitter.js","../../node_modules/configcat-common/lib/esm/EventEmitter.js","../../node_modules/configcat-common/lib/esm/Hash.js","../../node_modules/configcat-common/lib/esm/Hooks.js","../../node_modules/configcat-common/lib/esm/Polyfills.js","../../node_modules/configcat-common/lib/esm/ConfigCatClientOptions.js","../../node_modules/configcat-common/lib/esm/FlagOverrides.js","../../node_modules/configcat-common/lib/esm/LazyLoadConfigService.js","../../node_modules/configcat-common/lib/esm/ManualPollConfigService.js","../../node_modules/configcat-common/lib/esm/EvaluateLogBuilder.js","../../node_modules/configcat-common/lib/esm/Semver.js","../../node_modules/configcat-common/lib/esm/User.js","../../node_modules/configcat-common/lib/esm/RolloutEvaluator.js","../../node_modules/configcat-common/lib/esm/ConfigCatClient.js","../../node_modules/configcat-common/lib/esm/index.js","../../node_modules/configcat-js-ssr/lib/esm/Cache.js","../../node_modules/configcat-js-ssr/lib/esm/ConfigFetcher.js","../../node_modules/configcat-js-ssr/lib/esm/Version.js","../../node_modules/configcat-js-ssr/lib/esm/index.js","../../node_modules/@openfeature/config-cat-web-provider/index.esm.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/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__ */ ((ServerProviderStatus3) => {\n ServerProviderStatus3[\"NOT_READY\"] = \"NOT_READY\";\n ServerProviderStatus3[\"READY\"] = \"READY\";\n ServerProviderStatus3[\"ERROR\"] = \"ERROR\";\n ServerProviderStatus3[\"STALE\"] = \"STALE\";\n ServerProviderStatus3[\"FATAL\"] = \"FATAL\";\n return ServerProviderStatus3;\n})(ServerProviderStatus || {});\nvar ClientProviderStatus = /* @__PURE__ */ ((ClientProviderStatus3) => {\n ClientProviderStatus3[\"NOT_READY\"] = \"NOT_READY\";\n ClientProviderStatus3[\"READY\"] = \"READY\";\n ClientProviderStatus3[\"ERROR\"] = \"ERROR\";\n ClientProviderStatus3[\"STALE\"] = \"STALE\";\n ClientProviderStatus3[\"FATAL\"] = \"FATAL\";\n ClientProviderStatus3[\"RECONCILING\"] = \"RECONCILING\";\n return ClientProviderStatus3;\n})(ClientProviderStatus || {});\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/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 */\n addHandler(eventType, handler) {\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 }\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 ClientProviderEvents as AllProviderEvents,\n ClientProviderStatus as AllProviderStatus,\n ClientProviderEvents,\n ClientProviderStatus,\n DefaultLogger,\n ErrorCode,\n FlagNotFoundError,\n GeneralError,\n GenericEventEmitter,\n InvalidContextError,\n LOG_LEVELS,\n OpenFeatureCommonAPI,\n OpenFeatureError,\n ParseError,\n ProviderFatalError,\n ProviderNotReadyError,\n ProviderWrapper,\n SafeLogger,\n ServerProviderEvents,\n ServerProviderStatus,\n StandardResolutionReasons,\n TargetingKeyMissingError,\n TypeMismatchError,\n instantiateErrorByErrorCode,\n isObject,\n isString,\n objectOrUndefined,\n statusMatchesEvent,\n stringOrUndefined\n};\n//# sourceMappingURL=index.js.map\n","var __create = Object.create;\nvar __defProp = Object.defineProperty;\nvar __defProps = Object.defineProperties;\nvar __getOwnPropDesc = Object.getOwnPropertyDescriptor;\nvar __getOwnPropDescs = Object.getOwnPropertyDescriptors;\nvar __getOwnPropNames = Object.getOwnPropertyNames;\nvar __getOwnPropSymbols = Object.getOwnPropertySymbols;\nvar __getProtoOf = Object.getPrototypeOf;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __propIsEnum = Object.prototype.propertyIsEnumerable;\nvar __reflectGet = Reflect.get;\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 __commonJS = (cb, mod) => function __require() {\n return mod || (0, cb[__getOwnPropNames(cb)[0]])((mod = { exports: {} }).exports, mod), mod.exports;\n};\nvar __copyProps = (to, from, except, desc) => {\n if (from && typeof from === \"object\" || typeof from === \"function\") {\n for (let key of __getOwnPropNames(from))\n if (!__hasOwnProp.call(to, key) && key !== except)\n __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });\n }\n return to;\n};\nvar __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(\n // If the importer is in node compatibility mode or this is not an ESM\n // file that has been converted to a CommonJS file using a Babel-\n // compatible transform (i.e. \"__esModule\" has not been set), then set\n // \"default\" to the CommonJS \"module.exports\" for node compatibility.\n isNodeMode || !mod || !mod.__esModule ? __defProp(target, \"default\", { value: mod, enumerable: true }) : target,\n mod\n));\nvar __superGet = (cls, obj, key) => __reflectGet(__getProtoOf(cls), key, obj);\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// ../../node_modules/eventemitter3/index.js\nvar require_eventemitter3 = __commonJS({\n \"../../node_modules/eventemitter3/index.js\"(exports, module) {\n \"use strict\";\n var has = Object.prototype.hasOwnProperty;\n var prefix = \"~\";\n function Events() {\n }\n if (Object.create) {\n Events.prototype = /* @__PURE__ */ Object.create(null);\n if (!new Events().__proto__)\n prefix = false;\n }\n function EE(fn, context, once) {\n this.fn = fn;\n this.context = context;\n this.once = once || false;\n }\n function addListener(emitter, event, fn, context, once) {\n if (typeof fn !== \"function\") {\n throw new TypeError(\"The listener must be a function\");\n }\n var listener = new EE(fn, context || emitter, once), evt = prefix ? prefix + event : event;\n if (!emitter._events[evt])\n emitter._events[evt] = listener, emitter._eventsCount++;\n else if (!emitter._events[evt].fn)\n emitter._events[evt].push(listener);\n else\n emitter._events[evt] = [emitter._events[evt], listener];\n return emitter;\n }\n function clearEvent(emitter, evt) {\n if (--emitter._eventsCount === 0)\n emitter._events = new Events();\n else\n delete emitter._events[evt];\n }\n function EventEmitter2() {\n this._events = new Events();\n this._eventsCount = 0;\n }\n EventEmitter2.prototype.eventNames = function eventNames() {\n var names = [], events, name;\n if (this._eventsCount === 0)\n return names;\n for (name in events = this._events) {\n if (has.call(events, name))\n names.push(prefix ? name.slice(1) : name);\n }\n if (Object.getOwnPropertySymbols) {\n return names.concat(Object.getOwnPropertySymbols(events));\n }\n return names;\n };\n EventEmitter2.prototype.listeners = function listeners(event) {\n var evt = prefix ? prefix + event : event, handlers = this._events[evt];\n if (!handlers)\n return [];\n if (handlers.fn)\n return [handlers.fn];\n for (var i = 0, l = handlers.length, ee = new Array(l); i < l; i++) {\n ee[i] = handlers[i].fn;\n }\n return ee;\n };\n EventEmitter2.prototype.listenerCount = function listenerCount(event) {\n var evt = prefix ? prefix + event : event, listeners = this._events[evt];\n if (!listeners)\n return 0;\n if (listeners.fn)\n return 1;\n return listeners.length;\n };\n EventEmitter2.prototype.emit = function emit(event, a1, a2, a3, a4, a5) {\n var evt = prefix ? prefix + event : event;\n if (!this._events[evt])\n return false;\n var listeners = this._events[evt], len = arguments.length, args, i;\n if (listeners.fn) {\n if (listeners.once)\n this.removeListener(event, listeners.fn, void 0, true);\n switch (len) {\n case 1:\n return listeners.fn.call(listeners.context), true;\n case 2:\n return listeners.fn.call(listeners.context, a1), true;\n case 3:\n return listeners.fn.call(listeners.context, a1, a2), true;\n case 4:\n return listeners.fn.call(listeners.context, a1, a2, a3), true;\n case 5:\n return listeners.fn.call(listeners.context, a1, a2, a3, a4), true;\n case 6:\n return listeners.fn.call(listeners.context, a1, a2, a3, a4, a5), true;\n }\n for (i = 1, args = new Array(len - 1); i < len; i++) {\n args[i - 1] = arguments[i];\n }\n listeners.fn.apply(listeners.context, args);\n } else {\n var length = listeners.length, j;\n for (i = 0; i < length; i++) {\n if (listeners[i].once)\n this.removeListener(event, listeners[i].fn, void 0, true);\n switch (len) {\n case 1:\n listeners[i].fn.call(listeners[i].context);\n break;\n case 2:\n listeners[i].fn.call(listeners[i].context, a1);\n break;\n case 3:\n listeners[i].fn.call(listeners[i].context, a1, a2);\n break;\n case 4:\n listeners[i].fn.call(listeners[i].context, a1, a2, a3);\n break;\n default:\n if (!args)\n for (j = 1, args = new Array(len - 1); j < len; j++) {\n args[j - 1] = arguments[j];\n }\n listeners[i].fn.apply(listeners[i].context, args);\n }\n }\n }\n return true;\n };\n EventEmitter2.prototype.on = function on(event, fn, context) {\n return addListener(this, event, fn, context, false);\n };\n EventEmitter2.prototype.once = function once(event, fn, context) {\n return addListener(this, event, fn, context, true);\n };\n EventEmitter2.prototype.removeListener = function removeListener(event, fn, context, once) {\n var evt = prefix ? prefix + event : event;\n if (!this._events[evt])\n return this;\n if (!fn) {\n clearEvent(this, evt);\n return this;\n }\n var listeners = this._events[evt];\n if (listeners.fn) {\n if (listeners.fn === fn && (!once || listeners.once) && (!context || listeners.context === context)) {\n clearEvent(this, evt);\n }\n } else {\n for (var i = 0, events = [], length = listeners.length; i < length; i++) {\n if (listeners[i].fn !== fn || once && !listeners[i].once || context && listeners[i].context !== context) {\n events.push(listeners[i]);\n }\n }\n if (events.length)\n this._events[evt] = events.length === 1 ? events[0] : events;\n else\n clearEvent(this, evt);\n }\n return this;\n };\n EventEmitter2.prototype.removeAllListeners = function removeAllListeners(event) {\n var evt;\n if (event) {\n evt = prefix ? prefix + event : event;\n if (this._events[evt])\n clearEvent(this, evt);\n } else {\n this._events = new Events();\n this._eventsCount = 0;\n }\n return this;\n };\n EventEmitter2.prototype.off = EventEmitter2.prototype.removeListener;\n EventEmitter2.prototype.addListener = EventEmitter2.prototype.on;\n EventEmitter2.prefixed = prefix;\n EventEmitter2.EventEmitter = EventEmitter2;\n if (\"undefined\" !== typeof module) {\n module.exports = EventEmitter2;\n }\n }\n});\n\n// src/provider/provider.ts\nimport { ClientProviderStatus } from \"@openfeature/core\";\n\n// src/provider/no-op-provider.ts\nvar REASON_NO_OP = \"No-op\";\nvar NoopFeatureProvider = class {\n constructor() {\n this.metadata = {\n name: \"No-op Provider\"\n };\n }\n resolveBooleanEvaluation(_, defaultValue) {\n return this.noOp(defaultValue);\n }\n resolveStringEvaluation(_, defaultValue) {\n return this.noOp(defaultValue);\n }\n resolveNumberEvaluation(_, defaultValue) {\n return this.noOp(defaultValue);\n }\n resolveObjectEvaluation(_, defaultValue) {\n return this.noOp(defaultValue);\n }\n noOp(defaultValue) {\n return {\n value: defaultValue,\n reason: REASON_NO_OP\n };\n }\n};\nvar NOOP_PROVIDER = new NoopFeatureProvider();\n\n// src/provider/in-memory-provider/in-memory-provider.ts\nimport {\n FlagNotFoundError,\n GeneralError,\n OpenFeatureError as OpenFeatureError2,\n StandardResolutionReasons,\n TypeMismatchError\n} from \"@openfeature/core\";\n\n// src/events/open-feature-event-emitter.ts\nimport { GenericEventEmitter } from \"@openfeature/core\";\n\n// ../../node_modules/eventemitter3/index.mjs\nvar import_index = __toESM(require_eventemitter3(), 1);\n\n// src/events/open-feature-event-emitter.ts\nvar OpenFeatureEventEmitter = class extends GenericEventEmitter {\n constructor() {\n super();\n this.eventEmitter = new import_index.default();\n }\n};\n\n// src/events/events.ts\nimport { ClientProviderEvents } from \"@openfeature/core\";\n\n// src/provider/in-memory-provider/variant-not-found-error.ts\nimport { ErrorCode, OpenFeatureError } from \"@openfeature/core\";\nvar VariantNotFoundError = class _VariantNotFoundError extends OpenFeatureError {\n constructor(message) {\n super(message);\n Object.setPrototypeOf(this, _VariantNotFoundError.prototype);\n this.name = \"VariantNotFoundError\";\n this.code = ErrorCode.GENERAL;\n }\n};\n\n// src/provider/in-memory-provider/in-memory-provider.ts\nvar InMemoryProvider = class {\n constructor(flagConfiguration = {}) {\n this.events = new OpenFeatureEventEmitter();\n this.runsOn = \"client\";\n this.metadata = {\n name: \"in-memory\"\n };\n this._flagConfiguration = __spreadValues({}, flagConfiguration);\n }\n initialize(context) {\n return __async(this, null, function* () {\n try {\n for (const key in this._flagConfiguration) {\n this.resolveFlagWithReason(key, context);\n }\n this._context = context;\n } catch (err) {\n throw new GeneralError(\"initialization failure\", { cause: err });\n }\n });\n }\n /**\n * Overwrites the configured flags.\n * @param { FlagConfiguration } flagConfiguration new flag configuration\n */\n putConfiguration(flagConfiguration) {\n return __async(this, null, function* () {\n const flagsChanged = Object.entries(flagConfiguration).filter(([key, value]) => this._flagConfiguration[key] !== value).map(([key]) => key);\n this._flagConfiguration = __spreadValues({}, flagConfiguration);\n try {\n yield this.initialize(this._context);\n this.events.emit(ClientProviderEvents.ConfigurationChanged, { flagsChanged });\n } catch (err) {\n this.events.emit(ClientProviderEvents.Error);\n throw err;\n }\n });\n }\n resolveBooleanEvaluation(flagKey, defaultValue, context, logger) {\n return this.resolveAndCheckFlag(flagKey, defaultValue, context || this._context, logger);\n }\n resolveNumberEvaluation(flagKey, defaultValue, context, logger) {\n return this.resolveAndCheckFlag(flagKey, defaultValue, context || this._context, logger);\n }\n resolveStringEvaluation(flagKey, defaultValue, context, logger) {\n return this.resolveAndCheckFlag(flagKey, defaultValue, context || this._context, logger);\n }\n resolveObjectEvaluation(flagKey, defaultValue, context, logger) {\n return this.resolveAndCheckFlag(flagKey, defaultValue, context || this._context, logger);\n }\n resolveAndCheckFlag(flagKey, defaultValue, context, logger) {\n if (!(flagKey in this._flagConfiguration)) {\n const message = `no flag found with key ${flagKey}`;\n logger == null ? void 0 : logger.debug(message);\n throw new FlagNotFoundError(message);\n }\n if (this._flagConfiguration[flagKey].disabled) {\n return { value: defaultValue, reason: StandardResolutionReasons.DISABLED };\n }\n const resolvedFlag = this.resolveFlagWithReason(flagKey, context);\n if (resolvedFlag.value === void 0) {\n const message = `no value associated with variant provided for ${flagKey} found`;\n logger == null ? void 0 : logger.error(message);\n throw new VariantNotFoundError(message);\n }\n if (typeof resolvedFlag.value != typeof defaultValue) {\n throw new TypeMismatchError();\n }\n return resolvedFlag;\n }\n resolveFlagWithReason(flagKey, ctx) {\n try {\n const resolutionResult = this.lookupFlagValue(flagKey, ctx);\n return resolutionResult;\n } catch (error) {\n if (!(error instanceof OpenFeatureError2)) {\n throw new GeneralError((error == null ? void 0 : error.message) || \"unknown error\");\n }\n throw error;\n }\n }\n lookupFlagValue(flagKey, ctx) {\n var _a;\n const flagSpec = this._flagConfiguration[flagKey];\n const isContextEval = ctx && (flagSpec == null ? void 0 : flagSpec.contextEvaluator);\n const variant = isContextEval ? (_a = flagSpec.contextEvaluator) == null ? void 0 : _a.call(flagSpec, ctx) : flagSpec.defaultVariant;\n const value = variant && (flagSpec == null ? void 0 : flagSpec.variants[variant]);\n const reason = isContextEval ? StandardResolutionReasons.TARGETING_MATCH : StandardResolutionReasons.STATIC;\n return __spreadProps(__spreadValues({\n value\n }, variant && { variant }), {\n reason\n });\n }\n};\n\n// src/open-feature.ts\nimport {\n OpenFeatureCommonAPI,\n ProviderWrapper,\n objectOrUndefined,\n stringOrUndefined\n} from \"@openfeature/core\";\n\n// src/client/internal/open-feature-client.ts\nimport {\n ErrorCode as ErrorCode2,\n ProviderFatalError,\n ProviderNotReadyError,\n SafeLogger,\n StandardResolutionReasons as StandardResolutionReasons2,\n instantiateErrorByErrorCode,\n statusMatchesEvent\n} from \"@openfeature/core\";\nvar OpenFeatureClient = class {\n constructor(providerAccessor, providerStatusAccessor, emitterAccessor, globalLogger, options) {\n this.providerAccessor = providerAccessor;\n this.providerStatusAccessor = providerStatusAccessor;\n this.emitterAccessor = emitterAccessor;\n this.globalLogger = globalLogger;\n this.options = options;\n this._hooks = [];\n }\n get metadata() {\n var _a, _b;\n return {\n // Use domain if name is not provided\n name: (_a = this.options.domain) != null ? _a : this.options.name,\n domain: (_b = this.options.domain) != null ? _b : this.options.name,\n version: this.options.version,\n providerMetadata: this.providerAccessor().metadata\n };\n }\n get providerStatus() {\n return this.providerStatusAccessor();\n }\n addHandler(eventType, handler) {\n var _a;\n this.emitterAccessor().addHandler(eventType, handler);\n const shouldRunNow = statusMatchesEvent(eventType, this.providerStatus);\n if (shouldRunNow) {\n try {\n handler({\n clientName: this.metadata.name,\n domain: this.metadata.domain,\n providerName: this._provider.metadata.name\n });\n } catch (err) {\n (_a = this._logger) == null ? void 0 : _a.error(\"Error running event handler:\", err);\n }\n }\n }\n removeHandler(notificationType, handler) {\n this.emitterAccessor().removeHandler(notificationType, handler);\n }\n getHandlers(eventType) {\n return this.emitterAccessor().getHandlers(eventType);\n }\n setLogger(logger) {\n this._clientLogger = new SafeLogger(logger);\n return this;\n }\n addHooks(...hooks) {\n this._hooks = [...this._hooks, ...hooks];\n return this;\n }\n getHooks() {\n return this._hooks;\n }\n clearHooks() {\n this._hooks = [];\n return this;\n }\n getBooleanValue(flagKey, defaultValue, options) {\n return this.getBooleanDetails(flagKey, defaultValue, options).value;\n }\n getBooleanDetails(flagKey, defaultValue, options) {\n return this.evaluate(flagKey, this._provider.resolveBooleanEvaluation, defaultValue, \"boolean\", options);\n }\n getStringValue(flagKey, defaultValue, options) {\n return this.getStringDetails(flagKey, defaultValue, options).value;\n }\n getStringDetails(flagKey, defaultValue, options) {\n return this.evaluate(\n flagKey,\n // this isolates providers from our restricted string generic argument.\n this._provider.resolveStringEvaluation,\n defaultValue,\n \"string\",\n options\n );\n }\n getNumberValue(flagKey, defaultValue, options) {\n return this.getNumberDetails(flagKey, defaultValue, options).value;\n }\n getNumberDetails(flagKey, defaultValue, options) {\n return this.evaluate(\n flagKey,\n // this isolates providers from our restricted number generic argument.\n this._provider.resolveNumberEvaluation,\n defaultValue,\n \"number\",\n options\n );\n }\n getObjectValue(flagKey, defaultValue, options) {\n return this.getObjectDetails(flagKey, defaultValue, options).value;\n }\n getObjectDetails(flagKey, defaultValue, options) {\n return this.evaluate(flagKey, this._provider.resolveObjectEvaluation, defaultValue, \"object\", options);\n }\n evaluate(flagKey, resolver, defaultValue, flagType, options = {}) {\n var _a, _b;\n const allHooks = [\n ...OpenFeature.getHooks(),\n ...this.getHooks(),\n ...options.hooks || [],\n ...this._provider.hooks || []\n ];\n const allHooksReversed = [...allHooks].reverse();\n const context = __spreadValues({}, OpenFeature.getContext((_a = this == null ? void 0 : this.options) == null ? void 0 : _a.domain));\n const hookContext = {\n flagKey,\n defaultValue,\n flagValueType: flagType,\n clientMetadata: this.metadata,\n providerMetadata: this._provider.metadata,\n context,\n logger: this._logger\n };\n try {\n this.beforeHooks(allHooks, hookContext, options);\n if (this.providerStatus === ClientProviderStatus.NOT_READY) {\n throw new ProviderNotReadyError(\"provider has not yet initialized\");\n } else if (this.providerStatus === ClientProviderStatus.FATAL) {\n throw new ProviderFatalError(\"provider is in an irrecoverable error state\");\n }\n const resolution = resolver.call(this._provider, flagKey, defaultValue, context, this._logger);\n const evaluationDetails = __spreadProps(__spreadValues({}, resolution), {\n flagMetadata: Object.freeze((_b = resolution.flagMetadata) != null ? _b : {}),\n flagKey\n });\n if (evaluationDetails.errorCode) {\n throw instantiateErrorByErrorCode(evaluationDetails.errorCode);\n }\n this.afterHooks(allHooksReversed, hookContext, evaluationDetails, options);\n return evaluationDetails;\n } catch (err) {\n const errorMessage = err == null ? void 0 : err.message;\n const errorCode = (err == null ? void 0 : err.code) || ErrorCode2.GENERAL;\n this.errorHooks(allHooksReversed, hookContext, err, options);\n return {\n errorCode,\n errorMessage,\n value: defaultValue,\n reason: StandardResolutionReasons2.ERROR,\n flagMetadata: Object.freeze({}),\n flagKey\n };\n } finally {\n this.finallyHooks(allHooksReversed, hookContext, options);\n }\n }\n beforeHooks(hooks, hookContext, options) {\n var _a;\n Object.freeze(hookContext);\n Object.freeze(hookContext.context);\n for (const hook of hooks) {\n (_a = hook == null ? void 0 : hook.before) == null ? void 0 : _a.call(hook, hookContext, Object.freeze(options.hookHints));\n }\n }\n afterHooks(hooks, hookContext, evaluationDetails, options) {\n var _a;\n for (const hook of hooks) {\n (_a = hook == null ? void 0 : hook.after) == null ? void 0 : _a.call(hook, hookContext, evaluationDetails, options.hookHints);\n }\n }\n errorHooks(hooks, hookContext, err, options) {\n var _a;\n for (const hook of hooks) {\n try {\n (_a = hook == null ? void 0 : hook.error) == null ? void 0 : _a.call(hook, hookContext, err, options.hookHints);\n } catch (err2) {\n this._logger.error(`Unhandled error during 'error' hook: ${err2}`);\n if (err2 instanceof Error) {\n this._logger.error(err2.stack);\n }\n this._logger.error(err2 == null ? void 0 : err2.stack);\n }\n }\n }\n finallyHooks(hooks, hookContext, options) {\n var _a;\n for (const hook of hooks) {\n try {\n (_a = hook == null ? void 0 : hook.finally) == null ? void 0 : _a.call(hook, hookContext, options.hookHints);\n } catch (err) {\n this._logger.error(`Unhandled error during 'finally' hook: ${err}`);\n if (err instanceof Error) {\n this._logger.error(err.stack);\n }\n this._logger.error(err == null ? void 0 : err.stack);\n }\n }\n }\n get _provider() {\n return this.providerAccessor();\n }\n get _logger() {\n return this._clientLogger || this.globalLogger();\n }\n};\n\n// src/open-feature.ts\nvar GLOBAL_OPENFEATURE_API_KEY = Symbol.for(\"@openfeature/web-sdk/api\");\nvar _globalThis = globalThis;\nvar OpenFeatureAPI = class _OpenFeatureAPI extends OpenFeatureCommonAPI {\n constructor() {\n super(\"client\");\n this._statusEnumType = ClientProviderStatus;\n this._apiEmitter = new OpenFeatureEventEmitter();\n this._defaultProvider = new ProviderWrapper(\n NOOP_PROVIDER,\n ClientProviderStatus.NOT_READY,\n this._statusEnumType\n );\n this._domainScopedProviders = /* @__PURE__ */ new Map();\n this._createEventEmitter = () => new OpenFeatureEventEmitter();\n }\n /**\n * Gets a singleton instance of the OpenFeature API.\n * @ignore\n * @returns {OpenFeatureAPI} OpenFeature API\n */\n static getInstance() {\n const globalApi = _globalThis[GLOBAL_OPENFEATURE_API_KEY];\n if (globalApi) {\n return globalApi;\n }\n const instance = new _OpenFeatureAPI();\n _globalThis[GLOBAL_OPENFEATURE_API_KEY] = instance;\n return instance;\n }\n getProviderStatus(domain) {\n var _a, _b;\n if (!domain) {\n return this._defaultProvider.status;\n }\n return (_b = (_a = this._domainScopedProviders.get(domain)) == null ? void 0 : _a.status) != null ? _b : this._defaultProvider.status;\n }\n setProviderAndWait(clientOrProvider, providerContextOrUndefined, contextOrUndefined) {\n return __async(this, null, function* () {\n const domain = stringOrUndefined(clientOrProvider);\n const provider = domain ? objectOrUndefined(providerContextOrUndefined) : objectOrUndefined(clientOrProvider);\n const context = domain ? objectOrUndefined(contextOrUndefined) : objectOrUndefined(providerContextOrUndefined);\n if (context) {\n if (domain) {\n this._domainScopedContext.set(domain, context);\n } else {\n this._context = context;\n }\n }\n yield this.setAwaitableProvider(domain, provider);\n });\n }\n setProvider(domainOrProvider, providerContextOrUndefined, contextOrUndefined) {\n const domain = stringOrUndefined(domainOrProvider);\n const provider = domain ? objectOrUndefined(providerContextOrUndefined) : objectOrUndefined(domainOrProvider);\n const context = domain ? objectOrUndefined(contextOrUndefined) : objectOrUndefined(providerContextOrUndefined);\n if (context) {\n if (domain) {\n this._domainScopedContext.set(domain, context);\n } else {\n this._context = context;\n }\n }\n const maybePromise = this.setAwaitableProvider(domain, provider);\n Promise.resolve(maybePromise).catch((err) => {\n this._logger.error(\"Error during provider initialization:\", err);\n });\n return this;\n }\n setContext(domainOrContext, contextOrUndefined) {\n return __async(this, null, function* () {\n var _a, _b;\n const domain = stringOrUndefined(domainOrContext);\n const context = (_b = (_a = objectOrUndefined(domainOrContext)) != null ? _a : objectOrUndefined(contextOrUndefined)) != null ? _b : {};\n if (domain) {\n const wrapper = this._domainScopedProviders.get(domain);\n if (wrapper) {\n const oldContext = this.getContext(domain);\n this._domainScopedContext.set(domain, context);\n yield this.runProviderContextChangeHandler(domain, wrapper, oldContext, context);\n } else {\n this._domainScopedContext.set(domain, context);\n }\n } else {\n const oldContext = this._context;\n this._context = context;\n const unboundProviders = Array.from(this._domainScopedProviders.entries()).filter(([domain2]) => !this._domainScopedContext.has(domain2)).reduce((acc, [domain2, wrapper]) => {\n acc.push({ domain: domain2, wrapper });\n return acc;\n }, []);\n const allDomainRecords = [\n // add in the default (no domain)\n { domain: void 0, wrapper: this._defaultProvider },\n ...unboundProviders\n ];\n yield Promise.all(\n allDomainRecords.map((dm) => this.runProviderContextChangeHandler(dm.domain, dm.wrapper, oldContext, context))\n );\n }\n });\n }\n getContext(domainOrUndefined) {\n const domain = stringOrUndefined(domainOrUndefined);\n if (domain) {\n const context = this._domainScopedContext.get(domain);\n if (context) {\n return context;\n } else {\n this._logger.debug(`Unable to find context for '${domain}'.`);\n }\n }\n return this._context;\n }\n clearContext(domainOrUndefined) {\n return __async(this, null, function* () {\n const domain = stringOrUndefined(domainOrUndefined);\n if (domain) {\n const wrapper = this._domainScopedProviders.get(domain);\n if (wrapper) {\n const oldContext = this.getContext(domain);\n this._domainScopedContext.delete(domain);\n const newContext = this.getContext();\n yield this.runProviderContextChangeHandler(domain, wrapper, oldContext, newContext);\n } else {\n this._domainScopedContext.delete(domain);\n }\n } else {\n return this.setContext({});\n }\n });\n }\n /**\n * Resets the global evaluation context and removes the evaluation context for\n * all domains.\n */\n clearContexts() {\n return __async(this, null, function* () {\n yield this.clearContext();\n yield Promise.allSettled(Array.from(this._domainScopedProviders.keys()).map((domain) => this.clearContext(domain)));\n });\n }\n /**\n * A factory function for creating new named OpenFeature clients. Clients can contain\n * their own state (e.g. logger, hook, context). Multiple clients can be used\n * to segment feature flag configuration.\n *\n * If there is already a provider bound to this name via {@link this.setProvider setProvider}, this provider will be used.\n * Otherwise, the default provider is used until a provider is assigned to that name.\n * @param {string} domain An identifier which logically binds clients with providers\n * @param {string} version The version of the client (only used for metadata)\n * @returns {Client} OpenFeature Client\n */\n getClient(domain, version) {\n return new OpenFeatureClient(\n // functions are passed here to make sure that these values are always up to date,\n // and so we don't have to make these public properties on the API class.\n () => this.getProviderForClient(domain),\n () => this.getProviderStatus(domain),\n () => this.buildAndCacheEventEmitterForClient(domain),\n () => this._logger,\n { domain, version }\n );\n }\n /**\n * Clears all registered providers and resets the default provider.\n * @returns {Promise}\n */\n clearProviders() {\n return __async(this, null, function* () {\n yield __superGet(_OpenFeatureAPI.prototype, this, \"clearProvidersAndSetDefault\").call(this, NOOP_PROVIDER);\n this._domainScopedContext.clear();\n });\n }\n runProviderContextChangeHandler(domain, wrapper, oldContext, newContext) {\n return __async(this, null, function* () {\n var _a, _b, _c, _d, _e, _f;\n const providerName = ((_b = (_a = wrapper.provider) == null ? void 0 : _a.metadata) == null ? void 0 : _b.name) || \"unnamed-provider\";\n try {\n if (typeof wrapper.provider.onContextChange === \"function\") {\n const maybePromise = wrapper.provider.onContextChange(oldContext, newContext);\n if (typeof (maybePromise == null ? void 0 : maybePromise.then) === \"function\") {\n wrapper.incrementPendingContextChanges();\n wrapper.status = this._statusEnumType.RECONCILING;\n this.getAssociatedEventEmitters(domain).forEach((emitter) => {\n emitter == null ? void 0 : emitter.emit(ClientProviderEvents.Reconciling, { domain, providerName });\n });\n (_c = this._apiEmitter) == null ? void 0 : _c.emit(ClientProviderEvents.Reconciling, { domain, providerName });\n yield maybePromise;\n wrapper.decrementPendingContextChanges();\n }\n }\n wrapper.status = this._statusEnumType.READY;\n if (wrapper.allContextChangesSettled) {\n this.getAssociatedEventEmitters(domain).forEach((emitter) => {\n emitter == null ? void 0 : emitter.emit(ClientProviderEvents.ContextChanged, { clientName: domain, domain, providerName });\n });\n (_d = this._apiEmitter) == null ? void 0 : _d.emit(ClientProviderEvents.ContextChanged, { clientName: domain, domain, providerName });\n }\n } catch (err) {\n wrapper.decrementPendingContextChanges();\n wrapper.status = this._statusEnumType.ERROR;\n if (wrapper.allContextChangesSettled) {\n const error = err;\n const message = `Error running ${providerName}'s context change handler: ${error == null ? void 0 : error.message}`;\n (_e = this._logger) == null ? void 0 : _e.error(`${message}`, err);\n this.getAssociatedEventEmitters(domain).forEach((emitter) => {\n emitter == null ? void 0 : emitter.emit(ClientProviderEvents.Error, { clientName: domain, domain, providerName, message });\n });\n (_f = this._apiEmitter) == null ? void 0 : _f.emit(ClientProviderEvents.Error, { clientName: domain, domain, providerName, message });\n }\n }\n });\n }\n};\nvar OpenFeature = OpenFeatureAPI.getInstance();\n\n// src/index.ts\nexport * from \"@openfeature/core\";\nexport {\n InMemoryProvider,\n NOOP_PROVIDER,\n OpenFeature,\n OpenFeatureAPI,\n OpenFeatureEventEmitter,\n ClientProviderEvents as ProviderEvents,\n ClientProviderStatus as ProviderStatus\n};\n//# sourceMappingURL=index.js.map\n","var __defProp = Object.defineProperty;\nvar __defProps = Object.defineProperties;\nvar __getOwnPropDescs = Object.getOwnPropertyDescriptors;\nvar __getOwnPropSymbols = Object.getOwnPropertySymbols;\nvar __getProtoOf = Object.getPrototypeOf;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __propIsEnum = Object.prototype.propertyIsEnumerable;\nvar __reflectGet = Reflect.get;\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 __objRest = (source, exclude) => {\n var target = {};\n for (var prop in source)\n if (__hasOwnProp.call(source, prop) && exclude.indexOf(prop) < 0)\n target[prop] = source[prop];\n if (source != null && __getOwnPropSymbols)\n for (var prop of __getOwnPropSymbols(source)) {\n if (exclude.indexOf(prop) < 0 && __propIsEnum.call(source, prop))\n target[prop] = source[prop];\n }\n return target;\n};\nvar __superGet = (cls, obj, key) => __reflectGet(__getProtoOf(cls), key, obj);\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/evaluation/use-feature-flag.ts\nimport {\n ProviderEvents as ProviderEvents3,\n ProviderStatus as ProviderStatus2\n} from \"@openfeature/web-sdk\";\nimport { useEffect as useEffect2, useState as useState2 } from \"react\";\n\n// src/common/options.ts\nvar DEFAULT_OPTIONS = {\n updateOnContextChanged: true,\n updateOnConfigurationChanged: true,\n suspendUntilReady: false,\n suspendWhileReconciling: false\n};\nvar normalizeOptions = (options = {}) => {\n const updateOnContextChanged = options.updateOnContextChanged;\n const updateOnConfigurationChanged = options.updateOnConfigurationChanged;\n const suspendUntilReady2 = \"suspendUntilReady\" in options ? options.suspendUntilReady : options.suspend;\n const suspendWhileReconciling = \"suspendWhileReconciling\" in options ? options.suspendWhileReconciling : options.suspend;\n return __spreadValues(__spreadValues(__spreadValues(__spreadValues({}, typeof suspendUntilReady2 === \"boolean\" && { suspendUntilReady: suspendUntilReady2 }), typeof suspendWhileReconciling === \"boolean\" && { suspendWhileReconciling }), typeof updateOnContextChanged === \"boolean\" && { updateOnContextChanged }), typeof updateOnConfigurationChanged === \"boolean\" && { updateOnConfigurationChanged });\n};\n\n// src/common/suspense.ts\nimport { ProviderEvents } from \"@openfeature/web-sdk\";\nfunction suspendUntilReady(client) {\n let resolve;\n let reject;\n throw new Promise((_resolve, _reject) => {\n resolve = _resolve;\n reject = _reject;\n client.addHandler(ProviderEvents.Ready, resolve);\n client.addHandler(ProviderEvents.Error, reject);\n }).finally(() => {\n client.removeHandler(ProviderEvents.Ready, resolve);\n client.removeHandler(ProviderEvents.Ready, reject);\n });\n}\n\n// src/provider/context.ts\nimport React from \"react\";\nvar Context = React.createContext(void 0);\nfunction useProviderOptions() {\n const { options } = React.useContext(Context) || {};\n return normalizeOptions(options);\n}\n\n// src/provider/use-open-feature-client.ts\nimport React2 from \"react\";\nfunction useOpenFeatureClient() {\n const { client } = React2.useContext(Context) || {};\n if (!client) {\n throw new Error(\n \"No OpenFeature client available - components using OpenFeature must be wrapped with an . If you are seeing this in a test, see: https://openfeature.dev/docs/reference/technologies/client/web/react#testing\"\n );\n }\n return client;\n}\n\n// src/provider/use-open-feature-client-status.ts\nimport { useEffect, useState } from \"react\";\nimport { ProviderEvents as ProviderEvents2 } from \"@openfeature/web-sdk\";\nfunction useOpenFeatureClientStatus() {\n const client = useOpenFeatureClient();\n const [status, setStatus] = useState(client.providerStatus);\n useEffect(() => {\n const updateStatus = () => setStatus(client.providerStatus);\n client.addHandler(ProviderEvents2.ConfigurationChanged, updateStatus);\n client.addHandler(ProviderEvents2.ContextChanged, updateStatus);\n client.addHandler(ProviderEvents2.Error, updateStatus);\n client.addHandler(ProviderEvents2.Ready, updateStatus);\n client.addHandler(ProviderEvents2.Stale, updateStatus);\n client.addHandler(ProviderEvents2.Reconciling, updateStatus);\n return () => {\n client.removeHandler(ProviderEvents2.ConfigurationChanged, updateStatus);\n client.removeHandler(ProviderEvents2.ContextChanged, updateStatus);\n client.removeHandler(ProviderEvents2.Error, updateStatus);\n client.removeHandler(ProviderEvents2.Ready, updateStatus);\n client.removeHandler(ProviderEvents2.Stale, updateStatus);\n client.removeHandler(ProviderEvents2.Reconciling, updateStatus);\n };\n }, [client]);\n return status;\n}\n\n// src/evaluation/hook-flag-query.ts\nimport {\n StandardResolutionReasons\n} from \"@openfeature/web-sdk\";\nvar HookFlagQuery = class {\n constructor(_details) {\n this._details = _details;\n }\n get details() {\n return this._details;\n }\n get value() {\n var _a;\n return (_a = this._details) == null ? void 0 : _a.value;\n }\n get variant() {\n return this._details.variant;\n }\n get flagMetadata() {\n return this._details.flagMetadata;\n }\n get reason() {\n return this._details.reason;\n }\n get isError() {\n var _a;\n return !!((_a = this._details) == null ? void 0 : _a.errorCode) || this._details.reason == StandardResolutionReasons.ERROR;\n }\n get errorCode() {\n var _a;\n return (_a = this._details) == null ? void 0 : _a.errorCode;\n }\n get errorMessage() {\n var _a;\n return (_a = this._details) == null ? void 0 : _a.errorMessage;\n }\n get isAuthoritative() {\n return !this.isError && this._details.reason != StandardResolutionReasons.STALE && this._details.reason != StandardResolutionReasons.DISABLED;\n }\n get type() {\n return typeof this._details.value;\n }\n};\n\n// src/evaluation/use-feature-flag.ts\nfunction useFlag(flagKey, defaultValue, options) {\n const query = typeof defaultValue === \"boolean\" ? new HookFlagQuery(useBooleanFlagDetails(flagKey, defaultValue, options)) : typeof defaultValue === \"number\" ? new HookFlagQuery(useNumberFlagDetails(flagKey, defaultValue, options)) : typeof defaultValue === \"string\" ? new HookFlagQuery(useStringFlagDetails(flagKey, defaultValue, options)) : new HookFlagQuery(useObjectFlagDetails(flagKey, defaultValue, options));\n return query;\n}\nfunction useSuspenseFlag(flagKey, defaultValue, options) {\n return useFlag(flagKey, defaultValue, __spreadProps(__spreadValues({}, options), { suspendUntilReady: true, suspendWhileReconciling: true }));\n}\nfunction useBooleanFlagValue(flagKey, defaultValue, options) {\n return useBooleanFlagDetails(flagKey, defaultValue, options).value;\n}\nfunction useBooleanFlagDetails(flagKey, defaultValue, options) {\n return attachHandlersAndResolve(\n flagKey,\n defaultValue,\n (client) => {\n return client.getBooleanDetails;\n },\n options\n );\n}\nfunction useStringFlagValue(flagKey, defaultValue, options) {\n return useStringFlagDetails(flagKey, defaultValue, options).value;\n}\nfunction useStringFlagDetails(flagKey, defaultValue, options) {\n return attachHandlersAndResolve(\n flagKey,\n defaultValue,\n (client) => {\n return client.getStringDetails;\n },\n options\n );\n}\nfunction useNumberFlagValue(flagKey, defaultValue, options) {\n return useNumberFlagDetails(flagKey, defaultValue, options).value;\n}\nfunction useNumberFlagDetails(flagKey, defaultValue, options) {\n return attachHandlersAndResolve(\n flagKey,\n defaultValue,\n (client) => {\n return client.getNumberDetails;\n },\n options\n );\n}\nfunction useObjectFlagValue(flagKey, defaultValue, options) {\n return useObjectFlagDetails(flagKey, defaultValue, options).value;\n}\nfunction useObjectFlagDetails(flagKey, defaultValue, options) {\n return attachHandlersAndResolve(\n flagKey,\n defaultValue,\n (client) => {\n return client.getObjectDetails;\n },\n options\n );\n}\nfunction attachHandlersAndResolve(flagKey, defaultValue, resolver, options) {\n const defaultedOptions = __spreadValues(__spreadValues(__spreadValues({}, DEFAULT_OPTIONS), useProviderOptions()), normalizeOptions(options));\n const client = useOpenFeatureClient();\n const status = useOpenFeatureClientStatus();\n if (defaultedOptions.suspendUntilReady && status === ProviderStatus2.NOT_READY) {\n suspendUntilReady(client);\n }\n if (defaultedOptions.suspendWhileReconciling && status === ProviderStatus2.RECONCILING) {\n suspendUntilReady(client);\n }\n const [evalutationDetails, setEvaluationDetails] = useState2(\n resolver(client).call(client, flagKey, defaultValue, options)\n );\n const updateEvaluationDetailsRef = () => {\n setEvaluationDetails(resolver(client).call(client, flagKey, defaultValue, options));\n };\n useEffect2(() => {\n if (status === ProviderStatus2.NOT_READY) {\n client.addHandler(ProviderEvents3.Ready, updateEvaluationDetailsRef);\n }\n if (defaultedOptions.updateOnContextChanged) {\n client.addHandler(ProviderEvents3.ContextChanged, updateEvaluationDetailsRef);\n }\n return () => {\n client.removeHandler(ProviderEvents3.Ready, updateEvaluationDetailsRef);\n client.removeHandler(ProviderEvents3.ContextChanged, updateEvaluationDetailsRef);\n };\n }, []);\n useEffect2(() => {\n if (defaultedOptions.updateOnConfigurationChanged) {\n client.addHandler(ProviderEvents3.ConfigurationChanged, updateEvaluationDetailsRef);\n }\n return () => {\n client.removeHandler(ProviderEvents3.ConfigurationChanged, updateEvaluationDetailsRef);\n };\n }, []);\n return evalutationDetails;\n}\n\n// src/provider/provider.tsx\nimport { OpenFeature } from \"@openfeature/web-sdk\";\nimport * as React3 from \"react\";\nfunction OpenFeatureProvider(_a) {\n var _b = _a, { client, domain, children } = _b, options = __objRest(_b, [\"client\", \"domain\", \"children\"]);\n if (!client) {\n client = OpenFeature.getClient(domain);\n }\n return /* @__PURE__ */ React3.createElement(Context.Provider, { value: { client, options } }, children);\n}\n\n// src/provider/use-when-provider-ready.ts\nimport { ProviderStatus as ProviderStatus3 } from \"@openfeature/web-sdk\";\nfunction useWhenProviderReady(options) {\n const client = useOpenFeatureClient();\n const status = useOpenFeatureClientStatus();\n const defaultedOptions = __spreadValues(__spreadValues(__spreadValues({}, DEFAULT_OPTIONS), useProviderOptions()), normalizeOptions(options));\n if (defaultedOptions.suspendUntilReady && status === ProviderStatus3.NOT_READY) {\n suspendUntilReady(client);\n }\n return status === ProviderStatus3.READY;\n}\n\n// src/provider/test-provider.tsx\nimport {\n InMemoryProvider,\n NOOP_PROVIDER,\n OpenFeature as OpenFeature2\n} from \"@openfeature/web-sdk\";\nimport React4 from \"react\";\nvar TEST_VARIANT = \"test-variant\";\nvar TEST_PROVIDER = \"test-provider\";\nvar TestProvider = class _TestProvider extends InMemoryProvider {\n constructor(flagValueMap, delay = 0) {\n const flagConfig = Object.entries(flagValueMap).reduce((acc, flag) => {\n return __spreadProps(__spreadValues({}, acc), {\n [flag[0]]: {\n variants: {\n [TEST_VARIANT]: flag[1]\n },\n defaultVariant: TEST_VARIANT,\n disabled: false\n }\n });\n }, {});\n super(flagConfig);\n this.delay = delay;\n }\n initialize(context) {\n return __async(this, null, function* () {\n yield Promise.all([__superGet(_TestProvider.prototype, this, \"initialize\").call(this, context), new Promise((resolve) => setTimeout(resolve, this.delay))]);\n });\n }\n onContextChange() {\n return __async(this, null, function* () {\n return new Promise((resolve) => setTimeout(resolve, this.delay));\n });\n }\n};\nfunction OpenFeatureTestProvider(testProviderOptions) {\n const { flagValueMap, provider } = testProviderOptions;\n const effectiveProvider = flagValueMap ? new TestProvider(flagValueMap, testProviderOptions.delayMs) : mixInNoop(provider) || NOOP_PROVIDER;\n testProviderOptions.domain ? OpenFeature2.setProvider(testProviderOptions.domain, effectiveProvider) : OpenFeature2.setProvider(effectiveProvider);\n return /* @__PURE__ */ React4.createElement(OpenFeatureProvider, __spreadProps(__spreadValues({}, testProviderOptions), { domain: testProviderOptions.domain }), testProviderOptions.children);\n}\nfunction mixInNoop(provider = {}) {\n for (const prop of Object.getOwnPropertyNames(Object.getPrototypeOf(NOOP_PROVIDER)).filter((prop2) => prop2 !== \"constructor\")) {\n const patchedProvider = provider;\n if (!Object.getPrototypeOf(patchedProvider)[prop] && !patchedProvider[prop]) {\n patchedProvider[prop] = Object.getPrototypeOf(NOOP_PROVIDER)[prop];\n }\n }\n if (!provider.metadata || !provider.metadata.name) {\n provider.metadata = { name: TEST_PROVIDER };\n }\n return provider;\n}\n\n// src/index.ts\nexport * from \"@openfeature/web-sdk\";\nexport {\n OpenFeatureProvider,\n OpenFeatureTestProvider,\n useBooleanFlagDetails,\n useBooleanFlagValue,\n useFlag,\n useNumberFlagDetails,\n useNumberFlagValue,\n useObjectFlagDetails,\n useObjectFlagValue,\n useOpenFeatureClient,\n useStringFlagDetails,\n useStringFlagValue,\n useSuspenseFlag,\n useWhenProviderReady\n};\n//# sourceMappingURL=index.js.map\n","import { TypeMismatchError, StandardResolutionReasons } from '@openfeature/core';\n\nfunction toResolutionDetails(type, value, data, reason) {\n var _a;\n if (!isType(type, value)) {\n throw new TypeMismatchError(`Requested ${type} flag but the actual value is ${typeof value}`);\n }\n const matchedTargeting = data.matchedTargetingRule;\n const matchedPercentage = data.matchedPercentageOption;\n const matchedRule = Boolean(matchedTargeting || matchedPercentage);\n const evaluatedReason = matchedRule ? StandardResolutionReasons.TARGETING_MATCH : StandardResolutionReasons.STATIC;\n return {\n value,\n reason: reason !== null && reason !== void 0 ? reason : evaluatedReason,\n errorMessage: data.errorMessage,\n variant: (_a = data.variationId) !== null && _a !== void 0 ? _a : undefined,\n };\n}\nfunction isType(type, value) {\n return typeof value !== 'undefined' && typeof value === type;\n}\n\n/******************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n\r\nfunction __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\ntypeof SuppressedError === \"function\" ? SuppressedError : function (error, suppressed, message) {\r\n var e = new Error(message);\r\n return e.name = \"SuppressedError\", e.error = error, e.suppressed = suppressed, e;\r\n};\n\nfunction toUserAttributeValue(value) {\n if (typeof value === 'string' || typeof value === 'number' || value instanceof Date) {\n return value;\n }\n else if (Array.isArray(value) && value.every((item) => typeof item === 'string')) {\n return value;\n }\n return JSON.stringify(value);\n}\nfunction transformCustomContextValues(contextValue) {\n if (typeof contextValue !== 'object' || contextValue === null) {\n return {};\n }\n return Object.entries(contextValue).reduce((context, [key, value]) => {\n const transformedValue = toUserAttributeValue(value);\n return transformedValue ? Object.assign(Object.assign({}, context), { [key]: transformedValue }) : context;\n }, {});\n}\nfunction stringOrUndefined(param) {\n if (typeof param === 'string') {\n return param;\n }\n return undefined;\n}\nfunction transformContext(context) {\n const { targetingKey, email, country } = context, attributes = __rest(context, [\"targetingKey\", \"email\", \"country\"]);\n if (!targetingKey) {\n return undefined;\n }\n return {\n identifier: targetingKey,\n email: stringOrUndefined(email),\n country: stringOrUndefined(country),\n custom: transformCustomContextValues(attributes),\n };\n}\n\nexport { isType, toResolutionDetails, transformContext };\n","import { __extends } from \"tslib\";\nexport var FetchStatus;\n(function (FetchStatus) {\n FetchStatus[FetchStatus[\"Fetched\"] = 0] = \"Fetched\";\n FetchStatus[FetchStatus[\"NotModified\"] = 1] = \"NotModified\";\n FetchStatus[FetchStatus[\"Errored\"] = 2] = \"Errored\";\n})(FetchStatus || (FetchStatus = {}));\nvar FetchResult = /** @class */ (function () {\n function FetchResult(status, config, errorMessage, errorException) {\n this.status = status;\n this.config = config;\n this.errorMessage = errorMessage;\n this.errorException = errorException;\n }\n FetchResult.success = function (config) {\n return new FetchResult(FetchStatus.Fetched, config);\n };\n FetchResult.notModified = function (config) {\n return new FetchResult(FetchStatus.NotModified, config);\n };\n FetchResult.error = function (config, errorMessage, errorException) {\n return new FetchResult(FetchStatus.Errored, config, errorMessage !== null && errorMessage !== void 0 ? errorMessage : \"Unknown error.\", errorException);\n };\n return FetchResult;\n}());\nexport { FetchResult };\nvar FetchError = /** @class */ (function (_super) {\n __extends(FetchError, _super);\n function FetchError(cause) {\n var args = [];\n for (var _i = 1; _i < arguments.length; _i++) {\n args[_i - 1] = arguments[_i];\n }\n var _this = _super.call(this, (function (cause, args) {\n switch (cause) {\n case \"abort\":\n return \"Request was aborted.\";\n case \"timeout\":\n var timeoutMs = args[0];\n return \"Request timed out. Timeout value: \" + timeoutMs + \"ms\";\n case \"failure\":\n var err = args[0];\n var message = \"Request failed due to a network or protocol error.\";\n return err\n ? message + \" \" + (err instanceof Error ? err.message : err + \"\")\n : message;\n }\n })(cause, args)) || this;\n _this.cause = cause;\n // NOTE: due to a known issue in the TS compiler, instanceof is broken when subclassing Error and targeting ES5 or earlier\n // (see https://github.com/microsoft/TypeScript/issues/13965).\n // Thus, we need to manually fix the prototype chain as recommended in the TS docs\n // (see https://github.com/Microsoft/TypeScript/wiki/Breaking-Changes#extending-built-ins-like-error-array-and-map-may-no-longer-work)\n if (!(_this instanceof FetchError)) {\n (Object.setPrototypeOf || (function (o, proto) { return o[\"__proto__\"] = proto; }))(_this, FetchError.prototype);\n }\n _this.args = args;\n return _this;\n }\n return FetchError;\n}(Error));\nexport { FetchError };\n","/**\n * The ConfigCat config_v6.json schema that is used by the ConfigCat SDKs, described using TypeScript types.\n */\nexport var RedirectMode;\n(function (RedirectMode) {\n RedirectMode[RedirectMode[\"No\"] = 0] = \"No\";\n RedirectMode[RedirectMode[\"Should\"] = 1] = \"Should\";\n RedirectMode[RedirectMode[\"Force\"] = 2] = \"Force\";\n})(RedirectMode || (RedirectMode = {}));\n/** Setting type. */\nexport var SettingType;\n(function (SettingType) {\n /** On/off type (feature flag). */\n SettingType[SettingType[\"Boolean\"] = 0] = \"Boolean\";\n /** Text type. */\n SettingType[SettingType[\"String\"] = 1] = \"String\";\n /** Whole number type. */\n SettingType[SettingType[\"Int\"] = 2] = \"Int\";\n /** Decimal number type. */\n SettingType[SettingType[\"Double\"] = 3] = \"Double\";\n})(SettingType || (SettingType = {}));\n/** User Object attribute comparison operator used during the evaluation process. */\nexport var UserComparator;\n(function (UserComparator) {\n /** IS ONE OF (cleartext) - Checks whether the comparison attribute is equal to any of the comparison values. */\n UserComparator[UserComparator[\"TextIsOneOf\"] = 0] = \"TextIsOneOf\";\n /** IS NOT ONE OF (cleartext) - Checks whether the comparison attribute is not equal to any of the comparison values. */\n UserComparator[UserComparator[\"TextIsNotOneOf\"] = 1] = \"TextIsNotOneOf\";\n /** CONTAINS ANY OF (cleartext) - Checks whether the comparison attribute contains any comparison values as a substring. */\n UserComparator[UserComparator[\"TextContainsAnyOf\"] = 2] = \"TextContainsAnyOf\";\n /** NOT CONTAINS ANY OF (cleartext) - Checks whether the comparison attribute does not contain any comparison values as a substring. */\n UserComparator[UserComparator[\"TextNotContainsAnyOf\"] = 3] = \"TextNotContainsAnyOf\";\n /** IS ONE OF (semver) - Checks whether the comparison attribute interpreted as a semantic version is equal to any of the comparison values. */\n UserComparator[UserComparator[\"SemVerIsOneOf\"] = 4] = \"SemVerIsOneOf\";\n /** IS NOT ONE OF (semver) - Checks whether the comparison attribute interpreted as a semantic version is not equal to any of the comparison values. */\n UserComparator[UserComparator[\"SemVerIsNotOneOf\"] = 5] = \"SemVerIsNotOneOf\";\n /** < (semver) - Checks whether the comparison attribute interpreted as a semantic version is less than the comparison value. */\n UserComparator[UserComparator[\"SemVerLess\"] = 6] = \"SemVerLess\";\n /** <= (semver) - Checks whether the comparison attribute interpreted as a semantic version is less than or equal to the comparison value. */\n UserComparator[UserComparator[\"SemVerLessOrEquals\"] = 7] = \"SemVerLessOrEquals\";\n /** > (semver) - Checks whether the comparison attribute interpreted as a semantic version is greater than the comparison value. */\n UserComparator[UserComparator[\"SemVerGreater\"] = 8] = \"SemVerGreater\";\n /** >= (semver) - Checks whether the comparison attribute interpreted as a semantic version is greater than or equal to the comparison value. */\n UserComparator[UserComparator[\"SemVerGreaterOrEquals\"] = 9] = \"SemVerGreaterOrEquals\";\n /** = (number) - Checks whether the comparison attribute interpreted as a decimal number is equal to the comparison value. */\n UserComparator[UserComparator[\"NumberEquals\"] = 10] = \"NumberEquals\";\n /** != (number) - Checks whether the comparison attribute interpreted as a decimal number is not equal to the comparison value. */\n UserComparator[UserComparator[\"NumberNotEquals\"] = 11] = \"NumberNotEquals\";\n /** < (number) - Checks whether the comparison attribute interpreted as a decimal number is less than the comparison value. */\n UserComparator[UserComparator[\"NumberLess\"] = 12] = \"NumberLess\";\n /** <= (number) - Checks whether the comparison attribute interpreted as a decimal number is less than or equal to the comparison value. */\n UserComparator[UserComparator[\"NumberLessOrEquals\"] = 13] = \"NumberLessOrEquals\";\n /** > (number) - Checks whether the comparison attribute interpreted as a decimal number is greater than the comparison value. */\n UserComparator[UserComparator[\"NumberGreater\"] = 14] = \"NumberGreater\";\n /** >= (number) - Checks whether the comparison attribute interpreted as a decimal number is greater than or equal to the comparison value. */\n UserComparator[UserComparator[\"NumberGreaterOrEquals\"] = 15] = \"NumberGreaterOrEquals\";\n /** IS ONE OF (hashed) - Checks whether the comparison attribute is equal to any of the comparison values (where the comparison is performed using the salted SHA256 hashes of the values). */\n UserComparator[UserComparator[\"SensitiveTextIsOneOf\"] = 16] = \"SensitiveTextIsOneOf\";\n /** IS NOT ONE OF (hashed) - Checks whether the comparison attribute is not equal to any of the comparison values (where the comparison is performed using the salted SHA256 hashes of the values). */\n UserComparator[UserComparator[\"SensitiveTextIsNotOneOf\"] = 17] = \"SensitiveTextIsNotOneOf\";\n /** BEFORE (UTC datetime) - Checks whether the comparison attribute interpreted as the seconds elapsed since Unix Epoch is less than the comparison value. */\n UserComparator[UserComparator[\"DateTimeBefore\"] = 18] = \"DateTimeBefore\";\n /** AFTER (UTC datetime) - Checks whether the comparison attribute interpreted as the seconds elapsed since Unix Epoch is greater than the comparison value. */\n UserComparator[UserComparator[\"DateTimeAfter\"] = 19] = \"DateTimeAfter\";\n /** EQUALS (hashed) - Checks whether the comparison attribute is equal to the comparison value (where the comparison is performed using the salted SHA256 hashes of the values). */\n UserComparator[UserComparator[\"SensitiveTextEquals\"] = 20] = \"SensitiveTextEquals\";\n /** NOT EQUALS (hashed) - Checks whether the comparison attribute is not equal to the comparison value (where the comparison is performed using the salted SHA256 hashes of the values). */\n UserComparator[UserComparator[\"SensitiveTextNotEquals\"] = 21] = \"SensitiveTextNotEquals\";\n /** STARTS WITH ANY OF (hashed) - Checks whether the comparison attribute starts with any of the comparison values (where the comparison is performed using the salted SHA256 hashes of the values). */\n UserComparator[UserComparator[\"SensitiveTextStartsWithAnyOf\"] = 22] = \"SensitiveTextStartsWithAnyOf\";\n /** NOT STARTS WITH ANY OF (hashed) - Checks whether the comparison attribute does not start with any of the comparison values (where the comparison is performed using the salted SHA256 hashes of the values). */\n UserComparator[UserComparator[\"SensitiveTextNotStartsWithAnyOf\"] = 23] = \"SensitiveTextNotStartsWithAnyOf\";\n /** ENDS WITH ANY OF (hashed) - Checks whether the comparison attribute ends with any of the comparison values (where the comparison is performed using the salted SHA256 hashes of the values). */\n UserComparator[UserComparator[\"SensitiveTextEndsWithAnyOf\"] = 24] = \"SensitiveTextEndsWithAnyOf\";\n /** NOT ENDS WITH ANY OF (hashed) - Checks whether the comparison attribute does not end with any of the comparison values (where the comparison is performed using the salted SHA256 hashes of the values). */\n UserComparator[UserComparator[\"SensitiveTextNotEndsWithAnyOf\"] = 25] = \"SensitiveTextNotEndsWithAnyOf\";\n /** ARRAY CONTAINS ANY OF (hashed) - Checks whether the comparison attribute interpreted as a comma-separated list contains any of the comparison values (where the comparison is performed using the salted SHA256 hashes of the values). */\n UserComparator[UserComparator[\"SensitiveArrayContainsAnyOf\"] = 26] = \"SensitiveArrayContainsAnyOf\";\n /** ARRAY NOT CONTAINS ANY OF (hashed) - Checks whether the comparison attribute interpreted as a comma-separated list does not contain any of the comparison values (where the comparison is performed using the salted SHA256 hashes of the values). */\n UserComparator[UserComparator[\"SensitiveArrayNotContainsAnyOf\"] = 27] = \"SensitiveArrayNotContainsAnyOf\";\n /** EQUALS (cleartext) - Checks whether the comparison attribute is equal to the comparison value. */\n UserComparator[UserComparator[\"TextEquals\"] = 28] = \"TextEquals\";\n /** NOT EQUALS (cleartext) - Checks whether the comparison attribute is not equal to the comparison value. */\n UserComparator[UserComparator[\"TextNotEquals\"] = 29] = \"TextNotEquals\";\n /** STARTS WITH ANY OF (cleartext) - Checks whether the comparison attribute starts with any of the comparison values. */\n UserComparator[UserComparator[\"TextStartsWithAnyOf\"] = 30] = \"TextStartsWithAnyOf\";\n /** NOT STARTS WITH ANY OF (cleartext) - Checks whether the comparison attribute does not start with any of the comparison values. */\n UserComparator[UserComparator[\"TextNotStartsWithAnyOf\"] = 31] = \"TextNotStartsWithAnyOf\";\n /** ENDS WITH ANY OF (cleartext) - Checks whether the comparison attribute ends with any of the comparison values. */\n UserComparator[UserComparator[\"TextEndsWithAnyOf\"] = 32] = \"TextEndsWithAnyOf\";\n /** NOT ENDS WITH ANY OF (cleartext) - Checks whether the comparison attribute does not end with any of the comparison values. */\n UserComparator[UserComparator[\"TextNotEndsWithAnyOf\"] = 33] = \"TextNotEndsWithAnyOf\";\n /** ARRAY CONTAINS ANY OF (cleartext) - Checks whether the comparison attribute interpreted as a comma-separated list contains any of the comparison values. */\n UserComparator[UserComparator[\"ArrayContainsAnyOf\"] = 34] = \"ArrayContainsAnyOf\";\n /** ARRAY NOT CONTAINS ANY OF (cleartext) - Checks whether the comparison attribute interpreted as a comma-separated list does not contain any of the comparison values. */\n UserComparator[UserComparator[\"ArrayNotContainsAnyOf\"] = 35] = \"ArrayNotContainsAnyOf\";\n})(UserComparator || (UserComparator = {}));\n/** Prerequisite flag comparison operator used during the evaluation process. */\nexport var PrerequisiteFlagComparator;\n(function (PrerequisiteFlagComparator) {\n /** EQUALS - Checks whether the evaluated value of the specified prerequisite flag is equal to the comparison value. */\n PrerequisiteFlagComparator[PrerequisiteFlagComparator[\"Equals\"] = 0] = \"Equals\";\n /** NOT EQUALS - Checks whether the evaluated value of the specified prerequisite flag is not equal to the comparison value. */\n PrerequisiteFlagComparator[PrerequisiteFlagComparator[\"NotEquals\"] = 1] = \"NotEquals\";\n})(PrerequisiteFlagComparator || (PrerequisiteFlagComparator = {}));\n/** Segment comparison operator used during the evaluation process. */\nexport var SegmentComparator;\n(function (SegmentComparator) {\n /** IS IN SEGMENT - Checks whether the conditions of the specified segment are evaluated to true. */\n SegmentComparator[SegmentComparator[\"IsIn\"] = 0] = \"IsIn\";\n /** IS NOT IN SEGMENT - Checks whether the conditions of the specified segment are evaluated to false. */\n SegmentComparator[SegmentComparator[\"IsNotIn\"] = 1] = \"IsNotIn\";\n})(SegmentComparator || (SegmentComparator = {}));\n","import { __extends } from \"tslib\";\nvar ProjectConfig = /** @class */ (function () {\n function ProjectConfig(configJson, config, timestamp, httpETag) {\n this.configJson = configJson;\n this.config = config;\n this.timestamp = timestamp;\n this.httpETag = httpETag;\n }\n ProjectConfig.equals = function (projectConfig1, projectConfig2) {\n // When both ETags are available, we don't need to check the JSON content.\n return projectConfig1.httpETag && projectConfig2.httpETag\n ? projectConfig1.httpETag === projectConfig2.httpETag\n : projectConfig1.configJson === projectConfig2.configJson;\n };\n ProjectConfig.prototype.with = function (timestamp) { return new ProjectConfig(this.configJson, this.config, timestamp, this.httpETag); };\n Object.defineProperty(ProjectConfig.prototype, \"isEmpty\", {\n get: function () { return !this.config; },\n enumerable: false,\n configurable: true\n });\n ProjectConfig.prototype.isExpired = function (expirationMs) {\n return this === ProjectConfig.empty || this.timestamp + expirationMs < ProjectConfig.generateTimestamp();\n };\n ProjectConfig.generateTimestamp = function () {\n return new Date().getTime();\n };\n ProjectConfig.serialize = function (config) {\n var _a, _b;\n return config.timestamp + \"\\n\"\n + ((_a = config.httpETag) !== null && _a !== void 0 ? _a : \"\") + \"\\n\"\n + ((_b = config.configJson) !== null && _b !== void 0 ? _b : \"\");\n };\n ProjectConfig.deserialize = function (value) {\n var separatorIndices = Array(2);\n var index = 0;\n for (var i = 0; i < separatorIndices.length; i++) {\n index = value.indexOf(\"\\n\", index);\n if (index < 0) {\n throw new Error(\"Number of values is fewer than expected.\");\n }\n separatorIndices[i] = index++;\n }\n var endIndex = separatorIndices[0];\n var slice = value.substring(0, endIndex);\n var fetchTime = parseInt(slice);\n if (isNaN(fetchTime)) {\n throw new Error(\"Invalid fetch time: \" + slice);\n }\n index = endIndex + 1;\n endIndex = separatorIndices[1];\n slice = value.substring(index, endIndex);\n var httpETag = slice.length > 0 ? slice : void 0;\n index = endIndex + 1;\n slice = value.substring(index);\n var config;\n var configJson;\n if (slice.length > 0) {\n config = Config.deserialize(slice);\n configJson = slice;\n }\n return new ProjectConfig(configJson, config, fetchTime, httpETag);\n };\n ProjectConfig.serializationFormatVersion = \"v2\";\n ProjectConfig.empty = new ProjectConfig(void 0, void 0, 0, void 0);\n return ProjectConfig;\n}());\nexport { ProjectConfig };\nvar Config = /** @class */ (function () {\n function Config(json) {\n var _this = this;\n var _a, _b;\n this.preferences = json.p != null ? new Preferences(json.p) : void 0;\n this.segments = (_b = (_a = json.s) === null || _a === void 0 ? void 0 : _a.map(function (item) { return new Segment(item); })) !== null && _b !== void 0 ? _b : [];\n this.settings = json.f != null\n ? Object.fromEntries(Object.entries(json.f).map(function (_a) {\n var key = _a[0], value = _a[1];\n return [key, new Setting(value, _this)];\n }))\n : {};\n }\n Config.deserialize = function (configJson) {\n var configJsonParsed = JSON.parse(configJson);\n if (typeof configJsonParsed !== \"object\" || !configJsonParsed) {\n throw new Error(\"Invalid config JSON content:\" + configJson);\n }\n return new Config(configJsonParsed);\n };\n Object.defineProperty(Config.prototype, \"salt\", {\n get: function () { var _a; return (_a = this.preferences) === null || _a === void 0 ? void 0 : _a.salt; },\n enumerable: false,\n configurable: true\n });\n return Config;\n}());\nexport { Config };\nvar Preferences = /** @class */ (function () {\n function Preferences(json) {\n this.baseUrl = json.u;\n this.redirectMode = json.r;\n this.salt = json.s;\n }\n return Preferences;\n}());\nexport { Preferences };\nvar Segment = /** @class */ (function () {\n function Segment(json) {\n var _a, _b;\n this.name = json.n;\n this.conditions = (_b = (_a = json.r) === null || _a === void 0 ? void 0 : _a.map(function (item) { return new UserCondition(item); })) !== null && _b !== void 0 ? _b : [];\n }\n return Segment;\n}());\nexport { Segment };\nvar SettingValueContainer = /** @class */ (function () {\n function SettingValueContainer(json, hasUnwrappedValue) {\n if (hasUnwrappedValue === void 0) { hasUnwrappedValue = false; }\n this.value = (!hasUnwrappedValue ? unwrapSettingValue(json.v) : json.v);\n this.variationId = json.i;\n }\n return SettingValueContainer;\n}());\nexport { SettingValueContainer };\nvar Setting = /** @class */ (function (_super) {\n __extends(Setting, _super);\n function Setting(json, config) {\n var _a, _b, _c, _d, _e, _f;\n var _this = _super.call(this, json, json.t < 0) || this;\n _this.type = json.t;\n var identifierAttribute = \"Identifier\";\n _this.percentageOptionsAttribute = (_a = json.a) !== null && _a !== void 0 ? _a : identifierAttribute;\n _this.targetingRules = (_c = (_b = json.r) === null || _b === void 0 ? void 0 : _b.map(function (item) { return new TargetingRule(item, config); })) !== null && _c !== void 0 ? _c : [];\n _this.percentageOptions = (_e = (_d = json.p) === null || _d === void 0 ? void 0 : _d.map(function (item) { return new PercentageOption(item); })) !== null && _e !== void 0 ? _e : [];\n _this.configJsonSalt = (_f = config === null || config === void 0 ? void 0 : config.salt) !== null && _f !== void 0 ? _f : \"\";\n return _this;\n }\n Setting.fromValue = function (value) {\n return new Setting({\n t: -1,\n v: value,\n });\n };\n return Setting;\n}(SettingValueContainer));\nexport { Setting };\nvar TargetingRule = /** @class */ (function () {\n function TargetingRule(json, config) {\n var _a, _b;\n this.conditions = (_b = (_a = json.c) === null || _a === void 0 ? void 0 : _a.map(function (item) {\n return item.u != null ? new UserCondition(item.u) :\n item.p != null ? new PrerequisiteFlagCondition(item.p) :\n item.s != null ? new SegmentCondition(item.s, config) :\n void 0;\n })) !== null && _b !== void 0 ? _b : [];\n this.then = json.p != null\n ? json.p.map(function (item) { return new PercentageOption(item); })\n : new SettingValueContainer(json.s);\n }\n return TargetingRule;\n}());\nexport { TargetingRule };\nvar PercentageOption = /** @class */ (function (_super) {\n __extends(PercentageOption, _super);\n function PercentageOption(json) {\n var _this = _super.call(this, json) || this;\n _this.percentage = json.p;\n return _this;\n }\n return PercentageOption;\n}(SettingValueContainer));\nexport { PercentageOption };\nvar UserCondition = /** @class */ (function () {\n function UserCondition(json) {\n var _a, _b;\n this.type = \"UserCondition\";\n this.comparisonAttribute = json.a;\n this.comparator = json.c;\n this.comparisonValue = ((_b = (_a = json.s) !== null && _a !== void 0 ? _a : json.d) !== null && _b !== void 0 ? _b : json.l);\n }\n return UserCondition;\n}());\nexport { UserCondition };\nvar PrerequisiteFlagCondition = /** @class */ (function () {\n function PrerequisiteFlagCondition(json) {\n this.type = \"PrerequisiteFlagCondition\";\n this.prerequisiteFlagKey = json.f;\n this.comparator = json.c;\n this.comparisonValue = unwrapSettingValue(json.v);\n }\n return PrerequisiteFlagCondition;\n}());\nexport { PrerequisiteFlagCondition };\nvar SegmentCondition = /** @class */ (function () {\n function SegmentCondition(json, config) {\n this.type = \"SegmentCondition\";\n this.segment = config.segments[json.s];\n this.comparator = json.c;\n }\n return SegmentCondition;\n}());\nexport { SegmentCondition };\nfunction unwrapSettingValue(json) {\n var _a, _b, _c;\n return ((_c = (_b = (_a = json.b) !== null && _a !== void 0 ? _a : json.s) !== null && _b !== void 0 ? _b : json.i) !== null && _c !== void 0 ? _c : json.d);\n}\n","import { __awaiter, __generator } from \"tslib\";\nimport { FetchError, FetchResult, FetchStatus } from \"./ConfigFetcher\";\nimport { RedirectMode } from \"./ConfigJson\";\nimport { Config, ProjectConfig } from \"./ProjectConfig\";\n/** Contains the result of an `IConfigCatClient.forceRefresh` or `IConfigCatClient.forceRefreshAsync` operation. */\nvar RefreshResult = /** @class */ (function () {\n function RefreshResult(\n /** Error message in case the operation failed, otherwise `null`. */\n errorMessage, \n /** The exception object related to the error in case the operation failed (if any). */\n errorException) {\n this.errorMessage = errorMessage;\n this.errorException = errorException;\n }\n Object.defineProperty(RefreshResult.prototype, \"isSuccess\", {\n /** Indicates whether the operation was successful or not. */\n get: function () { return this.errorMessage === null; },\n enumerable: false,\n configurable: true\n });\n RefreshResult.from = function (fetchResult) {\n return fetchResult.status !== FetchStatus.Errored\n ? RefreshResult.success()\n : RefreshResult.failure(fetchResult.errorMessage, fetchResult.errorException);\n };\n /** Creates an instance of the `RefreshResult` class which indicates that the operation was successful. */\n RefreshResult.success = function () {\n return new RefreshResult(null);\n };\n /** Creates an instance of the `RefreshResult` class which indicates that the operation failed. */\n RefreshResult.failure = function (errorMessage, errorException) {\n return new RefreshResult(errorMessage, errorException);\n };\n return RefreshResult;\n}());\nexport { RefreshResult };\n/** Specifies the possible states of the local cache. */\nexport var ClientCacheState;\n(function (ClientCacheState) {\n ClientCacheState[ClientCacheState[\"NoFlagData\"] = 0] = \"NoFlagData\";\n ClientCacheState[ClientCacheState[\"HasLocalOverrideFlagDataOnly\"] = 1] = \"HasLocalOverrideFlagDataOnly\";\n ClientCacheState[ClientCacheState[\"HasCachedFlagDataOnly\"] = 2] = \"HasCachedFlagDataOnly\";\n ClientCacheState[ClientCacheState[\"HasUpToDateFlagData\"] = 3] = \"HasUpToDateFlagData\";\n})(ClientCacheState || (ClientCacheState = {}));\nvar ConfigServiceStatus;\n(function (ConfigServiceStatus) {\n ConfigServiceStatus[ConfigServiceStatus[\"Online\"] = 0] = \"Online\";\n ConfigServiceStatus[ConfigServiceStatus[\"Offline\"] = 1] = \"Offline\";\n ConfigServiceStatus[ConfigServiceStatus[\"Disposed\"] = 2] = \"Disposed\";\n})(ConfigServiceStatus || (ConfigServiceStatus = {}));\nvar ConfigServiceBase = /** @class */ (function () {\n function ConfigServiceBase(configFetcher, options) {\n this.configFetcher = configFetcher;\n this.options = options;\n this.pendingFetch = null;\n this.cacheKey = options.getCacheKey();\n this.configFetcher = configFetcher;\n this.options = options;\n this.status = options.offline ? ConfigServiceStatus.Offline : ConfigServiceStatus.Online;\n }\n ConfigServiceBase.prototype.dispose = function () {\n this.status = ConfigServiceStatus.Disposed;\n };\n Object.defineProperty(ConfigServiceBase.prototype, \"disposed\", {\n get: function () {\n return this.status === ConfigServiceStatus.Disposed;\n },\n enumerable: false,\n configurable: true\n });\n ConfigServiceBase.prototype.refreshConfigAsync = function () {\n return __awaiter(this, void 0, void 0, function () {\n var latestConfig, _a, fetchResult, config, errorMessage;\n return __generator(this, function (_b) {\n switch (_b.label) {\n case 0: return [4 /*yield*/, this.options.cache.get(this.cacheKey)];\n case 1:\n latestConfig = _b.sent();\n if (!!this.isOffline) return [3 /*break*/, 3];\n return [4 /*yield*/, this.refreshConfigCoreAsync(latestConfig)];\n case 2:\n _a = _b.sent(), fetchResult = _a[0], config = _a[1];\n return [2 /*return*/, [RefreshResult.from(fetchResult), config]];\n case 3:\n errorMessage = this.options.logger.configServiceCannotInitiateHttpCalls().toString();\n return [2 /*return*/, [RefreshResult.failure(errorMessage), latestConfig]];\n }\n });\n });\n };\n ConfigServiceBase.prototype.refreshConfigCoreAsync = function (latestConfig) {\n return __awaiter(this, void 0, void 0, function () {\n var fetchResult, configChanged, success;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0: return [4 /*yield*/, this.fetchAsync(latestConfig)];\n case 1:\n fetchResult = _a.sent();\n configChanged = false;\n success = fetchResult.status === FetchStatus.Fetched;\n if (!(success\n || fetchResult.config.timestamp > latestConfig.timestamp && (!fetchResult.config.isEmpty || latestConfig.isEmpty))) return [3 /*break*/, 3];\n return [4 /*yield*/, this.options.cache.set(this.cacheKey, fetchResult.config)];\n case 2:\n _a.sent();\n configChanged = success && !ProjectConfig.equals(fetchResult.config, latestConfig);\n latestConfig = fetchResult.config;\n _a.label = 3;\n case 3:\n this.onConfigFetched(fetchResult.config);\n if (configChanged) {\n this.onConfigChanged(fetchResult.config);\n }\n return [2 /*return*/, [fetchResult, latestConfig]];\n }\n });\n });\n };\n ConfigServiceBase.prototype.onConfigFetched = function (newConfig) { };\n ConfigServiceBase.prototype.onConfigChanged = function (newConfig) {\n var _a;\n this.options.logger.debug(\"config changed\");\n this.options.hooks.emit(\"configChanged\", (_a = newConfig.config) !== null && _a !== void 0 ? _a : new Config({}));\n };\n ConfigServiceBase.prototype.fetchAsync = function (lastConfig) {\n var _this = this;\n var _a;\n return (_a = this.pendingFetch) !== null && _a !== void 0 ? _a : (this.pendingFetch = (function () { return __awaiter(_this, void 0, void 0, function () {\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n _a.trys.push([0, , 2, 3]);\n return [4 /*yield*/, this.fetchLogicAsync(lastConfig)];\n case 1: return [2 /*return*/, _a.sent()];\n case 2:\n this.pendingFetch = null;\n return [7 /*endfinally*/];\n case 3: return [2 /*return*/];\n }\n });\n }); })());\n };\n ConfigServiceBase.prototype.fetchLogicAsync = function (lastConfig) {\n var _a;\n return __awaiter(this, void 0, void 0, function () {\n var options, errorMessage, _b, response, configOrError, err_1;\n return __generator(this, function (_c) {\n switch (_c.label) {\n case 0:\n options = this.options;\n options.logger.debug(\"ConfigServiceBase.fetchLogicAsync() - called.\");\n _c.label = 1;\n case 1:\n _c.trys.push([1, 3, , 4]);\n return [4 /*yield*/, this.fetchRequestAsync((_a = lastConfig.httpETag) !== null && _a !== void 0 ? _a : null)];\n case 2:\n _b = _c.sent(), response = _b[0], configOrError = _b[1];\n switch (response.statusCode) {\n case 200: // OK\n if (!(configOrError instanceof Config)) {\n errorMessage = options.logger.fetchReceived200WithInvalidBody(configOrError).toString();\n options.logger.debug(\"ConfigServiceBase.fetchLogicAsync(): \" + response.statusCode + \" \" + response.reasonPhrase + \" was received but the HTTP response content was invalid. Returning null.\");\n return [2 /*return*/, FetchResult.error(lastConfig, errorMessage, configOrError)];\n }\n options.logger.debug(\"ConfigServiceBase.fetchLogicAsync(): fetch was successful. Returning new config.\");\n return [2 /*return*/, FetchResult.success(new ProjectConfig(response.body, configOrError, ProjectConfig.generateTimestamp(), response.eTag))];\n case 304: // Not Modified\n if (!lastConfig) {\n errorMessage = options.logger.fetchReceived304WhenLocalCacheIsEmpty(response.statusCode, response.reasonPhrase).toString();\n options.logger.debug(\"ConfigServiceBase.fetchLogicAsync(): \" + response.statusCode + \" \" + response.reasonPhrase + \" was received when no config is cached locally. Returning null.\");\n return [2 /*return*/, FetchResult.error(lastConfig, errorMessage)];\n }\n options.logger.debug(\"ConfigServiceBase.fetchLogicAsync(): content was not modified. Returning last config with updated timestamp.\");\n return [2 /*return*/, FetchResult.notModified(lastConfig.with(ProjectConfig.generateTimestamp()))];\n case 403: // Forbidden\n case 404: // Not Found\n errorMessage = options.logger.fetchFailedDueToInvalidSdkKey().toString();\n options.logger.debug(\"ConfigServiceBase.fetchLogicAsync(): fetch was unsuccessful. Returning last config (if any) with updated timestamp.\");\n return [2 /*return*/, FetchResult.error(lastConfig.with(ProjectConfig.generateTimestamp()), errorMessage)];\n default:\n errorMessage = options.logger.fetchFailedDueToUnexpectedHttpResponse(response.statusCode, response.reasonPhrase).toString();\n options.logger.debug(\"ConfigServiceBase.fetchLogicAsync(): fetch was unsuccessful. Returning null.\");\n return [2 /*return*/, FetchResult.error(lastConfig, errorMessage)];\n }\n return [3 /*break*/, 4];\n case 3:\n err_1 = _c.sent();\n errorMessage = (err_1 instanceof FetchError && err_1.cause === \"timeout\"\n ? options.logger.fetchFailedDueToRequestTimeout(err_1.args[0], err_1)\n : options.logger.fetchFailedDueToUnexpectedError(err_1)).toString();\n options.logger.debug(\"ConfigServiceBase.fetchLogicAsync(): fetch was unsuccessful. Returning null.\");\n return [2 /*return*/, FetchResult.error(lastConfig, errorMessage, err_1)];\n case 4: return [2 /*return*/];\n }\n });\n });\n };\n ConfigServiceBase.prototype.fetchRequestAsync = function (lastETag, maxRetryCount) {\n if (maxRetryCount === void 0) { maxRetryCount = 2; }\n return __awaiter(this, void 0, void 0, function () {\n var options, retryNumber, response, config, preferences, baseUrl, redirect;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n options = this.options;\n options.logger.debug(\"ConfigServiceBase.fetchRequestAsync() - called.\");\n retryNumber = 0;\n _a.label = 1;\n case 1:\n options.logger.debug(\"ConfigServiceBase.fetchRequestAsync(): calling fetchLogic()\" + (retryNumber > 0 ? \", retry \" + retryNumber + \"/\" + maxRetryCount : \"\"));\n return [4 /*yield*/, this.configFetcher.fetchLogic(options, lastETag)];\n case 2:\n response = _a.sent();\n if (response.statusCode !== 200) {\n return [2 /*return*/, [response]];\n }\n if (!response.body) {\n options.logger.debug(\"ConfigServiceBase.fetchRequestAsync(): no response body.\");\n return [2 /*return*/, [response, new Error(\"No response body.\")]];\n }\n config = void 0;\n try {\n config = Config.deserialize(response.body);\n }\n catch (err) {\n options.logger.debug(\"ConfigServiceBase.fetchRequestAsync(): invalid response body.\");\n return [2 /*return*/, [response, err]];\n }\n preferences = config.preferences;\n if (!preferences) {\n options.logger.debug(\"ConfigServiceBase.fetchRequestAsync(): preferences is empty.\");\n return [2 /*return*/, [response, config]];\n }\n baseUrl = preferences.baseUrl;\n // If the base_url is the same as the last called one, just return the response.\n if (!baseUrl || baseUrl === options.baseUrl) {\n options.logger.debug(\"ConfigServiceBase.fetchRequestAsync(): baseUrl OK.\");\n return [2 /*return*/, [response, config]];\n }\n redirect = preferences.redirectMode;\n // If the base_url is overridden, and the redirect parameter is not 2 (force),\n // the SDK should not redirect the calls and it just have to return the response.\n if (options.baseUrlOverriden && redirect !== RedirectMode.Force) {\n options.logger.debug(\"ConfigServiceBase.fetchRequestAsync(): options.baseUrlOverriden && redirect !== 2.\");\n return [2 /*return*/, [response, config]];\n }\n options.baseUrl = baseUrl;\n if (redirect === RedirectMode.No) {\n return [2 /*return*/, [response, config]];\n }\n if (redirect === RedirectMode.Should) {\n options.logger.dataGovernanceIsOutOfSync();\n }\n if (retryNumber >= maxRetryCount) {\n options.logger.fetchFailedDueToRedirectLoop();\n return [2 /*return*/, [response, config]];\n }\n _a.label = 3;\n case 3:\n retryNumber++;\n return [3 /*break*/, 1];\n case 4: return [2 /*return*/];\n }\n });\n });\n };\n Object.defineProperty(ConfigServiceBase.prototype, \"isOfflineExactly\", {\n get: function () {\n return this.status === ConfigServiceStatus.Offline;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(ConfigServiceBase.prototype, \"isOffline\", {\n get: function () {\n return this.status !== ConfigServiceStatus.Online;\n },\n enumerable: false,\n configurable: true\n });\n ConfigServiceBase.prototype.setOnlineCore = function () { };\n ConfigServiceBase.prototype.setOnline = function () {\n if (this.status === ConfigServiceStatus.Offline) {\n this.setOnlineCore();\n this.status = ConfigServiceStatus.Online;\n this.options.logger.configServiceStatusChanged(ConfigServiceStatus[this.status]);\n }\n else if (this.disposed) {\n this.options.logger.configServiceMethodHasNoEffectDueToDisposedClient(\"setOnline\");\n }\n };\n ConfigServiceBase.prototype.setOfflineCore = function () { };\n ConfigServiceBase.prototype.setOffline = function () {\n if (this.status === ConfigServiceStatus.Online) {\n this.setOfflineCore();\n this.status = ConfigServiceStatus.Offline;\n this.options.logger.configServiceStatusChanged(ConfigServiceStatus[this.status]);\n }\n else if (this.disposed) {\n this.options.logger.configServiceMethodHasNoEffectDueToDisposedClient(\"setOffline\");\n }\n };\n ConfigServiceBase.prototype.syncUpWithCache = function () {\n return this.options.cache.get(this.cacheKey);\n };\n ConfigServiceBase.prototype.getReadyPromise = function (state, waitForReadyAsync) {\n return __awaiter(this, void 0, void 0, function () {\n var cacheState;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0: return [4 /*yield*/, waitForReadyAsync(state)];\n case 1:\n cacheState = _a.sent();\n this.options.hooks.emit(\"clientReady\", cacheState);\n return [2 /*return*/, cacheState];\n }\n });\n });\n };\n return ConfigServiceBase;\n}());\nexport { ConfigServiceBase };\n","export function delay(delayMs, delayCleanup) {\n var timerId;\n var promise = new Promise(function (resolve) { return timerId = setTimeout(resolve, delayMs); });\n if (delayCleanup) {\n delayCleanup.clearTimer = function () { return clearTimeout(timerId); };\n }\n return promise;\n}\nexport function errorToString(err, includeStackTrace) {\n if (includeStackTrace === void 0) { includeStackTrace = false; }\n return err instanceof Error\n ? includeStackTrace && err.stack ? err.stack : err.toString()\n : err + \"\";\n}\nexport function throwError(err) {\n throw err;\n}\nexport function isArray(value) {\n // See also: https://github.com/microsoft/TypeScript/issues/17002#issuecomment-1477626624\n return Array.isArray(value);\n}\nexport function isStringArray(value) {\n return isArray(value) && !value.some(function (item) { return typeof item !== \"string\"; });\n}\nexport function formatStringList(items, maxLength, getOmittedItemsText, separator) {\n if (maxLength === void 0) { maxLength = 0; }\n if (separator === void 0) { separator = \", \"; }\n var length = items.length;\n if (!length) {\n return \"\";\n }\n var appendix = \"\";\n if (maxLength > 0 && length > maxLength) {\n items = items.slice(0, maxLength);\n if (getOmittedItemsText) {\n appendix = getOmittedItemsText(length - maxLength);\n }\n }\n return \"'\" + items.join(\"'\" + separator + \"'\") + \"'\" + appendix;\n}\nexport function isPromiseLike(obj) {\n var _a;\n // See also: https://stackoverflow.com/a/27746324/8656352\n return typeof ((_a = obj) === null || _a === void 0 ? void 0 : _a.then) === \"function\";\n}\nexport function utf8Encode(text) {\n function codePointAt(text, index) {\n var ch = text.charCodeAt(index);\n if (0xD800 <= ch && ch < 0xDC00) { // is high surrogate?\n var nextCh = text.charCodeAt(index + 1);\n if (0xDC00 <= nextCh && nextCh <= 0xDFFF) { // is low surrogate?\n return (ch << 10) + nextCh - 0x35FDC00;\n }\n }\n return ch;\n }\n var utf8text = \"\", chunkStart = 0;\n var fromCharCode = String.fromCharCode;\n var i;\n for (i = 0; i < text.length; i++) {\n var cp = codePointAt(text, i);\n if (cp <= 0x7F) {\n continue;\n }\n // See also: https://stackoverflow.com/a/6240184/8656352\n utf8text += text.slice(chunkStart, i);\n if (cp <= 0x7FF) {\n utf8text += fromCharCode(0xC0 | (cp >> 6));\n utf8text += fromCharCode(0x80 | (cp & 0x3F));\n }\n else if (cp <= 0xFFFF) {\n utf8text += fromCharCode(0xE0 | (cp >> 12));\n utf8text += fromCharCode(0x80 | ((cp >> 6) & 0x3F));\n utf8text += fromCharCode(0x80 | (cp & 0x3F));\n }\n else {\n utf8text += fromCharCode(0xF0 | (cp >> 18));\n utf8text += fromCharCode(0x80 | ((cp >> 12) & 0x3F));\n utf8text += fromCharCode(0x80 | ((cp >> 6) & 0x3F));\n utf8text += fromCharCode(0x80 | (cp & 0x3F));\n ++i;\n }\n chunkStart = i + 1;\n }\n return utf8text += text.slice(chunkStart, i);\n}\nexport function parseFloatStrict(value) {\n // NOTE: JS's float to string conversion is too forgiving, it accepts hex numbers and ignores invalid characters after the number.\n if (typeof value === \"number\") {\n return value;\n }\n if (typeof value !== \"string\" || !value.length || /^\\s*$|^\\s*0[^\\d.e]/.test(value)) {\n return NaN;\n }\n return +value;\n}\n","import { __awaiter, __extends, __generator } from \"tslib\";\nimport { ClientCacheState, ConfigServiceBase } from \"./ConfigServiceBase\";\nimport { delay } from \"./Utils\";\nvar AutoPollConfigService = /** @class */ (function (_super) {\n __extends(AutoPollConfigService, _super);\n function AutoPollConfigService(configFetcher, options) {\n var _this = _super.call(this, configFetcher, options) || this;\n _this.signalInitialization = function () { };\n _this.pollIntervalMs = options.pollIntervalSeconds * 1000;\n var initialCacheSyncUp = _this.syncUpWithCache();\n if (options.maxInitWaitTimeSeconds !== 0) {\n _this.initialized = false;\n // This promise will be resolved when\n // 1. the cache contains a valid config at startup (see startRefreshWorker) or\n // 2. config json is fetched the first time, regardless of success or failure (see onConfigUpdated).\n var initSignalPromise = new Promise(function (resolve) { return _this.signalInitialization = resolve; });\n // This promise will be resolved when either initialization ready is signalled by signalInitialization() or maxInitWaitTimeSeconds pass.\n _this.initializationPromise = _this.waitForInitializationAsync(initSignalPromise).then(function (success) {\n _this.initialized = true;\n return success;\n });\n }\n else {\n _this.initialized = true;\n _this.initializationPromise = Promise.resolve(false);\n }\n _this.readyPromise = _this.getReadyPromise(_this.initializationPromise, function (initializationPromise) { return __awaiter(_this, void 0, void 0, function () {\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0: return [4 /*yield*/, initializationPromise];\n case 1:\n _a.sent();\n return [2 /*return*/, this.getCacheState(this.options.cache.getInMemory())];\n }\n });\n }); });\n if (!options.offline) {\n _this.startRefreshWorker(initialCacheSyncUp);\n }\n return _this;\n }\n AutoPollConfigService.prototype.waitForInitializationAsync = function (initSignalPromise) {\n return __awaiter(this, void 0, void 0, function () {\n var delayCleanup, success;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n if (!(this.options.maxInitWaitTimeSeconds < 0)) return [3 /*break*/, 2];\n return [4 /*yield*/, initSignalPromise];\n case 1:\n _a.sent();\n return [2 /*return*/, true];\n case 2:\n delayCleanup = {};\n return [4 /*yield*/, Promise.race([\n initSignalPromise.then(function () { return true; }),\n delay(this.options.maxInitWaitTimeSeconds * 1000, delayCleanup).then(function () { return false; })\n ])];\n case 3:\n success = _a.sent();\n delayCleanup.clearTimer();\n return [2 /*return*/, success];\n }\n });\n });\n };\n AutoPollConfigService.prototype.getConfig = function () {\n return __awaiter(this, void 0, void 0, function () {\n function logSuccess(logger) {\n logger.debug(\"AutoPollConfigService.getConfig() - returning value from cache.\");\n }\n var cachedConfig;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n this.options.logger.debug(\"AutoPollConfigService.getConfig() called.\");\n if (!(!this.isOffline && !this.initialized)) return [3 /*break*/, 3];\n return [4 /*yield*/, this.options.cache.get(this.cacheKey)];\n case 1:\n cachedConfig = _a.sent();\n if (!cachedConfig.isExpired(this.pollIntervalMs)) {\n logSuccess(this.options.logger);\n return [2 /*return*/, cachedConfig];\n }\n this.options.logger.debug(\"AutoPollConfigService.getConfig() - cache is empty or expired, waiting for initialization.\");\n return [4 /*yield*/, this.initializationPromise];\n case 2:\n _a.sent();\n _a.label = 3;\n case 3: return [4 /*yield*/, this.options.cache.get(this.cacheKey)];\n case 4:\n cachedConfig = _a.sent();\n if (!cachedConfig.isExpired(this.pollIntervalMs)) {\n logSuccess(this.options.logger);\n }\n else {\n this.options.logger.debug(\"AutoPollConfigService.getConfig() - cache is empty or expired.\");\n }\n return [2 /*return*/, cachedConfig];\n }\n });\n });\n };\n AutoPollConfigService.prototype.refreshConfigAsync = function () {\n this.options.logger.debug(\"AutoPollConfigService.refreshConfigAsync() called.\");\n return _super.prototype.refreshConfigAsync.call(this);\n };\n AutoPollConfigService.prototype.dispose = function () {\n this.options.logger.debug(\"AutoPollConfigService.dispose() called.\");\n _super.prototype.dispose.call(this);\n if (this.workerTimerId) {\n this.stopRefreshWorker();\n }\n };\n AutoPollConfigService.prototype.onConfigFetched = function (newConfig) {\n _super.prototype.onConfigFetched.call(this, newConfig);\n this.signalInitialization();\n };\n AutoPollConfigService.prototype.setOnlineCore = function () {\n this.startRefreshWorker();\n };\n AutoPollConfigService.prototype.setOfflineCore = function () {\n this.stopRefreshWorker();\n };\n AutoPollConfigService.prototype.startRefreshWorker = function (initialCacheSyncUp) {\n return __awaiter(this, void 0, void 0, function () {\n var delayMs, latestConfig;\n var _this = this;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n this.options.logger.debug(\"AutoPollConfigService.startRefreshWorker() called.\");\n delayMs = this.pollIntervalMs;\n return [4 /*yield*/, (initialCacheSyncUp !== null && initialCacheSyncUp !== void 0 ? initialCacheSyncUp : this.options.cache.get(this.cacheKey))];\n case 1:\n latestConfig = _a.sent();\n if (!latestConfig.isExpired(this.pollIntervalMs)) return [3 /*break*/, 4];\n if (!!this.isOfflineExactly) return [3 /*break*/, 3];\n return [4 /*yield*/, this.refreshConfigCoreAsync(latestConfig)];\n case 2:\n _a.sent();\n _a.label = 3;\n case 3: return [3 /*break*/, 5];\n case 4:\n this.signalInitialization();\n _a.label = 5;\n case 5:\n this.options.logger.debug(\"AutoPollConfigService.startRefreshWorker() - calling refreshWorkerLogic()'s setTimeout.\");\n this.workerTimerId = setTimeout(function (d) { return _this.refreshWorkerLogic(d); }, delayMs, delayMs);\n return [2 /*return*/];\n }\n });\n });\n };\n AutoPollConfigService.prototype.stopRefreshWorker = function () {\n this.options.logger.debug(\"AutoPollConfigService.stopRefreshWorker() - clearing setTimeout.\");\n clearTimeout(this.workerTimerId);\n };\n AutoPollConfigService.prototype.refreshWorkerLogic = function (delayMs) {\n return __awaiter(this, void 0, void 0, function () {\n var latestConfig;\n var _this = this;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n if (this.disposed) {\n this.options.logger.debug(\"AutoPollConfigService.refreshWorkerLogic() - called on a disposed client.\");\n return [2 /*return*/];\n }\n this.options.logger.debug(\"AutoPollConfigService.refreshWorkerLogic() - called.\");\n if (!!this.isOffline) return [3 /*break*/, 3];\n return [4 /*yield*/, this.options.cache.get(this.cacheKey)];\n case 1:\n latestConfig = _a.sent();\n return [4 /*yield*/, this.refreshConfigCoreAsync(latestConfig)];\n case 2:\n _a.sent();\n _a.label = 3;\n case 3:\n this.options.logger.debug(\"AutoPollConfigService.refreshWorkerLogic() - calling refreshWorkerLogic()'s setTimeout.\");\n this.workerTimerId = setTimeout(function (d) { return _this.refreshWorkerLogic(d); }, delayMs, delayMs);\n return [2 /*return*/];\n }\n });\n });\n };\n AutoPollConfigService.prototype.getCacheState = function (cachedConfig) {\n if (cachedConfig.isEmpty) {\n return ClientCacheState.NoFlagData;\n }\n if (cachedConfig.isExpired(this.pollIntervalMs)) {\n return ClientCacheState.HasCachedFlagDataOnly;\n }\n return ClientCacheState.HasUpToDateFlagData;\n };\n return AutoPollConfigService;\n}(ConfigServiceBase));\nexport { AutoPollConfigService };\n","import { __awaiter, __generator } from \"tslib\";\nimport { ProjectConfig } from \"./ProjectConfig\";\nimport { isPromiseLike } from \"./Utils\";\nvar InMemoryConfigCache = /** @class */ (function () {\n function InMemoryConfigCache() {\n this.cachedConfig = ProjectConfig.empty;\n }\n InMemoryConfigCache.prototype.set = function (_key, config) {\n this.cachedConfig = config;\n };\n InMemoryConfigCache.prototype.get = function (_key) {\n return this.cachedConfig;\n };\n InMemoryConfigCache.prototype.getInMemory = function () {\n return this.cachedConfig;\n };\n return InMemoryConfigCache;\n}());\nexport { InMemoryConfigCache };\nvar ExternalConfigCache = /** @class */ (function () {\n function ExternalConfigCache(cache, logger) {\n this.cache = cache;\n this.logger = logger;\n this.cachedConfig = ProjectConfig.empty;\n }\n ExternalConfigCache.prototype.set = function (key, config) {\n return __awaiter(this, void 0, void 0, function () {\n var err_1;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n _a.trys.push([0, 2, , 3]);\n if (!config.isEmpty) {\n this.cachedSerializedConfig = ProjectConfig.serialize(config);\n this.cachedConfig = config;\n }\n else {\n // We may have empty entries with timestamp > 0 (see the flooding prevention logic in ConfigServiceBase.fetchLogicAsync).\n // In such cases we want to preserve the timestamp locally but don't want to store those entries into the external cache.\n this.cachedSerializedConfig = void 0;\n this.cachedConfig = config;\n return [2 /*return*/];\n }\n return [4 /*yield*/, this.cache.set(key, this.cachedSerializedConfig)];\n case 1:\n _a.sent();\n return [3 /*break*/, 3];\n case 2:\n err_1 = _a.sent();\n this.logger.configServiceCacheWriteError(err_1);\n return [3 /*break*/, 3];\n case 3: return [2 /*return*/];\n }\n });\n });\n };\n ExternalConfigCache.prototype.updateCachedConfig = function (externalSerializedConfig) {\n if (externalSerializedConfig == null || externalSerializedConfig === this.cachedSerializedConfig) {\n return;\n }\n this.cachedConfig = ProjectConfig.deserialize(externalSerializedConfig);\n this.cachedSerializedConfig = externalSerializedConfig;\n };\n ExternalConfigCache.prototype.get = function (key) {\n var _this = this;\n try {\n var cacheGetResult = this.cache.get(key);\n // Take the async path only when the IConfigCatCache.get operation is asynchronous.\n if (isPromiseLike(cacheGetResult)) {\n return (function (cacheGetPromise) { return __awaiter(_this, void 0, void 0, function () {\n var _a, err_2;\n return __generator(this, function (_b) {\n switch (_b.label) {\n case 0:\n _b.trys.push([0, 2, , 3]);\n _a = this.updateCachedConfig;\n return [4 /*yield*/, cacheGetPromise];\n case 1:\n _a.apply(this, [_b.sent()]);\n return [3 /*break*/, 3];\n case 2:\n err_2 = _b.sent();\n this.logger.configServiceCacheReadError(err_2);\n return [3 /*break*/, 3];\n case 3: return [2 /*return*/, this.cachedConfig];\n }\n });\n }); })(cacheGetResult);\n }\n // Otherwise, keep the code flow synchronous so the config services can sync up\n // with the cache in their ctors synchronously (see ConfigServiceBase.syncUpWithCache).\n this.updateCachedConfig(cacheGetResult);\n }\n catch (err) {\n this.logger.configServiceCacheReadError(err);\n }\n return Promise.resolve(this.cachedConfig);\n };\n ExternalConfigCache.prototype.getInMemory = function () {\n return this.cachedConfig;\n };\n return ExternalConfigCache;\n}());\nexport { ExternalConfigCache };\n","import { __makeTemplateObject } from \"tslib\";\nimport { errorToString } from \"./Utils\";\n/**\n * Specifies event severity levels for the `IConfigCatLogger` interface.\n * The levels are interpreted as minimum levels in the case of event filtering.\n*/\nexport var LogLevel;\n(function (LogLevel) {\n /** All events are logged. */\n LogLevel[LogLevel[\"Debug\"] = 4] = \"Debug\";\n /** Info, Warn and Error are logged. Debug events are discarded. */\n LogLevel[LogLevel[\"Info\"] = 3] = \"Info\";\n /** Warn and Error events are logged. Info and Debug events are discarded. */\n LogLevel[LogLevel[\"Warn\"] = 2] = \"Warn\";\n /** Error events are logged. All other events are discarded. */\n LogLevel[LogLevel[\"Error\"] = 1] = \"Error\";\n /** No events are logged. */\n LogLevel[LogLevel[\"Off\"] = -1] = \"Off\";\n})(LogLevel || (LogLevel = {}));\n/** Represents a log message format with named arguments. */\nvar FormattableLogMessage = /** @class */ (function () {\n function FormattableLogMessage(strings, argNames, argValues) {\n this.strings = strings;\n this.argNames = argNames;\n this.argValues = argValues;\n }\n FormattableLogMessage.from = function () {\n var argNames = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n argNames[_i] = arguments[_i];\n }\n return function (strings) {\n var argValues = [];\n for (var _i = 1; _i < arguments.length; _i++) {\n argValues[_i - 1] = arguments[_i];\n }\n return new FormattableLogMessage(strings, argNames, argValues);\n };\n };\n Object.defineProperty(FormattableLogMessage.prototype, \"defaultFormattedMessage\", {\n get: function () {\n var cachedMessage = this.cachedDefaultFormattedMessage;\n if (cachedMessage === void 0) {\n // This logic should give exactly the same result as string interpolation.\n cachedMessage = \"\";\n var _a = this, strings = _a.strings, argValues = _a.argValues;\n var i = 0;\n for (; i < strings.length - 1; i++) {\n cachedMessage += strings[i];\n cachedMessage += argValues[i];\n }\n cachedMessage += strings[i];\n this.cachedDefaultFormattedMessage = cachedMessage;\n }\n return cachedMessage;\n },\n enumerable: false,\n configurable: true\n });\n FormattableLogMessage.prototype.toString = function () { return this.defaultFormattedMessage; };\n return FormattableLogMessage;\n}());\nexport { FormattableLogMessage };\nvar LoggerWrapper = /** @class */ (function () {\n function LoggerWrapper(logger, hooks) {\n this.logger = logger;\n this.hooks = hooks;\n }\n Object.defineProperty(LoggerWrapper.prototype, \"level\", {\n get: function () {\n var _a;\n return (_a = this.logger.level) !== null && _a !== void 0 ? _a : LogLevel.Warn;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(LoggerWrapper.prototype, \"eol\", {\n get: function () {\n var _a;\n return (_a = this.logger.eol) !== null && _a !== void 0 ? _a : \"\\n\";\n },\n enumerable: false,\n configurable: true\n });\n LoggerWrapper.prototype.isEnabled = function (logLevel) {\n return this.level >= logLevel;\n };\n /** @inheritdoc */\n LoggerWrapper.prototype.log = function (level, eventId, message, exception) {\n var _a;\n if (this.isEnabled(level)) {\n this.logger.log(level, eventId, message, exception);\n }\n if (level === LogLevel.Error) {\n (_a = this.hooks) === null || _a === void 0 ? void 0 : _a.emit(\"clientError\", message.toString(), exception);\n }\n return message;\n };\n /**\n * Shorthand method for `logger.logEvent(LogLevel.Debug, 0, message);`\n */\n LoggerWrapper.prototype.debug = function (message) {\n this.log(LogLevel.Debug, 0, message);\n };\n /* Common error messages (1000-1999) */\n LoggerWrapper.prototype.configJsonIsNotPresent = function (defaultReturnValue) {\n return this.log(LogLevel.Error, 1000, FormattableLogMessage.from(\"DEFAULT_RETURN_VALUE\")(templateObject_1 || (templateObject_1 = __makeTemplateObject([\"Config JSON is not present. Returning \", \".\"], [\"Config JSON is not present. Returning \", \".\"])), defaultReturnValue));\n };\n LoggerWrapper.prototype.configJsonIsNotPresentSingle = function (key, defaultParamName, defaultParamValue) {\n return this.log(LogLevel.Error, 1000, FormattableLogMessage.from(\"KEY\", \"DEFAULT_PARAM_NAME\", \"DEFAULT_PARAM_VALUE\")(templateObject_2 || (templateObject_2 = __makeTemplateObject([\"Config JSON is not present when evaluating setting '\", \"'. Returning the `\", \"` parameter that you specified in your application: '\", \"'.\"], [\"Config JSON is not present when evaluating setting '\", \"'. Returning the \\\\`\", \"\\\\` parameter that you specified in your application: '\", \"'.\"])), key, defaultParamName, defaultParamValue));\n };\n LoggerWrapper.prototype.settingEvaluationFailedDueToMissingKey = function (key, defaultParamName, defaultParamValue, availableKeys) {\n return this.log(LogLevel.Error, 1001, FormattableLogMessage.from(\"KEY\", \"DEFAULT_PARAM_NAME\", \"DEFAULT_PARAM_VALUE\", \"AVAILABLE_KEYS\")(templateObject_3 || (templateObject_3 = __makeTemplateObject([\"Failed to evaluate setting '\", \"' (the key was not found in config JSON). Returning the `\", \"` parameter that you specified in your application: '\", \"'. Available keys: [\", \"].\"], [\"Failed to evaluate setting '\", \"' (the key was not found in config JSON). Returning the \\\\`\", \"\\\\` parameter that you specified in your application: '\", \"'. Available keys: [\", \"].\"])), key, defaultParamName, defaultParamValue, availableKeys));\n };\n LoggerWrapper.prototype.settingEvaluationError = function (methodName, defaultReturnValue, ex) {\n return this.log(LogLevel.Error, 1002, FormattableLogMessage.from(\"METHOD_NAME\", \"DEFAULT_RETURN_VALUE\")(templateObject_4 || (templateObject_4 = __makeTemplateObject([\"Error occurred in the `\", \"` method. Returning \", \".\"], [\"Error occurred in the \\\\`\", \"\\\\` method. Returning \", \".\"])), methodName, defaultReturnValue), ex);\n };\n LoggerWrapper.prototype.settingEvaluationErrorSingle = function (methodName, key, defaultParamName, defaultParamValue, ex) {\n return this.log(LogLevel.Error, 1002, FormattableLogMessage.from(\"METHOD_NAME\", \"KEY\", \"DEFAULT_PARAM_NAME\", \"DEFAULT_PARAM_VALUE\")(templateObject_5 || (templateObject_5 = __makeTemplateObject([\"Error occurred in the `\", \"` method while evaluating setting '\", \"'. Returning the `\", \"` parameter that you specified in your application: '\", \"'.\"], [\"Error occurred in the \\\\`\", \"\\\\` method while evaluating setting '\", \"'. Returning the \\\\`\", \"\\\\` parameter that you specified in your application: '\", \"'.\"])), methodName, key, defaultParamName, defaultParamValue), ex);\n };\n LoggerWrapper.prototype.forceRefreshError = function (methodName, ex) {\n return this.log(LogLevel.Error, 1003, FormattableLogMessage.from(\"METHOD_NAME\")(templateObject_6 || (templateObject_6 = __makeTemplateObject([\"Error occurred in the `\", \"` method.\"], [\"Error occurred in the \\\\`\", \"\\\\` method.\"])), methodName), ex);\n };\n LoggerWrapper.prototype.fetchFailedDueToInvalidSdkKey = function () {\n return this.log(LogLevel.Error, 1100, \"Your SDK Key seems to be wrong. You can find the valid SDK Key at https://app.configcat.com/sdkkey\");\n };\n LoggerWrapper.prototype.fetchFailedDueToUnexpectedHttpResponse = function (statusCode, reasonPhrase) {\n return this.log(LogLevel.Error, 1101, FormattableLogMessage.from(\"STATUS_CODE\", \"REASON_PHRASE\")(templateObject_7 || (templateObject_7 = __makeTemplateObject([\"Unexpected HTTP response was received while trying to fetch config JSON: \", \" \", \"\"], [\"Unexpected HTTP response was received while trying to fetch config JSON: \", \" \", \"\"])), statusCode, reasonPhrase));\n };\n LoggerWrapper.prototype.fetchFailedDueToRequestTimeout = function (timeoutMs, ex) {\n return this.log(LogLevel.Error, 1102, FormattableLogMessage.from(\"TIMEOUT\")(templateObject_8 || (templateObject_8 = __makeTemplateObject([\"Request timed out while trying to fetch config JSON. Timeout value: \", \"ms\"], [\"Request timed out while trying to fetch config JSON. Timeout value: \", \"ms\"])), timeoutMs), ex);\n };\n LoggerWrapper.prototype.fetchFailedDueToUnexpectedError = function (ex) {\n return this.log(LogLevel.Error, 1103, \"Unexpected error occurred while trying to fetch config JSON. It is most likely due to a local network issue. Please make sure your application can reach the ConfigCat CDN servers (or your proxy server) over HTTP.\", ex);\n };\n LoggerWrapper.prototype.fetchFailedDueToRedirectLoop = function () {\n return this.log(LogLevel.Error, 1104, \"Redirection loop encountered while trying to fetch config JSON. Please contact us at https://configcat.com/support/\");\n };\n LoggerWrapper.prototype.fetchReceived200WithInvalidBody = function (ex) {\n return this.log(LogLevel.Error, 1105, \"Fetching config JSON was successful but the HTTP response content was invalid.\", ex);\n };\n LoggerWrapper.prototype.fetchReceived304WhenLocalCacheIsEmpty = function (statusCode, reasonPhrase) {\n return this.log(LogLevel.Error, 1106, FormattableLogMessage.from(\"STATUS_CODE\", \"REASON_PHRASE\")(templateObject_9 || (templateObject_9 = __makeTemplateObject([\"Unexpected HTTP response was received when no config JSON is cached locally: \", \" \", \"\"], [\"Unexpected HTTP response was received when no config JSON is cached locally: \", \" \", \"\"])), statusCode, reasonPhrase));\n };\n /* SDK-specific error messages (2000-2999) */\n LoggerWrapper.prototype.settingForVariationIdIsNotPresent = function (variationId) {\n return this.log(LogLevel.Error, 2011, FormattableLogMessage.from(\"VARIATION_ID\")(templateObject_10 || (templateObject_10 = __makeTemplateObject([\"Could not find the setting for the specified variation ID: '\", \"'.\"], [\"Could not find the setting for the specified variation ID: '\", \"'.\"])), variationId));\n };\n LoggerWrapper.prototype.configServiceCacheReadError = function (ex) {\n return this.log(LogLevel.Error, 2200, \"Error occurred while reading the cache.\", ex);\n };\n LoggerWrapper.prototype.configServiceCacheWriteError = function (ex) {\n return this.log(LogLevel.Error, 2201, \"Error occurred while writing the cache.\", ex);\n };\n /* Common warning messages (3000-3999) */\n LoggerWrapper.prototype.clientIsAlreadyCreated = function (sdkKey) {\n return this.log(LogLevel.Warn, 3000, FormattableLogMessage.from(\"SDK_KEY\")(templateObject_11 || (templateObject_11 = __makeTemplateObject([\"There is an existing client instance for the specified SDK Key. No new client instance will be created and the specified options are ignored. Returning the existing client instance. SDK Key: '\", \"'.\"], [\"There is an existing client instance for the specified SDK Key. No new client instance will be created and the specified options are ignored. Returning the existing client instance. SDK Key: '\", \"'.\"])), sdkKey));\n };\n LoggerWrapper.prototype.userObjectIsMissing = function (key) {\n return this.log(LogLevel.Warn, 3001, FormattableLogMessage.from(\"KEY\")(templateObject_12 || (templateObject_12 = __makeTemplateObject([\"Cannot evaluate targeting rules and % options for setting '\", \"' (User Object is missing). You should pass a User Object to the evaluation methods like `getValueAsync()` in order to make targeting work properly. Read more: https://configcat.com/docs/advanced/user-object/\"], [\"Cannot evaluate targeting rules and % options for setting '\", \"' (User Object is missing). You should pass a User Object to the evaluation methods like \\\\`getValueAsync()\\\\` in order to make targeting work properly. Read more: https://configcat.com/docs/advanced/user-object/\"])), key));\n };\n LoggerWrapper.prototype.dataGovernanceIsOutOfSync = function () {\n return this.log(LogLevel.Warn, 3002, \"The `dataGovernance` parameter specified at the client initialization is not in sync with the preferences on the ConfigCat Dashboard. Read more: https://configcat.com/docs/advanced/data-governance/\");\n };\n LoggerWrapper.prototype.userObjectAttributeIsMissingPercentage = function (key, attributeName) {\n return this.log(LogLevel.Warn, 3003, FormattableLogMessage.from(\"KEY\", \"ATTRIBUTE_NAME\", \"ATTRIBUTE_NAME\")(templateObject_13 || (templateObject_13 = __makeTemplateObject([\"Cannot evaluate % options for setting '\", \"' (the User.\", \" attribute is missing). You should set the User.\", \" attribute in order to make targeting work properly. Read more: https://configcat.com/docs/advanced/user-object/\"], [\"Cannot evaluate % options for setting '\", \"' (the User.\", \" attribute is missing). You should set the User.\", \" attribute in order to make targeting work properly. Read more: https://configcat.com/docs/advanced/user-object/\"])), key, attributeName, attributeName));\n };\n LoggerWrapper.prototype.userObjectAttributeIsMissingCondition = function (condition, key, attributeName) {\n return this.log(LogLevel.Warn, 3003, FormattableLogMessage.from(\"CONDITION\", \"KEY\", \"ATTRIBUTE_NAME\", \"ATTRIBUTE_NAME\")(templateObject_14 || (templateObject_14 = __makeTemplateObject([\"Cannot evaluate condition (\", \") for setting '\", \"' (the User.\", \" attribute is missing). You should set the User.\", \" attribute in order to make targeting work properly. Read more: https://configcat.com/docs/advanced/user-object/\"], [\"Cannot evaluate condition (\", \") for setting '\", \"' (the User.\", \" attribute is missing). You should set the User.\", \" attribute in order to make targeting work properly. Read more: https://configcat.com/docs/advanced/user-object/\"])), condition, key, attributeName, attributeName));\n };\n LoggerWrapper.prototype.userObjectAttributeIsInvalid = function (condition, key, reason, attributeName) {\n return this.log(LogLevel.Warn, 3004, FormattableLogMessage.from(\"CONDITION\", \"KEY\", \"REASON\", \"ATTRIBUTE_NAME\")(templateObject_15 || (templateObject_15 = __makeTemplateObject([\"Cannot evaluate condition (\", \") for setting '\", \"' (\", \"). Please check the User.\", \" attribute and make sure that its value corresponds to the comparison operator.\"], [\"Cannot evaluate condition (\", \") for setting '\", \"' (\", \"). Please check the User.\", \" attribute and make sure that its value corresponds to the comparison operator.\"])), condition, key, reason, attributeName));\n };\n LoggerWrapper.prototype.userObjectAttributeIsAutoConverted = function (condition, key, attributeName, attributeValue) {\n return this.log(LogLevel.Warn, 3005, FormattableLogMessage.from(\"CONDITION\", \"KEY\", \"ATTRIBUTE_NAME\", \"ATTRIBUTE_VALUE\")(templateObject_16 || (templateObject_16 = __makeTemplateObject([\"Evaluation of condition (\", \") for setting '\", \"' may not produce the expected result (the User.\", \" attribute is not a string value, thus it was automatically converted to the string value '\", \"'). Please make sure that using a non-string value was intended.\"], [\"Evaluation of condition (\", \") for setting '\", \"' may not produce the expected result (the User.\", \" attribute is not a string value, thus it was automatically converted to the string value '\", \"'). Please make sure that using a non-string value was intended.\"])), condition, key, attributeName, attributeValue));\n };\n LoggerWrapper.prototype.configServiceCannotInitiateHttpCalls = function () {\n return this.log(LogLevel.Warn, 3200, \"Client is in offline mode, it cannot initiate HTTP calls.\");\n };\n LoggerWrapper.prototype.configServiceMethodHasNoEffectDueToDisposedClient = function (methodName) {\n return this.log(LogLevel.Warn, 3201, FormattableLogMessage.from(\"METHOD_NAME\")(templateObject_17 || (templateObject_17 = __makeTemplateObject([\"The client object is already disposed, thus `\", \"()` has no effect.\"], [\"The client object is already disposed, thus \\\\`\", \"()\\\\` has no effect.\"])), methodName));\n };\n LoggerWrapper.prototype.configServiceMethodHasNoEffectDueToOverrideBehavior = function (overrideBehavior, methodName) {\n return this.log(LogLevel.Warn, 3202, FormattableLogMessage.from(\"OVERRIDE_BEHAVIOR\", \"METHOD_NAME\")(templateObject_18 || (templateObject_18 = __makeTemplateObject([\"Client is configured to use the `\", \"` override behavior, thus `\", \"()` has no effect.\"], [\"Client is configured to use the \\\\`\", \"\\\\` override behavior, thus \\\\`\", \"()\\\\` has no effect.\"])), overrideBehavior, methodName));\n };\n /* SDK-specific warning messages (4000-4999) */\n /* Common info messages (5000-5999) */\n LoggerWrapper.prototype.settingEvaluated = function (evaluateLog) {\n return this.log(LogLevel.Info, 5000, FormattableLogMessage.from(\"EVALUATE_LOG\")(templateObject_19 || (templateObject_19 = __makeTemplateObject([\"\", \"\"], [\"\", \"\"])), evaluateLog));\n };\n LoggerWrapper.prototype.configServiceStatusChanged = function (status) {\n return this.log(LogLevel.Info, 5200, FormattableLogMessage.from(\"MODE\")(templateObject_20 || (templateObject_20 = __makeTemplateObject([\"Switched to \", \" mode.\"], [\"Switched to \", \" mode.\"])), status.toUpperCase()));\n };\n return LoggerWrapper;\n}());\nexport { LoggerWrapper };\nvar ConfigCatConsoleLogger = /** @class */ (function () {\n /**\n * Create an instance of ConfigCatConsoleLogger\n */\n function ConfigCatConsoleLogger(level, eol) {\n if (level === void 0) { level = LogLevel.Warn; }\n if (eol === void 0) { eol = \"\\n\"; }\n this.level = level;\n this.eol = eol;\n this.SOURCE = \"ConfigCat\";\n }\n /** @inheritdoc */\n ConfigCatConsoleLogger.prototype.log = function (level, eventId, message, exception) {\n var _a = level === LogLevel.Debug ? [console.info, \"DEBUG\"] :\n level === LogLevel.Info ? [console.info, \"INFO\"] :\n level === LogLevel.Warn ? [console.warn, \"WARN\"] :\n level === LogLevel.Error ? [console.error, \"ERROR\"] :\n [console.log, LogLevel[level].toUpperCase()], logMethod = _a[0], levelString = _a[1];\n var exceptionString = exception !== void 0 ? this.eol + errorToString(exception, true) : \"\";\n logMethod(this.SOURCE + \" - \" + levelString + \" - [\" + eventId + \"] \" + message + exceptionString);\n };\n return ConfigCatConsoleLogger;\n}());\nexport { ConfigCatConsoleLogger };\nvar templateObject_1, templateObject_2, templateObject_3, templateObject_4, templateObject_5, templateObject_6, templateObject_7, templateObject_8, templateObject_9, templateObject_10, templateObject_11, templateObject_12, templateObject_13, templateObject_14, templateObject_15, templateObject_16, templateObject_17, templateObject_18, templateObject_19, templateObject_20;\n","function isSingle(listeners) {\n return !!listeners.fn;\n}\n// NOTE: It's better to place this class into a separate module so\n// it can be omitted from the final bundle in case we choose to\n// make the common library EventEmitter implementation-agnostic in the future.\n/** A platform-independent implementation of `IEventEmitter`. */\nvar DefaultEventEmitter = /** @class */ (function () {\n function DefaultEventEmitter() {\n this.events = {};\n this.eventCount = 0;\n this.addListener = this.on;\n this.off = this.removeListener;\n }\n DefaultEventEmitter.prototype.addListenerCore = function (eventName, fn, once) {\n if (typeof fn !== \"function\") {\n throw new TypeError(\"Listener must be a function\");\n }\n // TODO: remove `as string` when updating to TypeScript 4.4 or newer (https://stackoverflow.com/a/64943542/8656352)\n var listeners = this.events[eventName];\n var listener = { fn: fn, once: once };\n if (!listeners) {\n this.events[eventName] = listener;\n this.eventCount++;\n }\n else if (isSingle(listeners)) {\n this.events[eventName] = [listeners, listener];\n }\n else {\n listeners.push(listener);\n }\n return this;\n };\n DefaultEventEmitter.prototype.removeListenerCore = function (eventName, state, isMatch) {\n var listeners = this.events[eventName];\n if (!listeners) {\n return this;\n }\n if (!isSingle(listeners)) {\n for (var i = listeners.length - 1; i >= 0; i--) {\n if (isMatch(listeners[i], state)) {\n listeners.splice(i, 1);\n if (!listeners.length) {\n this.removeEvent(eventName);\n }\n else if (listeners.length === 1) {\n this.events[eventName] = listeners[0];\n }\n break;\n }\n }\n }\n else if (isMatch(listeners, state)) {\n this.removeEvent(eventName);\n }\n return this;\n };\n DefaultEventEmitter.prototype.removeEvent = function (eventName) {\n if (--this.eventCount === 0) {\n this.events = {};\n }\n else {\n delete this.events[eventName];\n }\n };\n DefaultEventEmitter.prototype.on = function (eventName, listener) {\n return this.addListenerCore(eventName, listener, false);\n };\n DefaultEventEmitter.prototype.once = function (eventName, listener) {\n return this.addListenerCore(eventName, listener, true);\n };\n DefaultEventEmitter.prototype.removeListener = function (eventName, listener) {\n if (typeof listener !== \"function\") {\n throw new TypeError(\"Listener must be a function\");\n }\n return this.removeListenerCore(eventName, listener, function (listener, fn) { return listener.fn === fn; });\n };\n DefaultEventEmitter.prototype.removeAllListeners = function (eventName) {\n if (!eventName) {\n this.events = {};\n this.eventCount = 0;\n }\n else if (this.events[eventName]) {\n this.removeEvent(eventName);\n }\n return this;\n };\n DefaultEventEmitter.prototype.listeners = function (eventName) {\n var listeners = this.events[eventName];\n if (!listeners) {\n return [];\n }\n if (isSingle(listeners)) {\n return [listeners.fn];\n }\n var length = listeners.length, fns = new Array(length);\n for (var i = 0; i < length; i++) {\n fns[i] = listeners[i].fn;\n }\n return fns;\n };\n DefaultEventEmitter.prototype.listenerCount = function (eventName) {\n var listeners = this.events[eventName];\n if (!listeners) {\n return 0;\n }\n if (isSingle(listeners)) {\n return 1;\n }\n return listeners.length;\n };\n DefaultEventEmitter.prototype.eventNames = function () {\n var names = [];\n if (this.eventCount === 0) {\n return names;\n }\n var events = this.events;\n for (var name in events) {\n if (Object.prototype.hasOwnProperty.call(events, name)) {\n names.push(name);\n }\n }\n if (Object.getOwnPropertySymbols) {\n return names.concat(Object.getOwnPropertySymbols(events));\n }\n return names;\n };\n DefaultEventEmitter.prototype.emit = function (eventName, arg0, arg1, arg2, arg3) {\n var _a, _b;\n var moreArgs = [];\n for (var _i = 5; _i < arguments.length; _i++) {\n moreArgs[_i - 5] = arguments[_i];\n }\n var listeners = this.events[eventName];\n if (!listeners) {\n return false;\n }\n var listener, length;\n if (isSingle(listeners)) {\n _a = [listeners, 1], listener = _a[0], length = _a[1];\n }\n else {\n // According to the specification, potential removes during emit should not change the list of notified listeners,\n // so we need to create a local copy of the current listeners.\n listeners = listeners.slice();\n _b = [listeners[0], listeners.length], listener = _b[0], length = _b[1];\n }\n var argCount = arguments.length - 1;\n for (var i = 0;;) {\n if (listener.once) {\n this.removeListenerCore(eventName, listener, function (listener, toRemove) { return listener === toRemove; });\n }\n switch (argCount) {\n case 0:\n listener.fn.call(this);\n break;\n case 1:\n listener.fn.call(this, arg0);\n break;\n case 2:\n listener.fn.call(this, arg0, arg1);\n break;\n case 3:\n listener.fn.call(this, arg0, arg1, arg2);\n break;\n case 4:\n listener.fn.call(this, arg0, arg1, arg2, arg3);\n break;\n default:\n var args = new Array(argCount);\n for (var j = 0; j < argCount; j++) {\n // eslint-disable-next-line prefer-rest-params\n args[j] = arguments[j + 1];\n }\n listener.fn.apply(this, args);\n break;\n }\n if (++i >= length) {\n break;\n }\n listener = listeners[i];\n }\n return true;\n };\n return DefaultEventEmitter;\n}());\nexport { DefaultEventEmitter };\n","// The interfaces below define a subset of Node's EventEmitter (see https://nodejs.org/api/events.html#class-eventemitter),\n// so they are (structurally) compatible with instances of EventEmitter.\nvar NullEventEmitter = /** @class */ (function () {\n function NullEventEmitter() {\n this.addListener = this.on;\n this.off = this.removeListener;\n }\n NullEventEmitter.prototype.on = function () { return this; };\n NullEventEmitter.prototype.once = function () { return this; };\n NullEventEmitter.prototype.removeListener = function () { return this; };\n NullEventEmitter.prototype.removeAllListeners = function () { return this; };\n NullEventEmitter.prototype.listeners = function () { return []; };\n NullEventEmitter.prototype.listenerCount = function () { return 0; };\n NullEventEmitter.prototype.eventNames = function () { return []; };\n NullEventEmitter.prototype.emit = function () { return false; };\n return NullEventEmitter;\n}());\nexport { NullEventEmitter };\n","import { utf8Encode } from \"./Utils\";\nexport function sha1(msg) {\n function rotate_left(n, s) {\n var t4 = (n << s) | (n >>> (32 - s));\n return t4;\n }\n ;\n var blockstart;\n var i, j;\n var W = new Array(80);\n var H0 = 0x67452301;\n var H1 = 0xEFCDAB89;\n var H2 = 0x98BADCFE;\n var H3 = 0x10325476;\n var H4 = 0xC3D2E1F0;\n var A, B, C, D, E;\n var temp;\n msg = utf8Encode(msg);\n var msg_len = msg.length;\n var word_array = new Array();\n for (i = 0; i < msg_len - 3; i += 4) {\n j = msg.charCodeAt(i) << 24 | msg.charCodeAt(i + 1) << 16 |\n msg.charCodeAt(i + 2) << 8 | msg.charCodeAt(i + 3);\n word_array.push(j);\n }\n switch (msg_len % 4) {\n case 0:\n i = 0x080000000;\n break;\n case 1:\n i = msg.charCodeAt(msg_len - 1) << 24 | 0x0800000;\n break;\n case 2:\n i = msg.charCodeAt(msg_len - 2) << 24 | msg.charCodeAt(msg_len - 1) << 16 | 0x08000;\n break;\n case 3:\n i = msg.charCodeAt(msg_len - 3) << 24 | msg.charCodeAt(msg_len - 2) << 16 | msg.charCodeAt(msg_len - 1) << 8 | 0x80;\n break;\n }\n word_array.push(i);\n while ((word_array.length % 16) != 14)\n word_array.push(0);\n word_array.push(msg_len >>> 29);\n word_array.push((msg_len << 3) & 0x0ffffffff);\n for (blockstart = 0; blockstart < word_array.length; blockstart += 16) {\n for (i = 0; i < 16; i++)\n W[i] = word_array[blockstart + i];\n for (i = 16; i <= 79; i++)\n W[i] = rotate_left(W[i - 3] ^ W[i - 8] ^ W[i - 14] ^ W[i - 16], 1);\n A = H0;\n B = H1;\n C = H2;\n D = H3;\n E = H4;\n for (i = 0; i <= 19; i++) {\n temp = (rotate_left(A, 5) + ((B & C) | (~B & D)) + E + W[i] + 0x5A827999) & 0x0ffffffff;\n E = D;\n D = C;\n C = rotate_left(B, 30);\n B = A;\n A = temp;\n }\n for (i = 20; i <= 39; i++) {\n temp = (rotate_left(A, 5) + (B ^ C ^ D) + E + W[i] + 0x6ED9EBA1) & 0x0ffffffff;\n E = D;\n D = C;\n C = rotate_left(B, 30);\n B = A;\n A = temp;\n }\n for (i = 40; i <= 59; i++) {\n temp = (rotate_left(A, 5) + ((B & C) | (B & D) | (C & D)) + E + W[i] + 0x8F1BBCDC) & 0x0ffffffff;\n E = D;\n D = C;\n C = rotate_left(B, 30);\n B = A;\n A = temp;\n }\n for (i = 60; i <= 79; i++) {\n temp = (rotate_left(A, 5) + (B ^ C ^ D) + E + W[i] + 0xCA62C1D6) & 0x0ffffffff;\n E = D;\n D = C;\n C = rotate_left(B, 30);\n B = A;\n A = temp;\n }\n H0 = (H0 + A) & 0x0ffffffff;\n H1 = (H1 + B) & 0x0ffffffff;\n H2 = (H2 + C) & 0x0ffffffff;\n H3 = (H3 + D) & 0x0ffffffff;\n H4 = (H4 + E) & 0x0ffffffff;\n }\n return toHexString([H0, H1, H2, H3, H4]);\n}\n// Based on: https://stackoverflow.com/a/59777755/8656352\nexport function sha256(msgUtf8) {\n function rightRotate(value, amount) {\n return (value >>> amount) | (value << (32 - amount));\n }\n ;\n var lengthProperty = \"length\";\n var mathPow = Math.pow;\n var maxWord = mathPow(2, 32);\n var i, j; // Used as a counter across the whole file\n var precomputedData = sha256;\n var hash = precomputedData.h;\n var k = precomputedData.k;\n if (!k) {\n // Initial hash value: first 32 bits of the fractional parts of the square roots of the first 8 primes\n // (we actually calculate the first 64, but extra values are just ignored)\n hash = [];\n // Round constants: first 32 bits of the fractional parts of the cube roots of the first 64 primes\n k = [];\n var isComposite = {};\n for (var candidate = 2, primeCounter = 0; primeCounter < 64; candidate++) {\n if (!isComposite[candidate]) {\n for (i = 0; i < 313; i += candidate) {\n isComposite[i] = candidate;\n }\n hash[primeCounter] = (mathPow(candidate, .5) * maxWord) | 0;\n k[primeCounter++] = (mathPow(candidate, 1 / 3) * maxWord) | 0;\n }\n }\n precomputedData.h = hash = hash.slice(0, 8);\n precomputedData.k = k;\n }\n var asciiBitLength = msgUtf8[lengthProperty] * 8;\n msgUtf8 += '\\x80'; // Append Ƈ' bit (plus zero padding)\n var words = [];\n while (msgUtf8[lengthProperty] % 64 - 56)\n msgUtf8 += '\\x00'; // More zero padding\n for (i = 0; i < msgUtf8[lengthProperty]; i++) {\n j = msgUtf8.charCodeAt(i);\n words[i >> 2] |= j << ((3 - i) % 4) * 8;\n }\n words[words[lengthProperty]] = ((asciiBitLength / maxWord) | 0);\n words[words[lengthProperty]] = (asciiBitLength);\n // process each chunk\n for (j = 0; j < words[lengthProperty];) {\n var w = words.slice(j, j += 16); // The message is expanded into 64 words as part of the iteration\n var oldHash = hash;\n // This is now the undefinedworking hash\", often labelled as variables a...g\n // (we have to truncate as well, otherwise extra entries at the end accumulate\n hash = hash.slice(0, 8);\n for (i = 0; i < 64; i++) {\n // Expand the message into 64 words\n // Used below if \n var w15 = w[i - 15], w2 = w[i - 2];\n // Iterate\n var a = hash[0], e = hash[4];\n var temp1 = hash[7]\n + (rightRotate(e, 6) ^ rightRotate(e, 11) ^ rightRotate(e, 25)) // S1\n + ((e & hash[5]) ^ ((~e) & hash[6])) // ch\n + k[i]\n // Expand the message schedule if needed\n + (w[i] = (i < 16) ? w[i] : (w[i - 16]\n + (rightRotate(w15, 7) ^ rightRotate(w15, 18) ^ (w15 >>> 3)) // s0\n + w[i - 7]\n + (rightRotate(w2, 17) ^ rightRotate(w2, 19) ^ (w2 >>> 10)) // s1\n ) | 0);\n // This is only used once, so *could* be moved below, but it only saves 4 bytes and makes things unreadble\n var temp2 = (rightRotate(a, 2) ^ rightRotate(a, 13) ^ rightRotate(a, 22)) // S0\n + ((a & hash[1]) ^ (a & hash[2]) ^ (hash[1] & hash[2])); // maj\n hash = [(temp1 + temp2) | 0].concat(hash); // We don't bother trimming off the extra ones, they're harmless as long as we're truncating when we do the slice()\n hash[4] = (hash[4] + temp1) | 0;\n }\n for (i = 0; i < 8; i++) {\n hash[i] = (hash[i] + oldHash[i]) | 0;\n }\n }\n return toHexString(hash, 8);\n}\nfunction toHexString(int32Array, count) {\n var hexDigits = \"0123456789abcdef\";\n var result = \"\";\n count !== null && count !== void 0 ? count : (count = int32Array.length);\n for (var i = 0; i < count; i++) {\n for (var j = 3; j >= 0; j--) {\n var b = (int32Array[i] >> (j << 3)) & 0xFF;\n result += hexDigits[b >> 4];\n result += hexDigits[b & 0xF];\n }\n }\n return result;\n}\n","import { __spreadArrays } from \"tslib\";\nimport { NullEventEmitter } from \"./EventEmitter\";\nvar disconnectedEventEmitter = new NullEventEmitter();\nvar Hooks = /** @class */ (function () {\n function Hooks(eventEmitter) {\n /** @inheritdoc */\n this.addListener = this.on;\n /** @inheritdoc */\n this.off = this.removeListener;\n this.eventEmitter = eventEmitter;\n }\n Hooks.prototype.tryDisconnect = function () {\n // Replacing the current IEventEmitter object (eventEmitter) with a special instance of IEventEmitter (disconnectedEventEmitter) achieves multiple things:\n // 1. determines whether the hooks instance has already been disconnected or not,\n // 2. removes implicit references to subscriber objects (so this instance won't keep them alive under any circumstances),\n // 3. makes sure that future subscriptions are ignored from this point on.\n var originalEventEmitter = this.eventEmitter;\n this.eventEmitter = disconnectedEventEmitter;\n return originalEventEmitter !== disconnectedEventEmitter;\n };\n /** @inheritdoc */\n Hooks.prototype.on = function (eventName, listener) {\n this.eventEmitter.on(eventName, listener);\n return this;\n };\n /** @inheritdoc */\n Hooks.prototype.once = function (eventName, listener) {\n this.eventEmitter.once(eventName, listener);\n return this;\n };\n /** @inheritdoc */\n Hooks.prototype.removeListener = function (eventName, listener) {\n this.eventEmitter.removeListener(eventName, listener);\n return this;\n };\n /** @inheritdoc */\n Hooks.prototype.removeAllListeners = function (eventName) {\n this.eventEmitter.removeAllListeners(eventName);\n return this;\n };\n /** @inheritdoc */\n Hooks.prototype.listeners = function (eventName) {\n return this.eventEmitter.listeners(eventName);\n };\n /** @inheritdoc */\n Hooks.prototype.listenerCount = function (eventName) {\n return this.eventEmitter.listenerCount(eventName);\n };\n /** @inheritdoc */\n Hooks.prototype.eventNames = function () {\n return this.eventEmitter.eventNames();\n };\n /** @inheritdoc */\n Hooks.prototype.emit = function (eventName) {\n var _a;\n var args = [];\n for (var _i = 1; _i < arguments.length; _i++) {\n args[_i - 1] = arguments[_i];\n }\n return (_a = this.eventEmitter).emit.apply(_a, __spreadArrays([eventName], args));\n };\n return Hooks;\n}());\nexport { Hooks };\n","export function setupPolyfills() {\n // Object.values\n if (typeof Object.values === \"undefined\") {\n Object.values = ObjectValuesPolyfill;\n }\n // Object.entries\n if (typeof Object.entries === \"undefined\") {\n Object.entries = ObjectEntriesPolyfill;\n }\n // Object.fromEntries\n if (typeof Object.fromEntries === \"undefined\") {\n Object.fromEntries = ObjectFromEntriesPolyfill;\n }\n}\n// eslint-disable-next-line @typescript-eslint/naming-convention\nexport function ObjectValuesPolyfill(o) {\n var result = [];\n for (var _i = 0, _a = Object.keys(o); _i < _a.length; _i++) {\n var key = _a[_i];\n result.push(o[key]);\n }\n return result;\n}\n// eslint-disable-next-line @typescript-eslint/naming-convention\nexport function ObjectEntriesPolyfill(o) {\n var result = [];\n for (var _i = 0, _a = Object.keys(o); _i < _a.length; _i++) {\n var key = _a[_i];\n result.push([key, o[key]]);\n }\n return result;\n}\n// eslint-disable-next-line @typescript-eslint/naming-convention\nexport function ObjectFromEntriesPolyfill(entries) {\n var _a;\n // TODO: change `k: string` to `k: PropertyKey` in the following line and remove `as string` below\n // when updating to TypeScript 4.4 or newer (https://stackoverflow.com/a/64943542/8656352)\n var result = {};\n if (Array.isArray(entries)) {\n for (var _i = 0, entries_1 = entries; _i < entries_1.length; _i++) {\n var _b = entries_1[_i], key = _b[0], value = _b[1];\n result[key] = value;\n }\n }\n else if (typeof Symbol !== \"undefined\" && (entries === null || entries === void 0 ? void 0 : entries[Symbol.iterator])) {\n var iterator = entries[Symbol.iterator]();\n var element = void 0, done = void 0;\n while ((_a = iterator.next(), element = _a.value, done = _a.done, _a, !done)) {\n var key = element[0], value = element[1];\n result[key] = value;\n }\n }\n else {\n throw new TypeError(\"Object.fromEntries() requires a single iterable argument\");\n }\n return result;\n}\nexport function getWeakRefStub() {\n // eslint-disable-next-line @typescript-eslint/naming-convention\n var WeakRef = function (target) {\n this.target = target;\n };\n WeakRef.prototype.deref = function () {\n return this.target;\n };\n WeakRef.isFallback = true;\n return WeakRef;\n}\nexport var isWeakRefAvailable = function () { return typeof WeakRef === \"function\"; };\n","import { __extends, __spreadArrays } from \"tslib\";\nimport { ExternalConfigCache, InMemoryConfigCache } from \"./ConfigCatCache\";\nimport { ConfigCatConsoleLogger, LoggerWrapper } from \"./ConfigCatLogger\";\nimport { DefaultEventEmitter } from \"./DefaultEventEmitter\";\nimport { NullEventEmitter } from \"./EventEmitter\";\nimport { sha1 } from \"./Hash\";\nimport { Hooks } from \"./Hooks\";\nimport { getWeakRefStub, isWeakRefAvailable } from \"./Polyfills\";\nimport { ProjectConfig } from \"./ProjectConfig\";\n/** Specifies the supported polling modes. */\nexport var PollingMode;\n(function (PollingMode) {\n /** The ConfigCat SDK downloads the latest values automatically and stores them in the local cache. */\n PollingMode[PollingMode[\"AutoPoll\"] = 0] = \"AutoPoll\";\n /** The ConfigCat SDK downloads the latest setting values only if they are not present in the local cache, or if the cache entry has expired. */\n PollingMode[PollingMode[\"LazyLoad\"] = 1] = \"LazyLoad\";\n /** The ConfigCat SDK will not download the config JSON automatically. You need to update the cache manually, by calling `forceRefresh()`. */\n PollingMode[PollingMode[\"ManualPoll\"] = 2] = \"ManualPoll\";\n})(PollingMode || (PollingMode = {}));\n/** Controls the location of the config JSON files containing your feature flags and settings within the ConfigCat CDN. */\nexport var DataGovernance;\n(function (DataGovernance) {\n /** Choose this option if your config JSON files are published to all global CDN nodes. */\n DataGovernance[DataGovernance[\"Global\"] = 0] = \"Global\";\n /** Choose this option if your config JSON files are published to CDN nodes only in the EU. */\n DataGovernance[DataGovernance[\"EuOnly\"] = 1] = \"EuOnly\";\n})(DataGovernance || (DataGovernance = {}));\n/* eslint-disable @typescript-eslint/no-inferrable-types */\nvar OptionsBase = /** @class */ (function () {\n function OptionsBase(sdkKey, clientVersion, options, defaultCacheFactory, eventEmitterFactory) {\n var _a, _b, _c;\n this.requestTimeoutMs = 30000;\n this.baseUrlOverriden = false;\n this.proxy = \"\";\n this.offline = false;\n if (!sdkKey) {\n throw new Error(\"Invalid 'sdkKey' value\");\n }\n this.sdkKey = sdkKey;\n this.clientVersion = clientVersion;\n this.dataGovernance = (_a = options === null || options === void 0 ? void 0 : options.dataGovernance) !== null && _a !== void 0 ? _a : DataGovernance.Global;\n switch (this.dataGovernance) {\n case DataGovernance.EuOnly:\n this.baseUrl = \"https://cdn-eu.configcat.com\";\n break;\n default:\n this.baseUrl = \"https://cdn-global.configcat.com\";\n break;\n }\n var eventEmitter = (_b = eventEmitterFactory === null || eventEmitterFactory === void 0 ? void 0 : eventEmitterFactory()) !== null && _b !== void 0 ? _b : new DefaultEventEmitter();\n var hooks = new Hooks(eventEmitter);\n var hooksWeakRef = new (isWeakRefAvailable() ? WeakRef : getWeakRefStub())(hooks);\n this.hooks = {\n hooks: hooks,\n hooksWeakRef: hooksWeakRef,\n emit: function (eventName) {\n var _a, _b;\n var args = [];\n for (var _i = 1; _i < arguments.length; _i++) {\n args[_i - 1] = arguments[_i];\n }\n return (_b = (_a = this.hooksWeakRef.deref()) === null || _a === void 0 ? void 0 : _a.emit.apply(_a, __spreadArrays([eventName], args))) !== null && _b !== void 0 ? _b : false;\n }\n };\n var logger;\n var cache;\n if (options) {\n logger = options.logger;\n cache = options.cache;\n if (options.requestTimeoutMs) {\n if (options.requestTimeoutMs < 0) {\n throw new Error(\"Invalid 'requestTimeoutMs' value\");\n }\n this.requestTimeoutMs = options.requestTimeoutMs;\n }\n if (options.baseUrl) {\n this.baseUrl = options.baseUrl;\n this.baseUrlOverriden = true;\n }\n if (options.proxy) {\n this.proxy = options.proxy;\n }\n if (options.flagOverrides) {\n this.flagOverrides = options.flagOverrides;\n }\n if (options.defaultUser) {\n this.defaultUser = options.defaultUser;\n }\n if (options.offline) {\n this.offline = options.offline;\n }\n (_c = options.setupHooks) === null || _c === void 0 ? void 0 : _c.call(options, hooks);\n }\n this.logger = new LoggerWrapper(logger !== null && logger !== void 0 ? logger : new ConfigCatConsoleLogger(), this.hooks);\n this.cache = cache\n ? new ExternalConfigCache(cache, this.logger)\n : (defaultCacheFactory ? defaultCacheFactory(this) : new InMemoryConfigCache());\n }\n OptionsBase.prototype.yieldHooks = function () {\n var hooksWrapper = this.hooks;\n var hooks = hooksWrapper.hooks;\n delete hooksWrapper.hooks;\n return hooks !== null && hooks !== void 0 ? hooks : new Hooks(new NullEventEmitter());\n };\n OptionsBase.prototype.getUrl = function () {\n return this.baseUrl + \"/configuration-files/\" + this.sdkKey + \"/\" + OptionsBase.configFileName + \"?sdk=\" + this.clientVersion;\n };\n OptionsBase.prototype.getCacheKey = function () {\n return sha1(this.sdkKey + \"_\" + OptionsBase.configFileName + \"_\" + ProjectConfig.serializationFormatVersion);\n };\n OptionsBase.configFileName = \"config_v6.json\";\n return OptionsBase;\n}());\nexport { OptionsBase };\nvar AutoPollOptions = /** @class */ (function (_super) {\n __extends(AutoPollOptions, _super);\n function AutoPollOptions(sdkKey, sdkType, sdkVersion, options, defaultCacheFactory, eventEmitterFactory) {\n var _this = _super.call(this, sdkKey, sdkType + \"/a-\" + sdkVersion, options, defaultCacheFactory, eventEmitterFactory) || this;\n _this.pollIntervalSeconds = 60;\n _this.maxInitWaitTimeSeconds = 5;\n if (options) {\n if (options.pollIntervalSeconds != null) {\n _this.pollIntervalSeconds = options.pollIntervalSeconds;\n }\n if (options.maxInitWaitTimeSeconds != null) {\n _this.maxInitWaitTimeSeconds = options.maxInitWaitTimeSeconds;\n }\n }\n // https://developer.mozilla.org/en-US/docs/Web/API/setTimeout#maximum_delay_value\n // https://stackoverflow.com/a/3468650/8656352\n var maxSetTimeoutIntervalSecs = 2147483;\n if (!(typeof _this.pollIntervalSeconds === \"number\" && 1 <= _this.pollIntervalSeconds && _this.pollIntervalSeconds <= maxSetTimeoutIntervalSecs)) {\n throw new Error(\"Invalid 'pollIntervalSeconds' value\");\n }\n if (!(typeof _this.maxInitWaitTimeSeconds === \"number\" && _this.maxInitWaitTimeSeconds <= maxSetTimeoutIntervalSecs)) {\n throw new Error(\"Invalid 'maxInitWaitTimeSeconds' value\");\n }\n return _this;\n }\n return AutoPollOptions;\n}(OptionsBase));\nexport { AutoPollOptions };\nvar ManualPollOptions = /** @class */ (function (_super) {\n __extends(ManualPollOptions, _super);\n function ManualPollOptions(sdkKey, sdkType, sdkVersion, options, defaultCacheFactory, eventEmitterFactory) {\n return _super.call(this, sdkKey, sdkType + \"/m-\" + sdkVersion, options, defaultCacheFactory, eventEmitterFactory) || this;\n }\n return ManualPollOptions;\n}(OptionsBase));\nexport { ManualPollOptions };\nvar LazyLoadOptions = /** @class */ (function (_super) {\n __extends(LazyLoadOptions, _super);\n function LazyLoadOptions(sdkKey, sdkType, sdkVersion, options, defaultCacheFactory, eventEmitterFactory) {\n var _this = _super.call(this, sdkKey, sdkType + \"/l-\" + sdkVersion, options, defaultCacheFactory, eventEmitterFactory) || this;\n _this.cacheTimeToLiveSeconds = 60;\n if (options) {\n if (options.cacheTimeToLiveSeconds != null) {\n _this.cacheTimeToLiveSeconds = options.cacheTimeToLiveSeconds;\n }\n }\n if (!(typeof _this.cacheTimeToLiveSeconds === \"number\" && 1 <= _this.cacheTimeToLiveSeconds && _this.cacheTimeToLiveSeconds <= 2147483647)) {\n throw new Error(\"Invalid 'cacheTimeToLiveSeconds' value\");\n }\n return _this;\n }\n return LazyLoadOptions;\n}(OptionsBase));\nexport { LazyLoadOptions };\n","import { Setting } from \"./ProjectConfig\";\n/**\n * Specifies the behaviours for flag overrides.\n */\nexport var OverrideBehaviour;\n(function (OverrideBehaviour) {\n /**\n * When evaluating values, the SDK will not use feature flags and settings from the ConfigCat CDN, but it will use\n * all feature flags and settings that are loaded from local-override sources.\n */\n OverrideBehaviour[OverrideBehaviour[\"LocalOnly\"] = 0] = \"LocalOnly\";\n /**\n * When evaluating values, the SDK will use all feature flags and settings that are downloaded from the ConfigCat CDN,\n * plus all feature flags and settings that are loaded from local-override sources. If a feature flag or a setting is\n * defined both in the fetched and the local-override source then the local-override version will take precedence.\n */\n OverrideBehaviour[OverrideBehaviour[\"LocalOverRemote\"] = 1] = \"LocalOverRemote\";\n /**\n * When evaluating values, the SDK will use all feature flags and settings that are downloaded from the ConfigCat CDN,\n * plus all feature flags and settings that are loaded from local-override sources. If a feature flag or a setting is\n * defined both in the fetched and the local-override source then the fetched version will take precedence.\n */\n OverrideBehaviour[OverrideBehaviour[\"RemoteOverLocal\"] = 2] = \"RemoteOverLocal\";\n})(OverrideBehaviour || (OverrideBehaviour = {}));\nvar MapOverrideDataSource = /** @class */ (function () {\n function MapOverrideDataSource(map, watchChanges) {\n this.initialSettings = this.constructor.getCurrentSettings(map);\n if (watchChanges) {\n this.map = map;\n }\n }\n MapOverrideDataSource.getCurrentSettings = function (map) {\n return Object.fromEntries(Object.entries(map)\n .map(function (_a) {\n var key = _a[0], value = _a[1];\n return [key, Setting.fromValue(value)];\n }));\n };\n MapOverrideDataSource.prototype.getOverrides = function () {\n return Promise.resolve(this.getOverridesSync());\n };\n MapOverrideDataSource.prototype.getOverridesSync = function () {\n return this.map\n ? this.constructor.getCurrentSettings(this.map)\n : this.initialSettings;\n };\n return MapOverrideDataSource;\n}());\nexport { MapOverrideDataSource };\nvar FlagOverrides = /** @class */ (function () {\n function FlagOverrides(dataSource, behaviour) {\n this.dataSource = dataSource;\n this.behaviour = behaviour;\n }\n return FlagOverrides;\n}());\nexport { FlagOverrides };\n","import { __awaiter, __extends, __generator } from \"tslib\";\nimport { ClientCacheState, ConfigServiceBase } from \"./ConfigServiceBase\";\nvar LazyLoadConfigService = /** @class */ (function (_super) {\n __extends(LazyLoadConfigService, _super);\n function LazyLoadConfigService(configFetcher, options) {\n var _this = _super.call(this, configFetcher, options) || this;\n _this.cacheTimeToLiveMs = options.cacheTimeToLiveSeconds * 1000;\n var initialCacheSyncUp = _this.syncUpWithCache();\n _this.readyPromise = _this.getReadyPromise(initialCacheSyncUp, function (initialCacheSyncUp) { return __awaiter(_this, void 0, void 0, function () { var _a; return __generator(this, function (_b) {\n switch (_b.label) {\n case 0:\n _a = this.getCacheState;\n return [4 /*yield*/, initialCacheSyncUp];\n case 1: return [2 /*return*/, _a.apply(this, [_b.sent()])];\n }\n }); }); });\n return _this;\n }\n LazyLoadConfigService.prototype.getConfig = function () {\n return __awaiter(this, void 0, void 0, function () {\n function logExpired(logger, appendix) {\n if (appendix === void 0) { appendix = \"\"; }\n logger.debug(\"LazyLoadConfigService.getConfig(): cache is empty or expired\" + appendix + \".\");\n }\n var cachedConfig;\n var _a;\n return __generator(this, function (_b) {\n switch (_b.label) {\n case 0:\n this.options.logger.debug(\"LazyLoadConfigService.getConfig() called.\");\n return [4 /*yield*/, this.options.cache.get(this.cacheKey)];\n case 1:\n cachedConfig = _b.sent();\n if (!cachedConfig.isExpired(this.cacheTimeToLiveMs)) return [3 /*break*/, 5];\n if (!!this.isOffline) return [3 /*break*/, 3];\n logExpired(this.options.logger, \", calling refreshConfigCoreAsync()\");\n return [4 /*yield*/, this.refreshConfigCoreAsync(cachedConfig)];\n case 2:\n _a = _b.sent(), cachedConfig = _a[1];\n return [3 /*break*/, 4];\n case 3:\n logExpired(this.options.logger);\n _b.label = 4;\n case 4: return [2 /*return*/, cachedConfig];\n case 5:\n this.options.logger.debug(\"LazyLoadConfigService.getConfig(): cache is valid, returning from cache.\");\n return [2 /*return*/, cachedConfig];\n }\n });\n });\n };\n LazyLoadConfigService.prototype.refreshConfigAsync = function () {\n this.options.logger.debug(\"LazyLoadConfigService.refreshConfigAsync() called.\");\n return _super.prototype.refreshConfigAsync.call(this);\n };\n LazyLoadConfigService.prototype.getCacheState = function (cachedConfig) {\n if (cachedConfig.isEmpty) {\n return ClientCacheState.NoFlagData;\n }\n if (cachedConfig.isExpired(this.cacheTimeToLiveMs)) {\n return ClientCacheState.HasCachedFlagDataOnly;\n }\n return ClientCacheState.HasUpToDateFlagData;\n };\n return LazyLoadConfigService;\n}(ConfigServiceBase));\nexport { LazyLoadConfigService };\n","import { __awaiter, __extends, __generator } from \"tslib\";\nimport { ClientCacheState, ConfigServiceBase } from \"./ConfigServiceBase\";\nvar ManualPollConfigService = /** @class */ (function (_super) {\n __extends(ManualPollConfigService, _super);\n function ManualPollConfigService(configFetcher, options) {\n var _this = _super.call(this, configFetcher, options) || this;\n var initialCacheSyncUp = _this.syncUpWithCache();\n _this.readyPromise = _this.getReadyPromise(initialCacheSyncUp, function (initialCacheSyncUp) { return __awaiter(_this, void 0, void 0, function () { var _a; return __generator(this, function (_b) {\n switch (_b.label) {\n case 0:\n _a = this.getCacheState;\n return [4 /*yield*/, initialCacheSyncUp];\n case 1: return [2 /*return*/, _a.apply(this, [_b.sent()])];\n }\n }); }); });\n return _this;\n }\n ManualPollConfigService.prototype.getCacheState = function (cachedConfig) {\n if (cachedConfig.isEmpty) {\n return ClientCacheState.NoFlagData;\n }\n return ClientCacheState.HasCachedFlagDataOnly;\n };\n ManualPollConfigService.prototype.getConfig = function () {\n return __awaiter(this, void 0, void 0, function () {\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n this.options.logger.debug(\"ManualPollService.getConfig() called.\");\n return [4 /*yield*/, this.options.cache.get(this.cacheKey)];\n case 1: return [2 /*return*/, _a.sent()];\n }\n });\n });\n };\n ManualPollConfigService.prototype.refreshConfigAsync = function () {\n this.options.logger.debug(\"ManualPollService.refreshConfigAsync() called.\");\n return _super.prototype.refreshConfigAsync.call(this);\n };\n return ManualPollConfigService;\n}(ConfigServiceBase));\nexport { ManualPollConfigService };\n","import { PrerequisiteFlagComparator, SegmentComparator, UserComparator } from \"./ConfigJson\";\nimport { isAllowedValue } from \"./RolloutEvaluator\";\nimport { formatStringList, isArray, isStringArray } from \"./Utils\";\nvar invalidValuePlaceholder = \"\";\nvar invalidNamePlaceholder = \"\";\nvar invalidOperatorPlaceholder = \"\";\nvar invalidReferencePlaceholder = \"\";\nvar stringListMaxLength = 10;\nvar EvaluateLogBuilder = /** @class */ (function () {\n function EvaluateLogBuilder(eol) {\n this.eol = eol;\n this.log = \"\";\n this.indent = \"\";\n }\n EvaluateLogBuilder.prototype.resetIndent = function () {\n this.indent = \"\";\n return this;\n };\n EvaluateLogBuilder.prototype.increaseIndent = function () {\n this.indent += \" \";\n return this;\n };\n EvaluateLogBuilder.prototype.decreaseIndent = function () {\n this.indent = this.indent.slice(0, -2);\n return this;\n };\n EvaluateLogBuilder.prototype.newLine = function (text) {\n this.log += this.eol + this.indent + (text !== null && text !== void 0 ? text : \"\");\n return this;\n };\n EvaluateLogBuilder.prototype.append = function (text) {\n this.log += text;\n return this;\n };\n EvaluateLogBuilder.prototype.toString = function () {\n return this.log;\n };\n EvaluateLogBuilder.prototype.appendUserConditionCore = function (comparisonAttribute, comparator, comparisonValue) {\n return this.append(\"User.\" + comparisonAttribute + \" \" + formatUserComparator(comparator) + \" '\" + (comparisonValue !== null && comparisonValue !== void 0 ? comparisonValue : invalidValuePlaceholder) + \"'\");\n };\n EvaluateLogBuilder.prototype.appendUserConditionString = function (comparisonAttribute, comparator, comparisonValue, isSensitive) {\n if (typeof comparisonValue !== \"string\") {\n return this.appendUserConditionCore(comparisonAttribute, comparator);\n }\n return this.appendUserConditionCore(comparisonAttribute, comparator, !isSensitive ? comparisonValue : \"\");\n };\n EvaluateLogBuilder.prototype.appendUserConditionStringList = function (comparisonAttribute, comparator, comparisonValue, isSensitive) {\n if (!isStringArray(comparisonValue)) {\n return this.appendUserConditionCore(comparisonAttribute, comparator);\n }\n var valueText = \"value\", valuesText = \"values\";\n var comparatorFormatted = formatUserComparator(comparator);\n if (isSensitive) {\n return this.append(\"User.\" + comparisonAttribute + \" \" + comparatorFormatted + \" [<\" + comparisonValue.length + \" hashed \" + (comparisonValue.length === 1 ? valueText : valuesText) + \">]\");\n }\n else {\n var comparisonValueFormatted = formatStringList(comparisonValue, stringListMaxLength, function (count) { return \", ... <\" + count + \" more \" + (count === 1 ? valueText : valuesText) + \">\"; });\n return this.append(\"User.\" + comparisonAttribute + \" \" + comparatorFormatted + \" [\" + comparisonValueFormatted + \"]\");\n }\n };\n EvaluateLogBuilder.prototype.appendUserConditionNumber = function (comparisonAttribute, comparator, comparisonValue, isDateTime) {\n if (typeof comparisonValue !== \"number\") {\n return this.appendUserConditionCore(comparisonAttribute, comparator);\n }\n var comparatorFormatted = formatUserComparator(comparator);\n var date;\n return isDateTime && !isNaN((date = new Date(comparisonValue * 1000))) // see https://stackoverflow.com/a/1353711/8656352\n ? this.append(\"User.\" + comparisonAttribute + \" \" + comparatorFormatted + \" '\" + comparisonValue + \"' (\" + date.toISOString() + \" UTC)\")\n : this.append(\"User.\" + comparisonAttribute + \" \" + comparatorFormatted + \" '\" + comparisonValue + \"'\");\n };\n EvaluateLogBuilder.prototype.appendUserCondition = function (condition) {\n var comparisonAttribute = typeof condition.comparisonAttribute === \"string\" ? condition.comparisonAttribute : invalidNamePlaceholder;\n var comparator = condition.comparator;\n switch (condition.comparator) {\n case UserComparator.TextIsOneOf:\n case UserComparator.TextIsNotOneOf:\n case UserComparator.TextContainsAnyOf:\n case UserComparator.TextNotContainsAnyOf:\n case UserComparator.SemVerIsOneOf:\n case UserComparator.SemVerIsNotOneOf:\n case UserComparator.TextStartsWithAnyOf:\n case UserComparator.TextNotStartsWithAnyOf:\n case UserComparator.TextEndsWithAnyOf:\n case UserComparator.TextNotEndsWithAnyOf:\n case UserComparator.ArrayContainsAnyOf:\n case UserComparator.ArrayNotContainsAnyOf:\n return this.appendUserConditionStringList(comparisonAttribute, comparator, condition.comparisonValue, false);\n case UserComparator.SemVerLess:\n case UserComparator.SemVerLessOrEquals:\n case UserComparator.SemVerGreater:\n case UserComparator.SemVerGreaterOrEquals:\n case UserComparator.TextEquals:\n case UserComparator.TextNotEquals:\n return this.appendUserConditionString(comparisonAttribute, comparator, condition.comparisonValue, false);\n case UserComparator.NumberEquals:\n case UserComparator.NumberNotEquals:\n case UserComparator.NumberLess:\n case UserComparator.NumberLessOrEquals:\n case UserComparator.NumberGreater:\n case UserComparator.NumberGreaterOrEquals:\n return this.appendUserConditionNumber(comparisonAttribute, comparator, condition.comparisonValue);\n case UserComparator.SensitiveTextIsOneOf:\n case UserComparator.SensitiveTextIsNotOneOf:\n case UserComparator.SensitiveTextStartsWithAnyOf:\n case UserComparator.SensitiveTextNotStartsWithAnyOf:\n case UserComparator.SensitiveTextEndsWithAnyOf:\n case UserComparator.SensitiveTextNotEndsWithAnyOf:\n case UserComparator.SensitiveArrayContainsAnyOf:\n case UserComparator.SensitiveArrayNotContainsAnyOf:\n return this.appendUserConditionStringList(comparisonAttribute, comparator, condition.comparisonValue, true);\n case UserComparator.DateTimeBefore:\n case UserComparator.DateTimeAfter:\n return this.appendUserConditionNumber(comparisonAttribute, comparator, condition.comparisonValue, true);\n case UserComparator.SensitiveTextEquals:\n case UserComparator.SensitiveTextNotEquals:\n return this.appendUserConditionString(comparisonAttribute, comparator, condition.comparisonValue, true);\n default:\n return this.appendUserConditionCore(comparisonAttribute, comparator, condition.comparisonValue);\n }\n };\n EvaluateLogBuilder.prototype.appendPrerequisiteFlagCondition = function (condition, settings) {\n var prerequisiteFlagKey = typeof condition.prerequisiteFlagKey !== \"string\" ? invalidNamePlaceholder :\n !(condition.prerequisiteFlagKey in settings) ? invalidReferencePlaceholder :\n condition.prerequisiteFlagKey;\n var comparator = condition.comparator;\n var comparisonValue = condition.comparisonValue;\n return this.append(\"Flag '\" + prerequisiteFlagKey + \"' \" + formatPrerequisiteFlagComparator(comparator) + \" '\" + valueToString(comparisonValue) + \"'\");\n };\n EvaluateLogBuilder.prototype.appendSegmentCondition = function (condition) {\n var segment = condition.segment;\n var comparator = condition.comparator;\n var segmentName = segment == null ? invalidReferencePlaceholder :\n typeof segment.name !== \"string\" || !segment.name ? invalidNamePlaceholder :\n segment.name;\n return this.append(\"User \" + formatSegmentComparator(comparator) + \" '\" + segmentName + \"'\");\n };\n EvaluateLogBuilder.prototype.appendConditionResult = function (result) {\n return this.append(\"\" + result);\n };\n EvaluateLogBuilder.prototype.appendConditionConsequence = function (result) {\n this.append(\" => \").appendConditionResult(result);\n return result ? this : this.append(\", skipping the remaining AND conditions\");\n };\n EvaluateLogBuilder.prototype.appendTargetingRuleThenPart = function (targetingRule, newLine) {\n (newLine ? this.newLine() : this.append(\" \"))\n .append(\"THEN\");\n var then = targetingRule.then;\n return this.append(!isArray(then) ? \" '\" + valueToString(then.value) + \"'\" : \" % options\");\n };\n EvaluateLogBuilder.prototype.appendTargetingRuleConsequence = function (targetingRule, isMatchOrError, newLine) {\n this.increaseIndent();\n this.appendTargetingRuleThenPart(targetingRule, newLine)\n .append(\" => \").append(isMatchOrError === true ? \"MATCH, applying rule\" : isMatchOrError === false ? \"no match\" : isMatchOrError);\n return this.decreaseIndent();\n };\n return EvaluateLogBuilder;\n}());\nexport { EvaluateLogBuilder };\nexport function formatUserComparator(comparator) {\n switch (comparator) {\n case UserComparator.TextIsOneOf:\n case UserComparator.SensitiveTextIsOneOf:\n case UserComparator.SemVerIsOneOf: return \"IS ONE OF\";\n case UserComparator.TextIsNotOneOf:\n case UserComparator.SensitiveTextIsNotOneOf:\n case UserComparator.SemVerIsNotOneOf: return \"IS NOT ONE OF\";\n case UserComparator.TextContainsAnyOf: return \"CONTAINS ANY OF\";\n case UserComparator.TextNotContainsAnyOf: return \"NOT CONTAINS ANY OF\";\n case UserComparator.SemVerLess:\n case UserComparator.NumberLess: return \"<\";\n case UserComparator.SemVerLessOrEquals:\n case UserComparator.NumberLessOrEquals: return \"<=\";\n case UserComparator.SemVerGreater:\n case UserComparator.NumberGreater: return \">\";\n case UserComparator.SemVerGreaterOrEquals:\n case UserComparator.NumberGreaterOrEquals: return \">=\";\n case UserComparator.NumberEquals: return \"=\";\n case UserComparator.NumberNotEquals: return \"!=\";\n case UserComparator.DateTimeBefore: return \"BEFORE\";\n case UserComparator.DateTimeAfter: return \"AFTER\";\n case UserComparator.TextEquals:\n case UserComparator.SensitiveTextEquals: return \"EQUALS\";\n case UserComparator.TextNotEquals:\n case UserComparator.SensitiveTextNotEquals: return \"NOT EQUALS\";\n case UserComparator.TextStartsWithAnyOf:\n case UserComparator.SensitiveTextStartsWithAnyOf: return \"STARTS WITH ANY OF\";\n case UserComparator.TextNotStartsWithAnyOf:\n case UserComparator.SensitiveTextNotStartsWithAnyOf: return \"NOT STARTS WITH ANY OF\";\n case UserComparator.TextEndsWithAnyOf:\n case UserComparator.SensitiveTextEndsWithAnyOf: return \"ENDS WITH ANY OF\";\n case UserComparator.TextNotEndsWithAnyOf:\n case UserComparator.SensitiveTextNotEndsWithAnyOf: return \"NOT ENDS WITH ANY OF\";\n case UserComparator.ArrayContainsAnyOf:\n case UserComparator.SensitiveArrayContainsAnyOf: return \"ARRAY CONTAINS ANY OF\";\n case UserComparator.ArrayNotContainsAnyOf:\n case UserComparator.SensitiveArrayNotContainsAnyOf: return \"ARRAY NOT CONTAINS ANY OF\";\n default: return invalidOperatorPlaceholder;\n }\n}\nexport function formatUserCondition(condition) {\n return new EvaluateLogBuilder(\"\").appendUserCondition(condition).toString();\n}\nexport function formatPrerequisiteFlagComparator(comparator) {\n switch (comparator) {\n case PrerequisiteFlagComparator.Equals: return \"EQUALS\";\n case PrerequisiteFlagComparator.NotEquals: return \"NOT EQUALS\";\n default: return invalidOperatorPlaceholder;\n }\n}\nexport function formatSegmentComparator(comparator) {\n switch (comparator) {\n case SegmentComparator.IsIn: return \"IS IN SEGMENT\";\n case SegmentComparator.IsNotIn: return \"IS NOT IN SEGMENT\";\n default: return invalidOperatorPlaceholder;\n }\n}\nexport function valueToString(value) {\n return isAllowedValue(value) ? value.toString() : invalidValuePlaceholder;\n}\n","var numeric = /^[0-9]+$/;\nvar compareIdentifiers = function (a, b) {\n var anum = numeric.test(a);\n var bnum = numeric.test(b);\n if (anum && bnum) {\n a = +a;\n b = +b;\n }\n return a === b ? 0\n : (anum && !bnum) ? -1\n : (bnum && !anum) ? 1\n : a < b ? -1\n : 1;\n};\nvar rcompareIdentifiers = function (a, b) { return compareIdentifiers(b, a); };\nvar SEMVER_SPEC_VERSION = '2.0.0';\nvar MAX_LENGTH = 256;\nvar MAX_SAFE_INTEGER = Number.MAX_SAFE_INTEGER ||\n /* istanbul ignore next */ 9007199254740991;\nvar MAX_SAFE_COMPONENT_LENGTH = 16;\n// The actual regexps go on exports.re\nvar re = [];\nvar src = [];\nvar t = {};\nvar R = 0;\nvar createToken = function (name, value) {\n var index = R++;\n t[name] = index;\n src[index] = value;\n re[index] = new RegExp(value);\n};\ncreateToken('NUMERICIDENTIFIER', '0|[1-9]\\\\d*');\ncreateToken('NUMERICIDENTIFIERLOOSE', '[0-9]+');\ncreateToken('NONNUMERICIDENTIFIER', '\\\\d*[a-zA-Z-][a-zA-Z0-9-]*');\ncreateToken('MAINVERSION', \"(\" + src[t['NUMERICIDENTIFIER']] + \")\\\\.\" +\n (\"(\" + src[t['NUMERICIDENTIFIER']] + \")\\\\.\") +\n (\"(\" + src[t['NUMERICIDENTIFIER']] + \")\"));\ncreateToken('MAINVERSIONLOOSE', \"(\" + src[t['NUMERICIDENTIFIERLOOSE']] + \")\\\\.\" +\n (\"(\" + src[t['NUMERICIDENTIFIERLOOSE']] + \")\\\\.\") +\n (\"(\" + src[t['NUMERICIDENTIFIERLOOSE']] + \")\"));\ncreateToken('PRERELEASEIDENTIFIER', \"(?:\" + src[t['NUMERICIDENTIFIER']] + \"|\" + src[t['NONNUMERICIDENTIFIER']] + \")\");\ncreateToken('PRERELEASEIDENTIFIERLOOSE', \"(?:\" + src[t['NUMERICIDENTIFIERLOOSE']] + \"|\" + src[t['NONNUMERICIDENTIFIER']] + \")\");\ncreateToken('PRERELEASE', \"(?:-(\" + src[t['PRERELEASEIDENTIFIER']] + \"(?:\\\\.\" + src[t['PRERELEASEIDENTIFIER']] + \")*))\");\ncreateToken('PRERELEASELOOSE', \"(?:-?(\" + src[t['PRERELEASEIDENTIFIERLOOSE']] + \"(?:\\\\.\" + src[t['PRERELEASEIDENTIFIERLOOSE']] + \")*))\");\ncreateToken('BUILDIDENTIFIER', '[0-9A-Za-z-]+');\ncreateToken('BUILD', \"(?:\\\\+(\" + src[t['BUILDIDENTIFIER']] + \"(?:\\\\.\" + src[t['BUILDIDENTIFIER']] + \")*))\");\ncreateToken('FULLPLAIN', \"v?\" + src[t['MAINVERSION']] + src[t['PRERELEASE']] + \"?\" + src[t['BUILD']] + \"?\");\ncreateToken('FULL', \"^\" + src[t['FULLPLAIN']] + \"$\");\ncreateToken('LOOSEPLAIN', \"[v=\\\\s]*\" + src[t['MAINVERSIONLOOSE']] + src[t['PRERELEASELOOSE']] + \"?\" + src[t['BUILD']] + \"?\");\ncreateToken('LOOSE', \"^\" + src[t['LOOSEPLAIN']] + \"$\");\nvar SemVer = /** @class */ (function () {\n function SemVer(version, options) {\n if (!options || typeof options !== 'object') {\n options = {\n loose: !!options,\n includePrerelease: false\n };\n }\n if (version instanceof SemVer) {\n if (version.loose === !!options.loose &&\n version.includePrerelease === !!options.includePrerelease) {\n return version;\n }\n else {\n version = version.version;\n }\n }\n else if (typeof version !== 'string') {\n throw new TypeError(\"Invalid Version: \" + version);\n }\n if (version.length > MAX_LENGTH) {\n throw new TypeError(\"version is longer than \" + MAX_LENGTH + \" characters\");\n }\n this.options = options;\n this.loose = !!options.loose;\n // this isn't actually relevant for versions, but keep it so that we\n // don't run into trouble passing this.options around.\n this.includePrerelease = !!options.includePrerelease;\n var m = version.trim().match(options.loose ? re[t['LOOSE']] : re[t['FULL']]);\n if (!m) {\n throw new TypeError(\"Invalid Version: \" + version);\n }\n this.raw = version;\n // these are actually numbers\n this.major = +m[1];\n this.minor = +m[2];\n this.patch = +m[3];\n if (this.major > MAX_SAFE_INTEGER || this.major < 0) {\n throw new TypeError('Invalid major version');\n }\n if (this.minor > MAX_SAFE_INTEGER || this.minor < 0) {\n throw new TypeError('Invalid minor version');\n }\n if (this.patch > MAX_SAFE_INTEGER || this.patch < 0) {\n throw new TypeError('Invalid patch version');\n }\n // numberify any prerelease numeric ids\n if (!m[4]) {\n this.prerelease = [];\n }\n else {\n this.prerelease = m[4].split('.').map(function (id) {\n if (/^[0-9]+$/.test(id)) {\n var num = +id;\n if (num >= 0 && num < MAX_SAFE_INTEGER) {\n return num;\n }\n }\n return id;\n });\n }\n this.build = m[5] ? m[5].split('.') : [];\n this.format();\n }\n SemVer.prototype.format = function () {\n this.version = this.major + \".\" + this.minor + \".\" + this.patch;\n if (this.prerelease.length) {\n this.version += \"-\" + this.prerelease.join('.');\n }\n return this.version;\n };\n SemVer.prototype.toString = function () {\n return this.version;\n };\n SemVer.prototype.compare = function (other) {\n if (!(other instanceof SemVer)) {\n if (typeof other === 'string' && other === this.version) {\n return 0;\n }\n other = new SemVer(other, this.options);\n }\n if (other.version === this.version) {\n return 0;\n }\n return this.compareMain(other) || this.comparePre(other);\n };\n SemVer.prototype.compareMain = function (other) {\n if (!(other instanceof SemVer)) {\n other = new SemVer(other, this.options);\n }\n return (compareIdentifiers(this.major, other.major) ||\n compareIdentifiers(this.minor, other.minor) ||\n compareIdentifiers(this.patch, other.patch));\n };\n SemVer.prototype.comparePre = function (other) {\n if (!(other instanceof SemVer)) {\n other = new SemVer(other, this.options);\n }\n // NOT having a prerelease is > having one\n if (this.prerelease.length && !other.prerelease.length) {\n return -1;\n }\n else if (!this.prerelease.length && other.prerelease.length) {\n return 1;\n }\n else if (!this.prerelease.length && !other.prerelease.length) {\n return 0;\n }\n var i = 0;\n do {\n var a = this.prerelease[i];\n var b = other.prerelease[i];\n if (a === void 0 && b === void 0) {\n return 0;\n }\n else if (b === void 0) {\n return 1;\n }\n else if (a === void 0) {\n return -1;\n }\n else if (a === b) {\n continue;\n }\n else {\n return compareIdentifiers(a, b);\n }\n } while (++i);\n };\n SemVer.prototype.compareBuild = function (other) {\n if (!(other instanceof SemVer)) {\n other = new SemVer(other, this.options);\n }\n var i = 0;\n do {\n var a = this.build[i];\n var b = other.build[i];\n if (a === void 0 && b === void 0) {\n return 0;\n }\n else if (b === void 0) {\n return 1;\n }\n else if (a === void 0) {\n return -1;\n }\n else if (a === b) {\n continue;\n }\n else {\n return compareIdentifiers(a, b);\n }\n } while (++i);\n };\n // preminor will bump the version up to the next minor release, and immediately\n // down to pre-release. premajor and prepatch work the same way.\n SemVer.prototype.inc = function (release, identifier) {\n switch (release) {\n case 'premajor':\n this.prerelease.length = 0;\n this.patch = 0;\n this.minor = 0;\n this.major++;\n this.inc('pre', identifier);\n break;\n case 'preminor':\n this.prerelease.length = 0;\n this.patch = 0;\n this.minor++;\n this.inc('pre', identifier);\n break;\n case 'prepatch':\n // If this is already a prerelease, it will bump to the next version\n // drop any prereleases that might already exist, since they are not\n // relevant at this point.\n this.prerelease.length = 0;\n this.inc('patch', identifier);\n this.inc('pre', identifier);\n break;\n // If the input is a non-prerelease version, this acts the same as\n // prepatch.\n case 'prerelease':\n if (this.prerelease.length === 0) {\n this.inc('patch', identifier);\n }\n this.inc('pre', identifier);\n break;\n case 'major':\n // If this is a pre-major version, bump up to the same major version.\n // Otherwise increment major.\n // 1.0.0-5 bumps to 1.0.0\n // 1.1.0 bumps to 2.0.0\n if (this.minor !== 0 ||\n this.patch !== 0 ||\n this.prerelease.length === 0) {\n this.major++;\n }\n this.minor = 0;\n this.patch = 0;\n this.prerelease = [];\n break;\n case 'minor':\n // If this is a pre-minor version, bump up to the same minor version.\n // Otherwise increment minor.\n // 1.2.0-5 bumps to 1.2.0\n // 1.2.1 bumps to 1.3.0\n if (this.patch !== 0 || this.prerelease.length === 0) {\n this.minor++;\n }\n this.patch = 0;\n this.prerelease = [];\n break;\n case 'patch':\n // If this is not a pre-release version, it will increment the patch.\n // If it is a pre-release it will bump up to the same patch version.\n // 1.2.0-5 patches to 1.2.0\n // 1.2.0 patches to 1.2.1\n if (this.prerelease.length === 0) {\n this.patch++;\n }\n this.prerelease = [];\n break;\n // This probably shouldn't be used publicly.\n // 1.0.0 'pre' would become 1.0.0-0 which is the wrong direction.\n case 'pre':\n if (this.prerelease.length === 0) {\n this.prerelease = [0];\n }\n else {\n var i = this.prerelease.length;\n while (--i >= 0) {\n if (typeof this.prerelease[i] === 'number') {\n this.prerelease[i]++;\n i = -2;\n }\n }\n if (i === -1) {\n // didn't increment anything\n this.prerelease.push(0);\n }\n }\n if (identifier) {\n // 1.2.0-beta.1 bumps to 1.2.0-beta.2,\n // 1.2.0-beta.fooblz or 1.2.0-beta bumps to 1.2.0-beta.0\n if (this.prerelease[0] === identifier) {\n if (isNaN(this.prerelease[1])) {\n this.prerelease = [identifier, 0];\n }\n }\n else {\n this.prerelease = [identifier, 0];\n }\n }\n break;\n default:\n throw new Error(\"invalid increment argument: \" + release);\n }\n this.format();\n this.raw = this.version;\n return this;\n };\n return SemVer;\n}());\nexport var parse = function (version, options) {\n if (!options || typeof options !== 'object') {\n options = {\n loose: !!options,\n includePrerelease: false\n };\n }\n if (version instanceof SemVer) {\n return version;\n }\n if (typeof version !== 'string') {\n return null;\n }\n if (version.length > MAX_LENGTH) {\n return null;\n }\n var r = options.loose ? re[t['LOOSE']] : re[t['FULL']];\n if (!r.test(version)) {\n return null;\n }\n try {\n return new SemVer(version, options);\n }\n catch (er) {\n return null;\n }\n};\n","/**\n * User Object. Contains user attributes which are used for evaluating targeting rules and percentage options.\n * @remarks\n * Please note that the `User` class is not designed to be used as a DTO (data transfer object).\n * (Since the type of the `custom` property is polymorphic, it's not guaranteed that deserializing a serialized instance produces an instance with an identical or even valid data content.)\n **/\nvar User = /** @class */ (function () {\n function User(\n /** The unique identifier of the user or session (e.g. email address, primary key, session ID, etc.) */\n identifier, \n /** Email address of the user. */\n email, \n /** Country of the user. */\n country, \n /**\n * Custom attributes of the user for advanced targeting rule definitions (e.g. user role, subscription type, etc.)\n * @remarks\n * All comparators support `string` values as User Object attribute (in some cases they need to be provided in a specific format though, see below),\n * but some of them also support other types of values. It depends on the comparator how the values will be handled. The following rules apply:\n *\n * **Text-based comparators** (EQUALS, IS ONE OF, etc.)\n * * accept `string` values,\n * * all other values are automatically converted to `string` (a warning will be logged but evaluation will continue as normal).\n *\n * **SemVer-based comparators** (IS ONE OF, <, >=, etc.)\n * * accept `string` values containing a properly formatted, valid semver value,\n * * all other values are considered invalid (a warning will be logged and the currently evaluated targeting rule will be skipped).\n *\n * **Number-based comparators** (=, <, >=, etc.)\n * * accept `number` values,\n * * accept `string` values containing a properly formatted, valid `number` value,\n * * all other values are considered invalid (a warning will be logged and the currently evaluated targeting rule will be skipped).\n *\n * **Date time-based comparators** (BEFORE / AFTER)\n * * accept `Date` values, which are automatically converted to a second-based Unix timestamp,\n * * accept `number` values representing a second-based Unix timestamp,\n * * accept `string` values containing a properly formatted, valid `number` value,\n * * all other values are considered invalid (a warning will be logged and the currently evaluated targeting rule will be skipped).\n *\n * **String array-based comparators** (ARRAY CONTAINS ANY OF / ARRAY NOT CONTAINS ANY OF)\n * * accept arrays of `string`,\n * * accept `string` values containing a valid JSON string which can be deserialized to an array of `string`,\n * * all other values are considered invalid (a warning will be logged and the currently evaluated targeting rule will be skipped).\n **/\n custom) {\n if (custom === void 0) { custom = {}; }\n this.identifier = identifier;\n this.email = email;\n this.country = country;\n this.custom = custom;\n }\n return User;\n}());\nexport { User };\n// NOTE: These functions could be instance methods of the User class, however formerly we suggested `const user = { ... }`-style initialization in the SDK docs,\n// which would lead to \"...is not a function\" errors if we called functions on instances created that way as those don't have the correct prototype.\nexport function getUserAttribute(user, name) {\n var _a, _b;\n switch (name) {\n case \"Identifier\": return (_a = user.identifier) !== null && _a !== void 0 ? _a : \"\";\n case \"Email\": return user.email;\n case \"Country\": return user.country;\n default: return (_b = user.custom) === null || _b === void 0 ? void 0 : _b[name];\n }\n}\nexport function getUserAttributes(user) {\n var _a;\n var result = {};\n var identifierAttribute = \"Identifier\";\n var emailAttribute = \"Email\";\n var countryAttribute = \"Country\";\n result[identifierAttribute] = (_a = user.identifier) !== null && _a !== void 0 ? _a : \"\";\n if (user.email != null) {\n result[emailAttribute] = user.email;\n }\n if (user.country != null) {\n result[countryAttribute] = user.country;\n }\n if (user.custom != null) {\n var wellKnownAttributes = [identifierAttribute, emailAttribute, countryAttribute];\n for (var _i = 0, _b = Object.entries(user.custom); _i < _b.length; _i++) {\n var _c = _b[_i], attributeName = _c[0], attributeValue = _c[1];\n if (attributeValue != null && wellKnownAttributes.indexOf(attributeName) < 0) {\n result[attributeName] = attributeValue;\n }\n }\n }\n return result;\n}\n","import { LogLevel } from \"./ConfigCatLogger\";\nimport { PrerequisiteFlagComparator, SegmentComparator, SettingType, UserComparator } from \"./ConfigJson\";\nimport { EvaluateLogBuilder, formatSegmentComparator, formatUserCondition, valueToString } from \"./EvaluateLogBuilder\";\nimport { sha1, sha256 } from \"./Hash\";\nimport { parse as parseSemVer } from \"./Semver\";\nimport { getUserAttribute, getUserAttributes } from \"./User\";\nimport { errorToString, formatStringList, isArray, isStringArray, parseFloatStrict, utf8Encode } from \"./Utils\";\nvar EvaluateContext = /** @class */ (function () {\n function EvaluateContext(key, setting, user, settings) {\n this.key = key;\n this.setting = setting;\n this.user = user;\n this.settings = settings;\n }\n Object.defineProperty(EvaluateContext.prototype, \"visitedFlags\", {\n get: function () { var _a; return (_a = this.$visitedFlags) !== null && _a !== void 0 ? _a : (this.$visitedFlags = []); },\n enumerable: false,\n configurable: true\n });\n EvaluateContext.forPrerequisiteFlag = function (key, setting, dependentFlagContext) {\n var context = new EvaluateContext(key, setting, dependentFlagContext.user, dependentFlagContext.settings);\n context.$visitedFlags = dependentFlagContext.visitedFlags; // crucial to use the computed property here to make sure the list is created!\n context.logBuilder = dependentFlagContext.logBuilder;\n return context;\n };\n return EvaluateContext;\n}());\nexport { EvaluateContext };\nvar targetingRuleIgnoredMessage = \"The current targeting rule is ignored and the evaluation continues with the next rule.\";\nvar missingUserObjectError = \"cannot evaluate, User Object is missing\";\nvar missingUserAttributeError = function (attributeName) { return \"cannot evaluate, the User.\" + attributeName + \" attribute is missing\"; };\nvar invalidUserAttributeError = function (attributeName, reason) { return \"cannot evaluate, the User.\" + attributeName + \" attribute is invalid (\" + reason + \")\"; };\nvar RolloutEvaluator = /** @class */ (function () {\n function RolloutEvaluator(logger) {\n this.logger = logger;\n }\n RolloutEvaluator.prototype.evaluate = function (defaultValue, context) {\n this.logger.debug(\"RolloutEvaluator.evaluate() called.\");\n var logBuilder = context.logBuilder;\n // Building the evaluation log is expensive, so let's not do it if it wouldn't be logged anyway.\n if (this.logger.isEnabled(LogLevel.Info)) {\n context.logBuilder = logBuilder = new EvaluateLogBuilder(this.logger.eol);\n logBuilder.append(\"Evaluating '\" + context.key + \"'\");\n if (context.user) {\n logBuilder.append(\" for User '\" + JSON.stringify(getUserAttributes(context.user)) + \"'\");\n }\n logBuilder.increaseIndent();\n }\n var returnValue;\n try {\n var result = void 0, isValidReturnValue = void 0;\n if (defaultValue != null) {\n // NOTE: We've already checked earlier in the call chain that the defaultValue is of an allowed type (see also ensureAllowedDefaultValue).\n var settingType = context.setting.type;\n // A negative setting type indicates a setting which comes from a flag override (see also Setting.fromValue).\n if (settingType >= 0 && !isCompatibleValue(defaultValue, settingType)) {\n throw new TypeError(\"The type of a setting must match the type of the specified default value. \"\n + (\"Setting's type was \" + SettingType[settingType] + \" but the default value's type was \" + typeof defaultValue + \". \")\n + (\"Please use a default value which corresponds to the setting type \" + SettingType[settingType] + \". \")\n + \"Learn more: https://configcat.com/docs/sdk-reference/js/#setting-type-mapping\");\n }\n result = this.evaluateSetting(context);\n returnValue = result.selectedValue.value;\n // When a default value other than null or undefined is specified, the return value must have the same type as the default value\n // so that the consistency between TS (compile-time) and JS (run-time) return value types is maintained.\n isValidReturnValue = typeof returnValue === typeof defaultValue;\n }\n else {\n result = this.evaluateSetting(context);\n returnValue = result.selectedValue.value;\n // When the specified default value is null or undefined, the return value can be of whatever allowed type (boolean, string, number).\n isValidReturnValue = isAllowedValue(returnValue);\n }\n if (!isValidReturnValue) {\n handleInvalidReturnValue(returnValue);\n }\n return result;\n }\n catch (err) {\n logBuilder === null || logBuilder === void 0 ? void 0 : logBuilder.resetIndent().increaseIndent();\n returnValue = defaultValue;\n throw err;\n }\n finally {\n if (logBuilder) {\n logBuilder.newLine(\"Returning '\" + returnValue + \"'.\")\n .decreaseIndent();\n this.logger.settingEvaluated(logBuilder.toString());\n }\n }\n };\n RolloutEvaluator.prototype.evaluateSetting = function (context) {\n var evaluateResult;\n var targetingRules = context.setting.targetingRules;\n if (targetingRules.length > 0 && (evaluateResult = this.evaluateTargetingRules(targetingRules, context))) {\n return evaluateResult;\n }\n var percentageOptions = context.setting.percentageOptions;\n if (percentageOptions.length > 0 && (evaluateResult = this.evaluatePercentageOptions(percentageOptions, void 0, context))) {\n return evaluateResult;\n }\n return { selectedValue: context.setting };\n };\n RolloutEvaluator.prototype.evaluateTargetingRules = function (targetingRules, context) {\n var logBuilder = context.logBuilder;\n logBuilder === null || logBuilder === void 0 ? void 0 : logBuilder.newLine(\"Evaluating targeting rules and applying the first match if any:\");\n for (var i = 0; i < targetingRules.length; i++) {\n var targetingRule = targetingRules[i];\n var conditions = targetingRule.conditions;\n var isMatchOrError = this.evaluateConditions(conditions, targetingRule, context.key, context);\n if (isMatchOrError !== true) {\n if (isEvaluationError(isMatchOrError)) {\n logBuilder === null || logBuilder === void 0 ? void 0 : logBuilder.increaseIndent().newLine(targetingRuleIgnoredMessage).decreaseIndent();\n }\n continue;\n }\n if (!isArray(targetingRule.then)) {\n return { selectedValue: targetingRule.then, matchedTargetingRule: targetingRule };\n }\n var percentageOptions = targetingRule.then;\n logBuilder === null || logBuilder === void 0 ? void 0 : logBuilder.increaseIndent();\n var evaluateResult = this.evaluatePercentageOptions(percentageOptions, targetingRule, context);\n if (evaluateResult) {\n logBuilder === null || logBuilder === void 0 ? void 0 : logBuilder.decreaseIndent();\n return evaluateResult;\n }\n logBuilder === null || logBuilder === void 0 ? void 0 : logBuilder.newLine(targetingRuleIgnoredMessage).decreaseIndent();\n }\n };\n RolloutEvaluator.prototype.evaluatePercentageOptions = function (percentageOptions, matchedTargetingRule, context) {\n var _a;\n var logBuilder = context.logBuilder;\n if (!context.user) {\n logBuilder === null || logBuilder === void 0 ? void 0 : logBuilder.newLine(\"Skipping % options because the User Object is missing.\");\n if (!context.isMissingUserObjectLogged) {\n this.logger.userObjectIsMissing(context.key);\n context.isMissingUserObjectLogged = true;\n }\n return;\n }\n var percentageOptionsAttributeName = context.setting.percentageOptionsAttribute;\n var percentageOptionsAttributeValue;\n if (percentageOptionsAttributeName == null) {\n percentageOptionsAttributeName = \"Identifier\";\n percentageOptionsAttributeValue = (_a = context.user.identifier) !== null && _a !== void 0 ? _a : \"\";\n }\n else {\n percentageOptionsAttributeValue = getUserAttribute(context.user, percentageOptionsAttributeName);\n }\n if (percentageOptionsAttributeValue == null) {\n logBuilder === null || logBuilder === void 0 ? void 0 : logBuilder.newLine(\"Skipping % options because the User.\" + percentageOptionsAttributeName + \" attribute is missing.\");\n if (!context.isMissingUserObjectAttributeLogged) {\n this.logger.userObjectAttributeIsMissingPercentage(context.key, percentageOptionsAttributeName);\n context.isMissingUserObjectAttributeLogged = true;\n }\n return;\n }\n logBuilder === null || logBuilder === void 0 ? void 0 : logBuilder.newLine(\"Evaluating % options based on the User.\" + percentageOptionsAttributeName + \" attribute:\");\n var sha1Hash = sha1(context.key + userAttributeValueToString(percentageOptionsAttributeValue));\n var hashValue = parseInt(sha1Hash.substring(0, 7), 16) % 100;\n logBuilder === null || logBuilder === void 0 ? void 0 : logBuilder.newLine(\"- Computing hash in the [0..99] range from User.\" + percentageOptionsAttributeName + \" => \" + hashValue + \" (this value is sticky and consistent across all SDKs)\");\n var bucket = 0;\n for (var i = 0; i < percentageOptions.length; i++) {\n var percentageOption = percentageOptions[i];\n bucket += percentageOption.percentage;\n if (hashValue >= bucket) {\n continue;\n }\n logBuilder === null || logBuilder === void 0 ? void 0 : logBuilder.newLine(\"- Hash value \" + hashValue + \" selects % option \" + (i + 1) + \" (\" + percentageOption.percentage + \"%), '\" + valueToString(percentageOption.value) + \"'.\");\n return { selectedValue: percentageOption, matchedTargetingRule: matchedTargetingRule, matchedPercentageOption: percentageOption };\n }\n throw new Error(\"Sum of percentage option percentages is less than 100.\");\n };\n RolloutEvaluator.prototype.evaluateConditions = function (conditions, targetingRule, contextSalt, context) {\n // The result of a condition evaluation is either match (true) / no match (false) or an error (string).\n var result = true;\n var logBuilder = context.logBuilder;\n var newLineBeforeThen = false;\n logBuilder === null || logBuilder === void 0 ? void 0 : logBuilder.newLine(\"- \");\n for (var i = 0; i < conditions.length; i++) {\n var condition = conditions[i];\n if (logBuilder) {\n if (!i) {\n logBuilder.append(\"IF \")\n .increaseIndent();\n }\n else {\n logBuilder.increaseIndent()\n .newLine(\"AND \");\n }\n }\n switch (condition.type) {\n case \"UserCondition\":\n result = this.evaluateUserCondition(condition, contextSalt, context);\n newLineBeforeThen = conditions.length > 1;\n break;\n case \"PrerequisiteFlagCondition\":\n result = this.evaluatePrerequisiteFlagCondition(condition, context);\n newLineBeforeThen = true;\n break;\n case \"SegmentCondition\":\n result = this.evaluateSegmentCondition(condition, context);\n newLineBeforeThen = !isEvaluationError(result) || result !== missingUserObjectError || conditions.length > 1;\n break;\n default:\n throw new Error(); // execution should never get here\n }\n var success = result === true;\n if (logBuilder) {\n if (!targetingRule || conditions.length > 1) {\n logBuilder.appendConditionConsequence(success);\n }\n logBuilder.decreaseIndent();\n }\n if (!success) {\n break;\n }\n }\n if (targetingRule) {\n logBuilder === null || logBuilder === void 0 ? void 0 : logBuilder.appendTargetingRuleConsequence(targetingRule, result, newLineBeforeThen);\n }\n return result;\n };\n RolloutEvaluator.prototype.evaluateUserCondition = function (condition, contextSalt, context) {\n var logBuilder = context.logBuilder;\n logBuilder === null || logBuilder === void 0 ? void 0 : logBuilder.appendUserCondition(condition);\n if (!context.user) {\n if (!context.isMissingUserObjectLogged) {\n this.logger.userObjectIsMissing(context.key);\n context.isMissingUserObjectLogged = true;\n }\n return missingUserObjectError;\n }\n var userAttributeName = condition.comparisonAttribute;\n var userAttributeValue = getUserAttribute(context.user, userAttributeName);\n if (userAttributeValue == null || userAttributeValue === \"\") { // besides null and undefined, empty string is considered missing value as well\n this.logger.userObjectAttributeIsMissingCondition(formatUserCondition(condition), context.key, userAttributeName);\n return missingUserAttributeError(userAttributeName);\n }\n var text, versionOrError, numberOrError, arrayOrError;\n switch (condition.comparator) {\n case UserComparator.TextEquals:\n case UserComparator.TextNotEquals:\n text = getUserAttributeValueAsText(userAttributeName, userAttributeValue, condition, context.key, this.logger);\n return this.evaluateTextEquals(text, condition.comparisonValue, condition.comparator === UserComparator.TextNotEquals);\n case UserComparator.SensitiveTextEquals:\n case UserComparator.SensitiveTextNotEquals:\n text = getUserAttributeValueAsText(userAttributeName, userAttributeValue, condition, context.key, this.logger);\n return this.evaluateSensitiveTextEquals(text, condition.comparisonValue, context.setting.configJsonSalt, contextSalt, condition.comparator === UserComparator.SensitiveTextNotEquals);\n case UserComparator.TextIsOneOf:\n case UserComparator.TextIsNotOneOf:\n text = getUserAttributeValueAsText(userAttributeName, userAttributeValue, condition, context.key, this.logger);\n return this.evaluateTextIsOneOf(text, condition.comparisonValue, condition.comparator === UserComparator.TextIsNotOneOf);\n case UserComparator.SensitiveTextIsOneOf:\n case UserComparator.SensitiveTextIsNotOneOf:\n text = getUserAttributeValueAsText(userAttributeName, userAttributeValue, condition, context.key, this.logger);\n return this.evaluateSensitiveTextIsOneOf(text, condition.comparisonValue, context.setting.configJsonSalt, contextSalt, condition.comparator === UserComparator.SensitiveTextIsNotOneOf);\n case UserComparator.TextStartsWithAnyOf:\n case UserComparator.TextNotStartsWithAnyOf:\n text = getUserAttributeValueAsText(userAttributeName, userAttributeValue, condition, context.key, this.logger);\n return this.evaluateTextSliceEqualsAnyOf(text, condition.comparisonValue, true, condition.comparator === UserComparator.TextNotStartsWithAnyOf);\n case UserComparator.SensitiveTextStartsWithAnyOf:\n case UserComparator.SensitiveTextNotStartsWithAnyOf:\n text = getUserAttributeValueAsText(userAttributeName, userAttributeValue, condition, context.key, this.logger);\n return this.evaluateSensitiveTextSliceEqualsAnyOf(text, condition.comparisonValue, context.setting.configJsonSalt, contextSalt, true, condition.comparator === UserComparator.SensitiveTextNotStartsWithAnyOf);\n case UserComparator.TextEndsWithAnyOf:\n case UserComparator.TextNotEndsWithAnyOf:\n text = getUserAttributeValueAsText(userAttributeName, userAttributeValue, condition, context.key, this.logger);\n return this.evaluateTextSliceEqualsAnyOf(text, condition.comparisonValue, false, condition.comparator === UserComparator.TextNotEndsWithAnyOf);\n case UserComparator.SensitiveTextEndsWithAnyOf:\n case UserComparator.SensitiveTextNotEndsWithAnyOf:\n text = getUserAttributeValueAsText(userAttributeName, userAttributeValue, condition, context.key, this.logger);\n return this.evaluateSensitiveTextSliceEqualsAnyOf(text, condition.comparisonValue, context.setting.configJsonSalt, contextSalt, false, condition.comparator === UserComparator.SensitiveTextNotEndsWithAnyOf);\n case UserComparator.TextContainsAnyOf:\n case UserComparator.TextNotContainsAnyOf:\n text = getUserAttributeValueAsText(userAttributeName, userAttributeValue, condition, context.key, this.logger);\n return this.evaluateTextContainsAnyOf(text, condition.comparisonValue, condition.comparator === UserComparator.TextNotContainsAnyOf);\n case UserComparator.SemVerIsOneOf:\n case UserComparator.SemVerIsNotOneOf:\n versionOrError = getUserAttributeValueAsSemVer(userAttributeName, userAttributeValue, condition, context.key, this.logger);\n return typeof versionOrError !== \"string\"\n ? this.evaluateSemVerIsOneOf(versionOrError, condition.comparisonValue, condition.comparator === UserComparator.SemVerIsNotOneOf)\n : versionOrError;\n case UserComparator.SemVerLess:\n case UserComparator.SemVerLessOrEquals:\n case UserComparator.SemVerGreater:\n case UserComparator.SemVerGreaterOrEquals:\n versionOrError = getUserAttributeValueAsSemVer(userAttributeName, userAttributeValue, condition, context.key, this.logger);\n return typeof versionOrError !== \"string\"\n ? this.evaluateSemVerRelation(versionOrError, condition.comparator, condition.comparisonValue)\n : versionOrError;\n case UserComparator.NumberEquals:\n case UserComparator.NumberNotEquals:\n case UserComparator.NumberLess:\n case UserComparator.NumberLessOrEquals:\n case UserComparator.NumberGreater:\n case UserComparator.NumberGreaterOrEquals:\n numberOrError = getUserAttributeValueAsNumber(userAttributeName, userAttributeValue, condition, context.key, this.logger);\n return typeof numberOrError !== \"string\"\n ? this.evaluateNumberRelation(numberOrError, condition.comparator, condition.comparisonValue)\n : numberOrError;\n case UserComparator.DateTimeBefore:\n case UserComparator.DateTimeAfter:\n numberOrError = getUserAttributeValueAsUnixTimeSeconds(userAttributeName, userAttributeValue, condition, context.key, this.logger);\n return typeof numberOrError !== \"string\"\n ? this.evaluateDateTimeRelation(numberOrError, condition.comparisonValue, condition.comparator === UserComparator.DateTimeBefore)\n : numberOrError;\n case UserComparator.ArrayContainsAnyOf:\n case UserComparator.ArrayNotContainsAnyOf:\n arrayOrError = getUserAttributeValueAsStringArray(userAttributeName, userAttributeValue, condition, context.key, this.logger);\n return typeof arrayOrError !== \"string\"\n ? this.evaluateArrayContainsAnyOf(arrayOrError, condition.comparisonValue, condition.comparator === UserComparator.ArrayNotContainsAnyOf)\n : arrayOrError;\n case UserComparator.SensitiveArrayContainsAnyOf:\n case UserComparator.SensitiveArrayNotContainsAnyOf:\n arrayOrError = getUserAttributeValueAsStringArray(userAttributeName, userAttributeValue, condition, context.key, this.logger);\n return typeof arrayOrError !== \"string\"\n ? this.evaluateSensitiveArrayContainsAnyOf(arrayOrError, condition.comparisonValue, context.setting.configJsonSalt, contextSalt, condition.comparator === UserComparator.SensitiveArrayNotContainsAnyOf)\n : arrayOrError;\n default:\n throw new Error(); // execution should never get here (unless there is an error in the config JSON)\n }\n };\n RolloutEvaluator.prototype.evaluateTextEquals = function (text, comparisonValue, negate) {\n return (text === comparisonValue) !== negate;\n };\n RolloutEvaluator.prototype.evaluateSensitiveTextEquals = function (text, comparisonValue, configJsonSalt, contextSalt, negate) {\n var hash = hashComparisonValue(text, configJsonSalt, contextSalt);\n return (hash === comparisonValue) !== negate;\n };\n RolloutEvaluator.prototype.evaluateTextIsOneOf = function (text, comparisonValues, negate) {\n // NOTE: Array.prototype.indexOf uses strict equality.\n var result = comparisonValues.indexOf(text) >= 0;\n return result !== negate;\n };\n RolloutEvaluator.prototype.evaluateSensitiveTextIsOneOf = function (text, comparisonValues, configJsonSalt, contextSalt, negate) {\n var hash = hashComparisonValue(text, configJsonSalt, contextSalt);\n // NOTE: Array.prototype.indexOf uses strict equality.\n var result = comparisonValues.indexOf(hash) >= 0;\n return result !== negate;\n };\n RolloutEvaluator.prototype.evaluateTextSliceEqualsAnyOf = function (text, comparisonValues, startsWith, negate) {\n for (var i = 0; i < comparisonValues.length; i++) {\n var item = comparisonValues[i];\n if (text.length < item.length) {\n continue;\n }\n // NOTE: String.prototype.startsWith/endsWith were introduced after ES5. We'd rather work around them instead of polyfilling them.\n var result = (startsWith ? text.lastIndexOf(item, 0) : text.indexOf(item, text.length - item.length)) >= 0;\n if (result) {\n return !negate;\n }\n }\n return negate;\n };\n RolloutEvaluator.prototype.evaluateSensitiveTextSliceEqualsAnyOf = function (text, comparisonValues, configJsonSalt, contextSalt, startsWith, negate) {\n var textUtf8 = utf8Encode(text);\n for (var i = 0; i < comparisonValues.length; i++) {\n var item = comparisonValues[i];\n var index = item.indexOf(\"_\");\n var sliceLength = parseInt(item.slice(0, index));\n if (textUtf8.length < sliceLength) {\n continue;\n }\n var sliceUtf8 = startsWith ? textUtf8.slice(0, sliceLength) : textUtf8.slice(textUtf8.length - sliceLength);\n var hash = hashComparisonValueSlice(sliceUtf8, configJsonSalt, contextSalt);\n var result = hash === item.slice(index + 1);\n if (result) {\n return !negate;\n }\n }\n return negate;\n };\n RolloutEvaluator.prototype.evaluateTextContainsAnyOf = function (text, comparisonValues, negate) {\n for (var i = 0; i < comparisonValues.length; i++) {\n if (text.indexOf(comparisonValues[i]) >= 0) {\n return !negate;\n }\n }\n return negate;\n };\n RolloutEvaluator.prototype.evaluateSemVerIsOneOf = function (version, comparisonValues, negate) {\n var result = false;\n for (var i = 0; i < comparisonValues.length; i++) {\n var item = comparisonValues[i];\n // NOTE: Previous versions of the evaluation algorithm ignore empty comparison values.\n // We keep this behavior for backward compatibility.\n if (!item.length) {\n continue;\n }\n var version2 = parseSemVer(item.trim());\n if (!version2) {\n // NOTE: Previous versions of the evaluation algorithm ignored invalid comparison values.\n // We keep this behavior for backward compatibility.\n return false;\n }\n if (!result && version.compare(version2) === 0) {\n // NOTE: Previous versions of the evaluation algorithm require that\n // none of the comparison values are empty or invalid, that is, we can't stop when finding a match.\n // We keep this behavior for backward compatibility.\n result = true;\n }\n }\n return result !== negate;\n };\n RolloutEvaluator.prototype.evaluateSemVerRelation = function (version, comparator, comparisonValue) {\n var version2 = parseSemVer(comparisonValue.trim());\n if (!version2) {\n return false;\n }\n var comparisonResult = version.compare(version2);\n switch (comparator) {\n case UserComparator.SemVerLess: return comparisonResult < 0;\n case UserComparator.SemVerLessOrEquals: return comparisonResult <= 0;\n case UserComparator.SemVerGreater: return comparisonResult > 0;\n case UserComparator.SemVerGreaterOrEquals: return comparisonResult >= 0;\n }\n };\n RolloutEvaluator.prototype.evaluateNumberRelation = function (number, comparator, comparisonValue) {\n switch (comparator) {\n case UserComparator.NumberEquals: return number === comparisonValue;\n case UserComparator.NumberNotEquals: return number !== comparisonValue;\n case UserComparator.NumberLess: return number < comparisonValue;\n case UserComparator.NumberLessOrEquals: return number <= comparisonValue;\n case UserComparator.NumberGreater: return number > comparisonValue;\n case UserComparator.NumberGreaterOrEquals: return number >= comparisonValue;\n }\n };\n RolloutEvaluator.prototype.evaluateDateTimeRelation = function (number, comparisonValue, before) {\n return before ? number < comparisonValue : number > comparisonValue;\n };\n RolloutEvaluator.prototype.evaluateArrayContainsAnyOf = function (array, comparisonValues, negate) {\n for (var i = 0; i < array.length; i++) {\n // NOTE: Array.prototype.indexOf uses strict equality.\n var result = comparisonValues.indexOf(array[i]) >= 0;\n if (result) {\n return !negate;\n }\n }\n return negate;\n };\n RolloutEvaluator.prototype.evaluateSensitiveArrayContainsAnyOf = function (array, comparisonValues, configJsonSalt, contextSalt, negate) {\n for (var i = 0; i < array.length; i++) {\n var hash = hashComparisonValue(array[i], configJsonSalt, contextSalt);\n // NOTE: Array.prototype.indexOf uses strict equality.\n var result = comparisonValues.indexOf(hash) >= 0;\n if (result) {\n return !negate;\n }\n }\n return negate;\n };\n RolloutEvaluator.prototype.evaluatePrerequisiteFlagCondition = function (condition, context) {\n var logBuilder = context.logBuilder;\n logBuilder === null || logBuilder === void 0 ? void 0 : logBuilder.appendPrerequisiteFlagCondition(condition, context.settings);\n var prerequisiteFlagKey = condition.prerequisiteFlagKey;\n var prerequisiteFlag = context.settings[prerequisiteFlagKey];\n context.visitedFlags.push(context.key);\n if (context.visitedFlags.indexOf(prerequisiteFlagKey) >= 0) {\n context.visitedFlags.push(prerequisiteFlagKey);\n var dependencyCycle = formatStringList(context.visitedFlags, void 0, void 0, \" -> \");\n throw new Error(\"Circular dependency detected between the following depending flags: \" + dependencyCycle + \".\");\n }\n var prerequisiteFlagContext = EvaluateContext.forPrerequisiteFlag(prerequisiteFlagKey, prerequisiteFlag, context);\n logBuilder === null || logBuilder === void 0 ? void 0 : logBuilder.newLine(\"(\").increaseIndent().newLine(\"Evaluating prerequisite flag '\" + prerequisiteFlagKey + \"':\");\n var prerequisiteFlagEvaluateResult = this.evaluateSetting(prerequisiteFlagContext);\n context.visitedFlags.pop();\n var prerequisiteFlagValue = prerequisiteFlagEvaluateResult.selectedValue.value;\n if (typeof prerequisiteFlagValue !== typeof condition.comparisonValue) {\n if (isAllowedValue(prerequisiteFlagValue)) {\n throw new Error(\"Type mismatch between comparison value '\" + condition.comparisonValue + \"' and prerequisite flag '\" + prerequisiteFlagKey + \"'.\");\n }\n else {\n handleInvalidReturnValue(prerequisiteFlagValue);\n }\n }\n var result;\n switch (condition.comparator) {\n case PrerequisiteFlagComparator.Equals:\n result = prerequisiteFlagValue === condition.comparisonValue;\n break;\n case PrerequisiteFlagComparator.NotEquals:\n result = prerequisiteFlagValue !== condition.comparisonValue;\n break;\n default:\n throw new Error(); // execution should never get here (unless there is an error in the config JSON)\n }\n logBuilder === null || logBuilder === void 0 ? void 0 : logBuilder.newLine(\"Prerequisite flag evaluation result: '\" + valueToString(prerequisiteFlagValue) + \"'.\").newLine(\"Condition (\").appendPrerequisiteFlagCondition(condition, context.settings).append(\") evaluates to \").appendConditionResult(result).append(\".\").decreaseIndent().newLine(\")\");\n return result;\n };\n RolloutEvaluator.prototype.evaluateSegmentCondition = function (condition, context) {\n var logBuilder = context.logBuilder;\n logBuilder === null || logBuilder === void 0 ? void 0 : logBuilder.appendSegmentCondition(condition);\n if (!context.user) {\n if (!context.isMissingUserObjectLogged) {\n this.logger.userObjectIsMissing(context.key);\n context.isMissingUserObjectLogged = true;\n }\n return missingUserObjectError;\n }\n var segment = condition.segment;\n logBuilder === null || logBuilder === void 0 ? void 0 : logBuilder.newLine(\"(\").increaseIndent().newLine(\"Evaluating segment '\" + segment.name + \"':\");\n var segmentResult = this.evaluateConditions(segment.conditions, void 0, segment.name, context);\n var result = segmentResult;\n if (!isEvaluationError(result)) {\n switch (condition.comparator) {\n case SegmentComparator.IsIn:\n break;\n case SegmentComparator.IsNotIn:\n result = !result;\n break;\n default:\n throw new Error(); // execution should never get here (unless there is an error in the config JSON)\n }\n }\n if (logBuilder) {\n logBuilder.newLine(\"Segment evaluation result: \");\n (!isEvaluationError(result)\n ? logBuilder.append(\"User \" + formatSegmentComparator(segmentResult ? SegmentComparator.IsIn : SegmentComparator.IsNotIn))\n : logBuilder.append(result))\n .append(\".\");\n logBuilder.newLine(\"Condition (\").appendSegmentCondition(condition).append(\")\");\n (!isEvaluationError(result)\n ? logBuilder.append(\" evaluates to \").appendConditionResult(result)\n : logBuilder.append(\" failed to evaluate\"))\n .append(\".\");\n logBuilder\n .decreaseIndent()\n .newLine(\")\");\n }\n return result;\n };\n return RolloutEvaluator;\n}());\nexport { RolloutEvaluator };\nfunction isEvaluationError(isMatchOrError) {\n return typeof isMatchOrError === \"string\";\n}\nfunction hashComparisonValue(value, configJsonSalt, contextSalt) {\n return hashComparisonValueSlice(utf8Encode(value), configJsonSalt, contextSalt);\n}\nfunction hashComparisonValueSlice(sliceUtf8, configJsonSalt, contextSalt) {\n return sha256(sliceUtf8 + utf8Encode(configJsonSalt) + utf8Encode(contextSalt));\n}\nfunction userAttributeValueToString(userAttributeValue) {\n return typeof userAttributeValue === \"string\" ? userAttributeValue :\n userAttributeValue instanceof Date ? (userAttributeValue.getTime() / 1000) + \"\" :\n isStringArray(userAttributeValue) ? JSON.stringify(userAttributeValue) :\n userAttributeValue + \"\";\n}\nfunction getUserAttributeValueAsText(attributeName, attributeValue, condition, key, logger) {\n if (typeof attributeValue === \"string\") {\n return attributeValue;\n }\n attributeValue = userAttributeValueToString(attributeValue);\n logger.userObjectAttributeIsAutoConverted(formatUserCondition(condition), key, attributeName, attributeValue);\n return attributeValue;\n}\nfunction getUserAttributeValueAsSemVer(attributeName, attributeValue, condition, key, logger) {\n var version;\n if (typeof attributeValue === \"string\" && (version = parseSemVer(attributeValue.trim()))) {\n return version;\n }\n return handleInvalidUserAttribute(logger, condition, key, attributeName, \"'\" + attributeValue + \"' is not a valid semantic version\");\n}\nfunction getUserAttributeValueAsNumber(attributeName, attributeValue, condition, key, logger) {\n if (typeof attributeValue === \"number\") {\n return attributeValue;\n }\n var number;\n if (typeof attributeValue === \"string\"\n && (!isNaN(number = parseFloatStrict(attributeValue.replace(\",\", \".\"))) || attributeValue.trim() === \"NaN\")) {\n return number;\n }\n return handleInvalidUserAttribute(logger, condition, key, attributeName, \"'\" + attributeValue + \"' is not a valid decimal number\");\n}\nfunction getUserAttributeValueAsUnixTimeSeconds(attributeName, attributeValue, condition, key, logger) {\n if (attributeValue instanceof Date) {\n return attributeValue.getTime() / 1000;\n }\n if (typeof attributeValue === \"number\") {\n return attributeValue;\n }\n var number;\n if (typeof attributeValue === \"string\"\n && (!isNaN(number = parseFloatStrict(attributeValue.replace(\",\", \".\"))) || attributeValue.trim() === \"NaN\")) {\n return number;\n }\n return handleInvalidUserAttribute(logger, condition, key, attributeName, \"'\" + attributeValue + \"' is not a valid Unix timestamp (number of seconds elapsed since Unix epoch)\");\n}\nfunction getUserAttributeValueAsStringArray(attributeName, attributeValue, condition, key, logger) {\n var stringArray = attributeValue;\n if (typeof stringArray === \"string\") {\n try {\n stringArray = JSON.parse(stringArray);\n }\n catch (err) { /* intentional no-op */ }\n }\n if (isStringArray(stringArray)) {\n return stringArray;\n }\n return handleInvalidUserAttribute(logger, condition, key, attributeName, \"'\" + attributeValue + \"' is not a valid string array\");\n}\nfunction handleInvalidUserAttribute(logger, condition, key, attributeName, reason) {\n logger.userObjectAttributeIsInvalid(formatUserCondition(condition), key, reason, attributeName);\n return invalidUserAttributeError(attributeName, reason);\n}\n/* Helper functions */\nfunction evaluationDetailsFromEvaluateResult(key, evaluateResult, fetchTime, user) {\n return {\n key: key,\n value: evaluateResult.selectedValue.value,\n variationId: evaluateResult.selectedValue.variationId,\n fetchTime: fetchTime,\n user: user,\n isDefaultValue: false,\n matchedTargetingRule: evaluateResult.matchedTargetingRule,\n matchedPercentageOption: evaluateResult.matchedPercentageOption,\n };\n}\nexport function evaluationDetailsFromDefaultValue(key, defaultValue, fetchTime, user, errorMessage, errorException) {\n return {\n key: key,\n value: defaultValue,\n fetchTime: fetchTime,\n user: user,\n isDefaultValue: true,\n errorMessage: errorMessage,\n errorException: errorException\n };\n}\nexport function evaluate(evaluator, settings, key, defaultValue, user, remoteConfig, logger) {\n var errorMessage;\n if (!settings) {\n errorMessage = logger.configJsonIsNotPresentSingle(key, \"defaultValue\", defaultValue).toString();\n return evaluationDetailsFromDefaultValue(key, defaultValue, getTimestampAsDate(remoteConfig), user, errorMessage);\n }\n var setting = settings[key];\n if (!setting) {\n errorMessage = logger.settingEvaluationFailedDueToMissingKey(key, \"defaultValue\", defaultValue, formatStringList(Object.keys(settings))).toString();\n return evaluationDetailsFromDefaultValue(key, defaultValue, getTimestampAsDate(remoteConfig), user, errorMessage);\n }\n var evaluateResult = evaluator.evaluate(defaultValue, new EvaluateContext(key, setting, user, settings));\n return evaluationDetailsFromEvaluateResult(key, evaluateResult, getTimestampAsDate(remoteConfig), user);\n}\nexport function evaluateAll(evaluator, settings, user, remoteConfig, logger, defaultReturnValue) {\n var errors;\n if (!checkSettingsAvailable(settings, logger, defaultReturnValue)) {\n return [[], errors];\n }\n var evaluationDetailsArray = [];\n for (var _i = 0, _a = Object.entries(settings); _i < _a.length; _i++) {\n var _b = _a[_i], key = _b[0], setting = _b[1];\n var evaluationDetails = void 0;\n try {\n var evaluateResult = evaluator.evaluate(null, new EvaluateContext(key, setting, user, settings));\n evaluationDetails = evaluationDetailsFromEvaluateResult(key, evaluateResult, getTimestampAsDate(remoteConfig), user);\n }\n catch (err) {\n errors !== null && errors !== void 0 ? errors : (errors = []);\n errors.push(err);\n evaluationDetails = evaluationDetailsFromDefaultValue(key, null, getTimestampAsDate(remoteConfig), user, errorToString(err), err);\n }\n evaluationDetailsArray.push(evaluationDetails);\n }\n return [evaluationDetailsArray, errors];\n}\nexport function checkSettingsAvailable(settings, logger, defaultReturnValue) {\n if (!settings) {\n logger.configJsonIsNotPresent(defaultReturnValue);\n return false;\n }\n return true;\n}\nexport function isAllowedValue(value) {\n return typeof value === \"boolean\" || typeof value === \"string\" || typeof value === \"number\";\n}\nfunction isCompatibleValue(value, settingType) {\n switch (settingType) {\n case SettingType.Boolean: return typeof value === \"boolean\";\n case SettingType.String: return typeof value === \"string\";\n case SettingType.Int:\n case SettingType.Double: return typeof value === \"number\";\n default: return false;\n }\n}\nexport function handleInvalidReturnValue(value) {\n throw new TypeError(value === null ? \"Setting value is null.\" :\n value === void 0 ? \"Setting value is undefined.\" :\n \"Setting value '\" + value + \"' is of an unsupported type (\" + typeof value + \").\");\n}\nexport function getTimestampAsDate(projectConfig) {\n return projectConfig ? new Date(projectConfig.timestamp) : void 0;\n}\n","import { __assign, __awaiter, __generator } from \"tslib\";\nimport { AutoPollConfigService } from \"./AutoPollConfigService\";\nimport { AutoPollOptions, LazyLoadOptions, ManualPollOptions, PollingMode } from \"./ConfigCatClientOptions\";\nimport { ClientCacheState, RefreshResult } from \"./ConfigServiceBase\";\nimport { OverrideBehaviour } from \"./FlagOverrides\";\nimport { LazyLoadConfigService } from \"./LazyLoadConfigService\";\nimport { ManualPollConfigService } from \"./ManualPollConfigService\";\nimport { getWeakRefStub, isWeakRefAvailable } from \"./Polyfills\";\nimport { RolloutEvaluator, checkSettingsAvailable, evaluate, evaluateAll, evaluationDetailsFromDefaultValue, getTimestampAsDate, handleInvalidReturnValue, isAllowedValue } from \"./RolloutEvaluator\";\nimport { errorToString, isArray, throwError } from \"./Utils\";\nvar ConfigCatClientCache = /** @class */ (function () {\n function ConfigCatClientCache() {\n this.instances = {};\n }\n ConfigCatClientCache.prototype.getOrCreate = function (options, configCatKernel) {\n var instance;\n var cachedInstance = this.instances[options.sdkKey];\n if (cachedInstance) {\n var weakRef = cachedInstance[0];\n instance = weakRef.deref();\n if (instance) {\n return [instance, true];\n }\n }\n var token = {};\n instance = new ConfigCatClient(options, configCatKernel, token);\n var weakRefCtor = isWeakRefAvailable() ? WeakRef : getWeakRefStub();\n this.instances[options.sdkKey] = [new weakRefCtor(instance), token];\n return [instance, false];\n };\n ConfigCatClientCache.prototype.remove = function (sdkKey, cacheToken) {\n var cachedInstance = this.instances[sdkKey];\n if (cachedInstance) {\n var weakRef = cachedInstance[0], token = cachedInstance[1];\n var instanceIsAvailable = !!weakRef.deref();\n if (!instanceIsAvailable || token === cacheToken) {\n delete this.instances[sdkKey];\n return instanceIsAvailable;\n }\n }\n return false;\n };\n ConfigCatClientCache.prototype.clear = function () {\n var removedInstances = [];\n for (var _i = 0, _a = Object.entries(this.instances); _i < _a.length; _i++) {\n var _b = _a[_i], sdkKey = _b[0], weakRef = _b[1][0];\n var instance = weakRef.deref();\n if (instance) {\n removedInstances.push(instance);\n }\n delete this.instances[sdkKey];\n }\n return removedInstances;\n };\n return ConfigCatClientCache;\n}());\nexport { ConfigCatClientCache };\nvar clientInstanceCache = new ConfigCatClientCache();\nvar ConfigCatClient = /** @class */ (function () {\n function ConfigCatClient(options, configCatKernel, cacheToken) {\n var _a;\n this.cacheToken = cacheToken;\n /** @inheritdoc */\n this.addListener = this.on;\n /** @inheritdoc */\n this.off = this.removeListener;\n if (!options) {\n throw new Error(\"Invalid 'options' value\");\n }\n this.options = options;\n this.options.logger.debug(\"Initializing ConfigCatClient. Options: \" + JSON.stringify(this.options));\n if (!configCatKernel) {\n throw new Error(\"Invalid 'configCatKernel' value\");\n }\n if (!configCatKernel.configFetcher) {\n throw new Error(\"Invalid 'configCatKernel.configFetcher' value\");\n }\n // To avoid possible memory leaks, the components of the client should not hold a strong reference to the hooks object (see also SafeHooksWrapper).\n this.hooks = options.yieldHooks();\n if (options.defaultUser) {\n this.setDefaultUser(options.defaultUser);\n }\n this.evaluator = new RolloutEvaluator(options.logger);\n if (((_a = options.flagOverrides) === null || _a === void 0 ? void 0 : _a.behaviour) !== OverrideBehaviour.LocalOnly) {\n this.configService =\n options instanceof AutoPollOptions ? new AutoPollConfigService(configCatKernel.configFetcher, options) :\n options instanceof ManualPollOptions ? new ManualPollConfigService(configCatKernel.configFetcher, options) :\n options instanceof LazyLoadOptions ? new LazyLoadConfigService(configCatKernel.configFetcher, options) :\n throwError(new Error(\"Invalid 'options' value\"));\n }\n else {\n this.hooks.emit(\"clientReady\", ClientCacheState.HasLocalOverrideFlagDataOnly);\n }\n this.suppressFinalize = registerForFinalization(this, { sdkKey: options.sdkKey, cacheToken: cacheToken, configService: this.configService, logger: options.logger });\n }\n Object.defineProperty(ConfigCatClient, \"instanceCache\", {\n get: function () { return clientInstanceCache; },\n enumerable: false,\n configurable: true\n });\n ConfigCatClient.get = function (sdkKey, pollingMode, options, configCatKernel) {\n var _a;\n var invalidSdkKeyError = \"Invalid 'sdkKey' value\";\n if (!sdkKey) {\n throw new Error(invalidSdkKeyError);\n }\n var optionsClass = pollingMode === PollingMode.AutoPoll ? AutoPollOptions :\n pollingMode === PollingMode.ManualPoll ? ManualPollOptions :\n pollingMode === PollingMode.LazyLoad ? LazyLoadOptions :\n throwError(new Error(\"Invalid 'pollingMode' value\"));\n var actualOptions = new optionsClass(sdkKey, configCatKernel.sdkType, configCatKernel.sdkVersion, options, configCatKernel.defaultCacheFactory, configCatKernel.eventEmitterFactory);\n if (((_a = actualOptions.flagOverrides) === null || _a === void 0 ? void 0 : _a.behaviour) !== OverrideBehaviour.LocalOnly && !isValidSdkKey(sdkKey, actualOptions.baseUrlOverriden)) {\n throw new Error(invalidSdkKeyError);\n }\n var _b = clientInstanceCache.getOrCreate(actualOptions, configCatKernel), instance = _b[0], instanceAlreadyCreated = _b[1];\n if (instanceAlreadyCreated && options) {\n actualOptions.logger.clientIsAlreadyCreated(sdkKey);\n }\n return instance;\n };\n ConfigCatClient.finalize = function (data) {\n // Safeguard against situations where user forgets to dispose of the client instance.\n var _a;\n (_a = data.logger) === null || _a === void 0 ? void 0 : _a.debug(\"finalize() called\");\n if (data.cacheToken) {\n clientInstanceCache.remove(data.sdkKey, data.cacheToken);\n }\n ConfigCatClient.close(data.configService, data.logger);\n };\n ConfigCatClient.close = function (configService, logger, hooks) {\n logger === null || logger === void 0 ? void 0 : logger.debug(\"close() called\");\n hooks === null || hooks === void 0 ? void 0 : hooks.tryDisconnect();\n configService === null || configService === void 0 ? void 0 : configService.dispose();\n };\n ConfigCatClient.prototype.dispose = function () {\n var options = this.options;\n options.logger.debug(\"dispose() called\");\n if (this.cacheToken) {\n clientInstanceCache.remove(options.sdkKey, this.cacheToken);\n }\n ConfigCatClient.close(this.configService, options.logger, this.hooks);\n this.suppressFinalize();\n };\n ConfigCatClient.disposeAll = function () {\n var removedInstances = clientInstanceCache.clear();\n var errors;\n for (var _i = 0, removedInstances_1 = removedInstances; _i < removedInstances_1.length; _i++) {\n var instance = removedInstances_1[_i];\n try {\n ConfigCatClient.close(instance.configService, instance.options.logger, instance.hooks);\n instance.suppressFinalize();\n }\n catch (err) {\n errors !== null && errors !== void 0 ? errors : (errors = []);\n errors.push(err);\n }\n }\n if (errors) {\n throw typeof AggregateError !== \"undefined\" ? new AggregateError(errors) : errors.pop();\n }\n };\n ConfigCatClient.prototype.getValueAsync = function (key, defaultValue, user) {\n return __awaiter(this, void 0, void 0, function () {\n var value, evaluationDetails, remoteConfig, settings, err_1;\n var _a;\n return __generator(this, function (_b) {\n switch (_b.label) {\n case 0:\n this.options.logger.debug(\"getValueAsync() called.\");\n validateKey(key);\n ensureAllowedDefaultValue(defaultValue);\n remoteConfig = null;\n user !== null && user !== void 0 ? user : (user = this.defaultUser);\n _b.label = 1;\n case 1:\n _b.trys.push([1, 3, , 4]);\n settings = void 0;\n return [4 /*yield*/, this.getSettingsAsync()];\n case 2:\n _a = _b.sent(), settings = _a[0], remoteConfig = _a[1];\n evaluationDetails = evaluate(this.evaluator, settings, key, defaultValue, user, remoteConfig, this.options.logger);\n value = evaluationDetails.value;\n return [3 /*break*/, 4];\n case 3:\n err_1 = _b.sent();\n this.options.logger.settingEvaluationErrorSingle(\"getValueAsync\", key, \"defaultValue\", defaultValue, err_1);\n evaluationDetails = evaluationDetailsFromDefaultValue(key, defaultValue, getTimestampAsDate(remoteConfig), user, errorToString(err_1), err_1);\n value = defaultValue;\n return [3 /*break*/, 4];\n case 4:\n this.hooks.emit(\"flagEvaluated\", evaluationDetails);\n return [2 /*return*/, value];\n }\n });\n });\n };\n ConfigCatClient.prototype.getValueDetailsAsync = function (key, defaultValue, user) {\n return __awaiter(this, void 0, void 0, function () {\n var evaluationDetails, remoteConfig, settings, err_2;\n var _a;\n return __generator(this, function (_b) {\n switch (_b.label) {\n case 0:\n this.options.logger.debug(\"getValueDetailsAsync() called.\");\n validateKey(key);\n ensureAllowedDefaultValue(defaultValue);\n remoteConfig = null;\n user !== null && user !== void 0 ? user : (user = this.defaultUser);\n _b.label = 1;\n case 1:\n _b.trys.push([1, 3, , 4]);\n settings = void 0;\n return [4 /*yield*/, this.getSettingsAsync()];\n case 2:\n _a = _b.sent(), settings = _a[0], remoteConfig = _a[1];\n evaluationDetails = evaluate(this.evaluator, settings, key, defaultValue, user, remoteConfig, this.options.logger);\n return [3 /*break*/, 4];\n case 3:\n err_2 = _b.sent();\n this.options.logger.settingEvaluationErrorSingle(\"getValueDetailsAsync\", key, \"defaultValue\", defaultValue, err_2);\n evaluationDetails = evaluationDetailsFromDefaultValue(key, defaultValue, getTimestampAsDate(remoteConfig), user, errorToString(err_2), err_2);\n return [3 /*break*/, 4];\n case 4:\n this.hooks.emit(\"flagEvaluated\", evaluationDetails);\n return [2 /*return*/, evaluationDetails];\n }\n });\n });\n };\n ConfigCatClient.prototype.getAllKeysAsync = function () {\n return __awaiter(this, void 0, void 0, function () {\n var defaultReturnValue, settings, err_3;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n this.options.logger.debug(\"getAllKeysAsync() called.\");\n defaultReturnValue = \"empty array\";\n _a.label = 1;\n case 1:\n _a.trys.push([1, 3, , 4]);\n return [4 /*yield*/, this.getSettingsAsync()];\n case 2:\n settings = (_a.sent())[0];\n if (!checkSettingsAvailable(settings, this.options.logger, defaultReturnValue)) {\n return [2 /*return*/, []];\n }\n return [2 /*return*/, Object.keys(settings)];\n case 3:\n err_3 = _a.sent();\n this.options.logger.settingEvaluationError(\"getAllKeysAsync\", defaultReturnValue, err_3);\n return [2 /*return*/, []];\n case 4: return [2 /*return*/];\n }\n });\n });\n };\n ConfigCatClient.prototype.getAllValuesAsync = function (user) {\n return __awaiter(this, void 0, void 0, function () {\n var defaultReturnValue, result, evaluationDetailsArray, evaluationErrors, _a, settings, remoteConfig, err_4, _i, evaluationDetailsArray_1, evaluationDetail;\n var _b;\n return __generator(this, function (_c) {\n switch (_c.label) {\n case 0:\n this.options.logger.debug(\"getAllValuesAsync() called.\");\n defaultReturnValue = \"empty array\";\n user !== null && user !== void 0 ? user : (user = this.defaultUser);\n _c.label = 1;\n case 1:\n _c.trys.push([1, 3, , 4]);\n return [4 /*yield*/, this.getSettingsAsync()];\n case 2:\n _a = _c.sent(), settings = _a[0], remoteConfig = _a[1];\n _b = evaluateAll(this.evaluator, settings, user, remoteConfig, this.options.logger, defaultReturnValue), evaluationDetailsArray = _b[0], evaluationErrors = _b[1];\n result = evaluationDetailsArray.map(function (details) { return new SettingKeyValue(details.key, details.value); });\n return [3 /*break*/, 4];\n case 3:\n err_4 = _c.sent();\n this.options.logger.settingEvaluationError(\"getAllValuesAsync\", defaultReturnValue, err_4);\n return [2 /*return*/, []];\n case 4:\n if (evaluationErrors === null || evaluationErrors === void 0 ? void 0 : evaluationErrors.length) {\n this.options.logger.settingEvaluationError(\"getAllValuesAsync\", \"evaluation result\", typeof AggregateError !== \"undefined\" ? new AggregateError(evaluationErrors) : evaluationErrors.pop());\n }\n for (_i = 0, evaluationDetailsArray_1 = evaluationDetailsArray; _i < evaluationDetailsArray_1.length; _i++) {\n evaluationDetail = evaluationDetailsArray_1[_i];\n this.hooks.emit(\"flagEvaluated\", evaluationDetail);\n }\n return [2 /*return*/, result];\n }\n });\n });\n };\n ConfigCatClient.prototype.getAllValueDetailsAsync = function (user) {\n return __awaiter(this, void 0, void 0, function () {\n var defaultReturnValue, evaluationDetailsArray, evaluationErrors, _a, settings, remoteConfig, err_5, _i, evaluationDetailsArray_2, evaluationDetail;\n var _b;\n return __generator(this, function (_c) {\n switch (_c.label) {\n case 0:\n this.options.logger.debug(\"getAllValueDetailsAsync() called.\");\n defaultReturnValue = \"empty array\";\n user !== null && user !== void 0 ? user : (user = this.defaultUser);\n _c.label = 1;\n case 1:\n _c.trys.push([1, 3, , 4]);\n return [4 /*yield*/, this.getSettingsAsync()];\n case 2:\n _a = _c.sent(), settings = _a[0], remoteConfig = _a[1];\n _b = evaluateAll(this.evaluator, settings, user, remoteConfig, this.options.logger, defaultReturnValue), evaluationDetailsArray = _b[0], evaluationErrors = _b[1];\n return [3 /*break*/, 4];\n case 3:\n err_5 = _c.sent();\n this.options.logger.settingEvaluationError(\"getAllValueDetailsAsync\", defaultReturnValue, err_5);\n return [2 /*return*/, []];\n case 4:\n if (evaluationErrors === null || evaluationErrors === void 0 ? void 0 : evaluationErrors.length) {\n this.options.logger.settingEvaluationError(\"getAllValueDetailsAsync\", \"evaluation result\", typeof AggregateError !== \"undefined\" ? new AggregateError(evaluationErrors) : evaluationErrors.pop());\n }\n for (_i = 0, evaluationDetailsArray_2 = evaluationDetailsArray; _i < evaluationDetailsArray_2.length; _i++) {\n evaluationDetail = evaluationDetailsArray_2[_i];\n this.hooks.emit(\"flagEvaluated\", evaluationDetail);\n }\n return [2 /*return*/, evaluationDetailsArray];\n }\n });\n });\n };\n ConfigCatClient.prototype.getKeyAndValueAsync = function (variationId) {\n return __awaiter(this, void 0, void 0, function () {\n var defaultReturnValue, settings, _i, _a, _b, settingKey, setting, targetingRules, i, then, j, percentageOption, percentageOptions, i, percentageOption, err_6;\n return __generator(this, function (_c) {\n switch (_c.label) {\n case 0:\n this.options.logger.debug(\"getKeyAndValueAsync() called.\");\n defaultReturnValue = \"null\";\n _c.label = 1;\n case 1:\n _c.trys.push([1, 3, , 4]);\n return [4 /*yield*/, this.getSettingsAsync()];\n case 2:\n settings = (_c.sent())[0];\n if (!checkSettingsAvailable(settings, this.options.logger, defaultReturnValue)) {\n return [2 /*return*/, null];\n }\n for (_i = 0, _a = Object.entries(settings); _i < _a.length; _i++) {\n _b = _a[_i], settingKey = _b[0], setting = _b[1];\n if (variationId === setting.variationId) {\n return [2 /*return*/, new SettingKeyValue(settingKey, ensureAllowedValue(setting.value))];\n }\n targetingRules = settings[settingKey].targetingRules;\n if (targetingRules && targetingRules.length > 0) {\n for (i = 0; i < targetingRules.length; i++) {\n then = targetingRules[i].then;\n if (isArray(then)) {\n for (j = 0; j < then.length; j++) {\n percentageOption = then[j];\n if (variationId === percentageOption.variationId) {\n return [2 /*return*/, new SettingKeyValue(settingKey, ensureAllowedValue(percentageOption.value))];\n }\n }\n }\n else if (variationId === then.variationId) {\n return [2 /*return*/, new SettingKeyValue(settingKey, ensureAllowedValue(then.value))];\n }\n }\n }\n percentageOptions = settings[settingKey].percentageOptions;\n if (percentageOptions && percentageOptions.length > 0) {\n for (i = 0; i < percentageOptions.length; i++) {\n percentageOption = percentageOptions[i];\n if (variationId === percentageOption.variationId) {\n return [2 /*return*/, new SettingKeyValue(settingKey, ensureAllowedValue(percentageOption.value))];\n }\n }\n }\n }\n this.options.logger.settingForVariationIdIsNotPresent(variationId);\n return [3 /*break*/, 4];\n case 3:\n err_6 = _c.sent();\n this.options.logger.settingEvaluationError(\"getKeyAndValueAsync\", defaultReturnValue, err_6);\n return [3 /*break*/, 4];\n case 4: return [2 /*return*/, null];\n }\n });\n });\n };\n ConfigCatClient.prototype.forceRefreshAsync = function () {\n return __awaiter(this, void 0, void 0, function () {\n var result, err_7;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n this.options.logger.debug(\"forceRefreshAsync() called.\");\n if (!this.configService) return [3 /*break*/, 5];\n _a.label = 1;\n case 1:\n _a.trys.push([1, 3, , 4]);\n return [4 /*yield*/, this.configService.refreshConfigAsync()];\n case 2:\n result = (_a.sent())[0];\n return [2 /*return*/, result];\n case 3:\n err_7 = _a.sent();\n this.options.logger.forceRefreshError(\"forceRefreshAsync\", err_7);\n return [2 /*return*/, RefreshResult.failure(errorToString(err_7), err_7)];\n case 4: return [3 /*break*/, 6];\n case 5: return [2 /*return*/, RefreshResult.failure(\"Client is configured to use the LocalOnly override behavior, which prevents making HTTP requests.\")];\n case 6: return [2 /*return*/];\n }\n });\n });\n };\n ConfigCatClient.prototype.setDefaultUser = function (defaultUser) {\n this.defaultUser = defaultUser;\n };\n ConfigCatClient.prototype.clearDefaultUser = function () {\n this.defaultUser = void 0;\n };\n Object.defineProperty(ConfigCatClient.prototype, \"isOffline\", {\n get: function () {\n var _a, _b;\n return (_b = (_a = this.configService) === null || _a === void 0 ? void 0 : _a.isOffline) !== null && _b !== void 0 ? _b : true;\n },\n enumerable: false,\n configurable: true\n });\n ConfigCatClient.prototype.setOnline = function () {\n if (this.configService) {\n this.configService.setOnline();\n }\n else {\n this.options.logger.configServiceMethodHasNoEffectDueToOverrideBehavior(OverrideBehaviour[OverrideBehaviour.LocalOnly], \"setOnline\");\n }\n };\n ConfigCatClient.prototype.setOffline = function () {\n var _a;\n (_a = this.configService) === null || _a === void 0 ? void 0 : _a.setOffline();\n };\n ConfigCatClient.prototype.waitForReady = function () {\n var configService = this.configService;\n return configService ? configService.readyPromise : Promise.resolve(ClientCacheState.HasLocalOverrideFlagDataOnly);\n };\n ConfigCatClient.prototype.snapshot = function () {\n var _a, _b, _c;\n var _this = this;\n var _d;\n var getRemoteConfig = function () {\n var config = _this.options.cache.getInMemory();\n var settings = !config.isEmpty ? config.config.settings : null;\n return [settings, config];\n };\n var remoteSettings;\n var remoteConfig;\n var flagOverrides = (_d = this.options) === null || _d === void 0 ? void 0 : _d.flagOverrides;\n if (flagOverrides) {\n var localSettings = flagOverrides.dataSource.getOverridesSync();\n switch (flagOverrides.behaviour) {\n case OverrideBehaviour.LocalOnly:\n return new Snapshot(localSettings, null, this);\n case OverrideBehaviour.LocalOverRemote:\n _a = getRemoteConfig(), remoteSettings = _a[0], remoteConfig = _a[1];\n return new Snapshot(__assign(__assign({}, (remoteSettings !== null && remoteSettings !== void 0 ? remoteSettings : {})), localSettings), remoteConfig, this);\n case OverrideBehaviour.RemoteOverLocal:\n _b = getRemoteConfig(), remoteSettings = _b[0], remoteConfig = _b[1];\n return new Snapshot(__assign(__assign({}, localSettings), (remoteSettings !== null && remoteSettings !== void 0 ? remoteSettings : {})), remoteConfig, this);\n }\n }\n _c = getRemoteConfig(), remoteSettings = _c[0], remoteConfig = _c[1];\n return new Snapshot(remoteSettings, remoteConfig, this);\n };\n ConfigCatClient.prototype.getSettingsAsync = function () {\n var _a;\n return __awaiter(this, void 0, void 0, function () {\n var getRemoteConfigAsync, flagOverrides, remoteSettings, remoteConfig, localSettings, _b;\n var _c, _d;\n var _this = this;\n return __generator(this, function (_e) {\n switch (_e.label) {\n case 0:\n this.options.logger.debug(\"getSettingsAsync() called.\");\n getRemoteConfigAsync = function () { return __awaiter(_this, void 0, void 0, function () {\n var config, settings;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0: return [4 /*yield*/, this.configService.getConfig()];\n case 1:\n config = _a.sent();\n settings = !config.isEmpty ? config.config.settings : null;\n return [2 /*return*/, [settings, config]];\n }\n });\n }); };\n flagOverrides = (_a = this.options) === null || _a === void 0 ? void 0 : _a.flagOverrides;\n if (!flagOverrides) return [3 /*break*/, 7];\n remoteSettings = void 0;\n remoteConfig = void 0;\n return [4 /*yield*/, flagOverrides.dataSource.getOverrides()];\n case 1:\n localSettings = _e.sent();\n _b = flagOverrides.behaviour;\n switch (_b) {\n case OverrideBehaviour.LocalOnly: return [3 /*break*/, 2];\n case OverrideBehaviour.LocalOverRemote: return [3 /*break*/, 3];\n case OverrideBehaviour.RemoteOverLocal: return [3 /*break*/, 5];\n }\n return [3 /*break*/, 7];\n case 2: return [2 /*return*/, [localSettings, null]];\n case 3: return [4 /*yield*/, getRemoteConfigAsync()];\n case 4:\n _c = _e.sent(), remoteSettings = _c[0], remoteConfig = _c[1];\n return [2 /*return*/, [__assign(__assign({}, (remoteSettings !== null && remoteSettings !== void 0 ? remoteSettings : {})), localSettings), remoteConfig]];\n case 5: return [4 /*yield*/, getRemoteConfigAsync()];\n case 6:\n _d = _e.sent(), remoteSettings = _d[0], remoteConfig = _d[1];\n return [2 /*return*/, [__assign(__assign({}, localSettings), (remoteSettings !== null && remoteSettings !== void 0 ? remoteSettings : {})), remoteConfig]];\n case 7: return [4 /*yield*/, getRemoteConfigAsync()];\n case 8: return [2 /*return*/, _e.sent()];\n }\n });\n });\n };\n /** @inheritdoc */\n ConfigCatClient.prototype.on = function (eventName, listener) {\n this.hooks.on(eventName, listener);\n return this;\n };\n /** @inheritdoc */\n ConfigCatClient.prototype.once = function (eventName, listener) {\n this.hooks.once(eventName, listener);\n return this;\n };\n /** @inheritdoc */\n ConfigCatClient.prototype.removeListener = function (eventName, listener) {\n this.hooks.removeListener(eventName, listener);\n return this;\n };\n /** @inheritdoc */\n ConfigCatClient.prototype.removeAllListeners = function (eventName) {\n this.hooks.removeAllListeners(eventName);\n return this;\n };\n /** @inheritdoc */\n ConfigCatClient.prototype.listeners = function (eventName) {\n return this.hooks.listeners(eventName);\n };\n /** @inheritdoc */\n ConfigCatClient.prototype.listenerCount = function (eventName) {\n return this.hooks.listenerCount(eventName);\n };\n /** @inheritdoc */\n ConfigCatClient.prototype.eventNames = function () {\n return this.hooks.eventNames();\n };\n return ConfigCatClient;\n}());\nexport { ConfigCatClient };\nvar Snapshot = /** @class */ (function () {\n function Snapshot(mergedSettings, remoteConfig, client) {\n this.mergedSettings = mergedSettings;\n this.remoteConfig = remoteConfig;\n this.defaultUser = client[\"defaultUser\"];\n this.evaluator = client[\"evaluator\"];\n this.options = client[\"options\"];\n this.cacheState = remoteConfig\n ? client[\"configService\"].getCacheState(remoteConfig)\n : ClientCacheState.HasLocalOverrideFlagDataOnly;\n }\n Object.defineProperty(Snapshot.prototype, \"fetchedConfig\", {\n get: function () {\n var config = this.remoteConfig;\n return config && !config.isEmpty ? config.config : null;\n },\n enumerable: false,\n configurable: true\n });\n Snapshot.prototype.getAllKeys = function () { return this.mergedSettings ? Object.keys(this.mergedSettings) : []; };\n Snapshot.prototype.getValue = function (key, defaultValue, user) {\n this.options.logger.debug(\"Snapshot.getValue() called.\");\n validateKey(key);\n ensureAllowedDefaultValue(defaultValue);\n var value, evaluationDetails;\n user !== null && user !== void 0 ? user : (user = this.defaultUser);\n try {\n evaluationDetails = evaluate(this.evaluator, this.mergedSettings, key, defaultValue, user, this.remoteConfig, this.options.logger);\n value = evaluationDetails.value;\n }\n catch (err) {\n this.options.logger.settingEvaluationErrorSingle(\"Snapshot.getValue\", key, \"defaultValue\", defaultValue, err);\n evaluationDetails = evaluationDetailsFromDefaultValue(key, defaultValue, getTimestampAsDate(this.remoteConfig), user, errorToString(err), err);\n value = defaultValue;\n }\n this.options.hooks.emit(\"flagEvaluated\", evaluationDetails);\n return value;\n };\n Snapshot.prototype.getValueDetails = function (key, defaultValue, user) {\n this.options.logger.debug(\"Snapshot.getValueDetails() called.\");\n validateKey(key);\n ensureAllowedDefaultValue(defaultValue);\n var evaluationDetails;\n user !== null && user !== void 0 ? user : (user = this.defaultUser);\n try {\n evaluationDetails = evaluate(this.evaluator, this.mergedSettings, key, defaultValue, user, this.remoteConfig, this.options.logger);\n }\n catch (err) {\n this.options.logger.settingEvaluationErrorSingle(\"Snapshot.getValueDetails\", key, \"defaultValue\", defaultValue, err);\n evaluationDetails = evaluationDetailsFromDefaultValue(key, defaultValue, getTimestampAsDate(this.remoteConfig), user, errorToString(err), err);\n }\n this.options.hooks.emit(\"flagEvaluated\", evaluationDetails);\n return evaluationDetails;\n };\n return Snapshot;\n}());\n/** Setting key-value pair. */\nvar SettingKeyValue = /** @class */ (function () {\n function SettingKeyValue(settingKey, settingValue) {\n this.settingKey = settingKey;\n this.settingValue = settingValue;\n }\n return SettingKeyValue;\n}());\nexport { SettingKeyValue };\nfunction isValidSdkKey(sdkKey, customBaseUrl) {\n var proxyPrefix = \"configcat-proxy/\";\n // NOTE: String.prototype.startsWith was introduced after ES5. We'd rather work around it instead of polyfilling it.\n if (customBaseUrl && sdkKey.length > proxyPrefix.length && sdkKey.lastIndexOf(proxyPrefix, 0) === 0) {\n return true;\n }\n var components = sdkKey.split(\"/\");\n var keyLength = 22;\n switch (components.length) {\n case 2: return components[0].length === keyLength && components[1].length === keyLength;\n case 3: return components[0] === \"configcat-sdk-1\" && components[1].length === keyLength && components[2].length === keyLength;\n default: return false;\n }\n}\nfunction validateKey(key) {\n if (!key) {\n throw new Error(\"Invalid 'key' value\");\n }\n}\nfunction ensureAllowedDefaultValue(value) {\n if (value != null && !isAllowedValue(value)) {\n throw new TypeError(\"The default value must be boolean, number, string, null or undefined.\");\n }\n}\nfunction ensureAllowedValue(value) {\n return isAllowedValue(value) ? value : handleInvalidReturnValue(value);\n}\nvar registerForFinalization = function (client, data) {\n // Use FinalizationRegistry (finalization callbacks) if the runtime provides that feature.\n if (typeof FinalizationRegistry !== \"undefined\") {\n var finalizationRegistry_1 = new FinalizationRegistry(function (data) { return ConfigCatClient[\"finalize\"](data); });\n registerForFinalization = function (client, data) {\n var unregisterToken = {};\n finalizationRegistry_1.register(client, data, unregisterToken);\n return function () { return finalizationRegistry_1.unregister(unregisterToken); };\n };\n }\n // If FinalizationRegistry is unavailable, we can't really track finalization.\n // (Although we could implement something which resembles finalization callbacks using a weak map + a timer,\n // since ConfigCatClientCache also needs to keep (weak) references to the created client instances,\n // this hypothetical approach wouldn't work without a complete WeakRef polyfill,\n // which is kind of impossible (for more details, see Polyfills.ts).\n else {\n registerForFinalization = function () { return function () { }; };\n }\n return registerForFinalization(client, data);\n};\n","import { ConfigCatClient } from \"./ConfigCatClient\";\nimport { PollingMode } from \"./ConfigCatClientOptions\";\nimport { ConfigCatConsoleLogger, LogLevel } from \"./ConfigCatLogger\";\nimport { FlagOverrides, MapOverrideDataSource, OverrideBehaviour } from \"./FlagOverrides\";\nimport { setupPolyfills } from \"./Polyfills\";\nsetupPolyfills();\n/**\n * Returns an instance of `ConfigCatClient` for the specified SDK Key.\n * @remarks This method returns a single, shared instance per each distinct SDK Key.\n * That is, a new client object is created only when there is none available for the specified SDK Key.\n * Otherwise, the already created instance is returned (in which case the `pollingMode`, `options` and `configCatKernel` arguments are ignored).\n * So, please keep in mind that when you make multiple calls to this method using the same SDK Key, you may end up with multiple references to the same client object.\n * @param sdkKey SDK Key to access the ConfigCat config.\n * @param pollingMode The polling mode to use.\n * @param options Options for the specified polling mode.\n */\nexport function getClient(sdkKey, pollingMode, options, configCatKernel) {\n return ConfigCatClient.get(sdkKey, pollingMode, options, configCatKernel);\n}\n/**\n * Disposes all existing `ConfigCatClient` instances.\n */\nexport function disposeAllClients() {\n ConfigCatClient.disposeAll();\n}\n/**\n * Creates an instance of `ConfigCatConsoleLogger`.\n * @param logLevel Log level (the minimum level to use for filtering log events).\n * @param eol The character sequence to use for line breaks in log messages. Defaults to \"\\n\".\n */\nexport function createConsoleLogger(logLevel, eol) {\n return new ConfigCatConsoleLogger(logLevel, eol);\n}\n/**\n * Creates an instance of `FlagOverrides` that uses a map data source.\n * @param map The map that contains the overrides.\n * @param behaviour The override behaviour.\n * Specifies whether the local values should override the remote values\n * or local values should only be used when a remote value doesn't exist\n * or the local values should be used only.\n * @param watchChanges If set to `true`, the input map will be tracked for changes.\n */\nexport function createFlagOverridesFromMap(map, behaviour, watchChanges) {\n return new FlagOverrides(new MapOverrideDataSource(map, watchChanges), behaviour);\n}\nexport { FetchStatus, FetchResult, FetchError } from \"./ConfigFetcher\";\nexport { InMemoryConfigCache, ExternalConfigCache } from \"./ConfigCatCache\";\n/* Public types for end users */\n// List types here which are part of the public API of platform-specific SDKs, thus, should be exposed to end users.\n// These exports should be re-exported in the entry module of each platform-specific SDK!\nexport { PollingMode };\nexport { DataGovernance } from \"./ConfigCatClientOptions\";\nexport { LogLevel };\nexport { FormattableLogMessage } from \"./ConfigCatLogger\";\nexport { SettingType, UserComparator, PrerequisiteFlagComparator, SegmentComparator } from \"./ConfigJson\";\nexport { SettingKeyValue } from \"./ConfigCatClient\";\nexport { User } from \"./User\";\nexport { OverrideBehaviour };\nexport { ClientCacheState, RefreshResult } from \"./ConfigServiceBase\";\n","import { ExternalConfigCache } from \"configcat-common\";\nvar LocalStorageCache = /** @class */ (function () {\n function LocalStorageCache(storage) {\n this.storage = storage;\n }\n LocalStorageCache.setup = function (kernel, localStorageGetter) {\n var localStorage = (localStorageGetter !== null && localStorageGetter !== void 0 ? localStorageGetter : getLocalStorage)();\n if (localStorage) {\n kernel.defaultCacheFactory = function (options) { return new ExternalConfigCache(new LocalStorageCache(localStorage), options.logger); };\n }\n return kernel;\n };\n LocalStorageCache.prototype.set = function (key, value) {\n this.storage.setItem(key, toUtf8Base64(value));\n };\n LocalStorageCache.prototype.get = function (key) {\n var configString = this.storage.getItem(key);\n if (configString) {\n return fromUtf8Base64(configString);\n }\n };\n return LocalStorageCache;\n}());\nexport { LocalStorageCache };\nexport function getLocalStorage() {\n var testKey = \"__configcat_localStorage_test\";\n try {\n var storage = window.localStorage;\n storage.setItem(testKey, testKey);\n var retrievedItem = void 0;\n try {\n retrievedItem = storage.getItem(testKey);\n }\n finally {\n storage.removeItem(testKey);\n }\n if (retrievedItem === testKey) {\n return storage;\n }\n }\n catch (err) { /* intentional no-op */ }\n return null;\n}\nexport function toUtf8Base64(str) {\n str = encodeURIComponent(str);\n str = str.replace(/%([0-9A-F]{2})/g, function (_, p1) { return String.fromCharCode(parseInt(p1, 16)); });\n return btoa(str);\n}\nexport function fromUtf8Base64(str) {\n str = atob(str);\n str = str.replace(/[%\\x80-\\xFF]/g, function (m) { return \"%\" + m.charCodeAt(0).toString(16); });\n return decodeURIComponent(str);\n}\n","import { __awaiter, __generator } from \"tslib\";\nimport axios from \"axios\";\nimport { FetchError } from \"configcat-common\";\nvar HttpConfigFetcher = /** @class */ (function () {\n function HttpConfigFetcher() {\n }\n HttpConfigFetcher.prototype.fetchLogic = function (options, lastEtag) {\n return __awaiter(this, void 0, void 0, function () {\n var url, headers, axiosConfig, response, err_1, statusCode_1, reasonPhrase_1, _a, code, message, _b, statusCode, reasonPhrase, eTag;\n return __generator(this, function (_c) {\n switch (_c.label) {\n case 0:\n url = options.getUrl();\n if (lastEtag) {\n if (typeof window !== \"undefined\") {\n // NOTE: If we are running in browser, it's intentional that we don't specify the If-None-Match header.\n // The browser automatically handles it, adding it manually would cause an unnecessary CORS OPTIONS request.\n // In case the browser doesn't handle it, we are transforming the ccetag query parameter to the If-None-Match header in our CDN provider.\n url += \"&ccetag=\" + lastEtag;\n }\n else {\n headers = { \"If-None-Match\": lastEtag };\n }\n }\n axiosConfig = {\n method: \"get\",\n timeout: options.requestTimeoutMs,\n url: url,\n headers: headers,\n responseType: \"text\",\n transformResponse: function (data) { return data; }\n };\n _c.label = 1;\n case 1:\n _c.trys.push([1, 3, , 4]);\n return [4 /*yield*/, axios(axiosConfig)];\n case 2:\n response = _c.sent();\n return [3 /*break*/, 4];\n case 3:\n err_1 = _c.sent();\n (response = err_1.response);\n if (response) {\n statusCode_1 = response.status, reasonPhrase_1 = response.statusText;\n return [2 /*return*/, { statusCode: statusCode_1, reasonPhrase: reasonPhrase_1 }];\n }\n else if (err_1.request) {\n _a = err_1, code = _a.code, message = _a.message;\n switch (code) {\n case \"ERR_CANCELED\":\n throw new FetchError(\"abort\");\n case \"ECONNABORTED\":\n // Axios ambiguously use ECONNABORTED instead of ETIMEDOUT, so we need this additional check to detect timeout\n // (see https://github.com/axios/axios/issues/1543#issuecomment-558166483)\n if (message.indexOf(\"timeout\") >= 0) {\n throw new FetchError(\"timeout\", options.requestTimeoutMs);\n }\n break;\n default:\n break;\n }\n throw new FetchError(\"failure\", err_1);\n }\n throw err_1;\n case 4:\n _b = response, statusCode = _b.status, reasonPhrase = _b.statusText;\n if (statusCode === 200) {\n eTag = response.headers.etag;\n return [2 /*return*/, { statusCode: statusCode, reasonPhrase: reasonPhrase, eTag: eTag, body: response.data }];\n }\n return [2 /*return*/, { statusCode: statusCode, reasonPhrase: reasonPhrase }];\n }\n });\n });\n };\n return HttpConfigFetcher;\n}());\nexport { HttpConfigFetcher };\n","export default \"8.4.1\";\n","import { PollingMode, getClient as getClientCommon } from \"configcat-common\";\nimport { LocalStorageCache } from \"./Cache\";\nimport { HttpConfigFetcher } from \"./ConfigFetcher\";\nimport CONFIGCAT_SDK_VERSION from \"./Version\";\n/**\n * Returns an instance of `ConfigCatClient` for the specified SDK Key.\n * @remarks This method returns a single, shared instance per each distinct SDK Key.\n * That is, a new client object is created only when there is none available for the specified SDK Key.\n * Otherwise, the already created instance is returned (in which case the `pollingMode` and `options` arguments are ignored).\n * So, please keep in mind that when you make multiple calls to this method using the same SDK Key, you may end up with multiple references to the same client object.\n * @param sdkKey SDK Key to access the ConfigCat config.\n * @param pollingMode The polling mode to use.\n * @param options Options for the specified polling mode.\n */\nexport function getClient(sdkKey, pollingMode, options) {\n return getClientCommon(sdkKey, pollingMode !== null && pollingMode !== void 0 ? pollingMode : PollingMode.AutoPoll, options, LocalStorageCache.setup({\n configFetcher: new HttpConfigFetcher(),\n sdkType: \"ConfigCat-JS-SSR\",\n sdkVersion: CONFIGCAT_SDK_VERSION,\n }));\n}\nexport { disposeAllClients, createConsoleLogger, createFlagOverridesFromMap } from \"configcat-common\";\n/* Public types re-export from common-js */\n// These exports should be kept in sync with the exports listed in the section \"Public types for end users\" of common-js/src/index.ts!\nexport { PollingMode } from \"configcat-common\";\nexport { DataGovernance } from \"configcat-common\";\nexport { LogLevel } from \"configcat-common\";\nexport { FormattableLogMessage } from \"configcat-common\";\nexport { SettingType, UserComparator, PrerequisiteFlagComparator, SegmentComparator } from \"configcat-common\";\nexport { SettingKeyValue } from \"configcat-common\";\nexport { User } from \"configcat-common\";\nexport { OverrideBehaviour } from \"configcat-common\";\nexport { ClientCacheState, RefreshResult } from \"configcat-common\";\n","import { OpenFeatureEventEmitter, ProviderEvents, ProviderNotReadyError, FlagNotFoundError, TypeMismatchError, ParseError } from '@openfeature/web-sdk';\nimport { transformContext, toResolutionDetails, isType } from '@openfeature/config-cat-core';\nimport { getClient, PollingMode } from 'configcat-js-ssr';\n\n/******************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n\r\nfunction __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nfunction __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\ntypeof SuppressedError === \"function\" ? SuppressedError : function (error, suppressed, message) {\r\n var e = new Error(message);\r\n return e.name = \"SuppressedError\", e.error = error, e.suppressed = suppressed, e;\r\n};\n\nclass ConfigCatWebProvider {\n constructor(clientFactory) {\n this.events = new OpenFeatureEventEmitter();\n this._hasError = false;\n this.runsOn = 'client';\n this.metadata = {\n name: ConfigCatWebProvider.name,\n };\n this._clientFactory = clientFactory;\n }\n static create(sdkKey, options) {\n // Let's create a shallow copy to not mess up caller's options object.\n options = options ? Object.assign({}, options) : {};\n return new ConfigCatWebProvider((provider) => {\n const oldSetupHooks = options === null || options === void 0 ? void 0 : options.setupHooks;\n options.setupHooks = (hooks) => {\n oldSetupHooks === null || oldSetupHooks === void 0 ? void 0 : oldSetupHooks(hooks);\n hooks.on('configChanged', (projectConfig) => provider.events.emit(ProviderEvents.ConfigurationChanged, {\n flagsChanged: projectConfig ? Object.keys(projectConfig.settings) : undefined,\n }));\n hooks.on('clientError', (message, error) => {\n provider._hasError = true;\n provider.events.emit(ProviderEvents.Error, {\n message: message,\n metadata: error,\n });\n });\n };\n return getClient(sdkKey, PollingMode.AutoPoll, options);\n });\n }\n initialize() {\n return __awaiter(this, void 0, void 0, function* () {\n const client = this._clientFactory(this);\n yield client.waitForReady();\n this._client = client;\n });\n }\n get configCatClient() {\n return this._client;\n }\n onClose() {\n return __awaiter(this, void 0, void 0, function* () {\n var _a;\n (_a = this._client) === null || _a === void 0 ? void 0 : _a.dispose();\n });\n }\n resolveBooleanEvaluation(flagKey, defaultValue, context) {\n return this.evaluate(flagKey, 'boolean', context);\n }\n resolveStringEvaluation(flagKey, defaultValue, context) {\n return this.evaluate(flagKey, 'string', context);\n }\n resolveNumberEvaluation(flagKey, defaultValue, context) {\n return this.evaluate(flagKey, 'number', context);\n }\n resolveObjectEvaluation(flagKey, defaultValue, context) {\n const objectValue = this.evaluate(flagKey, 'object', context);\n return objectValue;\n }\n evaluate(flagKey, flagType, context) {\n if (!this._client) {\n throw new ProviderNotReadyError('Provider is not initialized');\n }\n const _a = this._client\n .snapshot()\n .getValueDetails(flagKey, undefined, transformContext(context)), { value } = _a, evaluationData = __rest(_a, [\"value\"]);\n if (this._hasError && !evaluationData.errorMessage && !evaluationData.errorException) {\n this._hasError = false;\n this.events.emit(ProviderEvents.Ready);\n }\n if (typeof value === 'undefined') {\n throw new FlagNotFoundError();\n }\n if (flagType !== 'object') {\n return toResolutionDetails(flagType, value, evaluationData);\n }\n if (!isType('string', value)) {\n throw new TypeMismatchError();\n }\n let json;\n try {\n json = JSON.parse(value);\n }\n catch (e) {\n throw new ParseError(`Unable to parse \"${value}\" as JSON`);\n }\n return toResolutionDetails(flagType, json, evaluationData);\n }\n}\n\nexport { ConfigCatWebProvider };\n"],"names":["__defProp","__defProps","__getOwnPropDescs","__getOwnPropSymbols","__hasOwnProp","__propIsEnum","__defNormalProp","obj","key","value","__spreadValues","a","b","prop","__spreadProps","__async","__this","__arguments","generator","resolve","reject","fulfilled","step","e","rejected","x","StandardResolutionReasons","ErrorCode","ErrorCode2","OpenFeatureError","_OpenFeatureError","message","options","FlagNotFoundError","_FlagNotFoundError","GeneralError","_GeneralError","InvalidContextError","_InvalidContextError","ParseError","_ParseError","ProviderFatalError","_ProviderFatalError","ProviderNotReadyError","_ProviderNotReadyError","TargetingKeyMissingError","_TargetingKeyMissingError","TypeMismatchError","_TypeMismatchError","instantiateErrorByErrorCode","errorCode","ClientProviderStatus","ClientProviderStatus3","ClientProviderEvents","ClientProviderEvents2","eventStatusMap","statusMatchesEvent","event","status","DefaultLogger","args","LOG_LEVELS","SafeLogger","logger","level","err","GenericEventEmitter","globalLogger","eventType","context","handler","asyncHandler","details","_a","existingAsyncHandlers","removedAsyncHandler","_b","isString","stringOrUndefined","isObject","objectOrUndefined","isDefined","input","ProviderWrapper","_provider","_status","_statusEnumType","_c","provider","OpenFeatureCommonAPI","category","hooks","domain","keyProviderTuple","domainOrProvider","providerOrUndefined","_d","_e","_f","_g","_h","oldProvider","providerName","emitters","initializationPromise","wrappedProvider","_a2","emitter","error","newEmitter","clientProvider","domainScopedProviders","name","newProvider","eventHandler","newClientHandlers","wrappers","_0","wrapper","_b2","defaultProvider","__create","__getOwnPropDesc","__getOwnPropNames","__getProtoOf","__reflectGet","__commonJS","cb","mod","__copyProps","to","from","except","desc","__toESM","isNodeMode","target","__superGet","cls","require_eventemitter3","exports","module","has","prefix","Events","EE","fn","once","addListener","listener","evt","clearEvent","EventEmitter2","names","events","handlers","i","l","ee","listeners","a1","a2","a3","a4","a5","len","length","j","REASON_NO_OP","NoopFeatureProvider","_","defaultValue","NOOP_PROVIDER","import_index","OpenFeatureEventEmitter","OpenFeatureClient","providerAccessor","providerStatusAccessor","emitterAccessor","notificationType","flagKey","resolver","flagType","allHooks","OpenFeature","allHooksReversed","hookContext","resolution","evaluationDetails","errorMessage","StandardResolutionReasons2","hook","err2","GLOBAL_OPENFEATURE_API_KEY","_globalThis","OpenFeatureAPI","_OpenFeatureAPI","globalApi","instance","clientOrProvider","providerContextOrUndefined","contextOrUndefined","maybePromise","domainOrContext","oldContext","unboundProviders","domain2","acc","allDomainRecords","dm","domainOrUndefined","newContext","version","__objRest","source","exclude","Context","React","OpenFeatureProvider","client","children","React3.createElement","toResolutionDetails","type","data","reason","isType","matchedTargeting","matchedPercentage","evaluatedReason","__rest","s","t","p","toUserAttributeValue","item","transformCustomContextValues","contextValue","transformedValue","param","transformContext","targetingKey","email","country","attributes","FetchStatus","FetchResult","config","errorException","FetchError","_super","__extends","cause","_i","_this","timeoutMs","o","proto","RedirectMode","SettingType","UserComparator","PrerequisiteFlagComparator","SegmentComparator","ProjectConfig","configJson","timestamp","httpETag","projectConfig1","projectConfig2","expirationMs","separatorIndices","index","endIndex","slice","fetchTime","Config","json","Preferences","Segment","Setting","configJsonParsed","UserCondition","SettingValueContainer","hasUnwrappedValue","unwrapSettingValue","identifierAttribute","TargetingRule","PercentageOption","PrerequisiteFlagCondition","SegmentCondition","RefreshResult","fetchResult","ClientCacheState","ConfigServiceStatus","ConfigServiceBase","configFetcher","__awaiter","latestConfig","__generator","configChanged","success","newConfig","lastConfig","response","configOrError","err_1","lastETag","maxRetryCount","retryNumber","preferences","baseUrl","redirect","state","waitForReadyAsync","cacheState","delay","delayMs","delayCleanup","timerId","promise","errorToString","includeStackTrace","throwError","isArray","isStringArray","formatStringList","items","maxLength","getOmittedItemsText","separator","appendix","isPromiseLike","utf8Encode","text","codePointAt","ch","nextCh","utf8text","chunkStart","fromCharCode","cp","parseFloatStrict","AutoPollConfigService","initialCacheSyncUp","initSignalPromise","logSuccess","cachedConfig","d","InMemoryConfigCache","_key","ExternalConfigCache","cache","externalSerializedConfig","cacheGetResult","cacheGetPromise","err_2","LogLevel","FormattableLogMessage","strings","argNames","argValues","cachedMessage","LoggerWrapper","logLevel","eventId","exception","defaultReturnValue","templateObject_1","__makeTemplateObject","defaultParamName","defaultParamValue","templateObject_2","availableKeys","templateObject_3","methodName","ex","templateObject_4","templateObject_5","templateObject_6","statusCode","reasonPhrase","templateObject_7","templateObject_8","templateObject_9","variationId","templateObject_10","sdkKey","templateObject_11","templateObject_12","attributeName","templateObject_13","condition","templateObject_14","templateObject_15","attributeValue","templateObject_16","templateObject_17","overrideBehavior","templateObject_18","evaluateLog","templateObject_19","templateObject_20","ConfigCatConsoleLogger","eol","logMethod","levelString","exceptionString","isSingle","DefaultEventEmitter","eventName","isMatch","fns","arg0","arg1","arg2","arg3","argCount","toRemove","NullEventEmitter","sha1","msg","rotate_left","n","t4","blockstart","W","H0","H1","H2","H3","H4","A","B","C","D","E","temp","msg_len","word_array","toHexString","sha256","msgUtf8","rightRotate","amount","lengthProperty","mathPow","maxWord","precomputedData","hash","k","isComposite","candidate","primeCounter","asciiBitLength","words","w","oldHash","w15","w2","temp1","temp2","int32Array","count","hexDigits","result","disconnectedEventEmitter","Hooks","eventEmitter","originalEventEmitter","__spreadArrays","setupPolyfills","ObjectValuesPolyfill","ObjectEntriesPolyfill","ObjectFromEntriesPolyfill","entries","entries_1","iterator","element","done","getWeakRefStub","WeakRef","isWeakRefAvailable","PollingMode","DataGovernance","OptionsBase","clientVersion","defaultCacheFactory","eventEmitterFactory","hooksWeakRef","hooksWrapper","AutoPollOptions","sdkType","sdkVersion","maxSetTimeoutIntervalSecs","ManualPollOptions","LazyLoadOptions","OverrideBehaviour","LazyLoadConfigService","logExpired","ManualPollConfigService","invalidValuePlaceholder","invalidNamePlaceholder","invalidOperatorPlaceholder","invalidReferencePlaceholder","stringListMaxLength","EvaluateLogBuilder","comparisonAttribute","comparator","comparisonValue","formatUserComparator","isSensitive","valueText","valuesText","comparatorFormatted","comparisonValueFormatted","isDateTime","date","settings","prerequisiteFlagKey","formatPrerequisiteFlagComparator","valueToString","segment","segmentName","formatSegmentComparator","targetingRule","newLine","then","isMatchOrError","formatUserCondition","isAllowedValue","numeric","compareIdentifiers","anum","bnum","MAX_LENGTH","MAX_SAFE_INTEGER","re","src","R","createToken","SemVer","m","id","num","other","release","identifier","parse","getUserAttribute","user","getUserAttributes","emailAttribute","countryAttribute","wellKnownAttributes","EvaluateContext","setting","dependentFlagContext","targetingRuleIgnoredMessage","missingUserObjectError","missingUserAttributeError","invalidUserAttributeError","RolloutEvaluator","logBuilder","returnValue","isValidReturnValue","settingType","isCompatibleValue","handleInvalidReturnValue","evaluateResult","targetingRules","percentageOptions","conditions","isEvaluationError","matchedTargetingRule","percentageOptionsAttributeName","percentageOptionsAttributeValue","sha1Hash","userAttributeValueToString","hashValue","bucket","percentageOption","contextSalt","newLineBeforeThen","userAttributeName","userAttributeValue","versionOrError","numberOrError","arrayOrError","getUserAttributeValueAsText","getUserAttributeValueAsSemVer","getUserAttributeValueAsNumber","getUserAttributeValueAsUnixTimeSeconds","getUserAttributeValueAsStringArray","negate","configJsonSalt","hashComparisonValue","comparisonValues","startsWith","textUtf8","sliceLength","sliceUtf8","hashComparisonValueSlice","version2","parseSemVer","comparisonResult","number","before","array","prerequisiteFlag","dependencyCycle","prerequisiteFlagContext","prerequisiteFlagEvaluateResult","prerequisiteFlagValue","segmentResult","handleInvalidUserAttribute","stringArray","evaluationDetailsFromEvaluateResult","evaluationDetailsFromDefaultValue","evaluate","evaluator","remoteConfig","getTimestampAsDate","evaluateAll","errors","checkSettingsAvailable","evaluationDetailsArray","projectConfig","ConfigCatClientCache","configCatKernel","cachedInstance","weakRef","token","ConfigCatClient","weakRefCtor","cacheToken","instanceIsAvailable","removedInstances","clientInstanceCache","registerForFinalization","pollingMode","invalidSdkKeyError","optionsClass","actualOptions","isValidSdkKey","instanceAlreadyCreated","configService","removedInstances_1","validateKey","ensureAllowedDefaultValue","err_3","evaluationErrors","err_4","evaluationDetailsArray_1","evaluationDetail","SettingKeyValue","err_5","evaluationDetailsArray_2","settingKey","err_6","ensureAllowedValue","err_7","defaultUser","getRemoteConfig","remoteSettings","flagOverrides","localSettings","Snapshot","__assign","getRemoteConfigAsync","mergedSettings","settingValue","customBaseUrl","proxyPrefix","components","keyLength","finalizationRegistry_1","unregisterToken","getClient","LocalStorageCache","storage","kernel","localStorageGetter","localStorage","getLocalStorage","toUtf8Base64","configString","fromUtf8Base64","testKey","retrievedItem","str","p1","HttpConfigFetcher","lastEtag","url","headers","axiosConfig","statusCode_1","reasonPhrase_1","code","eTag","axios","CONFIGCAT_SDK_VERSION","getClientCommon","thisArg","_arguments","P","adopt","ConfigCatWebProvider","clientFactory","oldSetupHooks","ProviderEvents","evaluationData"],"mappings":"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","x_google_ignoreList":[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31]}