{"version":3,"file":"static/module-spotify-confidence.bdaa4370.js","mappings":"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","sources":["webpack://@spotify-confidence/app/../../node_modules/@spotify-confidence/react/dist/index.js","webpack://@spotify-confidence/app/../../node_modules/@spotify-confidence/sdk/dist/index.js"],"sourcesContent":["import { Value } from '@spotify-confidence/sdk';\nimport React, { createContext, useMemo, useContext, useState, useEffect } from 'react';\n\nconst ConfidenceContext = createContext(null);\nfunction isRendering() {\n try {\n // eslint-disable-next-line\n useContext(ConfidenceContext);\n return true;\n } catch (e) {\n return false;\n }\n}\nclass ConfidenceReact {\n get config() {\n return this.delegate.config;\n }\n /** @internal */ get contextState() {\n return this.delegate.flagState + Value.serialize(this.delegate.getContext());\n }\n track(nameOrManager, message) {\n if (typeof nameOrManager === 'function') {\n return this.delegate.track(nameOrManager);\n }\n this.delegate.track(nameOrManager, message);\n return undefined;\n }\n getContext() {\n return this.delegate.getContext();\n }\n setContext(context) {\n this.delegate.setContext(context);\n }\n subscribe(onStateChange) {\n return this.delegate.subscribe(onStateChange);\n }\n clearContext() {\n this.delegate.clearContext();\n }\n withContext(context) {\n this.assertContext('withContext', 'useWithContext');\n return new ConfidenceReact(this.delegate.withContext(context));\n }\n evaluateFlag(path, defaultValue) {\n this.assertContext('evaluateFlag', 'useEvaluateFlag');\n return this.delegate.evaluateFlag(path, defaultValue);\n }\n getFlag(path, defaultValue) {\n this.assertContext('getFlag', 'useFlag');\n return this.delegate.getFlag(path, defaultValue);\n }\n /* eslint-disable react-hooks/rules-of-hooks */ useWithContext(context) {\n this.assertContext('useWithContext', 'withContext');\n return useWithContext(context, this);\n }\n useEvaluateFlag(path, defaultValue) {\n this.assertContext('useEvaluateFlag', 'evaluateFlag');\n return useEvaluateFlag(path, defaultValue, this);\n }\n useFlag(path, defaultValue) {\n this.assertContext('useFlag', 'getFlag');\n return useFlag(path, defaultValue, this);\n }\n /* eslint-enable react-hooks/rules-of-hooks */ assertContext(fnName, altFnName) {\n if (fnName.startsWith('use')) {\n if (!isRendering()) throw new Error(`${fnName} called outside the body of a function component. Did you mean to call ${altFnName}?`);\n } else {\n if (isRendering()) throw new Error(`${fnName} called inside the body of a function component. Did you mean to call ${altFnName}?`);\n }\n }\n constructor(delegate){\n this.delegate = delegate;\n }\n}\nconst _ConfidenceProvider = ({ confidence, children })=>{\n const confidenceReact = useMemo(()=>new ConfidenceReact(confidence), [\n confidence\n ]);\n return React.createElement(ConfidenceContext.Provider, {\n value: confidenceReact,\n children: children\n });\n};\nconst WithContext = ({ context, children })=>{\n const child = useConfidence().useWithContext(context);\n return React.createElement(ConfidenceContext.Provider, {\n value: child\n }, children);\n};\n// eslint-disable-next-line @typescript-eslint/no-redeclare\nconst ConfidenceProvider = Object.assign(_ConfidenceProvider, {\n WithContext\n});\nconst useConfidence = ()=>{\n const confidenceReact = useContext(ConfidenceContext);\n if (!confidenceReact) throw new Error('No Confidence instance found, did you forget to wrap your component in ConfidenceProvider?');\n const [, setState] = useState(()=>confidenceReact.contextState);\n useEffect(()=>confidenceReact.subscribe((state)=>{\n if (state === 'READY' || state === 'ERROR') setState(confidenceReact.contextState);\n }), [\n confidenceReact,\n setState\n ]);\n return confidenceReact;\n};\n// eslint-disable-next-line react-hooks/rules-of-hooks\nfunction useWithContext(context, parent = useConfidence()) {\n const child = useMemo(()=>new ConfidenceReact(parent.delegate.withContext(context)), // eslint-disable-next-line react-hooks/exhaustive-deps\n [\n parent,\n Value.serialize(context)\n ]);\n const [, setState] = useState(()=>child.contextState);\n useEffect(()=>child.subscribe((state)=>{\n if (state === 'READY' || state === 'ERROR') setState(child.contextState);\n }), [\n child,\n setState\n ]);\n return child;\n}\nfunction useEvaluateFlag(path, defaultValue, // eslint-disable-next-line react-hooks/rules-of-hooks\nconfidence = useConfidence()) {\n const evaluation = confidence.delegate.evaluateFlag(path, defaultValue);\n // TODO make it a setting to _enable skip throwing_ on stale value.\n if (evaluation.reason === 'ERROR' && evaluation.errorCode === 'NOT_READY' && 'then' in evaluation) throw evaluation;\n return evaluation;\n}\n// eslint-disable-next-line react-hooks/rules-of-hooks\nfunction useFlag(path, defaultValue, confidence = useConfidence()) {\n return useEvaluateFlag(path, defaultValue, confidence).value;\n}\n\nexport { ConfidenceProvider, ConfidenceReact, useConfidence, useEvaluateFlag, useFlag, useWithContext };\n//# sourceMappingURL=index.js.map\n","import { onLCP, onINP, onCLS, onTTFB } from 'web-vitals';\n\nfunction _class_private_field_loose_base$2(receiver, privateKey) {\n if (!Object.prototype.hasOwnProperty.call(receiver, privateKey)) {\n throw new TypeError(\"attempted to use private field on non-instance\");\n }\n return receiver;\n}\nvar id$2 = 0;\nfunction _class_private_field_loose_key$2(name) {\n return \"__private_\" + id$2++ + \"_\" + name;\n}\nfunction isPromiseLike(value) {\n return typeof value === 'object' && value !== null && 'then' in value && typeof value.then === 'function';\n}\nvar _state = /*#__PURE__*/ _class_private_field_loose_key$2(\"_state\"), _value = /*#__PURE__*/ _class_private_field_loose_key$2(\"_value\");\nclass AccessiblePromise {\n chain(value, rejected) {\n return new AccessiblePromise(value, rejected);\n }\n get state() {\n return _class_private_field_loose_base$2(this, _state)[_state];\n }\n then(onfulfilled, onrejected) {\n let value = _class_private_field_loose_base$2(this, _value)[_value];\n let rejected = false;\n // eslint-disable-next-line default-case\n switch(_class_private_field_loose_base$2(this, _state)[_state]){\n case 'PENDING':\n value = value.then(onfulfilled, onrejected);\n break;\n case 'RESOLVED':\n if (onfulfilled) {\n try {\n value = onfulfilled(value);\n } catch (e) {\n value = e;\n rejected = true;\n }\n }\n break;\n case 'REJECTED':\n if (onrejected) {\n try {\n value = onrejected(value);\n } catch (e) {\n value = e;\n rejected = true;\n }\n }\n break;\n }\n return this.chain(value, rejected);\n }\n catch(onrejected) {\n return this.then(undefined, onrejected);\n }\n finally(onfinally) {\n return this.then((value)=>{\n onfinally == null ? void 0 : onfinally();\n return value;\n }, (reason)=>{\n onfinally == null ? void 0 : onfinally();\n throw reason;\n });\n }\n orSupply(supplier) {\n if (_class_private_field_loose_base$2(this, _state)[_state] === 'RESOLVED') {\n return _class_private_field_loose_base$2(this, _value)[_value];\n }\n if (_class_private_field_loose_base$2(this, _state)[_state] === 'REJECTED') {\n throw _class_private_field_loose_base$2(this, _value)[_value];\n }\n return supplier();\n }\n orSuspend() {\n return this.orSupply(()=>{\n const error = new Error('Promise is not fulfilled.');\n const then = _class_private_field_loose_base$2(this, _value)[_value].then.bind(_class_private_field_loose_base$2(this, _value)[_value]);\n throw Object.assign(error, {\n then\n });\n });\n }\n orThrow() {\n return this.orSupply(()=>{\n throw new Error('Promise is not fulfilled.');\n });\n }\n or(value) {\n return this.orSupply(()=>value);\n }\n static resolve(value) {\n return new AccessiblePromise(value);\n }\n static reject(reason) {\n return new AccessiblePromise(reason, true);\n }\n constructor(value, rejected){\n Object.defineProperty(this, _state, {\n writable: true,\n value: void 0\n });\n Object.defineProperty(this, _value, {\n writable: true,\n value: void 0\n });\n _class_private_field_loose_base$2(this, _value)[_value] = value;\n if (isPromiseLike(value)) {\n // both value and reason can be promise like in which case we are still pending\n _class_private_field_loose_base$2(this, _state)[_state] = 'PENDING';\n value.then((v)=>{\n _class_private_field_loose_base$2(this, _state)[_state] = 'RESOLVED';\n _class_private_field_loose_base$2(this, _value)[_value] = v;\n }, (reason)=>{\n _class_private_field_loose_base$2(this, _state)[_state] = 'REJECTED';\n _class_private_field_loose_base$2(this, _value)[_value] = reason;\n });\n } else {\n _class_private_field_loose_base$2(this, _state)[_state] = rejected ? 'REJECTED' : 'RESOLVED';\n }\n }\n}\n\nclass TypeMismatchError {\n get path() {\n return this.steps.reduce((path, step)=>{\n if (typeof step === 'string') {\n if (path) {\n return `${path}.${step}`;\n }\n return step;\n }\n return `${path}[${step}]`;\n }, '');\n }\n get message() {\n let message;\n if (this.expected) {\n message = `Expected ${this.expected}`;\n if (this.actual) {\n message += `, but found ${this.actual}`;\n }\n } else {\n message = `Unexpected ${this.actual}`;\n }\n if (this.steps.length) {\n message += `, at path '${this.path}'`;\n }\n return message;\n }\n /**\n * @internal\n *\n * @param step\n * @param fn\n * @returns\n */ static hoist(step, fn) {\n if (!Array.isArray(step)) {\n // eslint-disable-next-line no-param-reassign\n step = [\n step\n ];\n }\n try {\n return fn();\n } catch (err) {\n if (err instanceof TypeMismatchError) {\n // eslint-disable-next-line no-ex-assign\n err = new TypeMismatchError(err.expected, err.actual, [\n ...step,\n ...err.steps\n ]);\n }\n throw err;\n }\n }\n constructor(expected, actual = undefined, steps = []){\n this.expected = expected;\n this.actual = actual;\n this.steps = steps;\n }\n}\n\nvar Value;\n(function(Value) {\n // TODO should lists be able to contain Structs?\n const LIST_ITEM_TYPES = new Set([\n 'number',\n 'string',\n 'boolean'\n ]);\n function assertValue(value) {\n switch(typeof value){\n case 'bigint':\n case 'symbol':\n case 'function':\n throw new TypeMismatchError('number | boolean | string | Struct | List', typeof value);\n case 'object':\n if (value === null) throw new TypeMismatchError('number | boolean | string | Struct | List', 'null');\n if (Array.isArray(value)) {\n if (value.length > 0) {\n const itemType = getType(value[0]);\n if (!LIST_ITEM_TYPES.has(itemType)) {\n throw new TypeMismatchError('number | boolean | string', itemType, [\n 0\n ]);\n }\n for(let i = 1; i < value.length; i++){\n const type = getType(value[i]);\n if (type !== itemType) {\n throw new TypeMismatchError(itemType, type, [\n i\n ]);\n }\n }\n }\n }\n for(const key in value){\n if (Object.prototype.hasOwnProperty.call(value, key)) {\n TypeMismatchError.hoist(key, ()=>assertValue(value[key]));\n }\n }\n return;\n }\n }\n Value.assertValue = assertValue;\n function clone(value) {\n if (isStruct(value)) {\n const cloned = {};\n for (const key of Object.keys(value)){\n cloned[key] = clone(value[key]);\n }\n return Object.freeze(cloned);\n }\n if (isList(value)) {\n return Object.freeze(value.map(clone));\n }\n return value;\n }\n Value.clone = clone;\n function equal(value1, value2) {\n if (value1 === value2) return true;\n const type = getType(value1);\n if (getType(value2) !== type) return false;\n if (type === 'Struct') {\n return structsEqual(value1, value2);\n }\n if (type === 'List') {\n return listsEqual(value1, value2);\n }\n return false;\n }\n Value.equal = equal;\n function structsEqual(struct1, struct2) {\n const keys = Object.keys(struct1);\n if (Object.keys(struct2).length !== keys.length) return false;\n for (const key of keys){\n if (!equal(struct1[key], struct2[key])) return false;\n }\n return true;\n }\n function listsEqual(list1, list2) {\n const length = list1.length;\n if (list2.length !== length) return false;\n for(let i = 0; i < length; i++){\n if (!equal(list1[i], list2[i])) return false;\n }\n return true;\n }\n function getType(value) {\n const jsType = typeof value;\n switch(jsType){\n case 'boolean':\n case 'number':\n case 'string':\n case 'undefined':\n return jsType;\n case 'object':\n return Array.isArray(value) ? 'List' : 'Struct';\n }\n throw new TypeError(`Invalid Value type \"${jsType}\"`);\n }\n Value.getType = getType;\n function isStruct(value) {\n return Value.getType(value) === 'Struct';\n }\n Value.isStruct = isStruct;\n function isList(value) {\n return Value.getType(value) === 'List';\n }\n Value.isList = isList;\n function assertType(expected, found) {\n const actual = Value.getType(found);\n if (expected !== actual) {\n throw new TypeMismatchError(expected, actual);\n }\n }\n Value.assertType = assertType;\n function get(struct, ...parts) {\n let value = struct;\n const errorPath = [];\n /* eslint-disable no-loop-func */ for (const step of parts.flatMap((part)=>part.split('.'))){\n TypeMismatchError.hoist(errorPath, ()=>{\n assertType('Struct', value);\n value = value[step];\n errorPath.push(step);\n });\n }\n /* eslint-enable no-loop-func */ return value;\n }\n Value.get = get;\n function serialize(value) {\n const writer = new Writer();\n writer.writeValue(value);\n return writer.data;\n }\n Value.serialize = serialize;\n function deserialize(data) {\n const reader = new Reader(data);\n return reader.readValue();\n }\n Value.deserialize = deserialize;\n // 8 byte buffer for encoding one float64\n const numberBuffer = new Uint16Array(4);\n class Writer {\n get data() {\n return this.buffer.join('');\n }\n // eslint-disable-next-line consistent-return\n writeValue(value) {\n // eslint-disable-next-line default-case\n switch(getType(value)){\n case 'string':\n return this.writeString(value);\n case 'number':\n return this.writeNumber(value);\n case 'boolean':\n return this.writeBoolean(value);\n case 'Struct':\n return this.writeStruct(value);\n case 'List':\n return this.writeList(value);\n }\n }\n writeString(value) {\n this.buffer.push(String.fromCharCode(0 /* BinaryType.STRING */ , value.length), value);\n }\n writeNumber(value) {\n new DataView(numberBuffer.buffer).setFloat64(0, value);\n this.buffer.push(String.fromCharCode(1 /* BinaryType.NUMBER */ , ...numberBuffer));\n }\n writeBoolean(value) {\n this.buffer.push(String.fromCharCode(value ? 2 /* BinaryType.BOOLEAN_TRUE */ : 3 /* BinaryType.BOOLEAN_FALSE */ ));\n }\n writeList(list) {\n this.buffer.push(String.fromCharCode(4 /* BinaryType.LIST */ , list.length));\n for (const value of list){\n this.writeValue(value);\n }\n }\n writeStruct(struct) {\n const keys = Object.keys(struct).filter((key)=>typeof struct[key] !== 'undefined');\n keys.sort();\n this.buffer.push(String.fromCharCode(5 /* BinaryType.STRUCT */ , keys.length));\n for (const key of keys){\n // naked string\n this.buffer.push(String.fromCharCode(key.length), key);\n this.writeValue(struct[key]);\n }\n }\n constructor(){\n this.buffer = [];\n }\n }\n class Reader {\n // eslint-disable-next-line consistent-return\n readValue() {\n // eslint-disable-next-line default-case\n switch(this.str.charCodeAt(this.pos)){\n case 0 /* BinaryType.STRING */ :\n return this.readString();\n case 1 /* BinaryType.NUMBER */ :\n return this.readNumber();\n case 2 /* BinaryType.BOOLEAN_TRUE */ :\n this.pos++;\n return true;\n case 3 /* BinaryType.BOOLEAN_FALSE */ :\n this.pos++;\n return false;\n case 4 /* BinaryType.LIST */ :\n return this.readList();\n case 5 /* BinaryType.STRUCT */ :\n return this.readStruct();\n }\n }\n readString() {\n this.readType(0 /* BinaryType.STRING */ );\n return this.readNakedString();\n }\n readNumber() {\n this.readType(1 /* BinaryType.NUMBER */ );\n for(let i = 0; i < 4; i++){\n numberBuffer[i] = this.read();\n }\n return new DataView(numberBuffer.buffer).getFloat64(0);\n }\n readBoolean() {\n const type = this.read();\n if (type === 2 /* BinaryType.BOOLEAN_TRUE */ ) return true;\n if (type === 3 /* BinaryType.BOOLEAN_FALSE */ ) return false;\n throw new Error(`Expected type ${2 /* BinaryType.BOOLEAN_TRUE */ }|${3 /* BinaryType.BOOLEAN_FALSE */ } found $type} at pos ${this.pos - 1}`);\n }\n readList() {\n this.readType(4 /* BinaryType.LIST */ );\n const list = [];\n let len = this.read();\n while(--len >= 0){\n list.push(this.readValue());\n }\n return list;\n }\n readStruct() {\n this.readType(5 /* BinaryType.STRUCT */ );\n const struct = {};\n let len = this.read();\n while(--len >= 0){\n const key = this.readNakedString();\n const value = this.readValue();\n struct[key] = value;\n }\n return struct;\n }\n read() {\n if (this.pos >= this.str.length) throw new Error('Read past end of data');\n return this.str.charCodeAt(this.pos++);\n }\n readType(expectedType) {\n const actualType = this.read();\n if (actualType !== expectedType) throw new Error(`Expected type ${expectedType} found ${actualType} at pos ${this.pos - 1}`);\n }\n readNakedString() {\n const len = this.read();\n const start = this.pos;\n this.pos += len;\n if (this.pos > this.str.length) throw new Error('Read past end of data');\n return this.str.substring(start, this.pos);\n }\n constructor(data){\n this.pos = 0;\n this.str = data;\n }\n }\n})(Value || (Value = {}));\n\nclass Schema {\n get(...parts) {\n const steps = parts.flatMap((part)=>part.split('.'));\n if (steps.length === 0) return this;\n return Schema.UNDEFINED;\n }\n // abstract checkAssignsTo(value: Value): Schema.Mismatch | undefined;\n // abstract typeName:Value.TypeName\n constructor(typeName){\n this.typeName = typeName;\n }\n}\n(function(Schema) {\n class Struct extends Schema {\n assertAssignsTo(value) {\n Value.assertType('Struct', value);\n for (const key of Object.keys(value)){\n const fieldSchema = this.fields[key];\n TypeMismatchError.hoist(key, ()=>{\n if (!fieldSchema) {\n Value.assertType('undefined', value);\n } else {\n fieldSchema.assertAssignsTo(value[key]);\n }\n });\n }\n }\n get(...path) {\n const steps = path.flatMap((step)=>step.split('.'));\n if (steps.length === 0) return this;\n const [step, ...rest] = steps;\n const fieldSchema = this.fields[step];\n return TypeMismatchError.hoist(step, ()=>{\n if (!fieldSchema) return Schema.UNDEFINED;\n return fieldSchema.get(...rest);\n });\n }\n constructor(fields){\n super('Struct');\n this.fields = fields;\n }\n }\n class List extends Schema {\n assertAssignsTo(value) {\n Value.assertType('List', value);\n for(let i = 0; i < value.length; i++){\n TypeMismatchError.hoist(i, ()=>{\n this.itemSchema.assertAssignsTo(value[i]);\n });\n }\n }\n constructor(itemSchema){\n super('List');\n this.itemSchema = itemSchema;\n }\n }\n class Primitive extends Schema {\n assertAssignsTo(value) {\n Value.assertType(this.typeName, value);\n }\n }\n class Integer extends Primitive {\n assertAssignsTo(value) {\n Value.assertType('number', value);\n if (!Number.isInteger(value)) {\n throw new TypeMismatchError('Integer', String(value));\n }\n }\n constructor(){\n super('number');\n }\n }\n class Any extends Schema {\n get() {\n return Schema.ANY;\n }\n assertAssignsTo(_value) {\n // no-op\n }\n constructor(){\n super('undefined');\n }\n }\n Schema.ANY = new Any();\n Schema.UNDEFINED = new Primitive('undefined');\n Schema.BOOLEAN = new Primitive('boolean');\n Schema.STRING = new Primitive('string');\n Schema.DOUBLE = new Primitive('number');\n Schema.INTEGER = new Integer();\n function struct(fields) {\n return new Struct(fields);\n }\n Schema.struct = struct;\n function list(itemSchema) {\n return new List(itemSchema);\n }\n Schema.list = list;\n function parse(schema) {\n if (schema.boolSchema) {\n return Schema.BOOLEAN;\n }\n if (schema.doubleSchema) {\n return Schema.DOUBLE;\n }\n if (schema.intSchema) {\n return Schema.INTEGER;\n }\n if (schema.stringSchema) {\n return Schema.STRING;\n }\n if (schema.listSchema) {\n if (!schema.listSchema.elementSchema) throw new TypeError('ListSchema must specify an elementSchema');\n return list(parse(schema.listSchema.elementSchema));\n }\n if (schema.structSchema) {\n return struct(mapValues(schema.structSchema.schema, parse));\n }\n throw new TypeError(`Unknown schema type ${schema}`);\n }\n Schema.parse = parse;\n})(Schema || (Schema = {}));\nfunction mapValues(record, callb) {\n const mapped = {};\n for (const key of Object.keys(record)){\n mapped[key] = callb(record[key], key);\n }\n return mapped;\n}\n\nvar ResolveReason;\n(function(ResolveReason) {\n /** RESOLVE_REASON_UNSPECIFIED - Unspecified enum. */ ResolveReason[ResolveReason[\"RESOLVE_REASON_UNSPECIFIED\"] = 0] = \"RESOLVE_REASON_UNSPECIFIED\";\n /** RESOLVE_REASON_MATCH - The flag was successfully resolved because one rule matched. */ ResolveReason[ResolveReason[\"RESOLVE_REASON_MATCH\"] = 1] = \"RESOLVE_REASON_MATCH\";\n /** RESOLVE_REASON_NO_SEGMENT_MATCH - The flag could not be resolved because no rule matched. */ ResolveReason[ResolveReason[\"RESOLVE_REASON_NO_SEGMENT_MATCH\"] = 2] = \"RESOLVE_REASON_NO_SEGMENT_MATCH\";\n /**\n * RESOLVE_REASON_NO_TREATMENT_MATCH - The flag could not be resolved because the matching rule had no variant\n * that could be assigned.\n */ ResolveReason[ResolveReason[\"RESOLVE_REASON_NO_TREATMENT_MATCH\"] = 3] = \"RESOLVE_REASON_NO_TREATMENT_MATCH\";\n /** RESOLVE_REASON_FLAG_ARCHIVED - The flag could not be resolved because it was archived. */ ResolveReason[ResolveReason[\"RESOLVE_REASON_FLAG_ARCHIVED\"] = 4] = \"RESOLVE_REASON_FLAG_ARCHIVED\";\n /** RESOLVE_REASON_TARGETING_KEY_ERROR - The flag could not be resolved because the targeting key field was invalid */ ResolveReason[ResolveReason[\"RESOLVE_REASON_TARGETING_KEY_ERROR\"] = 5] = \"RESOLVE_REASON_TARGETING_KEY_ERROR\";\n /** RESOLVE_REASON_ERROR - Unknown error occurred during the resolve */ ResolveReason[ResolveReason[\"RESOLVE_REASON_ERROR\"] = 6] = \"RESOLVE_REASON_ERROR\";\n ResolveReason[ResolveReason[\"UNRECOGNIZED\"] = -1] = \"UNRECOGNIZED\";\n})(ResolveReason || (ResolveReason = {}));\nfunction resolveReasonFromJSON(object) {\n switch(object){\n case 0:\n case 'RESOLVE_REASON_UNSPECIFIED':\n return ResolveReason.RESOLVE_REASON_UNSPECIFIED;\n case 1:\n case 'RESOLVE_REASON_MATCH':\n return ResolveReason.RESOLVE_REASON_MATCH;\n case 2:\n case 'RESOLVE_REASON_NO_SEGMENT_MATCH':\n return ResolveReason.RESOLVE_REASON_NO_SEGMENT_MATCH;\n case 3:\n case 'RESOLVE_REASON_NO_TREATMENT_MATCH':\n return ResolveReason.RESOLVE_REASON_NO_TREATMENT_MATCH;\n case 4:\n case 'RESOLVE_REASON_FLAG_ARCHIVED':\n return ResolveReason.RESOLVE_REASON_FLAG_ARCHIVED;\n case 5:\n case 'RESOLVE_REASON_TARGETING_KEY_ERROR':\n return ResolveReason.RESOLVE_REASON_TARGETING_KEY_ERROR;\n case 6:\n case 'RESOLVE_REASON_ERROR':\n return ResolveReason.RESOLVE_REASON_ERROR;\n case -1:\n case 'UNRECOGNIZED':\n default:\n return ResolveReason.UNRECOGNIZED;\n }\n}\nfunction resolveReasonToJSON(object) {\n switch(object){\n case ResolveReason.RESOLVE_REASON_UNSPECIFIED:\n return 'RESOLVE_REASON_UNSPECIFIED';\n case ResolveReason.RESOLVE_REASON_MATCH:\n return 'RESOLVE_REASON_MATCH';\n case ResolveReason.RESOLVE_REASON_NO_SEGMENT_MATCH:\n return 'RESOLVE_REASON_NO_SEGMENT_MATCH';\n case ResolveReason.RESOLVE_REASON_NO_TREATMENT_MATCH:\n return 'RESOLVE_REASON_NO_TREATMENT_MATCH';\n case ResolveReason.RESOLVE_REASON_FLAG_ARCHIVED:\n return 'RESOLVE_REASON_FLAG_ARCHIVED';\n case ResolveReason.RESOLVE_REASON_TARGETING_KEY_ERROR:\n return 'RESOLVE_REASON_TARGETING_KEY_ERROR';\n case ResolveReason.RESOLVE_REASON_ERROR:\n return 'RESOLVE_REASON_ERROR';\n case ResolveReason.UNRECOGNIZED:\n default:\n return 'UNRECOGNIZED';\n }\n}\nvar SdkId;\n(function(SdkId) {\n /** SDK_ID_UNSPECIFIED - Unspecified enum. */ SdkId[SdkId[\"SDK_ID_UNSPECIFIED\"] = 0] = \"SDK_ID_UNSPECIFIED\";\n /** SDK_ID_JAVA_PROVIDER - Confidence OpenFeature Java Provider. */ SdkId[SdkId[\"SDK_ID_JAVA_PROVIDER\"] = 1] = \"SDK_ID_JAVA_PROVIDER\";\n /** SDK_ID_KOTLIN_PROVIDER - Confidence OpenFeature Kotlin Provider. */ SdkId[SdkId[\"SDK_ID_KOTLIN_PROVIDER\"] = 2] = \"SDK_ID_KOTLIN_PROVIDER\";\n /** SDK_ID_SWIFT_PROVIDER - Confidence OpenFeature Swift Provider. */ SdkId[SdkId[\"SDK_ID_SWIFT_PROVIDER\"] = 3] = \"SDK_ID_SWIFT_PROVIDER\";\n /** SDK_ID_JS_WEB_PROVIDER - Confidence OpenFeature JavaScript Provider for Web (client). */ SdkId[SdkId[\"SDK_ID_JS_WEB_PROVIDER\"] = 4] = \"SDK_ID_JS_WEB_PROVIDER\";\n /** SDK_ID_JS_SERVER_PROVIDER - Confidence OpenFeature JavaScript Provider for server. */ SdkId[SdkId[\"SDK_ID_JS_SERVER_PROVIDER\"] = 5] = \"SDK_ID_JS_SERVER_PROVIDER\";\n /** SDK_ID_PYTHON_PROVIDER - Confidence OpenFeature Python Provider. */ SdkId[SdkId[\"SDK_ID_PYTHON_PROVIDER\"] = 6] = \"SDK_ID_PYTHON_PROVIDER\";\n /** SDK_ID_GO_PROVIDER - Confidence OpenFeature GO Provider. */ SdkId[SdkId[\"SDK_ID_GO_PROVIDER\"] = 7] = \"SDK_ID_GO_PROVIDER\";\n /** SDK_ID_RUBY_PROVIDER - Confidence OpenFeature Ruby Provider. */ SdkId[SdkId[\"SDK_ID_RUBY_PROVIDER\"] = 8] = \"SDK_ID_RUBY_PROVIDER\";\n /** SDK_ID_RUST_PROVIDER - Confidence OpenFeature Rust Provider. */ SdkId[SdkId[\"SDK_ID_RUST_PROVIDER\"] = 9] = \"SDK_ID_RUST_PROVIDER\";\n /** SDK_ID_JAVA_CONFIDENCE - Confidence Java SDK. */ SdkId[SdkId[\"SDK_ID_JAVA_CONFIDENCE\"] = 10] = \"SDK_ID_JAVA_CONFIDENCE\";\n /** SDK_ID_KOTLIN_CONFIDENCE - Confidence Kotlin SDK. */ SdkId[SdkId[\"SDK_ID_KOTLIN_CONFIDENCE\"] = 11] = \"SDK_ID_KOTLIN_CONFIDENCE\";\n /** SDK_ID_SWIFT_CONFIDENCE - Confidence Swift SDK. */ SdkId[SdkId[\"SDK_ID_SWIFT_CONFIDENCE\"] = 12] = \"SDK_ID_SWIFT_CONFIDENCE\";\n /** SDK_ID_JS_CONFIDENCE - Confidence JavaScript SDK. */ SdkId[SdkId[\"SDK_ID_JS_CONFIDENCE\"] = 13] = \"SDK_ID_JS_CONFIDENCE\";\n /** SDK_ID_PYTHON_CONFIDENCE - Confidence Python SDK. */ SdkId[SdkId[\"SDK_ID_PYTHON_CONFIDENCE\"] = 14] = \"SDK_ID_PYTHON_CONFIDENCE\";\n /** SDK_ID_GO_CONFIDENCE - Confidence GO SDK. */ SdkId[SdkId[\"SDK_ID_GO_CONFIDENCE\"] = 15] = \"SDK_ID_GO_CONFIDENCE\";\n SdkId[SdkId[\"UNRECOGNIZED\"] = -1] = \"UNRECOGNIZED\";\n})(SdkId || (SdkId = {}));\nfunction sdkIdFromJSON(object) {\n switch(object){\n case 0:\n case 'SDK_ID_UNSPECIFIED':\n return SdkId.SDK_ID_UNSPECIFIED;\n case 1:\n case 'SDK_ID_JAVA_PROVIDER':\n return SdkId.SDK_ID_JAVA_PROVIDER;\n case 2:\n case 'SDK_ID_KOTLIN_PROVIDER':\n return SdkId.SDK_ID_KOTLIN_PROVIDER;\n case 3:\n case 'SDK_ID_SWIFT_PROVIDER':\n return SdkId.SDK_ID_SWIFT_PROVIDER;\n case 4:\n case 'SDK_ID_JS_WEB_PROVIDER':\n return SdkId.SDK_ID_JS_WEB_PROVIDER;\n case 5:\n case 'SDK_ID_JS_SERVER_PROVIDER':\n return SdkId.SDK_ID_JS_SERVER_PROVIDER;\n case 6:\n case 'SDK_ID_PYTHON_PROVIDER':\n return SdkId.SDK_ID_PYTHON_PROVIDER;\n case 7:\n case 'SDK_ID_GO_PROVIDER':\n return SdkId.SDK_ID_GO_PROVIDER;\n case 8:\n case 'SDK_ID_RUBY_PROVIDER':\n return SdkId.SDK_ID_RUBY_PROVIDER;\n case 9:\n case 'SDK_ID_RUST_PROVIDER':\n return SdkId.SDK_ID_RUST_PROVIDER;\n case 10:\n case 'SDK_ID_JAVA_CONFIDENCE':\n return SdkId.SDK_ID_JAVA_CONFIDENCE;\n case 11:\n case 'SDK_ID_KOTLIN_CONFIDENCE':\n return SdkId.SDK_ID_KOTLIN_CONFIDENCE;\n case 12:\n case 'SDK_ID_SWIFT_CONFIDENCE':\n return SdkId.SDK_ID_SWIFT_CONFIDENCE;\n case 13:\n case 'SDK_ID_JS_CONFIDENCE':\n return SdkId.SDK_ID_JS_CONFIDENCE;\n case 14:\n case 'SDK_ID_PYTHON_CONFIDENCE':\n return SdkId.SDK_ID_PYTHON_CONFIDENCE;\n case 15:\n case 'SDK_ID_GO_CONFIDENCE':\n return SdkId.SDK_ID_GO_CONFIDENCE;\n case -1:\n case 'UNRECOGNIZED':\n default:\n return SdkId.UNRECOGNIZED;\n }\n}\nfunction sdkIdToJSON(object) {\n switch(object){\n case SdkId.SDK_ID_UNSPECIFIED:\n return 'SDK_ID_UNSPECIFIED';\n case SdkId.SDK_ID_JAVA_PROVIDER:\n return 'SDK_ID_JAVA_PROVIDER';\n case SdkId.SDK_ID_KOTLIN_PROVIDER:\n return 'SDK_ID_KOTLIN_PROVIDER';\n case SdkId.SDK_ID_SWIFT_PROVIDER:\n return 'SDK_ID_SWIFT_PROVIDER';\n case SdkId.SDK_ID_JS_WEB_PROVIDER:\n return 'SDK_ID_JS_WEB_PROVIDER';\n case SdkId.SDK_ID_JS_SERVER_PROVIDER:\n return 'SDK_ID_JS_SERVER_PROVIDER';\n case SdkId.SDK_ID_PYTHON_PROVIDER:\n return 'SDK_ID_PYTHON_PROVIDER';\n case SdkId.SDK_ID_GO_PROVIDER:\n return 'SDK_ID_GO_PROVIDER';\n case SdkId.SDK_ID_RUBY_PROVIDER:\n return 'SDK_ID_RUBY_PROVIDER';\n case SdkId.SDK_ID_RUST_PROVIDER:\n return 'SDK_ID_RUST_PROVIDER';\n case SdkId.SDK_ID_JAVA_CONFIDENCE:\n return 'SDK_ID_JAVA_CONFIDENCE';\n case SdkId.SDK_ID_KOTLIN_CONFIDENCE:\n return 'SDK_ID_KOTLIN_CONFIDENCE';\n case SdkId.SDK_ID_SWIFT_CONFIDENCE:\n return 'SDK_ID_SWIFT_CONFIDENCE';\n case SdkId.SDK_ID_JS_CONFIDENCE:\n return 'SDK_ID_JS_CONFIDENCE';\n case SdkId.SDK_ID_PYTHON_CONFIDENCE:\n return 'SDK_ID_PYTHON_CONFIDENCE';\n case SdkId.SDK_ID_GO_CONFIDENCE:\n return 'SDK_ID_GO_CONFIDENCE';\n case SdkId.UNRECOGNIZED:\n default:\n return 'UNRECOGNIZED';\n }\n}\nconst Sdk = {\n fromJSON (object) {\n return {\n id: isSet$3(object.id) ? sdkIdFromJSON(object.id) : undefined,\n customId: isSet$3(object.customId) ? globalThis.String(object.customId) : undefined,\n version: isSet$3(object.version) ? globalThis.String(object.version) : ''\n };\n },\n toJSON (message) {\n const obj = {};\n if (message.id !== undefined) {\n obj.id = sdkIdToJSON(message.id);\n }\n if (message.customId !== undefined) {\n obj.customId = message.customId;\n }\n if (message.version !== '') {\n obj.version = message.version;\n }\n return obj;\n }\n};\nfunction isSet$3(value) {\n return value !== null && value !== undefined;\n}\n\nconst FLAG_PREFIX$1 = 'flags/';\nvar FlagResolution;\n(function(FlagResolution) {\n function ready(context, response, applier) {\n return new ReadyFlagResolution(context, response, applier);\n }\n FlagResolution.ready = ready;\n function failed(context, code, message) {\n return new FailedFlagResolution(context, code, message);\n }\n FlagResolution.failed = failed;\n})(FlagResolution || (FlagResolution = {}));\nclass ReadyFlagResolution {\n evaluate(path, defaultValue) {\n try {\n const [name, ...steps] = path.split('.');\n const flag = this.flags.get(name);\n if (!flag) {\n return {\n reason: 'ERROR',\n value: defaultValue,\n errorCode: 'FLAG_NOT_FOUND',\n errorMessage: `Flag \"${name}\" not found`\n };\n }\n const reason = flag.reason;\n if (reason === 'ERROR') throw new Error('Unknown resolve error');\n if (reason !== 'MATCH') {\n if (reason === 'NO_SEGMENT_MATCH' && this.applier) {\n this.applier == null ? void 0 : this.applier.call(this, name);\n }\n return {\n reason,\n value: defaultValue\n };\n }\n const value = TypeMismatchError.hoist(name, ()=>Value.get(flag.value, ...steps));\n const schema = flag.schema.get(...steps);\n TypeMismatchError.hoist([\n 'defaultValue',\n ...steps\n ], ()=>{\n schema.assertAssignsTo(defaultValue);\n });\n this.applier == null ? void 0 : this.applier.call(this, name);\n return {\n reason,\n value,\n variant: flag.variant\n };\n } catch (e) {\n var _e_message;\n return {\n reason: 'ERROR',\n value: defaultValue,\n errorCode: e instanceof TypeMismatchError ? 'TYPE_MISMATCH' : 'GENERAL',\n errorMessage: (_e_message = e.message) != null ? _e_message : 'Unknown error'\n };\n }\n }\n constructor(context, resolveResponse, applier){\n this.flags = new Map();\n this.context = context;\n this.applier = applier;\n for (const { flag, variant, value, reason, flagSchema } of resolveResponse.resolvedFlags){\n const name = flag.slice(FLAG_PREFIX$1.length);\n const schema = flagSchema ? Schema.parse({\n structSchema: flagSchema\n }) : Schema.ANY;\n this.flags.set(name, {\n schema,\n value: value,\n variant,\n reason: toEvaluationReason(reason)\n });\n }\n this.resolveToken = base64FromBytes$1(resolveResponse.resolveToken);\n }\n}\nReadyFlagResolution.prototype.state = 'READY';\nclass FailedFlagResolution {\n evaluate(_path, defaultValue) {\n return {\n reason: 'ERROR',\n value: defaultValue,\n errorCode: this.code,\n errorMessage: this.message\n };\n }\n constructor(context, code, message){\n this.context = context;\n this.code = code;\n this.message = message;\n }\n}\nFailedFlagResolution.prototype.state = 'ERROR';\nfunction toEvaluationReason(reason) {\n switch(reason){\n case ResolveReason.RESOLVE_REASON_UNSPECIFIED:\n return 'UNSPECIFIED';\n case ResolveReason.RESOLVE_REASON_MATCH:\n return 'MATCH';\n case ResolveReason.RESOLVE_REASON_NO_SEGMENT_MATCH:\n return 'NO_SEGMENT_MATCH';\n case ResolveReason.RESOLVE_REASON_NO_TREATMENT_MATCH:\n return 'NO_TREATMENT_MATCH';\n case ResolveReason.RESOLVE_REASON_FLAG_ARCHIVED:\n return 'FLAG_ARCHIVED';\n case ResolveReason.RESOLVE_REASON_TARGETING_KEY_ERROR:\n return 'TARGETING_KEY_ERROR';\n case ResolveReason.RESOLVE_REASON_ERROR:\n return 'ERROR';\n default:\n return 'UNSPECIFIED';\n }\n}\nfunction base64FromBytes$1(arr) {\n if (globalThis.Buffer) {\n return globalThis.Buffer.from(arr).toString('base64');\n }\n const bin = [];\n arr.forEach((byte)=>{\n bin.push(globalThis.String.fromCharCode(byte));\n });\n return globalThis.btoa(bin.join(''));\n}\n\nfunction asyncGeneratorStep$3(gen, resolve, reject, _next, _throw, key, arg) {\n try {\n var info = gen[key](arg);\n var value = info.value;\n } catch (error) {\n reject(error);\n return;\n }\n if (info.done) {\n resolve(value);\n } else {\n Promise.resolve(value).then(_next, _throw);\n }\n}\nfunction _async_to_generator$3(fn) {\n return function() {\n var self = this, args = arguments;\n return new Promise(function(resolve, reject) {\n var gen = fn.apply(self, args);\n function _next(value) {\n asyncGeneratorStep$3(gen, resolve, reject, _next, _throw, \"next\", value);\n }\n function _throw(err) {\n asyncGeneratorStep$3(gen, resolve, reject, _next, _throw, \"throw\", err);\n }\n _next(undefined);\n });\n };\n}\nclass RequestError extends Error {\n}\nclass TimeoutError extends RequestError {\n constructor(){\n super('Request timed out');\n }\n}\n/**\n * Build a fetch function by adding \"primitives\" such as retry, rateLimit and timeout.\n *\n * Example usage:\n * ```\n * const customFetch = new FetchBuilder()\n * .timeout(1000)\n * .retry()\n * .rateLimit()\n * .build(fetch);\n *\n * const resp = await customFetch('http://test.com');\n * ```\n *\n * The primitives apply in the same order they are written.\n *\n * @privateRemarks\n *\n * The primitive implementations all follow a common pattern of just adding a composition:\n * ```\n * noopPrimitive(): this {\n * return this.compose(next => async request => {\n * // here we're \"in\" a fetch call and could modify the request\n * const response = await next(request);\n * // after the upstream call, we could also modify the response\n * return response;\n * })\n * }\n * ```\n *\n */ class FetchBuilder {\n /**\n * Compose a fetch primitive (inner) with the existing primitive in the builder (outer).\n *\n * @param inner - the primitive to add to the chain\n * @returns the builder itself\n */ compose(inner) {\n const outer = this.impl;\n if (outer) {\n this.impl = (next)=>outer(inner(next));\n } else {\n // in the initial state we don't have outer and no composition is needed\n this.impl = inner;\n }\n return this;\n }\n /**\n * Apply a timeout that aborts the ongoing request with a {@link TimeoutError}\n *\n * @param duration - milliseconds after which to abort\n * @returns the builder itself\n */ timeout(duration) {\n return this.compose((next)=>(request)=>{\n const [signal, abort] = abortController(request.signal);\n // prefer using our own timeout over AbortSignal.timeout() since it plays well with fakeTimers in tests\n const timeoutId = setTimeout(()=>{\n abort(new TimeoutError());\n }, duration);\n return next(new Request(request, {\n signal\n })).finally(()=>{\n clearTimeout(timeoutId);\n });\n });\n }\n /**\n * Only allow one outstanding request. If a new request is made, the existing request it aborted with {@link RequestError}\n *\n * @returns the builder itself\n */ abortPrevious() {\n let abortPrevious;\n return this.compose((next)=>(request)=>{\n abortPrevious == null ? void 0 : abortPrevious();\n const [abortableRequest, abort] = makeAbortable(request);\n abortPrevious = ()=>abort(new RequestError('Request superseded'));\n return next(abortableRequest);\n });\n }\n /**\n * Turn all non 200 responses into {@link RequestError} rejections.\n *\n * @returns the builder itself\n */ rejectNotOk() {\n return this.rejectOn((resp)=>!resp.ok);\n }\n /**\n * Reject responses based on a callback examining the response.\n * Will reject the response with {@link RequestError} if the callback returns true.\n * @param callback - the callback to determine if the response should be rejected\n * @returns the builder itself\n */ rejectOn(callback) {\n return this.compose((next)=>(request)=>next(request).then((response)=>{\n if (callback(response)) throw new RequestError(`${response.status}: ${response.statusText}`);\n return response;\n }));\n }\n /**\n * Only allow `maxPending` outstanding requests. Requests made while at the limit will directly reject with {@link RequestError}\n *\n * @param maxPending - the number of simultaneous requests supported\n * @returns the builder itself\n */ limitPending(maxPending) {\n let pending = 0;\n return this.compose((next)=>(request)=>{\n if (pending >= maxPending) return Promise.reject(new RequestError('Number of pending requests exceeded'));\n pending++;\n return next(request).finally(()=>{\n pending--;\n });\n });\n }\n /**\n * Control the rate of requests with a \"token bucket\" scheme. Every request requires 1 token to proceed.\n * Tokens are continuously produced at `tokenFillRate`, until `maxTokens`. This enables limited burstiness as\n * requests are free to proceed as long as there are more than one token available. When less than one token\n * is available requests are queued without bound. See {@link FetchBuilder.limitPending } to manage the queue size.\n *\n * @param tokenFillRate - tokens to produce per second\n * @param options.maxTokens - the number of tokens to refill\n * @param options.initialTokens - the initial number of tokens, can be larger than `maxTokens`\n * @returns the builder itself\n */ rateLimit(tokenFillRate, { maxTokens = tokenFillRate, initialTokens = tokenFillRate } = {}) {\n precondition(tokenFillRate > 0, 'tokenFillRate must be positive');\n let lastRefillTime = Number.NEGATIVE_INFINITY;\n let tokens = initialTokens;\n let nextRun = Promise.resolve();\n return this.compose((next)=>(request)=>{\n nextRun = nextRun// catch the potential abort of the previous run\n .catch(()=>{}).then(/*#__PURE__*/ _async_to_generator$3(function*() {\n refillTokens();\n // we can only send a request if we have at least one token\n if (tokens < 1) {\n // wait until tokens is one\n yield abortableSleep((1 - tokens) / tokenFillRate * 1000, request.signal);\n }\n }));\n return nextRun.then(()=>{\n tokens--;\n return next(request);\n });\n });\n function refillTokens() {\n const currentTime = Date.now();\n // initialTokens might be higher than maxTokens, so we don't refill until we've dropped below maxTokens\n if (Number.isFinite(lastRefillTime) && tokens < maxTokens) {\n const elapsed = (currentTime - lastRefillTime) / 1000;\n tokens = Math.min(maxTokens, tokens + elapsed * tokenFillRate);\n }\n lastRefillTime = currentTime;\n }\n }\n /**\n * Retry rejected requests.\n *\n * @param options.maxRetries - the maximum number of retires, defaults to unbounded\n * @param options.delay - the delay between retries, defaults to zero\n * @param options.backoff - multiplier for exponentially increasing the delay, defaults to `2`\n * @param options.jitter - random jitter as a ratio (.i.e `0.1` means ±10% jitter), defaults to zero\n * @param options.maxDelay - the maximum duration at which backoff will no longer apply, defaults to unbounded\n * @returns the builder itself\n */ retry({ maxRetries = Number.POSITIVE_INFINITY, delay = 0, maxDelay = Number.POSITIVE_INFINITY, backoff = 2, jitter = 0 } = {}) {\n precondition(maxRetries >= 0, 'maxRetries must be larger or equal to zero');\n return this.compose((next)=>/*#__PURE__*/ _async_to_generator$3(function*(request) {\n let retryCount = 0;\n const doRetry = /*#__PURE__*/ _async_to_generator$3(function*(e) {\n var _request_signal;\n (_request_signal = request.signal) == null ? void 0 : _request_signal.throwIfAborted();\n // if there are no more attempts we throw the last error\n if (retryCount >= maxRetries) throw e;\n const jitterFactor = 1 + 2 * Math.random() * jitter - jitter;\n yield abortableSleep(jitterFactor * Math.min(maxDelay, delay * Math.pow(backoff, retryCount)), request.signal);\n retryCount++;\n return next(request.clone()).catch(doRetry);\n });\n return next(request.clone()).catch(doRetry);\n }));\n }\n /**\n * Modify the request.\n *\n * @param mod - a (possibly async) function to transform the request\n * @returns the builder itself\n */ modifyRequest(mod) {\n return this.compose((next)=>/*#__PURE__*/ _async_to_generator$3(function*(request) {\n return next((yield mod(request)));\n }));\n }\n /**\n * Possibly forward requests to another fetch implementation based on url matching.\n * Unmatched requests will proceed as usual.\n *\n * @param match - predicate matching the url\n * @param fetch - the fetch implementation to receive matching requests\n * @returns the builder itself\n */ route(match, fetch) {\n return this.compose((next)=>(request)=>match(request.url) ? fetch(request) : next(request));\n }\n /**\n * Finish the primitive composition and return a full fetch implementation.\n *\n * @param sink - the fetch implementation to send the actual request\n * @returns the built fetch implementation\n */ build(sink) {\n const impl = this.impl ? this.impl(sink) : sink;\n return (input, init)=>impl(new Request(input, init));\n }\n}\n/**\n * Simplifies the common task of making a request abortable, while also respecting an existing abort signal\n * ```\n * const [myRequest, abort] = makeAbortable(request);\n * // myRequest is identical to request but can be aborted by calling abort(reason)\n * ```\n * @param request - the request to clone\n * @returns tuple of the cloned request and its abort function\n */ function makeAbortable(request) {\n const [signal, abort] = abortController(request.signal);\n return [\n new Request(request, {\n signal\n }),\n abort\n ];\n}\n/**\n * Utility function that simplifies working with AbortController:\n * ```\n * // signal will activate when abort is called OR when someOtherSignal activates\n * const [signal, abort] = abortController(someOtherSignal);\n * ```\n * @param follow - optional AbortSignals that should be followed\n * @returns tuple of signal and corresponding abort function\n */ function abortController(...follow) {\n const controller = new AbortController();\n function listener() {\n controller.abort(this.reason);\n }\n for (const signal of follow){\n // request should always have signal, but the cross-fetch polyfill used in tests doesn't comply, hence this check\n if (!signal) continue;\n signal.addEventListener('abort', listener);\n }\n return [\n controller.signal,\n controller.abort.bind(controller)\n ];\n}\nfunction abortableSleep(milliseconds, signal) {\n if (milliseconds <= 0) return Promise.resolve();\n return new Promise((resolve, reject)=>{\n if (signal) {\n const abort = ()=>reject(signal.reason);\n if (signal.aborted) {\n abort();\n return;\n }\n signal.addEventListener('abort', abort);\n }\n setTimeout(resolve, milliseconds);\n });\n}\nfunction precondition(condition, message) {\n if (!condition) throw new TypeError(message);\n}\n\nconst Timestamp = {\n fromJSON (object) {\n return {\n seconds: isSet$2(object.seconds) ? globalThis.Number(object.seconds) : 0,\n nanos: isSet$2(object.nanos) ? globalThis.Number(object.nanos) : 0\n };\n },\n toJSON (message) {\n const obj = {};\n if (message.seconds !== 0) {\n obj.seconds = Math.round(message.seconds);\n }\n if (message.nanos !== 0) {\n obj.nanos = Math.round(message.nanos);\n }\n return obj;\n }\n};\nfunction isSet$2(value) {\n return value !== null && value !== undefined;\n}\n\nconst FlagSchema = {\n fromJSON (object) {\n return {\n structSchema: isSet$1(object.structSchema) ? FlagSchema_StructFlagSchema.fromJSON(object.structSchema) : undefined,\n listSchema: isSet$1(object.listSchema) ? FlagSchema_ListFlagSchema.fromJSON(object.listSchema) : undefined,\n intSchema: isSet$1(object.intSchema) ? FlagSchema_IntFlagSchema.fromJSON(object.intSchema) : undefined,\n doubleSchema: isSet$1(object.doubleSchema) ? FlagSchema_DoubleFlagSchema.fromJSON(object.doubleSchema) : undefined,\n stringSchema: isSet$1(object.stringSchema) ? FlagSchema_StringFlagSchema.fromJSON(object.stringSchema) : undefined,\n boolSchema: isSet$1(object.boolSchema) ? FlagSchema_BoolFlagSchema.fromJSON(object.boolSchema) : undefined\n };\n },\n toJSON (message) {\n const obj = {};\n if (message.structSchema !== undefined) {\n obj.structSchema = FlagSchema_StructFlagSchema.toJSON(message.structSchema);\n }\n if (message.listSchema !== undefined) {\n obj.listSchema = FlagSchema_ListFlagSchema.toJSON(message.listSchema);\n }\n if (message.intSchema !== undefined) {\n obj.intSchema = FlagSchema_IntFlagSchema.toJSON(message.intSchema);\n }\n if (message.doubleSchema !== undefined) {\n obj.doubleSchema = FlagSchema_DoubleFlagSchema.toJSON(message.doubleSchema);\n }\n if (message.stringSchema !== undefined) {\n obj.stringSchema = FlagSchema_StringFlagSchema.toJSON(message.stringSchema);\n }\n if (message.boolSchema !== undefined) {\n obj.boolSchema = FlagSchema_BoolFlagSchema.toJSON(message.boolSchema);\n }\n return obj;\n }\n};\nconst FlagSchema_StructFlagSchema = {\n fromJSON (object) {\n return {\n schema: isObject$1(object.schema) ? Object.entries(object.schema).reduce((acc, [key, value])=>{\n acc[key] = FlagSchema.fromJSON(value);\n return acc;\n }, {}) : {}\n };\n },\n toJSON (message) {\n const obj = {};\n if (message.schema) {\n const entries = Object.entries(message.schema);\n if (entries.length > 0) {\n obj.schema = {};\n entries.forEach(([k, v])=>{\n obj.schema[k] = FlagSchema.toJSON(v);\n });\n }\n }\n return obj;\n }\n};\nconst FlagSchema_DoubleFlagSchema = {\n fromJSON (_) {\n return {};\n },\n toJSON (_) {\n const obj = {};\n return obj;\n }\n};\nconst FlagSchema_IntFlagSchema = {\n fromJSON (_) {\n return {};\n },\n toJSON (_) {\n const obj = {};\n return obj;\n }\n};\nconst FlagSchema_StringFlagSchema = {\n fromJSON (_) {\n return {};\n },\n toJSON (_) {\n const obj = {};\n return obj;\n }\n};\nconst FlagSchema_BoolFlagSchema = {\n fromJSON (_) {\n return {};\n },\n toJSON (_) {\n const obj = {};\n return obj;\n }\n};\nconst FlagSchema_ListFlagSchema = {\n fromJSON (object) {\n return {\n elementSchema: isSet$1(object.elementSchema) ? FlagSchema.fromJSON(object.elementSchema) : undefined\n };\n },\n toJSON (message) {\n const obj = {};\n if (message.elementSchema !== undefined) {\n obj.elementSchema = FlagSchema.toJSON(message.elementSchema);\n }\n return obj;\n }\n};\nfunction isObject$1(value) {\n return typeof value === 'object' && value !== null;\n}\nfunction isSet$1(value) {\n return value !== null && value !== undefined;\n}\n\nconst ResolveFlagsRequest = {\n fromJSON (object) {\n return {\n flags: globalThis.Array.isArray(object == null ? void 0 : object.flags) ? object.flags.map((e)=>globalThis.String(e)) : [],\n evaluationContext: isObject(object.evaluationContext) ? object.evaluationContext : undefined,\n clientSecret: isSet(object.clientSecret) ? globalThis.String(object.clientSecret) : '',\n apply: isSet(object.apply) ? globalThis.Boolean(object.apply) : false,\n sdk: isSet(object.sdk) ? Sdk.fromJSON(object.sdk) : undefined\n };\n },\n toJSON (message) {\n var _message_flags;\n const obj = {};\n if ((_message_flags = message.flags) == null ? void 0 : _message_flags.length) {\n obj.flags = message.flags;\n }\n if (message.evaluationContext !== undefined) {\n obj.evaluationContext = message.evaluationContext;\n }\n if (message.clientSecret !== '') {\n obj.clientSecret = message.clientSecret;\n }\n if (message.apply !== false) {\n obj.apply = message.apply;\n }\n if (message.sdk !== undefined) {\n obj.sdk = Sdk.toJSON(message.sdk);\n }\n return obj;\n }\n};\nconst ResolveFlagsResponse = {\n fromJSON (object) {\n return {\n resolvedFlags: globalThis.Array.isArray(object == null ? void 0 : object.resolvedFlags) ? object.resolvedFlags.map((e)=>ResolvedFlag.fromJSON(e)) : [],\n resolveToken: isSet(object.resolveToken) ? bytesFromBase64(object.resolveToken) : new Uint8Array(0),\n resolveId: isSet(object.resolveId) ? globalThis.String(object.resolveId) : ''\n };\n },\n toJSON (message) {\n var _message_resolvedFlags;\n const obj = {};\n if ((_message_resolvedFlags = message.resolvedFlags) == null ? void 0 : _message_resolvedFlags.length) {\n obj.resolvedFlags = message.resolvedFlags.map((e)=>ResolvedFlag.toJSON(e));\n }\n if (message.resolveToken.length !== 0) {\n obj.resolveToken = base64FromBytes(message.resolveToken);\n }\n if (message.resolveId !== '') {\n obj.resolveId = message.resolveId;\n }\n return obj;\n }\n};\nconst ApplyFlagsRequest = {\n fromJSON (object) {\n return {\n flags: globalThis.Array.isArray(object == null ? void 0 : object.flags) ? object.flags.map((e)=>AppliedFlag.fromJSON(e)) : [],\n clientSecret: isSet(object.clientSecret) ? globalThis.String(object.clientSecret) : '',\n resolveToken: isSet(object.resolveToken) ? bytesFromBase64(object.resolveToken) : new Uint8Array(0),\n sendTime: isSet(object.sendTime) ? fromJsonTimestamp(object.sendTime) : undefined,\n sdk: isSet(object.sdk) ? Sdk.fromJSON(object.sdk) : undefined\n };\n },\n toJSON (message) {\n var _message_flags;\n const obj = {};\n if ((_message_flags = message.flags) == null ? void 0 : _message_flags.length) {\n obj.flags = message.flags.map((e)=>AppliedFlag.toJSON(e));\n }\n if (message.clientSecret !== '') {\n obj.clientSecret = message.clientSecret;\n }\n if (message.resolveToken.length !== 0) {\n obj.resolveToken = base64FromBytes(message.resolveToken);\n }\n if (message.sendTime !== undefined) {\n obj.sendTime = message.sendTime.toISOString();\n }\n if (message.sdk !== undefined) {\n obj.sdk = Sdk.toJSON(message.sdk);\n }\n return obj;\n }\n};\nconst AppliedFlag = {\n fromJSON (object) {\n return {\n flag: isSet(object.flag) ? globalThis.String(object.flag) : '',\n applyTime: isSet(object.applyTime) ? fromJsonTimestamp(object.applyTime) : undefined\n };\n },\n toJSON (message) {\n const obj = {};\n if (message.flag !== '') {\n obj.flag = message.flag;\n }\n if (message.applyTime !== undefined) {\n obj.applyTime = message.applyTime.toISOString();\n }\n return obj;\n }\n};\nconst ResolvedFlag = {\n fromJSON (object) {\n return {\n flag: isSet(object.flag) ? globalThis.String(object.flag) : '',\n variant: isSet(object.variant) ? globalThis.String(object.variant) : '',\n value: isObject(object.value) ? object.value : undefined,\n flagSchema: isSet(object.flagSchema) ? FlagSchema_StructFlagSchema.fromJSON(object.flagSchema) : undefined,\n reason: isSet(object.reason) ? resolveReasonFromJSON(object.reason) : 0\n };\n },\n toJSON (message) {\n const obj = {};\n if (message.flag !== '') {\n obj.flag = message.flag;\n }\n if (message.variant !== '') {\n obj.variant = message.variant;\n }\n if (message.value !== undefined) {\n obj.value = message.value;\n }\n if (message.flagSchema !== undefined) {\n obj.flagSchema = FlagSchema_StructFlagSchema.toJSON(message.flagSchema);\n }\n if (message.reason !== 0) {\n obj.reason = resolveReasonToJSON(message.reason);\n }\n return obj;\n }\n};\nfunction bytesFromBase64(b64) {\n if (globalThis.Buffer) {\n return Uint8Array.from(globalThis.Buffer.from(b64, 'base64'));\n } else {\n const bin = globalThis.atob(b64);\n const arr = new Uint8Array(bin.length);\n for(let i = 0; i < bin.length; ++i){\n arr[i] = bin.charCodeAt(i);\n }\n return arr;\n }\n}\nfunction base64FromBytes(arr) {\n if (globalThis.Buffer) {\n return globalThis.Buffer.from(arr).toString('base64');\n } else {\n const bin = [];\n arr.forEach((byte)=>{\n bin.push(globalThis.String.fromCharCode(byte));\n });\n return globalThis.btoa(bin.join(''));\n }\n}\nfunction fromTimestamp(t) {\n let millis = (t.seconds || 0) * 1000;\n millis += (t.nanos || 0) / 1000000;\n return new globalThis.Date(millis);\n}\nfunction fromJsonTimestamp(o) {\n if (o instanceof globalThis.Date) {\n return o;\n } else if (typeof o === 'string') {\n return new globalThis.Date(o);\n } else {\n return fromTimestamp(Timestamp.fromJSON(o));\n }\n}\nfunction isObject(value) {\n return typeof value === 'object' && value !== null;\n}\nfunction isSet(value) {\n return value !== null && value !== undefined;\n}\n\nfunction asyncGeneratorStep$2(gen, resolve, reject, _next, _throw, key, arg) {\n try {\n var info = gen[key](arg);\n var value = info.value;\n } catch (error) {\n reject(error);\n return;\n }\n if (info.done) {\n resolve(value);\n } else {\n Promise.resolve(value).then(_next, _throw);\n }\n}\nfunction _async_to_generator$2(fn) {\n return function() {\n var self = this, args = arguments;\n return new Promise(function(resolve, reject) {\n var gen = fn.apply(self, args);\n function _next(value) {\n asyncGeneratorStep$2(gen, resolve, reject, _next, _throw, \"next\", value);\n }\n function _throw(err) {\n asyncGeneratorStep$2(gen, resolve, reject, _next, _throw, \"throw\", err);\n }\n _next(undefined);\n });\n };\n}\nfunction _class_private_field_loose_base$1(receiver, privateKey) {\n if (!Object.prototype.hasOwnProperty.call(receiver, privateKey)) {\n throw new TypeError(\"attempted to use private field on non-instance\");\n }\n return receiver;\n}\nvar id$1 = 0;\nfunction _class_private_field_loose_key$1(name) {\n return \"__private_\" + id$1++ + \"_\" + name;\n}\nfunction _extends$2() {\n _extends$2 = Object.assign || function(target) {\n for(var i = 1; i < arguments.length; i++){\n var source = arguments[i];\n for(var key in source){\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n return target;\n };\n return _extends$2.apply(this, arguments);\n}\nconst FLAG_PREFIX = 'flags/';\nclass ResolveError extends Error {\n constructor(code, message){\n super(message);\n this.code = code;\n }\n}\nvar _context = /*#__PURE__*/ _class_private_field_loose_key$1(\"_context\"), _controller = /*#__PURE__*/ _class_private_field_loose_key$1(\"_controller\");\nclass PendingResolution extends AccessiblePromise {\n get signal() {\n return _class_private_field_loose_base$1(this, _controller)[_controller].signal;\n }\n chain(value, rejected) {\n return new PendingResolution(value, _class_private_field_loose_base$1(this, _context)[_context], _class_private_field_loose_base$1(this, _controller)[_controller], rejected);\n }\n get context() {\n return _class_private_field_loose_base$1(this, _context)[_context];\n }\n abort() {\n _class_private_field_loose_base$1(this, _controller)[_controller].abort();\n }\n then(onfulfilled, onrejected) {\n return super.then(onfulfilled, onrejected);\n }\n catch(onrejected) {\n return super.catch(onrejected);\n }\n finally(onfinally) {\n return super.finally(onfinally);\n }\n static create(context, executor) {\n const controller = new AbortController();\n return new PendingResolution(executor(controller.signal), context, controller);\n }\n constructor(promise, context, controller, rejected){\n super(promise, rejected);\n Object.defineProperty(this, _context, {\n writable: true,\n value: void 0\n });\n Object.defineProperty(this, _controller, {\n writable: true,\n value: void 0\n });\n _class_private_field_loose_base$1(this, _context)[_context] = context;\n _class_private_field_loose_base$1(this, _controller)[_controller] = controller;\n }\n}\nclass FetchingFlagResolverClient {\n resolve(context, flags) {\n const request = {\n clientSecret: this.clientSecret,\n evaluationContext: context,\n apply: false,\n sdk: this.sdk,\n flags: flags.map((name)=>FLAG_PREFIX + name)\n };\n return PendingResolution.create(context, (signal)=>{\n const signalWithTimeout = withTimeout(signal, this.resolveTimeout, new ResolveError('TIMEOUT', 'Resolve timeout'));\n return this.resolveFlagsJson(request, signalWithTimeout).then((response)=>FlagResolution.ready(context, response, this.createApplier(response.resolveToken))).catch((error)=>{\n if (error instanceof ResolveError) {\n return FlagResolution.failed(context, error.code, error.message);\n }\n throw error;\n });\n });\n }\n createApplier(resolveToken) {\n const applied = new Set();\n const pending = [];\n const flush = ()=>{\n timeoutId = 0;\n this.apply({\n flags: pending.splice(0, pending.length),\n clientSecret: this.clientSecret,\n resolveToken,\n sdk: this.sdk,\n sendTime: new Date()\n });\n };\n let timeoutId = 0;\n return (flagName)=>{\n if (applied.has(flagName)) return;\n applied.add(flagName);\n pending.push({\n flag: FLAG_PREFIX + flagName,\n applyTime: new Date()\n });\n if (timeoutId) {\n clearTimeout(timeoutId);\n }\n timeoutId = Number(setTimeout(flush, this.applyTimeout));\n };\n }\n apply(request) {\n var _this = this;\n return _async_to_generator$2(function*() {\n const resp = yield _this.fetchImplementation(new Request(`${_this.baseUrl}/flags:apply`, {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json'\n },\n body: JSON.stringify(ApplyFlagsRequest.toJSON(request))\n }));\n if (!resp.ok) {\n throw new Error(`${resp.status}: ${resp.statusText}`);\n }\n })();\n }\n resolveFlagsJson(request, signal) {\n var _this = this;\n return _async_to_generator$2(function*() {\n const resp = yield _this.fetchImplementation(new Request(`${_this.baseUrl}/flags:resolve`, {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json'\n },\n body: JSON.stringify(ResolveFlagsRequest.toJSON(request)),\n signal\n }));\n if (!resp.ok) {\n throw new Error(`${resp.status}: ${resp.statusText}`);\n }\n return ResolveFlagsResponse.fromJSON((yield resp.json()));\n })();\n }\n constructor({ fetchImplementation, clientSecret, sdk, applyTimeout, resolveTimeout, // todo refactor to move out environment\n environment, region }){\n // TODO think about both resolve and apply request logic for backends\n this.fetchImplementation = environment === 'backend' ? fetchImplementation : withRequestLogic(fetchImplementation);\n this.clientSecret = clientSecret;\n this.sdk = sdk;\n this.applyTimeout = applyTimeout;\n this.baseUrl = region ? `https://resolver.${region}.confidence.dev/v1` : 'https://resolver.confidence.dev/v1';\n this.resolveTimeout = resolveTimeout;\n }\n}\nvar _cache = /*#__PURE__*/ _class_private_field_loose_key$1(\"_cache\"), _source = /*#__PURE__*/ _class_private_field_loose_key$1(\"_source\"), _ttl = /*#__PURE__*/ _class_private_field_loose_key$1(\"_ttl\");\nclass CachingFlagResolverClient {\n resolve(context, flags) {\n this.evict();\n const key = Value.serialize(context);\n let entry = _class_private_field_loose_base$1(this, _cache)[_cache].get(key);\n if (!entry) {\n const value = _class_private_field_loose_base$1(this, _source)[_source].resolve(context, flags);\n entry = {\n refCount: 1,\n timestamp: Date.now(),\n value\n };\n _class_private_field_loose_base$1(this, _cache)[_cache].set(key, entry);\n value.signal.addEventListener('abort', ()=>{\n entry.refCount--;\n if (entry.refCount === 0) {\n _class_private_field_loose_base$1(this, _cache)[_cache].delete(key);\n }\n }, {\n once: true\n });\n value.catch(()=>{\n _class_private_field_loose_base$1(this, _cache)[_cache].delete(key);\n });\n } else {\n entry.refCount++;\n }\n return entry.value;\n }\n evict() {\n const now = Date.now();\n for (const [key, { timestamp }] of _class_private_field_loose_base$1(this, _cache)[_cache]){\n const age = now - timestamp;\n if (age < _class_private_field_loose_base$1(this, _ttl)[_ttl]) return;\n _class_private_field_loose_base$1(this, _cache)[_cache].delete(key);\n }\n }\n constructor(source, ttlMs){\n Object.defineProperty(this, _cache, {\n writable: true,\n value: void 0\n });\n Object.defineProperty(this, _source, {\n writable: true,\n value: void 0\n });\n Object.defineProperty(this, _ttl, {\n writable: true,\n value: void 0\n });\n _class_private_field_loose_base$1(this, _cache)[_cache] = new Map();\n _class_private_field_loose_base$1(this, _source)[_source] = source;\n _class_private_field_loose_base$1(this, _ttl)[_ttl] = ttlMs;\n }\n}\nfunction withRequestLogic(fetchImplementation) {\n const fetchResolve = new FetchBuilder()// infinite retries without delay until aborted by timeout\n .retry().rejectNotOk().rateLimit(1, {\n initialTokens: 3,\n maxTokens: 2\n }).build(fetchImplementation);\n const fetchApply = new FetchBuilder().limitPending(1000).timeout(30 * 60000 /* TimeUnit.MINUTE */ ).retry({\n delay: 5 * 1000 /* TimeUnit.SECOND */ ,\n backoff: 2,\n maxDelay: 5 * 60000 /* TimeUnit.MINUTE */ ,\n jitter: 0.2\n }).rejectNotOk().rateLimit(2)// update send-time before sending\n .modifyRequest(/*#__PURE__*/ _async_to_generator$2(function*(request) {\n if (request.method === 'POST') {\n const body = JSON.stringify(_extends$2({}, (yield request.json()), {\n sendTime: new Date().toISOString()\n }));\n return new Request(request, {\n body\n });\n }\n return request;\n })).build(fetchImplementation);\n return new FetchBuilder().route((url)=>url.endsWith('flags:resolve'), fetchResolve).route((url)=>url.endsWith('flags:apply'), fetchApply)// throw so we notice changes in endpoints that should be handled here\n .build((request)=>Promise.reject(new Error(`Unexpected url: ${request.url}`)));\n}\nfunction withTimeout(signal, timeout, reason) {\n const controller = new AbortController();\n const timeoutId = setTimeout(()=>controller.abort(reason), timeout);\n // in Node setTimeout returns an object, with an unref function which will prevent the timeout from keeping the process alive\n if (typeof timeoutId === 'object') timeoutId.unref();\n signal.addEventListener('abort', ()=>{\n clearTimeout(timeoutId);\n controller.abort(signal.reason);\n });\n return controller.signal;\n}\n\nfunction asyncGeneratorStep$1(gen, resolve, reject, _next, _throw, key, arg) {\n try {\n var info = gen[key](arg);\n var value = info.value;\n } catch (error) {\n reject(error);\n return;\n }\n if (info.done) {\n resolve(value);\n } else {\n Promise.resolve(value).then(_next, _throw);\n }\n}\nfunction _async_to_generator$1(fn) {\n return function() {\n var self = this, args = arguments;\n return new Promise(function(resolve, reject) {\n var gen = fn.apply(self, args);\n function _next(value) {\n asyncGeneratorStep$1(gen, resolve, reject, _next, _throw, \"next\", value);\n }\n function _throw(err) {\n asyncGeneratorStep$1(gen, resolve, reject, _next, _throw, \"throw\", err);\n }\n _next(undefined);\n });\n };\n}\nfunction _extends$1() {\n _extends$1 = Object.assign || function(target) {\n for(var i = 1; i < arguments.length; i++){\n var source = arguments[i];\n for(var key in source){\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n return target;\n };\n return _extends$1.apply(this, arguments);\n}\nclass EventSenderEngine {\n send(context, name, data) {\n if (data && 'context' in data) {\n throw new Error('Event data must not contain a context field');\n }\n this.writeQueue.push({\n eventDefinition: name,\n eventTime: new Date().toISOString(),\n payload: _extends$1({\n context\n }, data)\n });\n this.clearPendingFlush();\n if (this.writeQueue.length >= this.maxBatchSize) {\n this.flush();\n } else {\n if (this.flushTimeoutMilliseconds > 0) {\n this.pendingFlush = setTimeout(()=>{\n this.flush();\n }, this.flushTimeoutMilliseconds);\n }\n }\n }\n flush() {\n this.clearPendingFlush();\n const batchSize = this.writeQueue.length;\n if (batchSize === 0) {\n return Promise.resolve(true);\n }\n return this.upload({\n clientSecret: this.clientSecret,\n sendTime: new Date().toISOString(),\n events: this.writeQueue.splice(0, this.maxBatchSize)\n }).then((errors)=>{\n if (errors.length === 0) {\n this.logger.info == null ? void 0 : this.logger.info.call(this.logger, 'Confidence: successfully uploaded %i events', batchSize);\n return true;\n }\n const distinctErrorMessages = Array.from(new Set(errors.map(({ reason, message })=>message || reason)));\n this.logger.warn == null ? void 0 : this.logger.warn.call(this.logger, 'Confidence: failed to upload %i out of %i event(s) with the following errors: %o', errors.length, batchSize, distinctErrorMessages);\n return false;\n }).catch((error)=>{\n this.logger.error == null ? void 0 : this.logger.error.call(this.logger, 'Confidence: failed to upload %i events.', batchSize, error);\n return false;\n });\n }\n clearPendingFlush() {\n if (this.pendingFlush) {\n clearTimeout(this.pendingFlush);\n this.pendingFlush = undefined;\n }\n }\n // Made public for unit testing\n upload(batch) {\n const request = new Request(this.publishUrl, {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json'\n },\n body: JSON.stringify(_extends$1({}, batch, {\n events: batch.events.map((e)=>_extends$1({}, e, {\n eventDefinition: `eventDefinitions/${e.eventDefinition}`\n }))\n }))\n });\n return this.fetchImplementation(request).then((resp)=>resp.json()).then(({ errors })=>errors);\n }\n constructor({ clientSecret, maxBatchSize, flushTimeoutMilliseconds, fetchImplementation, region, rateLimitRps = 1000 / flushTimeoutMilliseconds, maxOpenRequests, logger }){\n this.writeQueue = [];\n this.publishUrl = region ? `https://events.${region}.confidence.dev/v1/events:publish` : 'https://events.confidence.dev/v1/events:publish';\n this.clientSecret = clientSecret;\n this.maxBatchSize = maxBatchSize;\n this.flushTimeoutMilliseconds = flushTimeoutMilliseconds;\n this.logger = logger;\n const fetchBuilder = new FetchBuilder().limitPending(maxOpenRequests).rejectNotOk().timeout(30 * 60000 /* TimeUnit.MINUTE */ ).retry({\n delay: 5 * 1000 /* TimeUnit.SECOND */ ,\n backoff: 2,\n maxDelay: 5 * 60000 /* TimeUnit.MINUTE */ ,\n jitter: 0.2\n }).rejectOn(({ status })=>status >= 500 || status === 429);\n if (rateLimitRps) {\n fetchBuilder.rateLimit(rateLimitRps);\n }\n this.fetchImplementation = fetchBuilder// update send-time before sending\n .modifyRequest(/*#__PURE__*/ _async_to_generator$1(function*(request) {\n if (request.method === 'POST') {\n const body = JSON.stringify(_extends$1({}, (yield request.json()), {\n sendTime: new Date().toISOString()\n }));\n return new Request(request, {\n body\n });\n }\n return request;\n })).build(fetchImplementation);\n }\n}\n\nvar Logger;\n(function(Logger) {\n const NOOP_LOGGER = Object.freeze({});\n const LEVELS = [\n 'trace',\n 'debug',\n 'info',\n 'warn',\n 'error'\n ];\n function noOp() {\n return NOOP_LOGGER;\n }\n Logger.noOp = noOp;\n function withLevel(delegate, level) {\n const logger = {};\n for(let i = LEVELS.indexOf(level); i >= 0 && i < LEVELS.length; i++){\n var _delegate_LEVELS_i;\n logger[LEVELS[i]] = (_delegate_LEVELS_i = delegate[LEVELS[i]]) == null ? void 0 : _delegate_LEVELS_i.bind(delegate);\n }\n return Object.freeze(logger);\n }\n Logger.withLevel = withLevel;\n})(Logger || (Logger = {}));\n\nvar Closer;\n(function(Closer) {\n function combine(...closers) {\n return ()=>{\n for (const closer of closers){\n closer();\n }\n };\n }\n Closer.combine = combine;\n})(Closer || (Closer = {}));\n\nfunction spyOn(target, fnName, callback) {\n const t = target;\n const originalFn = t[fnName];\n t[fnName] = function(...args) {\n try {\n return originalFn.call(this, ...args);\n } finally{\n callback(...args);\n }\n };\n return ()=>{\n t[fnName] = originalFn;\n };\n}\nfunction listenOn(target, type, listener) {\n target.addEventListener(type, listener);\n return ()=>{\n target.removeEventListener(type, listener);\n };\n}\nfunction uuid() {\n const HEX_ALPHA = '0123456789abcdef';\n return 'xxxxxxxx-xxxx-4xxx-xxxx-xxxxxxxxxxxx'.replace(/x/g, ()=>HEX_ALPHA[Math.random() * 16 | 0]);\n}\nvar Cookie;\n(function(Cookie) {\n function set(key, value, opt = {}) {\n const parts = [\n `${encodeURIComponent(key)}=${encodeURIComponent(value)}`\n ];\n if (opt.expires) {\n parts.push(`expires=${opt.expires.toUTCString()}`);\n } else if (typeof opt.maxAge === 'number') {\n parts.push(`expires=${new Date(Date.now() + opt.maxAge * 1000).toUTCString()}`);\n }\n if (opt.sameSite) {\n parts.push('samesite');\n }\n if (opt.domain) {\n parts.push(`domain=${encodeURIComponent(opt.domain)}`);\n }\n if (opt.secure) {\n parts.push('secure');\n }\n document.cookie = parts.join('; ');\n }\n Cookie.set = set;\n function get(key) {\n const prefix = `${encodeURIComponent(key)}=`;\n const documentCookie = document.cookie.split(/;\\s*/g).find((cookie)=>cookie.startsWith(prefix));\n return documentCookie && decodeURIComponent(documentCookie.slice(prefix.length));\n }\n Cookie.get = get;\n function remove(key) {\n set(key, '', {\n maxAge: 0\n });\n }\n Cookie.remove = remove;\n})(Cookie || (Cookie = {}));\n\nfunction pageViews() {\n return (controller)=>{\n let referrer = document.referrer;\n controller.setContext({\n page: {\n path: location.pathname,\n search: location.search,\n referrer: referrer,\n title: document.title,\n url: location.href\n }\n });\n const listeners = [\n spyOn(history, 'pushState', ()=>{\n pageChanged({\n type: 'pushstate'\n });\n }),\n spyOn(history, 'replaceState', ()=>{\n pageChanged({\n type: 'replacestate'\n });\n }),\n listenOn(window, 'popstate', pageChanged),\n listenOn(window, 'hashchange', pageChanged)\n ];\n // if document is already loaded, call pageChanged otherwise listen for load event\n if (document.readyState === 'complete') {\n pageChanged({\n type: 'load'\n });\n } else {\n listeners.push(listenOn(window, 'load', pageChanged));\n }\n return Closer.combine(...listeners);\n function pageChanged({ type }) {\n controller.setContext({\n page: {\n path: location.pathname,\n search: location.search,\n referrer: referrer,\n title: document.title,\n url: location.href\n }\n });\n controller.config.logger.debug == null ? void 0 : controller.config.logger.debug.call(controller.config.logger, 'Confidence: page viewed', {\n type\n });\n controller.track('page-viewed');\n referrer = location.href;\n }\n };\n}\n\n/**\n * Emit {@link https://web.dev/articles/vitals | Web Vitals} metric events.\n *\n * @param options - specifying which metrics to emit\n * @returns a {@link Topic} to be used with {@link Confidence.track }\n * @public\n */ function webVitals({ lcp = true, inp = true, cls = true, ttfb = false } = {}) {\n return (controller)=>{\n const handleMetric = ({ name, id, delta })=>{\n // TODO consider this example https://www.npmjs.com/package/web-vitals#send-attribution-data. Should we have some metric event?\n const metricKey = name.toLocaleLowerCase();\n const eventName = `web-vitals-${metricKey}`;\n controller.track(eventName, {\n metric_id: id,\n metric_delta: delta\n });\n };\n if (lcp) onLCP(handleMetric);\n if (inp) onINP(handleMetric);\n if (cls) onCLS(handleMetric);\n if (ttfb) onTTFB(handleMetric);\n };\n}\n\nconst COOKIE_NAME = 'cnfdVisitorId';\nconst visitorIdentity = ()=>(controller)=>{\n if (typeof document === 'undefined') return;\n let value = Cookie.get(COOKIE_NAME);\n if (!value) {\n value = uuid();\n // TODO check correct cookie options\n Cookie.set(COOKIE_NAME, value, {\n maxAge: 60 * 60 * 24 * 365 * 5\n });\n }\n controller.setContext({\n visitor_id: value\n });\n };\n\nfunction _class_private_field_loose_base(receiver, privateKey) {\n if (!Object.prototype.hasOwnProperty.call(receiver, privateKey)) {\n throw new TypeError(\"attempted to use private field on non-instance\");\n }\n return receiver;\n}\nvar id = 0;\nfunction _class_private_field_loose_key(name) {\n return \"__private_\" + id++ + \"_\" + name;\n}\nvar Trackable;\n(function(Trackable) {\n var _isRevoked = /*#__PURE__*/ _class_private_field_loose_key(\"_isRevoked\"), _delegate = /*#__PURE__*/ _class_private_field_loose_key(\"_delegate\"), _childTrackers = /*#__PURE__*/ _class_private_field_loose_key(\"_childTrackers\");\n class RevocableController {\n setContext(context) {\n this.assertNonRevoked();\n return _class_private_field_loose_base(this, _delegate)[_delegate].setContext(context);\n }\n track(nameOrManager, data) {\n this.assertNonRevoked();\n if (typeof nameOrManager === 'function') {\n // if the manager starts tracking something\n const closer = _class_private_field_loose_base(this, _delegate)[_delegate].track(nameOrManager);\n _class_private_field_loose_base(this, _childTrackers)[_childTrackers].push(closer);\n return closer;\n }\n return _class_private_field_loose_base(this, _delegate)[_delegate].track(nameOrManager, data);\n }\n get config() {\n this.assertNonRevoked();\n return _class_private_field_loose_base(this, _delegate)[_delegate].config;\n }\n get isRevoked() {\n return _class_private_field_loose_base(this, _isRevoked)[_isRevoked];\n }\n revoke() {\n if (_class_private_field_loose_base(this, _isRevoked)[_isRevoked]) return;\n _class_private_field_loose_base(this, _isRevoked)[_isRevoked] = true;\n while(_class_private_field_loose_base(this, _childTrackers)[_childTrackers].length > 0){\n const closer = _class_private_field_loose_base(this, _childTrackers)[_childTrackers].pop();\n closer();\n }\n }\n assertNonRevoked() {\n if (_class_private_field_loose_base(this, _isRevoked)[_isRevoked]) throw new Error('The tracker is closed');\n }\n constructor(delegate){\n Object.defineProperty(this, _isRevoked, {\n writable: true,\n value: void 0\n });\n Object.defineProperty(this, _delegate, {\n writable: true,\n value: void 0\n });\n Object.defineProperty(this, _childTrackers, {\n writable: true,\n value: void 0\n });\n _class_private_field_loose_base(this, _isRevoked)[_isRevoked] = false;\n _class_private_field_loose_base(this, _childTrackers)[_childTrackers] = [];\n _class_private_field_loose_base(this, _delegate)[_delegate] = delegate;\n }\n }\n function setup(controller, manager) {\n const revocableController = new RevocableController(controller);\n const cleanup = manager(revocableController);\n return ()=>{\n if (revocableController.isRevoked) return;\n try {\n cleanup == null ? void 0 : cleanup();\n } finally{\n revocableController.revoke();\n }\n };\n }\n Trackable.setup = setup;\n})(Trackable || (Trackable = {}));\n\nfunction multicast(observers, observable) {\n let close;\n return ()=>{\n if (close) {\n close();\n close = undefined;\n } else {\n close = observable((value)=>{\n for (const observer of observers){\n observer(value);\n }\n });\n }\n };\n}\nfunction subject(observable) {\n const observers = new Set();\n const toggle = multicast(observers, observable);\n return (observer)=>{\n if (observers.has(observer)) throw new Error('Observer already subscribed.');\n observers.add(observer);\n if (observers.size === 1) {\n toggle();\n }\n return ()=>{\n if (observers.delete(observer) && observers.size === 0) toggle();\n };\n };\n}\nfunction changeObserver(observer, initialValue) {\n let prevValue = initialValue;\n return (value)=>{\n if (!Object.is(value, prevValue)) {\n prevValue = value;\n observer(value);\n }\n };\n}\n\nfunction asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) {\n try {\n var info = gen[key](arg);\n var value = info.value;\n } catch (error) {\n reject(error);\n return;\n }\n if (info.done) {\n resolve(value);\n } else {\n Promise.resolve(value).then(_next, _throw);\n }\n}\nfunction _async_to_generator(fn) {\n return function() {\n var self = this, args = arguments;\n return new Promise(function(resolve, reject) {\n var gen = fn.apply(self, args);\n function _next(value) {\n asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value);\n }\n function _throw(err) {\n asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err);\n }\n _next(undefined);\n });\n };\n}\nfunction _extends() {\n _extends = Object.assign || function(target) {\n for(var i = 1; i < arguments.length; i++){\n var source = arguments[i];\n for(var key in source){\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n return target;\n };\n return _extends.apply(this, arguments);\n}\nclass Confidence {\n get environment() {\n return this.config.environment;\n }\n sendEvent(name, data) {\n this.config.eventSenderEngine.send(this.getContext(), name, data);\n }\n *contextEntries() {\n if (this.parent) {\n // all parent entries except the ones child also has\n for (const entry of this.parent.contextEntries()){\n if (!this._context.has(entry[0])) {\n yield entry;\n }\n }\n }\n // all child entries except undefined\n for (const entry of this._context.entries()){\n if (typeof entry[1] !== 'undefined') {\n yield entry;\n }\n }\n }\n getContext() {\n const context = {};\n for (const [key, value] of this.contextEntries()){\n context[key] = value;\n }\n return Object.freeze(context);\n }\n setContext(context) {\n const current = this.getContext();\n const changedKeys = [];\n for (const key of Object.keys(context)){\n if (Value.equal(current[key], context[key])) continue;\n changedKeys.push(key);\n this._context.set(key, Value.clone(context[key]));\n }\n if (this.contextChanged && changedKeys.length > 0) {\n this.contextChanged(changedKeys);\n }\n return changedKeys.length > 0;\n }\n clearContext() {\n const oldContext = this.getContext();\n this._context.clear();\n if (this.contextChanged) {\n const newContext = this.getContext();\n const unionKeys = Array.from(new Set([\n ...Object.keys(oldContext),\n ...Object.keys(newContext)\n ]));\n const changedKeys = unionKeys.filter((key)=>!Value.equal(oldContext[key], newContext[key]));\n if (changedKeys.length) this.contextChanged(changedKeys);\n }\n }\n withContext(context) {\n const child = new Confidence(this.config, this);\n child.setContext(context);\n // child.resolveFlags();\n return child;\n }\n track(nameOrManager, data) {\n if (typeof nameOrManager === 'function') {\n return Trackable.setup(this, nameOrManager);\n }\n this.sendEvent(nameOrManager, data);\n return undefined;\n }\n resolveFlags() {\n const context = this.getContext();\n if (!this.pendingFlags || !Value.equal(this.pendingFlags.context, context)) {\n var _this_pendingFlags;\n (_this_pendingFlags = this.pendingFlags) == null ? void 0 : _this_pendingFlags.abort();\n this.pendingFlags = this.config.flagResolverClient.resolve(context, []).then((resolution)=>{\n this.currentFlags = resolution;\n }).catch((e)=>{\n // TODO fix sloppy handling of error\n if (e.name !== 'AbortError') {\n this.config.logger.info == null ? void 0 : this.config.logger.info.call(this.config.logger, 'Resolve failed.', e);\n }\n }).finally(()=>{\n // if this resolves synchronously, the assignment on 171 will actually happen after we clear it.\n this.pendingFlags = undefined;\n });\n }\n if (this.pendingFlags.state !== 'PENDING') {\n this.pendingFlags = undefined;\n return AccessiblePromise.resolve();\n }\n return this.pendingFlags;\n }\n get flagState() {\n if (this.currentFlags) {\n if (this.pendingFlags) return 'STALE';\n return this.currentFlags.state;\n }\n return 'NOT_READY';\n }\n subscribe(onStateChange = ()=>{}) {\n const observer = changeObserver(onStateChange);\n const close = this.flagStateSubject(observer);\n observer(this.flagState);\n return close;\n }\n evaluateFlagAsync(path, defaultValue) {\n let close;\n return new Promise((resolve)=>{\n close = this.subscribe((state)=>{\n // when state is ready we can be sure currentFlags exist\n if (state === 'READY' || state === 'ERROR') {\n resolve(this.currentFlags.evaluate(path, defaultValue));\n }\n });\n }).finally(close);\n }\n evaluateFlag(path, defaultValue) {\n let evaluation;\n // resolveFlags might update state synchronously\n if (!this.currentFlags && !this.pendingFlags) this.resolveFlags();\n if (!this.currentFlags) {\n evaluation = {\n reason: 'ERROR',\n errorCode: 'NOT_READY',\n errorMessage: 'Flags are not yet ready',\n value: defaultValue\n };\n } else {\n evaluation = this.currentFlags.evaluate(path, defaultValue);\n }\n if (!this.currentFlags || !Value.equal(this.currentFlags.context, this.getContext())) {\n const then = (onfulfilled, onrejected)=>this.evaluateFlagAsync(path, defaultValue).then(onfulfilled, onrejected);\n const staleEvaluation = _extends({}, evaluation, {\n then\n });\n return staleEvaluation;\n }\n return evaluation;\n }\n getFlag(path, defaultValue) {\n var _this = this;\n return _async_to_generator(function*() {\n return (yield _this.evaluateFlag(path, defaultValue)).value;\n })();\n }\n static create({ clientSecret, region, timeout, environment, fetchImplementation = defaultFetchImplementation(), logger = defaultLogger() }) {\n const sdk = {\n id: SdkId.SDK_ID_JS_CONFIDENCE,\n version: '0.1.3'\n };\n let flagResolverClient = new FetchingFlagResolverClient({\n clientSecret,\n fetchImplementation,\n sdk,\n environment,\n resolveTimeout: timeout,\n region\n });\n if (environment === 'client') {\n flagResolverClient = new CachingFlagResolverClient(flagResolverClient, 30000);\n }\n const estEventSizeKb = 1;\n const flushTimeoutMilliseconds = 500;\n // default grpc payload limit is 4MB, so we aim for a 1MB batch-size\n const maxBatchSize = Math.floor(1024 / estEventSizeKb);\n const eventSenderEngine = new EventSenderEngine({\n clientSecret,\n maxBatchSize,\n flushTimeoutMilliseconds,\n fetchImplementation,\n region,\n // we set rate limit to support the flushTimeout\n // on backend, the rate limit would be ∞\n rateLimitRps: environment === 'client' ? 1000 / flushTimeoutMilliseconds : Number.POSITIVE_INFINITY,\n // the request is queued or in flight in memory to be sent.\n // max memory consumption is 50MB\n maxOpenRequests: 50 * 1024 / (estEventSizeKb * maxBatchSize),\n logger\n });\n const root = new Confidence({\n environment: environment,\n flagResolverClient,\n eventSenderEngine,\n timeout,\n logger\n });\n if (environment === 'client') {\n root.track(visitorIdentity());\n }\n return root;\n }\n constructor(config, parent){\n this._context = new Map();\n this.config = config;\n this.parent = parent;\n this.contextChanges = subject((observer)=>{\n let parentSubscription;\n if (parent) {\n parentSubscription = parent.contextChanges((keys)=>{\n const visibleKeys = keys.filter((key)=>!this._context.has(key));\n if (visibleKeys.length) observer(visibleKeys);\n });\n }\n this.contextChanged = observer;\n return ()=>{\n parentSubscription == null ? void 0 : parentSubscription();\n this.contextChanged = undefined;\n };\n });\n this.flagStateSubject = subject((observer)=>{\n const reportState = ()=>observer(this.flagState);\n if (!this.currentFlags || !Value.equal(this.currentFlags.context, this.getContext())) {\n this.resolveFlags().then(reportState);\n }\n const close = this.contextChanges(()=>{\n if (this.flagState === 'READY' || this.flagState === 'ERROR') observer('STALE');\n this.resolveFlags().then(reportState);\n });\n return ()=>{\n var _this_pendingFlags;\n close();\n (_this_pendingFlags = this.pendingFlags) == null ? void 0 : _this_pendingFlags.abort();\n this.pendingFlags = undefined;\n };\n });\n }\n}\nfunction defaultFetchImplementation() {\n if (!globalThis.fetch) {\n throw new TypeError('No default fetch implementation found. Please provide provide the fetchImplementation option to createConfidenceWebProvider.');\n }\n return globalThis.fetch.bind(globalThis);\n}\nfunction defaultLogger() {\n try {\n if (process.env.NODE_ENV === 'development') {\n return Logger.withLevel(console, 'info');\n }\n } catch (e) {\n // ignore\n }\n return Logger.noOp();\n}\n\nexport { Closer, Confidence, Trackable, Value, pageViews, visitorIdentity, webVitals };\n//# sourceMappingURL=index.js.map\n"],"names":["ConfidenceContext","isRendering","ConfidenceReact","nameOrManager","message","context","onStateChange","path","defaultValue","useWithContext","useEvaluateFlag","useFlag","fnName","altFnName","delegate","ConfidenceProvider","confidence","children","confidenceReact","child","useConfidence","setState","state","parent","evaluation","_class_private_field_loose_base$2","receiver","privateKey","id$2","_class_private_field_loose_key$2","name","isPromiseLike","value","_state","_value","AccessiblePromise","rejected","onfulfilled","onrejected","e","onfinally","reason","supplier","error","then","v","TypeMismatchError","step","fn","err","expected","actual","steps","Value","LIST_ITEM_TYPES","assertValue","itemType","getType","i","type","key","clone","isStruct","cloned","isList","equal","value1","value2","structsEqual","listsEqual","struct1","struct2","keys","list1","list2","length","jsType","assertType","found","get","struct","parts","errorPath","part","serialize","writer","Writer","deserialize","data","Reader","numberBuffer","list","len","expectedType","actualType","start","Schema","typeName","Struct","fieldSchema","rest","fields","List","itemSchema","Primitive","Integer","Any","parse","schema","mapValues","record","callb","mapped","ResolveReason","resolveReasonFromJSON","object","resolveReasonToJSON","SdkId","sdkIdFromJSON","sdkIdToJSON","Sdk","isSet$3","obj","FLAG_PREFIX$1","FlagResolution","ready","response","applier","ReadyFlagResolution","failed","code","FailedFlagResolution","flag","_e_message","resolveResponse","variant","flagSchema","toEvaluationReason","base64FromBytes$1","_path","arr","bin","byte","asyncGeneratorStep$3","gen","resolve","reject","_next","_throw","arg","info","_async_to_generator$3","self","args","RequestError","TimeoutError","FetchBuilder","inner","outer","next","duration","request","signal","abort","abortController","timeoutId","abortPrevious","abortableRequest","makeAbortable","resp","callback","maxPending","pending","tokenFillRate","maxTokens","initialTokens","precondition","lastRefillTime","tokens","nextRun","refillTokens","abortableSleep","currentTime","elapsed","maxRetries","delay","maxDelay","backoff","jitter","retryCount","doRetry","_request_signal","jitterFactor","mod","match","fetch","sink","impl","input","init","follow","controller","listener","milliseconds","condition","Timestamp","isSet$2","FlagSchema","isSet$1","FlagSchema_StructFlagSchema","FlagSchema_ListFlagSchema","FlagSchema_IntFlagSchema","FlagSchema_DoubleFlagSchema","FlagSchema_StringFlagSchema","FlagSchema_BoolFlagSchema","isObject$1","acc","entries","k","_","ResolveFlagsRequest","isObject","isSet","_message_flags","ResolveFlagsResponse","ResolvedFlag","bytesFromBase64","_message_resolvedFlags","base64FromBytes","ApplyFlagsRequest","AppliedFlag","fromJsonTimestamp","b64","fromTimestamp","t","millis","o","asyncGeneratorStep$2","_async_to_generator$2","_class_private_field_loose_base$1","id$1","_class_private_field_loose_key$1","_extends$2","target","source","FLAG_PREFIX","ResolveError","_context","_controller","PendingResolution","executor","promise","FetchingFlagResolverClient","flags","signalWithTimeout","withTimeout","resolveToken","applied","flush","flagName","_this","fetchImplementation","clientSecret","sdk","applyTimeout","resolveTimeout","environment","region","withRequestLogic","_cache","_source","_ttl","CachingFlagResolverClient","entry","now","timestamp","ttlMs","fetchResolve","fetchApply","body","url","timeout","asyncGeneratorStep$1","_async_to_generator$1","_extends$1","EventSenderEngine","batchSize","errors","distinctErrorMessages","batch","maxBatchSize","flushTimeoutMilliseconds","rateLimitRps","maxOpenRequests","logger","fetchBuilder","status","Logger","NOOP_LOGGER","LEVELS","noOp","withLevel","level","_delegate_LEVELS_i","Closer","combine","closers","closer","spyOn","originalFn","listenOn","uuid","HEX_ALPHA","Cookie","set","opt","prefix","documentCookie","cookie","remove","pageViews","referrer","listeners","pageChanged","webVitals","lcp","inp","cls","ttfb","handleMetric","id","delta","eventName","COOKIE_NAME","visitorIdentity","_class_private_field_loose_base","_class_private_field_loose_key","Trackable","_isRevoked","_delegate","_childTrackers","RevocableController","setup","manager","revocableController","cleanup","multicast","observers","observable","close","observer","subject","toggle","changeObserver","initialValue","prevValue","asyncGeneratorStep","_async_to_generator","_extends","Confidence","current","changedKeys","oldContext","newContext","_this_pendingFlags","resolution","defaultFetchImplementation","defaultLogger","flagResolverClient","estEventSizeKb","eventSenderEngine","root","config","parentSubscription","visibleKeys","reportState"],"sourceRoot":""}