@kameleoon/javascript-sdk-core 4.3.0 → 4.4.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.
Files changed (67) hide show
  1. package/CHANGELOG.md +11 -0
  2. package/README.md +0 -2
  3. package/dist/clientConfiguration/clientConfiguration.d.ts +2 -2
  4. package/dist/clientConfiguration/clientConfiguration.js +1 -1
  5. package/dist/clientConfiguration/clientConfiguration.js.map +1 -1
  6. package/dist/clientConfiguration/constants.js +1 -1
  7. package/dist/clientConfiguration/constants.js.map +1 -1
  8. package/dist/clientConfiguration/types.d.ts +1 -2
  9. package/dist/clientConfiguration/types.js.map +1 -1
  10. package/dist/clientSettings/clientSettings.d.ts +11 -1
  11. package/dist/clientSettings/clientSettings.js +1 -1
  12. package/dist/clientSettings/clientSettings.js.map +1 -1
  13. package/dist/clientSettings/types.d.ts +5 -1
  14. package/dist/clientSettings/types.js.map +1 -1
  15. package/dist/eventSource/eventSource.js +1 -1
  16. package/dist/eventSource/eventSource.js.map +1 -1
  17. package/dist/index.d.ts +3 -4
  18. package/dist/index.js +1 -1
  19. package/dist/index.js.map +1 -1
  20. package/dist/kameleoonClient.d.ts +1 -1
  21. package/dist/kameleoonClient.js +1 -1
  22. package/dist/kameleoonClient.js.map +1 -1
  23. package/dist/kameleoonClientInterface.d.ts +1 -1
  24. package/dist/kameleoonClientInterface.js.map +1 -1
  25. package/dist/kameleoonData/dataManager.d.ts +2 -2
  26. package/dist/kameleoonData/dataManager.js +1 -1
  27. package/dist/kameleoonData/dataManager.js.map +1 -1
  28. package/dist/kameleoonData/dataProcessor.d.ts +2 -2
  29. package/dist/kameleoonData/dataProcessor.js +1 -1
  30. package/dist/kameleoonData/dataProcessor.js.map +1 -1
  31. package/dist/kameleoonData/index.d.ts +0 -1
  32. package/dist/kameleoonData/index.js +1 -1
  33. package/dist/kameleoonData/index.js.map +1 -1
  34. package/dist/kameleoonData/types.d.ts +1 -1
  35. package/dist/kameleoonData/types.js.map +1 -1
  36. package/dist/kameleoonUtils.d.ts +29 -5
  37. package/dist/kameleoonUtils.js +1 -1
  38. package/dist/kameleoonUtils.js.map +1 -1
  39. package/dist/requester/constants.d.ts +1 -8
  40. package/dist/requester/constants.js +1 -1
  41. package/dist/requester/constants.js.map +1 -1
  42. package/dist/requester/index.d.ts +2 -2
  43. package/dist/requester/index.js +1 -1
  44. package/dist/requester/index.js.map +1 -1
  45. package/dist/requester/requester.d.ts +6 -2
  46. package/dist/requester/requester.js +1 -1
  47. package/dist/requester/requester.js.map +1 -1
  48. package/dist/requester/types.d.ts +96 -19
  49. package/dist/requester/types.js +1 -1
  50. package/dist/requester/types.js.map +1 -1
  51. package/dist/requester/urlProvider.d.ts +8 -5
  52. package/dist/requester/urlProvider.js +1 -1
  53. package/dist/requester/urlProvider.js.map +1 -1
  54. package/dist/types.d.ts +17 -5
  55. package/dist/types.js +1 -1
  56. package/dist/types.js.map +1 -1
  57. package/dist/utilities/constants.d.ts +1 -0
  58. package/dist/utilities/constants.js +1 -1
  59. package/dist/utilities/constants.js.map +1 -1
  60. package/dist/utilities/utilities.js +1 -1
  61. package/dist/utilities/utilities.js.map +1 -1
  62. package/dist/visitorCodeManager/visitorCodeManager.js +1 -1
  63. package/dist/visitorCodeManager/visitorCodeManager.js.map +1 -1
  64. package/package.json +2 -2
  65. package/dist/kameleoonData/constants.d.ts +0 -4
  66. package/dist/kameleoonData/constants.js +0 -2
  67. package/dist/kameleoonData/constants.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"dataProcessor.js","names":["DataProcessor","constructor","storage","_defineProperty","Set","updateData","visitorCode","dataItem","storageData","read","or","dereferencedData","dereferenceTargetingData","visitorReference","data","type","KameleoonData","CustomData","hasCustomDataKey","parameters","key","nestedKey","index","toString","value","updateNestedField","createNestedField","storedCustomDataIndexes","add","PageView","f","timestamps","length","Date","now","existingData","urlAddress","forEach","timestamp","Utilities","insertInOrderedListMutably","list","element","order","Order","Ascending","referrers","title","_objectSpread","Conversion","hasConversionDataKey","updateArrayField","createArrayField","VisitsData","hasVisitsKey","existingVisits","visits","visit","updateField","createField","hasDataKey","storedDataTypes","write","createReference","linkedVisitor","ok","getLinkedVisitor","visitorData","customData","cleanupOutdatedTargetingData","targetingCleanupInterval","targetingData","targetingDataLifetime","Milliseconds","Minute","DEFAULT_CLEANUP_INTERVAL","currentTime","Object","keys","kameleoonVisitorData","entries","pageView","conversion","rest","_objectWithoutProperties","_excluded","isDataExpired","lastActivityTime","delete","clear","url","splice","indexOf","getTargetingData","Err","error","Ok","referredVisitorCode","storedDataTypeList","storedCustomDataIndexList","a","push","b","exports"],"sources":["../../src/kameleoonData/dataProcessor.ts"],"sourcesContent":["import { Err, Ok, Result } from 'ts-res';\nimport { IStorage } from 'src/storage';\nimport {\n DereferencedTargetingDataType,\n TargetingDataType,\n VisitorReference,\n} from 'src/targeting';\nimport { KameleoonError } from 'src/kameleoonError';\nimport { Utilities } from 'src/utilities';\nimport { Order } from 'src/utilities/types';\nimport { Milliseconds } from 'src/types';\nimport { DEFAULT_CLEANUP_INTERVAL } from './constants';\nimport {\n ArrayFieldParametersType,\n ConversionDataType,\n CustomDataType,\n DereferenceTargetingDataResultType,\n ExistingArrayDataType,\n ExistingDataType,\n ExistingNestedDataType,\n ExistingPageViewDataType,\n ExistingVisitsDataType,\n FieldParametersType,\n KameleoonData,\n KameleoonDataType,\n KameleoonVisitorDataType,\n NestedFieldParametersType,\n PageViewDataType,\n VisitsDataType,\n} from './types';\n\ninterface IDataProcessor {\n updateData(\n visitorCode: string,\n dataItem: KameleoonDataType,\n ): Result<void, KameleoonError>;\n createReference(visitorCode: string, linkedVisitor: VisitorReference): void;\n cleanupOutdatedTargetingData(targetingCleanupInterval?: number): void;\n getTargetingData(\n visitorCode: string,\n ): Result<KameleoonVisitorDataType | null, KameleoonError>;\n getLinkedVisitor(visitorCode: string, index: number): string | null;\n}\n\nexport class DataProcessor implements IDataProcessor {\n private storage: IStorage<TargetingDataType>;\n private storedDataTypes: Set<KameleoonData> = new Set([]);\n private storedCustomDataIndexes: Set<number> = new Set([]);\n\n constructor(storage: IStorage<TargetingDataType>) {\n this.storage = storage;\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 `targetingData` types by using assertion functions\n public updateData(\n visitorCode: string,\n dataItem: KameleoonDataType,\n ): Result<void, KameleoonError> {\n const storageData = this.storage.read().or({});\n const dereferencedData = this.dereferenceTargetingData(\n storageData,\n visitorCode,\n );\n const visitorReference = dereferencedData?.visitorReference || visitorCode;\n\n switch (dataItem.data.type) {\n case KameleoonData.CustomData: {\n const data = dataItem.data as CustomDataType;\n const hasCustomDataKey =\n dereferencedData && KameleoonData.CustomData in dereferencedData.data;\n const parameters: NestedFieldParametersType = {\n visitorCode: visitorReference,\n data: storageData as DereferencedTargetingDataType,\n key: KameleoonData.CustomData,\n nestedKey: data.index.toString(),\n value: data,\n };\n\n if (hasCustomDataKey) {\n this.updateNestedField(parameters);\n } else {\n this.createNestedField(parameters);\n }\n\n // --- Note ---\n // Here we add CustomData index to storedCustomDataIndexes to later track if it is added to storage\n this.storedCustomDataIndexes.add(data.index);\n\n break;\n }\n case KameleoonData.PageView: {\n const data = dataItem.data as PageViewDataType;\n\n // --- Note ---\n // We assign `timestamps` to `Date.now()` if it's empty\n // Not upon data item creation because it makes no sense in terms\n // of data flow to have some indication of data activity before it was added\n if (!data.timestamps.length) {\n data.timestamps = [Date.now()];\n }\n\n const existingData =\n dereferencedData &&\n KameleoonData.PageView in dereferencedData.data &&\n (dereferencedData.data[data.type] as ExistingPageViewDataType)?.[\n data.urlAddress\n ];\n\n const parameters: NestedFieldParametersType = {\n visitorCode: visitorReference,\n data: storageData as DereferencedTargetingDataType,\n key: KameleoonData.PageView,\n nestedKey: data.urlAddress,\n value: data,\n };\n\n if (existingData) {\n // --- Note ---\n // Updating existing `PageView` properties by pushing new timestamps\n // and potentially changing referrers and title\n data.timestamps.forEach((timestamp) => {\n Utilities.insertInOrderedListMutably({\n list: existingData.timestamps,\n element: timestamp,\n order: Order.Ascending,\n });\n });\n\n [existingData.referrers, existingData.title] = [\n data.referrers,\n data.title,\n ];\n\n this.updateNestedField({ ...parameters, value: existingData });\n } else {\n this.createNestedField(parameters);\n }\n\n break;\n }\n case KameleoonData.Conversion: {\n const data = dataItem.data as ConversionDataType;\n const hasConversionDataKey =\n dereferencedData && KameleoonData.Conversion in dereferencedData.data;\n const parameters: ArrayFieldParametersType = {\n visitorCode: visitorReference,\n data: storageData as DereferencedTargetingDataType,\n key: KameleoonData.Conversion,\n value: data,\n };\n\n if (hasConversionDataKey) {\n this.updateArrayField(parameters);\n } else {\n this.createArrayField(parameters);\n }\n\n break;\n }\n case KameleoonData.VisitsData: {\n const data = dataItem.data as VisitsDataType;\n const hasVisitsKey =\n dereferencedData && KameleoonData.VisitsData in dereferencedData.data;\n const parameters: FieldParametersType = {\n visitorCode: visitorReference,\n data: storageData as DereferencedTargetingDataType,\n key: KameleoonData.VisitsData,\n value: data,\n };\n\n // -- Change directly if `[key]` exists\n if (hasVisitsKey) {\n const existingVisits = dereferencedData.data[\n data.type\n ] as ExistingVisitsDataType;\n\n // --- Note ---\n // We are preserving the order of visits\n existingVisits.visits.forEach((visit) => {\n Utilities.insertInOrderedListMutably({\n list: data.visits,\n element: visit,\n order: Order.Ascending,\n });\n });\n\n this.updateField({\n ...parameters,\n value: {\n ...data,\n visits: data.visits,\n },\n });\n } else {\n this.createField(parameters);\n }\n\n break;\n }\n default: {\n const { data } = dataItem;\n const hasDataKey =\n dereferencedData && data.type in dereferencedData.data;\n const parameters: FieldParametersType = {\n visitorCode: visitorReference,\n data: storageData as DereferencedTargetingDataType,\n key: data.type,\n // --- Note ---\n // At this point TypeScript can not infer that value is subset of only\n // what is left for `default` case\n value: data as FieldParametersType['value'],\n };\n\n if (hasDataKey) {\n this.updateField(parameters);\n } else {\n this.createField(parameters);\n }\n\n // --- Note ---\n // Here we add Browser, Device, Geolocation, OperatingSystem, KameleoonConversionScore to storedDataTypes\n // Later track if it is added to storage\n this.storedDataTypes.add(data.type);\n }\n }\n\n return this.storage.write(storageData);\n }\n\n public createReference(\n visitorCode: string,\n linkedVisitor: VisitorReference,\n ): void {\n const storageData = this.storage.read();\n\n if (!storageData.ok) {\n return;\n }\n\n // --- Note ---\n // Provided(linked) visitor is now pointing to the visitor code\n storageData.data[linkedVisitor] = visitorCode;\n\n this.storage.write(storageData.data);\n }\n\n public getLinkedVisitor(\n visitorCode: string,\n index: number | null,\n ): string | null {\n const storageData = this.storage.read();\n\n if (!storageData.ok) {\n return null;\n }\n\n if (typeof storageData.data[visitorCode] === 'string') {\n return storageData.data[visitorCode] as string;\n }\n\n if (index === null) {\n return null;\n }\n\n const visitorData = storageData.data[\n visitorCode\n ] as KameleoonVisitorDataType;\n\n if (!visitorData) {\n return null;\n }\n\n const customData = visitorData[KameleoonData.CustomData];\n\n if (customData && customData[index]) {\n return (customData[index] as CustomDataType).value[0];\n }\n\n return null;\n }\n\n public cleanupOutdatedTargetingData(targetingCleanupInterval?: number): void {\n const storageData = this.storage.read();\n\n if (!storageData.ok) {\n return;\n }\n\n const targetingData = storageData.data;\n const targetingDataLifetime = targetingCleanupInterval\n ? targetingCleanupInterval * Milliseconds.Minute\n : DEFAULT_CLEANUP_INTERVAL * Milliseconds.Minute;\n\n const currentTime = Date.now();\n\n // --- Note (Weird Thing) ---\n // Generally the check is not needed\n // If the `targetingData` is empty the loop will not be executed\n // But here something weird happens and we'are getting `TypeError` here\n // Even logging `Object.keys().length` or `Object.entries().length` solves the issue somehow\n // You can see the issue by commenting the following `if` statement and waiting for a data cleanup\n // TODO: investigate it later (probably related to object copying?)\n if (!Object.keys(targetingData).length) {\n return;\n }\n\n for (const [visitorCode, kameleoonVisitorData] of Object.entries(\n targetingData,\n )) {\n if (typeof kameleoonVisitorData === 'string') {\n delete targetingData[visitorCode];\n continue;\n }\n\n const visitorData = kameleoonVisitorData;\n\n const { customData, pageView, conversion, ...rest } = visitorData;\n\n // TODO: This way of cleaning up data is not optimal\n // And will be changed when sessions are introduced\n if (customData) {\n for (const [index, dataItem] of Object.entries(customData)) {\n if (dataItem) {\n const isDataExpired =\n dataItem.lastActivityTime + targetingDataLifetime < currentTime;\n const existingData = visitorData[KameleoonData.CustomData];\n\n if (isDataExpired && existingData) {\n this.storedCustomDataIndexes.delete(Number(index));\n delete existingData[Number(index)];\n }\n\n if (existingData && !Object.keys(existingData).length) {\n this.storedCustomDataIndexes.clear();\n delete targetingData[KameleoonData.CustomData];\n }\n }\n }\n }\n\n if (pageView) {\n for (const [url, dataItem] of Object.entries(pageView)) {\n const isDataExpired =\n dataItem.lastActivityTime + targetingDataLifetime < currentTime;\n const existingData = visitorData[KameleoonData.PageView];\n\n if (isDataExpired && existingData) {\n delete existingData[url];\n }\n\n if (existingData && !Object.keys(existingData).length) {\n delete visitorData[KameleoonData.PageView];\n }\n }\n }\n\n if (conversion) {\n for (const dataItem of conversion) {\n const isDataExpired =\n dataItem.lastActivityTime + targetingDataLifetime < currentTime;\n const existingData = visitorData[KameleoonData.Conversion];\n\n if (isDataExpired && existingData) {\n existingData.splice(existingData.indexOf(dataItem), 1);\n }\n\n if (existingData && !existingData.length) {\n delete visitorData[KameleoonData.Conversion];\n }\n }\n }\n\n for (const [key, dataItem] of Object.entries(rest)) {\n const isDataExpired =\n dataItem.lastActivityTime + targetingDataLifetime < currentTime;\n\n if (isDataExpired) {\n delete visitorData[key as KameleoonData];\n this.storedDataTypes.delete(key as KameleoonData);\n }\n }\n\n if (!Object.keys(targetingData[visitorCode]).length) {\n this.storedDataTypes.clear();\n this.storedCustomDataIndexes.clear();\n delete targetingData[visitorCode];\n }\n }\n\n this.storage.write(targetingData);\n }\n\n public getTargetingData(\n visitorCode: string,\n ): Result<KameleoonVisitorDataType | null, KameleoonError> {\n const storageData = this.storage.read();\n\n if (!storageData.ok) {\n return Err(storageData.error);\n }\n\n const dereferencedData = this.dereferenceTargetingData(\n storageData.data,\n visitorCode,\n );\n\n if (!dereferencedData) {\n return Ok(null);\n }\n\n return Ok(dereferencedData.data);\n }\n\n private dereferenceTargetingData(\n data: TargetingDataType,\n visitorCode: string,\n ): DereferenceTargetingDataResultType | null {\n if (!data[visitorCode]) {\n return null;\n }\n\n // --- Note ---\n // Visitor reference can not refer to another visitor reference\n if (typeof data[visitorCode] === 'string') {\n const referredVisitorCode = data[visitorCode] as VisitorReference;\n\n return {\n data: data[referredVisitorCode] as KameleoonVisitorDataType,\n visitorReference: referredVisitorCode,\n };\n }\n\n return {\n data: data[visitorCode] as KameleoonVisitorDataType,\n visitorReference: visitorCode,\n };\n }\n\n get storedDataTypeList(): Set<KameleoonData> {\n return this.storedDataTypes;\n }\n\n get storedCustomDataIndexList(): Set<number> {\n return this.storedCustomDataIndexes;\n }\n\n private updateField({\n visitorCode,\n key,\n value,\n data,\n }: FieldParametersType): void {\n (data[visitorCode][key] as ExistingDataType<typeof key>) = {\n ...value,\n lastActivityTime: Date.now(),\n };\n }\n\n private createField({\n visitorCode,\n key,\n value,\n data,\n }: FieldParametersType): void {\n data[visitorCode] = {\n ...data[visitorCode],\n [key]: { ...value, lastActivityTime: Date.now() },\n };\n }\n\n private updateArrayField({\n visitorCode,\n key,\n value,\n data,\n }: ArrayFieldParametersType): void {\n (data[visitorCode][key] as ExistingArrayDataType).push({\n ...value,\n lastActivityTime: Date.now(),\n });\n }\n\n private createArrayField({\n visitorCode,\n key,\n value,\n data,\n }: ArrayFieldParametersType): void {\n data[visitorCode] = {\n ...data[visitorCode],\n [key]: [{ ...value, lastActivityTime: Date.now() }],\n };\n }\n\n private updateNestedField({\n visitorCode,\n key,\n nestedKey,\n value,\n data,\n }: NestedFieldParametersType): void {\n (data[visitorCode][key] as ExistingNestedDataType)[nestedKey] = {\n ...value,\n lastActivityTime: Date.now(),\n };\n }\n\n private createNestedField({\n visitorCode,\n key,\n nestedKey,\n value,\n data,\n }: NestedFieldParametersType): void {\n if (!data[visitorCode]?.[key]) {\n data[visitorCode] = {\n ...data[visitorCode],\n [key]: {\n [nestedKey]: { ...value, lastActivityTime: Date.now() },\n },\n };\n } else {\n data[visitorCode] = {\n ...data[visitorCode],\n [key]: {\n ...data[visitorCode][key],\n [nestedKey]: { ...value, lastActivityTime: Date.now() },\n },\n };\n }\n }\n}\n"],"mappings":"i4DA4CO,KAAM,CAAAA,aAAwC,CAKnDC,WAAWA,CAACC,CAAoC,CAAE,CAAAC,eAAA,wBAAAA,eAAA,wBAHJ,GAAI,CAAAC,GAAG,CAAC,EAAE,CAAC,EAAAD,eAAA,gCACV,GAAI,CAAAC,GAAG,CAAC,EAAE,CAAC,EAGxD,IAAI,CAACF,OAAO,CAAGA,CACjB,CAOOG,UAAUA,CACfC,CAAmB,CACnBC,CAA2B,CACG,MACxB,CAAAC,CAAW,CAAG,IAAI,CAACN,OAAO,CAACO,IAAI,CAAC,CAAC,CAACC,EAAE,CAAC,CAAC,CAAC,CAAC,CACxCC,CAAgB,CAAG,IAAI,CAACC,wBAAwB,CACpDJ,CAAW,CACXF,CACF,CAAC,CACKO,CAAgB,CAAG,QAAAF,CAAgB,WAAhBA,CAAgB,QAAhBA,CAAgB,CAAEE,gBAAgB,GAAIP,CAAW,CAE1E,OAAQC,CAAQ,CAACO,IAAI,CAACC,IAAI,EACxB,IAAK,CAAAC,qBAAa,CAACC,UAAU,CAAE,MACvB,CAAAH,CAAI,CAAGP,CAAQ,CAACO,IAAsB,CACtCI,CAAgB,CACpBP,CAAgB,EAAIK,qBAAa,CAACC,UAAU,GAAI,CAAAN,CAAgB,CAACG,IAAI,CACjEK,CAAqC,CAAG,CAC5Cb,WAAW,CAAEO,CAAgB,CAC7BC,IAAI,CAAEN,CAA4C,CAClDY,GAAG,CAAEJ,qBAAa,CAACC,UAAU,CAC7BI,SAAS,CAAEP,CAAI,CAACQ,KAAK,CAACC,QAAQ,CAAC,CAAC,CAChCC,KAAK,CAAEV,CACT,CAAC,CAEGI,CAAgB,CAClB,IAAI,CAACO,iBAAiB,CAACN,CAAU,CAAC,CAElC,IAAI,CAACO,iBAAiB,CAACP,CAAU,CAAC,CAKpC,IAAI,CAACQ,uBAAuB,CAACC,GAAG,CAACd,CAAI,CAACQ,KAAK,CAAC,CAE5C,KACF,CACA,IAAK,CAAAN,qBAAa,CAACa,QAAQ,CAAE,KAAAC,CAAA,CAC3B,KAAM,CAAAhB,CAAI,CAAGP,CAAQ,CAACO,IAAwB,CAMzCA,CAAI,CAACiB,UAAU,CAACC,MAAM,GACzBlB,CAAI,CAACiB,UAAU,CAAG,CAACE,IAAI,CAACC,GAAG,CAAC,CAAC,CAAC,OAG1B,CAAAC,CAAY,CAChBxB,CAAgB,EAChBK,qBAAa,CAACa,QAAQ,GAAI,CAAAlB,CAAgB,CAACG,IAAI,WAAAgB,CAAA,CAC9CnB,CAAgB,CAACG,IAAI,CAACA,CAAI,CAACC,IAAI,CAAC,YAAAe,CAAA,QAAjCA,CAAA,CACEhB,CAAI,CAACsB,UAAU,CAChB,EAEGjB,CAAqC,CAAG,CAC5Cb,WAAW,CAAEO,CAAgB,CAC7BC,IAAI,CAAEN,CAA4C,CAClDY,GAAG,CAAEJ,qBAAa,CAACa,QAAQ,CAC3BR,SAAS,CAAEP,CAAI,CAACsB,UAAU,CAC1BZ,KAAK,CAAEV,CACT,CAAC,CAEGqB,CAAY,EAIdrB,CAAI,CAACiB,UAAU,CAACM,OAAO,CAAEC,CAAS,EAAK,CACrCC,oBAAS,CAACC,0BAA0B,CAAC,CACnCC,IAAI,CAAEN,CAAY,CAACJ,UAAU,CAC7BW,OAAO,CAAEJ,CAAS,CAClBK,KAAK,CAAEC,YAAK,CAACC,SACf,CAAC,CACH,CAAC,CAAC,CAEF,CAACV,CAAY,CAACW,SAAS,CAAEX,CAAY,CAACY,KAAK,CAAC,CAAG,CAC7CjC,CAAI,CAACgC,SAAS,CACdhC,CAAI,CAACiC,KAAK,CACX,CAED,IAAI,CAACtB,iBAAiB,CAAAuB,aAAA,CAAAA,aAAA,IAAM7B,CAAU,MAAEK,KAAK,CAAEW,CAAY,EAAE,CAAC,EAE9D,IAAI,CAACT,iBAAiB,CAACP,CAAU,CAAC,CAGpC,KACF,CACA,IAAK,CAAAH,qBAAa,CAACiC,UAAU,CAAE,MACvB,CAAAnC,CAAI,CAAGP,CAAQ,CAACO,IAA0B,CAC1CoC,CAAoB,CACxBvC,CAAgB,EAAIK,qBAAa,CAACiC,UAAU,GAAI,CAAAtC,CAAgB,CAACG,IAAI,CACjEK,CAAoC,CAAG,CAC3Cb,WAAW,CAAEO,CAAgB,CAC7BC,IAAI,CAAEN,CAA4C,CAClDY,GAAG,CAAEJ,qBAAa,CAACiC,UAAU,CAC7BzB,KAAK,CAAEV,CACT,CAAC,CAEGoC,CAAoB,CACtB,IAAI,CAACC,gBAAgB,CAAChC,CAAU,CAAC,CAEjC,IAAI,CAACiC,gBAAgB,CAACjC,CAAU,CAAC,CAGnC,KACF,CACA,IAAK,CAAAH,qBAAa,CAACqC,UAAU,CAAE,MACvB,CAAAvC,CAAI,CAAGP,CAAQ,CAACO,IAAsB,CACtCwC,CAAY,CAChB3C,CAAgB,EAAIK,qBAAa,CAACqC,UAAU,GAAI,CAAA1C,CAAgB,CAACG,IAAI,CACjEK,CAA+B,CAAG,CACtCb,WAAW,CAAEO,CAAgB,CAC7BC,IAAI,CAAEN,CAA4C,CAClDY,GAAG,CAAEJ,qBAAa,CAACqC,UAAU,CAC7B7B,KAAK,CAAEV,CACT,CAAC,CAGD,GAAIwC,CAAY,CAAE,CAChB,KAAM,CAAAC,CAAc,CAAG5C,CAAgB,CAACG,IAAI,CAC1CA,CAAI,CAACC,IAAI,CACgB,CAI3BwC,CAAc,CAACC,MAAM,CAACnB,OAAO,CAAEoB,CAAK,EAAK,CACvClB,oBAAS,CAACC,0BAA0B,CAAC,CACnCC,IAAI,CAAE3B,CAAI,CAAC0C,MAAM,CACjBd,OAAO,CAAEe,CAAK,CACdd,KAAK,CAAEC,YAAK,CAACC,SACf,CAAC,CACH,CAAC,CAAC,CAEF,IAAI,CAACa,WAAW,CAAAV,aAAA,CAAAA,aAAA,IACX7B,CAAU,MACbK,KAAK,CAAAwB,aAAA,CAAAA,aAAA,IACAlC,CAAI,MACP0C,MAAM,CAAE1C,CAAI,CAAC0C,MAAM,EACpB,EACF,CACH,CAAC,IACC,KAAI,CAACG,WAAW,CAACxC,CAAU,CAAC,CAG9B,KACF,CACA,QAAS,MACD,CAAEL,IAAI,CAAJA,CAAK,CAAC,CAAGP,CAAQ,CACnBqD,CAAU,CACdjD,CAAgB,EAAIG,CAAI,CAACC,IAAI,GAAI,CAAAJ,CAAgB,CAACG,IAAI,CAClDK,CAA+B,CAAG,CACtCb,WAAW,CAAEO,CAAgB,CAC7BC,IAAI,CAAEN,CAA4C,CAClDY,GAAG,CAAEN,CAAI,CAACC,IAAI,CAIdS,KAAK,CAAEV,CACT,CAAC,CAEG8C,CAAU,CACZ,IAAI,CAACF,WAAW,CAACvC,CAAU,CAAC,CAE5B,IAAI,CAACwC,WAAW,CAACxC,CAAU,CAAC,CAM9B,IAAI,CAAC0C,eAAe,CAACjC,GAAG,CAACd,CAAI,CAACC,IAAI,CACpC,CACF,CAEA,MAAO,KAAI,CAACb,OAAO,CAAC4D,KAAK,CAACtD,CAAW,CACvC,CAEOuD,eAAeA,CACpBzD,CAAmB,CACnB0D,CAA+B,CACzB,CACN,KAAM,CAAAxD,CAAW,CAAG,IAAI,CAACN,OAAO,CAACO,IAAI,CAAC,CAAC,CAElCD,CAAW,CAACyD,EAAE,GAMnBzD,CAAW,CAACM,IAAI,CAACkD,CAAa,CAAC,CAAG1D,CAAW,CAE7C,IAAI,CAACJ,OAAO,CAAC4D,KAAK,CAACtD,CAAW,CAACM,IAAI,CAAC,CACtC,CAEOoD,gBAAgBA,CACrB5D,CAAmB,CACnBgB,CAAoB,CACL,CACf,KAAM,CAAAd,CAAW,CAAG,IAAI,CAACN,OAAO,CAACO,IAAI,CAAC,CAAC,CAEvC,GAAI,CAACD,CAAW,CAACyD,EAAE,CACjB,MAAO,KAAI,CAGb,GAA6C,QAAQ,EAAjD,MAAO,CAAAzD,CAAW,CAACM,IAAI,CAACR,CAAW,CAAc,CACnD,MAAO,CAAAE,CAAW,CAACM,IAAI,CAACR,CAAW,CAAC,CAGtC,GAAc,IAAI,GAAdgB,CAAc,CAChB,MAAO,KAAI,CAGb,KAAM,CAAA6C,CAAW,CAAG3D,CAAW,CAACM,IAAI,CAClCR,CAAW,CACgB,CAE7B,GAAI,CAAC6D,CAAW,CACd,MAAO,KAAI,CAGb,KAAM,CAAAC,CAAU,CAAGD,CAAW,CAACnD,qBAAa,CAACC,UAAU,CAAC,CAAC,MAErD,CAAAmD,CAAU,EAAIA,CAAU,CAAC9C,CAAK,CAAC,CACzB8C,CAAU,CAAC9C,CAAK,CAAC,CAAoBE,KAAK,CAAC,CAAC,CAAC,CAGhD,IACT,CAEO6C,4BAA4BA,CAACC,CAAiC,CAAQ,CAC3E,KAAM,CAAA9D,CAAW,CAAG,IAAI,CAACN,OAAO,CAACO,IAAI,CAAC,CAAC,CAEvC,GAAI,CAACD,CAAW,CAACyD,EAAE,CACjB,OACD,KAEK,CAAAM,CAAa,CAAG/D,CAAW,CAACM,IAAI,CAChC0D,CAAqB,CAAGF,CAAwB,CAClDA,CAAwB,CAAGG,oBAAY,CAACC,MAAM,CAC9CC,mCAAwB,CAAGF,oBAAY,CAACC,MAAM,CAE5CE,CAAW,CAAG3C,IAAI,CAACC,GAAG,CAAC,CAAC,CAS9B,GAAK2C,MAAM,CAACC,IAAI,CAACP,CAAa,CAAC,CAACvC,MAAM,EAItC,IAAK,KAAM,CAAC1B,CAAW,CAAEyE,CAAoB,CAAC,EAAI,CAAAF,MAAM,CAACG,OAAO,CAC9DT,CACF,CAAC,CAAE,CACD,GAAoC,QAAQ,EAAxC,MAAO,CAAAQ,CAAiC,CAAE,CAC5C,MAAO,CAAAR,CAAa,CAACjE,CAAW,CAAC,CACjC,QACF,CAAC,KAEK,CAAA6D,CAAW,CAAGY,CAAoB,CAElC,CAAEX,UAAU,CAAVA,CAAU,CAAEa,QAAQ,CAARA,CAAQ,CAAEC,UAAU,CAAVA,CAAoB,CAAC,CAAGf,CAAW,CAApBgB,CAAI,CAAAC,wBAAA,CAAKjB,CAAW,CAAAkB,SAAA,EAIjE,GAAIjB,CAAU,CACZ,IAAK,KAAM,CAAC9C,CAAK,CAAEf,CAAQ,CAAC,EAAI,CAAAsE,MAAM,CAACG,OAAO,CAACZ,CAAU,CAAC,CACxD,GAAI7D,CAAQ,CAAE,MACN,CAAA+E,CAAa,CACjB/E,CAAQ,CAACgF,gBAAgB,CAAGf,CAAqB,CAAGI,CAAW,CAC3DzC,CAAY,CAAGgC,CAAW,CAACnD,qBAAa,CAACC,UAAU,CAAC,CAEtDqE,CAAa,EAAInD,CAAY,GAC/B,IAAI,CAACR,uBAAuB,CAAC6D,MAAM,EAAQlE,CAAM,CAAC,CAClD,MAAO,CAAAa,CAAY,EAAQb,CAAK,CAAE,EAGhCa,CAAY,EAAI,CAAC0C,MAAM,CAACC,IAAI,CAAC3C,CAAY,CAAC,CAACH,MAAM,GACnD,IAAI,CAACL,uBAAuB,CAAC8D,KAAK,CAAC,CAAC,CACpC,MAAO,CAAAlB,CAAa,CAACvD,qBAAa,CAACC,UAAU,CAAC,CAElD,CAIJ,GAAIgE,CAAQ,CACV,IAAK,KAAM,CAACS,CAAG,CAAEnF,CAAQ,CAAC,EAAI,CAAAsE,MAAM,CAACG,OAAO,CAACC,CAAQ,CAAC,CAAE,MAChD,CAAAK,CAAa,CACjB/E,CAAQ,CAACgF,gBAAgB,CAAGf,CAAqB,CAAGI,CAAW,CAC3DzC,CAAY,CAAGgC,CAAW,CAACnD,qBAAa,CAACa,QAAQ,CAAC,CAEpDyD,CAAa,EAAInD,CAAY,EAC/B,MAAO,CAAAA,CAAY,CAACuD,CAAG,CAAC,CAGtBvD,CAAY,EAAI,CAAC0C,MAAM,CAACC,IAAI,CAAC3C,CAAY,CAAC,CAACH,MAAM,EACnD,MAAO,CAAAmC,CAAW,CAACnD,qBAAa,CAACa,QAAQ,CAE7C,CAGF,GAAIqD,CAAU,CACZ,IAAK,KAAM,CAAA3E,CAAQ,GAAI,CAAA2E,CAAU,CAAE,MAC3B,CAAAI,CAAa,CACjB/E,CAAQ,CAACgF,gBAAgB,CAAGf,CAAqB,CAAGI,CAAW,CAC3DzC,CAAY,CAAGgC,CAAW,CAACnD,qBAAa,CAACiC,UAAU,CAAC,CAEtDqC,CAAa,EAAInD,CAAY,EAC/BA,CAAY,CAACwD,MAAM,CAACxD,CAAY,CAACyD,OAAO,CAACrF,CAAQ,CAAC,CAAE,CAAC,CAAC,CAGpD4B,CAAY,EAAI,CAACA,CAAY,CAACH,MAAM,EACtC,MAAO,CAAAmC,CAAW,CAACnD,qBAAa,CAACiC,UAAU,CAE/C,CAGF,IAAK,KAAM,CAAC7B,CAAG,CAAEb,CAAQ,CAAC,EAAI,CAAAsE,MAAM,CAACG,OAAO,CAACG,CAAI,CAAC,CAAE,CAClD,KAAM,CAAAG,CAAa,CACjB/E,CAAQ,CAACgF,gBAAgB,CAAGf,CAAqB,CAAGI,CAAW,CAE7DU,CAAa,GACf,MAAO,CAAAnB,CAAW,CAAC/C,CAAG,CAAkB,CACxC,IAAI,CAACyC,eAAe,CAAC2B,MAAM,CAACpE,CAAoB,CAAC,CAErD,CAEKyD,MAAM,CAACC,IAAI,CAACP,CAAa,CAACjE,CAAW,CAAC,CAAC,CAAC0B,MAAM,GACjD,IAAI,CAAC6B,eAAe,CAAC4B,KAAK,CAAC,CAAC,CAC5B,IAAI,CAAC9D,uBAAuB,CAAC8D,KAAK,CAAC,CAAC,CACpC,MAAO,CAAAlB,CAAa,CAACjE,CAAW,CAAC,CAErC,CAEA,IAAI,CAACJ,OAAO,CAAC4D,KAAK,CAACS,CAAa,CAAC,CACnC,CAEOsB,gBAAgBA,CACrBvF,CAAmB,CACsC,CACzD,KAAM,CAAAE,CAAW,CAAG,IAAI,CAACN,OAAO,CAACO,IAAI,CAAC,CAAC,CAEvC,GAAI,CAACD,CAAW,CAACyD,EAAE,CACjB,MAAO,GAAA6B,UAAG,EAACtF,CAAW,CAACuF,KAAK,CAAC,CAG/B,KAAM,CAAApF,CAAgB,CAAG,IAAI,CAACC,wBAAwB,CACpDJ,CAAW,CAACM,IAAI,CAChBR,CACF,CAAC,CAAC,MAEG,CAAAK,CAAgB,CAId,GAAAqF,SAAE,EAACrF,CAAgB,CAACG,IAAI,CAAC,CAHvB,GAAAkF,SAAE,EAAC,IAAI,CAIlB,CAEQpF,wBAAwBA,CAC9BE,CAAuB,CACvBR,CAAmB,CACwB,CAC3C,GAAI,CAACQ,CAAI,CAACR,CAAW,CAAC,CACpB,MAAO,KAAI,CAKb,GAAiC,QAAQ,EAArC,MAAO,CAAAQ,CAAI,CAACR,CAAW,CAAc,CAAE,CACzC,KAAM,CAAA2F,CAAmB,CAAGnF,CAAI,CAACR,CAAW,CAAqB,CAEjE,MAAO,CACLQ,IAAI,CAAEA,CAAI,CAACmF,CAAmB,CAA6B,CAC3DpF,gBAAgB,CAAEoF,CACpB,CACF,CAEA,MAAO,CACLnF,IAAI,CAAEA,CAAI,CAACR,CAAW,CAA6B,CACnDO,gBAAgB,CAAEP,CACpB,CACF,CAEA,GAAI,CAAA4F,kBAAkBA,CAAA,CAAuB,CAC3C,MAAO,KAAI,CAACrC,eACd,CAEA,GAAI,CAAAsC,yBAAyBA,CAAA,CAAgB,CAC3C,MAAO,KAAI,CAACxE,uBACd,CAEQ+B,WAAWA,CAAA0C,CAAA,CAKW,IALV,CAClB9F,WAAW,CAAXA,CAAW,CACXc,GAAG,CAAHA,CAAG,CACHI,KAAK,CAALA,CAAK,CACLV,IAAI,CAAJA,CACmB,CAAC,CAAAsF,CAAA,CACnBtF,CAAI,CAACR,CAAW,CAAC,CAACc,CAAG,CAAC,CAAA4B,aAAA,CAAAA,aAAA,IAClBxB,CAAK,MACR+D,gBAAgB,CAAEtD,IAAI,CAACC,GAAG,CAAC,CAAC,EAEhC,CAEQyB,WAAWA,CAAAyC,CAAA,CAKW,IALV,CAClB9F,WAAW,CAAXA,CAAW,CACXc,GAAG,CAAHA,CAAG,CACHI,KAAK,CAALA,CAAK,CACLV,IAAI,CAAJA,CACmB,CAAC,CAAAsF,CAAA,CACpBtF,CAAI,CAACR,CAAW,CAAC,CAAA0C,aAAA,CAAAA,aAAA,IACZlC,CAAI,CAACR,CAAW,CAAC,MACpB,CAACc,CAAG,EAAA4B,aAAA,CAAAA,aAAA,IAAQxB,CAAK,MAAE+D,gBAAgB,CAAEtD,IAAI,CAACC,GAAG,CAAC,CAAC,EAAE,EAErD,CAEQiB,gBAAgBA,CAAAiD,CAAA,CAKW,IALV,CACvB9F,WAAW,CAAXA,CAAW,CACXc,GAAG,CAAHA,CAAG,CACHI,KAAK,CAALA,CAAK,CACLV,IAAI,CAAJA,CACwB,CAAC,CAAAsF,CAAA,CACxBtF,CAAI,CAACR,CAAW,CAAC,CAACc,CAAG,CAAC,CAA2BiF,IAAI,CAAArD,aAAA,CAAAA,aAAA,IACjDxB,CAAK,MACR+D,gBAAgB,CAAEtD,IAAI,CAACC,GAAG,CAAC,CAAC,EAC7B,CACH,CAEQkB,gBAAgBA,CAAAgD,CAAA,CAKW,IALV,CACvB9F,WAAW,CAAXA,CAAW,CACXc,GAAG,CAAHA,CAAG,CACHI,KAAK,CAALA,CAAK,CACLV,IAAI,CAAJA,CACwB,CAAC,CAAAsF,CAAA,CACzBtF,CAAI,CAACR,CAAW,CAAC,CAAA0C,aAAA,CAAAA,aAAA,IACZlC,CAAI,CAACR,CAAW,CAAC,MACpB,CAACc,CAAG,EAAG,CAAA4B,aAAA,CAAAA,aAAA,IAAMxB,CAAK,MAAE+D,gBAAgB,CAAEtD,IAAI,CAACC,GAAG,CAAC,CAAC,GAAG,EAEvD,CAEQT,iBAAiBA,CAAA2E,CAAA,CAMW,IANV,CACxB9F,WAAW,CAAXA,CAAW,CACXc,GAAG,CAAHA,CAAG,CACHC,SAAS,CAATA,CAAS,CACTG,KAAK,CAALA,CAAK,CACLV,IAAI,CAAJA,CACyB,CAAC,CAAAsF,CAAA,CACzBtF,CAAI,CAACR,CAAW,CAAC,CAACc,CAAG,CAAC,CAA4BC,CAAS,CAAC,CAAA2B,aAAA,CAAAA,aAAA,IACxDxB,CAAK,MACR+D,gBAAgB,CAAEtD,IAAI,CAACC,GAAG,CAAC,CAAC,EAEhC,CAEQR,iBAAiBA,CAAA0E,CAAA,CAMW,KAAAE,CAAA,IANV,CACxBhG,WAAW,CAAXA,CAAW,CACXc,GAAG,CAAHA,CAAG,CACHC,SAAS,CAATA,CAAS,CACTG,KAAK,CAALA,CAAK,CACLV,IAAI,CAAJA,CACyB,CAAC,CAAAsF,CAAA,CASxBtF,CAAI,CAACR,CAAW,CAAC,SAAAgG,CAAA,CARdxF,CAAI,CAACR,CAAW,CAAC,YAAAgG,CAAA,EAAjBA,CAAA,CAAoBlF,CAAG,CAAC,CAAA4B,aAAA,CAAAA,aAAA,IAStBlC,CAAI,CAACR,CAAW,CAAC,MACpB,CAACc,CAAG,EAAA4B,aAAA,CAAAA,aAAA,IACClC,CAAI,CAACR,CAAW,CAAC,CAACc,CAAG,CAAC,MACzB,CAACC,CAAS,EAAA2B,aAAA,CAAAA,aAAA,IAAQxB,CAAK,MAAE+D,gBAAgB,CAAEtD,IAAI,CAACC,GAAG,CAAC,CAAC,EAAE,EACxD,GAAAc,aAAA,CAAAA,aAAA,IAXElC,CAAI,CAACR,CAAW,CAAC,MACpB,CAACc,CAAG,EAAG,CACL,CAACC,CAAS,EAAA2B,aAAA,CAAAA,aAAA,IAAQxB,CAAK,MAAE+D,gBAAgB,CAAEtD,IAAI,CAACC,GAAG,CAAC,CAAC,EACvD,CAAC,EAWP,CACF,CAACqE,OAAA,CAAAvG,aAAA,CAAAA,aAAA"}
