@kameleoon/javascript-sdk-core 2.10.1 → 3.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (263) 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 +55 -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 +24 -57
  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/cookieManager/cookieManager.d.ts +16 -0
  21. package/dist/cookieManager/cookieManager.js +2 -0
  22. package/dist/cookieManager/cookieManager.js.map +1 -0
  23. package/dist/cookieManager/index.d.ts +1 -0
  24. package/dist/cookieManager/index.js +2 -0
  25. package/dist/cookieManager/index.js.map +1 -0
  26. package/dist/eventSource/externalEventSource.js +1 -1
  27. package/dist/eventSource/externalEventSource.js.map +1 -1
  28. package/dist/hasher/hasher.d.ts +2 -3
  29. package/dist/hasher/hasher.js +1 -6
  30. package/dist/hasher/hasher.js.map +1 -1
  31. package/dist/hasher/types.d.ts +3 -10
  32. package/dist/hasher/types.js.map +1 -1
  33. package/dist/index.d.ts +9 -7
  34. package/dist/index.js +1 -1
  35. package/dist/index.js.map +1 -1
  36. package/dist/kameleoonClient.d.ts +75 -80
  37. package/dist/kameleoonClient.js +1 -18
  38. package/dist/kameleoonClient.js.map +1 -1
  39. package/dist/kameleoonData/applicationVersion.d.ts +26 -0
  40. package/dist/kameleoonData/applicationVersion.js +2 -0
  41. package/dist/kameleoonData/applicationVersion.js.map +1 -0
  42. package/dist/kameleoonData/browser.d.ts +16 -1
  43. package/dist/kameleoonData/browser.js +1 -17
  44. package/dist/kameleoonData/browser.js.map +1 -1
  45. package/dist/kameleoonData/constants.d.ts +4 -0
  46. package/dist/kameleoonData/constants.js +2 -0
  47. package/dist/kameleoonData/constants.js.map +1 -0
  48. package/dist/kameleoonData/conversion.d.ts +14 -1
  49. package/dist/kameleoonData/conversion.js +1 -13
  50. package/dist/kameleoonData/conversion.js.map +1 -1
  51. package/dist/kameleoonData/cookie.d.ts +33 -0
  52. package/dist/kameleoonData/cookie.js +2 -0
  53. package/dist/kameleoonData/cookie.js.map +1 -0
  54. package/dist/kameleoonData/customData.d.ts +14 -1
  55. package/dist/kameleoonData/customData.js +1 -24
  56. package/dist/kameleoonData/customData.js.map +1 -1
  57. package/dist/kameleoonData/dataManager.d.ts +39 -0
  58. package/dist/kameleoonData/dataManager.js +2 -0
  59. package/dist/kameleoonData/dataManager.js.map +1 -0
  60. package/dist/kameleoonData/dataProcessor.d.ts +26 -0
  61. package/dist/kameleoonData/dataProcessor.js +2 -0
  62. package/dist/kameleoonData/dataProcessor.js.map +1 -0
  63. package/dist/kameleoonData/device.d.ts +14 -1
  64. package/dist/kameleoonData/device.js +1 -13
  65. package/dist/kameleoonData/device.js.map +1 -1
  66. package/dist/kameleoonData/geolocation.d.ts +52 -0
  67. package/dist/kameleoonData/geolocation.js +2 -0
  68. package/dist/kameleoonData/geolocation.js.map +1 -0
  69. package/dist/kameleoonData/helpers.d.ts +1 -0
  70. package/dist/kameleoonData/helpers.js +2 -0
  71. package/dist/kameleoonData/helpers.js.map +1 -0
  72. package/dist/kameleoonData/index.d.ts +10 -3
  73. package/dist/kameleoonData/index.js +1 -1
  74. package/dist/kameleoonData/index.js.map +1 -1
  75. package/dist/kameleoonData/operatingSystem.d.ts +34 -0
  76. package/dist/kameleoonData/operatingSystem.js +2 -0
  77. package/dist/kameleoonData/operatingSystem.js.map +1 -0
  78. package/dist/kameleoonData/pageView.d.ts +20 -1
  79. package/dist/kameleoonData/pageView.js +1 -13
  80. package/dist/kameleoonData/pageView.js.map +1 -1
  81. package/dist/kameleoonData/types.d.ts +118 -9
  82. package/dist/kameleoonData/types.js +1 -14
  83. package/dist/kameleoonData/types.js.map +1 -1
  84. package/dist/kameleoonData/userAgent.d.ts +6 -1
  85. package/dist/kameleoonData/userAgent.js +1 -8
  86. package/dist/kameleoonData/userAgent.js.map +1 -1
  87. package/dist/kameleoonData/visitsData.d.ts +34 -0
  88. package/dist/{variationConfiguration/variation.js → kameleoonData/visitsData.js} +2 -7
  89. package/dist/kameleoonData/visitsData.js.map +1 -0
  90. package/dist/kameleoonError/constants.d.ts +6 -4
  91. package/dist/kameleoonError/constants.js +1 -1
  92. package/dist/kameleoonError/constants.js.map +1 -1
  93. package/dist/kameleoonError/kameleoonError.d.ts +6 -4
  94. package/dist/kameleoonError/kameleoonError.js +1 -4
  95. package/dist/kameleoonError/kameleoonError.js.map +1 -1
  96. package/dist/kameleoonError/types.d.ts +9 -3
  97. package/dist/kameleoonError/types.js +1 -1
  98. package/dist/kameleoonError/types.js.map +1 -1
  99. package/dist/kameleoonUtils.d.ts +0 -6
  100. package/dist/kameleoonUtils.js +1 -4
  101. package/dist/kameleoonUtils.js.map +1 -1
  102. package/dist/requester/constants.d.ts +5 -3
  103. package/dist/requester/constants.js +1 -1
  104. package/dist/requester/constants.js.map +1 -1
  105. package/dist/requester/index.d.ts +2 -2
  106. package/dist/requester/index.js +1 -1
  107. package/dist/requester/index.js.map +1 -1
  108. package/dist/requester/requester.d.ts +8 -7
  109. package/dist/requester/requester.js +1 -1
  110. package/dist/requester/requester.js.map +1 -1
  111. package/dist/requester/types.d.ts +79 -12
  112. package/dist/requester/types.js +1 -1
  113. package/dist/requester/types.js.map +1 -1
  114. package/dist/storage/constants.d.ts +3 -1
  115. package/dist/storage/constants.js +1 -4
  116. package/dist/storage/constants.js.map +1 -1
  117. package/dist/storage/index.d.ts +1 -1
  118. package/dist/storage/index.js +1 -1
  119. package/dist/storage/index.js.map +1 -1
  120. package/dist/storage/types.d.ts +15 -9
  121. package/dist/storage/types.js.map +1 -1
  122. package/dist/targeting/conditions/applicationVersion.d.ts +10 -0
  123. package/dist/targeting/conditions/applicationVersion.js +2 -0
  124. package/dist/targeting/conditions/applicationVersion.js.map +1 -0
  125. package/dist/targeting/conditions/{browserCondition.d.ts → browser.d.ts} +1 -1
  126. package/dist/targeting/conditions/browser.js +2 -0
  127. package/dist/targeting/conditions/browser.js.map +1 -0
  128. package/dist/targeting/conditions/conditionFactory.js +1 -1
  129. package/dist/targeting/conditions/conditionFactory.js.map +1 -1
  130. package/dist/targeting/conditions/{conversionCondition.d.ts → conversion.d.ts} +1 -2
  131. package/dist/targeting/conditions/conversion.js +2 -0
  132. package/dist/targeting/conditions/conversion.js.map +1 -0
  133. package/dist/targeting/conditions/cookie.d.ts +15 -0
  134. package/dist/targeting/conditions/cookie.js +2 -0
  135. package/dist/targeting/conditions/cookie.js.map +1 -0
  136. package/dist/targeting/conditions/{customDataCondition.d.ts → customData.d.ts} +1 -1
  137. package/dist/targeting/conditions/customData.js +2 -0
  138. package/dist/targeting/conditions/customData.js.map +1 -0
  139. package/dist/targeting/conditions/{deviceCondition.d.ts → device.d.ts} +1 -1
  140. package/dist/targeting/conditions/{targetExperimentCondition.js → device.js} +2 -2
  141. package/dist/targeting/conditions/device.js.map +1 -0
  142. package/dist/targeting/conditions/{exclusiveExperimentCondition.d.ts → exclusiveCampaign.d.ts} +2 -2
  143. package/dist/targeting/conditions/exclusiveCampaign.js +2 -0
  144. package/dist/targeting/conditions/exclusiveCampaign.js.map +1 -0
  145. package/dist/targeting/conditions/firstVisit.d.ts +12 -0
  146. package/dist/targeting/conditions/firstVisit.js +2 -0
  147. package/dist/targeting/conditions/firstVisit.js.map +1 -0
  148. package/dist/targeting/conditions/geolocation.d.ts +11 -0
  149. package/dist/targeting/conditions/geolocation.js +2 -0
  150. package/dist/targeting/conditions/geolocation.js.map +1 -0
  151. package/dist/targeting/conditions/index.d.ts +22 -10
  152. package/dist/targeting/conditions/index.js +1 -1
  153. package/dist/targeting/conditions/index.js.map +1 -1
  154. package/dist/targeting/conditions/lastVisit.d.ts +12 -0
  155. package/dist/targeting/conditions/lastVisit.js +2 -0
  156. package/dist/targeting/conditions/lastVisit.js.map +1 -0
  157. package/dist/targeting/conditions/newVisitor.d.ts +9 -0
  158. package/dist/targeting/conditions/newVisitor.js +2 -0
  159. package/dist/targeting/conditions/newVisitor.js.map +1 -0
  160. package/dist/targeting/conditions/operatingSystem.d.ts +9 -0
  161. package/dist/targeting/conditions/{deviceCondition.js → operatingSystem.js} +2 -2
  162. package/dist/targeting/conditions/operatingSystem.js.map +1 -0
  163. package/dist/targeting/conditions/{pageTitleCondition.d.ts → pageTitle.d.ts} +1 -1
  164. package/dist/targeting/conditions/pageTitle.js +2 -0
  165. package/dist/targeting/conditions/pageTitle.js.map +1 -0
  166. package/dist/targeting/conditions/{pageUrlCondition.d.ts → pageUrl.d.ts} +1 -1
  167. package/dist/targeting/conditions/pageUrl.js +2 -0
  168. package/dist/targeting/conditions/pageUrl.js.map +1 -0
  169. package/dist/targeting/conditions/previousPage.d.ts +12 -0
  170. package/dist/targeting/conditions/previousPage.js +2 -0
  171. package/dist/targeting/conditions/previousPage.js.map +1 -0
  172. package/dist/targeting/conditions/sameDayVisits.d.ts +11 -0
  173. package/dist/targeting/conditions/sameDayVisits.js +2 -0
  174. package/dist/targeting/conditions/sameDayVisits.js.map +1 -0
  175. package/dist/targeting/conditions/{sdkLanguageCondition.d.ts → sdkLanguage.d.ts} +1 -4
  176. package/dist/targeting/conditions/sdkLanguage.js +2 -0
  177. package/dist/targeting/conditions/sdkLanguage.js.map +1 -0
  178. package/dist/targeting/conditions/segment.d.ts +9 -0
  179. package/dist/targeting/conditions/segment.js +2 -0
  180. package/dist/targeting/conditions/segment.js.map +1 -0
  181. package/dist/targeting/conditions/targetFeatureFlag.d.ts +11 -0
  182. package/dist/targeting/conditions/targetFeatureFlag.js +2 -0
  183. package/dist/targeting/conditions/targetFeatureFlag.js.map +1 -0
  184. package/dist/targeting/conditions/types.d.ts +20 -13
  185. package/dist/targeting/conditions/types.js.map +1 -1
  186. package/dist/targeting/conditions/visitedPages.d.ts +11 -0
  187. package/dist/targeting/conditions/visitedPages.js +2 -0
  188. package/dist/targeting/conditions/visitedPages.js.map +1 -0
  189. package/dist/targeting/conditions/{visitorCodeCondition.d.ts → visitorCode.d.ts} +1 -1
  190. package/dist/targeting/conditions/visitorCode.js +2 -0
  191. package/dist/targeting/conditions/visitorCode.js.map +1 -0
  192. package/dist/targeting/conditions/visits.d.ts +11 -0
  193. package/dist/targeting/conditions/visits.js +2 -0
  194. package/dist/targeting/conditions/visits.js.map +1 -0
  195. package/dist/targeting/index.d.ts +3 -3
  196. package/dist/targeting/index.js +1 -1
  197. package/dist/targeting/index.js.map +1 -1
  198. package/dist/targeting/{targetingNode.d.ts → node.d.ts} +7 -7
  199. package/dist/targeting/node.js +2 -0
  200. package/dist/targeting/node.js.map +1 -0
  201. package/dist/targeting/{targetingTree.d.ts → tree.d.ts} +6 -3
  202. package/dist/targeting/tree.js +2 -0
  203. package/dist/targeting/tree.js.map +1 -0
  204. package/dist/targeting/types.d.ts +30 -8
  205. package/dist/targeting/types.js +1 -1
  206. package/dist/targeting/types.js.map +1 -1
  207. package/dist/types.d.ts +61 -18
  208. package/dist/types.js +1 -41
  209. package/dist/types.js.map +1 -1
  210. package/dist/utilities/index.d.ts +1 -0
  211. package/dist/utilities/index.js +1 -1
  212. package/dist/utilities/index.js.map +1 -1
  213. package/dist/utilities/types.d.ts +71 -6
  214. package/dist/utilities/types.js +1 -1
  215. package/dist/utilities/types.js.map +1 -1
  216. package/dist/utilities/utilities.d.ts +30 -11
  217. package/dist/utilities/utilities.js +1 -1
  218. package/dist/utilities/utilities.js.map +1 -1
  219. package/dist/variationConfiguration/index.d.ts +1 -1
  220. package/dist/variationConfiguration/index.js +1 -1
  221. package/dist/variationConfiguration/index.js.map +1 -1
  222. package/dist/variationConfiguration/types.d.ts +6 -12
  223. package/dist/variationConfiguration/types.js.map +1 -1
  224. package/dist/variationConfiguration/variationConfiguration.d.ts +13 -21
  225. package/dist/variationConfiguration/variationConfiguration.js +1 -65
  226. package/dist/variationConfiguration/variationConfiguration.js.map +1 -1
  227. package/package.json +1 -1
  228. package/dist/campaignConfiguration/campaignConfiguration.d.ts +0 -71
  229. package/dist/campaignConfiguration/campaignConfiguration.js +0 -24
  230. package/dist/campaignConfiguration/campaignConfiguration.js.map +0 -1
  231. package/dist/campaignConfiguration/constants.d.ts +0 -6
  232. package/dist/campaignConfiguration/constants.js +0 -4
  233. package/dist/campaignConfiguration/constants.js.map +0 -1
  234. package/dist/campaignConfiguration/index.d.ts +0 -3
  235. package/dist/campaignConfiguration/index.js +0 -2
  236. package/dist/campaignConfiguration/index.js.map +0 -1
  237. package/dist/campaignConfiguration/types.js +0 -2
  238. package/dist/campaignConfiguration/types.js.map +0 -1
  239. package/dist/targeting/conditions/browserCondition.js +0 -2
  240. package/dist/targeting/conditions/browserCondition.js.map +0 -1
  241. package/dist/targeting/conditions/conversionCondition.js +0 -4
  242. package/dist/targeting/conditions/conversionCondition.js.map +0 -1
  243. package/dist/targeting/conditions/customDataCondition.js +0 -8
  244. package/dist/targeting/conditions/customDataCondition.js.map +0 -1
  245. package/dist/targeting/conditions/deviceCondition.js.map +0 -1
  246. package/dist/targeting/conditions/exclusiveExperimentCondition.js +0 -2
  247. package/dist/targeting/conditions/exclusiveExperimentCondition.js.map +0 -1
  248. package/dist/targeting/conditions/pageTitleCondition.js +0 -2
  249. package/dist/targeting/conditions/pageTitleCondition.js.map +0 -1
  250. package/dist/targeting/conditions/pageUrlCondition.js +0 -2
  251. package/dist/targeting/conditions/pageUrlCondition.js.map +0 -1
  252. package/dist/targeting/conditions/sdkLanguageCondition.js +0 -2
  253. package/dist/targeting/conditions/sdkLanguageCondition.js.map +0 -1
  254. package/dist/targeting/conditions/targetExperimentCondition.d.ts +0 -12
  255. package/dist/targeting/conditions/targetExperimentCondition.js.map +0 -1
  256. package/dist/targeting/conditions/visitorCodeCondition.js +0 -2
  257. package/dist/targeting/conditions/visitorCodeCondition.js.map +0 -1
  258. package/dist/targeting/targetingNode.js +0 -2
  259. package/dist/targeting/targetingNode.js.map +0 -1
  260. package/dist/targeting/targetingTree.js +0 -35
  261. package/dist/targeting/targetingTree.js.map +0 -1
  262. package/dist/variationConfiguration/variation.d.ts +0 -13
  263. package/dist/variationConfiguration/variation.js.map +0 -1
