{"version":3,"file":"GrowthBook.mjs","names":["mutate","decrypt","getAutoExperimentChangeType","isURLTargeted","loadSDKVersion","mergeQueryStrings","promiseTimeout","clearAutoRefresh","configureCache","refreshFeatures","startStreaming","unsubscribe","runExperiment","evalFeature","_evalFeature","getExperimentResult","getAllStickyBucketAssignmentDocs","decryptPayload","getApiHosts","getExperimentDedupeKey","getStickyBucketAttributes","getTrackingUserContext","isBrowser","window","document","SDK_VERSION","GrowthBook","constructor","options","version","_options","context","_renderer","renderer","_trackedExperiments","Set","_completedChangeIds","_trackedFeatures","debug","_subscriptions","_featureUsageSubs","_customEventSubs","ready","_assigned","Map","_activeAutoExperiments","_triggeredExpKeys","_initialized","_redirectedUrl","_deferredTrackingCalls","_autoExperimentsAllowed","disableExperimentsOnLoad","_destroyCallbacks","logs","log","bind","_saveDeferredTrack","_onExperimentEval","_fireSubscriptions","_recordChangedId","remoteEval","decryptionKey","Error","clientKey","isGbHost","URL","apiHost","hostname","match","e","cacheKeyAttributes","stickyBucketService","s","_saveStickyBucketAssignmentDoc","doc","saveAssignments","plugins","plugin","features","enableDevMode","_growthbook","dispatchEvent","Event","experiments","_updateAllAutoExperiments","stickyBucketAssignmentDocs","key","catch","refreshStickyBuckets","getPayload","setPayload","payload","_payload","data","_decryptedPayload","savedGroups","contextualBandits","_render","initSync","encryptedExperiments","encryptedFeatures","generateStickyBucketAssignmentDocsSync","init","cacheSettings","success","source","_await$this$_refresh","_refresh","_objectSpread","allowStale","res","_objectWithoutProperties","_excluded","loadFeatures","_this$_options$backgr","skipCache","timeout","streaming","backgroundSync","autoRefresh","subscribeToChanges","getApiInfo","getClientKey","getFeatures","getExperiments","getDecryptedPayload","isRemoteEval","getCacheKeyAttributes","_ref","_ref2","instance","disableCache","console","error","setFeatures","setEncryptedFeatures","encryptedString","subtle","featuresJSON","JSON","parse","setExperiments","setEncryptedExperiments","experimentsJSON","setAttributes","attributes","_refreshForRemoteEval","updateAttributes","setAttributeOverrides","overrides","attributeOverrides","setForcedVariations","vars","forcedVariations","setForcedFeatures","map","forcedFeatureValues","setURL","url","getAttributes","getForcedVariations","getForcedFeatures","getStickyBucketAssignmentDocs","getUrl","getCompletedChangeIds","Array","from","subscribe","cb","add","delete","_subscribeFeatureUsage","_subscribeCustomEvents","getAllResults","onDestroy","push","isDestroyed","_destroyed","destroy","forEach","clear","undefined","destroyAllStreams","exp","undo","setRenderer","forceVariation","variation","run","experiment","result","_getEvalContext","triggerExperiment","filter","_runAutoExperiment","triggerAutoExperiments","user","_getUserContext","global","_getGlobalContext","stack","evaluatedFeatures","blockedChangeIds","_getContextUrl","saveStickyBucketAssignmentDoc","trackingCallback","onFeatureUsage","devLogs","featureUsageSubs","trackedExperiments","trackedFeatureUsage","enabled","qaMode","groups","onExperimentEval","recordChangeId","saveDeferredTrack","eventLogger","forceRerun","existing","get","manual","has","isBlocked","_isAutoExperimentBlockedByContext","process","env","NODE_ENV","id","trackingCall","valueHash","stringify","value","inExperiment","_undoActiveAutoExperiment","changeType","urlRedirect","urlPatterns","persistQueryString","navigate","delay","_getNavigateFunction","_this$_options$maxNav","Promise","all","maxNavigateDelay","resolve","_this$_options$naviga","setTimeout","navigateDelay","then","applyDomChangesCallback","_applyDOMChanges","set","keys","v","k","prev","size","variationId","isOn","on","isOff","off","getFeatureValue","defaultValue","feature","msg","ctx","getDeferredTrackingCalls","values","setDeferredTrackingCalls","calls","c","fireDeferredTrackingCalls","promises","call","setTrackingCallback","callback","setFeatureUsageCallback","setEventLogger","logger","logEvent","eventName","properties","timestamp","Date","now","toString","logType","location","href","disableVisualExperiments","disableJsInjection","variations","some","js","disableUrlRedirectExperiments","current","disableCrossOriginUrlRedirectExperiments","protocol","host","changeId","includes","getRedirectUrl","replace","changes","css","createElement","innerHTML","head","appendChild","remove","script","jsInjectionNonce","nonce","domMutations","mutation","declarative","revert","fn","docs","getAllAssignmentsSync","inDevMode","prefetchPayload"],"sources":["../../src/GrowthBook.ts"],"sourcesContent":["import mutate, { DeclarativeMutation } from \"dom-mutator\";\nimport type {\n  ApiHost,\n  Attributes,\n  AutoExperiment,\n  AutoExperimentVariation,\n  ClientKey,\n  Options,\n  Experiment,\n  FeatureApiResponse,\n  FeatureDefinition,\n  FeatureResult,\n  FeatureUsageCallback,\n  LoadFeaturesOptions,\n  RefreshFeaturesOptions,\n  RenderFunction,\n  Result,\n  SubscriptionFunction,\n  FeatureUsageSubCallback,\n  CustomEventSubCallback,\n  TrackingCallback,\n  TrackingData,\n  WidenPrimitives,\n  EvalContext,\n  InitOptions,\n  InitResponse,\n  InitSyncOptions,\n  PrefetchOptions,\n  GlobalContext,\n  UserContext,\n  StickyAssignmentsDocument,\n  EventLogger,\n  LogUnion,\n  DestroyOptions,\n} from \"./types/growthbook\";\nimport {\n  decrypt,\n  getAutoExperimentChangeType,\n  isURLTargeted,\n  loadSDKVersion,\n  mergeQueryStrings,\n  promiseTimeout,\n} from \"./util\";\nimport {\n  clearAutoRefresh,\n  configureCache,\n  refreshFeatures,\n  startStreaming,\n  unsubscribe,\n} from \"./feature-repository\";\nimport {\n  runExperiment,\n  evalFeature as _evalFeature,\n  getExperimentResult,\n  getAllStickyBucketAssignmentDocs,\n  decryptPayload,\n  getApiHosts,\n  getExperimentDedupeKey,\n  getStickyBucketAttributes,\n  getTrackingUserContext,\n} from \"./core\";\nimport { StickyBucketServiceSync } from \"./sticky-bucket-service\";\n\nconst isBrowser =\n  typeof window !== \"undefined\" && typeof document !== \"undefined\";\n\nconst SDK_VERSION = loadSDKVersion();\n\nexport class GrowthBook<\n  // eslint-disable-next-line @typescript-eslint/no-explicit-any\n  AppFeatures extends Record<string, any> = Record<string, any>,\n> {\n  // context is technically private, but some tools depend on it so we can't mangle the name\n  private context: Options;\n  public debug: boolean;\n  public ready: boolean;\n  public version: string;\n  public logs: Array<LogUnion>;\n\n  // Properties and methods that start with \"_\" are mangled by Terser (saves ~150 bytes)\n  private _options: Options;\n  private _renderer: null | RenderFunction;\n  private _redirectedUrl: string;\n  private _trackedExperiments: Set<string>;\n  private _completedChangeIds: Set<string>;\n  private _trackedFeatures: Record<string, string>;\n  private _subscriptions: Set<SubscriptionFunction>;\n  private _featureUsageSubs: Set<FeatureUsageSubCallback>;\n  private _customEventSubs: Set<CustomEventSubCallback>;\n  private _assigned: Map<\n    string,\n    {\n      // eslint-disable-next-line\n      experiment: Experiment<any>;\n      // eslint-disable-next-line\n      result: Result<any>;\n    }\n  >;\n  private _activeAutoExperiments: Map<\n    AutoExperiment,\n    { valueHash: string; undo: () => void }\n  >;\n  private _triggeredExpKeys: Set<string>;\n  private _initialized: boolean;\n  private _deferredTrackingCalls: Map<string, TrackingData>;\n  private _saveStickyBucketAssignmentDoc:\n    | undefined\n    | ((doc: StickyAssignmentsDocument) => Promise<unknown>);\n\n  private _payload: FeatureApiResponse | undefined;\n  private _decryptedPayload: FeatureApiResponse | undefined;\n  private _destroyCallbacks: (() => void)[];\n\n  private _autoExperimentsAllowed: boolean;\n  private _destroyed?: boolean;\n\n  constructor(options?: 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._featureUsageSubs = new Set();\n    this._customEventSubs = new Set();\n    this.ready = false;\n    this._assigned = new Map();\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._destroyCallbacks = [];\n    this.logs = [];\n\n    this.log = this.log.bind(this);\n    this._saveDeferredTrack = this._saveDeferredTrack.bind(this);\n    this._onExperimentEval = this._onExperimentEval.bind(this);\n    this._fireSubscriptions = this._fireSubscriptions.bind(this);\n    this._recordChangedId = this._recordChangedId.bind(this);\n\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(\n          /growthbook\\.io$/i,\n        );\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\n    if (options.stickyBucketService) {\n      const s = options.stickyBucketService;\n      this._saveStickyBucketAssignmentDoc = (doc) => {\n        return s.saveAssignments(doc);\n      };\n    }\n\n    if (options.plugins) {\n      for (const plugin of options.plugins) {\n        plugin(this);\n      }\n    }\n\n    if (options.features) {\n      this.ready = true;\n    }\n\n    if (isBrowser && options.enableDevMode) {\n      window._growthbook = this;\n      document.dispatchEvent(new Event(\"gbloaded\"));\n    }\n\n    if (options.experiments) {\n      this.ready = true;\n      this._updateAllAutoExperiments();\n    }\n\n    // Hydrate sticky bucket service\n    if (\n      this._options.stickyBucketService &&\n      this._options.stickyBucketAssignmentDocs\n    ) {\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\n  public async setPayload(payload: FeatureApiResponse): Promise<void> {\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.contextualBandits) {\n      this._options.contextualBandits = data.contextualBandits;\n    }\n    if (data.experiments) {\n      this._options.experiments = data.experiments;\n      this._updateAllAutoExperiments();\n    }\n    this.ready = true;\n    this._render();\n  }\n\n  public initSync(options: InitSyncOptions): GrowthBook {\n    this._initialized = true;\n\n    const payload = options.payload;\n\n    if (payload.encryptedExperiments || payload.encryptedFeatures) {\n      throw new Error(\"initSync does not support encrypted payloads\");\n    }\n\n    if (\n      this._options.stickyBucketService &&\n      !this._options.stickyBucketAssignmentDocs\n    ) {\n      this._options.stickyBucketAssignmentDocs =\n        this.generateStickyBucketAssignmentDocsSync(\n          this._options.stickyBucketService as StickyBucketServiceSync,\n          payload,\n        );\n    }\n\n    this._payload = payload;\n    this._decryptedPayload = payload;\n    if (payload.features) {\n      this._options.features = payload.features;\n    }\n    if (payload.savedGroups) {\n      this._options.savedGroups = payload.savedGroups;\n    }\n    if (payload.contextualBandits) {\n      this._options.contextualBandits = payload.contextualBandits;\n    }\n    if (payload.experiments) {\n      this._options.experiments = payload.experiments;\n      this._updateAllAutoExperiments();\n    }\n\n    this.ready = true;\n\n    startStreaming(this, options);\n\n    return this;\n  }\n\n  public async init(options?: InitOptions): Promise<InitResponse> {\n    this._initialized = true;\n    options = options || {};\n\n    if (options.cacheSettings) {\n      configureCache(options.cacheSettings);\n    }\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 { data, ...res } = 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  public async loadFeatures(options?: LoadFeaturesOptions): Promise<void> {\n    options = options || {};\n    await this.init({\n      skipCache: options.skipCache,\n      timeout: options.timeout,\n      streaming:\n        (this._options.backgroundSync ?? true) &&\n        (options.autoRefresh || this._options.subscribeToChanges),\n    });\n  }\n\n  public async refreshFeatures(\n    options?: RefreshFeaturesOptions,\n  ): Promise<void> {\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\n  public getApiInfo(): [ApiHost, ClientKey] {\n    return [this.getApiHosts().apiHost, this.getClientKey()];\n  }\n  public getApiHosts() {\n    return getApiHosts(this._options);\n  }\n  public getClientKey(): string {\n    return this._options.clientKey || \"\";\n  }\n  public getPayload(): FeatureApiResponse {\n    return (\n      this._payload || {\n        features: this.getFeatures(),\n        experiments: this.getExperiments(),\n      }\n    );\n  }\n  public getDecryptedPayload(): FeatureApiResponse {\n    return this._decryptedPayload || this.getPayload();\n  }\n\n  public isRemoteEval(): boolean {\n    return this._options.remoteEval || false;\n  }\n\n  public getCacheKeyAttributes(): (keyof Attributes)[] | undefined {\n    return this._options.cacheKeyAttributes;\n  }\n\n  private async _refresh({\n    timeout,\n    skipCache,\n    allowStale,\n    streaming,\n  }: RefreshFeaturesOptions & {\n    allowStale?: boolean;\n    streaming?: boolean;\n  }) {\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\n  private _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  public setFeatures(features: Record<string, FeatureDefinition>) {\n    this._options.features = features;\n    this.ready = true;\n    this._render();\n  }\n\n  /** @deprecated Use {@link setPayload} */\n  public async setEncryptedFeatures(\n    encryptedString: string,\n    decryptionKey?: string,\n    subtle?: SubtleCrypto,\n  ): Promise<void> {\n    const featuresJSON = await decrypt(\n      encryptedString,\n      decryptionKey || this._options.decryptionKey,\n      subtle,\n    );\n    this.setFeatures(\n      JSON.parse(featuresJSON) as Record<string, FeatureDefinition>,\n    );\n  }\n\n  /** @deprecated Use {@link setPayload} */\n  public setExperiments(experiments: AutoExperiment[]): void {\n    this._options.experiments = experiments;\n    this.ready = true;\n    this._updateAllAutoExperiments();\n  }\n\n  /** @deprecated Use {@link setPayload} */\n  public async setEncryptedExperiments(\n    encryptedString: string,\n    decryptionKey?: string,\n    subtle?: SubtleCrypto,\n  ): Promise<void> {\n    const experimentsJSON = await decrypt(\n      encryptedString,\n      decryptionKey || this._options.decryptionKey,\n      subtle,\n    );\n    this.setExperiments(JSON.parse(experimentsJSON) as AutoExperiment[]);\n  }\n\n  public async setAttributes(attributes: 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\n  public async updateAttributes(attributes: Attributes) {\n    return this.setAttributes({ ...this._options.attributes, ...attributes });\n  }\n\n  public async setAttributeOverrides(overrides: Attributes) {\n    this._options.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\n  public async setForcedVariations(vars: Record<string, number>) {\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  public setForcedFeatures(map: Map<string, any>) {\n    this._options.forcedFeatureValues = map;\n    this._render();\n  }\n\n  public async setURL(url: string) {\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\n  public getAttributes() {\n    return { ...this._options.attributes, ...this._options.attributeOverrides };\n  }\n\n  public getForcedVariations() {\n    return this._options.forcedVariations || {};\n  }\n\n  public getForcedFeatures() {\n    // eslint-disable-next-line\n    return this._options.forcedFeatureValues || new Map<string, any>();\n  }\n\n  public getStickyBucketAssignmentDocs() {\n    return this._options.stickyBucketAssignmentDocs || {};\n  }\n\n  public getUrl() {\n    return this._options.url || \"\";\n  }\n\n  public getFeatures() {\n    return this._options.features || {};\n  }\n\n  public getExperiments() {\n    return this._options.experiments || [];\n  }\n\n  public getCompletedChangeIds(): string[] {\n    return Array.from(this._completedChangeIds);\n  }\n\n  public subscribe(cb: SubscriptionFunction): () => void {\n    this._subscriptions.add(cb);\n    return () => {\n      this._subscriptions.delete(cb);\n    };\n  }\n\n  // Internal — first-party plugin use only.\n  // Currently singleton-only. UserScopedGrowthBook could use the same signatures;\n  // GrowthBookClient would need UserContext in callbacks to identify the user.\n  // Fires on deduped feature value changes (not every evalFeature call). Overrides excluded.\n  // One of three plugin streams: feature usage, experiment assignments (subscribe), custom events.\n  public _subscribeFeatureUsage(cb: FeatureUsageSubCallback): () => void {\n    this._featureUsageSubs.add(cb);\n    return () => this._featureUsageSubs.delete(cb);\n  }\n\n  // Internal — first-party plugin use only.\n  // Fires for explicit logEvent() calls only, not SDK-internal events.\n  public _subscribeCustomEvents(cb: CustomEventSubCallback): () => void {\n    this._customEventSubs.add(cb);\n    return () => this._customEventSubs.delete(cb);\n  }\n\n  private 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\n  public getAllResults() {\n    return new Map(this._assigned);\n  }\n\n  public onDestroy(cb: () => void) {\n    this._destroyCallbacks.push(cb);\n  }\n\n  public isDestroyed() {\n    return !!this._destroyed;\n  }\n\n  public destroy(options?: DestroyOptions) {\n    options = options || {};\n    this._destroyed = true;\n\n    // Custom callbacks\n    // Do this first in case it needs access to the below data that is cleared\n    this._destroyCallbacks.forEach((cb) => {\n      try {\n        cb();\n      } catch (e) {\n        console.error(e);\n      }\n    });\n\n    // Release references to save memory\n    this._subscriptions.clear();\n    this._featureUsageSubs.clear();\n    this._customEventSubs.clear();\n    this._assigned.clear();\n    this._trackedExperiments.clear();\n    this._completedChangeIds.clear();\n    this._deferredTrackingCalls.clear();\n    this._trackedFeatures = {};\n    this._destroyCallbacks = [];\n    this._payload = undefined;\n    this._saveStickyBucketAssignmentDoc = undefined;\n    unsubscribe(this);\n    if (options.destroyAllStreams) {\n      clearAutoRefresh();\n    }\n    this.logs = [];\n\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\n  public setRenderer(renderer: null | RenderFunction) {\n    this._renderer = renderer;\n  }\n\n  public forceVariation(key: string, variation: number) {\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\n  public run<T>(experiment: Experiment<T>): Result<T> {\n    const { result } = runExperiment(experiment, null, this._getEvalContext());\n    this._onExperimentEval(experiment, result);\n    return result;\n  }\n\n  public triggerExperiment(key: string) {\n    this._triggeredExpKeys.add(key);\n    if (!this._options.experiments) return null;\n    const experiments = this._options.experiments.filter(\n      (exp) => exp.key === key,\n    );\n    return experiments\n      .map((exp) => {\n        return this._runAutoExperiment(exp);\n      })\n      .filter((res) => res !== null);\n  }\n\n  public triggerAutoExperiments() {\n    this._autoExperimentsAllowed = true;\n    this._updateAllAutoExperiments(true);\n  }\n\n  private _getEvalContext(): EvalContext {\n    return {\n      user: this._getUserContext(),\n      global: this._getGlobalContext(),\n      stack: {\n        evaluatedFeatures: new Set(),\n      },\n    };\n  }\n\n  private _getUserContext(): UserContext {\n    return {\n      attributes: this._options.user\n        ? {\n            ...this._options.user,\n            ...this._options.attributes,\n          }\n        : this._options.attributes,\n      enableDevMode: this._options.enableDevMode,\n      blockedChangeIds: this._options.blockedChangeIds,\n      stickyBucketAssignmentDocs: this._options.stickyBucketAssignmentDocs,\n      url: this._getContextUrl(),\n      forcedVariations: this._options.forcedVariations,\n      forcedFeatureValues: this._options.forcedFeatureValues,\n      attributeOverrides: this._options.attributeOverrides,\n      saveStickyBucketAssignmentDoc: this._saveStickyBucketAssignmentDoc,\n      trackingCallback: this._options.trackingCallback,\n      onFeatureUsage: this._options.onFeatureUsage,\n      devLogs: this.logs,\n      featureUsageSubs: this._featureUsageSubs,\n      trackedExperiments: this._trackedExperiments,\n      trackedFeatureUsage: this._trackedFeatures,\n    };\n  }\n  private _getGlobalContext(): GlobalContext {\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      contextualBandits: this._options.contextualBandits,\n      groups: this._options.groups,\n      overrides: this._options.overrides,\n      onExperimentEval: this._onExperimentEval,\n      recordChangeId: this._recordChangedId,\n      saveDeferredTrack: this._saveDeferredTrack,\n      eventLogger: this._options.eventLogger,\n    };\n  }\n\n  private _runAutoExperiment(experiment: AutoExperiment, forceRerun?: boolean) {\n    const existing = this._activeAutoExperiments.get(experiment);\n\n    // If this is a manual experiment and it's not already running, skip\n    if (\n      experiment.manual &&\n      !this._triggeredExpKeys.has(experiment.key) &&\n      !existing\n    )\n      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\" &&\n        this.log(\"Auto experiment blocked\", { id: experiment.key });\n    }\n\n    let result: Result<AutoExperimentVariation> | undefined;\n    let trackingCall: Promise<void> | undefined;\n    // Run the experiment (if blocked exclude)\n    if (isBlocked) {\n      result = getExperimentResult(\n        this._getEvalContext(),\n        experiment,\n        -1,\n        false,\n        \"\",\n      );\n    } else {\n      ({ result, trackingCall } = runExperiment(\n        experiment,\n        null,\n        this._getEvalContext(),\n      ));\n      this._onExperimentEval(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 (\n      !forceRerun &&\n      result.inExperiment &&\n      existing &&\n      existing.valueHash === valueHash\n    ) {\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\n      if (\n        changeType === \"redirect\" &&\n        result.value.urlRedirect &&\n        experiment.urlPatterns\n      ) {\n        const url = experiment.persistQueryString\n          ? mergeQueryStrings(this._getContextUrl(), result.value.urlRedirect)\n          : result.value.urlRedirect;\n\n        if (isURLTargeted(url, experiment.urlPatterns)) {\n          this.log(\n            \"Skipping redirect because original URL matches redirect URL\",\n            {\n              id: experiment.key,\n            },\n          );\n          return result;\n        }\n        this._redirectedUrl = url;\n        const { navigate, delay } = 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([\n              ...(trackingCall\n                ? [\n                    promiseTimeout(\n                      trackingCall,\n                      this._options.maxNavigateDelay ?? 1000,\n                    ),\n                  ]\n                : []),\n              new Promise((resolve) =>\n                window.setTimeout(\n                  resolve,\n                  this._options.navigateDelay ?? delay,\n                ),\n              ),\n            ]).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\n          ? this._options.applyDomChangesCallback(result.value)\n          : this._applyDOMChanges(result.value);\n        if (undo) {\n          this._activeAutoExperiments.set(experiment, {\n            undo,\n            valueHash,\n          });\n        }\n      }\n    }\n\n    return result;\n  }\n\n  private _undoActiveAutoExperiment(exp: AutoExperiment) {\n    const data = this._activeAutoExperiments.get(exp);\n    if (data) {\n      data.undo();\n      this._activeAutoExperiments.delete(exp);\n    }\n  }\n\n  private _updateAllAutoExperiments(forceRerun?: boolean) {\n    if (!this._autoExperimentsAllowed) return;\n\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 (\n        result &&\n        result.inExperiment &&\n        getAutoExperimentChangeType(exp) === \"redirect\"\n      ) {\n        break;\n      }\n    }\n  }\n\n  private _onExperimentEval<T>(experiment: Experiment<T>, result: Result<T>) {\n    const prev = this._assigned.get(experiment.key);\n    this._assigned.set(experiment.key, { experiment, result });\n    if (this._subscriptions.size > 0) {\n      this._fireSubscriptions<T>(experiment, result, prev);\n    }\n  }\n\n  private _fireSubscriptions<T>(\n    experiment: Experiment<T>,\n    result: Result<T>,\n    // eslint-disable-next-line\n    prev?: { experiment: Experiment<any>; result: Result<any> },\n  ) {\n    // If assigned variation has changed, fire subscriptions\n    // TODO: what if the experiment definition has changed?\n    if (\n      !prev ||\n      prev.result.inExperiment !== result.inExperiment ||\n      prev.result.variationId !== result.variationId\n    ) {\n      this._subscriptions.forEach((cb) => {\n        try {\n          cb(experiment, result);\n        } catch (e) {\n          console.error(e);\n        }\n      });\n    }\n  }\n\n  private _recordChangedId(id: string) {\n    this._completedChangeIds.add(id);\n  }\n\n  public isOn<K extends string & keyof AppFeatures = string>(key: K): boolean {\n    return this.evalFeature(key).on;\n  }\n\n  public isOff<K extends string & keyof AppFeatures = string>(key: K): boolean {\n    return this.evalFeature(key).off;\n  }\n\n  public getFeatureValue<\n    V extends AppFeatures[K],\n    K extends string & keyof AppFeatures = string,\n  >(key: K, defaultValue: V): WidenPrimitives<V> {\n    const value = this.evalFeature<WidenPrimitives<V>, K>(key).value;\n    return value === null ? (defaultValue as WidenPrimitives<V>) : value;\n  }\n\n  /**\n   * @deprecated Use {@link evalFeature}\n   * @param id\n   */\n\n  public feature<\n    V extends AppFeatures[K],\n    K extends string & keyof AppFeatures = string,\n  >(id: K): FeatureResult<V | null> {\n    return this.evalFeature(id);\n  }\n\n  public evalFeature<\n    V extends AppFeatures[K],\n    K extends string & keyof AppFeatures = string,\n  >(id: K): FeatureResult<V | null> {\n    return _evalFeature(id, this._getEvalContext());\n  }\n\n  log(msg: string, ctx: Record<string, unknown>) {\n    if (!this.debug) return;\n    if (this._options.log) this._options.log(msg, ctx);\n    else console.log(msg, ctx);\n  }\n\n  public getDeferredTrackingCalls(): TrackingData[] {\n    return Array.from(this._deferredTrackingCalls.values());\n  }\n\n  public setDeferredTrackingCalls(calls: TrackingData[]) {\n    this._deferredTrackingCalls = new Map(\n      calls\n        .filter((c) => c && c.experiment && c.result)\n        .map((c) => {\n          return [getExperimentDedupeKey(c.experiment, c.result), c];\n        }),\n    );\n  }\n\n  public async fireDeferredTrackingCalls() {\n    if (!this._options.trackingCallback) return;\n\n    const promises: ReturnType<TrackingCallback>[] = [];\n    this._deferredTrackingCalls.forEach((call: TrackingData) => {\n      if (!call || !call.experiment || !call.result) {\n        console.error(\"Invalid deferred tracking call\", { call: call });\n      } else {\n        promises.push(\n          (this._options.trackingCallback as TrackingCallback)(\n            call.experiment,\n            call.result,\n            call.user,\n          ),\n        );\n      }\n    });\n    this._deferredTrackingCalls.clear();\n    await Promise.all(promises);\n  }\n\n  public setTrackingCallback(callback: TrackingCallback) {\n    this._options.trackingCallback = callback;\n    this.fireDeferredTrackingCalls();\n  }\n\n  public setFeatureUsageCallback(callback: FeatureUsageCallback) {\n    this._options.onFeatureUsage = callback;\n  }\n\n  public setEventLogger(logger: EventLogger) {\n    this._options.eventLogger = logger;\n  }\n\n  public async logEvent(\n    eventName: string,\n    properties?: Record<string, unknown>,\n  ) {\n    if (this._destroyed) {\n      console.error(\"Cannot log event to destroyed GrowthBook instance\");\n      return;\n    }\n    if (this._options.enableDevMode) {\n      this.logs.push({\n        eventName,\n        properties,\n        timestamp: Date.now().toString(),\n        logType: \"event\",\n      });\n    }\n    if (this._customEventSubs.size) {\n      this._customEventSubs.forEach((cb) => {\n        try {\n          cb(eventName, properties || {});\n        } catch (e) {\n          console.error(e);\n        }\n      });\n    }\n    if (this._options.eventLogger) {\n      try {\n        await this._options.eventLogger(\n          eventName,\n          properties || {},\n          getTrackingUserContext(this._getUserContext()),\n        );\n      } catch (e) {\n        console.error(e);\n      }\n    } else {\n      console.error(\"No event logger configured\");\n    }\n  }\n\n  private _saveDeferredTrack(data: TrackingData) {\n    this._deferredTrackingCalls.set(\n      getExperimentDedupeKey(data.experiment, data.result),\n      data,\n    );\n  }\n\n  private _getContextUrl() {\n    return this._options.url || (isBrowser ? window.location.href : \"\");\n  }\n\n  private _isAutoExperimentBlockedByContext(\n    experiment: AutoExperiment,\n  ): boolean {\n    const changeType = getAutoExperimentChangeType(experiment);\n    if (changeType === \"visual\") {\n      if (this._options.disableVisualExperiments) return true;\n\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\n    if (\n      experiment.changeId &&\n      (this._options.blockedChangeIds || []).includes(experiment.changeId)\n    ) {\n      return true;\n    }\n\n    return false;\n  }\n\n  public getRedirectUrl(): string {\n    return this._redirectedUrl;\n  }\n\n  private _getNavigateFunction(): {\n    navigate: null | ((url: string) => void | Promise<void>);\n    delay: number;\n  } {\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: string) => {\n          window.location.replace(url);\n        },\n        delay: 100,\n      };\n    }\n    return {\n      navigate: null,\n      delay: 0,\n    };\n  }\n\n  private _applyDOMChanges(changes: AutoExperimentVariation) {\n    if (!isBrowser) return;\n    const undo: (() => void)[] = [];\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 as DeclarativeMutation).revert);\n      });\n    }\n    return () => {\n      undo.forEach((fn) => fn());\n    };\n  }\n\n  public async refreshStickyBuckets(data?: FeatureApiResponse) {\n    if (this._options.stickyBucketService) {\n      const ctx = this._getEvalContext();\n      const docs = await getAllStickyBucketAssignmentDocs(\n        ctx,\n        this._options.stickyBucketService,\n        data,\n      );\n      this._options.stickyBucketAssignmentDocs = docs;\n    }\n  }\n\n  public generateStickyBucketAssignmentDocsSync(\n    stickyBucketService: StickyBucketServiceSync,\n    payload: FeatureApiResponse,\n  ) {\n    if (!(\"getAllAssignmentsSync\" in stickyBucketService)) {\n      console.error(\n        \"generating StickyBucketAssignmentDocs docs requires StickyBucketServiceSync\",\n      );\n      return;\n    }\n    const ctx = this._getEvalContext();\n    const attributes = getStickyBucketAttributes(ctx, payload);\n    return stickyBucketService.getAllAssignmentsSync(attributes);\n  }\n\n  public inDevMode(): boolean {\n    return !!this._options.enableDevMode;\n  }\n}\n\nexport async function prefetchPayload(options: PrefetchOptions) {\n  // Create a temporary instance, just to fetch the payload\n  const instance = new GrowthBook(options);\n\n  await refreshFeatures({\n    instance,\n    skipCache: options.skipCache,\n    allowStale: false,\n    backgroundSync: options.streaming,\n  });\n\n  instance.destroy();\n}\n"],"mappings":"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","ignoreList":[]}