1
+ {"version":3,"file":"dataProcessor.js","names":["DataProcessor","constructor","storage","_defineProperty","Set","updateData","visitorCode","dataItem","storageData","read","or","dereferencedData","dereferenceTargetingData","visitorReference","data","type","KameleoonData","CustomData","hasCustomDataKey","parameters","key","nestedKey","index","toString","value","updateNestedField","createNestedField","storedCustomDataIndexes","add","PageView","f","timestamps","length","Date","now","existingData","urlAddress","forEach","timestamp","Utilities","insertInOrderedListMutably","list","element","order","Order","Ascending","referrers","title","_objectSpread","Conversion","hasConversionDataKey","updateArrayField","createArrayField","VisitsData","hasVisitsKey","existingVisits","visits","visit","updateField","createField","hasDataKey","storedDataTypes","write","createReference","linkedVisitor","ok","getLinkedVisitor","visitorData","customData","cleanupTargetingData","cleanupInterval","targetingData","currentTime","Object","keys","kameleoonVisitorData","entries","pageView","conversion","rest","_objectWithoutProperties","_excluded","isDataExpired","lastActivityTime","delete","clear","url","splice","indexOf","getTargetingData","Err","error","Ok","referredVisitorCode","storedDataTypeList","storedCustomDataIndexList","a","push","b","exports"],"sources":["../../src/kameleoonData/dataProcessor.ts"],"sourcesContent":["import { Err, Ok, Result } from 'ts-res';\nimport { IStorage } from 'src/storage';\nimport {\n DereferencedTargetingDataType,\n TargetingDataType,\n VisitorReference,\n} from 'src/targeting';\nimport { KameleoonError } from 'src/kameleoonError';\nimport { Utilities } from 'src/utilities';\nimport { Order } from 'src/utilities/types';\nimport {\n ArrayFieldParametersType,\n ConversionDataType,\n CustomDataType,\n DereferenceTargetingDataResultType,\n ExistingArrayDataType,\n ExistingDataType,\n ExistingNestedDataType,\n ExistingPageViewDataType,\n ExistingVisitsDataType,\n FieldParametersType,\n KameleoonData,\n KameleoonDataType,\n KameleoonVisitorDataType,\n NestedFieldParametersType,\n PageViewDataType,\n VisitsDataType,\n} from './types';\n\ninterface IDataProcessor {\n updateData(\n visitorCode: string,\n dataItem: KameleoonDataType,\n ): Result<void, KameleoonError>;\n createReference(visitorCode: string, linkedVisitor: VisitorReference): void;\n cleanupTargetingData(targetingCleanupInterval?: number): void;\n getTargetingData(\n visitorCode: string,\n ): Result<KameleoonVisitorDataType | null, KameleoonError>;\n getLinkedVisitor(visitorCode: string, index: number): string | null;\n}\n\nexport class DataProcessor implements IDataProcessor {\n private storage: IStorage<TargetingDataType>;\n private storedDataTypes: Set<KameleoonData> = new Set([]);\n private storedCustomDataIndexes: Set<number> = new Set([]);\n\n constructor(storage: IStorage<TargetingDataType>) {\n this.storage = storage;\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 `targetingData` types by using assertion functions\n public updateData(\n visitorCode: string,\n dataItem: KameleoonDataType,\n ): Result<void, KameleoonError> {\n const storageData = this.storage.read().or({});\n const dereferencedData = this.dereferenceTargetingData(\n storageData,\n visitorCode,\n );\n const visitorReference = dereferencedData?.visitorReference || visitorCode;\n\n switch (dataItem.data.type) {\n case KameleoonData.CustomData: {\n const data = dataItem.data as CustomDataType;\n const hasCustomDataKey =\n dereferencedData && KameleoonData.CustomData in dereferencedData.data;\n const parameters: NestedFieldParametersType = {\n visitorCode: visitorReference,\n data: storageData as DereferencedTargetingDataType,\n key: KameleoonData.CustomData,\n nestedKey: data.index.toString(),\n value: data,\n };\n\n if (hasCustomDataKey) {\n this.updateNestedField(parameters);\n } else {\n this.createNestedField(parameters);\n }\n\n // --- Note ---\n // Here we add CustomData index to storedCustomDataIndexes to later track if it is added to storage\n this.storedCustomDataIndexes.add(data.index);\n\n break;\n }\n case KameleoonData.PageView: {\n const data = dataItem.data as PageViewDataType;\n\n // --- Note ---\n // We assign `timestamps` to `Date.now()` if it's empty\n // Not upon data item creation because it makes no sense in terms\n // of data flow to have some indication of data activity before it was added\n if (!data.timestamps.length) {\n data.timestamps = [Date.now()];\n }\n\n const existingData =\n dereferencedData &&\n KameleoonData.PageView in dereferencedData.data &&\n (dereferencedData.data[data.type] as ExistingPageViewDataType)?.[\n data.urlAddress\n ];\n\n const parameters: NestedFieldParametersType = {\n visitorCode: visitorReference,\n data: storageData as DereferencedTargetingDataType,\n key: KameleoonData.PageView,\n nestedKey: data.urlAddress,\n value: data,\n };\n\n if (existingData) {\n // --- Note ---\n // Updating existing `PageView` properties by pushing new timestamps\n // and potentially changing referrers and title\n data.timestamps.forEach((timestamp) => {\n Utilities.insertInOrderedListMutably({\n list: existingData.timestamps,\n element: timestamp,\n order: Order.Ascending,\n });\n });\n\n [existingData.referrers, existingData.title] = [\n data.referrers,\n data.title,\n ];\n\n this.updateNestedField({ ...parameters, value: existingData });\n } else {\n this.createNestedField(parameters);\n }\n\n break;\n }\n case KameleoonData.Conversion: {\n const data = dataItem.data as ConversionDataType;\n const hasConversionDataKey =\n dereferencedData && KameleoonData.Conversion in dereferencedData.data;\n const parameters: ArrayFieldParametersType = {\n visitorCode: visitorReference,\n data: storageData as DereferencedTargetingDataType,\n key: KameleoonData.Conversion,\n value: data,\n };\n\n if (hasConversionDataKey) {\n this.updateArrayField(parameters);\n } else {\n this.createArrayField(parameters);\n }\n\n break;\n }\n case KameleoonData.VisitsData: {\n const data = dataItem.data as VisitsDataType;\n const hasVisitsKey =\n dereferencedData && KameleoonData.VisitsData in dereferencedData.data;\n const parameters: FieldParametersType = {\n visitorCode: visitorReference,\n data: storageData as DereferencedTargetingDataType,\n key: KameleoonData.VisitsData,\n value: data,\n };\n\n // -- Change directly if `[key]` exists\n if (hasVisitsKey) {\n const existingVisits = dereferencedData.data[\n data.type\n ] as ExistingVisitsDataType;\n\n // --- Note ---\n // We are preserving the order of visits\n existingVisits.visits.forEach((visit) => {\n Utilities.insertInOrderedListMutably({\n list: data.visits,\n element: visit,\n order: Order.Ascending,\n });\n });\n\n this.updateField({\n ...parameters,\n value: {\n ...data,\n visits: data.visits,\n },\n });\n } else {\n this.createField(parameters);\n }\n\n break;\n }\n default: {\n const { data } = dataItem;\n const hasDataKey =\n dereferencedData && data.type in dereferencedData.data;\n const parameters: FieldParametersType = {\n visitorCode: visitorReference,\n data: storageData as DereferencedTargetingDataType,\n key: data.type,\n // --- Note ---\n // At this point TypeScript can not infer that value is subset of only\n // what is left for `default` case\n value: data as FieldParametersType['value'],\n };\n\n if (hasDataKey) {\n this.updateField(parameters);\n } else {\n this.createField(parameters);\n }\n\n // --- Note ---\n // Here we add Browser, Device, Geolocation, OperatingSystem, KameleoonConversionScore to storedDataTypes\n // Later track if it is added to storage\n this.storedDataTypes.add(data.type);\n }\n }\n\n return this.storage.write(storageData);\n }\n\n public createReference(\n visitorCode: string,\n linkedVisitor: VisitorReference,\n ): void {\n const storageData = this.storage.read();\n\n if (!storageData.ok) {\n return;\n }\n\n // --- Note ---\n // Provided(linked) visitor is now pointing to the visitor code\n storageData.data[linkedVisitor] = visitorCode;\n\n this.storage.write(storageData.data);\n }\n\n public getLinkedVisitor(\n visitorCode: string,\n index: number | null,\n ): string | null {\n const storageData = this.storage.read();\n\n if (!storageData.ok) {\n return null;\n }\n\n if (typeof storageData.data[visitorCode] === 'string') {\n return storageData.data[visitorCode] as string;\n }\n\n if (index === null) {\n return null;\n }\n\n const visitorData = storageData.data[\n visitorCode\n ] as KameleoonVisitorDataType;\n\n if (!visitorData) {\n return null;\n }\n\n const customData = visitorData[KameleoonData.CustomData];\n\n if (customData && customData[index]) {\n return (customData[index] as CustomDataType).value[0];\n }\n\n return null;\n }\n\n public cleanupTargetingData(cleanupInterval: number): void {\n const storageData = this.storage.read();\n\n if (!storageData.ok) {\n return;\n }\n\n const targetingData = storageData.data;\n const currentTime = Date.now();\n\n // --- Note (Weird Thing) ---\n // Generally the check is not needed\n // If the `targetingData` is empty the loop will not be executed\n // But here something weird happens and we'are getting `TypeError` here\n // Even logging `Object.keys().length` or `Object.entries().length` solves the issue somehow\n // You can see the issue by commenting the following `if` statement and waiting for a data cleanup\n // TODO: investigate it later (probably related to object copying?)\n if (!Object.keys(targetingData).length) {\n return;\n }\n\n for (const [visitorCode, kameleoonVisitorData] of Object.entries(\n targetingData,\n )) {\n if (typeof kameleoonVisitorData === 'string') {\n delete targetingData[visitorCode];\n continue;\n }\n\n const visitorData = kameleoonVisitorData;\n\n const { customData, pageView, conversion, ...rest } = visitorData;\n\n // TODO: This way of cleaning up data is not optimal\n // And will be changed when sessions are introduced\n if (customData) {\n for (const [index, dataItem] of Object.entries(customData)) {\n if (dataItem) {\n const isDataExpired =\n dataItem.lastActivityTime + cleanupInterval < currentTime;\n const existingData = visitorData[KameleoonData.CustomData];\n\n if (isDataExpired && existingData) {\n this.storedCustomDataIndexes.delete(Number(index));\n delete existingData[Number(index)];\n }\n\n if (existingData && !Object.keys(existingData).length) {\n this.storedCustomDataIndexes.clear();\n delete targetingData[KameleoonData.CustomData];\n }\n }\n }\n }\n\n if (pageView) {\n for (const [url, dataItem] of Object.entries(pageView)) {\n const isDataExpired =\n dataItem.lastActivityTime + cleanupInterval < currentTime;\n const existingData = visitorData[KameleoonData.PageView];\n\n if (isDataExpired && existingData) {\n delete existingData[url];\n }\n\n if (existingData && !Object.keys(existingData).length) {\n delete visitorData[KameleoonData.PageView];\n }\n }\n }\n\n if (conversion) {\n for (const dataItem of conversion) {\n const isDataExpired =\n dataItem.lastActivityTime + cleanupInterval < currentTime;\n const existingData = visitorData[KameleoonData.Conversion];\n\n if (isDataExpired && existingData) {\n existingData.splice(existingData.indexOf(dataItem), 1);\n }\n\n if (existingData && !existingData.length) {\n delete visitorData[KameleoonData.Conversion];\n }\n }\n }\n\n for (const [key, dataItem] of Object.entries(rest)) {\n const isDataExpired =\n dataItem.lastActivityTime + cleanupInterval < currentTime;\n\n if (isDataExpired) {\n delete visitorData[key as KameleoonData];\n this.storedDataTypes.delete(key as KameleoonData);\n }\n }\n\n if (!Object.keys(targetingData[visitorCode]).length) {\n this.storedDataTypes.clear();\n this.storedCustomDataIndexes.clear();\n delete targetingData[visitorCode];\n }\n }\n\n this.storage.write(targetingData);\n }\n\n public getTargetingData(\n visitorCode: string,\n ): Result<KameleoonVisitorDataType | null, KameleoonError> {\n const storageData = this.storage.read();\n\n if (!storageData.ok) {\n return Err(storageData.error);\n }\n\n // TODO: when visitor session is introduced:\n // We can do extra cleanup here to avoid too long data lifetime\n // For now it's too expensive to check each data item on\n // ech data read\n\n const dereferencedData = this.dereferenceTargetingData(\n storageData.data,\n visitorCode,\n );\n\n if (!dereferencedData) {\n return Ok(null);\n }\n\n return Ok(dereferencedData.data);\n }\n\n private dereferenceTargetingData(\n data: TargetingDataType,\n visitorCode: string,\n ): DereferenceTargetingDataResultType | null {\n if (!data[visitorCode]) {\n return null;\n }\n\n // --- Note ---\n // Visitor reference can not refer to another visitor reference\n if (typeof data[visitorCode] === 'string') {\n const referredVisitorCode = data[visitorCode] as VisitorReference;\n\n return {\n data: data[referredVisitorCode] as KameleoonVisitorDataType,\n visitorReference: referredVisitorCode,\n };\n }\n\n return {\n data: data[visitorCode] as KameleoonVisitorDataType,\n visitorReference: visitorCode,\n };\n }\n\n get storedDataTypeList(): Set<KameleoonData> {\n return this.storedDataTypes;\n }\n\n get storedCustomDataIndexList(): Set<number> {\n return this.storedCustomDataIndexes;\n }\n\n private updateField({\n visitorCode,\n key,\n value,\n data,\n }: FieldParametersType): void {\n (data[visitorCode][key] as ExistingDataType<typeof key>) = {\n ...value,\n lastActivityTime: Date.now(),\n };\n }\n\n private createField({\n visitorCode,\n key,\n value,\n data,\n }: FieldParametersType): void {\n data[visitorCode] = {\n ...data[visitorCode],\n [key]: { ...value, lastActivityTime: Date.now() },\n };\n }\n\n private updateArrayField({\n visitorCode,\n key,\n value,\n data,\n }: ArrayFieldParametersType): void {\n (data[visitorCode][key] as ExistingArrayDataType).push({\n ...value,\n lastActivityTime: Date.now(),\n });\n }\n\n private createArrayField({\n visitorCode,\n key,\n value,\n data,\n }: ArrayFieldParametersType): void {\n data[visitorCode] = {\n ...data[visitorCode],\n [key]: [{ ...value, lastActivityTime: Date.now() }],\n };\n }\n\n private updateNestedField({\n visitorCode,\n key,\n nestedKey,\n value,\n data,\n }: NestedFieldParametersType): void {\n (data[visitorCode][key] as ExistingNestedDataType)[nestedKey] = {\n ...value,\n lastActivityTime: Date.now(),\n };\n }\n\n private createNestedField({\n visitorCode,\n key,\n nestedKey,\n value,\n data,\n }: NestedFieldParametersType): void {\n if (!data[visitorCode]?.[key]) {\n data[visitorCode] = {\n ...data[visitorCode],\n [key]: {\n [nestedKey]: { ...value, lastActivityTime: Date.now() },\n },\n };\n } else {\n data[visitorCode] = {\n ...data[visitorCode],\n [key]: {\n ...data[visitorCode][key],\n [nestedKey]: { ...value, lastActivityTime: Date.now() },\n },\n };\n }\n }\n}\n"],"mappings":"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"}
@@ -10,6 +10,5 @@ export { OperatingSystem } from './operatingSystem';
10
10
  export { ApplicationVersion } from './applicationVersion';
