@kameleoon/javascript-sdk-core 5.0.1 → 5.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +49 -1
- package/dist/cacheManager/cacheManager.js +1 -2
- package/dist/cacheManager/index.js +1 -2
- package/dist/cacheManager/types.js +1 -2
- package/dist/clientConfiguration/clientConfiguration.js +1 -2
- package/dist/clientConfiguration/constants.js +1 -2
- package/dist/clientConfiguration/index.js +1 -2
- package/dist/clientConfiguration/types.js +1 -2
- package/dist/clientSettings/clientSettings.js +1 -2
- package/dist/clientSettings/index.js +1 -2
- package/dist/clientSettings/types.js +1 -2
- package/dist/constants.js +1 -2
- package/dist/eventManager/eventManager.js +1 -2
- package/dist/eventManager/index.js +1 -2
- package/dist/eventManager/types.js +1 -2
- package/dist/eventSource/constants.js +1 -2
- package/dist/eventSource/eventSource.js +1 -2
- package/dist/eventSource/index.js +1 -2
- package/dist/eventSource/types.js +1 -2
- package/dist/hasher/hasher.js +1 -2
- package/dist/hasher/index.js +1 -2
- package/dist/hasher/types.js +1 -2
- package/dist/index.d.ts +6 -4
- package/dist/index.js +1 -2
- package/dist/kameleoonClient.d.ts +6 -1
- package/dist/kameleoonClient.js +1 -2
- package/dist/kameleoonClientInterface.d.ts +68 -20
- package/dist/kameleoonClientInterface.js +1 -2
- package/dist/kameleoonData/applicationVersion.js +1 -2
- package/dist/kameleoonData/browser.js +1 -2
- package/dist/kameleoonData/conversion.js +1 -2
- package/dist/kameleoonData/cookie.js +1 -2
- package/dist/kameleoonData/customData.js +1 -2
- package/dist/kameleoonData/dataManager.js +1 -2
- package/dist/kameleoonData/dataProcessor.js +1 -2
- package/dist/kameleoonData/device.js +1 -2
- package/dist/kameleoonData/geolocation.js +1 -2
- package/dist/kameleoonData/helpers.js +1 -2
- package/dist/kameleoonData/index.js +1 -2
- package/dist/kameleoonData/kameleoonConversionScore.js +1 -2
- package/dist/kameleoonData/operatingSystem.js +1 -2
- package/dist/kameleoonData/pageView.js +1 -2
- package/dist/kameleoonData/types.js +1 -2
- package/dist/kameleoonData/uniqueIdentifier.js +1 -2
- package/dist/kameleoonData/userAgent.js +1 -2
- package/dist/kameleoonData/visitProcessor.js +1 -2
- package/dist/kameleoonData/visitsData.js +1 -2
- package/dist/kameleoonError/constants.d.ts +0 -1
- package/dist/kameleoonError/constants.js +1 -2
- package/dist/kameleoonError/helpers.js +1 -2
- package/dist/kameleoonError/index.js +1 -2
- package/dist/kameleoonError/kameleoonError.d.ts +0 -1
- package/dist/kameleoonError/kameleoonError.js +1 -2
- package/dist/kameleoonError/types.d.ts +0 -1
- package/dist/kameleoonError/types.js +1 -2
- package/dist/kameleoonUtils.js +1 -2
- package/dist/logging/defaultLogger.d.ts +14 -0
- package/dist/logging/defaultLogger.js +1 -0
- package/dist/logging/index.d.ts +3 -0
- package/dist/logging/index.js +1 -0
- package/dist/logging/kameleoonLogger.d.ts +14 -0
- package/dist/logging/kameleoonLogger.js +1 -0
- package/dist/logging/types.d.ts +36 -0
- package/dist/logging/types.js +1 -0
- package/dist/requester/constants.js +1 -2
- package/dist/requester/index.js +1 -2
- package/dist/requester/requester.js +1 -2
- package/dist/requester/types.js +1 -2
- package/dist/requester/urlProvider.js +1 -2
- package/dist/storage/constants.js +1 -2
- package/dist/storage/index.js +1 -2
- package/dist/storage/integrityChecker.js +1 -2
- package/dist/storage/storage.js +1 -2
- package/dist/storage/types.js +1 -2
- package/dist/targeting/conditions/applicationVersion.js +1 -2
- package/dist/targeting/conditions/browser.js +1 -2
- package/dist/targeting/conditions/conditionFactory.js +1 -2
- package/dist/targeting/conditions/conversion.js +1 -2
- package/dist/targeting/conditions/conversionLikelihood.js +1 -2
- package/dist/targeting/conditions/cookie.js +1 -2
- package/dist/targeting/conditions/customData.js +1 -2
- package/dist/targeting/conditions/device.js +1 -2
- package/dist/targeting/conditions/exclusiveCampaign.js +1 -2
- package/dist/targeting/conditions/firstVisit.js +1 -2
- package/dist/targeting/conditions/geolocation.js +1 -2
- package/dist/targeting/conditions/index.js +1 -2
- package/dist/targeting/conditions/lastVisit.js +1 -2
- package/dist/targeting/conditions/newVisitor.js +1 -2
- package/dist/targeting/conditions/operatingSystem.js +1 -2
- package/dist/targeting/conditions/pageTitle.js +1 -2
- package/dist/targeting/conditions/pageUrl.js +1 -2
- package/dist/targeting/conditions/previousPage.js +1 -2
- package/dist/targeting/conditions/sameDayVisits.js +1 -2
- package/dist/targeting/conditions/sdkLanguage.js +1 -2
- package/dist/targeting/conditions/segment.js +1 -2
- package/dist/targeting/conditions/targetFeatureFlag.js +1 -2
- package/dist/targeting/conditions/types.js +1 -2
- package/dist/targeting/conditions/utilities.js +1 -2
- package/dist/targeting/conditions/visitedPages.js +1 -2
- package/dist/targeting/conditions/visitorCode.js +1 -2
- package/dist/targeting/conditions/visits.js +1 -2
- package/dist/targeting/index.js +1 -2
- package/dist/targeting/node.js +1 -2
- package/dist/targeting/tree.js +1 -2
- package/dist/targeting/types.js +1 -2
- package/dist/tracking/bodyProvider.js +1 -2
- package/dist/tracking/constants.js +1 -2
- package/dist/tracking/index.js +1 -2
- package/dist/tracking/tracker.js +1 -2
- package/dist/tracking/types.js +1 -2
- package/dist/types.d.ts +52 -0
- package/dist/types.js +1 -2
- package/dist/utilities/constants.d.ts +5 -0
- package/dist/utilities/constants.js +1 -2
- package/dist/utilities/index.js +1 -2
- package/dist/utilities/parser.d.ts +1 -0
- package/dist/utilities/parser.js +1 -2
- package/dist/utilities/types.js +1 -2
- package/dist/utilities/utilities.js +1 -2
- package/dist/utilities/validator.d.ts +1 -0
- package/dist/utilities/validator.js +1 -2
- package/dist/variationConfiguration/index.js +1 -2
- package/dist/variationConfiguration/types.d.ts +1 -0
- package/dist/variationConfiguration/types.js +1 -2
- package/dist/variationConfiguration/variationConfiguration.d.ts +1 -1
- package/dist/variationConfiguration/variationConfiguration.js +1 -2
- package/dist/visitorCodeManager/constants.js +1 -2
- package/dist/visitorCodeManager/index.js +1 -2
- package/dist/visitorCodeManager/types.js +1 -2
- package/dist/visitorCodeManager/visitorCodeManager.js +1 -2
- package/package.json +5 -3
- package/dist/cacheManager/cacheManager.js.map +0 -1
- package/dist/cacheManager/index.js.map +0 -1
- package/dist/cacheManager/types.js.map +0 -1
- package/dist/clientConfiguration/clientConfiguration.js.map +0 -1
- package/dist/clientConfiguration/constants.js.map +0 -1
- package/dist/clientConfiguration/index.js.map +0 -1
- package/dist/clientConfiguration/types.js.map +0 -1
- package/dist/clientSettings/clientSettings.js.map +0 -1
- package/dist/clientSettings/index.js.map +0 -1
- package/dist/clientSettings/types.js.map +0 -1
- package/dist/constants.js.map +0 -1
- package/dist/eventManager/eventManager.js.map +0 -1
- package/dist/eventManager/index.js.map +0 -1
- package/dist/eventManager/types.js.map +0 -1
- package/dist/eventSource/constants.js.map +0 -1
- package/dist/eventSource/eventSource.js.map +0 -1
- package/dist/eventSource/index.js.map +0 -1
- package/dist/eventSource/types.js.map +0 -1
- package/dist/hasher/hasher.js.map +0 -1
- package/dist/hasher/index.js.map +0 -1
- package/dist/hasher/types.js.map +0 -1
- package/dist/index.js.map +0 -1
- package/dist/kameleoonClient.js.map +0 -1
- package/dist/kameleoonClientInterface.js.map +0 -1
- package/dist/kameleoonData/applicationVersion.js.map +0 -1
- package/dist/kameleoonData/browser.js.map +0 -1
- package/dist/kameleoonData/conversion.js.map +0 -1
- package/dist/kameleoonData/cookie.js.map +0 -1
- package/dist/kameleoonData/customData.js.map +0 -1
- package/dist/kameleoonData/dataManager.js.map +0 -1
- package/dist/kameleoonData/dataProcessor.js.map +0 -1
- package/dist/kameleoonData/device.js.map +0 -1
- package/dist/kameleoonData/geolocation.js.map +0 -1
- package/dist/kameleoonData/helpers.js.map +0 -1
- package/dist/kameleoonData/index.js.map +0 -1
- package/dist/kameleoonData/kameleoonConversionScore.js.map +0 -1
- package/dist/kameleoonData/operatingSystem.js.map +0 -1
- package/dist/kameleoonData/pageView.js.map +0 -1
- package/dist/kameleoonData/types.js.map +0 -1
- package/dist/kameleoonData/uniqueIdentifier.js.map +0 -1
- package/dist/kameleoonData/userAgent.js.map +0 -1
- package/dist/kameleoonData/visitProcessor.js.map +0 -1
- package/dist/kameleoonData/visitsData.js.map +0 -1
- package/dist/kameleoonError/constants.js.map +0 -1
- package/dist/kameleoonError/helpers.js.map +0 -1
- package/dist/kameleoonError/index.js.map +0 -1
- package/dist/kameleoonError/kameleoonError.js.map +0 -1
- package/dist/kameleoonError/types.js.map +0 -1
- package/dist/kameleoonUtils.js.map +0 -1
- package/dist/requester/constants.js.map +0 -1
- package/dist/requester/index.js.map +0 -1
- package/dist/requester/requester.js.map +0 -1
- package/dist/requester/types.js.map +0 -1
- package/dist/requester/urlProvider.js.map +0 -1
- package/dist/storage/constants.js.map +0 -1
- package/dist/storage/index.js.map +0 -1
- package/dist/storage/integrityChecker.js.map +0 -1
- package/dist/storage/storage.js.map +0 -1
- package/dist/storage/types.js.map +0 -1
- package/dist/targeting/conditions/applicationVersion.js.map +0 -1
- package/dist/targeting/conditions/browser.js.map +0 -1
- package/dist/targeting/conditions/conditionFactory.js.map +0 -1
- package/dist/targeting/conditions/conversion.js.map +0 -1
- package/dist/targeting/conditions/conversionLikelihood.js.map +0 -1
- package/dist/targeting/conditions/cookie.js.map +0 -1
- package/dist/targeting/conditions/customData.js.map +0 -1
- package/dist/targeting/conditions/device.js.map +0 -1
- package/dist/targeting/conditions/exclusiveCampaign.js.map +0 -1
- package/dist/targeting/conditions/firstVisit.js.map +0 -1
- package/dist/targeting/conditions/geolocation.js.map +0 -1
- package/dist/targeting/conditions/index.js.map +0 -1
- package/dist/targeting/conditions/lastVisit.js.map +0 -1
- package/dist/targeting/conditions/newVisitor.js.map +0 -1
- package/dist/targeting/conditions/operatingSystem.js.map +0 -1
- package/dist/targeting/conditions/pageTitle.js.map +0 -1
- package/dist/targeting/conditions/pageUrl.js.map +0 -1
- package/dist/targeting/conditions/previousPage.js.map +0 -1
- package/dist/targeting/conditions/sameDayVisits.js.map +0 -1
- package/dist/targeting/conditions/sdkLanguage.js.map +0 -1
- package/dist/targeting/conditions/segment.js.map +0 -1
- package/dist/targeting/conditions/targetFeatureFlag.js.map +0 -1
- package/dist/targeting/conditions/types.js.map +0 -1
- package/dist/targeting/conditions/utilities.js.map +0 -1
- package/dist/targeting/conditions/visitedPages.js.map +0 -1
- package/dist/targeting/conditions/visitorCode.js.map +0 -1
- package/dist/targeting/conditions/visits.js.map +0 -1
- package/dist/targeting/index.js.map +0 -1
- package/dist/targeting/node.js.map +0 -1
- package/dist/targeting/tree.js.map +0 -1
- package/dist/targeting/types.js.map +0 -1
- package/dist/tracking/bodyProvider.js.map +0 -1
- package/dist/tracking/constants.js.map +0 -1
- package/dist/tracking/index.js.map +0 -1
- package/dist/tracking/tracker.js.map +0 -1
- package/dist/tracking/types.js.map +0 -1
- package/dist/types.js.map +0 -1
- package/dist/utilities/constants.js.map +0 -1
- package/dist/utilities/index.js.map +0 -1
- package/dist/utilities/parser.js.map +0 -1
- package/dist/utilities/types.js.map +0 -1
- package/dist/utilities/utilities.js.map +0 -1
- package/dist/utilities/validator.js.map +0 -1
- package/dist/variationConfiguration/index.js.map +0 -1
- package/dist/variationConfiguration/types.js.map +0 -1
- package/dist/variationConfiguration/variationConfiguration.js.map +0 -1
- package/dist/visitorCodeManager/constants.js.map +0 -1
- package/dist/visitorCodeManager/index.js.map +0 -1
- package/dist/visitorCodeManager/types.js.map +0 -1
- package/dist/visitorCodeManager/visitorCodeManager.js.map +0 -1
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"geolocation.js","names":["GeolocationData","constructor","a","country","region","city","postalCode","coordinates","_defineProperty","status","TrackingStatus","Unsent","url","UrlParameter","Region","encodeURIComponent","City","PostalCode","Latitude","Longitude","UrlEventType","Geolocation","Country","data","type","KameleoonData","_fromRaw","geolocation","_fromVisit","visit","b","geolocationEvents","length","geolocationData","geolocationEvent","exports"],"sources":["../../src/kameleoonData/geolocation.ts"],"sourcesContent":["import { UrlEventType, UrlParameter, VisitType } from 'src/requester';\nimport { GeolocationEventType } from 'src/requester/types';\nimport {\n IKameleoonData,\n KameleoonData,\n GeolocationInfoType,\n GeolocationDataType,\n} from './types';\nimport { TrackingStatus } from 'src/types';\n\n/**\n * @class\n * Geolocation - a class for creating an instance for geolocation data\n * */\nexport class GeolocationData implements IKameleoonData {\n public status: TrackingStatus;\n\n private country: string;\n private region?: string;\n private city?: string;\n private postalCode?: string;\n private coordinates?: [number, number];\n\n /**\n * @param {GeolocationInfoType} geolocationInfo - an object containing information about geolocation of a visitor\n * @example\n * ```ts\n * // Visitor is located at Triumph Arch in Paris, France\n * const location: GeolocationDataType = {\n * country: 'France',\n * region: 'Île-de-France',\n * city: 'Paris',\n * postalCode: '75008',\n * coordinates: [48.8738, 2.295]\n * };\n *\n * const geolocation = new GeolocationData(location);\n * ```\n *\n * */\n constructor({\n country,\n region,\n city,\n postalCode,\n coordinates,\n }: GeolocationInfoType) {\n this.country = country;\n this.region = region;\n this.city = city;\n this.postalCode = postalCode;\n this.coordinates = coordinates;\n this.status = TrackingStatus.Unsent;\n }\n\n get url(): string {\n const region = this.region\n ? UrlParameter.Region + encodeURIComponent(this.region)\n : '';\n const city = this.city\n ? UrlParameter.City + encodeURIComponent(this.city)\n : '';\n const postalCode = this.postalCode\n ? UrlParameter.PostalCode + encodeURIComponent(this.postalCode)\n : '';\n const coordinates = this.coordinates\n ? UrlParameter.Latitude +\n this.coordinates[0] +\n UrlParameter.Longitude +\n this.coordinates[1]\n : '';\n\n return (\n UrlEventType.Geolocation +\n UrlParameter.Country +\n encodeURIComponent(this.country) +\n region +\n city +\n postalCode +\n coordinates\n );\n }\n\n get data(): GeolocationDataType {\n return {\n type: KameleoonData.GeolocationData,\n country: this.country,\n region: this.region,\n city: this.city,\n postalCode: this.postalCode,\n coordinates: this.coordinates,\n status: this.status,\n };\n }\n\n /**\n * @private\n * @method _fromRaw - an internal method for creating a GeolocationData instance from raw data\n * @param {GeolocationDataType} data - a raw data\n * @return {GeolocationData} a GeolocationData instance\n * */\n public static _fromRaw(data: GeolocationDataType): GeolocationData {\n const { country, region, city, postalCode, coordinates, status } = data;\n const geolocation = new GeolocationData({\n country,\n region,\n city,\n postalCode,\n coordinates,\n });\n\n geolocation.status = status;\n\n return geolocation;\n }\n\n /**\n * @private\n * @method _fromVisit - an internal method for creating an instance of GeolocationData class from a visit\n * @param {VisitType} visit - a visit\n * @returns {GeolocationData | undefined} an instance of GeolocationData class or undefined if geolocation can not be found among visits\n * */\n public static _fromVisit(visit: VisitType): GeolocationData | undefined {\n if (!visit.geolocationEvents?.length) {\n return undefined;\n }\n\n let geolocationData: GeolocationEventType['data'] | undefined = undefined;\n\n for (const geolocationEvent of visit.geolocationEvents) {\n const { data } = geolocationEvent;\n\n if (data.country) {\n geolocationData = data;\n }\n }\n\n // --- Note ---\n // We only take `country`, `region`, and `city` from geolocation event ignoring other fields\n // as they are not participating in targeting, and visits data won't be tracked again\n const { country, region, city } = geolocationData || {};\n\n if (country) {\n if (region && city) {\n return new GeolocationData({ country, region, city });\n } else if (region) {\n return new GeolocationData({ country, region });\n } else {\n return new GeolocationData({ country });\n }\n }\n }\n}\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"helpers.js","names":["constructTypeMap","indexMap","Object","fromEntries","entries","map","a","key","value"],"sources":["../../src/kameleoonData/helpers.ts"],"sourcesContent":["export function constructTypeMap<T extends string>(\n indexMap: Record<T, number>,\n): Record<number, T> {\n return Object.fromEntries(\n Object.entries(indexMap).map(([key, value]) => [value, key]),\n ) as Record<number, T>;\n}\n"],"mappings":"8GAAO,QAAS,CAAAA,gBAAgBA,CAC9BC,CAA2B,CACR,CACnB,MAAO,CAAAC,MAAM,CAACC,WAAW,CACvBD,MAAM,CAACE,OAAO,CAACH,CAAQ,CAAC,CAACI,GAAG,CAACC,CAAA,MAAC,CAACC,CAAG,CAAEC,CAAK,CAAC,CAAAF,CAAA,OAAK,CAACE,CAAK,CAAED,CAAG,CAAC,EAC7D,CACF","ignoreList":[]}
|
|
@@ -1 +0,0 @@
|
|
|
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 { UniqueIdentifier } from './uniqueIdentifier';\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 IdentifierDataType,\n ConversionDataType,\n OperatingSystemType,\n GeolocationInfoType,\n KameleoonDataItemType,\n PageViewParametersType,\n ConversionParametersType,\n ApplicationVersionDataType,\n} from './types';\nexport { DataManager } from './dataManager';\n"],"mappings":"","ignoreList":[]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"kameleoonConversionScore.js","names":["KameleoonConversionScore","constructor","kcs","_defineProperty","status","TrackingStatus","Sent","url","data","type","KameleoonData","exports"],"sources":["../../src/kameleoonData/kameleoonConversionScore.ts"],"sourcesContent":["import { IKameleoonData, KCSType, KCSDataType, KameleoonData } from './types';\nimport { TrackingStatus } from 'src/types';\n\n/**\n * @class\n * KameleoonConversionScore - a class for creating an KCS Heat Range data\n * */\nexport class KameleoonConversionScore implements IKameleoonData {\n public status: TrackingStatus;\n\n private kcs: KCSType;\n\n /**\n * @param {KCSType} kcs - Kameleoon Conversion Score nested object\n * */\n constructor(kcs: KCSType) {\n this.kcs = kcs;\n this.status = TrackingStatus.Sent;\n }\n\n get url(): string {\n return '';\n }\n\n get data(): KCSDataType {\n return {\n kcs: this.kcs,\n type: KameleoonData.KameleoonConversionScore,\n status: this.status,\n };\n }\n}\n"],"mappings":"uqBAOO,KAAM,CAAAA,wBAAmD,CAQ9DC,WAAWA,CAACC,CAAY,CAAE,CAAAC,eAAA,uBAAAA,eAAA,oBACxB,IAAI,CAACD,GAAG,CAAGA,CAAG,CACd,IAAI,CAACE,MAAM,CAAGC,sBAAc,CAACC,IAC/B,CAEA,GAAI,CAAAC,GAAGA,CAAA,CAAW,CAChB,MAAO,EACT,CAEA,GAAI,CAAAC,IAAIA,CAAA,CAAgB,CACtB,MAAO,CACLN,GAAG,CAAE,IAAI,CAACA,GAAG,CACbO,IAAI,CAAEC,oBAAa,CAACV,wBAAwB,CAC5CI,MAAM,CAAE,IAAI,CAACA,MACf,CACF,CACF,CAACO,OAAA,CAAAX,wBAAA,CAAAA,wBAAA","ignoreList":[]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"operatingSystem.js","names":["OperatingSystem","constructor","operatingSystem","_defineProperty","status","TrackingStatus","Unsent","url","UrlEventType","StaticData","UrlParameter","Os","OsIndex","OperatingSystemIndexMap","data","type","KameleoonData","_fromRaw","os","_fromVisit","visit","staticDataEvent","operatingSystemType","osIndex","OperatingSystemTypeMap","exports"],"sources":["../../src/kameleoonData/operatingSystem.ts"],"sourcesContent":["import { UrlEventType, UrlParameter, VisitType } from 'src/requester';\nimport {\n IKameleoonData,\n KameleoonData,\n OperatingSystemDataType,\n OperatingSystemIndexMap,\n OperatingSystemType,\n OperatingSystemTypeMap,\n} from './types';\nimport { TrackingStatus } from 'src/types';\n\n/**\n * @class\n * OperatingSystem - a class for creating an instance for Operating System of a certain type\n * */\nexport class OperatingSystem implements IKameleoonData {\n private operatingSystem: OperatingSystemType;\n public status: TrackingStatus;\n\n /**\n * @param {OperatingSystemType} operatingSystem - one of the available operating system types from `OperatingSystemType` enum\n * */\n constructor(operatingSystem: OperatingSystemType) {\n this.operatingSystem = operatingSystem;\n this.status = TrackingStatus.Unsent;\n }\n\n get url(): string {\n // --- Note ---\n // If SDK is used in vanilla JS codebase, then you're also able to create an instance\n // with no required data, we don't want send anything to tracking in that case\n if (!this.operatingSystem) {\n return '';\n }\n\n return (\n UrlEventType.StaticData +\n UrlParameter.Os +\n this.operatingSystem +\n UrlParameter.OsIndex +\n OperatingSystemIndexMap[this.operatingSystem]\n );\n }\n\n get data(): OperatingSystemDataType {\n return {\n operatingSystem: this.operatingSystem,\n type: KameleoonData.OperatingSystem,\n status: this.status,\n };\n }\n\n /**\n * @private\n * @method _fromRaw - a static method for creating an instance of OperatingSystem class from raw data\n * @param {OperatingSystemDataType} data - a raw data\n * @returns {OperatingSystem} an instance of OperatingSystem class\n * */\n public static _fromRaw(data: OperatingSystemDataType): OperatingSystem {\n const { operatingSystem, status } = data;\n const os = new OperatingSystem(operatingSystem);\n\n os.status = status;\n\n return os;\n }\n\n /**\n * @private\n * @method _fromVisit - a static method for creating an instance of OperatingSystem class from a visit\n * @param {VisitType} visit - a visit\n * @returns {OperatingSystem | undefined} an instance of OperatingSystem class or undefined\n * */\n public static _fromVisit(visit: VisitType): OperatingSystem | undefined {\n if (!visit.staticDataEvent) {\n return undefined;\n }\n\n const { os: operatingSystemType, osIndex } = visit.staticDataEvent.data;\n\n if (operatingSystemType || typeof osIndex === 'number') {\n const operatingSystem =\n operatingSystemType ?? OperatingSystemTypeMap[osIndex as number];\n\n return new OperatingSystem(operatingSystem);\n }\n\n return undefined;\n }\n}\n"],"mappings":"isBAeO,KAAM,CAAAA,eAA0C,CAOrDC,WAAWA,CAACC,CAAoC,CAAE,CAAAC,eAAA,gCAAAA,eAAA,uBAChD,IAAI,CAACD,eAAe,CAAGA,CAAe,CACtC,IAAI,CAACE,MAAM,CAAGC,sBAAc,CAACC,MAC/B,CAEA,GAAI,CAAAC,GAAGA,CAAA,CAAW,OAIX,KAAI,CAACL,eAAe,CAKvBM,uBAAY,CAACC,UAAU,CACvBC,uBAAY,CAACC,EAAE,CACf,IAAI,CAACT,eAAe,CACpBQ,uBAAY,CAACE,OAAO,CACpBC,8BAAuB,CAAC,IAAI,CAACX,eAAe,CAAC,CARtC,EAUX,CAEA,GAAI,CAAAY,IAAIA,CAAA,CAA4B,CAClC,MAAO,CACLZ,eAAe,CAAE,IAAI,CAACA,eAAe,CACrCa,IAAI,CAAEC,oBAAa,CAAChB,eAAe,CACnCI,MAAM,CAAE,IAAI,CAACA,MACf,CACF,CAQA,MAAc,CAAAa,QAAQA,CAACH,CAA6B,CAAmB,MAC/D,CAAEZ,eAAe,CAAfA,CAAe,CAAEE,MAAM,CAANA,CAAO,CAAC,CAAGU,CAAI,CAClCI,CAAE,CAAG,GAAI,CAAAlB,eAAe,CAACE,CAAe,CAAC,CAI/C,MAFA,CAAAgB,CAAE,CAACd,MAAM,CAAGA,CAAM,CAEXc,CACT,CAQA,MAAc,CAAAC,UAAUA,CAACC,CAAgB,CAA+B,CACtE,GAAKA,CAAK,CAACC,eAAe,EAI1B,KAAM,CAAEH,EAAE,CAAEI,CAAmB,CAAEC,OAAO,CAAPA,CAAQ,CAAC,CAAGH,CAAK,CAACC,eAAe,CAACP,IAAI,CAEvE,GAAIQ,CAAmB,EAAuB,QAAQ,EAA3B,MAAO,CAAAC,CAAoB,CAAE,CACtD,KAAM,CAAArB,CAAe,CACnBoB,CAAmB,EAAIE,6BAAsB,CAACD,CAAO,CAAW,CAElE,MAAO,IAAI,CAAAvB,eAAe,CAACE,CAAe,CAC5C,CAAC,CAGH,CACF,CAACuB,OAAA,CAAAzB,eAAA,CAAAA,eAAA","ignoreList":[]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"pageView.js","names":["PageView","constructor","a","urlAddress","title","referrers","_defineProperty","timestamps","time","Date","now","status","TrackingStatus","Unsent","url","titleParameter","UrlParameter","Title","encodeURIComponent","referrersParameter","length","ReferrersIndices","JSON","stringify","UrlEventType","Page","Href","Sent","sent","unsent","Pending","pending","reduce","acc","b","map","timestamp","_objectSpread","_nonce","nonce","data","type","KameleoonData","_fromRaw","pageView","_updateFromVisit","visit","dataMap","pageEvents","pageEvent","href","referrersIndices","has","existingTimestamps","get","set","exports"],"sources":["../../src/kameleoonData/pageView.ts"],"sourcesContent":["import { UrlEventType, UrlParameter, VisitType } from 'src/requester';\nimport {\n IKameleoonData,\n KameleoonData,\n PageViewDataType,\n PageViewParametersType,\n TimestampType,\n} from './types';\nimport { TrackingStatus } from 'src/types';\n\n/**\n * @class\n * PageView - a class for creating an instance of a page view data\n * */\nexport class PageView implements IKameleoonData {\n // --- Note ---\n // Kept in ascending order\n public timestamps: TimestampType[];\n\n private urlAddress: string;\n private title: string;\n private nonce?: string;\n private referrers?: number[];\n\n /**\n * @param {PageViewParametersType} pageViewParameters - an object with page view parameters\n * */\n constructor({ urlAddress, title, referrers }: PageViewParametersType) {\n this.urlAddress = urlAddress;\n this.title = title;\n this.referrers = referrers;\n this.timestamps = [\n {\n time: Date.now(),\n status: TrackingStatus.Unsent,\n },\n ];\n }\n\n get url(): string {\n // --- Note ---\n // If SDK is used in vanilla JS codebase, then you're also able to create an instance\n // with no required data, we don't want send anything to tracking in that case\n if (!this.urlAddress) {\n return '';\n }\n\n const titleParameter = this.title\n ? UrlParameter.Title + encodeURIComponent(this.title)\n : '';\n\n const referrersParameter = this.referrers?.length\n ? UrlParameter.ReferrersIndices + JSON.stringify(this.referrers)\n : '';\n\n return (\n UrlEventType.Page +\n UrlParameter.Href +\n encodeURIComponent(this.urlAddress) +\n titleParameter +\n referrersParameter\n );\n }\n\n get status(): TrackingStatus {\n const {\n [TrackingStatus.Sent]: sent,\n [TrackingStatus.Unsent]: unsent,\n [TrackingStatus.Pending]: pending,\n } = this.timestamps.reduce(\n (acc, { status }) => {\n acc[status] = true;\n return acc;\n },\n {\n [TrackingStatus.Sent]: false,\n [TrackingStatus.Unsent]: false,\n [TrackingStatus.Pending]: false,\n },\n );\n\n if (sent && !unsent && !pending) {\n return TrackingStatus.Sent;\n }\n\n if (pending && !unsent) {\n return TrackingStatus.Pending;\n }\n\n return TrackingStatus.Unsent;\n }\n\n set status(status: TrackingStatus) {\n this.timestamps = this.timestamps.map((timestamp) => ({\n ...timestamp,\n status,\n }));\n }\n\n set _nonce(nonce: string) {\n this.nonce = nonce;\n }\n\n get data(): PageViewDataType {\n return {\n urlAddress: this.urlAddress,\n title: this.title,\n referrers: this.referrers,\n type: KameleoonData.PageView,\n timestamps: this.timestamps,\n status: this.status,\n nonce: this.nonce,\n };\n }\n\n /**\n * @private\n * @method _fromRaw - an internal method for creating a PageView instance from raw data\n * @param {PageViewDataType} data - a raw data\n * @return {PageView} a PageView instance\n * */\n public static _fromRaw(data: PageViewDataType): PageView {\n const { urlAddress, title, referrers, timestamps, nonce } = data;\n const pageView = new PageView({\n urlAddress,\n title,\n referrers,\n });\n\n pageView.timestamps = timestamps;\n\n if (nonce) {\n pageView._nonce = nonce;\n }\n\n return pageView;\n }\n\n /**\n * @private\n * @method _updateFromVisit - an internal method for updating a list of page view data from a visit\n * @param {VisitType} visit - a visit\n * @param {Map<string, PageView>} dataMap - a map of page view data where we collect data\n * */\n public static _updateFromVisit(\n visit: VisitType,\n dataMap: Map<string, PageView>,\n ): void {\n const pageEvents = visit.pageEvents;\n\n if (pageEvents) {\n for (const pageEvent of pageEvents) {\n let referrers: number[] = [];\n\n const { time } = pageEvent;\n const { href, title, referrersIndices } = pageEvent.data;\n\n if (typeof referrersIndices[0] === 'number') {\n referrers = referrersIndices as number[];\n }\n\n let pageView: PageView;\n\n if (dataMap.has(href)) {\n const existingTimestamps = dataMap.get(href)!.timestamps;\n\n pageView = new PageView({\n urlAddress: href,\n title,\n referrers,\n });\n\n pageView.timestamps = [\n ...existingTimestamps,\n { time, status: TrackingStatus.Sent },\n ];\n } else {\n pageView = new PageView({\n urlAddress: href,\n title,\n referrers,\n });\n\n pageView.timestamps = [{ time, status: TrackingStatus.Sent }];\n }\n\n dataMap.set(href, pageView);\n }\n }\n }\n}\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","names":["_helpers","require","Object","defineProperty","exports","value","OperatingSystemTypeMap","OperatingSystemType","OperatingSystemIndexMap","KameleoonData","DeviceType","BrowserTypeMap","BrowserType","BrowserIndexMap","UniqueIdentifier","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 VisitorReference,\n} from 'src/targeting';\nimport { DataInfoType, 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 DataManager,\n UniqueIdentifier,\n} from 'src/kameleoonData';\nimport { constructTypeMap } from './helpers';\nimport { VisitorDataFiltersType } from 'src/utilities';\nimport { TrackingStatus } from 'src/types';\n\nexport type FieldParametersType = {\n expirationTime: number;\n key: KameleoonData;\n value:\n | BrowserDataType\n | CookieDataType\n | DeviceDataType\n | GeolocationDataType\n | OperatingSystemDataType\n | UserAgentDataType\n | VisitsDataType;\n visitorCode: string;\n data: DereferencedTargetingDataType;\n};\n\nexport type VisitorProcessorParametersType = {\n filters: VisitorDataFiltersType;\n dataManager: DataManager;\n visitorCode: string;\n};\n\nexport type NestedFieldParametersType = {\n expirationTime: number;\n visitorCode: string;\n key:\n | KameleoonData.CustomData\n | KameleoonData.PageView\n | KameleoonData.Conversion;\n nestedKey: string;\n value: CustomDataType | PageViewDataType | ConversionDataType;\n data: DereferencedTargetingDataType;\n};\n\nexport type DataFilterType = ({\n status,\n key,\n cdIndex,\n}: {\n status: TrackingStatus;\n key: KameleoonData;\n cdIndex?: number;\n}) => boolean;\n\nexport type MutAddUnsentDataType = {\n mutData: DataInfoType;\n visitorCode: string;\n dataType: KameleoonData;\n};\n\nexport type DereferenceTargetingDataResultType = {\n data: DereferencedTargetingDataType;\n visitorReference: string;\n};\n\nexport type DataManagerParametersType = {\n cleanupInterval: number | null;\n dataStorage: IStorage<TargetingDataType>;\n infoStorage: IStorage<DataInfoType>;\n};\n\nexport type KameleoonDataItemType =\n | IdentifierDataType\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 status - signifying if the data is tracked, not tracked or pending\n * */\n status: TrackingStatus;\n}\n\n/**\n * @type a tuple of each possible type of data for `addData` method\n * of KameleoonClient\n * */\nexport type KameleoonDataType =\n | UniqueIdentifier\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 ExpirationTimeType = {\n expirationTime: number;\n};\n\nexport type VisitorsDataType = {\n [visitorCode: string]: KameleoonDataType[];\n};\n\nexport type ExistingCustomDataType = NonNullable<\n KameleoonVisitorDataType[KameleoonData.CustomData]\n>;\n\nexport type ExistingPageViewDataType = NonNullable<\n KameleoonVisitorDataType[KameleoonData.PageView]\n>;\n\nexport type ExistingConversionDataType = NonNullable<\n KameleoonVisitorDataType[KameleoonData.Conversion]\n>;\n\nexport type ExistingDataType<T extends KameleoonData> = NonNullable<\n KameleoonVisitorDataType[T]\n>;\n\nexport type ExistingNestedDataType =\n | ExistingCustomDataType\n | ExistingPageViewDataType\n | ExistingConversionDataType;\n\nexport type KameleoonVisitorDataType<T = ExpirationTimeType> = {\n [KameleoonData.CustomData]?: {\n [index: string]: (CustomDataType & T) | undefined;\n };\n [KameleoonData.Conversion]?: {\n [id: string]: (ConversionDataType & T) | undefined;\n };\n [KameleoonData.PageView]?: { [url: string]: PageViewDataType & T };\n [KameleoonData.UniqueIdentifier]?: IdentifierDataType & T;\n [KameleoonData.GeolocationData]?: GeolocationDataType & T;\n [KameleoonData.UserAgent]?: UserAgentDataType & 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 UniqueIdentifier = 'uniqueIdentifier',\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 CommonUpdateParametersType = {\n mutData: DereferencedTargetingDataType;\n visitorCode: string;\n expirationTime: number;\n};\n\nexport type UpdateCustomDataParametersType = {\n customData: CustomData;\n} & CommonUpdateParametersType;\n\nexport type ProcessCustomDataManagerParametersType = {\n mutData: TargetingDataType;\n customData: CustomData;\n visitorCode: string;\n};\n\nexport type UpdateConversionParametersType = {\n conversion: Conversion;\n} & CommonUpdateParametersType;\n\nexport type UpdateVisitsDataParametersType = {\n visitsData: VisitsData;\n} & CommonUpdateParametersType;\n\nexport type UpdateCommonDataParametersType = {\n commonData: KameleoonDataType;\n} & CommonUpdateParametersType;\n\nexport type UpdatePageViewParametersType = {\n pageView: PageView;\n} & CommonUpdateParametersType;\n\nexport type MutUpdateDataParametersType = {\n mutData: TargetingDataType;\n dataItem: KameleoonDataType;\n visitorCode: string;\n};\n\nexport type MutUpdateTargetingDataParametersType = {\n visitorCode: string;\n infoData: DataInfoType;\n kameleoonData: KameleoonDataType[];\n targetingData: TargetingDataType;\n};\n\nexport type ReferenceParametersType = {\n mutData: TargetingDataType;\n visitorCode: string;\n linkedVisitor: VisitorReference;\n};\n\ntype SharedDataPropertiesType = {\n type: KameleoonData;\n status: TrackingStatus;\n};\n\nexport type IdentifierDataType = {\n value: boolean;\n} & SharedDataPropertiesType;\n\nexport type BrowserDataType = {\n browser: BrowserType;\n version?: number;\n} & SharedDataPropertiesType;\n\nexport type ConversionDataType = {\n id: number;\n goalId: number;\n revenue: number;\n negative: boolean;\n nonce?: string;\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 nonce?: string;\n referrers?: number[];\n timestamps: TimestampType[];\n} & SharedDataPropertiesType;\n\nexport type TimestampType = {\n time: number;\n status: TrackingStatus;\n};\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":"aAsBA,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,WAuKjC,CAAAJ,aAAa,CAAAL,OAAA,CAAAK,aAAA,UAAbA,CAAa,QAAb,CAAAA,CAAa,CAAAK,gBAAA,oBAAbL,CAAa,CAAAM,UAAA,cAAbN,CAAa,CAAAO,QAAA,YAAbP,CAAa,CAAAQ,eAAA,eAAbR,CAAa,CAAAS,OAAA,WAAbT,CAAa,CAAAU,UAAA,cAAbV,CAAa,CAAAW,MAAA,UAAbX,CAAa,CAAAY,MAAA,UAAbZ,CAAa,CAAAa,eAAA,mBAAbb,CAAa,CAAAc,SAAA,aAAbd,CAAa,CAAAe,kBAAA,sBAAbf,CAAa,CAAAgB,UAAA,cAAbhB,CAAa,CAAAiB,wBAAA,4BAAbjB,CAAa,MAqKbC,UAAU,CAAAN,OAAA,CAAAM,UAAA,UAAVA,CAAU,QAAV,CAAAA,CAAU,CAAAiB,KAAA,SAAVjB,CAAU,CAAAkB,MAAA,UAAVlB,CAAU,CAAAmB,OAAA,WAAVnB,CAAU,MAUVH,mBAAmB,CAAAH,OAAA,CAAAG,mBAAA,UAAnBA,CAAmB,QAAnB,CAAAA,CAAmB,CAAAuB,YAAA,iBAAnBvB,CAAmB,CAAAwB,OAAA,WAAnBxB,CAAmB,CAAAyB,OAAA,WAAnBzB,CAAmB,CAAA0B,KAAA,SAAnB1B,CAAmB,CAAA2B,GAAA,OAAnB3B,CAAmB,CAAA4B,GAAA,OAAnB5B,CAAmB,MAkDnBK,WAAW,CAAAR,OAAA,CAAAQ,WAAA,UAAXA,CAAW,QAAX,CAAAA,CAAW,CAAAwB,MAAA,UAAXxB,CAAW,CAAAyB,gBAAA,MAAXzB,CAAW,CAAA0B,OAAA,WAAX1B,CAAW,CAAA2B,MAAA,UAAX3B,CAAW,CAAA4B,KAAA,SAAX5B,CAAW,CAAA6B,KAAA,SAAX7B,CAAW,WASV,CAAAJ,uBAAuB,CAAAJ,OAAA,CAAAI,uBAAA,CAAG,CACrC,CAACD,mBAAmB,CAACwB,OAAO,EAAG,CAAC,CAChC,CAACxB,mBAAmB,CAAC2B,GAAG,EAAG,CAAC,CAC5B,CAAC3B,mBAAmB,CAAC4B,GAAG,EAAG,CAAC,CAC5B,CAAC5B,mBAAmB,CAAC0B,KAAK,EAAG,CAAC,CAC9B,CAAC1B,mBAAmB,CAACyB,OAAO,EAAG,CAAC,CAChC,CAACzB,mBAAmB,CAACuB,YAAY,EAAG,CACtC,CAAU,CAEGxB,sBAAsB,CAAAF,OAAA,CAAAE,sBAAA,CAAG,GAAAoC,yBAAgB,EACpDlC,uBACF,CAAC,CAEYK,eAAe,CAAAT,OAAA,CAAAS,eAAA,CAAG,CAC7B,CAACD,WAAW,CAACwB,MAAM,EAAG,CAAC,CACvB,CAACxB,WAAW,CAACyB,gBAAgB,EAAG,CAAC,CACjC,CAACzB,WAAW,CAAC0B,OAAO,EAAG,CAAC,CACxB,CAAC1B,WAAW,CAAC2B,MAAM,EAAG,CAAC,CACvB,CAAC3B,WAAW,CAAC4B,KAAK,EAAG,CAAC,CACtB,CAAC5B,WAAW,CAAC6B,KAAK,EAAG,CACvB,CAAU,CAEG9B,cAAc,CAAAP,OAAA,CAAAO,cAAA,CAAG,GAAA+B,yBAAgB,EAAc7B,eAAe,CAAC","ignoreList":[]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"uniqueIdentifier.js","names":["UniqueIdentifier","constructor","value","_defineProperty","_value","status","TrackingStatus","Sent","url","data","type","KameleoonData","_fromRaw","exports"],"sources":["../../src/kameleoonData/uniqueIdentifier.ts"],"sourcesContent":["import { TrackingStatus } from 'src/types';\nimport { IKameleoonData, IdentifierDataType, KameleoonData } from './types';\n\nexport class UniqueIdentifier implements IKameleoonData {\n public status: TrackingStatus;\n\n private _value: boolean;\n\n /**\n * @param {boolean} value - a boolean value that indicates if the visitor has a unique identifier\n * */\n constructor(value: boolean) {\n this._value = value;\n this.status = TrackingStatus.Sent;\n }\n\n get url(): string {\n return '';\n }\n\n get data(): IdentifierDataType {\n return {\n value: this._value,\n type: KameleoonData.UniqueIdentifier,\n status: TrackingStatus.Sent,\n };\n }\n\n /**\n * @private\n * @method _fromRaw - an internal method for creating a UniqueIdentifier instance from raw data\n * @param {IdentifierDataType} data - a raw data\n * @return {UniqueIdentifier} a UniqueIdentifier instance\n * */\n public static _fromRaw(data: IdentifierDataType): UniqueIdentifier {\n return new UniqueIdentifier(data.value);\n }\n}\n"],"mappings":"+pBAGO,KAAM,CAAAA,gBAA2C,CAQtDC,WAAWA,CAACC,CAAc,CAAE,CAAAC,eAAA,uBAAAA,eAAA,uBAC1B,IAAI,CAACC,MAAM,CAAGF,CAAK,CACnB,IAAI,CAACG,MAAM,CAAGC,qBAAc,CAACC,IAC/B,CAEA,GAAI,CAAAC,GAAGA,CAAA,CAAW,CAChB,MAAO,EACT,CAEA,GAAI,CAAAC,IAAIA,CAAA,CAAuB,CAC7B,MAAO,CACLP,KAAK,CAAE,IAAI,CAACE,MAAM,CAClBM,IAAI,CAAEC,qBAAa,CAACX,gBAAgB,CACpCK,MAAM,CAAEC,qBAAc,CAACC,IACzB,CACF,CAQA,MAAc,CAAAK,QAAQA,CAACH,CAAwB,CAAoB,CACjE,MAAO,IAAI,CAAAT,gBAAgB,CAACS,CAAI,CAACP,KAAK,CACxC,CACF,CAACW,OAAA,CAAAb,gBAAA,CAAAA,gBAAA","ignoreList":[]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"userAgent.js","names":["UserAgent","constructor","value","_defineProperty","status","TrackingStatus","Sent","url","data","type","KameleoonData","exports"],"sources":["../../src/kameleoonData/userAgent.ts"],"sourcesContent":["import { UserAgentDataType, IKameleoonData, KameleoonData } from './types';\nimport { TrackingStatus } from 'src/types';\n\n/**\n * @class\n * UserAgent - a class for creating an instance for user agent\n * */\nexport class UserAgent implements IKameleoonData {\n public status: TrackingStatus;\n\n private value: string;\n\n constructor(value: string) {\n this.value = value;\n this.status = TrackingStatus.Sent;\n }\n\n get url(): string {\n return '';\n }\n\n get data(): UserAgentDataType {\n return {\n value: this.value,\n type: KameleoonData.UserAgent,\n status: this.status,\n };\n }\n}\n"],"mappings":"wpBAOO,KAAM,CAAAA,SAAoC,CAK/CC,WAAWA,CAACC,CAAa,CAAE,CAAAC,eAAA,uBAAAA,eAAA,sBACzB,IAAI,CAACD,KAAK,CAAGA,CAAK,CAClB,IAAI,CAACE,MAAM,CAAGC,sBAAc,CAACC,IAC/B,CAEA,GAAI,CAAAC,GAAGA,CAAA,CAAW,CAChB,MAAO,EACT,CAEA,GAAI,CAAAC,IAAIA,CAAA,CAAsB,CAC5B,MAAO,CACLN,KAAK,CAAE,IAAI,CAACA,KAAK,CACjBO,IAAI,CAAEC,oBAAa,CAACV,SAAS,CAC7BI,MAAM,CAAE,IAAI,CAACA,MACf,CACF,CACF,CAACO,OAAA,CAAAX,SAAA,CAAAA,SAAA","ignoreList":[]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"visitProcessor.js","names":["VisitProcessor","constructor","a","filters","dataManager","visitorCode","_defineProperty","VisitsData","KameleoonData","Device","Browser","GeolocationData","OperatingSystem","KameleoonConversionScore","CustomData","Map","PageView","Conversion","visitorDataTypes","getVisitorStoredDataTypes","data","visitorData","storageVisitorData","visitsData","experimentData","processVisit","visit","processBrowser","processDevice","processOperatingSystem","processGeolocationData","processCustomData","processConversion","processPageView","processExperiments","processVisitsData","processMultipleDataTypes","dataType","Object","entries","multipleDataTypes","size","push","values","forEach","customData","storedCustomDataIndexes","has","index","processKcs","kcsData","kcs","browser","singleDataTypes","_fromVisit","device","operatingSystem","geolocation","_updateFromVisit","conversions","_listFromVisit","length","pageViews","experiments","experimentEvents","experimentEvent","id","variationId","isTargetedRule","status","TrackingStatus","Unsent","timestamp","timeStarted","exports"],"sources":["../../src/kameleoonData/visitProcessor.ts"],"sourcesContent":["import { VisitType } from 'src/requester';\nimport { PageView } from './pageView';\nimport { VisitorDataFiltersType } from 'src/utilities/types';\nimport {\n KameleoonData,\n KameleoonDataType,\n SingleDataType,\n MultipleDataType,\n VisitProcessorDataType,\n KCSType,\n VisitorProcessorParametersType,\n} from './types';\nimport { CustomData } from './customData';\nimport { Conversion } from './conversion';\nimport { Browser } from './browser';\nimport { Device } from './device';\nimport { OperatingSystem } from './operatingSystem';\nimport { GeolocationData } from './geolocation';\nimport { FeatureFlagVariationsType } from 'src/storage';\nimport { VisitsData } from './visitsData';\nimport { DataManager } from './dataManager';\nimport { KameleoonConversionScore } from './kameleoonConversionScore';\nimport { TrackingStatus } from 'src/types';\n\ninterface IVisitProcessor {\n processVisit(visit: VisitType): void;\n processKcs(kcsData?: KCSType): void;\n processMultipleDataTypes(): void;\n}\n\nexport class VisitProcessor implements IVisitProcessor {\n private visitsData = new VisitsData([]);\n private visitorData: KameleoonDataType[] = [];\n private storageVisitorData: KameleoonDataType[] = [];\n private experimentData: FeatureFlagVariationsType = {};\n private filters: VisitorDataFiltersType;\n private visitorDataTypes: Set<KameleoonData>;\n private dataManager: DataManager;\n private singleDataTypes: SingleDataType = {\n [KameleoonData.Device]: null,\n [KameleoonData.Browser]: null,\n [KameleoonData.GeolocationData]: null,\n [KameleoonData.OperatingSystem]: null,\n [KameleoonData.KameleoonConversionScore]: null,\n };\n private multipleDataTypes: MultipleDataType = {\n [KameleoonData.CustomData]: new Map<number, CustomData>(),\n [KameleoonData.PageView]: new Map<string, PageView>(),\n [KameleoonData.Conversion]: new Map<number, Conversion>(),\n };\n\n constructor({\n filters,\n dataManager,\n visitorCode,\n }: VisitorProcessorParametersType) {\n this.filters = filters;\n this.dataManager = dataManager;\n this.visitorDataTypes = dataManager.getVisitorStoredDataTypes(visitorCode);\n }\n\n get data(): VisitProcessorDataType {\n return {\n visitorData: this.visitorData,\n storageVisitorData: this.storageVisitorData,\n visitsData: this.visitsData,\n experimentData: this.experimentData,\n };\n }\n\n public processVisit(visit: VisitType): void {\n this.processBrowser(visit);\n this.processDevice(visit);\n this.processOperatingSystem(visit);\n this.processGeolocationData(visit);\n this.processCustomData(visit);\n this.processConversion(visit);\n this.processPageView(visit);\n this.processExperiments(visit);\n this.processVisitsData(visit);\n }\n\n public processMultipleDataTypes(): void {\n for (const [dataType, data] of Object.entries(this.multipleDataTypes)) {\n if (!data.size) {\n continue;\n }\n\n switch (dataType) {\n case KameleoonData.PageView: {\n this.visitorData.push(...data.values());\n this.storageVisitorData.push(...data.values());\n\n break;\n }\n case KameleoonData.Conversion: {\n this.storageVisitorData.push(...data.values());\n\n break;\n }\n case KameleoonData.CustomData: {\n const dataItem = data as Map<number, CustomData>;\n\n dataItem.forEach((customData) => {\n this.visitorData.push(customData);\n\n if (\n !this.dataManager.storedCustomDataIndexes.has(\n customData.data.index,\n )\n ) {\n this.storageVisitorData.push(customData);\n }\n });\n\n break;\n }\n }\n }\n }\n\n public processKcs(kcsData?: KCSType): void {\n if (this.filters.kcs && kcsData) {\n const kcs = new KameleoonConversionScore(kcsData);\n\n this.storageVisitorData.push(kcs);\n }\n }\n\n private processBrowser(visit: VisitType): void {\n if (this.filters.browser && !this.singleDataTypes[KameleoonData.Browser]) {\n const browser = Browser._fromVisit(visit);\n\n if (browser) {\n if (!this.visitorDataTypes.has(KameleoonData.Browser)) {\n this.storageVisitorData.push(browser);\n }\n this.visitorData.push(browser);\n this.singleDataTypes[KameleoonData.Browser] = browser;\n }\n }\n }\n\n private processDevice(visit: VisitType): void {\n if (this.filters.device && !this.singleDataTypes[KameleoonData.Device]) {\n const device = Device._fromVisit(visit);\n\n if (device) {\n if (!this.visitorDataTypes.has(KameleoonData.Device)) {\n this.storageVisitorData.push(device);\n }\n\n this.visitorData.push(device);\n this.singleDataTypes[KameleoonData.Device] = device;\n }\n }\n }\n\n private processOperatingSystem(visit: VisitType): void {\n if (\n this.filters.operatingSystem &&\n !this.singleDataTypes[KameleoonData.OperatingSystem]\n ) {\n const operatingSystem = OperatingSystem._fromVisit(visit);\n\n if (operatingSystem) {\n if (!this.visitorDataTypes.has(KameleoonData.OperatingSystem)) {\n this.storageVisitorData.push(operatingSystem);\n }\n\n this.visitorData.push(operatingSystem);\n this.singleDataTypes[KameleoonData.OperatingSystem] = operatingSystem;\n }\n }\n }\n\n private processGeolocationData(visit: VisitType): void {\n if (\n this.filters.geolocation &&\n !this.singleDataTypes[KameleoonData.GeolocationData]\n ) {\n const geolocation = GeolocationData._fromVisit(visit);\n\n if (geolocation) {\n if (!this.visitorDataTypes.has(KameleoonData.GeolocationData)) {\n this.storageVisitorData.push(geolocation);\n }\n\n this.visitorData.push(geolocation);\n this.singleDataTypes[KameleoonData.GeolocationData] = geolocation;\n }\n }\n }\n\n private processCustomData(visit: VisitType): void {\n if (this.filters.customData) {\n CustomData._updateFromVisit(\n visit,\n this.multipleDataTypes[KameleoonData.CustomData],\n );\n }\n }\n\n private processConversion(visit: VisitType): void {\n if (this.filters.conversions) {\n // --- Note ---\n // We collect Conversion data with only unique goalId\n Conversion._updateFromVisit(\n visit,\n this.multipleDataTypes[KameleoonData.Conversion],\n );\n\n // --- Note ---\n // We collect all Conversion data with goalId, revenue and negative for all visits\n const conversions = Conversion._listFromVisit(visit);\n\n if (conversions.length) {\n this.visitorData.push(...conversions);\n }\n }\n }\n\n private processPageView(visit: VisitType): void {\n if (this.filters.pageViews) {\n PageView._updateFromVisit(\n visit,\n this.multipleDataTypes[KameleoonData.PageView],\n );\n }\n }\n\n private processExperiments(visit: VisitType): void {\n if (this.filters.experiments && visit.experimentEvents) {\n for (const experimentEvent of visit.experimentEvents) {\n const { id, variationId } = experimentEvent.data;\n\n this.experimentData[id] = {\n variationId,\n isTargetedRule: false,\n status: TrackingStatus.Unsent,\n };\n }\n }\n }\n\n private processVisitsData(visit: VisitType): void {\n this.visitsData.timestamp = visit.timeStarted;\n }\n}\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"visitsData.js","names":["VisitsData","constructor","visits","_defineProperty","TrackingStatus","Sent","url","data","type","KameleoonData","status","isSent","timestamp","Utilities","insertInOrderedListMutably","list","element","order","Order","Ascending","Set","exports"],"sources":["../../src/kameleoonData/visitsData.ts"],"sourcesContent":["import { Utilities } from 'src/utilities';\nimport { Order } from 'src/utilities/types';\nimport { IKameleoonData, KameleoonData, VisitsDataType } from './types';\nimport { TrackingStatus } from 'src/types';\n\n/**\n * @class\n * Visits - a class for creating an instance of a stored visits data\n * */\nexport class VisitsData implements IKameleoonData {\n // --- Note ---\n // Ascending order\n private visits: number[];\n public status: TrackingStatus = TrackingStatus.Sent;\n\n /**\n * @param {number[]} visits - a list of visits\n * */\n constructor(visits: number[]) {\n this.visits = visits;\n }\n\n get url(): string {\n return '';\n }\n\n get data(): VisitsDataType {\n return {\n visits: this.visits,\n type: KameleoonData.VisitsData,\n status: this.status,\n };\n }\n\n get isSent(): boolean {\n return true;\n }\n\n /**\n * Adds a single timestamp while ensuring the list remains sorted and unique\n * @param {number} timestamp - The timestamp to add\n */\n set timestamp(timestamp: number) {\n Utilities.insertInOrderedListMutably({\n list: this.visits,\n element: timestamp,\n order: Order.Ascending,\n });\n\n this.visits = [...new Set(this.visits)];\n }\n}\n"],"mappings":"kuBASO,KAAM,CAAAA,UAAqC,CAShDC,WAAWA,CAACC,CAAgB,CAAE,CAAAC,eAAA,uBAAAA,eAAA,eALEC,sBAAc,CAACC,IAAI,EAMjD,IAAI,CAACH,MAAM,CAAGA,CAChB,CAEA,GAAI,CAAAI,GAAGA,CAAA,CAAW,CAChB,MAAO,EACT,CAEA,GAAI,CAAAC,IAAIA,CAAA,CAAmB,CACzB,MAAO,CACLL,MAAM,CAAE,IAAI,CAACA,MAAM,CACnBM,IAAI,CAAEC,qBAAa,CAACT,UAAU,CAC9BU,MAAM,CAAE,IAAI,CAACA,MACf,CACF,CAEA,GAAI,CAAAC,MAAMA,CAAA,CAAY,CACpB,QACF,CAMA,GAAI,CAAAC,SAASA,CAACA,CAAiB,CAAE,CAC/BC,oBAAS,CAACC,0BAA0B,CAAC,CACnCC,IAAI,CAAE,IAAI,CAACb,MAAM,CACjBc,OAAO,CAAEJ,CAAS,CAClBK,KAAK,CAAEC,YAAK,CAACC,SACf,CAAC,CAAC,CAEF,IAAI,CAACjB,MAAM,CAAG,CAAC,GAAG,GAAI,CAAAkB,GAAG,CAAC,IAAI,CAAClB,MAAM,CAAC,CACxC,CACF,CAACmB,OAAA,CAAArB,UAAA,CAAAA,UAAA","ignoreList":[]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"constants.js","names":["_types","require","Object","defineProperty","exports","value","ERROR_MESSAGES","KameleoonException","CookieParse","reason","JSONParse","err","NumberParse","VersionParse","SemanticVersionParse","Initialization","Credentials","StorageInitialization","EventSourceInitialization","FeatureFlagConfigurationNotFound","featureKey","FeatureFlagEnvironmentDisabled","environment","FeatureFlagVariableNotFound","variableKey","visitorCode","FeatureFlagVariationNotFound","variationKey","NotTargeted","VisitAmount","VisitorCodeMaxLength","VisitorCodeEmpty","StorageWrite","StorageRead","key","StorageEmpty","StorageParse","ClientConfiguration","TargetingCondition","targetingType","AmongValuesCheck","RangeCheck","RemoteData","MaximumRetriesReached"],"sources":["../../src/kameleoonError/constants.ts"],"sourcesContent":["import { KameleoonStorageKey } from 'src/storage';\nimport { TargetingType } from 'src/targeting';\nimport { KameleoonException } from './types';\n\nexport const ERROR_MESSAGES = {\n [KameleoonException.CookieParse]: (reason: string) =>\n `Couldn't parse cookie string: ${reason}`,\n [KameleoonException.JSONParse]: (err: unknown) =>\n `Couldn't parse JSON variable: ${err}`,\n [KameleoonException.NumberParse]: (value: string) =>\n `It's not possible to parse value ${value} to Number`,\n [KameleoonException.VersionParse]: (value: string) =>\n `It's not possible to parse a version value ${value} to Number, version should be in format x.x`,\n [KameleoonException.SemanticVersionParse]: (value: string) =>\n `It's not possible to parse a version value ${value} to Number, version should be in format x.x.x`,\n [KameleoonException.Initialization]: () =>\n \"It seems that the client wasn't properly initialized, make sure to run `initialize` method before invoking other methods\",\n [KameleoonException.Credentials]: () =>\n 'KameleoonClient can not be created without credentials',\n [KameleoonException.StorageInitialization]: () =>\n \"There was an error while initializing React Native SDK storage, it seems that the storage library dependency wasn't installed\",\n [KameleoonException.EventSourceInitialization]: () =>\n \"There was an error while initializing Real Time Update service, it seems that the event source library dependency wasn't installed\",\n [KameleoonException.FeatureFlagConfigurationNotFound]: (featureKey: string) =>\n `No feature flag with key ${featureKey} was found.`,\n [KameleoonException.FeatureFlagEnvironmentDisabled]: (\n featureKey: string,\n environment: string,\n ) =>\n `Feature flag with key ${featureKey} is disabled in ${environment} environment.`,\n [KameleoonException.FeatureFlagVariableNotFound]: (\n variableKey: string,\n visitorCode: string,\n ) =>\n `No feature flag variable with key ${variableKey} was found for ${visitorCode} visitorCode.`,\n [KameleoonException.FeatureFlagVariationNotFound]: (\n variationKey: string,\n visitorCode: string,\n ) =>\n `No feature flag variation with key ${variationKey} was found for ${visitorCode} visitorCode.`,\n [KameleoonException.NotTargeted]: (visitorCode: string) =>\n `Visitor code ${visitorCode} is not targeted`,\n [KameleoonException.VisitAmount]: () =>\n 'Visit amount must be a number between 1 and 25',\n [KameleoonException.VisitorCodeMaxLength]: () =>\n 'Visitor code can not be more than 255 characters long',\n [KameleoonException.VisitorCodeEmpty]: () => 'Visitor code can not be empty',\n [KameleoonException.StorageWrite]: (err: unknown) =>\n `Couldn't update storage for kameleoonClient: ${err}`,\n [KameleoonException.StorageRead]: (key: KameleoonStorageKey) =>\n `No data found in storage under ${key} key`,\n [KameleoonException.StorageEmpty]: () => 'No data found in storage',\n [KameleoonException.StorageParse]: (err: unknown, key: KameleoonStorageKey) =>\n `Couldn't parse ${key} storage data, the data may be corrupted. Error: ${err}`,\n [KameleoonException.ClientConfiguration]: (err: unknown) =>\n `Couldn't retrieve client configuration from Kameleoon Api. Error: ${err}`,\n [KameleoonException.TargetingCondition]: (targetingType: TargetingType) =>\n `${targetingType} targeting condition is not yet supported.`,\n [KameleoonException.AmongValuesCheck]: (err: unknown, value: string) =>\n `Couldn't parse value \"${value}\": ${err}`,\n [KameleoonException.RangeCheck]: (value?: number[] | null) =>\n `Couldn't parse value \"${value}\" as a range, value should be in format [x: number, y: number]`,\n [KameleoonException.RemoteData]: (err: unknown) =>\n `Couldn't retrieve data from Kameleoon server. Error: ${err}`,\n [KameleoonException.MaximumRetriesReached]: (err: unknown) =>\n `Maximum retries reached, request failed. Reason: ${err}`,\n};\n"],"mappings":"aAEA,IAAAA,MAAA,CAAAC,OAAA,YAA6CC,MAAA,CAAAC,cAAA,CAAAC,OAAA,eAAAC,KAAA,MAAAD,OAAA,CAAAE,cAAA,QAEtC,KAAM,CAAAA,cAAc,CAAAF,OAAA,CAAAE,cAAA,CAAG,CAC5B,CAACC,yBAAkB,CAACC,WAAW,EAAIC,CAAc,EAC/C,iCAAiCA,CAAM,EAAE,CAC3C,CAACF,yBAAkB,CAACG,SAAS,EAAIC,CAAY,EAC3C,iCAAiCA,CAAG,EAAE,CACxC,CAACJ,yBAAkB,CAACK,WAAW,EAAIP,CAAa,EAC9C,oCAAoCA,CAAK,YAAY,CACvD,CAACE,yBAAkB,CAACM,YAAY,EAAIR,CAAa,EAC/C,8CAA8CA,CAAK,6CAA6C,CAClG,CAACE,yBAAkB,CAACO,oBAAoB,EAAIT,CAAa,EACvD,8CAA8CA,CAAK,+CAA+C,CACpG,CAACE,yBAAkB,CAACQ,cAAc,EAAG,IACnC,0HAA0H,CAC5H,CAACR,yBAAkB,CAACS,WAAW,EAAG,IAChC,wDAAwD,CAC1D,CAACT,yBAAkB,CAACU,qBAAqB,EAAG,IAC1C,+HAA+H,CACjI,CAACV,yBAAkB,CAACW,yBAAyB,EAAG,IAC9C,oIAAoI,CACtI,CAACX,yBAAkB,CAACY,gCAAgC,EAAIC,CAAkB,EACxE,4BAA4BA,CAAU,aAAa,CACrD,CAACb,yBAAkB,CAACc,8BAA8B,EAAG,CACnDD,CAAkB,CAClBE,CAAmB,GAEnB,yBAAyBF,CAAU,mBAAmBE,CAAW,eAAe,CAClF,CAACf,yBAAkB,CAACgB,2BAA2B,EAAG,CAChDC,CAAmB,CACnBC,CAAmB,GAEnB,qCAAqCD,CAAW,kBAAkBC,CAAW,eAAe,CAC9F,CAAClB,yBAAkB,CAACmB,4BAA4B,EAAG,CACjDC,CAAoB,CACpBF,CAAmB,GAEnB,sCAAsCE,CAAY,kBAAkBF,CAAW,eAAe,CAChG,CAAClB,yBAAkB,CAACqB,WAAW,EAAIH,CAAmB,EACpD,gBAAgBA,CAAW,kBAAkB,CAC/C,CAAClB,yBAAkB,CAACsB,WAAW,EAAG,IAChC,gDAAgD,CAClD,CAACtB,yBAAkB,CAACuB,oBAAoB,EAAG,IACzC,uDAAuD,CACzD,CAACvB,yBAAkB,CAACwB,gBAAgB,EAAG,IAAM,+BAA+B,CAC5E,CAACxB,yBAAkB,CAACyB,YAAY,EAAIrB,CAAY,EAC9C,gDAAgDA,CAAG,EAAE,CACvD,CAACJ,yBAAkB,CAAC0B,WAAW,EAAIC,CAAwB,EACzD,kCAAkCA,CAAG,MAAM,CAC7C,CAAC3B,yBAAkB,CAAC4B,YAAY,EAAG,IAAM,0BAA0B,CACnE,CAAC5B,yBAAkB,CAAC6B,YAAY,EAAG,CAACzB,CAAY,CAAEuB,CAAwB,GACxE,kBAAkBA,CAAG,oDAAoDvB,CAAG,EAAE,CAChF,CAACJ,yBAAkB,CAAC8B,mBAAmB,EAAI1B,CAAY,EACrD,qEAAqEA,CAAG,EAAE,CAC5E,CAACJ,yBAAkB,CAAC+B,kBAAkB,EAAIC,CAA4B,EACpE,GAAGA,CAAa,4CAA4C,CAC9D,CAAChC,yBAAkB,CAACiC,gBAAgB,EAAG,CAAC7B,CAAY,CAAEN,CAAa,GACjE,yBAAyBA,CAAK,MAAMM,CAAG,EAAE,CAC3C,CAACJ,yBAAkB,CAACkC,UAAU,EAAIpC,CAAuB,EACvD,yBAAyBA,CAAK,gEAAgE,CAChG,CAACE,yBAAkB,CAACmC,UAAU,EAAI/B,CAAY,EAC5C,wDAAwDA,CAAG,EAAE,CAC/D,CAACJ,yBAAkB,CAACoC,qBAAqB,EAAIhC,CAAY,EACvD,oDAAoDA,CAAG,EAC3D,CAAC","ignoreList":[]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"helpers.js","names":["exhaustCheck","option","Error"],"sources":["../../src/kameleoonError/helpers.ts"],"sourcesContent":["export function exhaustCheck(option: never): never {\n throw new Error(`Reaching an impossible state because of ${option}`);\n}\n"],"mappings":"sGAAO,QAAS,CAAAA,YAAYA,CAACC,CAAa,CAAS,CACjD,KAAM,IAAI,CAAAC,KAAK,CAAC,2CAA2CD,CAAM,EAAE,CACrE","ignoreList":[]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","names":[],"sources":["../../src/kameleoonError/index.ts"],"sourcesContent":["export { KameleoonError } from './kameleoonError';\nexport { KameleoonException } from './types';\nexport { exhaustCheck } from './helpers';\n"],"mappings":"","ignoreList":[]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"kameleoonError.js","names":["KameleoonError","Error","constructor","type","secondParam","thirdParam","_defineProperty","name","errorType","KameleoonException","Initialization","Credentials","VisitorCodeMaxLength","VisitorCodeEmpty","StorageInitialization","VisitAmount","EventSourceInitialization","StorageEmpty","message","ERROR_MESSAGES","CookieParse","NotTargeted","FeatureFlagConfigurationNotFound","NumberParse","ClientConfiguration","MaximumRetriesReached","RemoteData","VersionParse","SemanticVersionParse","FeatureFlagVariationNotFound","FeatureFlagEnvironmentDisabled","FeatureFlagVariableNotFound","StorageWrite","JSONParse","StorageRead","StorageParse","TargetingCondition","AmongValuesCheck","RangeCheck","exhaustCheck","exports"],"sources":["../../src/kameleoonError/kameleoonError.ts"],"sourcesContent":["import { KameleoonStorageKey } from 'src/storage';\nimport { TargetingType } from 'src/targeting';\nimport { ERROR_MESSAGES } from './constants';\nimport { exhaustCheck } from './helpers';\nimport { KameleoonException } from './types';\n\n/**\n * @class\n * KameleoonError - extends standard `Error` by adding custom `type` property with the type of `KameleoonException`\n * */\nexport class KameleoonError extends Error {\n private errorType: KameleoonException;\n\n /**\n * @param {KameleoonException} type - type of KameleoonError represented by `KameleoonException` enum\n * */\n constructor(\n type:\n | KameleoonException.Initialization\n | KameleoonException.Credentials\n | KameleoonException.VisitorCodeMaxLength\n | KameleoonException.VisitorCodeEmpty\n | KameleoonException.VisitAmount\n | KameleoonException.StorageInitialization\n | KameleoonException.EventSourceInitialization\n | KameleoonException.StorageEmpty,\n );\n constructor(\n type:\n | KameleoonException.FeatureFlagConfigurationNotFound\n | KameleoonException.FeatureFlagEnvironmentDisabled,\n featureKey: string,\n );\n constructor(\n type:\n | KameleoonException.FeatureFlagConfigurationNotFound\n | KameleoonException.FeatureFlagEnvironmentDisabled,\n featureKey: string,\n environment: string,\n );\n constructor(\n type: KameleoonException.FeatureFlagVariableNotFound,\n variableKey: string,\n visitorCode: string,\n );\n constructor(\n type: KameleoonException.FeatureFlagVariationNotFound,\n variationKey: string,\n visitorCode: string,\n );\n constructor(type: KameleoonException.NotTargeted, visitorCode: string);\n constructor(type: KameleoonException.CookieParse, message: string);\n constructor(\n type:\n | KameleoonException.StorageWrite\n | KameleoonException.JSONParse\n | KameleoonException.RemoteData\n | KameleoonException.MaximumRetriesReached\n | KameleoonException.ClientConfiguration,\n err: unknown,\n );\n constructor(type: KameleoonException.StorageRead, storageKey: string);\n constructor(\n type: KameleoonException.StorageParse,\n err: unknown,\n key: KameleoonStorageKey,\n );\n constructor(\n type: KameleoonException.TargetingCondition,\n targetingType: TargetingType,\n );\n constructor(\n type: KameleoonException.AmongValuesCheck,\n err: unknown,\n value: string,\n );\n constructor(type: KameleoonException.RangeCheck, value?: number[] | null);\n constructor(\n type:\n | KameleoonException.NumberParse\n | KameleoonException.VersionParse\n | KameleoonException.SemanticVersionParse,\n value: string,\n );\n constructor(\n type: KameleoonException,\n secondParam?:\n | number\n | string\n | unknown\n | KameleoonStorageKey\n | TargetingType,\n thirdParam?: string | KameleoonStorageKey,\n ) {\n super(`Error: ${type}`);\n\n this.name = 'KameleoonError';\n this.errorType = type;\n\n switch (type) {\n case KameleoonException.Initialization:\n case KameleoonException.Credentials:\n case KameleoonException.VisitorCodeMaxLength:\n case KameleoonException.VisitorCodeEmpty:\n case KameleoonException.StorageInitialization:\n case KameleoonException.VisitAmount:\n case KameleoonException.EventSourceInitialization:\n case KameleoonException.StorageEmpty:\n this.message = ERROR_MESSAGES[type]();\n break;\n case KameleoonException.CookieParse:\n case KameleoonException.NotTargeted:\n case KameleoonException.FeatureFlagConfigurationNotFound:\n case KameleoonException.NumberParse:\n case KameleoonException.ClientConfiguration:\n case KameleoonException.MaximumRetriesReached:\n case KameleoonException.RemoteData:\n case KameleoonException.VersionParse:\n case KameleoonException.SemanticVersionParse:\n this.message = ERROR_MESSAGES[type](secondParam as string);\n break;\n case KameleoonException.FeatureFlagVariationNotFound:\n case KameleoonException.FeatureFlagEnvironmentDisabled:\n case KameleoonException.FeatureFlagVariableNotFound:\n this.message = ERROR_MESSAGES[type](\n secondParam as string,\n thirdParam as string,\n );\n break;\n case KameleoonException.StorageWrite:\n case KameleoonException.JSONParse:\n this.message = ERROR_MESSAGES[type](secondParam);\n break;\n case KameleoonException.StorageRead:\n this.message = ERROR_MESSAGES[type](secondParam as KameleoonStorageKey);\n break;\n case KameleoonException.StorageParse:\n this.message = ERROR_MESSAGES[type](\n secondParam,\n thirdParam as KameleoonStorageKey,\n );\n break;\n case KameleoonException.TargetingCondition:\n this.message = ERROR_MESSAGES[type](secondParam as TargetingType);\n break;\n case KameleoonException.AmongValuesCheck:\n this.message = ERROR_MESSAGES[type](secondParam, thirdParam as string);\n break;\n case KameleoonException.RangeCheck:\n this.message = ERROR_MESSAGES[type](\n secondParam as number[] | null | undefined,\n );\n break;\n default:\n exhaustCheck(type);\n }\n }\n\n get type(): KameleoonException {\n return this.errorType;\n }\n}\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","names":["KameleoonException","exports","Credentials","EventSourceInitialization","FeatureFlagConfigurationNotFound","FeatureFlagVariableNotFound","FeatureFlagVariationNotFound","FeatureFlagEnvironmentDisabled","NotTargeted","VisitAmount","VisitorCodeMaxLength","VisitorCodeEmpty","StorageInitialization","StorageWrite","StorageRead","StorageParse","StorageEmpty","ClientConfiguration","TargetingCondition","AmongValuesCheck","RangeCheck","Initialization","JSONParse","NumberParse","VersionParse","CookieParse","SemanticVersionParse","RemoteData","MaximumRetriesReached"],"sources":["../../src/kameleoonError/types.ts"],"sourcesContent":["/**\n * @readonly\n * @enum {string} an Enum containing all possible variants of exception types `KameleoonError`\n * */\nexport enum KameleoonException {\n Credentials = 'Credentials',\n EventSourceInitialization = 'EventSourceInitialization',\n FeatureFlagConfigurationNotFound = 'FeatureFlagConfigurationNotFound',\n FeatureFlagVariableNotFound = 'FeatureFlagVariableNotFound',\n FeatureFlagVariationNotFound = 'FeatureFlagVariationNotFound',\n FeatureFlagEnvironmentDisabled = 'FeatureFlagEnvironmentDisabled',\n NotTargeted = 'NotTargeted',\n VisitAmount = 'VisitAmount',\n VisitorCodeMaxLength = 'VisitorCodeMaxLength',\n VisitorCodeEmpty = 'VisitorCodeEmpty',\n StorageInitialization = 'StorageInitialization',\n StorageWrite = 'StorageWrite',\n StorageRead = 'StorageRead',\n StorageParse = 'StorageParse',\n StorageEmpty = 'StorageEmpty',\n ClientConfiguration = 'ClientConfiguration',\n TargetingCondition = 'TargetingCondition',\n AmongValuesCheck = 'AmongValuesCheck',\n RangeCheck = 'RangeCheck',\n Initialization = 'Initialization',\n JSONParse = 'JSONParse',\n NumberParse = 'NumberParse',\n VersionParse = 'VersionParse',\n CookieParse = 'CookieParse',\n SemanticVersionParse = 'SemanticVersionParse',\n RemoteData = 'RemoteData',\n MaximumRetriesReached = 'MaximumRetriesReached',\n}\n"],"mappings":"yGAIY,CAAAA,kBAAkB,CAAAC,OAAA,CAAAD,kBAAA,UAAlBA,CAAkB,QAAlB,CAAAA,CAAkB,CAAAE,WAAA,eAAlBF,CAAkB,CAAAG,yBAAA,6BAAlBH,CAAkB,CAAAI,gCAAA,oCAAlBJ,CAAkB,CAAAK,2BAAA,+BAAlBL,CAAkB,CAAAM,4BAAA,gCAAlBN,CAAkB,CAAAO,8BAAA,kCAAlBP,CAAkB,CAAAQ,WAAA,eAAlBR,CAAkB,CAAAS,WAAA,eAAlBT,CAAkB,CAAAU,oBAAA,wBAAlBV,CAAkB,CAAAW,gBAAA,oBAAlBX,CAAkB,CAAAY,qBAAA,yBAAlBZ,CAAkB,CAAAa,YAAA,gBAAlBb,CAAkB,CAAAc,WAAA,eAAlBd,CAAkB,CAAAe,YAAA,gBAAlBf,CAAkB,CAAAgB,YAAA,gBAAlBhB,CAAkB,CAAAiB,mBAAA,uBAAlBjB,CAAkB,CAAAkB,kBAAA,sBAAlBlB,CAAkB,CAAAmB,gBAAA,oBAAlBnB,CAAkB,CAAAoB,UAAA,cAAlBpB,CAAkB,CAAAqB,cAAA,kBAAlBrB,CAAkB,CAAAsB,SAAA,aAAlBtB,CAAkB,CAAAuB,WAAA,eAAlBvB,CAAkB,CAAAwB,YAAA,gBAAlBxB,CAAkB,CAAAyB,WAAA,eAAlBzB,CAAkB,CAAA0B,oBAAA,wBAAlB1B,CAAkB,CAAA2B,UAAA,cAAlB3B,CAAkB,CAAA4B,qBAAA,yBAAlB5B,CAAkB","ignoreList":[]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"kameleoonUtils.js","names":["KameleoonUtils","simulateSuccessRequest","requestType","data","RequestType","Tracking","Promise","resolve","status","json","r","text","ok","Configuration","RemoteData","exhaustCheck","getCookieValue","cookie","key","pairs","split","pair","find","pairKey","pairValue","exports"],"sources":["../src/kameleoonUtils.ts"],"sourcesContent":["import { exhaustCheck } from './kameleoonError';\nimport { KameleoonResponseType, RequestType } from './requester';\nimport { SimulateRequestDataType } from './types';\n\n/**\n * KameleoonUtils - a class containing static Kameleoon helper methods\n * */\nexport class KameleoonUtils {\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 text: () => new Promise((r) => r('')),\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 text: () => new Promise((r) => r('')),\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":"oLAOO,KAAM,CAAAA,cAAe,CAO1B,MAAc,CAAAC,sBAAsBA,CAClCC,CAAc,CACdC,CAAgC,CACA,CAChC,OAAQD,CAAW,EACjB,IAAK,CAAAE,sBAAW,CAACC,QAAQ,CACvB,MAAO,IAAI,CAAAC,OAAO,CAAEC,CAAO,EAAK,CAQ9BA,CAAO,CAPiC,CACtCC,MAAM,CAAE,GAAG,CACXC,IAAI,CAAEA,CAAA,GAAM,GAAI,CAAAH,OAAO,CAAEI,CAAC,EAAKA,CAAC,CAAC,IAAI,CAAC,CAAC,CACvCC,IAAI,CAAEA,CAAA,GAAM,GAAI,CAAAL,OAAO,CAAEI,CAAC,EAAKA,CAAC,CAAC,EAAE,CAAC,CAAC,CACrCE,EAAE,GACJ,CAEgB,CAClB,CAAC,CAAC,CACJ,IAAK,CAAAR,sBAAW,CAACS,aAAa,CAC9B,IAAK,CAAAT,sBAAW,CAACU,UAAU,CACzB,MAAO,IAAI,CAAAR,OAAO,CAAEC,CAAO,EAAK,CAQ9BA,CAAO,CAPiC,CACtCC,MAAM,CAAE,GAAG,CACXC,IAAI,CAAEA,CAAA,GAAM,GAAI,CAAAH,OAAO,CAAEI,CAAC,EAAKA,CAAC,CAACP,CAAI,CAAC,CAAC,CACvCQ,IAAI,CAAEA,CAAA,GAAM,GAAI,CAAAL,OAAO,CAAEI,CAAC,EAAKA,CAAC,CAAC,EAAE,CAAC,CAAC,CACrCE,EAAE,GACJ,CAEgB,CAClB,CAAC,CAAC,CACJ,QACE,GAAAG,4BAAY,EAACb,CAAW,CAC5B,CACF,CASA,MAAc,CAAAc,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,CAAAzB,cAAA,CAAAA,cAAA","ignoreList":[]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"constants.js","names":["_types","require","Object","defineProperty","exports","value","UrlTracking","UrlQuery","UrlParameter","UrlFirstParameter","UrlEventType","NUMBER_OF_RETRIES","Header","DEFAULT_DOMAINS","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","BodyUa","Sse","Map","Events","Visitor","Visit","UrlType","DataApi","subdomain","topLevelDomain","secondLevelDomain","ClientConfiguration"],"sources":["../../src/requester/constants.ts"],"sourcesContent":["import {\n DomainsType,\n EventType,\n ParameterType,\n QueryType,\n UrlType,\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: '¤tVisit=',\n MaxNumberPreviousVisits: '&maxNumberPreviousVisits=',\n Os: '&os=',\n OsIndex: '&osIndex=',\n Country: '&country=',\n City: '&city=',\n Region: '®ion=',\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 UserAgent: '&userAgent=',\n BodyUa: '&bodyUa=',\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 UserAgent: '?userAgent=',\n BodyUa: '?bodyUa=',\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\nexport const DEFAULT_DOMAINS: DomainsType = {\n [UrlType.DataApi]: {\n subdomain: 'data',\n topLevelDomain: 'io',\n secondLevelDomain: 'kameleoon',\n },\n [UrlType.Events]: {\n subdomain: 'events',\n topLevelDomain: 'com',\n secondLevelDomain: 'kameleoon',\n },\n [UrlType.ClientConfiguration]: {\n subdomain: 'sdk-config',\n topLevelDomain: 'eu',\n secondLevelDomain: 'kameleoon',\n },\n};\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","names":[],"sources":["../../src/requester/index.ts"],"sourcesContent":["export { Requester } from './requester';\nexport { IUrlProvider, UrlProvider } from './urlProvider';\nexport {\n NUMBER_OF_RETRIES,\n UrlQuery,\n UrlEventType,\n UrlParameter,\n UrlFirstParameter,\n DEFAULT_DOMAINS,\n Header,\n} from './constants';\nexport {\n HttpMethod,\n HeadersType,\n VisitType,\n UrlType,\n DomainType,\n RetryCountType,\n StaticDataEventType,\n GetVisitorDataResultType,\n IExternalRequester,\n KameleoonResponseType,\n RequestType,\n SendRequestParametersType,\n RequestParametersType,\n} from './types';\n"],"mappings":"","ignoreList":[]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"requester.js","names":["Requester","constructor","a","urlProvider","packageInfo","externalRequester","requestTimeout","trackRetryDelay","useAbortController","_defineProperty","timeout","getClientConfiguration","timeStamp","requestUrl","getClientConfigurationUrl","headers","Header","SdkType","type","toLowerCase","SdkVersion","version","requests","NUMBER_OF_RETRIES","responseInfo","message","i","response","sendRequest","url","requestType","RequestType","Configuration","retryCount","parameters","method","HttpMethod","Get","ok","data","json","Ok","text","JSON","parse","Err","KameleoonError","KameleoonException","MaximumRetriesReached","err","ClientConfiguration","getRemoteData","key","getRemoteDataUrl","RemoteData","c","getVisitorData","visitorCode","filters","isMappingIdentifier","getVisitorDataUrl","f","status","track","body","isBodyUserAgent","getTrackingUrl","Tracking","Post","Promise","resolve","setTimeout","controller","AbortController","timeoutId","abort","_objectSpread","signal","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 { Header, NUMBER_OF_RETRIES } from './constants';\nimport {\n RequesterParamsType,\n GetVisitorDataResultType,\n HeadersType,\n GetVisitorDataParamsType,\n IExternalRequester,\n RequestType,\n HttpMethod,\n InternalSendRequestParametersType,\n KameleoonResponseType,\n RequestParametersType,\n} from './types';\nimport { IUrlProvider } from './urlProvider';\n\nexport interface IRequester {\n getClientConfiguration: () => Promise<\n Result<ConfigurationDataType, KameleoonError>\n >;\n getRemoteData: (key: string) => Promise<Result<JSONType, KameleoonError>>;\n track: (\n body: string,\n isBodyUserAgent: boolean,\n ) => Promise<Result<void, void>>;\n}\n\nexport class Requester implements IRequester {\n private externalRequester: IExternalRequester;\n private urlProvider: IUrlProvider;\n private packageInfo: ExternalPackageInfoType;\n private trackRetryDelay: number;\n private useAbortController: boolean;\n private timeout: number;\n\n constructor({\n urlProvider,\n packageInfo,\n externalRequester,\n requestTimeout,\n trackRetryDelay,\n useAbortController,\n }: RequesterParamsType) {\n this.urlProvider = urlProvider;\n this.useAbortController = useAbortController;\n this.externalRequester = externalRequester;\n this.trackRetryDelay = trackRetryDelay;\n this.packageInfo = packageInfo;\n this.timeout = requestTimeout;\n }\n\n public async getClientConfiguration(\n timeStamp?: number,\n ): Promise<Result<ConfigurationDataType, KameleoonError>> {\n const requestUrl = this.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 let responseInfo = { message: '' };\n\n for (let i = 0; i < requests; i++) {\n const response = await this.sendRequest<RequestType.Configuration>({\n url: requestUrl,\n requestType: RequestType.Configuration,\n retryCount: i,\n parameters: {\n method: HttpMethod.Get,\n headers,\n },\n });\n\n if (response.ok) {\n const data = await response.json();\n\n return Ok(data as ConfigurationDataType);\n }\n\n if (i === NUMBER_OF_RETRIES) {\n if (response.text) {\n const text = await response.text();\n responseInfo = JSON.parse(text);\n }\n }\n }\n\n return Err(\n new KameleoonError(\n KameleoonException.MaximumRetriesReached,\n responseInfo.message,\n ),\n );\n } catch (err) {\n return Err(\n new KameleoonError(KameleoonException.ClientConfiguration, err),\n );\n }\n }\n\n public async getRemoteData(\n key: string,\n ): Promise<Result<JSONType, KameleoonError>> {\n const requestUrl = this.urlProvider.getRemoteDataUrl(key);\n\n try {\n const response = await this.sendRequest<RequestType.RemoteData>({\n url: requestUrl,\n requestType: RequestType.RemoteData,\n retryCount: 0,\n parameters: {\n method: HttpMethod.Get,\n },\n });\n\n if (!response.ok) {\n if (response.text) {\n const text = await response.text();\n const message = JSON.parse(text)?.message;\n\n return Err(\n new KameleoonError(KameleoonException.RemoteData, message),\n );\n }\n\n return Err(\n new KameleoonError(\n KameleoonException.RemoteData,\n 'Unknown Reason - no `text()` was found for a response',\n ),\n );\n }\n\n const data = await response.json();\n\n return Ok(data);\n } catch (err) {\n return Err(new KameleoonError(KameleoonException.RemoteData, err));\n }\n }\n\n public async getVisitorData({\n visitorCode,\n filters,\n isMappingIdentifier,\n }: GetVisitorDataParamsType): Promise<\n Result<GetVisitorDataResultType, KameleoonError>\n > {\n const requestUrl = this.urlProvider.getVisitorDataUrl({\n visitorCode,\n filters,\n isMappingIdentifier,\n });\n\n try {\n const response = await this.sendRequest<RequestType.RemoteData>({\n url: requestUrl,\n requestType: RequestType.RemoteData,\n retryCount: 0,\n parameters: {\n method: HttpMethod.Get,\n },\n });\n\n if (!response.ok) {\n if (typeof response.text === 'function') {\n const text = await response.text();\n\n if (text) {\n const message = JSON.parse(text)?.message;\n\n return Err(\n new KameleoonError(KameleoonException.RemoteData, message),\n );\n }\n }\n\n if (response.status) {\n return Err(\n new KameleoonError(\n KameleoonException.RemoteData,\n `No error message. Error status: ${response.status}`,\n ),\n );\n }\n\n return Err(\n new KameleoonError(\n KameleoonException.RemoteData,\n 'Unknown Reason - no text message or error status was found for a response',\n ),\n );\n }\n\n const data = await response.json();\n\n return Ok(data as GetVisitorDataResultType);\n } catch (err) {\n return Err(new KameleoonError(KameleoonException.RemoteData, err));\n }\n }\n\n public async track(\n body: string,\n isBodyUserAgent: boolean,\n ): Promise<Result<void, void>> {\n // --- Note ---\n // Initial request + NUMBER_OF_RETRIES\n const requests = NUMBER_OF_RETRIES + 1;\n const url = this.urlProvider.getTrackingUrl(isBodyUserAgent);\n\n for (let i = 0; i < requests; i++) {\n const response = await this.sendRequest<RequestType.Tracking>({\n url,\n retryCount: i,\n requestType: RequestType.Tracking,\n parameters: {\n body,\n method: HttpMethod.Post,\n },\n });\n\n if (response.ok) {\n return Ok();\n }\n\n await new Promise((resolve) => setTimeout(resolve, this.trackRetryDelay));\n }\n\n return Err();\n }\n\n private async sendRequest<T extends RequestType>({\n url,\n requestType,\n retryCount,\n parameters,\n }: InternalSendRequestParametersType<T>): Promise<KameleoonResponseType> {\n let response;\n\n if (this.useAbortController) {\n const controller = new AbortController();\n const timeoutId = setTimeout(() => controller.abort(), this.timeout);\n\n response = await this.externalRequester.sendRequest({\n url,\n retryCount: retryCount as 0 | 1 | 2,\n requestType,\n parameters: {\n ...parameters,\n signal: controller.signal,\n } as RequestParametersType[T],\n });\n\n clearTimeout(timeoutId);\n } else {\n response = await this.externalRequester.sendRequest({\n url,\n retryCount: retryCount as 0 | 1 | 2,\n requestType,\n parameters: parameters as RequestParametersType[T],\n });\n }\n\n return response;\n }\n}\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","names":["UrlType","exports","DataApi","Events","ClientConfiguration","HttpMethod","Get","Post","DataApiQuery","VisitEvent","VisitData","DataMap","EVENT_TYPE_KEYS","PARAMETER_KEYS","TRACKING_KEYS","QUERY_KEYS","RequestType","Configuration","Tracking","RemoteData"],"sources":["../../src/requester/types.ts"],"sourcesContent":["import { JSONType } from 'src/clientConfiguration';\nimport { Environment, ExternalPackageInfoType } from 'src/types';\nimport {\n BrowserIndexMap,\n BrowserType,\n OperatingSystemType,\n} from 'src/kameleoonData';\nimport {\n DeviceType,\n KCSType,\n OperatingSystemIndexMap,\n} from 'src/kameleoonData/types';\nimport { Header } from './constants';\nimport { VisitorDataFiltersType } from 'src/utilities';\nimport { IUrlProvider } from './urlProvider';\n\nexport enum UrlType {\n DataApi = 'dataApi',\n Events = 'events',\n ClientConfiguration = 'clientConfiguration',\n}\n\nexport type DomainsType = {\n [key in UrlType]: DomainType;\n};\n\nexport type DomainType = {\n subdomain: string;\n topLevelDomain: string;\n secondLevelDomain: string;\n};\n\nexport type UrlProviderInitializeParamsType = {\n domain: string | null;\n siteCode: string;\n packageInfo: ExternalPackageInfoType;\n environment: Environment;\n};\n\nexport type RequesterParamsType = {\n useAbortController: boolean;\n urlProvider: IUrlProvider;\n packageInfo: ExternalPackageInfoType;\n externalRequester: IExternalRequester;\n trackRetryDelay: number;\n requestTimeout: number;\n};\n\nexport type GetVisitorDataParamsType = {\n visitorCode: string;\n filters: VisitorDataFiltersType;\n isMappingIdentifier?: boolean;\n};\n\nexport type GetVisitorDataUrlParamsType = {\n visitorCode: string;\n filters: VisitorDataFiltersType;\n isMappingIdentifier?: boolean;\n};\n\ntype EventDataType = {\n sdk?: {\n name: string;\n version: string;\n };\n itp: boolean;\n time: number;\n};\n\ntype CustomDataEventType = {\n data: {\n index: number;\n valuesCountMap: {\n [value: string]: number;\n };\n overwrite: boolean;\n mappingIdentifier: boolean;\n };\n} & EventDataType;\n\ntype ExperimentEventType = {\n data: {\n id: number;\n variationId: number;\n };\n} & EventDataType;\n\ntype ConversionEventType = {\n data: {\n goalId: number;\n revenue: number;\n negative: boolean;\n };\n} & EventDataType;\n\ntype BrowserIndexType = (typeof BrowserIndexMap)[BrowserType];\ntype OperatingSystemIndexType =\n (typeof OperatingSystemIndexMap)[OperatingSystemType];\n\nexport type PageEventType = {\n data: {\n href: string;\n canonicalHref: string | null;\n title: string;\n keyPagesIndices: number[] | [null];\n referrerHref: string | null;\n referrersIndices: number[] | [null];\n };\n} & EventDataType;\n\nexport type GeolocationEventType = {\n data: {\n country: string;\n region: string | null;\n city: string | null;\n postalCode: string | null;\n latitude: number | null;\n longitude: number | null;\n };\n} & EventDataType;\n\nexport type StaticDataEventType = {\n data: {\n visitNumber: number;\n timeSincePreviousVisit: number;\n firstReferrerHref: string | null;\n browser: BrowserType | null;\n browserIndex: BrowserIndexType | null;\n browserVersion: number | null;\n os: OperatingSystemType | null;\n osIndex: OperatingSystemIndexType | null;\n windowWidth: number | null;\n windowHeight: number | null;\n screenWidth: number | null;\n screenHeight: number | null;\n timeZoneId: string | null;\n localeLanguageTag: string | null;\n deviceType: DeviceType | null;\n mappingIdentifier: string | null;\n };\n} & EventDataType;\n\nexport type VisitType = {\n siteCode: string;\n visitorCode: string;\n timeStarted: number;\n customDataEvents?: CustomDataEventType[];\n experimentEvents?: ExperimentEventType[];\n conversionEvents?: ConversionEventType[];\n geolocationEvents?: GeolocationEventType[];\n staticDataEvent?: StaticDataEventType;\n pageEvents?: PageEventType[];\n};\n\nexport type GetVisitorDataResultType = {\n previousVisits?: VisitType[];\n currentVisit?: VisitType;\n kcs?: KCSType;\n};\n\nexport enum HttpMethod {\n Get = 'GET',\n Post = 'POST',\n}\n\nexport enum DataApiQuery {\n VisitEvent,\n VisitData,\n DataMap,\n}\n\nconst EVENT_TYPE_KEYS = [\n 'customData',\n 'staticData',\n 'page',\n 'conversion',\n 'geolocation',\n 'activity',\n 'experiment',\n] as const;\nconst PARAMETER_KEYS = [\n 'valuesCountMap',\n 'mappingValue',\n 'id',\n 'nonce',\n 'country',\n 'environment',\n 'city',\n 'region',\n 'latitude',\n 'geolocation',\n 'longitude',\n 'mappingIdentifier',\n 'postalCode',\n 'sdkName',\n 'sdkVersion',\n 'kcs',\n 'browserIndex',\n 'browserVersion',\n 'siteCode',\n 'visitorCode',\n 'currentVisit',\n 'maxNumberPreviousVisits',\n 'customData',\n 'negative',\n 'revenue',\n 'title',\n 'os',\n 'conversion',\n 'staticData',\n 'osIndex',\n 'browser',\n 'referrersIndices',\n 'overwrite',\n 'index',\n 'href',\n 'experiment',\n 'page',\n 'variationId',\n 'deviceType',\n 'goalId',\n 'ts',\n 'key',\n 'userAgent',\n 'bodyUa',\n] as const;\nconst TRACKING_KEYS = ['visit', 'map'] as const;\nconst QUERY_KEYS = ['sse', 'visitor', 'map', 'events'] as const;\n\nexport type TrackingType = Record<\n Capitalize<(typeof TRACKING_KEYS)[number]>,\n string\n>;\nexport type QueryType = Record<Capitalize<(typeof QUERY_KEYS)[number]>, string>;\nexport type ParameterType = Record<\n Capitalize<(typeof PARAMETER_KEYS)[number]>,\n string\n>;\nexport type EventType = Record<\n Capitalize<(typeof EVENT_TYPE_KEYS)[number]>,\n string\n>;\n\nexport type StrictTrackingRecord<T> = {\n [K in keyof T]: `${Uncapitalize<K & string>}/`;\n};\nexport type StrictQueryRecord<T> = {\n [K in keyof T]: `${Uncapitalize<K & string>}?siteCode=`;\n};\nexport type StrictEventTypeRecord<T> = {\n [K in keyof T]: `eventType=${Uncapitalize<K & string>}`;\n};\nexport type StrictParameterRecord<T> = {\n [K in keyof T]: `&${Uncapitalize<K & string>}=`;\n};\nexport type StrictFirstParameterRecord<T> = {\n [K in keyof T]: `?${Uncapitalize<K & string>}=`;\n};\n\n/**\n * @type `HeadersType` - a type of headers available in the request\n * */\nexport type HeadersType = Partial<Record<Header, string>>;\n\n/**\n * @type `RequestParametersType` - a type of parameters available in the request for each request type\n * */\nexport type RequestParametersType = {\n [RequestType.Configuration]: {\n headers?: HeadersType;\n signal: AbortSignal | null;\n method: HttpMethod.Get;\n };\n [RequestType.Tracking]: {\n headers?: HeadersType;\n body: string;\n signal: AbortSignal | null;\n method: HttpMethod.Post;\n };\n [RequestType.RemoteData]: {\n signal: AbortSignal | null;\n method: HttpMethod.Get;\n };\n};\n\n/**\n * @enum `RequestType` - an enum of available request types\n * */\nexport enum RequestType {\n Configuration = 'configuration',\n Tracking = 'tracking',\n RemoteData = 'remoteData',\n}\n\n/**\n * @type `RetryCountType` - a type of retry count available for each request type\n * @param {0 | 1 | 2} `RequestType.Configuration` - a count of retries for configuration request (`0` is the initial request)\n * @param {0 | 1 | 2} `RequestType.Tracking` - a count of retries for tracking request (`0` is the initial request)\n * @param {0} `RequestType.RemoteData` - a count of retries for remote data request (`0` is the initial request)\n * */\nexport type RetryCountType = {\n [RequestType.Configuration]: 0 | 1 | 2;\n [RequestType.Tracking]: 0 | 1 | 2;\n [RequestType.RemoteData]: 0;\n};\n\n/**\n * @type `SendRequestParametersType` - a type of parameters available to send a request\n * @param {T extends RequestType} T - a type of request constrained by `RequestType`\n * @param {string} url - url address\n * @param {RequestParametersType[T]} parameters - parameters of the request depending on the request type\n * @param {RetryCountType | undefined} retryCount - a count of retries, the possible count of retries depends on `RequestType`\n * */\nexport type SendRequestParametersType<T extends RequestType> = {\n requestType: T;\n url: string;\n retryCount?: RetryCountType[T];\n parameters: RequestParametersType[T];\n};\n\n/**\n * @type `KameleoonResponse` - a type of response that is assignable to most libraries `Response` objects\n * @property {number} status - a status of the response\n * @property {() => Promise<JSONType>} json - a method to parse the response to JSON\n * @property {() => Promise<string>} text - a method to parse the response to text\n * @property {boolean} ok - a boolean value that indicates if the response is ok\n * */\nexport type KameleoonResponseType = {\n status: number;\n json: () => Promise<JSONType>;\n text: () => Promise<string>;\n ok: boolean;\n};\n\nexport type InternalSendRequestParametersType<T extends RequestType> = {\n url: string;\n requestType: RequestType;\n retryCount: number;\n parameters: Omit<RequestParametersType[T], 'signal'>;\n};\n\n/**\n * @interface `IExternalRequester` - an interface of External Requester which will be used to perform requests.\n * */\nexport interface IExternalRequester {\n /**\n * @method sendRequest - send a request\n * @param {SendRequestParametersType<T>} parameters - parameters of the request depending on the request type\n * @returns {Promise<KameleoonResponseType>} - a promise that resolves to the response\n * */\n sendRequest: <T extends RequestType>({\n requestType,\n url,\n parameters,\n }: SendRequestParametersType<T>) => Promise<KameleoonResponseType>;\n}\n"],"mappings":"0JAgBY,CAAAA,OAAO,CAAAC,OAAA,CAAAD,OAAA,UAAPA,CAAO,QAAP,CAAAA,CAAO,CAAAE,OAAA,WAAPF,CAAO,CAAAG,MAAA,UAAPH,CAAO,CAAAI,mBAAA,uBAAPJ,CAAO,MAgJPK,UAAU,CAAAJ,OAAA,CAAAI,UAAA,UAAVA,CAAU,QAAV,CAAAA,CAAU,CAAAC,GAAA,OAAVD,CAAU,CAAAE,IAAA,QAAVF,CAAU,MAKVG,YAAY,CAAAP,OAAA,CAAAO,YAAA,UAAZA,CAAY,QAAZ,CAAAA,CAAY,CAAZA,CAAY,CAAAC,UAAA,iBAAZD,CAAY,CAAZA,CAAY,CAAAE,SAAA,gBAAZF,CAAY,CAAZA,CAAY,CAAAG,OAAA,cAAZH,CAAY,WAMlB,CAAAI,eAAe,CAAG,CACtB,YAAY,CACZ,YAAY,CACZ,MAAM,CACN,YAAY,CACZ,aAAa,CACb,UAAU,CACV,YAAY,CACJ,CACJC,cAAc,CAAG,CACrB,gBAAgB,CAChB,cAAc,CACd,IAAI,CACJ,OAAO,CACP,SAAS,CACT,aAAa,CACb,MAAM,CACN,QAAQ,CACR,UAAU,CACV,aAAa,CACb,WAAW,CACX,mBAAmB,CACnB,YAAY,CACZ,SAAS,CACT,YAAY,CACZ,KAAK,CACL,cAAc,CACd,gBAAgB,CAChB,UAAU,CACV,aAAa,CACb,cAAc,CACd,yBAAyB,CACzB,YAAY,CACZ,UAAU,CACV,SAAS,CACT,OAAO,CACP,IAAI,CACJ,YAAY,CACZ,YAAY,CACZ,SAAS,CACT,SAAS,CACT,kBAAkB,CAClB,WAAW,CACX,OAAO,CACP,MAAM,CACN,YAAY,CACZ,MAAM,CACN,aAAa,CACb,YAAY,CACZ,QAAQ,CACR,IAAI,CACJ,KAAK,CACL,WAAW,CACX,QAAQ,CACA,CACJC,aAAa,CAAG,CAAC,OAAO,CAAE,KAAK,CAAU,CACzCC,UAAU,CAAG,CAAC,KAAK,CAAE,SAAS,CAAE,KAAK,CAAE,QAAQ,CAAU,IA6DnD,CAAAC,WAAW,CAAAf,OAAA,CAAAe,WAAA,UAAXA,CAAW,QAAX,CAAAA,CAAW,CAAAC,aAAA,iBAAXD,CAAW,CAAAE,QAAA,YAAXF,CAAW,CAAAG,UAAA,cAAXH,CAAW","ignoreList":[]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"urlProvider.js","names":["UrlProvider","constructor","_defineProperty","DEFAULT_DOMAINS","initialize","a","domain","siteCode","packageInfo","environment","ready","setDomains","dataApiDomain","isCustomDomain","parts","split","length","subdomain","secondLevelDomain","topLevelDomain","domains","UrlType","DataApi","getClientConfigurationUrl","timeStamp","isInitialized","ClientConfiguration","environmentParam","Environment","Production","UrlFirstParameter","timeStampParam","UrlParameter","Ts","getEventSourceUrl","Events","UrlQuery","Sse","getRemoteDataUrl","key","getDataApiUrl","DataApiQuery","DataMap","Key","encodeURI","getVisitorDataUrl","visitorCode","filters","isMappingIdentifier","customData","previousVisitAmount","currentVisit","conversions","geolocation","experiments","pageViews","device","browser","operatingSystem","kcs","identifierParameter","MappingValue","VisitorCode","customDataParameter","CustomData","conversionsParameter","Conversion","geolocationParameter","Geolocation","experimentsParameter","Experiment","pageViewsParameter","Page","staticDataParameter","StaticData","currentVisitParameter","CurrentVisit","kcsParameter","Kcs","previousVisitAmountParam","MaxNumberPreviousVisits","VisitData","getTrackingUrl","isBodyUserAgent","type","version","url","VisitEvent","SdkName","toLowerCase","SdkVersion","BodyUa","Error","query","UrlTracking","Visit","Visitor","Map","domainData","_objectSpread","exports"],"sources":["../../src/requester/urlProvider.ts"],"sourcesContent":["import { Environment, ExternalPackageInfoType } from 'src/types';\nimport {\n UrlFirstParameter,\n UrlParameter,\n UrlTracking,\n UrlQuery,\n DEFAULT_DOMAINS,\n} from './constants';\nimport {\n DataApiQuery,\n DomainsType,\n GetVisitorDataUrlParamsType,\n UrlProviderInitializeParamsType,\n UrlType,\n} from './types';\n\nexport interface IUrlProvider {\n initialize(params: UrlProviderInitializeParamsType): void;\n getClientConfigurationUrl(timeStamp?: number): string;\n getEventSourceUrl(): string;\n getRemoteDataUrl(key: string): string;\n getVisitorDataUrl(params: GetVisitorDataUrlParamsType): string;\n getTrackingUrl(isBodyUserAgent: boolean): string;\n dataApiDomain: string;\n}\n\nexport class UrlProvider implements IUrlProvider {\n private ready = false;\n private isCustomDomain = false;\n private domains: DomainsType = DEFAULT_DOMAINS;\n private siteCode?: string;\n private environment?: Environment;\n private packageInfo?: ExternalPackageInfoType;\n\n public initialize({\n domain,\n siteCode,\n packageInfo,\n environment,\n }: UrlProviderInitializeParamsType) {\n this.siteCode = siteCode;\n this.environment = environment;\n this.packageInfo = packageInfo;\n this.ready = true;\n\n this.setDomains(domain);\n }\n\n set dataApiDomain(domain: string) {\n if (this.isCustomDomain) {\n return;\n }\n\n const parts = domain.split('.');\n\n if (parts.length !== 3) {\n return;\n }\n\n const [subdomain, secondLevelDomain, topLevelDomain] = parts;\n\n this.domains[UrlType.DataApi] = {\n subdomain,\n secondLevelDomain,\n topLevelDomain,\n };\n }\n\n public getClientConfigurationUrl(timeStamp?: number): string {\n this.isInitialized();\n\n const { subdomain, topLevelDomain, secondLevelDomain } =\n this.domains[UrlType.ClientConfiguration];\n\n const baseUrl = `https://${subdomain}.${secondLevelDomain}.${topLevelDomain}/`;\n const environmentParam =\n this.environment === Environment.Production\n ? ''\n : UrlFirstParameter.Environment + this.environment;\n let timeStampParam = '';\n\n if (timeStamp) {\n if (environmentParam) {\n timeStampParam = UrlParameter.Ts + timeStamp;\n } else {\n timeStampParam = UrlFirstParameter.Ts + timeStamp;\n }\n }\n\n return baseUrl + this.siteCode + environmentParam + timeStampParam;\n }\n\n public getEventSourceUrl(): string {\n this.isInitialized();\n\n const { subdomain, topLevelDomain, secondLevelDomain } =\n this.domains[UrlType.Events];\n\n return `https://${subdomain}.${secondLevelDomain}.${topLevelDomain}:8110/${UrlQuery.Sse}${this.siteCode}`;\n }\n\n public getRemoteDataUrl(key: string): string {\n this.isInitialized();\n\n return (\n this.getDataApiUrl(DataApiQuery.DataMap) +\n this.siteCode +\n UrlParameter.Key +\n encodeURI(key)\n );\n }\n\n public getVisitorDataUrl({\n visitorCode,\n filters,\n isMappingIdentifier,\n }: GetVisitorDataUrlParamsType): string {\n this.isInitialized();\n\n const {\n customData,\n previousVisitAmount,\n currentVisit,\n conversions,\n geolocation,\n experiments,\n pageViews,\n device,\n browser,\n operatingSystem,\n kcs,\n } = filters;\n\n const identifierParameter = isMappingIdentifier\n ? UrlParameter.MappingValue\n : UrlParameter.VisitorCode;\n const customDataParameter = customData\n ? UrlParameter.CustomData + true\n : '';\n const conversionsParameter = conversions\n ? UrlParameter.Conversion + true\n : '';\n const geolocationParameter = geolocation\n ? UrlParameter.Geolocation + true\n : '';\n const experimentsParameter = experiments\n ? UrlParameter.Experiment + true\n : '';\n const pageViewsParameter = pageViews ? UrlParameter.Page + true : '';\n const staticDataParameter = Boolean(device || browser || operatingSystem)\n ? UrlParameter.StaticData + true\n : '';\n const currentVisitParameter = currentVisit\n ? UrlParameter.CurrentVisit + true\n : '';\n const kcsParameter = kcs ? UrlParameter.Kcs + true : '';\n const previousVisitAmountParam =\n typeof previousVisitAmount !== 'number'\n ? UrlParameter.MaxNumberPreviousVisits + 1\n : UrlParameter.MaxNumberPreviousVisits + previousVisitAmount;\n\n return (\n this.getDataApiUrl(DataApiQuery.VisitData) +\n this.siteCode +\n identifierParameter +\n visitorCode +\n previousVisitAmountParam +\n customDataParameter +\n conversionsParameter +\n geolocationParameter +\n experimentsParameter +\n pageViewsParameter +\n staticDataParameter +\n currentVisitParameter +\n kcsParameter\n );\n }\n\n public getTrackingUrl(isBodyUserAgent: boolean): string {\n this.isInitialized();\n\n const { type, version } = this.packageInfo!;\n\n let url =\n this.getDataApiUrl(DataApiQuery.VisitEvent) +\n this.siteCode +\n UrlParameter.SdkName +\n type.toLowerCase() +\n UrlParameter.SdkVersion +\n version;\n\n if (isBodyUserAgent) {\n url += UrlParameter.BodyUa + true;\n }\n\n return url;\n }\n\n private isInitialized(): void {\n if (!this.ready) {\n throw new Error('UrlProvider is not initialized');\n }\n }\n\n private getDataApiUrl(query: DataApiQuery): string {\n const { subdomain, topLevelDomain, secondLevelDomain } =\n this.domains[UrlType.DataApi];\n\n if (!subdomain || !topLevelDomain || !secondLevelDomain) {\n throw new Error('Data API domain is not set');\n }\n\n const domain = `https://${subdomain}.${secondLevelDomain}.${topLevelDomain}`;\n\n switch (query) {\n case DataApiQuery.VisitEvent:\n return `${domain}/${UrlTracking.Visit + UrlQuery.Events}`;\n case DataApiQuery.VisitData:\n return `${domain}/${UrlTracking.Visit + UrlQuery.Visitor}`;\n case DataApiQuery.DataMap:\n return `${domain}/${UrlTracking.Map + UrlQuery.Map}`;\n }\n }\n\n private setDomains(domain: string | null): void {\n if (!domain) {\n return;\n }\n\n this.isCustomDomain = true;\n\n const parts = domain.split('.');\n\n const [secondLevelDomain, topLevelDomain] = parts;\n\n const domainData = {\n secondLevelDomain,\n topLevelDomain,\n };\n\n this.domains = {\n [UrlType.DataApi]: {\n ...this.domains[UrlType.DataApi],\n ...domainData,\n },\n [UrlType.Events]: {\n ...this.domains[UrlType.Events],\n ...domainData,\n },\n [UrlType.ClientConfiguration]: {\n ...this.domains[UrlType.ClientConfiguration],\n ...domainData,\n },\n };\n }\n}\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"constants.js","names":["KameleoonStorageKey","exports","ClientData","TargetingData","TrackingData","VariationData","VisitorCode","ConsentData","DataInfo","DEFAULT_CLIENT_CONFIGURATION","data","customData","featureFlags","configuration","realTimeUpdate","consentType","ConsentType","NotRequired","dataApiDomain","lastUpdate","VISIT_DURATION","Milliseconds","Minute"],"sources":["../../src/storage/constants.ts"],"sourcesContent":["import { ConsentType } from 'src/clientConfiguration';\nimport { Milliseconds } from 'src/types';\nimport { ClientDataType } from './types';\n\n/**\n * @readonly\n * @enum {string} an Enum containing keys for Kameleoon SDK related data stored on storage\n * */\nexport enum KameleoonStorageKey {\n ClientData = 'kameleoonClientData',\n TargetingData = 'kameleoonTargetingData',\n TrackingData = 'kameleoonTrackingData',\n VariationData = 'kameleoonVariationData',\n VisitorCode = 'kameleoonVisitorCode',\n ConsentData = 'kameleoonConsentData',\n DataInfo = 'kameleoonDataInfo',\n}\n\nexport const DEFAULT_CLIENT_CONFIGURATION: ClientDataType = {\n data: {\n customData: [],\n featureFlags: [],\n configuration: {\n realTimeUpdate: false,\n consentType: ConsentType.NotRequired,\n dataApiDomain: 'data.kameleoon.io',\n },\n },\n lastUpdate: '',\n};\n\n// --- Note ---\n// Not a real visit duration, rather a guaranteed minimum time\nexport const VISIT_DURATION = 29 * Milliseconds.Minute;\n"],"mappings":"4PAQY,CAAAA,mBAAmB,CAAAC,OAAA,CAAAD,mBAAA,UAAnBA,CAAmB,QAAnB,CAAAA,CAAmB,CAAAE,UAAA,uBAAnBF,CAAmB,CAAAG,aAAA,0BAAnBH,CAAmB,CAAAI,YAAA,yBAAnBJ,CAAmB,CAAAK,aAAA,0BAAnBL,CAAmB,CAAAM,WAAA,wBAAnBN,CAAmB,CAAAO,WAAA,wBAAnBP,CAAmB,CAAAQ,QAAA,qBAAnBR,CAAmB,WAUlB,CAAAS,4BAA4C,CAAAR,OAAA,CAAAQ,4BAAA,CAAG,CAC1DC,IAAI,CAAE,CACJC,UAAU,CAAE,EAAE,CACdC,YAAY,CAAE,EAAE,CAChBC,aAAa,CAAE,CACbC,cAAc,GAAO,CACrBC,WAAW,CAAEC,gCAAW,CAACC,WAAW,CACpCC,aAAa,CAAE,mBACjB,CACF,CAAC,CACDC,UAAU,CAAE,EACd,CAAC,CAIYC,cAAc,CAAAnB,OAAA,CAAAmB,cAAA,CAAG,EAAE,CAAGC,mBAAY,CAACC,MAAM","ignoreList":[]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","names":[],"sources":["../../src/storage/index.ts"],"sourcesContent":["export { KameleoonStorageKey, VISIT_DURATION } from './constants';\nexport { DataStorage } from './storage';\nexport { IntegrityChecker } from './integrityChecker';\nexport {\n ClientDataType,\n TrackingDataType,\n VariationDataType,\n ConsentDataType,\n DataInfoType,\n StorageDataType,\n FeatureFlagVariationsType,\n IStorage,\n IExternalStorage,\n} from './types';\n"],"mappings":"","ignoreList":[]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"integrityChecker.js","names":["IntegrityChecker","constructor","key","_defineProperty","isDataValid","data","KameleoonStorageKey","ClientData","checkClientDataIntegrity","TargetingData","checkTargetingDataIntegrity","DataInfo","checkDataInfoIntegrity","VariationData","checkVariationDataIntegrity","TrackingData","checkTrackingDataIntegrity","getDefaultData","getDefaultClientData","unsentData","nextVisitTime","scheduledVisitors","ConsentData","VisitorCode","exhaustCheck","hasFields","variations","Object","values","length","hasInvalidFields","obj","variation","value","keys","DEFAULT_CLIENT_CONFIGURATION","visitorValues","visitorData","entries","Array","isArray","KameleoonData","PageView","Conversion","CustomData","hasBadFields","some","_objectSpread","lastUpdate","Date","toString","fields","every","field","includes","exports"],"sources":["../../src/storage/integrityChecker.ts"],"sourcesContent":["import {\n ClientDataType,\n DataInfoType,\n StorageDataType,\n TrackingDataType,\n VariationDataType,\n} from './types';\nimport { DEFAULT_CLIENT_CONFIGURATION, KameleoonStorageKey } from './constants';\nimport { TargetingDataType } from 'src/targeting';\nimport { KameleoonData } from 'src/kameleoonData';\nimport { exhaustCheck } from 'src/kameleoonError';\n\ninterface IIntegrityChecker {\n isDataValid(data: StorageDataType): boolean;\n getDefaultData(data: StorageDataType): StorageDataType;\n}\n\nexport class IntegrityChecker implements IIntegrityChecker {\n private key: KameleoonStorageKey;\n\n constructor(key: KameleoonStorageKey) {\n this.key = key;\n }\n\n public isDataValid(data: StorageDataType): boolean {\n switch (this.key) {\n case KameleoonStorageKey.ClientData:\n return this.checkClientDataIntegrity(data as ClientDataType);\n case KameleoonStorageKey.TargetingData:\n return this.checkTargetingDataIntegrity(data as TargetingDataType);\n case KameleoonStorageKey.DataInfo:\n return this.checkDataInfoIntegrity(data as DataInfoType);\n case KameleoonStorageKey.VariationData:\n return this.checkVariationDataIntegrity(data as VariationDataType);\n case KameleoonStorageKey.TrackingData:\n return this.checkTrackingDataIntegrity(data as TrackingDataType);\n default:\n return true;\n }\n }\n\n public getDefaultData(): StorageDataType {\n switch (this.key) {\n case KameleoonStorageKey.ClientData:\n return this.getDefaultClientData();\n case KameleoonStorageKey.DataInfo:\n return { unsentData: {}, nextVisitTime: 0 };\n case KameleoonStorageKey.TrackingData:\n return { scheduledVisitors: {} };\n case KameleoonStorageKey.TargetingData:\n case KameleoonStorageKey.VariationData:\n case KameleoonStorageKey.ConsentData:\n return {};\n case KameleoonStorageKey.VisitorCode:\n return '';\n default:\n exhaustCheck(this.key);\n }\n }\n\n private checkTrackingDataIntegrity(data: TrackingDataType): boolean {\n return this.hasFields(data, ['scheduledVisitors']);\n }\n\n private checkDataInfoIntegrity(data: DataInfoType): boolean {\n return this.hasFields(data, ['unsentData', 'nextVisitTime']);\n }\n\n private checkVariationDataIntegrity(data: VariationDataType): boolean {\n const variations = Object.values(data);\n\n if (!variations.length) {\n return true;\n }\n\n const hasInvalidFields = (obj: Record<string, unknown>) =>\n !this.hasFields(obj, ['status']) || this.hasFields(obj, ['isSent']);\n\n for (const variation of variations) {\n for (const value of Object.values(variation)) {\n if (hasInvalidFields(value)) {\n return false;\n }\n }\n }\n\n return true;\n }\n\n private checkClientDataIntegrity(data: ClientDataType): boolean {\n return this.hasFields(data, Object.keys(DEFAULT_CLIENT_CONFIGURATION));\n }\n\n private checkTargetingDataIntegrity(data: TargetingDataType): boolean {\n const visitorValues = Object.values(data);\n\n if (!visitorValues.length) {\n return true;\n }\n\n for (const visitorData of visitorValues) {\n // --- Note ---\n // If `visitorData` is a string, it means that it's a visitor reference\n if (typeof visitorData === 'string') {\n continue;\n }\n\n const hasInvalidFields = (obj: Record<string, unknown>) =>\n !this.hasFields(obj, ['status']) ||\n this.hasFields(obj, ['sent']) ||\n this.hasFields(obj, ['timestampList']);\n\n for (const [key, data] of Object.entries(visitorData)) {\n if (Array.isArray(data)) {\n return false;\n }\n\n switch (key) {\n case KameleoonData.PageView:\n case KameleoonData.Conversion:\n case KameleoonData.CustomData: {\n const hasBadFields = Object.values(data).some((obj) =>\n hasInvalidFields(obj as Record<string, unknown>),\n );\n\n if (hasBadFields) {\n return false;\n }\n\n continue;\n }\n default: {\n if (hasInvalidFields(data as Record<string, unknown>)) {\n return false;\n }\n }\n }\n }\n }\n\n return true;\n }\n\n private getDefaultClientData(): ClientDataType {\n return {\n ...DEFAULT_CLIENT_CONFIGURATION,\n lastUpdate: new Date().toString(),\n };\n }\n\n private hasFields(obj: Record<string, unknown>, fields: string[]): boolean {\n const keys = Object.keys(obj);\n\n if (!keys.length || !fields.length) {\n return false;\n }\n\n return fields.every((field) => keys.includes(field));\n }\n}\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"storage.js","names":["DataStorage","constructor","externalStorage","storageKey","_defineProperty","integrityChecker","IntegrityChecker","result","read","ok","error","type","KameleoonException","StorageEmpty","defaultData","getDefaultData","write","data","isDataValid","Err","KameleoonError","Ok","_","StorageRead","StorageWrite","update","existingData","newData","_objectSpread","exports"],"sources":["../../src/storage/storage.ts"],"sourcesContent":["import { Err, Ok, Result } from 'ts-res';\nimport { KameleoonError, KameleoonException } from 'src/kameleoonError';\nimport { KameleoonStorageKey } from './constants';\nimport { IExternalStorage, IStorage, StorageDataType } from './types';\nimport { IntegrityChecker } from './integrityChecker';\n\n// --- Note ---\n// Named `DataStorage` to avoid collision with `Storage` from `window` API\nexport class DataStorage<T extends StorageDataType> implements IStorage<T> {\n private externalStorage: IExternalStorage;\n private storageKey: KameleoonStorageKey;\n\n constructor(\n externalStorage: IExternalStorage,\n storageKey: KameleoonStorageKey,\n ) {\n this.externalStorage = externalStorage;\n this.storageKey = storageKey;\n\n const integrityChecker = new IntegrityChecker(storageKey);\n\n const result = this.read();\n\n if (!result.ok) {\n if (result.error.type === KameleoonException.StorageEmpty) {\n const defaultData = integrityChecker.getDefaultData();\n this.write(defaultData as T);\n }\n\n return;\n }\n\n const data = result.data;\n\n if (!integrityChecker.isDataValid(data)) {\n const defaultData = integrityChecker.getDefaultData();\n this.write(defaultData as T);\n }\n }\n\n public read(): Result<T, KameleoonError> {\n try {\n const result = this.externalStorage.read(this.storageKey);\n\n if (result === null) {\n return Err(new KameleoonError(KameleoonException.StorageEmpty));\n }\n\n // --- Note ---\n // Have to cast the type here to tell TS that `result.data` type is a subset of `T` as we check it already in the default generic `StorageDataType` for `IExternalStorage`\n return Ok(result as T);\n } catch (_) {\n return Err(\n new KameleoonError(KameleoonException.StorageRead, this.storageKey),\n );\n }\n }\n\n public write(data: T): Result<void, KameleoonError> {\n try {\n this.externalStorage.write(this.storageKey, data);\n\n return Ok();\n } catch (_) {\n return Err(\n new KameleoonError(KameleoonException.StorageWrite, this.storageKey),\n );\n }\n }\n\n public update(data: Partial<T>): Result<void, KameleoonError> {\n const result = this.read();\n\n if (!result.ok) {\n if (result.error.type === KameleoonException.StorageEmpty) {\n return this.write(data as T);\n } else {\n return result;\n }\n }\n\n const existingData: StorageDataType | null = result.data;\n\n let newData: T;\n\n if (typeof existingData === 'string') {\n newData = data as T;\n } else {\n newData = { ...existingData, ...data } as T;\n }\n\n return this.write(newData);\n }\n}\n"],"mappings":"4zCAQO,KAAM,CAAAA,WAA8D,CAIzEC,WAAWA,CACTC,CAAiC,CACjCC,CAA+B,CAC/B,CAAAC,eAAA,gCAAAA,eAAA,2BACA,IAAI,CAACF,eAAe,CAAGA,CAAe,CACtC,IAAI,CAACC,UAAU,CAAGA,CAAU,MAEtB,CAAAE,CAAgB,CAAG,GAAI,CAAAC,kCAAgB,CAACH,CAAU,CAAC,CAEnDI,CAAM,CAAG,IAAI,CAACC,IAAI,CAAC,CAAC,CAE1B,GAAI,CAACD,CAAM,CAACE,EAAE,CAAE,CACd,GAAIF,CAAM,CAACG,KAAK,CAACC,IAAI,GAAKC,kCAAkB,CAACC,YAAY,CAAE,CACzD,KAAM,CAAAC,CAAW,CAAGT,CAAgB,CAACU,cAAc,CAAC,CAAC,CACrD,IAAI,CAACC,KAAK,CAACF,CAAgB,CAC7B,CAEA,MACF,CAEA,KAAM,CAAAG,CAAI,CAAGV,CAAM,CAACU,IAAI,CAExB,GAAI,CAACZ,CAAgB,CAACa,WAAW,CAACD,CAAI,CAAC,CAAE,CACvC,KAAM,CAAAH,CAAW,CAAGT,CAAgB,CAACU,cAAc,CAAC,CAAC,CACrD,IAAI,CAACC,KAAK,CAACF,CAAgB,CAC7B,CACF,CAEON,IAAIA,CAAA,CAA8B,CACvC,GAAI,CACF,KAAM,CAAAD,CAAM,CAAG,IAAI,CAACL,eAAe,CAACM,IAAI,CAAC,IAAI,CAACL,UAAU,CAAC,CAAC,MAE3C,KAAI,GAAfI,CAAe,CACV,GAAAY,UAAG,EAAC,GAAI,CAAAC,8BAAc,CAACR,kCAAkB,CAACC,YAAY,CAAC,CAAC,CAK1D,GAAAQ,SAAE,EAACd,CAAW,CACvB,CAAE,MAAOe,CAAC,CAAE,CACV,MAAO,GAAAH,UAAG,EACR,GAAI,CAAAC,8BAAc,CAACR,kCAAkB,CAACW,WAAW,CAAE,IAAI,CAACpB,UAAU,CACpE,CACF,CACF,CAEOa,KAAKA,CAACC,CAAO,CAAgC,CAClD,GAAI,CAGF,MAFA,KAAI,CAACf,eAAe,CAACc,KAAK,CAAC,IAAI,CAACb,UAAU,CAAEc,CAAI,CAAC,CAE1C,GAAAI,SAAE,EAAC,CACZ,CAAE,MAAOC,CAAC,CAAE,CACV,MAAO,GAAAH,UAAG,EACR,GAAI,CAAAC,8BAAc,CAACR,kCAAkB,CAACY,YAAY,CAAE,IAAI,CAACrB,UAAU,CACrE,CACF,CACF,CAEOsB,MAAMA,CAACR,CAAgB,CAAgC,CAC5D,KAAM,CAAAV,CAAM,CAAG,IAAI,CAACC,IAAI,CAAC,CAAC,CAE1B,GAAI,CAACD,CAAM,CAACE,EAAE,OACR,CAAAF,CAAM,CAACG,KAAK,CAACC,IAAI,GAAKC,kCAAkB,CAACC,YAAY,CAChD,IAAI,CAACG,KAAK,CAACC,CAAS,CAAC,CAErBV,CAAM,CAIjB,KAAM,CAAAmB,CAAoC,CAAGnB,CAAM,CAACU,IAAI,CAExD,GAAI,CAAAU,CAAU,CAQd,MALE,CAAAA,CAAO,CADmB,QAAQ,EAAhC,MAAO,CAAAD,CAAyB,CACxBT,CAAI,CAAAW,aAAA,CAAAA,aAAA,IAECF,CAAY,EAAKT,CAAI,EAG/B,IAAI,CAACD,KAAK,CAACW,CAAO,CAC3B,CACF,CAACE,OAAA,CAAA7B,WAAA,CAAAA,WAAA","ignoreList":[]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","names":[],"sources":["../../src/storage/types.ts"],"sourcesContent":["import { Result } from 'ts-res';\nimport { ConfigurationDataType } from 'src/clientConfiguration';\nimport { KameleoonError } from 'src/kameleoonError';\nimport { KameleoonData } from 'src/kameleoonData';\nimport { TrackingStatus } from 'src/types';\nimport { TargetingDataType } from 'src/targeting';\n\nexport type ClientDataType = {\n data: ConfigurationDataType;\n lastUpdate: string;\n};\n\nexport type DataInfoType = {\n // --- Note ---\n // Not a real next visit time, but a minimum time that guarantees to make it to the next visit\n nextVisitTime: number;\n nextDataCleanup?: number;\n unsentData: {\n [visitorCode: string]: KameleoonData[];\n };\n};\n\nexport type FeatureFlagVariationType = {\n variationId: number;\n isTargetedRule: boolean;\n status: TrackingStatus;\n};\n\nexport type FeatureFlagVariationsType = {\n [experimentId: string]: FeatureFlagVariationType;\n};\n\nexport type VariationDataType = {\n [visitorCode: string]: FeatureFlagVariationsType;\n};\n\nexport type ConsentDataType = {\n [visitorCode: string]: boolean;\n};\n\nexport type ScheduledVisitorsType = {\n [visitorCode: string]: {\n isConsentProvided: boolean;\n };\n};\n\nexport type TrackingDataType = {\n scheduledVisitors: ScheduledVisitorsType;\n};\n\n/**\n * @type `StorageDataType` - an enumeration type which represents a data stored on SDK storage\n *\n * `string` represents visitor code storage with only one string value\n * */\nexport type StorageDataType =\n | ClientDataType\n | TargetingDataType\n | TrackingDataType\n | VariationDataType\n | ConsentDataType\n | DataInfoType\n | string;\n\n/**\n * @interface an interface of External Storage which must be implemented to be used as external storage an SDK\n * */\nexport interface IExternalStorage<T = StorageDataType> {\n /**\n * @method read - reads data from the storage\n * @param {string} key - a key, which different SDK data blocks are stored under\n * @returns {T | null} representation of generic Kameleoon data type `T` or `null` if the storage was read successfully but it's empty\n * */\n read: (key: string) => T | null;\n /**\n * @method write - writes data to storage\n * @param {string} key - a key, which different SDK data blocks are stored under\n * @param {T} data - representation of generic Kameleoon data type\n * @returns {void}\n * */\n write: (key: string, data: T) => void;\n}\n\n/**\n * @interface an interface which serves as a wrapper over `IExternalStorage` for internal SDK usage\n * */\nexport interface IStorage<T> {\n read: () => Result<T, KameleoonError>;\n write: (data: T) => Result<void, KameleoonError>;\n update: (data: Partial<T>) => Result<void, KameleoonError>;\n}\n"],"mappings":"","ignoreList":[]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"applicationVersion.js","names":["ApplicationVersion","constructor","a","version","versionMatchType","_defineProperty","conditionValue","evaluate","b","targetingData","KameleoonData","Ok","result","Utilities","compareSemVer","compareVersion","operator","ok","data","Err","error","exports"],"sources":["../../../src/targeting/conditions/applicationVersion.ts"],"sourcesContent":["import { Err, Ok, Result } from 'ts-res';\nimport { KameleoonError } from 'src/kameleoonError';\nimport { Utilities } from 'src/utilities';\nimport { KameleoonData } from 'src/kameleoonData';\nimport { EvaluationDataType, VersionMatchType } from 'src/targeting/types';\nimport { ConditionDataType, ICondition } from './types';\n\nexport class ApplicationVersion implements ICondition {\n private conditionValue?: string | null;\n private versionMatchType?: VersionMatchType | null;\n\n constructor({ version, versionMatchType }: ConditionDataType) {\n this.conditionValue = version;\n this.versionMatchType = versionMatchType;\n }\n\n public evaluate({\n targetingData,\n }: EvaluationDataType): Result<boolean, KameleoonError> {\n const version = targetingData?.[KameleoonData.ApplicationVersion]?.version;\n\n if (!version || !this.conditionValue || !this.versionMatchType) {\n return Ok(false);\n }\n\n const result = Utilities.compareSemVer({\n version,\n compareVersion: this.conditionValue,\n operator: this.versionMatchType,\n });\n\n if (!result.ok) {\n return Err(result.error);\n }\n\n return Ok(result.data);\n }\n}\n"],"mappings":"wtBAOO,KAAM,CAAAA,kBAAyC,CAIpDC,WAAWA,CAAAC,CAAA,CAAmD,IAAlD,CAAEC,OAAO,CAAPA,CAAO,CAAEC,gBAAgB,CAAhBA,CAAoC,CAAC,CAAAF,CAAA,CAAAG,eAAA,+BAAAA,eAAA,iCAC1D,IAAI,CAACC,cAAc,CAAGH,CAAO,CAC7B,IAAI,CAACC,gBAAgB,CAAGA,CAC1B,CAEOG,QAAQA,CAAAL,CAAA,CAEyC,KAAAM,CAAA,IAFxC,CACdC,aAAa,CAAbA,CACkB,CAAC,CAAAP,CAAA,CACnB,KAAM,CAAAC,CAAO,QAAGM,CAAa,WAAbA,CAAa,UAAAD,CAAA,CAAbC,CAAa,CAAGC,4BAAa,CAACV,kBAAkB,CAAC,YAAAQ,CAAA,QAAjDA,CAAA,CAAmDL,OAAO,CAE1E,GAAI,CAACA,CAAO,EAAI,CAAC,IAAI,CAACG,cAAc,EAAI,CAAC,IAAI,CAACF,gBAAgB,CAC5D,MAAO,GAAAO,SAAE,IAAM,CAAC,CAGlB,KAAM,CAAAC,CAAM,CAAGC,oBAAS,CAACC,aAAa,CAAC,CACrCX,OAAO,CAAPA,CAAO,CACPY,cAAc,CAAE,IAAI,CAACT,cAAc,CACnCU,QAAQ,CAAE,IAAI,CAACZ,gBACjB,CAAC,CAAC,CAAC,MAEE,CAAAQ,CAAM,CAACK,EAAE,CAIP,GAAAN,SAAE,EAACC,CAAM,CAACM,IAAI,CAAC,CAHb,GAAAC,UAAG,EAACP,CAAM,CAACQ,KAAK,CAI3B,CACF,CAACC,OAAA,CAAArB,kBAAA,CAAAA,kBAAA","ignoreList":[]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"browser.js","names":["Browser","constructor","a","browser","version","versionMatchType","_defineProperty","evaluate","targetingData","browserData","KameleoonData","result","checkCondition","error","Err","Ok","parsedVersion","parseFloat","isNaN","KameleoonError","KameleoonException","VersionParse","VersionMatchType","EQUAL","GREATER","LOWER","exhaustCheck","exports"],"sources":["../../../src/targeting/conditions/browser.ts"],"sourcesContent":["import { Err, Ok, Result } from 'ts-res';\nimport { KameleoonData, BrowserType, BrowserDataType } from 'src/kameleoonData';\nimport {\n exhaustCheck,\n KameleoonError,\n KameleoonException,\n} from 'src/kameleoonError';\nimport { EvaluationDataType, VersionMatchType } from 'src/targeting/types';\nimport { ConditionDataType, ICondition } from './types';\n\nexport class Browser implements ICondition {\n private browser?: BrowserType | null;\n private version?: string | null;\n private versionMatchType?: VersionMatchType | null;\n private error?: KameleoonError;\n\n constructor({ browser, version, versionMatchType }: ConditionDataType) {\n this.browser = browser;\n this.version = version;\n this.versionMatchType = versionMatchType;\n }\n\n public evaluate({\n targetingData,\n }: EvaluationDataType): Result<boolean, KameleoonError> {\n const browserData = targetingData?.[KameleoonData.Browser];\n\n if (browserData) {\n const result = this.checkCondition(browserData);\n\n if (this.error) {\n return Err(this.error);\n }\n\n return Ok(result);\n }\n\n return Ok(false);\n }\n\n private checkCondition(browserData: BrowserDataType): boolean {\n const { browser, version } = browserData;\n\n if (typeof this.browser !== 'string') {\n return false;\n }\n\n if (!this.version) {\n return browser === this.browser;\n }\n\n if (!this.versionMatchType || typeof version !== 'number') {\n return false;\n }\n\n const parsedVersion = parseFloat(this.version);\n\n if (isNaN(parsedVersion)) {\n this.error = new KameleoonError(\n KameleoonException.VersionParse,\n this.version,\n );\n }\n\n switch (this.versionMatchType) {\n case VersionMatchType.EQUAL:\n return browser === this.browser && version === parsedVersion;\n case VersionMatchType.GREATER:\n return browser === this.browser && version > parsedVersion;\n case VersionMatchType.LOWER:\n return browser === this.browser && version < parsedVersion;\n default:\n exhaustCheck(this.versionMatchType);\n }\n }\n}\n"],"mappings":"kvBAUO,KAAM,CAAAA,OAA8B,CAMzCC,WAAWA,CAAAC,CAAA,CAA4D,IAA3D,CAAEC,OAAO,CAAPA,CAAO,CAAEC,OAAO,CAAPA,CAAO,CAAEC,gBAAgB,CAAhBA,CAAoC,CAAC,CAAAH,CAAA,CAAAI,eAAA,wBAAAA,eAAA,wBAAAA,eAAA,iCAAAA,eAAA,sBACnE,IAAI,CAACH,OAAO,CAAGA,CAAO,CACtB,IAAI,CAACC,OAAO,CAAGA,CAAO,CACtB,IAAI,CAACC,gBAAgB,CAAGA,CAC1B,CAEOE,QAAQA,CAAAL,CAAA,CAEyC,IAFxC,CACdM,aAAa,CAAbA,CACkB,CAAC,CAAAN,CAAA,CACnB,KAAM,CAAAO,CAAW,QAAGD,CAAa,WAAbA,CAAa,QAAbA,CAAa,CAAGE,4BAAa,CAACV,OAAO,CAAC,CAE1D,GAAIS,CAAW,CAAE,CACf,KAAM,CAAAE,CAAM,CAAG,IAAI,CAACC,cAAc,CAACH,CAAW,CAAC,CAAC,MAE5C,KAAI,CAACI,KAAK,CACL,GAAAC,UAAG,EAAC,IAAI,CAACD,KAAK,CAAC,CAGjB,GAAAE,SAAE,EAACJ,CAAM,CAClB,CAEA,MAAO,GAAAI,SAAE,IAAM,CACjB,CAEQH,cAAcA,CAACH,CAA4B,CAAW,CAC5D,KAAM,CAAEN,OAAO,CAAPA,CAAO,CAAEC,OAAO,CAAPA,CAAQ,CAAC,CAAGK,CAAW,CAExC,GAA4B,QAAQ,EAAhC,MAAO,KAAI,CAACN,OAAoB,CAClC,SAGF,GAAI,CAAC,IAAI,CAACC,OAAO,CACf,MAAO,CAAAD,CAAO,GAAK,IAAI,CAACA,OAAO,CAGjC,GAAI,CAAC,IAAI,CAACE,gBAAgB,EAAuB,QAAQ,EAA3B,MAAO,CAAAD,CAAoB,CACvD,SAGF,KAAM,CAAAY,CAAa,CAAGC,UAAU,CAAC,IAAI,CAACb,OAAO,CAAC,CAS9C,OAPIc,KAAK,CAACF,CAAa,CAAC,GACtB,IAAI,CAACH,KAAK,CAAG,GAAI,CAAAM,8BAAc,CAC7BC,kCAAkB,CAACC,YAAY,CAC/B,IAAI,CAACjB,OACP,CAAC,EAGK,IAAI,CAACC,gBAAgB,EAC3B,IAAK,CAAAiB,uBAAgB,CAACC,KAAK,CACzB,MAAO,CAAApB,CAAO,GAAK,IAAI,CAACA,OAAO,EAAIC,CAAO,GAAKY,CAAa,CAC9D,IAAK,CAAAM,uBAAgB,CAACE,OAAO,CAC3B,MAAO,CAAArB,CAAO,GAAK,IAAI,CAACA,OAAO,EAAIC,CAAO,CAAGY,CAAa,CAC5D,IAAK,CAAAM,uBAAgB,CAACG,KAAK,CACzB,MAAO,CAAAtB,CAAO,GAAK,IAAI,CAACA,OAAO,EAAIC,CAAO,CAAGY,CAAa,CAC5D,QACE,GAAAU,4BAAY,EAAC,IAAI,CAACrB,gBAAgB,CACtC,CACF,CACF,CAACsB,OAAA,CAAA3B,OAAA,CAAAA,OAAA","ignoreList":[]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"conditionFactory.js","names":["ConditionFactory","createCondition","data","targetingType","TargetingType","CUSTOM_DATUM","Ok","CustomData","EXCLUSIVE_EXPERIMENT","EXCLUSIVE_FEATURE_FLAG","ExclusiveCampaign","TARGET_FEATURE_FLAG","TargetFeatureFlag","DEVICE_TYPE","Device","BROWSER","Browser","PAGE_URL","PageUrl","PAGE_TITLE","PageTitle","CONVERSIONS","Conversion","VISITOR_CODE","VisitorCode","SDK_LANGUAGE","SdkLanguage","COOKIE","Cookie","OPERATING_SYSTEM","OperatingSystem","GEOLOCATION","GeolocationCondition","SEGMENT","Segment","APPLICATION_VERSION","ApplicationVersion","PREVIOUS_PAGE","PreviousPage","NUMBER_OF_VISITED_PAGES","VisitedPages","LAST_VISIT","LastVisit","FIRST_VISIT","FirstVisit","SAME_DAY_VISITS","SameDayVisits","VISITS","Visits","NEW_VISITORS","NewVisitor","HEAT_SLICE","ConversionLikelihood","Err","KameleoonError","KameleoonException","TargetingCondition","exports"],"sources":["../../../src/targeting/conditions/conditionFactory.ts"],"sourcesContent":["import { Err, Ok, Result } from 'ts-res';\nimport { KameleoonError, KameleoonException } from 'src/kameleoonError';\nimport { TargetingType } from 'src/targeting/types';\nimport { Browser } from './browser';\nimport { Conversion } from './conversion';\nimport { CustomData } from './customData';\nimport { Device } from './device';\nimport { ExclusiveCampaign } from './exclusiveCampaign';\nimport { PageTitle } from './pageTitle';\nimport { PageUrl } from './pageUrl';\nimport { SdkLanguage } from './sdkLanguage';\nimport { ConditionDataType, ConditionType } from './types';\nimport { VisitorCode } from './visitorCode';\nimport { Cookie } from './cookie';\nimport { OperatingSystem } from './operatingSystem';\nimport { GeolocationCondition } from './geolocation';\nimport { Segment } from './segment';\nimport { TargetFeatureFlag } from './targetFeatureFlag';\nimport { PreviousPage } from './previousPage';\nimport { VisitedPages } from './visitedPages';\nimport { FirstVisit } from './firstVisit';\nimport { LastVisit } from './lastVisit';\nimport { SameDayVisits } from './sameDayVisits';\nimport { Visits } from './visits';\nimport { NewVisitor } from './newVisitor';\nimport { ApplicationVersion } from './applicationVersion';\nimport { ConversionLikelihood } from './conversionLikelihood';\n\nexport class ConditionFactory {\n static createCondition(\n data: ConditionDataType,\n ): Result<ConditionType, KameleoonError> {\n const { targetingType } = data;\n\n switch (targetingType) {\n case TargetingType.CUSTOM_DATUM:\n return Ok(new CustomData(data));\n case TargetingType.EXCLUSIVE_EXPERIMENT:\n case TargetingType.EXCLUSIVE_FEATURE_FLAG:\n return Ok(new ExclusiveCampaign());\n case TargetingType.TARGET_FEATURE_FLAG:\n return Ok(new TargetFeatureFlag(data));\n case TargetingType.DEVICE_TYPE:\n return Ok(new Device(data));\n case TargetingType.BROWSER:\n return Ok(new Browser(data));\n case TargetingType.PAGE_URL:\n return Ok(new PageUrl(data));\n case TargetingType.PAGE_TITLE:\n return Ok(new PageTitle(data));\n case TargetingType.CONVERSIONS:\n return Ok(new Conversion(data));\n case TargetingType.VISITOR_CODE:\n return Ok(new VisitorCode(data));\n case TargetingType.SDK_LANGUAGE:\n return Ok(new SdkLanguage(data));\n case TargetingType.COOKIE:\n return Ok(new Cookie(data));\n case TargetingType.OPERATING_SYSTEM:\n return Ok(new OperatingSystem(data));\n case TargetingType.GEOLOCATION:\n return Ok(new GeolocationCondition(data));\n case TargetingType.SEGMENT:\n return Ok(new Segment(data));\n case TargetingType.APPLICATION_VERSION:\n return Ok(new ApplicationVersion(data));\n case TargetingType.PREVIOUS_PAGE:\n return Ok(new PreviousPage(data));\n case TargetingType.NUMBER_OF_VISITED_PAGES:\n return Ok(new VisitedPages(data));\n case TargetingType.LAST_VISIT:\n return Ok(new LastVisit(data));\n case TargetingType.FIRST_VISIT:\n return Ok(new FirstVisit(data));\n case TargetingType.SAME_DAY_VISITS:\n return Ok(new SameDayVisits(data));\n case TargetingType.VISITS:\n return Ok(new Visits(data));\n case TargetingType.NEW_VISITORS:\n return Ok(new NewVisitor(data));\n case TargetingType.HEAT_SLICE:\n return Ok(new ConversionLikelihood(data));\n default:\n return Err(\n new KameleoonError(\n KameleoonException.TargetingCondition,\n targetingType,\n ),\n );\n }\n }\n}\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"conversion.js","names":["Conversion","constructor","a","goalId","_defineProperty","conditionValue","evaluate","targetingData","conversionData","KameleoonData","Ok","Object","keys","length","conversions","values","some","conversion","exports"],"sources":["../../../src/targeting/conditions/conversion.ts"],"sourcesContent":["import { Ok, Result } from 'ts-res';\nimport { KameleoonData } from 'src/kameleoonData';\nimport { KameleoonError } from 'src/kameleoonError';\nimport { EvaluationDataType } from 'src/targeting/types';\nimport { ConditionDataType, ICondition } from './types';\n\nexport class Conversion implements ICondition {\n private conditionValue?: number | null;\n\n constructor({ goalId }: ConditionDataType) {\n this.conditionValue = goalId;\n }\n\n public evaluate({\n targetingData,\n }: EvaluationDataType): Result<boolean, KameleoonError> {\n const conversionData = targetingData?.[KameleoonData.Conversion];\n\n if (!this.conditionValue) {\n return Ok(false);\n }\n\n if (conversionData) {\n if (Object.keys(conversionData).length && this.conditionValue === -1) {\n return Ok(true);\n }\n\n const conversions = Object.values(conversionData);\n\n return Ok(\n conversions.some((conversion) => {\n if (!conversion) {\n return false;\n }\n\n return conversion.goalId === this.conditionValue;\n }),\n );\n }\n\n return Ok(false);\n }\n}\n"],"mappings":"0qBAMO,KAAM,CAAAA,UAAiC,CAG5CC,WAAWA,CAAAC,CAAA,CAAgC,IAA/B,CAAEC,MAAM,CAANA,CAA0B,CAAC,CAAAD,CAAA,CAAAE,eAAA,+BACvC,IAAI,CAACC,cAAc,CAAGF,CACxB,CAEOG,QAAQA,CAAAJ,CAAA,CAEyC,IAFxC,CACdK,aAAa,CAAbA,CACkB,CAAC,CAAAL,CAAA,CACnB,KAAM,CAAAM,CAAc,QAAGD,CAAa,WAAbA,CAAa,QAAbA,CAAa,CAAGE,4BAAa,CAACT,UAAU,CAAC,CAEhE,GAAI,CAAC,IAAI,CAACK,cAAc,CACtB,MAAO,GAAAK,SAAE,IAAM,CAAC,CAGlB,GAAIF,CAAc,CAAE,CAClB,GAAIG,MAAM,CAACC,IAAI,CAACJ,CAAc,CAAC,CAACK,MAAM,EAA4B,CAAC,CAAC,GAA1B,IAAI,CAACR,cAAqB,CAClE,MAAO,GAAAK,SAAE,IAAK,CAAC,CAGjB,KAAM,CAAAI,CAAW,CAAGH,MAAM,CAACI,MAAM,CAACP,CAAc,CAAC,CAEjD,MAAO,GAAAE,SAAE,EACPI,CAAW,CAACE,IAAI,CAAEC,CAAU,IACrBA,CAAU,EAIRA,CAAU,CAACd,MAAM,GAAK,IAAI,CAACE,cACnC,CACH,CACF,CAEA,MAAO,GAAAK,SAAE,IAAM,CACjB,CACF,CAACQ,OAAA,CAAAlB,UAAA,CAAAA,UAAA","ignoreList":[]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"conversionLikelihood.js","names":["ConversionLikelihood","constructor","a","lowerBound","upperBound","keyMomentId","goalId","_defineProperty","evaluate","b","targetingData","kcsData","KameleoonData","KameleoonConversionScore","Ok","score","kcs","toString","exports"],"sources":["../../../src/targeting/conditions/conversionLikelihood.ts"],"sourcesContent":["import { Ok, Result } from 'ts-res';\nimport { KameleoonData } from 'src/kameleoonData';\nimport { KameleoonError } from 'src/kameleoonError';\nimport { EvaluationDataType } from 'src/targeting/types';\nimport { ConditionDataType, ICondition } from './types';\n\nexport class ConversionLikelihood implements ICondition {\n private lowerBound?: number;\n private upperBound?: number;\n private keyMomentId?: number;\n private goalId?: number | null;\n\n constructor({\n lowerBound,\n upperBound,\n keyMomentId,\n goalId,\n }: ConditionDataType) {\n this.lowerBound = lowerBound;\n this.upperBound = upperBound;\n this.keyMomentId = keyMomentId;\n this.goalId = goalId;\n }\n\n public evaluate({\n targetingData,\n }: EvaluationDataType): Result<boolean, KameleoonError> {\n const kcsData = targetingData?.[KameleoonData.KameleoonConversionScore];\n\n if (\n typeof this.keyMomentId !== 'number' ||\n typeof this.goalId !== 'number' ||\n typeof this.lowerBound !== 'number' ||\n typeof this.upperBound !== 'number' ||\n !kcsData\n ) {\n return Ok(false);\n }\n\n const score: number | undefined =\n kcsData.kcs[this.keyMomentId.toString()]?.[this.goalId.toString()];\n\n if (typeof score !== 'number') {\n return Ok(false);\n }\n\n return Ok(score >= this.lowerBound && score <= this.upperBound);\n }\n}\n"],"mappings":"orBAMO,KAAM,CAAAA,oBAA2C,CAMtDC,WAAWA,CAAAC,CAAA,CAKW,IALV,CACVC,UAAU,CAAVA,CAAU,CACVC,UAAU,CAAVA,CAAU,CACVC,WAAW,CAAXA,CAAW,CACXC,MAAM,CAANA,CACiB,CAAC,CAAAJ,CAAA,CAAAK,eAAA,2BAAAA,eAAA,2BAAAA,eAAA,4BAAAA,eAAA,uBAClB,IAAI,CAACJ,UAAU,CAAGA,CAAU,CAC5B,IAAI,CAACC,UAAU,CAAGA,CAAU,CAC5B,IAAI,CAACC,WAAW,CAAGA,CAAW,CAC9B,IAAI,CAACC,MAAM,CAAGA,CAChB,CAEOE,QAAQA,CAAAN,CAAA,CAEyC,KAAAO,CAAA,IAFxC,CACdC,aAAa,CAAbA,CACkB,CAAC,CAAAR,CAAA,CACnB,KAAM,CAAAS,CAAO,QAAGD,CAAa,WAAbA,CAAa,QAAbA,CAAa,CAAGE,4BAAa,CAACC,wBAAwB,CAAC,CAEvE,GAC8B,QAAQ,EAApC,MAAO,KAAI,CAACR,WAAwB,EACb,QAAQ,EAA/B,MAAO,KAAI,CAACC,MAAmB,EACJ,QAAQ,EAAnC,MAAO,KAAI,CAACH,UAAuB,EACR,QAAQ,EAAnC,MAAO,KAAI,CAACC,UAAuB,EACnC,CAACO,CAAO,CAER,MAAO,GAAAG,SAAE,IAAM,CAAC,CAGlB,KAAM,CAAAC,CAAyB,SAAAN,CAAA,CAC7BE,CAAO,CAACK,GAAG,CAAC,IAAI,CAACX,WAAW,CAACY,QAAQ,CAAC,CAAC,CAAC,YAAAR,CAAA,QAAxCA,CAAA,CAA2C,IAAI,CAACH,MAAM,CAACW,QAAQ,CAAC,CAAC,CAAC,CAAC,MAEhD,QAAQ,EAAzB,MAAO,CAAAF,CAAkB,CAItB,GAAAD,SAAE,EAACC,CAAK,EAAI,IAAI,CAACZ,UAAU,EAAIY,CAAK,EAAI,IAAI,CAACX,UAAU,CAAC,CAHtD,GAAAU,SAAE,IAAM,CAInB,CACF,CAACI,OAAA,CAAAlB,oBAAA,CAAAA,oBAAA","ignoreList":[]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"cookie.js","names":["Cookie","constructor","a","name","value","nameMatchType","valueMatchType","_defineProperty","cookie","key","keyMatchType","evaluate","b","targetingData","isEmptyCookie","isValidMatchType","Ok","extractedCookie","extractCookie","cookieData","KameleoonData","some","pair","checkCondition","document","CookieData","fromString","data","dataCookie","cookieMatchType","NameMatchType","OPTIONAL","conditionCookie","isOptionalCookie","compareCookieValue","compareKey","compareValue","keyMatch","EXACT","CONTAINS","includes","REGULAR_EXPRESSION","Parser","parseRegExp","test","exhaustCheck","ValueMatchType","exports"],"sources":["../../../src/targeting/conditions/cookie.ts"],"sourcesContent":["import { Ok, Result } from 'ts-res';\nimport { Cookie as CookieData, KameleoonData } from 'src/kameleoonData';\nimport { exhaustCheck, KameleoonError } from 'src/kameleoonError';\nimport {\n EvaluationDataType,\n NameMatchType,\n ValueMatchType,\n} from 'src/targeting/types';\nimport { CookieType, OptionalCookieType } from 'src/kameleoonData/types';\nimport { Parser } from 'src/utilities';\nimport { ConditionDataType, ICondition } from './types';\n\nexport class Cookie implements ICondition {\n private cookie: Partial<CookieType>;\n private keyMatchType?: NameMatchType | null;\n private valueMatchType?: ValueMatchType | null;\n\n constructor({\n name,\n value,\n nameMatchType,\n valueMatchType,\n }: ConditionDataType) {\n this.cookie = {\n key: name ?? undefined,\n value: value ?? undefined,\n };\n this.keyMatchType = nameMatchType;\n this.valueMatchType = valueMatchType;\n }\n\n public evaluate({\n targetingData,\n }: EvaluationDataType): Result<boolean, KameleoonError> {\n const isEmptyCookie = !this.cookie.key && !this.cookie.value;\n const isValidMatchType =\n Boolean(this.valueMatchType) && Boolean(this.keyMatchType);\n\n if (isEmptyCookie || !isValidMatchType) {\n return Ok(false);\n }\n\n const extractedCookie = this.extractCookie();\n const cookieData = targetingData?.[KameleoonData.Cookie]?.cookie || [];\n\n return Ok(\n extractedCookie.some((pair) => this.checkCondition(pair)) ||\n cookieData.some((pair) => this.checkCondition(pair)),\n );\n }\n\n private extractCookie(): CookieType[] {\n if (typeof document !== 'undefined' && document.cookie) {\n return CookieData.fromString(document.cookie).data.cookie;\n }\n\n return [];\n }\n\n private checkCondition(dataCookie: CookieType): boolean {\n const cookieMatchType = this.keyMatchType!;\n const { key, value } = dataCookie;\n\n if (cookieMatchType === NameMatchType.OPTIONAL) {\n const conditionCookie = this.cookie;\n\n return this.isOptionalCookie(conditionCookie)\n ? this.compareCookieValue(value, conditionCookie.value)\n : false;\n }\n\n const { key: compareKey, value: compareValue } = this.cookie as CookieType;\n\n let keyMatch: boolean;\n\n switch (cookieMatchType) {\n case NameMatchType.EXACT:\n keyMatch = key === compareKey;\n break;\n case NameMatchType.CONTAINS:\n keyMatch = key.includes(compareKey);\n break;\n case NameMatchType.REGULAR_EXPRESSION:\n keyMatch = Parser.parseRegExp(compareKey).test(key);\n break;\n default:\n exhaustCheck(cookieMatchType);\n }\n\n return keyMatch && this.compareCookieValue(value, compareValue);\n }\n\n private compareCookieValue(value: string, compareValue: string): boolean {\n const valueMatchType = this.valueMatchType!;\n\n switch (valueMatchType) {\n case ValueMatchType.EXACT:\n return value === compareValue;\n case ValueMatchType.CONTAINS:\n return value.includes(compareValue);\n case ValueMatchType.REGULAR_EXPRESSION:\n return Parser.parseRegExp(compareValue).test(value);\n default:\n return false;\n }\n }\n\n private isOptionalCookie(\n cookie: Partial<CookieType>,\n ): cookie is OptionalCookieType {\n const { value } = cookie;\n\n return typeof value !== 'undefined';\n }\n}\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"customData.js","names":["CustomData","constructor","a","customDataIndex","valueMatchType","value","range","_defineProperty","matchType","conditionValue","evaluate","targetingData","c","customData","KameleoonData","customDataValue","result","checkCondition","error","Err","Ok","ValueMatchType","UNDEFINED","TRUE","FALSE","RANGE","AMONG_VALUES","parseArray","ok","resultData","Set","data","Array","isArray","some","has","includes","parseRange","lowerBound","upperBound","isInRange","CONTAINS","EXACT","REGULAR_EXPRESSION","Parser","parseRegExp","test","LOWER","EQUAL","GREATER","toLowerCase","JSON","parse","err","KameleoonError","KameleoonException","AmongValuesCheck","array","length","RangeCheck","exports"],"sources":["../../../src/targeting/conditions/customData.ts"],"sourcesContent":["import { Err, Ok, Result } from 'ts-res';\nimport { CustomDataType, KameleoonData } from 'src/kameleoonData';\nimport { KameleoonError, KameleoonException } from 'src/kameleoonError';\nimport { EvaluationDataType, ValueMatchType } from 'src/targeting';\nimport { Parser } from 'src/utilities';\nimport { ConditionDataType, ICondition } from './types';\n\nexport class CustomData implements ICondition {\n private customDataIndex: number | null;\n private matchType?: ValueMatchType | null;\n private conditionValue?: string | null;\n private error?: KameleoonError;\n private range?: number[] | null;\n\n constructor({\n customDataIndex,\n valueMatchType,\n value,\n range,\n }: ConditionDataType) {\n this.customDataIndex = customDataIndex ? Number(customDataIndex) : null;\n this.matchType = valueMatchType;\n this.conditionValue = value;\n this.range = range;\n }\n\n public evaluate({\n targetingData,\n }: EvaluationDataType): Result<boolean, KameleoonError> {\n if (typeof this.customDataIndex === 'number') {\n const customData =\n targetingData?.[KameleoonData.CustomData]?.[this.customDataIndex];\n\n if (customData) {\n const { value: customDataValue } = customData;\n const result = this.checkCondition(customDataValue);\n\n if (this.error) {\n return Err(this.error);\n }\n\n return Ok(result);\n }\n }\n\n return Ok(this.matchType === ValueMatchType.UNDEFINED);\n }\n\n private checkCondition(\n customDataValue: CustomDataType['value'] | string,\n ): boolean {\n if (\n typeof this.conditionValue !== 'string' &&\n this.matchType !== ValueMatchType.TRUE &&\n this.matchType !== ValueMatchType.FALSE &&\n this.matchType !== ValueMatchType.RANGE\n ) {\n return false;\n }\n\n // --- Note ---\n // `TRUE`/`FALSE`/`RANGE` do not use condition value\n // so we can safely assume that `this.conditionValue` is a string at this point\n // for other match types\n const conditionValue = this.conditionValue as string;\n\n // --- Note ---\n // `AMONG_VALUES` and `RANGE` are checked separately to avoid recursion overhead\n // for `JSON.parse` inside `this.parseArray`\n if (this.matchType === ValueMatchType.AMONG_VALUES) {\n const result = this.parseArray(conditionValue);\n\n if (!result.ok) {\n this.error = result.error;\n\n return false;\n }\n\n const resultData = new Set(result.data);\n\n return Array.isArray(customDataValue)\n ? customDataValue.some((value) => resultData.has(value))\n : result.data.includes(customDataValue);\n }\n\n if (this.matchType === ValueMatchType.RANGE) {\n const result = this.parseRange(this.range);\n\n if (!result.ok) {\n this.error = result.error;\n\n return false;\n }\n\n const [lowerBound, upperBound] = result.data;\n\n const isInRange = (value: number) =>\n value >= lowerBound && value <= upperBound;\n\n return Array.isArray(customDataValue)\n ? customDataValue.some((value) => isInRange(Number(value)))\n : isInRange(Number(customDataValue));\n }\n\n if (Array.isArray(customDataValue)) {\n return customDataValue.some((value) => this.checkCondition(value));\n }\n\n switch (this.matchType) {\n case ValueMatchType.CONTAINS:\n return customDataValue.includes(conditionValue);\n case ValueMatchType.EXACT:\n return customDataValue === this.conditionValue;\n case ValueMatchType.REGULAR_EXPRESSION:\n return Parser.parseRegExp(conditionValue).test(customDataValue);\n case ValueMatchType.LOWER:\n return Number(customDataValue) < Number(this.conditionValue);\n case ValueMatchType.EQUAL:\n return Number(customDataValue) === Number(this.conditionValue);\n case ValueMatchType.GREATER:\n return Number(customDataValue) > Number(this.conditionValue);\n case ValueMatchType.TRUE:\n return customDataValue.toLowerCase() === 'true';\n case ValueMatchType.FALSE:\n return customDataValue.toLowerCase() === 'false';\n default:\n return false;\n }\n }\n\n private parseArray(value: string): Result<string[], KameleoonError> {\n try {\n const result = JSON.parse(value);\n\n if (Array.isArray(result)) {\n return Ok(result);\n }\n } catch (err) {\n return Err(\n new KameleoonError(KameleoonException.AmongValuesCheck, err, value),\n );\n }\n\n return Ok([]);\n }\n\n private parseRange(\n array?: number[] | null,\n ): Result<[number, number], KameleoonError> {\n if (!array || array.length !== 2) {\n return Err(new KameleoonError(KameleoonException.RangeCheck, array));\n }\n\n return Ok(array as [number, number]);\n }\n}\n"],"mappings":"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","ignoreList":[]}
|