@kameleoon/javascript-sdk-core 2.9.0 → 2.9.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/campaignConfiguration/campaignConfiguration.js.map +1 -1
- package/dist/campaignConfiguration/types.d.ts +4 -4
- package/dist/campaignConfiguration/types.js.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/kameleoonClient.js +2 -2
- package/dist/kameleoonClient.js.map +1 -1
- package/dist/requester/constants.js +1 -2
- package/dist/requester/constants.js.map +1 -1
- package/dist/storage/index.d.ts +1 -2
- package/dist/storage/index.js +1 -1
- package/dist/storage/index.js.map +1 -1
- package/dist/storage/types.d.ts +19 -14
- package/dist/storage/types.js.map +1 -1
- package/dist/utilities/types.d.ts +7 -7
- package/dist/utilities/types.js.map +1 -1
- package/dist/variationConfiguration/variationConfiguration.d.ts +2 -2
- package/dist/variationConfiguration/variationConfiguration.js.map +1 -1
- package/package.json +2 -2
- package/dist/storage/externalStorage.d.ts +0 -11
- package/dist/storage/externalStorage.js +0 -2
- package/dist/storage/externalStorage.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"campaignConfiguration.js","names":["a","b","c","Object","defineProperty","value","enumerable","configurable","writable","e","f","prototype","d","g","create","h","m","s","i","type","arg","call","forEach","_invoke","j","k","_typeof","r","resolve","__await","then","Error","o","method","delegate","x","sent","_sent","dispatchException","abrupt","done","iterator","return","TypeError","resultName","next","nextLoc","tryLoc","catchLoc","finallyLoc","afterLoc","tryEntries","push","l","completion","reset","n","u","isNaN","length","_regeneratorRuntime","p","q","hasOwnProperty","t","Symbol","v","asyncIterator","w","toStringTag","wrap","y","z","getPrototypeOf","A","B","displayName","isGeneratorFunction","constructor","name","mark","setPrototypeOf","__proto__","awrap","AsyncIterator","async","Promise","keys","reverse","pop","values","prev","charAt","slice","stop","rval","complete","finish","catch","_catch","delegateYield","asyncGeneratorStep","_asyncToGenerator","arguments","apply","_classCallCheck","_defineProperties","_toPropertyKey","key","_createClass","_defineProperty","_toPrimitive","toPrimitive","String","Number","CampaignConfiguration","settings","storage","requester","externalClientConfiguration","targetingCleanupInterval","offlineTrackingStorage","externalEventSource","UpdateType","Idle","Map","DEFAULT_CONFIGURATION_DATA","CLEANUP_TARGETING_DATA_INTERVAL","Milliseconds","Minute","Set","lastUpdate","Date","readStorageData","targetingDataLifetime","cleanupIntervalMinutes","targetingDataIntervalId","setInterval","cleanupOutdatedTargetingData","bind","err","clearInterval","useCache","isExternalConfiguration","shouldUpdate","checkShouldUpdate","updateClientConfiguration","updateResult","ok","isUpdateTypeToggled","data","Ok","handleExternalUpdates","updateType","RealTime","eventSource","handleRealTimeUpdates","Polling","handlePollingUpdates","cleanupHandlers","close","updateConfigurationIntervalId","configuration","customData","experiments","featureFlagConfigurations","configurationData","featureFlags","ExternalEventSource","siteCode","updateEventCallback","timeStamp","configurationUpdateCallback","open","updateInterval","addTargetingData","visitorCode","targetingData","Array","dataItem","Utilities","isCustomData","_objectSpread","lastActivityTime","now","hasCustomDataKey","KameleoonData","CustomData","index","hasDataKey","result","updateStorageData","unsentTargetingData","localCustomDataIndexes","has","set","getUnsentData","clearUnsentData","dataItems","persistentCustomDataIndexes","size","persistentCustomData","_createForOfIteratorHelper","isPersistentCustomData","getTargetingTree","segment","targetingTrees","id","targetingTree","TargetingTree","get","onConfigurationUpdate","callback","skipChecks","realTimeUpdate","lastUpdateTime","getTime","updateWindowEdge","currentTime","entries","_slicedToArray","kameleoonVisitorData","rest","_objectWithoutProperties","_excluded","isDataExpired","existingData","throw","read","kameleoonTargetingData","kameleoonConfiguration","parse","clearTargetingTrees","clear","getClientConfiguration","clientConfigurationResult","sendOfflineTracking","customDataLocalOnlyIndexes","localOnly","scope","CustomDataScope","Visitor","toggleUpdateType","initialize","toString","write","exports"],"sources":["../../src/campaignConfiguration/campaignConfiguration.ts"],"sourcesContent":["import { Ok, Result } from 'ts-res';\nimport { KameleoonError } from 'src/kameleoonError/kameleoonError';\nimport { ClientSettingsType } from 'src/clientSettings/types';\nimport {\n CustomData,\n KameleoonData,\n KameleoonDataType,\n} from 'src/kameleoonData';\nimport { Requester, GetClientConfigurationResultType } from 'src/requester';\nimport { SegmentType, TargetingDataType, TargetingTree } from 'src/targeting';\nimport { IStorage, ClientDataType } from 'src/storage';\nimport {\n ExternalEventSource,\n IEventSource,\n IExternalEventSourceConstructor,\n} from 'src/eventSource';\nimport { Milliseconds } from 'src/types';\nimport {\n CLEANUP_TARGETING_DATA_INTERVAL,\n DEFAULT_CONFIGURATION_DATA,\n} from './constants';\nimport {\n CampaignConfigurationParametersType,\n ConfigurationDataType,\n ConfigurationType,\n CustomDataScope,\n ExperimentItemType,\n FeatureFlagType,\n UnsentTargetingDataType,\n UnsentVisitorTargetingDataType,\n UpdateClientConfigurationParameters,\n UpdateType,\n} from './types';\nimport { Utilities } from 'src/utilities';\nimport {\n ExistingCustomDataType,\n ExistingDataType,\n} from 'src/kameleoonData/types';\nimport { OfflineTracking } from 'src/storage/types';\n\ninterface ICampaignConfiguration {\n initialize: (useCache?: boolean) => Promise<Result<void, KameleoonError>>;\n addTargetingData: (\n visitorCode: string,\n ...data: KameleoonDataType[]\n ) => Result<void, KameleoonError>;\n getUnsentData: (\n visitorCode: string,\n ) => UnsentTargetingDataType[string] | undefined;\n clearUnsentData: (visitorCode: string) => void;\n isPersistentCustomData: (dataItem: KameleoonDataType) => boolean;\n onConfigurationUpdate: (callback: () => void) => void;\n readonly experiments: ExperimentItemType[];\n readonly storedTargetingData: TargetingDataType;\n readonly featureFlags: FeatureFlagType[];\n readonly configuration: ConfigurationType;\n readonly unsentDataVisitors: string[];\n}\n\nexport class CampaignConfiguration implements ICampaignConfiguration {\n private configurationUpdateCallback?: () => void;\n private updateConfigurationIntervalId: NodeJS.Timer | null = null;\n private updateType: UpdateType = UpdateType.Idle;\n private targetingDataIntervalId: NodeJS.Timer | null = null;\n private unsentTargetingData: UnsentTargetingDataType = {};\n private targetingData: TargetingDataType = {};\n private targetingTrees: Map<string, TargetingTree> = new Map();\n private configurationData: ConfigurationDataType = DEFAULT_CONFIGURATION_DATA;\n private settings: ClientSettingsType;\n private lastUpdate: Date;\n private storage: IStorage<ClientDataType>;\n private offlineTrackingStorage: IStorage<OfflineTracking>;\n private requester: Requester;\n private eventSource?: IEventSource;\n private externalEventSource: IExternalEventSourceConstructor;\n private externalClientConfiguration?: GetClientConfigurationResultType;\n private targetingDataLifetime: number =\n CLEANUP_TARGETING_DATA_INTERVAL * Milliseconds.Minute;\n private localCustomDataIndexes: Set<number> = new Set();\n private persistentCustomDataIndexes: Set<number> = new Set();\n\n constructor({\n settings,\n storage,\n requester,\n externalClientConfiguration,\n targetingCleanupInterval,\n offlineTrackingStorage,\n externalEventSource,\n }: CampaignConfigurationParametersType) {\n this.requester = requester;\n this.settings = settings;\n this.lastUpdate = new Date();\n this.storage = storage;\n this.readStorageData();\n this.externalClientConfiguration = externalClientConfiguration;\n this.offlineTrackingStorage = offlineTrackingStorage;\n this.externalEventSource = externalEventSource;\n\n if (targetingCleanupInterval) {\n this.targetingDataLifetime =\n targetingCleanupInterval * Milliseconds.Minute;\n\n const cleanupIntervalMinutes =\n targetingCleanupInterval < 0 ? 1 : targetingCleanupInterval;\n\n // --- Note ---\n // We can not make delayed code execution recoverable, as it might lead\n // to targeting data storage size overflow\n try {\n this.targetingDataIntervalId = setInterval(\n this.cleanupOutdatedTargetingData.bind(this),\n cleanupIntervalMinutes * Milliseconds.Minute,\n );\n } catch (err) {\n if (this.targetingDataIntervalId) {\n clearInterval(this.targetingDataIntervalId);\n }\n\n throw err;\n }\n }\n }\n\n public async initialize(\n useCache?: boolean,\n ): Promise<Result<void, KameleoonError>> {\n const isExternalConfiguration = Boolean(this.externalClientConfiguration);\n const shouldUpdate = this.checkShouldUpdate(isExternalConfiguration);\n\n if (shouldUpdate) {\n const updateResult = await this.updateClientConfiguration({ useCache });\n\n if (!updateResult.ok) {\n return updateResult;\n }\n\n // --- Note ---\n // If update type is being toggled `initialize` will be called again\n // so we don't need to continue execution here\n const isUpdateTypeToggled = updateResult.data;\n\n if (isUpdateTypeToggled) {\n return Ok();\n }\n }\n\n if (isExternalConfiguration) {\n this.handleExternalUpdates();\n\n return Ok();\n }\n\n if (this.updateType === UpdateType.RealTime && !this.eventSource) {\n this.updateType = UpdateType.Idle;\n this.handleRealTimeUpdates(useCache);\n\n return Ok();\n }\n\n if (this.updateType === UpdateType.Polling) {\n this.handlePollingUpdates(useCache);\n }\n\n return Ok();\n }\n\n private cleanupHandlers(): void {\n if (this.eventSource) {\n this.eventSource.close();\n }\n\n if (this.updateConfigurationIntervalId) {\n clearInterval(this.updateConfigurationIntervalId);\n }\n }\n\n private handleExternalUpdates(): void {\n this.cleanupHandlers();\n\n const {\n configuration,\n customData,\n experiments,\n featureFlagConfigurations,\n } = this.externalClientConfiguration!;\n\n this.configurationData = {\n customData,\n configuration,\n experiments,\n featureFlags: featureFlagConfigurations,\n };\n }\n\n private handleRealTimeUpdates(useCache?: boolean): void {\n this.cleanupHandlers();\n\n this.eventSource = new ExternalEventSource(\n this.settings.siteCode,\n this.externalEventSource,\n );\n\n const updateEventCallback = (timeStamp: number) => {\n this.updateClientConfiguration({ useCache, timeStamp });\n\n if (this.configurationUpdateCallback) {\n this.configurationUpdateCallback();\n }\n };\n\n this.eventSource.open(updateEventCallback);\n }\n\n private handlePollingUpdates(useCache?: boolean): void {\n // --- Note ---\n // If `initialize` is called again the interval will be cleared\n // so theoretically we will constantly defer config update\n // but `this.lastUpdate` with `checkShouldUpdate` will prevent that\n this.cleanupHandlers();\n\n // --- Note ---\n // Same as targeting data interval we don't want to make failed configuration\n // retrieval recoverable\n try {\n this.updateConfigurationIntervalId = setInterval(\n () => this.updateClientConfiguration.bind(this)({ useCache }),\n this.settings.updateInterval,\n );\n } catch (err) {\n if (this.updateConfigurationIntervalId) {\n clearInterval(this.updateConfigurationIntervalId);\n }\n\n throw err;\n }\n }\n\n public addTargetingData(\n visitorCode: string,\n ...data: KameleoonDataType[]\n ): Result<void, KameleoonError> {\n if (!(visitorCode in this.targetingData)) {\n this.targetingData[visitorCode] = {};\n }\n\n // --- Note ---\n // Following code is optimized for performance:\n // - We don't want to copy the whole object every time we add new data\n // - So we are manually checking the keys existence and mutating targeting data directly\n // - Numerous type casts are required because we can't narrow down nested `this.targetingData` types by using assertion functions\n data.forEach((dataItem) => {\n // --- Custom data case ---\n if (Utilities.isCustomData(dataItem)) {\n const customData = {\n ...dataItem.data,\n lastActivityTime: Date.now(),\n };\n const hasCustomDataKey =\n KameleoonData.CustomData in this.targetingData[visitorCode];\n\n // -- Change directly if `[key]` exists\n if (hasCustomDataKey) {\n (\n this.targetingData[visitorCode][\n customData.type\n ] as ExistingCustomDataType\n )[customData.index] = customData;\n } else {\n // -- Change data by creating new `[key]` and `[index]`\n this.targetingData[visitorCode] = {\n ...this.targetingData[visitorCode],\n [customData.type]: {\n ...this.targetingData[visitorCode][customData.type],\n [customData.index]: customData,\n },\n };\n }\n // --- Other data types case ---\n } else {\n const data = { ...dataItem.data, lastActivityTime: Date.now() };\n const hasDataKey =\n dataItem.data.type in this.targetingData[visitorCode];\n\n // -- Changing data by `[key]` if it exists\n if (hasDataKey) {\n (this.targetingData[visitorCode][\n dataItem.data.type\n ] as ExistingDataType<typeof dataItem.data.type>) = data;\n } else {\n // -- Change data by creating new `[key]`\n this.targetingData[visitorCode] = {\n ...this.targetingData[visitorCode],\n [dataItem.data.type]: data,\n };\n }\n }\n });\n\n // --- Note ---\n // `targetingData` should not refresh `lastUpdate` time\n const result = this.updateStorageData(this.lastUpdate);\n\n if (result.ok) {\n data.forEach((dataItem) => {\n // --- Note ---\n // We assume `this.unsentTargetingData[visitorCode]` is always defined further in the code\n if (!this.unsentTargetingData[visitorCode]) {\n this.unsentTargetingData[visitorCode] = new Map();\n }\n\n let key: KameleoonData | number;\n\n if (Utilities.isCustomData(dataItem)) {\n if (this.localCustomDataIndexes.has(dataItem.data.index)) {\n return;\n }\n\n key = dataItem.data.index;\n } else {\n key = dataItem.data.type;\n }\n\n this.unsentTargetingData[visitorCode]!.set(key, dataItem);\n });\n }\n\n return result;\n }\n\n public getUnsentData(\n visitorCode: string,\n ): UnsentTargetingDataType[string] | undefined {\n return this.unsentTargetingData[visitorCode];\n }\n\n public clearUnsentData(visitorCode: string): void {\n const dataItems = this.unsentTargetingData[visitorCode]?.values();\n\n if (dataItems && this.persistentCustomDataIndexes.size) {\n const persistentCustomData: UnsentVisitorTargetingDataType = new Map();\n\n for (const dataItem of dataItems) {\n if (this.isPersistentCustomData(dataItem)) {\n persistentCustomData.set(dataItem.data.index, dataItem);\n }\n }\n\n if (persistentCustomData.size) {\n this.unsentTargetingData[visitorCode] = persistentCustomData;\n return;\n }\n }\n\n delete this.unsentTargetingData[visitorCode];\n }\n\n public getTargetingTree(segment: SegmentType): TargetingTree {\n if (!this.targetingTrees.has(segment.id)) {\n const targetingTree = new TargetingTree(segment);\n\n this.targetingTrees.set(segment.id, new TargetingTree(segment));\n\n return targetingTree;\n }\n\n return this.targetingTrees.get(segment.id) as TargetingTree;\n }\n\n public onConfigurationUpdate(callback: () => void): void {\n this.configurationUpdateCallback = callback;\n }\n\n public isPersistentCustomData(\n dataItem: KameleoonDataType,\n ): dataItem is CustomData {\n if (!this.persistentCustomDataIndexes.size) {\n return false;\n }\n\n if (Utilities.isCustomData(dataItem)) {\n return this.persistentCustomDataIndexes.has(dataItem.data.index);\n }\n\n return false;\n }\n\n get unsentDataVisitors(): string[] {\n return Object.keys(this.unsentTargetingData);\n }\n\n get storedTargetingData(): TargetingDataType {\n return this.targetingData;\n }\n\n get experiments(): ExperimentItemType[] {\n return this.configurationData.experiments;\n }\n\n get featureFlags(): FeatureFlagType[] {\n return this.configurationData.featureFlags;\n }\n\n get configuration(): ConfigurationType {\n return this.configurationData.configuration;\n }\n\n private checkShouldUpdate(skipChecks = false): boolean {\n const { featureFlags, experiments, configuration } = this.configurationData;\n const { updateInterval } = this.settings;\n\n // --- Note ---\n // Following `updateType` logic is done for client side\n // edge cases where we have previous campaigns on storage already, but we still want\n // to initialize SSE/Polling after page reload\n if (skipChecks) {\n this.updateType = UpdateType.Idle;\n\n return false;\n }\n\n this.updateType = configuration.realTimeUpdate\n ? UpdateType.RealTime\n : UpdateType.Polling;\n\n if (!featureFlags.length && !experiments.length) {\n return true;\n }\n\n const lastUpdateTime = this.lastUpdate.getTime();\n const updateWindowEdge = Date.now() - updateInterval;\n\n return lastUpdateTime < updateWindowEdge;\n }\n\n private cleanupOutdatedTargetingData(): void {\n const currentTime = Date.now();\n\n for (const [visitorCode, kameleoonVisitorData] of Object.entries(\n this.targetingData,\n )) {\n const { customData, ...rest } = kameleoonVisitorData;\n\n if (customData) {\n for (const [index, dataItem] of Object.entries(customData)) {\n if (dataItem) {\n const isDataExpired =\n dataItem.lastActivityTime + this.targetingDataLifetime <\n currentTime;\n const existingData = kameleoonVisitorData[KameleoonData.CustomData];\n\n if (isDataExpired && existingData) {\n delete existingData[Number(index)];\n }\n\n if (existingData && !Object.keys(existingData).length) {\n delete kameleoonVisitorData[KameleoonData.CustomData];\n }\n }\n }\n }\n\n for (const [key, dataItem] of Object.entries(rest)) {\n const isDataExpired =\n dataItem.lastActivityTime + this.targetingDataLifetime < currentTime;\n\n if (isDataExpired) {\n delete kameleoonVisitorData[key as KameleoonData];\n }\n }\n\n if (!Object.keys(this.targetingData[visitorCode]).length) {\n delete this.targetingData[visitorCode];\n }\n }\n\n // --- Note ---\n // `targetingData` should not refresh `lastUpdate` time\n this.updateStorageData(this.lastUpdate).throw();\n }\n\n private readStorageData(): void {\n const result = this.storage.read();\n\n if (result.ok) {\n const { kameleoonTargetingData, kameleoonConfiguration, lastUpdate } =\n result.data;\n\n this.configurationData = kameleoonConfiguration;\n this.targetingData = kameleoonTargetingData;\n this.lastUpdate = new Date(Date.parse(lastUpdate));\n }\n }\n\n private clearTargetingTrees(): void {\n this.targetingTrees.clear();\n }\n\n /**\n * Updates client configuration\n *\n * @param useCache - if true, will not update configuration if it is already present (for _offline_ mode)\n * @param timeStamp - timestamp for real-time configuration update\n *\n * @returns `true` if current update type should be toggled (SSE/Polling)\n */\n private async updateClientConfiguration({\n useCache = false,\n timeStamp,\n }: UpdateClientConfigurationParameters = {}): Promise<\n Result<boolean, KameleoonError>\n > {\n const clientConfigurationResult =\n await this.requester.getClientConfiguration(timeStamp);\n\n if (!clientConfigurationResult.ok) {\n const { featureFlags, experiments } = this.configurationData;\n\n if (useCache && featureFlags.length && experiments.length) {\n return Ok(true);\n }\n\n return clientConfigurationResult;\n }\n\n Utilities.sendOfflineTracking({\n storage: this.offlineTrackingStorage,\n requester: this.requester,\n });\n\n // --- Note ---\n // `featureFlags` field is omitted (v1)\n // instead `featureFlagConfigurations` is used (v2)\n const {\n configuration,\n experiments,\n featureFlagConfigurations,\n customData,\n } = clientConfigurationResult.data;\n\n this.configurationData = {\n configuration,\n experiments,\n featureFlags: featureFlagConfigurations,\n customData,\n };\n\n if (customData?.length) {\n const customDataLocalOnlyIndexes: number[] = [];\n const persistentCustomDataIndexes: number[] = [];\n\n customData.forEach((customData) => {\n if (customData.localOnly) {\n customDataLocalOnlyIndexes.push(customData.index);\n }\n\n if (customData.scope === CustomDataScope.Visitor) {\n persistentCustomDataIndexes.push(customData.index);\n }\n });\n\n if (customDataLocalOnlyIndexes.length) {\n this.localCustomDataIndexes = new Set(customDataLocalOnlyIndexes);\n }\n\n if (persistentCustomDataIndexes.length) {\n this.persistentCustomDataIndexes = new Set(persistentCustomDataIndexes);\n }\n }\n\n this.clearTargetingTrees();\n\n const result = this.updateStorageData(new Date());\n\n if (!result.ok) {\n return result;\n }\n\n const updateType = configuration.realTimeUpdate\n ? UpdateType.RealTime\n : UpdateType.Polling;\n\n const toggleUpdateType = updateType !== this.updateType;\n\n if (toggleUpdateType) {\n this.updateType = updateType;\n await this.initialize(useCache);\n }\n\n return Ok(toggleUpdateType);\n }\n\n private updateStorageData(lastUpdate: Date): Result<void, KameleoonError> {\n this.lastUpdate = lastUpdate;\n\n const data: ClientDataType = {\n kameleoonTargetingData: this.targetingData,\n kameleoonConfiguration: this.configurationData,\n lastUpdate: lastUpdate.toString(),\n };\n\n return this.storage.write(data);\n }\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"campaignConfiguration.js","names":["a","b","c","Object","defineProperty","value","enumerable","configurable","writable","e","f","prototype","d","g","create","h","m","s","i","type","arg","call","forEach","_invoke","j","k","_typeof","r","resolve","__await","then","Error","o","method","delegate","x","sent","_sent","dispatchException","abrupt","done","iterator","return","TypeError","resultName","next","nextLoc","tryLoc","catchLoc","finallyLoc","afterLoc","tryEntries","push","l","completion","reset","n","u","isNaN","length","_regeneratorRuntime","p","q","hasOwnProperty","t","Symbol","v","asyncIterator","w","toStringTag","wrap","y","z","getPrototypeOf","A","B","displayName","isGeneratorFunction","constructor","name","mark","setPrototypeOf","__proto__","awrap","AsyncIterator","async","Promise","keys","reverse","pop","values","prev","charAt","slice","stop","rval","complete","finish","catch","_catch","delegateYield","asyncGeneratorStep","_asyncToGenerator","arguments","apply","_classCallCheck","_defineProperties","_toPropertyKey","key","_createClass","_defineProperty","_toPrimitive","toPrimitive","String","Number","CampaignConfiguration","settings","storage","requester","externalClientConfiguration","targetingCleanupInterval","offlineTrackingStorage","externalEventSource","UpdateType","Idle","Map","DEFAULT_CONFIGURATION_DATA","CLEANUP_TARGETING_DATA_INTERVAL","Milliseconds","Minute","Set","lastUpdate","Date","readStorageData","targetingDataLifetime","cleanupIntervalMinutes","targetingDataIntervalId","setInterval","cleanupOutdatedTargetingData","bind","err","clearInterval","useCache","isExternalConfiguration","shouldUpdate","checkShouldUpdate","updateClientConfiguration","updateResult","ok","isUpdateTypeToggled","data","Ok","handleExternalUpdates","updateType","RealTime","eventSource","handleRealTimeUpdates","Polling","handlePollingUpdates","cleanupHandlers","close","updateConfigurationIntervalId","configuration","customData","experiments","featureFlagConfigurations","configurationData","featureFlags","ExternalEventSource","siteCode","updateEventCallback","timeStamp","configurationUpdateCallback","open","updateInterval","addTargetingData","visitorCode","targetingData","Array","dataItem","Utilities","isCustomData","_objectSpread","lastActivityTime","now","hasCustomDataKey","KameleoonData","CustomData","index","hasDataKey","result","updateStorageData","unsentTargetingData","localCustomDataIndexes","has","set","getUnsentData","clearUnsentData","dataItems","persistentCustomDataIndexes","size","persistentCustomData","_createForOfIteratorHelper","isPersistentCustomData","getTargetingTree","segment","targetingTrees","id","targetingTree","TargetingTree","get","onConfigurationUpdate","callback","skipChecks","realTimeUpdate","lastUpdateTime","getTime","updateWindowEdge","currentTime","entries","_slicedToArray","kameleoonVisitorData","rest","_objectWithoutProperties","_excluded","isDataExpired","existingData","throw","read","kameleoonTargetingData","kameleoonConfiguration","parse","clearTargetingTrees","clear","getClientConfiguration","clientConfigurationResult","sendOfflineTracking","customDataLocalOnlyIndexes","localOnly","scope","CustomDataScope","Visitor","toggleUpdateType","initialize","toString","write","exports"],"sources":["../../src/campaignConfiguration/campaignConfiguration.ts"],"sourcesContent":["import { Ok, Result } from 'ts-res';\nimport { KameleoonError } from 'src/kameleoonError/kameleoonError';\nimport { ClientSettingsType } from 'src/clientSettings/types';\nimport {\n CustomData,\n KameleoonData,\n KameleoonDataType,\n} from 'src/kameleoonData';\nimport { Requester, GetClientConfigurationResultType } from 'src/requester';\nimport { SegmentType, TargetingDataType, TargetingTree } from 'src/targeting';\nimport { ClientDataType } from 'src/storage';\nimport {\n ExternalEventSource,\n IEventSource,\n IExternalEventSourceConstructor,\n} from 'src/eventSource';\nimport { Milliseconds } from 'src/types';\nimport {\n CLEANUP_TARGETING_DATA_INTERVAL,\n DEFAULT_CONFIGURATION_DATA,\n} from './constants';\nimport {\n CampaignConfigurationParametersType,\n ConfigurationDataType,\n ConfigurationType,\n CustomDataScope,\n ExperimentItemType,\n FeatureFlagType,\n UnsentTargetingDataType,\n UnsentVisitorTargetingDataType,\n UpdateClientConfigurationParameters,\n UpdateType,\n} from './types';\nimport { Utilities } from 'src/utilities';\nimport {\n ExistingCustomDataType,\n ExistingDataType,\n} from 'src/kameleoonData/types';\nimport { IExternalStorage, OfflineTracking } from 'src/storage/types';\n\ninterface ICampaignConfiguration {\n initialize: (useCache?: boolean) => Promise<Result<void, KameleoonError>>;\n addTargetingData: (\n visitorCode: string,\n ...data: KameleoonDataType[]\n ) => Result<void, KameleoonError>;\n getUnsentData: (\n visitorCode: string,\n ) => UnsentTargetingDataType[string] | undefined;\n clearUnsentData: (visitorCode: string) => void;\n isPersistentCustomData: (dataItem: KameleoonDataType) => boolean;\n onConfigurationUpdate: (callback: () => void) => void;\n readonly experiments: ExperimentItemType[];\n readonly storedTargetingData: TargetingDataType;\n readonly featureFlags: FeatureFlagType[];\n readonly configuration: ConfigurationType;\n readonly unsentDataVisitors: string[];\n}\n\nexport class CampaignConfiguration implements ICampaignConfiguration {\n private configurationUpdateCallback?: () => void;\n private updateConfigurationIntervalId: NodeJS.Timer | null = null;\n private updateType: UpdateType = UpdateType.Idle;\n private targetingDataIntervalId: NodeJS.Timer | null = null;\n private unsentTargetingData: UnsentTargetingDataType = {};\n private targetingData: TargetingDataType = {};\n private targetingTrees: Map<string, TargetingTree> = new Map();\n private configurationData: ConfigurationDataType = DEFAULT_CONFIGURATION_DATA;\n private settings: ClientSettingsType;\n private lastUpdate: Date;\n private storage: IExternalStorage<ClientDataType>;\n private offlineTrackingStorage: IExternalStorage<OfflineTracking>;\n private requester: Requester;\n private eventSource?: IEventSource;\n private externalEventSource: IExternalEventSourceConstructor;\n private externalClientConfiguration?: GetClientConfigurationResultType;\n private targetingDataLifetime: number =\n CLEANUP_TARGETING_DATA_INTERVAL * Milliseconds.Minute;\n private localCustomDataIndexes: Set<number> = new Set();\n private persistentCustomDataIndexes: Set<number> = new Set();\n\n constructor({\n settings,\n storage,\n requester,\n externalClientConfiguration,\n targetingCleanupInterval,\n offlineTrackingStorage,\n externalEventSource,\n }: CampaignConfigurationParametersType) {\n this.requester = requester;\n this.settings = settings;\n this.lastUpdate = new Date();\n this.storage = storage;\n this.readStorageData();\n this.externalClientConfiguration = externalClientConfiguration;\n this.offlineTrackingStorage = offlineTrackingStorage;\n this.externalEventSource = externalEventSource;\n\n if (targetingCleanupInterval) {\n this.targetingDataLifetime =\n targetingCleanupInterval * Milliseconds.Minute;\n\n const cleanupIntervalMinutes =\n targetingCleanupInterval < 0 ? 1 : targetingCleanupInterval;\n\n // --- Note ---\n // We can not make delayed code execution recoverable, as it might lead\n // to targeting data storage size overflow\n try {\n this.targetingDataIntervalId = setInterval(\n this.cleanupOutdatedTargetingData.bind(this),\n cleanupIntervalMinutes * Milliseconds.Minute,\n );\n } catch (err) {\n if (this.targetingDataIntervalId) {\n clearInterval(this.targetingDataIntervalId);\n }\n\n throw err;\n }\n }\n }\n\n public async initialize(\n useCache?: boolean,\n ): Promise<Result<void, KameleoonError>> {\n const isExternalConfiguration = Boolean(this.externalClientConfiguration);\n const shouldUpdate = this.checkShouldUpdate(isExternalConfiguration);\n\n if (shouldUpdate) {\n const updateResult = await this.updateClientConfiguration({ useCache });\n\n if (!updateResult.ok) {\n return updateResult;\n }\n\n // --- Note ---\n // If update type is being toggled `initialize` will be called again\n // so we don't need to continue execution here\n const isUpdateTypeToggled = updateResult.data;\n\n if (isUpdateTypeToggled) {\n return Ok();\n }\n }\n\n if (isExternalConfiguration) {\n this.handleExternalUpdates();\n\n return Ok();\n }\n\n if (this.updateType === UpdateType.RealTime && !this.eventSource) {\n this.updateType = UpdateType.Idle;\n this.handleRealTimeUpdates(useCache);\n\n return Ok();\n }\n\n if (this.updateType === UpdateType.Polling) {\n this.handlePollingUpdates(useCache);\n }\n\n return Ok();\n }\n\n private cleanupHandlers(): void {\n if (this.eventSource) {\n this.eventSource.close();\n }\n\n if (this.updateConfigurationIntervalId) {\n clearInterval(this.updateConfigurationIntervalId);\n }\n }\n\n private handleExternalUpdates(): void {\n this.cleanupHandlers();\n\n const {\n configuration,\n customData,\n experiments,\n featureFlagConfigurations,\n } = this.externalClientConfiguration!;\n\n this.configurationData = {\n customData,\n configuration,\n experiments,\n featureFlags: featureFlagConfigurations,\n };\n }\n\n private handleRealTimeUpdates(useCache?: boolean): void {\n this.cleanupHandlers();\n\n this.eventSource = new ExternalEventSource(\n this.settings.siteCode,\n this.externalEventSource,\n );\n\n const updateEventCallback = (timeStamp: number) => {\n this.updateClientConfiguration({ useCache, timeStamp });\n\n if (this.configurationUpdateCallback) {\n this.configurationUpdateCallback();\n }\n };\n\n this.eventSource.open(updateEventCallback);\n }\n\n private handlePollingUpdates(useCache?: boolean): void {\n // --- Note ---\n // If `initialize` is called again the interval will be cleared\n // so theoretically we will constantly defer config update\n // but `this.lastUpdate` with `checkShouldUpdate` will prevent that\n this.cleanupHandlers();\n\n // --- Note ---\n // Same as targeting data interval we don't want to make failed configuration\n // retrieval recoverable\n try {\n this.updateConfigurationIntervalId = setInterval(\n () => this.updateClientConfiguration.bind(this)({ useCache }),\n this.settings.updateInterval,\n );\n } catch (err) {\n if (this.updateConfigurationIntervalId) {\n clearInterval(this.updateConfigurationIntervalId);\n }\n\n throw err;\n }\n }\n\n public addTargetingData(\n visitorCode: string,\n ...data: KameleoonDataType[]\n ): Result<void, KameleoonError> {\n if (!(visitorCode in this.targetingData)) {\n this.targetingData[visitorCode] = {};\n }\n\n // --- Note ---\n // Following code is optimized for performance:\n // - We don't want to copy the whole object every time we add new data\n // - So we are manually checking the keys existence and mutating targeting data directly\n // - Numerous type casts are required because we can't narrow down nested `this.targetingData` types by using assertion functions\n data.forEach((dataItem) => {\n // --- Custom data case ---\n if (Utilities.isCustomData(dataItem)) {\n const customData = {\n ...dataItem.data,\n lastActivityTime: Date.now(),\n };\n const hasCustomDataKey =\n KameleoonData.CustomData in this.targetingData[visitorCode];\n\n // -- Change directly if `[key]` exists\n if (hasCustomDataKey) {\n (\n this.targetingData[visitorCode][\n customData.type\n ] as ExistingCustomDataType\n )[customData.index] = customData;\n } else {\n // -- Change data by creating new `[key]` and `[index]`\n this.targetingData[visitorCode] = {\n ...this.targetingData[visitorCode],\n [customData.type]: {\n ...this.targetingData[visitorCode][customData.type],\n [customData.index]: customData,\n },\n };\n }\n // --- Other data types case ---\n } else {\n const data = { ...dataItem.data, lastActivityTime: Date.now() };\n const hasDataKey =\n dataItem.data.type in this.targetingData[visitorCode];\n\n // -- Changing data by `[key]` if it exists\n if (hasDataKey) {\n (this.targetingData[visitorCode][\n dataItem.data.type\n ] as ExistingDataType<typeof dataItem.data.type>) = data;\n } else {\n // -- Change data by creating new `[key]`\n this.targetingData[visitorCode] = {\n ...this.targetingData[visitorCode],\n [dataItem.data.type]: data,\n };\n }\n }\n });\n\n // --- Note ---\n // `targetingData` should not refresh `lastUpdate` time\n const result = this.updateStorageData(this.lastUpdate);\n\n if (result.ok) {\n data.forEach((dataItem) => {\n // --- Note ---\n // We assume `this.unsentTargetingData[visitorCode]` is always defined further in the code\n if (!this.unsentTargetingData[visitorCode]) {\n this.unsentTargetingData[visitorCode] = new Map();\n }\n\n let key: KameleoonData | number;\n\n if (Utilities.isCustomData(dataItem)) {\n if (this.localCustomDataIndexes.has(dataItem.data.index)) {\n return;\n }\n\n key = dataItem.data.index;\n } else {\n key = dataItem.data.type;\n }\n\n this.unsentTargetingData[visitorCode]!.set(key, dataItem);\n });\n }\n\n return result;\n }\n\n public getUnsentData(\n visitorCode: string,\n ): UnsentTargetingDataType[string] | undefined {\n return this.unsentTargetingData[visitorCode];\n }\n\n public clearUnsentData(visitorCode: string): void {\n const dataItems = this.unsentTargetingData[visitorCode]?.values();\n\n if (dataItems && this.persistentCustomDataIndexes.size) {\n const persistentCustomData: UnsentVisitorTargetingDataType = new Map();\n\n for (const dataItem of dataItems) {\n if (this.isPersistentCustomData(dataItem)) {\n persistentCustomData.set(dataItem.data.index, dataItem);\n }\n }\n\n if (persistentCustomData.size) {\n this.unsentTargetingData[visitorCode] = persistentCustomData;\n return;\n }\n }\n\n delete this.unsentTargetingData[visitorCode];\n }\n\n public getTargetingTree(segment: SegmentType): TargetingTree {\n if (!this.targetingTrees.has(segment.id)) {\n const targetingTree = new TargetingTree(segment);\n\n this.targetingTrees.set(segment.id, new TargetingTree(segment));\n\n return targetingTree;\n }\n\n return this.targetingTrees.get(segment.id) as TargetingTree;\n }\n\n public onConfigurationUpdate(callback: () => void): void {\n this.configurationUpdateCallback = callback;\n }\n\n public isPersistentCustomData(\n dataItem: KameleoonDataType,\n ): dataItem is CustomData {\n if (!this.persistentCustomDataIndexes.size) {\n return false;\n }\n\n if (Utilities.isCustomData(dataItem)) {\n return this.persistentCustomDataIndexes.has(dataItem.data.index);\n }\n\n return false;\n }\n\n get unsentDataVisitors(): string[] {\n return Object.keys(this.unsentTargetingData);\n }\n\n get storedTargetingData(): TargetingDataType {\n return this.targetingData;\n }\n\n get experiments(): ExperimentItemType[] {\n return this.configurationData.experiments;\n }\n\n get featureFlags(): FeatureFlagType[] {\n return this.configurationData.featureFlags;\n }\n\n get configuration(): ConfigurationType {\n return this.configurationData.configuration;\n }\n\n private checkShouldUpdate(skipChecks = false): boolean {\n const { featureFlags, experiments, configuration } = this.configurationData;\n const { updateInterval } = this.settings;\n\n // --- Note ---\n // Following `updateType` logic is done for client side\n // edge cases where we have previous campaigns on storage already, but we still want\n // to initialize SSE/Polling after page reload\n if (skipChecks) {\n this.updateType = UpdateType.Idle;\n\n return false;\n }\n\n this.updateType = configuration.realTimeUpdate\n ? UpdateType.RealTime\n : UpdateType.Polling;\n\n if (!featureFlags.length && !experiments.length) {\n return true;\n }\n\n const lastUpdateTime = this.lastUpdate.getTime();\n const updateWindowEdge = Date.now() - updateInterval;\n\n return lastUpdateTime < updateWindowEdge;\n }\n\n private cleanupOutdatedTargetingData(): void {\n const currentTime = Date.now();\n\n for (const [visitorCode, kameleoonVisitorData] of Object.entries(\n this.targetingData,\n )) {\n const { customData, ...rest } = kameleoonVisitorData;\n\n if (customData) {\n for (const [index, dataItem] of Object.entries(customData)) {\n if (dataItem) {\n const isDataExpired =\n dataItem.lastActivityTime + this.targetingDataLifetime <\n currentTime;\n const existingData = kameleoonVisitorData[KameleoonData.CustomData];\n\n if (isDataExpired && existingData) {\n delete existingData[Number(index)];\n }\n\n if (existingData && !Object.keys(existingData).length) {\n delete kameleoonVisitorData[KameleoonData.CustomData];\n }\n }\n }\n }\n\n for (const [key, dataItem] of Object.entries(rest)) {\n const isDataExpired =\n dataItem.lastActivityTime + this.targetingDataLifetime < currentTime;\n\n if (isDataExpired) {\n delete kameleoonVisitorData[key as KameleoonData];\n }\n }\n\n if (!Object.keys(this.targetingData[visitorCode]).length) {\n delete this.targetingData[visitorCode];\n }\n }\n\n // --- Note ---\n // `targetingData` should not refresh `lastUpdate` time\n this.updateStorageData(this.lastUpdate).throw();\n }\n\n private readStorageData(): void {\n const result = this.storage.read();\n\n if (result.ok) {\n const { kameleoonTargetingData, kameleoonConfiguration, lastUpdate } =\n result.data;\n\n this.configurationData = kameleoonConfiguration;\n this.targetingData = kameleoonTargetingData;\n this.lastUpdate = new Date(Date.parse(lastUpdate));\n }\n }\n\n private clearTargetingTrees(): void {\n this.targetingTrees.clear();\n }\n\n /**\n * Updates client configuration\n *\n * @param useCache - if true, will not update configuration if it is already present (for _offline_ mode)\n * @param timeStamp - timestamp for real-time configuration update\n *\n * @returns `true` if current update type should be toggled (SSE/Polling)\n */\n private async updateClientConfiguration({\n useCache = false,\n timeStamp,\n }: UpdateClientConfigurationParameters = {}): Promise<\n Result<boolean, KameleoonError>\n > {\n const clientConfigurationResult =\n await this.requester.getClientConfiguration(timeStamp);\n\n if (!clientConfigurationResult.ok) {\n const { featureFlags, experiments } = this.configurationData;\n\n if (useCache && featureFlags.length && experiments.length) {\n return Ok(true);\n }\n\n return clientConfigurationResult;\n }\n\n Utilities.sendOfflineTracking({\n storage: this.offlineTrackingStorage,\n requester: this.requester,\n });\n\n // --- Note ---\n // `featureFlags` field is omitted (v1)\n // instead `featureFlagConfigurations` is used (v2)\n const {\n configuration,\n experiments,\n featureFlagConfigurations,\n customData,\n } = clientConfigurationResult.data;\n\n this.configurationData = {\n configuration,\n experiments,\n featureFlags: featureFlagConfigurations,\n customData,\n };\n\n if (customData?.length) {\n const customDataLocalOnlyIndexes: number[] = [];\n const persistentCustomDataIndexes: number[] = [];\n\n customData.forEach((customData) => {\n if (customData.localOnly) {\n customDataLocalOnlyIndexes.push(customData.index);\n }\n\n if (customData.scope === CustomDataScope.Visitor) {\n persistentCustomDataIndexes.push(customData.index);\n }\n });\n\n if (customDataLocalOnlyIndexes.length) {\n this.localCustomDataIndexes = new Set(customDataLocalOnlyIndexes);\n }\n\n if (persistentCustomDataIndexes.length) {\n this.persistentCustomDataIndexes = new Set(persistentCustomDataIndexes);\n }\n }\n\n this.clearTargetingTrees();\n\n const result = this.updateStorageData(new Date());\n\n if (!result.ok) {\n return result;\n }\n\n const updateType = configuration.realTimeUpdate\n ? UpdateType.RealTime\n : UpdateType.Polling;\n\n const toggleUpdateType = updateType !== this.updateType;\n\n if (toggleUpdateType) {\n this.updateType = updateType;\n await this.initialize(useCache);\n }\n\n return Ok(toggleUpdateType);\n }\n\n private updateStorageData(lastUpdate: Date): Result<void, KameleoonError> {\n this.lastUpdate = lastUpdate;\n\n const data: ClientDataType = {\n kameleoonTargetingData: this.targetingData,\n kameleoonConfiguration: this.configurationData,\n lastUpdate: lastUpdate.toString(),\n };\n\n return this.storage.write(data);\n }\n}\n"],"mappings":"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"}
|
|
@@ -2,8 +2,8 @@ import { ClientSettingsType } from '../clientSettings';
|
|
|
2
2
|
import { IExternalEventSourceConstructor } from '../eventSource';
|
|
3
3
|
import { KameleoonData, KameleoonDataType } from '../kameleoonData';
|
|
4
4
|
import { Requester, GetClientConfigurationResultType } from '../requester';
|
|
5
|
-
import { ClientDataType
|
|
6
|
-
import { OfflineTracking } from '../storage/types';
|
|
5
|
+
import { ClientDataType } from '../storage';
|
|
6
|
+
import { IExternalStorage, OfflineTracking } from '../storage/types';
|
|
7
7
|
import { SegmentType, TargetingDataType } from '../targeting';
|
|
8
8
|
import { VariableType } from '../types';
|
|
9
9
|
export type UpdateClientConfigurationParameters = {
|
|
@@ -146,9 +146,9 @@ export type UnsentTargetingDataType = {
|
|
|
146
146
|
};
|
|
147
147
|
export type CampaignConfigurationParametersType = {
|
|
148
148
|
settings: ClientSettingsType;
|
|
149
|
-
storage:
|
|
149
|
+
storage: IExternalStorage<ClientDataType>;
|
|
150
150
|
requester: Requester;
|
|
151
|
-
offlineTrackingStorage:
|
|
151
|
+
offlineTrackingStorage: IExternalStorage<OfflineTracking>;
|
|
152
152
|
externalClientConfiguration?: GetClientConfigurationResultType;
|
|
153
153
|
externalEventSource: IExternalEventSourceConstructor;
|
|
154
154
|
targetingCleanupInterval?: number;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","names":["UpdateType","Polling","RealTime","Idle","exports","ExperimentType","CLASSIC","SERVER_SIDE","DEVELOPER","MVT","HYBRID","RuleType","PROGRESSIVE_DELIVERY","TARGETED_DELIVERY","EXPERIMENTATION","FeatureFlagSdkLanguageType","ANDROID","SWIFT","JAVA","CSHARP","NODEJS","PHP","RUBY","GO","FLUTTER","REACTJS","FeatureStatus","ACTIVATED","DEACTIVATED","SCHEDULED","CustomDataScope","Visit","Visitor","Page","ExperimentStatus","DRAFT","ACTIVE","PAUSED","STOPPED","USED_AS_PERSONALIZATION","DEVIATED"],"sources":["../../src/campaignConfiguration/types.ts"],"sourcesContent":["import { ClientSettingsType } from 'src/clientSettings';\nimport { IExternalEventSourceConstructor } from 'src/eventSource';\nimport { KameleoonData, KameleoonDataType } from 'src/kameleoonData';\nimport { Requester, GetClientConfigurationResultType } from 'src/requester';\nimport { ClientDataType
|
|
1
|
+
{"version":3,"file":"types.js","names":["UpdateType","Polling","RealTime","Idle","exports","ExperimentType","CLASSIC","SERVER_SIDE","DEVELOPER","MVT","HYBRID","RuleType","PROGRESSIVE_DELIVERY","TARGETED_DELIVERY","EXPERIMENTATION","FeatureFlagSdkLanguageType","ANDROID","SWIFT","JAVA","CSHARP","NODEJS","PHP","RUBY","GO","FLUTTER","REACTJS","FeatureStatus","ACTIVATED","DEACTIVATED","SCHEDULED","CustomDataScope","Visit","Visitor","Page","ExperimentStatus","DRAFT","ACTIVE","PAUSED","STOPPED","USED_AS_PERSONALIZATION","DEVIATED"],"sources":["../../src/campaignConfiguration/types.ts"],"sourcesContent":["import { ClientSettingsType } from 'src/clientSettings';\nimport { IExternalEventSourceConstructor } from 'src/eventSource';\nimport { KameleoonData, KameleoonDataType } from 'src/kameleoonData';\nimport { Requester, GetClientConfigurationResultType } from 'src/requester';\nimport { ClientDataType } from 'src/storage';\nimport { IExternalStorage, OfflineTracking } from 'src/storage/types';\nimport { SegmentType, TargetingDataType } from 'src/targeting';\nimport { VariableType } from 'src/types';\n\nexport type UpdateClientConfigurationParameters = {\n timeStamp?: number;\n useCache?: boolean;\n};\n\nexport type ScheduleType = {\n dateStart: string;\n dateEnd: string;\n};\n\nexport enum UpdateType {\n Polling,\n RealTime,\n Idle,\n}\n\nexport type JSONValue =\n | string\n | number\n | boolean\n | { [x: string]: JSONValue }\n | JSONValue[];\n\nexport type JSONType = Record<string | number | symbol, JSONValue> | null;\n\nexport enum ExperimentType {\n CLASSIC = 'CLASSIC',\n SERVER_SIDE = 'SERVER_SIDE',\n DEVELOPER = 'DEVELOPER',\n MVT = 'MVT',\n HYBRID = 'HYBRID',\n}\n\nexport enum RuleType {\n PROGRESSIVE_DELIVERY = 'PROGRESSIVE_DELIVERY',\n TARGETED_DELIVERY = 'TARGETED_DELIVERY',\n EXPERIMENTATION = 'EXPERIMENTATION',\n}\n\nexport enum FeatureFlagSdkLanguageType {\n ANDROID = 'ANDROID',\n SWIFT = 'SWIFT',\n JAVA = 'JAVA',\n CSHARP = 'CSHARP',\n NODEJS = 'NODEJS',\n PHP = 'PHP',\n RUBY = 'RUBY',\n GO = 'GO',\n FLUTTER = 'FLUTTER',\n REACTJS = 'REACTJS',\n}\n\nexport enum FeatureStatus {\n ACTIVATED = 'ACTIVATED',\n DEACTIVATED = 'DEACTIVATED',\n SCHEDULED = 'SCHEDULED',\n}\n\nexport enum CustomDataScope {\n Visit = 'VISIT',\n Visitor = 'VISITOR',\n Page = 'Page',\n}\n\nexport type ExperimentItemType = {\n id: string;\n name: string;\n type: ExperimentType;\n siteId: string;\n siteCode: string;\n status: ExperimentStatus;\n siteEnabled: boolean;\n variations: ExperimentVariationType[];\n deviations: DeviationType[];\n respoolTime: RespoolTimeType[];\n segment: SegmentType | null;\n};\n\nexport type ExperimentVariationType = {\n id: string;\n customJson: string;\n};\n\nexport type DeviationType = {\n variationId: string;\n value: number;\n};\n\nexport type RespoolTimeType = {\n variationId: string;\n value: number;\n};\n\nexport enum ExperimentStatus {\n DRAFT = 'DRAFT',\n ACTIVE = 'ACTIVE',\n PAUSED = 'PAUSED',\n SCHEDULED = 'SCHEDULED',\n STOPPED = 'STOPPED',\n USED_AS_PERSONALIZATION = 'USED_AS_PERSONALIZATION',\n DEVIATED = 'DEVIATED',\n}\n\nexport type FeatureFlagType = {\n id: number;\n featureKey: string;\n variations: FeatureVariationType[];\n defaultVariationKey: string;\n rules: RuleItemType[];\n};\n\nexport type FeatureVariationType = {\n key: string;\n variables: FeatureVariableType[];\n};\n\nexport type FeatureVariableType = {\n key: string;\n type: VariableType;\n value: string | number | boolean;\n};\n\nexport type RuleItemType = {\n type: RuleType;\n id: number;\n respoolTime: number | null;\n order: number;\n exposition: number;\n experimentId: number;\n variationByExposition: VariationByExpositionType[];\n segment: SegmentType | null;\n};\n\nexport type VariationByExpositionType = {\n variationKey: string;\n variationId: number | null;\n exposition: number;\n};\n\nexport type ConfigurationDataType = {\n experiments: ExperimentItemType[];\n featureFlags: FeatureFlagType[];\n configuration: ConfigurationType;\n customData: CustomDataConfigurationType[];\n};\n\nexport type CustomDataConfigurationType = {\n index: number;\n localOnly: boolean;\n scope: CustomDataScope;\n};\n\nexport type ConfigurationType = {\n realTimeUpdate: boolean;\n};\n\nexport type CampaignConfigurationType = {\n targetingData: TargetingDataType;\n configurationData: ConfigurationDataType;\n};\n\nexport type UnsentVisitorTargetingDataType = Map<\n KameleoonData | number,\n KameleoonDataType\n>;\n\nexport type UnsentTargetingDataType = {\n [visitorCode: string]: UnsentVisitorTargetingDataType | undefined;\n};\n\nexport type CampaignConfigurationParametersType = {\n settings: ClientSettingsType;\n storage: IExternalStorage<ClientDataType>;\n requester: Requester;\n offlineTrackingStorage: IExternalStorage<OfflineTracking>;\n externalClientConfiguration?: GetClientConfigurationResultType;\n externalEventSource: IExternalEventSourceConstructor;\n targetingCleanupInterval?: number;\n};\n"],"mappings":"mPAmBY,CAAAA,UAAU,uBAAVA,CAAU,QAAV,CAAAA,CAAU,CAAVA,CAAU,CAAAC,OAAA,cAAVD,CAAU,CAAVA,CAAU,CAAAE,QAAA,eAAVF,CAAU,CAAVA,CAAU,CAAAG,IAAA,WAAVH,CAAU,MAAAI,OAAA,CAAAJ,UAAA,CAAAA,UAAA,IAeV,CAAAK,cAAc,uBAAdA,CAAc,QAAd,CAAAA,CAAc,CAAAC,OAAA,WAAdD,CAAc,CAAAE,WAAA,eAAdF,CAAc,CAAAG,SAAA,aAAdH,CAAc,CAAAI,GAAA,OAAdJ,CAAc,CAAAK,MAAA,UAAdL,CAAc,MAAAD,OAAA,CAAAC,cAAA,CAAAA,cAAA,IAQd,CAAAM,QAAQ,uBAARA,CAAQ,QAAR,CAAAA,CAAQ,CAAAC,oBAAA,wBAARD,CAAQ,CAAAE,iBAAA,qBAARF,CAAQ,CAAAG,eAAA,mBAARH,CAAQ,MAAAP,OAAA,CAAAO,QAAA,CAAAA,QAAA,IAMR,CAAAI,0BAA0B,uBAA1BA,CAA0B,QAA1B,CAAAA,CAA0B,CAAAC,OAAA,WAA1BD,CAA0B,CAAAE,KAAA,SAA1BF,CAA0B,CAAAG,IAAA,QAA1BH,CAA0B,CAAAI,MAAA,UAA1BJ,CAA0B,CAAAK,MAAA,UAA1BL,CAA0B,CAAAM,GAAA,OAA1BN,CAA0B,CAAAO,IAAA,QAA1BP,CAA0B,CAAAQ,EAAA,MAA1BR,CAA0B,CAAAS,OAAA,WAA1BT,CAA0B,CAAAU,OAAA,WAA1BV,CAA0B,MAAAX,OAAA,CAAAW,0BAAA,CAAAA,0BAAA,IAa1B,CAAAW,aAAa,uBAAbA,CAAa,QAAb,CAAAA,CAAa,CAAAC,SAAA,aAAbD,CAAa,CAAAE,WAAA,eAAbF,CAAa,CAAAG,SAAA,aAAbH,CAAa,MAAAtB,OAAA,CAAAsB,aAAA,CAAAA,aAAA,IAMb,CAAAI,eAAe,uBAAfA,CAAe,QAAf,CAAAA,CAAe,CAAAC,KAAA,SAAfD,CAAe,CAAAE,OAAA,WAAfF,CAAe,CAAAG,IAAA,QAAfH,CAAe,MAAA1B,OAAA,CAAA0B,eAAA,CAAAA,eAAA,IAmCf,CAAAI,gBAAgB,uBAAhBA,CAAgB,QAAhB,CAAAA,CAAgB,CAAAC,KAAA,SAAhBD,CAAgB,CAAAE,MAAA,UAAhBF,CAAgB,CAAAG,MAAA,UAAhBH,CAAgB,CAAAL,SAAA,aAAhBK,CAAgB,CAAAI,OAAA,WAAhBJ,CAAgB,CAAAK,uBAAA,2BAAhBL,CAAgB,CAAAM,QAAA,YAAhBN,CAAgB,MAAA9B,OAAA,CAAA8B,gBAAA,CAAAA,gBAAA"}
|
package/dist/index.d.ts
CHANGED
|
@@ -2,7 +2,7 @@ export { Ok, Result, Err } from 'ts-res';
|
|
|
2
2
|
export { KameleoonClient as KameleoonCore, IKameleoonClient as IKameleoonCore, } from './kameleoonClient';
|
|
3
3
|
export { KameleoonUtils as KameleoonCoreUtils } from './kameleoonUtils';
|
|
4
4
|
export { KameleoonException, KameleoonError } from './kameleoonError';
|
|
5
|
-
export { KameleoonStorageKey, IExternalStorage, IExternalStorageConstructor, } from './storage';
|
|
5
|
+
export { KameleoonStorageKey, ExperimentVariationsType, StorageDataType, IExternalStorage, IExternalStorageConstructor, } from './storage';
|
|
6
6
|
export { Cookie, VISITOR_CODE_LENGTH, SdkLanguageType } from './constants';
|
|
7
7
|
export { CLEANUP_TARGETING_DATA_INTERVAL } from './campaignConfiguration';
|
|
8
8
|
export { JSONType } from './campaignConfiguration';
|
package/dist/index.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),Object.defineProperty(exports,"Browser",{enumerable:!0,get:function get(){return _kameleoonData.Browser}}),Object.defineProperty(exports,"BrowserType",{enumerable:!0,get:function get(){return _kameleoonData.BrowserType}}),Object.defineProperty(exports,"CLEANUP_TARGETING_DATA_INTERVAL",{enumerable:!0,get:function get(){return _campaignConfiguration.CLEANUP_TARGETING_DATA_INTERVAL}}),Object.defineProperty(exports,"ClientGetVisitorCodeParametersType",{enumerable:!0,get:function get(){return _types.ClientGetVisitorCodeParametersType}}),Object.defineProperty(exports,"Conversion",{enumerable:!0,get:function get(){return _kameleoonData.Conversion}}),Object.defineProperty(exports,"ConversionParametersType",{enumerable:!0,get:function get(){return _kameleoonData.ConversionParametersType}}),Object.defineProperty(exports,"Cookie",{enumerable:!0,get:function get(){return _constants.Cookie}}),Object.defineProperty(exports,"CustomData",{enumerable:!0,get:function get(){return _kameleoonData.CustomData}}),Object.defineProperty(exports,"Device",{enumerable:!0,get:function get(){return _kameleoonData.Device}}),Object.defineProperty(exports,"DeviceType",{enumerable:!0,get:function get(){return _kameleoonData.DeviceType}}),Object.defineProperty(exports,"Environment",{enumerable:!0,get:function get(){return _types.Environment}}),Object.defineProperty(exports,"Err",{enumerable:!0,get:function get(){return _tsRes.Err}}),Object.defineProperty(exports,"EventSourceOpenParametersType",{enumerable:!0,get:function get(){return _eventSource.EventSourceOpenParametersType}}),Object.defineProperty(exports,"ExperimentType",{enumerable:!0,get:function get(){return _types.ExperimentType}}),Object.defineProperty(exports,"ExternalPackageInfoType",{enumerable:!0,get:function get(){return _types.ExternalPackageInfoType}}),Object.defineProperty(exports,"FeatureFlagType",{enumerable:!0,get:function get(){return _types.FeatureFlagType}}),Object.defineProperty(exports,"FeatureVariableResultType",{enumerable:!0,get:function get(){return _types.FeatureVariableResultType}}),Object.defineProperty(exports,"GetClientConfigurationResultType",{enumerable:!0,get:function get(){return _requester.GetClientConfigurationResultType}}),Object.defineProperty(exports,"GetFeatureFlagVariableParamsType",{enumerable:!0,get:function get(){return _types.GetFeatureFlagVariableParamsType}}),Object.defineProperty(exports,"Header",{enumerable:!0,get:function get(){return _requester.Header}}),Object.defineProperty(exports,"HttpMethod",{enumerable:!0,get:function get(){return _requester.HttpMethod}}),Object.defineProperty(exports,"IExternalEventSource",{enumerable:!0,get:function get(){return _eventSource.IExternalEventSource}}),Object.defineProperty(exports,"IExternalEventSourceConstructor",{enumerable:!0,get:function get(){return _eventSource.IExternalEventSourceConstructor}}),Object.defineProperty(exports,"IExternalRequestDispatcher",{enumerable:!0,get:function get(){return _requester.IExternalRequestDispatcher}}),Object.defineProperty(exports,"IExternalStorage",{enumerable:!0,get:function get(){return _storage.IExternalStorage}}),Object.defineProperty(exports,"IExternalStorageConstructor",{enumerable:!0,get:function get(){return _storage.IExternalStorageConstructor}}),Object.defineProperty(exports,"IKameleoonCore",{enumerable:!0,get:function get(){return _kameleoonClient.IKameleoonClient}}),Object.defineProperty(exports,"InternalSDKConfigurationType",{enumerable:!0,get:function get(){return _types.InternalSDKConfigurationType}}),Object.defineProperty(exports,"JSONType",{enumerable:!0,get:function get(){return _campaignConfiguration.JSONType}}),Object.defineProperty(exports,"KameleoonCore",{enumerable:!0,get:function get(){return _kameleoonClient.KameleoonClient}}),Object.defineProperty(exports,"KameleoonCoreUtils",{enumerable:!0,get:function get(){return _kameleoonUtils.KameleoonUtils}}),Object.defineProperty(exports,"KameleoonData",{enumerable:!0,get:function get(){return _kameleoonData.KameleoonData}}),Object.defineProperty(exports,"KameleoonDataType",{enumerable:!0,get:function get(){return _kameleoonData.KameleoonDataType}}),Object.defineProperty(exports,"KameleoonError",{enumerable:!0,get:function get(){return _kameleoonError.KameleoonError}}),Object.defineProperty(exports,"KameleoonException",{enumerable:!0,get:function get(){return _kameleoonError.KameleoonException}}),Object.defineProperty(exports,"KameleoonStorageKey",{enumerable:!0,get:function get(){return _storage.KameleoonStorageKey}}),Object.defineProperty(exports,"Milliseconds",{enumerable:!0,get:function get(){return _types.Milliseconds}}),Object.defineProperty(exports,"MobileGetVisitorCodeParametersType",{enumerable:!0,get:function get(){return _types.MobileGetVisitorCodeParametersType}}),Object.defineProperty(exports,"Ok",{enumerable:!0,get:function get(){return _tsRes.Ok}}),Object.defineProperty(exports,"PageView",{enumerable:!0,get:function get(){return _kameleoonData.PageView}}),Object.defineProperty(exports,"PageViewParametersType",{enumerable:!0,get:function get(){return _kameleoonData.PageViewParametersType}}),Object.defineProperty(exports,"RealTimeEventType",{enumerable:!0,get:function get(){return _eventSource.RealTimeEventType}}),Object.defineProperty(exports,"Result",{enumerable:!0,get:function get(){return _tsRes.Result}}),Object.defineProperty(exports,"SDKConfigurationType",{enumerable:!0,get:function get(){return _types.SDKConfigurationType}}),Object.defineProperty(exports,"SDKCoreParameters",{enumerable:!0,get:function get(){return _types.SDKCoreParameters}}),Object.defineProperty(exports,"SdkLanguageType",{enumerable:!0,get:function get(){return _constants.SdkLanguageType}}),Object.defineProperty(exports,"ServerGetVisitorCodeParametersType",{enumerable:!0,get:function get(){return _types.ServerGetVisitorCodeParametersType}}),Object.defineProperty(exports,"TrackConversionParamsType",{enumerable:!0,get:function get(){return _types.TrackConversionParamsType}}),Object.defineProperty(exports,"TrackParametersType",{enumerable:!0,get:function get(){return _requester.TrackParametersType}}),Object.defineProperty(exports,"UserAgent",{enumerable:!0,get:function get(){return _kameleoonData.UserAgent}}),Object.defineProperty(exports,"VISITOR_CODE_LENGTH",{enumerable:!0,get:function get(){return _constants.VISITOR_CODE_LENGTH}}),Object.defineProperty(exports,"VariableType",{enumerable:!0,get:function get(){return _types.VariableType}});var _tsRes=require("ts-res"),_kameleoonClient=require("./kameleoonClient"),_kameleoonUtils=require("./kameleoonUtils"),_kameleoonError=require("./kameleoonError"),_storage=require("./storage"),_constants=require("./constants"),_campaignConfiguration=require("./campaignConfiguration"),_types=require("./types"),_kameleoonData=require("./kameleoonData"),_eventSource=require("./eventSource"),_requester=require("./requester");
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),Object.defineProperty(exports,"Browser",{enumerable:!0,get:function get(){return _kameleoonData.Browser}}),Object.defineProperty(exports,"BrowserType",{enumerable:!0,get:function get(){return _kameleoonData.BrowserType}}),Object.defineProperty(exports,"CLEANUP_TARGETING_DATA_INTERVAL",{enumerable:!0,get:function get(){return _campaignConfiguration.CLEANUP_TARGETING_DATA_INTERVAL}}),Object.defineProperty(exports,"ClientGetVisitorCodeParametersType",{enumerable:!0,get:function get(){return _types.ClientGetVisitorCodeParametersType}}),Object.defineProperty(exports,"Conversion",{enumerable:!0,get:function get(){return _kameleoonData.Conversion}}),Object.defineProperty(exports,"ConversionParametersType",{enumerable:!0,get:function get(){return _kameleoonData.ConversionParametersType}}),Object.defineProperty(exports,"Cookie",{enumerable:!0,get:function get(){return _constants.Cookie}}),Object.defineProperty(exports,"CustomData",{enumerable:!0,get:function get(){return _kameleoonData.CustomData}}),Object.defineProperty(exports,"Device",{enumerable:!0,get:function get(){return _kameleoonData.Device}}),Object.defineProperty(exports,"DeviceType",{enumerable:!0,get:function get(){return _kameleoonData.DeviceType}}),Object.defineProperty(exports,"Environment",{enumerable:!0,get:function get(){return _types.Environment}}),Object.defineProperty(exports,"Err",{enumerable:!0,get:function get(){return _tsRes.Err}}),Object.defineProperty(exports,"EventSourceOpenParametersType",{enumerable:!0,get:function get(){return _eventSource.EventSourceOpenParametersType}}),Object.defineProperty(exports,"ExperimentType",{enumerable:!0,get:function get(){return _types.ExperimentType}}),Object.defineProperty(exports,"ExperimentVariationsType",{enumerable:!0,get:function get(){return _storage.ExperimentVariationsType}}),Object.defineProperty(exports,"ExternalPackageInfoType",{enumerable:!0,get:function get(){return _types.ExternalPackageInfoType}}),Object.defineProperty(exports,"FeatureFlagType",{enumerable:!0,get:function get(){return _types.FeatureFlagType}}),Object.defineProperty(exports,"FeatureVariableResultType",{enumerable:!0,get:function get(){return _types.FeatureVariableResultType}}),Object.defineProperty(exports,"GetClientConfigurationResultType",{enumerable:!0,get:function get(){return _requester.GetClientConfigurationResultType}}),Object.defineProperty(exports,"GetFeatureFlagVariableParamsType",{enumerable:!0,get:function get(){return _types.GetFeatureFlagVariableParamsType}}),Object.defineProperty(exports,"Header",{enumerable:!0,get:function get(){return _requester.Header}}),Object.defineProperty(exports,"HttpMethod",{enumerable:!0,get:function get(){return _requester.HttpMethod}}),Object.defineProperty(exports,"IExternalEventSource",{enumerable:!0,get:function get(){return _eventSource.IExternalEventSource}}),Object.defineProperty(exports,"IExternalEventSourceConstructor",{enumerable:!0,get:function get(){return _eventSource.IExternalEventSourceConstructor}}),Object.defineProperty(exports,"IExternalRequestDispatcher",{enumerable:!0,get:function get(){return _requester.IExternalRequestDispatcher}}),Object.defineProperty(exports,"IExternalStorage",{enumerable:!0,get:function get(){return _storage.IExternalStorage}}),Object.defineProperty(exports,"IExternalStorageConstructor",{enumerable:!0,get:function get(){return _storage.IExternalStorageConstructor}}),Object.defineProperty(exports,"IKameleoonCore",{enumerable:!0,get:function get(){return _kameleoonClient.IKameleoonClient}}),Object.defineProperty(exports,"InternalSDKConfigurationType",{enumerable:!0,get:function get(){return _types.InternalSDKConfigurationType}}),Object.defineProperty(exports,"JSONType",{enumerable:!0,get:function get(){return _campaignConfiguration.JSONType}}),Object.defineProperty(exports,"KameleoonCore",{enumerable:!0,get:function get(){return _kameleoonClient.KameleoonClient}}),Object.defineProperty(exports,"KameleoonCoreUtils",{enumerable:!0,get:function get(){return _kameleoonUtils.KameleoonUtils}}),Object.defineProperty(exports,"KameleoonData",{enumerable:!0,get:function get(){return _kameleoonData.KameleoonData}}),Object.defineProperty(exports,"KameleoonDataType",{enumerable:!0,get:function get(){return _kameleoonData.KameleoonDataType}}),Object.defineProperty(exports,"KameleoonError",{enumerable:!0,get:function get(){return _kameleoonError.KameleoonError}}),Object.defineProperty(exports,"KameleoonException",{enumerable:!0,get:function get(){return _kameleoonError.KameleoonException}}),Object.defineProperty(exports,"KameleoonStorageKey",{enumerable:!0,get:function get(){return _storage.KameleoonStorageKey}}),Object.defineProperty(exports,"Milliseconds",{enumerable:!0,get:function get(){return _types.Milliseconds}}),Object.defineProperty(exports,"MobileGetVisitorCodeParametersType",{enumerable:!0,get:function get(){return _types.MobileGetVisitorCodeParametersType}}),Object.defineProperty(exports,"Ok",{enumerable:!0,get:function get(){return _tsRes.Ok}}),Object.defineProperty(exports,"PageView",{enumerable:!0,get:function get(){return _kameleoonData.PageView}}),Object.defineProperty(exports,"PageViewParametersType",{enumerable:!0,get:function get(){return _kameleoonData.PageViewParametersType}}),Object.defineProperty(exports,"RealTimeEventType",{enumerable:!0,get:function get(){return _eventSource.RealTimeEventType}}),Object.defineProperty(exports,"Result",{enumerable:!0,get:function get(){return _tsRes.Result}}),Object.defineProperty(exports,"SDKConfigurationType",{enumerable:!0,get:function get(){return _types.SDKConfigurationType}}),Object.defineProperty(exports,"SDKCoreParameters",{enumerable:!0,get:function get(){return _types.SDKCoreParameters}}),Object.defineProperty(exports,"SdkLanguageType",{enumerable:!0,get:function get(){return _constants.SdkLanguageType}}),Object.defineProperty(exports,"ServerGetVisitorCodeParametersType",{enumerable:!0,get:function get(){return _types.ServerGetVisitorCodeParametersType}}),Object.defineProperty(exports,"StorageDataType",{enumerable:!0,get:function get(){return _storage.StorageDataType}}),Object.defineProperty(exports,"TrackConversionParamsType",{enumerable:!0,get:function get(){return _types.TrackConversionParamsType}}),Object.defineProperty(exports,"TrackParametersType",{enumerable:!0,get:function get(){return _requester.TrackParametersType}}),Object.defineProperty(exports,"UserAgent",{enumerable:!0,get:function get(){return _kameleoonData.UserAgent}}),Object.defineProperty(exports,"VISITOR_CODE_LENGTH",{enumerable:!0,get:function get(){return _constants.VISITOR_CODE_LENGTH}}),Object.defineProperty(exports,"VariableType",{enumerable:!0,get:function get(){return _types.VariableType}});var _tsRes=require("ts-res"),_kameleoonClient=require("./kameleoonClient"),_kameleoonUtils=require("./kameleoonUtils"),_kameleoonError=require("./kameleoonError"),_storage=require("./storage"),_constants=require("./constants"),_campaignConfiguration=require("./campaignConfiguration"),_types=require("./types"),_kameleoonData=require("./kameleoonData"),_eventSource=require("./eventSource"),_requester=require("./requester");
|
|
2
2
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","names":[],"sources":["../src/index.ts"],"sourcesContent":["export { Ok, Result, Err } from 'ts-res';\nexport {\n KameleoonClient as KameleoonCore,\n IKameleoonClient as IKameleoonCore,\n} from './kameleoonClient';\nexport { KameleoonUtils as KameleoonCoreUtils } from './kameleoonUtils';\nexport { KameleoonException, KameleoonError } from './kameleoonError';\nexport {\n KameleoonStorageKey,\n IExternalStorage,\n IExternalStorageConstructor,\n} from './storage';\nexport { Cookie, VISITOR_CODE_LENGTH, SdkLanguageType } from './constants';\nexport { CLEANUP_TARGETING_DATA_INTERVAL } from './campaignConfiguration';\nexport { JSONType } from './campaignConfiguration';\nexport {\n Environment,\n VariableType,\n ExperimentType,\n FeatureFlagType,\n SDKCoreParameters,\n SDKConfigurationType,\n ExternalPackageInfoType,\n TrackConversionParamsType,\n FeatureVariableResultType,\n InternalSDKConfigurationType,\n GetFeatureFlagVariableParamsType,\n ServerGetVisitorCodeParametersType,\n ClientGetVisitorCodeParametersType,\n MobileGetVisitorCodeParametersType,\n Milliseconds,\n} from './types';\nexport {\n CustomData,\n Conversion,\n Device,\n Browser,\n UserAgent,\n DeviceType,\n BrowserType,\n PageView,\n KameleoonData,\n KameleoonDataType,\n PageViewParametersType,\n ConversionParametersType,\n} from './kameleoonData';\nexport {\n RealTimeEventType,\n IExternalEventSource,\n EventSourceOpenParametersType,\n IExternalEventSourceConstructor,\n} from './eventSource';\nexport {\n Header,\n HttpMethod,\n TrackParametersType,\n IExternalRequestDispatcher,\n GetClientConfigurationResultType,\n} from './requester';\n"],"mappings":""}
|
|
1
|
+
{"version":3,"file":"index.js","names":[],"sources":["../src/index.ts"],"sourcesContent":["export { Ok, Result, Err } from 'ts-res';\nexport {\n KameleoonClient as KameleoonCore,\n IKameleoonClient as IKameleoonCore,\n} from './kameleoonClient';\nexport { KameleoonUtils as KameleoonCoreUtils } from './kameleoonUtils';\nexport { KameleoonException, KameleoonError } from './kameleoonError';\nexport {\n KameleoonStorageKey,\n ExperimentVariationsType,\n StorageDataType,\n IExternalStorage,\n IExternalStorageConstructor,\n} from './storage';\nexport { Cookie, VISITOR_CODE_LENGTH, SdkLanguageType } from './constants';\nexport { CLEANUP_TARGETING_DATA_INTERVAL } from './campaignConfiguration';\nexport { JSONType } from './campaignConfiguration';\nexport {\n Environment,\n VariableType,\n ExperimentType,\n FeatureFlagType,\n SDKCoreParameters,\n SDKConfigurationType,\n ExternalPackageInfoType,\n TrackConversionParamsType,\n FeatureVariableResultType,\n InternalSDKConfigurationType,\n GetFeatureFlagVariableParamsType,\n ServerGetVisitorCodeParametersType,\n ClientGetVisitorCodeParametersType,\n MobileGetVisitorCodeParametersType,\n Milliseconds,\n} from './types';\nexport {\n CustomData,\n Conversion,\n Device,\n Browser,\n UserAgent,\n DeviceType,\n BrowserType,\n PageView,\n KameleoonData,\n KameleoonDataType,\n PageViewParametersType,\n ConversionParametersType,\n} from './kameleoonData';\nexport {\n RealTimeEventType,\n IExternalEventSource,\n EventSourceOpenParametersType,\n IExternalEventSourceConstructor,\n} from './eventSource';\nexport {\n Header,\n HttpMethod,\n TrackParametersType,\n IExternalRequestDispatcher,\n GetClientConfigurationResultType,\n} from './requester';\n"],"mappings":""}
|
package/dist/kameleoonClient.js
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.KameleoonClient=void 0;var _tsRes=require("ts-res"),_cacheManager=require("./cacheManager"),_campaignConfiguration=require("./campaignConfiguration"),_clientSettings=require("./clientSettings"),_constants=require("./constants"),_kameleoonData=require("./kameleoonData"),_kameleoonError=require("./kameleoonError"),_requester=require("./requester"),_storage=require("./storage"),_externalStorage=require("./storage/externalStorage"),_utilities=require("./utilities"),_variationConfiguration=require("./variationConfiguration");function _typeof(a){"@babel/helpers - typeof";return _typeof="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(a){return typeof a}:function(a){return a&&"function"==typeof Symbol&&a.constructor===Symbol&&a!==Symbol.prototype?"symbol":typeof a},_typeof(a)}function _createForOfIteratorHelper(a,b){var c="undefined"!=typeof Symbol&&a[Symbol.iterator]||a["@@iterator"];if(!c){if(Array.isArray(a)||(c=_unsupportedIterableToArray(a))||b&&a&&"number"==typeof a.length){c&&(a=c);var d=0,e=function(){};return{s:e,n:function n(){return d>=a.length?{done:!0}:{done:!1,value:a[d++]}},e:function e(a){throw a},f:e}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var f,g=!0,h=!1;return{s:function s(){c=c.call(a)},n:function n(){var a=c.next();return g=a.done,a},e:function e(a){h=!0,f=a},f:function f(){try{g||null==c.return||c.return()}finally{if(h)throw f}}}}function _unsupportedIterableToArray(a,b){if(a){if("string"==typeof a)return _arrayLikeToArray(a,b);var c=Object.prototype.toString.call(a).slice(8,-1);return"Object"===c&&a.constructor&&(c=a.constructor.name),"Map"===c||"Set"===c?Array.from(a):"Arguments"===c||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(c)?_arrayLikeToArray(a,b):void 0}}function _arrayLikeToArray(a,b){(null==b||b>a.length)&&(b=a.length);for(var c=0,d=Array(b);c<b;c++)d[c]=a[c];return d}function _regeneratorRuntime(){"use strict";/*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/facebook/regenerator/blob/main/LICENSE */function a(a,b,c){return Object.defineProperty(a,b,{value:c,enumerable:!0,configurable:!0,writable:!0}),a[b]}function b(a,b,c,e){var f=b&&b.prototype instanceof d?b:d,g=Object.create(f.prototype),h=new m(e||[]);return s(g,"_invoke",{value:i(a,c,h)}),g}function c(a,b,c){try{return{type:"normal",arg:a.call(b,c)}}catch(a){return{type:"throw",arg:a}}}function d(){}function e(){}function f(){}function g(b){["next","throw","return"].forEach(function(c){a(b,c,function(a){return this._invoke(c,a)})})}function h(a,b){function d(e,f,g,h){var i=c(a[e],a,f);if("throw"!==i.type){var j=i.arg,k=j.value;return k&&"object"==_typeof(k)&&r.call(k,"__await")?b.resolve(k.__await).then(function(a){d("next",a,g,h)},function(a){d("throw",a,g,h)}):b.resolve(k).then(function(a){j.value=a,g(j)},function(a){return d("throw",a,g,h)})}h(i.arg)}var e;s(this,"_invoke",{value:function value(a,c){function f(){return new b(function(b,e){d(a,c,b,e)})}return e=e?e.then(f,f):f()}})}function i(a,b,d){var e="suspendedStart";return function(f,g){if("executing"==e)throw new Error("Generator is already running");if("completed"==e){if("throw"===f)throw g;return o()}for(d.method=f,d.arg=g;;){var h=d.delegate;if(h){var i=j(h,d);if(i){if(i===x)continue;return i}}if("next"===d.method)d.sent=d._sent=d.arg;else if("throw"===d.method){if("suspendedStart"==e)throw e="completed",d.arg;d.dispatchException(d.arg)}else"return"===d.method&&d.abrupt("return",d.arg);e="executing";var k=c(a,b,d);if("normal"===k.type){if(e=d.done?"completed":"suspendedYield",k.arg===x)continue;return{value:k.arg,done:d.done}}"throw"===k.type&&(e="completed",d.method="throw",d.arg=k.arg)}}}function j(a,b){var d=b.method,e=a.iterator[d];if(void 0===e)return b.delegate=null,"throw"===d&&a.iterator.return&&(b.method="return",b.arg=void 0,j(a,b),"throw"===b.method)||"return"!==d&&(b.method="throw",b.arg=new TypeError("The iterator does not provide a '"+d+"' method")),x;var f=c(e,a.iterator,b.arg);if("throw"===f.type)return b.method="throw",b.arg=f.arg,b.delegate=null,x;var g=f.arg;return g?g.done?(b[a.resultName]=g.value,b.next=a.nextLoc,"return"!==b.method&&(b.method="next",b.arg=void 0),b.delegate=null,x):g:(b.method="throw",b.arg=new TypeError("iterator result is not an object"),b.delegate=null,x)}function k(a){var b={tryLoc:a[0]};1 in a&&(b.catchLoc=a[1]),2 in a&&(b.finallyLoc=a[2],b.afterLoc=a[3]),this.tryEntries.push(b)}function l(a){var b=a.completion||{};b.type="normal",delete b.arg,a.completion=b}function m(a){this.tryEntries=[{tryLoc:"root"}],a.forEach(k,this),this.reset(!0)}function n(a){if(a){var b=a[u];if(b)return b.call(a);if("function"==typeof a.next)return a;if(!isNaN(a.length)){var c=-1,d=function b(){for(;++c<a.length;)if(r.call(a,c))return b.value=a[c],b.done=!1,b;return b.value=void 0,b.done=!0,b};return d.next=d}}return{next:o}}function o(){return{value:void 0,done:!0}}_regeneratorRuntime=function(){return p};var p={},q=Object.prototype,r=q.hasOwnProperty,s=Object.defineProperty||function(a,b,c){a[b]=c.value},t="function"==typeof Symbol?Symbol:{},u=t.iterator||"@@iterator",v=t.asyncIterator||"@@asyncIterator",w=t.toStringTag||"@@toStringTag";try{a({},"")}catch(b){a=function(a,b,c){return a[b]=c}}p.wrap=b;var x={},y={};a(y,u,function(){return this});var z=Object.getPrototypeOf,A=z&&z(z(n([])));A&&A!==q&&r.call(A,u)&&(y=A);var B=f.prototype=d.prototype=Object.create(y);return e.prototype=f,s(B,"constructor",{value:f,configurable:!0}),s(f,"constructor",{value:e,configurable:!0}),e.displayName=a(f,w,"GeneratorFunction"),p.isGeneratorFunction=function(a){var b="function"==typeof a&&a.constructor;return!!b&&(b===e||"GeneratorFunction"===(b.displayName||b.name))},p.mark=function(b){return Object.setPrototypeOf?Object.setPrototypeOf(b,f):(b.__proto__=f,a(b,w,"GeneratorFunction")),b.prototype=Object.create(B),b},p.awrap=function(a){return{__await:a}},g(h.prototype),a(h.prototype,v,function(){return this}),p.AsyncIterator=h,p.async=function(a,c,d,e,f){void 0===f&&(f=Promise);var g=new h(b(a,c,d,e),f);return p.isGeneratorFunction(c)?g:g.next().then(function(a){return a.done?a.value:g.next()})},g(B),a(B,w,"Generator"),a(B,u,function(){return this}),a(B,"toString",function(){return"[object Generator]"}),p.keys=function(a){var b=Object(a),c=[];for(var d in b)c.push(d);return c.reverse(),function a(){for(;c.length;){var d=c.pop();if(d in b)return a.value=d,a.done=!1,a}return a.done=!0,a}},p.values=n,m.prototype={constructor:m,reset:function reset(a){if(this.prev=0,this.next=0,this.sent=this._sent=void 0,this.done=!1,this.delegate=null,this.method="next",this.arg=void 0,this.tryEntries.forEach(l),!a)for(var b in this)"t"===b.charAt(0)&&r.call(this,b)&&!isNaN(+b.slice(1))&&(this[b]=void 0)},stop:function stop(){this.done=!0;var a=this.tryEntries[0].completion;if("throw"===a.type)throw a.arg;return this.rval},dispatchException:function dispatchException(a){function b(b,d){return f.type="throw",f.arg=a,c.next=b,d&&(c.method="next",c.arg=void 0),!!d}if(this.done)throw a;for(var c=this,d=this.tryEntries.length-1;0<=d;--d){var e=this.tryEntries[d],f=e.completion;if("root"===e.tryLoc)return b("end");if(e.tryLoc<=this.prev){var g=r.call(e,"catchLoc"),h=r.call(e,"finallyLoc");if(g&&h){if(this.prev<e.catchLoc)return b(e.catchLoc,!0);if(this.prev<e.finallyLoc)return b(e.finallyLoc)}else if(!g){if(!h)throw new Error("try statement without catch or finally");if(this.prev<e.finallyLoc)return b(e.finallyLoc)}else if(this.prev<e.catchLoc)return b(e.catchLoc,!0)}}},abrupt:function abrupt(a,b){for(var c,d=this.tryEntries.length-1;0<=d;--d)if(c=this.tryEntries[d],c.tryLoc<=this.prev&&r.call(c,"finallyLoc")&&this.prev<c.finallyLoc){var e=c;break}e&&("break"===a||"continue"===a)&&e.tryLoc<=b&&b<=e.finallyLoc&&(e=null);var f=e?e.completion:{};return f.type=a,f.arg=b,e?(this.method="next",this.next=e.finallyLoc,x):this.complete(f)},complete:function complete(a,b){if("throw"===a.type)throw a.arg;return"break"===a.type||"continue"===a.type?this.next=a.arg:"return"===a.type?(this.rval=this.arg=a.arg,this.method="return",this.next="end"):"normal"===a.type&&b&&(this.next=b),x},finish:function finish(a){for(var b,c=this.tryEntries.length-1;0<=c;--c)if(b=this.tryEntries[c],b.finallyLoc===a)return this.complete(b.completion,b.afterLoc),l(b),x},catch:function _catch(a){for(var b,c=this.tryEntries.length-1;0<=c;--c)if(b=this.tryEntries[c],b.tryLoc===a){var d=b.completion;if("throw"===d.type){var e=d.arg;l(b)}return e}throw new Error("illegal catch attempt")},delegateYield:function delegateYield(a,b,c){return this.delegate={iterator:n(a),resultName:b,nextLoc:c},"next"===this.method&&(this.arg=void 0),x}},p}function asyncGeneratorStep(a,b,c,d,e,f,g){try{var h=a[f](g),i=h.value}catch(a){return void c(a)}h.done?b(i):Promise.resolve(i).then(d,e)}function _asyncToGenerator(a){return function(){var b=this,c=arguments;return new Promise(function(d,e){function f(a){asyncGeneratorStep(h,d,e,f,g,"next",a)}function g(a){asyncGeneratorStep(h,d,e,f,g,"throw",a)}var h=a.apply(b,c);f(void 0)})}}function _classCallCheck(a,b){if(!(a instanceof b))throw new TypeError("Cannot call a class as a function")}function _defineProperties(a,b){for(var c,d=0;d<b.length;d++)c=b[d],c.enumerable=c.enumerable||!1,c.configurable=!0,"value"in c&&(c.writable=!0),Object.defineProperty(a,_toPropertyKey(c.key),c)}function _createClass(a,b,c){return b&&_defineProperties(a.prototype,b),c&&_defineProperties(a,c),Object.defineProperty(a,"prototype",{writable:!1}),a}function _defineProperty(a,b,c){return b=_toPropertyKey(b),b in a?Object.defineProperty(a,b,{value:c,enumerable:!0,configurable:!0,writable:!0}):a[b]=c,a}function _toPropertyKey(a){var b=_toPrimitive(a,"string");return"symbol"===_typeof(b)?b:b+""}function _toPrimitive(a,b){if("object"!==_typeof(a)||null===a)return a;var c=a[Symbol.toPrimitive];if(c!==void 0){var d=c.call(a,b||"default");if("object"!==_typeof(d))return d;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===b?String:Number)(a)}/**
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.KameleoonClient=void 0;var _tsRes=require("ts-res"),_cacheManager=require("./cacheManager"),_campaignConfiguration=require("./campaignConfiguration"),_clientSettings=require("./clientSettings"),_constants=require("./constants"),_kameleoonData=require("./kameleoonData"),_kameleoonError=require("./kameleoonError"),_requester=require("./requester"),_storage=require("./storage"),_utilities=require("./utilities"),_variationConfiguration=require("./variationConfiguration");function _typeof(a){"@babel/helpers - typeof";return _typeof="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(a){return typeof a}:function(a){return a&&"function"==typeof Symbol&&a.constructor===Symbol&&a!==Symbol.prototype?"symbol":typeof a},_typeof(a)}function _createForOfIteratorHelper(a,b){var c="undefined"!=typeof Symbol&&a[Symbol.iterator]||a["@@iterator"];if(!c){if(Array.isArray(a)||(c=_unsupportedIterableToArray(a))||b&&a&&"number"==typeof a.length){c&&(a=c);var d=0,e=function(){};return{s:e,n:function n(){return d>=a.length?{done:!0}:{done:!1,value:a[d++]}},e:function e(a){throw a},f:e}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var f,g=!0,h=!1;return{s:function s(){c=c.call(a)},n:function n(){var a=c.next();return g=a.done,a},e:function e(a){h=!0,f=a},f:function f(){try{g||null==c.return||c.return()}finally{if(h)throw f}}}}function _unsupportedIterableToArray(a,b){if(a){if("string"==typeof a)return _arrayLikeToArray(a,b);var c=Object.prototype.toString.call(a).slice(8,-1);return"Object"===c&&a.constructor&&(c=a.constructor.name),"Map"===c||"Set"===c?Array.from(a):"Arguments"===c||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(c)?_arrayLikeToArray(a,b):void 0}}function _arrayLikeToArray(a,b){(null==b||b>a.length)&&(b=a.length);for(var c=0,d=Array(b);c<b;c++)d[c]=a[c];return d}function _regeneratorRuntime(){"use strict";/*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/facebook/regenerator/blob/main/LICENSE */function a(a,b,c){return Object.defineProperty(a,b,{value:c,enumerable:!0,configurable:!0,writable:!0}),a[b]}function b(a,b,c,e){var f=b&&b.prototype instanceof d?b:d,g=Object.create(f.prototype),h=new m(e||[]);return s(g,"_invoke",{value:i(a,c,h)}),g}function c(a,b,c){try{return{type:"normal",arg:a.call(b,c)}}catch(a){return{type:"throw",arg:a}}}function d(){}function e(){}function f(){}function g(b){["next","throw","return"].forEach(function(c){a(b,c,function(a){return this._invoke(c,a)})})}function h(a,b){function d(e,f,g,h){var i=c(a[e],a,f);if("throw"!==i.type){var j=i.arg,k=j.value;return k&&"object"==_typeof(k)&&r.call(k,"__await")?b.resolve(k.__await).then(function(a){d("next",a,g,h)},function(a){d("throw",a,g,h)}):b.resolve(k).then(function(a){j.value=a,g(j)},function(a){return d("throw",a,g,h)})}h(i.arg)}var e;s(this,"_invoke",{value:function value(a,c){function f(){return new b(function(b,e){d(a,c,b,e)})}return e=e?e.then(f,f):f()}})}function i(a,b,d){var e="suspendedStart";return function(f,g){if("executing"==e)throw new Error("Generator is already running");if("completed"==e){if("throw"===f)throw g;return o()}for(d.method=f,d.arg=g;;){var h=d.delegate;if(h){var i=j(h,d);if(i){if(i===x)continue;return i}}if("next"===d.method)d.sent=d._sent=d.arg;else if("throw"===d.method){if("suspendedStart"==e)throw e="completed",d.arg;d.dispatchException(d.arg)}else"return"===d.method&&d.abrupt("return",d.arg);e="executing";var k=c(a,b,d);if("normal"===k.type){if(e=d.done?"completed":"suspendedYield",k.arg===x)continue;return{value:k.arg,done:d.done}}"throw"===k.type&&(e="completed",d.method="throw",d.arg=k.arg)}}}function j(a,b){var d=b.method,e=a.iterator[d];if(void 0===e)return b.delegate=null,"throw"===d&&a.iterator.return&&(b.method="return",b.arg=void 0,j(a,b),"throw"===b.method)||"return"!==d&&(b.method="throw",b.arg=new TypeError("The iterator does not provide a '"+d+"' method")),x;var f=c(e,a.iterator,b.arg);if("throw"===f.type)return b.method="throw",b.arg=f.arg,b.delegate=null,x;var g=f.arg;return g?g.done?(b[a.resultName]=g.value,b.next=a.nextLoc,"return"!==b.method&&(b.method="next",b.arg=void 0),b.delegate=null,x):g:(b.method="throw",b.arg=new TypeError("iterator result is not an object"),b.delegate=null,x)}function k(a){var b={tryLoc:a[0]};1 in a&&(b.catchLoc=a[1]),2 in a&&(b.finallyLoc=a[2],b.afterLoc=a[3]),this.tryEntries.push(b)}function l(a){var b=a.completion||{};b.type="normal",delete b.arg,a.completion=b}function m(a){this.tryEntries=[{tryLoc:"root"}],a.forEach(k,this),this.reset(!0)}function n(a){if(a){var b=a[u];if(b)return b.call(a);if("function"==typeof a.next)return a;if(!isNaN(a.length)){var c=-1,d=function b(){for(;++c<a.length;)if(r.call(a,c))return b.value=a[c],b.done=!1,b;return b.value=void 0,b.done=!0,b};return d.next=d}}return{next:o}}function o(){return{value:void 0,done:!0}}_regeneratorRuntime=function(){return p};var p={},q=Object.prototype,r=q.hasOwnProperty,s=Object.defineProperty||function(a,b,c){a[b]=c.value},t="function"==typeof Symbol?Symbol:{},u=t.iterator||"@@iterator",v=t.asyncIterator||"@@asyncIterator",w=t.toStringTag||"@@toStringTag";try{a({},"")}catch(b){a=function(a,b,c){return a[b]=c}}p.wrap=b;var x={},y={};a(y,u,function(){return this});var z=Object.getPrototypeOf,A=z&&z(z(n([])));A&&A!==q&&r.call(A,u)&&(y=A);var B=f.prototype=d.prototype=Object.create(y);return e.prototype=f,s(B,"constructor",{value:f,configurable:!0}),s(f,"constructor",{value:e,configurable:!0}),e.displayName=a(f,w,"GeneratorFunction"),p.isGeneratorFunction=function(a){var b="function"==typeof a&&a.constructor;return!!b&&(b===e||"GeneratorFunction"===(b.displayName||b.name))},p.mark=function(b){return Object.setPrototypeOf?Object.setPrototypeOf(b,f):(b.__proto__=f,a(b,w,"GeneratorFunction")),b.prototype=Object.create(B),b},p.awrap=function(a){return{__await:a}},g(h.prototype),a(h.prototype,v,function(){return this}),p.AsyncIterator=h,p.async=function(a,c,d,e,f){void 0===f&&(f=Promise);var g=new h(b(a,c,d,e),f);return p.isGeneratorFunction(c)?g:g.next().then(function(a){return a.done?a.value:g.next()})},g(B),a(B,w,"Generator"),a(B,u,function(){return this}),a(B,"toString",function(){return"[object Generator]"}),p.keys=function(a){var b=Object(a),c=[];for(var d in b)c.push(d);return c.reverse(),function a(){for(;c.length;){var d=c.pop();if(d in b)return a.value=d,a.done=!1,a}return a.done=!0,a}},p.values=n,m.prototype={constructor:m,reset:function reset(a){if(this.prev=0,this.next=0,this.sent=this._sent=void 0,this.done=!1,this.delegate=null,this.method="next",this.arg=void 0,this.tryEntries.forEach(l),!a)for(var b in this)"t"===b.charAt(0)&&r.call(this,b)&&!isNaN(+b.slice(1))&&(this[b]=void 0)},stop:function stop(){this.done=!0;var a=this.tryEntries[0].completion;if("throw"===a.type)throw a.arg;return this.rval},dispatchException:function dispatchException(a){function b(b,d){return f.type="throw",f.arg=a,c.next=b,d&&(c.method="next",c.arg=void 0),!!d}if(this.done)throw a;for(var c=this,d=this.tryEntries.length-1;0<=d;--d){var e=this.tryEntries[d],f=e.completion;if("root"===e.tryLoc)return b("end");if(e.tryLoc<=this.prev){var g=r.call(e,"catchLoc"),h=r.call(e,"finallyLoc");if(g&&h){if(this.prev<e.catchLoc)return b(e.catchLoc,!0);if(this.prev<e.finallyLoc)return b(e.finallyLoc)}else if(!g){if(!h)throw new Error("try statement without catch or finally");if(this.prev<e.finallyLoc)return b(e.finallyLoc)}else if(this.prev<e.catchLoc)return b(e.catchLoc,!0)}}},abrupt:function abrupt(a,b){for(var c,d=this.tryEntries.length-1;0<=d;--d)if(c=this.tryEntries[d],c.tryLoc<=this.prev&&r.call(c,"finallyLoc")&&this.prev<c.finallyLoc){var e=c;break}e&&("break"===a||"continue"===a)&&e.tryLoc<=b&&b<=e.finallyLoc&&(e=null);var f=e?e.completion:{};return f.type=a,f.arg=b,e?(this.method="next",this.next=e.finallyLoc,x):this.complete(f)},complete:function complete(a,b){if("throw"===a.type)throw a.arg;return"break"===a.type||"continue"===a.type?this.next=a.arg:"return"===a.type?(this.rval=this.arg=a.arg,this.method="return",this.next="end"):"normal"===a.type&&b&&(this.next=b),x},finish:function finish(a){for(var b,c=this.tryEntries.length-1;0<=c;--c)if(b=this.tryEntries[c],b.finallyLoc===a)return this.complete(b.completion,b.afterLoc),l(b),x},catch:function _catch(a){for(var b,c=this.tryEntries.length-1;0<=c;--c)if(b=this.tryEntries[c],b.tryLoc===a){var d=b.completion;if("throw"===d.type){var e=d.arg;l(b)}return e}throw new Error("illegal catch attempt")},delegateYield:function delegateYield(a,b,c){return this.delegate={iterator:n(a),resultName:b,nextLoc:c},"next"===this.method&&(this.arg=void 0),x}},p}function asyncGeneratorStep(a,b,c,d,e,f,g){try{var h=a[f](g),i=h.value}catch(a){return void c(a)}h.done?b(i):Promise.resolve(i).then(d,e)}function _asyncToGenerator(a){return function(){var b=this,c=arguments;return new Promise(function(d,e){function f(a){asyncGeneratorStep(h,d,e,f,g,"next",a)}function g(a){asyncGeneratorStep(h,d,e,f,g,"throw",a)}var h=a.apply(b,c);f(void 0)})}}function _classCallCheck(a,b){if(!(a instanceof b))throw new TypeError("Cannot call a class as a function")}function _defineProperties(a,b){for(var c,d=0;d<b.length;d++)c=b[d],c.enumerable=c.enumerable||!1,c.configurable=!0,"value"in c&&(c.writable=!0),Object.defineProperty(a,_toPropertyKey(c.key),c)}function _createClass(a,b,c){return b&&_defineProperties(a.prototype,b),c&&_defineProperties(a,c),Object.defineProperty(a,"prototype",{writable:!1}),a}function _defineProperty(a,b,c){return b=_toPropertyKey(b),b in a?Object.defineProperty(a,b,{value:c,enumerable:!0,configurable:!0,writable:!0}):a[b]=c,a}function _toPropertyKey(a){var b=_toPrimitive(a,"string");return"symbol"===_typeof(b)?b:b+""}function _toPrimitive(a,b){if("object"!==_typeof(a)||null===a)return a;var c=a[Symbol.toPrimitive];if(c!==void 0){var d=c.call(a,b||"default");if("object"!==_typeof(d))return d;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===b?String:Number)(a)}/**
|
|
2
2
|
* @class
|
|
3
3
|
* KameleoonClient - a class for creating kameleoon client instance
|
|
4
4
|
* for communicating with Kameleoon JavaScript SDK Core, when new instance is created
|
|
5
5
|
*/var KameleoonClient=/*#__PURE__*/function(){/**
|
|
6
6
|
* @param {SDKCoreParameters} sdkCoreParameters - parameters for initializing sdk core
|
|
7
|
-
*/function a(b){var c=b.siteCode,d=b.configuration,e=b.internalConfiguration;_classCallCheck(this,a),_defineProperty(this,"variationConfiguration",void 0),_defineProperty(this,"campaignConfiguration",void 0),_defineProperty(this,"variationDataStorage",void 0),_defineProperty(this,"offlineTrackingStorage",void 0),_defineProperty(this,"trackingCache",void 0),_defineProperty(this,"requester",void 0),_defineProperty(this,"externalPackageInfo",void 0),_defineProperty(this,"isOfflineModeOn",void 0);var f=new _clientSettings.ClientSettings(c,d),g=f.settings,h=e.externalStorage,i=e.externalEventSource,j=e.externalPackageInfo,k=e.externalRequestDispatcher,l=e.externalClientConfiguration,m=new _requester.Requester({siteCode:c,environment:g.environment,packageInfo:j,requestDispatcher:k}),n=new _cacheManager.CacheManager(_constants.CACHE_CLEANUP_TIMEOUT),o=
|
|
7
|
+
*/function a(b){var c=b.siteCode,d=b.configuration,e=b.internalConfiguration;_classCallCheck(this,a),_defineProperty(this,"variationConfiguration",void 0),_defineProperty(this,"campaignConfiguration",void 0),_defineProperty(this,"variationDataStorage",void 0),_defineProperty(this,"offlineTrackingStorage",void 0),_defineProperty(this,"trackingCache",void 0),_defineProperty(this,"requester",void 0),_defineProperty(this,"externalPackageInfo",void 0),_defineProperty(this,"isOfflineModeOn",void 0);var f=new _clientSettings.ClientSettings(c,d),g=f.settings,h=e.externalStorage,i=e.externalEventSource,j=e.externalPackageInfo,k=e.externalRequestDispatcher,l=e.externalClientConfiguration,m=new _requester.Requester({siteCode:c,environment:g.environment,packageInfo:j,requestDispatcher:k}),n=new _cacheManager.CacheManager(_constants.CACHE_CLEANUP_TIMEOUT),o=h.initialize(_storage.KameleoonStorageKey.ClientData),p=h.initialize(_storage.KameleoonStorageKey.VariationData),q=h.initialize(_storage.KameleoonStorageKey.OfflineTracking),r=new _campaignConfiguration.CampaignConfiguration({settings:g,storage:o,requester:m,externalClientConfiguration:l,targetingCleanupInterval:null===d||void 0===d?void 0:d.targetingDataCleanupInterval,offlineTrackingStorage:q,externalEventSource:i});this.requester=m,this.trackingCache=n,this.campaignConfiguration=r,this.variationDataStorage=p,this.externalPackageInfo=j,this.offlineTrackingStorage=q}return _createClass(a,[{key:"initialize",value:function(){function a(){return b.apply(this,arguments)}var b=_asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function b(a){var c,d;return _regeneratorRuntime().wrap(function e(b){for(;1;)switch(b.prev=b.next){case 0:return b.next=2,this.campaignConfiguration.initialize(a);case 2:return c=b.sent,c.throw(),d=new _variationConfiguration.VariationConfiguration(this.campaignConfiguration.experiments,this.variationDataStorage),this.variationConfiguration=d,this.isOfflineModeOn=a,b.abrupt("return",c.ok);case 8:case"end":return b.stop();}},b,this)}));return a}()},{key:"addData",value:function addData(a){var b;if(_utilities.Utilities.validateVisitorCode(a).throw(),!this.campaignConfiguration)throw new _kameleoonError.KameleoonError(_kameleoonError.KameleoonException.Initialization);for(var c=arguments.length,d=Array(1<c?c-1:0),e=1;e<c;e++)d[e-1]=arguments[e];(b=this.campaignConfiguration).addTargetingData.apply(b,[a].concat(d)).throw()}},{key:"getRemoteVisitorData",value:function(){function a(a){return b.apply(this,arguments)}var b=_asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function b(a){var c,d,e,f,g,h,i,j=arguments;return _regeneratorRuntime().wrap(function k(b){for(;1;)switch(b.prev=b.next){case 0:return c=!(1<j.length&&void 0!==j[1])||j[1],b.next=3,this.requester.getVisitorData(a);case 3:d=b.sent,e=d.throw(),f=_utilities.Utilities.parseVisitorData(e),g=_createForOfIteratorHelper(f);try{for(g.s();!(h=g.n()).done;)i=h.value,(c||this.campaignConfiguration.isPersistentCustomData(i))&&this.addData(a,i)}catch(a){g.e(a)}finally{g.f()}return b.abrupt("return",f);case 9:case"end":return b.stop();}},b,this)}));return a}()},{key:"triggerExperiment",value:function triggerExperiment(a,b){var c=this;if(_utilities.Utilities.validateVisitorCode(a).throw(),!this.campaignConfiguration||!this.variationConfiguration)throw new _kameleoonError.KameleoonError(_kameleoonError.KameleoonException.Initialization);var d=this.campaignConfiguration.experiments.find(function(a){return a.id===b+""});if(!d)throw new _kameleoonError.KameleoonError(_kameleoonError.KameleoonException.ExperimentConfigurationNotFound,b,a);var e=this.campaignConfiguration.storedTargetingData[a],f=_constants.UNALLOCATED_VARIATION_ID,g=_utilities.Utilities.checkTargeting({visitorCode:a,experimentId:b,targetingData:e,segment:d.segment,campaignConfiguration:this.campaignConfiguration,variationConfiguration:this.variationConfiguration,packageInfo:this.externalPackageInfo}).throw();if(f=this.variationConfiguration.getAssociatedVariationId(a,b).else(function(d){if(d.type===_kameleoonError.KameleoonException.NotAllocated)return _utilities.Utilities.trackExperiment({requester:c.requester,campaignConfiguration:c.campaignConfiguration,isUnallocated:!0,variationId:f,visitorCode:a,experimentId:b,isOfflineModeOn:c.isOfflineModeOn,offlineTrackingStorage:c.offlineTrackingStorage}),_constants.UNALLOCATED_VARIATION_ID;throw d}),_utilities.Utilities.trackExperiment({requester:this.requester,campaignConfiguration:this.campaignConfiguration,isUnallocated:!1,variationId:f,visitorCode:a,experimentId:b,isOfflineModeOn:this.isOfflineModeOn,offlineTrackingStorage:this.offlineTrackingStorage}),!g)throw new _kameleoonError.KameleoonError(_kameleoonError.KameleoonException.NotTargeted,a);return _utilities.Utilities.updateCache({cacheManager:this.trackingCache,visitorCode:a,experimentId:b,variationId:f}),f}},{key:"trackConversion",value:function trackConversion(a){var b=a.visitorCode,c=a.goalId,d=a.revenue;this.addData(b,new _kameleoonData.Conversion({goalId:c,revenue:d})),this.flush(b)}},{key:"flush",value:function flush(a){if(!this.campaignConfiguration)throw new _kameleoonError.KameleoonError(_kameleoonError.KameleoonException.Initialization);if("string"==typeof a&&_utilities.Utilities.validateVisitorCode(a).throw(),a)return void _utilities.Utilities.trackData({visitorCode:a,campaignConfiguration:this.campaignConfiguration,requester:this.requester,isOfflineModeOn:this.isOfflineModeOn,offlineTrackingStorage:this.offlineTrackingStorage});// --- Note ---
|
|
8
8
|
// `Utilities.trackData` executes `Utilities.sendOfflineTracking` asynchronously at first, but
|
|
9
9
|
// we need to execute `Utilities.sendOfflineTracking` even if calling `Utilities.trackData` is skipped
|
|
10
10
|
// due to lack of unsent data
|