11
11
  export { VisitsData } from './visitsData';
12
12
  export { KameleoonConversionScore } from './kameleoonConversionScore';
13
- export { DEFAULT_CLEANUP_INTERVAL } from './constants';
14
13
  export { DeviceType, CookieType, VisitsDataType, BrowserType, KameleoonData, DeviceDataType, CustomDataType, BrowserDataType, BrowserIndexMap, PageViewDataType, KameleoonDataType, UserAgentDataType, ConversionDataType, OperatingSystemType, GeolocationInfoType, KameleoonDataItemType, PageViewParametersType, ConversionParametersType, ApplicationVersionDataType, } from './types';
15
14
  export { DataManager } from './dataManager';
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),Object.defineProperty(exports,"ApplicationVersion",{enumerable:!0,get:function(){return _applicationVersion.ApplicationVersion}}),Object.defineProperty(exports,"ApplicationVersionDataType",{enumerable:!0,get:function(){return _types.ApplicationVersionDataType}}),Object.defineProperty(exports,"Browser",{enumerable:!0,get:function(){return _browser.Browser}}),Object.defineProperty(exports,"BrowserDataType",{enumerable:!0,get:function(){return _types.BrowserDataType}}),Object.defineProperty(exports,"BrowserIndexMap",{enumerable:!0,get:function(){return _types.BrowserIndexMap}}),Object.defineProperty(exports,"BrowserType",{enumerable:!0,get:function(){return _types.BrowserType}}),Object.defineProperty(exports,"Conversion",{enumerable:!0,get:function(){return _conversion.Conversion}}),Object.defineProperty(exports,"ConversionDataType",{enumerable:!0,get:function(){return _types.ConversionDataType}}),Object.defineProperty(exports,"ConversionParametersType",{enumerable:!0,get:function(){return _types.ConversionParametersType}}),Object.defineProperty(exports,"Cookie",{enumerable:!0,get:function(){return _cookie.Cookie}}),Object.defineProperty(exports,"CookieType",{enumerable:!0,get:function(){return _types.CookieType}}),Object.defineProperty(exports,"CustomData",{enumerable:!0,get:function(){return _customData.CustomData}}),Object.defineProperty(exports,"CustomDataType",{enumerable:!0,get:function(){return _types.CustomDataType}}),Object.defineProperty(exports,"DEFAULT_CLEANUP_INTERVAL",{enumerable:!0,get:function(){return _constants.DEFAULT_CLEANUP_INTERVAL}}),Object.defineProperty(exports,"DataManager",{enumerable:!0,get:function(){return _dataManager.DataManager}}),Object.defineProperty(exports,"Device",{enumerable:!0,get:function(){return _device.Device}}),Object.defineProperty(exports,"DeviceDataType",{enumerable:!0,get:function(){return _types.DeviceDataType}}),Object.defineProperty(exports,"DeviceType",{enumerable:!0,get:function(){return _types.DeviceType}}),Object.defineProperty(exports,"GeolocationData",{enumerable:!0,get:function(){return _geolocation.GeolocationData}}),Object.defineProperty(exports,"GeolocationInfoType",{enumerable:!0,get:function(){return _types.GeolocationInfoType}}),Object.defineProperty(exports,"KameleoonConversionScore",{enumerable:!0,get:function(){return _kameleoonConversionScore.KameleoonConversionScore}}),Object.defineProperty(exports,"KameleoonData",{enumerable:!0,get:function(){return _types.KameleoonData}}),Object.defineProperty(exports,"KameleoonDataItemType",{enumerable:!0,get:function(){return _types.KameleoonDataItemType}}),Object.defineProperty(exports,"KameleoonDataType",{enumerable:!0,get:function(){return _types.KameleoonDataType}}),Object.defineProperty(exports,"OperatingSystem",{enumerable:!0,get:function(){return _operatingSystem.OperatingSystem}}),Object.defineProperty(exports,"OperatingSystemType",{enumerable:!0,get:function(){return _types.OperatingSystemType}}),Object.defineProperty(exports,"PageView",{enumerable:!0,get:function(){return _pageView.PageView}}),Object.defineProperty(exports,"PageViewDataType",{enumerable:!0,get:function(){return _types.PageViewDataType}}),Object.defineProperty(exports,"PageViewParametersType",{enumerable:!0,get:function(){return _types.PageViewParametersType}}),Object.defineProperty(exports,"UserAgent",{enumerable:!0,get:function(){return _userAgent.UserAgent}}),Object.defineProperty(exports,"UserAgentDataType",{enumerable:!0,get:function(){return _types.UserAgentDataType}}),Object.defineProperty(exports,"VisitsData",{enumerable:!0,get:function(){return _visitsData.VisitsData}}),Object.defineProperty(exports,"VisitsDataType",{enumerable:!0,get:function(){return _types.VisitsDataType}});var _device=require("./device"),_cookie=require("./cookie"),_browser=require("./browser"),_pageView=require("./pageView"),_userAgent=require("./userAgent"),_customData=require("./customData"),_conversion=require("./conversion"),_geolocation=require("./geolocation"),_operatingSystem=require("./operatingSystem"),_applicationVersion=require("./applicationVersion"),_visitsData=require("./visitsData"),_kameleoonConversionScore=require("./kameleoonConversionScore"),_constants=require("./constants"),_types=require("./types"),_dataManager=require("./dataManager");
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),Object.defineProperty(exports,"ApplicationVersion",{enumerable:!0,get:function(){return _applicationVersion.ApplicationVersion}}),Object.defineProperty(exports,"ApplicationVersionDataType",{enumerable:!0,get:function(){return _types.ApplicationVersionDataType}}),Object.defineProperty(exports,"Browser",{enumerable:!0,get:function(){return _browser.Browser}}),Object.defineProperty(exports,"BrowserDataType",{enumerable:!0,get:function(){return _types.BrowserDataType}}),Object.defineProperty(exports,"BrowserIndexMap",{enumerable:!0,get:function(){return _types.BrowserIndexMap}}),Object.defineProperty(exports,"BrowserType",{enumerable:!0,get:function(){return _types.BrowserType}}),Object.defineProperty(exports,"Conversion",{enumerable:!0,get:function(){return _conversion.Conversion}}),Object.defineProperty(exports,"ConversionDataType",{enumerable:!0,get:function(){return _types.ConversionDataType}}),Object.defineProperty(exports,"ConversionParametersType",{enumerable:!0,get:function(){return _types.ConversionParametersType}}),Object.defineProperty(exports,"Cookie",{enumerable:!0,get:function(){return _cookie.Cookie}}),Object.defineProperty(exports,"CookieType",{enumerable:!0,get:function(){return _types.CookieType}}),Object.defineProperty(exports,"CustomData",{enumerable:!0,get:function(){return _customData.CustomData}}),Object.defineProperty(exports,"CustomDataType",{enumerable:!0,get:function(){return _types.CustomDataType}}),Object.defineProperty(exports,"DataManager",{enumerable:!0,get:function(){return _dataManager.DataManager}}),Object.defineProperty(exports,"Device",{enumerable:!0,get:function(){return _device.Device}}),Object.defineProperty(exports,"DeviceDataType",{enumerable:!0,get:function(){return _types.DeviceDataType}}),Object.defineProperty(exports,"DeviceType",{enumerable:!0,get:function(){return _types.DeviceType}}),Object.defineProperty(exports,"GeolocationData",{enumerable:!0,get:function(){return _geolocation.GeolocationData}}),Object.defineProperty(exports,"GeolocationInfoType",{enumerable:!0,get:function(){return _types.GeolocationInfoType}}),Object.defineProperty(exports,"KameleoonConversionScore",{enumerable:!0,get:function(){return _kameleoonConversionScore.KameleoonConversionScore}}),Object.defineProperty(exports,"KameleoonData",{enumerable:!0,get:function(){return _types.KameleoonData}}),Object.defineProperty(exports,"KameleoonDataItemType",{enumerable:!0,get:function(){return _types.KameleoonDataItemType}}),Object.defineProperty(exports,"KameleoonDataType",{enumerable:!0,get:function(){return _types.KameleoonDataType}}),Object.defineProperty(exports,"OperatingSystem",{enumerable:!0,get:function(){return _operatingSystem.OperatingSystem}}),Object.defineProperty(exports,"OperatingSystemType",{enumerable:!0,get:function(){return _types.OperatingSystemType}}),Object.defineProperty(exports,"PageView",{enumerable:!0,get:function(){return _pageView.PageView}}),Object.defineProperty(exports,"PageViewDataType",{enumerable:!0,get:function(){return _types.PageViewDataType}}),Object.defineProperty(exports,"PageViewParametersType",{enumerable:!0,get:function(){return _types.PageViewParametersType}}),Object.defineProperty(exports,"UserAgent",{enumerable:!0,get:function(){return _userAgent.UserAgent}}),Object.defineProperty(exports,"UserAgentDataType",{enumerable:!0,get:function(){return _types.UserAgentDataType}}),Object.defineProperty(exports,"VisitsData",{enumerable:!0,get:function(){return _visitsData.VisitsData}}),Object.defineProperty(exports,"VisitsDataType",{enumerable:!0,get:function(){return _types.VisitsDataType}});var _device=require("./device"),_cookie=require("./cookie"),_browser=require("./browser"),_pageView=require("./pageView"),_userAgent=require("./userAgent"),_customData=require("./customData"),_conversion=require("./conversion"),_geolocation=require("./geolocation"),_operatingSystem=require("./operatingSystem"),_applicationVersion=require("./applicationVersion"),_visitsData=require("./visitsData"),_kameleoonConversionScore=require("./kameleoonConversionScore"),_types=require("./types"),_dataManager=require("./dataManager");
2
2
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":[],"sources":["../../src/kameleoonData/index.ts"],"sourcesContent":["export { Device } from './device';\nexport { Cookie } from './cookie';\nexport { Browser } from './browser';\nexport { PageView } from './pageView';\nexport { UserAgent } from './userAgent';\nexport { CustomData } from './customData';\nexport { Conversion } from './conversion';\nexport { GeolocationData } from './geolocation';\nexport { OperatingSystem } from './operatingSystem';\nexport { ApplicationVersion } from './applicationVersion';\nexport { VisitsData } from './visitsData';\nexport { KameleoonConversionScore } from './kameleoonConversionScore';\nexport { DEFAULT_CLEANUP_INTERVAL } from './constants';\nexport {\n DeviceType,\n CookieType,\n VisitsDataType,\n BrowserType,\n KameleoonData,\n DeviceDataType,\n CustomDataType,\n BrowserDataType,\n BrowserIndexMap,\n PageViewDataType,\n KameleoonDataType,\n UserAgentDataType,\n ConversionDataType,\n OperatingSystemType,\n GeolocationInfoType,\n KameleoonDataItemType,\n PageViewParametersType,\n ConversionParametersType,\n ApplicationVersionDataType,\n} from './types';\nexport { DataManager } from './dataManager';\n"],"mappings":""}
1
+ {"version":3,"file":"index.js","names":[],"sources":["../../src/kameleoonData/index.ts"],"sourcesContent":["export { Device } from './device';\nexport { Cookie } from './cookie';\nexport { Browser } from './browser';\nexport { PageView } from './pageView';\nexport { UserAgent } from './userAgent';\nexport { CustomData } from './customData';\nexport { Conversion } from './conversion';\nexport { GeolocationData } from './geolocation';\nexport { OperatingSystem } from './operatingSystem';\nexport { ApplicationVersion } from './applicationVersion';\nexport { VisitsData } from './visitsData';\nexport { KameleoonConversionScore } from './kameleoonConversionScore';\nexport {\n DeviceType,\n CookieType,\n VisitsDataType,\n BrowserType,\n KameleoonData,\n DeviceDataType,\n CustomDataType,\n BrowserDataType,\n BrowserIndexMap,\n PageViewDataType,\n KameleoonDataType,\n UserAgentDataType,\n ConversionDataType,\n OperatingSystemType,\n GeolocationInfoType,\n KameleoonDataItemType,\n PageViewParametersType,\n ConversionParametersType,\n ApplicationVersionDataType,\n} from './types';\nexport { DataManager } from './dataManager';\n"],"mappings":""}
@@ -29,7 +29,7 @@ export type DereferenceTargetingDataResultType = {
29
29
  visitorReference: string;
30
30
  };
