- Add full Telegram bot functionality with Z.AI API integration
- Implement 4 tools: Bash, FileEdit, WebSearch, Git
- Add 3 agents: Code Reviewer, Architect, DevOps Engineer
- Add 6 skills for common coding tasks
- Add systemd service file for 24/7 operation
- Add nginx configuration for HTTPS webhook
- Add comprehensive documentation
- Implement WebSocket server for real-time updates
- Add logging system with Winston
- Add environment validation
🤖 zCode CLI X - Agentic coder with Z.AI + Telegram integration
1 line
62 KiB
Plaintext
1 line
62 KiB
Plaintext
{"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","isBrowser","window","document","SDK_VERSION","GrowthBook","constructor","options","version","_options","context","_renderer","renderer","_trackedExperiments","Set","_completedChangeIds","_trackedFeatures","debug","_subscriptions","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","_render","initSync","encryptedExperiments","encryptedFeatures","generateStickyBucketAssignmentDocsSync","init","cacheSettings","success","source","res","_refresh","allowStale","loadFeatures","skipCache","timeout","streaming","backgroundSync","autoRefresh","subscribeToChanges","getApiInfo","getClientKey","getFeatures","getExperiments","getDecryptedPayload","isRemoteEval","getCacheKeyAttributes","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","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","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","Promise","all","maxNavigateDelay","resolve","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 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} 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 _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.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.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.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 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._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 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 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 ),\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._options.eventLogger) {\n try {\n await this._options.eventLogger(\n eventName,\n properties || {},\n 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":[]} |