@kameleoon/javascript-sdk-core 2.10.1 → 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.
Files changed (256) hide show
  1. package/dist/cacheManager/cacheManager.js +1 -11
  2. package/dist/cacheManager/cacheManager.js.map +1 -1
  3. package/dist/clientConfiguration/clientConfiguration.d.ts +52 -0
  4. package/dist/clientConfiguration/clientConfiguration.js +2 -0
  5. package/dist/clientConfiguration/clientConfiguration.js.map +1 -0
  6. package/dist/clientConfiguration/constants.d.ts +2 -0
  7. package/dist/clientConfiguration/constants.js +2 -0
  8. package/dist/clientConfiguration/constants.js.map +1 -0
  9. package/dist/clientConfiguration/index.d.ts +2 -0
  10. package/dist/clientConfiguration/index.js +2 -0
  11. package/dist/clientConfiguration/index.js.map +1 -0
  12. package/dist/{campaignConfiguration → clientConfiguration}/types.d.ts +12 -53
  13. package/dist/clientConfiguration/types.js +2 -0
  14. package/dist/clientConfiguration/types.js.map +1 -0
  15. package/dist/clientSettings/clientSettings.js +1 -1
  16. package/dist/clientSettings/clientSettings.js.map +1 -1
  17. package/dist/constants.d.ts +3 -2
  18. package/dist/constants.js +1 -4
  19. package/dist/constants.js.map +1 -1
  20. package/dist/eventSource/externalEventSource.js +1 -1
  21. package/dist/eventSource/externalEventSource.js.map +1 -1
  22. package/dist/hasher/hasher.d.ts +2 -3
  23. package/dist/hasher/hasher.js +1 -6
  24. package/dist/hasher/hasher.js.map +1 -1
  25. package/dist/hasher/types.d.ts +3 -10
  26. package/dist/hasher/types.js.map +1 -1
  27. package/dist/index.d.ts +7 -6
  28. package/dist/index.js +1 -1
  29. package/dist/index.js.map +1 -1
  30. package/dist/kameleoonClient.d.ts +44 -80
  31. package/dist/kameleoonClient.js +1 -18
  32. package/dist/kameleoonClient.js.map +1 -1
  33. package/dist/kameleoonData/applicationVersion.d.ts +26 -0
  34. package/dist/kameleoonData/applicationVersion.js +2 -0
  35. package/dist/kameleoonData/applicationVersion.js.map +1 -0
  36. package/dist/kameleoonData/browser.d.ts +16 -1
  37. package/dist/kameleoonData/browser.js +1 -17
  38. package/dist/kameleoonData/browser.js.map +1 -1
  39. package/dist/kameleoonData/constants.d.ts +4 -0
  40. package/dist/kameleoonData/constants.js +2 -0
  41. package/dist/kameleoonData/constants.js.map +1 -0
  42. package/dist/kameleoonData/conversion.d.ts +14 -1
  43. package/dist/kameleoonData/conversion.js +1 -13
  44. package/dist/kameleoonData/conversion.js.map +1 -1
  45. package/dist/kameleoonData/cookie.d.ts +33 -0
  46. package/dist/kameleoonData/cookie.js +2 -0
  47. package/dist/kameleoonData/cookie.js.map +1 -0
  48. package/dist/kameleoonData/customData.d.ts +14 -1
  49. package/dist/kameleoonData/customData.js +1 -24
  50. package/dist/kameleoonData/customData.js.map +1 -1
  51. package/dist/kameleoonData/dataManager.d.ts +38 -0
  52. package/dist/kameleoonData/dataManager.js +2 -0
  53. package/dist/kameleoonData/dataManager.js.map +1 -0
  54. package/dist/kameleoonData/dataProcessor.d.ts +26 -0
  55. package/dist/kameleoonData/dataProcessor.js +2 -0
  56. package/dist/kameleoonData/dataProcessor.js.map +1 -0
  57. package/dist/kameleoonData/device.d.ts +14 -1
  58. package/dist/kameleoonData/device.js +1 -13
  59. package/dist/kameleoonData/device.js.map +1 -1
  60. package/dist/kameleoonData/geolocation.d.ts +52 -0
  61. package/dist/kameleoonData/geolocation.js +2 -0
  62. package/dist/kameleoonData/geolocation.js.map +1 -0
  63. package/dist/kameleoonData/helpers.d.ts +1 -0
  64. package/dist/kameleoonData/helpers.js +2 -0
  65. package/dist/kameleoonData/helpers.js.map +1 -0
  66. package/dist/kameleoonData/index.d.ts +10 -3
  67. package/dist/kameleoonData/index.js +1 -1
  68. package/dist/kameleoonData/index.js.map +1 -1
  69. package/dist/kameleoonData/operatingSystem.d.ts +34 -0
  70. package/dist/kameleoonData/operatingSystem.js +2 -0
  71. package/dist/kameleoonData/operatingSystem.js.map +1 -0
  72. package/dist/kameleoonData/pageView.d.ts +20 -1
  73. package/dist/kameleoonData/pageView.js +1 -13
  74. package/dist/kameleoonData/pageView.js.map +1 -1
  75. package/dist/kameleoonData/types.d.ts +118 -9
  76. package/dist/kameleoonData/types.js +1 -14
  77. package/dist/kameleoonData/types.js.map +1 -1
  78. package/dist/kameleoonData/userAgent.d.ts +6 -1
  79. package/dist/kameleoonData/userAgent.js +1 -8
  80. package/dist/kameleoonData/userAgent.js.map +1 -1
  81. package/dist/kameleoonData/visitsData.d.ts +34 -0
  82. package/dist/{variationConfiguration/variation.js → kameleoonData/visitsData.js} +2 -7
  83. package/dist/kameleoonData/visitsData.js.map +1 -0
  84. package/dist/kameleoonError/constants.d.ts +5 -4
  85. package/dist/kameleoonError/constants.js +1 -1
  86. package/dist/kameleoonError/constants.js.map +1 -1
  87. package/dist/kameleoonError/kameleoonError.d.ts +5 -4
  88. package/dist/kameleoonError/kameleoonError.js +1 -4
  89. package/dist/kameleoonError/kameleoonError.js.map +1 -1
  90. package/dist/kameleoonError/types.d.ts +8 -3
  91. package/dist/kameleoonError/types.js +1 -1
  92. package/dist/kameleoonError/types.js.map +1 -1
  93. package/dist/kameleoonUtils.js +1 -4
  94. package/dist/kameleoonUtils.js.map +1 -1
  95. package/dist/requester/constants.d.ts +2 -1
  96. package/dist/requester/constants.js +1 -1
  97. package/dist/requester/constants.js.map +1 -1
  98. package/dist/requester/index.d.ts +1 -1
  99. package/dist/requester/index.js +1 -1
  100. package/dist/requester/index.js.map +1 -1
  101. package/dist/requester/requester.d.ts +5 -4
  102. package/dist/requester/requester.js +1 -1
  103. package/dist/requester/requester.js.map +1 -1
  104. package/dist/requester/types.d.ts +73 -8
  105. package/dist/requester/types.js +1 -1
  106. package/dist/requester/types.js.map +1 -1
  107. package/dist/storage/constants.d.ts +1 -0
  108. package/dist/storage/constants.js +1 -4
  109. package/dist/storage/constants.js.map +1 -1
  110. package/dist/storage/index.d.ts +1 -1
  111. package/dist/storage/index.js +1 -1
  112. package/dist/storage/index.js.map +1 -1
  113. package/dist/storage/types.d.ts +5 -8
  114. package/dist/storage/types.js.map +1 -1
  115. package/dist/targeting/conditions/applicationVersion.d.ts +10 -0
  116. package/dist/targeting/conditions/applicationVersion.js +2 -0
  117. package/dist/targeting/conditions/applicationVersion.js.map +1 -0
  118. package/dist/targeting/conditions/{browserCondition.d.ts → browser.d.ts} +1 -1
  119. package/dist/targeting/conditions/browser.js +2 -0
  120. package/dist/targeting/conditions/browser.js.map +1 -0
  121. package/dist/targeting/conditions/conditionFactory.js +1 -1
  122. package/dist/targeting/conditions/conditionFactory.js.map +1 -1
  123. package/dist/targeting/conditions/{conversionCondition.d.ts → conversion.d.ts} +1 -2
  124. package/dist/targeting/conditions/conversion.js +2 -0
  125. package/dist/targeting/conditions/conversion.js.map +1 -0
  126. package/dist/targeting/conditions/cookie.d.ts +15 -0
  127. package/dist/targeting/conditions/cookie.js +2 -0
  128. package/dist/targeting/conditions/cookie.js.map +1 -0
  129. package/dist/targeting/conditions/{customDataCondition.d.ts → customData.d.ts} +1 -1
  130. package/dist/targeting/conditions/customData.js +2 -0
  131. package/dist/targeting/conditions/customData.js.map +1 -0
  132. package/dist/targeting/conditions/{deviceCondition.d.ts → device.d.ts} +1 -1
  133. package/dist/targeting/conditions/{targetExperimentCondition.js → device.js} +2 -2
  134. package/dist/targeting/conditions/device.js.map +1 -0
  135. package/dist/targeting/conditions/{exclusiveExperimentCondition.d.ts → exclusiveCampaign.d.ts} +2 -2
  136. package/dist/targeting/conditions/exclusiveCampaign.js +2 -0
  137. package/dist/targeting/conditions/exclusiveCampaign.js.map +1 -0
  138. package/dist/targeting/conditions/firstVisit.d.ts +12 -0
  139. package/dist/targeting/conditions/firstVisit.js +2 -0
  140. package/dist/targeting/conditions/firstVisit.js.map +1 -0
  141. package/dist/targeting/conditions/geolocation.d.ts +11 -0
  142. package/dist/targeting/conditions/geolocation.js +2 -0
  143. package/dist/targeting/conditions/geolocation.js.map +1 -0
  144. package/dist/targeting/conditions/index.d.ts +22 -10
  145. package/dist/targeting/conditions/index.js +1 -1
  146. package/dist/targeting/conditions/index.js.map +1 -1
  147. package/dist/targeting/conditions/lastVisit.d.ts +12 -0
  148. package/dist/targeting/conditions/lastVisit.js +2 -0
  149. package/dist/targeting/conditions/lastVisit.js.map +1 -0
  150. package/dist/targeting/conditions/newVisitor.d.ts +9 -0
  151. package/dist/targeting/conditions/newVisitor.js +2 -0
  152. package/dist/targeting/conditions/newVisitor.js.map +1 -0
  153. package/dist/targeting/conditions/operatingSystem.d.ts +9 -0
  154. package/dist/targeting/conditions/{deviceCondition.js → operatingSystem.js} +2 -2
  155. package/dist/targeting/conditions/operatingSystem.js.map +1 -0
  156. package/dist/targeting/conditions/{pageTitleCondition.d.ts → pageTitle.d.ts} +1 -1
  157. package/dist/targeting/conditions/pageTitle.js +2 -0
  158. package/dist/targeting/conditions/pageTitle.js.map +1 -0
  159. package/dist/targeting/conditions/{pageUrlCondition.d.ts → pageUrl.d.ts} +1 -1
  160. package/dist/targeting/conditions/pageUrl.js +2 -0
  161. package/dist/targeting/conditions/pageUrl.js.map +1 -0
  162. package/dist/targeting/conditions/previousPage.d.ts +12 -0
  163. package/dist/targeting/conditions/previousPage.js +2 -0
  164. package/dist/targeting/conditions/previousPage.js.map +1 -0
  165. package/dist/targeting/conditions/sameDayVisits.d.ts +11 -0
  166. package/dist/targeting/conditions/sameDayVisits.js +2 -0
  167. package/dist/targeting/conditions/sameDayVisits.js.map +1 -0
  168. package/dist/targeting/conditions/{sdkLanguageCondition.d.ts → sdkLanguage.d.ts} +1 -4
  169. package/dist/targeting/conditions/sdkLanguage.js +2 -0
  170. package/dist/targeting/conditions/sdkLanguage.js.map +1 -0
  171. package/dist/targeting/conditions/segment.d.ts +9 -0
  172. package/dist/targeting/conditions/segment.js +2 -0
  173. package/dist/targeting/conditions/segment.js.map +1 -0
  174. package/dist/targeting/conditions/targetFeatureFlag.d.ts +11 -0
  175. package/dist/targeting/conditions/targetFeatureFlag.js +2 -0
  176. package/dist/targeting/conditions/targetFeatureFlag.js.map +1 -0
  177. package/dist/targeting/conditions/types.d.ts +20 -13
  178. package/dist/targeting/conditions/types.js.map +1 -1
  179. package/dist/targeting/conditions/visitedPages.d.ts +11 -0
  180. package/dist/targeting/conditions/visitedPages.js +2 -0
  181. package/dist/targeting/conditions/visitedPages.js.map +1 -0
  182. package/dist/targeting/conditions/{visitorCodeCondition.d.ts → visitorCode.d.ts} +1 -1
  183. package/dist/targeting/conditions/visitorCode.js +2 -0
  184. package/dist/targeting/conditions/visitorCode.js.map +1 -0
  185. package/dist/targeting/conditions/visits.d.ts +11 -0
  186. package/dist/targeting/conditions/visits.js +2 -0
  187. package/dist/targeting/conditions/visits.js.map +1 -0
  188. package/dist/targeting/index.d.ts +3 -3
  189. package/dist/targeting/index.js +1 -1
  190. package/dist/targeting/index.js.map +1 -1
  191. package/dist/targeting/{targetingNode.d.ts → node.d.ts} +7 -7
  192. package/dist/targeting/node.js +2 -0
  193. package/dist/targeting/node.js.map +1 -0
  194. package/dist/targeting/{targetingTree.d.ts → tree.d.ts} +6 -3
  195. package/dist/targeting/tree.js +2 -0
  196. package/dist/targeting/tree.js.map +1 -0
  197. package/dist/targeting/types.d.ts +30 -8
  198. package/dist/targeting/types.js +1 -1
  199. package/dist/targeting/types.js.map +1 -1
  200. package/dist/types.d.ts +17 -6
  201. package/dist/types.js +1 -41
  202. package/dist/types.js.map +1 -1
  203. package/dist/utilities/index.d.ts +1 -0
  204. package/dist/utilities/index.js +1 -1
  205. package/dist/utilities/index.js.map +1 -1
  206. package/dist/utilities/types.d.ts +61 -6
  207. package/dist/utilities/types.js +1 -1
  208. package/dist/utilities/types.js.map +1 -1
  209. package/dist/utilities/utilities.d.ts +24 -11
  210. package/dist/utilities/utilities.js +1 -1
  211. package/dist/utilities/utilities.js.map +1 -1
  212. package/dist/variationConfiguration/index.d.ts +1 -1
  213. package/dist/variationConfiguration/index.js +1 -1
  214. package/dist/variationConfiguration/index.js.map +1 -1
  215. package/dist/variationConfiguration/types.d.ts +5 -12
  216. package/dist/variationConfiguration/types.js.map +1 -1
  217. package/dist/variationConfiguration/variationConfiguration.d.ts +13 -21
  218. package/dist/variationConfiguration/variationConfiguration.js +1 -65
  219. package/dist/variationConfiguration/variationConfiguration.js.map +1 -1
  220. package/package.json +1 -1
  221. package/dist/campaignConfiguration/campaignConfiguration.d.ts +0 -71
  222. package/dist/campaignConfiguration/campaignConfiguration.js +0 -24
  223. package/dist/campaignConfiguration/campaignConfiguration.js.map +0 -1
  224. package/dist/campaignConfiguration/constants.d.ts +0 -6
  225. package/dist/campaignConfiguration/constants.js +0 -4
  226. package/dist/campaignConfiguration/constants.js.map +0 -1
  227. package/dist/campaignConfiguration/index.d.ts +0 -3
  228. package/dist/campaignConfiguration/index.js +0 -2
  229. package/dist/campaignConfiguration/index.js.map +0 -1
  230. package/dist/campaignConfiguration/types.js +0 -2
  231. package/dist/campaignConfiguration/types.js.map +0 -1
  232. package/dist/targeting/conditions/browserCondition.js +0 -2
  233. package/dist/targeting/conditions/browserCondition.js.map +0 -1
  234. package/dist/targeting/conditions/conversionCondition.js +0 -4
  235. package/dist/targeting/conditions/conversionCondition.js.map +0 -1
  236. package/dist/targeting/conditions/customDataCondition.js +0 -8
  237. package/dist/targeting/conditions/customDataCondition.js.map +0 -1
  238. package/dist/targeting/conditions/deviceCondition.js.map +0 -1
  239. package/dist/targeting/conditions/exclusiveExperimentCondition.js +0 -2
  240. package/dist/targeting/conditions/exclusiveExperimentCondition.js.map +0 -1
  241. package/dist/targeting/conditions/pageTitleCondition.js +0 -2
  242. package/dist/targeting/conditions/pageTitleCondition.js.map +0 -1
  243. package/dist/targeting/conditions/pageUrlCondition.js +0 -2
  244. package/dist/targeting/conditions/pageUrlCondition.js.map +0 -1
  245. package/dist/targeting/conditions/sdkLanguageCondition.js +0 -2
  246. package/dist/targeting/conditions/sdkLanguageCondition.js.map +0 -1
  247. package/dist/targeting/conditions/targetExperimentCondition.d.ts +0 -12
  248. package/dist/targeting/conditions/targetExperimentCondition.js.map +0 -1
  249. package/dist/targeting/conditions/visitorCodeCondition.js +0 -2
  250. package/dist/targeting/conditions/visitorCodeCondition.js.map +0 -1
  251. package/dist/targeting/targetingNode.js +0 -2
  252. package/dist/targeting/targetingNode.js.map +0 -1
  253. package/dist/targeting/targetingTree.js +0 -35
  254. package/dist/targeting/targetingTree.js.map +0 -1
  255. package/dist/variationConfiguration/variation.d.ts +0 -13
  256. package/dist/variationConfiguration/variation.js.map +0 -1
