@kameleoon/javascript-sdk-core 3.0.0 → 3.2.0
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/clientConfiguration/clientConfiguration.d.ts +4 -1
- package/dist/clientConfiguration/clientConfiguration.js +1 -1
- package/dist/clientConfiguration/clientConfiguration.js.map +1 -1
- package/dist/clientConfiguration/constants.js +1 -1
- package/dist/clientConfiguration/constants.js.map +1 -1
- package/dist/clientConfiguration/index.d.ts +1 -1
- package/dist/clientConfiguration/index.js +1 -1
- package/dist/clientConfiguration/index.js.map +1 -1
- package/dist/clientConfiguration/types.d.ts +13 -4
- package/dist/clientConfiguration/types.js +1 -1
- package/dist/clientConfiguration/types.js.map +1 -1
- package/dist/constants.js +1 -1
- package/dist/constants.js.map +1 -1
- package/dist/cookieManager/cookieManager.d.ts +16 -0
- package/dist/cookieManager/cookieManager.js +2 -0
- package/dist/cookieManager/cookieManager.js.map +1 -0
- package/dist/cookieManager/index.d.ts +1 -0
- package/dist/cookieManager/index.js +2 -0
- package/dist/cookieManager/index.js.map +1 -0
- package/dist/hasher/hasher.d.ts +1 -1
- package/dist/hasher/hasher.js +1 -1
- package/dist/hasher/hasher.js.map +1 -1
- package/dist/hasher/types.d.ts +1 -1
- package/dist/hasher/types.js.map +1 -1
- package/dist/index.d.ts +4 -3
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/kameleoonClient.d.ts +32 -1
- package/dist/kameleoonClient.js +1 -1
- package/dist/kameleoonClient.js.map +1 -1
- package/dist/kameleoonData/customData.d.ts +6 -0
- package/dist/kameleoonData/customData.js +1 -1
- package/dist/kameleoonData/customData.js.map +1 -1
- package/dist/kameleoonData/dataManager.d.ts +4 -1
- package/dist/kameleoonData/dataManager.js +1 -1
- package/dist/kameleoonData/dataManager.js.map +1 -1
- package/dist/kameleoonData/pageView.js +1 -1
- package/dist/kameleoonData/pageView.js.map +1 -1
- package/dist/kameleoonData/types.d.ts +1 -0
- package/dist/kameleoonData/types.js.map +1 -1
- package/dist/kameleoonError/constants.d.ts +1 -0
- package/dist/kameleoonError/constants.js +1 -1
- package/dist/kameleoonError/constants.js.map +1 -1
- package/dist/kameleoonError/kameleoonError.d.ts +2 -1
- package/dist/kameleoonError/kameleoonError.js +1 -1
- package/dist/kameleoonError/kameleoonError.js.map +1 -1
- package/dist/kameleoonError/types.d.ts +1 -0
- package/dist/kameleoonError/types.js +1 -1
- package/dist/kameleoonError/types.js.map +1 -1
- package/dist/kameleoonUtils.d.ts +0 -6
- package/dist/kameleoonUtils.js +1 -1
- package/dist/kameleoonUtils.js.map +1 -1
- package/dist/requester/constants.d.ts +3 -2
- package/dist/requester/constants.js +1 -1
- package/dist/requester/constants.js.map +1 -1
- package/dist/requester/index.d.ts +2 -2
- package/dist/requester/index.js +1 -1
- package/dist/requester/index.js.map +1 -1
- package/dist/requester/requester.d.ts +5 -5
- package/dist/requester/requester.js +1 -1
- package/dist/requester/requester.js.map +1 -1
- package/dist/requester/types.d.ts +8 -6
- package/dist/requester/types.js +1 -1
- package/dist/requester/types.js.map +1 -1
- package/dist/storage/constants.d.ts +2 -1
- package/dist/storage/constants.js +1 -1
- package/dist/storage/constants.js.map +1 -1
- package/dist/storage/types.d.ts +10 -1
- package/dist/storage/types.js.map +1 -1
- package/dist/types.d.ts +46 -14
- package/dist/types.js.map +1 -1
- package/dist/utilities/types.d.ts +12 -2
- package/dist/utilities/types.js.map +1 -1
- package/dist/utilities/utilities.d.ts +10 -4
- package/dist/utilities/utilities.js +1 -1
- package/dist/utilities/utilities.js.map +1 -1
- package/dist/variationConfiguration/types.d.ts +2 -0
- package/dist/variationConfiguration/types.js.map +1 -1
- package/dist/variationConfiguration/variationConfiguration.d.ts +1 -1
- package/dist/variationConfiguration/variationConfiguration.js +1 -1
- package/dist/variationConfiguration/variationConfiguration.js.map +1 -1
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utilities.js","names":["Utilities","a","_classCallCheck","_createClass","key","value","checkTargeting","segment","visitorCode","targetingData","experimentId","variationConfiguration","clientConfiguration","packageInfo","dataManager","conditionsData","firstLevel","length","Ok","Err","KameleoonError","KameleoonException","Initialization","variations","assignedVariationsResult","getStoredVariations","ok","data","targetingTree","getTree","trees","segments","ruleMap","hasTargetingType","TargetingType","SEGMENT","TARGET_FEATURE_FLAG","result","evaluate","variationData","sdkInfo","validateVisitorCode","VisitorCodeEmpty","VISITOR_CODE_MAX_LENGTH","VisitorCodeMaxLength","getDataUrl","updateUrl","url","resultUrl","UrlParameter","Nonce","getNonce","unsentData","getUnsentData","size","g","h","_createForOfIteratorHelper","values","s","n","done","item","Array","isArray","forEach","arrayItem","e","f","b","apply","arguments","_asyncToGenerator","_regeneratorRuntime","mark","c","d","i","j","k","l","m","o","p","q","wrap","r","prev","next","featureFlagVariation","requester","isOfflineModeOn","offlineTrackingStorage","variationId","rule","userAgent","getUserAgent","dataUrl","resultVariationId","isUnallocated","parameters","body","trackExperiment","sent","clearUnsentData","addItemToOfflineTracking","storage","isExperiment","stop","convertTimeUnit","time","timeUnit","timeMap","_defineProperty","TimeUnit","Minute","Milliseconds","Hour","Day","Week","Month","parseFeatureVariable","variable","type","VariableType","BOOLEAN","STRING","NUMBER","numberValue","Number","isNaN","NumberParse","JSON","jsonValue","parse","err","JSONParse","exhaustCheck","parseVisitorData","filters","currentVisit","previousVisits","browserFilter","browser","customDataFilter","customData","operatingSystemFilter","operatingSystem","conversionsFilter","conversions","deviceFilter","device","geolocationFilter","geolocation","experimentsFilter","experiments","pageViewFilter","pageViews","visitAmount","visits","push","_toConsumableArray","resultData","PageView","_listFromVisits","Browser","_fromVisits","visit","experimentData","experimentEvents","y","z","experimentEvent","B","id","updateStoredVariations","Device","GeolocationData","CustomData","OperatingSystem","Conversion","visitsData","VisitsData","_fromRemoteVisits","parseRegExp","split","_slicedToArray","_","expression","flags","RegExp","storedData","storedTargetingData","userAgentData","KameleoonData","UserAgent","isCustomData","dataItem","insertInOrderedListMutably","list","element","order","includes","index","findIndex","Order","Ascending","splice","updateCache","cacheManager","cacheData","getAliveItem","newCacheData","_objectSpread","expirationTime","Date","now","CACHE_ITEM_LIFETIME","Second","add","lifetime","getTrackingCode","trackingCache","resultString","updatedCacheData","Object","entries","concat","sendOfflineTracking","trackData","cleanup","onSuccess","randomNumber","hexLength","HEX_CHARACTERS","nonce","Math","floor","random","substring","readResult","read","requestParameters","successfulTimestamps","timestamp","params","_objectWithoutProperties","_excluded","t0","finish","deleteFromOfflineTracking","timestamps","compareSemVer","version","compareVersion","operator","versionResult","validateVersion","compareVersionResult","error","major","minor","patch","compareMajor","compareMinor","comparePatch","isMajorEqual","isMinorEqual","isPatchEqual","VersionMatchType","EQUAL","GREATER","LOWER","newItem","getTime","newRequestParameters","writeResult","write","newParameters","filter","versionParts","map","x","parseInt","some","SemanticVersionParse","slice","exports"],"sources":["../../src/utilities/utilities.ts"],"sourcesContent":["import { Err, Ok, Result } from 'ts-res';\nimport {\n KameleoonError,\n KameleoonException,\n exhaustCheck,\n} from 'src/kameleoonError';\nimport {\n FeatureVariableResultType,\n Milliseconds,\n TrackingCacheItemType,\n VariableType,\n} from 'src/types';\nimport { FeatureVariableType, JSONType } from 'src/clientConfiguration';\nimport {\n Browser,\n Conversion,\n CustomData,\n DataManager,\n Device,\n GeolocationData,\n KameleoonData,\n KameleoonDataType,\n OperatingSystem,\n PageView,\n VisitsData,\n} from 'src/kameleoonData';\nimport { CACHE_ITEM_LIFETIME } from 'src/constants';\nimport { CacheManager } from 'src/cacheManager';\nimport {\n TrackExperimentParamsType,\n TrackDataParamsType,\n VisitType,\n UrlParameter,\n} from 'src/requester';\nimport { VersionMatchType, TargetingType } from 'src/targeting';\nimport { KameleoonVisitorDataType } from 'src/kameleoonData/types';\nimport { FeatureFlagVariationsType } from 'src/storage/types';\nimport { VISITOR_CODE_MAX_LENGTH, HEX_CHARACTERS } from './constants';\nimport {\n CheckTargetingParametersType,\n ManageCacheParametersType,\n TrackDataParametersType,\n TrackRuleParametersType,\n AddToOfflineTrackingParametersType,\n SendOfflineTrackingParametersType,\n DeleteFromOfflineTrackingParametersType,\n ParseVisitorDataParametersType,\n InsertInOrderedListParametersType,\n Order,\n TimeUnit,\n} from './types';\n\nexport class Utilities {\n static checkTargeting({\n segment,\n visitorCode,\n targetingData,\n experimentId,\n variationConfiguration,\n clientConfiguration,\n packageInfo,\n dataManager,\n }: CheckTargetingParametersType): Result<boolean, KameleoonError> {\n if (!segment || !segment.conditionsData.firstLevel.length) {\n return Ok(true);\n }\n\n if (!variationConfiguration) {\n return Err(new KameleoonError(KameleoonException.Initialization));\n }\n\n let variations: FeatureFlagVariationsType = {};\n\n const assignedVariationsResult =\n variationConfiguration.getStoredVariations(visitorCode);\n\n if (assignedVariationsResult.ok) {\n variations = assignedVariationsResult.data;\n }\n\n const targetingTree = dataManager.getTree(segment);\n\n let trees = undefined;\n let segments = undefined;\n let ruleMap = undefined;\n\n // --- Note ---\n // Only getting trees and segments targeting type\n if (targetingTree.hasTargetingType(TargetingType.SEGMENT)) {\n trees = dataManager.trees;\n segments = clientConfiguration.segments;\n }\n\n // --- Note ---\n // Only constructing rule map for targeting type\n if (targetingTree.hasTargetingType(TargetingType.TARGET_FEATURE_FLAG)) {\n ruleMap = clientConfiguration.ruleMap;\n }\n\n const result = targetingTree.evaluate({\n variationData: variations,\n sdkInfo: packageInfo,\n segments,\n ruleMap,\n trees,\n targetingData,\n experimentId,\n visitorCode,\n });\n\n return result;\n }\n\n static validateVisitorCode(\n visitorCode: string,\n ): Result<void, KameleoonError> {\n if (visitorCode.length === 0) {\n return Err(new KameleoonError(KameleoonException.VisitorCodeEmpty));\n }\n\n if (visitorCode.length > VISITOR_CODE_MAX_LENGTH) {\n return Err(new KameleoonError(KameleoonException.VisitorCodeMaxLength));\n }\n\n return Ok();\n }\n\n static getDataUrl(visitorCode: string, dataManager: DataManager): string {\n const unsentData = dataManager.getUnsentData(visitorCode);\n let resultUrl = '';\n\n if (!unsentData || !unsentData.size) {\n return resultUrl;\n }\n\n function updateUrl(data: KameleoonDataType): void {\n if (data.url) {\n resultUrl +=\n data.url + UrlParameter.Nonce + Utilities.getNonce() + '\\n';\n }\n }\n\n for (const item of unsentData.values()) {\n if (Array.isArray(item)) {\n item.forEach((arrayItem) => updateUrl(arrayItem));\n } else {\n updateUrl(item);\n }\n }\n\n return resultUrl;\n }\n\n static async trackFeatureExperiment({\n featureFlagVariation,\n dataManager,\n visitorCode,\n requester,\n isOfflineModeOn,\n offlineTrackingStorage,\n }: TrackRuleParametersType): Promise<void> {\n const { variationId, rule } = featureFlagVariation;\n\n const userAgent = this.getUserAgent(visitorCode, dataManager);\n\n const dataUrl = this.getDataUrl(visitorCode, dataManager);\n\n const resultVariationId = variationId || 0;\n const isUnallocated = variationId === null;\n // --- Note ---\n // Experiment id is not needed for unallocated visitors\n // So we just use 0 as a fallback\n const experimentId = rule ? rule.experimentId : 0;\n\n const parameters = {\n visitorCode,\n isUnallocated,\n body: dataUrl,\n experimentId,\n variationId: resultVariationId,\n userAgent,\n };\n\n const result = await requester.trackExperiment(parameters);\n\n if (result.ok) {\n dataManager.clearUnsentData(visitorCode);\n }\n\n if (!result.ok && isOfflineModeOn) {\n this.addItemToOfflineTracking({\n item: parameters,\n storage: offlineTrackingStorage,\n isExperiment: true,\n });\n }\n }\n\n static convertTimeUnit(time: number, timeUnit: TimeUnit): number {\n const timeMap = {\n [TimeUnit.Minute]: Milliseconds.Minute,\n [TimeUnit.Hour]: Milliseconds.Hour,\n [TimeUnit.Day]: Milliseconds.Day,\n [TimeUnit.Week]: Milliseconds.Week,\n [TimeUnit.Month]: Milliseconds.Month,\n };\n\n return time / timeMap[timeUnit];\n }\n\n static parseFeatureVariable(\n variable: FeatureVariableType,\n ): Result<FeatureVariableResultType, KameleoonError> {\n const { type, value } = variable;\n\n switch (type) {\n case VariableType.BOOLEAN:\n return Ok({\n type,\n value: Boolean(value),\n });\n case VariableType.STRING:\n return Ok({\n type,\n value: String(value),\n });\n case VariableType.NUMBER:\n const numberValue = Number(value);\n\n if (Number.isNaN(numberValue)) {\n return Err(\n new KameleoonError(KameleoonException.NumberParse, String(value)),\n );\n }\n\n return Ok({\n type,\n value: numberValue,\n });\n case VariableType.JSON:\n try {\n const jsonValue: JSONType = JSON.parse(String(variable.value));\n\n return Ok({\n type,\n value: jsonValue,\n });\n } catch (err) {\n return Err(new KameleoonError(KameleoonException.JSONParse, err));\n }\n default:\n exhaustCheck(type);\n }\n }\n\n static parseVisitorData({\n data,\n filters,\n visitorCode,\n variationConfiguration,\n }: ParseVisitorDataParametersType): KameleoonDataType[] {\n const { currentVisit, previousVisits } = data;\n const {\n browser: browserFilter,\n customData: customDataFilter,\n operatingSystem: operatingSystemFilter,\n conversions: conversionsFilter,\n device: deviceFilter,\n geolocation: geolocationFilter,\n experiments: experimentsFilter,\n pageViews: pageViewFilter,\n visitAmount,\n } = filters;\n\n let visits: VisitType[] = [];\n\n if (currentVisit) {\n visits.push(currentVisit);\n }\n\n if (previousVisits) {\n // --- Note ---\n // We can't know if we have `currentVisit` visit in advance via API (only amount of `previousVisits`)\n // But the current visit is also counted in `visitAmount` so we need to check it here\n if (visits.length && visitAmount && visitAmount > 1) {\n visits.push(...previousVisits);\n }\n\n if (!visits.length) {\n visits.push(...previousVisits);\n }\n }\n\n if (!visits) {\n return [];\n }\n\n const resultData: KameleoonDataType[] = [];\n\n if (pageViewFilter) {\n const pageViews = PageView._listFromVisits(visits);\n\n if (pageViews.length) {\n resultData.push(...pageViews);\n }\n }\n\n // --- Browser ---\n if (browserFilter) {\n const browser = Browser._fromVisits(visits);\n\n if (browser) {\n resultData.push(browser);\n }\n }\n\n // --- Experiments ---\n if (experimentsFilter) {\n const experimentData: FeatureFlagVariationsType = {};\n\n // --- Note ---\n // Going backwards to get the latest experiment data\n for (let i = visits.length - 1; i >= 0; i--) {\n const visit = visits[i];\n\n if (!visit.experimentEvents) {\n continue;\n }\n\n for (const experimentEvent of visit.experimentEvents) {\n const { id, variationId } = experimentEvent.data;\n\n experimentData[id] = variationId;\n }\n }\n\n variationConfiguration.updateStoredVariations(\n visitorCode,\n experimentData,\n );\n }\n\n // --- Device ---\n if (deviceFilter) {\n const device = Device._fromVisits(visits);\n\n if (device) {\n resultData.push(device);\n }\n }\n\n // --- Geolocation ---\n if (geolocationFilter) {\n const geolocation = GeolocationData._fromVisits(visits);\n\n if (geolocation) {\n resultData.push(geolocation);\n }\n }\n\n // --- Custom data ---\n if (customDataFilter) {\n resultData.push(...CustomData._listFromVisits(visits));\n }\n\n // --- Operating system ---\n if (operatingSystemFilter) {\n const operatingSystem = OperatingSystem._fromVisits(visits);\n\n if (operatingSystem) {\n resultData.push(operatingSystem);\n }\n }\n\n // --- Conversions ---\n if (conversionsFilter) {\n resultData.push(...Conversion._listFromVisits(visits));\n }\n\n const visitsData = VisitsData._fromRemoteVisits(\n visits,\n Boolean(currentVisit),\n );\n\n if (visitsData) {\n resultData.push(visitsData);\n }\n\n return resultData;\n }\n\n static parseRegExp(value: string): RegExp {\n if (value[0] === '/') {\n const [_, expression, flags] = value.split('/');\n\n return new RegExp(expression, flags);\n }\n\n return new RegExp(value);\n }\n\n static getUserAgent(\n visitorCode: string,\n dataManager: DataManager,\n ): string | undefined {\n const storedData = dataManager.storedTargetingData;\n\n const targetingData: KameleoonVisitorDataType | undefined =\n storedData && storedData[visitorCode];\n\n if (targetingData) {\n const userAgentData = targetingData[KameleoonData.UserAgent];\n\n if (userAgentData) {\n return userAgentData.value;\n }\n }\n\n return undefined;\n }\n\n static isCustomData(dataItem: KameleoonDataType): dataItem is CustomData {\n return dataItem.data.type === KameleoonData.CustomData;\n }\n\n /**\n * Insert element in ordered list, if element already exists in list, does nothing\n * @param list - list to insert element\n * @param element - element to insert\n * @param order - order of list\n */\n static insertInOrderedListMutably({\n list,\n element,\n order,\n }: InsertInOrderedListParametersType): void {\n if (list.includes(element)) {\n return;\n }\n\n const index = list.findIndex((item) =>\n order === Order.Ascending ? item >= element : item <= element,\n );\n\n if (index === -1) {\n list.push(element);\n } else {\n list.splice(index, 0, element);\n }\n }\n\n static updateCache({\n cacheManager,\n visitorCode,\n experimentId,\n variationId,\n }: ManageCacheParametersType): void {\n const cacheData = cacheManager.getAliveItem(visitorCode);\n\n const newCacheData = cacheData ? { ...cacheData } : {};\n\n newCacheData[experimentId] = {\n variationId,\n expirationTime: Date.now() + CACHE_ITEM_LIFETIME * Milliseconds.Second,\n };\n\n cacheManager.add({\n key: visitorCode,\n data: newCacheData,\n lifetime: CACHE_ITEM_LIFETIME,\n });\n }\n\n static getTrackingCode(\n trackingCache: CacheManager<TrackingCacheItemType>,\n visitorCode: string,\n ): string {\n let resultString = 'window.kameleoonQueue=window.kameleoonQueue||[];';\n\n const cacheData = trackingCache.getAliveItem(visitorCode);\n\n if (!cacheData) {\n return resultString;\n }\n\n const updatedCacheData: TrackingCacheItemType = {};\n\n Object.entries(cacheData).forEach(\n ([experimentId, { variationId, expirationTime }]) => {\n if (expirationTime > Date.now()) {\n resultString += `window.kameleoonQueue.push(['Experiments.assignVariation',${experimentId},${variationId}]);`;\n resultString += `window.kameleoonQueue.push(['Experiments.trigger',${experimentId},true]);`;\n\n updatedCacheData[Number(experimentId)] = {\n variationId,\n expirationTime,\n };\n }\n },\n );\n\n // --- Note ---\n // Cache is updated with only alive experiments\n trackingCache.add({\n key: visitorCode,\n data: updatedCacheData,\n lifetime: CACHE_ITEM_LIFETIME,\n });\n\n return resultString;\n }\n\n static async trackData({\n visitorCode,\n dataManager,\n requester,\n isOfflineModeOn,\n offlineTrackingStorage,\n }: TrackDataParametersType): Promise<void> {\n await this.sendOfflineTracking({\n requester,\n storage: offlineTrackingStorage,\n });\n\n const dataUrl = this.getDataUrl(visitorCode, dataManager);\n\n const userAgent = this.getUserAgent(visitorCode, dataManager);\n\n const parameters = {\n visitorCode,\n body: dataUrl,\n userAgent,\n };\n\n const result = await requester.trackData(parameters);\n\n const cleanup = () => dataManager.clearUnsentData(visitorCode);\n\n if (result.ok) {\n cleanup();\n }\n\n if (!result.ok && isOfflineModeOn) {\n this.addItemToOfflineTracking({\n item: parameters,\n storage: offlineTrackingStorage,\n isExperiment: false,\n onSuccess: cleanup,\n });\n }\n }\n\n static getNonce(): string {\n const hexLength = HEX_CHARACTERS.length;\n let nonce: string = '';\n\n for (let i = 0; i < hexLength; i++) {\n const randomNumber = Math.floor(Math.random() * hexLength);\n nonce += HEX_CHARACTERS.substring(randomNumber, randomNumber + 1);\n }\n\n return nonce;\n }\n\n static async sendOfflineTracking({\n requester,\n storage,\n }: SendOfflineTrackingParametersType) {\n const readResult = storage.read();\n\n if (readResult.ok && readResult.data.requestParameters) {\n const { requestParameters } = readResult.data;\n const successfulTimestamps: number[] = [];\n\n // --- Note ---\n // `for..of` + `await` is used to make sure that failed requests are sent one by one\n // without risk of getting the same timestamp at the server, which might happen, for example,\n // with `.forEach` or `.map` starting requests in async callbacks at the same time\n for (const parameters of requestParameters) {\n const { timestamp, isExperiment, ...params } = parameters;\n let result: Result<boolean, KameleoonError>;\n\n if (isExperiment) {\n result = await requester.trackExperiment(\n params as TrackExperimentParamsType,\n );\n } else {\n result = await requester.trackData(params as TrackDataParamsType);\n }\n\n result.ok && result.data && successfulTimestamps.push(timestamp);\n }\n\n this.deleteFromOfflineTracking({\n storage,\n timestamps: successfulTimestamps,\n });\n }\n }\n\n static compareSemVer({\n version,\n compareVersion,\n operator,\n }: {\n version: string;\n compareVersion: string;\n operator: VersionMatchType;\n }): Result<boolean, KameleoonError> {\n const versionResult = this.validateVersion(version);\n const compareVersionResult = this.validateVersion(compareVersion);\n\n if (!versionResult.ok) {\n return Err(versionResult.error);\n }\n\n if (!compareVersionResult.ok) {\n return Err(compareVersionResult.error);\n }\n\n const [major, minor, patch] = versionResult.data;\n const [compareMajor, compareMinor, comparePatch] =\n compareVersionResult.data;\n\n const [isMajorEqual, isMinorEqual, isPatchEqual] = [\n major === compareMajor,\n minor === compareMinor,\n patch === comparePatch,\n ];\n\n switch (operator) {\n case VersionMatchType.EQUAL:\n return Ok(isMajorEqual && isMinorEqual && isPatchEqual);\n case VersionMatchType.GREATER:\n return Ok(\n major > compareMajor ||\n (isMajorEqual && minor > compareMinor) ||\n (isMajorEqual && isMinorEqual && patch > comparePatch),\n );\n case VersionMatchType.LOWER:\n return Ok(\n major < compareMajor ||\n (isMajorEqual && minor < compareMinor) ||\n (isMajorEqual && isMinorEqual && patch < comparePatch),\n );\n default:\n exhaustCheck(operator);\n }\n }\n\n private static addItemToOfflineTracking({\n item,\n isExperiment,\n storage,\n onSuccess,\n }: AddToOfflineTrackingParametersType): void {\n const readResult = storage.read();\n\n const data = readResult.ok ? readResult.data : {};\n\n const { requestParameters } = data;\n\n const newItem = {\n ...item,\n timestamp: new Date().getTime(),\n isExperiment,\n };\n\n const newRequestParameters = requestParameters\n ? [...requestParameters, newItem]\n : [newItem];\n\n const writeResult = storage.write({\n requestParameters: newRequestParameters,\n });\n\n if (writeResult.ok && onSuccess) {\n onSuccess();\n }\n }\n\n private static deleteFromOfflineTracking({\n timestamps,\n storage,\n }: DeleteFromOfflineTrackingParametersType): void {\n const readResult = storage.read();\n\n if (readResult.ok) {\n const { requestParameters } = readResult.data;\n\n const newParameters = requestParameters?.filter(\n (item) => !timestamps.includes(item.timestamp),\n );\n\n storage.write({ requestParameters: newParameters });\n }\n }\n\n private static validateVersion(\n version: string,\n ): Result<[number, number, number], KameleoonError> {\n const versionParts = version.split('.').map((x) => parseInt(x, 10));\n\n while (versionParts.length < 3) {\n versionParts.push(0);\n }\n\n if (versionParts.some((item) => isNaN(item))) {\n return Err(\n new KameleoonError(KameleoonException.SemanticVersionParse, version),\n );\n }\n\n return Ok(versionParts.slice(0, 3) as [number, number, number]);\n }\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"utilities.js","names":["Utilities","a","_classCallCheck","_createClass","key","value","checkTargeting","segment","visitorCode","targetingData","experimentId","variationConfiguration","clientConfiguration","packageInfo","dataManager","conditionsData","firstLevel","length","Ok","Err","KameleoonError","KameleoonException","Initialization","variations","assignedVariationsResult","getStoredVariations","ok","data","targetingTree","getTree","trees","segments","ruleMap","hasTargetingType","TargetingType","SEGMENT","TARGET_FEATURE_FLAG","result","evaluate","variationData","sdkInfo","validateVisitorCode","VisitorCodeEmpty","VISITOR_CODE_MAX_LENGTH","VisitorCodeMaxLength","getDataUrl","b","updateUrl","url","shouldSendConversionData","type","KameleoonData","Conversion","isConsentProvided","resultUrl","push","UrlParameter","Nonce","getNonce","unsentData","getUnsentData","size","i","j","_createForOfIteratorHelper","values","s","n","done","item","Array","isArray","forEach","arrayItem","e","f","join","apply","arguments","_asyncToGenerator","_regeneratorRuntime","mark","c","d","g","h","k","l","m","o","p","q","r","t","wrap","u","prev","next","featureFlagVariation","requester","isOfflineModeOn","offlineTrackingStorage","variationId","rule","isTargetedRule","userAgent","getUserAgent","dataUrl","hasVariationData","abrupt","resultVariationId","isUnallocated","parameters","body","trackExperiment","sent","clearUnsentData","clearUnsentDataByKey","addItemToOfflineTracking","storage","isExperiment","stop","convertTimeUnit","time","timeUnit","timeMap","_defineProperty","TimeUnit","Minute","Milliseconds","Hour","Day","Week","Month","parseFeatureVariable","variable","VariableType","BOOLEAN","STRING","NUMBER","numberValue","Number","isNaN","NumberParse","JSON","jsonValue","parse","err","JSONParse","exhaustCheck","parseVisitorData","filters","currentVisit","previousVisits","browserFilter","browser","customDataFilter","customData","operatingSystemFilter","operatingSystem","conversionsFilter","conversions","deviceFilter","device","geolocationFilter","geolocation","experimentsFilter","experiments","pageViewFilter","pageViews","visits","_toConsumableArray","resultData","PageView","_listFromVisits","Browser","_fromVisits","visit","experimentData","experimentEvents","x","y","experimentEvent","A","id","updateStoredVariations","Device","GeolocationData","CustomData","OperatingSystem","visitsData","VisitsData","_fromRemoteVisits","parseRegExp","split","_slicedToArray","_","expression","flags","RegExp","storedData","storedTargetingData","userAgentData","UserAgent","isCustomData","dataItem","insertInOrderedListMutably","list","element","order","includes","index","findIndex","Order","Ascending","splice","updateCache","cacheManager","cacheData","getAliveItem","newCacheData","_objectSpread","expirationTime","Date","now","CACHE_ITEM_LIFETIME","Second","add","lifetime","getTrackingCode","trackingCache","resultString","updatedCacheData","Object","entries","concat","sendOfflineTracking","trackData","cleanup","onSuccess","randomNumber","hexLength","HEX_CHARACTERS","nonce","Math","floor","random","substring","readResult","read","requestParameters","successfulTimestamps","timestamp","params","_objectWithoutProperties","_excluded","t0","finish","deleteFromOfflineTracking","timestamps","compareSemVer","version","compareVersion","operator","versionResult","validateVersion","compareVersionResult","error","major","minor","patch","compareMajor","compareMinor","comparePatch","isMajorEqual","isMinorEqual","isPatchEqual","VersionMatchType","EQUAL","GREATER","LOWER","isServerEnvironment","response","generateRandomString","characters","randomCharacterArray","newItem","getTime","newRequestParameters","writeResult","write","newParameters","filter","versionParts","map","parseInt","some","SemanticVersionParse","slice","exports"],"sources":["../../src/utilities/utilities.ts"],"sourcesContent":["import { ServerResponse } from 'http';\nimport { Err, Ok, Result } from 'ts-res';\nimport {\n KameleoonError,\n KameleoonException,\n exhaustCheck,\n} from 'src/kameleoonError';\nimport {\n FeatureVariableResultType,\n Milliseconds,\n TrackingCacheItemType,\n VariableType,\n} from 'src/types';\nimport { FeatureVariableType, JSONType } from 'src/clientConfiguration';\nimport {\n Browser,\n Conversion,\n CustomData,\n DataManager,\n Device,\n GeolocationData,\n KameleoonData,\n KameleoonDataType,\n OperatingSystem,\n PageView,\n VisitsData,\n} from 'src/kameleoonData';\nimport { CACHE_ITEM_LIFETIME } from 'src/constants';\nimport { CacheManager } from 'src/cacheManager';\nimport {\n TrackExperimentParamsType,\n TrackDataParamsType,\n VisitType,\n UrlParameter,\n} from 'src/requester';\nimport { VersionMatchType, TargetingType } from 'src/targeting';\nimport { KameleoonVisitorDataType } from 'src/kameleoonData/types';\nimport { FeatureFlagVariationsType } from 'src/storage/types';\nimport { VISITOR_CODE_MAX_LENGTH, HEX_CHARACTERS } from './constants';\nimport {\n CheckTargetingParametersType,\n ManageCacheParametersType,\n TrackDataParametersType,\n TrackRuleParametersType,\n AddToOfflineTrackingParametersType,\n SendOfflineTrackingParametersType,\n DeleteFromOfflineTrackingParametersType,\n ParseVisitorDataParametersType,\n InsertInOrderedListParametersType,\n Order,\n TimeUnit,\n GetDataUrlParametersType,\n} from './types';\n\nexport class Utilities {\n static checkTargeting({\n segment,\n visitorCode,\n targetingData,\n experimentId,\n variationConfiguration,\n clientConfiguration,\n packageInfo,\n dataManager,\n }: CheckTargetingParametersType): Result<boolean, KameleoonError> {\n if (!segment || !segment.conditionsData.firstLevel.length) {\n return Ok(true);\n }\n\n if (!variationConfiguration) {\n return Err(new KameleoonError(KameleoonException.Initialization));\n }\n\n let variations: FeatureFlagVariationsType = {};\n\n const assignedVariationsResult =\n variationConfiguration.getStoredVariations(visitorCode);\n\n if (assignedVariationsResult.ok) {\n variations = assignedVariationsResult.data;\n }\n\n const targetingTree = dataManager.getTree(segment);\n\n let trees = undefined;\n let segments = undefined;\n let ruleMap = undefined;\n\n // --- Note ---\n // Only getting trees and segments targeting type\n if (targetingTree.hasTargetingType(TargetingType.SEGMENT)) {\n trees = dataManager.trees;\n segments = clientConfiguration.segments;\n }\n\n // --- Note ---\n // Only constructing rule map for targeting type\n if (targetingTree.hasTargetingType(TargetingType.TARGET_FEATURE_FLAG)) {\n ruleMap = clientConfiguration.ruleMap;\n }\n\n const result = targetingTree.evaluate({\n variationData: variations,\n sdkInfo: packageInfo,\n segments,\n ruleMap,\n trees,\n targetingData,\n experimentId,\n visitorCode,\n });\n\n return result;\n }\n\n static validateVisitorCode(\n visitorCode: string,\n ): Result<void, KameleoonError> {\n if (visitorCode.length === 0) {\n return Err(new KameleoonError(KameleoonException.VisitorCodeEmpty));\n }\n\n if (visitorCode.length > VISITOR_CODE_MAX_LENGTH) {\n return Err(new KameleoonError(KameleoonException.VisitorCodeMaxLength));\n }\n\n return Ok();\n }\n\n static getDataUrl({\n visitorCode,\n dataManager,\n isConsentProvided,\n }: GetDataUrlParametersType): string {\n const unsentData = dataManager.getUnsentData(visitorCode);\n const resultUrl: string[] = [];\n\n if (!unsentData || !unsentData.size) {\n return '';\n }\n\n function updateUrl(data: KameleoonDataType): void {\n if (!data.url) {\n return;\n }\n\n const shouldSendAllData = isConsentProvided;\n const shouldSendConversionData =\n data.data.type === KameleoonData.Conversion;\n\n if (shouldSendAllData || shouldSendConversionData) {\n resultUrl.push(\n data.url + UrlParameter.Nonce + Utilities.getNonce() + '\\n',\n );\n }\n }\n\n for (const item of unsentData.values()) {\n if (Array.isArray(item)) {\n item.forEach((arrayItem) => updateUrl(arrayItem));\n } else {\n updateUrl(item);\n }\n }\n\n return resultUrl.join('');\n }\n\n static async trackFeatureExperiment({\n featureFlagVariation,\n dataManager,\n visitorCode,\n requester,\n isOfflineModeOn,\n isConsentProvided,\n offlineTrackingStorage,\n }: TrackRuleParametersType): Promise<void> {\n const { variationId, rule, isTargetedRule } = featureFlagVariation;\n\n const userAgent = this.getUserAgent(visitorCode, dataManager);\n\n const dataUrl = this.getDataUrl({\n visitorCode,\n dataManager,\n isConsentProvided,\n });\n\n if (!isConsentProvided) {\n const hasVariationData = !!variationId || !!rule;\n\n if (!dataUrl && !hasVariationData) {\n return;\n }\n }\n\n const resultVariationId = variationId || 0;\n const isUnallocated = variationId === null;\n\n // --- Note ---\n // Experiment id is not needed for unallocated visitors\n // So we just use 0 as a fallback\n const experimentId = rule ? rule.experimentId : 0;\n\n const parameters = {\n visitorCode,\n isUnallocated,\n body: dataUrl,\n experimentId,\n variationId: resultVariationId,\n userAgent,\n isTargetedRule,\n isConsentProvided,\n };\n\n const result = await requester.trackExperiment(parameters);\n\n if (result.ok) {\n if (!isConsentProvided) {\n dataManager.clearUnsentDataByKey(visitorCode, KameleoonData.Conversion);\n } else {\n dataManager.clearUnsentData(visitorCode);\n }\n }\n\n if (!result.ok && isOfflineModeOn) {\n this.addItemToOfflineTracking({\n item: parameters,\n storage: offlineTrackingStorage,\n isExperiment: true,\n });\n }\n }\n\n static convertTimeUnit(time: number, timeUnit: TimeUnit): number {\n const timeMap = {\n [TimeUnit.Minute]: Milliseconds.Minute,\n [TimeUnit.Hour]: Milliseconds.Hour,\n [TimeUnit.Day]: Milliseconds.Day,\n [TimeUnit.Week]: Milliseconds.Week,\n [TimeUnit.Month]: Milliseconds.Month,\n };\n\n return time / timeMap[timeUnit];\n }\n\n static parseFeatureVariable(\n variable: FeatureVariableType,\n ): Result<FeatureVariableResultType, KameleoonError> {\n const { type, value } = variable;\n\n switch (type) {\n case VariableType.BOOLEAN:\n return Ok({\n type,\n value: Boolean(value),\n });\n case VariableType.STRING:\n return Ok({\n type,\n value: String(value),\n });\n case VariableType.NUMBER:\n const numberValue = Number(value);\n\n if (Number.isNaN(numberValue)) {\n return Err(\n new KameleoonError(KameleoonException.NumberParse, String(value)),\n );\n }\n\n return Ok({\n type,\n value: numberValue,\n });\n case VariableType.JSON:\n try {\n const jsonValue: JSONType = JSON.parse(String(variable.value));\n\n return Ok({\n type,\n value: jsonValue,\n });\n } catch (err) {\n return Err(new KameleoonError(KameleoonException.JSONParse, err));\n }\n default:\n exhaustCheck(type);\n }\n }\n\n static parseVisitorData({\n data,\n filters,\n visitorCode,\n variationConfiguration,\n }: ParseVisitorDataParametersType): KameleoonDataType[] {\n const { currentVisit, previousVisits } = data;\n const {\n browser: browserFilter,\n customData: customDataFilter,\n operatingSystem: operatingSystemFilter,\n conversions: conversionsFilter,\n device: deviceFilter,\n geolocation: geolocationFilter,\n experiments: experimentsFilter,\n pageViews: pageViewFilter,\n } = filters;\n\n let visits: VisitType[] = [];\n\n if (currentVisit) {\n visits.push(currentVisit);\n }\n\n if (previousVisits) {\n visits.push(...previousVisits);\n }\n\n if (!visits) {\n return [];\n }\n\n const resultData: KameleoonDataType[] = [];\n\n if (pageViewFilter) {\n const pageViews = PageView._listFromVisits(visits);\n\n if (pageViews.length) {\n resultData.push(...pageViews);\n }\n }\n\n // --- Browser ---\n if (browserFilter) {\n const browser = Browser._fromVisits(visits);\n\n if (browser) {\n resultData.push(browser);\n }\n }\n\n // --- Experiments ---\n if (experimentsFilter) {\n const experimentData: FeatureFlagVariationsType = {};\n\n // --- Note ---\n // Going backwards to get the latest experiment data\n for (let i = visits.length - 1; i >= 0; i--) {\n const visit = visits[i];\n\n if (!visit.experimentEvents) {\n continue;\n }\n\n for (const experimentEvent of visit.experimentEvents) {\n const { id, variationId } = experimentEvent.data;\n\n experimentData[id] = variationId;\n }\n }\n\n variationConfiguration.updateStoredVariations(\n visitorCode,\n experimentData,\n );\n }\n\n // --- Device ---\n if (deviceFilter) {\n const device = Device._fromVisits(visits);\n\n if (device) {\n resultData.push(device);\n }\n }\n\n // --- Geolocation ---\n if (geolocationFilter) {\n const geolocation = GeolocationData._fromVisits(visits);\n\n if (geolocation) {\n resultData.push(geolocation);\n }\n }\n\n // --- Custom data ---\n if (customDataFilter) {\n resultData.push(...CustomData._listFromVisits(visits));\n }\n\n // --- Operating system ---\n if (operatingSystemFilter) {\n const operatingSystem = OperatingSystem._fromVisits(visits);\n\n if (operatingSystem) {\n resultData.push(operatingSystem);\n }\n }\n\n // --- Conversions ---\n if (conversionsFilter) {\n resultData.push(...Conversion._listFromVisits(visits));\n }\n\n const visitsData = VisitsData._fromRemoteVisits(\n visits,\n Boolean(currentVisit),\n );\n\n if (visitsData) {\n resultData.push(visitsData);\n }\n\n return resultData;\n }\n\n static parseRegExp(value: string): RegExp {\n if (value[0] === '/') {\n const [_, expression, flags] = value.split('/');\n\n return new RegExp(expression, flags);\n }\n\n return new RegExp(value);\n }\n\n static getUserAgent(\n visitorCode: string,\n dataManager: DataManager,\n ): string | undefined {\n const storedData = dataManager.storedTargetingData;\n\n const targetingData: KameleoonVisitorDataType | undefined =\n storedData && storedData[visitorCode];\n\n if (targetingData) {\n const userAgentData = targetingData[KameleoonData.UserAgent];\n\n if (userAgentData) {\n return userAgentData.value;\n }\n }\n\n return undefined;\n }\n\n static isCustomData(dataItem: KameleoonDataType): dataItem is CustomData {\n return dataItem.data.type === KameleoonData.CustomData;\n }\n\n /**\n * Insert element in ordered list, if element already exists in list, does nothing\n * @param list - list to insert element\n * @param element - element to insert\n * @param order - order of list\n */\n static insertInOrderedListMutably({\n list,\n element,\n order,\n }: InsertInOrderedListParametersType): void {\n if (list.includes(element)) {\n return;\n }\n\n const index = list.findIndex((item) =>\n order === Order.Ascending ? item >= element : item <= element,\n );\n\n if (index === -1) {\n list.push(element);\n } else {\n list.splice(index, 0, element);\n }\n }\n\n static updateCache({\n cacheManager,\n visitorCode,\n experimentId,\n variationId,\n }: ManageCacheParametersType): void {\n const cacheData = cacheManager.getAliveItem(visitorCode);\n\n const newCacheData = cacheData ? { ...cacheData } : {};\n\n newCacheData[experimentId] = {\n variationId,\n expirationTime: Date.now() + CACHE_ITEM_LIFETIME * Milliseconds.Second,\n };\n\n cacheManager.add({\n key: visitorCode,\n data: newCacheData,\n lifetime: CACHE_ITEM_LIFETIME,\n });\n }\n\n static getTrackingCode(\n trackingCache: CacheManager<TrackingCacheItemType>,\n visitorCode: string,\n ): string {\n let resultString = 'window.kameleoonQueue=window.kameleoonQueue||[];';\n\n const cacheData = trackingCache.getAliveItem(visitorCode);\n\n if (!cacheData) {\n return resultString;\n }\n\n const updatedCacheData: TrackingCacheItemType = {};\n\n Object.entries(cacheData).forEach(\n ([experimentId, { variationId, expirationTime }]) => {\n if (expirationTime > Date.now()) {\n resultString += `window.kameleoonQueue.push(['Experiments.assignVariation',${experimentId},${variationId}]);`;\n resultString += `window.kameleoonQueue.push(['Experiments.trigger',${experimentId},true]);`;\n\n updatedCacheData[Number(experimentId)] = {\n variationId,\n expirationTime,\n };\n }\n },\n );\n\n // --- Note ---\n // Cache is updated with only alive experiments\n trackingCache.add({\n key: visitorCode,\n data: updatedCacheData,\n lifetime: CACHE_ITEM_LIFETIME,\n });\n\n return resultString;\n }\n\n static async trackData({\n visitorCode,\n dataManager,\n requester,\n isOfflineModeOn,\n offlineTrackingStorage,\n isConsentProvided,\n }: TrackDataParametersType): Promise<void> {\n await this.sendOfflineTracking({\n requester,\n storage: offlineTrackingStorage,\n });\n\n const dataUrl = this.getDataUrl({\n visitorCode,\n dataManager,\n isConsentProvided,\n });\n\n if (!isConsentProvided && !dataUrl) {\n return;\n }\n\n const userAgent = this.getUserAgent(visitorCode, dataManager);\n\n const parameters = {\n visitorCode,\n body: dataUrl,\n userAgent,\n };\n\n const result = await requester.trackData(parameters);\n\n const cleanup = () =>\n isConsentProvided\n ? dataManager.clearUnsentData(visitorCode)\n : dataManager.clearUnsentDataByKey(\n visitorCode,\n KameleoonData.Conversion,\n );\n\n if (result.ok) {\n cleanup();\n }\n\n if (!result.ok && isOfflineModeOn) {\n this.addItemToOfflineTracking({\n item: parameters,\n storage: offlineTrackingStorage,\n isExperiment: false,\n onSuccess: cleanup,\n });\n }\n }\n\n static getNonce(): string {\n const hexLength = HEX_CHARACTERS.length;\n let nonce: string = '';\n\n for (let i = 0; i < hexLength; i++) {\n const randomNumber = Math.floor(Math.random() * hexLength);\n nonce += HEX_CHARACTERS.substring(randomNumber, randomNumber + 1);\n }\n\n return nonce;\n }\n\n static async sendOfflineTracking({\n requester,\n storage,\n }: SendOfflineTrackingParametersType) {\n const readResult = storage.read();\n\n if (readResult.ok && readResult.data.requestParameters) {\n const { requestParameters } = readResult.data;\n const successfulTimestamps: number[] = [];\n\n // --- Note ---\n // `for..of` + `await` is used to make sure that failed requests are sent one by one\n // without risk of getting the same timestamp at the server, which might happen, for example,\n // with `.forEach` or `.map` starting requests in async callbacks at the same time\n for (const parameters of requestParameters) {\n const { timestamp, isExperiment, ...params } = parameters;\n let result: Result<boolean, KameleoonError>;\n\n if (isExperiment) {\n result = await requester.trackExperiment(\n params as TrackExperimentParamsType,\n );\n } else {\n result = await requester.trackData(params as TrackDataParamsType);\n }\n\n result.ok && result.data && successfulTimestamps.push(timestamp);\n }\n\n this.deleteFromOfflineTracking({\n storage,\n timestamps: successfulTimestamps,\n });\n }\n }\n\n static compareSemVer({\n version,\n compareVersion,\n operator,\n }: {\n version: string;\n compareVersion: string;\n operator: VersionMatchType;\n }): Result<boolean, KameleoonError> {\n const versionResult = this.validateVersion(version);\n const compareVersionResult = this.validateVersion(compareVersion);\n\n if (!versionResult.ok) {\n return Err(versionResult.error);\n }\n\n if (!compareVersionResult.ok) {\n return Err(compareVersionResult.error);\n }\n\n const [major, minor, patch] = versionResult.data;\n const [compareMajor, compareMinor, comparePatch] =\n compareVersionResult.data;\n\n const [isMajorEqual, isMinorEqual, isPatchEqual] = [\n major === compareMajor,\n minor === compareMinor,\n patch === comparePatch,\n ];\n\n switch (operator) {\n case VersionMatchType.EQUAL:\n return Ok(isMajorEqual && isMinorEqual && isPatchEqual);\n case VersionMatchType.GREATER:\n return Ok(\n major > compareMajor ||\n (isMajorEqual && minor > compareMinor) ||\n (isMajorEqual && isMinorEqual && patch > comparePatch),\n );\n case VersionMatchType.LOWER:\n return Ok(\n major < compareMajor ||\n (isMajorEqual && minor < compareMinor) ||\n (isMajorEqual && isMinorEqual && patch < comparePatch),\n );\n default:\n exhaustCheck(operator);\n }\n }\n\n static isServerEnvironment<T extends { response: ServerResponse }, U>(\n params: T | U,\n ): params is T {\n return (params as T).response !== undefined;\n }\n\n static generateRandomString(length: number): string {\n const characters = 'abcdefghijklmnopqrstuvwxyz0123456789';\n const randomCharacterArray: string[] = [];\n\n if (length < 0) {\n return '';\n }\n\n for (let i = 0; i < length; i++) {\n randomCharacterArray.push(\n characters[Math.floor(Math.random() * characters.length)],\n );\n }\n\n return randomCharacterArray.join('');\n }\n\n private static addItemToOfflineTracking({\n item,\n isExperiment,\n storage,\n onSuccess,\n }: AddToOfflineTrackingParametersType): void {\n const readResult = storage.read();\n\n const data = readResult.ok ? readResult.data : {};\n\n const { requestParameters } = data;\n\n const newItem = {\n ...item,\n timestamp: new Date().getTime(),\n isExperiment,\n };\n\n const newRequestParameters = requestParameters\n ? [...requestParameters, newItem]\n : [newItem];\n\n const writeResult = storage.write({\n requestParameters: newRequestParameters,\n });\n\n if (writeResult.ok && onSuccess) {\n onSuccess();\n }\n }\n\n private static deleteFromOfflineTracking({\n timestamps,\n storage,\n }: DeleteFromOfflineTrackingParametersType): void {\n const readResult = storage.read();\n\n if (readResult.ok) {\n const { requestParameters } = readResult.data;\n\n const newParameters = requestParameters?.filter(\n (item) => !timestamps.includes(item.timestamp),\n );\n\n storage.write({ requestParameters: newParameters });\n }\n }\n\n private static validateVersion(\n version: string,\n ): Result<[number, number, number], KameleoonError> {\n const versionParts = version.split('.').map((x) => parseInt(x, 10));\n\n while (versionParts.length < 3) {\n versionParts.push(0);\n }\n\n if (versionParts.some((item) => isNaN(item))) {\n return Err(\n new KameleoonError(KameleoonException.SemanticVersionParse, version),\n );\n }\n\n return Ok(versionParts.slice(0, 3) as [number, number, number]);\n }\n}\n"],"mappings":"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"}
|
|
@@ -9,9 +9,11 @@ export type FeatureFlagVariationType = {
|
|
|
9
9
|
featureFlagId: number;
|
|
10
10
|
featureKey: string;
|
|
11
11
|
rule: RuleItemType | null;
|
|
12
|
+
isTargetedRule?: boolean;
|
|
12
13
|
};
|
|
13
14
|
export type GetVariationParametersType = {
|
|
14
15
|
visitorCode: string;
|
|
16
|
+
visitorIdentifier: string;
|
|
15
17
|
featureFlag: FeatureFlagType;
|
|
16
18
|
targetingData: KameleoonVisitorDataType;
|
|
17
19
|
withAssignment?: boolean;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","names":[],"sources":["../../src/variationConfiguration/types.ts"],"sourcesContent":["import {\n ClientConfiguration,\n FeatureFlagType,\n RuleItemType,\n} from 'src/clientConfiguration';\nimport { DataManager } from 'src/kameleoonData';\nimport { KameleoonVisitorDataType } from 'src/kameleoonData/types';\nimport { ExternalPackageInfoType } from 'src/types';\n\nexport type FeatureFlagVariationType = {\n variationKey: string;\n variationId: number | null;\n experimentId: number | null;\n featureFlagId: number;\n featureKey: string;\n rule: RuleItemType | null;\n};\n\nexport type GetVariationParametersType = {\n visitorCode: string;\n featureFlag: FeatureFlagType;\n targetingData: KameleoonVisitorDataType;\n withAssignment?: boolean;\n packageInfo: ExternalPackageInfoType;\n clientConfiguration: ClientConfiguration;\n dataManager: DataManager;\n};\n"],"mappings":""}
|
|
1
|
+
{"version":3,"file":"types.js","names":[],"sources":["../../src/variationConfiguration/types.ts"],"sourcesContent":["import {\n ClientConfiguration,\n FeatureFlagType,\n RuleItemType,\n} from 'src/clientConfiguration';\nimport { DataManager } from 'src/kameleoonData';\nimport { KameleoonVisitorDataType } from 'src/kameleoonData/types';\nimport { ExternalPackageInfoType } from 'src/types';\n\nexport type FeatureFlagVariationType = {\n variationKey: string;\n variationId: number | null;\n experimentId: number | null;\n featureFlagId: number;\n featureKey: string;\n rule: RuleItemType | null;\n isTargetedRule?: boolean;\n};\n\nexport type GetVariationParametersType = {\n visitorCode: string;\n visitorIdentifier: string;\n featureFlag: FeatureFlagType;\n targetingData: KameleoonVisitorDataType;\n withAssignment?: boolean;\n packageInfo: ExternalPackageInfoType;\n clientConfiguration: ClientConfiguration;\n dataManager: DataManager;\n};\n"],"mappings":""}
|
|
@@ -21,7 +21,7 @@ export declare class VariationConfiguration implements IVariationConfiguration {
|
|
|
21
21
|
private storage;
|
|
22
22
|
constructor(externalStorage: IExternalStorage<VariationDataType>);
|
|
23
23
|
getStoredVariations(visitorCode: string): Result<FeatureFlagVariationsType, KameleoonError>;
|
|
24
|
-
getVariation({ visitorCode, featureFlag, targetingData, packageInfo, clientConfiguration, dataManager, withAssignment, }: GetVariationParametersType): Result<FeatureFlagVariationType, KameleoonError>;
|
|
24
|
+
getVariation({ visitorCode, visitorIdentifier, featureFlag, targetingData, packageInfo, clientConfiguration, dataManager, withAssignment, }: GetVariationParametersType): Result<FeatureFlagVariationType, KameleoonError>;
|
|
25
25
|
updateStoredVariations(visitorCode: string, variationData: FeatureFlagVariationsType): Result<void, KameleoonError>;
|
|
26
26
|
}
|
|
27
27
|
export {};
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.VariationConfiguration=void 0;var _tsRes=require("ts-res"),_hasher=require("../hasher"),_kameleoonError=require("../kameleoonError"),_utilities=require("../utilities"),_types=require("../clientConfiguration/types"),_excluded=["exposition"];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 ownKeys(a,b){var c=Object.keys(a);if(Object.getOwnPropertySymbols){var d=Object.getOwnPropertySymbols(a);b&&(d=d.filter(function(b){return Object.getOwnPropertyDescriptor(a,b).enumerable})),c.push.apply(c,d)}return c}function _objectSpread(a){for(var b,c=1;c<arguments.length;c++)b=null==arguments[c]?{}:arguments[c],c%2?ownKeys(Object(b),!0).forEach(function(c){_defineProperty(a,c,b[c])}):Object.getOwnPropertyDescriptors?Object.defineProperties(a,Object.getOwnPropertyDescriptors(b)):ownKeys(Object(b)).forEach(function(c){Object.defineProperty(a,c,Object.getOwnPropertyDescriptor(b,c))});return a}function _objectWithoutProperties(a,b){if(null==a)return{};var c,d,e=_objectWithoutPropertiesLoose(a,b);if(Object.getOwnPropertySymbols){var f=Object.getOwnPropertySymbols(a);for(d=0;d<f.length;d++)c=f[d],0<=b.indexOf(c)||Object.prototype.propertyIsEnumerable.call(a,c)&&(e[c]=a[c])}return e}function _objectWithoutPropertiesLoose(a,b){if(null==a)return{};var c,d,e={},f=Object.keys(a);for(d=0;d<f.length;d++)c=f[d],0<=b.indexOf(c)||(e[c]=a[c]);return e}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 _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)}var VariationConfiguration=function(){function a(b){_classCallCheck(this,a),_defineProperty(this,"storage",void 0),this.storage=b}return _createClass(a,[{key:"getStoredVariations",value:function getStoredVariations(a){var b=this.storage.read();if(!b.ok)return b;var c=b.data[a];return c?(0,_tsRes.Ok)(c):(0,_tsRes.Err)(new _kameleoonError.KameleoonError(_kameleoonError.KameleoonException.StorageRead,a))}},{key:"getVariation",value:function getVariation(a){var b=a.visitorCode,c=a.
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.VariationConfiguration=void 0;var _tsRes=require("ts-res"),_hasher=require("../hasher"),_kameleoonError=require("../kameleoonError"),_utilities=require("../utilities"),_types=require("../clientConfiguration/types"),_excluded=["exposition"];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 ownKeys(a,b){var c=Object.keys(a);if(Object.getOwnPropertySymbols){var d=Object.getOwnPropertySymbols(a);b&&(d=d.filter(function(b){return Object.getOwnPropertyDescriptor(a,b).enumerable})),c.push.apply(c,d)}return c}function _objectSpread(a){for(var b,c=1;c<arguments.length;c++)b=null==arguments[c]?{}:arguments[c],c%2?ownKeys(Object(b),!0).forEach(function(c){_defineProperty(a,c,b[c])}):Object.getOwnPropertyDescriptors?Object.defineProperties(a,Object.getOwnPropertyDescriptors(b)):ownKeys(Object(b)).forEach(function(c){Object.defineProperty(a,c,Object.getOwnPropertyDescriptor(b,c))});return a}function _objectWithoutProperties(a,b){if(null==a)return{};var c,d,e=_objectWithoutPropertiesLoose(a,b);if(Object.getOwnPropertySymbols){var f=Object.getOwnPropertySymbols(a);for(d=0;d<f.length;d++)c=f[d],0<=b.indexOf(c)||Object.prototype.propertyIsEnumerable.call(a,c)&&(e[c]=a[c])}return e}function _objectWithoutPropertiesLoose(a,b){if(null==a)return{};var c,d,e={},f=Object.keys(a);for(d=0;d<f.length;d++)c=f[d],0<=b.indexOf(c)||(e[c]=a[c]);return e}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 _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)}var VariationConfiguration=function(){function a(b){_classCallCheck(this,a),_defineProperty(this,"storage",void 0),this.storage=b}return _createClass(a,[{key:"getStoredVariations",value:function getStoredVariations(a){var b=this.storage.read();if(!b.ok)return b;var c=b.data[a];return c?(0,_tsRes.Ok)(c):(0,_tsRes.Err)(new _kameleoonError.KameleoonError(_kameleoonError.KameleoonException.StorageRead,a))}},{key:"getVariation",value:function getVariation(a){var b=a.visitorCode,c=a.visitorIdentifier,d=a.featureFlag,e=a.targetingData,f=a.packageInfo,g=a.clientConfiguration,h=a.dataManager,i=a.withAssignment,j=_utilities.Utilities.validateVisitorCode(b);if(!j.ok)return(0,_tsRes.Err)(j.error);var k,l=d.rules,m=d.featureKey,n=d.id,o=d.defaultVariationKey,p=_createForOfIteratorHelper(l);try{for(p.s();!(k=p.n()).done;){var q=k.value,r=q.segment,s=q.experimentId,t=q.id,u=q.exposition,v=q.respoolTime,w=q.variationByExposition,x=_utilities.Utilities.checkTargeting({segment:r,visitorCode:b,experimentId:s,targetingData:e,packageInfo:f,clientConfiguration:g,dataManager:h,variationConfiguration:this});if(!x.ok)return x;if(x.data){var y=_hasher.Hasher.getHashDouble({visitorIdentifier:c,respoolTime:v,id:t+""});if(y<=u){var z,A=0,B=_hasher.Hasher.getHashDouble({visitorIdentifier:c,respoolTime:v,id:s+""}),C=_createForOfIteratorHelper(w);try{for(C.s();!(z=C.n()).done;){var D=z.value;if(A+=D.exposition,B<=A){void 0!==i&&i&&this.updateStoredVariations(b,_defineProperty({},s,D.variationId));var E=D.exposition,F=_objectWithoutProperties(D,_excluded);return(0,_tsRes.Ok)(_objectSpread(_objectSpread({},F),{},{rule:q,featureFlagId:n,featureKey:m,experimentId:s,isTargetedRule:q.type===_types.RuleType.TARGETED_DELIVERY}))}}}catch(a){C.e(a)}finally{C.f()}}if(q.type===_types.RuleType.TARGETED_DELIVERY)return(0,_tsRes.Ok)({featureKey:m,featureFlagId:n,experimentId:null,variationKey:o,variationId:null,rule:null,isTargetedRule:!0})}}}catch(a){p.e(a)}finally{p.f()}return(0,_tsRes.Ok)({featureKey:m,featureFlagId:n,experimentId:null,variationKey:o,variationId:null,rule:null})}},{key:"updateStoredVariations",value:function updateStoredVariations(a,b){var c=this.storage.read();if(!c.ok&&c.error.type===_kameleoonError.KameleoonException.StorageParse)return c;var d=c.ok?c.data:{};return d[a]?d[a]=_objectSpread(_objectSpread({},d[a]),b):d=_objectSpread(_objectSpread({},d),{},_defineProperty({},a,_objectSpread({},b))),this.storage.write(d)}}]),a}();exports.VariationConfiguration=VariationConfiguration;
|
|
2
2
|
//# sourceMappingURL=variationConfiguration.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"variationConfiguration.js","names":["VariationConfiguration","a","externalStorage","_classCallCheck","_defineProperty","storage","_createClass","key","value","getStoredVariations","visitorCode","result","read","ok","featureFlagVariations","data","Ok","Err","KameleoonError","KameleoonException","StorageRead","getVariation","featureFlag","targetingData","packageInfo","clientConfiguration","dataManager","h","withAssignment","validateResult","Utilities","validateVisitorCode","error","j","rules","featureKey","featureFlagId","id","defaultVariationKey","o","_createForOfIteratorHelper","s","n","done","rule","segment","experimentId","exposition","respoolTime","variationByExposition","targetingResult","checkTargeting","variationConfiguration","ruleHash","Hasher","getHashDouble","y","totalDeviation","variationHash","B","variation","updateStoredVariations","variationId","restParameters","_objectWithoutProperties","_excluded","_objectSpread","e","f","type","RuleType","TARGETED_DELIVERY","variationKey","variationData","StorageParse","updatedVariationData","write","exports"],"sources":["../../src/variationConfiguration/variationConfiguration.ts"],"sourcesContent":["import { Err, Ok, Result } from 'ts-res';\nimport { Hasher } from 'src/hasher';\nimport { KameleoonError, KameleoonException } from 'src/kameleoonError';\nimport { IExternalStorage, VariationDataType } from 'src/storage';\nimport { Utilities } from 'src/utilities';\nimport { RuleType } from 'src/clientConfiguration/types';\nimport { FeatureFlagVariationType, GetVariationParametersType } from './types';\nimport { FeatureFlagVariationsType } from 'src/storage/types';\n\ninterface IVariationConfiguration {\n /**\n * @method getStoredVariations - obtains campaigns with according variations that are *already assigned* and *stored* in the `variationStorage`.\n */\n getStoredVariations(\n visitorCode: string,\n ): Result<FeatureFlagVariationsType, KameleoonError>;\n /**\n * @method updateStoredVariations - updates stored variations for the visitor\n */\n updateStoredVariations: (\n visitorCode: string,\n variationData: FeatureFlagVariationsType,\n ) => void;\n /**\n * @method getVariation - obtains variation for the rule of the feature flag which is both targeted and has a variation, if no such rule was found, returns empty rule with default `variationKey`, given an option `withAssignment` of `true` will also assign a new variation and save it in the storage\n */\n getVariation: (\n params: GetVariationParametersType,\n ) => Result<FeatureFlagVariationType, KameleoonError>;\n}\n\nexport class VariationConfiguration implements IVariationConfiguration {\n private storage: IExternalStorage<VariationDataType>;\n\n constructor(externalStorage: IExternalStorage<VariationDataType>) {\n this.storage = externalStorage;\n }\n\n public getStoredVariations(\n visitorCode: string,\n ): Result<FeatureFlagVariationsType, KameleoonError> {\n const result = this.storage.read();\n\n if (!result.ok) {\n return result;\n }\n\n const featureFlagVariations = result.data[visitorCode];\n\n if (!featureFlagVariations) {\n return Err(\n new KameleoonError(KameleoonException.StorageRead, visitorCode),\n );\n }\n\n return Ok(featureFlagVariations);\n }\n\n public getVariation({\n visitorCode,\n featureFlag,\n targetingData,\n packageInfo,\n clientConfiguration,\n dataManager,\n withAssignment = false,\n }: GetVariationParametersType): Result<\n FeatureFlagVariationType,\n KameleoonError\n > {\n const validateResult = Utilities.validateVisitorCode(visitorCode);\n\n if (!validateResult.ok) {\n return Err(validateResult.error);\n }\n\n const {\n rules,\n featureKey,\n id: featureFlagId,\n defaultVariationKey,\n } = featureFlag;\n\n for (const rule of rules) {\n const {\n segment,\n experimentId,\n id,\n exposition,\n respoolTime,\n variationByExposition,\n } = rule;\n\n // --- Check targeting ---\n const targetingResult = Utilities.checkTargeting({\n segment,\n visitorCode,\n experimentId,\n targetingData,\n packageInfo,\n clientConfiguration,\n dataManager,\n variationConfiguration: this,\n });\n\n if (!targetingResult.ok) {\n return targetingResult;\n }\n\n if (!targetingResult.data) {\n continue;\n }\n\n // --- Note ---\n // Calculate new variation (and assign it if `withAssignment` is `true`)\n // First the the exposed rule is calculated and then the variation inside of it\n const ruleHash = Hasher.getHashDouble({\n visitorCode,\n respoolTime,\n id: String(id),\n });\n\n if (ruleHash <= exposition) {\n let totalDeviation = 0;\n\n const variationHash = Hasher.getHashDouble({\n visitorCode,\n respoolTime,\n id: String(experimentId),\n });\n\n for (const variation of variationByExposition) {\n totalDeviation += variation.exposition;\n\n if (variationHash <= totalDeviation) {\n if (withAssignment) {\n this.updateStoredVariations(visitorCode, {\n [experimentId]: variation.variationId,\n });\n }\n\n const { exposition, ...restParameters } = variation;\n\n return Ok({\n ...restParameters,\n rule,\n featureFlagId,\n featureKey,\n experimentId,\n });\n }\n }\n }\n\n if (rule.type === RuleType.TARGETED_DELIVERY) {\n break;\n }\n }\n\n return Ok({\n featureKey,\n featureFlagId,\n experimentId: null,\n variationKey: defaultVariationKey,\n variationId: null,\n rule: null,\n });\n }\n\n public updateStoredVariations(\n visitorCode: string,\n variationData: FeatureFlagVariationsType,\n ): Result<void, KameleoonError> {\n const result = this.storage.read();\n\n if (!result.ok) {\n // --- Note ---\n // If there is a parsing error we return error\n // But if there is `LocalStorageRead` error it means that\n // data was read successfully and it's empty, which is not problem\n // cause that might be initial `read`\n if (result.error.type === KameleoonException.StorageParse) {\n return result;\n }\n }\n\n let updatedVariationData: VariationDataType = result.ok ? result.data : {};\n\n if (updatedVariationData[visitorCode]) {\n updatedVariationData[visitorCode] = {\n ...updatedVariationData[visitorCode],\n ...variationData,\n };\n } else {\n updatedVariationData = {\n ...updatedVariationData,\n [visitorCode]: {\n ...variationData,\n },\n };\n }\n\n return this.storage.write(updatedVariationData);\n }\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"variationConfiguration.js","names":["VariationConfiguration","a","externalStorage","_classCallCheck","_defineProperty","storage","_createClass","key","value","getStoredVariations","visitorCode","result","read","ok","featureFlagVariations","data","Ok","Err","KameleoonError","KameleoonException","StorageRead","getVariation","visitorIdentifier","featureFlag","targetingData","packageInfo","clientConfiguration","dataManager","i","withAssignment","validateResult","Utilities","validateVisitorCode","error","k","rules","featureKey","featureFlagId","id","defaultVariationKey","p","_createForOfIteratorHelper","s","n","done","rule","segment","experimentId","exposition","respoolTime","variationByExposition","targetingResult","checkTargeting","variationConfiguration","ruleHash","Hasher","getHashDouble","z","totalDeviation","variationHash","C","variation","updateStoredVariations","variationId","restParameters","_objectWithoutProperties","_excluded","_objectSpread","isTargetedRule","type","RuleType","TARGETED_DELIVERY","e","f","variationKey","variationData","StorageParse","updatedVariationData","write","exports"],"sources":["../../src/variationConfiguration/variationConfiguration.ts"],"sourcesContent":["import { Err, Ok, Result } from 'ts-res';\nimport { Hasher } from 'src/hasher';\nimport { KameleoonError, KameleoonException } from 'src/kameleoonError';\nimport { IExternalStorage, VariationDataType } from 'src/storage';\nimport { Utilities } from 'src/utilities';\nimport { RuleType } from 'src/clientConfiguration/types';\nimport { FeatureFlagVariationType, GetVariationParametersType } from './types';\nimport { FeatureFlagVariationsType } from 'src/storage/types';\n\ninterface IVariationConfiguration {\n /**\n * @method getStoredVariations - obtains campaigns with according variations that are *already assigned* and *stored* in the `variationStorage`.\n */\n getStoredVariations(\n visitorCode: string,\n ): Result<FeatureFlagVariationsType, KameleoonError>;\n /**\n * @method updateStoredVariations - updates stored variations for the visitor\n */\n updateStoredVariations: (\n visitorCode: string,\n variationData: FeatureFlagVariationsType,\n ) => void;\n /**\n * @method getVariation - obtains variation for the rule of the feature flag which is both targeted and has a variation, if no such rule was found, returns empty rule with default `variationKey`, given an option `withAssignment` of `true` will also assign a new variation and save it in the storage\n */\n getVariation: (\n params: GetVariationParametersType,\n ) => Result<FeatureFlagVariationType, KameleoonError>;\n}\n\nexport class VariationConfiguration implements IVariationConfiguration {\n private storage: IExternalStorage<VariationDataType>;\n\n constructor(externalStorage: IExternalStorage<VariationDataType>) {\n this.storage = externalStorage;\n }\n\n public getStoredVariations(\n visitorCode: string,\n ): Result<FeatureFlagVariationsType, KameleoonError> {\n const result = this.storage.read();\n\n if (!result.ok) {\n return result;\n }\n\n const featureFlagVariations = result.data[visitorCode];\n\n if (!featureFlagVariations) {\n return Err(\n new KameleoonError(KameleoonException.StorageRead, visitorCode),\n );\n }\n\n return Ok(featureFlagVariations);\n }\n\n public getVariation({\n visitorCode,\n visitorIdentifier,\n featureFlag,\n targetingData,\n packageInfo,\n clientConfiguration,\n dataManager,\n withAssignment = false,\n }: GetVariationParametersType): Result<\n FeatureFlagVariationType,\n KameleoonError\n > {\n const validateResult = Utilities.validateVisitorCode(visitorCode);\n\n if (!validateResult.ok) {\n return Err(validateResult.error);\n }\n\n const {\n rules,\n featureKey,\n id: featureFlagId,\n defaultVariationKey,\n } = featureFlag;\n\n for (const rule of rules) {\n const {\n segment,\n experimentId,\n id,\n exposition,\n respoolTime,\n variationByExposition,\n } = rule;\n\n // --- Check targeting ---\n const targetingResult = Utilities.checkTargeting({\n segment,\n visitorCode,\n experimentId,\n targetingData,\n packageInfo,\n clientConfiguration,\n dataManager,\n variationConfiguration: this,\n });\n\n if (!targetingResult.ok) {\n return targetingResult;\n }\n\n if (!targetingResult.data) {\n continue;\n }\n\n // --- Note ---\n // Calculate new variation (and assign it if `withAssignment` is `true`)\n // First the the exposed rule is calculated and then the variation inside of it\n const ruleHash = Hasher.getHashDouble({\n visitorIdentifier,\n respoolTime,\n id: String(id),\n });\n\n if (ruleHash <= exposition) {\n let totalDeviation = 0;\n\n const variationHash = Hasher.getHashDouble({\n visitorIdentifier,\n respoolTime,\n id: String(experimentId),\n });\n\n for (const variation of variationByExposition) {\n totalDeviation += variation.exposition;\n\n if (variationHash <= totalDeviation) {\n if (withAssignment) {\n this.updateStoredVariations(visitorCode, {\n [experimentId]: variation.variationId,\n });\n }\n\n const { exposition, ...restParameters } = variation;\n\n return Ok({\n ...restParameters,\n rule,\n featureFlagId,\n featureKey,\n experimentId,\n isTargetedRule: rule.type === RuleType.TARGETED_DELIVERY,\n });\n }\n }\n }\n\n if (rule.type === RuleType.TARGETED_DELIVERY) {\n return Ok({\n featureKey,\n featureFlagId,\n experimentId: null,\n variationKey: defaultVariationKey,\n variationId: null,\n rule: null,\n isTargetedRule: true,\n });\n }\n }\n\n return Ok({\n featureKey,\n featureFlagId,\n experimentId: null,\n variationKey: defaultVariationKey,\n variationId: null,\n rule: null,\n });\n }\n\n public updateStoredVariations(\n visitorCode: string,\n variationData: FeatureFlagVariationsType,\n ): Result<void, KameleoonError> {\n const result = this.storage.read();\n\n if (!result.ok) {\n // --- Note ---\n // If there is a parsing error we return error\n // But if there is `LocalStorageRead` error it means that\n // data was read successfully and it's empty, which is not problem\n // cause that might be initial `read`\n if (result.error.type === KameleoonException.StorageParse) {\n return result;\n }\n }\n\n let updatedVariationData: VariationDataType = result.ok ? result.data : {};\n\n if (updatedVariationData[visitorCode]) {\n updatedVariationData[visitorCode] = {\n ...updatedVariationData[visitorCode],\n ...variationData,\n };\n } else {\n updatedVariationData = {\n ...updatedVariationData,\n [visitorCode]: {\n ...variationData,\n },\n };\n }\n\n return this.storage.write(updatedVariationData);\n }\n}\n"],"mappings":"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"}
|