@@ -0,0 +1,2 @@
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.Segment=void 0;var _tsRes=require("ts-res"),_tree=require("../tree");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 Segment=function(){function a(b){var c=b.segmentId;_classCallCheck(this,a),_defineProperty(this,"segmentId",void 0),this.segmentId=c}return _createClass(a,[{key:"evaluate",value:function evaluate(a){var b=a.segments,c=a.trees;if(!this.segmentId)return(0,_tsRes.Ok)(!1);var d=null===b||void 0===b?void 0:b.get(this.segmentId.toString());if(!d)return(0,_tsRes.Ok)(!1);var e=null===c||void 0===c?void 0:c.get(this.segmentId.toString());return e?e.evaluate(a):new _tree.Tree(d).evaluate(a)}}]),a}();exports.Segment=Segment;
2
+ //# sourceMappingURL=segment.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"segment.js","names":["Segment","a","b","segmentId","_classCallCheck","_defineProperty","_createClass","key","value","evaluate","evaluationData","segments","trees","Ok","segment","get","toString","tree","Tree","exports"],"sources":["../../../src/targeting/conditions/segment.ts"],"sourcesContent":["import { Ok, Result } from 'ts-res';\nimport { KameleoonError } from 'src/kameleoonError';\nimport { EvaluationDataType } from 'src/targeting/types';\nimport { ConditionDataType, ICondition } from './types';\nimport { Tree } from 'src/targeting/tree';\n\nexport class Segment implements ICondition {\n segmentId?: number | null;\n\n constructor({ segmentId }: ConditionDataType) {\n this.segmentId = segmentId;\n }\n\n public evaluate(\n evaluationData: EvaluationDataType,\n ): Result<boolean, KameleoonError> {\n const { segments, trees } = evaluationData;\n\n if (!this.segmentId) {\n return Ok(false);\n }\n\n const segment = segments?.get(this.segmentId.toString());\n\n if (!segment) {\n return Ok(false);\n }\n\n const tree = trees?.get(this.segmentId.toString());\n\n if (tree) {\n return tree.evaluate(evaluationData);\n }\n\n return new Tree(segment).evaluate(evaluationData);\n }\n}\n"],"mappings":"63CAMa,CAAAA,OAAO,YAGlB,SAAAC,EAAAC,CAAA,CAA8C,IAAhC,CAAAC,CAAS,CAAAD,CAAA,CAATC,SAAS,CAAAC,eAAA,MAAAH,CAAA,EAAAI,eAAA,0BACrB,IAAI,CAACF,SAAS,CAAGA,CACnB,CAAC,OAAAG,YAAA,CAAAL,CAAA,GAAAM,GAAA,YAAAC,KAAA,CAED,SAAAC,SACEC,CAAkC,CACD,CACjC,GAAQ,CAAAC,CAAQ,CAAYD,CAAc,CAAlCC,QAAQ,CAAEC,CAAK,CAAKF,CAAc,CAAxBE,KAAK,CAEvB,GAAI,CAAC,IAAI,CAACT,SAAS,CACjB,MAAO,GAAAU,SAAE,KAAO,CAGlB,GAAM,CAAAC,CAAO,QAAGH,CAAQ,WAARA,CAAQ,QAARA,CAAQ,CAAEI,GAAG,CAAC,IAAI,CAACZ,SAAS,CAACa,QAAQ,EAAE,CAAC,CAExD,GAAI,CAACF,CAAO,CACV,MAAO,GAAAD,SAAE,KAAO,CAGlB,GAAM,CAAAI,CAAI,QAAGL,CAAK,WAALA,CAAK,QAALA,CAAK,CAAEG,GAAG,CAAC,IAAI,CAACZ,SAAS,CAACa,QAAQ,EAAE,CAAC,CAAC,MAE/C,CAAAC,CAAI,CACCA,CAAI,CAACR,QAAQ,CAACC,CAAc,CAAC,CAG/B,GAAI,CAAAQ,UAAI,CAACJ,CAAO,CAAC,CAACL,QAAQ,CAACC,CAAc,CAClD,CAAC,IAAAT,CAAA,IAAAkB,OAAA,CAAAnB,OAAA,CAAAA,OAAA"}
@@ -0,0 +1,11 @@
1
+ import { Result } from 'ts-res';
2
+ import { KameleoonError } from '../../kameleoonError';
3
+ import { EvaluationDataType } from '../../targeting/types';
4
+ import { ConditionDataType, ICondition } from './types';
5
+ export declare class TargetFeatureFlag implements ICondition {
6
+ private featureId?;
7
+ private ruleId?;
8
+ private variationKey?;
9
+ constructor({ featureFlagId, variationKey, ruleId }: ConditionDataType);
10
+ evaluate({ variationData, ruleMap, }: EvaluationDataType): Result<boolean, KameleoonError>;
11
+ }
@@ -0,0 +1,2 @@
1
+ "use strict";var _tsRes=require("ts-res");Object.defineProperty(exports,"__esModule",{value:!0}),exports.TargetFeatureFlag=void 0;function _typeof(a){"@babel/helpers - typeof";return _typeof="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(a){return typeof a}:function(a){return a&&"function"==typeof Symbol&&a.constructor===Symbol&&a!==Symbol.prototype?"symbol":typeof a},_typeof(a)}function _slicedToArray(a,b){return _arrayWithHoles(a)||_iterableToArrayLimit(a,b)||_unsupportedIterableToArray(a,b)||_nonIterableRest()}function _nonIterableRest(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}function _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 _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 TargetFeatureFlag=function(){function a(b){var c=b.featureFlagId,d=b.variationKey,e=b.ruleId;_classCallCheck(this,a),_defineProperty(this,"featureId",void 0),_defineProperty(this,"ruleId",void 0),_defineProperty(this,"variationKey",void 0),this.featureId=c,this.ruleId=e,this.variationKey=d}return _createClass(a,[{key:"evaluate",value:function evaluate(a){var b=a.variationData,c=a.ruleMap;if(!this.featureId||!c)return(0,_tsRes.Ok)(!1);if(this.featureId&&!this.ruleId&&!this.variationKey){var d,e=_createForOfIteratorHelper(c);try{for(e.s();!(d=e.n()).done;){var f=_slicedToArray(d.value,2),g=f[0],h=f[1],i=h.featureId,j=h.experimentId;if(i===this.featureId&&"number"==typeof b[j])return(0,_tsRes.Ok)(!0)}}catch(a){e.e(a)}finally{e.f()}return(0,_tsRes.Ok)(!1)}if(this.featureId&&this.ruleId){var k=c.get(this.ruleId);if(!k)return(0,_tsRes.Ok)(!1);var l=k.experimentId,m=k.variations;if(this.variationKey){var n=m.get(this.variationKey);return(0,_tsRes.Ok)(!!n&&b[l]===n)}return(0,_tsRes.Ok)(!!b[k.experimentId])}if(this.featureId&&!this.ruleId&&this.variationKey){var o,p=_createForOfIteratorHelper(c);try{for(p.s();!(o=p.n()).done;){var q=_slicedToArray(o.value,2),r=q[0],s=q[1],t=s.featureId,u=s.experimentId,v=s.variations;if(t===this.featureId&&v.has(this.variationKey)){var w=v.get(this.variationKey);return(0,_tsRes.Ok)(!!w&&b[u]===w)}}}catch(a){p.e(a)}finally{p.f()}}return(0,_tsRes.Ok)(!1)}}]),a}();exports.TargetFeatureFlag=TargetFeatureFlag;
2
+ //# sourceMappingURL=targetFeatureFlag.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"targetFeatureFlag.js","names":["_tsRes","require","Object","defineProperty","exports","value","TargetFeatureFlag","_typeof","a","Symbol","iterator","constructor","prototype","_slicedToArray","b","_arrayWithHoles","_iterableToArrayLimit","_unsupportedIterableToArray","_nonIterableRest","TypeError","c","d","e","f","g","h","i","j","call","next","done","push","length","return","Array","isArray","_createForOfIteratorHelper","s","n","_arrayLikeToArray","toString","slice","name","from","test","_classCallCheck","_defineProperties","enumerable","configurable","writable","_toPropertyKey","key","_createClass","_defineProperty","_toPrimitive","toPrimitive","String","Number","featureFlagId","variationKey","ruleId","featureId","evaluate","variationData","ruleMap","Ok","_","rule","experimentId","get","variations","variationId","o","p","q","has"],"sources":["../../../src/targeting/conditions/targetFeatureFlag.ts"],"sourcesContent":["import { Ok, Result } from 'ts-res';\nimport { KameleoonError } from 'src/kameleoonError';\nimport { EvaluationDataType } from 'src/targeting/types';\nimport { ConditionDataType, ICondition } from './types';\n\nexport class TargetFeatureFlag implements ICondition {\n private featureId?: number | null;\n private ruleId?: number | null;\n private variationKey?: string | null;\n\n constructor({ featureFlagId, variationKey, ruleId }: ConditionDataType) {\n this.featureId = featureFlagId;\n this.ruleId = ruleId;\n this.variationKey = variationKey;\n }\n\n public evaluate({\n variationData,\n ruleMap,\n }: EvaluationDataType): Result<boolean, KameleoonError> {\n if (!this.featureId || !ruleMap) {\n return Ok(false);\n }\n\n // -- Visitor took part in any experiment of the feature flag\n // with any variation\n if (this.featureId && !this.ruleId && !this.variationKey) {\n for (const [_, rule] of ruleMap) {\n const { featureId, experimentId } = rule;\n\n if (\n featureId === this.featureId &&\n typeof variationData[experimentId] === 'number'\n ) {\n return Ok(true);\n }\n }\n\n return Ok(false);\n }\n\n // -- Visitor took part in certain experiment of the feature flag\n // with any/exact variation\n if (this.featureId && this.ruleId) {\n const rule = ruleMap.get(this.ruleId);\n\n if (!rule) {\n return Ok(false);\n }\n\n const { experimentId, variations } = rule;\n\n if (this.variationKey) {\n const variationId = variations.get(this.variationKey);\n\n return Ok(\n Boolean(variationId) && variationData[experimentId] === variationId,\n );\n }\n\n return Ok(Boolean(variationData[rule.experimentId]));\n }\n\n // -- Visitor took part in any experiment of the feature flag\n // with certain variation\n if (this.featureId && !this.ruleId && this.variationKey) {\n for (const [_, rule] of ruleMap) {\n const { featureId, experimentId, variations } = rule;\n\n if (featureId === this.featureId && variations.has(this.variationKey)) {\n const variationId = variations.get(this.variationKey);\n\n return Ok(\n Boolean(variationId) && variationData[experimentId] === variationId,\n );\n }\n }\n }\n\n return Ok(false);\n }\n}\n"],"mappings":"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"}
@@ -2,38 +2,45 @@ import { Result } from 'ts-res';
2
2
  import { SdkLanguageType } from '../../constants';
3
3
  import { BrowserType, DeviceType } from '../../kameleoonData';
4
4
  import { KameleoonError } from '../../kameleoonError';
5
- import { EvaluationDataType, MatchType, MatchTypeCustomData, MatchTypeTest, MatchTypeVariation, TargetingType, VersionMatchType } from '../../targeting/types';
6
- import { BrowserCondition } from './browserCondition';
7
- import { ConversionCondition } from './conversionCondition';
8
- import { CustomDataCondition } from './customDataCondition';
9
- import { DeviceCondition } from './deviceCondition';
10
- import { ExclusiveExperimentCondition } from './exclusiveExperimentCondition';
11
- import { PageTitleCondition } from './pageTitleCondition';
12
- import { PageUrlCondition } from './pageUrlCondition';
13
- import { SdkLanguageCondition } from './sdkLanguageCondition';
14
- import { TargetExperimentCondition } from './targetExperimentCondition';
15
- import { VisitorCodeCondition } from './visitorCodeCondition';
5
+ import { EvaluationDataType, MatchType, MatchTypeTest, MatchTypeVariation, NameMatchType, TargetingType, ValueMatchType, VersionMatchType, VisitorType } from '../../targeting/types';
6
+ import { OperatingSystemType } from '../../kameleoonData/types';
7
+ import { TimeUnit } from '../../utilities';
16
8
  export interface ICondition {
17
9
  evaluate: (data: EvaluationDataType) => Result<boolean, KameleoonError>;
18
10
  }
19
- export type ConditionType = CustomDataCondition | ExclusiveExperimentCondition | TargetExperimentCondition | DeviceCondition | BrowserCondition | PageUrlCondition | PageTitleCondition | ConversionCondition | VisitorCodeCondition | SdkLanguageCondition;
11
+ export type ConditionType = ICondition;
20
12
  export type ConditionDataType = {
21
13
  id: number;
22
14
  targetingType: TargetingType;
23
15
  isInclude: boolean | null;
24
16
  weight: number;
25
17
  customDataIndex?: string | null;
18
+ pageCount?: number | null;
26
19
  value?: string | null;
27
- valueMatchType?: MatchTypeCustomData | null;
20
+ valueMatchType?: ValueMatchType | null;
28
21
  experiment?: number | null;
29
22
  variation?: number | null;
23
+ visitCount?: number | null;
24
+ variationKey?: string | null;
25
+ featureFlagId?: number | null;
26
+ ruleId?: number | null;
30
27
  variationMatchType?: MatchTypeVariation | null;
31
28
  testMatchType?: MatchTypeTest | null;
32
29
  matchType?: MatchType | null;
33
30
  device?: DeviceType | null;
34
31
  browser?: BrowserType | null;
32
+ os?: OperatingSystemType | null;
33
+ name?: string | null;
34
+ nameMatchType?: NameMatchType | null;
35
+ country?: string | null;
36
+ region?: string | null;
37
+ city?: string | null;
38
+ segmentId?: number | null;
35
39
  version?: string | null;
36
40
  versionMatchType?: VersionMatchType | null;
41
+ visitorType?: VisitorType | null;
42
+ count?: number | null;
43
+ unitOfTime?: TimeUnit | null;
37
44
  title?: string | null;
38
45
  url?: string | null;
39
46
  goalId?: number | null;
@@ -1 +1 @@
1
- {"version":3,"file":"types.js","names":[],"sources":["../../../src/targeting/conditions/types.ts"],"sourcesContent":["import { Result } from 'ts-res';\nimport { SdkLanguageType } from 'src/constants';\nimport { BrowserType, DeviceType } from 'src/kameleoonData';\nimport { KameleoonError } from 'src/kameleoonError';\nimport {\n EvaluationDataType,\n MatchType,\n MatchTypeCustomData,\n MatchTypeTest,\n MatchTypeVariation,\n TargetingType,\n VersionMatchType,\n} from 'src/targeting/types';\nimport { BrowserCondition } from './browserCondition';\nimport { ConversionCondition } from './conversionCondition';\nimport { CustomDataCondition } from './customDataCondition';\nimport { DeviceCondition } from './deviceCondition';\nimport { ExclusiveExperimentCondition } from './exclusiveExperimentCondition';\nimport { PageTitleCondition } from './pageTitleCondition';\nimport { PageUrlCondition } from './pageUrlCondition';\nimport { SdkLanguageCondition } from './sdkLanguageCondition';\nimport { TargetExperimentCondition } from './targetExperimentCondition';\nimport { VisitorCodeCondition } from './visitorCodeCondition';\n\nexport interface ICondition {\n evaluate: (data: EvaluationDataType) => Result<boolean, KameleoonError>;\n}\n\nexport type ConditionType =\n | CustomDataCondition\n | ExclusiveExperimentCondition\n | TargetExperimentCondition\n | DeviceCondition\n | BrowserCondition\n | PageUrlCondition\n | PageTitleCondition\n | ConversionCondition\n | VisitorCodeCondition\n | SdkLanguageCondition;\n\nexport type ConditionDataType = {\n id: number;\n targetingType: TargetingType;\n isInclude: boolean | null;\n weight: number;\n customDataIndex?: string | null;\n value?: string | null;\n valueMatchType?: MatchTypeCustomData | null;\n experiment?: number | null;\n variation?: number | null;\n variationMatchType?: MatchTypeVariation | null;\n testMatchType?: MatchTypeTest | null;\n matchType?: MatchType | null;\n device?: DeviceType | null;\n browser?: BrowserType | null;\n version?: string | null;\n versionMatchType?: VersionMatchType | null;\n title?: string | null;\n url?: string | null;\n goalId?: number | null;\n sdkLanguage?: SdkLanguageType | null;\n visitorCode?: string | null;\n};\n"],"mappings":""}
1
+ {"version":3,"file":"types.js","names":[],"sources":["../../../src/targeting/conditions/types.ts"],"sourcesContent":["import { Result } from 'ts-res';\nimport { SdkLanguageType } from 'src/constants';\nimport { BrowserType, DeviceType } from 'src/kameleoonData';\nimport { KameleoonError } from 'src/kameleoonError';\nimport {\n EvaluationDataType,\n MatchType,\n MatchTypeTest,\n MatchTypeVariation,\n NameMatchType,\n TargetingType,\n ValueMatchType,\n VersionMatchType,\n VisitorType,\n} from 'src/targeting/types';\nimport { OperatingSystemType } from 'src/kameleoonData/types';\nimport { TimeUnit } from 'src/utilities';\n\nexport interface ICondition {\n evaluate: (data: EvaluationDataType) => Result<boolean, KameleoonError>;\n}\n\nexport type ConditionType = ICondition;\n\nexport type ConditionDataType = {\n id: number;\n targetingType: TargetingType;\n isInclude: boolean | null;\n weight: number;\n customDataIndex?: string | null;\n pageCount?: number | null;\n value?: string | null;\n valueMatchType?: ValueMatchType | null;\n experiment?: number | null;\n variation?: number | null;\n visitCount?: number | null;\n variationKey?: string | null;\n featureFlagId?: number | null;\n ruleId?: number | null;\n variationMatchType?: MatchTypeVariation | null;\n testMatchType?: MatchTypeTest | null;\n matchType?: MatchType | null;\n device?: DeviceType | null;\n browser?: BrowserType | null;\n os?: OperatingSystemType | null;\n name?: string | null;\n nameMatchType?: NameMatchType | null;\n country?: string | null;\n region?: string | null;\n city?: string | null;\n segmentId?: number | null;\n version?: string | null;\n versionMatchType?: VersionMatchType | null;\n visitorType?: VisitorType | null;\n count?: number | null;\n unitOfTime?: TimeUnit | null;\n title?: string | null;\n url?: string | null;\n goalId?: number | null;\n sdkLanguage?: SdkLanguageType | null;\n visitorCode?: string | null;\n};\n"],"mappings":""}
@@ -0,0 +1,11 @@
1
+ import { Result } from 'ts-res';
2
+ import { KameleoonError } from '../../kameleoonError';
3
+ import { EvaluationDataType } from '../../targeting/types';
4
+ import { ConditionDataType, ICondition } from './types';
5
+ export declare class VisitedPages implements ICondition {
6
+ private conditionValue?;
7
+ private matchType?;
8
+ constructor({ matchType, pageCount }: ConditionDataType);
9
+ evaluate({ targetingData, }: EvaluationDataType): Result<boolean, KameleoonError>;
10
+ private checkCondition;
11
+ }
@@ -0,0 +1,2 @@
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.VisitedPages=void 0;var _tsRes=require("ts-res"),_kameleoonData=require("../../kameleoonData"),_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 VisitedPages=function(){function a(b){var c=b.matchType,d=b.pageCount;_classCallCheck(this,a),_defineProperty(this,"conditionValue",void 0),_defineProperty(this,"matchType",void 0),this.matchType=c,this.conditionValue=d}return _createClass(a,[{key:"evaluate",value:function evaluate(a){var b=a.targetingData,c=null===b||void 0===b?void 0:b[_kameleoonData.KameleoonData.PageView];if(!c)return(0,_tsRes.Ok)(!1);var d=0;return Object.values(c).forEach(function(a){d+=a.timestamps.length}),(0,_tsRes.Ok)(this.checkCondition(d))}},{key:"checkCondition",value:function checkCondition(a){if(!this.matchType||"number"!=typeof this.conditionValue)return!1;switch(this.matchType){case _types.MatchType.EQUAL:return a===this.conditionValue;case _types.MatchType.GREATER:return a>this.conditionValue;case _types.MatchType.LOWER:return a<this.conditionValue;default:return!1;}}}]),a}();exports.VisitedPages=VisitedPages;
2
+ //# sourceMappingURL=visitedPages.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"visitedPages.js","names":["VisitedPages","a","b","matchType","pageCount","_classCallCheck","_defineProperty","conditionValue","_createClass","key","value","evaluate","targetingData","pageViewsData","KameleoonData","PageView","Ok","pagesAmount","Object","values","forEach","pageView","timestamps","length","checkCondition","MatchType","EQUAL","GREATER","LOWER","exports"],"sources":["../../../src/targeting/conditions/visitedPages.ts"],"sourcesContent":["import { Ok, Result } from 'ts-res';\nimport { KameleoonData, PageViewDataType } from 'src/kameleoonData';\nimport { KameleoonError } from 'src/kameleoonError';\nimport { EvaluationDataType, MatchType } from 'src/targeting/types';\nimport { ConditionDataType, ICondition } from './types';\n\nexport class VisitedPages implements ICondition {\n private conditionValue?: number | null;\n private matchType?: MatchType | null;\n\n constructor({ matchType, pageCount }: ConditionDataType) {\n this.matchType = matchType;\n this.conditionValue = pageCount;\n }\n\n public evaluate({\n targetingData,\n }: EvaluationDataType): Result<boolean, KameleoonError> {\n const pageViewsData = targetingData?.[KameleoonData.PageView];\n\n if (!pageViewsData) {\n return Ok(false);\n }\n\n let pagesAmount = 0;\n\n Object.values(pageViewsData).forEach((pageView: PageViewDataType) => {\n pagesAmount += pageView.timestamps.length;\n });\n\n return Ok(this.checkCondition(pagesAmount));\n }\n\n private checkCondition(pagesAmount: number): boolean {\n if (!this.matchType || typeof this.conditionValue !== 'number') {\n return false;\n }\n\n switch (this.matchType) {\n case MatchType.EQUAL:\n return pagesAmount === this.conditionValue;\n case MatchType.GREATER:\n return pagesAmount > this.conditionValue;\n case MatchType.LOWER:\n return pagesAmount < this.conditionValue;\n default:\n return false;\n }\n }\n}\n"],"mappings":"k7CAMa,CAAAA,YAAY,YAIvB,SAAAC,EAAAC,CAAA,CAAyD,IAA3C,CAAAC,CAAS,CAAAD,CAAA,CAATC,SAAS,CAAEC,CAAS,CAAAF,CAAA,CAATE,SAAS,CAAAC,eAAA,MAAAJ,CAAA,EAAAK,eAAA,+BAAAA,eAAA,0BAChC,IAAI,CAACH,SAAS,CAAGA,CAAS,CAC1B,IAAI,CAACI,cAAc,CAAGH,CACxB,CAAC,OAAAI,YAAA,CAAAP,CAAA,GAAAQ,GAAA,YAAAC,KAAA,CAED,SAAAC,SAAAV,CAAA,CAEwD,IADtD,CAAAW,CAAa,CAAAX,CAAA,CAAbW,aAAa,CAEPC,CAAa,QAAGD,CAAa,WAAbA,CAAa,QAAbA,CAAa,CAAGE,4BAAa,CAACC,QAAQ,CAAC,CAE7D,GAAI,CAACF,CAAa,CAChB,MAAO,GAAAG,SAAE,KAAO,CAGlB,GAAI,CAAAC,CAAW,CAAG,CAAC,CAMnB,MAJA,CAAAC,MAAM,CAACC,MAAM,CAACN,CAAa,CAAC,CAACO,OAAO,CAAC,SAACC,CAA0B,CAAK,CACnEJ,CAAW,EAAII,CAAQ,CAACC,UAAU,CAACC,MACrC,CAAC,CAAC,CAEK,GAAAP,SAAE,EAAC,IAAI,CAACQ,cAAc,CAACP,CAAW,CAAC,CAC5C,CAAC,GAAAR,GAAA,kBAAAC,KAAA,CAED,SAAAc,eAAuBP,CAAmB,CAAW,CACnD,GAAI,CAAC,IAAI,CAACd,SAAS,EAAmC,QAAQ,EAAvC,MAAO,KAAI,CAACI,cAA2B,CAC5D,SAGF,OAAQ,IAAI,CAACJ,SAAS,EACpB,IAAK,CAAAsB,gBAAS,CAACC,KAAK,CAClB,MAAO,CAAAT,CAAW,GAAK,IAAI,CAACV,cAAc,CAC5C,IAAK,CAAAkB,gBAAS,CAACE,OAAO,CACpB,MAAO,CAAAV,CAAW,CAAG,IAAI,CAACV,cAAc,CAC1C,IAAK,CAAAkB,gBAAS,CAACG,KAAK,CAClB,MAAO,CAAAX,CAAW,CAAG,IAAI,CAACV,cAAc,CAC1C,QACE,SAAa,CAEnB,CAAC,IAAAN,CAAA,IAAA4B,OAAA,CAAA7B,YAAA,CAAAA,YAAA"}
@@ -2,7 +2,7 @@ import { Result } from 'ts-res';
2
2
  import { KameleoonError } from '../../kameleoonError';
3
3
  import { EvaluationDataType } from '../../targeting/types';
4
4
  import { ConditionDataType, ICondition } from './types';
5
- export declare class VisitorCodeCondition implements ICondition {
5
+ export declare class VisitorCode implements ICondition {
6
6
  private matchType?;
7
7
  private conditionValue?;
8
8
  constructor({ visitorCode, matchType }: ConditionDataType);
@@ -0,0 +1,2 @@
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.VisitorCode=void 0;var _tsRes=require("ts-res"),_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)}var VisitorCode=function(){function a(b){var c=b.visitorCode,d=b.matchType;_classCallCheck(this,a),_defineProperty(this,"matchType",void 0),_defineProperty(this,"conditionValue",void 0),this.matchType=d,this.conditionValue=c}return _createClass(a,[{key:"evaluate",value:function evaluate(a){var b=a.visitorCode;return(0,_tsRes.Ok)(this.checkCondition(b))}},{key:"checkCondition",value:function checkCondition(a){if(!this.matchType||!this.conditionValue)return!1;switch(this.matchType){case _types.MatchType.CONTAINS:return a.includes(this.conditionValue);case _types.MatchType.EXACT:return a===this.conditionValue;case _types.MatchType.REGULAR_EXPRESSION:return _utilities.Utilities.parseRegExp(this.conditionValue).test(a);default:return!1;}}}]),a}();exports.VisitorCode=VisitorCode;
2
+ //# sourceMappingURL=visitorCode.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"visitorCode.js","names":["VisitorCode","a","b","visitorCode","matchType","_classCallCheck","_defineProperty","conditionValue","_createClass","key","value","evaluate","Ok","checkCondition","MatchType","CONTAINS","includes","EXACT","REGULAR_EXPRESSION","Utilities","parseRegExp","test","exports"],"sources":["../../../src/targeting/conditions/visitorCode.ts"],"sourcesContent":["import { Ok, Result } from 'ts-res';\nimport { KameleoonError } from 'src/kameleoonError';\nimport { Utilities } from 'src/utilities';\nimport { EvaluationDataType, MatchType } from 'src/targeting/types';\nimport { ConditionDataType, ICondition } from './types';\n\nexport class VisitorCode implements ICondition {\n private matchType?: MatchType | null;\n private conditionValue?: string | null;\n\n constructor({ visitorCode, matchType }: ConditionDataType) {\n this.matchType = matchType;\n this.conditionValue = visitorCode;\n }\n\n public evaluate({\n visitorCode,\n }: EvaluationDataType): Result<boolean, KameleoonError> {\n return Ok(this.checkCondition(visitorCode));\n }\n\n private checkCondition(visitorCode: string): boolean {\n if (!this.matchType || !this.conditionValue) {\n return false;\n }\n\n switch (this.matchType) {\n case MatchType.CONTAINS:\n return visitorCode.includes(this.conditionValue);\n case MatchType.EXACT:\n return visitorCode === this.conditionValue;\n case MatchType.REGULAR_EXPRESSION:\n return Utilities.parseRegExp(this.conditionValue).test(visitorCode);\n default:\n return false;\n }\n }\n}\n"],"mappings":"y6CAMa,CAAAA,WAAW,YAItB,SAAAC,EAAAC,CAAA,CAA2D,IAA7C,CAAAC,CAAW,CAAAD,CAAA,CAAXC,WAAW,CAAEC,CAAS,CAAAF,CAAA,CAATE,SAAS,CAAAC,eAAA,MAAAJ,CAAA,EAAAK,eAAA,0BAAAA,eAAA,+BAClC,IAAI,CAACF,SAAS,CAAGA,CAAS,CAC1B,IAAI,CAACG,cAAc,CAAGJ,CACxB,CAAC,OAAAK,YAAA,CAAAP,CAAA,GAAAQ,GAAA,YAAAC,KAAA,CAED,SAAAC,SAAAV,CAAA,CAEwD,IADtD,CAAAE,CAAW,CAAAF,CAAA,CAAXE,WAAW,CAEX,MAAO,GAAAS,SAAE,EAAC,IAAI,CAACC,cAAc,CAACV,CAAW,CAAC,CAC5C,CAAC,GAAAM,GAAA,kBAAAC,KAAA,CAED,SAAAG,eAAuBV,CAAmB,CAAW,CACnD,GAAI,CAAC,IAAI,CAACC,SAAS,EAAI,CAAC,IAAI,CAACG,cAAc,CACzC,SAGF,OAAQ,IAAI,CAACH,SAAS,EACpB,IAAK,CAAAU,gBAAS,CAACC,QAAQ,CACrB,MAAO,CAAAZ,CAAW,CAACa,QAAQ,CAAC,IAAI,CAACT,cAAc,CAAC,CAClD,IAAK,CAAAO,gBAAS,CAACG,KAAK,CAClB,MAAO,CAAAd,CAAW,GAAK,IAAI,CAACI,cAAc,CAC5C,IAAK,CAAAO,gBAAS,CAACI,kBAAkB,CAC/B,MAAO,CAAAC,oBAAS,CAACC,WAAW,CAAC,IAAI,CAACb,cAAc,CAAC,CAACc,IAAI,CAAClB,CAAW,CAAC,CACrE,QACE,SAAa,CAEnB,CAAC,IAAAF,CAAA,IAAAqB,OAAA,CAAAtB,WAAA,CAAAA,WAAA"}
@@ -0,0 +1,11 @@
1
+ import { Result } from 'ts-res';
2
+ import { KameleoonError } from '../../kameleoonError';
3
+ import { EvaluationDataType } from '../../targeting/types';
4
+ import { ConditionDataType, ICondition } from './types';
5
+ export declare class Visits implements ICondition {
6
+ private matchType?;
7
+ private conditionValue?;
8
+ constructor({ matchType, visitCount }: ConditionDataType);
9
+ evaluate({ targetingData, }: EvaluationDataType): Result<boolean, KameleoonError>;
10
+ private checkCondition;
11
+ }
@@ -0,0 +1,2 @@
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.Visits=void 0;var _tsRes=require("ts-res"),_kameleoonData=require("../../kameleoonData"),_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 Visits=function(){function a(b){var c=b.matchType,d=b.visitCount;_classCallCheck(this,a),_defineProperty(this,"matchType",void 0),_defineProperty(this,"conditionValue",void 0),this.matchType=c,this.conditionValue=d}return _createClass(a,[{key:"evaluate",value:function evaluate(a){var b=a.targetingData,c=null===b||void 0===b?void 0:b[_kameleoonData.KameleoonData.VisitsData];if(!c)return(0,_tsRes.Ok)(!1);var d=0,e=c.previousVisits,f=c.currentVisit;return d+=e.length,f&&d++,(0,_tsRes.Ok)(this.checkCondition(d))}},{key:"checkCondition",value:function checkCondition(a){if(!this.matchType||"number"!=typeof this.conditionValue)return!1;switch(this.matchType){case _types.MatchType.EQUAL:return a===this.conditionValue;case _types.MatchType.GREATER:return a>this.conditionValue;case _types.MatchType.LOWER:return a<this.conditionValue;default:return!1;}}}]),a}();exports.Visits=Visits;
2
+ //# sourceMappingURL=visits.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"visits.js","names":["Visits","a","b","matchType","visitCount","_classCallCheck","_defineProperty","conditionValue","_createClass","key","value","evaluate","targetingData","visitsData","KameleoonData","VisitsData","Ok","visits","previousVisits","currentVisit","length","checkCondition","visitsAmount","MatchType","EQUAL","GREATER","LOWER","exports"],"sources":["../../../src/targeting/conditions/visits.ts"],"sourcesContent":["import { Ok, Result } from 'ts-res';\nimport { KameleoonData } from 'src/kameleoonData';\nimport { KameleoonError } from 'src/kameleoonError';\nimport { EvaluationDataType, MatchType } from 'src/targeting/types';\nimport { ConditionDataType, ICondition } from './types';\n\nexport class Visits implements ICondition {\n private matchType?: MatchType | null;\n private conditionValue?: number | null;\n\n constructor({ matchType, visitCount }: ConditionDataType) {\n this.matchType = matchType;\n this.conditionValue = visitCount;\n }\n\n public evaluate({\n targetingData,\n }: EvaluationDataType): Result<boolean, KameleoonError> {\n const visitsData = targetingData?.[KameleoonData.VisitsData];\n\n if (!visitsData) {\n return Ok(false);\n }\n\n let visits = 0;\n\n const { previousVisits, currentVisit } = visitsData;\n\n visits += previousVisits.length;\n\n if (currentVisit) {\n visits++;\n }\n\n return Ok(this.checkCondition(visits));\n }\n\n private checkCondition(visitsAmount: number): boolean {\n if (!this.matchType || typeof this.conditionValue !== 'number') {\n return false;\n }\n\n switch (this.matchType) {\n case MatchType.EQUAL:\n return visitsAmount === this.conditionValue;\n case MatchType.GREATER:\n return visitsAmount > this.conditionValue;\n case MatchType.LOWER:\n return visitsAmount < this.conditionValue;\n default:\n return false;\n }\n }\n}\n"],"mappings":"46CAMa,CAAAA,MAAM,YAIjB,SAAAC,EAAAC,CAAA,CAA0D,IAA5C,CAAAC,CAAS,CAAAD,CAAA,CAATC,SAAS,CAAEC,CAAU,CAAAF,CAAA,CAAVE,UAAU,CAAAC,eAAA,MAAAJ,CAAA,EAAAK,eAAA,0BAAAA,eAAA,+BACjC,IAAI,CAACH,SAAS,CAAGA,CAAS,CAC1B,IAAI,CAACI,cAAc,CAAGH,CACxB,CAAC,OAAAI,YAAA,CAAAP,CAAA,GAAAQ,GAAA,YAAAC,KAAA,CAED,SAAAC,SAAAV,CAAA,CAEwD,IADtD,CAAAW,CAAa,CAAAX,CAAA,CAAbW,aAAa,CAEPC,CAAU,QAAGD,CAAa,WAAbA,CAAa,QAAbA,CAAa,CAAGE,4BAAa,CAACC,UAAU,CAAC,CAE5D,GAAI,CAACF,CAAU,CACb,MAAO,GAAAG,SAAE,KAAO,CACjB,GAEG,CAAAC,CAAM,CAAG,CAAC,CAENC,CAAc,CAAmBL,CAAU,CAA3CK,cAAc,CAAEC,CAAY,CAAKN,CAAU,CAA3BM,YAAY,CAQpC,MANA,CAAAF,CAAM,EAAIC,CAAc,CAACE,MAAM,CAE3BD,CAAY,EACdF,CAAM,EAAE,CAGH,GAAAD,SAAE,EAAC,IAAI,CAACK,cAAc,CAACJ,CAAM,CAAC,CACvC,CAAC,GAAAR,GAAA,kBAAAC,KAAA,CAED,SAAAW,eAAuBC,CAAoB,CAAW,CACpD,GAAI,CAAC,IAAI,CAACnB,SAAS,EAAmC,QAAQ,EAAvC,MAAO,KAAI,CAACI,cAA2B,CAC5D,SAGF,OAAQ,IAAI,CAACJ,SAAS,EACpB,IAAK,CAAAoB,gBAAS,CAACC,KAAK,CAClB,MAAO,CAAAF,CAAY,GAAK,IAAI,CAACf,cAAc,CAC7C,IAAK,CAAAgB,gBAAS,CAACE,OAAO,CACpB,MAAO,CAAAH,CAAY,CAAG,IAAI,CAACf,cAAc,CAC3C,IAAK,CAAAgB,gBAAS,CAACG,KAAK,CAClB,MAAO,CAAAJ,CAAY,CAAG,IAAI,CAACf,cAAc,CAC3C,QACE,SAAa,CAEnB,CAAC,IAAAN,CAAA,IAAA0B,OAAA,CAAA3B,MAAA,CAAAA,MAAA"}
@@ -1,3 +1,3 @@
1
- export { TargetingTree } from './targetingTree';
2
- export { Operator, TargetingType, SegmentType, TargetingDataType, EvaluationDataType, MatchTypeCustomData, MatchTypeVariation, MatchType, VersionMatchType, } from './types';
3
- export { CustomDataCondition, TargetExperimentCondition, ExclusiveExperimentCondition, BrowserCondition, PageUrlCondition, PageTitleCondition, ConversionCondition, VisitorCodeCondition, SdkLanguageCondition, DeviceCondition, ConditionFactory, } from './conditions';
1
+ export { Tree } from './tree';
2
+ export { Operator, TargetingType, SegmentType, TargetingDataType, EvaluationDataType, ValueMatchType, MatchTypeVariation, MatchType, VersionMatchType, } from './types';
3
+ export { CustomData, ExclusiveCampaign, Browser, PageUrl, PageTitle, Conversion, VisitorCode, SdkLanguage, Device, PreviousPage, VisitedPages, ConditionFactory, TargetFeatureFlag, Cookie, GeolocationCondition, OperatingSystem, Segment, FirstVisit, LastVisit, SameDayVisits, Visits, NewVisitor, } from './conditions';
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),Object.defineProperty(exports,"BrowserCondition",{enumerable:!0,get:function get(){return _conditions.BrowserCondition}}),Object.defineProperty(exports,"ConditionFactory",{enumerable:!0,get:function get(){return _conditions.ConditionFactory}}),Object.defineProperty(exports,"ConversionCondition",{enumerable:!0,get:function get(){return _conditions.ConversionCondition}}),Object.defineProperty(exports,"CustomDataCondition",{enumerable:!0,get:function get(){return _conditions.CustomDataCondition}}),Object.defineProperty(exports,"DeviceCondition",{enumerable:!0,get:function get(){return _conditions.DeviceCondition}}),Object.defineProperty(exports,"EvaluationDataType",{enumerable:!0,get:function get(){return _types.EvaluationDataType}}),Object.defineProperty(exports,"ExclusiveExperimentCondition",{enumerable:!0,get:function get(){return _conditions.ExclusiveExperimentCondition}}),Object.defineProperty(exports,"MatchType",{enumerable:!0,get:function get(){return _types.MatchType}}),Object.defineProperty(exports,"MatchTypeCustomData",{enumerable:!0,get:function get(){return _types.MatchTypeCustomData}}),Object.defineProperty(exports,"MatchTypeVariation",{enumerable:!0,get:function get(){return _types.MatchTypeVariation}}),Object.defineProperty(exports,"Operator",{enumerable:!0,get:function get(){return _types.Operator}}),Object.defineProperty(exports,"PageTitleCondition",{enumerable:!0,get:function get(){return _conditions.PageTitleCondition}}),Object.defineProperty(exports,"PageUrlCondition",{enumerable:!0,get:function get(){return _conditions.PageUrlCondition}}),Object.defineProperty(exports,"SdkLanguageCondition",{enumerable:!0,get:function get(){return _conditions.SdkLanguageCondition}}),Object.defineProperty(exports,"SegmentType",{enumerable:!0,get:function get(){return _types.SegmentType}}),Object.defineProperty(exports,"TargetExperimentCondition",{enumerable:!0,get:function get(){return _conditions.TargetExperimentCondition}}),Object.defineProperty(exports,"TargetingDataType",{enumerable:!0,get:function get(){return _types.TargetingDataType}}),Object.defineProperty(exports,"TargetingTree",{enumerable:!0,get:function get(){return _targetingTree.TargetingTree}}),Object.defineProperty(exports,"TargetingType",{enumerable:!0,get:function get(){return _types.TargetingType}}),Object.defineProperty(exports,"VersionMatchType",{enumerable:!0,get:function get(){return _types.VersionMatchType}}),Object.defineProperty(exports,"VisitorCodeCondition",{enumerable:!0,get:function get(){return _conditions.VisitorCodeCondition}});var _targetingTree=require("./targetingTree"),_types=require("./types"),_conditions=require("./conditions");
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),Object.defineProperty(exports,"Browser",{enumerable:!0,get:function get(){return _conditions.Browser}}),Object.defineProperty(exports,"ConditionFactory",{enumerable:!0,get:function get(){return _conditions.ConditionFactory}}),Object.defineProperty(exports,"Conversion",{enumerable:!0,get:function get(){return _conditions.Conversion}}),Object.defineProperty(exports,"Cookie",{enumerable:!0,get:function get(){return _conditions.Cookie}}),Object.defineProperty(exports,"CustomData",{enumerable:!0,get:function get(){return _conditions.CustomData}}),Object.defineProperty(exports,"Device",{enumerable:!0,get:function get(){return _conditions.Device}}),Object.defineProperty(exports,"EvaluationDataType",{enumerable:!0,get:function get(){return _types.EvaluationDataType}}),Object.defineProperty(exports,"ExclusiveCampaign",{enumerable:!0,get:function get(){return _conditions.ExclusiveCampaign}}),Object.defineProperty(exports,"FirstVisit",{enumerable:!0,get:function get(){return _conditions.FirstVisit}}),Object.defineProperty(exports,"GeolocationCondition",{enumerable:!0,get:function get(){return _conditions.GeolocationCondition}}),Object.defineProperty(exports,"LastVisit",{enumerable:!0,get:function get(){return _conditions.LastVisit}}),Object.defineProperty(exports,"MatchType",{enumerable:!0,get:function get(){return _types.MatchType}}),Object.defineProperty(exports,"MatchTypeVariation",{enumerable:!0,get:function get(){return _types.MatchTypeVariation}}),Object.defineProperty(exports,"NewVisitor",{enumerable:!0,get:function get(){return _conditions.NewVisitor}}),Object.defineProperty(exports,"OperatingSystem",{enumerable:!0,get:function get(){return _conditions.OperatingSystem}}),Object.defineProperty(exports,"Operator",{enumerable:!0,get:function get(){return _types.Operator}}),Object.defineProperty(exports,"PageTitle",{enumerable:!0,get:function get(){return _conditions.PageTitle}}),Object.defineProperty(exports,"PageUrl",{enumerable:!0,get:function get(){return _conditions.PageUrl}}),Object.defineProperty(exports,"PreviousPage",{enumerable:!0,get:function get(){return _conditions.PreviousPage}}),Object.defineProperty(exports,"SameDayVisits",{enumerable:!0,get:function get(){return _conditions.SameDayVisits}}),Object.defineProperty(exports,"SdkLanguage",{enumerable:!0,get:function get(){return _conditions.SdkLanguage}}),Object.defineProperty(exports,"Segment",{enumerable:!0,get:function get(){return _conditions.Segment}}),Object.defineProperty(exports,"SegmentType",{enumerable:!0,get:function get(){return _types.SegmentType}}),Object.defineProperty(exports,"TargetFeatureFlag",{enumerable:!0,get:function get(){return _conditions.TargetFeatureFlag}}),Object.defineProperty(exports,"TargetingDataType",{enumerable:!0,get:function get(){return _types.TargetingDataType}}),Object.defineProperty(exports,"TargetingType",{enumerable:!0,get:function get(){return _types.TargetingType}}),Object.defineProperty(exports,"Tree",{enumerable:!0,get:function get(){return _tree.Tree}}),Object.defineProperty(exports,"ValueMatchType",{enumerable:!0,get:function get(){return _types.ValueMatchType}}),Object.defineProperty(exports,"VersionMatchType",{enumerable:!0,get:function get(){return _types.VersionMatchType}}),Object.defineProperty(exports,"VisitedPages",{enumerable:!0,get:function get(){return _conditions.VisitedPages}}),Object.defineProperty(exports,"VisitorCode",{enumerable:!0,get:function get(){return _conditions.VisitorCode}}),Object.defineProperty(exports,"Visits",{enumerable:!0,get:function get(){return _conditions.Visits}});var _tree=require("./tree"),_types=require("./types"),_conditions=require("./conditions");
2
2
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":[],"sources":["../../src/targeting/index.ts"],"sourcesContent":["export { TargetingTree } from './targetingTree';\nexport {\n Operator,\n TargetingType,\n SegmentType,\n TargetingDataType,\n EvaluationDataType,\n MatchTypeCustomData,\n MatchTypeVariation,\n MatchType,\n VersionMatchType,\n} from './types';\nexport {\n CustomDataCondition,\n TargetExperimentCondition,\n ExclusiveExperimentCondition,\n BrowserCondition,\n PageUrlCondition,\n PageTitleCondition,\n ConversionCondition,\n VisitorCodeCondition,\n SdkLanguageCondition,\n DeviceCondition,\n ConditionFactory,\n} from './conditions';\n"],"mappings":""}
1
+ {"version":3,"file":"index.js","names":[],"sources":["../../src/targeting/index.ts"],"sourcesContent":["export { Tree } from './tree';\nexport {\n Operator,\n TargetingType,\n SegmentType,\n TargetingDataType,\n EvaluationDataType,\n ValueMatchType,\n MatchTypeVariation,\n MatchType,\n VersionMatchType,\n} from './types';\nexport {\n CustomData,\n ExclusiveCampaign,\n Browser,\n PageUrl,\n PageTitle,\n Conversion,\n VisitorCode,\n SdkLanguage,\n Device,\n PreviousPage,\n VisitedPages,\n ConditionFactory,\n TargetFeatureFlag,\n Cookie,\n GeolocationCondition,\n OperatingSystem,\n Segment,\n FirstVisit,\n LastVisit,\n SameDayVisits,\n Visits,\n NewVisitor,\n} from './conditions';\n"],"mappings":""}
@@ -1,23 +1,23 @@
1
1
  import { KameleoonError } from '../kameleoonError';