@@ -1,3 +1,4 @@
1
+ import { VisitType } from '../requester';
1
2
  import { CustomDataType, IKameleoonData } from './types';
2
3
  /**
3
4
  * @class
@@ -6,7 +7,7 @@ import { CustomDataType, IKameleoonData } from './types';
6
7
  export declare class CustomData implements IKameleoonData {
7
8
  private index;
8
9
  private value;
9
- private nonce;
10
+ private sent;
10
11
  /**
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
12
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
@@ -30,4 +31,16 @@ export declare class CustomData implements IKameleoonData {
30
31
  * @property data - data of the current class instance
31
32
  * */
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[];
33
46
  }
@@ -1,25 +1,2 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.CustomData=void 0;var _requester=require("../requester"),_utilities=require("../utilities"),_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 _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)}/**
2
- * @class
3
- * CustomData - a class for creating an instance for user's custom data
4
- * */var CustomData=/*#__PURE__*/function(){/**
5
- * @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
6
- * @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
7
- * @example
8
- * ```ts
9
- * // - Single value
10
- * const customData = new CustomData(0, 'value_1');
11
- * // - Variadic number of values
12
- * const customData = new CustomData(0, 'value_1', 'value_2', 'value_3');
13
- * // - Array of values
14
- * const values = ['value_1', 'value_2', 'value_3'];
15
- * const customData = new CustomData(0, ...values);
16
- * ```
17
- * */function a(b){_classCallCheck(this,a),_defineProperty(this,"index",void 0),_defineProperty(this,"value",void 0),_defineProperty(this,"nonce",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.nonce=_utilities.Utilities.getNonce()}/**
18
- * @property url - url for the current data type used for events tracking
19
- * */return _createClass(a,[{key:"url",get:function get(){// --- Note ---
20
- // If SDK is used in vanilla JS codebase, then you're also able to create an instance
21
- // with no required data, we don't want send anything to tracking in that case
22
- 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"+_requester.UrlParameter.Nonce+this.nonce:""}/**
23
- * @property data - data of the current class instance
24
- * */},{key:"data",get:function get(){return{index:this.index,value:this.value,type:_types.KameleoonData.CustomData,nonce:this.nonce}}}]),a}();exports.CustomData=CustomData;
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;
25
2
  //# sourceMappingURL=customData.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"customData.js","names":["CustomData","a","index","_classCallCheck","_defineProperty","c","arguments","length","value","Array","e","nonce","Utilities","getNonce","_createClass","key","get","uniqueValues","_toConsumableArray","Set","resultValue","forEach","Object","keys","UrlEventType","UrlParameter","Index","ValuesCountMap","encodeURIComponent","JSON","stringify","Overwrite","Nonce","type","KameleoonData","exports"],"sources":["../../src/kameleoonData/customData.ts"],"sourcesContent":["import { UrlEventType, UrlParameter } from 'src/requester';\nimport { Utilities } from 'src/utilities';\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 nonce: string;\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.nonce = Utilities.getNonce();\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 UrlParameter.Nonce +\n this.nonce\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 nonce: this.nonce,\n };\n }\n}\n"],"mappings":"04EAIA;AACA;AACA;AACA,KAHA,GAIa,CAAAA,UAAU,yBAKrB;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OACE,SAAAC,EAAYC,CAAa,CAAsB,CAAAC,eAAA,MAAAF,CAAA,EAAAG,eAAA,sBAAAA,eAAA,sBAAAA,eAAA,sBAC7C,IAAI,CAACF,KAAK,CAAGA,CAAK,SAAAG,CAAA,CAAAC,SAAA,CAAAC,MAAA,CADUC,CAAK,CAAAC,KAAA,GAAAJ,CAAA,CAAAA,CAAA,MAAAK,CAAA,GAAAA,CAAA,CAAAL,CAAA,CAAAK,CAAA,GAALF,CAAK,CAAAE,CAAA,IAAAJ,SAAA,CAAAI,CAAA,EAEjC,IAAI,CAACF,KAAK,CAAGA,CAAK,CAClB,IAAI,CAACG,KAAK,CAAGC,oBAAS,CAACC,QAAQ,EACjC,CAEA;AACF;AACA,OAFE,OAAAC,YAAA,CAAAb,CAAA,GAAAc,GAAA,OAAAC,GAAA,CAGA,SAAAA,IAAA,CAAkB,CAChB;AACA;AACA;AACA,GAA0B,QAAQ,EAA9B,MAAO,KAAI,CAACd,KAAkB,CAChC,MAAO,EAAE,CACV,GAEK,CAAAe,CAAY,CAAAC,kBAAA,CAAO,GAAI,CAAAC,GAAG,CAAC,IAAI,CAACX,KAAK,CAAC,CAAC,CACzCY,CAA8B,CAAG,CAAC,CAAC,OAKvC,CAAAH,CAAY,CAACI,OAAO,CAAC,SAACb,CAAK,CAAK,CAC9BY,CAAW,CAACZ,CAAK,CAAC,CAAG,CACvB,CAAC,CAAC,CAEGc,MAAM,CAACC,IAAI,CAACH,CAAW,CAAC,CAACb,MAAM,CAKlCiB,uBAAY,CAACxB,UAAU,CACvByB,uBAAY,CAACC,KAAK,CAClB,IAAI,CAACxB,KAAK,CACVuB,uBAAY,CAACE,cAAc,CAC3BC,kBAAkB,CAACC,IAAI,CAACC,SAAS,CAACV,CAAW,CAAC,CAAC,CAC/CK,uBAAY,CAACM,SAAS,OACV,CACZN,uBAAY,CAACO,KAAK,CAClB,IAAI,CAACrB,KAAK,CAZH,EAcX,CAEA;AACF;AACA,OAFE,GAAAI,GAAA,QAAAC,GAAA,CAGA,SAAAA,IAAA,CAA2B,CACzB,MAAO,CACLd,KAAK,CAAE,IAAI,CAACA,KAAK,CACjBM,KAAK,CAAE,IAAI,CAACA,KAAK,CACjByB,IAAI,CAAEC,oBAAa,CAAClC,UAAU,CAC9BW,KAAK,CAAE,IAAI,CAACA,KACd,CACF,CAAC,IAAAV,CAAA,IAAAkC,OAAA,CAAAnC,UAAA,CAAAA,UAAA"}
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":"2rFAoCa,CAAAA,WAAW,YAStB,SAAAC,EAAAC,CAAA,CAG8B,KAAAC,CAAA,MAF5BC,CAAO,CAAAF,CAAA,CAAPE,OAAO,CACPC,CAAwB,CAAAH,CAAA,CAAxBG,wBAAwB,CAKxB,GAAAC,eAAA,MAAAL,CAAA,EAAAM,eAAA,uBAf0C,GAAI,CAAAC,GAAK,EAAAD,eAAA,+BACP,GAAI,CAAAE,GAAK,EAAAF,eAAA,oCACJ,GAAI,CAAAE,GAAK,EAAAF,eAAA,gCACL,IAAI,EAAAA,eAAA,8BAAAA,eAAA,2BAAAA,eAAA,+BAGJ,GAAI,CAAAC,GAAK,EAM9D,IAAI,CAACE,aAAa,CAAG,GAAI,CAAAC,4BAAa,CAACP,CAAO,CAAC,CAC/C,IAAI,CAACQ,UAAU,CAAG,CAAC,CAAC,CAEhBP,CAAwB,CAAE,IACtB,CAAAQ,CAAe,CACQ,CAAC,CAA5BR,CAA4B,CAAG,CAAC,CAAGA,CAAwB,CAEvDS,CAAe,CAAG,QAAAA,CAAA,CAAM,CAC5BX,CAAI,CAACO,aAAa,CAACK,4BAA4B,CAC7CV,CAAwB,CACzB,CACDF,CAAI,CAACa,sBAAsB,CAACC,KAAK,EACnC,CAAC,CAKD,GAAI,CACF,IAAI,CAACC,uBAAuB,CAAGC,WAAW,CACxCL,CAAe,CACfD,CAAe,CAAGO,mBAAY,CAACC,MAAM,CAEzC,CAAE,MAAOC,CAAG,CAAE,CAKZ,KAJI,KAAI,CAACJ,uBAAuB,EAC9BK,aAAa,CAAC,IAAI,CAACL,uBAAuB,CAAC,CAGvCI,CACR,CACF,CACF,CAAC,OAAAE,YAAA,CAAAvB,CAAA,GAAAwB,GAAA,WAAAC,KAAA,CAED,SAAAC,QACEC,CAAmB,CAEW,CAGzB,IAAI,CAAChB,UAAU,CAACgB,CAAW,CAAC,GAC/B,IAAI,CAAChB,UAAU,CAACgB,CAAW,CAAC,CAAG,GAAI,CAAApB,GAAK,UAAAN,CAAA,CAAA2B,SAAA,CAAAC,MAAA,CALvCC,CAAa,CAAAC,KAAA,GAAA9B,CAAA,CAAAA,CAAA,MAAA+B,CAAA,GAAAA,CAAA,CAAA/B,CAAA,CAAA+B,CAAA,GAAbF,CAAa,CAAAE,CAAA,IAAAJ,SAAA,CAAAI,CAAA,EAQhB,OAAW,CAAAC,CAAQ,CAAAC,CAAA,GAAAC,CAAA,CAAIL,CAAa,CAAAI,CAAA,CAAAC,CAAA,CAAAN,MAAA,CAAAK,CAAA,GAGlC,OAHSD,CAAQ,CAAAE,CAAA,CAAAD,CAAA,EACjB,IAAI,CAACzB,aAAa,CAAC2B,UAAU,CAACT,CAAW,CAAEM,CAAQ,CAAC,CAE5CA,CAAQ,CAACI,IAAI,CAACC,IAAI,EACxB,IAAK,CAAAC,qBAAa,CAACC,UAAU,CAAE,CAC7B,GAAM,CAAAH,CAAI,CAAGJ,CAAQ,CAACI,IAAsB,CAGzC,IAAI,CAACI,sBAAsB,CAACC,GAAG,CAACL,CAAI,CAACM,KAAK,CAAC,EAC3CV,CAAQ,CAACW,MAAM,EAEhB,IAAI,CAACjC,UAAU,CAACgB,CAAW,CAAC,CAAEkB,GAAG,CAACR,CAAI,CAACM,KAAK,CAAEV,CAAQ,CAAC,CAGzD,KACF,CACA,IAAK,CAAAM,qBAAa,CAACO,QAAQ,CAAE,IACrB,CAAAT,CAAI,CAAGJ,CAAQ,CAACI,IAAwB,CAMxCU,CAAU,CAAG,IAAI,CAACtC,aAAa,CAACuC,mBAAmB,CAACC,EAAE,CAAC,CAAC,CAAC,CAAC,CAC1DC,CAAiB,CACrBH,CAAU,CAACpB,CAAW,CAAC,CAACY,qBAAa,CAACO,QAAQ,CAAC,CAEjD,GAAII,CAAiB,CAAE,CACrB,GAAM,CAAAC,CAAQ,CAAID,CAAiB,CACjCb,CAAI,CAACe,UAAU,CAChB,CAED,GAAI,CAACnB,CAAQ,CAACW,MAAM,CAAE,KAAAS,CAAA,CAAAC,CAAA,CAAAC,0BAAA,CACIJ,CAAQ,CAACK,UAAU,MAA3C,IAAAF,CAAA,CAAAG,CAAA,KAAAJ,CAAA,CAAAC,CAAA,CAAAA,CAAA,IAAAI,IAAA,EAA6C,IAAlC,CAAAC,CAAS,CAAAN,CAAA,CAAA5B,KAAA,CAIb,IAAI,CAACV,sBAAsB,CAAC2B,GAAG,CAACiB,CAAS,CAAC,GAC7C,IAAI,CAAChD,UAAU,CAACgB,CAAW,CAAC,CAAEkB,GAAG,CAACc,CAAS,CAAE1B,CAAQ,CAAC,CACtD,IAAI,CAAClB,sBAAsB,CAAC8B,GAAG,CAACc,CAAS,IAAO,CAEpD,CAAC,OAAA3D,CAAA,EAAAsD,CAAA,CAAAM,CAAA,CAAA5D,CAAA,UAAAsD,CAAA,CAAApB,CAAA,GACH,CACF,CAEA,KACF,CACA,IAAK,CAAAK,qBAAa,CAACsB,UAAU,CAAE,CAC7B,GAAM,CAAAlD,CAAU,CAAG,IAAI,CAACA,UAAU,CAACgB,CAAW,CAAE,CAEhD,GAAI,CAACM,CAAQ,CAACW,MAAM,CAClB,GAAIjC,CAAU,CAAC+B,GAAG,CAACH,qBAAa,CAACsB,UAAU,CAAC,CAAE,CAC5C,GAAM,CAAAC,CAAmB,CAAGnD,CAAU,CAACoD,GAAG,CACxCxB,qBAAa,CAACsB,UAAU,CACF,CAExBC,CAAmB,CAACE,IAAI,CAAC/B,CAAQ,CAAC,CAElCtB,CAAU,CAACkC,GAAG,CAACN,qBAAa,CAACsB,UAAU,CAAEC,CAAmB,CAC9D,CAAC,IACC,CAAAnD,CAAU,CAACkC,GAAG,CAACN,qBAAa,CAACsB,UAAU,CAAE,CAAC5B,CAAQ,CAAC,CAAC,CAIxD,KACF,CACA,QAAS,CACP,GAAQ,CAAAI,CAAI,CAAKJ,CAAQ,CAAjBI,IAAI,CAEPJ,CAAQ,CAACW,MAAM,EAClB,IAAI,CAACjC,UAAU,CAACgB,CAAW,CAAC,CAAEkB,GAAG,CAACR,CAAI,CAACC,IAAI,CAAEL,CAAQ,CAEzD,CAAC,CAIL,MAAO,KAAI,CAACxB,aAAa,CAACwD,WAAW,CAACtC,CAAW,CACnD,CAAC,GAAAH,GAAA,WAAAC,KAAA,CAED,SAAAyC,QAAeC,CAAoB,CAAQ,CACzC,GAAI,CAAC,IAAI,CAACC,cAAc,CAAC1B,GAAG,CAACyB,CAAO,CAACE,EAAE,CAAC,CAAE,CACxC,GAAM,CAAAC,CAAa,CAAG,GAAI,CAAAC,eAAI,CAACJ,CAAO,CAAC,CAIvC,MAFA,KAAI,CAACC,cAAc,CAACvB,GAAG,CAACsB,CAAO,CAACE,EAAE,CAAE,GAAI,CAAAE,eAAI,CAACJ,CAAO,CAAC,CAAC,CAE/CG,CACT,CAEA,MAAO,KAAI,CAACF,cAAc,CAACL,GAAG,CAACI,CAAO,CAACE,EAAE,CAC3C,CAAC,GAAA7C,GAAA,cAAAC,KAAA,CAED,SAAA+C,WAAA,CAA0B,CACxB,IAAI,CAACJ,cAAc,CAACpD,KAAK,EAC3B,CAAC,GAAAQ,GAAA,iBAAAC,KAAA,CAED,SAAAgD,cACE9C,CAAmB,CAC0B,CAC7C,MAAO,KAAI,CAAChB,UAAU,CAACgB,CAAW,CACpC,CAAC,GAAAH,GAAA,mBAAAC,KAAA,CAED,SAAAiD,gBAAuB/C,CAAmB,CAAQ,KAAA1B,CAAA,CAC1C0E,CAAS,SAAA1E,CAAA,CAAG,IAAI,CAACU,UAAU,CAACgB,CAAW,CAAC,YAAA1B,CAAA,QAA5BA,CAAA,CAA8B2E,MAAM,EAAE,CAExD,GAAID,CAAS,EAAI,IAAI,CAACE,2BAA2B,CAACC,IAAI,CAAE,KAAA9C,CAAA,CAChD+C,CAAoD,CAAG,GAAI,CAAAxE,GAAK,CAAA2B,CAAA,CAAAqB,0BAAA,CAE/CoB,CAAS,MAAhC,IAAAzC,CAAA,CAAAuB,CAAA,KAAAzB,CAAA,CAAAE,CAAA,CAAAoB,CAAA,IAAAI,IAAA,EAAkC,IAAvB,CAAAzB,CAAQ,CAAAD,CAAA,CAAAP,KAAA,CACb,CAACM,KAAK,CAACiD,OAAO,CAAC/C,CAAQ,CAAC,EAAI,IAAI,CAACgD,sBAAsB,CAAChD,CAAQ,CAAC,EACnE8C,CAAoB,CAAClC,GAAG,CAACZ,CAAQ,CAACI,IAAI,CAACM,KAAK,CAAEV,CAAQ,CAE1D,CAAC,OAAAjC,CAAA,EAAAkC,CAAA,CAAA0B,CAAA,CAAA5D,CAAA,UAAAkC,CAAA,CAAAA,CAAA,GAED,GAAI6C,CAAoB,CAACD,IAAI,CAE3B,YADA,IAAI,CAACnE,UAAU,CAACgB,CAAW,CAAC,CAAGoD,CAAoB,CAGvD,CAEA,MAAO,KAAI,CAACpE,UAAU,CAACgB,CAAW,CACpC,CAAC,GAAAH,GAAA,0BAAAC,KAAA,CAED,SAAAwD,uBACEhD,CAA2B,CACH,SACnB,IAAI,CAAC4C,2BAA2B,CAACC,IAAI,IAItCI,oBAAS,CAACC,YAAY,CAAClD,CAAQ,CAAC,EAC3B,IAAI,CAAC4C,2BAA2B,CAACnC,GAAG,CAACT,CAAQ,CAACI,IAAI,CAACM,KAAK,CAInE,CAAC,GAAAnB,GAAA,SAAAuC,GAAA,CAED,SAAAA,IAAA,CAAY,CACV,MAAO,KAAI,CAACK,cACd,CAAC,GAAA5C,GAAA,sBAAAuC,GAAA,CAED,SAAAA,IAAA,CAAmC,CACjC,MAAO,CAAAqB,MAAM,CAACC,IAAI,CAAC,IAAI,CAAC1E,UAAU,CACpC,CAAC,GAAAa,GAAA,uBAAAuC,GAAA,CAED,SAAAA,IAAA,CAA6C,CAC3C,MAAO,KAAI,CAACtD,aAAa,CAACuC,mBAAmB,CAACC,EAAE,CAAC,CAAC,CAAC,CACrD,CAAC,GAAAzB,GAAA,qBAAAqB,GAAA,CAED,SAAAA,IAAsByC,CAAyC,CAAE,IACzD,CAAAC,CAAoC,CAAG,EAAE,CACzCV,CAAqC,CAAG,EAAE,CAEhDS,CAAU,CAACE,OAAO,CAAC,SAACF,CAAU,CAAK,CAC7BA,CAAU,CAACG,SAAS,EACtBF,CAA0B,CAACvB,IAAI,CAACsB,CAAU,CAAC3C,KAAK,CAAC,CAG/C2C,CAAU,CAACI,KAAK,GAAKC,oCAAe,CAACC,OAAO,EAC9Cf,CAA2B,CAACb,IAAI,CAACsB,CAAU,CAAC3C,KAAK,CAErD,CAAC,CAAC,CAEE4C,CAA0B,CAAC1D,MAAM,GACnC,IAAI,CAACY,sBAAsB,CAAG,GAAI,CAAAjC,GAAG,CAAC+E,CAA0B,CAAC,EAG/DV,CAA2B,CAAChD,MAAM,GACpC,IAAI,CAACgD,2BAA2B,CAAG,GAAI,CAAArE,GAAG,CAACqE,CAA2B,CAAC,CAE3E,CAAC,IAAA7E,CAAA,IAAA6F,OAAA,CAAA9F,WAAA,CAAAA,WAAA"}
@@ -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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"}
@@ -1,3 +1,4 @@
1
+ import { VisitType } from '../requester';
1
2
  import { DeviceDataType, DeviceType, IKameleoonData } from './types';
2
3
  /**
3
4
  * @class
@@ -5,7 +6,7 @@ import { DeviceDataType, DeviceType, IKameleoonData } from './types';
5
6
  * */
6
7
  export declare class Device implements IKameleoonData {
7
8
  private device;
8
- private nonce;
9
+ private sent;
9
10
  /**
10
11
  * @param {DeviceType} device - one of the available device types from `DeviceType` enum
11
12
  * */
@@ -18,4 +19,16 @@ export declare class Device implements IKameleoonData {
18
19
  * @property data - data of the current class instance
19
20
  * */
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;
21
34
  }
@@ -1,14 +1,2 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.Device=void 0;var _requester=require("../requester"),_utilities=require("../utilities"),_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)}/**
2
- * @class
3
- * Device - a class for creating an instance for device of a certain type
4
- * */var Device=/*#__PURE__*/function(){/**
5
- * @param {DeviceType} device - one of the available device types from `DeviceType` enum
6
- * */function a(b){_classCallCheck(this,a),_defineProperty(this,"device",void 0),_defineProperty(this,"nonce",void 0),this.device=b,this.nonce=_utilities.Utilities.getNonce()}/**
7
- * @property url - url for the current data type used for events tracking
8
- * */return _createClass(a,[{key:"url",get:function get(){// --- Note ---
9
- // If SDK is used in vanilla JS codebase, then you're also able to create an instance
10
- // with no required data, we don't want send anything to tracking in that case
11
- return this.device?_requester.UrlEventType.StaticData+_requester.UrlParameter.DeviceType+this.device+_requester.UrlParameter.Nonce+this.nonce:""}/**
12
- * @property data - data of the current class instance
13
- * */},{key:"data",get:function get(){return{device:this.device,type:_types.KameleoonData.Device,nonce:this.nonce}}}]),a}();exports.Device=Device;
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;
14
2
  //# sourceMappingURL=device.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"device.js","names":["Device","a","device","_classCallCheck","_defineProperty","nonce","Utilities","getNonce","_createClass","key","get","UrlEventType","StaticData","UrlParameter","DeviceType","Nonce","type","KameleoonData","exports"],"sources":["../../src/kameleoonData/device.ts"],"sourcesContent":["import { UrlEventType, UrlParameter } from 'src/requester';\nimport { Utilities } from 'src/utilities';\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 nonce: string;\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.nonce = Utilities.getNonce();\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 (\n UrlEventType.StaticData +\n UrlParameter.DeviceType +\n this.device +\n UrlParameter.Nonce +\n this.nonce\n );\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 nonce: this.nonce,\n };\n }\n}\n"],"mappings":"u6CASA;AACA;AACA;AACA,KAHA,GAIa,CAAAA,MAAM,yBAIjB;AACF;AACA,OACE,SAAAC,EAAYC,CAAkB,CAAE,CAAAC,eAAA,MAAAF,CAAA,EAAAG,eAAA,uBAAAA,eAAA,sBAC9B,IAAI,CAACF,MAAM,CAAGA,CAAM,CACpB,IAAI,CAACG,KAAK,CAAGC,oBAAS,CAACC,QAAQ,EACjC,CAEA;AACF;AACA,OAFE,OAAAC,YAAA,CAAAP,CAAA,GAAAQ,GAAA,OAAAC,GAAA,CAGA,SAAAA,IAAA,CAAkB,CAChB;AACA;AACA;AAAA,MACK,KAAI,CAACR,MAAM,CAKdS,uBAAY,CAACC,UAAU,CACvBC,uBAAY,CAACC,UAAU,CACvB,IAAI,CAACZ,MAAM,CACXW,uBAAY,CAACE,KAAK,CAClB,IAAI,CAACV,KAAK,CARH,EAUX,CAEA;AACF;AACA,OAFE,GAAAI,GAAA,QAAAC,GAAA,CAGA,SAAAA,IAAA,CAA2B,CACzB,MAAO,CACLR,MAAM,CAAE,IAAI,CAACA,MAAM,CACnBc,IAAI,CAAEC,oBAAa,CAACjB,MAAM,CAC1BK,KAAK,CAAE,IAAI,CAACA,KACd,CACF,CAAC,IAAAJ,CAAA,IAAAiB,OAAA,CAAAlB,MAAA,CAAAA,MAAA"}
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"}
@@ -0,0 +1,52 @@
1
+ import { VisitType } from '../requester';
2
+ import { IKameleoonData, GeolocationInfoType, GeolocationDataType } from './types';
3
+ /**
4
+ * @class
5
+ * Geolocation - a class for creating an instance for geolocation data
6
+ * */
7
+ export declare class GeolocationData implements IKameleoonData {
8
+ private country;
9
+ private region?;
10
+ private city?;
11
+ private postalCode?;
12
+ private coordinates?;
13
+ private sent;
14
+ /**
15
+ * @param {GeolocationInfoType} geolocationInfo - an object containing information about geolocation of a visitor
16
+ * @example
17
+ * ```ts
18
+ * // Visitor is located at Triumph Arch in Paris, France
19
+ * const location: GeolocationDataType = {
20
+ * country: 'France',
21
+ * region: 'Île-de-France',
22
+ * city: 'Paris',
23
+ * postalCode: '75008',
24
+ * coordinates: [48.8738, 2.295]
25
+ * };
26
+ *
27
+ * const geolocation = new GeolocationData(location);
28
+ * ```
29
+ *
30
+ * */
31
+ constructor({ country, region, city, postalCode, coordinates, }: GeolocationInfoType);
32
+ /**
33
+ * @property url - url for the current data type used for events tracking
34
+ * */
35
+ get url(): string;
36
+ /**
37
+ * @property data - data of the current class instance
38
+ * */
39
+ get data(): GeolocationDataType;
40
+ /**
41
+ * @property isSent - signifying if the data was sent already tracked
42
+ * */
43
+ get isSent(): boolean;
44
+ set isSent(value: boolean);
45
+ /**
46
+ * @private
47
+ * @method _fromVisits - an internal method for creating an instance of GeolocationData class from a list of visits
48
+ * @param {VisitType[]} visits - a list of visits
49
+ * @returns {GeolocationData | undefined} an instance of GeolocationData class or undefined if geolocation can not be found among visits
50
+ * */
51
+ static _fromVisits(visits: VisitType[]): GeolocationData | undefined;
52
+ }
@@ -0,0 +1,2 @@
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.GeolocationData=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 GeolocationData=function(){function a(b){var c=b.country,d=b.region,e=b.city,f=b.postalCode,g=b.coordinates;_classCallCheck(this,a),_defineProperty(this,"country",void 0),_defineProperty(this,"region",void 0),_defineProperty(this,"city",void 0),_defineProperty(this,"postalCode",void 0),_defineProperty(this,"coordinates",void 0),_defineProperty(this,"sent",void 0),this.country=c,this.region=d,this.city=e,this.postalCode=f,this.coordinates=g,this.sent=!1}return _createClass(a,[{key:"url",get:function get(){var a=this.region?_requester.UrlParameter.Region+encodeURIComponent(this.region):"",b=this.city?_requester.UrlParameter.City+encodeURIComponent(this.city):"",c=this.postalCode?_requester.UrlParameter.PostalCode+encodeURIComponent(this.postalCode):"",d=this.coordinates?_requester.UrlParameter.Latitude+this.coordinates[0]+_requester.UrlParameter.Longitude+this.coordinates[1]:"";return _requester.UrlEventType.Geolocation+_requester.UrlParameter.Country+encodeURIComponent(this.country)+a+b+c+d}},{key:"data",get:function get(){return{type:_types.KameleoonData.GeolocationData,country:this.country,region:this.region,city:this.city,postalCode:this.postalCode,coordinates:this.coordinates,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.geolocationEvents){var f,g=c.geolocationEvents,h=_createForOfIteratorHelper(g);try{for(h.s();!(f=h.n()).done;){var j=f.value,k=j.data;k.country&&(d=k)}}catch(a){h.e(a)}finally{h.f()}}var l=d||{},m=l.country,n=l.region,o=l.city;if(m)return n&&o?new a({country:m,region:n,city:o}):n?new a({country:m,region:n}):new a({country:m})}}]),a}();exports.GeolocationData=GeolocationData;
2
+ //# sourceMappingURL=geolocation.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"geolocation.js","names":["GeolocationData","a","b","country","region","city","postalCode","coordinates","_classCallCheck","_defineProperty","sent","_createClass","key","get","UrlParameter","Region","encodeURIComponent","City","PostalCode","Latitude","Longitude","UrlEventType","Geolocation","Country","type","KameleoonData","set","value","_fromVisits","visits","visit","geolocationData","i","length","geolocationEvents","f","h","_createForOfIteratorHelper","s","n","done","geolocationEvent","data","e","l","exports"],"sources":["../../src/kameleoonData/geolocation.ts"],"sourcesContent":["import { UrlEventType, UrlParameter, VisitType } from 'src/requester';\nimport { GeolocationEventType } from 'src/requester/types';\nimport {\n IKameleoonData,\n KameleoonData,\n GeolocationInfoType,\n GeolocationDataType,\n} from './types';\n\n/**\n * @class\n * Geolocation - a class for creating an instance for geolocation data\n * */\nexport class GeolocationData implements IKameleoonData {\n private country: string;\n private region?: string;\n private city?: string;\n private postalCode?: string;\n private coordinates?: [number, number];\n private sent: boolean;\n\n /**\n * @param {GeolocationInfoType} geolocationInfo - an object containing information about geolocation of a visitor\n * @example\n * ```ts\n * // Visitor is located at Triumph Arch in Paris, France\n * const location: GeolocationDataType = {\n * country: 'France',\n * region: 'Île-de-France',\n * city: 'Paris',\n * postalCode: '75008',\n * coordinates: [48.8738, 2.295]\n * };\n *\n * const geolocation = new GeolocationData(location);\n * ```\n *\n * */\n constructor({\n country,\n region,\n city,\n postalCode,\n coordinates,\n }: GeolocationInfoType) {\n this.country = country;\n this.region = region;\n this.city = city;\n this.postalCode = postalCode;\n this.coordinates = coordinates;\n this.sent = false;\n }\n\n /**\n * @property url - url for the current data type used for events tracking\n * */\n get url(): string {\n const region = this.region\n ? UrlParameter.Region + encodeURIComponent(this.region)\n : '';\n const city = this.city\n ? UrlParameter.City + encodeURIComponent(this.city)\n : '';\n const postalCode = this.postalCode\n ? UrlParameter.PostalCode + encodeURIComponent(this.postalCode)\n : '';\n const coordinates = this.coordinates\n ? UrlParameter.Latitude +\n this.coordinates[0] +\n UrlParameter.Longitude +\n this.coordinates[1]\n : '';\n\n return (\n UrlEventType.Geolocation +\n UrlParameter.Country +\n encodeURIComponent(this.country) +\n region +\n city +\n postalCode +\n coordinates\n );\n }\n\n /**\n * @property data - data of the current class instance\n * */\n get data(): GeolocationDataType {\n return {\n type: KameleoonData.GeolocationData,\n country: this.country,\n region: this.region,\n city: this.city,\n postalCode: this.postalCode,\n coordinates: this.coordinates,\n 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 GeolocationData class from a list of visits\n * @param {VisitType[]} visits - a list of visits\n * @returns {GeolocationData | undefined} an instance of GeolocationData class or undefined if geolocation can not be found among visits\n * */\n public static _fromVisits(visits: VisitType[]): GeolocationData | undefined {\n let geolocationData: GeolocationEventType['data'] | 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.geolocationEvents) {\n continue;\n }\n\n const geolocationEvents = visit.geolocationEvents;\n\n for (const geolocationEvent of geolocationEvents) {\n const { data } = geolocationEvent;\n\n if (data.country) {\n geolocationData = data;\n }\n }\n }\n\n // --- Note ---\n // We only take `country`, `region`, and `city` from geolocation event ignoring other fields\n // as they are not participating in targeting, and visits data won't be tracked again\n const { country, region, city } = geolocationData || {};\n\n if (country) {\n if (region && city) {\n return new GeolocationData({ country, region, city });\n } else if (region) {\n return new GeolocationData({ country, region });\n } else {\n return new GeolocationData({ country });\n }\n }\n }\n}\n"],"mappings":"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"}
@@ -0,0 +1 @@
1
+ export declare function constructTypeMap<T extends string>(indexMap: Record<T, number>): Record<number, T>;
@@ -0,0 +1,2 @@
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.constructTypeMap=constructTypeMap;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 constructTypeMap(a){return Object.fromEntries(Object.entries(a).map(function(a){var b=_slicedToArray(a,2),c=b[0],d=b[1];return[d,c]}))}
2
+ //# sourceMappingURL=helpers.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"helpers.js","names":["constructTypeMap","indexMap","Object","fromEntries","entries","map","a","b","_slicedToArray","key","value"],"sources":["../../src/kameleoonData/helpers.ts"],"sourcesContent":["export function constructTypeMap<T extends string>(\n indexMap: Record<T, number>,\n): Record<number, T> {\n return Object.fromEntries(\n Object.entries(indexMap).map(([key, value]) => [value, key]),\n ) as Record<number, T>;\n}\n"],"mappings":"21CAAO,QAAS,CAAAA,gBAAgBA,CAC9BC,CAA2B,CACR,CACnB,MAAO,CAAAC,MAAM,CAACC,WAAW,CACvBD,MAAM,CAACE,OAAO,CAACH,CAAQ,CAAC,CAACI,GAAG,CAAC,SAAAC,CAAA,MAAAC,CAAA,CAAAC,cAAA,CAAAF,CAAA,IAAEG,CAAG,CAAAF,CAAA,IAAEG,CAAK,CAAAH,CAAA,UAAM,CAACG,CAAK,CAAED,CAAG,CAAC,EAAC,CAEhE"}
@@ -1,7 +1,14 @@
1
- export { CustomData } from './customData';
2
- export { Conversion } from './conversion';
3
1
  export { Device } from './device';
2
+ export { Cookie } from './cookie';
4
3
  export { Browser } from './browser';
5
4
  export { PageView } from './pageView';
6
5
  export { UserAgent } from './userAgent';
7
- export { DeviceType, BrowserType, BrowserDataType, BrowserIndexMap, PageViewDataType, DeviceDataType, ConversionDataType, CustomDataType, KameleoonData, KameleoonDataType, KameleoonDataItemType, PageViewParametersType, ConversionParametersType, UserAgentDataType, } from './types';
6
+ export { CustomData } from './customData';
7
+ export { Conversion } from './conversion';
8
+ export { GeolocationData } from './geolocation';
9
+ export { OperatingSystem } from './operatingSystem';
10
+ export { ApplicationVersion } from './applicationVersion';
11
+ export { VisitsData } from './visitsData';
12
+ export { DEFAULT_CLEANUP_INTERVAL } from './constants';
13
+ export { DeviceType, CookieType, VisitsDataType, BrowserType, KameleoonData, DeviceDataType, CustomDataType, BrowserDataType, BrowserIndexMap, PageViewDataType, KameleoonDataType, UserAgentDataType, ConversionDataType, OperatingSystemType, GeolocationInfoType, KameleoonDataItemType, PageViewParametersType, ConversionParametersType, ApplicationVersionDataType, } from './types';
14
+ export { DataManager } from './dataManager';
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),Object.defineProperty(exports,"Browser",{enumerable:!0,get:function get(){return _browser.Browser}}),Object.defineProperty(exports,"BrowserDataType",{enumerable:!0,get:function get(){return _types.BrowserDataType}}),Object.defineProperty(exports,"BrowserIndexMap",{enumerable:!0,get:function get(){return _types.BrowserIndexMap}}),Object.defineProperty(exports,"BrowserType",{enumerable:!0,get:function get(){return _types.BrowserType}}),Object.defineProperty(exports,"Conversion",{enumerable:!0,get:function get(){return _conversion.Conversion}}),Object.defineProperty(exports,"ConversionDataType",{enumerable:!0,get:function get(){return _types.ConversionDataType}}),Object.defineProperty(exports,"ConversionParametersType",{enumerable:!0,get:function get(){return _types.ConversionParametersType}}),Object.defineProperty(exports,"CustomData",{enumerable:!0,get:function get(){return _customData.CustomData}}),Object.defineProperty(exports,"CustomDataType",{enumerable:!0,get:function get(){return _types.CustomDataType}}),Object.defineProperty(exports,"Device",{enumerable:!0,get:function get(){return _device.Device}}),Object.defineProperty(exports,"DeviceDataType",{enumerable:!0,get:function get(){return _types.DeviceDataType}}),Object.defineProperty(exports,"DeviceType",{enumerable:!0,get:function get(){return _types.DeviceType}}),Object.defineProperty(exports,"KameleoonData",{enumerable:!0,get:function get(){return _types.KameleoonData}}),Object.defineProperty(exports,"KameleoonDataItemType",{enumerable:!0,get:function get(){return _types.KameleoonDataItemType}}),Object.defineProperty(exports,"KameleoonDataType",{enumerable:!0,get:function get(){return _types.KameleoonDataType}}),Object.defineProperty(exports,"PageView",{enumerable:!0,get:function get(){return _pageView.PageView}}),Object.defineProperty(exports,"PageViewDataType",{enumerable:!0,get:function get(){return _types.PageViewDataType}}),Object.defineProperty(exports,"PageViewParametersType",{enumerable:!0,get:function get(){return _types.PageViewParametersType}}),Object.defineProperty(exports,"UserAgent",{enumerable:!0,get:function get(){return _userAgent.UserAgent}}),Object.defineProperty(exports,"UserAgentDataType",{enumerable:!0,get:function get(){return _types.UserAgentDataType}});var _customData=require("./customData"),_conversion=require("./conversion"),_device=require("./device"),_browser=require("./browser"),_pageView=require("./pageView"),_userAgent=require("./userAgent"),_types=require("./types");
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),Object.defineProperty(exports,"ApplicationVersion",{enumerable:!0,get:function get(){return _applicationVersion.ApplicationVersion}}),Object.defineProperty(exports,"ApplicationVersionDataType",{enumerable:!0,get:function get(){return _types.ApplicationVersionDataType}}),Object.defineProperty(exports,"Browser",{enumerable:!0,get:function get(){return _browser.Browser}}),Object.defineProperty(exports,"BrowserDataType",{enumerable:!0,get:function get(){return _types.BrowserDataType}}),Object.defineProperty(exports,"BrowserIndexMap",{enumerable:!0,get:function get(){return _types.BrowserIndexMap}}),Object.defineProperty(exports,"BrowserType",{enumerable:!0,get:function get(){return _types.BrowserType}}),Object.defineProperty(exports,"Conversion",{enumerable:!0,get:function get(){return _conversion.Conversion}}),Object.defineProperty(exports,"ConversionDataType",{enumerable:!0,get:function get(){return _types.ConversionDataType}}),Object.defineProperty(exports,"ConversionParametersType",{enumerable:!0,get:function get(){return _types.ConversionParametersType}}),Object.defineProperty(exports,"Cookie",{enumerable:!0,get:function get(){return _cookie.Cookie}}),Object.defineProperty(exports,"CookieType",{enumerable:!0,get:function get(){return _types.CookieType}}),Object.defineProperty(exports,"CustomData",{enumerable:!0,get:function get(){return _customData.CustomData}}),Object.defineProperty(exports,"CustomDataType",{enumerable:!0,get:function get(){return _types.CustomDataType}}),Object.defineProperty(exports,"DEFAULT_CLEANUP_INTERVAL",{enumerable:!0,get:function get(){return _constants.DEFAULT_CLEANUP_INTERVAL}}),Object.defineProperty(exports,"DataManager",{enumerable:!0,get:function get(){return _dataManager.DataManager}}),Object.defineProperty(exports,"Device",{enumerable:!0,get:function get(){return _device.Device}}),Object.defineProperty(exports,"DeviceDataType",{enumerable:!0,get:function get(){return _types.DeviceDataType}}),Object.defineProperty(exports,"DeviceType",{enumerable:!0,get:function get(){return _types.DeviceType}}),Object.defineProperty(exports,"GeolocationData",{enumerable:!0,get:function get(){return _geolocation.GeolocationData}}),Object.defineProperty(exports,"GeolocationInfoType",{enumerable:!0,get:function get(){return _types.GeolocationInfoType}}),Object.defineProperty(exports,"KameleoonData",{enumerable:!0,get:function get(){return _types.KameleoonData}}),Object.defineProperty(exports,"KameleoonDataItemType",{enumerable:!0,get:function get(){return _types.KameleoonDataItemType}}),Object.defineProperty(exports,"KameleoonDataType",{enumerable:!0,get:function get(){return _types.KameleoonDataType}}),Object.defineProperty(exports,"OperatingSystem",{enumerable:!0,get:function get(){return _operatingSystem.OperatingSystem}}),Object.defineProperty(exports,"OperatingSystemType",{enumerable:!0,get:function get(){return _types.OperatingSystemType}}),Object.defineProperty(exports,"PageView",{enumerable:!0,get:function get(){return _pageView.PageView}}),Object.defineProperty(exports,"PageViewDataType",{enumerable:!0,get:function get(){return _types.PageViewDataType}}),Object.defineProperty(exports,"PageViewParametersType",{enumerable:!0,get:function get(){return _types.PageViewParametersType}}),Object.defineProperty(exports,"UserAgent",{enumerable:!0,get:function get(){return _userAgent.UserAgent}}),Object.defineProperty(exports,"UserAgentDataType",{enumerable:!0,get:function get(){return _types.UserAgentDataType}}),Object.defineProperty(exports,"VisitsData",{enumerable:!0,get:function get(){return _visitsData.VisitsData}}),Object.defineProperty(exports,"VisitsDataType",{enumerable:!0,get:function get(){return _types.VisitsDataType}});var _device=require("./device"),_cookie=require("./cookie"),_browser=require("./browser"),_pageView=require("./pageView"),_userAgent=require("./userAgent"),_customData=require("./customData"),_conversion=require("./conversion"),_geolocation=require("./geolocation"),_operatingSystem=require("./operatingSystem"),_applicationVersion=require("./applicationVersion"),_visitsData=require("./visitsData"),_constants=require("./constants"),_types=require("./types"),_dataManager=require("./dataManager");
2
2
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":[],"sources":["../../src/kameleoonData/index.ts"],"sourcesContent":["export { CustomData } from './customData';\nexport { Conversion } from './conversion';\nexport { Device } from './device';\nexport { Browser } from './browser';\nexport { PageView } from './pageView';\nexport { UserAgent } from './userAgent';\nexport {\n DeviceType,\n BrowserType,\n BrowserDataType,\n BrowserIndexMap,\n PageViewDataType,\n DeviceDataType,\n ConversionDataType,\n CustomDataType,\n KameleoonData,\n KameleoonDataType,\n KameleoonDataItemType,\n PageViewParametersType,\n ConversionParametersType,\n UserAgentDataType,\n} from './types';\n"],"mappings":""}
1
+ {"version":3,"file":"index.js","names":[],"sources":["../../src/kameleoonData/index.ts"],"sourcesContent":["export { Device } from './device';\nexport { Cookie } from './cookie';\nexport { Browser } from './browser';\nexport { PageView } from './pageView';\nexport { UserAgent } from './userAgent';\nexport { CustomData } from './customData';\nexport { Conversion } from './conversion';\nexport { GeolocationData } from './geolocation';\nexport { OperatingSystem } from './operatingSystem';\nexport { ApplicationVersion } from './applicationVersion';\nexport { VisitsData } from './visitsData';\nexport { DEFAULT_CLEANUP_INTERVAL } from './constants';\nexport {\n DeviceType,\n CookieType,\n VisitsDataType,\n BrowserType,\n KameleoonData,\n DeviceDataType,\n CustomDataType,\n BrowserDataType,\n BrowserIndexMap,\n PageViewDataType,\n KameleoonDataType,\n UserAgentDataType,\n ConversionDataType,\n OperatingSystemType,\n GeolocationInfoType,\n KameleoonDataItemType,\n PageViewParametersType,\n ConversionParametersType,\n ApplicationVersionDataType,\n} from './types';\nexport { DataManager } from './dataManager';\n"],"mappings":""}
@@ -0,0 +1,34 @@
1
+ import { VisitType } from '../requester';
2
+ import { IKameleoonData, OperatingSystemDataType, OperatingSystemType } from './types';
3
+ /**
4
+ * @class
5
+ * OperatingSystem - a class for creating an instance for Operating System of a certain type
6
+ * */
7
+ export declare class OperatingSystem implements IKameleoonData {
8
+ private operatingSystem;
9
+ private sent;
10
+ /**
11
+ * @param {OperatingSystemType} operatingSystem - one of the available operating system types from `OperatingSystemType` enum
12
+ * */
13
+ constructor(operatingSystem: OperatingSystemType);
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(): OperatingSystemDataType;
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 - a static method for creating an instance of OperatingSystem class from a list of visits
30
+ * @param {VisitType[]} visits - a list of visits
31
+ * @returns {OperatingSystem | undefined} an instance of OperatingSystem class or undefined
32
+ * */
33
+ static _fromVisits(visits: VisitType[]): OperatingSystem | undefined;
34
+ }