{"version":3,"file":"core.mjs","names":["evalCondition","chooseVariation","decrypt","getBucketRanges","getEqualWeights","getQueryStringOverride","getUrlRegExp","hash","inNamespace","inRange","isIncluded","isURLTargeted","toString","EVENT_FEATURE_EVALUATED","EVENT_EXPERIMENT_VIEWED","getForcedFeatureValues","ctx","ret","Map","global","forcedFeatureValues","forEach","v","k","set","user","getForcedVariations","forcedVariations","_objectSpread","safeCall","fn","e","onExperimentViewed","experiment","result","trackedExperiments","getExperimentDedupeKey","has","add","enableDevMode","devLogs","push","timestamp","Date","now","logType","calls","trackingCallback","cb","getTrackingUserContext","eventLogger","experimentId","key","variationId","hashAttribute","hashValue","onFeatureUsage","trackedFeatureUsage","_ctx$user$featureUsag","stringifiedValue","JSON","stringify","value","featureKey","featureUsageSubs","size","console","error","feature","source","ruleId","experimentResult","evalFeature","id","stack","evaluatedFeatures","process","env","NODE_ENV","log","concat","from","to","getFeatureResult","forcedValues","get","features","rules","Set","rule","_rule$contextualVaria","parentConditions","parentCondition","parentResult","evalObj","evaled","condition","gate","filters","isFilteredOut","conditionPasses","isIncludedInRollout","seed","saveStickyBucketAssignmentDoc","disableStickyBucketing","fallbackAttribute","undefined","range","coverage","hashVersion","tracks","t","length","saveDeferredTrack","force","ruleVariations","contextualVariations","variations","exp","weights","bucketVersion","minBucketVersion","namespace","meta","ranges","name","phase","contextualBanditRef","buildContextualBanditExperiment","runExperiment","contextualBandit","hashUsed","inExperiment","onExperimentEval","passthrough","defaultValue","featureId","numVariations","getExperimentResult","enabled","mergeOverrides","variationWeights","urlPatterns","url","qsOverride","variation","status","active","getHashAttribute","assigned","foundStickyBucket","stickyBucketVersionIsBlocked","versionIsBlocked","getStickyBucketVariation","expKey","expBucketVersion","expHashAttribute","expFallbackAttribute","expMinBucketVersion","expMeta","include","groups","hasGroupOverlap","urlIsValid","n","qaMode","changed","attrKey","doc","generateStickyBucketAssignmentDoc","getStickyBucketExperimentKey","stickyBucketAssignmentDocs","trackingCalls","trackingCall","Promise","all","then","changeId","recordChangeId","on","off","getAttributes","attributes","attributeOverrides","getContextualBanditLeaf","cbDefinition","context","contexts","leafId","CONTEXTUAL_BANDIT_FALLBACK_LEAF_ID","_ctx$global$contextua","_experiment$weights","contextualBandits","leaf","banditVersion","savedGroups","some","filter","attribute","r","variationIndex","bucket","stickyBucketUsed","res","o","overrides","Object","assign","attr","fallback","urlRegex","pathOnly","replace","test","expGroups","i","_ref","assignments","getStickyBucketAssignments","blockedKey","variationKey","findIndex","m","experimentKey","experimentBucketVersion","getStickyBucketAttributeKey","attributeName","attributeValue","hashKey","fallbackValue","fallbackKey","existingAssignments","newAssignments","deriveStickyBucketIdentifierAttributes","data","experiments","keys","map","Array","getAllStickyBucketAssignmentDocs","stickyBucketService","getStickyBucketAttributes","getAllAssignments","stickyBucketIdentifierAttributes","decryptPayload","decryptionKey","subtle","encryptedFeatures","parse","encryptedExperiments","encryptedSavedGroups","encryptedContextualBandits","getApiHosts","options","defaultHost","apiHost","streamingHost","apiRequestHeaders","apiHostRequestHeaders","streamingHostRequestHeaders"],"sources":["../../src/core.ts"],"sourcesContent":["import {\n  EvalContext,\n  ContextualBanditDefinition,\n  FeatureDefinition,\n  FeatureResult,\n  Experiment,\n  FeatureResultSource,\n  Result,\n  Filter,\n  VariationRange,\n  VariationMeta,\n  StickyExperimentKey,\n  StickyAssignments,\n  StickyAttributeKey,\n  StickyAssignmentsDocument,\n  FeatureApiResponse,\n  Options,\n  ClientOptions,\n  TrackingUserContext,\n  UserContext,\n} from \"./types/growthbook\";\nimport { evalCondition } from \"./mongrule\";\nimport { ConditionInterface } from \"./types/mongrule\";\nimport {\n  chooseVariation,\n  decrypt,\n  getBucketRanges,\n  getEqualWeights,\n  getQueryStringOverride,\n  getUrlRegExp,\n  hash,\n  inNamespace,\n  inRange,\n  isIncluded,\n  isURLTargeted,\n  toString,\n} from \"./util\";\nimport { StickyBucketService } from \"./sticky-bucket-service\";\n\nexport const EVENT_FEATURE_EVALUATED = \"Feature Evaluated\";\nexport const EVENT_EXPERIMENT_VIEWED = \"Experiment Viewed\";\n\nfunction getForcedFeatureValues(ctx: EvalContext) {\n  // Merge user and global values\n  const ret: typeof ctx.global.forcedFeatureValues = 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}\n\nfunction getForcedVariations(ctx: EvalContext) {\n  // Merge user and global values\n  if (ctx.global.forcedVariations && ctx.user.forcedVariations) {\n    return { ...ctx.global.forcedVariations, ...ctx.user.forcedVariations };\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}\n\nasync function safeCall(fn: () => void | Promise<void>) {\n  try {\n    await fn();\n  } catch (e) {\n    // Do nothing\n  }\n}\n\nfunction onExperimentViewed(\n  ctx: EvalContext,\n  experiment: Experiment<unknown>,\n  result: Result<unknown>,\n): Promise<void>[] {\n  // Make sure a tracking callback is only fired once per unique experiment\n  if (ctx.user.trackedExperiments) {\n    const k = getExperimentDedupeKey(experiment, result);\n    if (ctx.user.trackedExperiments.has(k)) {\n      return [];\n    }\n    ctx.user.trackedExperiments.add(k);\n  }\n\n  if (ctx.user.enableDevMode && ctx.user.devLogs) {\n    ctx.user.devLogs.push({\n      experiment,\n      result,\n      timestamp: Date.now().toString(),\n      logType: \"experiment\",\n    });\n  }\n\n  const calls: Promise<void>[] = [];\n\n  if (ctx.global.trackingCallback) {\n    const cb = ctx.global.trackingCallback;\n    calls.push(\n      safeCall(() => cb(experiment, result, getTrackingUserContext(ctx.user))),\n    );\n  }\n  if (ctx.user.trackingCallback) {\n    const cb = ctx.user.trackingCallback;\n    calls.push(\n      safeCall(() => cb(experiment, result, getTrackingUserContext(ctx.user))),\n    );\n  }\n  if (ctx.global.eventLogger) {\n    const cb = ctx.global.eventLogger;\n    calls.push(\n      safeCall(() =>\n        cb(\n          EVENT_EXPERIMENT_VIEWED,\n          {\n            experimentId: experiment.key,\n            variationId: result.key,\n            hashAttribute: result.hashAttribute,\n            hashValue: result.hashValue,\n          },\n          getTrackingUserContext(ctx.user),\n        ),\n      ),\n    );\n  }\n  return calls;\n}\n\nfunction onFeatureUsage(\n  ctx: EvalContext,\n  key: string,\n  ret: FeatureResult<unknown>,\n): void {\n  // Only track a feature once, unless the assigned value changed\n  if (ctx.user.trackedFeatureUsage) {\n    const stringifiedValue = JSON.stringify(ret.value);\n    if (ctx.user.trackedFeatureUsage[key] === stringifiedValue) return;\n    ctx.user.trackedFeatureUsage[key] = stringifiedValue;\n\n    if (ctx.user.enableDevMode && ctx.user.devLogs) {\n      ctx.user.devLogs.push({\n        featureKey: key,\n        result: ret,\n        timestamp: Date.now().toString(),\n        logType: \"feature\",\n      });\n    }\n\n    // Deduped by value above — subscribers only fire on value changes, not every eval.\n    if (ctx.user.featureUsageSubs?.size) {\n      ctx.user.featureUsageSubs.forEach((cb) => {\n        try {\n          cb(key, ret);\n        } catch (e) {\n          console.error(e);\n        }\n      });\n    }\n  }\n\n  if (ctx.global.onFeatureUsage) {\n    const cb = ctx.global.onFeatureUsage;\n    safeCall(() => cb(key, ret, getTrackingUserContext(ctx.user)));\n  }\n  if (ctx.user.onFeatureUsage) {\n    const cb = ctx.user.onFeatureUsage;\n    safeCall(() => cb(key, ret));\n  }\n  if (ctx.global.eventLogger) {\n    const cb = ctx.global.eventLogger;\n    safeCall(() =>\n      cb(\n        EVENT_FEATURE_EVALUATED,\n        {\n          feature: key,\n          source: ret.source,\n          value: ret.value,\n          ruleId: ret.source === \"defaultValue\" ? \"$default\" : ret.ruleId || \"\",\n          variationId: ret.experimentResult ? ret.experimentResult.key : \"\",\n        },\n        getTrackingUserContext(ctx.user),\n      ),\n    );\n  }\n}\n\nexport function evalFeature<V = unknown>(\n  id: string,\n  ctx: EvalContext,\n): FeatureResult<V | null> {\n  if (ctx.stack.evaluatedFeatures.has(id)) {\n    process.env.NODE_ENV !== \"production\" &&\n      ctx.global.log(\n        `evalFeature: circular dependency detected: ${ctx.stack.id} -> ${id}`,\n        {\n          from: ctx.stack.id,\n          to: id,\n        },\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\" &&\n      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\" &&\n      ctx.global.log(\"Unknown feature\", { id });\n    return getFeatureResult(ctx, id, null, \"unknownFeature\");\n  }\n\n  // Get the feature\n  const feature: FeatureDefinition<V> = ctx.global.features[id];\n\n  // Loop through the rules\n  if (feature.rules) {\n    const evaluatedFeatures = new Set(ctx.stack.evaluatedFeatures);\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          ctx.stack.evaluatedFeatures = new Set(evaluatedFeatures);\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\n          const evalObj = { value: parentResult.value };\n          const evaled = evalCondition(\n            evalObj,\n            parentCondition.condition || {},\n          );\n          if (!evaled) {\n            // blocking prerequisite eval failed: feature evaluation fails\n            if (parentCondition.gate) {\n              process.env.NODE_ENV !== \"production\" &&\n                ctx.global.log(\"Feature blocked by prerequisite\", { id, rule });\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\" &&\n              ctx.global.log(\n                \"Skip rule because prerequisite evaluation fails\",\n                {\n                  id,\n                  rule,\n                },\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\" &&\n          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\" &&\n            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 (\n          !isIncludedInRollout(\n            ctx,\n            rule.seed || id,\n            rule.hashAttribute,\n            ctx.user.saveStickyBucketAssignmentDoc &&\n              !rule.disableStickyBucketing\n              ? rule.fallbackAttribute\n              : undefined,\n            rule.range,\n            rule.coverage,\n            rule.hashVersion,\n          )\n        ) {\n          process.env.NODE_ENV !== \"production\" &&\n            ctx.global.log(\"Skip rule because user not included in rollout\", {\n              id,\n              rule,\n            });\n          continue;\n        }\n\n        process.env.NODE_ENV !== \"production\" &&\n          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            const calls = onExperimentViewed(ctx, t.experiment, t.result);\n            if (!calls.length && ctx.global.saveDeferredTrack) {\n              ctx.global.saveDeferredTrack({\n                experiment: t.experiment,\n                result: t.result,\n                user: getTrackingUserContext(ctx.user),\n              });\n            }\n          });\n        }\n\n        return getFeatureResult(ctx, id, rule.force as V, \"force\", rule.id);\n      }\n      // Contextual bandit rules carry their variations under\n      // `contextualVariations` so older SDKs skip them; read either field here.\n      const ruleVariations = rule.contextualVariations ?? rule.variations;\n      if (!ruleVariations) {\n        process.env.NODE_ENV !== \"production\" &&\n          ctx.global.log(\"Skip invalid rule\", {\n            id,\n            rule,\n          });\n\n        continue;\n      }\n\n      // For experiment rules, run an experiment\n      const exp: Experiment<V> = {\n        variations: ruleVariations as [V, V, ...V[]],\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)\n        exp.fallbackAttribute = rule.fallbackAttribute;\n      if (rule.disableStickyBucketing)\n        exp.disableStickyBucketing = rule.disableStickyBucketing;\n      if (rule.bucketVersion !== undefined)\n        exp.bucketVersion = rule.bucketVersion;\n      if (rule.minBucketVersion !== undefined)\n        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      if (rule.contextualBanditRef) {\n        buildContextualBanditExperiment(exp, rule.contextualBanditRef, id, ctx);\n      }\n\n      // Only return a value if the user is part of the experiment\n      const { result } = runExperiment(exp, id, ctx);\n      if (exp.contextualBandit && !(result.hashUsed && result.inExperiment)) {\n        delete exp.contextualBandit;\n      }\n      ctx.global.onExperimentEval && ctx.global.onExperimentEval(exp, result);\n      if (result.inExperiment && !result.passthrough) {\n        return getFeatureResult(\n          ctx,\n          id,\n          result.value,\n          \"experiment\",\n          rule.id,\n          exp,\n          result,\n        );\n      }\n    }\n  }\n\n  process.env.NODE_ENV !== \"production\" &&\n    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(\n    ctx,\n    id,\n    feature.defaultValue === undefined ? null : feature.defaultValue,\n    \"defaultValue\",\n  );\n}\n\nexport function runExperiment<T>(\n  experiment: Experiment<T>,\n  featureId: string | null,\n  ctx: EvalContext,\n): {\n  result: Result<T>;\n  trackingCall?: Promise<void>;\n} {\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\" &&\n      ctx.global.log(\"Invalid experiment\", { id: key });\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\" &&\n      ctx.global.log(\"Context disabled\", { id: key });\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  if (experiment.contextualBandit && experiment.weights) {\n    experiment.contextualBandit = {\n      ...experiment.contextualBandit,\n      variationWeights: experiment.weights,\n    };\n  }\n\n  // 2.6 New, more powerful URL targeting\n  if (\n    experiment.urlPatterns &&\n    !isURLTargeted(ctx.user.url || \"\", experiment.urlPatterns)\n  ) {\n    process.env.NODE_ENV !== \"production\" &&\n      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(\n    key,\n    ctx.user.url || \"\",\n    numVariations,\n  );\n  if (qsOverride !== null) {\n    process.env.NODE_ENV !== \"production\" &&\n      ctx.global.log(\"Force via querystring\", {\n        id: key,\n        variation: qsOverride,\n      });\n    return {\n      result: getExperimentResult(\n        ctx,\n        experiment,\n        qsOverride,\n        false,\n        featureId,\n      ),\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\" &&\n      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\" &&\n      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 { hashAttribute, hashValue } = getHashAttribute(\n    ctx,\n    experiment.hashAttribute,\n    ctx.user.saveStickyBucketAssignmentDoc && !experiment.disableStickyBucketing\n      ? experiment.fallbackAttribute\n      : undefined,\n  );\n  if (!hashValue) {\n    process.env.NODE_ENV !== \"production\" &&\n      ctx.global.log(\"Skip because missing hashAttribute\", {\n        id: key,\n      });\n    return {\n      result: getExperimentResult(ctx, experiment, -1, false, featureId),\n    };\n  }\n\n  let assigned = -1;\n\n  let foundStickyBucket = false;\n  let stickyBucketVersionIsBlocked = false;\n  if (\n    ctx.user.saveStickyBucketAssignmentDoc &&\n    !experiment.disableStickyBucketing\n  ) {\n    const { variation, versionIsBlocked } = 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\" &&\n          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 (\n      experiment.namespace &&\n      !inNamespace(hashValue, experiment.namespace)\n    ) {\n      process.env.NODE_ENV !== \"production\" &&\n        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\" &&\n        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\" &&\n        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      const evaluatedFeatures = new Set(ctx.stack.evaluatedFeatures);\n      for (const parentCondition of experiment.parentConditions) {\n        ctx.stack.evaluatedFeatures = new Set(evaluatedFeatures);\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\n        const evalObj = { value: parentResult.value };\n        if (!evalCondition(evalObj, parentCondition.condition || {})) {\n          process.env.NODE_ENV !== \"production\" &&\n            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 (\n      experiment.groups &&\n      !hasGroupOverlap(experiment.groups as string[], ctx)\n    ) {\n      process.env.NODE_ENV !== \"production\" &&\n        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 as RegExp, ctx)) {\n    process.env.NODE_ENV !== \"production\" &&\n      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(\n    experiment.seed || key,\n    hashValue,\n    experiment.hashVersion || 1,\n  );\n  if (n === null) {\n    process.env.NODE_ENV !== \"production\" &&\n      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\n  if (!foundStickyBucket) {\n    const ranges =\n      experiment.ranges ||\n      getBucketRanges(\n        numVariations,\n        experiment.coverage === undefined ? 1 : experiment.coverage,\n        experiment.weights,\n      );\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\" &&\n      ctx.global.log(\"Skip because sticky bucket version is blocked\", {\n        id: key,\n      });\n    return {\n      result: getExperimentResult(\n        ctx,\n        experiment,\n        -1,\n        false,\n        featureId,\n        undefined,\n        true,\n      ),\n    };\n  }\n\n  // 10. Return if not in experiment\n  if (assigned < 0) {\n    process.env.NODE_ENV !== \"production\" &&\n      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\" &&\n      ctx.global.log(\"Force variation\", {\n        id: key,\n        variation: experiment.force,\n      });\n    return {\n      result: getExperimentResult(\n        ctx,\n        experiment,\n        experiment.force === undefined ? -1 : experiment.force,\n        false,\n        featureId,\n      ),\n    };\n  }\n\n  // 12. Exclude if in QA mode\n  if (ctx.global.qaMode || ctx.user.qaMode) {\n    process.env.NODE_ENV !== \"production\" &&\n      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\" &&\n      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(\n    ctx,\n    experiment,\n    assigned,\n    true,\n    featureId,\n    n,\n    foundStickyBucket,\n  );\n\n  // 13.5. Persist sticky bucket\n  if (\n    ctx.user.saveStickyBucketAssignmentDoc &&\n    !experiment.disableStickyBucketing\n  ) {\n    const {\n      changed,\n      key: attrKey,\n      doc,\n    } = generateStickyBucketAssignmentDoc(\n      ctx,\n      hashAttribute,\n      toString(hashValue),\n      {\n        [getStickyBucketExperimentKey(\n          experiment.key,\n          experiment.bucketVersion,\n        )]: result.key,\n      },\n    );\n    if (changed) {\n      // update local docs\n      ctx.user.stickyBucketAssignmentDocs =\n        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 = onExperimentViewed(ctx, experiment, result);\n  if (trackingCalls.length === 0 && ctx.global.saveDeferredTrack) {\n    ctx.global.saveDeferredTrack({\n      experiment,\n      result,\n      user: getTrackingUserContext(ctx.user),\n    });\n  }\n  const trackingCall = !trackingCalls.length\n    ? undefined\n    : trackingCalls.length === 1\n      ? trackingCalls[0]\n      : Promise.all(trackingCalls).then(() => {});\n\n  // 14.1 Keep track of completed changeIds\n  \"changeId\" in experiment &&\n    experiment.changeId &&\n    ctx.global.recordChangeId &&\n    ctx.global.recordChangeId(experiment.changeId as string);\n\n  // 15. Return the result\n  process.env.NODE_ENV !== \"production\" &&\n    ctx.global.log(\"In experiment\", {\n      id: key,\n      variation: result.variationId,\n    });\n  return { result, trackingCall };\n}\n\nfunction getFeatureResult<T>(\n  ctx: EvalContext,\n  key: string,\n  value: T,\n  source: FeatureResultSource,\n  ruleId?: string,\n  experiment?: Experiment<T>,\n  result?: Result<T>,\n): FeatureResult<T> {\n  const ret: FeatureResult = {\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    onFeatureUsage(ctx, key, ret);\n  }\n\n  return ret;\n}\n\nfunction getAttributes(user: UserContext) {\n  return {\n    ...user.attributes,\n    ...user.attributeOverrides,\n  };\n}\n\nexport function getTrackingUserContext(user: UserContext): TrackingUserContext {\n  return {\n    attributes: getAttributes(user),\n    url: user.url,\n  };\n}\n\nfunction getContextualBanditLeaf(\n  cbDefinition: ContextualBanditDefinition,\n  ctx: EvalContext,\n): { leafId: number; weights: number[] } | null {\n  for (const context of cbDefinition.contexts || []) {\n    if (conditionPasses((context.condition || {}) as ConditionInterface, ctx)) {\n      return { leafId: context.leafId, weights: context.weights };\n    }\n  }\n\n  return null;\n}\n\nconst CONTEXTUAL_BANDIT_FALLBACK_LEAF_ID = -1;\n\nfunction buildContextualBanditExperiment<T>(\n  experiment: Experiment<T>,\n  contextualBanditRef: string,\n  id: string,\n  ctx: EvalContext,\n): void {\n  const cbDefinition = ctx.global.contextualBandits?.[contextualBanditRef];\n  if (!cbDefinition) {\n    process.env.NODE_ENV !== \"production\" &&\n      ctx.global.log(\n        \"Contextual bandit ref not found in payload, using aggregate weights\",\n        { id, contextualBanditRef },\n      );\n    return;\n  }\n\n  let leaf: { leafId: number; weights: number[] } | null = null;\n  if (cbDefinition.contexts && cbDefinition.contexts.length) {\n    try {\n      leaf = getContextualBanditLeaf(cbDefinition, ctx);\n    } catch (e) {\n      process.env.NODE_ENV !== \"production\" &&\n        ctx.global.log(\n          \"Contextual bandit leaf selection threw, using fallback weights\",\n          { id, contextualBanditRef, error: e },\n        );\n    }\n  }\n\n  if (leaf) {\n    experiment.weights = leaf.weights;\n    experiment.contextualBandit = {\n      leafId: leaf.leafId,\n      variationWeights: leaf.weights,\n      banditVersion: cbDefinition.banditVersion,\n    };\n    return;\n  }\n\n  process.env.NODE_ENV !== \"production\" &&\n    ctx.global.log(\n      \"Contextual bandit: no matching leaf, using fallback weights\",\n      { id, contextualBanditRef },\n    );\n  experiment.contextualBandit = {\n    leafId: CONTEXTUAL_BANDIT_FALLBACK_LEAF_ID,\n    variationWeights:\n      experiment.weights ?? getEqualWeights(experiment.variations.length),\n    banditVersion: cbDefinition.banditVersion,\n  };\n}\n\nfunction conditionPasses(\n  condition: ConditionInterface,\n  ctx: EvalContext,\n): boolean {\n  return evalCondition(\n    getAttributes(ctx.user),\n    condition,\n    ctx.global.savedGroups || {},\n  );\n}\n\nfunction isFilteredOut(filters: Filter[], ctx: EvalContext): boolean {\n  return filters.some((filter) => {\n    const { hashValue } = 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}\n\nfunction isIncludedInRollout(\n  ctx: EvalContext,\n  seed: string,\n  hashAttribute: string | undefined,\n  fallbackAttribute: string | undefined,\n  range: VariationRange | undefined,\n  coverage: number | undefined,\n  hashVersion: number | undefined,\n): boolean {\n  if (!range && coverage === undefined) return true;\n\n  if (!range && coverage === 0) return false;\n\n  const { hashValue } = getHashAttribute(ctx, hashAttribute, fallbackAttribute);\n  if (!hashValue) {\n    return false;\n  }\n\n  const n = hash(seed, hashValue, hashVersion || 1);\n  if (n === null) return false;\n\n  return range\n    ? inRange(n, range)\n    : coverage !== undefined\n      ? n <= coverage\n      : true;\n}\n\nexport function getExperimentResult<T>(\n  ctx: EvalContext,\n  experiment: Experiment<T>,\n  variationIndex: number,\n  hashUsed: boolean,\n  featureId: string | null,\n  bucket?: number,\n  stickyBucketUsed?: boolean,\n): Result<T> {\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\n  const { hashAttribute, hashValue } = getHashAttribute(\n    ctx,\n    experiment.hashAttribute,\n    ctx.user.saveStickyBucketAssignmentDoc && !experiment.disableStickyBucketing\n      ? experiment.fallbackAttribute\n      : undefined,\n  );\n\n  const meta: Partial<VariationMeta> = experiment.meta\n    ? experiment.meta[variationIndex]\n    : {};\n\n  const res: Result<T> = {\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\n  if (meta.name) res.name = meta.name;\n  if (bucket !== undefined) res.bucket = bucket;\n  if (meta.passthrough) res.passthrough = meta.passthrough;\n\n  const cb = experiment.contextualBandit;\n  if (cb && hashUsed && inExperiment) {\n    res.leafId = cb.leafId;\n    res.variationWeights = cb.variationWeights;\n    if (cb.banditVersion !== undefined) res.banditVersion = cb.banditVersion;\n  }\n\n  return res;\n}\n\nfunction mergeOverrides<T>(\n  experiment: Experiment<T>,\n  ctx: EvalContext,\n): Experiment<T> {\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 as any,\n      );\n    }\n  }\n\n  return experiment;\n}\n\nexport function getHashAttribute(\n  ctx: EvalContext,\n  attr?: string,\n  fallback?: string,\n) {\n  let hashAttribute = attr || \"id\";\n  // eslint-disable-next-line @typescript-eslint/no-explicit-any\n  let hashValue: any = \"\";\n\n  const attributes = getAttributes(ctx.user);\n\n  if (attributes[hashAttribute]) {\n    hashValue = attributes[hashAttribute];\n  }\n\n  // if no match, try fallback\n  if (!hashValue && fallback) {\n    if (attributes[fallback]) {\n      hashValue = attributes[fallback];\n    }\n    if (hashValue) {\n      hashAttribute = fallback;\n    }\n  }\n\n  return { hashAttribute, hashValue };\n}\n\nfunction urlIsValid(urlRegex: RegExp, ctx: EvalContext): boolean {\n  const url = ctx.user.url;\n  if (!url) return false;\n\n  const pathOnly = url.replace(/^https?:\\/\\//, \"\").replace(/^[^/]*\\//, \"/\");\n\n  if (urlRegex.test(url)) return true;\n  if (urlRegex.test(pathOnly)) return true;\n  return false;\n}\n\nfunction hasGroupOverlap(expGroups: string[], ctx: EvalContext): boolean {\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}\n\nfunction getStickyBucketVariation({\n  ctx,\n  expKey,\n  expBucketVersion,\n  expHashAttribute,\n  expFallbackAttribute,\n  expMinBucketVersion,\n  expMeta,\n}: {\n  ctx: EvalContext;\n  expKey: string;\n  expBucketVersion?: number;\n  expHashAttribute?: string;\n  expFallbackAttribute?: string;\n  expMinBucketVersion?: number;\n  expMeta?: VariationMeta[];\n}): {\n  variation: number;\n  versionIsBlocked?: boolean;\n} {\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(\n    ctx,\n    expHashAttribute,\n    expFallbackAttribute,\n  );\n\n  // users with any blocked bucket version (0 to minExperimentBucketVersion - 1) 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 { variation: -1 };\n  const variation = expMeta.findIndex((m) => m.key === variationKey);\n  if (variation < 0)\n    // invalid assignment, treat as \"no assignment found\"\n    return { variation: -1 };\n\n  return { variation };\n}\n\nfunction getStickyBucketExperimentKey(\n  experimentKey: string,\n  experimentBucketVersion?: number,\n): StickyExperimentKey {\n  experimentBucketVersion = experimentBucketVersion || 0;\n  return `${experimentKey}__${experimentBucketVersion}`;\n}\n\nexport function getStickyBucketAttributeKey(\n  attributeName: string,\n  attributeValue: string,\n): StickyAttributeKey {\n  return `${attributeName}||${attributeValue}`;\n}\n\nfunction getStickyBucketAssignments(\n  ctx: EvalContext,\n  expHashAttribute: string,\n  expFallbackAttribute?: string,\n): StickyAssignments {\n  if (!ctx.user.stickyBucketAssignmentDocs) return {};\n  const { hashAttribute, hashValue } = getHashAttribute(ctx, expHashAttribute);\n  const hashKey = getStickyBucketAttributeKey(\n    hashAttribute,\n    toString(hashValue),\n  );\n\n  const { hashAttribute: fallbackAttribute, hashValue: fallbackValue } =\n    getHashAttribute(ctx, expFallbackAttribute);\n  const fallbackKey = fallbackValue\n    ? getStickyBucketAttributeKey(fallbackAttribute, toString(fallbackValue))\n    : null;\n\n  const assignments: StickyAssignments = {};\n  if (fallbackKey && ctx.user.stickyBucketAssignmentDocs[fallbackKey]) {\n    Object.assign(\n      assignments,\n      ctx.user.stickyBucketAssignmentDocs[fallbackKey].assignments || {},\n    );\n  }\n  if (ctx.user.stickyBucketAssignmentDocs[hashKey]) {\n    Object.assign(\n      assignments,\n      ctx.user.stickyBucketAssignmentDocs[hashKey].assignments || {},\n    );\n  }\n  return assignments;\n}\n\nfunction generateStickyBucketAssignmentDoc(\n  ctx: EvalContext,\n  attributeName: string,\n  attributeValue: string,\n  assignments: StickyAssignments,\n): {\n  key: StickyAttributeKey;\n  doc: StickyAssignmentsDocument;\n  changed: boolean;\n} {\n  const key = getStickyBucketAttributeKey(attributeName, attributeValue);\n  const existingAssignments =\n    ctx.user.stickyBucketAssignmentDocs &&\n    ctx.user.stickyBucketAssignmentDocs[key]\n      ? ctx.user.stickyBucketAssignmentDocs[key].assignments || {}\n      : {};\n  const newAssignments = { ...existingAssignments, ...assignments };\n  const changed =\n    JSON.stringify(existingAssignments) !== JSON.stringify(newAssignments);\n\n  return {\n    key,\n    doc: {\n      attributeName,\n      attributeValue,\n      assignments: newAssignments,\n    },\n    changed,\n  };\n}\n\nfunction deriveStickyBucketIdentifierAttributes(\n  ctx: EvalContext,\n  data?: FeatureApiResponse,\n) {\n  const attributes = new Set<string>();\n  const features =\n    data && data.features ? data.features : ctx.global.features || {};\n  const experiments =\n    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        // Contextual bandit rules carry their variations under `contextualVariations`\n        if (rule.variations || rule.contextualVariations) {\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}\n\nexport async function getAllStickyBucketAssignmentDocs(\n  ctx: EvalContext,\n  stickyBucketService: StickyBucketService,\n  data?: FeatureApiResponse,\n) {\n  const attributes = getStickyBucketAttributes(ctx, data);\n  return stickyBucketService.getAllAssignments(attributes);\n}\n\nexport function getStickyBucketAttributes(\n  ctx: EvalContext,\n  data?: FeatureApiResponse,\n): Record<string, string> {\n  const attributes: Record<string, string> = {};\n  const stickyBucketIdentifierAttributes =\n    deriveStickyBucketIdentifierAttributes(ctx, data);\n  stickyBucketIdentifierAttributes.forEach((attr) => {\n    const { hashValue } = getHashAttribute(ctx, attr);\n    attributes[attr] = toString(hashValue);\n  });\n  return attributes;\n}\n\nexport async function decryptPayload(\n  data: FeatureApiResponse,\n  decryptionKey: string | undefined,\n  subtle?: SubtleCrypto,\n): Promise<FeatureApiResponse> {\n  data = { ...data };\n  if (data.encryptedFeatures) {\n    try {\n      data.features = JSON.parse(\n        await decrypt(data.encryptedFeatures, decryptionKey, subtle),\n      );\n    } catch (e) {\n      console.error(e);\n    }\n    delete data.encryptedFeatures;\n  }\n  if (data.encryptedExperiments) {\n    try {\n      data.experiments = JSON.parse(\n        await decrypt(data.encryptedExperiments, decryptionKey, subtle),\n      );\n    } catch (e) {\n      console.error(e);\n    }\n    delete data.encryptedExperiments;\n  }\n  if (data.encryptedSavedGroups) {\n    try {\n      data.savedGroups = JSON.parse(\n        await decrypt(data.encryptedSavedGroups, decryptionKey, subtle),\n      );\n    } catch (e) {\n      console.error(e);\n    }\n    delete data.encryptedSavedGroups;\n  }\n  if (data.encryptedContextualBandits) {\n    try {\n      data.contextualBandits = JSON.parse(\n        await decrypt(data.encryptedContextualBandits, decryptionKey, subtle),\n      );\n    } catch (e) {\n      console.error(e);\n    }\n    delete data.encryptedContextualBandits;\n  }\n  return data;\n}\n\nexport function getApiHosts(options: Options | ClientOptions): {\n  apiHost: string;\n  streamingHost: string;\n  apiRequestHeaders?: Record<string, string>;\n  streamingHostRequestHeaders?: Record<string, string>;\n} {\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\nexport function getExperimentDedupeKey(\n  experiment: Experiment<unknown>,\n  result: Result<unknown>,\n) {\n  return (\n    result.hashAttribute +\n    result.hashValue +\n    experiment.key +\n    result.variationId\n  );\n}\n"],"mappings":"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","ignoreList":[]}