{"version":3,"file":"static/chunks/4594-1f84066ff02835a8.js","mappings":"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","sources":["webpack://_N_E/./node_modules/dom-mutator/dist/dom-mutator.esm.js","webpack://_N_E/./node_modules/@growthbook/growthbook/dist/esm/util.mjs","webpack://_N_E/./node_modules/@growthbook/growthbook/dist/esm/feature-repository.mjs","webpack://_N_E/./node_modules/@growthbook/growthbook/dist/esm/mongrule.mjs","webpack://_N_E/./node_modules/@growthbook/growthbook/dist/esm/core.mjs","webpack://_N_E/./node_modules/@growthbook/growthbook/dist/esm/GrowthBook.mjs","webpack://_N_E/./node_modules/@growthbook/growthbook-react/dist/esm/index.js","webpack://_N_E/./node_modules/jwt-decode/build/jwt-decode.esm.js","webpack://_N_E/./node_modules/lodash/_arrayMap.js","webpack://_N_E/./node_modules/lodash/_baseGet.js","webpack://_N_E/./node_modules/lodash/_baseToString.js","webpack://_N_E/./node_modules/lodash/_castPath.js","webpack://_N_E/./node_modules/lodash/_isKey.js","webpack://_N_E/./node_modules/lodash/_memoizeCapped.js","webpack://_N_E/./node_modules/lodash/_stringToPath.js","webpack://_N_E/./node_modules/lodash/_toKey.js","webpack://_N_E/./node_modules/lodash/get.js","webpack://_N_E/./node_modules/lodash/isSymbol.js","webpack://_N_E/./node_modules/lodash/memoize.js","webpack://_N_E/./node_modules/lodash/toString.js","webpack://_N_E/./node_modules/next/dist/api/navigation.js"],"sourcesContent":["var validAttributeName = /^[a-zA-Z:_][a-zA-Z0-9:_.-]*$/;\nvar nullController = {\n revert: function revert() {}\n};\nvar elements = /*#__PURE__*/new Map();\nvar mutations = /*#__PURE__*/new Set();\n\nfunction getObserverInit(attr) {\n return attr === 'html' ? {\n childList: true,\n subtree: true,\n attributes: true,\n characterData: true\n } : {\n childList: false,\n subtree: false,\n attributes: true,\n attributeFilter: [attr]\n };\n}\n\nfunction getElementRecord(element) {\n var record = elements.get(element);\n\n if (!record) {\n record = {\n element: element,\n attributes: {}\n };\n elements.set(element, record);\n }\n\n return record;\n}\n\nfunction createElementPropertyRecord(el, attr, getCurrentValue, setValue, mutationRunner) {\n var currentValue = getCurrentValue(el);\n var record = {\n isDirty: false,\n originalValue: currentValue,\n virtualValue: currentValue,\n mutations: [],\n el: el,\n _positionTimeout: null,\n observer: new MutationObserver(function () {\n // enact a 1 second timeout that blocks subsequent firing of the\n // observer until the timeout is complete. This will prevent multiple\n // mutations from firing in quick succession, which can cause the\n // mutation to be reverted before the DOM has a chance to update.\n if (attr === 'position' && record._positionTimeout) return;else if (attr === 'position') record._positionTimeout = setTimeout(function () {\n record._positionTimeout = null;\n }, 1000);\n var currentValue = getCurrentValue(el);\n if (attr === 'position' && currentValue.parentNode === record.virtualValue.parentNode && currentValue.insertBeforeNode === record.virtualValue.insertBeforeNode) return;\n if (currentValue === record.virtualValue) return;\n record.originalValue = currentValue;\n mutationRunner(record);\n }),\n mutationRunner: mutationRunner,\n setValue: setValue,\n getCurrentValue: getCurrentValue\n };\n\n if (attr === 'position' && el.parentNode) {\n record.observer.observe(el.parentNode, {\n childList: true,\n subtree: true,\n attributes: false,\n characterData: false\n });\n } else {\n record.observer.observe(el, getObserverInit(attr));\n }\n\n return record;\n}\n\nfunction queueIfNeeded(val, record) {\n var currentVal = record.getCurrentValue(record.el);\n record.virtualValue = val;\n\n if (val && typeof val !== 'string') {\n if (!currentVal || val.parentNode !== currentVal.parentNode || val.insertBeforeNode !== currentVal.insertBeforeNode) {\n record.isDirty = true;\n runDOMUpdates();\n }\n } else if (val !== currentVal) {\n record.isDirty = true;\n runDOMUpdates();\n }\n}\n\nfunction htmlMutationRunner(record) {\n var val = record.originalValue;\n record.mutations.forEach(function (m) {\n return val = m.mutate(val);\n });\n queueIfNeeded(getTransformedHTML(val), record);\n}\n\nfunction classMutationRunner(record) {\n var val = new Set(record.originalValue.split(/\\s+/).filter(Boolean));\n record.mutations.forEach(function (m) {\n return m.mutate(val);\n });\n queueIfNeeded(Array.from(val).filter(Boolean).join(' '), record);\n}\n\nfunction attrMutationRunner(record) {\n var val = record.originalValue;\n record.mutations.forEach(function (m) {\n return val = m.mutate(val);\n });\n queueIfNeeded(val, record);\n}\n\nfunction _loadDOMNodes(_ref) {\n var parentSelector = _ref.parentSelector,\n insertBeforeSelector = _ref.insertBeforeSelector;\n var parentNode = document.querySelector(parentSelector);\n if (!parentNode) return null;\n var insertBeforeNode = insertBeforeSelector ? document.querySelector(insertBeforeSelector) : null;\n if (insertBeforeSelector && !insertBeforeNode) return null;\n return {\n parentNode: parentNode,\n insertBeforeNode: insertBeforeNode\n };\n}\n\nfunction positionMutationRunner(record) {\n var val = record.originalValue;\n record.mutations.forEach(function (m) {\n var selectors = m.mutate();\n\n var newNodes = _loadDOMNodes(selectors);\n\n val = newNodes || val;\n });\n queueIfNeeded(val, record);\n}\n\nvar getHTMLValue = function getHTMLValue(el) {\n return el.innerHTML;\n};\n\nvar setHTMLValue = function setHTMLValue(el, value) {\n return el.innerHTML = value;\n};\n\nfunction getElementHTMLRecord(element) {\n var elementRecord = getElementRecord(element);\n\n if (!elementRecord.html) {\n elementRecord.html = createElementPropertyRecord(element, 'html', getHTMLValue, setHTMLValue, htmlMutationRunner);\n }\n\n return elementRecord.html;\n}\n\nvar getElementPosition = function getElementPosition(el) {\n return {\n parentNode: el.parentElement,\n insertBeforeNode: el.nextElementSibling\n };\n};\n\nvar setElementPosition = function setElementPosition(el, value) {\n if (value.insertBeforeNode && !value.parentNode.contains(value.insertBeforeNode)) {\n // skip position mutation - insertBeforeNode not a child of parent. happens\n // when mutation observer for indvidual element fires out of order\n return;\n }\n\n value.parentNode.insertBefore(el, value.insertBeforeNode);\n};\n\nfunction getElementPositionRecord(element) {\n var elementRecord = getElementRecord(element);\n\n if (!elementRecord.position) {\n elementRecord.position = createElementPropertyRecord(element, 'position', getElementPosition, setElementPosition, positionMutationRunner);\n }\n\n return elementRecord.position;\n}\n\nvar setClassValue = function setClassValue(el, val) {\n return val ? el.className = val : el.removeAttribute('class');\n};\n\nvar getClassValue = function getClassValue(el) {\n return el.className;\n};\n\nfunction getElementClassRecord(el) {\n var elementRecord = getElementRecord(el);\n\n if (!elementRecord.classes) {\n elementRecord.classes = createElementPropertyRecord(el, 'class', getClassValue, setClassValue, classMutationRunner);\n }\n\n return elementRecord.classes;\n}\n\nvar getAttrValue = function getAttrValue(attrName) {\n return function (el) {\n var _el$getAttribute;\n\n return (_el$getAttribute = el.getAttribute(attrName)) != null ? _el$getAttribute : null;\n };\n};\n\nvar setAttrValue = function setAttrValue(attrName) {\n return function (el, val) {\n return val !== null ? el.setAttribute(attrName, val) : el.removeAttribute(attrName);\n };\n};\n\nfunction getElementAttributeRecord(el, attr) {\n var elementRecord = getElementRecord(el);\n\n if (!elementRecord.attributes[attr]) {\n elementRecord.attributes[attr] = createElementPropertyRecord(el, attr, getAttrValue(attr), setAttrValue(attr), attrMutationRunner);\n }\n\n return elementRecord.attributes[attr];\n}\n\nfunction deleteElementPropertyRecord(el, attr) {\n var element = elements.get(el);\n if (!element) return;\n\n if (attr === 'html') {\n var _element$html, _element$html$observe;\n\n (_element$html = element.html) == null ? void 0 : (_element$html$observe = _element$html.observer) == null ? void 0 : _element$html$observe.disconnect();\n delete element.html;\n } else if (attr === 'class') {\n var _element$classes, _element$classes$obse;\n\n (_element$classes = element.classes) == null ? void 0 : (_element$classes$obse = _element$classes.observer) == null ? void 0 : _element$classes$obse.disconnect();\n delete element.classes;\n } else if (attr === 'position') {\n var _element$position, _element$position$obs;\n\n (_element$position = element.position) == null ? void 0 : (_element$position$obs = _element$position.observer) == null ? void 0 : _element$position$obs.disconnect();\n delete element.position;\n } else {\n var _element$attributes, _element$attributes$a, _element$attributes$a2;\n\n (_element$attributes = element.attributes) == null ? void 0 : (_element$attributes$a = _element$attributes[attr]) == null ? void 0 : (_element$attributes$a2 = _element$attributes$a.observer) == null ? void 0 : _element$attributes$a2.disconnect();\n delete element.attributes[attr];\n }\n}\n\nvar transformContainer;\n\nfunction getTransformedHTML(html) {\n if (!transformContainer) {\n transformContainer = document.createElement('div');\n }\n\n transformContainer.innerHTML = html;\n return transformContainer.innerHTML;\n}\n\nfunction setPropertyValue(el, attr, m) {\n if (!m.isDirty) return;\n m.isDirty = false;\n var val = m.virtualValue;\n\n if (!m.mutations.length) {\n deleteElementPropertyRecord(el, attr);\n }\n\n m.setValue(el, val);\n}\n\nfunction setValue(m, el) {\n m.html && setPropertyValue(el, 'html', m.html);\n m.classes && setPropertyValue(el, 'class', m.classes);\n m.position && setPropertyValue(el, 'position', m.position);\n Object.keys(m.attributes).forEach(function (attr) {\n setPropertyValue(el, attr, m.attributes[attr]);\n });\n}\n\nfunction runDOMUpdates() {\n elements.forEach(setValue);\n} // find or create ElementPropertyRecord, add mutation to it, then run\n\n\nfunction startMutating(mutation, element) {\n var record = null;\n\n if (mutation.kind === 'html') {\n record = getElementHTMLRecord(element);\n } else if (mutation.kind === 'class') {\n record = getElementClassRecord(element);\n } else if (mutation.kind === 'attribute') {\n record = getElementAttributeRecord(element, mutation.attribute);\n } else if (mutation.kind === 'position') {\n record = getElementPositionRecord(element);\n }\n\n if (!record) return;\n record.mutations.push(mutation);\n record.mutationRunner(record);\n} // get (existing) ElementPropertyRecord, remove mutation from it, then run\n\n\nfunction stopMutating(mutation, el) {\n var record = null;\n\n if (mutation.kind === 'html') {\n record = getElementHTMLRecord(el);\n } else if (mutation.kind === 'class') {\n record = getElementClassRecord(el);\n } else if (mutation.kind === 'attribute') {\n record = getElementAttributeRecord(el, mutation.attribute);\n } else if (mutation.kind === 'position') {\n record = getElementPositionRecord(el);\n }\n\n if (!record) return;\n var index = record.mutations.indexOf(mutation);\n if (index !== -1) record.mutations.splice(index, 1);\n record.mutationRunner(record);\n} // maintain list of elements associated with mutation\n\n\nfunction refreshElementsSet(mutation) {\n // if a position mutation has already found an element to move, don't move\n // any more elements\n if (mutation.kind === 'position' && mutation.elements.size === 1) return;\n var existingElements = new Set(mutation.elements);\n var matchingElements = document.querySelectorAll(mutation.selector);\n matchingElements.forEach(function (el) {\n if (!existingElements.has(el)) {\n mutation.elements.add(el);\n startMutating(mutation, el);\n }\n });\n}\n\nfunction revertMutation(mutation) {\n mutation.elements.forEach(function (el) {\n return stopMutating(mutation, el);\n });\n mutation.elements.clear();\n mutations[\"delete\"](mutation);\n}\n\nfunction refreshAllElementSets() {\n mutations.forEach(refreshElementsSet);\n} // Observer for elements that don't exist in the DOM yet\n\n\nvar observer;\nfunction disconnectGlobalObserver() {\n observer && observer.disconnect();\n}\nfunction connectGlobalObserver() {\n if (typeof document === 'undefined') return;\n\n if (!observer) {\n observer = new MutationObserver(function () {\n refreshAllElementSets();\n });\n }\n\n refreshAllElementSets();\n observer.observe(document.documentElement, {\n childList: true,\n subtree: true,\n attributes: false,\n characterData: false\n });\n} // run on init\n\nconnectGlobalObserver();\n\nfunction newMutation(m) {\n // Not in a browser\n if (typeof document === 'undefined') return nullController; // add to global index of mutations\n\n mutations.add(m); // run refresh on init to establish list of elements associated w/ mutation\n\n refreshElementsSet(m);\n return {\n revert: function revert() {\n revertMutation(m);\n }\n };\n}\n\nfunction html(selector, mutate) {\n return newMutation({\n kind: 'html',\n elements: new Set(),\n mutate: mutate,\n selector: selector\n });\n}\n\nfunction position(selector, mutate) {\n return newMutation({\n kind: 'position',\n elements: new Set(),\n mutate: mutate,\n selector: selector\n });\n}\n\nfunction classes(selector, mutate) {\n return newMutation({\n kind: 'class',\n elements: new Set(),\n mutate: mutate,\n selector: selector\n });\n}\n\nfunction attribute(selector, attribute, mutate) {\n if (!validAttributeName.test(attribute)) return nullController;\n\n if (attribute === 'class' || attribute === 'className') {\n return classes(selector, function (classnames) {\n var mutatedClassnames = mutate(Array.from(classnames).join(' '));\n classnames.clear();\n if (!mutatedClassnames) return;\n mutatedClassnames.split(/\\s+/g).filter(Boolean).forEach(function (c) {\n return classnames.add(c);\n });\n });\n }\n\n return newMutation({\n kind: 'attribute',\n attribute: attribute,\n elements: new Set(),\n mutate: mutate,\n selector: selector\n });\n}\n\nfunction declarative(_ref2) {\n var selector = _ref2.selector,\n action = _ref2.action,\n value = _ref2.value,\n attr = _ref2.attribute,\n parentSelector = _ref2.parentSelector,\n insertBeforeSelector = _ref2.insertBeforeSelector;\n\n if (attr === 'html') {\n if (action === 'append') {\n return html(selector, function (val) {\n return val + (value != null ? value : '');\n });\n } else if (action === 'set') {\n return html(selector, function () {\n return value != null ? value : '';\n });\n }\n } else if (attr === 'class') {\n if (action === 'append') {\n return classes(selector, function (val) {\n if (value) val.add(value);\n });\n } else if (action === 'remove') {\n return classes(selector, function (val) {\n if (value) val[\"delete\"](value);\n });\n } else if (action === 'set') {\n return classes(selector, function (val) {\n val.clear();\n if (value) val.add(value);\n });\n }\n } else if (attr === 'position') {\n if (action === 'set' && parentSelector) {\n return position(selector, function () {\n return {\n insertBeforeSelector: insertBeforeSelector,\n parentSelector: parentSelector\n };\n });\n }\n } else {\n if (action === 'append') {\n return attribute(selector, attr, function (val) {\n return val !== null ? val + (value != null ? value : '') : value != null ? value : '';\n });\n } else if (action === 'set') {\n return attribute(selector, attr, function () {\n return value != null ? value : '';\n });\n } else if (action === 'remove') {\n return attribute(selector, attr, function () {\n return null;\n });\n }\n }\n\n return nullController;\n}\n\nvar index = {\n html: html,\n classes: classes,\n attribute: attribute,\n position: position,\n declarative: declarative\n};\n\nexport default index;\nexport { connectGlobalObserver, disconnectGlobalObserver, validAttributeName };\n//# sourceMappingURL=dom-mutator.esm.js.map\n","const polyfills = {\n fetch: globalThis.fetch ? globalThis.fetch.bind(globalThis) : undefined,\n SubtleCrypto: globalThis.crypto ? globalThis.crypto.subtle : undefined,\n EventSource: globalThis.EventSource\n};\nexport function getPolyfills() {\n return polyfills;\n}\nfunction hashFnv32a(str) {\n let hval = 0x811c9dc5;\n const l = str.length;\n for (let i = 0; i < l; i++) {\n hval ^= str.charCodeAt(i);\n hval += (hval << 1) + (hval << 4) + (hval << 7) + (hval << 8) + (hval << 24);\n }\n return hval >>> 0;\n}\nexport function hash(seed, value, version) {\n // New unbiased hashing algorithm\n if (version === 2) {\n return hashFnv32a(hashFnv32a(seed + value) + \"\") % 10000 / 10000;\n }\n // Original biased hashing algorithm (keep for backwards compatibility)\n if (version === 1) {\n return hashFnv32a(value + seed) % 1000 / 1000;\n }\n\n // Unknown hash version\n return null;\n}\nexport function getEqualWeights(n) {\n if (n <= 0) return [];\n return new Array(n).fill(1 / n);\n}\nexport function inRange(n, range) {\n return n >= range[0] && n < range[1];\n}\nexport function inNamespace(hashValue, namespace) {\n const n = hash(\"__\" + namespace[0], hashValue, 1);\n if (n === null) return false;\n return n >= namespace[1] && n < namespace[2];\n}\nexport function chooseVariation(n, ranges) {\n for (let i = 0; i < ranges.length; i++) {\n if (inRange(n, ranges[i])) {\n return i;\n }\n }\n return -1;\n}\nexport function getUrlRegExp(regexString) {\n try {\n const escaped = regexString.replace(/([^\\\\])\\//g, \"$1\\\\/\");\n return new RegExp(escaped);\n } catch (e) {\n console.error(e);\n return undefined;\n }\n}\nexport function isURLTargeted(url, targets) {\n if (!targets.length) return false;\n let hasIncludeRules = false;\n let isIncluded = false;\n for (let i = 0; i < targets.length; i++) {\n const match = _evalURLTarget(url, targets[i].type, targets[i].pattern);\n if (targets[i].include === false) {\n if (match) return false;\n } else {\n hasIncludeRules = true;\n if (match) isIncluded = true;\n }\n }\n return isIncluded || !hasIncludeRules;\n}\nfunction _evalSimpleUrlPart(actual, pattern, isPath) {\n try {\n // Escape special regex characters and change wildcard `_____` to `.*`\n let escaped = pattern.replace(/[*.+?^${}()|[\\]\\\\]/g, \"\\\\$&\").replace(/_____/g, \".*\");\n if (isPath) {\n // When matching pathname, make leading/trailing slashes optional\n escaped = \"\\\\/?\" + escaped.replace(/(^\\/|\\/$)/g, \"\") + \"\\\\/?\";\n }\n const regex = new RegExp(\"^\" + escaped + \"$\", \"i\");\n return regex.test(actual);\n } catch (e) {\n return false;\n }\n}\nfunction _evalSimpleUrlTarget(actual, pattern) {\n try {\n // If a protocol is missing, but a host is specified, add `https://` to the front\n // Use \"_____\" as the wildcard since `*` is not a valid hostname in some browsers\n const expected = new URL(pattern.replace(/^([^:/?]*)\\./i, \"https://$1.\").replace(/\\*/g, \"_____\"), \"https://_____\");\n\n // Compare each part of the URL separately\n const comps = [[actual.host, expected.host, false], [actual.pathname, expected.pathname, true]];\n // We only want to compare hashes if it's explicitly being targeted\n if (expected.hash) {\n comps.push([actual.hash, expected.hash, false]);\n }\n expected.searchParams.forEach((v, k) => {\n comps.push([actual.searchParams.get(k) || \"\", v, false]);\n });\n\n // If any comparisons fail, the whole thing fails\n return !comps.some(data => !_evalSimpleUrlPart(data[0], data[1], data[2]));\n } catch (e) {\n return false;\n }\n}\nfunction _evalURLTarget(url, type, pattern) {\n try {\n const parsed = new URL(url, \"https://_\");\n if (type === \"regex\") {\n const regex = getUrlRegExp(pattern);\n if (!regex) return false;\n return regex.test(parsed.href) || regex.test(parsed.href.substring(parsed.origin.length));\n } else if (type === \"simple\") {\n return _evalSimpleUrlTarget(parsed, pattern);\n }\n return false;\n } catch (e) {\n return false;\n }\n}\nexport function getBucketRanges(numVariations, coverage, weights) {\n coverage = coverage === undefined ? 1 : coverage;\n\n // Make sure coverage is within bounds\n if (coverage < 0) {\n if (process.env.NODE_ENV !== \"production\") {\n console.error(\"Experiment.coverage must be greater than or equal to 0\");\n }\n coverage = 0;\n } else if (coverage > 1) {\n if (process.env.NODE_ENV !== \"production\") {\n console.error(\"Experiment.coverage must be less than or equal to 1\");\n }\n coverage = 1;\n }\n\n // Default to equal weights if missing or invalid\n const equal = getEqualWeights(numVariations);\n weights = weights || equal;\n if (weights.length !== numVariations) {\n if (process.env.NODE_ENV !== \"production\") {\n console.error(\"Experiment.weights array must be the same length as Experiment.variations\");\n }\n weights = equal;\n }\n\n // If weights don't add up to 1 (or close to it), default to equal weights\n const totalWeight = weights.reduce((w, sum) => sum + w, 0);\n if (totalWeight < 0.99 || totalWeight > 1.01) {\n if (process.env.NODE_ENV !== \"production\") {\n console.error(\"Experiment.weights must add up to 1\");\n }\n weights = equal;\n }\n\n // Covert weights to ranges\n let cumulative = 0;\n return weights.map(w => {\n const start = cumulative;\n cumulative += w;\n return [start, start + coverage * w];\n });\n}\nexport function getQueryStringOverride(id, url, numVariations) {\n if (!url) {\n return null;\n }\n const search = url.split(\"?\")[1];\n if (!search) {\n return null;\n }\n const match = search.replace(/#.*/, \"\") // Get rid of anchor\n .split(\"&\") // Split into key/value pairs\n .map(kv => kv.split(\"=\", 2)).filter(_ref => {\n let [k] = _ref;\n return k === id;\n }) // Look for key that matches the experiment id\n .map(_ref2 => {\n let [, v] = _ref2;\n return parseInt(v);\n }); // Parse the value into an integer\n\n if (match.length > 0 && match[0] >= 0 && match[0] < numVariations) return match[0];\n return null;\n}\nexport function isIncluded(include) {\n try {\n return include();\n } catch (e) {\n console.error(e);\n return false;\n }\n}\nconst base64ToBuf = b => Uint8Array.from(atob(b), c => c.charCodeAt(0));\nexport async function decrypt(encryptedString, decryptionKey, subtle) {\n decryptionKey = decryptionKey || \"\";\n subtle = subtle || globalThis.crypto && globalThis.crypto.subtle || polyfills.SubtleCrypto;\n if (!subtle) {\n throw new Error(\"No SubtleCrypto implementation found\");\n }\n try {\n const key = await subtle.importKey(\"raw\", base64ToBuf(decryptionKey), {\n name: \"AES-CBC\",\n length: 128\n }, true, [\"encrypt\", \"decrypt\"]);\n const [iv, cipherText] = encryptedString.split(\".\");\n const plainTextBuffer = await subtle.decrypt({\n name: \"AES-CBC\",\n iv: base64ToBuf(iv)\n }, key, base64ToBuf(cipherText));\n return new TextDecoder().decode(plainTextBuffer);\n } catch (e) {\n throw new Error(\"Failed to decrypt\");\n }\n}\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport function toString(input) {\n if (typeof input === \"string\") return input;\n return JSON.stringify(input);\n}\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport function paddedVersionString(input) {\n if (typeof input === \"number\") {\n input = input + \"\";\n }\n if (!input || typeof input !== \"string\") {\n input = \"0\";\n }\n // Remove build info and leading `v` if any\n // Split version into parts (both core version numbers and pre-release tags)\n // \"v1.2.3-rc.1+build123\" -> [\"1\",\"2\",\"3\",\"rc\",\"1\"]\n const parts = input.replace(/(^v|\\+.*$)/g, \"\").split(/[-.]/);\n\n // If it's SemVer without a pre-release, add `~` to the end\n // [\"1\",\"0\",\"0\"] -> [\"1\",\"0\",\"0\",\"~\"]\n // \"~\" is the largest ASCII character, so this will make \"1.0.0\" greater than \"1.0.0-beta\" for example\n if (parts.length === 3) {\n parts.push(\"~\");\n }\n\n // Left pad each numeric part with spaces so string comparisons will work (\"9\">\"10\", but \" 9\"<\"10\")\n // Then, join back together into a single string\n return parts.map(v => v.match(/^[0-9]+$/) ? v.padStart(5, \" \") : v).join(\"-\");\n}\nexport function loadSDKVersion() {\n let version;\n try {\n // @ts-expect-error right-hand value to be replaced by build with string literal\n version = \"1.3.0\";\n } catch (e) {\n version = \"\";\n }\n return version;\n}\nexport function mergeQueryStrings(oldUrl, newUrl) {\n let currUrl;\n let redirectUrl;\n try {\n currUrl = new URL(oldUrl);\n redirectUrl = new URL(newUrl);\n } catch (e) {\n console.error(`Unable to merge query strings: ${e}`);\n return newUrl;\n }\n currUrl.searchParams.forEach((value, key) => {\n // skip if search param already exists in redirectUrl\n if (redirectUrl.searchParams.has(key)) {\n return;\n }\n redirectUrl.searchParams.set(key, value);\n });\n return redirectUrl.toString();\n}\nfunction isObj(x) {\n return typeof x === \"object\" && x !== null;\n}\nexport function getAutoExperimentChangeType(exp) {\n if (exp.urlPatterns && exp.variations.some(variation => isObj(variation) && \"urlRedirect\" in variation)) {\n return \"redirect\";\n } else if (exp.variations.some(variation => isObj(variation) && (variation.domMutations || \"js\" in variation || \"css\" in variation))) {\n return \"visual\";\n }\n return \"unknown\";\n}\n\n// Guarantee the promise always resolves within {timeout} ms\n// Resolved value will be `null` when there's an error or it takes too long\n// Note: The promise will continue running in the background, even if the timeout is hit\nexport async function promiseTimeout(promise, timeout) {\n return new Promise(resolve => {\n let resolved = false;\n let timer;\n const finish = data => {\n if (resolved) return;\n resolved = true;\n timer && clearTimeout(timer);\n resolve(data || null);\n };\n if (timeout) {\n timer = setTimeout(() => finish(), timeout);\n }\n promise.then(data => finish(data)).catch(() => finish());\n });\n}\n//# sourceMappingURL=util.mjs.map","import { getPolyfills, promiseTimeout } from \"./util.mjs\";\n// Config settings\nconst cacheSettings = {\n // Consider a fetch stale after 1 minute\n staleTTL: 1000 * 60,\n // Max time to keep a fetch in cache (4 hours default)\n maxAge: 1000 * 60 * 60 * 4,\n cacheKey: \"gbFeaturesCache\",\n backgroundSync: true,\n maxEntries: 10,\n disableIdleStreams: false,\n idleStreamInterval: 20000,\n disableCache: false\n};\nconst polyfills = getPolyfills();\nexport const helpers = {\n fetchFeaturesCall: _ref => {\n let {\n host,\n clientKey,\n headers\n } = _ref;\n return polyfills.fetch(`${host}/api/features/${clientKey}`, {\n headers\n });\n },\n fetchRemoteEvalCall: _ref2 => {\n let {\n host,\n clientKey,\n payload,\n headers\n } = _ref2;\n const options = {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n ...headers\n },\n body: JSON.stringify(payload)\n };\n return polyfills.fetch(`${host}/api/eval/${clientKey}`, options);\n },\n eventSourceCall: _ref3 => {\n let {\n host,\n clientKey,\n headers\n } = _ref3;\n if (headers) {\n return new polyfills.EventSource(`${host}/sub/${clientKey}`, {\n headers\n });\n }\n return new polyfills.EventSource(`${host}/sub/${clientKey}`);\n },\n startIdleListener: () => {\n let idleTimeout;\n const isBrowser = typeof window !== \"undefined\" && typeof document !== \"undefined\";\n if (!isBrowser) return;\n const onVisibilityChange = () => {\n if (document.visibilityState === \"visible\") {\n window.clearTimeout(idleTimeout);\n onVisible();\n } else if (document.visibilityState === \"hidden\") {\n idleTimeout = window.setTimeout(onHidden, cacheSettings.idleStreamInterval);\n }\n };\n document.addEventListener(\"visibilitychange\", onVisibilityChange);\n return () => document.removeEventListener(\"visibilitychange\", onVisibilityChange);\n },\n stopIdleListener: () => {\n // No-op, replaced by startIdleListener\n }\n};\ntry {\n if (globalThis.localStorage) {\n polyfills.localStorage = globalThis.localStorage;\n }\n} catch (e) {\n // Ignore localStorage errors\n}\n\n// Global state\nconst subscribedInstances = new Map();\nlet cacheInitialized = false;\nconst cache = new Map();\nconst activeFetches = new Map();\nconst streams = new Map();\nconst supportsSSE = new Set();\n\n// Public functions\nexport function setPolyfills(overrides) {\n Object.assign(polyfills, overrides);\n}\nexport function configureCache(overrides) {\n Object.assign(cacheSettings, overrides);\n if (!cacheSettings.backgroundSync) {\n clearAutoRefresh();\n }\n}\nexport async function clearCache() {\n cache.clear();\n activeFetches.clear();\n clearAutoRefresh();\n cacheInitialized = false;\n await updatePersistentCache();\n}\n\n// Get or fetch features and refresh the SDK instance\nexport async function refreshFeatures(_ref4) {\n let {\n instance,\n timeout,\n skipCache,\n allowStale,\n backgroundSync\n } = _ref4;\n if (!backgroundSync) {\n cacheSettings.backgroundSync = false;\n }\n return fetchFeaturesWithCache({\n instance,\n allowStale,\n timeout,\n skipCache\n });\n}\n\n// Subscribe a GrowthBook instance to feature changes\nfunction subscribe(instance) {\n const key = getKey(instance);\n const subs = subscribedInstances.get(key) || new Set();\n subs.add(instance);\n subscribedInstances.set(key, subs);\n}\nexport function unsubscribe(instance) {\n subscribedInstances.forEach(s => s.delete(instance));\n}\nexport function onHidden() {\n streams.forEach(channel => {\n if (!channel) return;\n channel.state = \"idle\";\n disableChannel(channel);\n });\n}\nexport function onVisible() {\n streams.forEach(channel => {\n if (!channel) return;\n if (channel.state !== \"idle\") return;\n enableChannel(channel);\n });\n}\n\n// Private functions\n\nasync function updatePersistentCache() {\n try {\n if (!polyfills.localStorage) return;\n await polyfills.localStorage.setItem(cacheSettings.cacheKey, JSON.stringify(Array.from(cache.entries())));\n } catch (e) {\n // Ignore localStorage errors\n }\n}\n\n// SWR wrapper for fetching features. May indirectly or directly start SSE streaming.\nasync function fetchFeaturesWithCache(_ref5) {\n let {\n instance,\n allowStale,\n timeout,\n skipCache\n } = _ref5;\n const key = getKey(instance);\n const cacheKey = getCacheKey(instance);\n const now = new Date();\n const minStaleAt = new Date(now.getTime() - cacheSettings.maxAge + cacheSettings.staleTTL);\n await initializeCache();\n const existing = !cacheSettings.disableCache && !skipCache ? cache.get(cacheKey) : undefined;\n if (existing && (allowStale || existing.staleAt > now) && existing.staleAt > minStaleAt) {\n // Restore from cache whether SSE is supported\n if (existing.sse) supportsSSE.add(key);\n\n // Reload features in the background if stale\n if (existing.staleAt < now) {\n fetchFeatures(instance);\n }\n // Otherwise, if we don't need to refresh now, start a background sync\n else {\n startAutoRefresh(instance);\n }\n return {\n data: existing.data,\n success: true,\n source: \"cache\"\n };\n } else {\n const res = await promiseTimeout(fetchFeatures(instance), timeout);\n return res || {\n data: null,\n success: false,\n source: \"timeout\",\n error: new Error(\"Timeout\")\n };\n }\n}\nfunction getKey(instance) {\n const [apiHost, clientKey] = instance.getApiInfo();\n return `${apiHost}||${clientKey}`;\n}\nfunction getCacheKey(instance) {\n const baseKey = getKey(instance);\n if (!(\"isRemoteEval\" in instance) || !instance.isRemoteEval()) return baseKey;\n const attributes = instance.getAttributes();\n const cacheKeyAttributes = instance.getCacheKeyAttributes() || Object.keys(instance.getAttributes());\n const ca = {};\n cacheKeyAttributes.forEach(key => {\n ca[key] = attributes[key];\n });\n const fv = instance.getForcedVariations();\n const url = instance.getUrl();\n return `${baseKey}||${JSON.stringify({\n ca,\n fv,\n url\n })}`;\n}\n\n// Populate cache from localStorage (if available)\nasync function initializeCache() {\n if (cacheInitialized) return;\n cacheInitialized = true;\n try {\n if (polyfills.localStorage) {\n const value = await polyfills.localStorage.getItem(cacheSettings.cacheKey);\n if (!cacheSettings.disableCache && value) {\n const parsed = JSON.parse(value);\n if (parsed && Array.isArray(parsed)) {\n parsed.forEach(_ref6 => {\n let [key, data] = _ref6;\n cache.set(key, {\n ...data,\n staleAt: new Date(data.staleAt)\n });\n });\n }\n cleanupCache();\n }\n }\n } catch (e) {\n // Ignore localStorage errors\n }\n if (!cacheSettings.disableIdleStreams) {\n const cleanupFn = helpers.startIdleListener();\n if (cleanupFn) {\n helpers.stopIdleListener = cleanupFn;\n }\n }\n}\n\n// Enforce the maxEntries limit\nfunction cleanupCache() {\n const entriesWithTimestamps = Array.from(cache.entries()).map(_ref7 => {\n let [key, value] = _ref7;\n return {\n key,\n staleAt: value.staleAt.getTime()\n };\n }).sort((a, b) => a.staleAt - b.staleAt);\n const entriesToRemoveCount = Math.min(Math.max(0, cache.size - cacheSettings.maxEntries), cache.size);\n for (let i = 0; i < entriesToRemoveCount; i++) {\n cache.delete(entriesWithTimestamps[i].key);\n }\n}\n\n// Called whenever new features are fetched from the API\nfunction onNewFeatureData(key, cacheKey, data) {\n // If contents haven't changed, ignore the update, extend the stale TTL\n const version = data.dateUpdated || \"\";\n const staleAt = new Date(Date.now() + cacheSettings.staleTTL);\n const existing = !cacheSettings.disableCache ? cache.get(cacheKey) : undefined;\n if (existing && version && existing.version === version) {\n existing.staleAt = staleAt;\n updatePersistentCache();\n return;\n }\n if (!cacheSettings.disableCache) {\n // Update in-memory cache\n cache.set(cacheKey, {\n data,\n version,\n staleAt,\n sse: supportsSSE.has(key)\n });\n cleanupCache();\n }\n // Update local storage (don't await this, just update asynchronously)\n updatePersistentCache();\n\n // Update features for all subscribed GrowthBook instances\n const instances = subscribedInstances.get(key);\n instances && instances.forEach(instance => refreshInstance(instance, data));\n}\nasync function refreshInstance(instance, data) {\n await instance.setPayload(data || instance.getPayload());\n}\n\n// Fetch the features payload from helper function or from in-mem injected payload\nasync function fetchFeatures(instance) {\n const {\n apiHost,\n apiRequestHeaders\n } = instance.getApiHosts();\n const clientKey = instance.getClientKey();\n const remoteEval = \"isRemoteEval\" in instance && instance.isRemoteEval();\n const key = getKey(instance);\n const cacheKey = getCacheKey(instance);\n let promise = activeFetches.get(cacheKey);\n if (!promise) {\n const fetcher = remoteEval ? helpers.fetchRemoteEvalCall({\n host: apiHost,\n clientKey,\n payload: {\n attributes: instance.getAttributes(),\n forcedVariations: instance.getForcedVariations(),\n forcedFeatures: Array.from(instance.getForcedFeatures().entries()),\n url: instance.getUrl()\n },\n headers: apiRequestHeaders\n }) : helpers.fetchFeaturesCall({\n host: apiHost,\n clientKey,\n headers: apiRequestHeaders\n });\n\n // TODO: auto-retry if status code indicates a temporary error\n promise = fetcher.then(res => {\n if (!res.ok) {\n throw new Error(`HTTP error: ${res.status}`);\n }\n if (res.headers.get(\"x-sse-support\") === \"enabled\") {\n supportsSSE.add(key);\n }\n return res.json();\n }).then(data => {\n onNewFeatureData(key, cacheKey, data);\n startAutoRefresh(instance);\n activeFetches.delete(cacheKey);\n return {\n data,\n success: true,\n source: \"network\"\n };\n }).catch(e => {\n process.env.NODE_ENV !== \"production\" && instance.log(\"Error fetching features\", {\n apiHost,\n clientKey,\n error: e ? e.message : null\n });\n activeFetches.delete(cacheKey);\n return {\n data: null,\n source: \"error\",\n success: false,\n error: e\n };\n });\n activeFetches.set(cacheKey, promise);\n }\n return promise;\n}\n\n// Start SSE streaming, listens to feature payload changes and triggers a refresh or re-fetch\nfunction startAutoRefresh(instance) {\n let forceSSE = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n const key = getKey(instance);\n const cacheKey = getCacheKey(instance);\n const {\n streamingHost,\n streamingHostRequestHeaders\n } = instance.getApiHosts();\n const clientKey = instance.getClientKey();\n if (forceSSE) {\n supportsSSE.add(key);\n }\n if (cacheSettings.backgroundSync && supportsSSE.has(key) && polyfills.EventSource) {\n if (streams.has(key)) return;\n const channel = {\n src: null,\n host: streamingHost,\n clientKey,\n headers: streamingHostRequestHeaders,\n cb: event => {\n try {\n if (event.type === \"features-updated\") {\n const instances = subscribedInstances.get(key);\n instances && instances.forEach(instance => {\n fetchFeatures(instance);\n });\n } else if (event.type === \"features\") {\n const json = JSON.parse(event.data);\n onNewFeatureData(key, cacheKey, json);\n }\n // Reset error count on success\n channel.errors = 0;\n } catch (e) {\n process.env.NODE_ENV !== \"production\" && instance.log(\"SSE Error\", {\n streamingHost,\n clientKey,\n error: e ? e.message : null\n });\n onSSEError(channel);\n }\n },\n errors: 0,\n state: \"active\"\n };\n streams.set(key, channel);\n enableChannel(channel);\n }\n}\nfunction onSSEError(channel) {\n if (channel.state === \"idle\") return;\n channel.errors++;\n if (channel.errors > 3 || channel.src && channel.src.readyState === 2) {\n // exponential backoff after 4 errors, with jitter\n const delay = Math.pow(3, channel.errors - 3) * (1000 + Math.random() * 1000);\n disableChannel(channel);\n setTimeout(() => {\n if ([\"idle\", \"active\"].includes(channel.state)) return;\n enableChannel(channel);\n }, Math.min(delay, 300000)); // 5 minutes max\n }\n}\n\nfunction disableChannel(channel) {\n if (!channel.src) return;\n channel.src.onopen = null;\n channel.src.onerror = null;\n channel.src.close();\n channel.src = null;\n if (channel.state === \"active\") {\n channel.state = \"disabled\";\n }\n}\nfunction enableChannel(channel) {\n channel.src = helpers.eventSourceCall({\n host: channel.host,\n clientKey: channel.clientKey,\n headers: channel.headers\n });\n channel.state = \"active\";\n channel.src.addEventListener(\"features\", channel.cb);\n channel.src.addEventListener(\"features-updated\", channel.cb);\n channel.src.onerror = () => onSSEError(channel);\n channel.src.onopen = () => {\n channel.errors = 0;\n };\n}\nfunction destroyChannel(channel, key) {\n disableChannel(channel);\n streams.delete(key);\n}\nfunction clearAutoRefresh() {\n // Clear list of which keys are auto-updated\n supportsSSE.clear();\n\n // Stop listening for any SSE events\n streams.forEach(destroyChannel);\n\n // Remove all references to GrowthBook instances\n subscribedInstances.clear();\n\n // Run the idle stream cleanup function\n helpers.stopIdleListener();\n}\nexport function startStreaming(instance, options) {\n if (options.streaming) {\n if (!instance.getClientKey()) {\n throw new Error(\"Must specify clientKey to enable streaming\");\n }\n if (options.payload) {\n startAutoRefresh(instance, true);\n }\n subscribe(instance);\n }\n}\n//# sourceMappingURL=feature-repository.mjs.map","/* eslint-disable @typescript-eslint/no-explicit-any */\n\nimport { paddedVersionString } from \"./util.mjs\";\nconst _regexCache = {};\n\n// The top-level condition evaluation function\nexport function evalCondition(obj, condition,\n// Must be included for `condition` to correctly evaluate group Operators\nsavedGroups) {\n savedGroups = savedGroups || {};\n // Condition is an object, keys are either specific operators or object paths\n // values are either arguments for operators or conditions for paths\n for (const [k, v] of Object.entries(condition)) {\n switch (k) {\n case \"$or\":\n if (!evalOr(obj, v, savedGroups)) return false;\n break;\n case \"$nor\":\n if (evalOr(obj, v, savedGroups)) return false;\n break;\n case \"$and\":\n if (!evalAnd(obj, v, savedGroups)) return false;\n break;\n case \"$not\":\n if (evalCondition(obj, v, savedGroups)) return false;\n break;\n default:\n if (!evalConditionValue(v, getPath(obj, k), savedGroups)) return false;\n }\n }\n return true;\n}\n\n// Return value at dot-separated path of an object\nfunction getPath(obj, path) {\n const parts = path.split(\".\");\n let current = obj;\n for (let i = 0; i < parts.length; i++) {\n if (current && typeof current === \"object\" && parts[i] in current) {\n current = current[parts[i]];\n } else {\n return null;\n }\n }\n return current;\n}\n\n// Transform a regex string into a real RegExp object\nfunction getRegex(regex) {\n if (!_regexCache[regex]) {\n _regexCache[regex] = new RegExp(regex.replace(/([^\\\\])\\//g, \"$1\\\\/\"));\n }\n return _regexCache[regex];\n}\n\n// Evaluate a single value against a condition\nfunction evalConditionValue(condition, value, savedGroups) {\n // Simple equality comparisons\n if (typeof condition === \"string\") {\n return value + \"\" === condition;\n }\n if (typeof condition === \"number\") {\n return value * 1 === condition;\n }\n if (typeof condition === \"boolean\") {\n return !!value === condition;\n }\n if (condition === null) {\n return value === null;\n }\n if (Array.isArray(condition) || !isOperatorObject(condition)) {\n return JSON.stringify(value) === JSON.stringify(condition);\n }\n\n // This is a special operator condition and we should evaluate each one separately\n for (const op in condition) {\n if (!evalOperatorCondition(op, value, condition[op], savedGroups)) {\n return false;\n }\n }\n return true;\n}\n\n// If the object has only keys that start with '$'\nfunction isOperatorObject(obj) {\n const keys = Object.keys(obj);\n return keys.length > 0 && keys.filter(k => k[0] === \"$\").length === keys.length;\n}\n\n// Return the data type of a value\nfunction getType(v) {\n if (v === null) return \"null\";\n if (Array.isArray(v)) return \"array\";\n const t = typeof v;\n if ([\"string\", \"number\", \"boolean\", \"object\", \"undefined\"].includes(t)) {\n return t;\n }\n return \"unknown\";\n}\n\n// At least one element of actual must match the expected condition/value\nfunction elemMatch(actual, expected, savedGroups) {\n if (!Array.isArray(actual)) return false;\n const check = isOperatorObject(expected) ? v => evalConditionValue(expected, v, savedGroups) : v => evalCondition(v, expected, savedGroups);\n for (let i = 0; i < actual.length; i++) {\n if (actual[i] && check(actual[i])) {\n return true;\n }\n }\n return false;\n}\nfunction isIn(actual, expected) {\n // Do an intersection if attribute is an array\n if (Array.isArray(actual)) {\n return actual.some(el => expected.includes(el));\n }\n return expected.includes(actual);\n}\n\n// Evaluate a single operator condition\nfunction evalOperatorCondition(operator, actual, expected, savedGroups) {\n switch (operator) {\n case \"$veq\":\n return paddedVersionString(actual) === paddedVersionString(expected);\n case \"$vne\":\n return paddedVersionString(actual) !== paddedVersionString(expected);\n case \"$vgt\":\n return paddedVersionString(actual) > paddedVersionString(expected);\n case \"$vgte\":\n return paddedVersionString(actual) >= paddedVersionString(expected);\n case \"$vlt\":\n return paddedVersionString(actual) < paddedVersionString(expected);\n case \"$vlte\":\n return paddedVersionString(actual) <= paddedVersionString(expected);\n case \"$eq\":\n return actual === expected;\n case \"$ne\":\n return actual !== expected;\n case \"$lt\":\n return actual < expected;\n case \"$lte\":\n return actual <= expected;\n case \"$gt\":\n return actual > expected;\n case \"$gte\":\n return actual >= expected;\n case \"$exists\":\n // Using `!=` and `==` instead of strict checks so it also matches for undefined\n return expected ? actual != null : actual == null;\n case \"$in\":\n if (!Array.isArray(expected)) return false;\n return isIn(actual, expected);\n case \"$inGroup\":\n return isIn(actual, savedGroups[expected] || []);\n case \"$notInGroup\":\n return !isIn(actual, savedGroups[expected] || []);\n case \"$nin\":\n if (!Array.isArray(expected)) return false;\n return !isIn(actual, expected);\n case \"$not\":\n return !evalConditionValue(expected, actual, savedGroups);\n case \"$size\":\n if (!Array.isArray(actual)) return false;\n return evalConditionValue(expected, actual.length, savedGroups);\n case \"$elemMatch\":\n return elemMatch(actual, expected, savedGroups);\n case \"$all\":\n if (!Array.isArray(actual)) return false;\n for (let i = 0; i < expected.length; i++) {\n let passed = false;\n for (let j = 0; j < actual.length; j++) {\n if (evalConditionValue(expected[i], actual[j], savedGroups)) {\n passed = true;\n break;\n }\n }\n if (!passed) return false;\n }\n return true;\n case \"$regex\":\n try {\n return getRegex(expected).test(actual);\n } catch (e) {\n return false;\n }\n case \"$type\":\n return getType(actual) === expected;\n default:\n console.error(\"Unknown operator: \" + operator);\n return false;\n }\n}\n\n// Recursive $or rule\nfunction evalOr(obj, conditions, savedGroups) {\n if (!conditions.length) return true;\n for (let i = 0; i < conditions.length; i++) {\n if (evalCondition(obj, conditions[i], savedGroups)) {\n return true;\n }\n }\n return false;\n}\n\n// Recursive $and rule\nfunction evalAnd(obj, conditions, savedGroups) {\n for (let i = 0; i < conditions.length; i++) {\n if (!evalCondition(obj, conditions[i], savedGroups)) {\n return false;\n }\n }\n return true;\n}\n//# sourceMappingURL=mongrule.mjs.map","import { evalCondition } from \"./mongrule.mjs\";\nimport { chooseVariation, decrypt, getBucketRanges, getQueryStringOverride, getUrlRegExp, hash, inNamespace, inRange, isIncluded, isURLTargeted, toString } from \"./util.mjs\";\nfunction getForcedFeatureValues(ctx) {\n // Merge user and global values\n const ret = new Map();\n if (ctx.global.forcedFeatureValues) {\n ctx.global.forcedFeatureValues.forEach((v, k) => ret.set(k, v));\n }\n if (ctx.user.forcedFeatureValues) {\n ctx.user.forcedFeatureValues.forEach((v, k) => ret.set(k, v));\n }\n return ret;\n}\nfunction getForcedVariations(ctx) {\n // Merge user and global values\n if (ctx.global.forcedVariations && ctx.user.forcedVariations) {\n return {\n ...ctx.global.forcedVariations,\n ...ctx.user.forcedVariations\n };\n } else if (ctx.global.forcedVariations) {\n return ctx.global.forcedVariations;\n } else if (ctx.user.forcedVariations) {\n return ctx.user.forcedVariations;\n } else {\n return {};\n }\n}\nexport function evalFeature(id, ctx) {\n if (ctx.stack.evaluatedFeatures.has(id)) {\n process.env.NODE_ENV !== \"production\" && ctx.global.log(`evalFeature: circular dependency detected: ${ctx.stack.id} -> ${id}`, {\n from: ctx.stack.id,\n to: id\n });\n return getFeatureResult(ctx, id, null, \"cyclicPrerequisite\");\n }\n ctx.stack.evaluatedFeatures.add(id);\n ctx.stack.id = id;\n\n // Global override\n const forcedValues = getForcedFeatureValues(ctx);\n if (forcedValues.has(id)) {\n process.env.NODE_ENV !== \"production\" && ctx.global.log(\"Global override\", {\n id,\n value: forcedValues.get(id)\n });\n return getFeatureResult(ctx, id, forcedValues.get(id), \"override\");\n }\n\n // Unknown feature id\n if (!ctx.global.features || !ctx.global.features[id]) {\n process.env.NODE_ENV !== \"production\" && ctx.global.log(\"Unknown feature\", {\n id\n });\n return getFeatureResult(ctx, id, null, \"unknownFeature\");\n }\n\n // Get the feature\n const feature = ctx.global.features[id];\n\n // Loop through the rules\n if (feature.rules) {\n rules: for (const rule of feature.rules) {\n // If there are prerequisite flag(s), evaluate them\n if (rule.parentConditions) {\n for (const parentCondition of rule.parentConditions) {\n const parentResult = evalFeature(parentCondition.id, ctx);\n // break out for cyclic prerequisites\n if (parentResult.source === \"cyclicPrerequisite\") {\n return getFeatureResult(ctx, id, null, \"cyclicPrerequisite\");\n }\n const evalObj = {\n value: parentResult.value\n };\n const evaled = evalCondition(evalObj, parentCondition.condition || {});\n if (!evaled) {\n // blocking prerequisite eval failed: feature evaluation fails\n if (parentCondition.gate) {\n process.env.NODE_ENV !== \"production\" && ctx.global.log(\"Feature blocked by prerequisite\", {\n id,\n rule\n });\n return getFeatureResult(ctx, id, null, \"prerequisite\");\n }\n // non-blocking prerequisite eval failed: break out of parentConditions loop, jump to the next rule\n process.env.NODE_ENV !== \"production\" && ctx.global.log(\"Skip rule because prerequisite evaluation fails\", {\n id,\n rule\n });\n continue rules;\n }\n }\n }\n\n // If there are filters for who is included (e.g. namespaces)\n if (rule.filters && isFilteredOut(rule.filters, ctx)) {\n process.env.NODE_ENV !== \"production\" && ctx.global.log(\"Skip rule because of filters\", {\n id,\n rule\n });\n continue;\n }\n\n // Feature value is being forced\n if (\"force\" in rule) {\n // If it's a conditional rule, skip if the condition doesn't pass\n if (rule.condition && !conditionPasses(rule.condition, ctx)) {\n process.env.NODE_ENV !== \"production\" && ctx.global.log(\"Skip rule because of condition ff\", {\n id,\n rule\n });\n continue;\n }\n\n // If this is a percentage rollout, skip if not included\n if (!isIncludedInRollout(ctx, rule.seed || id, rule.hashAttribute, ctx.user.saveStickyBucketAssignmentDoc && !rule.disableStickyBucketing ? rule.fallbackAttribute : undefined, rule.range, rule.coverage, rule.hashVersion)) {\n process.env.NODE_ENV !== \"production\" && ctx.global.log(\"Skip rule because user not included in rollout\", {\n id,\n rule\n });\n continue;\n }\n process.env.NODE_ENV !== \"production\" && ctx.global.log(\"Force value from rule\", {\n id,\n rule\n });\n\n // If this was a remotely evaluated experiment, fire the tracking callbacks\n if (rule.tracks) {\n rule.tracks.forEach(t => {\n let tracked = false;\n if (ctx.global.trackingCallback) {\n tracked = true;\n Promise.resolve(ctx.global.trackingCallback(t.experiment, t.result, ctx.user)).catch(() => {});\n }\n if (ctx.user.trackingCallback) {\n tracked = true;\n Promise.resolve(ctx.user.trackingCallback(t.experiment, t.result)).catch(() => {});\n }\n if (!tracked && ctx.global.saveDeferredTrack) {\n ctx.global.saveDeferredTrack({\n experiment: t.experiment,\n result: t.result\n });\n }\n });\n }\n return getFeatureResult(ctx, id, rule.force, \"force\", rule.id);\n }\n if (!rule.variations) {\n process.env.NODE_ENV !== \"production\" && ctx.global.log(\"Skip invalid rule\", {\n id,\n rule\n });\n continue;\n }\n\n // For experiment rules, run an experiment\n const exp = {\n variations: rule.variations,\n key: rule.key || id\n };\n if (\"coverage\" in rule) exp.coverage = rule.coverage;\n if (rule.weights) exp.weights = rule.weights;\n if (rule.hashAttribute) exp.hashAttribute = rule.hashAttribute;\n if (rule.fallbackAttribute) exp.fallbackAttribute = rule.fallbackAttribute;\n if (rule.disableStickyBucketing) exp.disableStickyBucketing = rule.disableStickyBucketing;\n if (rule.bucketVersion !== undefined) exp.bucketVersion = rule.bucketVersion;\n if (rule.minBucketVersion !== undefined) exp.minBucketVersion = rule.minBucketVersion;\n if (rule.namespace) exp.namespace = rule.namespace;\n if (rule.meta) exp.meta = rule.meta;\n if (rule.ranges) exp.ranges = rule.ranges;\n if (rule.name) exp.name = rule.name;\n if (rule.phase) exp.phase = rule.phase;\n if (rule.seed) exp.seed = rule.seed;\n if (rule.hashVersion) exp.hashVersion = rule.hashVersion;\n if (rule.filters) exp.filters = rule.filters;\n if (rule.condition) exp.condition = rule.condition;\n\n // Only return a value if the user is part of the experiment\n const {\n result\n } = runExperiment(exp, id, ctx);\n ctx.global.onExperimentEval && ctx.global.onExperimentEval(exp, result);\n if (result.inExperiment && !result.passthrough) {\n return getFeatureResult(ctx, id, result.value, \"experiment\", rule.id, exp, result);\n }\n }\n }\n process.env.NODE_ENV !== \"production\" && ctx.global.log(\"Use default value\", {\n id,\n value: feature.defaultValue\n });\n\n // Fall back to using the default value\n return getFeatureResult(ctx, id, feature.defaultValue === undefined ? null : feature.defaultValue, \"defaultValue\");\n}\nexport function runExperiment(experiment, featureId, ctx) {\n const key = experiment.key;\n const numVariations = experiment.variations.length;\n\n // 1. If experiment has less than 2 variations, return immediately\n if (numVariations < 2) {\n process.env.NODE_ENV !== \"production\" && ctx.global.log(\"Invalid experiment\", {\n id: key\n });\n return {\n result: getExperimentResult(ctx, experiment, -1, false, featureId)\n };\n }\n\n // 2. If the context is disabled, return immediately\n if (ctx.global.enabled === false || ctx.user.enabled === false) {\n process.env.NODE_ENV !== \"production\" && ctx.global.log(\"Context disabled\", {\n id: key\n });\n return {\n result: getExperimentResult(ctx, experiment, -1, false, featureId)\n };\n }\n\n // 2.5. Merge in experiment overrides from the context\n experiment = mergeOverrides(experiment, ctx);\n\n // 2.6 New, more powerful URL targeting\n if (experiment.urlPatterns && !isURLTargeted(ctx.user.url || \"\", experiment.urlPatterns)) {\n process.env.NODE_ENV !== \"production\" && ctx.global.log(\"Skip because of url targeting\", {\n id: key\n });\n return {\n result: getExperimentResult(ctx, experiment, -1, false, featureId)\n };\n }\n\n // 3. If a variation is forced from a querystring, return the forced variation\n const qsOverride = getQueryStringOverride(key, ctx.user.url || \"\", numVariations);\n if (qsOverride !== null) {\n process.env.NODE_ENV !== \"production\" && ctx.global.log(\"Force via querystring\", {\n id: key,\n variation: qsOverride\n });\n return {\n result: getExperimentResult(ctx, experiment, qsOverride, false, featureId)\n };\n }\n\n // 4. If a variation is forced in the context, return the forced variation\n const forcedVariations = getForcedVariations(ctx);\n if (key in forcedVariations) {\n const variation = forcedVariations[key];\n process.env.NODE_ENV !== \"production\" && ctx.global.log(\"Force via dev tools\", {\n id: key,\n variation\n });\n return {\n result: getExperimentResult(ctx, experiment, variation, false, featureId)\n };\n }\n\n // 5. Exclude if a draft experiment or not active\n if (experiment.status === \"draft\" || experiment.active === false) {\n process.env.NODE_ENV !== \"production\" && ctx.global.log(\"Skip because inactive\", {\n id: key\n });\n return {\n result: getExperimentResult(ctx, experiment, -1, false, featureId)\n };\n }\n\n // 6. Get the hash attribute and return if empty\n const {\n hashAttribute,\n hashValue\n } = getHashAttribute(ctx, experiment.hashAttribute, ctx.user.saveStickyBucketAssignmentDoc && !experiment.disableStickyBucketing ? experiment.fallbackAttribute : undefined);\n if (!hashValue) {\n process.env.NODE_ENV !== \"production\" && ctx.global.log(\"Skip because missing hashAttribute\", {\n id: key\n });\n return {\n result: getExperimentResult(ctx, experiment, -1, false, featureId)\n };\n }\n let assigned = -1;\n let foundStickyBucket = false;\n let stickyBucketVersionIsBlocked = false;\n if (ctx.user.saveStickyBucketAssignmentDoc && !experiment.disableStickyBucketing) {\n const {\n variation,\n versionIsBlocked\n } = getStickyBucketVariation({\n ctx,\n expKey: experiment.key,\n expBucketVersion: experiment.bucketVersion,\n expHashAttribute: experiment.hashAttribute,\n expFallbackAttribute: experiment.fallbackAttribute,\n expMinBucketVersion: experiment.minBucketVersion,\n expMeta: experiment.meta\n });\n foundStickyBucket = variation >= 0;\n assigned = variation;\n stickyBucketVersionIsBlocked = !!versionIsBlocked;\n }\n\n // Some checks are not needed if we already have a sticky bucket\n if (!foundStickyBucket) {\n // 7. Exclude if user is filtered out (used to be called \"namespace\")\n if (experiment.filters) {\n if (isFilteredOut(experiment.filters, ctx)) {\n process.env.NODE_ENV !== \"production\" && ctx.global.log(\"Skip because of filters\", {\n id: key\n });\n return {\n result: getExperimentResult(ctx, experiment, -1, false, featureId)\n };\n }\n } else if (experiment.namespace && !inNamespace(hashValue, experiment.namespace)) {\n process.env.NODE_ENV !== \"production\" && ctx.global.log(\"Skip because of namespace\", {\n id: key\n });\n return {\n result: getExperimentResult(ctx, experiment, -1, false, featureId)\n };\n }\n\n // 7.5. Exclude if experiment.include returns false or throws\n if (experiment.include && !isIncluded(experiment.include)) {\n process.env.NODE_ENV !== \"production\" && ctx.global.log(\"Skip because of include function\", {\n id: key\n });\n return {\n result: getExperimentResult(ctx, experiment, -1, false, featureId)\n };\n }\n\n // 8. Exclude if condition is false\n if (experiment.condition && !conditionPasses(experiment.condition, ctx)) {\n process.env.NODE_ENV !== \"production\" && ctx.global.log(\"Skip because of condition exp\", {\n id: key\n });\n return {\n result: getExperimentResult(ctx, experiment, -1, false, featureId)\n };\n }\n\n // 8.05. Exclude if prerequisites are not met\n if (experiment.parentConditions) {\n for (const parentCondition of experiment.parentConditions) {\n const parentResult = evalFeature(parentCondition.id, ctx);\n // break out for cyclic prerequisites\n if (parentResult.source === \"cyclicPrerequisite\") {\n return {\n result: getExperimentResult(ctx, experiment, -1, false, featureId)\n };\n }\n const evalObj = {\n value: parentResult.value\n };\n if (!evalCondition(evalObj, parentCondition.condition || {})) {\n process.env.NODE_ENV !== \"production\" && ctx.global.log(\"Skip because prerequisite evaluation fails\", {\n id: key\n });\n return {\n result: getExperimentResult(ctx, experiment, -1, false, featureId)\n };\n }\n }\n }\n\n // 8.1. Exclude if user is not in a required group\n if (experiment.groups && !hasGroupOverlap(experiment.groups, ctx)) {\n process.env.NODE_ENV !== \"production\" && ctx.global.log(\"Skip because of groups\", {\n id: key\n });\n return {\n result: getExperimentResult(ctx, experiment, -1, false, featureId)\n };\n }\n }\n\n // 8.2. Old style URL targeting\n if (experiment.url && !urlIsValid(experiment.url, ctx)) {\n process.env.NODE_ENV !== \"production\" && ctx.global.log(\"Skip because of url\", {\n id: key\n });\n return {\n result: getExperimentResult(ctx, experiment, -1, false, featureId)\n };\n }\n\n // 9. Get the variation from the sticky bucket or get bucket ranges and choose variation\n const n = hash(experiment.seed || key, hashValue, experiment.hashVersion || 1);\n if (n === null) {\n process.env.NODE_ENV !== \"production\" && ctx.global.log(\"Skip because of invalid hash version\", {\n id: key\n });\n return {\n result: getExperimentResult(ctx, experiment, -1, false, featureId)\n };\n }\n if (!foundStickyBucket) {\n const ranges = experiment.ranges || getBucketRanges(numVariations, experiment.coverage === undefined ? 1 : experiment.coverage, experiment.weights);\n assigned = chooseVariation(n, ranges);\n }\n\n // 9.5 Unenroll if any prior sticky buckets are blocked by version\n if (stickyBucketVersionIsBlocked) {\n process.env.NODE_ENV !== \"production\" && ctx.global.log(\"Skip because sticky bucket version is blocked\", {\n id: key\n });\n return {\n result: getExperimentResult(ctx, experiment, -1, false, featureId, undefined, true)\n };\n }\n\n // 10. Return if not in experiment\n if (assigned < 0) {\n process.env.NODE_ENV !== \"production\" && ctx.global.log(\"Skip because of coverage\", {\n id: key\n });\n return {\n result: getExperimentResult(ctx, experiment, -1, false, featureId)\n };\n }\n\n // 11. Experiment has a forced variation\n if (\"force\" in experiment) {\n process.env.NODE_ENV !== \"production\" && ctx.global.log(\"Force variation\", {\n id: key,\n variation: experiment.force\n });\n return {\n result: getExperimentResult(ctx, experiment, experiment.force === undefined ? -1 : experiment.force, false, featureId)\n };\n }\n\n // 12. Exclude if in QA mode\n if (ctx.global.qaMode || ctx.user.qaMode) {\n process.env.NODE_ENV !== \"production\" && ctx.global.log(\"Skip because QA mode\", {\n id: key\n });\n return {\n result: getExperimentResult(ctx, experiment, -1, false, featureId)\n };\n }\n\n // 12.5. Exclude if experiment is stopped\n if (experiment.status === \"stopped\") {\n process.env.NODE_ENV !== \"production\" && ctx.global.log(\"Skip because stopped\", {\n id: key\n });\n return {\n result: getExperimentResult(ctx, experiment, -1, false, featureId)\n };\n }\n\n // 13. Build the result object\n const result = getExperimentResult(ctx, experiment, assigned, true, featureId, n, foundStickyBucket);\n\n // 13.5. Persist sticky bucket\n if (ctx.user.saveStickyBucketAssignmentDoc && !experiment.disableStickyBucketing) {\n const {\n changed,\n key: attrKey,\n doc\n } = generateStickyBucketAssignmentDoc(ctx, hashAttribute, toString(hashValue), {\n [getStickyBucketExperimentKey(experiment.key, experiment.bucketVersion)]: result.key\n });\n if (changed) {\n // update local docs\n ctx.user.stickyBucketAssignmentDocs = ctx.user.stickyBucketAssignmentDocs || {};\n ctx.user.stickyBucketAssignmentDocs[attrKey] = doc;\n // save doc\n ctx.user.saveStickyBucketAssignmentDoc(doc);\n }\n }\n\n // 14. Fire the tracking callback(s)\n // Store the promise in case we're awaiting it (ex: browser url redirects)\n const trackingCalls = [];\n if (ctx.global.trackingCallback) {\n trackingCalls.push(Promise.resolve(ctx.global.trackingCallback(experiment, result, ctx.user)).catch(() => {}));\n }\n if (ctx.user.trackingCallback) {\n trackingCalls.push(Promise.resolve(ctx.user.trackingCallback(experiment, result)).catch(() => {}));\n }\n if (trackingCalls.length === 0 && ctx.global.saveDeferredTrack) {\n ctx.global.saveDeferredTrack({\n experiment,\n result\n });\n }\n const trackingCall = !trackingCalls.length ? undefined : trackingCalls.length === 1 ? trackingCalls[0] : Promise.all(trackingCalls).then(() => {});\n\n // 14.1 Keep track of completed changeIds\n \"changeId\" in experiment && experiment.changeId && ctx.global.recordChangeId && ctx.global.recordChangeId(experiment.changeId);\n\n // 15. Return the result\n process.env.NODE_ENV !== \"production\" && ctx.global.log(\"In experiment\", {\n id: key,\n variation: result.variationId\n });\n return {\n result,\n trackingCall\n };\n}\nfunction getFeatureResult(ctx, key, value, source, ruleId, experiment, result) {\n const ret = {\n value,\n on: !!value,\n off: !value,\n source,\n ruleId: ruleId || \"\"\n };\n if (experiment) ret.experiment = experiment;\n if (result) ret.experimentResult = result;\n\n // Track the usage of this feature in real-time\n if (source !== \"override\") {\n if (ctx.global.onFeatureUsage) {\n try {\n ctx.global.onFeatureUsage(key, ret, ctx.user);\n } catch (e) {\n // Ignore feature usage errors\n }\n }\n if (ctx.user.onFeatureUsage) {\n try {\n ctx.user.onFeatureUsage(key, ret);\n } catch (e) {\n // Ignore feature usage errors\n }\n }\n }\n return ret;\n}\nfunction conditionPasses(condition, ctx) {\n return evalCondition(ctx.user.attributes || {}, condition, ctx.global.savedGroups || {});\n}\nfunction isFilteredOut(filters, ctx) {\n return filters.some(filter => {\n const {\n hashValue\n } = getHashAttribute(ctx, filter.attribute);\n if (!hashValue) return true;\n const n = hash(filter.seed, hashValue, filter.hashVersion || 2);\n if (n === null) return true;\n return !filter.ranges.some(r => inRange(n, r));\n });\n}\nfunction isIncludedInRollout(ctx, seed, hashAttribute, fallbackAttribute, range, coverage, hashVersion) {\n if (!range && coverage === undefined) return true;\n if (!range && coverage === 0) return false;\n const {\n hashValue\n } = getHashAttribute(ctx, hashAttribute, fallbackAttribute);\n if (!hashValue) {\n return false;\n }\n const n = hash(seed, hashValue, hashVersion || 1);\n if (n === null) return false;\n return range ? inRange(n, range) : coverage !== undefined ? n <= coverage : true;\n}\nexport function getExperimentResult(ctx, experiment, variationIndex, hashUsed, featureId, bucket, stickyBucketUsed) {\n let inExperiment = true;\n // If assigned variation is not valid, use the baseline and mark the user as not in the experiment\n if (variationIndex < 0 || variationIndex >= experiment.variations.length) {\n variationIndex = 0;\n inExperiment = false;\n }\n const {\n hashAttribute,\n hashValue\n } = getHashAttribute(ctx, experiment.hashAttribute, ctx.user.saveStickyBucketAssignmentDoc && !experiment.disableStickyBucketing ? experiment.fallbackAttribute : undefined);\n const meta = experiment.meta ? experiment.meta[variationIndex] : {};\n const res = {\n key: meta.key || \"\" + variationIndex,\n featureId,\n inExperiment,\n hashUsed,\n variationId: variationIndex,\n value: experiment.variations[variationIndex],\n hashAttribute,\n hashValue,\n stickyBucketUsed: !!stickyBucketUsed\n };\n if (meta.name) res.name = meta.name;\n if (bucket !== undefined) res.bucket = bucket;\n if (meta.passthrough) res.passthrough = meta.passthrough;\n return res;\n}\nfunction mergeOverrides(experiment, ctx) {\n const key = experiment.key;\n const o = ctx.global.overrides;\n if (o && o[key]) {\n experiment = Object.assign({}, experiment, o[key]);\n if (typeof experiment.url === \"string\") {\n experiment.url = getUrlRegExp(\n // eslint-disable-next-line\n experiment.url);\n }\n }\n return experiment;\n}\nexport function getHashAttribute(ctx, attr, fallback) {\n let hashAttribute = attr || \"id\";\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n let hashValue = \"\";\n if (ctx.user.attributes && ctx.user.attributes[hashAttribute]) {\n hashValue = ctx.user.attributes[hashAttribute];\n }\n\n // if no match, try fallback\n if (ctx.user.attributes && !hashValue && fallback) {\n if (ctx.user.attributes[fallback]) {\n hashValue = ctx.user.attributes[fallback];\n }\n if (hashValue) {\n hashAttribute = fallback;\n }\n }\n return {\n hashAttribute,\n hashValue\n };\n}\nfunction urlIsValid(urlRegex, ctx) {\n const url = ctx.user.url;\n if (!url) return false;\n const pathOnly = url.replace(/^https?:\\/\\//, \"\").replace(/^[^/]*\\//, \"/\");\n if (urlRegex.test(url)) return true;\n if (urlRegex.test(pathOnly)) return true;\n return false;\n}\nfunction hasGroupOverlap(expGroups, ctx) {\n const groups = ctx.global.groups || {};\n for (let i = 0; i < expGroups.length; i++) {\n if (groups[expGroups[i]]) return true;\n }\n return false;\n}\nfunction getStickyBucketVariation(_ref) {\n let {\n ctx,\n expKey,\n expBucketVersion,\n expHashAttribute,\n expFallbackAttribute,\n expMinBucketVersion,\n expMeta\n } = _ref;\n expBucketVersion = expBucketVersion || 0;\n expMinBucketVersion = expMinBucketVersion || 0;\n expHashAttribute = expHashAttribute || \"id\";\n expMeta = expMeta || [];\n const id = getStickyBucketExperimentKey(expKey, expBucketVersion);\n const assignments = getStickyBucketAssignments(ctx, expHashAttribute, expFallbackAttribute);\n\n // users with any blocked bucket version (0 to minExperimentBucketVersion) are excluded from the test\n if (expMinBucketVersion > 0) {\n for (let i = 0; i <= expMinBucketVersion; i++) {\n const blockedKey = getStickyBucketExperimentKey(expKey, i);\n if (assignments[blockedKey] !== undefined) {\n return {\n variation: -1,\n versionIsBlocked: true\n };\n }\n }\n }\n const variationKey = assignments[id];\n if (variationKey === undefined)\n // no assignment found\n return {\n variation: -1\n };\n const variation = expMeta.findIndex(m => m.key === variationKey);\n if (variation < 0)\n // invalid assignment, treat as \"no assignment found\"\n return {\n variation: -1\n };\n return {\n variation\n };\n}\nfunction getStickyBucketExperimentKey(experimentKey, experimentBucketVersion) {\n experimentBucketVersion = experimentBucketVersion || 0;\n return `${experimentKey}__${experimentBucketVersion}`;\n}\nfunction getStickyBucketAssignments(ctx, expHashAttribute, expFallbackAttribute) {\n if (!ctx.user.stickyBucketAssignmentDocs) return {};\n const {\n hashAttribute,\n hashValue\n } = getHashAttribute(ctx, expHashAttribute);\n const hashKey = `${hashAttribute}||${toString(hashValue)}`;\n const {\n hashAttribute: fallbackAttribute,\n hashValue: fallbackValue\n } = getHashAttribute(ctx, expFallbackAttribute);\n const fallbackKey = fallbackValue ? `${fallbackAttribute}||${toString(fallbackValue)}` : null;\n const assignments = {};\n if (fallbackKey && ctx.user.stickyBucketAssignmentDocs[fallbackKey]) {\n Object.assign(assignments, ctx.user.stickyBucketAssignmentDocs[fallbackKey].assignments || {});\n }\n if (ctx.user.stickyBucketAssignmentDocs[hashKey]) {\n Object.assign(assignments, ctx.user.stickyBucketAssignmentDocs[hashKey].assignments || {});\n }\n return assignments;\n}\nfunction generateStickyBucketAssignmentDoc(ctx, attributeName, attributeValue, assignments) {\n const key = `${attributeName}||${attributeValue}`;\n const existingAssignments = ctx.user.stickyBucketAssignmentDocs && ctx.user.stickyBucketAssignmentDocs[key] ? ctx.user.stickyBucketAssignmentDocs[key].assignments || {} : {};\n const newAssignments = {\n ...existingAssignments,\n ...assignments\n };\n const changed = JSON.stringify(existingAssignments) !== JSON.stringify(newAssignments);\n return {\n key,\n doc: {\n attributeName,\n attributeValue,\n assignments: newAssignments\n },\n changed\n };\n}\nfunction deriveStickyBucketIdentifierAttributes(ctx, data) {\n const attributes = new Set();\n const features = data && data.features ? data.features : ctx.global.features || {};\n const experiments = data && data.experiments ? data.experiments : ctx.global.experiments || [];\n Object.keys(features).forEach(id => {\n const feature = features[id];\n if (feature.rules) {\n for (const rule of feature.rules) {\n if (rule.variations) {\n attributes.add(rule.hashAttribute || \"id\");\n if (rule.fallbackAttribute) {\n attributes.add(rule.fallbackAttribute);\n }\n }\n }\n }\n });\n experiments.map(experiment => {\n attributes.add(experiment.hashAttribute || \"id\");\n if (experiment.fallbackAttribute) {\n attributes.add(experiment.fallbackAttribute);\n }\n });\n return Array.from(attributes);\n}\nexport async function getAllStickyBucketAssignmentDocs(ctx, stickyBucketService, data) {\n const attributes = getStickyBucketAttributes(ctx, data);\n return stickyBucketService.getAllAssignments(attributes);\n}\nfunction getStickyBucketAttributes(ctx, data) {\n const attributes = {};\n const stickyBucketIdentifierAttributes = deriveStickyBucketIdentifierAttributes(ctx, data);\n stickyBucketIdentifierAttributes.forEach(attr => {\n const {\n hashValue\n } = getHashAttribute(ctx, attr);\n attributes[attr] = toString(hashValue);\n });\n return attributes;\n}\nexport async function decryptPayload(data, decryptionKey, subtle) {\n data = {\n ...data\n };\n if (data.encryptedFeatures) {\n try {\n data.features = JSON.parse(await decrypt(data.encryptedFeatures, decryptionKey, subtle));\n } catch (e) {\n console.error(e);\n }\n delete data.encryptedFeatures;\n }\n if (data.encryptedExperiments) {\n try {\n data.experiments = JSON.parse(await decrypt(data.encryptedExperiments, decryptionKey, subtle));\n } catch (e) {\n console.error(e);\n }\n delete data.encryptedExperiments;\n }\n if (data.encryptedSavedGroups) {\n try {\n data.savedGroups = JSON.parse(await decrypt(data.encryptedSavedGroups, decryptionKey, subtle));\n } catch (e) {\n console.error(e);\n }\n delete data.encryptedSavedGroups;\n }\n return data;\n}\nexport function getApiHosts(options) {\n const defaultHost = options.apiHost || \"https://cdn.growthbook.io\";\n return {\n apiHost: defaultHost.replace(/\\/*$/, \"\"),\n streamingHost: (options.streamingHost || defaultHost).replace(/\\/*$/, \"\"),\n apiRequestHeaders: options.apiHostRequestHeaders,\n streamingHostRequestHeaders: options.streamingHostRequestHeaders\n };\n}\n//# sourceMappingURL=core.mjs.map","import mutate from \"dom-mutator\";\nimport { decrypt, getAutoExperimentChangeType, isURLTargeted, loadSDKVersion, mergeQueryStrings, promiseTimeout } from \"./util.mjs\";\nimport { configureCache, refreshFeatures, startStreaming, unsubscribe } from \"./feature-repository.mjs\";\nimport { runExperiment, evalFeature as _evalFeature, getExperimentResult, getAllStickyBucketAssignmentDocs, decryptPayload, getApiHosts } from \"./core.mjs\";\nconst isBrowser = typeof window !== \"undefined\" && typeof document !== \"undefined\";\nconst SDK_VERSION = loadSDKVersion();\nexport class GrowthBook {\n // context is technically private, but some tools depend on it so we can't mangle the name\n\n // Properties and methods that start with \"_\" are mangled by Terser (saves ~150 bytes)\n\n // eslint-disable-next-line\n\n constructor(options) {\n options = options || {};\n // These properties are all initialized in the constructor instead of above\n // This saves ~80 bytes in the final output\n this.version = SDK_VERSION;\n this._options = this.context = options;\n this._renderer = options.renderer || null;\n this._trackedExperiments = new Set();\n this._completedChangeIds = new Set();\n this._trackedFeatures = {};\n this.debug = !!options.debug;\n this._subscriptions = new Set();\n this.ready = false;\n this._assigned = new Map();\n this._attributeOverrides = {};\n this._activeAutoExperiments = new Map();\n this._triggeredExpKeys = new Set();\n this._initialized = false;\n this._redirectedUrl = \"\";\n this._deferredTrackingCalls = new Map();\n this._autoExperimentsAllowed = !options.disableExperimentsOnLoad;\n this.log = this.log.bind(this);\n this._track = this._track.bind(this);\n this._saveDeferredTrack = this._saveDeferredTrack.bind(this);\n this._trackFeatureUsage = this._trackFeatureUsage.bind(this);\n this._fireSubscriptions = this._fireSubscriptions.bind(this);\n this._recordChangedId = this._recordChangedId.bind(this);\n if (options.remoteEval) {\n if (options.decryptionKey) {\n throw new Error(\"Encryption is not available for remoteEval\");\n }\n if (!options.clientKey) {\n throw new Error(\"Missing clientKey\");\n }\n let isGbHost = false;\n try {\n isGbHost = !!new URL(options.apiHost || \"\").hostname.match(/growthbook\\.io$/i);\n } catch (e) {\n // ignore invalid URLs\n }\n if (isGbHost) {\n throw new Error(\"Cannot use remoteEval on GrowthBook Cloud\");\n }\n } else {\n if (options.cacheKeyAttributes) {\n throw new Error(\"cacheKeyAttributes are only used for remoteEval\");\n }\n }\n if (options.stickyBucketService) {\n const s = options.stickyBucketService;\n this._saveStickyBucketAssignmentDoc = doc => {\n return s.saveAssignments(doc);\n };\n }\n if (options.features) {\n this.ready = true;\n }\n if (isBrowser && options.enableDevMode) {\n window._growthbook = this;\n document.dispatchEvent(new Event(\"gbloaded\"));\n }\n if (options.experiments) {\n this.ready = true;\n this._updateAllAutoExperiments();\n }\n\n // Hydrate sticky bucket service\n if (this._options.stickyBucketService && this._options.stickyBucketAssignmentDocs) {\n for (const key in this._options.stickyBucketAssignmentDocs) {\n const doc = this._options.stickyBucketAssignmentDocs[key];\n if (doc) {\n this._options.stickyBucketService.saveAssignments(doc).catch(() => {\n // Ignore hydration errors\n });\n }\n }\n }\n\n // Legacy - passing in features/experiments into the constructor instead of using init\n if (this.ready) {\n this.refreshStickyBuckets(this.getPayload());\n }\n }\n async setPayload(payload) {\n this._payload = payload;\n const data = await decryptPayload(payload, this._options.decryptionKey);\n this._decryptedPayload = data;\n await this.refreshStickyBuckets(data);\n if (data.features) {\n this._options.features = data.features;\n }\n if (data.savedGroups) {\n this._options.savedGroups = data.savedGroups;\n }\n if (data.experiments) {\n this._options.experiments = data.experiments;\n this._updateAllAutoExperiments();\n }\n this.ready = true;\n this._render();\n }\n initSync(options) {\n this._initialized = true;\n const payload = options.payload;\n if (payload.encryptedExperiments || payload.encryptedFeatures) {\n throw new Error(\"initSync does not support encrypted payloads\");\n }\n if (this._options.stickyBucketService && !this._options.stickyBucketAssignmentDocs) {\n throw new Error(\"initSync requires you to pass stickyBucketAssignmentDocs into the GrowthBook constructor\");\n }\n this._payload = payload;\n this._decryptedPayload = payload;\n if (payload.features) {\n this._options.features = payload.features;\n }\n if (payload.experiments) {\n this._options.experiments = payload.experiments;\n this._updateAllAutoExperiments();\n }\n this.ready = true;\n startStreaming(this, options);\n return this;\n }\n async init(options) {\n this._initialized = true;\n options = options || {};\n if (options.cacheSettings) {\n configureCache(options.cacheSettings);\n }\n if (options.payload) {\n await this.setPayload(options.payload);\n startStreaming(this, options);\n return {\n success: true,\n source: \"init\"\n };\n } else {\n const {\n data,\n ...res\n } = await this._refresh({\n ...options,\n allowStale: true\n });\n startStreaming(this, options);\n await this.setPayload(data || {});\n return res;\n }\n }\n\n /** @deprecated Use {@link init} */\n async loadFeatures(options) {\n options = options || {};\n await this.init({\n skipCache: options.skipCache,\n timeout: options.timeout,\n streaming: (this._options.backgroundSync ?? true) && (options.autoRefresh || this._options.subscribeToChanges)\n });\n }\n async refreshFeatures(options) {\n const res = await this._refresh({\n ...(options || {}),\n allowStale: false\n });\n if (res.data) {\n await this.setPayload(res.data);\n }\n }\n getApiInfo() {\n return [this.getApiHosts().apiHost, this.getClientKey()];\n }\n getApiHosts() {\n return getApiHosts(this._options);\n }\n getClientKey() {\n return this._options.clientKey || \"\";\n }\n getPayload() {\n return this._payload || {\n features: this.getFeatures(),\n experiments: this.getExperiments()\n };\n }\n getDecryptedPayload() {\n return this._decryptedPayload || this.getPayload();\n }\n isRemoteEval() {\n return this._options.remoteEval || false;\n }\n getCacheKeyAttributes() {\n return this._options.cacheKeyAttributes;\n }\n async _refresh(_ref) {\n let {\n timeout,\n skipCache,\n allowStale,\n streaming\n } = _ref;\n if (!this._options.clientKey) {\n throw new Error(\"Missing clientKey\");\n }\n // Trigger refresh in feature repository\n return refreshFeatures({\n instance: this,\n timeout,\n skipCache: skipCache || this._options.disableCache,\n allowStale,\n backgroundSync: streaming ?? this._options.backgroundSync ?? true\n });\n }\n _render() {\n if (this._renderer) {\n try {\n this._renderer();\n } catch (e) {\n console.error(\"Failed to render\", e);\n }\n }\n }\n\n /** @deprecated Use {@link setPayload} */\n setFeatures(features) {\n this._options.features = features;\n this.ready = true;\n this._render();\n }\n\n /** @deprecated Use {@link setPayload} */\n async setEncryptedFeatures(encryptedString, decryptionKey, subtle) {\n const featuresJSON = await decrypt(encryptedString, decryptionKey || this._options.decryptionKey, subtle);\n this.setFeatures(JSON.parse(featuresJSON));\n }\n\n /** @deprecated Use {@link setPayload} */\n setExperiments(experiments) {\n this._options.experiments = experiments;\n this.ready = true;\n this._updateAllAutoExperiments();\n }\n\n /** @deprecated Use {@link setPayload} */\n async setEncryptedExperiments(encryptedString, decryptionKey, subtle) {\n const experimentsJSON = await decrypt(encryptedString, decryptionKey || this._options.decryptionKey, subtle);\n this.setExperiments(JSON.parse(experimentsJSON));\n }\n async setAttributes(attributes) {\n this._options.attributes = attributes;\n if (this._options.stickyBucketService) {\n await this.refreshStickyBuckets();\n }\n if (this._options.remoteEval) {\n await this._refreshForRemoteEval();\n return;\n }\n this._render();\n this._updateAllAutoExperiments();\n }\n async updateAttributes(attributes) {\n return this.setAttributes({\n ...this._options.attributes,\n ...attributes\n });\n }\n async setAttributeOverrides(overrides) {\n this._attributeOverrides = overrides;\n if (this._options.stickyBucketService) {\n await this.refreshStickyBuckets();\n }\n if (this._options.remoteEval) {\n await this._refreshForRemoteEval();\n return;\n }\n this._render();\n this._updateAllAutoExperiments();\n }\n async setForcedVariations(vars) {\n this._options.forcedVariations = vars || {};\n if (this._options.remoteEval) {\n await this._refreshForRemoteEval();\n return;\n }\n this._render();\n this._updateAllAutoExperiments();\n }\n\n // eslint-disable-next-line\n setForcedFeatures(map) {\n this._forcedFeatureValues = map;\n this._render();\n }\n async setURL(url) {\n if (url === this._options.url) return;\n this._options.url = url;\n this._redirectedUrl = \"\";\n if (this._options.remoteEval) {\n await this._refreshForRemoteEval();\n this._updateAllAutoExperiments(true);\n return;\n }\n this._updateAllAutoExperiments(true);\n }\n getAttributes() {\n return {\n ...this._options.attributes,\n ...this._attributeOverrides\n };\n }\n getForcedVariations() {\n return this._options.forcedVariations || {};\n }\n getForcedFeatures() {\n // eslint-disable-next-line\n return this._forcedFeatureValues || new Map();\n }\n getStickyBucketAssignmentDocs() {\n return this._options.stickyBucketAssignmentDocs || {};\n }\n getUrl() {\n return this._options.url || \"\";\n }\n getFeatures() {\n return this._options.features || {};\n }\n getExperiments() {\n return this._options.experiments || [];\n }\n getCompletedChangeIds() {\n return Array.from(this._completedChangeIds);\n }\n subscribe(cb) {\n this._subscriptions.add(cb);\n return () => {\n this._subscriptions.delete(cb);\n };\n }\n async _refreshForRemoteEval() {\n if (!this._options.remoteEval) return;\n if (!this._initialized) return;\n const res = await this._refresh({\n allowStale: false\n });\n if (res.data) {\n await this.setPayload(res.data);\n }\n }\n getAllResults() {\n return new Map(this._assigned);\n }\n destroy() {\n // Release references to save memory\n this._subscriptions.clear();\n this._assigned.clear();\n this._trackedExperiments.clear();\n this._completedChangeIds.clear();\n this._deferredTrackingCalls.clear();\n this._trackedFeatures = {};\n this._payload = undefined;\n this._saveStickyBucketAssignmentDoc = undefined;\n unsubscribe(this);\n if (isBrowser && window._growthbook === this) {\n delete window._growthbook;\n }\n\n // Undo any active auto experiments\n this._activeAutoExperiments.forEach(exp => {\n exp.undo();\n });\n this._activeAutoExperiments.clear();\n this._triggeredExpKeys.clear();\n }\n setRenderer(renderer) {\n this._renderer = renderer;\n }\n forceVariation(key, variation) {\n this._options.forcedVariations = this._options.forcedVariations || {};\n this._options.forcedVariations[key] = variation;\n if (this._options.remoteEval) {\n this._refreshForRemoteEval();\n return;\n }\n this._updateAllAutoExperiments();\n this._render();\n }\n run(experiment) {\n const {\n result\n } = runExperiment(experiment, null, this._getEvalContext());\n this._fireSubscriptions(experiment, result);\n return result;\n }\n triggerExperiment(key) {\n this._triggeredExpKeys.add(key);\n if (!this._options.experiments) return null;\n const experiments = this._options.experiments.filter(exp => exp.key === key);\n return experiments.map(exp => {\n return this._runAutoExperiment(exp);\n }).filter(res => res !== null);\n }\n triggerAutoExperiments() {\n this._autoExperimentsAllowed = true;\n this._updateAllAutoExperiments(true);\n }\n _getEvalContext() {\n return {\n user: this._getUserContext(),\n global: this._getGlobalContext(),\n stack: {\n evaluatedFeatures: new Set()\n }\n };\n }\n _getUserContext() {\n return {\n attributes: this._options.user ? {\n ...this._options.user,\n ...this.getAttributes()\n } : this.getAttributes(),\n blockedChangeIds: this._options.blockedChangeIds,\n stickyBucketAssignmentDocs: this._options.stickyBucketAssignmentDocs,\n url: this._getContextUrl(),\n forcedVariations: this._options.forcedVariations,\n forcedFeatureValues: this._forcedFeatureValues,\n saveStickyBucketAssignmentDoc: this._saveStickyBucketAssignmentDoc,\n trackingCallback: this._options.trackingCallback ? this._track : undefined,\n onFeatureUsage: this._options.onFeatureUsage ? this._trackFeatureUsage : undefined\n };\n }\n _getGlobalContext() {\n return {\n features: this._options.features,\n experiments: this._options.experiments,\n log: this.log,\n enabled: this._options.enabled,\n qaMode: this._options.qaMode,\n savedGroups: this._options.savedGroups,\n groups: this._options.groups,\n overrides: this._options.overrides,\n onExperimentEval: this._subscriptions.size > 0 ? this._fireSubscriptions : undefined,\n recordChangeId: this._recordChangedId,\n saveDeferredTrack: this._saveDeferredTrack\n };\n }\n _runAutoExperiment(experiment, forceRerun) {\n const existing = this._activeAutoExperiments.get(experiment);\n\n // If this is a manual experiment and it's not already running, skip\n if (experiment.manual && !this._triggeredExpKeys.has(experiment.key) && !existing) return null;\n\n // Check if this particular experiment is blocked by options settings\n // For example, if all visualEditor experiments are disabled\n const isBlocked = this._isAutoExperimentBlockedByContext(experiment);\n if (isBlocked) {\n process.env.NODE_ENV !== \"production\" && this.log(\"Auto experiment blocked\", {\n id: experiment.key\n });\n }\n let result;\n let trackingCall;\n // Run the experiment (if blocked exclude)\n if (isBlocked) {\n result = getExperimentResult(this._getEvalContext(), experiment, -1, false, \"\");\n } else {\n ({\n result,\n trackingCall\n } = runExperiment(experiment, null, this._getEvalContext()));\n this._fireSubscriptions(experiment, result);\n }\n\n // A hash to quickly tell if the assigned value changed\n const valueHash = JSON.stringify(result.value);\n\n // If the changes are already active, no need to re-apply them\n if (!forceRerun && result.inExperiment && existing && existing.valueHash === valueHash) {\n return result;\n }\n\n // Undo any existing changes\n if (existing) this._undoActiveAutoExperiment(experiment);\n\n // Apply new changes\n if (result.inExperiment) {\n const changeType = getAutoExperimentChangeType(experiment);\n if (changeType === \"redirect\" && result.value.urlRedirect && experiment.urlPatterns) {\n const url = experiment.persistQueryString ? mergeQueryStrings(this._getContextUrl(), result.value.urlRedirect) : result.value.urlRedirect;\n if (isURLTargeted(url, experiment.urlPatterns)) {\n this.log(\"Skipping redirect because original URL matches redirect URL\", {\n id: experiment.key\n });\n return result;\n }\n this._redirectedUrl = url;\n const {\n navigate,\n delay\n } = this._getNavigateFunction();\n if (navigate) {\n if (isBrowser) {\n // Wait for the possibly-async tracking callback, bound by min and max delays\n Promise.all([...(trackingCall ? [promiseTimeout(trackingCall, this._options.maxNavigateDelay ?? 1000)] : []), new Promise(resolve => window.setTimeout(resolve, this._options.navigateDelay ?? delay))]).then(() => {\n try {\n navigate(url);\n } catch (e) {\n console.error(e);\n }\n });\n } else {\n try {\n navigate(url);\n } catch (e) {\n console.error(e);\n }\n }\n }\n } else if (changeType === \"visual\") {\n const undo = this._options.applyDomChangesCallback ? this._options.applyDomChangesCallback(result.value) : this._applyDOMChanges(result.value);\n if (undo) {\n this._activeAutoExperiments.set(experiment, {\n undo,\n valueHash\n });\n }\n }\n }\n return result;\n }\n _undoActiveAutoExperiment(exp) {\n const data = this._activeAutoExperiments.get(exp);\n if (data) {\n data.undo();\n this._activeAutoExperiments.delete(exp);\n }\n }\n _updateAllAutoExperiments(forceRerun) {\n if (!this._autoExperimentsAllowed) return;\n const experiments = this._options.experiments || [];\n\n // Stop any experiments that are no longer defined\n const keys = new Set(experiments);\n this._activeAutoExperiments.forEach((v, k) => {\n if (!keys.has(k)) {\n v.undo();\n this._activeAutoExperiments.delete(k);\n }\n });\n\n // Re-run all new/updated experiments\n for (const exp of experiments) {\n const result = this._runAutoExperiment(exp, forceRerun);\n\n // Once you're in a redirect experiment, break out of the loop and don't run any further experiments\n if (result !== null && result !== void 0 && result.inExperiment && getAutoExperimentChangeType(exp) === \"redirect\") {\n break;\n }\n }\n }\n _fireSubscriptions(experiment, result) {\n const key = experiment.key;\n\n // If assigned variation has changed, fire subscriptions\n const prev = this._assigned.get(key);\n // TODO: what if the experiment definition has changed?\n if (!prev || prev.result.inExperiment !== result.inExperiment || prev.result.variationId !== result.variationId) {\n this._assigned.set(key, {\n experiment,\n result\n });\n this._subscriptions.forEach(cb => {\n try {\n cb(experiment, result);\n } catch (e) {\n console.error(e);\n }\n });\n }\n }\n _recordChangedId(id) {\n this._completedChangeIds.add(id);\n }\n _trackFeatureUsage(key, res) {\n // Only track a feature once, unless the assigned value changed\n const stringifiedValue = JSON.stringify(res.value);\n if (this._trackedFeatures[key] === stringifiedValue) return;\n this._trackedFeatures[key] = stringifiedValue;\n\n // Fire user-supplied callback\n if (this._options.onFeatureUsage) {\n try {\n this._options.onFeatureUsage(key, res);\n } catch (e) {\n // Ignore feature usage callback errors\n }\n }\n }\n isOn(key) {\n return this.evalFeature(key).on;\n }\n isOff(key) {\n return this.evalFeature(key).off;\n }\n getFeatureValue(key, defaultValue) {\n const value = this.evalFeature(key).value;\n return value === null ? defaultValue : value;\n }\n\n /**\n * @deprecated Use {@link evalFeature}\n * @param id\n */\n // eslint-disable-next-line\n feature(id) {\n return this.evalFeature(id);\n }\n evalFeature(id) {\n return _evalFeature(id, this._getEvalContext());\n }\n log(msg, ctx) {\n if (!this.debug) return;\n if (this._options.log) this._options.log(msg, ctx);else console.log(msg, ctx);\n }\n getDeferredTrackingCalls() {\n return Array.from(this._deferredTrackingCalls.values());\n }\n setDeferredTrackingCalls(calls) {\n this._deferredTrackingCalls = new Map(calls.filter(c => c && c.experiment && c.result).map(c => {\n return [this._getTrackKey(c.experiment, c.result), c];\n }));\n }\n async fireDeferredTrackingCalls() {\n if (!this._options.trackingCallback) return;\n const promises = [];\n this._deferredTrackingCalls.forEach(call => {\n if (!call || !call.experiment || !call.result) {\n console.error(\"Invalid deferred tracking call\", {\n call: call\n });\n } else {\n promises.push(this._track(call.experiment, call.result));\n }\n });\n this._deferredTrackingCalls.clear();\n await Promise.all(promises);\n }\n setTrackingCallback(callback) {\n this._options.trackingCallback = callback;\n this.fireDeferredTrackingCalls();\n }\n _getTrackKey(experiment, result) {\n return result.hashAttribute + result.hashValue + experiment.key + result.variationId;\n }\n _saveDeferredTrack(data) {\n this._deferredTrackingCalls.set(this._getTrackKey(data.experiment, data.result), data);\n }\n async _track(experiment, result) {\n if (!this._options.trackingCallback) return;\n const k = this._getTrackKey(experiment, result);\n\n // Make sure a tracking callback is only fired once per unique experiment\n if (this._trackedExperiments.has(k)) return;\n this._trackedExperiments.add(k);\n try {\n await this._options.trackingCallback(experiment, result);\n } catch (e) {\n console.error(e);\n }\n }\n _getContextUrl() {\n return this._options.url || (isBrowser ? window.location.href : \"\");\n }\n _isAutoExperimentBlockedByContext(experiment) {\n const changeType = getAutoExperimentChangeType(experiment);\n if (changeType === \"visual\") {\n if (this._options.disableVisualExperiments) return true;\n if (this._options.disableJsInjection) {\n if (experiment.variations.some(v => v.js)) {\n return true;\n }\n }\n } else if (changeType === \"redirect\") {\n if (this._options.disableUrlRedirectExperiments) return true;\n\n // Validate URLs\n try {\n const current = new URL(this._getContextUrl());\n for (const v of experiment.variations) {\n if (!v || !v.urlRedirect) continue;\n const url = new URL(v.urlRedirect);\n\n // If we're blocking cross origin redirects, block if the protocol or host is different\n if (this._options.disableCrossOriginUrlRedirectExperiments) {\n if (url.protocol !== current.protocol) return true;\n if (url.host !== current.host) return true;\n }\n }\n } catch (e) {\n // Problem parsing one of the URLs\n this.log(\"Error parsing current or redirect URL\", {\n id: experiment.key,\n error: e\n });\n return true;\n }\n } else {\n // Block any unknown changeTypes\n return true;\n }\n if (experiment.changeId && (this._options.blockedChangeIds || []).includes(experiment.changeId)) {\n return true;\n }\n return false;\n }\n getRedirectUrl() {\n return this._redirectedUrl;\n }\n _getNavigateFunction() {\n if (this._options.navigate) {\n return {\n navigate: this._options.navigate,\n delay: 0\n };\n } else if (isBrowser) {\n return {\n navigate: url => {\n window.location.replace(url);\n },\n delay: 100\n };\n }\n return {\n navigate: null,\n delay: 0\n };\n }\n _applyDOMChanges(changes) {\n if (!isBrowser) return;\n const undo = [];\n if (changes.css) {\n const s = document.createElement(\"style\");\n s.innerHTML = changes.css;\n document.head.appendChild(s);\n undo.push(() => s.remove());\n }\n if (changes.js) {\n const script = document.createElement(\"script\");\n script.innerHTML = changes.js;\n if (this._options.jsInjectionNonce) {\n script.nonce = this._options.jsInjectionNonce;\n }\n document.head.appendChild(script);\n undo.push(() => script.remove());\n }\n if (changes.domMutations) {\n changes.domMutations.forEach(mutation => {\n undo.push(mutate.declarative(mutation).revert);\n });\n }\n return () => {\n undo.forEach(fn => fn());\n };\n }\n async refreshStickyBuckets(data) {\n if (this._options.stickyBucketService) {\n const ctx = this._getEvalContext();\n const docs = await getAllStickyBucketAssignmentDocs(ctx, this._options.stickyBucketService, data);\n this._options.stickyBucketAssignmentDocs = docs;\n }\n }\n}\nexport async function prefetchPayload(options) {\n // Create a temporary instance, just to fetch the payload\n const instance = new GrowthBook(options);\n await refreshFeatures({\n instance,\n skipCache: options.skipCache,\n allowStale: false,\n backgroundSync: options.streaming\n });\n instance.destroy();\n}\n//# sourceMappingURL=GrowthBook.mjs.map","import { GrowthBook } from '@growthbook/growthbook';\nexport { BrowserCookieStickyBucketService, ExpressCookieStickyBucketService, GrowthBook, LocalStorageStickyBucketService, RedisStickyBucketService, StickyBucketService, clearCache, configureCache, getPolyfills, helpers, prefetchPayload, setPolyfills } from '@growthbook/growthbook';\nimport * as React from 'react';\n\nfunction _extends() {\n _extends = Object.assign ? Object.assign.bind() : 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}\n\nconst GrowthBookContext = /*#__PURE__*/React.createContext({});\n\n/** @deprecated */\nasync function getGrowthBookSSRData(context) {\n // Server-side GrowthBook instance\n const gb = new GrowthBook({\n ...context\n });\n\n // Load feature flags from network if needed\n if (context.clientKey) {\n await gb.loadFeatures();\n }\n const data = {\n attributes: gb.getAttributes(),\n features: gb.getFeatures()\n };\n gb.destroy();\n return data;\n}\n\n/** @deprecated */\nfunction useGrowthBookSSR(data) {\n const gb = useGrowthBook();\n\n // Only do this once to avoid infinite loops\n const isFirst = React.useRef(true);\n if (gb && isFirst.current) {\n gb.setFeatures(data.features);\n gb.setAttributes(data.attributes);\n isFirst.current = false;\n }\n}\nfunction useExperiment(exp) {\n const {\n growthbook\n } = React.useContext(GrowthBookContext);\n return growthbook.run(exp);\n}\nfunction useFeature(id) {\n const growthbook = useGrowthBook();\n return growthbook.evalFeature(id);\n}\nfunction useFeatureIsOn(id) {\n const growthbook = useGrowthBook();\n return growthbook.isOn(id);\n}\nfunction useFeatureValue(id, fallback) {\n const growthbook = useGrowthBook();\n return growthbook.getFeatureValue(id, fallback);\n}\nfunction useGrowthBook() {\n const {\n growthbook\n } = React.useContext(GrowthBookContext);\n if (!growthbook) {\n throw new Error(\"Missing or invalid GrowthBookProvider\");\n }\n return growthbook;\n}\nfunction FeaturesReady({\n children,\n timeout,\n fallback\n}) {\n const gb = useGrowthBook();\n const [hitTimeout, setHitTimeout] = React.useState(false);\n const ready = gb ? gb.ready : false;\n React.useEffect(() => {\n if (timeout && !ready) {\n const timer = setTimeout(() => {\n gb && gb.log(\"FeaturesReady timed out waiting for features to load\", {\n timeout\n });\n setHitTimeout(true);\n }, timeout);\n return () => clearTimeout(timer);\n }\n }, [timeout, ready, gb]);\n return /*#__PURE__*/React.createElement(React.Fragment, null, ready || hitTimeout ? children : fallback || null);\n}\nfunction IfFeatureEnabled({\n children,\n feature\n}) {\n return useFeature(feature).on ? /*#__PURE__*/React.createElement(React.Fragment, null, children) : null;\n}\nfunction FeatureString(props) {\n const value = useFeature(props.feature).value;\n if (value !== null) {\n return /*#__PURE__*/React.createElement(React.Fragment, null, value);\n }\n return /*#__PURE__*/React.createElement(React.Fragment, null, props.default);\n}\nconst withRunExperiment = Component => {\n // eslint-disable-next-line\n const withRunExperimentWrapper = props => /*#__PURE__*/React.createElement(GrowthBookContext.Consumer, null, ({\n growthbook\n }) => {\n return /*#__PURE__*/React.createElement(Component, _extends({}, props, {\n runExperiment: exp => growthbook.run(exp)\n }));\n });\n return withRunExperimentWrapper;\n};\nwithRunExperiment.displayName = \"WithRunExperiment\";\nconst GrowthBookProvider = ({\n children,\n growthbook\n}) => {\n // Tell growthbook how to re-render our app (for dev mode integration)\n // eslint-disable-next-line\n const [_, setRenderCount] = React.useState(0);\n React.useEffect(() => {\n if (!growthbook || !growthbook.setRenderer) return;\n growthbook.setRenderer(() => {\n setRenderCount(v => v + 1);\n });\n return () => {\n growthbook.setRenderer(() => {\n // do nothing\n });\n };\n }, [growthbook]);\n return /*#__PURE__*/React.createElement(GrowthBookContext.Provider, {\n value: {\n growthbook\n }\n }, children);\n};\n\nexport { FeatureString, FeaturesReady, GrowthBookContext, GrowthBookProvider, IfFeatureEnabled, getGrowthBookSSRData, useExperiment, useFeature, useFeatureIsOn, useFeatureValue, useGrowthBook, useGrowthBookSSR, withRunExperiment };\n//# sourceMappingURL=index.js.map\n","function e(e){this.message=e}e.prototype=new Error,e.prototype.name=\"InvalidCharacterError\";var r=\"undefined\"!=typeof window&&window.atob&&window.atob.bind(window)||function(r){var t=String(r).replace(/=+$/,\"\");if(t.length%4==1)throw new e(\"'atob' failed: The string to be decoded is not correctly encoded.\");for(var n,o,a=0,i=0,c=\"\";o=t.charAt(i++);~o&&(n=a%4?64*n+o:o,a++%4)?c+=String.fromCharCode(255&n>>(-2*a&6)):0)o=\"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=\".indexOf(o);return c};function t(e){var t=e.replace(/-/g,\"+\").replace(/_/g,\"/\");switch(t.length%4){case 0:break;case 2:t+=\"==\";break;case 3:t+=\"=\";break;default:throw\"Illegal base64url string!\"}try{return function(e){return decodeURIComponent(r(e).replace(/(.)/g,(function(e,r){var t=r.charCodeAt(0).toString(16).toUpperCase();return t.length<2&&(t=\"0\"+t),\"%\"+t})))}(t)}catch(e){return r(t)}}function n(e){this.message=e}function o(e,r){if(\"string\"!=typeof e)throw new n(\"Invalid token specified\");var o=!0===(r=r||{}).header?0:1;try{return JSON.parse(t(e.split(\".\")[o]))}catch(e){throw new n(\"Invalid token specified: \"+e.message)}}n.prototype=new Error,n.prototype.name=\"InvalidTokenError\";export default o;export{n as InvalidTokenError};\n//# sourceMappingURL=jwt-decode.esm.js.map\n","/**\n * A specialized version of `_.map` for arrays without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the new mapped array.\n */\nfunction arrayMap(array, iteratee) {\n var index = -1,\n length = array == null ? 0 : array.length,\n result = Array(length);\n\n while (++index < length) {\n result[index] = iteratee(array[index], index, array);\n }\n return result;\n}\n\nmodule.exports = arrayMap;\n","var castPath = require('./_castPath'),\n toKey = require('./_toKey');\n\n/**\n * The base implementation of `_.get` without support for default values.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the property to get.\n * @returns {*} Returns the resolved value.\n */\nfunction baseGet(object, path) {\n path = castPath(path, object);\n\n var index = 0,\n length = path.length;\n\n while (object != null && index < length) {\n object = object[toKey(path[index++])];\n }\n return (index && index == length) ? object : undefined;\n}\n\nmodule.exports = baseGet;\n","var Symbol = require('./_Symbol'),\n arrayMap = require('./_arrayMap'),\n isArray = require('./isArray'),\n isSymbol = require('./isSymbol');\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0;\n\n/** Used to convert symbols to primitives and strings. */\nvar symbolProto = Symbol ? Symbol.prototype : undefined,\n symbolToString = symbolProto ? symbolProto.toString : undefined;\n\n/**\n * The base implementation of `_.toString` which doesn't convert nullish\n * values to empty strings.\n *\n * @private\n * @param {*} value The value to process.\n * @returns {string} Returns the string.\n */\nfunction baseToString(value) {\n // Exit early for strings to avoid a performance hit in some environments.\n if (typeof value == 'string') {\n return value;\n }\n if (isArray(value)) {\n // Recursively convert values (susceptible to call stack limits).\n return arrayMap(value, baseToString) + '';\n }\n if (isSymbol(value)) {\n return symbolToString ? symbolToString.call(value) : '';\n }\n var result = (value + '');\n return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result;\n}\n\nmodule.exports = baseToString;\n","var isArray = require('./isArray'),\n isKey = require('./_isKey'),\n stringToPath = require('./_stringToPath'),\n toString = require('./toString');\n\n/**\n * Casts `value` to a path array if it's not one.\n *\n * @private\n * @param {*} value The value to inspect.\n * @param {Object} [object] The object to query keys on.\n * @returns {Array} Returns the cast property path array.\n */\nfunction castPath(value, object) {\n if (isArray(value)) {\n return value;\n }\n return isKey(value, object) ? [value] : stringToPath(toString(value));\n}\n\nmodule.exports = castPath;\n","var isArray = require('./isArray'),\n isSymbol = require('./isSymbol');\n\n/** Used to match property names within property paths. */\nvar reIsDeepProp = /\\.|\\[(?:[^[\\]]*|([\"'])(?:(?!\\1)[^\\\\]|\\\\.)*?\\1)\\]/,\n reIsPlainProp = /^\\w*$/;\n\n/**\n * Checks if `value` is a property name and not a property path.\n *\n * @private\n * @param {*} value The value to check.\n * @param {Object} [object] The object to query keys on.\n * @returns {boolean} Returns `true` if `value` is a property name, else `false`.\n */\nfunction isKey(value, object) {\n if (isArray(value)) {\n return false;\n }\n var type = typeof value;\n if (type == 'number' || type == 'symbol' || type == 'boolean' ||\n value == null || isSymbol(value)) {\n return true;\n }\n return reIsPlainProp.test(value) || !reIsDeepProp.test(value) ||\n (object != null && value in Object(object));\n}\n\nmodule.exports = isKey;\n","var memoize = require('./memoize');\n\n/** Used as the maximum memoize cache size. */\nvar MAX_MEMOIZE_SIZE = 500;\n\n/**\n * A specialized version of `_.memoize` which clears the memoized function's\n * cache when it exceeds `MAX_MEMOIZE_SIZE`.\n *\n * @private\n * @param {Function} func The function to have its output memoized.\n * @returns {Function} Returns the new memoized function.\n */\nfunction memoizeCapped(func) {\n var result = memoize(func, function(key) {\n if (cache.size === MAX_MEMOIZE_SIZE) {\n cache.clear();\n }\n return key;\n });\n\n var cache = result.cache;\n return result;\n}\n\nmodule.exports = memoizeCapped;\n","var memoizeCapped = require('./_memoizeCapped');\n\n/** Used to match property names within property paths. */\nvar rePropName = /[^.[\\]]+|\\[(?:(-?\\d+(?:\\.\\d+)?)|([\"'])((?:(?!\\2)[^\\\\]|\\\\.)*?)\\2)\\]|(?=(?:\\.|\\[\\])(?:\\.|\\[\\]|$))/g;\n\n/** Used to match backslashes in property paths. */\nvar reEscapeChar = /\\\\(\\\\)?/g;\n\n/**\n * Converts `string` to a property path array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the property path array.\n */\nvar stringToPath = memoizeCapped(function(string) {\n var result = [];\n if (string.charCodeAt(0) === 46 /* . */) {\n result.push('');\n }\n string.replace(rePropName, function(match, number, quote, subString) {\n result.push(quote ? subString.replace(reEscapeChar, '$1') : (number || match));\n });\n return result;\n});\n\nmodule.exports = stringToPath;\n","var isSymbol = require('./isSymbol');\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0;\n\n/**\n * Converts `value` to a string key if it's not a string or symbol.\n *\n * @private\n * @param {*} value The value to inspect.\n * @returns {string|symbol} Returns the key.\n */\nfunction toKey(value) {\n if (typeof value == 'string' || isSymbol(value)) {\n return value;\n }\n var result = (value + '');\n return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result;\n}\n\nmodule.exports = toKey;\n","var baseGet = require('./_baseGet');\n\n/**\n * Gets the value at `path` of `object`. If the resolved value is\n * `undefined`, the `defaultValue` is returned in its place.\n *\n * @static\n * @memberOf _\n * @since 3.7.0\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the property to get.\n * @param {*} [defaultValue] The value returned for `undefined` resolved values.\n * @returns {*} Returns the resolved value.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': 3 } }] };\n *\n * _.get(object, 'a[0].b.c');\n * // => 3\n *\n * _.get(object, ['a', '0', 'b', 'c']);\n * // => 3\n *\n * _.get(object, 'a.b.c', 'default');\n * // => 'default'\n */\nfunction get(object, path, defaultValue) {\n var result = object == null ? undefined : baseGet(object, path);\n return result === undefined ? defaultValue : result;\n}\n\nmodule.exports = get;\n","var baseGetTag = require('./_baseGetTag'),\n isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar symbolTag = '[object Symbol]';\n\n/**\n * Checks if `value` is classified as a `Symbol` primitive or object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a symbol, else `false`.\n * @example\n *\n * _.isSymbol(Symbol.iterator);\n * // => true\n *\n * _.isSymbol('abc');\n * // => false\n */\nfunction isSymbol(value) {\n return typeof value == 'symbol' ||\n (isObjectLike(value) && baseGetTag(value) == symbolTag);\n}\n\nmodule.exports = isSymbol;\n","var MapCache = require('./_MapCache');\n\n/** Error message constants. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n\n/**\n * Creates a function that memoizes the result of `func`. If `resolver` is\n * provided, it determines the cache key for storing the result based on the\n * arguments provided to the memoized function. By default, the first argument\n * provided to the memoized function is used as the map cache key. The `func`\n * is invoked with the `this` binding of the memoized function.\n *\n * **Note:** The cache is exposed as the `cache` property on the memoized\n * function. Its creation may be customized by replacing the `_.memoize.Cache`\n * constructor with one whose instances implement the\n * [`Map`](http://ecma-international.org/ecma-262/7.0/#sec-properties-of-the-map-prototype-object)\n * method interface of `clear`, `delete`, `get`, `has`, and `set`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to have its output memoized.\n * @param {Function} [resolver] The function to resolve the cache key.\n * @returns {Function} Returns the new memoized function.\n * @example\n *\n * var object = { 'a': 1, 'b': 2 };\n * var other = { 'c': 3, 'd': 4 };\n *\n * var values = _.memoize(_.values);\n * values(object);\n * // => [1, 2]\n *\n * values(other);\n * // => [3, 4]\n *\n * object.a = 2;\n * values(object);\n * // => [1, 2]\n *\n * // Modify the result cache.\n * values.cache.set(object, ['a', 'b']);\n * values(object);\n * // => ['a', 'b']\n *\n * // Replace `_.memoize.Cache`.\n * _.memoize.Cache = WeakMap;\n */\nfunction memoize(func, resolver) {\n if (typeof func != 'function' || (resolver != null && typeof resolver != 'function')) {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n var memoized = function() {\n var args = arguments,\n key = resolver ? resolver.apply(this, args) : args[0],\n cache = memoized.cache;\n\n if (cache.has(key)) {\n return cache.get(key);\n }\n var result = func.apply(this, args);\n memoized.cache = cache.set(key, result) || cache;\n return result;\n };\n memoized.cache = new (memoize.Cache || MapCache);\n return memoized;\n}\n\n// Expose `MapCache`.\nmemoize.Cache = MapCache;\n\nmodule.exports = memoize;\n","var baseToString = require('./_baseToString');\n\n/**\n * Converts `value` to a string. An empty string is returned for `null`\n * and `undefined` values. The sign of `-0` is preserved.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n * @example\n *\n * _.toString(null);\n * // => ''\n *\n * _.toString(-0);\n * // => '-0'\n *\n * _.toString([1, 2, 3]);\n * // => '1,2,3'\n */\nfunction toString(value) {\n return value == null ? '' : baseToString(value);\n}\n\nmodule.exports = toString;\n","export * from \"../client/components/navigation\";\n\n//# sourceMappingURL=navigation.js.map"],"names":["transformContainer","observer","validAttributeName","nullController","revert","dom_mutator_esm_elements","Map","mutations","Set","getElementRecord","element","record","get","attributes","set","createElementPropertyRecord","el","attr","getCurrentValue","setValue","mutationRunner","currentValue","isDirty","originalValue","virtualValue","_positionTimeout","MutationObserver","setTimeout","parentNode","insertBeforeNode","observe","childList","subtree","characterData","attributeFilter","queueIfNeeded","val","currentVal","runDOMUpdates","htmlMutationRunner","html","forEach","m","mutate","document","createElement","innerHTML","classMutationRunner","split","filter","Boolean","Array","from","join","attrMutationRunner","positionMutationRunner","newNodes","_ref","parentSelector","insertBeforeSelector","querySelector","getHTMLValue","setHTMLValue","value","getElementHTMLRecord","elementRecord","getElementPosition","parentElement","nextElementSibling","setElementPosition","contains","insertBefore","getElementPositionRecord","position","setClassValue","className","removeAttribute","getClassValue","getElementClassRecord","classes","getElementAttributeRecord","_el$getAttribute","getAttribute","setAttribute","setPropertyValue","_element$html","_element$html$observe","_element$classes","_element$classes$obse","_element$position","_element$position$obs","_element$attributes","_element$attributes$a","_element$attributes$a2","length","disconnect","Object","keys","refreshElementsSet","mutation","kind","elements","size","existingElements","matchingElements","querySelectorAll","selector","has","add","attribute","push","refreshAllElementSets","newMutation","stopMutating","index","indexOf","splice","clear","test","classnames","mutatedClassnames","c","documentElement","dom_mutator_esm","declarative","_ref2","action","polyfills","fetch","globalThis","bind","undefined","SubtleCrypto","crypto","subtle","EventSource","hashFnv32a","str","hval","l","i","charCodeAt","hash","seed","version","inRange","n","range","getUrlRegExp","regexString","escaped","replace","RegExp","e","console","error","isURLTargeted","url","targets","hasIncludeRules","isIncluded","match","_evalURLTarget","type","pattern","parsed","URL","regex","href","substring","origin","_evalSimpleUrlTarget","actual","expected","comps","host","pathname","searchParams","v","k","some","data","_evalSimpleUrlPart","isPath","include","base64ToBuf","b","Uint8Array","atob","decrypt","encryptedString","decryptionKey","key","importKey","name","iv","cipherText","plainTextBuffer","TextDecoder","decode","util_toString","input","JSON","stringify","paddedVersionString","parts","map","padStart","isObj","x","getAutoExperimentChangeType","exp","urlPatterns","variations","variation","domMutations","promiseTimeout","promise","timeout","Promise","resolve","timer","resolved","finish","clearTimeout","then","catch","cacheSettings","staleTTL","maxAge","cacheKey","backgroundSync","maxEntries","disableIdleStreams","idleStreamInterval","disableCache","helpers","fetchFeaturesCall","clientKey","headers","feature_repository_polyfills","fetchRemoteEvalCall","payload","options","method","body","eventSourceCall","_ref3","startIdleListener","idleTimeout","window","onVisibilityChange","visibilityState","streams","channel","state","enableChannel","onHidden","addEventListener","removeEventListener","stopIdleListener","localStorage","subscribedInstances","cacheInitialized","cache","activeFetches","supportsSSE","feature_repository_refreshFeatures","_ref4","instance","skipCache","allowStale","fetchFeaturesWithCache","disableChannel","updatePersistentCache","setItem","entries","_ref5","getKey","getCacheKey","now","Date","minStaleAt","getTime","initializeCache","existing","staleAt","sse","fetchFeatures","startAutoRefresh","success","source","res","apiHost","getApiInfo","baseKey","isRemoteEval","getAttributes","cacheKeyAttributes","getCacheKeyAttributes","ca","fv","getForcedVariations","getUrl","getItem","parse","isArray","_ref6","cleanupCache","cleanupFn","entriesWithTimestamps","_ref7","sort","a","entriesToRemoveCount","Math","min","max","delete","onNewFeatureData","dateUpdated","instances","refreshInstance","setPayload","getPayload","apiRequestHeaders","getApiHosts","getClientKey","remoteEval","fetcher","forcedVariations","forcedFeatures","getForcedFeatures","ok","status","json","forceSSE","arguments","streamingHost","streamingHostRequestHeaders","src","cb","event","errors","onSSEError","readyState","delay","pow","random","includes","onopen","onerror","close","destroyChannel","startStreaming","streaming","subscribe","subs","_regexCache","evalCondition","obj","condition","savedGroups","evalOr","evalAnd","conditions","evalConditionValue","isOperatorObject","op","evalOperatorCondition","operator","isIn","elemMatch","check","passed","j","getRegex","getType","t","getPath","path","current","evalFeature","id","ctx","stack","evaluatedFeatures","getFeatureResult","forcedValues","getForcedFeatureValues","ret","global","forcedFeatureValues","user","features","feature","rules","rule","parentConditions","parentCondition","parentResult","gate","filters","isFilteredOut","conditionPasses","isIncludedInRollout","hashAttribute","fallbackAttribute","coverage","hashVersion","hashValue","getHashAttribute","saveStickyBucketAssignmentDoc","disableStickyBucketing","tracks","tracked","trackingCallback","experiment","result","saveDeferredTrack","force","weights","bucketVersion","minBucketVersion","namespace","meta","ranges","phase","runExperiment","onExperimentEval","inExperiment","passthrough","defaultValue","featureId","numVariations","enabled","mergeOverrides","o","overrides","assign","getExperimentResult","qsOverride","getQueryStringOverride","search","kv","parseInt","active","assigned","foundStickyBucket","stickyBucketVersionIsBlocked","versionIsBlocked","getStickyBucketVariation","expKey","expBucketVersion","expHashAttribute","expFallbackAttribute","expMinBucketVersion","expMeta","getStickyBucketExperimentKey","assignments","getStickyBucketAssignments","stickyBucketAssignmentDocs","hashKey","fallbackValue","fallbackKey","variationKey","findIndex","inNamespace","groups","hasGroupOverlap","expGroups","urlIsValid","urlRegex","pathOnly","chooseVariation","getBucketRanges","equal","fill","totalWeight","reduce","w","sum","cumulative","start","qaMode","changed","attrKey","doc","generateStickyBucketAssignmentDoc","attributeName","attributeValue","existingAssignments","newAssignments","trackingCalls","trackingCall","all","changeId","recordChangeId","ruleId","on","off","experimentResult","onFeatureUsage","r","variationIndex","hashUsed","bucket","stickyBucketUsed","variationId","fallback","experimentKey","experimentBucketVersion","getAllStickyBucketAssignmentDocs","stickyBucketService","getStickyBucketAttributes","stickyBucketIdentifierAttributes","experiments","getAllAssignments","decryptPayload","encryptedFeatures","encryptedExperiments","encryptedSavedGroups","isBrowser","SDK_VERSION","loadSDKVersion","GrowthBook_GrowthBook","constructor","_options","context","_renderer","renderer","_trackedExperiments","_completedChangeIds","_trackedFeatures","debug","_subscriptions","ready","_assigned","_attributeOverrides","_activeAutoExperiments","_triggeredExpKeys","_initialized","_redirectedUrl","_deferredTrackingCalls","_autoExperimentsAllowed","disableExperimentsOnLoad","log","_track","_saveDeferredTrack","_trackFeatureUsage","_fireSubscriptions","_recordChangedId","isGbHost","hostname","s","_saveStickyBucketAssignmentDoc","saveAssignments","enableDevMode","_growthbook","dispatchEvent","Event","_updateAllAutoExperiments","refreshStickyBuckets","_payload","_decryptedPayload","_render","initSync","init","_refresh","loadFeatures","autoRefresh","subscribeToChanges","refreshFeatures","defaultHost","apiHostRequestHeaders","getFeatures","getExperiments","getDecryptedPayload","setFeatures","setEncryptedFeatures","featuresJSON","setExperiments","setEncryptedExperiments","experimentsJSON","setAttributes","_refreshForRemoteEval","updateAttributes","setAttributeOverrides","setForcedVariations","vars","setForcedFeatures","_forcedFeatureValues","setURL","getStickyBucketAssignmentDocs","getCompletedChangeIds","getAllResults","destroy","undo","setRenderer","forceVariation","run","_getEvalContext","triggerExperiment","_runAutoExperiment","triggerAutoExperiments","_getUserContext","_getGlobalContext","blockedChangeIds","_getContextUrl","forceRerun","manual","_isAutoExperimentBlockedByContext","valueHash","_undoActiveAutoExperiment","changeType","urlRedirect","persistQueryString","mergeQueryStrings","oldUrl","newUrl","currUrl","redirectUrl","toString","navigate","_getNavigateFunction","maxNavigateDelay","navigateDelay","applyDomChangesCallback","_applyDOMChanges","prev","stringifiedValue","isOn","isOff","getFeatureValue","msg","getDeferredTrackingCalls","values","setDeferredTrackingCalls","calls","_getTrackKey","fireDeferredTrackingCalls","promises","call","setTrackingCallback","callback","location","disableVisualExperiments","disableJsInjection","js","disableUrlRedirectExperiments","disableCrossOriginUrlRedirectExperiments","protocol","getRedirectUrl","changes","css","head","appendChild","remove","script","jsInjectionNonce","nonce","fn","docs","GrowthBookContext","react","createContext","useFeatureIsOn","growthbook","useFeatureValue","useGrowthBook","useContext","GrowthBookProvider","children","_","setRenderCount","useState","useEffect","Provider","message","prototype","String","charAt","fromCharCode","__webpack_exports__","Z","header","decodeURIComponent","toUpperCase","module","exports","array","iteratee","castPath","__webpack_require__","toKey","object","Symbol","arrayMap","isSymbol","INFINITY","symbolProto","symbolToString","baseToString","isKey","stringToPath","reIsDeepProp","reIsPlainProp","memoize","func","memoizeCapped","rePropName","reEscapeChar","string","number","quote","subString","baseGet","baseGetTag","isObjectLike","MapCache","resolver","memoized","args","apply","Cache"],"sourceRoot":""}