@kameleoon/javascript-sdk-core 2.10.0 → 3.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/dist/cacheManager/cacheManager.d.ts +38 -0
- package/dist/cacheManager/cacheManager.js +2 -0
- package/dist/cacheManager/cacheManager.js.map +1 -0
- package/dist/cacheManager/index.d.ts +2 -0
- package/dist/cacheManager/index.js +2 -0
- package/dist/cacheManager/index.js.map +1 -0
- package/dist/cacheManager/types.d.ts +14 -0
- package/dist/cacheManager/types.js +2 -0
- package/dist/cacheManager/types.js.map +1 -0
- package/dist/clientConfiguration/clientConfiguration.d.ts +52 -0
- package/dist/clientConfiguration/clientConfiguration.js +2 -0
- package/dist/clientConfiguration/clientConfiguration.js.map +1 -0
- package/dist/clientConfiguration/constants.d.ts +2 -0
- package/dist/clientConfiguration/constants.js +2 -0
- package/dist/clientConfiguration/constants.js.map +1 -0
- package/dist/clientConfiguration/index.d.ts +2 -0
- package/dist/clientConfiguration/index.js +2 -0
- package/dist/clientConfiguration/index.js.map +1 -0
- package/dist/clientConfiguration/types.d.ts +114 -0
- package/dist/clientConfiguration/types.js +2 -0
- package/dist/clientConfiguration/types.js.map +1 -0
- package/dist/clientSettings/clientSettings.d.ts +12 -0
- package/dist/clientSettings/clientSettings.js +2 -0
- package/dist/clientSettings/clientSettings.js.map +1 -0
- package/dist/clientSettings/index.d.ts +2 -0
- package/dist/clientSettings/index.js +2 -0
- package/dist/clientSettings/index.js.map +1 -0
- package/dist/clientSettings/types.d.ts +6 -0
- package/dist/clientSettings/types.js +2 -0
- package/dist/clientSettings/types.js.map +1 -0
- package/dist/constants.d.ts +34 -0
- package/dist/constants.js +2 -0
- package/dist/constants.js.map +1 -0
- package/dist/eventSource/constants.d.ts +1 -0
- package/dist/eventSource/constants.js +2 -0
- package/dist/eventSource/constants.js.map +1 -0
- package/dist/eventSource/externalEventSource.d.ts +12 -0
- package/dist/eventSource/externalEventSource.js +2 -0
- package/dist/eventSource/externalEventSource.js.map +1 -0
- package/dist/eventSource/index.d.ts +3 -0
- package/dist/eventSource/index.js +2 -0
- package/dist/eventSource/index.js.map +1 -0
- package/dist/eventSource/types.d.ts +47 -0
- package/dist/eventSource/types.js +2 -0
- package/dist/eventSource/types.js.map +1 -0
- package/dist/hasher/hasher.d.ts +5 -0
- package/dist/hasher/hasher.js +2 -0
- package/dist/hasher/hasher.js.map +1 -0
- package/dist/hasher/index.d.ts +1 -0
- package/dist/hasher/index.js +2 -0
- package/dist/hasher/index.js.map +1 -0
- package/dist/hasher/types.d.ts +5 -0
- package/dist/hasher/types.js +2 -0
- package/dist/hasher/types.js.map +1 -0
- package/dist/index.d.ts +13 -0
- package/dist/index.js +2 -0
- package/dist/index.js.map +1 -0
- package/dist/kameleoonClient.d.ts +231 -0
- package/dist/kameleoonClient.js +2 -0
- package/dist/kameleoonClient.js.map +1 -0
- package/dist/kameleoonData/applicationVersion.d.ts +26 -0
- package/dist/kameleoonData/applicationVersion.js +2 -0
- package/dist/kameleoonData/applicationVersion.js.map +1 -0
- package/dist/kameleoonData/browser.d.ts +41 -0
- package/dist/kameleoonData/browser.js +2 -0
- package/dist/kameleoonData/browser.js.map +1 -0
- package/dist/kameleoonData/constants.d.ts +4 -0
- package/dist/kameleoonData/constants.js +2 -0
- package/dist/kameleoonData/constants.js.map +1 -0
- package/dist/kameleoonData/conversion.d.ts +36 -0
- package/dist/kameleoonData/conversion.js +2 -0
- package/dist/kameleoonData/conversion.js.map +1 -0
- package/dist/kameleoonData/cookie.d.ts +33 -0
- package/dist/kameleoonData/cookie.js +2 -0
- package/dist/kameleoonData/cookie.js.map +1 -0
- package/dist/kameleoonData/customData.d.ts +46 -0
- package/dist/kameleoonData/customData.js +2 -0
- package/dist/kameleoonData/customData.js.map +1 -0
- package/dist/kameleoonData/dataManager.d.ts +38 -0
- package/dist/kameleoonData/dataManager.js +2 -0
- package/dist/kameleoonData/dataManager.js.map +1 -0
- package/dist/kameleoonData/dataProcessor.d.ts +26 -0
- package/dist/kameleoonData/dataProcessor.js +2 -0
- package/dist/kameleoonData/dataProcessor.js.map +1 -0
- package/dist/kameleoonData/device.d.ts +34 -0
- package/dist/kameleoonData/device.js +2 -0
- package/dist/kameleoonData/device.js.map +1 -0
- package/dist/kameleoonData/geolocation.d.ts +52 -0
- package/dist/kameleoonData/geolocation.js +2 -0
- package/dist/kameleoonData/geolocation.js.map +1 -0
- package/dist/kameleoonData/helpers.d.ts +1 -0
- package/dist/kameleoonData/helpers.js +2 -0
- package/dist/kameleoonData/helpers.js.map +1 -0
- package/dist/kameleoonData/index.d.ts +14 -0
- package/dist/kameleoonData/index.js +2 -0
- package/dist/kameleoonData/index.js.map +1 -0
- package/dist/kameleoonData/operatingSystem.d.ts +34 -0
- package/dist/kameleoonData/operatingSystem.js +2 -0
- package/dist/kameleoonData/operatingSystem.js.map +1 -0
- package/dist/kameleoonData/pageView.d.ts +42 -0
- package/dist/kameleoonData/pageView.js +2 -0
- package/dist/kameleoonData/pageView.js.map +1 -0
- package/dist/kameleoonData/types.d.ts +226 -0
- package/dist/kameleoonData/types.js +2 -0
- package/dist/kameleoonData/types.js.map +1 -0
- package/dist/kameleoonData/userAgent.d.ts +23 -0
- package/dist/kameleoonData/userAgent.js +2 -0
- package/dist/kameleoonData/userAgent.js.map +1 -0
- package/dist/kameleoonData/visitsData.d.ts +34 -0
- package/dist/kameleoonData/visitsData.js +2 -0
- package/dist/kameleoonData/visitsData.js.map +1 -0
- package/dist/kameleoonError/constants.d.ts +28 -0
- package/dist/kameleoonError/constants.js +2 -0
- package/dist/kameleoonError/constants.js.map +1 -0
- package/dist/kameleoonError/helpers.d.ts +1 -0
- package/dist/kameleoonError/helpers.js +2 -0
- package/dist/kameleoonError/helpers.js.map +1 -0
- package/dist/kameleoonError/index.d.ts +3 -0
- package/dist/kameleoonError/index.js +2 -0
- package/dist/kameleoonError/index.js.map +1 -0
- package/dist/kameleoonError/kameleoonError.d.ts +26 -0
- package/dist/kameleoonError/kameleoonError.js +2 -0
- package/dist/kameleoonError/kameleoonError.js.map +1 -0
- package/dist/kameleoonError/types.d.ts +30 -0
- package/dist/kameleoonError/types.js +2 -0
- package/dist/kameleoonError/types.js.map +1 -0
- package/dist/kameleoonUtils.d.ts +13 -0
- package/dist/kameleoonUtils.js +2 -0
- package/dist/kameleoonUtils.js.map +1 -0
- package/dist/requester/constants.d.ts +18 -0
- package/dist/requester/constants.js +2 -0
- package/dist/requester/constants.js.map +1 -0
- package/dist/requester/index.d.ts +3 -0
- package/dist/requester/index.js +2 -0
- package/dist/requester/index.js.map +1 -0
- package/dist/requester/requester.d.ts +24 -0
- package/dist/requester/requester.js +2 -0
- package/dist/requester/requester.js.map +1 -0
- package/dist/requester/types.d.ts +165 -0
- package/dist/requester/types.js +2 -0
- package/dist/requester/types.js.map +1 -0
- package/dist/storage/constants.d.ts +11 -0
- package/dist/storage/constants.js +2 -0
- package/dist/storage/constants.js.map +1 -0
- package/dist/storage/index.d.ts +2 -0
- package/dist/storage/index.js +2 -0
- package/dist/storage/index.js.map +1 -0
- package/dist/storage/types.d.ts +65 -0
- package/dist/storage/types.js +2 -0
- package/dist/storage/types.js.map +1 -0
- package/dist/targeting/conditions/applicationVersion.d.ts +10 -0
- package/dist/targeting/conditions/applicationVersion.js +2 -0
- package/dist/targeting/conditions/applicationVersion.js.map +1 -0
- package/dist/targeting/conditions/browser.d.ts +13 -0
- package/dist/targeting/conditions/browser.js +2 -0
- package/dist/targeting/conditions/browser.js.map +1 -0
- package/dist/targeting/conditions/conditionFactory.d.ts +6 -0
- package/dist/targeting/conditions/conditionFactory.js +2 -0
- package/dist/targeting/conditions/conditionFactory.js.map +1 -0
- package/dist/targeting/conditions/conversion.d.ts +9 -0
- package/dist/targeting/conditions/conversion.js +2 -0
- package/dist/targeting/conditions/conversion.js.map +1 -0
- package/dist/targeting/conditions/cookie.d.ts +15 -0
- package/dist/targeting/conditions/cookie.js +2 -0
- package/dist/targeting/conditions/cookie.js.map +1 -0
- package/dist/targeting/conditions/customData.d.ts +14 -0
- package/dist/targeting/conditions/customData.js +2 -0
- package/dist/targeting/conditions/customData.js.map +1 -0
- package/dist/targeting/conditions/device.d.ts +9 -0
- package/dist/targeting/conditions/device.js +2 -0
- package/dist/targeting/conditions/device.js.map +1 -0
- package/dist/targeting/conditions/exclusiveCampaign.d.ts +7 -0
- package/dist/targeting/conditions/exclusiveCampaign.js +2 -0
- package/dist/targeting/conditions/exclusiveCampaign.js.map +1 -0
- package/dist/targeting/conditions/firstVisit.d.ts +12 -0
- package/dist/targeting/conditions/firstVisit.js +2 -0
- package/dist/targeting/conditions/firstVisit.js.map +1 -0
- package/dist/targeting/conditions/geolocation.d.ts +11 -0
- package/dist/targeting/conditions/geolocation.js +2 -0
- package/dist/targeting/conditions/geolocation.js.map +1 -0
- package/dist/targeting/conditions/index.d.ts +24 -0
- package/dist/targeting/conditions/index.js +2 -0
- package/dist/targeting/conditions/index.js.map +1 -0
- package/dist/targeting/conditions/lastVisit.d.ts +12 -0
- package/dist/targeting/conditions/lastVisit.js +2 -0
- package/dist/targeting/conditions/lastVisit.js.map +1 -0
- package/dist/targeting/conditions/newVisitor.d.ts +9 -0
- package/dist/targeting/conditions/newVisitor.js +2 -0
- package/dist/targeting/conditions/newVisitor.js.map +1 -0
- package/dist/targeting/conditions/operatingSystem.d.ts +9 -0
- package/dist/targeting/conditions/operatingSystem.js +2 -0
- package/dist/targeting/conditions/operatingSystem.js.map +1 -0
- package/dist/targeting/conditions/pageTitle.d.ts +11 -0
- package/dist/targeting/conditions/pageTitle.js +2 -0
- package/dist/targeting/conditions/pageTitle.js.map +1 -0
- package/dist/targeting/conditions/pageUrl.d.ts +11 -0
- package/dist/targeting/conditions/pageUrl.js +2 -0
- package/dist/targeting/conditions/pageUrl.js.map +1 -0
- package/dist/targeting/conditions/previousPage.d.ts +12 -0
- package/dist/targeting/conditions/previousPage.js +2 -0
- package/dist/targeting/conditions/previousPage.js.map +1 -0
- package/dist/targeting/conditions/sameDayVisits.d.ts +11 -0
- package/dist/targeting/conditions/sameDayVisits.js +2 -0
- package/dist/targeting/conditions/sameDayVisits.js.map +1 -0
- package/dist/targeting/conditions/sdkLanguage.d.ts +12 -0
- package/dist/targeting/conditions/sdkLanguage.js +2 -0
- package/dist/targeting/conditions/sdkLanguage.js.map +1 -0
- package/dist/targeting/conditions/segment.d.ts +9 -0
- package/dist/targeting/conditions/segment.js +2 -0
- package/dist/targeting/conditions/segment.js.map +1 -0
- package/dist/targeting/conditions/targetFeatureFlag.d.ts +11 -0
- package/dist/targeting/conditions/targetFeatureFlag.js +2 -0
- package/dist/targeting/conditions/targetFeatureFlag.js.map +1 -0
- package/dist/targeting/conditions/types.d.ts +49 -0
- package/dist/targeting/conditions/types.js +2 -0
- package/dist/targeting/conditions/types.js.map +1 -0
- package/dist/targeting/conditions/visitedPages.d.ts +11 -0
- package/dist/targeting/conditions/visitedPages.js +2 -0
- package/dist/targeting/conditions/visitedPages.js.map +1 -0
- package/dist/targeting/conditions/visitorCode.d.ts +11 -0
- package/dist/targeting/conditions/visitorCode.js +2 -0
- package/dist/targeting/conditions/visitorCode.js.map +1 -0
- package/dist/targeting/conditions/visits.d.ts +11 -0
- package/dist/targeting/conditions/visits.js +2 -0
- package/dist/targeting/conditions/visits.js.map +1 -0
- package/dist/targeting/index.d.ts +3 -0
- package/dist/targeting/index.js +2 -0
- package/dist/targeting/index.js.map +1 -0
- package/dist/targeting/node.d.ts +23 -0
- package/dist/targeting/node.js +2 -0
- package/dist/targeting/node.js.map +1 -0
- package/dist/targeting/tree.d.ts +22 -0
- package/dist/targeting/tree.js +2 -0
- package/dist/targeting/tree.js.map +1 -0
- package/dist/targeting/types.d.ts +164 -0
- package/dist/targeting/types.js +2 -0
- package/dist/targeting/types.js.map +1 -0
- package/dist/types.d.ts +200 -0
- package/dist/types.js +2 -0
- package/dist/types.js.map +1 -0
- package/dist/utilities/constants.d.ts +2 -0
- package/dist/utilities/constants.js +2 -0
- package/dist/utilities/constants.js.map +1 -0
- package/dist/utilities/index.d.ts +3 -0
- package/dist/utilities/index.js +2 -0
- package/dist/utilities/index.js.map +1 -0
- package/dist/utilities/types.d.ts +119 -0
- package/dist/utilities/types.js +2 -0
- package/dist/utilities/types.js.map +1 -0
- package/dist/utilities/utilities.d.ts +40 -0
- package/dist/utilities/utilities.js +2 -0
- package/dist/utilities/utilities.js.map +1 -0
- package/dist/variationConfiguration/index.d.ts +2 -0
- package/dist/variationConfiguration/index.js +2 -0
- package/dist/variationConfiguration/index.js.map +1 -0
- package/dist/variationConfiguration/types.d.ts +21 -0
- package/dist/variationConfiguration/types.js +2 -0
- package/dist/variationConfiguration/types.js.map +1 -0
- package/dist/variationConfiguration/variationConfiguration.d.ts +27 -0
- package/dist/variationConfiguration/variationConfiguration.js +2 -0
- package/dist/variationConfiguration/variationConfiguration.js.map +1 -0
- package/package.json +1 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"applicationVersion.js","names":["_types","require","Object","defineProperty","exports","value","ApplicationVersion","_typeof","a","Symbol","iterator","constructor","prototype","_classCallCheck","b","TypeError","_defineProperties","c","d","length","enumerable","configurable","writable","_toPropertyKey","key","_createClass","_defineProperty","_toPrimitive","toPrimitive","call","String","Number","version","sent","get","type","KameleoonData","set"],"sources":["../../src/kameleoonData/applicationVersion.ts"],"sourcesContent":["import {\n IKameleoonData,\n KameleoonData,\n ApplicationVersionDataType,\n} from './types';\n\n/**\n * @class\n * ApplicationVersion - a class for creating an instance for app version\n * */\nexport class ApplicationVersion implements IKameleoonData {\n private version: string;\n private sent: boolean;\n\n /**\n * @param {string} version - version of mobile application\n * */\n constructor(version: string) {\n this.version = version;\n this.sent = false;\n }\n\n /**\n * @property url - url for the current data type used for events tracking\n * */\n get url(): string {\n return '';\n }\n\n /**\n * @property data - data of the current class instance\n * */\n get data(): ApplicationVersionDataType {\n return {\n version: this.version,\n type: KameleoonData.ApplicationVersion,\n sent: this.sent,\n };\n }\n\n /**\n * @property isSent - signifying if the data was sent already tracked\n * */\n get isSent(): boolean {\n return this.sent;\n }\n\n set isSent(value: boolean) {\n this.sent = value;\n }\n}\n"],"mappings":"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"}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import { VisitType } from '../requester';
|
|
2
|
+
import { BrowserDataType, BrowserType, IKameleoonData } from './types';
|
|
3
|
+
/**
|
|
4
|
+
* @class
|
|
5
|
+
* Browser - a class for creating an instance for browser of a certain type
|
|
6
|
+
* */
|
|
7
|
+
export declare class Browser implements IKameleoonData {
|
|
8
|
+
private browser;
|
|
9
|
+
private version?;
|
|
10
|
+
private sent;
|
|
11
|
+
/**
|
|
12
|
+
* @param {BrowserType} browser - one of the browser types available for data, if browser can not be found in a list, it can be marked as `BrowserType.Other`
|
|
13
|
+
* @param {number | undefined} version - version of the browser, floating point number represents major and minor version of the browser
|
|
14
|
+
* @example
|
|
15
|
+
* ```ts
|
|
16
|
+
* const browser = new Browser(BrowserType.Chrome, 86);
|
|
17
|
+
* const browser = new Browser(BrowserType.Safari, 14.1);
|
|
18
|
+
* ```
|
|
19
|
+
* */
|
|
20
|
+
constructor(browser: BrowserType, version?: number);
|
|
21
|
+
/**
|
|
22
|
+
* @property url - url for the current data type used for events tracking
|
|
23
|
+
* */
|
|
24
|
+
get url(): string;
|
|
25
|
+
/**
|
|
26
|
+
* @property data - data of the current class instance
|
|
27
|
+
* */
|
|
28
|
+
get data(): BrowserDataType;
|
|
29
|
+
/**
|
|
30
|
+
* @property isSent - signifying if the data was sent already tracked
|
|
31
|
+
* */
|
|
32
|
+
get isSent(): boolean;
|
|
33
|
+
set isSent(value: boolean);
|
|
34
|
+
/**
|
|
35
|
+
* @private
|
|
36
|
+
* @method _fromVisits - an internal method for creating an instance of Browser class from a list of visits
|
|
37
|
+
* @param {VisitType[]} visits - a list of visits
|
|
38
|
+
* @returns {Browser | undefined} an instance of Browser class or undefined if browser can not be found among visits
|
|
39
|
+
* */
|
|
40
|
+
static _fromVisits(visits: VisitType[]): Browser | undefined;
|
|
41
|
+
}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.Browser=void 0;var _requester=require("../requester"),_types=require("./types");function _typeof(a){"@babel/helpers - typeof";return _typeof="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(a){return typeof a}:function(a){return a&&"function"==typeof Symbol&&a.constructor===Symbol&&a!==Symbol.prototype?"symbol":typeof a},_typeof(a)}function _classCallCheck(a,b){if(!(a instanceof b))throw new TypeError("Cannot call a class as a function")}function _defineProperties(a,b){for(var c,d=0;d<b.length;d++)c=b[d],c.enumerable=c.enumerable||!1,c.configurable=!0,"value"in c&&(c.writable=!0),Object.defineProperty(a,_toPropertyKey(c.key),c)}function _createClass(a,b,c){return b&&_defineProperties(a.prototype,b),c&&_defineProperties(a,c),Object.defineProperty(a,"prototype",{writable:!1}),a}function _defineProperty(a,b,c){return b=_toPropertyKey(b),b in a?Object.defineProperty(a,b,{value:c,enumerable:!0,configurable:!0,writable:!0}):a[b]=c,a}function _toPropertyKey(a){var b=_toPrimitive(a,"string");return"symbol"===_typeof(b)?b:b+""}function _toPrimitive(a,b){if("object"!==_typeof(a)||null===a)return a;var c=a[Symbol.toPrimitive];if(c!==void 0){var d=c.call(a,b||"default");if("object"!==_typeof(d))return d;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===b?String:Number)(a)}var Browser=function(){function a(b,c){_classCallCheck(this,a),_defineProperty(this,"browser",void 0),_defineProperty(this,"version",void 0),_defineProperty(this,"sent",void 0),this.browser=b,this.version=c,this.sent=!1}return _createClass(a,[{key:"url",get:function get(){if(!this.browser)return"";var a=this.version?_requester.UrlParameter.BrowserVersion+this.version:"";return _requester.UrlEventType.StaticData+_requester.UrlParameter.Browser+this.browser+_requester.UrlParameter.BrowserIndex+_types.BrowserIndexMap[this.browser]+a}},{key:"data",get:function get(){return{browser:this.browser,type:_types.KameleoonData.Browser,version:this.version,sent:this.sent}}},{key:"isSent",get:function get(){return this.sent},set:function set(a){this.sent=a}}],[{key:"_fromVisits",value:function _fromVisits(b){for(var c,d={},e=b.length-1;0<=e;e--)if(c=b[e],!!c.staticDataEvent){var f=c.staticDataEvent.data,g=f.browser,h=f.browserIndex,j=f.browserVersion;(g||null!==h)&&(d={browserType:g,browserIndex:h,browserVersion:j})}var k=d,l=k.browserType,m=k.browserIndex,n=k.browserVersion;if(l||"number"==typeof m){var o=l?l:_types.BrowserTypeMap[m];return n?new a(o,n):new a(o)}}}]),a}();exports.Browser=Browser;
|
|
2
|
+
//# sourceMappingURL=browser.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"browser.js","names":["Browser","a","browser","version","_classCallCheck","_defineProperty","sent","_createClass","key","get","browserVersion","UrlParameter","BrowserVersion","UrlEventType","StaticData","BrowserIndex","BrowserIndexMap","type","KameleoonData","set","value","_fromVisits","visits","visit","browserData","i","length","staticDataEvent","f","data","browserType","browserIndex","k","BrowserTypeMap","exports"],"sources":["../../src/kameleoonData/browser.ts"],"sourcesContent":["import { UrlEventType, UrlParameter, VisitType } from 'src/requester';\nimport {\n BrowserDataType,\n BrowserType,\n BrowserIndexMap,\n IKameleoonData,\n KameleoonData,\n BrowserTypeMap,\n} from './types';\n\n/**\n * @class\n * Browser - a class for creating an instance for browser of a certain type\n * */\nexport class Browser implements IKameleoonData {\n private browser: BrowserType;\n private version?: number;\n private sent: boolean;\n\n /**\n * @param {BrowserType} browser - one of the browser types available for data, if browser can not be found in a list, it can be marked as `BrowserType.Other`\n * @param {number | undefined} version - version of the browser, floating point number represents major and minor version of the browser\n * @example\n * ```ts\n * const browser = new Browser(BrowserType.Chrome, 86);\n * const browser = new Browser(BrowserType.Safari, 14.1);\n * ```\n * */\n constructor(browser: BrowserType, version?: number) {\n this.browser = browser;\n this.version = version;\n this.sent = false;\n }\n\n /**\n * @property url - url for the current data type used for events tracking\n * */\n get url(): string {\n // --- Note ---\n // If SDK is used in vanilla JS codebase, then you're also able to create an instance\n // with no required data, we don't want send anything to tracking in that case\n if (!this.browser) {\n return '';\n }\n\n const browserVersion = this.version\n ? UrlParameter.BrowserVersion + this.version\n : '';\n\n return (\n UrlEventType.StaticData +\n UrlParameter.Browser +\n this.browser +\n UrlParameter.BrowserIndex +\n BrowserIndexMap[this.browser] +\n browserVersion\n );\n }\n\n /**\n * @property data - data of the current class instance\n * */\n get data(): BrowserDataType {\n return {\n browser: this.browser,\n type: KameleoonData.Browser,\n version: this.version,\n sent: this.sent,\n };\n }\n\n /**\n * @property isSent - signifying if the data was sent already tracked\n * */\n get isSent(): boolean {\n return this.sent;\n }\n\n set isSent(value: boolean) {\n this.sent = value;\n }\n\n /**\n * @private\n * @method _fromVisits - an internal method for creating an instance of Browser class from a list of visits\n * @param {VisitType[]} visits - a list of visits\n * @returns {Browser | undefined} an instance of Browser class or undefined if browser can not be found among visits\n * */\n public static _fromVisits(visits: VisitType[]): Browser | undefined {\n let browserData: {\n browserType?: BrowserType | null;\n browserIndex?: number | null;\n browserVersion?: number | null;\n } = {};\n\n // --- Note ---\n // Going backwards to get the latest visit data\n for (let i = visits.length - 1; i >= 0; i--) {\n const visit = visits[i];\n if (!visit.staticDataEvent) {\n continue;\n }\n\n const {\n browser: browserType,\n browserIndex,\n browserVersion,\n } = visit.staticDataEvent.data;\n\n if (browserType || browserIndex !== null) {\n browserData = { browserType, browserIndex, browserVersion };\n }\n }\n\n const { browserType, browserIndex, browserVersion } = browserData;\n\n if (browserType || typeof browserIndex === 'number') {\n const browser = browserType\n ? browserType\n : BrowserTypeMap[browserIndex as number];\n\n if (browserVersion) {\n return new Browser(browser, browserVersion);\n } else {\n return new Browser(browser);\n }\n }\n }\n}\n"],"mappings":"w4CAca,CAAAA,OAAO,YAclB,SAAAC,EAAYC,CAAoB,CAAEC,CAAgB,CAAE,CAAAC,eAAA,MAAAH,CAAA,EAAAI,eAAA,wBAAAA,eAAA,wBAAAA,eAAA,qBAClD,IAAI,CAACH,OAAO,CAAGA,CAAO,CACtB,IAAI,CAACC,OAAO,CAAGA,CAAO,CACtB,IAAI,CAACG,IAAI,GACX,CAAC,OAAAC,YAAA,CAAAN,CAAA,GAAAO,GAAA,OAAAC,GAAA,CAKD,SAAAA,IAAA,CAAkB,CAIhB,GAAI,CAAC,IAAI,CAACP,OAAO,CACf,MAAO,EAAE,CAGX,GAAM,CAAAQ,CAAc,CAAG,IAAI,CAACP,OAAO,CAC/BQ,uBAAY,CAACC,cAAc,CAAG,IAAI,CAACT,OAAO,CAC1C,EAAE,CAEN,MACE,CAAAU,uBAAY,CAACC,UAAU,CACvBH,uBAAY,CAACX,OAAO,CACpB,IAAI,CAACE,OAAO,CACZS,uBAAY,CAACI,YAAY,CACzBC,sBAAe,CAAC,IAAI,CAACd,OAAO,CAAC,CAC7BQ,CAEJ,CAAC,GAAAF,GAAA,QAAAC,GAAA,CAKD,SAAAA,IAAA,CAA4B,CAC1B,MAAO,CACLP,OAAO,CAAE,IAAI,CAACA,OAAO,CACrBe,IAAI,CAAEC,oBAAa,CAAClB,OAAO,CAC3BG,OAAO,CAAE,IAAI,CAACA,OAAO,CACrBG,IAAI,CAAE,IAAI,CAACA,IACb,CACF,CAAC,GAAAE,GAAA,UAAAC,GAAA,CAKD,SAAAA,IAAA,CAAsB,CACpB,MAAO,KAAI,CAACH,IACd,CAAC,CAAAa,GAAA,CAED,SAAAA,IAAWC,CAAc,CAAE,CACzB,IAAI,CAACd,IAAI,CAAGc,CACd,CAAC,KAAAZ,GAAA,eAAAY,KAAA,CAQD,SAAAC,YAA0BC,CAAmB,CAAuB,CASlE,OACQ,CAAAC,CAAK,CATTC,CAIH,CAAG,CAAC,CAAC,CAIGC,CAAC,CAAGH,CAAM,CAACI,MAAM,CAAG,CAAC,CAAO,CAAC,EAAND,CAAM,CAAEA,CAAC,EAAE,CAEzC,GADMF,CAAK,CAAGD,CAAM,CAACG,CAAC,CAAC,EACnB,CAACF,CAAK,CAACI,eAAe,EAI1B,IAAAC,CAAA,CAIIL,CAAK,CAACI,eAAe,CAACE,IAAI,CAHnBC,CAAW,CAAAF,CAAA,CAApB1B,OAAO,CACP6B,CAAY,CAAAH,CAAA,CAAZG,YAAY,CACZrB,CAAc,CAAAkB,CAAA,CAAdlB,cAAc,CACe,CAE3BoB,CAAW,EAAqB,IAAI,GAArBC,CAAqB,IACtCP,CAAW,CAAG,CAAEM,WAAW,CAAXA,CAAW,CAAEC,YAAY,CAAZA,CAAY,CAAErB,cAAc,CAAdA,CAAe,CAAC,EAI/D,IAAAsB,CAAA,CAAsDR,CAAW,CAAzDM,CAAW,CAAAE,CAAA,CAAXF,WAAW,CAAEC,CAAY,CAAAC,CAAA,CAAZD,YAAY,CAAErB,CAAc,CAAAsB,CAAA,CAAdtB,cAAc,CAEjD,GAAIoB,CAAW,EAA4B,QAAQ,EAAhC,MAAO,CAAAC,CAAyB,CAAE,CACnD,GAAM,CAAA7B,CAAO,CAAG4B,CAAW,CACvBA,CAAW,CACXG,qBAAc,CAACF,CAAY,CAAW,CAAC,MAEvC,CAAArB,CAAc,CACT,GAAI,CAAAV,CAAO,CAACE,CAAO,CAAEQ,CAAc,CAAC,CAEpC,GAAI,CAAAV,CAAO,CAACE,CAAO,CAE9B,CACF,CAAC,IAAAD,CAAA,IAAAiC,OAAA,CAAAlC,OAAA,CAAAA,OAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"constants.js","names":["DEFAULT_CLEANUP_INTERVAL","exports"],"sources":["../../src/kameleoonData/constants.ts"],"sourcesContent":["/**\n * @constant default cleanup interval in minutes\n * */\nexport const DEFAULT_CLEANUP_INTERVAL = 30;\n"],"mappings":"4GAGO,GAAM,CAAAA,wBAAwB,CAAG,EAAE,CAACC,OAAA,CAAAD,wBAAA"}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import { VisitType } from '../requester';
|
|
2
|
+
import { ConversionDataType, ConversionParametersType, IKameleoonData } from './types';
|
|
3
|
+
/**
|
|
4
|
+
* @class
|
|
5
|
+
* Conversion - a class for creating an instance for conversion tracking
|
|
6
|
+
* */
|
|
7
|
+
export declare class Conversion implements IKameleoonData {
|
|
8
|
+
private goalId;
|
|
9
|
+
private revenue;
|
|
10
|
+
private negative;
|
|
11
|
+
private sent;
|
|
12
|
+
/**
|
|
13
|
+
* @param {ConversionParametersType} conversionParameters - an object with conversion parameters
|
|
14
|
+
* */
|
|
15
|
+
constructor({ goalId, revenue, negative, }: ConversionParametersType);
|
|
16
|
+
/**
|
|
17
|
+
* @property url - url for the current data type used for events tracking
|
|
18
|
+
* */
|
|
19
|
+
get url(): string;
|
|
20
|
+
/**
|
|
21
|
+
* @property data - data of the current class instance
|
|
22
|
+
* */
|
|
23
|
+
get data(): ConversionDataType;
|
|
24
|
+
/**
|
|
25
|
+
* @property isSent - signifying if the data was sent already tracked
|
|
26
|
+
* */
|
|
27
|
+
get isSent(): boolean;
|
|
28
|
+
set isSent(value: boolean);
|
|
29
|
+
/**
|
|
30
|
+
* @private
|
|
31
|
+
* @method _listFromVisits - an internal method for creating a list of Conversion instances
|
|
32
|
+
* @param {VisitType[]} visits - a list of visits
|
|
33
|
+
* @returns {Conversion[]} a list of Conversion instances
|
|
34
|
+
* */
|
|
35
|
+
static _listFromVisits(visits: VisitType[]): Conversion[];
|
|
36
|
+
}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.Conversion=void 0;var _requester=require("../requester"),_types=require("./types");function _typeof(a){"@babel/helpers - typeof";return _typeof="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(a){return typeof a}:function(a){return a&&"function"==typeof Symbol&&a.constructor===Symbol&&a!==Symbol.prototype?"symbol":typeof a},_typeof(a)}function _createForOfIteratorHelper(a,b){var c="undefined"!=typeof Symbol&&a[Symbol.iterator]||a["@@iterator"];if(!c){if(Array.isArray(a)||(c=_unsupportedIterableToArray(a))||b&&a&&"number"==typeof a.length){c&&(a=c);var d=0,e=function(){};return{s:e,n:function n(){return d>=a.length?{done:!0}:{done:!1,value:a[d++]}},e:function e(a){throw a},f:e}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var f,g=!0,h=!1;return{s:function s(){c=c.call(a)},n:function n(){var a=c.next();return g=a.done,a},e:function e(a){h=!0,f=a},f:function f(){try{g||null==c.return||c.return()}finally{if(h)throw f}}}}function _unsupportedIterableToArray(a,b){if(a){if("string"==typeof a)return _arrayLikeToArray(a,b);var c=Object.prototype.toString.call(a).slice(8,-1);return"Object"===c&&a.constructor&&(c=a.constructor.name),"Map"===c||"Set"===c?Array.from(a):"Arguments"===c||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(c)?_arrayLikeToArray(a,b):void 0}}function _arrayLikeToArray(a,b){(null==b||b>a.length)&&(b=a.length);for(var c=0,d=Array(b);c<b;c++)d[c]=a[c];return d}function _classCallCheck(a,b){if(!(a instanceof b))throw new TypeError("Cannot call a class as a function")}function _defineProperties(a,b){for(var c,d=0;d<b.length;d++)c=b[d],c.enumerable=c.enumerable||!1,c.configurable=!0,"value"in c&&(c.writable=!0),Object.defineProperty(a,_toPropertyKey(c.key),c)}function _createClass(a,b,c){return b&&_defineProperties(a.prototype,b),c&&_defineProperties(a,c),Object.defineProperty(a,"prototype",{writable:!1}),a}function _defineProperty(a,b,c){return b=_toPropertyKey(b),b in a?Object.defineProperty(a,b,{value:c,enumerable:!0,configurable:!0,writable:!0}):a[b]=c,a}function _toPropertyKey(a){var b=_toPrimitive(a,"string");return"symbol"===_typeof(b)?b:b+""}function _toPrimitive(a,b){if("object"!==_typeof(a)||null===a)return a;var c=a[Symbol.toPrimitive];if(c!==void 0){var d=c.call(a,b||"default");if("object"!==_typeof(d))return d;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===b?String:Number)(a)}var Conversion=function(){function a(b){var c=b.goalId,d=b.revenue,e=void 0===d?0:d,f=b.negative;_classCallCheck(this,a),_defineProperty(this,"goalId",void 0),_defineProperty(this,"revenue",void 0),_defineProperty(this,"negative",void 0),_defineProperty(this,"sent",void 0),this.goalId=c,this.revenue=e,this.negative=void 0!==f&&f,this.sent=!1}return _createClass(a,[{key:"url",get:function get(){return this.goalId?_requester.UrlEventType.Conversion+_requester.UrlParameter.GoalId+(this.goalId+"")+_requester.UrlParameter.Revenue+(this.revenue+"")+_requester.UrlParameter.Negative+(this.negative+""):""}},{key:"data",get:function get(){return{goalId:this.goalId,revenue:this.revenue,negative:this.negative,type:_types.KameleoonData.Conversion,sent:this.sent}}},{key:"isSent",get:function get(){return this.sent},set:function set(a){this.sent=a}}],[{key:"_listFromVisits",value:function _listFromVisits(b){var c,d=[],e=new Map,f=_createForOfIteratorHelper(b);try{for(f.s();!(c=f.n()).done;){var g=c.value;if(g.conversionEvents){var h,i=g.conversionEvents,j=_createForOfIteratorHelper(i);try{for(j.s();!(h=j.n()).done;){var k=h.value,l=k.data.goalId;if(!e.has(l)){e.set(l,!0);var m=new a({goalId:l});m.isSent=!0,d.push(m)}}}catch(a){j.e(a)}finally{j.f()}}}}catch(a){f.e(a)}finally{f.f()}return d}}]),a}();exports.Conversion=Conversion;
|
|
2
|
+
//# sourceMappingURL=conversion.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"conversion.js","names":["Conversion","a","b","goalId","d","revenue","f","negative","_classCallCheck","_defineProperty","sent","_createClass","key","get","UrlEventType","UrlParameter","GoalId","Revenue","Negative","type","KameleoonData","set","value","_listFromVisits","visits","c","resultConversions","goalIdMap","Map","_createForOfIteratorHelper","s","n","done","visit","conversionEvents","h","j","conversionEvent","data","has","conversion","isSent","push","e","exports"],"sources":["../../src/kameleoonData/conversion.ts"],"sourcesContent":["import { UrlEventType, UrlParameter, VisitType } from 'src/requester';\nimport {\n ConversionDataType,\n ConversionParametersType,\n IKameleoonData,\n KameleoonData,\n} from './types';\n\n/**\n * @class\n * Conversion - a class for creating an instance for conversion tracking\n * */\nexport class Conversion implements IKameleoonData {\n private goalId: number;\n private revenue: number;\n private negative: boolean;\n private sent: boolean;\n\n /**\n * @param {ConversionParametersType} conversionParameters - an object with conversion parameters\n * */\n constructor({\n goalId,\n revenue = 0,\n negative = false,\n }: ConversionParametersType) {\n this.goalId = goalId;\n this.revenue = revenue;\n this.negative = negative;\n this.sent = false;\n }\n\n /**\n * @property url - url for the current data type used for events tracking\n * */\n get url(): string {\n // --- Note ---\n // If SDK is used in vanilla JS codebase, then you're also able to create an instance\n // with no required data, we don't want send anything to tracking in that case\n if (!this.goalId) {\n return '';\n }\n\n return (\n UrlEventType.Conversion +\n UrlParameter.GoalId +\n String(this.goalId) +\n UrlParameter.Revenue +\n String(this.revenue) +\n UrlParameter.Negative +\n String(this.negative)\n );\n }\n\n /**\n * @property data - data of the current class instance\n * */\n get data(): ConversionDataType {\n return {\n goalId: this.goalId,\n revenue: this.revenue,\n negative: this.negative,\n type: KameleoonData.Conversion,\n sent: this.sent,\n };\n }\n\n /**\n * @property isSent - signifying if the data was sent already tracked\n * */\n get isSent(): boolean {\n return this.sent;\n }\n\n set isSent(value: boolean) {\n this.sent = value;\n }\n\n /**\n * @private\n * @method _listFromVisits - an internal method for creating a list of Conversion instances\n * @param {VisitType[]} visits - a list of visits\n * @returns {Conversion[]} a list of Conversion instances\n * */\n public static _listFromVisits(visits: VisitType[]): Conversion[] {\n const resultConversions: Conversion[] = [];\n const goalIdMap = new Map();\n\n for (const visit of visits) {\n if (!visit.conversionEvents) {\n continue;\n }\n\n const conversionEvents = visit.conversionEvents;\n\n for (const conversionEvent of conversionEvents) {\n const { goalId } = conversionEvent.data;\n\n // --- Note ---\n // - We only take unique `goalId`s as and don't use `revenue` and `negative`\n // because we only utilize it for Conversion Condition and don't re-sent this data tracking\n // not to break server `revenue` calculations and not to cause extra conversions\n // - Moreover conversion is marked as sent, so the visitor won't be converted again just\n // by pulling visits data\n if (!goalIdMap.has(goalId)) {\n goalIdMap.set(goalId, true);\n\n const conversion = new Conversion({ goalId });\n conversion.isSent = true;\n\n resultConversions.push(conversion);\n }\n }\n }\n\n return resultConversions;\n }\n}\n"],"mappings":"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"}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import { CookieDataType, CookieType, IKameleoonData } from './types';
|
|
2
|
+
/**
|
|
3
|
+
* @class
|
|
4
|
+
* Cookie - a class for creating an instance for defining user's cookie
|
|
5
|
+
* */
|
|
6
|
+
export declare class Cookie implements IKameleoonData {
|
|
7
|
+
private cookie;
|
|
8
|
+
private sent;
|
|
9
|
+
/**
|
|
10
|
+
* @param {CookieType[]} cookie - a list of cookies
|
|
11
|
+
* */
|
|
12
|
+
constructor(cookie: CookieType[]);
|
|
13
|
+
/**
|
|
14
|
+
* @method fromString - a static method for creating an instance of `Cookie` from a string
|
|
15
|
+
* @param {string} cookieString - a string containing a list of cookies
|
|
16
|
+
* @throws {KameleoonError} throws an error if the string is not valid cookie
|
|
17
|
+
* @returns {Cookie} an instance of `Cookie`
|
|
18
|
+
* */
|
|
19
|
+
static fromString(cookieString: string): Cookie;
|
|
20
|
+
/**
|
|
21
|
+
* @property url - url for the current data type used for events tracking
|
|
22
|
+
* */
|
|
23
|
+
get url(): string;
|
|
24
|
+
/**
|
|
25
|
+
* @property data - data of the current class instance
|
|
26
|
+
* */
|
|
27
|
+
get data(): CookieDataType;
|
|
28
|
+
/**
|
|
29
|
+
* @property isSent - signifying if the data was sent already tracked
|
|
30
|
+
* */
|
|
31
|
+
get isSent(): boolean;
|
|
32
|
+
set isSent(value: boolean);
|
|
33
|
+
}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.Cookie=void 0;var _kameleoonError=require("../kameleoonError"),_types=require("./types");function _typeof(a){"@babel/helpers - typeof";return _typeof="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(a){return typeof a}:function(a){return a&&"function"==typeof Symbol&&a.constructor===Symbol&&a!==Symbol.prototype?"symbol":typeof a},_typeof(a)}function _slicedToArray(a,b){return _arrayWithHoles(a)||_iterableToArrayLimit(a,b)||_unsupportedIterableToArray(a,b)||_nonIterableRest()}function _nonIterableRest(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}function _unsupportedIterableToArray(a,b){if(a){if("string"==typeof a)return _arrayLikeToArray(a,b);var c=Object.prototype.toString.call(a).slice(8,-1);return"Object"===c&&a.constructor&&(c=a.constructor.name),"Map"===c||"Set"===c?Array.from(a):"Arguments"===c||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(c)?_arrayLikeToArray(a,b):void 0}}function _arrayLikeToArray(a,b){(null==b||b>a.length)&&(b=a.length);for(var c=0,d=Array(b);c<b;c++)d[c]=a[c];return d}function _iterableToArrayLimit(a,b){var c=null==a?null:"undefined"!=typeof Symbol&&a[Symbol.iterator]||a["@@iterator"];if(null!=c){var d,e,f,g,h=[],i=!0,j=!1;try{if(f=(c=c.call(a)).next,0===b){if(Object(c)!==c)return;i=!1}else for(;!(i=(d=f.call(c)).done)&&(h.push(d.value),h.length!==b);i=!0);}catch(a){j=!0,e=a}finally{try{if(!i&&null!=c.return&&(g=c.return(),Object(g)!==g))return}finally{if(j)throw e}}return h}}function _arrayWithHoles(a){if(Array.isArray(a))return a}function _classCallCheck(a,b){if(!(a instanceof b))throw new TypeError("Cannot call a class as a function")}function _defineProperties(a,b){for(var c,d=0;d<b.length;d++)c=b[d],c.enumerable=c.enumerable||!1,c.configurable=!0,"value"in c&&(c.writable=!0),Object.defineProperty(a,_toPropertyKey(c.key),c)}function _createClass(a,b,c){return b&&_defineProperties(a.prototype,b),c&&_defineProperties(a,c),Object.defineProperty(a,"prototype",{writable:!1}),a}function _defineProperty(a,b,c){return b=_toPropertyKey(b),b in a?Object.defineProperty(a,b,{value:c,enumerable:!0,configurable:!0,writable:!0}):a[b]=c,a}function _toPropertyKey(a){var b=_toPrimitive(a,"string");return"symbol"===_typeof(b)?b:b+""}function _toPrimitive(a,b){if("object"!==_typeof(a)||null===a)return a;var c=a[Symbol.toPrimitive];if(c!==void 0){var d=c.call(a,b||"default");if("object"!==_typeof(d))return d;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===b?String:Number)(a)}var Cookie=function(){function a(b){_classCallCheck(this,a),_defineProperty(this,"cookie",void 0),_defineProperty(this,"sent",void 0),this.cookie=b,this.sent=!1}return _createClass(a,[{key:"url",get:function get(){return""}},{key:"data",get:function get(){return{cookie:this.cookie,type:_types.KameleoonData.Cookie,sent:this.sent}}},{key:"isSent",get:function get(){return this.sent},set:function set(a){this.sent=a}}],[{key:"fromString",value:function fromString(b){if(!b)throw new _kameleoonError.KameleoonError(_kameleoonError.KameleoonException.CookieParse,"Cookie string can't be empty");var c=b.split(";"),d=c.map(function(a){var b=a.trim().split("="),c=_slicedToArray(b,2),d=c[0],e=c[1];if(!d||!e)throw new _kameleoonError.KameleoonError(_kameleoonError.KameleoonException.CookieParse,"Cookie string is not valid");return{key:d,value:e}});return new a(d)}}]),a}();exports.Cookie=Cookie;
|
|
2
|
+
//# sourceMappingURL=cookie.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cookie.js","names":["Cookie","a","cookie","_classCallCheck","_defineProperty","sent","_createClass","key","get","type","KameleoonData","set","value","fromString","cookieString","KameleoonError","KameleoonException","CookieParse","pairs","split","map","item","b","trim","c","_slicedToArray","exports"],"sources":["../../src/kameleoonData/cookie.ts"],"sourcesContent":["import { KameleoonError, KameleoonException } from 'src/kameleoonError';\nimport {\n CookieDataType,\n CookieType,\n IKameleoonData,\n KameleoonData,\n} from './types';\n\n/**\n * @class\n * Cookie - a class for creating an instance for defining user's cookie\n * */\nexport class Cookie implements IKameleoonData {\n private cookie: CookieType[];\n private sent: boolean;\n\n /**\n * @param {CookieType[]} cookie - a list of cookies\n * */\n constructor(cookie: CookieType[]) {\n this.cookie = cookie;\n this.sent = false;\n }\n\n /**\n * @method fromString - a static method for creating an instance of `Cookie` from a string\n * @param {string} cookieString - a string containing a list of cookies\n * @throws {KameleoonError} throws an error if the string is not valid cookie\n * @returns {Cookie} an instance of `Cookie`\n * */\n static fromString(cookieString: string): Cookie {\n if (!cookieString) {\n throw new KameleoonError(\n KameleoonException.CookieParse,\n \"Cookie string can't be empty\",\n );\n }\n\n const pairs = cookieString.split(';');\n\n const cookie = pairs.map((item) => {\n const [key, value] = item.trim().split('=');\n\n if (!key || !value) {\n throw new KameleoonError(\n KameleoonException.CookieParse,\n 'Cookie string is not valid',\n );\n }\n\n return { key, value };\n });\n\n return new Cookie(cookie);\n }\n\n /**\n * @property url - url for the current data type used for events tracking\n * */\n get url(): string {\n return '';\n }\n\n /**\n * @property data - data of the current class instance\n * */\n get data(): CookieDataType {\n return {\n cookie: this.cookie,\n type: KameleoonData.Cookie,\n sent: this.sent,\n };\n }\n\n /**\n * @property isSent - signifying if the data was sent already tracked\n * */\n get isSent(): boolean {\n return this.sent;\n }\n\n set isSent(value: boolean) {\n this.sent = value;\n }\n}\n"],"mappings":"8nFAYa,CAAAA,MAAM,YAOjB,SAAAC,EAAYC,CAAoB,CAAE,CAAAC,eAAA,MAAAF,CAAA,EAAAG,eAAA,uBAAAA,eAAA,qBAChC,IAAI,CAACF,MAAM,CAAGA,CAAM,CACpB,IAAI,CAACG,IAAI,GACX,CAAC,OAAAC,YAAA,CAAAL,CAAA,GAAAM,GAAA,OAAAC,GAAA,CAqCD,SAAAA,IAAA,CAAkB,CAChB,MAAO,EACT,CAAC,GAAAD,GAAA,QAAAC,GAAA,CAKD,SAAAA,IAAA,CAA2B,CACzB,MAAO,CACLN,MAAM,CAAE,IAAI,CAACA,MAAM,CACnBO,IAAI,CAAEC,oBAAa,CAACV,MAAM,CAC1BK,IAAI,CAAE,IAAI,CAACA,IACb,CACF,CAAC,GAAAE,GAAA,UAAAC,GAAA,CAKD,SAAAA,IAAA,CAAsB,CACpB,MAAO,KAAI,CAACH,IACd,CAAC,CAAAM,GAAA,CAED,SAAAA,IAAWC,CAAc,CAAE,CACzB,IAAI,CAACP,IAAI,CAAGO,CACd,CAAC,KAAAL,GAAA,cAAAK,KAAA,CArDD,SAAAC,WAAkBC,CAAoB,CAAU,CAC9C,GAAI,CAACA,CAAY,CACf,KAAM,IAAI,CAAAC,8BAAc,CACtBC,kCAAkB,CAACC,WAAW,CAC9B,8BAA8B,CAC/B,CACF,GAEK,CAAAC,CAAK,CAAGJ,CAAY,CAACK,KAAK,CAAC,GAAG,CAAC,CAE/BjB,CAAM,CAAGgB,CAAK,CAACE,GAAG,CAAC,SAACC,CAAI,CAAK,CACjC,IAAAC,CAAA,CAAqBD,CAAI,CAACE,IAAI,EAAE,CAACJ,KAAK,CAAC,GAAG,CAAC,CAAAK,CAAA,CAAAC,cAAA,CAAAH,CAAA,IAApCf,CAAG,CAAAiB,CAAA,IAAEZ,CAAK,CAAAY,CAAA,IAEjB,GAAI,CAACjB,CAAG,EAAI,CAACK,CAAK,CAChB,KAAM,IAAI,CAAAG,8BAAc,CACtBC,kCAAkB,CAACC,WAAW,CAC9B,4BAA4B,CAC7B,CAGH,MAAO,CAAEV,GAAG,CAAHA,CAAG,CAAEK,KAAK,CAALA,CAAM,CACtB,CAAC,CAAC,CAEF,MAAO,IAAI,CAAAZ,CAAM,CAACE,CAAM,CAC1B,CAAC,IAAAD,CAAA,IAAAyB,OAAA,CAAA1B,MAAA,CAAAA,MAAA"}
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
import { VisitType } from '../requester';
|
|
2
|
+
import { CustomDataType, IKameleoonData } from './types';
|
|
3
|
+
/**
|
|
4
|
+
* @class
|
|
5
|
+
* CustomData - a class for creating an instance for user's custom data
|
|
6
|
+
* */
|
|
7
|
+
export declare class CustomData implements IKameleoonData {
|
|
8
|
+
private index;
|
|
9
|
+
private value;
|
|
10
|
+
private sent;
|
|
11
|
+
/**
|
|
12
|
+
* @param {number} index - an index of custom data to be stored under in a state, an index of custom data can be specified in `Advanced Tools` section of Kameleoon Application
|
|
13
|
+
* @param {string[]} value - custom value to store under the specified id, value can be anything but has to be stringified to match the `string` type. *Note* value is variadic parameter and can be used as follows
|
|
14
|
+
* @example
|
|
15
|
+
* ```ts
|
|
16
|
+
* // - Single value
|
|
17
|
+
* const customData = new CustomData(0, 'value_1');
|
|
18
|
+
* // - Variadic number of values
|
|
19
|
+
* const customData = new CustomData(0, 'value_1', 'value_2', 'value_3');
|
|
20
|
+
* // - Array of values
|
|
21
|
+
* const values = ['value_1', 'value_2', 'value_3'];
|
|
22
|
+
* const customData = new CustomData(0, ...values);
|
|
23
|
+
* ```
|
|
24
|
+
* */
|
|
25
|
+
constructor(index: number, ...value: string[]);
|
|
26
|
+
/**
|
|
27
|
+
* @property url - url for the current data type used for events tracking
|
|
28
|
+
* */
|
|
29
|
+
get url(): string;
|
|
30
|
+
/**
|
|
31
|
+
* @property data - data of the current class instance
|
|
32
|
+
* */
|
|
33
|
+
get data(): CustomDataType;
|
|
34
|
+
/**
|
|
35
|
+
* @property isSent - signifying if the data was sent already tracked
|
|
36
|
+
* */
|
|
37
|
+
get isSent(): boolean;
|
|
38
|
+
set isSent(value: boolean);
|
|
39
|
+
/**
|
|
40
|
+
* @private
|
|
41
|
+
* @method _listFromVisits - an internal method for creating a list of custom data from a list of visits
|
|
42
|
+
* @param {VisitType[]} visits - a list of visits
|
|
43
|
+
* @returns {CustomData[]} a list of custom data
|
|
44
|
+
* */
|
|
45
|
+
static _listFromVisits(visits: VisitType[]): CustomData[];
|
|
46
|
+
}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.CustomData=void 0;var _requester=require("../requester"),_types=require("./types");function _typeof(a){"@babel/helpers - typeof";return _typeof="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(a){return typeof a}:function(a){return a&&"function"==typeof Symbol&&a.constructor===Symbol&&a!==Symbol.prototype?"symbol":typeof a},_typeof(a)}function _construct(){return _construct=_isNativeReflectConstruct()?Reflect.construct.bind():function(b,c,d){var e=[null];e.push.apply(e,c);var a=Function.bind.apply(b,e),f=new a;return d&&_setPrototypeOf(f,d.prototype),f},_construct.apply(null,arguments)}function _isNativeReflectConstruct(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],function(){})),!0}catch(a){return!1}}function _setPrototypeOf(a,b){return _setPrototypeOf=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(a,b){return a.__proto__=b,a},_setPrototypeOf(a,b)}function _slicedToArray(a,b){return _arrayWithHoles(a)||_iterableToArrayLimit(a,b)||_unsupportedIterableToArray(a,b)||_nonIterableRest()}function _nonIterableRest(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}function _iterableToArrayLimit(a,b){var c=null==a?null:"undefined"!=typeof Symbol&&a[Symbol.iterator]||a["@@iterator"];if(null!=c){var d,e,f,g,h=[],i=!0,j=!1;try{if(f=(c=c.call(a)).next,0===b){if(Object(c)!==c)return;i=!1}else for(;!(i=(d=f.call(c)).done)&&(h.push(d.value),h.length!==b);i=!0);}catch(a){j=!0,e=a}finally{try{if(!i&&null!=c.return&&(g=c.return(),Object(g)!==g))return}finally{if(j)throw e}}return h}}function _arrayWithHoles(a){if(Array.isArray(a))return a}function _createForOfIteratorHelper(a,b){var c="undefined"!=typeof Symbol&&a[Symbol.iterator]||a["@@iterator"];if(!c){if(Array.isArray(a)||(c=_unsupportedIterableToArray(a))||b&&a&&"number"==typeof a.length){c&&(a=c);var d=0,e=function(){};return{s:e,n:function n(){return d>=a.length?{done:!0}:{done:!1,value:a[d++]}},e:function e(a){throw a},f:e}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var f,g=!0,h=!1;return{s:function s(){c=c.call(a)},n:function n(){var a=c.next();return g=a.done,a},e:function e(a){h=!0,f=a},f:function f(){try{g||null==c.return||c.return()}finally{if(h)throw f}}}}function _toConsumableArray(a){return _arrayWithoutHoles(a)||_iterableToArray(a)||_unsupportedIterableToArray(a)||_nonIterableSpread()}function _nonIterableSpread(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}function _unsupportedIterableToArray(a,b){if(a){if("string"==typeof a)return _arrayLikeToArray(a,b);var c=Object.prototype.toString.call(a).slice(8,-1);return"Object"===c&&a.constructor&&(c=a.constructor.name),"Map"===c||"Set"===c?Array.from(a):"Arguments"===c||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(c)?_arrayLikeToArray(a,b):void 0}}function _iterableToArray(a){if("undefined"!=typeof Symbol&&null!=a[Symbol.iterator]||null!=a["@@iterator"])return Array.from(a)}function _arrayWithoutHoles(a){if(Array.isArray(a))return _arrayLikeToArray(a)}function _arrayLikeToArray(a,b){(null==b||b>a.length)&&(b=a.length);for(var c=0,d=Array(b);c<b;c++)d[c]=a[c];return d}function _classCallCheck(a,b){if(!(a instanceof b))throw new TypeError("Cannot call a class as a function")}function _defineProperties(a,b){for(var c,d=0;d<b.length;d++)c=b[d],c.enumerable=c.enumerable||!1,c.configurable=!0,"value"in c&&(c.writable=!0),Object.defineProperty(a,_toPropertyKey(c.key),c)}function _createClass(a,b,c){return b&&_defineProperties(a.prototype,b),c&&_defineProperties(a,c),Object.defineProperty(a,"prototype",{writable:!1}),a}function _defineProperty(a,b,c){return b=_toPropertyKey(b),b in a?Object.defineProperty(a,b,{value:c,enumerable:!0,configurable:!0,writable:!0}):a[b]=c,a}function _toPropertyKey(a){var b=_toPrimitive(a,"string");return"symbol"===_typeof(b)?b:b+""}function _toPrimitive(a,b){if("object"!==_typeof(a)||null===a)return a;var c=a[Symbol.toPrimitive];if(c!==void 0){var d=c.call(a,b||"default");if("object"!==_typeof(d))return d;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===b?String:Number)(a)}var CustomData=function(){function a(b){_classCallCheck(this,a),_defineProperty(this,"index",void 0),_defineProperty(this,"value",void 0),_defineProperty(this,"sent",void 0),this.index=b;for(var c=arguments.length,d=Array(1<c?c-1:0),e=1;e<c;e++)d[e-1]=arguments[e];this.value=d,this.sent=!1}return _createClass(a,[{key:"url",get:function get(){if("number"!=typeof this.index)return"";var a=_toConsumableArray(new Set(this.value)),b={};return a.forEach(function(a){b[a]=1}),Object.keys(b).length?_requester.UrlEventType.CustomData+_requester.UrlParameter.Index+this.index+_requester.UrlParameter.ValuesCountMap+encodeURIComponent(JSON.stringify(b))+_requester.UrlParameter.Overwrite+"true":""}},{key:"data",get:function get(){return{index:this.index,value:this.value,type:_types.KameleoonData.CustomData,sent:this.sent}}},{key:"isSent",get:function get(){return this.sent},set:function set(a){this.sent=a}}],[{key:"_listFromVisits",value:function _listFromVisits(b){for(var c,d=[],e=new Map,f=b.length-1;0<=f;f--)if(c=b[f],!!c.customDataEvents){var g,h=c.customDataEvents,j=_createForOfIteratorHelper(h);try{for(j.s();!(g=j.n()).done;){var k=g.value,l=k.data,m=l.index,n=l.valuesCountMap;e.set(m,Object.keys(n))}}catch(a){j.e(a)}finally{j.f()}}var o,p=_createForOfIteratorHelper(e);try{for(p.s();!(o=p.n()).done;){var q=_slicedToArray(o.value,2),r=q[0],s=q[1];d.push(_construct(a,[r].concat(_toConsumableArray(s))))}}catch(a){p.e(a)}finally{p.f()}return d}}]),a}();exports.CustomData=CustomData;
|
|
2
|
+
//# sourceMappingURL=customData.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"customData.js","names":["CustomData","a","index","_classCallCheck","_defineProperty","c","arguments","length","value","Array","e","sent","_createClass","key","get","uniqueValues","_toConsumableArray","Set","resultValue","forEach","Object","keys","UrlEventType","UrlParameter","Index","ValuesCountMap","encodeURIComponent","JSON","stringify","Overwrite","type","KameleoonData","set","_listFromVisits","visits","visit","resultData","customDataMap","Map","i","customDataEvents","g","j","_createForOfIteratorHelper","s","n","done","customDataEvent","l","data","valuesCountMap","f","o","p","q","_slicedToArray","push","_construct","concat","exports"],"sources":["../../src/kameleoonData/customData.ts"],"sourcesContent":["import { UrlEventType, UrlParameter, VisitType } from 'src/requester';\nimport { CustomDataType, IKameleoonData, KameleoonData } from './types';\n\n/**\n * @class\n * CustomData - a class for creating an instance for user's custom data\n * */\nexport class CustomData implements IKameleoonData {\n private index: number;\n private value: string[];\n private sent: boolean;\n\n /**\n * @param {number} index - an index of custom data to be stored under in a state, an index of custom data can be specified in `Advanced Tools` section of Kameleoon Application\n * @param {string[]} value - custom value to store under the specified id, value can be anything but has to be stringified to match the `string` type. *Note* value is variadic parameter and can be used as follows\n * @example\n * ```ts\n * // - Single value\n * const customData = new CustomData(0, 'value_1');\n * // - Variadic number of values\n * const customData = new CustomData(0, 'value_1', 'value_2', 'value_3');\n * // - Array of values\n * const values = ['value_1', 'value_2', 'value_3'];\n * const customData = new CustomData(0, ...values);\n * ```\n * */\n constructor(index: number, ...value: string[]) {\n this.index = index;\n this.value = value;\n this.sent = false;\n }\n\n /**\n * @property url - url for the current data type used for events tracking\n * */\n get url(): string {\n // --- Note ---\n // If SDK is used in vanilla JS codebase, then you're also able to create an instance\n // with no required data, we don't want send anything to tracking in that case\n if (typeof this.index !== 'number') {\n return '';\n }\n\n const uniqueValues = [...new Set(this.value)];\n let resultValue: Record<string, 1> = {};\n\n // --- Note ---\n // Final value should look like this `{ \"value_1\": 1, \"value_2\": 1, \"value_3\": 1}`\n // With no duplicates\n uniqueValues.forEach((value) => {\n resultValue[value] = 1;\n });\n\n if (!Object.keys(resultValue).length) {\n return '';\n }\n\n return (\n UrlEventType.CustomData +\n UrlParameter.Index +\n this.index +\n UrlParameter.ValuesCountMap +\n encodeURIComponent(JSON.stringify(resultValue)) +\n UrlParameter.Overwrite +\n String(true)\n );\n }\n\n /**\n * @property data - data of the current class instance\n * */\n get data(): CustomDataType {\n return {\n index: this.index,\n value: this.value,\n type: KameleoonData.CustomData,\n sent: this.sent,\n };\n }\n\n /**\n * @property isSent - signifying if the data was sent already tracked\n * */\n get isSent(): boolean {\n return this.sent;\n }\n\n set isSent(value: boolean) {\n this.sent = value;\n }\n\n /**\n * @private\n * @method _listFromVisits - an internal method for creating a list of custom data from a list of visits\n * @param {VisitType[]} visits - a list of visits\n * @returns {CustomData[]} a list of custom data\n * */\n public static _listFromVisits(visits: VisitType[]): CustomData[] {\n const resultData: CustomData[] = [];\n const customDataMap = new Map<number, string[]>();\n\n // --- Note ---\n // Going backwards to get the latest visit data\n for (let i = visits.length - 1; i >= 0; i--) {\n const visit = visits[i];\n\n if (!visit.customDataEvents) {\n continue;\n }\n\n const customDataEvents = visit.customDataEvents;\n\n for (const customDataEvent of customDataEvents) {\n const { index, valuesCountMap } = customDataEvent.data;\n\n customDataMap.set(index, Object.keys(valuesCountMap));\n }\n }\n\n for (const [index, data] of customDataMap) {\n resultData.push(new CustomData(index, ...data));\n }\n\n return resultData;\n }\n}\n"],"mappings":"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"}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import { Result } from 'ts-res';
|
|
2
|
+
import { KameleoonError } from '../kameleoonError';
|
|
3
|
+
import { SegmentType, TargetingDataType, Tree } from '../targeting';
|
|
4
|
+
import { CustomDataConfigurationType } from '../clientConfiguration';
|
|
5
|
+
import { CustomData } from './customData';
|
|
6
|
+
import { DataManagerParametersType, KameleoonDataType, UnsentTargetingDataType } from './types';
|
|
7
|
+
interface IDataManager {
|
|
8
|
+
addData(visitorCode: string, ...kameleoonData: KameleoonDataType[]): void;
|
|
9
|
+
getUnsentData: (visitorCode: string) => UnsentTargetingDataType[string] | undefined;
|
|
10
|
+
getTree(segment: SegmentType): Tree;
|
|
11
|
+
clearTrees(): void;
|
|
12
|
+
clearUnsentData: (visitorCode: string) => void;
|
|
13
|
+
isPersistentCustomData: (dataItem: KameleoonDataType) => boolean;
|
|
14
|
+
readonly trees: Map<string, Tree>;
|
|
15
|
+
readonly storedTargetingData: TargetingDataType;
|
|
16
|
+
readonly unsentDataVisitors: string[];
|
|
17
|
+
}
|
|
18
|
+
export declare class DataManager implements IDataManager {
|
|
19
|
+
private targetingTrees;
|
|
20
|
+
private localCustomDataIndexes;
|
|
21
|
+
private persistentCustomDataIndexes;
|
|
22
|
+
private targetingDataIntervalId;
|
|
23
|
+
private dataProcessor;
|
|
24
|
+
private unsentData;
|
|
25
|
+
private sentPageViewTimestamps;
|
|
26
|
+
constructor({ storage, targetingCleanupInterval, }: DataManagerParametersType);
|
|
27
|
+
addData(visitorCode: string, ...kameleoonData: KameleoonDataType[]): Result<void, KameleoonError>;
|
|
28
|
+
getTree(segment: SegmentType): Tree;
|
|
29
|
+
clearTrees(): void;
|
|
30
|
+
getUnsentData(visitorCode: string): UnsentTargetingDataType[string] | undefined;
|
|
31
|
+
clearUnsentData(visitorCode: string): void;
|
|
32
|
+
isPersistentCustomData(dataItem: KameleoonDataType): dataItem is CustomData;
|
|
33
|
+
get trees(): Map<string, Tree>;
|
|
34
|
+
get unsentDataVisitors(): string[];
|
|
35
|
+
get storedTargetingData(): TargetingDataType;
|
|
36
|
+
set customDataIndexes(customData: CustomDataConfigurationType[]);
|
|
37
|
+
}
|
|
38
|
+
export {};
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.DataManager=void 0;var _targeting=require("../targeting"),_dataProcessor=require("./dataProcessor"),_utilities=require("../utilities"),_clientConfiguration=require("../clientConfiguration"),_types=require("../types"),_types2=require("./types");function _typeof(a){"@babel/helpers - typeof";return _typeof="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(a){return typeof a}:function(a){return a&&"function"==typeof Symbol&&a.constructor===Symbol&&a!==Symbol.prototype?"symbol":typeof a},_typeof(a)}function _createForOfIteratorHelper(a,b){var c="undefined"!=typeof Symbol&&a[Symbol.iterator]||a["@@iterator"];if(!c){if(Array.isArray(a)||(c=_unsupportedIterableToArray(a))||b&&a&&"number"==typeof a.length){c&&(a=c);var d=0,e=function(){};return{s:e,n:function n(){return d>=a.length?{done:!0}:{done:!1,value:a[d++]}},e:function e(a){throw a},f:e}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var f,g=!0,h=!1;return{s:function s(){c=c.call(a)},n:function n(){var a=c.next();return g=a.done,a},e:function e(a){h=!0,f=a},f:function f(){try{g||null==c.return||c.return()}finally{if(h)throw f}}}}function _unsupportedIterableToArray(a,b){if(a){if("string"==typeof a)return _arrayLikeToArray(a,b);var c=Object.prototype.toString.call(a).slice(8,-1);return"Object"===c&&a.constructor&&(c=a.constructor.name),"Map"===c||"Set"===c?Array.from(a):"Arguments"===c||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(c)?_arrayLikeToArray(a,b):void 0}}function _arrayLikeToArray(a,b){(null==b||b>a.length)&&(b=a.length);for(var c=0,d=Array(b);c<b;c++)d[c]=a[c];return d}function _classCallCheck(a,b){if(!(a instanceof b))throw new TypeError("Cannot call a class as a function")}function _defineProperties(a,b){for(var c,d=0;d<b.length;d++)c=b[d],c.enumerable=c.enumerable||!1,c.configurable=!0,"value"in c&&(c.writable=!0),Object.defineProperty(a,_toPropertyKey(c.key),c)}function _createClass(a,b,c){return b&&_defineProperties(a.prototype,b),c&&_defineProperties(a,c),Object.defineProperty(a,"prototype",{writable:!1}),a}function _defineProperty(a,b,c){return b=_toPropertyKey(b),b in a?Object.defineProperty(a,b,{value:c,enumerable:!0,configurable:!0,writable:!0}):a[b]=c,a}function _toPropertyKey(a){var b=_toPrimitive(a,"string");return"symbol"===_typeof(b)?b:b+""}function _toPrimitive(a,b){if("object"!==_typeof(a)||null===a)return a;var c=a[Symbol.toPrimitive];if(c!==void 0){var d=c.call(a,b||"default");if("object"!==_typeof(d))return d;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===b?String:Number)(a)}var DataManager=function(){function a(b){var c=this,d=b.storage,e=b.targetingCleanupInterval;if(_classCallCheck(this,a),_defineProperty(this,"targetingTrees",new Map),_defineProperty(this,"localCustomDataIndexes",new Set),_defineProperty(this,"persistentCustomDataIndexes",new Set),_defineProperty(this,"targetingDataIntervalId",null),_defineProperty(this,"dataProcessor",void 0),_defineProperty(this,"unsentData",void 0),_defineProperty(this,"sentPageViewTimestamps",new Map),this.dataProcessor=new _dataProcessor.DataProcessor(d),this.unsentData={},e){var f=0>e?1:e,g=function(){c.dataProcessor.cleanupOutdatedTargetingData(e),c.sentPageViewTimestamps.clear()};try{this.targetingDataIntervalId=setInterval(g,f*_types.Milliseconds.Minute)}catch(a){throw this.targetingDataIntervalId&&clearInterval(this.targetingDataIntervalId),a}}}return _createClass(a,[{key:"addData",value:function addData(a){this.unsentData[a]||(this.unsentData[a]=new Map);for(var b=arguments.length,c=Array(1<b?b-1:0),d=1;d<b;d++)c[d-1]=arguments[d];for(var e,f=0,g=c;f<g.length;f++)switch(e=g[f],this.dataProcessor.updateData(a,e),e.data.type){case _types2.KameleoonData.CustomData:{var h=e.data;this.localCustomDataIndexes.has(h.index)||e.isSent||this.unsentData[a].set(h.index,e);break}case _types2.KameleoonData.PageView:{var i=e.data,j=this.dataProcessor.storedTargetingData.or({}),k=j[a][_types2.KameleoonData.PageView];if(k){var l=k[i.urlAddress];if(!e.isSent){var m,n=_createForOfIteratorHelper(l.timestamps);try{for(n.s();!(m=n.n()).done;){var o=m.value;this.sentPageViewTimestamps.has(o)||(this.unsentData[a].set(o,e),this.sentPageViewTimestamps.set(o,!0))}}catch(a){n.e(a)}finally{n.f()}}}break}case _types2.KameleoonData.Conversion:{var p=this.unsentData[a];if(!e.isSent)if(p.has(_types2.KameleoonData.Conversion)){var q=p.get(_types2.KameleoonData.Conversion);q.push(e),p.set(_types2.KameleoonData.Conversion,q)}else p.set(_types2.KameleoonData.Conversion,[e]);break}default:{var r=e.data;e.isSent||this.unsentData[a].set(r.type,e)}}return this.dataProcessor.createVisit(a)}},{key:"getTree",value:function getTree(a){if(!this.targetingTrees.has(a.id)){var b=new _targeting.Tree(a);return this.targetingTrees.set(a.id,new _targeting.Tree(a)),b}return this.targetingTrees.get(a.id)}},{key:"clearTrees",value:function clearTrees(){this.targetingTrees.clear()}},{key:"getUnsentData",value:function getUnsentData(a){return this.unsentData[a]}},{key:"clearUnsentData",value:function clearUnsentData(a){var b,c=null===(b=this.unsentData[a])||void 0===b?void 0:b.values();if(c&&this.persistentCustomDataIndexes.size){var d,e=new Map,f=_createForOfIteratorHelper(c);try{for(f.s();!(d=f.n()).done;){var g=d.value;!Array.isArray(g)&&this.isPersistentCustomData(g)&&e.set(g.data.index,g)}}catch(a){f.e(a)}finally{f.f()}if(e.size)return void(this.unsentData[a]=e)}delete this.unsentData[a]}},{key:"isPersistentCustomData",value:function isPersistentCustomData(a){return!!this.persistentCustomDataIndexes.size&&!!_utilities.Utilities.isCustomData(a)&&this.persistentCustomDataIndexes.has(a.data.index)}},{key:"trees",get:function get(){return this.targetingTrees}},{key:"unsentDataVisitors",get:function get(){return Object.keys(this.unsentData)}},{key:"storedTargetingData",get:function get(){return this.dataProcessor.storedTargetingData.or({})}},{key:"customDataIndexes",set:function set(a){var b=[],c=[];a.forEach(function(a){a.localOnly&&b.push(a.index),a.scope===_clientConfiguration.CustomDataScope.Visitor&&c.push(a.index)}),b.length&&(this.localCustomDataIndexes=new Set(b)),c.length&&(this.persistentCustomDataIndexes=new Set(c))}}]),a}();exports.DataManager=DataManager;
|
|
2
|
+
//# sourceMappingURL=dataManager.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dataManager.js","names":["DataManager","a","b","c","storage","targetingCleanupInterval","_classCallCheck","_defineProperty","Map","Set","dataProcessor","DataProcessor","unsentData","cleanupInterval","cleanupCallback","cleanupOutdatedTargetingData","sentPageViewTimestamps","clear","targetingDataIntervalId","setInterval","Milliseconds","Minute","err","clearInterval","_createClass","key","value","addData","visitorCode","arguments","length","kameleoonData","Array","d","dataItem","f","g","updateData","data","type","KameleoonData","CustomData","localCustomDataIndexes","has","index","isSent","set","PageView","storedData","storedTargetingData","or","storedVisitorData","pageView","urlAddress","m","n","_createForOfIteratorHelper","timestamps","s","done","timestamp","e","Conversion","existingConversions","get","push","createVisit","getTree","segment","targetingTrees","id","targetingTree","Tree","clearTrees","getUnsentData","clearUnsentData","dataItems","values","persistentCustomDataIndexes","size","persistentCustomData","isArray","isPersistentCustomData","Utilities","isCustomData","Object","keys","customData","customDataLocalOnlyIndexes","forEach","localOnly","scope","CustomDataScope","Visitor","exports"],"sources":["../../src/kameleoonData/dataManager.ts"],"sourcesContent":["import { Result } from 'ts-res';\nimport { KameleoonError } from 'src/kameleoonError';\nimport { SegmentType, TargetingDataType, Tree } from 'src/targeting';\nimport { DataProcessor } from './dataProcessor';\nimport { Utilities } from 'src/utilities';\nimport {\n CustomDataConfigurationType,\n CustomDataScope,\n} from 'src/clientConfiguration';\nimport { Milliseconds } from 'src/types';\nimport { CustomData } from './customData';\nimport {\n CustomDataType,\n DataManagerParametersType,\n ExistingPageViewDataType,\n KameleoonData,\n KameleoonDataType,\n PageViewDataType,\n UnsentTargetingDataType,\n UnsentVisitorTargetingDataType,\n} from './types';\n\ninterface IDataManager {\n addData(visitorCode: string, ...kameleoonData: KameleoonDataType[]): void;\n getUnsentData: (\n visitorCode: string,\n ) => UnsentTargetingDataType[string] | undefined;\n getTree(segment: SegmentType): Tree;\n clearTrees(): void;\n clearUnsentData: (visitorCode: string) => void;\n isPersistentCustomData: (dataItem: KameleoonDataType) => boolean;\n readonly trees: Map<string, Tree>;\n readonly storedTargetingData: TargetingDataType;\n readonly unsentDataVisitors: string[];\n}\n\nexport class DataManager implements IDataManager {\n private targetingTrees: Map<string, Tree> = new Map();\n private localCustomDataIndexes: Set<number> = new Set();\n private persistentCustomDataIndexes: Set<number> = new Set();\n private targetingDataIntervalId: NodeJS.Timer | null = null;\n private dataProcessor: DataProcessor;\n private unsentData: UnsentTargetingDataType;\n private sentPageViewTimestamps: Map<number, boolean> = new Map();\n\n constructor({\n storage,\n targetingCleanupInterval,\n }: DataManagerParametersType) {\n this.dataProcessor = new DataProcessor(storage);\n this.unsentData = {};\n\n if (targetingCleanupInterval) {\n const cleanupInterval =\n targetingCleanupInterval < 0 ? 1 : targetingCleanupInterval;\n\n const cleanupCallback = () => {\n this.dataProcessor.cleanupOutdatedTargetingData(\n targetingCleanupInterval,\n );\n this.sentPageViewTimestamps.clear();\n };\n\n // --- Note ---\n // We can not make delayed code execution recoverable, as it might lead\n // to targeting data storage size overflow\n try {\n this.targetingDataIntervalId = setInterval(\n cleanupCallback,\n cleanupInterval * Milliseconds.Minute,\n );\n } catch (err) {\n if (this.targetingDataIntervalId) {\n clearInterval(this.targetingDataIntervalId);\n }\n\n throw err;\n }\n }\n }\n\n public addData(\n visitorCode: string,\n ...kameleoonData: KameleoonDataType[]\n ): Result<void, KameleoonError> {\n // --- Note ---\n // We assume `this.unsentTargetingData[visitorCode]` is always presents further\n if (!this.unsentData[visitorCode]) {\n this.unsentData[visitorCode] = new Map();\n }\n\n for (const dataItem of kameleoonData) {\n this.dataProcessor.updateData(visitorCode, dataItem);\n\n switch (dataItem.data.type) {\n case KameleoonData.CustomData: {\n const data = dataItem.data as CustomDataType;\n\n if (\n !this.localCustomDataIndexes.has(data.index) &&\n !dataItem.isSent\n ) {\n this.unsentData[visitorCode]!.set(data.index, dataItem);\n }\n\n break;\n }\n case KameleoonData.PageView: {\n const data = dataItem.data as PageViewDataType;\n\n // --- Note ---\n // `PageViews` can only be processed during storage update as they\n // can't create and merge referrers/titles/timestamps on their own\n // So we have to extract them from storage to update `unsentData` correctly\n const storedData = this.dataProcessor.storedTargetingData.or({});\n const storedVisitorData =\n storedData[visitorCode][KameleoonData.PageView];\n\n if (storedVisitorData) {\n const pageView = (storedVisitorData as ExistingPageViewDataType)[\n data.urlAddress\n ];\n\n if (!dataItem.isSent) {\n for (const timestamp of pageView.timestamps) {\n // --- Note ---\n // As we don't keep `sent` status for each timestamp, we have to\n // check if it was already sent to avoid duplicates\n if (!this.sentPageViewTimestamps.has(timestamp)) {\n this.unsentData[visitorCode]!.set(timestamp, dataItem);\n this.sentPageViewTimestamps.set(timestamp, true);\n }\n }\n }\n }\n\n break;\n }\n case KameleoonData.Conversion: {\n const unsentData = this.unsentData[visitorCode]!;\n\n if (!dataItem.isSent) {\n if (unsentData.has(KameleoonData.Conversion)) {\n const existingConversions = unsentData.get(\n KameleoonData.Conversion,\n ) as KameleoonDataType[];\n\n existingConversions.push(dataItem);\n\n unsentData.set(KameleoonData.Conversion, existingConversions);\n } else {\n unsentData.set(KameleoonData.Conversion, [dataItem]);\n }\n }\n\n break;\n }\n default: {\n const { data } = dataItem;\n\n if (!dataItem.isSent) {\n this.unsentData[visitorCode]!.set(data.type, dataItem);\n }\n }\n }\n }\n\n return this.dataProcessor.createVisit(visitorCode);\n }\n\n public getTree(segment: SegmentType): Tree {\n if (!this.targetingTrees.has(segment.id)) {\n const targetingTree = new Tree(segment);\n\n this.targetingTrees.set(segment.id, new Tree(segment));\n\n return targetingTree;\n }\n\n return this.targetingTrees.get(segment.id) as Tree;\n }\n\n public clearTrees(): void {\n this.targetingTrees.clear();\n }\n\n public getUnsentData(\n visitorCode: string,\n ): UnsentTargetingDataType[string] | undefined {\n return this.unsentData[visitorCode];\n }\n\n public clearUnsentData(visitorCode: string): void {\n const dataItems = this.unsentData[visitorCode]?.values();\n\n if (dataItems && this.persistentCustomDataIndexes.size) {\n const persistentCustomData: UnsentVisitorTargetingDataType = new Map();\n\n for (const dataItem of dataItems) {\n if (!Array.isArray(dataItem) && this.isPersistentCustomData(dataItem)) {\n persistentCustomData.set(dataItem.data.index, dataItem);\n }\n }\n\n if (persistentCustomData.size) {\n this.unsentData[visitorCode] = persistentCustomData;\n return;\n }\n }\n\n delete this.unsentData[visitorCode];\n }\n\n public isPersistentCustomData(\n dataItem: KameleoonDataType,\n ): dataItem is CustomData {\n if (!this.persistentCustomDataIndexes.size) {\n return false;\n }\n\n if (Utilities.isCustomData(dataItem)) {\n return this.persistentCustomDataIndexes.has(dataItem.data.index);\n }\n\n return false;\n }\n\n get trees() {\n return this.targetingTrees;\n }\n\n get unsentDataVisitors(): string[] {\n return Object.keys(this.unsentData);\n }\n\n get storedTargetingData(): TargetingDataType {\n return this.dataProcessor.storedTargetingData.or({});\n }\n\n set customDataIndexes(customData: CustomDataConfigurationType[]) {\n const customDataLocalOnlyIndexes: number[] = [];\n const persistentCustomDataIndexes: number[] = [];\n\n customData.forEach((customData) => {\n if (customData.localOnly) {\n customDataLocalOnlyIndexes.push(customData.index);\n }\n\n if (customData.scope === CustomDataScope.Visitor) {\n persistentCustomDataIndexes.push(customData.index);\n }\n });\n\n if (customDataLocalOnlyIndexes.length) {\n this.localCustomDataIndexes = new Set(customDataLocalOnlyIndexes);\n }\n\n if (persistentCustomDataIndexes.length) {\n this.persistentCustomDataIndexes = new Set(persistentCustomDataIndexes);\n }\n }\n}\n"],"mappings":"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"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import { Result } from 'ts-res';
|
|
2
|
+
import { IExternalStorage } from '../storage';
|
|
3
|
+
import { TargetingDataType } from '../targeting';
|
|
4
|
+
import { KameleoonError } from '../kameleoonError';
|
|
5
|
+
import { KameleoonDataType } from './types';
|
|
6
|
+
interface IDataProcessor {
|
|
7
|
+
updateData(visitorCode: string, dataItem: KameleoonDataType): Result<void, KameleoonError>;
|
|
8
|
+
createVisit(visitorCode: string): void;
|
|
9
|
+
cleanupOutdatedTargetingData(targetingCleanupInterval?: number): void;
|
|
10
|
+
readonly storedTargetingData: Result<TargetingDataType, KameleoonError>;
|
|
11
|
+
}
|
|
12
|
+
export declare class DataProcessor implements IDataProcessor {
|
|
13
|
+
private storage;
|
|
14
|
+
constructor(storage: IExternalStorage<TargetingDataType>);
|
|
15
|
+
updateData(visitorCode: string, dataItem: KameleoonDataType): Result<void, KameleoonError>;
|
|
16
|
+
createVisit(visitorCode: string): Result<void, KameleoonError>;
|
|
17
|
+
cleanupOutdatedTargetingData(targetingCleanupInterval?: number): void;
|
|
18
|
+
get storedTargetingData(): Result<TargetingDataType, KameleoonError>;
|
|
19
|
+
private updateField;
|
|
20
|
+
private createField;
|
|
21
|
+
private updateArrayField;
|
|
22
|
+
private createArrayField;
|
|
23
|
+
private updateNestedField;
|
|
24
|
+
private createNestedField;
|
|
25
|
+
}
|
|
26
|
+
export {};
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.DataProcessor=void 0;var _tsRes=require("ts-res"),_utilities=require("../utilities"),_types=require("../utilities/types"),_visitsData=require("./visitsData"),_types2=require("../types"),_constants=require("./constants"),_types3=require("./types"),_excluded=["customData","pageView","conversion"];function _typeof(a){"@babel/helpers - typeof";return _typeof="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(a){return typeof a}:function(a){return a&&"function"==typeof Symbol&&a.constructor===Symbol&&a!==Symbol.prototype?"symbol":typeof a},_typeof(a)}function _createForOfIteratorHelper(a,b){var c="undefined"!=typeof Symbol&&a[Symbol.iterator]||a["@@iterator"];if(!c){if(Array.isArray(a)||(c=_unsupportedIterableToArray(a))||b&&a&&"number"==typeof a.length){c&&(a=c);var d=0,e=function(){};return{s:e,n:function n(){return d>=a.length?{done:!0}:{done:!1,value:a[d++]}},e:function e(a){throw a},f:e}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var f,g=!0,h=!1;return{s:function s(){c=c.call(a)},n:function n(){var a=c.next();return g=a.done,a},e:function e(a){h=!0,f=a},f:function f(){try{g||null==c.return||c.return()}finally{if(h)throw f}}}}function _objectWithoutProperties(a,b){if(null==a)return{};var c,d,e=_objectWithoutPropertiesLoose(a,b);if(Object.getOwnPropertySymbols){var f=Object.getOwnPropertySymbols(a);for(d=0;d<f.length;d++)c=f[d],0<=b.indexOf(c)||Object.prototype.propertyIsEnumerable.call(a,c)&&(e[c]=a[c])}return e}function _objectWithoutPropertiesLoose(a,b){if(null==a)return{};var c,d,e={},f=Object.keys(a);for(d=0;d<f.length;d++)c=f[d],0<=b.indexOf(c)||(e[c]=a[c]);return e}function _slicedToArray(a,b){return _arrayWithHoles(a)||_iterableToArrayLimit(a,b)||_unsupportedIterableToArray(a,b)||_nonIterableRest()}function _nonIterableRest(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}function _unsupportedIterableToArray(a,b){if(a){if("string"==typeof a)return _arrayLikeToArray(a,b);var c=Object.prototype.toString.call(a).slice(8,-1);return"Object"===c&&a.constructor&&(c=a.constructor.name),"Map"===c||"Set"===c?Array.from(a):"Arguments"===c||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(c)?_arrayLikeToArray(a,b):void 0}}function _arrayLikeToArray(a,b){(null==b||b>a.length)&&(b=a.length);for(var c=0,d=Array(b);c<b;c++)d[c]=a[c];return d}function _iterableToArrayLimit(a,b){var c=null==a?null:"undefined"!=typeof Symbol&&a[Symbol.iterator]||a["@@iterator"];if(null!=c){var d,e,f,g,h=[],i=!0,j=!1;try{if(f=(c=c.call(a)).next,0===b){if(Object(c)!==c)return;i=!1}else for(;!(i=(d=f.call(c)).done)&&(h.push(d.value),h.length!==b);i=!0);}catch(a){j=!0,e=a}finally{try{if(!i&&null!=c.return&&(g=c.return(),Object(g)!==g))return}finally{if(j)throw e}}return h}}function _arrayWithHoles(a){if(Array.isArray(a))return a}function ownKeys(a,b){var c=Object.keys(a);if(Object.getOwnPropertySymbols){var d=Object.getOwnPropertySymbols(a);b&&(d=d.filter(function(b){return Object.getOwnPropertyDescriptor(a,b).enumerable})),c.push.apply(c,d)}return c}function _objectSpread(a){for(var b,c=1;c<arguments.length;c++)b=null==arguments[c]?{}:arguments[c],c%2?ownKeys(Object(b),!0).forEach(function(c){_defineProperty(a,c,b[c])}):Object.getOwnPropertyDescriptors?Object.defineProperties(a,Object.getOwnPropertyDescriptors(b)):ownKeys(Object(b)).forEach(function(c){Object.defineProperty(a,c,Object.getOwnPropertyDescriptor(b,c))});return a}function _classCallCheck(a,b){if(!(a instanceof b))throw new TypeError("Cannot call a class as a function")}function _defineProperties(a,b){for(var c,d=0;d<b.length;d++)c=b[d],c.enumerable=c.enumerable||!1,c.configurable=!0,"value"in c&&(c.writable=!0),Object.defineProperty(a,_toPropertyKey(c.key),c)}function _createClass(a,b,c){return b&&_defineProperties(a.prototype,b),c&&_defineProperties(a,c),Object.defineProperty(a,"prototype",{writable:!1}),a}function _defineProperty(a,b,c){return b=_toPropertyKey(b),b in a?Object.defineProperty(a,b,{value:c,enumerable:!0,configurable:!0,writable:!0}):a[b]=c,a}function _toPropertyKey(a){var b=_toPrimitive(a,"string");return"symbol"===_typeof(b)?b:b+""}function _toPrimitive(a,b){if("object"!==_typeof(a)||null===a)return a;var c=a[Symbol.toPrimitive];if(c!==void 0){var d=c.call(a,b||"default");if("object"!==_typeof(d))return d;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===b?String:Number)(a)}var DataProcessor=function(){function a(b){_classCallCheck(this,a),_defineProperty(this,"storage",void 0),this.storage=b}return _createClass(a,[{key:"updateData",value:function updateData(a,b){var c=this.storage.read().or({}),d={visitorCode:a,data:c};switch(b.data.type){case _types3.KameleoonData.CustomData:{var e=b.data,f=c[a]&&_types3.KameleoonData.CustomData in c[a],g=_objectSpread(_objectSpread({},d),{},{key:_types3.KameleoonData.CustomData,nestedKey:e.index.toString(),value:e});f?this.updateNestedField(g):this.createNestedField(g);break}case _types3.KameleoonData.PageView:{var h,i=b.data;i.timestamps.length||(i.timestamps=[Date.now()]);var j=c[a]&&_types3.KameleoonData.PageView in c[a]&&(null===(h=c[a][i.type])||void 0===h?void 0:h[i.urlAddress]),k=_objectSpread(_objectSpread({},d),{},{key:_types3.KameleoonData.PageView,nestedKey:i.urlAddress,value:i});if(j){i.timestamps.forEach(function(a){_utilities.Utilities.insertInOrderedListMutably({list:j.timestamps,element:a,order:_types.Order.Ascending})});var l=[i.referrers,i.title];j.referrers=l[0],j.title=l[1],this.updateNestedField(_objectSpread(_objectSpread({},k),{},{value:j}))}else this.createNestedField(k);break}case _types3.KameleoonData.Conversion:{var m=b.data,n=c[a]&&_types3.KameleoonData.Conversion in c[a],o=_objectSpread(_objectSpread({},d),{},{key:_types3.KameleoonData.Conversion,value:m});n?this.updateArrayField(o):this.createArrayField(o);break}case _types3.KameleoonData.VisitsData:{var p=b.data,q=c[a]&&_types3.KameleoonData.VisitsData in c[a],r=_objectSpread(_objectSpread({},d),{},{key:_types3.KameleoonData.VisitsData,value:p});if(q){var s=c[a][p.type];s.previousVisits.forEach(function(a){_utilities.Utilities.insertInOrderedListMutably({list:p.previousVisits,element:a,order:_types.Order.Ascending})});var t=s.currentVisit;(!t&&p.currentVisit||t&&p.currentVisit&&t<p.currentVisit)&&(t=p.currentVisit),this.updateField(_objectSpread(_objectSpread({},r),{},{value:_objectSpread(_objectSpread({},p),{},{previousVisits:p.previousVisits,currentVisit:t})}))}else this.createField(r);break}default:{var u=b.data,v=c[a]&&u.type in c[a],w=_objectSpread(_objectSpread({},d),{},{key:u.type,value:u});v?this.updateField(w):this.createField(w)}}return this.storage.write(c)}},{key:"createVisit",value:function createVisit(a){var b,c=this.storage.read();if(!c.ok)return(0,_tsRes.Err)(c.error);var d=c.data;return null!==(b=d[a])&&void 0!==b&&b[_types3.KameleoonData.VisitsData]||this.updateField({visitorCode:a,key:_types3.KameleoonData.VisitsData,value:new _visitsData.VisitsData(Date.now(),[]).data,data:d}),this.storage.write(d)}},{key:"cleanupOutdatedTargetingData",value:function cleanupOutdatedTargetingData(a){var b=this.storage.read();if(b.ok){for(var c=b.data,d=a?a*_types2.Milliseconds.Minute:_constants.DEFAULT_CLEANUP_INTERVAL*_types2.Milliseconds.Minute,e=Date.now(),f=0,g=Object.entries(c);f<(void 0).length;f++){var h=_slicedToArray((void 0)[f],2),i=h[0],j=h[1],k=j.customData,l=j.pageView,m=j.conversion,n=_objectWithoutProperties(j,_excluded);if(k)for(var o=0,p=Object.entries(k);o<p.length;o++){var q=_slicedToArray(p[o],2),r=q[0],s=q[1];if(s){var t=s.lastActivityTime+d<e,u=j[_types3.KameleoonData.CustomData];t&&u&&delete u[+r],u&&!Object.keys(u).length&&delete j[_types3.KameleoonData.CustomData]}}if(l)for(var v=0,w=Object.entries(l);v<w.length;v++){var x=_slicedToArray(w[v],2),y=x[0],z=x[1],A=z.lastActivityTime+d<e,B=j[_types3.KameleoonData.PageView];A&&B&&delete B[y],B&&!Object.keys(B).length&&delete j[_types3.KameleoonData.PageView]}if(m){var C,D=_createForOfIteratorHelper(m);try{for(D.s();!(C=D.n()).done;){var E=C.value,F=E.lastActivityTime+d<e,G=j[_types3.KameleoonData.Conversion];F&&G&&G.splice(G.indexOf(E),1),G&&!G.length&&delete j[_types3.KameleoonData.Conversion]}}catch(a){D.e(a)}finally{D.f()}}for(var H=0,I=Object.entries(n);H<I.length;H++){var J=_slicedToArray(I[H],2),K=J[0],L=J[1],M=L.lastActivityTime+d<e;M&&delete j[K]}Object.keys(c[i]).length||delete c[i]}this.storage.write(c)}}},{key:"storedTargetingData",get:function get(){return this.storage.read()}},{key:"updateField",value:function updateField(a){var b=a.visitorCode,c=a.key,d=a.value,e=a.data;e[b][c]=_objectSpread(_objectSpread({},d),{},{lastActivityTime:Date.now()})}},{key:"createField",value:function createField(a){var b=a.visitorCode,c=a.key,d=a.value,e=a.data;e[b]=_objectSpread(_objectSpread({},e[b]),{},_defineProperty({},c,_objectSpread(_objectSpread({},d),{},{lastActivityTime:Date.now()})))}},{key:"updateArrayField",value:function updateArrayField(a){var b=a.visitorCode,c=a.key,d=a.value,e=a.data;e[b][c].push(_objectSpread(_objectSpread({},d),{},{lastActivityTime:Date.now()}))}},{key:"createArrayField",value:function createArrayField(a){var b=a.visitorCode,c=a.key,d=a.value,e=a.data;e[b]=_objectSpread(_objectSpread({},e[b]),{},_defineProperty({},c,[_objectSpread(_objectSpread({},d),{},{lastActivityTime:Date.now()})]))}},{key:"updateNestedField",value:function updateNestedField(a){var b=a.visitorCode,c=a.key,d=a.nestedKey,e=a.value,f=a.data;f[b][c][d]=_objectSpread(_objectSpread({},e),{},{lastActivityTime:Date.now()})}},{key:"createNestedField",value:function createNestedField(a){var b,c=a.visitorCode,d=a.key,e=a.nestedKey,f=a.value,g=a.data;g[c]=null!==(b=g[c])&&void 0!==b&&b[d]?_objectSpread(_objectSpread({},g[c]),{},_defineProperty({},d,_objectSpread(_objectSpread({},g[c][d]),{},_defineProperty({},e,_objectSpread(_objectSpread({},f),{},{lastActivityTime:Date.now()}))))):_objectSpread(_objectSpread({},g[c]),{},_defineProperty({},d,_defineProperty({},e,_objectSpread(_objectSpread({},f),{},{lastActivityTime:Date.now()}))))}}]),a}();exports.DataProcessor=DataProcessor;
|
|
2
|
+
//# sourceMappingURL=dataProcessor.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dataProcessor.js","names":["DataProcessor","a","storage","_classCallCheck","_defineProperty","_createClass","key","value","updateData","visitorCode","dataItem","targetingData","read","or","commonParameters","data","type","KameleoonData","CustomData","hasCustomDataKey","parameters","_objectSpread","nestedKey","index","toString","updateNestedField","createNestedField","PageView","h","timestamps","length","Date","now","existingData","urlAddress","forEach","timestamp","Utilities","insertInOrderedListMutably","list","element","order","Order","Ascending","l","referrers","title","Conversion","hasConversionDataKey","updateArrayField","createArrayField","VisitsData","hasVisitsKey","existingVisits","previousVisits","visit","currentVisit","updateField","createField","hasDataKey","write","createVisit","b","storageData","ok","Err","error","cleanupOutdatedTargetingData","targetingCleanupInterval","targetingDataLifetime","Milliseconds","Minute","DEFAULT_CLEANUP_INTERVAL","currentTime","f","g","Object","entries","_slicedToArray","kameleoonVisitorData","customData","pageView","conversion","rest","_objectWithoutProperties","_excluded","o","p","q","isDataExpired","lastActivityTime","keys","v","w","x","url","C","D","_createForOfIteratorHelper","s","n","done","splice","indexOf","e","H","I","J","get","push","exports"],"sources":["../../src/kameleoonData/dataProcessor.ts"],"sourcesContent":["import { Err, Result } from 'ts-res';\nimport { IExternalStorage } from 'src/storage';\nimport { TargetingDataType } from 'src/targeting';\nimport { KameleoonError } from 'src/kameleoonError';\nimport { Utilities } from 'src/utilities';\nimport { Order } from 'src/utilities/types';\nimport { VisitsData } from './visitsData';\nimport { Milliseconds } from 'src/types';\nimport { DEFAULT_CLEANUP_INTERVAL } from './constants';\nimport {\n ArrayFieldParametersType,\n ConversionDataType,\n CustomDataType,\n ExistingArrayDataType,\n ExistingDataType,\n ExistingNestedDataType,\n ExistingPageViewDataType,\n ExistingVisitsDataType,\n FieldParametersType,\n KameleoonData,\n KameleoonDataType,\n NestedFieldParametersType,\n PageViewDataType,\n VisitsDataType,\n} from './types';\n\ninterface IDataProcessor {\n updateData(\n visitorCode: string,\n dataItem: KameleoonDataType,\n ): Result<void, KameleoonError>;\n createVisit(visitorCode: string): void;\n cleanupOutdatedTargetingData(targetingCleanupInterval?: number): void;\n readonly storedTargetingData: Result<TargetingDataType, KameleoonError>;\n}\n\nexport class DataProcessor implements IDataProcessor {\n private storage: IExternalStorage<TargetingDataType>;\n\n constructor(storage: IExternalStorage<TargetingDataType>) {\n this.storage = storage;\n }\n\n // --- Note ---\n // Following code is optimized for performance:\n // - We don't want to copy the whole object every time we add new data\n // - So we are manually checking the keys existence and mutating targeting data directly\n // - Numerous type casts are required because we can't narrow down nested `targetingData` types by using assertion functions\n public updateData(\n visitorCode: string,\n dataItem: KameleoonDataType,\n ): Result<void, KameleoonError> {\n const targetingData = this.storage.read().or({});\n const commonParameters: Pick<FieldParametersType, 'visitorCode' | 'data'> =\n {\n visitorCode,\n data: targetingData,\n };\n\n switch (dataItem.data.type) {\n case KameleoonData.CustomData: {\n const data = dataItem.data as CustomDataType;\n const hasCustomDataKey =\n targetingData[visitorCode] &&\n KameleoonData.CustomData in targetingData[visitorCode];\n const parameters: NestedFieldParametersType = {\n ...commonParameters,\n key: KameleoonData.CustomData,\n nestedKey: data.index.toString(),\n value: data,\n };\n\n if (hasCustomDataKey) {\n this.updateNestedField(parameters);\n } else {\n this.createNestedField(parameters);\n }\n\n break;\n }\n case KameleoonData.PageView: {\n const data = dataItem.data as PageViewDataType;\n\n // --- Note ---\n // We assign `timestamps` to `Date.now()` if it's empty\n // Not upon data item creation because it makes no sense in terms\n // of data flow to have some indication of data activity before it was added\n if (!data.timestamps.length) {\n data.timestamps = [Date.now()];\n }\n\n const existingData =\n targetingData[visitorCode] &&\n KameleoonData.PageView in targetingData[visitorCode] &&\n (targetingData[visitorCode][data.type] as ExistingPageViewDataType)?.[\n data.urlAddress\n ];\n\n const parameters: NestedFieldParametersType = {\n ...commonParameters,\n key: KameleoonData.PageView,\n nestedKey: data.urlAddress,\n value: data,\n };\n\n if (existingData) {\n // --- Note ---\n // Updating existing `PageView` properties by pushing new timestamps\n // and potentially changing referrers and title\n data.timestamps.forEach((timestamp) => {\n Utilities.insertInOrderedListMutably({\n list: existingData.timestamps,\n element: timestamp,\n order: Order.Ascending,\n });\n });\n\n [existingData.referrers, existingData.title] = [\n data.referrers,\n data.title,\n ];\n\n this.updateNestedField({ ...parameters, value: existingData });\n } else {\n this.createNestedField(parameters);\n }\n\n break;\n }\n case KameleoonData.Conversion: {\n const data = dataItem.data as ConversionDataType;\n const hasConversionDataKey =\n targetingData[visitorCode] &&\n KameleoonData.Conversion in targetingData[visitorCode];\n const parameters: ArrayFieldParametersType = {\n ...commonParameters,\n key: KameleoonData.Conversion,\n value: data,\n };\n\n if (hasConversionDataKey) {\n this.updateArrayField(parameters);\n } else {\n this.createArrayField(parameters);\n }\n\n break;\n }\n case KameleoonData.VisitsData: {\n const data = dataItem.data as VisitsDataType;\n const hasVisitsKey =\n targetingData[visitorCode] &&\n KameleoonData.VisitsData in targetingData[visitorCode];\n const parameters: FieldParametersType = {\n ...commonParameters,\n key: KameleoonData.VisitsData,\n value: data,\n };\n\n // -- Change directly if `[key]` exists\n if (hasVisitsKey) {\n const existingVisits = targetingData[visitorCode][\n data.type\n ] as ExistingVisitsDataType;\n\n // --- Note ---\n // We are preserving the order of visits\n existingVisits.previousVisits.forEach((visit) => {\n Utilities.insertInOrderedListMutably({\n list: data.previousVisits,\n element: visit,\n order: Order.Ascending,\n });\n });\n\n let currentVisit = existingVisits.currentVisit;\n\n // --- Note ---\n // We are using new current visit in two cases:\n // 1. If there is no current visit in existing data\n // 2. If existing current visit is older than new current visit\n if (\n (!currentVisit && data.currentVisit) ||\n (currentVisit &&\n data.currentVisit &&\n currentVisit < data.currentVisit)\n ) {\n currentVisit = data.currentVisit;\n }\n\n this.updateField({\n ...parameters,\n value: {\n ...data,\n previousVisits: data.previousVisits,\n currentVisit,\n },\n });\n } else {\n this.createField(parameters);\n }\n\n break;\n }\n default: {\n const { data } = dataItem;\n const hasDataKey =\n targetingData[visitorCode] && data.type in targetingData[visitorCode];\n const parameters: FieldParametersType = {\n ...commonParameters,\n key: data.type,\n // --- Note ---\n // At this point TypeScript can not infer that value is subset of only\n // what is left for `default` case\n value: data as FieldParametersType['value'],\n };\n\n if (hasDataKey) {\n this.updateField(parameters);\n } else {\n this.createField(parameters);\n }\n }\n }\n\n return this.storage.write(targetingData);\n }\n\n public createVisit(visitorCode: string): Result<void, KameleoonError> {\n const storageData = this.storage.read();\n\n if (!storageData.ok) {\n return Err(storageData.error);\n }\n\n const targetingData = storageData.data;\n\n // --- Note ---\n // Create new visit only if it doesn't exist\n if (!targetingData[visitorCode]?.[KameleoonData.VisitsData]) {\n this.updateField({\n visitorCode,\n key: KameleoonData.VisitsData,\n value: new VisitsData(Date.now(), []).data,\n data: targetingData,\n });\n }\n\n return this.storage.write(targetingData);\n }\n\n public cleanupOutdatedTargetingData(targetingCleanupInterval?: number): void {\n const storageData = this.storage.read();\n\n if (!storageData.ok) {\n return;\n }\n\n const targetingData = storageData.data;\n const targetingDataLifetime = targetingCleanupInterval\n ? targetingCleanupInterval * Milliseconds.Minute\n : DEFAULT_CLEANUP_INTERVAL * Milliseconds.Minute;\n\n const currentTime = Date.now();\n\n for (const [visitorCode, kameleoonVisitorData] of Object.entries(\n targetingData,\n )) {\n const { customData, pageView, conversion, ...rest } =\n kameleoonVisitorData;\n\n // TODO: This way of cleaning up data is not optimal\n // And will be changed when sessions are introduced\n if (customData) {\n for (const [index, dataItem] of Object.entries(customData)) {\n if (dataItem) {\n const isDataExpired =\n dataItem.lastActivityTime + targetingDataLifetime < currentTime;\n const existingData = kameleoonVisitorData[KameleoonData.CustomData];\n\n if (isDataExpired && existingData) {\n delete existingData[Number(index)];\n }\n\n if (existingData && !Object.keys(existingData).length) {\n delete kameleoonVisitorData[KameleoonData.CustomData];\n }\n }\n }\n }\n\n if (pageView) {\n for (const [url, dataItem] of Object.entries(pageView)) {\n const isDataExpired =\n dataItem.lastActivityTime + targetingDataLifetime < currentTime;\n const existingData = kameleoonVisitorData[KameleoonData.PageView];\n\n if (isDataExpired && existingData) {\n delete existingData[url];\n }\n\n if (existingData && !Object.keys(existingData).length) {\n delete kameleoonVisitorData[KameleoonData.PageView];\n }\n }\n }\n\n if (conversion) {\n for (const dataItem of conversion) {\n const isDataExpired =\n dataItem.lastActivityTime + targetingDataLifetime < currentTime;\n const existingData = kameleoonVisitorData[KameleoonData.Conversion];\n\n if (isDataExpired && existingData) {\n existingData.splice(existingData.indexOf(dataItem), 1);\n }\n\n if (existingData && !existingData.length) {\n delete kameleoonVisitorData[KameleoonData.Conversion];\n }\n }\n }\n\n for (const [key, dataItem] of Object.entries(rest)) {\n const isDataExpired =\n dataItem.lastActivityTime + targetingDataLifetime < currentTime;\n\n if (isDataExpired) {\n delete kameleoonVisitorData[key as KameleoonData];\n }\n }\n\n if (!Object.keys(targetingData[visitorCode]).length) {\n delete targetingData[visitorCode];\n }\n }\n\n this.storage.write(targetingData);\n }\n\n get storedTargetingData(): Result<TargetingDataType, KameleoonError> {\n return this.storage.read();\n }\n\n private updateField({\n visitorCode,\n key,\n value,\n data,\n }: FieldParametersType): void {\n (data[visitorCode][key] as ExistingDataType<typeof key>) = {\n ...value,\n lastActivityTime: Date.now(),\n };\n }\n\n private createField({\n visitorCode,\n key,\n value,\n data,\n }: FieldParametersType): void {\n data[visitorCode] = {\n ...data[visitorCode],\n [key]: { ...value, lastActivityTime: Date.now() },\n };\n }\n\n private updateArrayField({\n visitorCode,\n key,\n value,\n data,\n }: ArrayFieldParametersType): void {\n (data[visitorCode][key] as ExistingArrayDataType).push({\n ...value,\n lastActivityTime: Date.now(),\n });\n }\n\n private createArrayField({\n visitorCode,\n key,\n value,\n data,\n }: ArrayFieldParametersType): void {\n data[visitorCode] = {\n ...data[visitorCode],\n [key]: [{ ...value, lastActivityTime: Date.now() }],\n };\n }\n\n private updateNestedField({\n visitorCode,\n key,\n nestedKey,\n value,\n data,\n }: NestedFieldParametersType): void {\n (data[visitorCode][key] as ExistingNestedDataType)[nestedKey] = {\n ...value,\n lastActivityTime: Date.now(),\n };\n }\n\n private createNestedField({\n visitorCode,\n key,\n nestedKey,\n value,\n data,\n }: NestedFieldParametersType): void {\n if (!data[visitorCode]?.[key]) {\n data[visitorCode] = {\n ...data[visitorCode],\n [key]: {\n [nestedKey]: { ...value, lastActivityTime: Date.now() },\n },\n };\n } else {\n data[visitorCode] = {\n ...data[visitorCode],\n [key]: {\n ...data[visitorCode][key],\n [nestedKey]: { ...value, lastActivityTime: Date.now() },\n },\n };\n }\n }\n}\n"],"mappings":"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"}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import { VisitType } from '../requester';
|
|
2
|
+
import { DeviceDataType, DeviceType, IKameleoonData } from './types';
|
|
3
|
+
/**
|
|
4
|
+
* @class
|
|
5
|
+
* Device - a class for creating an instance for device of a certain type
|
|
6
|
+
* */
|
|
7
|
+
export declare class Device implements IKameleoonData {
|
|
8
|
+
private device;
|
|
9
|
+
private sent;
|
|
10
|
+
/**
|
|
11
|
+
* @param {DeviceType} device - one of the available device types from `DeviceType` enum
|
|
12
|
+
* */
|
|
13
|
+
constructor(device: DeviceType);
|
|
14
|
+
/**
|
|
15
|
+
* @property url - url for the current data type used for events tracking
|
|
16
|
+
* */
|
|
17
|
+
get url(): string;
|
|
18
|
+
/**
|
|
19
|
+
* @property data - data of the current class instance
|
|
20
|
+
* */
|
|
21
|
+
get data(): DeviceDataType;
|
|
22
|
+
/**
|
|
23
|
+
* @property isSent - signifying if the data was sent already tracked
|
|
24
|
+
* */
|
|
25
|
+
get isSent(): boolean;
|
|
26
|
+
set isSent(value: boolean);
|
|
27
|
+
/**
|
|
28
|
+
* @private
|
|
29
|
+
* @method _fromVisits - an internal method for creating an instance of Device class from a list of visits
|
|
30
|
+
* @param {VisitType[]} visits - a list of visits
|
|
31
|
+
* @returns {Device | undefined} an instance of Device class or undefined if browser can not be found among visits
|
|
32
|
+
* */
|
|
33
|
+
static _fromVisits(visits: VisitType[]): Device | undefined;
|
|
34
|
+
}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.Device=void 0;var _requester=require("../requester"),_types=require("./types");function _typeof(a){"@babel/helpers - typeof";return _typeof="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(a){return typeof a}:function(a){return a&&"function"==typeof Symbol&&a.constructor===Symbol&&a!==Symbol.prototype?"symbol":typeof a},_typeof(a)}function _classCallCheck(a,b){if(!(a instanceof b))throw new TypeError("Cannot call a class as a function")}function _defineProperties(a,b){for(var c,d=0;d<b.length;d++)c=b[d],c.enumerable=c.enumerable||!1,c.configurable=!0,"value"in c&&(c.writable=!0),Object.defineProperty(a,_toPropertyKey(c.key),c)}function _createClass(a,b,c){return b&&_defineProperties(a.prototype,b),c&&_defineProperties(a,c),Object.defineProperty(a,"prototype",{writable:!1}),a}function _defineProperty(a,b,c){return b=_toPropertyKey(b),b in a?Object.defineProperty(a,b,{value:c,enumerable:!0,configurable:!0,writable:!0}):a[b]=c,a}function _toPropertyKey(a){var b=_toPrimitive(a,"string");return"symbol"===_typeof(b)?b:b+""}function _toPrimitive(a,b){if("object"!==_typeof(a)||null===a)return a;var c=a[Symbol.toPrimitive];if(c!==void 0){var d=c.call(a,b||"default");if("object"!==_typeof(d))return d;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===b?String:Number)(a)}var Device=function(){function a(b){_classCallCheck(this,a),_defineProperty(this,"device",void 0),_defineProperty(this,"sent",void 0),this.device=b,this.sent=!1}return _createClass(a,[{key:"url",get:function get(){return this.device?_requester.UrlEventType.StaticData+_requester.UrlParameter.DeviceType+this.device:""}},{key:"data",get:function get(){return{device:this.device,type:_types.KameleoonData.Device,sent:this.sent}}},{key:"isSent",get:function get(){return this.sent},set:function set(a){this.sent=a}}],[{key:"_fromVisits",value:function _fromVisits(b){for(var c,d=void 0,e=b.length-1;0<=e;e--)if(c=b[e],!!c.staticDataEvent){var f=c.staticDataEvent.data.deviceType;f&&(d=f)}if(d)return new a(d)}}]),a}();exports.Device=Device;
|
|
2
|
+
//# sourceMappingURL=device.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"device.js","names":["Device","a","device","_classCallCheck","_defineProperty","sent","_createClass","key","get","UrlEventType","StaticData","UrlParameter","DeviceType","type","KameleoonData","set","value","_fromVisits","visits","visit","i","length","staticDataEvent","deviceType","data","exports"],"sources":["../../src/kameleoonData/device.ts"],"sourcesContent":["import { UrlEventType, UrlParameter, VisitType } from 'src/requester';\nimport {\n DeviceDataType,\n DeviceType,\n IKameleoonData,\n KameleoonData,\n} from './types';\n\n/**\n * @class\n * Device - a class for creating an instance for device of a certain type\n * */\nexport class Device implements IKameleoonData {\n private device: DeviceType;\n private sent: boolean;\n\n /**\n * @param {DeviceType} device - one of the available device types from `DeviceType` enum\n * */\n constructor(device: DeviceType) {\n this.device = device;\n this.sent = false;\n }\n\n /**\n * @property url - url for the current data type used for events tracking\n * */\n get url(): string {\n // --- Note ---\n // If SDK is used in vanilla JS codebase, then you're also able to create an instance\n // with no required data, we don't want send anything to tracking in that case\n if (!this.device) {\n return '';\n }\n\n return UrlEventType.StaticData + UrlParameter.DeviceType + this.device;\n }\n\n /**\n * @property data - data of the current class instance\n * */\n get data(): DeviceDataType {\n return {\n device: this.device,\n type: KameleoonData.Device,\n sent: this.sent,\n };\n }\n\n /**\n * @property isSent - signifying if the data was sent already tracked\n * */\n get isSent(): boolean {\n return this.sent;\n }\n\n set isSent(value: boolean) {\n this.sent = value;\n }\n\n /**\n * @private\n * @method _fromVisits - an internal method for creating an instance of Device class from a list of visits\n * @param {VisitType[]} visits - a list of visits\n * @returns {Device | undefined} an instance of Device class or undefined if browser can not be found among visits\n * */\n public static _fromVisits(visits: VisitType[]): Device | undefined {\n let device: DeviceType | undefined = undefined;\n\n // --- Note ---\n // Going backwards to get the latest visit data\n for (let i = visits.length - 1; i >= 0; i--) {\n const visit = visits[i];\n\n if (!visit.staticDataEvent) {\n continue;\n }\n\n const { deviceType } = visit.staticDataEvent.data;\n\n if (deviceType) {\n device = deviceType;\n }\n }\n\n if (device) {\n return new Device(device);\n }\n }\n}\n"],"mappings":"u4CAYa,CAAAA,MAAM,YAOjB,SAAAC,EAAYC,CAAkB,CAAE,CAAAC,eAAA,MAAAF,CAAA,EAAAG,eAAA,uBAAAA,eAAA,qBAC9B,IAAI,CAACF,MAAM,CAAGA,CAAM,CACpB,IAAI,CAACG,IAAI,GACX,CAAC,OAAAC,YAAA,CAAAL,CAAA,GAAAM,GAAA,OAAAC,GAAA,CAKD,SAAAA,IAAA,CAAkB,OAIX,KAAI,CAACN,MAAM,CAITO,uBAAY,CAACC,UAAU,CAAGC,uBAAY,CAACC,UAAU,CAAG,IAAI,CAACV,MAAM,CAH7D,EAIX,CAAC,GAAAK,GAAA,QAAAC,GAAA,CAKD,SAAAA,IAAA,CAA2B,CACzB,MAAO,CACLN,MAAM,CAAE,IAAI,CAACA,MAAM,CACnBW,IAAI,CAAEC,oBAAa,CAACd,MAAM,CAC1BK,IAAI,CAAE,IAAI,CAACA,IACb,CACF,CAAC,GAAAE,GAAA,UAAAC,GAAA,CAKD,SAAAA,IAAA,CAAsB,CACpB,MAAO,KAAI,CAACH,IACd,CAAC,CAAAU,GAAA,CAED,SAAAA,IAAWC,CAAc,CAAE,CACzB,IAAI,CAACX,IAAI,CAAGW,CACd,CAAC,KAAAT,GAAA,eAAAS,KAAA,CAQD,SAAAC,YAA0BC,CAAmB,CAAsB,CAKjE,OACQ,CAAAC,CAAK,CALTjB,CAA8B,OAAY,CAIrCkB,CAAC,CAAGF,CAAM,CAACG,MAAM,CAAG,CAAC,CAAO,CAAC,EAAND,CAAM,CAAEA,CAAC,EAAE,CAGzC,GAFMD,CAAK,CAAGD,CAAM,CAACE,CAAC,CAAC,EAEnB,CAACD,CAAK,CAACG,eAAe,EAI1B,GAAQ,CAAAC,CAAU,CAAKJ,CAAK,CAACG,eAAe,CAACE,IAAI,CAAzCD,UAAU,CAEdA,CAAU,GACZrB,CAAM,CAAGqB,CAAU,EAIvB,GAAIrB,CAAM,CACR,MAAO,IAAI,CAAAF,CAAM,CAACE,CAAM,CAE5B,CAAC,IAAAD,CAAA,IAAAwB,OAAA,CAAAzB,MAAA,CAAAA,MAAA"}
|