31
31
  export type DataManagerParametersType = {
32
- targetingCleanupInterval?: number;
32
+ cleanupInterval: number | null;
33
33
  storage: IStorage<TargetingDataType>;
34
34
  };
35
35
  export type KameleoonDataItemType = BrowserDataType | ConversionDataType | CustomDataType | DeviceDataType | PageViewDataType | UserAgentDataType | CookieDataType | GeolocationDataType | OperatingSystemDataType | ApplicationVersionDataType | KCSDataType | VisitsDataType;
@@ -1 +1 @@
1
- {"version":3,"file":"types.js","names":["_helpers","require","Object","defineProperty","exports","value","OperatingSystemTypeMap","OperatingSystemType","OperatingSystemIndexMap","KameleoonData","DeviceType","BrowserTypeMap","BrowserType","BrowserIndexMap","CustomData","PageView","GeolocationData","Browser","Conversion","Cookie","Device","OperatingSystem","UserAgent","ApplicationVersion","VisitsData","KameleoonConversionScore","Phone","Tablet","Desktop","WindowsPhone","Windows","Android","Linux","Mac","IOS","Chrome","InternetExplorer","Firefox","Safari","Opera","Other","constructTypeMap"],"sources":["../../src/kameleoonData/types.ts"],"sourcesContent":["import {\n DereferencedTargetingDataType,\n TargetingDataType,\n} from 'src/targeting';\nimport { FeatureFlagVariationsType, IStorage } from 'src/storage';\nimport {\n Browser,\n Conversion,\n Cookie,\n CustomData,\n Device,\n GeolocationData,\n OperatingSystem,\n PageView,\n UserAgent,\n ApplicationVersion,\n VisitsData,\n KameleoonConversionScore,\n} from 'src/kameleoonData';\nimport { constructTypeMap } from './helpers';\n\n// --- Note ---\n// -- `Conversion`s are stored by `KameleoonData.Conversion` key in a form of an `KameleoonDataType[]` array\n// -- `PageView`s are store by `timestamp` (number) key in a form of `KameleoonDataType`\n// -- All the other unsent data types are stored in a form of `KameleoonData` key and `KameleoonDataType` value\nexport type UnsentVisitorTargetingDataType = Map<\n KameleoonData | number,\n KameleoonDataType | KameleoonDataType[]\n>;\n\nexport type UnsentTargetingDataType = {\n [visitorCode: string]: UnsentVisitorTargetingDataType | undefined;\n};\n\nexport type FieldParametersType = {\n visitorCode: string;\n key: KameleoonData;\n value:\n | BrowserDataType\n | CookieDataType\n | DeviceDataType\n | GeolocationDataType\n | OperatingSystemDataType\n | UserAgentDataType\n | VisitsDataType;\n data: DereferencedTargetingDataType;\n};\n\nexport type ArrayFieldParametersType = {\n visitorCode: string;\n key: KameleoonData;\n value: ConversionDataType;\n data: DereferencedTargetingDataType;\n};\n\nexport type NestedFieldParametersType = {\n visitorCode: string;\n key: KameleoonData.CustomData | KameleoonData.PageView;\n nestedKey: string;\n value: CustomDataType | PageViewDataType;\n data: DereferencedTargetingDataType;\n};\n\nexport type DereferenceTargetingDataResultType = {\n data: KameleoonVisitorDataType;\n visitorReference: string;\n};\n\nexport type DataManagerParametersType = {\n targetingCleanupInterval?: number;\n storage: IStorage<TargetingDataType>;\n};\n\nexport type KameleoonDataItemType =\n | BrowserDataType\n | ConversionDataType\n | CustomDataType\n | DeviceDataType\n | PageViewDataType\n | UserAgentDataType\n | CookieDataType\n | GeolocationDataType\n | OperatingSystemDataType\n | ApplicationVersionDataType\n | KCSDataType\n | VisitsDataType;\n\n/**\n * @interface an interface of KameleoonData\n * each class instance will have url getter method\n * for handling url of different data types\n * */\nexport interface IKameleoonData {\n /**\n * @property url - url for the current data type used for events tracking\n * */\n readonly url: string;\n /**\n * @property data - data of the current class instance\n * */\n readonly data: KameleoonDataItemType;\n /**\n * @property isSent - signifying if the data was sent already tracked\n * */\n isSent: boolean;\n}\n\n/**\n * @type a tuple of each possible type of data for `addData` method\n * of KameleoonClient\n * */\nexport type KameleoonDataType =\n | Browser\n | Conversion\n | CustomData\n | Device\n | PageView\n | UserAgent\n | VisitsData\n | GeolocationData\n | OperatingSystem\n | Cookie\n | ApplicationVersion\n | KameleoonConversionScore;\n\nexport type ActivityTimePropertyType = {\n lastActivityTime: number;\n};\n\nexport type ExistingCustomDataType = NonNullable<\n KameleoonVisitorDataType[KameleoonData.CustomData]\n>;\n\nexport type ExistingPageViewDataType = NonNullable<\n KameleoonVisitorDataType[KameleoonData.PageView]\n>;\n\nexport type ExistingNestedDataType =\n | ExistingCustomDataType\n | ExistingPageViewDataType;\n\nexport type ExistingArrayDataType = ExistingConversionDataType;\n\nexport type ExistingConversionDataType = NonNullable<\n KameleoonVisitorDataType[KameleoonData.Conversion]\n>;\n\nexport type ExistingVisitsDataType = NonNullable<\n KameleoonVisitorDataType[KameleoonData.VisitsData]\n>;\n\nexport type ExistingDataType<T extends KameleoonData> = NonNullable<\n KameleoonVisitorDataType[T]\n>;\n\nexport type KameleoonVisitorDataType<T = ActivityTimePropertyType> = {\n [KameleoonData.CustomData]?: {\n [index: string]: (CustomDataType & T) | undefined;\n };\n [KameleoonData.Conversion]?: (ConversionDataType & T)[];\n [KameleoonData.GeolocationData]?: GeolocationDataType & T;\n [KameleoonData.UserAgent]?: UserAgentDataType & T;\n [KameleoonData.PageView]?: { [url: string]: PageViewDataType & T };\n [KameleoonData.Browser]?: BrowserDataType & T;\n [KameleoonData.Device]?: DeviceDataType & T;\n [KameleoonData.Cookie]?: CookieDataType & T;\n [KameleoonData.KameleoonConversionScore]?: KCSDataType & T;\n [KameleoonData.OperatingSystem]?: OperatingSystemDataType & T;\n [KameleoonData.ApplicationVersion]?: ApplicationVersionDataType & T;\n [KameleoonData.VisitsData]?: VisitsDataType & T;\n};\n\nexport enum KameleoonData {\n CustomData = 'customData',\n PageView = 'pageView',\n GeolocationData = 'geolocation',\n Browser = 'browser',\n Conversion = 'conversion',\n Cookie = 'cookie',\n Device = 'device',\n OperatingSystem = 'operatingSystem',\n UserAgent = 'userAgent',\n ApplicationVersion = 'applicationVersion',\n VisitsData = 'visitsData',\n KameleoonConversionScore = 'kameleoonConversionScore',\n}\n\ntype SharedDataPropertiesType = {\n type: KameleoonData;\n sent: boolean;\n};\n\nexport type BrowserDataType = {\n browser: BrowserType;\n version?: number;\n} & SharedDataPropertiesType;\n\nexport type ConversionDataType = {\n goalId: number;\n revenue: number;\n negative: boolean;\n} & SharedDataPropertiesType;\n\nexport type CustomDataType = {\n index: number;\n value: string[];\n isIdentifier: boolean;\n} & SharedDataPropertiesType;\n\nexport type DeviceDataType = {\n device: DeviceType;\n} & SharedDataPropertiesType;\n\nexport type KCSDataType = {\n kcs: KCSType;\n} & SharedDataPropertiesType;\n\nexport type VisitsDataType = {\n visits: number[];\n} & SharedDataPropertiesType;\n\nexport type OperatingSystemDataType = {\n operatingSystem: OperatingSystemType;\n} & SharedDataPropertiesType;\n\nexport type CookieDataType = {\n cookie: CookieType[];\n} & SharedDataPropertiesType;\n\nexport type GeolocationDataType = GeolocationInfoType &\n SharedDataPropertiesType;\n\nexport type PageViewDataType = {\n urlAddress: string;\n title: string;\n referrers?: number[];\n timestamps: number[];\n} & SharedDataPropertiesType;\n\nexport type UserAgentDataType = {\n value: string;\n} & SharedDataPropertiesType;\n\nexport type ApplicationVersionDataType = {\n version: string;\n} & SharedDataPropertiesType;\n\n/**\n * @param {number} goalId - an id of a goal to track\n * @param {number | undefined} revenue - an optional parameter for revenue, default value is `0`\n * @param {boolean | undefined} negative - an optional parameter identifying whether the conversion should be removed, default value is `false`\n * */\nexport type ConversionParametersType = {\n goalId: number;\n revenue?: number;\n negative?: boolean;\n};\n\n/**\n * @param {string} urlAddress - url address of the page to track\n * @param {string} title - title of the web page\n * @param {number[] | undefined} referrers - an optional parameter containing a list of referrersIndices, has no default value\n * */\nexport type PageViewParametersType = {\n urlAddress: string;\n title: string;\n referrers?: number[];\n};\n\n/**\n * @readonly\n * @enum {string} an Enum containing all possible variants for device type\n * */\nexport enum DeviceType {\n Phone = 'PHONE',\n Tablet = 'TABLET',\n Desktop = 'DESKTOP',\n}\n\n/**\n * @readonly\n * @enum {string} an Enum containing all possible variants for operating system type\n * */\nexport enum OperatingSystemType {\n WindowsPhone = 'WINDOWS_PHONE',\n Windows = 'WINDOWS',\n Android = 'ANDROID',\n Linux = 'LINUX',\n Mac = 'MAC',\n IOS = 'IOS',\n}\n\n/**\n * @param {string} country - a country of a visitor\n * @param {string | undefined} region - an optional parameter containing a region of a visitor, has no default value\n * @param {string | undefined} city - an optional parameter containing a city of a visitor, has no default value\n * @param {string | undefined} postalCode - an optional parameter containing a postal code of a visitor, has no default value\n * @param {[number, number] | undefined} coordinates - an optional parameter containing a pair of coordinates (longitude and latitude) of a visitor, has no default value. Coordinate `number` represents decimal degrees (double that can be negative)\n * */\nexport type GeolocationInfoType = {\n country: string;\n region?: string;\n city?: string;\n postalCode?: string;\n coordinates?: [number, number];\n};\n\n/**\n * @param {string} key - a key of a cookie\n * @param {string} value - a value of a cookie\n * */\nexport type CookieType = {\n key: string;\n value: string;\n};\n\n/**\n * @type Nested object of key moments and goals with their respective scores\n * */\nexport type KCSType = {\n [keyMoment: string]: {\n [goalId: string]: number;\n };\n};\n\nexport type OptionalCookieType = Omit<CookieType, 'key'> & {\n key?: string;\n};\n\n/**\n * @readonly\n * @enum {string} an Enum containing all possible variants for browser type\n * */\nexport enum BrowserType {\n Chrome = 'CHROME',\n InternetExplorer = 'IE',\n Firefox = 'FIREFOX',\n Safari = 'SAFARI',\n Opera = 'OPERA',\n Other = 'OTHER',\n}\n\nexport const OperatingSystemIndexMap = {\n [OperatingSystemType.Windows]: 0,\n [OperatingSystemType.Mac]: 1,\n [OperatingSystemType.IOS]: 2,\n [OperatingSystemType.Linux]: 3,\n [OperatingSystemType.Android]: 4,\n [OperatingSystemType.WindowsPhone]: 5,\n} as const;\n\nexport const OperatingSystemTypeMap = constructTypeMap<OperatingSystemType>(\n OperatingSystemIndexMap,\n);\n\nexport const BrowserIndexMap = {\n [BrowserType.Chrome]: 0,\n [BrowserType.InternetExplorer]: 1,\n [BrowserType.Firefox]: 2,\n [BrowserType.Safari]: 3,\n [BrowserType.Opera]: 4,\n [BrowserType.Other]: 5,\n} as const;\n\nexport const BrowserTypeMap = constructTypeMap<BrowserType>(BrowserIndexMap);\n\nexport type SingleDataType = {\n [KameleoonData.Device]: Device | null;\n [KameleoonData.Browser]: Browser | null;\n [KameleoonData.GeolocationData]: GeolocationData | null;\n [KameleoonData.OperatingSystem]: OperatingSystem | null;\n [KameleoonData.KameleoonConversionScore]: KameleoonConversionScore | null;\n};\n\nexport type MultipleDataType = {\n [KameleoonData.CustomData]: Map<number, CustomData>;\n [KameleoonData.PageView]: Map<string, PageView>;\n [KameleoonData.Conversion]: Map<number, Conversion>;\n};\n\nexport type VisitProcessorDataType = {\n visitorData: KameleoonDataType[];\n storageVisitorData: KameleoonDataType[];\n visitsData: VisitsData;\n experimentData: FeatureFlagVariationsType;\n};\n"],"mappings":"aAmBA,IAAAA,QAAA,CAAAC,OAAA,cAA6CC,MAAA,CAAAC,cAAA,CAAAC,OAAA,eAAAC,KAAA,MAAAD,OAAA,CAAAE,sBAAA,CAAAF,OAAA,CAAAG,mBAAA,CAAAH,OAAA,CAAAI,uBAAA,CAAAJ,OAAA,CAAAK,aAAA,CAAAL,OAAA,CAAAM,UAAA,CAAAN,OAAA,CAAAO,cAAA,CAAAP,OAAA,CAAAQ,WAAA,CAAAR,OAAA,CAAAS,eAAA,WAyJjC,CAAAJ,aAAa,CAAAL,OAAA,CAAAK,aAAA,UAAbA,CAAa,QAAb,CAAAA,CAAa,CAAAK,UAAA,cAAbL,CAAa,CAAAM,QAAA,YAAbN,CAAa,CAAAO,eAAA,eAAbP,CAAa,CAAAQ,OAAA,WAAbR,CAAa,CAAAS,UAAA,cAAbT,CAAa,CAAAU,MAAA,UAAbV,CAAa,CAAAW,MAAA,UAAbX,CAAa,CAAAY,eAAA,mBAAbZ,CAAa,CAAAa,SAAA,aAAbb,CAAa,CAAAc,kBAAA,sBAAbd,CAAa,CAAAe,UAAA,cAAbf,CAAa,CAAAgB,wBAAA,4BAAbhB,CAAa,MAqGbC,UAAU,CAAAN,OAAA,CAAAM,UAAA,UAAVA,CAAU,QAAV,CAAAA,CAAU,CAAAgB,KAAA,SAAVhB,CAAU,CAAAiB,MAAA,UAAVjB,CAAU,CAAAkB,OAAA,WAAVlB,CAAU,MAUVH,mBAAmB,CAAAH,OAAA,CAAAG,mBAAA,UAAnBA,CAAmB,QAAnB,CAAAA,CAAmB,CAAAsB,YAAA,iBAAnBtB,CAAmB,CAAAuB,OAAA,WAAnBvB,CAAmB,CAAAwB,OAAA,WAAnBxB,CAAmB,CAAAyB,KAAA,SAAnBzB,CAAmB,CAAA0B,GAAA,OAAnB1B,CAAmB,CAAA2B,GAAA,OAAnB3B,CAAmB,MAkDnBK,WAAW,CAAAR,OAAA,CAAAQ,WAAA,UAAXA,CAAW,QAAX,CAAAA,CAAW,CAAAuB,MAAA,UAAXvB,CAAW,CAAAwB,gBAAA,MAAXxB,CAAW,CAAAyB,OAAA,WAAXzB,CAAW,CAAA0B,MAAA,UAAX1B,CAAW,CAAA2B,KAAA,SAAX3B,CAAW,CAAA4B,KAAA,SAAX5B,CAAW,WASV,CAAAJ,uBAAuB,CAAAJ,OAAA,CAAAI,uBAAA,CAAG,CACrC,CAACD,mBAAmB,CAACuB,OAAO,EAAG,CAAC,CAChC,CAACvB,mBAAmB,CAAC0B,GAAG,EAAG,CAAC,CAC5B,CAAC1B,mBAAmB,CAAC2B,GAAG,EAAG,CAAC,CAC5B,CAAC3B,mBAAmB,CAACyB,KAAK,EAAG,CAAC,CAC9B,CAACzB,mBAAmB,CAACwB,OAAO,EAAG,CAAC,CAChC,CAACxB,mBAAmB,CAACsB,YAAY,EAAG,CACtC,CAAU,CAEGvB,sBAAsB,CAAAF,OAAA,CAAAE,sBAAA,CAAG,GAAAmC,yBAAgB,EACpDjC,uBACF,CAAC,CAEYK,eAAe,CAAAT,OAAA,CAAAS,eAAA,CAAG,CAC7B,CAACD,WAAW,CAACuB,MAAM,EAAG,CAAC,CACvB,CAACvB,WAAW,CAACwB,gBAAgB,EAAG,CAAC,CACjC,CAACxB,WAAW,CAACyB,OAAO,EAAG,CAAC,CACxB,CAACzB,WAAW,CAAC0B,MAAM,EAAG,CAAC,CACvB,CAAC1B,WAAW,CAAC2B,KAAK,EAAG,CAAC,CACtB,CAAC3B,WAAW,CAAC4B,KAAK,EAAG,CACvB,CAAU,CAEG7B,cAAc,CAAAP,OAAA,CAAAO,cAAA,CAAG,GAAA8B,yBAAgB,EAAc5B,eAAe,CAAC"}
1
+ {"version":3,"file":"types.js","names":["_helpers","require","Object","defineProperty","exports","value","OperatingSystemTypeMap","OperatingSystemType","OperatingSystemIndexMap","KameleoonData","DeviceType","BrowserTypeMap","BrowserType","BrowserIndexMap","CustomData","PageView","GeolocationData","Browser","Conversion","Cookie","Device","OperatingSystem","UserAgent","ApplicationVersion","VisitsData","KameleoonConversionScore","Phone","Tablet","Desktop","WindowsPhone","Windows","Android","Linux","Mac","IOS","Chrome","InternetExplorer","Firefox","Safari","Opera","Other","constructTypeMap"],"sources":["../../src/kameleoonData/types.ts"],"sourcesContent":["import {\n DereferencedTargetingDataType,\n TargetingDataType,\n} from 'src/targeting';\nimport { FeatureFlagVariationsType, IStorage } from 'src/storage';\nimport {\n Browser,\n Conversion,\n Cookie,\n CustomData,\n Device,\n GeolocationData,\n OperatingSystem,\n PageView,\n UserAgent,\n ApplicationVersion,\n VisitsData,\n KameleoonConversionScore,\n} from 'src/kameleoonData';\nimport { constructTypeMap } from './helpers';\n\n// --- Note ---\n// -- `Conversion`s are stored by `KameleoonData.Conversion` key in a form of an `KameleoonDataType[]` array\n// -- `PageView`s are store by `timestamp` (number) key in a form of `KameleoonDataType`\n// -- All the other unsent data types are stored in a form of `KameleoonData` key and `KameleoonDataType` value\nexport type UnsentVisitorTargetingDataType = Map<\n KameleoonData | number,\n KameleoonDataType | KameleoonDataType[]\n>;\n\nexport type UnsentTargetingDataType = {\n [visitorCode: string]: UnsentVisitorTargetingDataType | undefined;\n};\n\nexport type FieldParametersType = {\n visitorCode: string;\n key: KameleoonData;\n value:\n | BrowserDataType\n | CookieDataType\n | DeviceDataType\n | GeolocationDataType\n | OperatingSystemDataType\n | UserAgentDataType\n | VisitsDataType;\n data: DereferencedTargetingDataType;\n};\n\nexport type ArrayFieldParametersType = {\n visitorCode: string;\n key: KameleoonData;\n value: ConversionDataType;\n data: DereferencedTargetingDataType;\n};\n\nexport type NestedFieldParametersType = {\n visitorCode: string;\n key: KameleoonData.CustomData | KameleoonData.PageView;\n nestedKey: string;\n value: CustomDataType | PageViewDataType;\n data: DereferencedTargetingDataType;\n};\n\nexport type DereferenceTargetingDataResultType = {\n data: KameleoonVisitorDataType;\n visitorReference: string;\n};\n\nexport type DataManagerParametersType = {\n cleanupInterval: number | null;\n storage: IStorage<TargetingDataType>;\n};\n\nexport type KameleoonDataItemType =\n | BrowserDataType\n | ConversionDataType\n | CustomDataType\n | DeviceDataType\n | PageViewDataType\n | UserAgentDataType\n | CookieDataType\n | GeolocationDataType\n | OperatingSystemDataType\n | ApplicationVersionDataType\n | KCSDataType\n | VisitsDataType;\n\n/**\n * @interface an interface of KameleoonData\n * each class instance will have url getter method\n * for handling url of different data types\n * */\nexport interface IKameleoonData {\n /**\n * @property url - url for the current data type used for events tracking\n * */\n readonly url: string;\n /**\n * @property data - data of the current class instance\n * */\n readonly data: KameleoonDataItemType;\n /**\n * @property isSent - signifying if the data was sent already tracked\n * */\n isSent: boolean;\n}\n\n/**\n * @type a tuple of each possible type of data for `addData` method\n * of KameleoonClient\n * */\nexport type KameleoonDataType =\n | Browser\n | Conversion\n | CustomData\n | Device\n | PageView\n | UserAgent\n | VisitsData\n | GeolocationData\n | OperatingSystem\n | Cookie\n | ApplicationVersion\n | KameleoonConversionScore;\n\nexport type ActivityTimePropertyType = {\n lastActivityTime: number;\n};\n\nexport type ExistingCustomDataType = NonNullable<\n KameleoonVisitorDataType[KameleoonData.CustomData]\n>;\n\nexport type ExistingPageViewDataType = NonNullable<\n KameleoonVisitorDataType[KameleoonData.PageView]\n>;\n\nexport type ExistingNestedDataType =\n | ExistingCustomDataType\n | ExistingPageViewDataType;\n\nexport type ExistingArrayDataType = ExistingConversionDataType;\n\nexport type ExistingConversionDataType = NonNullable<\n KameleoonVisitorDataType[KameleoonData.Conversion]\n>;\n\nexport type ExistingVisitsDataType = NonNullable<\n KameleoonVisitorDataType[KameleoonData.VisitsData]\n>;\n\nexport type ExistingDataType<T extends KameleoonData> = NonNullable<\n KameleoonVisitorDataType[T]\n>;\n\nexport type KameleoonVisitorDataType<T = ActivityTimePropertyType> = {\n [KameleoonData.CustomData]?: {\n [index: string]: (CustomDataType & T) | undefined;\n };\n [KameleoonData.Conversion]?: (ConversionDataType & T)[];\n [KameleoonData.GeolocationData]?: GeolocationDataType & T;\n [KameleoonData.UserAgent]?: UserAgentDataType & T;\n [KameleoonData.PageView]?: { [url: string]: PageViewDataType & T };\n [KameleoonData.Browser]?: BrowserDataType & T;\n [KameleoonData.Device]?: DeviceDataType & T;\n [KameleoonData.Cookie]?: CookieDataType & T;\n [KameleoonData.KameleoonConversionScore]?: KCSDataType & T;\n [KameleoonData.OperatingSystem]?: OperatingSystemDataType & T;\n [KameleoonData.ApplicationVersion]?: ApplicationVersionDataType & T;\n [KameleoonData.VisitsData]?: VisitsDataType & T;\n};\n\nexport enum KameleoonData {\n CustomData = 'customData',\n PageView = 'pageView',\n GeolocationData = 'geolocation',\n Browser = 'browser',\n Conversion = 'conversion',\n Cookie = 'cookie',\n Device = 'device',\n OperatingSystem = 'operatingSystem',\n UserAgent = 'userAgent',\n ApplicationVersion = 'applicationVersion',\n VisitsData = 'visitsData',\n KameleoonConversionScore = 'kameleoonConversionScore',\n}\n\ntype SharedDataPropertiesType = {\n type: KameleoonData;\n sent: boolean;\n};\n\nexport type BrowserDataType = {\n browser: BrowserType;\n version?: number;\n} & SharedDataPropertiesType;\n\nexport type ConversionDataType = {\n goalId: number;\n revenue: number;\n negative: boolean;\n} & SharedDataPropertiesType;\n\nexport type CustomDataType = {\n index: number;\n value: string[];\n isIdentifier: boolean;\n} & SharedDataPropertiesType;\n\nexport type DeviceDataType = {\n device: DeviceType;\n} & SharedDataPropertiesType;\n\nexport type KCSDataType = {\n kcs: KCSType;\n} & SharedDataPropertiesType;\n\nexport type VisitsDataType = {\n visits: number[];\n} & SharedDataPropertiesType;\n\nexport type OperatingSystemDataType = {\n operatingSystem: OperatingSystemType;\n} & SharedDataPropertiesType;\n\nexport type CookieDataType = {\n cookie: CookieType[];\n} & SharedDataPropertiesType;\n\nexport type GeolocationDataType = GeolocationInfoType &\n SharedDataPropertiesType;\n\nexport type PageViewDataType = {\n urlAddress: string;\n title: string;\n referrers?: number[];\n timestamps: number[];\n} & SharedDataPropertiesType;\n\nexport type UserAgentDataType = {\n value: string;\n} & SharedDataPropertiesType;\n\nexport type ApplicationVersionDataType = {\n version: string;\n} & SharedDataPropertiesType;\n\n/**\n * @param {number} goalId - an id of a goal to track\n * @param {number | undefined} revenue - an optional parameter for revenue, default value is `0`\n * @param {boolean | undefined} negative - an optional parameter identifying whether the conversion should be removed, default value is `false`\n * */\nexport type ConversionParametersType = {\n goalId: number;\n revenue?: number;\n negative?: boolean;\n};\n\n/**\n * @param {string} urlAddress - url address of the page to track\n * @param {string} title - title of the web page\n * @param {number[] | undefined} referrers - an optional parameter containing a list of referrersIndices, has no default value\n * */\nexport type PageViewParametersType = {\n urlAddress: string;\n title: string;\n referrers?: number[];\n};\n\n/**\n * @readonly\n * @enum {string} an Enum containing all possible variants for device type\n * */\nexport enum DeviceType {\n Phone = 'PHONE',\n Tablet = 'TABLET',\n Desktop = 'DESKTOP',\n}\n\n/**\n * @readonly\n * @enum {string} an Enum containing all possible variants for operating system type\n * */\nexport enum OperatingSystemType {\n WindowsPhone = 'WINDOWS_PHONE',\n Windows = 'WINDOWS',\n Android = 'ANDROID',\n Linux = 'LINUX',\n Mac = 'MAC',\n IOS = 'IOS',\n}\n\n/**\n * @param {string} country - a country of a visitor\n * @param {string | undefined} region - an optional parameter containing a region of a visitor, has no default value\n * @param {string | undefined} city - an optional parameter containing a city of a visitor, has no default value\n * @param {string | undefined} postalCode - an optional parameter containing a postal code of a visitor, has no default value\n * @param {[number, number] | undefined} coordinates - an optional parameter containing a pair of coordinates (longitude and latitude) of a visitor, has no default value. Coordinate `number` represents decimal degrees (double that can be negative)\n * */\nexport type GeolocationInfoType = {\n country: string;\n region?: string;\n city?: string;\n postalCode?: string;\n coordinates?: [number, number];\n};\n\n/**\n * @param {string} key - a key of a cookie\n * @param {string} value - a value of a cookie\n * */\nexport type CookieType = {\n key: string;\n value: string;\n};\n\n/**\n * @type Nested object of key moments and goals with their respective scores\n * */\nexport type KCSType = {\n [keyMoment: string]: {\n [goalId: string]: number;\n };\n};\n\nexport type OptionalCookieType = Omit<CookieType, 'key'> & {\n key?: string;\n};\n\n/**\n * @readonly\n * @enum {string} an Enum containing all possible variants for browser type\n * */\nexport enum BrowserType {\n Chrome = 'CHROME',\n InternetExplorer = 'IE',\n Firefox = 'FIREFOX',\n Safari = 'SAFARI',\n Opera = 'OPERA',\n Other = 'OTHER',\n}\n\nexport const OperatingSystemIndexMap = {\n [OperatingSystemType.Windows]: 0,\n [OperatingSystemType.Mac]: 1,\n [OperatingSystemType.IOS]: 2,\n [OperatingSystemType.Linux]: 3,\n [OperatingSystemType.Android]: 4,\n [OperatingSystemType.WindowsPhone]: 5,\n} as const;\n\nexport const OperatingSystemTypeMap = constructTypeMap<OperatingSystemType>(\n OperatingSystemIndexMap,\n);\n\nexport const BrowserIndexMap = {\n [BrowserType.Chrome]: 0,\n [BrowserType.InternetExplorer]: 1,\n [BrowserType.Firefox]: 2,\n [BrowserType.Safari]: 3,\n [BrowserType.Opera]: 4,\n [BrowserType.Other]: 5,\n} as const;\n\nexport const BrowserTypeMap = constructTypeMap<BrowserType>(BrowserIndexMap);\n\nexport type SingleDataType = {\n [KameleoonData.Device]: Device | null;\n [KameleoonData.Browser]: Browser | null;\n [KameleoonData.GeolocationData]: GeolocationData | null;\n [KameleoonData.OperatingSystem]: OperatingSystem | null;\n [KameleoonData.KameleoonConversionScore]: KameleoonConversionScore | null;\n};\n\nexport type MultipleDataType = {\n [KameleoonData.CustomData]: Map<number, CustomData>;\n [KameleoonData.PageView]: Map<string, PageView>;\n [KameleoonData.Conversion]: Map<number, Conversion>;\n};\n\nexport type VisitProcessorDataType = {\n visitorData: KameleoonDataType[];\n storageVisitorData: KameleoonDataType[];\n visitsData: VisitsData;\n experimentData: FeatureFlagVariationsType;\n};\n"],"mappings":"aAmBA,IAAAA,QAAA,CAAAC,OAAA,cAA6CC,MAAA,CAAAC,cAAA,CAAAC,OAAA,eAAAC,KAAA,MAAAD,OAAA,CAAAE,sBAAA,CAAAF,OAAA,CAAAG,mBAAA,CAAAH,OAAA,CAAAI,uBAAA,CAAAJ,OAAA,CAAAK,aAAA,CAAAL,OAAA,CAAAM,UAAA,CAAAN,OAAA,CAAAO,cAAA,CAAAP,OAAA,CAAAQ,WAAA,CAAAR,OAAA,CAAAS,eAAA,WAyJjC,CAAAJ,aAAa,CAAAL,OAAA,CAAAK,aAAA,UAAbA,CAAa,QAAb,CAAAA,CAAa,CAAAK,UAAA,cAAbL,CAAa,CAAAM,QAAA,YAAbN,CAAa,CAAAO,eAAA,eAAbP,CAAa,CAAAQ,OAAA,WAAbR,CAAa,CAAAS,UAAA,cAAbT,CAAa,CAAAU,MAAA,UAAbV,CAAa,CAAAW,MAAA,UAAbX,CAAa,CAAAY,eAAA,mBAAbZ,CAAa,CAAAa,SAAA,aAAbb,CAAa,CAAAc,kBAAA,sBAAbd,CAAa,CAAAe,UAAA,cAAbf,CAAa,CAAAgB,wBAAA,4BAAbhB,CAAa,MAqGbC,UAAU,CAAAN,OAAA,CAAAM,UAAA,UAAVA,CAAU,QAAV,CAAAA,CAAU,CAAAgB,KAAA,SAAVhB,CAAU,CAAAiB,MAAA,UAAVjB,CAAU,CAAAkB,OAAA,WAAVlB,CAAU,MAUVH,mBAAmB,CAAAH,OAAA,CAAAG,mBAAA,UAAnBA,CAAmB,QAAnB,CAAAA,CAAmB,CAAAsB,YAAA,iBAAnBtB,CAAmB,CAAAuB,OAAA,WAAnBvB,CAAmB,CAAAwB,OAAA,WAAnBxB,CAAmB,CAAAyB,KAAA,SAAnBzB,CAAmB,CAAA0B,GAAA,OAAnB1B,CAAmB,CAAA2B,GAAA,OAAnB3B,CAAmB,MAkDnBK,WAAW,CAAAR,OAAA,CAAAQ,WAAA,UAAXA,CAAW,QAAX,CAAAA,CAAW,CAAAuB,MAAA,UAAXvB,CAAW,CAAAwB,gBAAA,MAAXxB,CAAW,CAAAyB,OAAA,WAAXzB,CAAW,CAAA0B,MAAA,UAAX1B,CAAW,CAAA2B,KAAA,SAAX3B,CAAW,CAAA4B,KAAA,SAAX5B,CAAW,WASV,CAAAJ,uBAAuB,CAAAJ,OAAA,CAAAI,uBAAA,CAAG,CACrC,CAACD,mBAAmB,CAACuB,OAAO,EAAG,CAAC,CAChC,CAACvB,mBAAmB,CAAC0B,GAAG,EAAG,CAAC,CAC5B,CAAC1B,mBAAmB,CAAC2B,GAAG,EAAG,CAAC,CAC5B,CAAC3B,mBAAmB,CAACyB,KAAK,EAAG,CAAC,CAC9B,CAACzB,mBAAmB,CAACwB,OAAO,EAAG,CAAC,CAChC,CAACxB,mBAAmB,CAACsB,YAAY,EAAG,CACtC,CAAU,CAEGvB,sBAAsB,CAAAF,OAAA,CAAAE,sBAAA,CAAG,GAAAmC,yBAAgB,EACpDjC,uBACF,CAAC,CAEYK,eAAe,CAAAT,OAAA,CAAAS,eAAA,CAAG,CAC7B,CAACD,WAAW,CAACuB,MAAM,EAAG,CAAC,CACvB,CAACvB,WAAW,CAACwB,gBAAgB,EAAG,CAAC,CACjC,CAACxB,WAAW,CAACyB,OAAO,EAAG,CAAC,CACxB,CAACzB,WAAW,CAAC0B,MAAM,EAAG,CAAC,CACvB,CAAC1B,WAAW,CAAC2B,KAAK,EAAG,CAAC,CACtB,CAAC3B,WAAW,CAAC4B,KAAK,EAAG,CACvB,CAAU,CAEG7B,cAAc,CAAAP,OAAA,CAAAO,cAAA,CAAG,GAAA8B,yBAAgB,EAAc5B,eAAe,CAAC"}
@@ -1,8 +1,32 @@
1
- import { Environment } from './types';
1
+ import { KameleoonResponseType, RequestType } from './requester';
2
+ import { Environment, SimulateRequestDataType } from './types';
2
3
  /**
3
- * @abstract
4
- * KameleoonUtils - an abstract class for extending kameleoon utils with pre-defined method signatures
4
+ * KameleoonUtils - a class containing static Kameleoon helper methods
5
5
  * */
