@kameleoon/javascript-sdk-core 4.4.8 → 5.0.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 +32 -0
- package/dist/cacheManager/cacheManager.js +1 -1
- package/dist/cacheManager/cacheManager.js.map +1 -1
- package/dist/cacheManager/index.js.map +1 -1
- package/dist/cacheManager/types.js.map +1 -1
- package/dist/clientConfiguration/clientConfiguration.d.ts +2 -6
- package/dist/clientConfiguration/clientConfiguration.js +1 -1
- package/dist/clientConfiguration/clientConfiguration.js.map +1 -1
- package/dist/clientConfiguration/constants.js.map +1 -1
- package/dist/clientConfiguration/index.js.map +1 -1
- package/dist/clientConfiguration/types.d.ts +2 -5
- package/dist/clientConfiguration/types.js +1 -1
- package/dist/clientConfiguration/types.js.map +1 -1
- package/dist/clientSettings/clientSettings.d.ts +2 -1
- package/dist/clientSettings/clientSettings.js +1 -1
- package/dist/clientSettings/clientSettings.js.map +1 -1
- package/dist/clientSettings/index.js.map +1 -1
- package/dist/clientSettings/types.d.ts +1 -0
- package/dist/clientSettings/types.js.map +1 -1
- package/dist/constants.d.ts +0 -1
- package/dist/constants.js +1 -1
- package/dist/constants.js.map +1 -1
- package/dist/eventManager/eventManager.js +1 -1
- package/dist/eventManager/eventManager.js.map +1 -1
- package/dist/eventManager/index.js.map +1 -1
- package/dist/eventManager/types.js.map +1 -1
- package/dist/eventSource/constants.js.map +1 -1
- package/dist/eventSource/eventSource.js +1 -1
- package/dist/eventSource/eventSource.js.map +1 -1
- package/dist/eventSource/index.js.map +1 -1
- package/dist/eventSource/types.js.map +1 -1
- package/dist/hasher/hasher.js.map +1 -1
- package/dist/hasher/index.js.map +1 -1
- package/dist/hasher/types.js.map +1 -1
- package/dist/index.d.ts +4 -4
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/kameleoonClient.d.ts +6 -13
- package/dist/kameleoonClient.js +1 -1
- package/dist/kameleoonClient.js.map +1 -1
- package/dist/kameleoonClientInterface.d.ts +18 -16
- package/dist/kameleoonClientInterface.js.map +1 -1
- package/dist/kameleoonData/applicationVersion.d.ts +2 -3
- package/dist/kameleoonData/applicationVersion.js +1 -1
- package/dist/kameleoonData/applicationVersion.js.map +1 -1
- package/dist/kameleoonData/browser.d.ts +9 -3
- package/dist/kameleoonData/browser.js +1 -1
- package/dist/kameleoonData/browser.js.map +1 -1
- package/dist/kameleoonData/conversion.d.ts +12 -3
- package/dist/kameleoonData/conversion.js +1 -1
- package/dist/kameleoonData/conversion.js.map +1 -1
- package/dist/kameleoonData/cookie.d.ts +2 -3
- package/dist/kameleoonData/cookie.js +1 -1
- package/dist/kameleoonData/cookie.js.map +1 -1
- package/dist/kameleoonData/customData.d.ts +11 -3
- package/dist/kameleoonData/customData.js +1 -1
- package/dist/kameleoonData/customData.js.map +1 -1
- package/dist/kameleoonData/dataManager.d.ts +34 -23
- package/dist/kameleoonData/dataManager.js +1 -1
- package/dist/kameleoonData/dataManager.js.map +1 -1
- package/dist/kameleoonData/dataProcessor.d.ts +22 -24
- package/dist/kameleoonData/dataProcessor.js +1 -1
- package/dist/kameleoonData/dataProcessor.js.map +1 -1
- package/dist/kameleoonData/device.d.ts +9 -3
- package/dist/kameleoonData/device.js +1 -1
- package/dist/kameleoonData/device.js.map +1 -1
- package/dist/kameleoonData/geolocation.d.ts +9 -3
- package/dist/kameleoonData/geolocation.js +1 -1
- package/dist/kameleoonData/geolocation.js.map +1 -1
- package/dist/kameleoonData/helpers.js.map +1 -1
- package/dist/kameleoonData/index.d.ts +2 -1
- package/dist/kameleoonData/index.js +1 -1
- package/dist/kameleoonData/index.js.map +1 -1
- package/dist/kameleoonData/kameleoonConversionScore.d.ts +2 -1
- package/dist/kameleoonData/kameleoonConversionScore.js +1 -1
- package/dist/kameleoonData/kameleoonConversionScore.js.map +1 -1
- package/dist/kameleoonData/operatingSystem.d.ts +9 -3
- package/dist/kameleoonData/operatingSystem.js +1 -1
- package/dist/kameleoonData/operatingSystem.js.map +1 -1
- package/dist/kameleoonData/pageView.d.ts +12 -8
- package/dist/kameleoonData/pageView.js +1 -1
- package/dist/kameleoonData/pageView.js.map +1 -1
- package/dist/kameleoonData/types.d.ts +97 -31
- package/dist/kameleoonData/types.js +1 -1
- package/dist/kameleoonData/types.js.map +1 -1
- package/dist/kameleoonData/uniqueIdentifier.d.ts +19 -0
- package/dist/kameleoonData/uniqueIdentifier.js +2 -0
- package/dist/kameleoonData/uniqueIdentifier.js.map +1 -0
- package/dist/kameleoonData/userAgent.d.ts +2 -3
- package/dist/kameleoonData/userAgent.js +1 -1
- package/dist/kameleoonData/userAgent.js.map +1 -1
- package/dist/kameleoonData/visitProcessor.d.ts +3 -4
- package/dist/kameleoonData/visitProcessor.js +1 -1
- package/dist/kameleoonData/visitProcessor.js.map +1 -1
- package/dist/kameleoonData/visitsData.d.ts +2 -0
- package/dist/kameleoonData/visitsData.js +1 -1
- package/dist/kameleoonData/visitsData.js.map +1 -1
- package/dist/kameleoonError/constants.js +1 -1
- package/dist/kameleoonError/constants.js.map +1 -1
- package/dist/kameleoonError/helpers.js +1 -1
- package/dist/kameleoonError/helpers.js.map +1 -1
- package/dist/kameleoonError/index.js.map +1 -1
- package/dist/kameleoonError/kameleoonError.js +1 -1
- package/dist/kameleoonError/kameleoonError.js.map +1 -1
- package/dist/kameleoonError/types.js.map +1 -1
- package/dist/kameleoonUtils.d.ts +1 -11
- package/dist/kameleoonUtils.js +1 -1
- package/dist/kameleoonUtils.js.map +1 -1
- package/dist/requester/constants.js +1 -1
- package/dist/requester/constants.js.map +1 -1
- package/dist/requester/index.d.ts +1 -1
- package/dist/requester/index.js +1 -1
- package/dist/requester/index.js.map +1 -1
- package/dist/requester/requester.d.ts +5 -7
- package/dist/requester/requester.js +1 -1
- package/dist/requester/requester.js.map +1 -1
- package/dist/requester/types.d.ts +7 -26
- package/dist/requester/types.js +1 -1
- package/dist/requester/types.js.map +1 -1
- package/dist/requester/urlProvider.d.ts +2 -2
- package/dist/requester/urlProvider.js +1 -1
- package/dist/requester/urlProvider.js.map +1 -1
- package/dist/storage/constants.d.ts +6 -2
- package/dist/storage/constants.js +1 -1
- package/dist/storage/constants.js.map +1 -1
- package/dist/storage/index.d.ts +3 -2
- package/dist/storage/index.js +1 -1
- package/dist/storage/index.js.map +1 -1
- package/dist/storage/integrityChecker.d.ts +20 -0
- package/dist/storage/integrityChecker.js +2 -0
- package/dist/storage/integrityChecker.js.map +1 -0
- package/dist/storage/storage.d.ts +0 -1
- package/dist/storage/storage.js +1 -1
- package/dist/storage/storage.js.map +1 -1
- package/dist/storage/types.d.ts +25 -17
- package/dist/storage/types.js.map +1 -1
- package/dist/targeting/conditions/applicationVersion.js +1 -1
- package/dist/targeting/conditions/applicationVersion.js.map +1 -1
- package/dist/targeting/conditions/browser.js +1 -1
- package/dist/targeting/conditions/browser.js.map +1 -1
- package/dist/targeting/conditions/conditionFactory.js.map +1 -1
- package/dist/targeting/conditions/conversion.js +1 -1
- package/dist/targeting/conditions/conversion.js.map +1 -1
- package/dist/targeting/conditions/conversionLikelihood.js +1 -1
- package/dist/targeting/conditions/conversionLikelihood.js.map +1 -1
- package/dist/targeting/conditions/cookie.js +1 -1
- package/dist/targeting/conditions/cookie.js.map +1 -1
- package/dist/targeting/conditions/customData.js +1 -1
- package/dist/targeting/conditions/customData.js.map +1 -1
- package/dist/targeting/conditions/device.js +1 -1
- package/dist/targeting/conditions/device.js.map +1 -1
- package/dist/targeting/conditions/exclusiveCampaign.js.map +1 -1
- package/dist/targeting/conditions/firstVisit.js +1 -1
- package/dist/targeting/conditions/firstVisit.js.map +1 -1
- package/dist/targeting/conditions/geolocation.js +1 -1
- package/dist/targeting/conditions/geolocation.js.map +1 -1
- package/dist/targeting/conditions/index.js.map +1 -1
- package/dist/targeting/conditions/lastVisit.js +1 -1
- package/dist/targeting/conditions/lastVisit.js.map +1 -1
- package/dist/targeting/conditions/newVisitor.js +1 -1
- package/dist/targeting/conditions/newVisitor.js.map +1 -1
- package/dist/targeting/conditions/operatingSystem.js +1 -1
- package/dist/targeting/conditions/operatingSystem.js.map +1 -1
- package/dist/targeting/conditions/pageTitle.js +1 -1
- package/dist/targeting/conditions/pageTitle.js.map +1 -1
- package/dist/targeting/conditions/pageUrl.js +1 -1
- package/dist/targeting/conditions/pageUrl.js.map +1 -1
- package/dist/targeting/conditions/previousPage.js +1 -1
- package/dist/targeting/conditions/previousPage.js.map +1 -1
- package/dist/targeting/conditions/sameDayVisits.js +1 -1
- package/dist/targeting/conditions/sameDayVisits.js.map +1 -1
- package/dist/targeting/conditions/sdkLanguage.js +1 -1
- package/dist/targeting/conditions/sdkLanguage.js.map +1 -1
- package/dist/targeting/conditions/segment.js +1 -1
- package/dist/targeting/conditions/segment.js.map +1 -1
- package/dist/targeting/conditions/targetFeatureFlag.js +1 -1
- package/dist/targeting/conditions/targetFeatureFlag.js.map +1 -1
- package/dist/targeting/conditions/types.js.map +1 -1
- package/dist/targeting/conditions/visitedPages.js +1 -1
- package/dist/targeting/conditions/visitedPages.js.map +1 -1
- package/dist/targeting/conditions/visitorCode.js +1 -1
- package/dist/targeting/conditions/visitorCode.js.map +1 -1
- package/dist/targeting/conditions/visits.js +1 -1
- package/dist/targeting/conditions/visits.js.map +1 -1
- package/dist/targeting/index.d.ts +1 -1
- package/dist/targeting/index.js.map +1 -1
- package/dist/targeting/node.js +1 -1
- package/dist/targeting/node.js.map +1 -1
- package/dist/targeting/tree.js +1 -1
- package/dist/targeting/tree.js.map +1 -1
- package/dist/targeting/types.js.map +1 -1
- package/dist/tracking/bodyProvider.d.ts +26 -0
- package/dist/tracking/bodyProvider.js +2 -0
- package/dist/tracking/bodyProvider.js.map +1 -0
- package/dist/tracking/constants.d.ts +2 -0
- package/dist/tracking/constants.js +2 -0
- package/dist/tracking/constants.js.map +1 -0
- package/dist/tracking/index.d.ts +1 -0
- package/dist/tracking/index.js +2 -0
- package/dist/tracking/index.js.map +1 -0
- package/dist/tracking/tracker.d.ts +21 -0
- package/dist/tracking/tracker.js +2 -0
- package/dist/tracking/tracker.js.map +1 -0
- package/dist/tracking/types.d.ts +45 -0
- package/dist/tracking/types.js +2 -0
- package/dist/tracking/types.js.map +1 -0
- package/dist/types.d.ts +44 -15
- package/dist/types.js +1 -1
- package/dist/types.js.map +1 -1
- package/dist/utilities/constants.d.ts +0 -1
- package/dist/utilities/constants.js +1 -1
- package/dist/utilities/constants.js.map +1 -1
- package/dist/utilities/index.d.ts +3 -2
- package/dist/utilities/index.js +1 -1
- package/dist/utilities/index.js.map +1 -1
- package/dist/utilities/parser.d.ts +10 -0
- package/dist/utilities/parser.js +2 -0
- package/dist/utilities/parser.js.map +1 -0
- package/dist/utilities/types.d.ts +3 -40
- package/dist/utilities/types.js.map +1 -1
- package/dist/utilities/utilities.d.ts +5 -21
- package/dist/utilities/utilities.js +1 -1
- package/dist/utilities/utilities.js.map +1 -1
- package/dist/utilities/validator.d.ts +5 -0
- package/dist/utilities/validator.js +2 -0
- package/dist/utilities/validator.js.map +1 -0
- package/dist/variationConfiguration/index.js.map +1 -1
- package/dist/variationConfiguration/types.d.ts +7 -2
- package/dist/variationConfiguration/types.js.map +1 -1
- package/dist/variationConfiguration/variationConfiguration.d.ts +15 -7
- package/dist/variationConfiguration/variationConfiguration.js +1 -1
- package/dist/variationConfiguration/variationConfiguration.js.map +1 -1
- package/dist/visitorCodeManager/constants.d.ts +2 -0
- package/dist/visitorCodeManager/constants.js +1 -1
- package/dist/visitorCodeManager/constants.js.map +1 -1
- package/dist/visitorCodeManager/index.js.map +1 -1
- package/dist/visitorCodeManager/types.d.ts +3 -0
- package/dist/visitorCodeManager/types.js.map +1 -1
- package/dist/visitorCodeManager/visitorCodeManager.d.ts +4 -0
- package/dist/visitorCodeManager/visitorCodeManager.js +1 -1
- package/dist/visitorCodeManager/visitorCodeManager.js.map +1 -1
- package/package.json +2 -2
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","names":[],"sources":["../../src/eventSource/index.ts"],"sourcesContent":["export {\n EventSourceOpenParametersType,\n IExternalEventSource,\n RealTimeEventType,\n} from './types';\nexport { KameleoonEventSource, IEventSource } from './eventSource';\nexport { REAL_TIME_EVENT } from './constants';\n"],"mappings":""}
|
|
1
|
+
{"version":3,"file":"index.js","names":[],"sources":["../../src/eventSource/index.ts"],"sourcesContent":["export {\n EventSourceOpenParametersType,\n IExternalEventSource,\n RealTimeEventType,\n} from './types';\nexport { KameleoonEventSource, IEventSource } from './eventSource';\nexport { REAL_TIME_EVENT } from './constants';\n"],"mappings":"","ignoreList":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","names":[],"sources":["../../src/eventSource/types.ts"],"sourcesContent":["import { IUrlProvider } from 'src/requester';\n\n/**\n * @param {number} timestamp - timestamp of when the event has happened\n * */\nexport type EventHandlerType = (timestamp: number) => void;\n\n/**\n * @param {string} url - url of server sent event server which will be pasted by consumer\n * @param {string} eventType - type of event to be listened for\n * @param {(message: MessageEvent) => void} onEvent - callback to be executed when event fired\n * */\nexport type EventSourceOpenParametersType = {\n url: string;\n eventType: string;\n onEvent: (message: MessageEvent) => void;\n};\n\n/**\n * @interface an interface of External Event Source which will be used in server sent events operations\n * */\nexport interface IExternalEventSource {\n /**\n * @method open - opens event source live connection\n * @param {OpenEventSourceParamsType} parameters - parameters to be passed to the event source\n * */\n open: ({ url, eventType, onEvent }: EventSourceOpenParametersType) => void;\n /**\n * @method close - closes event source live connection\n * */\n close: () => void;\n}\n\n/**\n * @param {string} siteCode - site code from the event\n * @param {number} ts - timestamp of when the event has happened\n * */\nexport type RealTimeEventType = {\n siteCode: string;\n ts: number;\n};\n\nexport type EventSourceParametersType = {\n siteCode: string;\n urlProvider: IUrlProvider;\n externalEventSource: IExternalEventSource;\n};\n"],"mappings":""}
|
|
1
|
+
{"version":3,"file":"types.js","names":[],"sources":["../../src/eventSource/types.ts"],"sourcesContent":["import { IUrlProvider } from 'src/requester';\n\n/**\n * @param {number} timestamp - timestamp of when the event has happened\n * */\nexport type EventHandlerType = (timestamp: number) => void;\n\n/**\n * @param {string} url - url of server sent event server which will be pasted by consumer\n * @param {string} eventType - type of event to be listened for\n * @param {(message: MessageEvent) => void} onEvent - callback to be executed when event fired\n * */\nexport type EventSourceOpenParametersType = {\n url: string;\n eventType: string;\n onEvent: (message: MessageEvent) => void;\n};\n\n/**\n * @interface an interface of External Event Source which will be used in server sent events operations\n * */\nexport interface IExternalEventSource {\n /**\n * @method open - opens event source live connection\n * @param {OpenEventSourceParamsType} parameters - parameters to be passed to the event source\n * */\n open: ({ url, eventType, onEvent }: EventSourceOpenParametersType) => void;\n /**\n * @method close - closes event source live connection\n * */\n close: () => void;\n}\n\n/**\n * @param {string} siteCode - site code from the event\n * @param {number} ts - timestamp of when the event has happened\n * */\nexport type RealTimeEventType = {\n siteCode: string;\n ts: number;\n};\n\nexport type EventSourceParametersType = {\n siteCode: string;\n urlProvider: IUrlProvider;\n externalEventSource: IExternalEventSource;\n};\n"],"mappings":"","ignoreList":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"hasher.js","names":["_sha","_interopRequireDefault","require","Object","defineProperty","exports","value","Hasher","a","__esModule","default","getHashDouble","visitorIdentifier","id","respoolTime","suffix","calculateHash","seed","hashDigest","sha256","toString","parseInt","Math","pow"],"sources":["../../src/hasher/hasher.ts"],"sourcesContent":["import sha256 from 'crypto-js/sha256';\nimport { GetHashDoubleParamsType } from './types';\n\nexport class Hasher {\n static getHashDouble({\n visitorIdentifier,\n id,\n respoolTime,\n }: GetHashDoubleParamsType): number {\n let suffix = '';\n\n if (respoolTime) {\n suffix += String(respoolTime);\n }\n\n return this.calculateHash(visitorIdentifier + id + suffix);\n }\n\n // --- Note ---\n // `hashDouble` is a seeded pseudo-random number between 0 and 1\n // used for deciding what variation to assign\n // `calculateHash` algorithm is consistent between every SDK\n // and will always provide same pseudo-random value for the same input parameters\n static calculateHash(seed: string): number {\n const hashDigest = sha256(seed).toString();\n\n return parseInt(hashDigest, 16) / Math.pow(2, 256);\n }\n}\n"],"mappings":"aAAA,IAAAA,IAAA,CAAAC,sBAAA,CAAAC,OAAA,sBAAsCC,MAAA,CAAAC,cAAA,CAAAC,OAAA,eAAAC,KAAA,MAAAD,OAAA,CAAAE,MAAA,iBAAAN,uBAAAO,CAAA,SAAAA,CAAA,EAAAA,CAAA,CAAAC,UAAA,CAAAD,CAAA,EAAAE,OAAA,CAAAF,CAAA,EAG/B,KAAM,CAAAD,MAAO,CAClB,MAAO,CAAAI,aAAaA,CAAAH,CAAA,CAIgB,IAJf,CACnBI,iBAAiB,CAAjBA,CAAiB,CACjBC,EAAE,CAAFA,CAAE,CACFC,WAAW,CAAXA,CACuB,CAAC,CAAAN,CAAA,CACpBO,CAAM,CAAG,EAAE,CAMf,MAJI,CAAAD,CAAW,GACbC,CAAM,EAAWD,CAAW,GAAC,EAGxB,IAAI,CAACE,aAAa,CAACJ,CAAiB,CAAGC,CAAE,CAAGE,CAAM,CAC3D,CAOA,MAAO,CAAAC,aAAaA,CAACC,CAAY,CAAU,CACzC,KAAM,CAAAC,CAAU,CAAG,GAAAC,YAAM,EAACF,CAAI,CAAC,CAACG,QAAQ,CAAC,CAAC,CAE1C,MAAO,CAAAC,QAAQ,CAACH,CAAU,CAAE,EAAE,CAAC,CAAGI,IAAI,CAACC,GAAG,CAAC,CAAC,CAAE,GAAG,CACnD,CACF,CAAClB,OAAA,CAAAE,MAAA,CAAAA,MAAA"}
|
|
1
|
+
{"version":3,"file":"hasher.js","names":["_sha","_interopRequireDefault","require","Object","defineProperty","exports","value","Hasher","a","__esModule","default","getHashDouble","visitorIdentifier","id","respoolTime","suffix","calculateHash","seed","hashDigest","sha256","toString","parseInt","Math","pow"],"sources":["../../src/hasher/hasher.ts"],"sourcesContent":["import sha256 from 'crypto-js/sha256';\nimport { GetHashDoubleParamsType } from './types';\n\nexport class Hasher {\n static getHashDouble({\n visitorIdentifier,\n id,\n respoolTime,\n }: GetHashDoubleParamsType): number {\n let suffix = '';\n\n if (respoolTime) {\n suffix += String(respoolTime);\n }\n\n return this.calculateHash(visitorIdentifier + id + suffix);\n }\n\n // --- Note ---\n // `hashDouble` is a seeded pseudo-random number between 0 and 1\n // used for deciding what variation to assign\n // `calculateHash` algorithm is consistent between every SDK\n // and will always provide same pseudo-random value for the same input parameters\n static calculateHash(seed: string): number {\n const hashDigest = sha256(seed).toString();\n\n return parseInt(hashDigest, 16) / Math.pow(2, 256);\n }\n}\n"],"mappings":"aAAA,IAAAA,IAAA,CAAAC,sBAAA,CAAAC,OAAA,sBAAsCC,MAAA,CAAAC,cAAA,CAAAC,OAAA,eAAAC,KAAA,MAAAD,OAAA,CAAAE,MAAA,iBAAAN,uBAAAO,CAAA,SAAAA,CAAA,EAAAA,CAAA,CAAAC,UAAA,CAAAD,CAAA,EAAAE,OAAA,CAAAF,CAAA,EAG/B,KAAM,CAAAD,MAAO,CAClB,MAAO,CAAAI,aAAaA,CAAAH,CAAA,CAIgB,IAJf,CACnBI,iBAAiB,CAAjBA,CAAiB,CACjBC,EAAE,CAAFA,CAAE,CACFC,WAAW,CAAXA,CACuB,CAAC,CAAAN,CAAA,CACpBO,CAAM,CAAG,EAAE,CAMf,MAJI,CAAAD,CAAW,GACbC,CAAM,EAAWD,CAAW,GAAC,EAGxB,IAAI,CAACE,aAAa,CAACJ,CAAiB,CAAGC,CAAE,CAAGE,CAAM,CAC3D,CAOA,MAAO,CAAAC,aAAaA,CAACC,CAAY,CAAU,CACzC,KAAM,CAAAC,CAAU,CAAG,GAAAC,YAAM,EAACF,CAAI,CAAC,CAACG,QAAQ,CAAC,CAAC,CAE1C,MAAO,CAAAC,QAAQ,CAACH,CAAU,CAAE,EAAE,CAAC,CAAGI,IAAI,CAACC,GAAG,CAAC,CAAC,CAAE,GAAG,CACnD,CACF,CAAClB,OAAA,CAAAE,MAAA,CAAAA,MAAA","ignoreList":[]}
|
package/dist/hasher/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","names":["_hasher","require","Object","defineProperty","exports","value","enumerable","get","Hasher"],"sources":["../../src/hasher/index.ts"],"sourcesContent":["export { Hasher } from './hasher';\n"],"mappings":"aAAA,IAAAA,OAAA,CAAAC,OAAA,aAAkCC,MAAA,CAAAC,cAAA,CAAAC,OAAA,eAAAC,KAAA,MAAAH,MAAA,CAAAC,cAAA,CAAAC,OAAA,WAAAE,UAAA,IAAAC,GAAA,SAAAA,CAAA,SAAAP,OAAA,CAAAQ,MAAA"}
|
|
1
|
+
{"version":3,"file":"index.js","names":["_hasher","require","Object","defineProperty","exports","value","enumerable","get","Hasher"],"sources":["../../src/hasher/index.ts"],"sourcesContent":["export { Hasher } from './hasher';\n"],"mappings":"aAAA,IAAAA,OAAA,CAAAC,OAAA,aAAkCC,MAAA,CAAAC,cAAA,CAAAC,OAAA,eAAAC,KAAA,MAAAH,MAAA,CAAAC,cAAA,CAAAC,OAAA,WAAAE,UAAA,IAAAC,GAAA,SAAAA,CAAA,SAAAP,OAAA,CAAAQ,MAAA","ignoreList":[]}
|
package/dist/hasher/types.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","names":[],"sources":["../../src/hasher/types.ts"],"sourcesContent":["export type GetHashDoubleParamsType = {\n respoolTime: number | null;\n visitorIdentifier: string;\n id: string;\n};\n"],"mappings":""}
|
|
1
|
+
{"version":3,"file":"types.js","names":[],"sources":["../../src/hasher/types.ts"],"sourcesContent":["export type GetHashDoubleParamsType = {\n respoolTime: number | null;\n visitorIdentifier: string;\n id: string;\n};\n"],"mappings":"","ignoreList":[]}
|
package/dist/index.d.ts
CHANGED
|
@@ -6,10 +6,10 @@ export { KameleoonException, KameleoonError } from './kameleoonError';
|
|
|
6
6
|
export { VisitorDataFiltersType, IExternalPRNG } from './utilities';
|
|
7
7
|
export { FeatureFlagVariationsType, KameleoonStorageKey, IExternalStorage, StorageDataType, } from './storage';
|
|
8
8
|
export { EventCallbackType, EventDataType, EventType, EvaluationEventDataType, ConfigurationUpdateEventDataType, } from './eventManager';
|
|
9
|
-
export { VisitorCodeManager, IVisitorCodeManager } from './visitorCodeManager';
|
|
10
|
-
export {
|
|
9
|
+
export { VisitorCodeManager, IVisitorCodeManager, VISITOR_CODE_LENGTH, } from './visitorCodeManager';
|
|
10
|
+
export { SdkLanguageType } from './constants';
|
|
11
11
|
export { JSONType, ConfigurationDataType } from './clientConfiguration';
|
|
12
|
-
export { Environment, VariableType, InternalsType, FeatureFlagType, SDKCoreParameters, SDKConfigurationType, KameleoonVariationType, ExternalPackageInfoType, FeatureFlagVariableType, TrackConversionParamsType, FeatureVariableResultType, RemoteVisitorDataParamsType, InternalSDKConfigurationType, SetDataCallbackParametersType, GetFeatureFlagVariableParamsType, GetVisitorWarehouseAudienceParamsType, SimulateRequestDataType, Milliseconds, } from './types';
|
|
12
|
+
export { TrackingStatus, Environment, VariableType, InternalsType, FeatureFlagType, SDKCoreParameters, SDKConfigurationType, KameleoonVariationType, ExternalPackageInfoType, FeatureFlagVariableType, TrackConversionParamsType, FeatureVariableResultType, RemoteVisitorDataParamsType, InternalSDKConfigurationType, SetDataCallbackParametersType, GetFeatureFlagVariableParamsType, GetVisitorWarehouseAudienceParamsType, SimulateRequestDataType, Milliseconds, } from './types';
|
|
13
13
|
export { ApplicationVersion, CustomData, Conversion, Device, Cookie, Browser, UserAgent, DeviceType, CookieType, GeolocationData, GeolocationInfoType, OperatingSystemType, OperatingSystem, BrowserType, PageView, KameleoonData, KameleoonDataType, PageViewParametersType, ConversionParametersType, ApplicationVersionDataType, } from './kameleoonData';
|
|
14
14
|
export { IExternalEventSource, EventSourceOpenParametersType, } from './eventSource';
|
|
15
|
-
export { Header, HeadersType, HttpMethod,
|
|
15
|
+
export { Header, HeadersType, HttpMethod, IExternalRequester, RequestParametersType, RequestType, RetryCountType, KameleoonResponseType, SendRequestParametersType, NUMBER_OF_RETRIES, } from './requester';
|
package/dist/index.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),Object.defineProperty(exports,"ApplicationVersion",{enumerable:!0,get:function(){return _kameleoonData.ApplicationVersion}}),Object.defineProperty(exports,"ApplicationVersionDataType",{enumerable:!0,get:function(){return _kameleoonData.ApplicationVersionDataType}}),Object.defineProperty(exports,"Browser",{enumerable:!0,get:function(){return _kameleoonData.Browser}}),Object.defineProperty(exports,"BrowserType",{enumerable:!0,get:function(){return _kameleoonData.BrowserType}}),Object.defineProperty(exports,"ConfigurationDataType",{enumerable:!0,get:function(){return _clientConfiguration.ConfigurationDataType}}),Object.defineProperty(exports,"ConfigurationUpdateEventDataType",{enumerable:!0,get:function(){return _eventManager.ConfigurationUpdateEventDataType}}),Object.defineProperty(exports,"Conversion",{enumerable:!0,get:function(){return _kameleoonData.Conversion}}),Object.defineProperty(exports,"ConversionParametersType",{enumerable:!0,get:function(){return _kameleoonData.ConversionParametersType}}),Object.defineProperty(exports,"Cookie",{enumerable:!0,get:function(){return _kameleoonData.Cookie}}),Object.defineProperty(exports,"CookieType",{enumerable:!0,get:function(){return _kameleoonData.CookieType}}),Object.defineProperty(exports,"CustomData",{enumerable:!0,get:function(){return _kameleoonData.CustomData}}),Object.defineProperty(exports,"Device",{enumerable:!0,get:function(){return _kameleoonData.Device}}),Object.defineProperty(exports,"DeviceType",{enumerable:!0,get:function(){return _kameleoonData.DeviceType}}),Object.defineProperty(exports,"Environment",{enumerable:!0,get:function(){return _types.Environment}}),Object.defineProperty(exports,"Err",{enumerable:!0,get:function(){return _tsRes.Err}}),Object.defineProperty(exports,"EvaluationEventDataType",{enumerable:!0,get:function(){return _eventManager.EvaluationEventDataType}}),Object.defineProperty(exports,"EventCallbackType",{enumerable:!0,get:function(){return _eventManager.EventCallbackType}}),Object.defineProperty(exports,"EventDataType",{enumerable:!0,get:function(){return _eventManager.EventDataType}}),Object.defineProperty(exports,"EventSourceOpenParametersType",{enumerable:!0,get:function(){return _eventSource.EventSourceOpenParametersType}}),Object.defineProperty(exports,"EventType",{enumerable:!0,get:function(){return _eventManager.EventType}}),Object.defineProperty(exports,"ExternalPackageInfoType",{enumerable:!0,get:function(){return _types.ExternalPackageInfoType}}),Object.defineProperty(exports,"FeatureFlagType",{enumerable:!0,get:function(){return _types.FeatureFlagType}}),Object.defineProperty(exports,"FeatureFlagVariableType",{enumerable:!0,get:function(){return _types.FeatureFlagVariableType}}),Object.defineProperty(exports,"FeatureFlagVariationsType",{enumerable:!0,get:function(){return _storage.FeatureFlagVariationsType}}),Object.defineProperty(exports,"FeatureVariableResultType",{enumerable:!0,get:function(){return _types.FeatureVariableResultType}}),Object.defineProperty(exports,"GeolocationData",{enumerable:!0,get:function(){return _kameleoonData.GeolocationData}}),Object.defineProperty(exports,"GeolocationInfoType",{enumerable:!0,get:function(){return _kameleoonData.GeolocationInfoType}}),Object.defineProperty(exports,"GetFeatureFlagVariableParamsType",{enumerable:!0,get:function(){return _types.GetFeatureFlagVariableParamsType}}),Object.defineProperty(exports,"GetVisitorWarehouseAudienceParamsType",{enumerable:!0,get:function(){return _types.GetVisitorWarehouseAudienceParamsType}}),Object.defineProperty(exports,"Header",{enumerable:!0,get:function(){return _requester.Header}}),Object.defineProperty(exports,"HeadersType",{enumerable:!0,get:function(){return _requester.HeadersType}}),Object.defineProperty(exports,"HttpMethod",{enumerable:!0,get:function(){return _requester.HttpMethod}}),Object.defineProperty(exports,"IExternalEventSource",{enumerable:!0,get:function(){return _eventSource.IExternalEventSource}}),Object.defineProperty(exports,"IExternalPRNG",{enumerable:!0,get:function(){return _utilities.IExternalPRNG}}),Object.defineProperty(exports,"IExternalRequester",{enumerable:!0,get:function(){return _requester.IExternalRequester}}),Object.defineProperty(exports,"IExternalStorage",{enumerable:!0,get:function(){return _storage.IExternalStorage}}),Object.defineProperty(exports,"IKameleoonCore",{enumerable:!0,get:function(){return _kameleoonClientInterface.IKameleoonClient}}),Object.defineProperty(exports,"IVisitorCodeManager",{enumerable:!0,get:function(){return _visitorCodeManager.IVisitorCodeManager}}),Object.defineProperty(exports,"InternalSDKConfigurationType",{enumerable:!0,get:function(){return _types.InternalSDKConfigurationType}}),Object.defineProperty(exports,"InternalsType",{enumerable:!0,get:function(){return _types.InternalsType}}),Object.defineProperty(exports,"JSONType",{enumerable:!0,get:function(){return _clientConfiguration.JSONType}}),Object.defineProperty(exports,"KameleoonCore",{enumerable:!0,get:function(){return _kameleoonClient.KameleoonClient}}),Object.defineProperty(exports,"KameleoonData",{enumerable:!0,get:function(){return _kameleoonData.KameleoonData}}),Object.defineProperty(exports,"KameleoonDataType",{enumerable:!0,get:function(){return _kameleoonData.KameleoonDataType}}),Object.defineProperty(exports,"KameleoonError",{enumerable:!0,get:function(){return _kameleoonError.KameleoonError}}),Object.defineProperty(exports,"KameleoonException",{enumerable:!0,get:function(){return _kameleoonError.KameleoonException}}),Object.defineProperty(exports,"KameleoonResponseType",{enumerable:!0,get:function(){return _requester.KameleoonResponseType}}),Object.defineProperty(exports,"KameleoonStorageKey",{enumerable:!0,get:function(){return _storage.KameleoonStorageKey}}),Object.defineProperty(exports,"KameleoonUtils",{enumerable:!0,get:function(){return _kameleoonUtils.KameleoonUtils}}),Object.defineProperty(exports,"KameleoonVariationType",{enumerable:!0,get:function(){return _types.KameleoonVariationType}}),Object.defineProperty(exports,"Milliseconds",{enumerable:!0,get:function(){return _types.Milliseconds}}),Object.defineProperty(exports,"NUMBER_OF_RETRIES",{enumerable:!0,get:function(){return _requester.NUMBER_OF_RETRIES}}),Object.defineProperty(exports,"Ok",{enumerable:!0,get:function(){return _tsRes.Ok}}),Object.defineProperty(exports,"OperatingSystem",{enumerable:!0,get:function(){return _kameleoonData.OperatingSystem}}),Object.defineProperty(exports,"OperatingSystemType",{enumerable:!0,get:function(){return _kameleoonData.OperatingSystemType}}),Object.defineProperty(exports,"PageView",{enumerable:!0,get:function(){return _kameleoonData.PageView}}),Object.defineProperty(exports,"PageViewParametersType",{enumerable:!0,get:function(){return _kameleoonData.PageViewParametersType}}),Object.defineProperty(exports,"RemoteVisitorDataParamsType",{enumerable:!0,get:function(){return _types.RemoteVisitorDataParamsType}}),Object.defineProperty(exports,"RequestParametersType",{enumerable:!0,get:function(){return _requester.RequestParametersType}}),Object.defineProperty(exports,"RequestType",{enumerable:!0,get:function(){return _requester.RequestType}}),Object.defineProperty(exports,"Result",{enumerable:!0,get:function(){return _tsRes.Result}}),Object.defineProperty(exports,"RetryCountType",{enumerable:!0,get:function(){return _requester.RetryCountType}}),Object.defineProperty(exports,"SDKConfigurationType",{enumerable:!0,get:function(){return _types.SDKConfigurationType}}),Object.defineProperty(exports,"SDKCoreParameters",{enumerable:!0,get:function(){return _types.SDKCoreParameters}}),Object.defineProperty(exports,"SdkLanguageType",{enumerable:!0,get:function(){return _constants.SdkLanguageType}}),Object.defineProperty(exports,"SendRequestParametersType",{enumerable:!0,get:function(){return _requester.SendRequestParametersType}}),Object.defineProperty(exports,"SetDataCallbackParametersType",{enumerable:!0,get:function(){return _types.SetDataCallbackParametersType}}),Object.defineProperty(exports,"SimulateRequestDataType",{enumerable:!0,get:function(){return _types.SimulateRequestDataType}}),Object.defineProperty(exports,"StorageDataType",{enumerable:!0,get:function(){return _storage.StorageDataType}}),Object.defineProperty(exports,"TrackConversionParamsType",{enumerable:!0,get:function(){return _types.TrackConversionParamsType}}),Object.defineProperty(exports,"
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),Object.defineProperty(exports,"ApplicationVersion",{enumerable:!0,get:function(){return _kameleoonData.ApplicationVersion}}),Object.defineProperty(exports,"ApplicationVersionDataType",{enumerable:!0,get:function(){return _kameleoonData.ApplicationVersionDataType}}),Object.defineProperty(exports,"Browser",{enumerable:!0,get:function(){return _kameleoonData.Browser}}),Object.defineProperty(exports,"BrowserType",{enumerable:!0,get:function(){return _kameleoonData.BrowserType}}),Object.defineProperty(exports,"ConfigurationDataType",{enumerable:!0,get:function(){return _clientConfiguration.ConfigurationDataType}}),Object.defineProperty(exports,"ConfigurationUpdateEventDataType",{enumerable:!0,get:function(){return _eventManager.ConfigurationUpdateEventDataType}}),Object.defineProperty(exports,"Conversion",{enumerable:!0,get:function(){return _kameleoonData.Conversion}}),Object.defineProperty(exports,"ConversionParametersType",{enumerable:!0,get:function(){return _kameleoonData.ConversionParametersType}}),Object.defineProperty(exports,"Cookie",{enumerable:!0,get:function(){return _kameleoonData.Cookie}}),Object.defineProperty(exports,"CookieType",{enumerable:!0,get:function(){return _kameleoonData.CookieType}}),Object.defineProperty(exports,"CustomData",{enumerable:!0,get:function(){return _kameleoonData.CustomData}}),Object.defineProperty(exports,"Device",{enumerable:!0,get:function(){return _kameleoonData.Device}}),Object.defineProperty(exports,"DeviceType",{enumerable:!0,get:function(){return _kameleoonData.DeviceType}}),Object.defineProperty(exports,"Environment",{enumerable:!0,get:function(){return _types.Environment}}),Object.defineProperty(exports,"Err",{enumerable:!0,get:function(){return _tsRes.Err}}),Object.defineProperty(exports,"EvaluationEventDataType",{enumerable:!0,get:function(){return _eventManager.EvaluationEventDataType}}),Object.defineProperty(exports,"EventCallbackType",{enumerable:!0,get:function(){return _eventManager.EventCallbackType}}),Object.defineProperty(exports,"EventDataType",{enumerable:!0,get:function(){return _eventManager.EventDataType}}),Object.defineProperty(exports,"EventSourceOpenParametersType",{enumerable:!0,get:function(){return _eventSource.EventSourceOpenParametersType}}),Object.defineProperty(exports,"EventType",{enumerable:!0,get:function(){return _eventManager.EventType}}),Object.defineProperty(exports,"ExternalPackageInfoType",{enumerable:!0,get:function(){return _types.ExternalPackageInfoType}}),Object.defineProperty(exports,"FeatureFlagType",{enumerable:!0,get:function(){return _types.FeatureFlagType}}),Object.defineProperty(exports,"FeatureFlagVariableType",{enumerable:!0,get:function(){return _types.FeatureFlagVariableType}}),Object.defineProperty(exports,"FeatureFlagVariationsType",{enumerable:!0,get:function(){return _storage.FeatureFlagVariationsType}}),Object.defineProperty(exports,"FeatureVariableResultType",{enumerable:!0,get:function(){return _types.FeatureVariableResultType}}),Object.defineProperty(exports,"GeolocationData",{enumerable:!0,get:function(){return _kameleoonData.GeolocationData}}),Object.defineProperty(exports,"GeolocationInfoType",{enumerable:!0,get:function(){return _kameleoonData.GeolocationInfoType}}),Object.defineProperty(exports,"GetFeatureFlagVariableParamsType",{enumerable:!0,get:function(){return _types.GetFeatureFlagVariableParamsType}}),Object.defineProperty(exports,"GetVisitorWarehouseAudienceParamsType",{enumerable:!0,get:function(){return _types.GetVisitorWarehouseAudienceParamsType}}),Object.defineProperty(exports,"Header",{enumerable:!0,get:function(){return _requester.Header}}),Object.defineProperty(exports,"HeadersType",{enumerable:!0,get:function(){return _requester.HeadersType}}),Object.defineProperty(exports,"HttpMethod",{enumerable:!0,get:function(){return _requester.HttpMethod}}),Object.defineProperty(exports,"IExternalEventSource",{enumerable:!0,get:function(){return _eventSource.IExternalEventSource}}),Object.defineProperty(exports,"IExternalPRNG",{enumerable:!0,get:function(){return _utilities.IExternalPRNG}}),Object.defineProperty(exports,"IExternalRequester",{enumerable:!0,get:function(){return _requester.IExternalRequester}}),Object.defineProperty(exports,"IExternalStorage",{enumerable:!0,get:function(){return _storage.IExternalStorage}}),Object.defineProperty(exports,"IKameleoonCore",{enumerable:!0,get:function(){return _kameleoonClientInterface.IKameleoonClient}}),Object.defineProperty(exports,"IVisitorCodeManager",{enumerable:!0,get:function(){return _visitorCodeManager.IVisitorCodeManager}}),Object.defineProperty(exports,"InternalSDKConfigurationType",{enumerable:!0,get:function(){return _types.InternalSDKConfigurationType}}),Object.defineProperty(exports,"InternalsType",{enumerable:!0,get:function(){return _types.InternalsType}}),Object.defineProperty(exports,"JSONType",{enumerable:!0,get:function(){return _clientConfiguration.JSONType}}),Object.defineProperty(exports,"KameleoonCore",{enumerable:!0,get:function(){return _kameleoonClient.KameleoonClient}}),Object.defineProperty(exports,"KameleoonData",{enumerable:!0,get:function(){return _kameleoonData.KameleoonData}}),Object.defineProperty(exports,"KameleoonDataType",{enumerable:!0,get:function(){return _kameleoonData.KameleoonDataType}}),Object.defineProperty(exports,"KameleoonError",{enumerable:!0,get:function(){return _kameleoonError.KameleoonError}}),Object.defineProperty(exports,"KameleoonException",{enumerable:!0,get:function(){return _kameleoonError.KameleoonException}}),Object.defineProperty(exports,"KameleoonResponseType",{enumerable:!0,get:function(){return _requester.KameleoonResponseType}}),Object.defineProperty(exports,"KameleoonStorageKey",{enumerable:!0,get:function(){return _storage.KameleoonStorageKey}}),Object.defineProperty(exports,"KameleoonUtils",{enumerable:!0,get:function(){return _kameleoonUtils.KameleoonUtils}}),Object.defineProperty(exports,"KameleoonVariationType",{enumerable:!0,get:function(){return _types.KameleoonVariationType}}),Object.defineProperty(exports,"Milliseconds",{enumerable:!0,get:function(){return _types.Milliseconds}}),Object.defineProperty(exports,"NUMBER_OF_RETRIES",{enumerable:!0,get:function(){return _requester.NUMBER_OF_RETRIES}}),Object.defineProperty(exports,"Ok",{enumerable:!0,get:function(){return _tsRes.Ok}}),Object.defineProperty(exports,"OperatingSystem",{enumerable:!0,get:function(){return _kameleoonData.OperatingSystem}}),Object.defineProperty(exports,"OperatingSystemType",{enumerable:!0,get:function(){return _kameleoonData.OperatingSystemType}}),Object.defineProperty(exports,"PageView",{enumerable:!0,get:function(){return _kameleoonData.PageView}}),Object.defineProperty(exports,"PageViewParametersType",{enumerable:!0,get:function(){return _kameleoonData.PageViewParametersType}}),Object.defineProperty(exports,"RemoteVisitorDataParamsType",{enumerable:!0,get:function(){return _types.RemoteVisitorDataParamsType}}),Object.defineProperty(exports,"RequestParametersType",{enumerable:!0,get:function(){return _requester.RequestParametersType}}),Object.defineProperty(exports,"RequestType",{enumerable:!0,get:function(){return _requester.RequestType}}),Object.defineProperty(exports,"Result",{enumerable:!0,get:function(){return _tsRes.Result}}),Object.defineProperty(exports,"RetryCountType",{enumerable:!0,get:function(){return _requester.RetryCountType}}),Object.defineProperty(exports,"SDKConfigurationType",{enumerable:!0,get:function(){return _types.SDKConfigurationType}}),Object.defineProperty(exports,"SDKCoreParameters",{enumerable:!0,get:function(){return _types.SDKCoreParameters}}),Object.defineProperty(exports,"SdkLanguageType",{enumerable:!0,get:function(){return _constants.SdkLanguageType}}),Object.defineProperty(exports,"SendRequestParametersType",{enumerable:!0,get:function(){return _requester.SendRequestParametersType}}),Object.defineProperty(exports,"SetDataCallbackParametersType",{enumerable:!0,get:function(){return _types.SetDataCallbackParametersType}}),Object.defineProperty(exports,"SimulateRequestDataType",{enumerable:!0,get:function(){return _types.SimulateRequestDataType}}),Object.defineProperty(exports,"StorageDataType",{enumerable:!0,get:function(){return _storage.StorageDataType}}),Object.defineProperty(exports,"TrackConversionParamsType",{enumerable:!0,get:function(){return _types.TrackConversionParamsType}}),Object.defineProperty(exports,"TrackingStatus",{enumerable:!0,get:function(){return _types.TrackingStatus}}),Object.defineProperty(exports,"UserAgent",{enumerable:!0,get:function(){return _kameleoonData.UserAgent}}),Object.defineProperty(exports,"VISITOR_CODE_LENGTH",{enumerable:!0,get:function(){return _visitorCodeManager.VISITOR_CODE_LENGTH}}),Object.defineProperty(exports,"VariableType",{enumerable:!0,get:function(){return _types.VariableType}}),Object.defineProperty(exports,"VisitorCodeManager",{enumerable:!0,get:function(){return _visitorCodeManager.VisitorCodeManager}}),Object.defineProperty(exports,"VisitorDataFiltersType",{enumerable:!0,get:function(){return _utilities.VisitorDataFiltersType}});var _tsRes=require("ts-res"),_kameleoonClient=require("./kameleoonClient"),_kameleoonClientInterface=require("./kameleoonClientInterface"),_kameleoonUtils=require("./kameleoonUtils"),_kameleoonError=require("./kameleoonError"),_utilities=require("./utilities"),_storage=require("./storage"),_eventManager=require("./eventManager"),_visitorCodeManager=require("./visitorCodeManager"),_constants=require("./constants"),_clientConfiguration=require("./clientConfiguration"),_types=require("./types"),_kameleoonData=require("./kameleoonData"),_eventSource=require("./eventSource"),_requester=require("./requester");
|
|
2
2
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","names":[],"sources":["../src/index.ts"],"sourcesContent":["export { Ok, Result, Err } from 'ts-res';\nexport { KameleoonClient as KameleoonCore } from './kameleoonClient';\nexport { IKameleoonClient as IKameleoonCore } from './kameleoonClientInterface';\nexport { KameleoonUtils } from './kameleoonUtils';\nexport { KameleoonException, KameleoonError } from './kameleoonError';\nexport { VisitorDataFiltersType, IExternalPRNG } from './utilities';\nexport {\n FeatureFlagVariationsType,\n KameleoonStorageKey,\n IExternalStorage,\n StorageDataType,\n} from './storage';\nexport {\n EventCallbackType,\n EventDataType,\n EventType,\n EvaluationEventDataType,\n ConfigurationUpdateEventDataType,\n} from './eventManager';\nexport {
|
|
1
|
+
{"version":3,"file":"index.js","names":[],"sources":["../src/index.ts"],"sourcesContent":["export { Ok, Result, Err } from 'ts-res';\nexport { KameleoonClient as KameleoonCore } from './kameleoonClient';\nexport { IKameleoonClient as IKameleoonCore } from './kameleoonClientInterface';\nexport { KameleoonUtils } from './kameleoonUtils';\nexport { KameleoonException, KameleoonError } from './kameleoonError';\nexport { VisitorDataFiltersType, IExternalPRNG } from './utilities';\nexport {\n FeatureFlagVariationsType,\n KameleoonStorageKey,\n IExternalStorage,\n StorageDataType,\n} from './storage';\nexport {\n EventCallbackType,\n EventDataType,\n EventType,\n EvaluationEventDataType,\n ConfigurationUpdateEventDataType,\n} from './eventManager';\nexport {\n VisitorCodeManager,\n IVisitorCodeManager,\n VISITOR_CODE_LENGTH,\n} from './visitorCodeManager';\nexport { SdkLanguageType } from './constants';\nexport { JSONType, ConfigurationDataType } from './clientConfiguration';\nexport {\n TrackingStatus,\n Environment,\n VariableType,\n InternalsType,\n FeatureFlagType,\n SDKCoreParameters,\n SDKConfigurationType,\n KameleoonVariationType,\n ExternalPackageInfoType,\n FeatureFlagVariableType,\n TrackConversionParamsType,\n FeatureVariableResultType,\n RemoteVisitorDataParamsType,\n InternalSDKConfigurationType,\n SetDataCallbackParametersType,\n GetFeatureFlagVariableParamsType,\n GetVisitorWarehouseAudienceParamsType,\n SimulateRequestDataType,\n Milliseconds,\n} from './types';\nexport {\n ApplicationVersion,\n CustomData,\n Conversion,\n Device,\n Cookie,\n Browser,\n UserAgent,\n DeviceType,\n CookieType,\n GeolocationData,\n GeolocationInfoType,\n OperatingSystemType,\n OperatingSystem,\n BrowserType,\n PageView,\n KameleoonData,\n KameleoonDataType,\n PageViewParametersType,\n ConversionParametersType,\n ApplicationVersionDataType,\n} from './kameleoonData';\nexport {\n IExternalEventSource,\n EventSourceOpenParametersType,\n} from './eventSource';\nexport {\n Header,\n HeadersType,\n HttpMethod,\n IExternalRequester,\n RequestParametersType,\n RequestType,\n RetryCountType,\n KameleoonResponseType,\n SendRequestParametersType,\n NUMBER_OF_RETRIES,\n} from './requester';\n"],"mappings":"","ignoreList":[]}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { JSONType } from './clientConfiguration';
|
|
2
2
|
import { CustomData, KameleoonDataType } from './kameleoonData';
|
|
3
3
|
import { TrackConversionParamsType, FeatureFlagType, GetFeatureFlagVariableParamsType, FeatureVariableResultType, SDKCoreParameters, RemoteVisitorDataParamsType, GetVisitorWarehouseAudienceParamsType, SetUserConsentParametersType, FeatureFlagVariableType, KameleoonVariationType } from './types';
|
|
4
|
-
import { EventCallbackType, EventType } from './eventManager';
|
|
5
4
|
import { IKameleoonClient } from './kameleoonClientInterface';
|
|
5
|
+
import { EventCallbackType, EventType } from './eventManager';
|
|
6
6
|
/**
|
|
7
7
|
* @class
|
|
8
8
|
* KameleoonClient - a class for creating kameleoon client instance
|
|
@@ -12,7 +12,6 @@ export declare class KameleoonClient implements IKameleoonClient {
|
|
|
12
12
|
private variationConfiguration;
|
|
13
13
|
private clientConfiguration;
|
|
14
14
|
private dataManager;
|
|
15
|
-
private offlineTrackingStorage;
|
|
16
15
|
private consentDataStorage;
|
|
17
16
|
private trackingCache;
|
|
18
17
|
private requester;
|
|
@@ -20,17 +19,17 @@ export declare class KameleoonClient implements IKameleoonClient {
|
|
|
20
19
|
private initialized;
|
|
21
20
|
private visitorCodeManager;
|
|
22
21
|
private eventManager;
|
|
22
|
+
private tracker;
|
|
23
23
|
private environment;
|
|
24
|
-
private isOfflineModeOn?;
|
|
25
24
|
/**
|
|
26
25
|
* @param {SDKCoreParameters} sdkCoreParameters - parameters for initializing sdk core
|
|
27
26
|
*/
|
|
28
27
|
constructor({ siteCode, dependencies, configuration, internalConfiguration, }: SDKCoreParameters);
|
|
29
|
-
initialize(
|
|
28
|
+
initialize(): Promise<boolean>;
|
|
30
29
|
addData(visitorCode: string, ...data: KameleoonDataType[]): void;
|
|
31
|
-
getRemoteVisitorData({ visitorCode, shouldAddData, filters,
|
|
32
|
-
trackConversion({ visitorCode, goalId, revenue,
|
|
33
|
-
flush(visitorCode?: string
|
|
30
|
+
getRemoteVisitorData({ visitorCode, shouldAddData, filters, }: RemoteVisitorDataParamsType): Promise<KameleoonDataType[]>;
|
|
31
|
+
trackConversion({ visitorCode, goalId, revenue, }: TrackConversionParamsType): void;
|
|
32
|
+
flush(visitorCode?: string): void;
|
|
34
33
|
getFeatureFlags(): FeatureFlagType[];
|
|
35
34
|
getVisitorFeatureFlags(visitorCode: string): FeatureFlagType[];
|
|
36
35
|
getActiveFeatureFlags(visitorCode: string): Map<string, KameleoonVariationType>;
|
|
@@ -40,12 +39,6 @@ export declare class KameleoonClient implements IKameleoonClient {
|
|
|
40
39
|
isFeatureFlagActive(visitorCode: string, featureKey: string): boolean;
|
|
41
40
|
getRemoteData(key: string): Promise<JSONType>;
|
|
42
41
|
getVisitorWarehouseAudience({ visitorCode, customDataIndex, warehouseKey, }: GetVisitorWarehouseAudienceParamsType): Promise<CustomData | null>;
|
|
43
|
-
/**
|
|
44
|
-
* @deprecated
|
|
45
|
-
* use `onEvent(EventType.ConfigurationUpdate, callback)` instead
|
|
46
|
-
* Will be removed in the next major release
|
|
47
|
-
* */
|
|
48
|
-
onConfigurationUpdate(callback: () => void): void;
|
|
49
42
|
onEvent<E extends EventType>(event: E, callback: EventCallbackType<E>): void;
|
|
50
43
|
getEngineTrackingCode(visitorCode: string): string;
|
|
51
44
|
isInitialized(): boolean;
|
package/dist/kameleoonClient.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.KameleoonClient=void 0;var _tsRes=require("ts-res"),_cacheManager=require("./cacheManager"),_clientConfiguration=require("./clientConfiguration"),_clientSettings=require("./clientSettings"),_constants=require("./constants"),_kameleoonData=require("./kameleoonData"),_kameleoonError=require("./kameleoonError"),_requester=require("./requester"),_storage=require("./storage"),_utilities=require("./utilities"),_variationConfiguration=require("./variationConfiguration"),_eventManager=require("./eventManager"),_eventSource=require("./eventSource"),_visitorCodeManager=require("./visitorCodeManager");function _defineProperty(a,b,c){return b=_toPropertyKey(b),b in a?Object.defineProperty(a,b,{value:c,enumerable:!0,configurable:!0,writable:!0}):a[b]=c,a}function _toPropertyKey(a){var b=_toPrimitive(a,"string");return"symbol"==typeof b?b:b+""}function _toPrimitive(a,b){if("object"!=typeof a||!a)return a;var c=a[Symbol.toPrimitive];if(void 0!==c){var d=c.call(a,b||"default");if("object"!=typeof d)return d;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===b?String:Number)(a)}class KameleoonClient{constructor(a){var b;let{siteCode:c,dependencies:d,configuration:e,internalConfiguration:f}=a;_defineProperty(this,"variationConfiguration",void 0),_defineProperty(this,"clientConfiguration",void 0),_defineProperty(this,"dataManager",void 0),_defineProperty(this,"offlineTrackingStorage",void 0),_defineProperty(this,"consentDataStorage",void 0),_defineProperty(this,"trackingCache",void 0),_defineProperty(this,"requester",void 0),_defineProperty(this,"externalPackageInfo",void 0),_defineProperty(this,"initialized",!1),_defineProperty(this,"visitorCodeManager",void 0),_defineProperty(this,"eventManager",void 0),_defineProperty(this,"environment",void 0),_defineProperty(this,"isOfflineModeOn",void 0);const{settings:g}=new _clientSettings.ClientSettings(c,e);this.environment=g.environment;const{externalStorage:h,externalEventSource:i,externalPackageInfo:j,externalVisitorCodeManager:k,externalRequester:l,externalClientConfiguration:m,externalPRNG:n}=f,o=new _cacheManager.CacheManager(_constants.CACHE_CLEANUP_TIMEOUT),p=new _storage.DataStorage(h,_storage.KameleoonStorageKey.ClientData),q=new _storage.DataStorage(h,_storage.KameleoonStorageKey.TargetingData),r=new _storage.DataStorage(h,_storage.KameleoonStorageKey.VariationData),s=new _storage.DataStorage(h,_storage.KameleoonStorageKey.OfflineTracking),t=new _storage.DataStorage(h,_storage.KameleoonStorageKey.ConsentData),u=new _kameleoonData.DataManager({storage:q,cleanupInterval:g.cleanupInterval}),v=null!==(b=null===d||void 0===d?void 0:d.urlProvider)&&void 0!==b?b:new _requester.UrlProvider;v.initialize({domain:g.networkDomain,siteCode:g.siteCode,packageInfo:j,environment:g.environment});const w=new _requester.Requester({urlProvider:v,packageInfo:j,externalRequester:l,requestTimeout:g.requestTimeout,trackRetryDelay:g.trackRetryDelay}),x=new _eventSource.KameleoonEventSource({siteCode:g.siteCode,externalEventSource:i,urlProvider:v}),y=new _eventManager.EventManager,z=new _clientConfiguration.ClientConfiguration({urlProvider:v,storage:p,updateInterval:g.updateInterval,dataManager:u,eventManager:y,requester:w,externalClientConfiguration:m,offlineTrackingStorage:s,eventSource:x,externalVisitorCodeManager:k}),A=new _variationConfiguration.VariationConfiguration(r);_utilities.Utilities.prng=n,this.variationConfiguration=A,this.requester=w,this.trackingCache=o,this.dataManager=u,this.clientConfiguration=z,this.externalPackageInfo=j,this.offlineTrackingStorage=s,this.consentDataStorage=t,this.visitorCodeManager=k,this.eventManager=y}async initialize(a){const b=await this.clientConfiguration.initialize();return b.throw(),this.isOfflineModeOn=a,this.initialized=!0,b.ok}addData(a){if(_utilities.Utilities.validateVisitorCode(a).throw(),!this.initialized)throw new _kameleoonError.KameleoonError(_kameleoonError.KameleoonException.Initialization);for(var b=arguments.length,c=Array(1<b?b-1:0),d=1;d<b;d++)c[d-1]=arguments[d];this.dataManager.addData(a,...c).throw()}async getRemoteVisitorData(a){let{visitorCode:b,shouldAddData:c=!0,filters:d=_constants.DEFAULT_VISITOR_DATA_FILTERS,isUniqueIdentifier:e=!1}=a;if(!this.initialized)throw new _kameleoonError.KameleoonError(_kameleoonError.KameleoonException.Initialization);_utilities.Utilities.validateVisitorCode(b).throw();const{previousVisitAmount:f}=d;if("number"==typeof f&&(1>f||25<f))throw new _kameleoonError.KameleoonError(_kameleoonError.KameleoonException.VisitAmount);const g=await this.requester.getVisitorData({visitorCode:b,filters:d,isMappingIdentifier:e}),h=g.throw(),{visitorData:i,storageVisitorData:j,visitsData:k}=_utilities.Utilities.parseVisitorData({data:h,filters:d,visitorCode:b,dataManager:this.dataManager,variationConfiguration:this.variationConfiguration});for(const d of j)(c||this.dataManager.isPersistentCustomData(d))&&this.addData(b,d);return k&&c&&this.addData(b,k),i}trackConversion(a){let{visitorCode:b,goalId:c,revenue:d,isUniqueIdentifier:e}=a;this.addData(b,new _kameleoonData.Conversion({goalId:c,revenue:d})),this.flush(b,e)}flush(a,b){if(!this.initialized)throw new _kameleoonError.KameleoonError(_kameleoonError.KameleoonException.Initialization);if("string"==typeof a&&_utilities.Utilities.validateVisitorCode(a).throw(),a){let c=!1;if(b){const b=this.dataManager.getLinkedVisitor(a),d=this.dataManager.identifierCustomDataIndex;b||"number"!=typeof d?c=!0:this.dataManager.addData(a,new _kameleoonData.CustomData(d,a))}return void _utilities.Utilities.trackData({visitorCode:a,isMappingIdentifier:c,dataManager:this.dataManager,requester:this.requester,isOfflineModeOn:this.isOfflineModeOn,isConsentProvided:this._isConsentProvided(a),offlineTrackingStorage:this.offlineTrackingStorage})}if(!this.dataManager.unsentDataVisitors.length)return void _utilities.Utilities.sendOfflineTracking({requester:this.requester,storage:this.offlineTrackingStorage});for(const c of this.dataManager.unsentDataVisitors)_utilities.Utilities.trackData({visitorCode:c,dataManager:this.dataManager,requester:this.requester,isOfflineModeOn:this.isOfflineModeOn,isConsentProvided:this._isConsentProvided(c),offlineTrackingStorage:this.offlineTrackingStorage})}getFeatureFlags(){if(!this.initialized)throw new _kameleoonError.KameleoonError(_kameleoonError.KameleoonException.Initialization);const a=this.clientConfiguration.featureFlags,b=[];return a.forEach(a=>{let{id:c,featureKey:d}=a;b.push({id:c,key:d})}),b}getVisitorFeatureFlags(a){if(!this.initialized)throw new _kameleoonError.KameleoonError(_kameleoonError.KameleoonException.Initialization);const b=this._getActiveFeatureVariations(a),c=[];return b.forEach(a=>{let{featureFlagId:b,featureKey:d}=a;c.push({id:b,key:d})}),c}getActiveFeatureFlags(a){const b=this._getActiveFeatureVariations(a),c=new Map;return b.forEach(b=>{const{variationKey:d,featureKey:e,variationId:f,experimentId:g}=b;let h=[];null!==f&&null!==g&&(h=this._getFeatureVariables({visitorCode:a,featureKey:e,variationKey:d}));const i=h.map(a=>_utilities.Utilities.parseFeatureVariable(a).throw());c.set(b.featureKey,{key:d,id:f,experimentId:g,variables:i})}),c}getFeatureFlagVariationKey(a,b){_utilities.Utilities.validateVisitorCode(a).throw();const{variationKey:c}=this._getFeatureVariation(a,b).throw();return c}getFeatureFlagVariable(a){let{visitorCode:b,featureKey:c,variableKey:d}=a;_utilities.Utilities.validateVisitorCode(b).throw();const{variationKey:e}=this._getFeatureVariation(b,c).throw(),f=this._getFeatureVariables({visitorCode:b,featureKey:c,variationKey:e}),g=f.find(a=>a.key===d);if(!g)throw new _kameleoonError.KameleoonError(_kameleoonError.KameleoonException.FeatureFlagVariableNotFound,d,b);const{type:h,value:i}=_utilities.Utilities.parseFeatureVariable(g).throw();return{type:h,value:i}}getFeatureFlagVariables(a,b){_utilities.Utilities.validateVisitorCode(a).throw();const{variationKey:c}=this._getFeatureVariation(a,b).throw(),d=this._getFeatureVariables({visitorCode:a,featureKey:b,variationKey:c}),e=[];for(const c of d){const a=_utilities.Utilities.parseFeatureVariable(c).throw();e.push(a)}return e}isFeatureFlagActive(a,b){try{const c=this.getFeatureFlagVariationKey(a,b);return c!==_constants.OFF_VARIATION_KEY}catch(a){if(a instanceof _kameleoonError.KameleoonError&&a.type===_kameleoonError.KameleoonException.FeatureFlagEnvironmentDisabled)return!1;throw a}}async getRemoteData(a){const b=await this.requester.getRemoteData(a);return b.throw()}async getVisitorWarehouseAudience(a){let{visitorCode:b,customDataIndex:c,warehouseKey:d}=a;_utilities.Utilities.validateVisitorCode(b).throw();const e=await this.getRemoteData(d||b);if(!e)throw new _kameleoonError.KameleoonError(_kameleoonError.KameleoonException.RemoteData,"No data found for ".concat(d||b," key"));if(!e[_constants.WAREHOUSE_AUDIENCE_KEY]||0===Object.keys(e[_constants.WAREHOUSE_AUDIENCE_KEY]).length)return null;const f=new _kameleoonData.CustomData(c,...Object.keys(e[_constants.WAREHOUSE_AUDIENCE_KEY]));return this.dataManager.addData(b,f),f}onConfigurationUpdate(a){if(!this.initialized)throw new _kameleoonError.KameleoonError(_kameleoonError.KameleoonException.Initialization);this.eventManager.addEventHandler(_eventManager.EventType.ConfigurationUpdate,a)}onEvent(a,b){if(!this.initialized)throw new _kameleoonError.KameleoonError(_kameleoonError.KameleoonException.Initialization);this.eventManager.addEventHandler(a,b)}getEngineTrackingCode(a){return _utilities.Utilities.validateVisitorCode(a).throw(),_utilities.Utilities.getTrackingCode(this.trackingCache,a)}isInitialized(){return this.initialized}setUserConsent(a){let{visitorCode:b,consent:c,setData:d}=a;_utilities.Utilities.validateVisitorCode(b).throw(),this.consentDataStorage.update({[b]:c}),c?d({visitorCode:b,key:_storage.KameleoonStorageKey.VisitorCode,maxAge:_visitorCodeManager.DEFAULT_MAX_AGE,path:_visitorCodeManager.PATH}):this.visitorCodeManager.consentRequired&&d({visitorCode:"",key:_storage.KameleoonStorageKey.VisitorCode,maxAge:_visitorCodeManager.ZERO_MAX_AGE,path:_visitorCodeManager.PATH})}_isConsentProvided(a){const{isConsentRequired:b}=this.clientConfiguration,c=this.consentDataStorage.read();return!b||c.ok&&c.data[a]}_getFeatureVariables(a){let{visitorCode:b,featureKey:c,variationKey:d}=a;const e=this.clientConfiguration.featureFlags,f=e.get(c);if(!f)throw new _kameleoonError.KameleoonError(_kameleoonError.KameleoonException.FeatureFlagConfigurationNotFound,c);const g=f.variations.find(a=>a.key===d);if(!g)throw new _kameleoonError.KameleoonError(_kameleoonError.KameleoonException.FeatureFlagVariationNotFound,d,b);return g.variables}_getActiveFeatureVariations(a){if(!this.initialized)throw new _kameleoonError.KameleoonError(_kameleoonError.KameleoonException.Initialization);const b=this.clientConfiguration.featureFlags,c=[],d=this.dataManager.getTargetingData(a),e=this.dataManager.getVisitorIdentifier(a);for(const f of b.values()){if(!f.environmentEnabled)continue;const b=this.variationConfiguration.getVariation({visitorCode:a,visitorIdentifier:e,targetingData:d,featureFlag:f,clientConfiguration:this.clientConfiguration,dataManager:this.dataManager,packageInfo:this.externalPackageInfo}).throw();this.eventManager.fireEvent(_eventManager.EventType.Evaluation,{featureKey:f.featureKey,variation:{key:b.variationKey,experimentId:b.experimentId,id:b.variationId}}),b.variationKey!==_constants.OFF_VARIATION_KEY&&c.push(b)}return c}_getFeatureVariation(a,b){if(!this.initialized)return(0,_tsRes.Err)(new _kameleoonError.KameleoonError(_kameleoonError.KameleoonException.Initialization));const c=this.clientConfiguration.featureFlags,d=c.get(b);if(!d)return(0,_tsRes.Err)(new _kameleoonError.KameleoonError(_kameleoonError.KameleoonException.FeatureFlagConfigurationNotFound,b));if(!d.environmentEnabled)return(0,_tsRes.Err)(new _kameleoonError.KameleoonError(_kameleoonError.KameleoonException.FeatureFlagEnvironmentDisabled,d.featureKey,this.environment));const e=this.dataManager.getTargetingData(a),f=this.dataManager.getVisitorIdentifier(a),g=this.variationConfiguration.getVariation({visitorCode:a,visitorIdentifier:f,featureFlag:d,targetingData:e,withAssignment:!0,clientConfiguration:this.clientConfiguration,dataManager:this.dataManager,packageInfo:this.externalPackageInfo}).throw();this.eventManager.fireEvent(_eventManager.EventType.Evaluation,{featureKey:b,variation:{key:g.variationKey,experimentId:g.experimentId,id:g.variationId}});const{experimentId:h,variationId:i}=g;return"number"==typeof i&&"number"==typeof h&&_utilities.Utilities.updateCache({cacheManager:this.trackingCache,visitorCode:a,experimentId:h,variationId:i}),_utilities.Utilities.trackFeatureExperiment({visitorCode:a,featureFlagVariation:g,requester:this.requester,dataManager:this.dataManager,isOfflineModeOn:this.isOfflineModeOn,isConsentProvided:this._isConsentProvided(a),offlineTrackingStorage:this.offlineTrackingStorage,variationConfiguration:this.variationConfiguration}),(0,_tsRes.Ok)(g)}}exports.KameleoonClient=KameleoonClient;
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.KameleoonClient=void 0;var _tsRes=require("ts-res"),_cacheManager=require("./cacheManager"),_clientConfiguration=require("./clientConfiguration"),_clientSettings=require("./clientSettings"),_constants=require("./constants"),_kameleoonData=require("./kameleoonData"),_kameleoonError=require("./kameleoonError"),_requester=require("./requester"),_storage=require("./storage"),_types=require("./types"),_utilities=require("./utilities"),_variationConfiguration=require("./variationConfiguration"),_eventSource=require("./eventSource"),_visitorCodeManager=require("./visitorCodeManager"),_eventManager=require("./eventManager"),_tracking=require("./tracking");function _defineProperty(a,b,c){return(b=_toPropertyKey(b))in a?Object.defineProperty(a,b,{value:c,enumerable:!0,configurable:!0,writable:!0}):a[b]=c,a}function _toPropertyKey(a){var b=_toPrimitive(a,"string");return"symbol"==typeof b?b:b+""}function _toPrimitive(a,b){if("object"!=typeof a||!a)return a;var c=a[Symbol.toPrimitive];if(void 0!==c){var d=c.call(a,b||"default");if("object"!=typeof d)return d;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===b?String:Number)(a)}class KameleoonClient{constructor(a){let{siteCode:b,dependencies:c,configuration:d,internalConfiguration:e}=a;_defineProperty(this,"variationConfiguration",void 0),_defineProperty(this,"clientConfiguration",void 0),_defineProperty(this,"dataManager",void 0),_defineProperty(this,"consentDataStorage",void 0),_defineProperty(this,"trackingCache",void 0),_defineProperty(this,"requester",void 0),_defineProperty(this,"externalPackageInfo",void 0),_defineProperty(this,"initialized",!1),_defineProperty(this,"visitorCodeManager",void 0),_defineProperty(this,"eventManager",void 0),_defineProperty(this,"tracker",void 0),_defineProperty(this,"environment",void 0);const{settings:f}=new _clientSettings.ClientSettings(b,d);this.environment=f.environment;const{externalStorage:g,externalEventSource:h,externalPackageInfo:i,externalVisitorCodeManager:j,externalRequester:k,externalPRNG:l}=e.externals,{useAbortController:m}=e.settings,n=new _cacheManager.CacheManager(_constants.CACHE_CLEANUP_TIMEOUT),o=new _storage.DataStorage(g,_storage.KameleoonStorageKey.ClientData),p=new _storage.DataStorage(g,_storage.KameleoonStorageKey.TargetingData),q=new _storage.DataStorage(g,_storage.KameleoonStorageKey.DataInfo),r=new _storage.DataStorage(g,_storage.KameleoonStorageKey.VariationData),s=new _storage.DataStorage(g,_storage.KameleoonStorageKey.ConsentData),t=new _storage.DataStorage(g,_storage.KameleoonStorageKey.TrackingData),u=new _kameleoonData.DataManager({dataStorage:p,infoStorage:q,cleanupInterval:f.cleanupInterval}),v=(null===c||void 0===c?void 0:c.urlProvider)??new _requester.UrlProvider;v.initialize({domain:f.networkDomain,siteCode:f.siteCode,packageInfo:i,environment:f.environment});const w=new _requester.Requester({urlProvider:v,useAbortController:m,packageInfo:i,externalRequester:k,requestTimeout:f.requestTimeout,trackRetryDelay:f.trackRetryDelay}),x=new _eventSource.KameleoonEventSource({siteCode:f.siteCode,externalEventSource:h,urlProvider:v}),y=new _eventManager.EventManager,z=new _clientConfiguration.ClientConfiguration({urlProvider:v,storage:o,updateInterval:f.updateInterval,dataManager:u,eventManager:y,requester:w,eventSource:x,externalVisitorCodeManager:j}),A=new _variationConfiguration.VariationConfiguration(r,j),B=new _tracking.Tracker({dataManager:u,trackingStorage:t,variationConfiguration:A,requester:w,trackingInterval:f.trackingInterval,prng:l});this.tracker=B,this.variationConfiguration=A,this.requester=w,this.trackingCache=n,this.dataManager=u,this.clientConfiguration=z,this.externalPackageInfo=i,this.consentDataStorage=s,this.visitorCodeManager=j,this.eventManager=y}async initialize(){const a=await this.clientConfiguration.initialize();return a.throw(),this.initialized=!0,a.ok}addData(a){if(this.visitorCodeManager.validateVisitorCode(a).throw(),!this.initialized)throw new _kameleoonError.KameleoonError(_kameleoonError.KameleoonException.Initialization);for(var b=arguments.length,c=Array(1<b?b-1:0),d=1;d<b;d++)c[d-1]=arguments[d];this.dataManager.storeData(a,...c).throw()}async getRemoteVisitorData(a){let{visitorCode:b,shouldAddData:c=!0,filters:d=_constants.DEFAULT_VISITOR_DATA_FILTERS}=a;if(!this.initialized)throw new _kameleoonError.KameleoonError(_kameleoonError.KameleoonException.Initialization);this.visitorCodeManager.validateVisitorCode(b).throw();const{previousVisitAmount:e}=d;if("number"==typeof e&&(1>e||25<e))throw new _kameleoonError.KameleoonError(_kameleoonError.KameleoonException.VisitAmount);const f=this.dataManager.isUniqueIdentifier(b),g=await this.requester.getVisitorData({visitorCode:b,filters:d,isMappingIdentifier:f}),h=g.throw(),{visitorData:i,storageVisitorData:j,visitsData:k}=_utilities.Parser.parseVisitorData({data:h,filters:d,visitorCode:b,dataManager:this.dataManager,variationConfiguration:this.variationConfiguration});for(const d of j)(c||this.dataManager.isPersistentCustomData(d))&&this.addData(b,d);return k&&c&&this.addData(b,k),i}trackConversion(a){let{visitorCode:b,goalId:c,revenue:d}=a;this.addData(b,new _kameleoonData.Conversion({goalId:c,revenue:d})),this.flush(b)}flush(a){if(!this.initialized)throw new _kameleoonError.KameleoonError(_kameleoonError.KameleoonException.Initialization);if("string"==typeof a)return this.visitorCodeManager.validateVisitorCode(a).throw(),void this.tracker.scheduleVisitor(a,this._isConsentProvided(a));for(const b of this.dataManager.unsentDataVisitors)this.tracker.scheduleVisitor(b,this._isConsentProvided(b))}getFeatureFlags(){if(!this.initialized)throw new _kameleoonError.KameleoonError(_kameleoonError.KameleoonException.Initialization);const a=this.clientConfiguration.featureFlags,b=[];return a.forEach(a=>{let{id:c,featureKey:d}=a;b.push({id:c,key:d})}),b}getVisitorFeatureFlags(a){if(!this.initialized)throw new _kameleoonError.KameleoonError(_kameleoonError.KameleoonException.Initialization);const b=this._getActiveFeatureVariations(a),c=[];return b.forEach(a=>{let{featureFlagId:b,featureKey:d}=a;c.push({id:b,key:d})}),c}getActiveFeatureFlags(a){const b=this._getActiveFeatureVariations(a),c=new Map;return b.forEach(b=>{const{variationKey:d,featureKey:e,variationId:f,experimentId:g}=b;let h=[];null!==f&&null!==g&&(h=this._getFeatureVariables({visitorCode:a,featureKey:e,variationKey:d}));const i=h.map(a=>_utilities.Parser.parseFeatureVariable(a).throw());c.set(b.featureKey,{key:d,id:f,experimentId:g,variables:i})}),c}getFeatureFlagVariationKey(a,b){this.visitorCodeManager.validateVisitorCode(a).throw();const{variationKey:c}=this._getFeatureVariation(a,b).throw();return c}getFeatureFlagVariable(a){let{visitorCode:b,featureKey:c,variableKey:d}=a;this.visitorCodeManager.validateVisitorCode(b).throw();const{variationKey:e}=this._getFeatureVariation(b,c).throw(),f=this._getFeatureVariables({visitorCode:b,featureKey:c,variationKey:e}),g=f.find(a=>a.key===d);if(!g)throw new _kameleoonError.KameleoonError(_kameleoonError.KameleoonException.FeatureFlagVariableNotFound,d,b);const{type:h,value:i}=_utilities.Parser.parseFeatureVariable(g).throw();return{type:h,value:i}}getFeatureFlagVariables(a,b){this.visitorCodeManager.validateVisitorCode(a).throw();const{variationKey:c}=this._getFeatureVariation(a,b).throw(),d=this._getFeatureVariables({visitorCode:a,featureKey:b,variationKey:c}),e=[];for(const c of d){const a=_utilities.Parser.parseFeatureVariable(c).throw();e.push(a)}return e}isFeatureFlagActive(a,b){try{const c=this.getFeatureFlagVariationKey(a,b);return c!==_constants.OFF_VARIATION_KEY}catch(a){if(a instanceof _kameleoonError.KameleoonError&&a.type===_kameleoonError.KameleoonException.FeatureFlagEnvironmentDisabled)return!1;throw a}}async getRemoteData(a){const b=await this.requester.getRemoteData(a);return b.throw()}async getVisitorWarehouseAudience(a){let{visitorCode:b,customDataIndex:c,warehouseKey:d}=a;this.visitorCodeManager.validateVisitorCode(b).throw();const e=await this.getRemoteData(d||b);if(!e)throw new _kameleoonError.KameleoonError(_kameleoonError.KameleoonException.RemoteData,`No data found for ${d||b} key`);if(!e[_constants.WAREHOUSE_AUDIENCE_KEY]||0===Object.keys(e[_constants.WAREHOUSE_AUDIENCE_KEY]).length)return null;const f=new _kameleoonData.CustomData(c,...Object.keys(e[_constants.WAREHOUSE_AUDIENCE_KEY]));return this.dataManager.storeData(b,f),f}onEvent(a,b){if(!this.initialized)throw new _kameleoonError.KameleoonError(_kameleoonError.KameleoonException.Initialization);this.eventManager.addEventHandler(a,b)}getEngineTrackingCode(a){return this.visitorCodeManager.validateVisitorCode(a).throw(),_utilities.Utilities.getTrackingCode(this.trackingCache,a)}isInitialized(){return this.initialized}setUserConsent(a){let{visitorCode:b,consent:c,setData:d}=a;this.visitorCodeManager.validateVisitorCode(b).throw(),this.consentDataStorage.update({[b]:c}),c?d({visitorCode:b,key:_storage.KameleoonStorageKey.VisitorCode,maxAge:_visitorCodeManager.DEFAULT_MAX_AGE,path:_visitorCodeManager.PATH}):this.visitorCodeManager.consentRequired&&d({visitorCode:"",key:_storage.KameleoonStorageKey.VisitorCode,maxAge:_visitorCodeManager.ZERO_MAX_AGE,path:_visitorCodeManager.PATH})}_isConsentProvided(a){const{isConsentRequired:b}=this.clientConfiguration,c=this.consentDataStorage.read();return!b||c.ok&&c.data[a]}_getFeatureVariables(a){let{visitorCode:b,featureKey:c,variationKey:d}=a;const e=this.clientConfiguration.featureFlags,f=e.get(c);if(!f)throw new _kameleoonError.KameleoonError(_kameleoonError.KameleoonException.FeatureFlagConfigurationNotFound,c);const g=f.variations.find(a=>a.key===d);if(!g)throw new _kameleoonError.KameleoonError(_kameleoonError.KameleoonException.FeatureFlagVariationNotFound,d,b);return g.variables}_getActiveFeatureVariations(a){if(!this.initialized)throw new _kameleoonError.KameleoonError(_kameleoonError.KameleoonException.Initialization);const b=this.clientConfiguration.featureFlags,c=[],d=this.dataManager.getVisitorData(a),e=this.dataManager.getVisitorIdentifier(a);for(const f of b.values()){if(!f.environmentEnabled)continue;const b=this.variationConfiguration.getVariation({visitorCode:a,visitorIdentifier:e,targetingData:d,featureFlag:f,clientConfiguration:this.clientConfiguration,dataManager:this.dataManager,packageInfo:this.externalPackageInfo}).throw();this.eventManager.fireEvent(_eventManager.EventType.Evaluation,{featureKey:f.featureKey,variation:{key:b.variationKey,experimentId:b.experimentId,id:b.variationId}}),b.variationKey!==_constants.OFF_VARIATION_KEY&&c.push(b)}return c}_getFeatureVariation(a,b){if(!this.initialized)return(0,_tsRes.Err)(new _kameleoonError.KameleoonError(_kameleoonError.KameleoonException.Initialization));const c=this.clientConfiguration.featureFlags,d=c.get(b);if(!d)return(0,_tsRes.Err)(new _kameleoonError.KameleoonError(_kameleoonError.KameleoonException.FeatureFlagConfigurationNotFound,b));if(!d.environmentEnabled)return(0,_tsRes.Err)(new _kameleoonError.KameleoonError(_kameleoonError.KameleoonException.FeatureFlagEnvironmentDisabled,d.featureKey,this.environment));const e=this.dataManager.getVisitorData(a),f=this.dataManager.getVisitorIdentifier(a),g=this.variationConfiguration.getVariation({visitorCode:a,visitorIdentifier:f,featureFlag:d,withAssignment:!0,targetingData:e,clientConfiguration:this.clientConfiguration,dataManager:this.dataManager,packageInfo:this.externalPackageInfo}).throw();this.eventManager.fireEvent(_eventManager.EventType.Evaluation,{featureKey:b,variation:{key:g.variationKey,experimentId:g.experimentId,id:g.variationId}});const{experimentId:h,variationId:i,variationKey:j}=g;if("number"==typeof i&&"number"==typeof h){let c=!1;try{const d=this._getFeatureVariables({visitorCode:a,featureKey:b,variationKey:j});c=d.some(a=>{let{type:b}=a;return b===_types.VariableType.JS||b===_types.VariableType.CSS})}catch(_){}_utilities.Utilities.updateCache({cacheManager:this.trackingCache,hasJsCssVariables:c,visitorCode:a,experimentId:h,variationId:i})}return this.tracker.scheduleVisitor(a,this._isConsentProvided(a)),(0,_tsRes.Ok)(g)}}exports.KameleoonClient=KameleoonClient;
|
|
2
2
|
//# sourceMappingURL=kameleoonClient.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"kameleoonClient.js","names":["KameleoonClient","constructor","a","b","siteCode","dependencies","configuration","internalConfiguration","_defineProperty","settings","clientSettings","ClientSettings","environment","externalStorage","externalEventSource","externalPackageInfo","externalVisitorCodeManager","externalRequester","externalClientConfiguration","externalPRNG","trackingCache","CacheManager","CACHE_CLEANUP_TIMEOUT","clientDataStorage","DataStorage","KameleoonStorageKey","ClientData","targetingDataStorage","TargetingData","variationDataStorage","VariationData","offlineTrackingStorage","OfflineTracking","consentDataStorage","ConsentData","dataManager","DataManager","storage","cleanupInterval","urlProvider","UrlProvider","initialize","domain","networkDomain","packageInfo","requester","Requester","requestTimeout","trackRetryDelay","eventSource","KameleoonEventSource","eventManager","EventManager","clientConfiguration","ClientConfiguration","updateInterval","variationConfiguration","VariationConfiguration","Utilities","prng","visitorCodeManager","useCache","result","throw","isOfflineModeOn","initialized","ok","addData","visitorCode","validateVisitorCode","KameleoonError","KameleoonException","Initialization","arguments","length","data","Array","d","getRemoteVisitorData","shouldAddData","filters","DEFAULT_VISITOR_DATA_FILTERS","isUniqueIdentifier","previousVisitAmount","VisitAmount","getVisitorData","isMappingIdentifier","visitorData","storageVisitorData","visitsData","parseVisitorData","dataItem","isPersistentCustomData","trackConversion","goalId","revenue","Conversion","flush","linkedVisitor","getLinkedVisitor","index","identifierCustomDataIndex","CustomData","trackData","isConsentProvided","_isConsentProvided","unsentDataVisitors","sendOfflineTracking","visitorCodeKey","getFeatureFlags","featureFlags","resultFeatureFlags","forEach","id","featureKey","push","key","getVisitorFeatureFlags","activeVariations","_getActiveFeatureVariations","featureFlagId","getActiveFeatureFlags","resultFeatureList","Map","variation","variationKey","variationId","experimentId","variables","_getFeatureVariables","resultVariables","map","variable","parseFeatureVariable","set","getFeatureFlagVariationKey","_getFeatureVariation","getFeatureFlagVariable","variableKey","find","item","FeatureFlagVariableNotFound","type","value","getFeatureFlagVariables","parsedVariable","isFeatureFlagActive","OFF_VARIATION_KEY","err","FeatureFlagEnvironmentDisabled","getRemoteData","remoteData","getVisitorWarehouseAudience","customDataIndex","warehouseKey","RemoteData","concat","WAREHOUSE_AUDIENCE_KEY","Object","keys","customData","onConfigurationUpdate","callback","addEventHandler","EventType","ConfigurationUpdate","onEvent","event","getEngineTrackingCode","getTrackingCode","isInitialized","setUserConsent","consent","setData","update","VisitorCode","maxAge","DEFAULT_MAX_AGE","path","PATH","consentRequired","ZERO_MAX_AGE","isConsentRequired","consentDataResult","read","featureFlag","get","FeatureFlagConfigurationNotFound","variations","FeatureFlagVariationNotFound","targetingData","getTargetingData","visitorIdentifier","getVisitorIdentifier","values","environmentEnabled","variationData","getVariation","fireEvent","Evaluation","Err","withAssignment","updateCache","cacheManager","trackFeatureExperiment","featureFlagVariation","Ok","exports"],"sources":["../src/kameleoonClient.ts"],"sourcesContent":["import { Err, Ok, Result } from 'ts-res';\nimport { CacheManager } from './cacheManager';\nimport {\n ClientConfiguration,\n FeatureVariableType,\n JSONType,\n} from './clientConfiguration';\nimport { ClientSettings } from './clientSettings';\nimport {\n CACHE_CLEANUP_TIMEOUT,\n DEFAULT_VISITOR_DATA_FILTERS,\n OFF_VARIATION_KEY,\n} from './constants';\nimport {\n Conversion,\n CustomData,\n DataManager,\n KameleoonDataType,\n} from './kameleoonData';\nimport { WAREHOUSE_AUDIENCE_KEY } from './constants';\nimport { KameleoonError, KameleoonException } from './kameleoonError';\nimport { Requester, UrlProvider } from './requester';\nimport {\n ClientDataType,\n KameleoonStorageKey,\n VariationDataType,\n DataStorage,\n ConsentDataType,\n IStorage,\n OfflineTracking,\n} from './storage';\nimport {\n TrackConversionParamsType,\n FeatureFlagType,\n GetFeatureFlagVariableParamsType,\n FeatureVariableResultType,\n SDKCoreParameters,\n TrackingCacheItemType,\n ExternalPackageInfoType,\n RemoteVisitorDataParamsType,\n GetVisitorWarehouseAudienceParamsType,\n Environment,\n SetUserConsentParametersType,\n FeatureFlagVariableType,\n KameleoonVariationType,\n GetFeatureVariablesParamsType,\n} from './types';\nimport { IVisitorCodeManager } from './visitorCodeManager';\nimport { Utilities } from './utilities';\nimport {\n FeatureFlagVariationType,\n VariationConfiguration,\n} from './variationConfiguration';\nimport { TargetingDataType } from './targeting';\nimport { EventCallbackType, EventManager, EventType } from './eventManager';\nimport { KameleoonEventSource } from './eventSource';\nimport { IKameleoonClient } from './kameleoonClientInterface';\nimport { DEFAULT_MAX_AGE, PATH, ZERO_MAX_AGE } from './visitorCodeManager';\n\n/**\n * @class\n * KameleoonClient - a class for creating kameleoon client instance\n * for communicating with Kameleoon JavaScript SDK Core, when new instance is created\n */\nexport class KameleoonClient implements IKameleoonClient {\n private variationConfiguration: VariationConfiguration;\n private clientConfiguration: ClientConfiguration;\n private dataManager: DataManager;\n private offlineTrackingStorage: IStorage<OfflineTracking>;\n private consentDataStorage: IStorage<ConsentDataType>;\n private trackingCache: CacheManager<TrackingCacheItemType>;\n private requester: Requester;\n private externalPackageInfo: ExternalPackageInfoType;\n private initialized: boolean = false;\n private visitorCodeManager: IVisitorCodeManager;\n private eventManager: EventManager;\n private environment: Environment;\n private isOfflineModeOn?: boolean;\n\n /**\n * @param {SDKCoreParameters} sdkCoreParameters - parameters for initializing sdk core\n */\n constructor({\n siteCode,\n dependencies,\n configuration,\n internalConfiguration,\n }: SDKCoreParameters) {\n const { settings: clientSettings } = new ClientSettings(\n siteCode,\n configuration,\n );\n this.environment = clientSettings.environment;\n const {\n externalStorage,\n externalEventSource,\n externalPackageInfo,\n externalVisitorCodeManager,\n externalRequester,\n externalClientConfiguration,\n externalPRNG,\n } = internalConfiguration;\n const trackingCache = new CacheManager<TrackingCacheItemType>(\n CACHE_CLEANUP_TIMEOUT,\n );\n\n const clientDataStorage = new DataStorage<ClientDataType>(\n externalStorage,\n KameleoonStorageKey.ClientData,\n );\n const targetingDataStorage = new DataStorage<TargetingDataType>(\n externalStorage,\n KameleoonStorageKey.TargetingData,\n );\n const variationDataStorage = new DataStorage<VariationDataType>(\n externalStorage,\n KameleoonStorageKey.VariationData,\n );\n const offlineTrackingStorage = new DataStorage<OfflineTracking>(\n externalStorage,\n KameleoonStorageKey.OfflineTracking,\n );\n const consentDataStorage = new DataStorage<ConsentDataType>(\n externalStorage,\n KameleoonStorageKey.ConsentData,\n );\n\n const dataManager = new DataManager({\n storage: targetingDataStorage,\n cleanupInterval: clientSettings.cleanupInterval,\n });\n\n const urlProvider = dependencies?.urlProvider ?? new UrlProvider();\n\n urlProvider.initialize({\n domain: clientSettings.networkDomain,\n siteCode: clientSettings.siteCode,\n packageInfo: externalPackageInfo,\n environment: clientSettings.environment,\n });\n\n const requester = new Requester({\n urlProvider,\n packageInfo: externalPackageInfo,\n externalRequester: externalRequester,\n requestTimeout: clientSettings.requestTimeout,\n trackRetryDelay: clientSettings.trackRetryDelay,\n });\n\n const eventSource = new KameleoonEventSource({\n siteCode: clientSettings.siteCode,\n externalEventSource,\n urlProvider,\n });\n\n const eventManager = new EventManager();\n\n const clientConfiguration = new ClientConfiguration({\n urlProvider,\n storage: clientDataStorage,\n updateInterval: clientSettings.updateInterval,\n dataManager,\n eventManager,\n requester,\n externalClientConfiguration,\n offlineTrackingStorage,\n eventSource,\n externalVisitorCodeManager,\n });\n\n const variationConfiguration = new VariationConfiguration(\n variationDataStorage,\n );\n\n Utilities.prng = externalPRNG;\n\n this.variationConfiguration = variationConfiguration;\n this.requester = requester;\n this.trackingCache = trackingCache;\n this.dataManager = dataManager;\n this.clientConfiguration = clientConfiguration;\n this.externalPackageInfo = externalPackageInfo;\n this.offlineTrackingStorage = offlineTrackingStorage;\n this.consentDataStorage = consentDataStorage;\n this.visitorCodeManager = externalVisitorCodeManager;\n this.eventManager = eventManager;\n }\n\n public async initialize(useCache?: boolean): Promise<boolean> {\n const result = await this.clientConfiguration.initialize();\n result.throw();\n\n this.isOfflineModeOn = useCache;\n this.initialized = true;\n\n return result.ok;\n }\n\n public addData(visitorCode: string, ...data: KameleoonDataType[]): void {\n Utilities.validateVisitorCode(visitorCode).throw();\n\n if (!this.initialized) {\n throw new KameleoonError(KameleoonException.Initialization);\n }\n\n this.dataManager.addData(visitorCode, ...data).throw();\n }\n\n public async getRemoteVisitorData({\n visitorCode,\n shouldAddData = true,\n filters = DEFAULT_VISITOR_DATA_FILTERS,\n isUniqueIdentifier = false,\n }: RemoteVisitorDataParamsType): Promise<KameleoonDataType[]> {\n if (!this.initialized) {\n throw new KameleoonError(KameleoonException.Initialization);\n }\n\n Utilities.validateVisitorCode(visitorCode).throw();\n\n const { previousVisitAmount } = filters;\n\n if (\n typeof previousVisitAmount === 'number' &&\n (previousVisitAmount < 1 || previousVisitAmount > 25)\n ) {\n throw new KameleoonError(KameleoonException.VisitAmount);\n }\n\n const result = await this.requester.getVisitorData({\n visitorCode,\n filters,\n isMappingIdentifier: isUniqueIdentifier,\n });\n const data = result.throw();\n\n const { visitorData, storageVisitorData, visitsData } =\n Utilities.parseVisitorData({\n data,\n filters,\n visitorCode,\n dataManager: this.dataManager,\n variationConfiguration: this.variationConfiguration,\n });\n\n for (const dataItem of storageVisitorData) {\n if (shouldAddData || this.dataManager.isPersistentCustomData(dataItem)) {\n this.addData(visitorCode, dataItem);\n }\n }\n\n // --- Note ---\n // Data on visits amount and time stamps is not returned to a user\n if (visitsData && shouldAddData) {\n this.addData(visitorCode, visitsData);\n }\n\n return visitorData;\n }\n\n public trackConversion({\n visitorCode,\n goalId,\n revenue,\n isUniqueIdentifier,\n }: TrackConversionParamsType): void {\n this.addData(visitorCode, new Conversion({ goalId, revenue }));\n this.flush(visitorCode, isUniqueIdentifier);\n }\n\n public flush(visitorCode?: string, isUniqueIdentifier?: boolean): void {\n if (!this.initialized) {\n throw new KameleoonError(KameleoonException.Initialization);\n }\n\n if (typeof visitorCode === 'string') {\n Utilities.validateVisitorCode(visitorCode).throw();\n }\n\n if (visitorCode) {\n let isMappingIdentifier = false;\n\n // --- Note ---\n // This part is a workaround for Data API\n // If there's is no unique identifier for the visitor\n // We do reconciliation for visitor with himself\n if (isUniqueIdentifier) {\n const linkedVisitor = this.dataManager.getLinkedVisitor(visitorCode);\n const index = this.dataManager.identifierCustomDataIndex;\n\n if (!linkedVisitor && typeof index === 'number') {\n this.dataManager.addData(\n visitorCode,\n new CustomData(index, visitorCode),\n );\n } else {\n isMappingIdentifier = true;\n }\n }\n\n Utilities.trackData({\n visitorCode,\n isMappingIdentifier,\n dataManager: this.dataManager,\n requester: this.requester,\n isOfflineModeOn: this.isOfflineModeOn,\n isConsentProvided: this._isConsentProvided(visitorCode),\n offlineTrackingStorage: this.offlineTrackingStorage,\n });\n\n return;\n }\n\n // --- Note ---\n // `Utilities.trackData` executes `Utilities.sendOfflineTracking` asynchronously at first, but\n // we need to execute `Utilities.sendOfflineTracking` even if calling `Utilities.trackData` is skipped\n // due to lack of unsent data\n if (!this.dataManager.unsentDataVisitors.length) {\n Utilities.sendOfflineTracking({\n requester: this.requester,\n storage: this.offlineTrackingStorage,\n });\n return;\n }\n\n for (const visitorCodeKey of this.dataManager.unsentDataVisitors) {\n Utilities.trackData({\n visitorCode: visitorCodeKey,\n dataManager: this.dataManager,\n requester: this.requester,\n isOfflineModeOn: this.isOfflineModeOn,\n isConsentProvided: this._isConsentProvided(visitorCodeKey),\n offlineTrackingStorage: this.offlineTrackingStorage,\n });\n }\n }\n\n public getFeatureFlags(): FeatureFlagType[] {\n if (!this.initialized) {\n throw new KameleoonError(KameleoonException.Initialization);\n }\n\n const featureFlags = this.clientConfiguration.featureFlags;\n const resultFeatureFlags: FeatureFlagType[] = [];\n\n featureFlags.forEach(({ id, featureKey }) => {\n resultFeatureFlags.push({\n id,\n key: featureKey,\n });\n });\n\n return resultFeatureFlags;\n }\n\n public getVisitorFeatureFlags(visitorCode: string): FeatureFlagType[] {\n if (!this.initialized) {\n throw new KameleoonError(KameleoonException.Initialization);\n }\n\n const activeVariations = this._getActiveFeatureVariations(visitorCode);\n const resultFeatureFlags: FeatureFlagType[] = [];\n\n activeVariations.forEach(({ featureFlagId, featureKey }) => {\n resultFeatureFlags.push({\n id: featureFlagId,\n key: featureKey,\n });\n });\n\n return resultFeatureFlags;\n }\n\n public getActiveFeatureFlags(\n visitorCode: string,\n ): Map<string, KameleoonVariationType> {\n const activeVariations = this._getActiveFeatureVariations(visitorCode);\n const resultFeatureList: Map<string, KameleoonVariationType> = new Map();\n\n activeVariations.forEach((variation) => {\n const { variationKey, featureKey, variationId, experimentId } = variation;\n\n let variables: FeatureVariableType[] = [];\n\n if (variationId !== null && experimentId !== null) {\n variables = this._getFeatureVariables({\n visitorCode,\n featureKey,\n variationKey,\n });\n }\n\n const resultVariables = variables.map((variable) =>\n Utilities.parseFeatureVariable(variable).throw(),\n );\n\n resultFeatureList.set(variation.featureKey, {\n key: variationKey,\n id: variationId,\n experimentId,\n variables: resultVariables,\n });\n });\n\n return resultFeatureList;\n }\n\n public getFeatureFlagVariationKey(\n visitorCode: string,\n featureKey: string,\n ): string {\n Utilities.validateVisitorCode(visitorCode).throw();\n\n const { variationKey } = this._getFeatureVariation(\n visitorCode,\n featureKey,\n ).throw();\n\n return variationKey;\n }\n\n public getFeatureFlagVariable({\n visitorCode,\n featureKey,\n variableKey,\n }: GetFeatureFlagVariableParamsType): FeatureFlagVariableType {\n Utilities.validateVisitorCode(visitorCode).throw();\n\n const { variationKey } = this._getFeatureVariation(\n visitorCode,\n featureKey,\n ).throw();\n\n const variables = this._getFeatureVariables({\n visitorCode,\n featureKey,\n variationKey,\n });\n const variable = variables.find((item) => item.key === variableKey);\n\n if (!variable) {\n throw new KameleoonError(\n KameleoonException.FeatureFlagVariableNotFound,\n variableKey,\n visitorCode,\n );\n }\n\n const { type, value } = Utilities.parseFeatureVariable(variable).throw();\n\n return { type, value } as FeatureFlagVariableType;\n }\n\n public getFeatureFlagVariables(\n visitorCode: string,\n featureKey: string,\n ): FeatureVariableResultType[] {\n Utilities.validateVisitorCode(visitorCode).throw();\n\n const { variationKey } = this._getFeatureVariation(\n visitorCode,\n featureKey,\n ).throw();\n\n const variables = this._getFeatureVariables({\n visitorCode,\n featureKey,\n variationKey,\n });\n const resultVariables: FeatureVariableResultType[] = [];\n\n for (const variable of variables) {\n const parsedVariable = Utilities.parseFeatureVariable(variable).throw();\n resultVariables.push(parsedVariable);\n }\n\n return resultVariables;\n }\n\n public isFeatureFlagActive(visitorCode: string, featureKey: string): boolean {\n try {\n const variationKey = this.getFeatureFlagVariationKey(\n visitorCode,\n featureKey,\n );\n\n return variationKey !== OFF_VARIATION_KEY;\n } catch (err) {\n if (\n err instanceof KameleoonError &&\n err.type === KameleoonException.FeatureFlagEnvironmentDisabled\n ) {\n return false;\n }\n\n throw err;\n }\n }\n\n public async getRemoteData(key: string): Promise<JSONType> {\n const remoteData = await this.requester.getRemoteData(key);\n\n return remoteData.throw();\n }\n\n public async getVisitorWarehouseAudience({\n visitorCode,\n customDataIndex,\n warehouseKey,\n }: GetVisitorWarehouseAudienceParamsType): Promise<CustomData | null> {\n Utilities.validateVisitorCode(visitorCode).throw();\n\n const data = await this.getRemoteData(warehouseKey || visitorCode);\n\n if (!data) {\n throw new KameleoonError(\n KameleoonException.RemoteData,\n `No data found for ${warehouseKey || visitorCode} key`,\n );\n }\n\n if (\n !data[WAREHOUSE_AUDIENCE_KEY] ||\n Object.keys(data[WAREHOUSE_AUDIENCE_KEY]).length === 0\n ) {\n return null;\n }\n\n const customData = new CustomData(\n customDataIndex,\n ...Object.keys(data[WAREHOUSE_AUDIENCE_KEY]),\n );\n\n this.dataManager.addData(visitorCode, customData);\n\n return customData;\n }\n\n /**\n * @deprecated\n * use `onEvent(EventType.ConfigurationUpdate, callback)` instead\n * Will be removed in the next major release\n * */\n public onConfigurationUpdate(callback: () => void): void {\n if (!this.initialized) {\n throw new KameleoonError(KameleoonException.Initialization);\n }\n\n this.eventManager.addEventHandler(EventType.ConfigurationUpdate, callback);\n }\n\n public onEvent<E extends EventType>(\n event: E,\n callback: EventCallbackType<E>,\n ): void {\n if (!this.initialized) {\n throw new KameleoonError(KameleoonException.Initialization);\n }\n\n this.eventManager.addEventHandler(event, callback);\n }\n\n public getEngineTrackingCode(visitorCode: string): string {\n Utilities.validateVisitorCode(visitorCode).throw();\n\n return Utilities.getTrackingCode(this.trackingCache, visitorCode);\n }\n\n public isInitialized(): boolean {\n return this.initialized;\n }\n\n protected setUserConsent({\n visitorCode,\n consent,\n setData,\n }: SetUserConsentParametersType): void {\n Utilities.validateVisitorCode(visitorCode).throw();\n\n this.consentDataStorage.update({ [visitorCode]: consent });\n\n if (consent) {\n setData({\n visitorCode,\n key: KameleoonStorageKey.VisitorCode,\n maxAge: DEFAULT_MAX_AGE,\n path: PATH,\n });\n } else {\n if (this.visitorCodeManager.consentRequired) {\n setData({\n visitorCode: '',\n key: KameleoonStorageKey.VisitorCode,\n maxAge: ZERO_MAX_AGE,\n path: PATH,\n });\n }\n }\n }\n\n private _isConsentProvided(visitorCode: string): boolean {\n const { isConsentRequired } = this.clientConfiguration;\n const consentDataResult = this.consentDataStorage.read();\n\n return (\n !isConsentRequired ||\n (consentDataResult.ok && consentDataResult.data[visitorCode])\n );\n }\n\n private _getFeatureVariables({\n visitorCode,\n featureKey,\n variationKey,\n }: GetFeatureVariablesParamsType): FeatureVariableType[] {\n const featureFlags = this.clientConfiguration.featureFlags;\n const featureFlag = featureFlags.get(featureKey);\n\n if (!featureFlag) {\n throw new KameleoonError(\n KameleoonException.FeatureFlagConfigurationNotFound,\n featureKey,\n );\n }\n const variation = featureFlag.variations.find(\n (item) => item.key === variationKey,\n );\n\n if (!variation) {\n throw new KameleoonError(\n KameleoonException.FeatureFlagVariationNotFound,\n variationKey,\n visitorCode,\n );\n }\n\n return variation.variables;\n }\n\n private _getActiveFeatureVariations(\n visitorCode: string,\n ): FeatureFlagVariationType[] {\n if (!this.initialized) {\n throw new KameleoonError(KameleoonException.Initialization);\n }\n\n const featureFlags = this.clientConfiguration.featureFlags;\n const activeVariations: FeatureFlagVariationType[] = [];\n\n const targetingData = this.dataManager.getTargetingData(visitorCode);\n const visitorIdentifier =\n this.dataManager.getVisitorIdentifier(visitorCode);\n\n for (const featureFlag of featureFlags.values()) {\n if (!featureFlag.environmentEnabled) {\n continue;\n }\n\n const variationData = this.variationConfiguration\n .getVariation({\n visitorCode,\n visitorIdentifier,\n targetingData,\n featureFlag,\n clientConfiguration: this.clientConfiguration,\n dataManager: this.dataManager,\n packageInfo: this.externalPackageInfo,\n })\n .throw();\n\n this.eventManager.fireEvent(EventType.Evaluation, {\n featureKey: featureFlag.featureKey,\n variation: {\n key: variationData.variationKey,\n experimentId: variationData.experimentId,\n id: variationData.variationId,\n },\n });\n\n if (variationData.variationKey !== OFF_VARIATION_KEY) {\n activeVariations.push(variationData);\n }\n }\n\n return activeVariations;\n }\n\n private _getFeatureVariation(\n visitorCode: string,\n featureKey: string,\n ): Result<FeatureFlagVariationType, KameleoonError> {\n if (!this.initialized) {\n return Err(new KameleoonError(KameleoonException.Initialization));\n }\n\n const featureFlags = this.clientConfiguration.featureFlags;\n const featureFlag = featureFlags.get(featureKey);\n\n if (!featureFlag) {\n return Err(\n new KameleoonError(\n KameleoonException.FeatureFlagConfigurationNotFound,\n featureKey,\n ),\n );\n }\n\n if (!featureFlag.environmentEnabled) {\n return Err(\n new KameleoonError(\n KameleoonException.FeatureFlagEnvironmentDisabled,\n featureFlag.featureKey,\n this.environment,\n ),\n );\n }\n\n const targetingData = this.dataManager.getTargetingData(visitorCode);\n const visitorIdentifier =\n this.dataManager.getVisitorIdentifier(visitorCode);\n\n const variationData = this.variationConfiguration\n .getVariation({\n visitorCode,\n visitorIdentifier,\n featureFlag,\n targetingData,\n withAssignment: true,\n clientConfiguration: this.clientConfiguration,\n dataManager: this.dataManager,\n packageInfo: this.externalPackageInfo,\n })\n .throw();\n\n this.eventManager.fireEvent(EventType.Evaluation, {\n featureKey,\n variation: {\n key: variationData.variationKey,\n experimentId: variationData.experimentId,\n id: variationData.variationId,\n },\n });\n\n const { experimentId, variationId } = variationData;\n\n if (typeof variationId === 'number' && typeof experimentId === 'number') {\n Utilities.updateCache({\n cacheManager: this.trackingCache,\n visitorCode,\n experimentId,\n variationId,\n });\n }\n\n Utilities.trackFeatureExperiment({\n visitorCode,\n featureFlagVariation: variationData,\n requester: this.requester,\n dataManager: this.dataManager,\n isOfflineModeOn: this.isOfflineModeOn,\n isConsentProvided: this._isConsentProvided(visitorCode),\n offlineTrackingStorage: this.offlineTrackingStorage,\n variationConfiguration: this.variationConfiguration,\n });\n\n return Ok(variationData);\n }\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"kameleoonClient.js","names":["KameleoonClient","constructor","a","siteCode","dependencies","configuration","internalConfiguration","_defineProperty","settings","clientSettings","ClientSettings","environment","externalStorage","externalEventSource","externalPackageInfo","externalVisitorCodeManager","externalRequester","externalPRNG","externals","useAbortController","trackingCache","CacheManager","CACHE_CLEANUP_TIMEOUT","clientDataStorage","DataStorage","KameleoonStorageKey","ClientData","targetingDataStorage","TargetingData","dataInfoStorage","DataInfo","variationDataStorage","VariationData","consentDataStorage","ConsentData","trackingStorage","TrackingData","dataManager","DataManager","dataStorage","infoStorage","cleanupInterval","urlProvider","UrlProvider","initialize","domain","networkDomain","packageInfo","requester","Requester","requestTimeout","trackRetryDelay","eventSource","KameleoonEventSource","eventManager","EventManager","clientConfiguration","ClientConfiguration","storage","updateInterval","variationConfiguration","VariationConfiguration","tracker","Tracker","trackingInterval","prng","visitorCodeManager","result","throw","initialized","ok","addData","visitorCode","validateVisitorCode","KameleoonError","KameleoonException","Initialization","b","arguments","length","data","Array","d","storeData","getRemoteVisitorData","shouldAddData","filters","DEFAULT_VISITOR_DATA_FILTERS","previousVisitAmount","VisitAmount","isUniqueIdentifier","getVisitorData","isMappingIdentifier","visitorData","storageVisitorData","visitsData","Parser","parseVisitorData","dataItem","isPersistentCustomData","trackConversion","goalId","revenue","Conversion","flush","scheduleVisitor","_isConsentProvided","visitorCodeKey","unsentDataVisitors","getFeatureFlags","featureFlags","resultFeatureFlags","forEach","id","featureKey","push","key","getVisitorFeatureFlags","activeVariations","_getActiveFeatureVariations","featureFlagId","getActiveFeatureFlags","resultFeatureList","Map","variation","variationKey","variationId","experimentId","variables","_getFeatureVariables","resultVariables","map","variable","parseFeatureVariable","set","getFeatureFlagVariationKey","_getFeatureVariation","getFeatureFlagVariable","variableKey","find","item","FeatureFlagVariableNotFound","type","value","getFeatureFlagVariables","parsedVariable","isFeatureFlagActive","OFF_VARIATION_KEY","err","FeatureFlagEnvironmentDisabled","getRemoteData","remoteData","getVisitorWarehouseAudience","customDataIndex","warehouseKey","RemoteData","WAREHOUSE_AUDIENCE_KEY","Object","keys","customData","CustomData","onEvent","event","callback","addEventHandler","getEngineTrackingCode","Utilities","getTrackingCode","isInitialized","setUserConsent","consent","setData","update","VisitorCode","maxAge","DEFAULT_MAX_AGE","path","PATH","consentRequired","ZERO_MAX_AGE","isConsentRequired","consentDataResult","read","featureFlag","get","FeatureFlagConfigurationNotFound","variations","FeatureFlagVariationNotFound","visitorIdentifier","getVisitorIdentifier","values","environmentEnabled","variationData","getVariation","targetingData","fireEvent","EventType","Evaluation","Err","withAssignment","hasJsCssVariables","some","VariableType","JS","CSS","_","updateCache","cacheManager","Ok","exports"],"sources":["../src/kameleoonClient.ts"],"sourcesContent":["import { Err, Ok, Result } from 'ts-res';\nimport { CacheManager } from './cacheManager';\nimport {\n ClientConfiguration,\n FeatureVariableType,\n JSONType,\n} from './clientConfiguration';\nimport { ClientSettings } from './clientSettings';\nimport {\n CACHE_CLEANUP_TIMEOUT,\n DEFAULT_VISITOR_DATA_FILTERS,\n OFF_VARIATION_KEY,\n} from './constants';\nimport {\n Conversion,\n CustomData,\n DataManager,\n KameleoonDataType,\n} from './kameleoonData';\nimport { WAREHOUSE_AUDIENCE_KEY } from './constants';\nimport { KameleoonError, KameleoonException } from './kameleoonError';\nimport { Requester, UrlProvider } from './requester';\nimport {\n ClientDataType,\n KameleoonStorageKey,\n VariationDataType,\n DataStorage,\n ConsentDataType,\n IStorage,\n DataInfoType,\n TrackingDataType,\n} from './storage';\nimport {\n TrackConversionParamsType,\n FeatureFlagType,\n GetFeatureFlagVariableParamsType,\n FeatureVariableResultType,\n SDKCoreParameters,\n TrackingCacheItemType,\n ExternalPackageInfoType,\n RemoteVisitorDataParamsType,\n GetVisitorWarehouseAudienceParamsType,\n Environment,\n SetUserConsentParametersType,\n FeatureFlagVariableType,\n KameleoonVariationType,\n GetFeatureVariablesParamsType,\n VariableType,\n} from './types';\nimport { IVisitorCodeManager } from './visitorCodeManager';\nimport { Parser, Utilities } from './utilities';\nimport {\n FeatureFlagVariationType,\n VariationConfiguration,\n} from './variationConfiguration';\nimport { IKameleoonClient } from './kameleoonClientInterface';\nimport { TargetingDataType } from './targeting';\nimport { KameleoonEventSource } from './eventSource';\nimport { DEFAULT_MAX_AGE, PATH, ZERO_MAX_AGE } from './visitorCodeManager';\nimport { EventCallbackType, EventManager, EventType } from './eventManager';\nimport { Tracker } from './tracking';\n\n/**\n * @class\n * KameleoonClient - a class for creating kameleoon client instance\n * for communicating with Kameleoon JavaScript SDK Core, when new instance is created\n */\nexport class KameleoonClient implements IKameleoonClient {\n private variationConfiguration: VariationConfiguration;\n private clientConfiguration: ClientConfiguration;\n private dataManager: DataManager;\n private consentDataStorage: IStorage<ConsentDataType>;\n private trackingCache: CacheManager<TrackingCacheItemType>;\n private requester: Requester;\n private externalPackageInfo: ExternalPackageInfoType;\n private initialized: boolean = false;\n private visitorCodeManager: IVisitorCodeManager;\n private eventManager: EventManager;\n private tracker: Tracker;\n private environment: Environment;\n\n /**\n * @param {SDKCoreParameters} sdkCoreParameters - parameters for initializing sdk core\n */\n constructor({\n siteCode,\n dependencies,\n configuration,\n internalConfiguration,\n }: SDKCoreParameters) {\n const { settings: clientSettings } = new ClientSettings(\n siteCode,\n configuration,\n );\n this.environment = clientSettings.environment;\n const {\n externalStorage,\n externalEventSource,\n externalPackageInfo,\n externalVisitorCodeManager,\n externalRequester,\n externalPRNG,\n } = internalConfiguration.externals;\n const { useAbortController } = internalConfiguration.settings;\n const trackingCache = new CacheManager<TrackingCacheItemType>(\n CACHE_CLEANUP_TIMEOUT,\n );\n\n const clientDataStorage = new DataStorage<ClientDataType>(\n externalStorage,\n KameleoonStorageKey.ClientData,\n );\n const targetingDataStorage = new DataStorage<TargetingDataType>(\n externalStorage,\n KameleoonStorageKey.TargetingData,\n );\n const dataInfoStorage = new DataStorage<DataInfoType>(\n externalStorage,\n KameleoonStorageKey.DataInfo,\n );\n const variationDataStorage = new DataStorage<VariationDataType>(\n externalStorage,\n KameleoonStorageKey.VariationData,\n );\n const consentDataStorage = new DataStorage<ConsentDataType>(\n externalStorage,\n KameleoonStorageKey.ConsentData,\n );\n const trackingStorage = new DataStorage<TrackingDataType>(\n externalStorage,\n KameleoonStorageKey.TrackingData,\n );\n\n const dataManager = new DataManager({\n dataStorage: targetingDataStorage,\n infoStorage: dataInfoStorage,\n cleanupInterval: clientSettings.cleanupInterval,\n });\n\n const urlProvider = dependencies?.urlProvider ?? new UrlProvider();\n\n urlProvider.initialize({\n domain: clientSettings.networkDomain,\n siteCode: clientSettings.siteCode,\n packageInfo: externalPackageInfo,\n environment: clientSettings.environment,\n });\n\n const requester = new Requester({\n urlProvider,\n useAbortController,\n packageInfo: externalPackageInfo,\n externalRequester: externalRequester,\n requestTimeout: clientSettings.requestTimeout,\n trackRetryDelay: clientSettings.trackRetryDelay,\n });\n\n const eventSource = new KameleoonEventSource({\n siteCode: clientSettings.siteCode,\n externalEventSource,\n urlProvider,\n });\n\n const eventManager = new EventManager();\n\n const clientConfiguration = new ClientConfiguration({\n urlProvider,\n storage: clientDataStorage,\n updateInterval: clientSettings.updateInterval,\n dataManager,\n eventManager,\n requester,\n eventSource,\n externalVisitorCodeManager,\n });\n\n const variationConfiguration = new VariationConfiguration(\n variationDataStorage,\n externalVisitorCodeManager,\n );\n\n const tracker = new Tracker({\n dataManager,\n trackingStorage,\n\n variationConfiguration,\n requester,\n trackingInterval: clientSettings.trackingInterval,\n prng: externalPRNG,\n });\n\n this.tracker = tracker;\n this.variationConfiguration = variationConfiguration;\n this.requester = requester;\n this.trackingCache = trackingCache;\n this.dataManager = dataManager;\n this.clientConfiguration = clientConfiguration;\n this.externalPackageInfo = externalPackageInfo;\n this.consentDataStorage = consentDataStorage;\n this.visitorCodeManager = externalVisitorCodeManager;\n this.eventManager = eventManager;\n }\n\n public async initialize(): Promise<boolean> {\n const result = await this.clientConfiguration.initialize();\n result.throw();\n\n this.initialized = true;\n\n return result.ok;\n }\n\n public addData(visitorCode: string, ...data: KameleoonDataType[]): void {\n this.visitorCodeManager.validateVisitorCode(visitorCode).throw();\n\n if (!this.initialized) {\n throw new KameleoonError(KameleoonException.Initialization);\n }\n\n this.dataManager.storeData(visitorCode, ...data).throw();\n }\n\n public async getRemoteVisitorData({\n visitorCode,\n shouldAddData = true,\n filters = DEFAULT_VISITOR_DATA_FILTERS,\n }: RemoteVisitorDataParamsType): Promise<KameleoonDataType[]> {\n if (!this.initialized) {\n throw new KameleoonError(KameleoonException.Initialization);\n }\n\n this.visitorCodeManager.validateVisitorCode(visitorCode).throw();\n\n const { previousVisitAmount } = filters;\n\n if (\n typeof previousVisitAmount === 'number' &&\n (previousVisitAmount < 1 || previousVisitAmount > 25)\n ) {\n throw new KameleoonError(KameleoonException.VisitAmount);\n }\n\n const isUniqueIdentifier = this.dataManager.isUniqueIdentifier(visitorCode);\n\n const result = await this.requester.getVisitorData({\n visitorCode,\n filters,\n isMappingIdentifier: isUniqueIdentifier,\n });\n const data = result.throw();\n\n const { visitorData, storageVisitorData, visitsData } =\n Parser.parseVisitorData({\n data,\n filters,\n visitorCode,\n dataManager: this.dataManager,\n variationConfiguration: this.variationConfiguration,\n });\n\n for (const dataItem of storageVisitorData) {\n if (shouldAddData || this.dataManager.isPersistentCustomData(dataItem)) {\n this.addData(visitorCode, dataItem);\n }\n }\n\n // --- Note ---\n // Data on visits amount and time stamps is not returned to a user\n if (visitsData && shouldAddData) {\n this.addData(visitorCode, visitsData);\n }\n\n return visitorData;\n }\n\n public trackConversion({\n visitorCode,\n goalId,\n revenue,\n }: TrackConversionParamsType): void {\n this.addData(visitorCode, new Conversion({ goalId, revenue }));\n this.flush(visitorCode);\n }\n\n public flush(visitorCode?: string): void {\n if (!this.initialized) {\n throw new KameleoonError(KameleoonException.Initialization);\n }\n\n if (typeof visitorCode === 'string') {\n this.visitorCodeManager.validateVisitorCode(visitorCode).throw();\n this.tracker.scheduleVisitor(\n visitorCode,\n this._isConsentProvided(visitorCode),\n );\n\n return;\n }\n\n for (const visitorCodeKey of this.dataManager.unsentDataVisitors) {\n this.tracker.scheduleVisitor(\n visitorCodeKey,\n this._isConsentProvided(visitorCodeKey),\n );\n }\n }\n\n public getFeatureFlags(): FeatureFlagType[] {\n if (!this.initialized) {\n throw new KameleoonError(KameleoonException.Initialization);\n }\n\n const featureFlags = this.clientConfiguration.featureFlags;\n const resultFeatureFlags: FeatureFlagType[] = [];\n\n featureFlags.forEach(({ id, featureKey }) => {\n resultFeatureFlags.push({\n id,\n key: featureKey,\n });\n });\n\n return resultFeatureFlags;\n }\n\n public getVisitorFeatureFlags(visitorCode: string): FeatureFlagType[] {\n if (!this.initialized) {\n throw new KameleoonError(KameleoonException.Initialization);\n }\n\n const activeVariations = this._getActiveFeatureVariations(visitorCode);\n const resultFeatureFlags: FeatureFlagType[] = [];\n\n activeVariations.forEach(({ featureFlagId, featureKey }) => {\n resultFeatureFlags.push({\n id: featureFlagId,\n key: featureKey,\n });\n });\n\n return resultFeatureFlags;\n }\n\n public getActiveFeatureFlags(\n visitorCode: string,\n ): Map<string, KameleoonVariationType> {\n const activeVariations = this._getActiveFeatureVariations(visitorCode);\n const resultFeatureList: Map<string, KameleoonVariationType> = new Map();\n\n activeVariations.forEach((variation) => {\n const { variationKey, featureKey, variationId, experimentId } = variation;\n\n let variables: FeatureVariableType[] = [];\n\n if (variationId !== null && experimentId !== null) {\n variables = this._getFeatureVariables({\n visitorCode,\n featureKey,\n variationKey,\n });\n }\n\n const resultVariables = variables.map((variable) =>\n Parser.parseFeatureVariable(variable).throw(),\n );\n\n resultFeatureList.set(variation.featureKey, {\n key: variationKey,\n id: variationId,\n experimentId,\n variables: resultVariables,\n });\n });\n\n return resultFeatureList;\n }\n\n public getFeatureFlagVariationKey(\n visitorCode: string,\n featureKey: string,\n ): string {\n this.visitorCodeManager.validateVisitorCode(visitorCode).throw();\n\n const { variationKey } = this._getFeatureVariation(\n visitorCode,\n featureKey,\n ).throw();\n\n return variationKey;\n }\n\n public getFeatureFlagVariable({\n visitorCode,\n featureKey,\n variableKey,\n }: GetFeatureFlagVariableParamsType): FeatureFlagVariableType {\n this.visitorCodeManager.validateVisitorCode(visitorCode).throw();\n\n const { variationKey } = this._getFeatureVariation(\n visitorCode,\n featureKey,\n ).throw();\n\n const variables = this._getFeatureVariables({\n visitorCode,\n featureKey,\n variationKey,\n });\n const variable = variables.find((item) => item.key === variableKey);\n\n if (!variable) {\n throw new KameleoonError(\n KameleoonException.FeatureFlagVariableNotFound,\n variableKey,\n visitorCode,\n );\n }\n\n const { type, value } = Parser.parseFeatureVariable(variable).throw();\n\n return { type, value } as FeatureFlagVariableType;\n }\n\n public getFeatureFlagVariables(\n visitorCode: string,\n featureKey: string,\n ): FeatureVariableResultType[] {\n this.visitorCodeManager.validateVisitorCode(visitorCode).throw();\n\n const { variationKey } = this._getFeatureVariation(\n visitorCode,\n featureKey,\n ).throw();\n\n const variables = this._getFeatureVariables({\n visitorCode,\n featureKey,\n variationKey,\n });\n const resultVariables: FeatureVariableResultType[] = [];\n\n for (const variable of variables) {\n const parsedVariable = Parser.parseFeatureVariable(variable).throw();\n resultVariables.push(parsedVariable);\n }\n\n return resultVariables;\n }\n\n public isFeatureFlagActive(visitorCode: string, featureKey: string): boolean {\n try {\n const variationKey = this.getFeatureFlagVariationKey(\n visitorCode,\n featureKey,\n );\n\n return variationKey !== OFF_VARIATION_KEY;\n } catch (err) {\n if (\n err instanceof KameleoonError &&\n err.type === KameleoonException.FeatureFlagEnvironmentDisabled\n ) {\n return false;\n }\n\n throw err;\n }\n }\n\n public async getRemoteData(key: string): Promise<JSONType> {\n const remoteData = await this.requester.getRemoteData(key);\n\n return remoteData.throw();\n }\n\n public async getVisitorWarehouseAudience({\n visitorCode,\n customDataIndex,\n warehouseKey,\n }: GetVisitorWarehouseAudienceParamsType): Promise<CustomData | null> {\n this.visitorCodeManager.validateVisitorCode(visitorCode).throw();\n\n const data = await this.getRemoteData(warehouseKey || visitorCode);\n\n if (!data) {\n throw new KameleoonError(\n KameleoonException.RemoteData,\n `No data found for ${warehouseKey || visitorCode} key`,\n );\n }\n\n if (\n !data[WAREHOUSE_AUDIENCE_KEY] ||\n Object.keys(data[WAREHOUSE_AUDIENCE_KEY]).length === 0\n ) {\n return null;\n }\n\n const customData = new CustomData(\n customDataIndex,\n ...Object.keys(data[WAREHOUSE_AUDIENCE_KEY]),\n );\n\n this.dataManager.storeData(visitorCode, customData);\n\n return customData;\n }\n\n public onEvent<E extends EventType>(\n event: E,\n callback: EventCallbackType<E>,\n ): void {\n if (!this.initialized) {\n throw new KameleoonError(KameleoonException.Initialization);\n }\n\n this.eventManager.addEventHandler(event, callback);\n }\n\n public getEngineTrackingCode(visitorCode: string): string {\n this.visitorCodeManager.validateVisitorCode(visitorCode).throw();\n\n return Utilities.getTrackingCode(this.trackingCache, visitorCode);\n }\n\n public isInitialized(): boolean {\n return this.initialized;\n }\n\n protected setUserConsent({\n visitorCode,\n consent,\n setData,\n }: SetUserConsentParametersType): void {\n this.visitorCodeManager.validateVisitorCode(visitorCode).throw();\n\n this.consentDataStorage.update({ [visitorCode]: consent });\n\n if (consent) {\n setData({\n visitorCode,\n key: KameleoonStorageKey.VisitorCode,\n maxAge: DEFAULT_MAX_AGE,\n path: PATH,\n });\n } else {\n if (this.visitorCodeManager.consentRequired) {\n setData({\n visitorCode: '',\n key: KameleoonStorageKey.VisitorCode,\n maxAge: ZERO_MAX_AGE,\n path: PATH,\n });\n }\n }\n }\n\n private _isConsentProvided(visitorCode: string): boolean {\n const { isConsentRequired } = this.clientConfiguration;\n const consentDataResult = this.consentDataStorage.read();\n\n return (\n !isConsentRequired ||\n (consentDataResult.ok && consentDataResult.data[visitorCode])\n );\n }\n\n private _getFeatureVariables({\n visitorCode,\n featureKey,\n variationKey,\n }: GetFeatureVariablesParamsType): FeatureVariableType[] {\n const featureFlags = this.clientConfiguration.featureFlags;\n const featureFlag = featureFlags.get(featureKey);\n\n if (!featureFlag) {\n throw new KameleoonError(\n KameleoonException.FeatureFlagConfigurationNotFound,\n featureKey,\n );\n }\n const variation = featureFlag.variations.find(\n (item) => item.key === variationKey,\n );\n\n if (!variation) {\n throw new KameleoonError(\n KameleoonException.FeatureFlagVariationNotFound,\n variationKey,\n visitorCode,\n );\n }\n\n return variation.variables;\n }\n\n private _getActiveFeatureVariations(\n visitorCode: string,\n ): FeatureFlagVariationType[] {\n if (!this.initialized) {\n throw new KameleoonError(KameleoonException.Initialization);\n }\n\n const featureFlags = this.clientConfiguration.featureFlags;\n const activeVariations: FeatureFlagVariationType[] = [];\n\n const visitorData = this.dataManager.getVisitorData(visitorCode);\n const visitorIdentifier =\n this.dataManager.getVisitorIdentifier(visitorCode);\n\n for (const featureFlag of featureFlags.values()) {\n if (!featureFlag.environmentEnabled) {\n continue;\n }\n\n const variationData = this.variationConfiguration\n .getVariation({\n visitorCode,\n visitorIdentifier,\n targetingData: visitorData,\n featureFlag,\n clientConfiguration: this.clientConfiguration,\n dataManager: this.dataManager,\n packageInfo: this.externalPackageInfo,\n })\n .throw();\n\n this.eventManager.fireEvent(EventType.Evaluation, {\n featureKey: featureFlag.featureKey,\n variation: {\n key: variationData.variationKey,\n experimentId: variationData.experimentId,\n id: variationData.variationId,\n },\n });\n\n if (variationData.variationKey !== OFF_VARIATION_KEY) {\n activeVariations.push(variationData);\n }\n }\n\n return activeVariations;\n }\n\n private _getFeatureVariation(\n visitorCode: string,\n featureKey: string,\n ): Result<FeatureFlagVariationType, KameleoonError> {\n if (!this.initialized) {\n return Err(new KameleoonError(KameleoonException.Initialization));\n }\n\n const featureFlags = this.clientConfiguration.featureFlags;\n const featureFlag = featureFlags.get(featureKey);\n\n if (!featureFlag) {\n return Err(\n new KameleoonError(\n KameleoonException.FeatureFlagConfigurationNotFound,\n featureKey,\n ),\n );\n }\n\n if (!featureFlag.environmentEnabled) {\n return Err(\n new KameleoonError(\n KameleoonException.FeatureFlagEnvironmentDisabled,\n featureFlag.featureKey,\n this.environment,\n ),\n );\n }\n\n const visitorData = this.dataManager.getVisitorData(visitorCode);\n const visitorIdentifier =\n this.dataManager.getVisitorIdentifier(visitorCode);\n\n const variationData = this.variationConfiguration\n .getVariation({\n visitorCode,\n visitorIdentifier,\n featureFlag,\n withAssignment: true,\n targetingData: visitorData,\n clientConfiguration: this.clientConfiguration,\n dataManager: this.dataManager,\n packageInfo: this.externalPackageInfo,\n })\n .throw();\n\n this.eventManager.fireEvent(EventType.Evaluation, {\n featureKey,\n variation: {\n key: variationData.variationKey,\n experimentId: variationData.experimentId,\n id: variationData.variationId,\n },\n });\n\n const { experimentId, variationId, variationKey } = variationData;\n\n if (typeof variationId === 'number' && typeof experimentId === 'number') {\n let hasJsCssVariables = false;\n\n try {\n const variables = this._getFeatureVariables({\n visitorCode,\n featureKey,\n variationKey,\n });\n\n hasJsCssVariables = variables.some(({ type }) => {\n return type === VariableType.JS || type === VariableType.CSS;\n });\n } catch (_) {}\n\n Utilities.updateCache({\n cacheManager: this.trackingCache,\n hasJsCssVariables,\n visitorCode,\n experimentId,\n variationId,\n });\n }\n\n this.tracker.scheduleVisitor(\n visitorCode,\n this._isConsentProvided(visitorCode),\n );\n\n return Ok(variationData);\n }\n}\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -6,12 +6,25 @@ import { FeatureFlagType, FeatureFlagVariableType, FeatureVariableResultType, Ge
|
|
|
6
6
|
* @interface an interface of KameleoonClient instance
|
|
7
7
|
*/
|
|
8
8
|
export interface IKameleoonClient {
|
|
9
|
+
/**
|
|
10
|
+
* @deprecated - this overload is deprecated and will be removed in the future, data caching is now done automatically
|
|
11
|
+
* @method initialize - an asynchronous method for KameleoonClient initialization by fetching Kameleoon SDK related data from server or by retrieving data from local source if data is up-to-date or update interval has not been reached
|
|
12
|
+
*
|
|
13
|
+
* Triggered Events: `EventType.ConfigurationUpdate` (On each successful configuration update while using Real Time Update)
|
|
14
|
+
*
|
|
15
|
+
* @returns {Promise<boolean>} Promise resolved into boolean field indicating success or fail
|
|
16
|
+
* @throws `KameleoonError` with one of the following `type` s:
|
|
17
|
+
*
|
|
18
|
+
* - `KameleoonException.StorageWrite` Couldn't update storage data
|
|
19
|
+
* - `KameleoonException.ClientConfiguration` Couldn't retrieve client configuration from Kameleoon Api
|
|
20
|
+
* - `KameleoonException.MaximumRetriesReached` Maximum retries reached, request failed
|
|
21
|
+
*/
|
|
22
|
+
initialize(): Promise<boolean>;
|
|
9
23
|
/**
|
|
10
24
|
* @method initialize - an asynchronous method for KameleoonClient initialization by fetching Kameleoon SDK related data from server or by retrieving data from local source if data is up-to-date or update interval has not been reached
|
|
11
25
|
*
|
|
12
26
|
* Triggered Events: `EventType.ConfigurationUpdate` (On each successful configuration update while using Real Time Update)
|
|
13
27
|
*
|
|
14
|
-
* @param {boolean | undefined} useCache - optional parameter for activating SDK offline mode, if `true` is passed failed polls will not return error and will use cached data if such data is available, default value is `false`. Note: if offline mode is on, SDK will still try to retrieve the latest data.
|
|
15
28
|
* @returns {Promise<boolean>} Promise resolved into boolean field indicating success or fail
|
|
16
29
|
* @throws `KameleoonError` with one of the following `type` s:
|
|
17
30
|
*
|
|
@@ -19,7 +32,6 @@ export interface IKameleoonClient {
|
|
|
19
32
|
* - `KameleoonException.ClientConfiguration` Couldn't retrieve client configuration from Kameleoon Api
|
|
20
33
|
* - `KameleoonException.MaximumRetriesReached` Maximum retries reached, request failed
|
|
21
34
|
*/
|
|
22
|
-
initialize(useCache?: boolean): Promise<boolean>;
|
|
23
35
|
initialize(): Promise<boolean>;
|
|
24
36
|
/**
|
|
25
37
|
* @method addData - method for adding targeting data to the storage so that other methods could decide whether the current visitor is targeted or not. Note: userAgent data will not be stored in storage like other data, and it will be sent with every tracking request for bot filtration.
|
|
@@ -36,7 +48,7 @@ export interface IKameleoonClient {
|
|
|
36
48
|
addData: (visitorCode: string, ...data: KameleoonDataType[]) => void;
|
|
37
49
|
/**
|
|
38
50
|
* @method getRemoteVisitorData - an asynchronous method for retrieving KameleoonData from Data API and optionally adding it to the storage so that other methods could decide whether the current visitor is targeted or not.
|
|
39
|
-
* @param {RemoteVisitorDataParamsType} remoteVisitorDataParameters - `visitorCode`, `shouldAddData
|
|
51
|
+
* @param {RemoteVisitorDataParamsType} remoteVisitorDataParameters - `visitorCode`, `shouldAddData` and `filters` parameters
|
|
40
52
|
* @returns {KameleoonDataType[]} promise resolved to an array of `KameleoonData` instances, only includes custom data
|
|
41
53
|
* @throws `KameleoonError` with one of the following `type` s:
|
|
42
54
|
*
|
|
@@ -46,7 +58,7 @@ export interface IKameleoonClient {
|
|
|
46
58
|
* - `KameleoonException.VisitAmount` - Visit amount must be a number between 1 and 25
|
|
47
59
|
* - `KameleoonException.Initialization` - Method was executed before the `kameleoonClient` completed it's `initialize` call
|
|
48
60
|
*/
|
|
49
|
-
getRemoteVisitorData: ({ visitorCode, shouldAddData, filters,
|
|
61
|
+
getRemoteVisitorData: ({ visitorCode, shouldAddData, filters, }: RemoteVisitorDataParamsType) => Promise<KameleoonDataType[]>;
|
|
50
62
|
/**
|
|
51
63
|
* @method trackConversion - creates and adds `Conversion` data to the visitor with specified parameters and executes `flush`. Note: it's a helper method for the quick and convenient conversion tracking, however creating and adding `Conversion` manually allows more flexible `Conversion` with `negative` parameter
|
|
52
64
|
* @param {TrackConversionParamsType} conversionParameters - `visitorCode`, `goalId` and `revenue` parameters for data tracking
|
|
@@ -57,14 +69,13 @@ export interface IKameleoonClient {
|
|
|
57
69
|
* - `KameleoonException.VisitorCodeEmpty` The visitor code is empty
|
|
58
70
|
* - `KameleoonException.StorageWrite` Couldn't update storage data
|
|
59
71
|
*/
|
|
60
|
-
trackConversion: ({ visitorCode, goalId, revenue,
|
|
72
|
+
trackConversion: ({ visitorCode, goalId, revenue, }: TrackConversionParamsType) => void;
|
|
61
73
|
/**
|
|
62
74
|
* @method flush - takes visitor associated kameleoon data and sends the data tracking request with collected data,
|
|
63
75
|
* sent data is removed from `KameleoonClient` instance but not from the storage for correct targeting checks. If no visitor is passed,
|
|
64
76
|
* then data for all visitors is sent and removed from `KameleoonClient` instance. Moreover, regardless of visitor code input
|
|
65
77
|
* the method first attempts to send all previously failed tracking requests which were stored locally during the offline mode.
|
|
66
78
|
* @param {string | undefined} visitorCode - unique visitor identification string, can't exceed 255 characters length
|
|
67
|
-
* @param {boolean | undefined} isUniqueIdentifier - an optional parameter for specifying if the visitorCode is a unique identifier, default value is `false`
|
|
68
79
|
* @returns {void}
|
|
69
80
|
* @throws `KameleoonError` with one of the following `type` s:
|
|
70
81
|
*
|
|
@@ -72,7 +83,7 @@ export interface IKameleoonClient {
|
|
|
72
83
|
* - `KameleoonException.VisitorCodeEmpty` The visitor code is empty
|
|
73
84
|
* - `KameleoonException.Initialization` - Method was executed before the `kameleoonClient` completed it's `initialize` call
|
|
74
85
|
*/
|
|
75
|
-
flush: (visitorCode?: string
|
|
86
|
+
flush: (visitorCode?: string) => void;
|
|
76
87
|
/**
|
|
77
88
|
* @method getFeatureFlags - returns a list of feature flags stored in the client configuration
|
|
78
89
|
*
|
|
@@ -232,15 +243,6 @@ export interface IKameleoonClient {
|
|
|
232
243
|
* - `KameleoonException.VisitorCodeEmpty` The visitor code is empty
|
|
233
244
|
*/
|
|
234
245
|
getEngineTrackingCode: (visitorCode: string) => string;
|
|
235
|
-
/**
|
|
236
|
-
* @method onConfigurationUpdate - fires a callback on client configuration update. Note: this method only works for server sent events of real time update.
|
|
237
|
-
* @param {() => void} callback - callback function with no parameters that will be called upon configuration update
|
|
238
|
-
* @returns {void}
|
|
239
|
-
* @throws `KameleoonError` with one of the following `type` s:
|
|
240
|
-
*
|
|
241
|
-
* - `KameleoonException.Initialization` - Method was executed before the `kameleoonClient` completed it's `initialize` call
|
|
242
|
-
*/
|
|
243
|
-
onConfigurationUpdate: (callback: () => void) => void;
|
|
244
246
|
/**
|
|
245
247
|
* @method onEvent - fires a callback on a specified Kameleoon `EventType`. Each event can only have one according callback.
|
|
246
248
|
*
|