2
2
  import { ConditionDataType } from './conditions';
3
3
  import { NodeValueType, Operator } from './types';
4
- export interface ITargetingNode {
4
+ export interface INode {
5
5
  readonly value?: NodeValueType;
6
- readonly left?: ITargetingNode;
7
- readonly right?: ITargetingNode;
6
+ readonly left?: INode;
7
+ readonly right?: INode;
8
8
  readonly error?: KameleoonError;
9
9
  }
10
- export declare class TargetingNode implements ITargetingNode {
10
+ export declare class Node implements INode {
11
11
  private nodeValue?;
12
12
  private nodeError?;
13
13
  private leftChild?;
14
14
  private rightChild?;
15
15
  private inverseResult;
16
- constructor(value: ConditionDataType | Operator, left?: ITargetingNode, right?: ITargetingNode);
16
+ constructor(value: ConditionDataType | Operator, left?: INode, right?: INode);
17
17
  get value(): NodeValueType | undefined;
18
18
  get error(): KameleoonError | undefined;
19
- get left(): ITargetingNode | undefined;
20
- get right(): ITargetingNode | undefined;
19
+ get left(): INode | undefined;
20
+ get right(): INode | undefined;
21
21
  get inverse(): boolean;
22
22
  private isOperator;
23
23
  }
@@ -0,0 +1,2 @@
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.Node=void 0;var _conditions=require("./conditions"),_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 Node=function(){function a(b,c,d){if(_classCallCheck(this,a),_defineProperty(this,"nodeValue",void 0),_defineProperty(this,"nodeError",void 0),_defineProperty(this,"leftChild",void 0),_defineProperty(this,"rightChild",void 0),_defineProperty(this,"inverseResult",!1),this.isOperator(b))this.nodeValue=b;else{var e,f=_conditions.ConditionFactory.createCondition(b);this.inverseResult=null!==(e=b.isInclude)&&void 0!==e&&!e,f.ok?this.nodeValue=f.data:this.nodeError=f.error}this.leftChild=c,this.rightChild=d}return _createClass(a,[{key:"value",get:function get(){return this.nodeValue}},{key:"error",get:function get(){return this.nodeError}},{key:"left",get:function get(){return this.leftChild}},{key:"right",get:function get(){return this.rightChild}},{key:"inverse",get:function get(){return this.inverseResult}},{key:"isOperator",value:function isOperator(a){return a===_types.Operator.And||a===_types.Operator.Or}}]),a}();exports.Node=Node;
2
+ //# sourceMappingURL=node.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"node.js","names":["Node","a","value","left","right","_classCallCheck","_defineProperty","isOperator","nodeValue","e","result","ConditionFactory","createCondition","inverseResult","isInclude","ok","data","nodeError","error","leftChild","rightChild","_createClass","key","get","Operator","And","Or","exports"],"sources":["../../src/targeting/node.ts"],"sourcesContent":["import { KameleoonError } from 'src/kameleoonError';\nimport { ConditionFactory, ConditionDataType } from './conditions';\nimport { NodeValueType, Operator } from './types';\n\nexport interface INode {\n readonly value?: NodeValueType;\n readonly left?: INode;\n readonly right?: INode;\n readonly error?: KameleoonError;\n}\n\nexport class Node implements INode {\n private nodeValue?: NodeValueType;\n private nodeError?: KameleoonError;\n private leftChild?: INode;\n private rightChild?: INode;\n private inverseResult: boolean = false;\n\n constructor(\n value: ConditionDataType | Operator,\n left?: INode,\n right?: INode,\n ) {\n if (this.isOperator(value)) {\n this.nodeValue = value;\n } else {\n const result = ConditionFactory.createCondition(value);\n this.inverseResult = !(value.isInclude ?? true);\n\n if (result.ok) {\n this.nodeValue = result.data;\n } else {\n this.nodeError = result.error;\n }\n }\n\n this.leftChild = left;\n this.rightChild = right;\n }\n\n get value(): NodeValueType | undefined {\n return this.nodeValue;\n }\n\n get error(): KameleoonError | undefined {\n return this.nodeError;\n }\n\n get left(): INode | undefined {\n return this.leftChild;\n }\n\n get right(): INode | undefined {\n return this.rightChild;\n }\n\n get inverse(): boolean {\n return this.inverseResult;\n }\n\n private isOperator(value: ConditionDataType | Operator): value is Operator {\n return value === Operator.And || value === Operator.Or;\n }\n}\n"],"mappings":"s4CAWa,CAAAA,IAAI,YAOf,SAAAC,EACEC,CAAmC,CACnCC,CAAY,CACZC,CAAa,CACb,CACA,GAAAC,eAAA,MAAAJ,CAAA,EAAAK,eAAA,0BAAAA,eAAA,0BAAAA,eAAA,0BAAAA,eAAA,2BAAAA,eAAA,0BAAI,IAAI,CAACC,UAAU,CAACL,CAAK,CAAC,CACxB,IAAI,CAACM,SAAS,CAAGN,CAAK,KACjB,KAAAO,CAAA,CACCC,CAAM,CAAGC,4BAAgB,CAACC,eAAe,CAACV,CAAK,CAAC,CACtD,IAAI,CAACW,aAAa,SAAAJ,CAAA,CAAKP,CAAK,CAACY,SAAS,YAAAL,CAAA,GAAAA,CAAS,CAE3CC,CAAM,CAACK,EAAE,CACX,IAAI,CAACP,SAAS,CAAGE,CAAM,CAACM,IAAI,CAE5B,IAAI,CAACC,SAAS,CAAGP,CAAM,CAACQ,KAE5B,CAEA,IAAI,CAACC,SAAS,CAAGhB,CAAI,CACrB,IAAI,CAACiB,UAAU,CAAGhB,CACpB,CAAC,OAAAiB,YAAA,CAAApB,CAAA,GAAAqB,GAAA,SAAAC,GAAA,CAED,SAAAA,IAAA,CAAuC,CACrC,MAAO,KAAI,CAACf,SACd,CAAC,GAAAc,GAAA,SAAAC,GAAA,CAED,SAAAA,IAAA,CAAwC,CACtC,MAAO,KAAI,CAACN,SACd,CAAC,GAAAK,GAAA,QAAAC,GAAA,CAED,SAAAA,IAAA,CAA8B,CAC5B,MAAO,KAAI,CAACJ,SACd,CAAC,GAAAG,GAAA,SAAAC,GAAA,CAED,SAAAA,IAAA,CAA+B,CAC7B,MAAO,KAAI,CAACH,UACd,CAAC,GAAAE,GAAA,WAAAC,GAAA,CAED,SAAAA,IAAA,CAAuB,CACrB,MAAO,KAAI,CAACV,aACd,CAAC,GAAAS,GAAA,cAAApB,KAAA,CAED,SAAAK,WAAmBL,CAAmC,CAAqB,CACzE,MAAO,CAAAA,CAAK,GAAKsB,eAAQ,CAACC,GAAG,EAAIvB,CAAK,GAAKsB,eAAQ,CAACE,EACtD,CAAC,IAAAzB,CAAA,IAAA0B,OAAA,CAAA3B,IAAA,CAAAA,IAAA"}
@@ -1,14 +1,17 @@
1
1
  import { Result } from 'ts-res';
2
2
  import { KameleoonError } from '../kameleoonError';
3
- import { EvaluationDataType, SegmentType } from './types';
4
- interface ITargetingTree {
3
+ import { EvaluationDataType, SegmentType, TargetingType } from './types';
4
+ interface ITree {
5
5
  evaluate: (data: EvaluationDataType) => Result<boolean, KameleoonError>;
6
+ hasTargetingType: (targetingType: TargetingType) => boolean;
6
7
  }
7
- export declare class TargetingTree implements ITargetingTree {
8
+ export declare class Tree implements ITree {
8
9
  private tree;
9
10
  private error;
11
+ private targetingTypes;
10
12
  constructor(segment: SegmentType);
11
13
  evaluate(data: EvaluationDataType): Result<boolean, KameleoonError>;
14
+ hasTargetingType(targetingType: TargetingType): boolean;
12
15
  private evaluateNode;
13
16
  private isLeafNode;
14
17
  private isNonLeafNode;
@@ -0,0 +1,2 @@
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.Tree=void 0;var _tsRes=require("ts-res"),_kameleoonError=require("../kameleoonError"),_node=require("./node"),_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 Tree=function(){function a(b){var c=this;_classCallCheck(this,a),_defineProperty(this,"tree",void 0),_defineProperty(this,"error",null),_defineProperty(this,"targetingTypes",new Set);var d=this.flattenSegment(b),e=d.nestedConditions,f=d.topLevelOperators,g=e.map(function(a){var b=a.conditions,d=a.operators,e=b.map(function(a){return c.targetingTypes.add(a.targetingType),new _node.Node(a)});return c.buildTree(e,d)});this.tree=this.buildTree(g,f)}return _createClass(a,[{key:"evaluate",value:function evaluate(a){var b=this.evaluateNode(this.tree,a);return this.error?(0,_tsRes.Err)(this.error):(0,_tsRes.Ok)(b)}},{key:"hasTargetingType",value:function hasTargetingType(a){return this.targetingTypes.has(a)}},{key:"evaluateNode",value:function evaluateNode(a,b){if(this.isLeafNode(a)){if(a.error)return a.error.type===_kameleoonError.KameleoonException.TargetingCondition;var c=a.value.evaluate(b);return c.ok?a.inverse?!c.data:c.data:(this.error=c.error,!1)}if(this.isNonLeafNode(a))switch(a.value){case _types.Operator.And:return this.evaluateNode(a.left,b)&&this.evaluateNode(a.right,b);case _types.Operator.Or:return this.evaluateNode(a.left,b)||this.evaluateNode(a.right,b);default:}return!1}},{key:"isLeafNode",value:function isLeafNode(a){return!!!(a.left&&a.right)}},{key:"isNonLeafNode",value:function isNonLeafNode(a){return!!(a.left&&a.right&&(a.value===_types.Operator.Or||a.value===_types.Operator.And))}},{key:"buildTree",value:function buildTree(a,b){if(1===a.length)return a[0];var c,d=_createForOfIteratorHelper(b);try{for(d.s();!(c=d.n()).done;){var e=c.value,f=a.shift(),g=a.shift(),h=new _node.Node(e,f,g);a.unshift(h)}}catch(a){d.e(a)}finally{d.f()}return a[0]}},{key:"flattenSegment",value:function flattenSegment(a){var b=this,c=a.conditionsData,d=c.firstLevel,e=c.firstLevelOrOperators,f=[];return d.forEach(function(a){var c=a.conditions,d=a.orOperators,e={operators:b.convertOperators(d),conditions:c};f.push(e)}),{topLevelOperators:this.convertOperators(e),nestedConditions:f}}},{key:"convertOperators",value:function convertOperators(a){return a.map(function(a){return a?_types.Operator.Or:_types.Operator.And})}}]),a}();exports.Tree=Tree;
2
+ //# sourceMappingURL=tree.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tree.js","names":["Tree","a","segment","c","_classCallCheck","_defineProperty","Set","d","flattenSegment","nestedConditions","topLevelOperators","nestedNodes","map","conditions","operators","nodes","condition","targetingTypes","add","targetingType","Node","buildTree","tree","_createClass","key","value","evaluate","data","result","evaluateNode","error","Err","Ok","hasTargetingType","has","node","isLeafNode","type","KameleoonException","TargetingCondition","ok","inverse","isNonLeafNode","Operator","And","left","right","Or","length","_createForOfIteratorHelper","s","n","done","operator","shift","newNode","unshift","e","f","b","conditionsData","firstLevel","firstLevelOrOperators","forEach","conditionList","orOperators","group","convertOperators","push","exports"],"sources":["../../src/targeting/tree.ts"],"sourcesContent":["import { Result, Ok, Err } from 'ts-res';\nimport { KameleoonError, KameleoonException } from 'src/kameleoonError';\nimport { INode, Node } from './node';\nimport {\n EvaluationDataType,\n GroupedSegmentsType,\n LeafNodeType,\n NestedConditionGroupType,\n NonLeafNodeType,\n Operator,\n SegmentType,\n TargetingType,\n} from './types';\n\ninterface ITree {\n evaluate: (data: EvaluationDataType) => Result<boolean, KameleoonError>;\n hasTargetingType: (targetingType: TargetingType) => boolean;\n}\n\nexport class Tree implements ITree {\n private tree: Node;\n private error: KameleoonError | null = null;\n private targetingTypes: Set<TargetingType> = new Set();\n\n constructor(segment: SegmentType) {\n const { nestedConditions, topLevelOperators } =\n this.flattenSegment(segment);\n\n // --- Note ---\n // - Targeting tree is built bottom-up, it's the only way to both get the consistent logic\n // (grouping nested conditions) and have human readable tree representation.\n // - Here is an example of how tree is built (we use strict complete binary tree)\n // Let's say we have such a condition `value < 10 || value > 20 && value < 30`\n // Following is pseudo code for building tree:\n //\n // `const operators = [Operator.Or, Operator.And]`\n // `const conditions = [\n // {type: Condition.Less, value: 10},\n // {type: Condition.Greater, value: 20},\n // {type: Condition.Less, value: 30},\n // ]`\n //\n // After the first iteration we have node like this:\n // AND\n // / \\\n // <30 >20\n //\n // After the second iteration tree looks as follows:\n // OR\n // / \\\n // AND <10\n // / \\\n // <30 >20\n //\n // As you can see Leaf Nodes contain conditions and Non-Leaf Nodes contain logical operators\n const nestedNodes = nestedConditions.map(({ conditions, operators }) => {\n const nodes = conditions.map((condition) => {\n // --- Note ---\n // We keep condition types to optimize\n // some external operations depending on what conditions are present\n // in a tree\n this.targetingTypes.add(condition.targetingType);\n\n return new Node(condition);\n });\n\n return this.buildTree(nodes, operators);\n });\n\n this.tree = this.buildTree(nestedNodes, topLevelOperators);\n }\n\n public evaluate(data: EvaluationDataType): Result<boolean, KameleoonError> {\n const result = this.evaluateNode(this.tree, data);\n\n if (this.error) {\n return Err(this.error);\n }\n\n return Ok(result);\n }\n\n public hasTargetingType(targetingType: TargetingType): boolean {\n return this.targetingTypes.has(targetingType);\n }\n\n private evaluateNode(node: Node, data: EvaluationDataType): boolean {\n if (this.isLeafNode(node)) {\n if (node.error) {\n // --- Note ---\n // Non-existing condition should not break targeting tree\n // instead it should be treated as `true` condition\n if (node.error.type === KameleoonException.TargetingCondition) {\n return true;\n }\n\n return false;\n }\n\n const result = node.value.evaluate(data);\n\n if (!result.ok) {\n this.error = result.error;\n\n return false;\n }\n\n return node.inverse ? !result.data : result.data;\n }\n\n if (this.isNonLeafNode(node)) {\n switch (node.value) {\n case Operator.And: {\n return (\n this.evaluateNode(node.left, data) &&\n this.evaluateNode(node.right, data)\n );\n }\n case Operator.Or: {\n return (\n this.evaluateNode(node.left, data) ||\n this.evaluateNode(node.right, data)\n );\n }\n default:\n break;\n }\n }\n\n return false;\n }\n\n private isLeafNode(node: INode): node is LeafNodeType {\n return !Boolean(node.left && node.right);\n }\n\n private isNonLeafNode(node: INode): node is NonLeafNodeType {\n return Boolean(\n node.left &&\n node.right &&\n (node.value === Operator.Or || node.value === Operator.And),\n );\n }\n\n // --- Note ---\n // This method mutates `nodes` array\n // It's done for the sake of performance\n private buildTree(nodes: Node[], operators: Operator[]): Node {\n if (nodes.length === 1) {\n return nodes[0];\n }\n\n for (const operator of operators) {\n const left = nodes.shift();\n const right = nodes.shift();\n\n const newNode = new Node(operator, left, right);\n nodes.unshift(newNode);\n }\n\n return nodes[0];\n }\n\n private flattenSegment(segment: SegmentType): GroupedSegmentsType {\n const { firstLevel: conditions, firstLevelOrOperators: operators } =\n segment.conditionsData;\n\n const nestedConditions: NestedConditionGroupType[] = [];\n\n conditions.forEach((condition) => {\n const { conditions: conditionList, orOperators } = condition;\n\n const group = {\n operators: this.convertOperators(orOperators),\n conditions: conditionList,\n };\n\n nestedConditions.push(group);\n });\n\n return {\n topLevelOperators: this.convertOperators(operators),\n nestedConditions,\n };\n }\n\n private convertOperators(operators: boolean[]): Operator[] {\n return operators.map((operator) => (operator ? Operator.Or : Operator.And));\n }\n}\n"],"mappings":"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"}
@@ -1,15 +1,17 @@
1
+ import { MappedRuleType } from '../clientConfiguration/types';
1
2
  import { KameleoonVisitorDataType } from '../kameleoonData/types';
2
- import { ExperimentVariationsType } from '../storage';
3
+ import { FeatureFlagVariationsType } from '../storage/types';
3
4
  import { ExternalPackageInfoType } from '../types';
4
5
  import { ConditionDataType, ConditionType } from './conditions';
5
- import { TargetingNode } from './targetingNode';
6
+ import { Node } from './node';
7
+ import { Tree } from './tree';
6
8
  export declare enum Operator {
7
9
  And = "AND",
8
10
  Or = "OR"
9
11
  }
10
12
  export type NonLeafNodeType = {
11
- left: TargetingNode;
12
- right: TargetingNode;
13
+ left: Node;
14
+ right: Node;
13
15
  value: Operator;
14
16
  };
15
17
  export type LeafNodeType = {
@@ -43,12 +45,15 @@ export type TargetingDataType = {
43
45
  };
44
46
  export type EvaluationDataType = {
45
47
  targetingData?: KameleoonVisitorDataType;
46
- variationData: ExperimentVariationsType;
48
+ variationData: FeatureFlagVariationsType;
49
+ ruleMap?: Map<number, MappedRuleType>;
47
50
  sdkInfo: ExternalPackageInfoType;
48
51
  experimentId: number | null;
49
52
  visitorCode: string;
53
+ segments?: Map<string, SegmentType>;
54
+ trees?: Map<string, Tree>;
50
55
  };
51
- export declare enum MatchTypeCustomData {
56
+ export declare enum ValueMatchType {
52
57
  TRUE = "TRUE",
53
58
  FALSE = "FALSE",
54
59
  EXACT = "EXACT",
@@ -60,6 +65,10 @@ export declare enum MatchTypeCustomData {
60
65
  UNDEFINED = "UNDEFINED",
61
66
  AMONG_VALUES = "AMONG_VALUES"
62
67
  }
68
+ export declare enum VisitorType {
69
+ NEW = "NEW",
70
+ RETURNING = "RETURNING"
71
+ }
63
72
  export declare enum MatchTypeVariation {
64
73
  ANY = "ANY",
65
74
  EXACT = "EXACT"
@@ -72,13 +81,22 @@ export declare enum MatchTypeTest {
72
81
  export declare enum MatchType {
73
82
  EXACT = "EXACT",
74
83
  CONTAINS = "CONTAINS",
75
- REGULAR_EXPRESSION = "REGULAR_EXPRESSION"
84
+ REGULAR_EXPRESSION = "REGULAR_EXPRESSION",
85
+ GREATER = "GREATER",
86
+ EQUAL = "EQUAL",
87
+ LOWER = "LOWER"
76
88
  }
77
89
  export declare enum VersionMatchType {
78
90
  GREATER = "GREATER",
79
91
  EQUAL = "EQUAL",
80
92
  LOWER = "LOWER"
81
93
  }
94
+ export declare enum NameMatchType {
95
+ EXACT = "EXACT",
96
+ CONTAINS = "CONTAINS",
97
+ REGULAR_EXPRESSION = "REGULAR_EXPRESSION",
98
+ OPTIONAL = "OPTIONAL"
99
+ }
82
100
  export declare enum TargetingType {
83
101
  PAGE_URL = "PAGE_URL",
84
102
  PAGE_TITLE = "PAGE_TITLE",
@@ -126,11 +144,14 @@ export declare enum TargetingType {
126
144
  DOM_ELEMENT = "DOM_ELEMENT",
127
145
  MOUSE_OUT = "MOUSE_OUT",
128
146
  TARGET_EXPERIMENT = "TARGET_EXPERIMENT",
147
+ TARGET_FEATURE_FLAG = "TARGET_FEATURE_FLAG",
129
148
  TARGET_PERSONALIZATION = "TARGET_PERSONALIZATION",
130
149
  EXCLUSIVE_EXPERIMENT = "EXCLUSIVE_EXPERIMENT",
150
+ EXCLUSIVE_FEATURE_FLAG = "EXCLUSIVE_FEATURE_FLAG",
131
151
  CONVERSIONS = "CONVERSIONS",
132
152
  CUSTOM_DATUM = "CUSTOM_DATUM",
133
153
  YSANCE_SEGMENT = "YSANCE_SEGMENT",
154
+ SEGMENT = "SEGMENT",
134
155
  YSANCE_ATTRIBUT = "YSANCE_ATTRIBUT",
135
156
  TEALIUM_BADGE = "TEALIUM_BADGE",
136
157
  TEALIUM_AUDIENCE = "TEALIUM_AUDIENCE",
@@ -138,5 +159,6 @@ export declare enum TargetingType {
138
159
  NUMBER_OF_VISITED_PAGES = "NUMBER_OF_VISITED_PAGES",
139
160
  VISITED_PAGES = "VISITED_PAGES",
140
161
  CUSTOM = "CUSTOM",
141
- EXPLICIT_TRIGGER = "EXPLICIT_TRIGGER"
162
+ EXPLICIT_TRIGGER = "EXPLICIT_TRIGGER",
163
+ APPLICATION_VERSION = "APPLICATION_VERSION"
142
164
  }
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.VersionMatchType=exports.TargetingType=exports.Operator=exports.MatchTypeVariation=exports.MatchTypeTest=exports.MatchTypeCustomData=exports.MatchType=void 0;var Operator=/*#__PURE__*/function(a){return a.And="AND",a.Or="OR",a}({});exports.Operator=Operator;var MatchTypeCustomData=/*#__PURE__*/function(a){return a.TRUE="TRUE",a.FALSE="FALSE",a.EXACT="EXACT",a.CONTAINS="CONTAINS",a.REGULAR_EXPRESSION="REGULAR_EXPRESSION",a.EQUAL="EQUAL",a.LOWER="LOWER",a.GREATER="GREATER",a.UNDEFINED="UNDEFINED",a.AMONG_VALUES="AMONG_VALUES",a}({});exports.MatchTypeCustomData=MatchTypeCustomData;var MatchTypeVariation=/*#__PURE__*/function(a){return a.ANY="ANY",a.EXACT="EXACT",a}({});exports.MatchTypeVariation=MatchTypeVariation;var MatchTypeTest=/*#__PURE__*/function(a){return a.ALL="ALL",a.TEST="TEST",a.PERSO="PERSO",a}({});exports.MatchTypeTest=MatchTypeTest;var MatchType=/*#__PURE__*/function(a){return a.EXACT="EXACT",a.CONTAINS="CONTAINS",a.REGULAR_EXPRESSION="REGULAR_EXPRESSION",a}({});exports.MatchType=MatchType;var VersionMatchType=/*#__PURE__*/function(a){return a.GREATER="GREATER",a.EQUAL="EQUAL",a.LOWER="LOWER",a}({});exports.VersionMatchType=VersionMatchType;var TargetingType=/*#__PURE__*/function(a){return a.PAGE_URL="PAGE_URL",a.PAGE_TITLE="PAGE_TITLE",a.LANDING_PAGE="LANDING_PAGE",a.ORIGIN="ORIGIN",a.ORIGIN_TYPE="ORIGIN_TYPE",a.REFERRERS="REFERRERS",a.NEW_VISITORS="NEW_VISITORS",a.INTERESTS="INTERESTS",a.BROWSER_LANGUAGE="BROWSER_LANGUAGE",a.GEOLOCATION="GEOLOCATION",a.DEVICE_TYPE="DEVICE_TYPE",a.SCREEN_DIMENSION="SCREEN_DIMENSION",a.VISITOR_IP="VISITOR_IP",a.AD_BLOCKER="AD_BLOCKER",a.PREVIOUS_PAGE="PREVIOUS_PAGE",a.KEY_PAGES="KEY_PAGES",a.PAGE_VIEWS="PAGE_VIEWS",a.FIRST_VISIT="FIRST_VISIT",a.LAST_VISIT="LAST_VISIT",a.ACTIVE_SESSION="ACTIVE_SESSION",a.TIME_SINCE_PAGE_LOAD="TIME_SINCE_PAGE_LOAD",a.SAME_DAY_VISITS="SAME_DAY_VISITS",a.VISITS="VISITS",a.VISITS_BY_PAGE="VISITS_BY_PAGE",a.VISITOR_CODE="VISITOR_CODE",a.SDK_LANGUAGE="SDK_LANGUAGE",a.INTERNAL_SEARCH_KEYWORDS="INTERNAL_SEARCH_KEYWORDS",a.TABS_ON_SITE="TABS_ON_SITE",a.CONVERSION_PROBABILITY="CONVERSION_PROBABILITY",a.HEAT_SLICE="HEAT_SLICE",a.SKY_STATUS="SKY_STATUS",a.TEMPERATURE="TEMPERATURE",a.DAY_NIGHT="DAY_NIGHT",a.FORECAST_SKY_STATUS="FORECAST_SKY_STATUS",a.FORECAST_TEMPERATURE="FORECAST_TEMPERATURE",a.DAY_OF_WEEK="DAY_OF_WEEK",a.TIME_RANGE="TIME_RANGE",a.HOUR_MINUTE_RANGE="HOUR_MINUTE_RANGE",a.JS_CODE="JS_CODE",a.COOKIE="COOKIE",a.EVENT="EVENT",a.BROWSER="BROWSER",a.OPERATING_SYSTEM="OPERATING_SYSTEM",a.DOM_ELEMENT="DOM_ELEMENT",a.MOUSE_OUT="MOUSE_OUT",a.TARGET_EXPERIMENT="TARGET_EXPERIMENT",a.TARGET_PERSONALIZATION="TARGET_PERSONALIZATION",a.EXCLUSIVE_EXPERIMENT="EXCLUSIVE_EXPERIMENT",a.CONVERSIONS="CONVERSIONS",a.CUSTOM_DATUM="CUSTOM_DATUM",a.YSANCE_SEGMENT="YSANCE_SEGMENT",a.YSANCE_ATTRIBUT="YSANCE_ATTRIBUT",a.TEALIUM_BADGE="TEALIUM_BADGE",a.TEALIUM_AUDIENCE="TEALIUM_AUDIENCE",a.PRICE_OF_DISPLAYED_PAGE="PRICE_OF_DISPLAYED_PAGE",a.NUMBER_OF_VISITED_PAGES="NUMBER_OF_VISITED_PAGES",a.VISITED_PAGES="VISITED_PAGES",a.CUSTOM="CUSTOM",a.EXPLICIT_TRIGGER="EXPLICIT_TRIGGER",a}({});exports.TargetingType=TargetingType;
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.VisitorType=exports.VersionMatchType=exports.ValueMatchType=exports.TargetingType=exports.Operator=exports.NameMatchType=exports.MatchTypeVariation=exports.MatchTypeTest=exports.MatchType=void 0;var Operator=function(a){return a.And="AND",a.Or="OR",a}({});exports.Operator=Operator;var ValueMatchType=function(a){return a.TRUE="TRUE",a.FALSE="FALSE",a.EXACT="EXACT",a.CONTAINS="CONTAINS",a.REGULAR_EXPRESSION="REGULAR_EXPRESSION",a.EQUAL="EQUAL",a.LOWER="LOWER",a.GREATER="GREATER",a.UNDEFINED="UNDEFINED",a.AMONG_VALUES="AMONG_VALUES",a}({});exports.ValueMatchType=ValueMatchType;var VisitorType=function(a){return a.NEW="NEW",a.RETURNING="RETURNING",a}({});exports.VisitorType=VisitorType;var MatchTypeVariation=function(a){return a.ANY="ANY",a.EXACT="EXACT",a}({});exports.MatchTypeVariation=MatchTypeVariation;var MatchTypeTest=function(a){return a.ALL="ALL",a.TEST="TEST",a.PERSO="PERSO",a}({});exports.MatchTypeTest=MatchTypeTest;var MatchType=function(a){return a.EXACT="EXACT",a.CONTAINS="CONTAINS",a.REGULAR_EXPRESSION="REGULAR_EXPRESSION",a.GREATER="GREATER",a.EQUAL="EQUAL",a.LOWER="LOWER",a}({});exports.MatchType=MatchType;var VersionMatchType=function(a){return a.GREATER="GREATER",a.EQUAL="EQUAL",a.LOWER="LOWER",a}({});exports.VersionMatchType=VersionMatchType;var NameMatchType=function(a){return a.EXACT="EXACT",a.CONTAINS="CONTAINS",a.REGULAR_EXPRESSION="REGULAR_EXPRESSION",a.OPTIONAL="OPTIONAL",a}({});exports.NameMatchType=NameMatchType;var TargetingType=function(a){return a.PAGE_URL="PAGE_URL",a.PAGE_TITLE="PAGE_TITLE",a.LANDING_PAGE="LANDING_PAGE",a.ORIGIN="ORIGIN",a.ORIGIN_TYPE="ORIGIN_TYPE",a.REFERRERS="REFERRERS",a.NEW_VISITORS="NEW_VISITORS",a.INTERESTS="INTERESTS",a.BROWSER_LANGUAGE="BROWSER_LANGUAGE",a.GEOLOCATION="GEOLOCATION",a.DEVICE_TYPE="DEVICE_TYPE",a.SCREEN_DIMENSION="SCREEN_DIMENSION",a.VISITOR_IP="VISITOR_IP",a.AD_BLOCKER="AD_BLOCKER",a.PREVIOUS_PAGE="PREVIOUS_PAGE",a.KEY_PAGES="KEY_PAGES",a.PAGE_VIEWS="PAGE_VIEWS",a.FIRST_VISIT="FIRST_VISIT",a.LAST_VISIT="LAST_VISIT",a.ACTIVE_SESSION="ACTIVE_SESSION",a.TIME_SINCE_PAGE_LOAD="TIME_SINCE_PAGE_LOAD",a.SAME_DAY_VISITS="SAME_DAY_VISITS",a.VISITS="VISITS",a.VISITS_BY_PAGE="VISITS_BY_PAGE",a.VISITOR_CODE="VISITOR_CODE",a.SDK_LANGUAGE="SDK_LANGUAGE",a.INTERNAL_SEARCH_KEYWORDS="INTERNAL_SEARCH_KEYWORDS",a.TABS_ON_SITE="TABS_ON_SITE",a.CONVERSION_PROBABILITY="CONVERSION_PROBABILITY",a.HEAT_SLICE="HEAT_SLICE",a.SKY_STATUS="SKY_STATUS",a.TEMPERATURE="TEMPERATURE",a.DAY_NIGHT="DAY_NIGHT",a.FORECAST_SKY_STATUS="FORECAST_SKY_STATUS",a.FORECAST_TEMPERATURE="FORECAST_TEMPERATURE",a.DAY_OF_WEEK="DAY_OF_WEEK",a.TIME_RANGE="TIME_RANGE",a.HOUR_MINUTE_RANGE="HOUR_MINUTE_RANGE",a.JS_CODE="JS_CODE",a.COOKIE="COOKIE",a.EVENT="EVENT",a.BROWSER="BROWSER",a.OPERATING_SYSTEM="OPERATING_SYSTEM",a.DOM_ELEMENT="DOM_ELEMENT",a.MOUSE_OUT="MOUSE_OUT",a.TARGET_EXPERIMENT="TARGET_EXPERIMENT",a.TARGET_FEATURE_FLAG="TARGET_FEATURE_FLAG",a.TARGET_PERSONALIZATION="TARGET_PERSONALIZATION",a.EXCLUSIVE_EXPERIMENT="EXCLUSIVE_EXPERIMENT",a.EXCLUSIVE_FEATURE_FLAG="EXCLUSIVE_FEATURE_FLAG",a.CONVERSIONS="CONVERSIONS",a.CUSTOM_DATUM="CUSTOM_DATUM",a.YSANCE_SEGMENT="YSANCE_SEGMENT",a.SEGMENT="SEGMENT",a.YSANCE_ATTRIBUT="YSANCE_ATTRIBUT",a.TEALIUM_BADGE="TEALIUM_BADGE",a.TEALIUM_AUDIENCE="TEALIUM_AUDIENCE",a.PRICE_OF_DISPLAYED_PAGE="PRICE_OF_DISPLAYED_PAGE",a.NUMBER_OF_VISITED_PAGES="NUMBER_OF_VISITED_PAGES",a.VISITED_PAGES="VISITED_PAGES",a.CUSTOM="CUSTOM",a.EXPLICIT_TRIGGER="EXPLICIT_TRIGGER",a.APPLICATION_VERSION="APPLICATION_VERSION",a}({});exports.TargetingType=TargetingType;
2
2
  //# sourceMappingURL=types.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"types.js","names":["Operator","And","Or","exports","MatchTypeCustomData","TRUE","FALSE","EXACT","CONTAINS","REGULAR_EXPRESSION","EQUAL","LOWER","GREATER","UNDEFINED","AMONG_VALUES","MatchTypeVariation","ANY","MatchTypeTest","ALL","TEST","PERSO","MatchType","VersionMatchType","TargetingType","PAGE_URL","PAGE_TITLE","LANDING_PAGE","ORIGIN","ORIGIN_TYPE","REFERRERS","NEW_VISITORS","INTERESTS","BROWSER_LANGUAGE","GEOLOCATION","DEVICE_TYPE","SCREEN_DIMENSION","VISITOR_IP","AD_BLOCKER","PREVIOUS_PAGE","KEY_PAGES","PAGE_VIEWS","FIRST_VISIT","LAST_VISIT","ACTIVE_SESSION","TIME_SINCE_PAGE_LOAD","SAME_DAY_VISITS","VISITS","VISITS_BY_PAGE","VISITOR_CODE","SDK_LANGUAGE","INTERNAL_SEARCH_KEYWORDS","TABS_ON_SITE","CONVERSION_PROBABILITY","HEAT_SLICE","SKY_STATUS","TEMPERATURE","DAY_NIGHT","FORECAST_SKY_STATUS","FORECAST_TEMPERATURE","DAY_OF_WEEK","TIME_RANGE","HOUR_MINUTE_RANGE","JS_CODE","COOKIE","EVENT","BROWSER","OPERATING_SYSTEM","DOM_ELEMENT","MOUSE_OUT","TARGET_EXPERIMENT","TARGET_PERSONALIZATION","EXCLUSIVE_EXPERIMENT","CONVERSIONS","CUSTOM_DATUM","YSANCE_SEGMENT","YSANCE_ATTRIBUT","TEALIUM_BADGE","TEALIUM_AUDIENCE","PRICE_OF_DISPLAYED_PAGE","NUMBER_OF_VISITED_PAGES","VISITED_PAGES","CUSTOM","EXPLICIT_TRIGGER"],"sources":["../../src/targeting/types.ts"],"sourcesContent":["import { KameleoonVisitorDataType } from 'src/kameleoonData/types';\nimport { ExperimentVariationsType } from 'src/storage';\nimport { ExternalPackageInfoType } from 'src/types';\nimport { ConditionDataType, ConditionType } from './conditions';\nimport { TargetingNode } from './targetingNode';\n\nexport enum Operator {\n And = 'AND',\n Or = 'OR',\n}\n\nexport type NonLeafNodeType = {\n left: TargetingNode;\n right: TargetingNode;\n value: Operator;\n};\n\nexport type LeafNodeType = {\n left: undefined;\n right: undefined;\n value: ConditionType;\n};\n\nexport type NodeValueType = ConditionType | Operator;\n\nexport type ConditionLevelType = {\n orOperators: boolean[];\n conditions: ConditionDataType[];\n};\n\nexport type SegmentType = {\n id: string;\n name: string;\n conditionsData: {\n firstLevelOrOperators: boolean[];\n firstLevel: ConditionLevelType[];\n };\n};\n\nexport type NestedConditionGroupType = {\n operators: Operator[];\n conditions: ConditionDataType[];\n};\n\nexport type GroupedSegmentsType = {\n topLevelOperators: Operator[];\n nestedConditions: NestedConditionGroupType[];\n};\n\nexport type TargetingDataType = {\n [visitorCode: string]: KameleoonVisitorDataType;\n};\n\nexport type EvaluationDataType = {\n targetingData?: KameleoonVisitorDataType;\n variationData: ExperimentVariationsType;\n sdkInfo: ExternalPackageInfoType;\n experimentId: number | null;\n visitorCode: string;\n};\n\nexport enum MatchTypeCustomData {\n TRUE = 'TRUE',\n FALSE = 'FALSE',\n EXACT = 'EXACT',\n CONTAINS = 'CONTAINS',\n REGULAR_EXPRESSION = 'REGULAR_EXPRESSION',\n EQUAL = 'EQUAL',\n LOWER = 'LOWER',\n GREATER = 'GREATER',\n UNDEFINED = 'UNDEFINED',\n AMONG_VALUES = 'AMONG_VALUES',\n}\n\nexport enum MatchTypeVariation {\n ANY = 'ANY',\n EXACT = 'EXACT',\n}\n\nexport enum MatchTypeTest {\n ALL = 'ALL',\n TEST = 'TEST',\n PERSO = 'PERSO',\n}\n\nexport enum MatchType {\n EXACT = 'EXACT',\n CONTAINS = 'CONTAINS',\n REGULAR_EXPRESSION = 'REGULAR_EXPRESSION',\n}\n\nexport enum VersionMatchType {\n GREATER = 'GREATER',\n EQUAL = 'EQUAL',\n LOWER = 'LOWER',\n}\n\nexport enum TargetingType {\n PAGE_URL = 'PAGE_URL',\n PAGE_TITLE = 'PAGE_TITLE',\n LANDING_PAGE = 'LANDING_PAGE',\n ORIGIN = 'ORIGIN',\n ORIGIN_TYPE = 'ORIGIN_TYPE',\n REFERRERS = 'REFERRERS',\n NEW_VISITORS = 'NEW_VISITORS',\n INTERESTS = 'INTERESTS',\n BROWSER_LANGUAGE = 'BROWSER_LANGUAGE',\n GEOLOCATION = 'GEOLOCATION',\n DEVICE_TYPE = 'DEVICE_TYPE',\n SCREEN_DIMENSION = 'SCREEN_DIMENSION',\n VISITOR_IP = 'VISITOR_IP',\n AD_BLOCKER = 'AD_BLOCKER',\n PREVIOUS_PAGE = 'PREVIOUS_PAGE',\n KEY_PAGES = 'KEY_PAGES',\n PAGE_VIEWS = 'PAGE_VIEWS',\n FIRST_VISIT = 'FIRST_VISIT',\n LAST_VISIT = 'LAST_VISIT',\n ACTIVE_SESSION = 'ACTIVE_SESSION',\n TIME_SINCE_PAGE_LOAD = 'TIME_SINCE_PAGE_LOAD',\n SAME_DAY_VISITS = 'SAME_DAY_VISITS',\n VISITS = 'VISITS',\n VISITS_BY_PAGE = 'VISITS_BY_PAGE',\n VISITOR_CODE = 'VISITOR_CODE',\n SDK_LANGUAGE = 'SDK_LANGUAGE',\n INTERNAL_SEARCH_KEYWORDS = 'INTERNAL_SEARCH_KEYWORDS',\n TABS_ON_SITE = 'TABS_ON_SITE',\n CONVERSION_PROBABILITY = 'CONVERSION_PROBABILITY',\n HEAT_SLICE = 'HEAT_SLICE',\n SKY_STATUS = 'SKY_STATUS',\n TEMPERATURE = 'TEMPERATURE',\n DAY_NIGHT = 'DAY_NIGHT',\n FORECAST_SKY_STATUS = 'FORECAST_SKY_STATUS',\n FORECAST_TEMPERATURE = 'FORECAST_TEMPERATURE',\n DAY_OF_WEEK = 'DAY_OF_WEEK',\n TIME_RANGE = 'TIME_RANGE',\n HOUR_MINUTE_RANGE = 'HOUR_MINUTE_RANGE',\n JS_CODE = 'JS_CODE',\n COOKIE = 'COOKIE',\n EVENT = 'EVENT',\n BROWSER = 'BROWSER',\n OPERATING_SYSTEM = 'OPERATING_SYSTEM',\n DOM_ELEMENT = 'DOM_ELEMENT',\n MOUSE_OUT = 'MOUSE_OUT',\n TARGET_EXPERIMENT = 'TARGET_EXPERIMENT',\n TARGET_PERSONALIZATION = 'TARGET_PERSONALIZATION',\n EXCLUSIVE_EXPERIMENT = 'EXCLUSIVE_EXPERIMENT',\n CONVERSIONS = 'CONVERSIONS',\n CUSTOM_DATUM = 'CUSTOM_DATUM',\n YSANCE_SEGMENT = 'YSANCE_SEGMENT',\n YSANCE_ATTRIBUT = 'YSANCE_ATTRIBUT',\n TEALIUM_BADGE = 'TEALIUM_BADGE',\n TEALIUM_AUDIENCE = 'TEALIUM_AUDIENCE',\n PRICE_OF_DISPLAYED_PAGE = 'PRICE_OF_DISPLAYED_PAGE',\n NUMBER_OF_VISITED_PAGES = 'NUMBER_OF_VISITED_PAGES',\n VISITED_PAGES = 'VISITED_PAGES',\n CUSTOM = 'CUSTOM',\n EXPLICIT_TRIGGER = 'EXPLICIT_TRIGGER',\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"types.js","names":["Operator","And","Or","exports","ValueMatchType","TRUE","FALSE","EXACT","CONTAINS","REGULAR_EXPRESSION","EQUAL","LOWER","GREATER","UNDEFINED","AMONG_VALUES","VisitorType","NEW","RETURNING","MatchTypeVariation","ANY","MatchTypeTest","ALL","TEST","PERSO","MatchType","VersionMatchType","NameMatchType","OPTIONAL","TargetingType","PAGE_URL","PAGE_TITLE","LANDING_PAGE","ORIGIN","ORIGIN_TYPE","REFERRERS","NEW_VISITORS","INTERESTS","BROWSER_LANGUAGE","GEOLOCATION","DEVICE_TYPE","SCREEN_DIMENSION","VISITOR_IP","AD_BLOCKER","PREVIOUS_PAGE","KEY_PAGES","PAGE_VIEWS","FIRST_VISIT","LAST_VISIT","ACTIVE_SESSION","TIME_SINCE_PAGE_LOAD","SAME_DAY_VISITS","VISITS","VISITS_BY_PAGE","VISITOR_CODE","SDK_LANGUAGE","INTERNAL_SEARCH_KEYWORDS","TABS_ON_SITE","CONVERSION_PROBABILITY","HEAT_SLICE","SKY_STATUS","TEMPERATURE","DAY_NIGHT","FORECAST_SKY_STATUS","FORECAST_TEMPERATURE","DAY_OF_WEEK","TIME_RANGE","HOUR_MINUTE_RANGE","JS_CODE","COOKIE","EVENT","BROWSER","OPERATING_SYSTEM","DOM_ELEMENT","MOUSE_OUT","TARGET_EXPERIMENT","TARGET_FEATURE_FLAG","TARGET_PERSONALIZATION","EXCLUSIVE_EXPERIMENT","EXCLUSIVE_FEATURE_FLAG","CONVERSIONS","CUSTOM_DATUM","YSANCE_SEGMENT","SEGMENT","YSANCE_ATTRIBUT","TEALIUM_BADGE","TEALIUM_AUDIENCE","PRICE_OF_DISPLAYED_PAGE","NUMBER_OF_VISITED_PAGES","VISITED_PAGES","CUSTOM","EXPLICIT_TRIGGER","APPLICATION_VERSION"],"sources":["../../src/targeting/types.ts"],"sourcesContent":["import { MappedRuleType } from 'src/clientConfiguration/types';\nimport { KameleoonVisitorDataType } from 'src/kameleoonData/types';\nimport { FeatureFlagVariationsType } from 'src/storage/types';\nimport { ExternalPackageInfoType } from 'src/types';\nimport { ConditionDataType, ConditionType } from './conditions';\nimport { Node } from './node';\nimport { Tree } from './tree';\n\nexport enum Operator {\n And = 'AND',\n Or = 'OR',\n}\n\nexport type NonLeafNodeType = {\n left: Node;\n right: Node;\n value: Operator;\n};\n\nexport type LeafNodeType = {\n left: undefined;\n right: undefined;\n value: ConditionType;\n};\n\nexport type NodeValueType = ConditionType | Operator;\n\nexport type ConditionLevelType = {\n orOperators: boolean[];\n conditions: ConditionDataType[];\n};\n\nexport type SegmentType = {\n id: string;\n name: string;\n conditionsData: {\n firstLevelOrOperators: boolean[];\n firstLevel: ConditionLevelType[];\n };\n};\n\nexport type NestedConditionGroupType = {\n operators: Operator[];\n conditions: ConditionDataType[];\n};\n\nexport type GroupedSegmentsType = {\n topLevelOperators: Operator[];\n nestedConditions: NestedConditionGroupType[];\n};\n\nexport type TargetingDataType = {\n [visitorCode: string]: KameleoonVisitorDataType;\n};\n\nexport type EvaluationDataType = {\n targetingData?: KameleoonVisitorDataType;\n variationData: FeatureFlagVariationsType;\n ruleMap?: Map<number, MappedRuleType>;\n sdkInfo: ExternalPackageInfoType;\n experimentId: number | null;\n visitorCode: string;\n segments?: Map<string, SegmentType>;\n trees?: Map<string, Tree>;\n};\n\nexport enum ValueMatchType {\n TRUE = 'TRUE',\n FALSE = 'FALSE',\n EXACT = 'EXACT',\n CONTAINS = 'CONTAINS',\n REGULAR_EXPRESSION = 'REGULAR_EXPRESSION',\n EQUAL = 'EQUAL',\n LOWER = 'LOWER',\n GREATER = 'GREATER',\n UNDEFINED = 'UNDEFINED',\n AMONG_VALUES = 'AMONG_VALUES',\n}\n\nexport enum VisitorType {\n NEW = 'NEW',\n RETURNING = 'RETURNING',\n}\n\nexport enum MatchTypeVariation {\n ANY = 'ANY',\n EXACT = 'EXACT',\n}\n\nexport enum MatchTypeTest {\n ALL = 'ALL',\n TEST = 'TEST',\n PERSO = 'PERSO',\n}\n\n// --- Note ---\n// Starting the merge of `matchType` with the release of new conditions\n// Now it contains a couple of sub types, in future API version all match types\n// will be accumulated in this enum\nexport enum MatchType {\n // -- Sub Type One\n EXACT = 'EXACT',\n CONTAINS = 'CONTAINS',\n REGULAR_EXPRESSION = 'REGULAR_EXPRESSION',\n // -- Sub Type Two\n GREATER = 'GREATER',\n EQUAL = 'EQUAL',\n LOWER = 'LOWER',\n}\n\nexport enum VersionMatchType {\n GREATER = 'GREATER',\n EQUAL = 'EQUAL',\n LOWER = 'LOWER',\n}\n\nexport enum NameMatchType {\n EXACT = 'EXACT',\n CONTAINS = 'CONTAINS',\n REGULAR_EXPRESSION = 'REGULAR_EXPRESSION',\n OPTIONAL = 'OPTIONAL',\n}\n\nexport enum TargetingType {\n PAGE_URL = 'PAGE_URL',\n PAGE_TITLE = 'PAGE_TITLE',\n LANDING_PAGE = 'LANDING_PAGE',\n ORIGIN = 'ORIGIN',\n ORIGIN_TYPE = 'ORIGIN_TYPE',\n REFERRERS = 'REFERRERS',\n NEW_VISITORS = 'NEW_VISITORS',\n INTERESTS = 'INTERESTS',\n BROWSER_LANGUAGE = 'BROWSER_LANGUAGE',\n GEOLOCATION = 'GEOLOCATION',\n DEVICE_TYPE = 'DEVICE_TYPE',\n SCREEN_DIMENSION = 'SCREEN_DIMENSION',\n VISITOR_IP = 'VISITOR_IP',\n AD_BLOCKER = 'AD_BLOCKER',\n PREVIOUS_PAGE = 'PREVIOUS_PAGE',\n KEY_PAGES = 'KEY_PAGES',\n PAGE_VIEWS = 'PAGE_VIEWS',\n FIRST_VISIT = 'FIRST_VISIT',\n LAST_VISIT = 'LAST_VISIT',\n ACTIVE_SESSION = 'ACTIVE_SESSION',\n TIME_SINCE_PAGE_LOAD = 'TIME_SINCE_PAGE_LOAD',\n SAME_DAY_VISITS = 'SAME_DAY_VISITS',\n VISITS = 'VISITS',\n VISITS_BY_PAGE = 'VISITS_BY_PAGE',\n VISITOR_CODE = 'VISITOR_CODE',\n SDK_LANGUAGE = 'SDK_LANGUAGE',\n INTERNAL_SEARCH_KEYWORDS = 'INTERNAL_SEARCH_KEYWORDS',\n TABS_ON_SITE = 'TABS_ON_SITE',\n CONVERSION_PROBABILITY = 'CONVERSION_PROBABILITY',\n HEAT_SLICE = 'HEAT_SLICE',\n SKY_STATUS = 'SKY_STATUS',\n TEMPERATURE = 'TEMPERATURE',\n DAY_NIGHT = 'DAY_NIGHT',\n FORECAST_SKY_STATUS = 'FORECAST_SKY_STATUS',\n FORECAST_TEMPERATURE = 'FORECAST_TEMPERATURE',\n DAY_OF_WEEK = 'DAY_OF_WEEK',\n TIME_RANGE = 'TIME_RANGE',\n HOUR_MINUTE_RANGE = 'HOUR_MINUTE_RANGE',\n JS_CODE = 'JS_CODE',\n COOKIE = 'COOKIE',\n EVENT = 'EVENT',\n BROWSER = 'BROWSER',\n OPERATING_SYSTEM = 'OPERATING_SYSTEM',\n DOM_ELEMENT = 'DOM_ELEMENT',\n MOUSE_OUT = 'MOUSE_OUT',\n TARGET_EXPERIMENT = 'TARGET_EXPERIMENT',\n TARGET_FEATURE_FLAG = 'TARGET_FEATURE_FLAG',\n TARGET_PERSONALIZATION = 'TARGET_PERSONALIZATION',\n EXCLUSIVE_EXPERIMENT = 'EXCLUSIVE_EXPERIMENT',\n EXCLUSIVE_FEATURE_FLAG = 'EXCLUSIVE_FEATURE_FLAG',\n CONVERSIONS = 'CONVERSIONS',\n CUSTOM_DATUM = 'CUSTOM_DATUM',\n YSANCE_SEGMENT = 'YSANCE_SEGMENT',\n SEGMENT = 'SEGMENT',\n YSANCE_ATTRIBUT = 'YSANCE_ATTRIBUT',\n TEALIUM_BADGE = 'TEALIUM_BADGE',\n TEALIUM_AUDIENCE = 'TEALIUM_AUDIENCE',\n PRICE_OF_DISPLAYED_PAGE = 'PRICE_OF_DISPLAYED_PAGE',\n NUMBER_OF_VISITED_PAGES = 'NUMBER_OF_VISITED_PAGES',\n VISITED_PAGES = 'VISITED_PAGES',\n CUSTOM = 'CUSTOM',\n EXPLICIT_TRIGGER = 'EXPLICIT_TRIGGER',\n APPLICATION_VERSION = 'APPLICATION_VERSION',\n}\n"],"mappings":"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"}