6
- export declare abstract class KameleoonUtils {
7
- protected getClientConfigurationUrl(siteCode: string, environment?: Environment): string;
6
+ export declare class KameleoonUtils {
7
+ /**
8
+ * @method getClientConfigurationUrl - a method to get client configuration url
9
+ * @deprecated this method will soon be removed in favor of custom `IExternalRequester` implementation
10
+ *
11
+ * @param {string} siteCode - site code
12
+ * @param {Environment} environment - environment, default is `production`
13
+ * @param {string} networkDomain - network domain to be used instead of default `kameleoon.com`, useful for proxying, must be in format `example.com`
14
+ * @returns {string} client configuration url
15
+ * */
16
+ static getClientConfigurationUrl(siteCode: string, environment?: Environment, networkDomain?: string): string;
17
+ /**
18
+ * @method simulateSuccessRequest - a method to simulate a successful request based on request type, primarily used for `IExternalRequester` implementations
19
+ *
20
+ * @param {RequestType} requestType - request type
21
+ * @param {SimulateRequestDataType[RequestType]} data - simulate data type for request
22
+ * */
23
+ static simulateSuccessRequest<T extends RequestType>(requestType: T, data: SimulateRequestDataType[T]): Promise<KameleoonResponseType>;
24
+ /**
25
+ * @method getCookieValue - a method to get a cookie value by key from a cookie string, primarily used for `IExternalVisitorCodeManager` implementations
26
+ *
27
+ * @param {string} cookie - cookie string
28
+ * @param {string} key - cookie key
29
+ * @returns {string | null} cookie value or null if not found
30
+ * */
31
+ static getCookieValue(cookie: string, key: string): string | null;
8
32
  }
@@ -1,2 +1,2 @@
1
- "use strict";var _requester=require("./requester");Object.defineProperty(exports,"__esModule",{value:!0}),exports.KameleoonUtils=void 0;class KameleoonUtils{getClientConfigurationUrl(a,b){return b?_requester.URL.CLIENT_CONFIGURATION+a+_requester.UrlFirstParameter.Environment+b:_requester.URL.CLIENT_CONFIGURATION+a}}exports.KameleoonUtils=KameleoonUtils;
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.KameleoonUtils=void 0;var _kameleoonError=require("./kameleoonError"),_requester=require("./requester");class KameleoonUtils{static getClientConfigurationUrl(a,b,c){let d="https://sdk-config.".concat(c||"kameleoon.eu","/");return b?d+a+_requester.UrlFirstParameter.Environment+b:d+a}static simulateSuccessRequest(a,b){switch(a){case _requester.RequestType.Tracking:return new Promise(a=>{a({status:204,json:()=>new Promise(a=>a(null)),ok:!0})});case _requester.RequestType.Configuration:case _requester.RequestType.RemoteData:return new Promise(a=>{a({status:200,json:()=>new Promise(a=>a(b)),ok:!0})});default:(0,_kameleoonError.exhaustCheck)(a)}}static getCookieValue(a,b){const c=a.split("; "),d=c.find(a=>{const[c,d]=a.split("=");return c===b&&""!==d});return d?d.split("=")[1]:null}}exports.KameleoonUtils=KameleoonUtils;
2
2
  //# sourceMappingURL=kameleoonUtils.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"kameleoonUtils.js","names":["_requester","require","Object","defineProperty","exports","value","KameleoonUtils","getClientConfigurationUrl","siteCode","environment","URL","CLIENT_CONFIGURATION","UrlFirstParameter","Environment"],"sources":["../src/kameleoonUtils.ts"],"sourcesContent":["import { URL, UrlFirstParameter } from './requester';\nimport { Environment } from './types';\n\n/**\n * @abstract\n * KameleoonUtils - an abstract class for extending kameleoon utils with pre-defined method signatures\n * */\nexport abstract class KameleoonUtils {\n protected getClientConfigurationUrl(\n siteCode: string,\n environment?: Environment,\n ): string {\n if (environment) {\n return (\n URL.CLIENT_CONFIGURATION +\n siteCode +\n UrlFirstParameter.Environment +\n environment\n );\n }\n\n return URL.CLIENT_CONFIGURATION + siteCode;\n }\n}\n"],"mappings":"aAAA,IAAAA,UAAA,CAAAC,OAAA,gBAAqDC,MAAA,CAAAC,cAAA,CAAAC,OAAA,eAAAC,KAAA,MAAAD,OAAA,CAAAE,cAAA,QAO9C,KAAe,CAAAA,cAAe,CACzBC,yBAAyBA,CACjCC,CAAgB,CAChBC,CAAyB,CACjB,OACJ,CAAAA,CAAW,CAEXC,cAAG,CAACC,oBAAoB,CACxBH,CAAQ,CACRI,4BAAiB,CAACC,WAAW,CAC7BJ,CAAW,CAIRC,cAAG,CAACC,oBAAoB,CAAGH,CACpC,CACF,CAACJ,OAAA,CAAAE,cAAA,CAAAA,cAAA"}
1
+ {"version":3,"file":"kameleoonUtils.js","names":["KameleoonUtils","getClientConfigurationUrl","siteCode","environment","networkDomain","url","concat","UrlFirstParameter","Environment","simulateSuccessRequest","requestType","data","RequestType","Tracking","Promise","resolve","status","json","r","ok","Configuration","RemoteData","exhaustCheck","getCookieValue","cookie","key","pairs","split","pair","find","pairKey","pairValue","exports"],"sources":["../src/kameleoonUtils.ts"],"sourcesContent":["import { exhaustCheck } from './kameleoonError';\nimport {\n KameleoonResponseType,\n RequestType,\n UrlFirstParameter,\n} from './requester';\nimport { Environment, SimulateRequestDataType } from './types';\n\n/**\n * KameleoonUtils - a class containing static Kameleoon helper methods\n * */\nexport class KameleoonUtils {\n /**\n * @method getClientConfigurationUrl - a method to get client configuration url\n * @deprecated this method will soon be removed in favor of custom `IExternalRequester` implementation\n *\n * @param {string} siteCode - site code\n * @param {Environment} environment - environment, default is `production`\n * @param {string} networkDomain - network domain to be used instead of default `kameleoon.com`, useful for proxying, must be in format `example.com`\n * @returns {string} client configuration url\n * */\n public static getClientConfigurationUrl(\n siteCode: string,\n environment?: Environment,\n networkDomain?: string,\n ): string {\n let domain = networkDomain || 'kameleoon.eu';\n let url = `https://sdk-config.${domain}/`;\n\n if (!environment) {\n return url + siteCode;\n }\n\n return url + siteCode + UrlFirstParameter.Environment + environment;\n }\n\n /**\n * @method simulateSuccessRequest - a method to simulate a successful request based on request type, primarily used for `IExternalRequester` implementations\n *\n * @param {RequestType} requestType - request type\n * @param {SimulateRequestDataType[RequestType]} data - simulate data type for request\n * */\n public static simulateSuccessRequest<T extends RequestType>(\n requestType: T,\n data: SimulateRequestDataType[T],\n ): Promise<KameleoonResponseType> {\n switch (requestType) {\n case RequestType.Tracking:\n return new Promise((resolve) => {\n const response: KameleoonResponseType = {\n status: 204,\n json: () => new Promise((r) => r(null)),\n ok: true,\n };\n\n resolve(response);\n });\n case RequestType.Configuration:\n case RequestType.RemoteData:\n return new Promise((resolve) => {\n const response: KameleoonResponseType = {\n status: 200,\n json: () => new Promise((r) => r(data)),\n ok: true,\n };\n\n resolve(response);\n });\n default:\n exhaustCheck(requestType);\n }\n }\n\n /**\n * @method getCookieValue - a method to get a cookie value by key from a cookie string, primarily used for `IExternalVisitorCodeManager` implementations\n *\n * @param {string} cookie - cookie string\n * @param {string} key - cookie key\n * @returns {string | null} cookie value or null if not found\n * */\n public static getCookieValue(cookie: string, key: string): string | null {\n const pairs = cookie.split('; ');\n const pair = pairs.find((pair) => {\n const [pairKey, pairValue] = pair.split('=');\n\n return pairKey === key && pairValue !== '';\n });\n\n if (pair) {\n return pair.split('=')[1];\n }\n\n return null;\n }\n}\n"],"mappings":"oLAWO,KAAM,CAAAA,cAAe,CAU1B,MAAc,CAAAC,yBAAyBA,CACrCC,CAAgB,CAChBC,CAAyB,CACzBC,CAAsB,CACd,IAEJ,CAAAC,CAAG,uBAAAC,MAAA,CADMF,CAAa,EAAI,cAAc,KACH,OAEpC,CAAAD,CAAW,CAITE,CAAG,CAAGH,CAAQ,CAAGK,4BAAiB,CAACC,WAAW,CAAGL,CAAW,CAH1DE,CAAG,CAAGH,CAIjB,CAQA,MAAc,CAAAO,sBAAsBA,CAClCC,CAAc,CACdC,CAAgC,CACA,CAChC,OAAQD,CAAW,EACjB,IAAK,CAAAE,sBAAW,CAACC,QAAQ,CACvB,MAAO,IAAI,CAAAC,OAAO,CAAEC,CAAO,EAAK,CAO9BA,CAAO,CANiC,CACtCC,MAAM,CAAE,GAAG,CACXC,IAAI,CAAEA,CAAA,GAAM,GAAI,CAAAH,OAAO,CAAEI,CAAC,EAAKA,CAAC,CAAC,IAAI,CAAC,CAAC,CACvCC,EAAE,GACJ,CAEgB,CAClB,CAAC,CAAC,CACJ,IAAK,CAAAP,sBAAW,CAACQ,aAAa,CAC9B,IAAK,CAAAR,sBAAW,CAACS,UAAU,CACzB,MAAO,IAAI,CAAAP,OAAO,CAAEC,CAAO,EAAK,CAO9BA,CAAO,CANiC,CACtCC,MAAM,CAAE,GAAG,CACXC,IAAI,CAAEA,CAAA,GAAM,GAAI,CAAAH,OAAO,CAAEI,CAAC,EAAKA,CAAC,CAACP,CAAI,CAAC,CAAC,CACvCQ,EAAE,GACJ,CAEgB,CAClB,CAAC,CAAC,CACJ,QACE,GAAAG,4BAAY,EAACZ,CAAW,CAC5B,CACF,CASA,MAAc,CAAAa,cAAcA,CAACC,CAAc,CAAEC,CAAW,CAAiB,MACjE,CAAAC,CAAK,CAAGF,CAAM,CAACG,KAAK,CAAC,IAAI,CAAC,CAC1BC,CAAI,CAAGF,CAAK,CAACG,IAAI,CAAED,CAAI,EAAK,CAChC,KAAM,CAACE,CAAO,CAAEC,CAAS,CAAC,CAAGH,CAAI,CAACD,KAAK,CAAC,GAAG,CAAC,CAE5C,MAAO,CAAAG,CAAO,GAAKL,CAAG,EAAkB,EAAE,GAAhBM,CAC5B,CAAC,CAAC,OAEE,CAAAH,CAAI,CACCA,CAAI,CAACD,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAGpB,IACT,CACF,CAACK,OAAA,CAAAhC,cAAA,CAAAA,cAAA"}
@@ -1,7 +1,5 @@
1
1
  import { EventType, ParameterType, QueryType, StrictEventTypeRecord, StrictFirstParameterRecord, StrictParameterRecord, StrictQueryRecord, StrictTrackingRecord, TrackingType } from './types';
2
- export declare const DEFAULT_REQUEST_TIMEOUT: number;
3
- export declare const RETRIES_DELAY: number;
4
- export declare const NUMBER_OF_RETRIES = 3;
2
+ export declare const NUMBER_OF_RETRIES = 2;
5
3
  export declare enum Header {
6
4
  UserAgent = "User-Agent",
7
5
  ContentType = "Content-Type",
@@ -15,8 +13,3 @@ export declare const UrlParameter: StrictParameterRecord<ParameterType>;
15
13
  export declare const UrlFirstParameter: StrictFirstParameterRecord<ParameterType>;
16
14
  export declare const UrlQuery: StrictQueryRecord<QueryType>;
17
15
  export declare const UrlTracking: StrictTrackingRecord<TrackingType>;
18
- export declare const DATA_API_DOMAIN = "data.kameleoon";
19
- export declare const URL: {
20
- SERVER_SENT_EVENTS: string;
21
- CLIENT_CONFIGURATION: string;
22
- };
@@ -1,2 +1,2 @@
1
- "use strict";var _types=require("../types");Object.defineProperty(exports,"__esModule",{value:!0}),exports.UrlTracking=exports.UrlQuery=exports.UrlParameter=exports.UrlFirstParameter=exports.UrlEventType=exports.URL=exports.RETRIES_DELAY=exports.NUMBER_OF_RETRIES=exports.Header=exports.DEFAULT_REQUEST_TIMEOUT=exports.DATA_API_DOMAIN=void 0;const DEFAULT_REQUEST_TIMEOUT=exports.DEFAULT_REQUEST_TIMEOUT=10*_types.Milliseconds.Second,RETRIES_DELAY=exports.RETRIES_DELAY=5*_types.Milliseconds.Second,NUMBER_OF_RETRIES=exports.NUMBER_OF_RETRIES=3;let Header=exports.Header=function(a){return a.UserAgent="User-Agent",a.ContentType="Content-Type",a.SdkVersion="X-Kameleoon-SDK-Version",a.SdkType="X-Kameleoon-SDK-Type",a.Authorization="Authorization",a.AcceptEncoding="Accept-Encoding",a}({});const UrlEventType=exports.UrlEventType={CustomData:"eventType=customData",StaticData:"eventType=staticData",Page:"eventType=page",Conversion:"eventType=conversion",Activity:"eventType=activity",Experiment:"eventType=experiment",Geolocation:"eventType=geolocation"},UrlParameter=exports.UrlParameter={Title:"&title=",ReferrersIndices:"&referrersIndices=",Negative:"&negative=",Revenue:"&revenue=",Overwrite:"&overwrite=",Index:"&index=",BrowserIndex:"&browserIndex=",BrowserVersion:"&browserVersion=",Href:"&href=",DeviceType:"&deviceType=",SiteCode:"&siteCode=",GoalId:"&goalId=",VisitorCode:"&visitorCode=",VariationId:"&variationId=",Ts:"&ts=",Key:"&key=",SdkName:"&sdkName=",SdkVersion:"&sdkVersion=",ValuesCountMap:"&valuesCountMap=",Nonce:"&nonce=",Id:"&id=",CustomData:"&customData=",CurrentVisit:"&currentVisit=",MaxNumberPreviousVisits:"&maxNumberPreviousVisits=",Os:"&os=",OsIndex:"&osIndex=",Country:"&country=",City:"&city=",Region:"&region=",Latitude:"&latitude=",Longitude:"&longitude=",PostalCode:"&postalCode=",Conversion:"&conversion=",StaticData:"&staticData=",Geolocation:"&geolocation=",Page:"&page=",Experiment:"&experiment=",Browser:"&browser=",Environment:"&environment=",MappingIdentifier:"&mappingIdentifier=",MappingValue:"&mappingValue=",Kcs:"&kcs="},UrlFirstParameter=exports.UrlFirstParameter={CustomData:"?customData=",StaticData:"?staticData=",Page:"?page=",Conversion:"?conversion=",Geolocation:"?geolocation=",Experiment:"?experiment=",ValuesCountMap:"?valuesCountMap=",Id:"?id=",Nonce:"?nonce=",Country:"?country=",Environment:"?environment=",City:"?city=",Region:"?region=",Latitude:"?latitude=",Longitude:"?longitude=",PostalCode:"?postalCode=",SdkName:"?sdkName=",SdkVersion:"?sdkVersion=",BrowserIndex:"?browserIndex=",BrowserVersion:"?browserVersion=",SiteCode:"?siteCode=",VisitorCode:"?visitorCode=",CurrentVisit:"?currentVisit=",MaxNumberPreviousVisits:"?maxNumberPreviousVisits=",Negative:"?negative=",Revenue:"?revenue=",Title:"?title=",Os:"?os=",OsIndex:"?osIndex=",Browser:"?browser=",ReferrersIndices:"?referrersIndices=",Overwrite:"?overwrite=",Index:"?index=",Href:"?href=",VariationId:"?variationId=",DeviceType:"?deviceType=",GoalId:"?goalId=",Ts:"?ts=",Key:"?key=",MappingIdentifier:"?mappingIdentifier=",MappingValue:"?mappingValue=",Kcs:"?kcs="},UrlQuery=exports.UrlQuery={Sse:"sse?siteCode=",Map:"map?siteCode=",Events:"events?siteCode=",Visitor:"visitor?siteCode="},UrlTracking=exports.UrlTracking={Visit:"visit/",Map:"map/"},DATA_API_DOMAIN=exports.DATA_API_DOMAIN="data.kameleoon",URL=exports.URL={SERVER_SENT_EVENTS:"https://events.kameleoon.com:8110/",CLIENT_CONFIGURATION:"https://sdk-config.kameleoon.eu/"};
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.UrlTracking=exports.UrlQuery=exports.UrlParameter=exports.UrlFirstParameter=exports.UrlEventType=exports.NUMBER_OF_RETRIES=exports.Header=void 0;const NUMBER_OF_RETRIES=exports.NUMBER_OF_RETRIES=2;let Header=exports.Header=function(a){return a.UserAgent="User-Agent",a.ContentType="Content-Type",a.SdkVersion="X-Kameleoon-SDK-Version",a.SdkType="X-Kameleoon-SDK-Type",a.Authorization="Authorization",a.AcceptEncoding="Accept-Encoding",a}({});const UrlEventType=exports.UrlEventType={CustomData:"eventType=customData",StaticData:"eventType=staticData",Page:"eventType=page",Conversion:"eventType=conversion",Activity:"eventType=activity",Experiment:"eventType=experiment",Geolocation:"eventType=geolocation"},UrlParameter=exports.UrlParameter={Title:"&title=",ReferrersIndices:"&referrersIndices=",Negative:"&negative=",Revenue:"&revenue=",Overwrite:"&overwrite=",Index:"&index=",BrowserIndex:"&browserIndex=",BrowserVersion:"&browserVersion=",Href:"&href=",DeviceType:"&deviceType=",SiteCode:"&siteCode=",GoalId:"&goalId=",VisitorCode:"&visitorCode=",VariationId:"&variationId=",Ts:"&ts=",Key:"&key=",SdkName:"&sdkName=",SdkVersion:"&sdkVersion=",ValuesCountMap:"&valuesCountMap=",Nonce:"&nonce=",Id:"&id=",CustomData:"&customData=",CurrentVisit:"&currentVisit=",MaxNumberPreviousVisits:"&maxNumberPreviousVisits=",Os:"&os=",OsIndex:"&osIndex=",Country:"&country=",City:"&city=",Region:"&region=",Latitude:"&latitude=",Longitude:"&longitude=",PostalCode:"&postalCode=",Conversion:"&conversion=",StaticData:"&staticData=",Geolocation:"&geolocation=",Page:"&page=",Experiment:"&experiment=",Browser:"&browser=",Environment:"&environment=",MappingIdentifier:"&mappingIdentifier=",MappingValue:"&mappingValue=",Kcs:"&kcs="},UrlFirstParameter=exports.UrlFirstParameter={CustomData:"?customData=",StaticData:"?staticData=",Page:"?page=",Conversion:"?conversion=",Geolocation:"?geolocation=",Experiment:"?experiment=",ValuesCountMap:"?valuesCountMap=",Id:"?id=",Nonce:"?nonce=",Country:"?country=",Environment:"?environment=",City:"?city=",Region:"?region=",Latitude:"?latitude=",Longitude:"?longitude=",PostalCode:"?postalCode=",SdkName:"?sdkName=",SdkVersion:"?sdkVersion=",BrowserIndex:"?browserIndex=",BrowserVersion:"?browserVersion=",SiteCode:"?siteCode=",VisitorCode:"?visitorCode=",CurrentVisit:"?currentVisit=",MaxNumberPreviousVisits:"?maxNumberPreviousVisits=",Negative:"?negative=",Revenue:"?revenue=",Title:"?title=",Os:"?os=",OsIndex:"?osIndex=",Browser:"?browser=",ReferrersIndices:"?referrersIndices=",Overwrite:"?overwrite=",Index:"?index=",Href:"?href=",VariationId:"?variationId=",DeviceType:"?deviceType=",GoalId:"?goalId=",Ts:"?ts=",Key:"?key=",MappingIdentifier:"?mappingIdentifier=",MappingValue:"?mappingValue=",Kcs:"?kcs="},UrlQuery=exports.UrlQuery={Sse:"sse?siteCode=",Map:"map?siteCode=",Events:"events?siteCode=",Visitor:"visitor?siteCode="},UrlTracking=exports.UrlTracking={Visit:"visit/",Map:"map/"};
2
2
  //# sourceMappingURL=constants.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"constants.js","names":["_types","require","Object","defineProperty","exports","value","UrlTracking","UrlQuery","UrlParameter","UrlFirstParameter","UrlEventType","URL","RETRIES_DELAY","NUMBER_OF_RETRIES","Header","DEFAULT_REQUEST_TIMEOUT","DATA_API_DOMAIN","Milliseconds","Second","UserAgent","ContentType","SdkVersion","SdkType","Authorization","AcceptEncoding","CustomData","StaticData","Page","Conversion","Activity","Experiment","Geolocation","Title","ReferrersIndices","Negative","Revenue","Overwrite","Index","BrowserIndex","BrowserVersion","Href","DeviceType","SiteCode","GoalId","VisitorCode","VariationId","Ts","Key","SdkName","ValuesCountMap","Nonce","Id","CurrentVisit","MaxNumberPreviousVisits","Os","OsIndex","Country","City","Region","Latitude","Longitude","PostalCode","Browser","Environment","MappingIdentifier","MappingValue","Kcs","Sse","Map","Events","Visitor","Visit","SERVER_SENT_EVENTS","CLIENT_CONFIGURATION"],"sources":["../../src/requester/constants.ts"],"sourcesContent":["import { Milliseconds } from 'src/types';\nimport {\n EventType,\n ParameterType,\n QueryType,\n StrictEventTypeRecord,\n StrictFirstParameterRecord,\n StrictParameterRecord,\n StrictQueryRecord,\n StrictTrackingRecord,\n TrackingType,\n} from './types';\n\nexport const DEFAULT_REQUEST_TIMEOUT = 10 * Milliseconds.Second;\nexport const RETRIES_DELAY = 5 * Milliseconds.Second;\nexport const NUMBER_OF_RETRIES = 3;\n\nexport enum Header {\n UserAgent = 'User-Agent',\n ContentType = 'Content-Type',\n SdkVersion = 'X-Kameleoon-SDK-Version',\n SdkType = 'X-Kameleoon-SDK-Type',\n Authorization = 'Authorization',\n AcceptEncoding = 'Accept-Encoding',\n}\n\nexport const UrlEventType: StrictEventTypeRecord<EventType> = {\n CustomData: 'eventType=customData',\n StaticData: 'eventType=staticData',\n Page: 'eventType=page',\n Conversion: 'eventType=conversion',\n Activity: 'eventType=activity',\n Experiment: 'eventType=experiment',\n Geolocation: 'eventType=geolocation',\n};\nexport const UrlParameter: StrictParameterRecord<ParameterType> = {\n Title: '&title=',\n ReferrersIndices: '&referrersIndices=',\n Negative: '&negative=',\n Revenue: '&revenue=',\n Overwrite: '&overwrite=',\n Index: '&index=',\n BrowserIndex: '&browserIndex=',\n BrowserVersion: '&browserVersion=',\n Href: '&href=',\n DeviceType: '&deviceType=',\n SiteCode: '&siteCode=',\n GoalId: '&goalId=',\n VisitorCode: '&visitorCode=',\n VariationId: '&variationId=',\n Ts: '&ts=',\n Key: '&key=',\n SdkName: '&sdkName=',\n SdkVersion: '&sdkVersion=',\n ValuesCountMap: '&valuesCountMap=',\n Nonce: '&nonce=',\n Id: '&id=',\n CustomData: '&customData=',\n CurrentVisit: '&currentVisit=',\n MaxNumberPreviousVisits: '&maxNumberPreviousVisits=',\n Os: '&os=',\n OsIndex: '&osIndex=',\n Country: '&country=',\n City: '&city=',\n Region: '&region=',\n Latitude: '&latitude=',\n Longitude: '&longitude=',\n PostalCode: '&postalCode=',\n Conversion: '&conversion=',\n StaticData: '&staticData=',\n Geolocation: '&geolocation=',\n Page: '&page=',\n Experiment: '&experiment=',\n Browser: '&browser=',\n Environment: '&environment=',\n MappingIdentifier: '&mappingIdentifier=',\n MappingValue: '&mappingValue=',\n Kcs: '&kcs=',\n};\nexport const UrlFirstParameter: StrictFirstParameterRecord<ParameterType> = {\n CustomData: '?customData=',\n StaticData: '?staticData=',\n Page: '?page=',\n Conversion: '?conversion=',\n Geolocation: '?geolocation=',\n Experiment: '?experiment=',\n ValuesCountMap: '?valuesCountMap=',\n Id: '?id=',\n Nonce: '?nonce=',\n Country: '?country=',\n Environment: '?environment=',\n City: '?city=',\n Region: '?region=',\n Latitude: '?latitude=',\n Longitude: '?longitude=',\n PostalCode: '?postalCode=',\n SdkName: '?sdkName=',\n SdkVersion: '?sdkVersion=',\n BrowserIndex: '?browserIndex=',\n BrowserVersion: '?browserVersion=',\n SiteCode: '?siteCode=',\n VisitorCode: '?visitorCode=',\n CurrentVisit: '?currentVisit=',\n MaxNumberPreviousVisits: '?maxNumberPreviousVisits=',\n Negative: '?negative=',\n Revenue: '?revenue=',\n Title: '?title=',\n Os: '?os=',\n OsIndex: '?osIndex=',\n Browser: '?browser=',\n ReferrersIndices: '?referrersIndices=',\n Overwrite: '?overwrite=',\n Index: '?index=',\n Href: '?href=',\n VariationId: '?variationId=',\n DeviceType: '?deviceType=',\n GoalId: '?goalId=',\n Ts: '?ts=',\n Key: '?key=',\n MappingIdentifier: '?mappingIdentifier=',\n MappingValue: '?mappingValue=',\n Kcs: '?kcs=',\n};\nexport const UrlQuery: StrictQueryRecord<QueryType> = {\n Sse: 'sse?siteCode=',\n Map: 'map?siteCode=',\n Events: 'events?siteCode=',\n Visitor: 'visitor?siteCode=',\n};\nexport const UrlTracking: StrictTrackingRecord<TrackingType> = {\n Visit: 'visit/',\n Map: 'map/',\n};\nexport const DATA_API_DOMAIN = 'data.kameleoon';\n\nexport const URL = {\n SERVER_SENT_EVENTS: 'https://events.kameleoon.com:8110/',\n CLIENT_CONFIGURATION: 'https://sdk-config.kameleoon.eu/',\n};\n"],"mappings":"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"}
1
+ {"version":3,"file":"constants.js","names":["NUMBER_OF_RETRIES","exports","Header","UserAgent","ContentType","SdkVersion","SdkType","Authorization","AcceptEncoding","UrlEventType","CustomData","StaticData","Page","Conversion","Activity","Experiment","Geolocation","UrlParameter","Title","ReferrersIndices","Negative","Revenue","Overwrite","Index","BrowserIndex","BrowserVersion","Href","DeviceType","SiteCode","GoalId","VisitorCode","VariationId","Ts","Key","SdkName","ValuesCountMap","Nonce","Id","CurrentVisit","MaxNumberPreviousVisits","Os","OsIndex","Country","City","Region","Latitude","Longitude","PostalCode","Browser","Environment","MappingIdentifier","MappingValue","Kcs","UrlFirstParameter","UrlQuery","Sse","Map","Events","Visitor","UrlTracking","Visit"],"sources":["../../src/requester/constants.ts"],"sourcesContent":["import {\n EventType,\n ParameterType,\n QueryType,\n StrictEventTypeRecord,\n StrictFirstParameterRecord,\n StrictParameterRecord,\n StrictQueryRecord,\n StrictTrackingRecord,\n TrackingType,\n} from './types';\n\nexport const NUMBER_OF_RETRIES = 2;\n\nexport enum Header {\n UserAgent = 'User-Agent',\n ContentType = 'Content-Type',\n SdkVersion = 'X-Kameleoon-SDK-Version',\n SdkType = 'X-Kameleoon-SDK-Type',\n Authorization = 'Authorization',\n AcceptEncoding = 'Accept-Encoding',\n}\n\nexport const UrlEventType: StrictEventTypeRecord<EventType> = {\n CustomData: 'eventType=customData',\n StaticData: 'eventType=staticData',\n Page: 'eventType=page',\n Conversion: 'eventType=conversion',\n Activity: 'eventType=activity',\n Experiment: 'eventType=experiment',\n Geolocation: 'eventType=geolocation',\n};\nexport const UrlParameter: StrictParameterRecord<ParameterType> = {\n Title: '&title=',\n ReferrersIndices: '&referrersIndices=',\n Negative: '&negative=',\n Revenue: '&revenue=',\n Overwrite: '&overwrite=',\n Index: '&index=',\n BrowserIndex: '&browserIndex=',\n BrowserVersion: '&browserVersion=',\n Href: '&href=',\n DeviceType: '&deviceType=',\n SiteCode: '&siteCode=',\n GoalId: '&goalId=',\n VisitorCode: '&visitorCode=',\n VariationId: '&variationId=',\n Ts: '&ts=',\n Key: '&key=',\n SdkName: '&sdkName=',\n SdkVersion: '&sdkVersion=',\n ValuesCountMap: '&valuesCountMap=',\n Nonce: '&nonce=',\n Id: '&id=',\n CustomData: '&customData=',\n CurrentVisit: '&currentVisit=',\n MaxNumberPreviousVisits: '&maxNumberPreviousVisits=',\n Os: '&os=',\n OsIndex: '&osIndex=',\n Country: '&country=',\n City: '&city=',\n Region: '&region=',\n Latitude: '&latitude=',\n Longitude: '&longitude=',\n PostalCode: '&postalCode=',\n Conversion: '&conversion=',\n StaticData: '&staticData=',\n Geolocation: '&geolocation=',\n Page: '&page=',\n Experiment: '&experiment=',\n Browser: '&browser=',\n Environment: '&environment=',\n MappingIdentifier: '&mappingIdentifier=',\n MappingValue: '&mappingValue=',\n Kcs: '&kcs=',\n};\nexport const UrlFirstParameter: StrictFirstParameterRecord<ParameterType> = {\n CustomData: '?customData=',\n StaticData: '?staticData=',\n Page: '?page=',\n Conversion: '?conversion=',\n Geolocation: '?geolocation=',\n Experiment: '?experiment=',\n ValuesCountMap: '?valuesCountMap=',\n Id: '?id=',\n Nonce: '?nonce=',\n Country: '?country=',\n Environment: '?environment=',\n City: '?city=',\n Region: '?region=',\n Latitude: '?latitude=',\n Longitude: '?longitude=',\n PostalCode: '?postalCode=',\n SdkName: '?sdkName=',\n SdkVersion: '?sdkVersion=',\n BrowserIndex: '?browserIndex=',\n BrowserVersion: '?browserVersion=',\n SiteCode: '?siteCode=',\n VisitorCode: '?visitorCode=',\n CurrentVisit: '?currentVisit=',\n MaxNumberPreviousVisits: '?maxNumberPreviousVisits=',\n Negative: '?negative=',\n Revenue: '?revenue=',\n Title: '?title=',\n Os: '?os=',\n OsIndex: '?osIndex=',\n Browser: '?browser=',\n ReferrersIndices: '?referrersIndices=',\n Overwrite: '?overwrite=',\n Index: '?index=',\n Href: '?href=',\n VariationId: '?variationId=',\n DeviceType: '?deviceType=',\n GoalId: '?goalId=',\n Ts: '?ts=',\n Key: '?key=',\n MappingIdentifier: '?mappingIdentifier=',\n MappingValue: '?mappingValue=',\n Kcs: '?kcs=',\n};\nexport const UrlQuery: StrictQueryRecord<QueryType> = {\n Sse: 'sse?siteCode=',\n Map: 'map?siteCode=',\n Events: 'events?siteCode=',\n Visitor: 'visitor?siteCode=',\n};\nexport const UrlTracking: StrictTrackingRecord<TrackingType> = {\n Visit: 'visit/',\n Map: 'map/',\n};\n"],"mappings":"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"}
@@ -1,3 +1,3 @@
1
1
  export { Requester } from './requester';
2
- export { URL, DEFAULT_REQUEST_TIMEOUT, NUMBER_OF_RETRIES, DATA_API_DOMAIN, RETRIES_DELAY, UrlQuery, UrlEventType, UrlParameter, UrlFirstParameter, Header, } from './constants';
3
- export { HttpMethod, HeadersType, VisitType, TrackParametersType, StaticDataEventType, TrackExperimentParamsType, TrackDataParamsType, IExternalRequestDispatcher, GetVisitorDataResultType, } from './types';
2
+ export { NUMBER_OF_RETRIES, UrlQuery, UrlEventType, UrlParameter, UrlFirstParameter, Header, } from './constants';
3
+ export { HttpMethod, HeadersType, VisitType, RetryCountType, TrackParametersType, StaticDataEventType, TrackExperimentParamsType, TrackDataParamsType, GetVisitorDataResultType, IExternalRequester, KameleoonResponseType, RequestType, SendRequestParametersType, RequestParametersType, } from './types';
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),Object.defineProperty(exports,"DATA_API_DOMAIN",{enumerable:!0,get:function(){return _constants.DATA_API_DOMAIN}}),Object.defineProperty(exports,"DEFAULT_REQUEST_TIMEOUT",{enumerable:!0,get:function(){return _constants.DEFAULT_REQUEST_TIMEOUT}}),Object.defineProperty(exports,"GetVisitorDataResultType",{enumerable:!0,get:function(){return _types.GetVisitorDataResultType}}),Object.defineProperty(exports,"Header",{enumerable:!0,get:function(){return _constants.Header}}),Object.defineProperty(exports,"HeadersType",{enumerable:!0,get:function(){return _types.HeadersType}}),Object.defineProperty(exports,"HttpMethod",{enumerable:!0,get:function(){return _types.HttpMethod}}),Object.defineProperty(exports,"IExternalRequestDispatcher",{enumerable:!0,get:function(){return _types.IExternalRequestDispatcher}}),Object.defineProperty(exports,"NUMBER_OF_RETRIES",{enumerable:!0,get:function(){return _constants.NUMBER_OF_RETRIES}}),Object.defineProperty(exports,"RETRIES_DELAY",{enumerable:!0,get:function(){return _constants.RETRIES_DELAY}}),Object.defineProperty(exports,"Requester",{enumerable:!0,get:function(){return _requester.Requester}}),Object.defineProperty(exports,"StaticDataEventType",{enumerable:!0,get:function(){return _types.StaticDataEventType}}),Object.defineProperty(exports,"TrackDataParamsType",{enumerable:!0,get:function(){return _types.TrackDataParamsType}}),Object.defineProperty(exports,"TrackExperimentParamsType",{enumerable:!0,get:function(){return _types.TrackExperimentParamsType}}),Object.defineProperty(exports,"TrackParametersType",{enumerable:!0,get:function(){return _types.TrackParametersType}}),Object.defineProperty(exports,"URL",{enumerable:!0,get:function(){return _constants.URL}}),Object.defineProperty(exports,"UrlEventType",{enumerable:!0,get:function(){return _constants.UrlEventType}}),Object.defineProperty(exports,"UrlFirstParameter",{enumerable:!0,get:function(){return _constants.UrlFirstParameter}}),Object.defineProperty(exports,"UrlParameter",{enumerable:!0,get:function(){return _constants.UrlParameter}}),Object.defineProperty(exports,"UrlQuery",{enumerable:!0,get:function(){return _constants.UrlQuery}}),Object.defineProperty(exports,"VisitType",{enumerable:!0,get:function(){return _types.VisitType}});var _requester=require("./requester"),_constants=require("./constants"),_types=require("./types");
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),Object.defineProperty(exports,"GetVisitorDataResultType",{enumerable:!0,get:function(){return _types.GetVisitorDataResultType}}),Object.defineProperty(exports,"Header",{enumerable:!0,get:function(){return _constants.Header}}),Object.defineProperty(exports,"HeadersType",{enumerable:!0,get:function(){return _types.HeadersType}}),Object.defineProperty(exports,"HttpMethod",{enumerable:!0,get:function(){return _types.HttpMethod}}),Object.defineProperty(exports,"IExternalRequester",{enumerable:!0,get:function(){return _types.IExternalRequester}}),Object.defineProperty(exports,"KameleoonResponseType",{enumerable:!0,get:function(){return _types.KameleoonResponseType}}),Object.defineProperty(exports,"NUMBER_OF_RETRIES",{enumerable:!0,get:function(){return _constants.NUMBER_OF_RETRIES}}),Object.defineProperty(exports,"RequestParametersType",{enumerable:!0,get:function(){return _types.RequestParametersType}}),Object.defineProperty(exports,"RequestType",{enumerable:!0,get:function(){return _types.RequestType}}),Object.defineProperty(exports,"Requester",{enumerable:!0,get:function(){return _requester.Requester}}),Object.defineProperty(exports,"RetryCountType",{enumerable:!0,get:function(){return _types.RetryCountType}}),Object.defineProperty(exports,"SendRequestParametersType",{enumerable:!0,get:function(){return _types.SendRequestParametersType}}),Object.defineProperty(exports,"StaticDataEventType",{enumerable:!0,get:function(){return _types.StaticDataEventType}}),Object.defineProperty(exports,"TrackDataParamsType",{enumerable:!0,get:function(){return _types.TrackDataParamsType}}),Object.defineProperty(exports,"TrackExperimentParamsType",{enumerable:!0,get:function(){return _types.TrackExperimentParamsType}}),Object.defineProperty(exports,"TrackParametersType",{enumerable:!0,get:function(){return _types.TrackParametersType}}),Object.defineProperty(exports,"UrlEventType",{enumerable:!0,get:function(){return _constants.UrlEventType}}),Object.defineProperty(exports,"UrlFirstParameter",{enumerable:!0,get:function(){return _constants.UrlFirstParameter}}),Object.defineProperty(exports,"UrlParameter",{enumerable:!0,get:function(){return _constants.UrlParameter}}),Object.defineProperty(exports,"UrlQuery",{enumerable:!0,get:function(){return _constants.UrlQuery}}),Object.defineProperty(exports,"VisitType",{enumerable:!0,get:function(){return _types.VisitType}});var _requester=require("./requester"),_constants=require("./constants"),_types=require("./types");
2
2
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":[],"sources":["../../src/requester/index.ts"],"sourcesContent":["export { Requester } from './requester';\nexport {\n URL,\n DEFAULT_REQUEST_TIMEOUT,\n NUMBER_OF_RETRIES,\n DATA_API_DOMAIN,\n RETRIES_DELAY,\n UrlQuery,\n UrlEventType,\n UrlParameter,\n UrlFirstParameter,\n Header,\n} from './constants';\nexport {\n HttpMethod,\n HeadersType,\n VisitType,\n TrackParametersType,\n StaticDataEventType,\n TrackExperimentParamsType,\n TrackDataParamsType,\n IExternalRequestDispatcher,\n GetVisitorDataResultType,\n} from './types';\n"],"mappings":""}
1
+ {"version":3,"file":"index.js","names":[],"sources":["../../src/requester/index.ts"],"sourcesContent":["export { Requester } from './requester';\nexport {\n NUMBER_OF_RETRIES,\n UrlQuery,\n UrlEventType,\n UrlParameter,\n UrlFirstParameter,\n Header,\n} from './constants';\nexport {\n HttpMethod,\n HeadersType,\n VisitType,\n RetryCountType,\n TrackParametersType,\n StaticDataEventType,\n TrackExperimentParamsType,\n TrackDataParamsType,\n GetVisitorDataResultType,\n IExternalRequester,\n KameleoonResponseType,\n RequestType,\n SendRequestParametersType,\n RequestParametersType,\n} from './types';\n"],"mappings":""}
@@ -9,12 +9,16 @@ export interface IRequester {
9
9
  trackExperiment: ({ visitorCode, dataUrl, variationDataUrl, isUnallocated, isTargetedRule, userAgent, }: TrackExperimentParamsType) => Promise<Result<boolean, void>>;
10
10
  }
11
11
  export declare class Requester implements IRequester {
12
- private requestDispatcher;
12
+ private externalRequester;
13
13
  private packageInfo;
14
- constructor({ siteCode, environment, packageInfo, requestDispatcher, }: RequesterParamsType);
14
+ private trackRetryDelay;
15
+ private timeout;
16
+ constructor({ siteCode, environment, packageInfo, domain, externalRequester, requestTimeout, trackRetryDelay, }: RequesterParamsType);
15
17
  getClientConfiguration(timeStamp?: number): Promise<Result<ConfigurationDataType, KameleoonError>>;
16
18
  getRemoteData(key: string): Promise<Result<JSONType, KameleoonError>>;
17
19
  getVisitorData({ visitorCode, filters, isMappingIdentifier, }: GetVisitorDataParamsType): Promise<Result<GetVisitorDataResultType, KameleoonError>>;
18
20
  trackExperiment({ visitorCode, dataUrl, variationDataUrl, userAgent, isUnallocated, }: TrackExperimentParamsType): Promise<Result<boolean, void>>;
19
21
  trackData({ visitorCode, body, userAgent, isMappingIdentifier, }: TrackDataParamsType): Promise<Result<boolean, void>>;
22
+ private track;
23
+ private sendRequest;
20
24
  }
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.Requester=void 0;var _tsRes=require("ts-res"),_kameleoonError=require("../kameleoonError"),_utilities=require("../utilities"),_constants=require("./constants"),_urlProvider=require("./urlProvider");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||!a)return a;var c=a[Symbol.toPrimitive];if(void 0!==c){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)}class Requester{constructor(a){let{siteCode:b,environment:c,packageInfo:d,requestDispatcher:e}=a;_defineProperty(this,"requestDispatcher",void 0),_defineProperty(this,"packageInfo",void 0),this.requestDispatcher=e,this.packageInfo=d,_urlProvider.UrlProvider.initialize({siteCode:b,packageInfo:d,environment:c})}async getClientConfiguration(a){const b=_urlProvider.UrlProvider.getClientConfigurationUrl(a),c={[_constants.Header.SdkType]:this.packageInfo.type.toLowerCase(),[_constants.Header.SdkVersion]:this.packageInfo.version};try{const a=await this.requestDispatcher.getClientConfiguration(b,c);return a?(0,_tsRes.Ok)(a):(0,_tsRes.Err)(new _kameleoonError.KameleoonError(_kameleoonError.KameleoonException.MaximumRetriesReached))}catch(a){return(0,_tsRes.Err)(a)}}async getRemoteData(a){const b=_urlProvider.UrlProvider.getRemoteDataUrl(a);try{const a=await this.requestDispatcher.getRemoteData(b);return(0,_tsRes.Ok)(a)}catch(a){return(0,_tsRes.Err)(a)}}async getVisitorData(a){let{visitorCode:b,filters:c,isMappingIdentifier:d}=a;const e=_urlProvider.UrlProvider.getVisitorDataUrl({visitorCode:b,filters:c,isMappingIdentifier:d});try{const a=await this.requestDispatcher.getRemoteData(e);return(0,_tsRes.Ok)(a)}catch(a){return(0,_tsRes.Err)(a)}}async trackExperiment(a){let{visitorCode:b,dataUrl:c,variationDataUrl:d,userAgent:e,isUnallocated:f}=a;const g=_urlProvider.UrlProvider.getTrackingUrl(b),h=c?"":_constants.UrlEventType.Activity+_constants.UrlParameter.Nonce+_utilities.Utilities.getNonce(),i=f?h:d,j=i?c+"\n"+i:c,k=e?{[_constants.Header.UserAgent]:e}:void 0;try{const a=await this.requestDispatcher.track({url:g,headers:k,body:j});return(0,_tsRes.Ok)(a)}catch(_){return(0,_tsRes.Err)()}}async trackData(a){let{visitorCode:b,body:c,userAgent:d,isMappingIdentifier:e}=a;const f=_urlProvider.UrlProvider.getTrackingUrl(b,e),g=c||_constants.UrlEventType.Activity+_constants.UrlParameter.Nonce+_utilities.Utilities.getNonce(),h=d?{[_constants.Header.UserAgent]:d}:void 0;try{const a=await this.requestDispatcher.track({url:f,headers:h,body:g});return(0,_tsRes.Ok)(a)}catch(_){return(0,_tsRes.Err)()}}}exports.Requester=Requester;
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.Requester=void 0;var _tsRes=require("ts-res"),_kameleoonError=require("../kameleoonError"),_utilities=require("../utilities"),_constants=require("./constants"),_types=require("./types"),_urlProvider=require("./urlProvider");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 _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||!a)return a;var c=a[Symbol.toPrimitive];if(void 0!==c){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)}class Requester{constructor(a){let{siteCode:b,environment:c,packageInfo:d,domain:e,externalRequester:f,requestTimeout:g,trackRetryDelay:h}=a;_defineProperty(this,"externalRequester",void 0),_defineProperty(this,"packageInfo",void 0),_defineProperty(this,"trackRetryDelay",void 0),_defineProperty(this,"timeout",void 0),this.externalRequester=f,this.trackRetryDelay=h,this.packageInfo=d,this.timeout=g,_urlProvider.UrlProvider.initialize({siteCode:b,domain:e,packageInfo:d,environment:c})}async getClientConfiguration(a){const b=_urlProvider.UrlProvider.getClientConfigurationUrl(a),c={[_constants.Header.SdkType]:this.packageInfo.type.toLowerCase(),[_constants.Header.SdkVersion]:this.packageInfo.version},d=_constants.NUMBER_OF_RETRIES+1;try{for(let a=0;a<d;a++){const d=await this.sendRequest({url:b,requestType:_types.RequestType.Configuration,retryCount:a,headers:c});if(d.ok){const a=await d.json();return(0,_tsRes.Ok)(a)}}return(0,_tsRes.Err)(new _kameleoonError.KameleoonError(_kameleoonError.KameleoonException.MaximumRetriesReached))}catch(_){return(0,_tsRes.Err)(new _kameleoonError.KameleoonError(_kameleoonError.KameleoonException.ClientConfiguration))}}async getRemoteData(a){const b=_urlProvider.UrlProvider.getRemoteDataUrl(a),c=new _kameleoonError.KameleoonError(_kameleoonError.KameleoonException.RemoteData);try{const a=await this.sendRequest({url:b,requestType:_types.RequestType.RemoteData,retryCount:0});if(!a.ok)return(0,_tsRes.Err)(c);const d=await a.json();return(0,_tsRes.Ok)(d)}catch(_){return(0,_tsRes.Err)(c)}}async getVisitorData(a){let{visitorCode:b,filters:c,isMappingIdentifier:d}=a;const e=_urlProvider.UrlProvider.getVisitorDataUrl({visitorCode:b,filters:c,isMappingIdentifier:d}),f=new _kameleoonError.KameleoonError(_kameleoonError.KameleoonException.RemoteData);try{const a=await this.sendRequest({url:e,requestType:_types.RequestType.RemoteData,retryCount:0});if(!a.ok)return(0,_tsRes.Err)(f);const b=await a.json();return(0,_tsRes.Ok)(b)}catch(_){return(0,_tsRes.Err)(f)}}async trackExperiment(a){let{visitorCode:b,dataUrl:c,variationDataUrl:d,userAgent:e,isUnallocated:f}=a;const g=_urlProvider.UrlProvider.getTrackingUrl(b),h=c?"":_constants.UrlEventType.Activity+_constants.UrlParameter.Nonce+_utilities.Utilities.getNonce(),i=f?h:d,j=i?c+"\n"+i:c,k=e?{[_constants.Header.UserAgent]:e}:void 0;try{const a=await this.track({url:g,headers:k,requestType:_types.RequestType.Tracking,body:j});return(0,_tsRes.Ok)(a)}catch(_){return(0,_tsRes.Err)()}}async trackData(a){let{visitorCode:b,body:c,userAgent:d,isMappingIdentifier:e}=a;const f=_urlProvider.UrlProvider.getTrackingUrl(b,e),g=c||_constants.UrlEventType.Activity+_constants.UrlParameter.Nonce+_utilities.Utilities.getNonce(),h=d?{[_constants.Header.UserAgent]:d}:void 0;try{const a=await this.track({url:f,requestType:_types.RequestType.Tracking,headers:h,body:g});return(0,_tsRes.Ok)(a)}catch(_){return(0,_tsRes.Err)()}}async track(a){const b=_constants.NUMBER_OF_RETRIES+1;for(let c=0;c<b;c++){const b=await this.sendRequest(_objectSpread(_objectSpread({},a),{},{retryCount:c}));if(b.ok)return!0;await new Promise(a=>setTimeout(a,this.trackRetryDelay))}return!1}async sendRequest(a){let{requestType:b,url:c,retryCount:d,headers:e,body:f}=a;const g=new AbortController,h=setTimeout(()=>g.abort(),this.timeout);let i;switch(b){case _types.RequestType.RemoteData:case _types.RequestType.Configuration:i={headers:e,signal:g.signal,method:_types.HttpMethod.Get};break;case _types.RequestType.Tracking:if(!f)throw new Error("Internal Error: Tracking request should always contain body");i={method:_types.HttpMethod.Post,headers:e,signal:g.signal,body:f}}const j=_objectSpread(_objectSpread({},i),{},{headers:e,signal:g.signal}),k=await this.externalRequester.sendRequest({url:c,retryCount:d,requestType:b,parameters:j});return clearTimeout(h),k}}exports.Requester=Requester;
2
2
  //# sourceMappingURL=requester.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"requester.js","names":["Requester","constructor","a","siteCode","environment","packageInfo","requestDispatcher","_defineProperty","UrlProvider","initialize","getClientConfiguration","timeStamp","requestUrl","getClientConfigurationUrl","headers","Header","SdkType","type","toLowerCase","SdkVersion","version","response","Ok","Err","KameleoonError","KameleoonException","MaximumRetriesReached","error","getRemoteData","key","getRemoteDataUrl","getVisitorData","visitorCode","filters","isMappingIdentifier","getVisitorDataUrl","trackExperiment","dataUrl","variationDataUrl","userAgent","isUnallocated","url","getTrackingUrl","unallocatedAddition","UrlEventType","Activity","UrlParameter","Nonce","Utilities","getNonce","bodyAddition","extendedBody","UserAgent","track","body","_","trackData","requestBody","exports"],"sources":["../../src/requester/requester.ts"],"sourcesContent":["import { Err, Ok, Result } from 'ts-res';\nimport { ExternalPackageInfoType } from 'src/types';\nimport { KameleoonError, KameleoonException } from 'src/kameleoonError';\nimport { ConfigurationDataType, JSONType } from 'src/clientConfiguration';\nimport { Utilities } from 'src/utilities';\nimport { UrlParameter, Header, UrlEventType } from './constants';\nimport {\n RequesterParamsType,\n TrackDataParamsType,\n IExternalRequestDispatcher,\n GetVisitorDataResultType,\n TrackExperimentParamsType,\n HeadersType,\n GetVisitorDataParamsType,\n} from './types';\nimport { UrlProvider } from './urlProvider';\n\nexport interface IRequester {\n getClientConfiguration: () => Promise<\n Result<ConfigurationDataType, KameleoonError>\n >;\n getRemoteData: (key: string) => Promise<Result<JSONType, KameleoonError>>;\n trackData: ({\n visitorCode,\n body,\n userAgent,\n }: TrackDataParamsType) => Promise<Result<boolean, void>>;\n trackExperiment: ({\n visitorCode,\n dataUrl,\n variationDataUrl,\n isUnallocated,\n isTargetedRule,\n userAgent,\n }: TrackExperimentParamsType) => Promise<Result<boolean, void>>;\n}\n\nexport class Requester implements IRequester {\n private requestDispatcher: IExternalRequestDispatcher;\n private packageInfo: ExternalPackageInfoType;\n\n constructor({\n siteCode,\n environment,\n packageInfo,\n requestDispatcher,\n }: RequesterParamsType) {\n this.requestDispatcher = requestDispatcher;\n this.packageInfo = packageInfo;\n\n UrlProvider.initialize({ siteCode, packageInfo, environment });\n }\n\n public async getClientConfiguration(\n timeStamp?: number,\n ): Promise<Result<ConfigurationDataType, KameleoonError>> {\n const requestUrl = UrlProvider.getClientConfigurationUrl(timeStamp);\n\n const headers: HeadersType = {\n [Header.SdkType]: this.packageInfo.type.toLowerCase(),\n [Header.SdkVersion]: this.packageInfo.version,\n };\n\n try {\n const response = await this.requestDispatcher.getClientConfiguration(\n requestUrl,\n headers,\n );\n\n if (response) {\n return Ok(response as ConfigurationDataType);\n }\n\n return Err(new KameleoonError(KameleoonException.MaximumRetriesReached));\n } catch (error) {\n return Err(error as KameleoonError);\n }\n }\n\n public async getRemoteData(\n key: string,\n ): Promise<Result<JSONType, KameleoonError>> {\n const requestUrl = UrlProvider.getRemoteDataUrl(key);\n\n try {\n const response = await this.requestDispatcher.getRemoteData(requestUrl);\n return Ok(response);\n } catch (error) {\n return Err(error as KameleoonError);\n }\n }\n\n public async getVisitorData({\n visitorCode,\n filters,\n isMappingIdentifier,\n }: GetVisitorDataParamsType): Promise<\n Result<GetVisitorDataResultType, KameleoonError>\n > {\n const requestUrl = UrlProvider.getVisitorDataUrl({\n visitorCode,\n filters,\n isMappingIdentifier,\n });\n\n try {\n const response = await this.requestDispatcher.getRemoteData(requestUrl);\n return Ok(response as GetVisitorDataResultType);\n } catch (error) {\n return Err(error as KameleoonError);\n }\n }\n\n public async trackExperiment({\n visitorCode,\n dataUrl,\n variationDataUrl,\n userAgent,\n isUnallocated,\n }: TrackExperimentParamsType): Promise<Result<boolean, void>> {\n const url = UrlProvider.getTrackingUrl(visitorCode);\n\n const unallocatedAddition = !dataUrl\n ? UrlEventType.Activity + UrlParameter.Nonce + Utilities.getNonce()\n : '';\n\n const bodyAddition = isUnallocated ? unallocatedAddition : variationDataUrl;\n\n const extendedBody = bodyAddition ? dataUrl + '\\n' + bodyAddition : dataUrl;\n\n const headers: HeadersType | undefined = userAgent\n ? {\n [Header.UserAgent]: userAgent,\n }\n : undefined;\n\n try {\n const response = await this.requestDispatcher.track({\n url,\n headers,\n body: extendedBody,\n });\n\n return Ok(response);\n } catch (_) {\n return Err();\n }\n }\n\n public async trackData({\n visitorCode,\n body,\n userAgent,\n isMappingIdentifier,\n }: TrackDataParamsType): Promise<Result<boolean, void>> {\n const url = UrlProvider.getTrackingUrl(visitorCode, isMappingIdentifier);\n\n const requestBody =\n body || UrlEventType.Activity + UrlParameter.Nonce + Utilities.getNonce();\n\n const headers = userAgent\n ? {\n [Header.UserAgent]: userAgent,\n }\n : undefined;\n\n try {\n const response = await this.requestDispatcher.track({\n url,\n headers,\n body: requestBody,\n });\n\n return Ok(response);\n } catch (_) {\n return Err();\n }\n }\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"requester.js","names":["Requester","constructor","a","siteCode","environment","packageInfo","domain","externalRequester","requestTimeout","trackRetryDelay","_defineProperty","timeout","UrlProvider","initialize","getClientConfiguration","timeStamp","requestUrl","getClientConfigurationUrl","headers","Header","SdkType","type","toLowerCase","SdkVersion","version","requests","NUMBER_OF_RETRIES","i","response","sendRequest","url","requestType","RequestType","Configuration","retryCount","ok","data","json","Ok","Err","KameleoonError","KameleoonException","MaximumRetriesReached","_","ClientConfiguration","getRemoteData","key","getRemoteDataUrl","remoteDataError","RemoteData","getVisitorData","visitorCode","filters","isMappingIdentifier","getVisitorDataUrl","trackExperiment","dataUrl","variationDataUrl","userAgent","isUnallocated","getTrackingUrl","unallocatedAddition","UrlEventType","Activity","UrlParameter","Nonce","Utilities","getNonce","bodyAddition","extendedBody","UserAgent","track","Tracking","body","trackData","requestBody","parameters","_objectSpread","Promise","resolve","setTimeout","controller","AbortController","timeoutId","abort","variableParameters","signal","method","HttpMethod","Get","Error","Post","clearTimeout","exports"],"sources":["../../src/requester/requester.ts"],"sourcesContent":["import { Err, Ok, Result } from 'ts-res';\nimport { ExternalPackageInfoType } from 'src/types';\nimport { KameleoonError, KameleoonException } from 'src/kameleoonError';\nimport { ConfigurationDataType, JSONType } from 'src/clientConfiguration';\nimport { Utilities } from 'src/utilities';\nimport {\n UrlParameter,\n Header,\n UrlEventType,\n NUMBER_OF_RETRIES,\n} from './constants';\nimport {\n RequesterParamsType,\n TrackDataParamsType,\n GetVisitorDataResultType,\n TrackExperimentParamsType,\n HeadersType,\n GetVisitorDataParamsType,\n IExternalRequester,\n RequestType,\n HttpMethod,\n InternalSendRequestParametersType,\n KameleoonResponseType,\n RequestParametersType,\n} from './types';\nimport { UrlProvider } from './urlProvider';\n\nexport interface IRequester {\n getClientConfiguration: () => Promise<\n Result<ConfigurationDataType, KameleoonError>\n >;\n getRemoteData: (key: string) => Promise<Result<JSONType, KameleoonError>>;\n trackData: ({\n visitorCode,\n body,\n userAgent,\n }: TrackDataParamsType) => Promise<Result<boolean, void>>;\n trackExperiment: ({\n visitorCode,\n dataUrl,\n variationDataUrl,\n isUnallocated,\n isTargetedRule,\n userAgent,\n }: TrackExperimentParamsType) => Promise<Result<boolean, void>>;\n}\n\nexport class Requester implements IRequester {\n private externalRequester: IExternalRequester;\n private packageInfo: ExternalPackageInfoType;\n private trackRetryDelay: number;\n private timeout: number;\n\n constructor({\n siteCode,\n environment,\n packageInfo,\n domain,\n externalRequester,\n requestTimeout,\n trackRetryDelay,\n }: RequesterParamsType) {\n this.externalRequester = externalRequester;\n this.trackRetryDelay = trackRetryDelay;\n this.packageInfo = packageInfo;\n this.timeout = requestTimeout;\n\n UrlProvider.initialize({ siteCode, domain, packageInfo, environment });\n }\n\n public async getClientConfiguration(\n timeStamp?: number,\n ): Promise<Result<ConfigurationDataType, KameleoonError>> {\n const requestUrl = UrlProvider.getClientConfigurationUrl(timeStamp);\n\n const headers: HeadersType = {\n [Header.SdkType]: this.packageInfo.type.toLowerCase(),\n [Header.SdkVersion]: this.packageInfo.version,\n };\n\n // --- Note ---\n // Initial request + NUMBER_OF_RETRIES\n const requests = NUMBER_OF_RETRIES + 1;\n\n try {\n for (let i = 0; i < requests; i++) {\n const response = await this.sendRequest({\n url: requestUrl,\n requestType: RequestType.Configuration,\n retryCount: i,\n headers,\n });\n\n if (response.ok) {\n const data = await response.json();\n\n return Ok(data as ConfigurationDataType);\n }\n }\n\n return Err(new KameleoonError(KameleoonException.MaximumRetriesReached));\n } catch (_) {\n return Err(new KameleoonError(KameleoonException.ClientConfiguration));\n }\n }\n\n public async getRemoteData(\n key: string,\n ): Promise<Result<JSONType, KameleoonError>> {\n const requestUrl = UrlProvider.getRemoteDataUrl(key);\n const remoteDataError = new KameleoonError(KameleoonException.RemoteData);\n\n try {\n const response = await this.sendRequest({\n url: requestUrl,\n requestType: RequestType.RemoteData,\n retryCount: 0,\n });\n\n if (!response.ok) {\n return Err(remoteDataError);\n }\n\n const data = await response.json();\n\n return Ok(data);\n } catch (_) {\n return Err(remoteDataError);\n }\n }\n\n public async getVisitorData({\n visitorCode,\n filters,\n isMappingIdentifier,\n }: GetVisitorDataParamsType): Promise<\n Result<GetVisitorDataResultType, KameleoonError>\n > {\n const requestUrl = UrlProvider.getVisitorDataUrl({\n visitorCode,\n filters,\n isMappingIdentifier,\n });\n const remoteDataError = new KameleoonError(KameleoonException.RemoteData);\n\n try {\n const response = await this.sendRequest({\n url: requestUrl,\n requestType: RequestType.RemoteData,\n retryCount: 0,\n });\n\n if (!response.ok) {\n return Err(remoteDataError);\n }\n\n const data = await response.json();\n\n return Ok(data as GetVisitorDataResultType);\n } catch (_) {\n return Err(remoteDataError);\n }\n }\n\n public async trackExperiment({\n visitorCode,\n dataUrl,\n variationDataUrl,\n userAgent,\n isUnallocated,\n }: TrackExperimentParamsType): Promise<Result<boolean, void>> {\n const url = UrlProvider.getTrackingUrl(visitorCode);\n\n const unallocatedAddition = !dataUrl\n ? UrlEventType.Activity + UrlParameter.Nonce + Utilities.getNonce()\n : '';\n\n const bodyAddition = isUnallocated ? unallocatedAddition : variationDataUrl;\n\n const extendedBody = bodyAddition ? dataUrl + '\\n' + bodyAddition : dataUrl;\n\n const headers: HeadersType | undefined = userAgent\n ? {\n [Header.UserAgent]: userAgent,\n }\n : undefined;\n\n try {\n const response = await this.track({\n url,\n headers,\n requestType: RequestType.Tracking,\n body: extendedBody,\n });\n\n return Ok(response);\n } catch (_) {\n return Err();\n }\n }\n\n public async trackData({\n visitorCode,\n body,\n userAgent,\n isMappingIdentifier,\n }: TrackDataParamsType): Promise<Result<boolean, void>> {\n const url = UrlProvider.getTrackingUrl(visitorCode, isMappingIdentifier);\n\n const requestBody =\n body || UrlEventType.Activity + UrlParameter.Nonce + Utilities.getNonce();\n\n const headers = userAgent\n ? {\n [Header.UserAgent]: userAgent,\n }\n : undefined;\n\n try {\n const response = await this.track({\n url,\n requestType: RequestType.Tracking,\n headers,\n body: requestBody,\n });\n\n return Ok(response);\n } catch (_) {\n return Err();\n }\n }\n\n private async track(\n parameters: Omit<InternalSendRequestParametersType, 'retryCount'>,\n ): Promise<boolean> {\n // --- Note ---\n // Initial request + NUMBER_OF_RETRIES\n const requests = NUMBER_OF_RETRIES + 1;\n\n for (let i = 0; i < requests; i++) {\n const response = await this.sendRequest({\n ...parameters,\n retryCount: i,\n });\n\n if (response.ok) {\n return true;\n }\n\n await new Promise((resolve) => setTimeout(resolve, this.trackRetryDelay));\n }\n\n return false;\n }\n\n private async sendRequest({\n requestType,\n url,\n retryCount,\n headers,\n body,\n }: InternalSendRequestParametersType): Promise<KameleoonResponseType> {\n const controller = new AbortController();\n const timeoutId = setTimeout(() => controller.abort(), this.timeout);\n\n let variableParameters: RequestParametersType[RequestType];\n\n switch (requestType) {\n case RequestType.RemoteData:\n case RequestType.Configuration:\n variableParameters = {\n headers,\n signal: controller.signal,\n method: HttpMethod.Get,\n };\n break;\n case RequestType.Tracking:\n if (!body) {\n throw new Error(\n 'Internal Error: Tracking request should always contain body',\n );\n }\n\n variableParameters = {\n method: HttpMethod.Post,\n headers,\n signal: controller.signal,\n body,\n };\n break;\n }\n\n const parameters = {\n ...variableParameters,\n headers,\n signal: controller.signal,\n };\n\n const response = await this.externalRequester.sendRequest({\n url,\n retryCount: retryCount as 0 | 1 | 2,\n requestType,\n parameters,\n });\n\n clearTimeout(timeoutId);\n\n return response;\n }\n}\n"],"mappings":"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"}