@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.Cookie=void 0;var _tsRes=require("ts-res"),_kameleoonData=require("../../kameleoonData"),_kameleoonError=require("../../kameleoonError"),_types=require("../types"),_utilities=require("../../utilities");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 Cookie=function(){function a(b){var c=b.name,d=b.value,e=b.nameMatchType,f=b.valueMatchType;_classCallCheck(this,a),_defineProperty(this,"cookie",void 0),_defineProperty(this,"keyMatchType",void 0),_defineProperty(this,"valueMatchType",void 0),this.cookie={key:null!==c&&void 0!==c?c:void 0,value:null!==d&&void 0!==d?d:void 0},this.keyMatchType=e,this.valueMatchType=f}return _createClass(a,[{key:"evaluate",value:function evaluate(a){var b,c=this,d=a.targetingData,e=!this.cookie.key&&!this.cookie.value,f=!!this.valueMatchType&&!!this.keyMatchType;if(e||!f)return(0,_tsRes.Ok)(!1);var g=this.extractCookie(),h=(null===d||void 0===d||null===(b=d[_kameleoonData.KameleoonData.Cookie])||void 0===b?void 0:b.cookie)||[];return(0,_tsRes.Ok)(g.some(function(a){return c.checkCondition(a)})||h.some(function(a){return c.checkCondition(a)}))}},{key:"extractCookie",value:function extractCookie(){return"undefined"!=typeof document&&document.cookie?_kameleoonData.Cookie.fromString(document.cookie).data.cookie:[]}},{key:"checkCondition",value:function checkCondition(a){var b=this.keyMatchType,c=a.key,d=a.value;if(b===_types.NameMatchType.OPTIONAL){var e=this.cookie;return!!this.isOptionalCookie(e)&&this.compareCookieValue(d,e.value)}var f,g=this.cookie,h=g.key,i=g.value;return b===_types.NameMatchType.EXACT?f=c===h:b===_types.NameMatchType.CONTAINS?f=c.includes(h):b===_types.NameMatchType.REGULAR_EXPRESSION?f=_utilities.Utilities.parseRegExp(h).test(c):(0,_kameleoonError.exhaustCheck)(b),f&&this.compareCookieValue(d,i)}},{key:"compareCookieValue",value:function compareCookieValue(a,b){var c=this.valueMatchType;return c===_types.ValueMatchType.EXACT?a===b:c===_types.ValueMatchType.CONTAINS?a.includes(b):c===_types.ValueMatchType.REGULAR_EXPRESSION&&_utilities.Utilities.parseRegExp(b).test(a)}},{key:"isOptionalCookie",value:function isOptionalCookie(a){var b=a.value;return"undefined"!=typeof b}}]),a}();exports.Cookie=Cookie;
2
+ //# sourceMappingURL=cookie.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cookie.js","names":["Cookie","a","b","name","value","nameMatchType","valueMatchType","_classCallCheck","_defineProperty","cookie","key","keyMatchType","_createClass","evaluate","c","targetingData","isEmptyCookie","isValidMatchType","Ok","extractedCookie","extractCookie","cookieData","KameleoonData","some","pair","checkCondition","document","CookieData","fromString","data","dataCookie","cookieMatchType","NameMatchType","OPTIONAL","conditionCookie","isOptionalCookie","compareCookieValue","keyMatch","g","compareKey","compareValue","EXACT","CONTAINS","includes","REGULAR_EXPRESSION","Utilities","parseRegExp","test","exhaustCheck","ValueMatchType","exports"],"sources":["../../../src/targeting/conditions/cookie.ts"],"sourcesContent":["import { Ok, Result } from 'ts-res';\nimport { Cookie as CookieData, KameleoonData } from 'src/kameleoonData';\nimport { exhaustCheck, KameleoonError } from 'src/kameleoonError';\nimport {\n EvaluationDataType,\n NameMatchType,\n ValueMatchType,\n} from 'src/targeting/types';\nimport { CookieType, OptionalCookieType } from 'src/kameleoonData/types';\nimport { Utilities } from 'src/utilities';\nimport { ConditionDataType, ICondition } from './types';\n\nexport class Cookie implements ICondition {\n private cookie: Partial<CookieType>;\n private keyMatchType?: NameMatchType | null;\n private valueMatchType?: ValueMatchType | null;\n\n constructor({\n name,\n value,\n nameMatchType,\n valueMatchType,\n }: ConditionDataType) {\n this.cookie = {\n key: name ?? undefined,\n value: value ?? undefined,\n };\n this.keyMatchType = nameMatchType;\n this.valueMatchType = valueMatchType;\n }\n\n public evaluate({\n targetingData,\n }: EvaluationDataType): Result<boolean, KameleoonError> {\n const isEmptyCookie = !this.cookie.key && !this.cookie.value;\n const isValidMatchType =\n Boolean(this.valueMatchType) && Boolean(this.keyMatchType);\n\n if (isEmptyCookie || !isValidMatchType) {\n return Ok(false);\n }\n\n const extractedCookie = this.extractCookie();\n const cookieData = targetingData?.[KameleoonData.Cookie]?.cookie || [];\n\n return Ok(\n extractedCookie.some((pair) => this.checkCondition(pair)) ||\n cookieData.some((pair) => this.checkCondition(pair)),\n );\n }\n\n private extractCookie(): CookieType[] {\n if (typeof document !== 'undefined' && document.cookie) {\n return CookieData.fromString(document.cookie).data.cookie;\n }\n\n return [];\n }\n\n private checkCondition(dataCookie: CookieType): boolean {\n const cookieMatchType = this.keyMatchType!;\n const { key, value } = dataCookie;\n\n if (cookieMatchType === NameMatchType.OPTIONAL) {\n const conditionCookie = this.cookie;\n\n return this.isOptionalCookie(conditionCookie)\n ? this.compareCookieValue(value, conditionCookie.value)\n : false;\n }\n\n const { key: compareKey, value: compareValue } = this.cookie as CookieType;\n\n let keyMatch: boolean;\n\n switch (cookieMatchType) {\n case NameMatchType.EXACT:\n keyMatch = key === compareKey;\n break;\n case NameMatchType.CONTAINS:\n keyMatch = key.includes(compareKey);\n break;\n case NameMatchType.REGULAR_EXPRESSION:\n keyMatch = Utilities.parseRegExp(compareKey).test(key);\n break;\n default:\n exhaustCheck(cookieMatchType);\n }\n\n return keyMatch && this.compareCookieValue(value, compareValue);\n }\n\n private compareCookieValue(value: string, compareValue: string): boolean {\n const valueMatchType = this.valueMatchType!;\n\n switch (valueMatchType) {\n case ValueMatchType.EXACT:\n return value === compareValue;\n case ValueMatchType.CONTAINS:\n return value.includes(compareValue);\n case ValueMatchType.REGULAR_EXPRESSION:\n return Utilities.parseRegExp(compareValue).test(value);\n default:\n return false;\n }\n }\n\n private isOptionalCookie(\n cookie: Partial<CookieType>,\n ): cookie is OptionalCookieType {\n const { value } = cookie;\n\n return typeof value !== 'undefined';\n }\n}\n"],"mappings":"kgDAYa,CAAAA,MAAM,YAKjB,SAAAC,EAAAC,CAAA,CAKsB,IAJpB,CAAAC,CAAI,CAAAD,CAAA,CAAJC,IAAI,CACJC,CAAK,CAAAF,CAAA,CAALE,KAAK,CACLC,CAAa,CAAAH,CAAA,CAAbG,aAAa,CACbC,CAAc,CAAAJ,CAAA,CAAdI,cAAc,CAAAC,eAAA,MAAAN,CAAA,EAAAO,eAAA,uBAAAA,eAAA,6BAAAA,eAAA,+BAEd,IAAI,CAACC,MAAM,CAAG,CACZC,GAAG,QAAEP,CAAI,WAAJA,CAAI,CAAJA,CAAI,OAAa,CACtBC,KAAK,QAAEA,CAAK,WAALA,CAAK,CAALA,CAAK,OACd,CAAC,CACD,IAAI,CAACO,YAAY,CAAGN,CAAa,CACjC,IAAI,CAACC,cAAc,CAAGA,CACxB,CAAC,OAAAM,YAAA,CAAAX,CAAA,GAAAS,GAAA,YAAAN,KAAA,CAED,SAAAS,SAAAZ,CAAA,CAEwD,KAAAC,CAAA,CAAAY,CAAA,MADtDC,CAAa,CAAAd,CAAA,CAAbc,aAAa,CAEPC,CAAa,CAAG,CAAC,IAAI,CAACP,MAAM,CAACC,GAAG,EAAI,CAAC,IAAI,CAACD,MAAM,CAACL,KAAK,CACtDa,CAAgB,CACpB,EAAQ,IAAI,CAACX,cAAc,IAAa,IAAI,CAACK,YAAa,CAE5D,GAAIK,CAAa,EAAI,CAACC,CAAgB,CACpC,MAAO,GAAAC,SAAE,KAAO,CACjB,GAEK,CAAAC,CAAe,CAAG,IAAI,CAACC,aAAa,EAAE,CACtCC,CAAU,CAAG,QAAAN,CAAa,WAAbA,CAAa,UAAAb,CAAA,CAAba,CAAa,CAAGO,4BAAa,CAACtB,MAAM,CAAC,YAAAE,CAAA,QAArCA,CAAA,CAAuCO,MAAM,GAAI,EAAE,CAEtE,MAAO,GAAAS,SAAE,EACPC,CAAe,CAACI,IAAI,CAAC,SAACC,CAAI,QAAK,CAAAV,CAAI,CAACW,cAAc,CAACD,CAAI,CAAC,EAAC,EACvDH,CAAU,CAACE,IAAI,CAAC,SAACC,CAAI,QAAK,CAAAV,CAAI,CAACW,cAAc,CAACD,CAAI,CAAC,EAAC,CAE1D,CAAC,GAAAd,GAAA,iBAAAN,KAAA,CAED,SAAAgB,cAAA,CAAsC,OACZ,WAAW,EAA/B,MAAO,CAAAM,QAAwB,EAAIA,QAAQ,CAACjB,MAAM,CAC7CkB,qBAAU,CAACC,UAAU,CAACF,QAAQ,CAACjB,MAAM,CAAC,CAACoB,IAAI,CAACpB,MAAM,CAGpD,EACT,CAAC,GAAAC,GAAA,kBAAAN,KAAA,CAED,SAAAqB,eAAuBK,CAAsB,CAAW,IAChD,CAAAC,CAAe,CAAG,IAAI,CAACpB,YAAa,CAClCD,CAAG,CAAYoB,CAAU,CAAzBpB,GAAG,CAAEN,CAAK,CAAK0B,CAAU,CAApB1B,KAAK,CAElB,GAAI2B,CAAe,GAAKC,oBAAa,CAACC,QAAQ,CAAE,CAC9C,GAAM,CAAAC,CAAe,CAAG,IAAI,CAACzB,MAAM,CAEnC,QAAO,IAAI,CAAC0B,gBAAgB,CAACD,CAAe,CAAC,EACzC,IAAI,CAACE,kBAAkB,CAAChC,CAAK,CAAE8B,CAAe,CAAC9B,KAAK,CAE1D,CAAC,GAIG,CAAAiC,CAAiB,CAAAC,CAAA,CAF4B,IAAI,CAAC7B,MAAM,CAA/C8B,CAAU,CAAAD,CAAA,CAAf5B,GAAG,CAAqB8B,CAAY,CAAAF,CAAA,CAAnBlC,KAAK,CAkB9B,MAdQ,CAAA2B,CAAe,GAChBC,oBAAa,CAACS,KAAK,CACtBJ,CAAQ,CAAG3B,CAAG,GAAK6B,CAAU,CAFzBR,CAAe,GAIhBC,oBAAa,CAACU,QAAQ,CACzBL,CAAQ,CAAG3B,CAAG,CAACiC,QAAQ,CAACJ,CAAU,CAAC,CAL/BR,CAAe,GAOhBC,oBAAa,CAACY,kBAAkB,CACnCP,CAAQ,CAAGQ,oBAAS,CAACC,WAAW,CAACP,CAAU,CAAC,CAACQ,IAAI,CAACrC,CAAG,CAAC,CAGtD,GAAAsC,4BAAY,EAACjB,CAAe,CAAC,CAG1BM,CAAQ,EAAI,IAAI,CAACD,kBAAkB,CAAChC,CAAK,CAAEoC,CAAY,CAChE,CAAC,GAAA9B,GAAA,sBAAAN,KAAA,CAED,SAAAgC,mBAA2BhC,CAAa,CAAEoC,CAAoB,CAAW,CACvE,GAAM,CAAAlC,CAAc,CAAG,IAAI,CAACA,cAAe,CAAC,MAEpC,CAAAA,CAAc,GACf2C,qBAAc,CAACR,KAAK,CAChBrC,CAAK,GAAKoC,CAAY,CAFzBlC,CAAc,GAGf2C,qBAAc,CAACP,QAAQ,CACnBtC,CAAK,CAACuC,QAAQ,CAACH,CAAY,CAAC,CAJ/BlC,CAAc,GAKf2C,qBAAc,CAACL,kBAAkB,EAC7BC,oBAAS,CAACC,WAAW,CAACN,CAAY,CAAC,CAACO,IAAI,CAAC3C,CAAK,CAI3D,CAAC,GAAAM,GAAA,oBAAAN,KAAA,CAED,SAAA+B,iBACE1B,CAA2B,CACG,CAC9B,GAAQ,CAAAL,CAAK,CAAKK,CAAM,CAAhBL,KAAK,CAEb,MAAwB,WAAW,EAA5B,MAAO,CAAAA,CAChB,CAAC,IAAAH,CAAA,IAAAiD,OAAA,CAAAlD,MAAA,CAAAA,MAAA"}
@@ -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 CustomDataCondition implements ICondition {
5
+ export declare class CustomData implements ICondition {
6
6
  private customDataIndex;
7
7
  private matchType?;
8
8
  private conditionValue?;
@@ -0,0 +1,2 @@
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.CustomData=void 0;var _tsRes=require("ts-res"),_kameleoonData=require("../../kameleoonData"),_kameleoonError=require("../../kameleoonError"),_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 CustomData=function(){function a(b){var c=b.customDataIndex,d=b.valueMatchType,e=b.value;_classCallCheck(this,a),_defineProperty(this,"customDataIndex",void 0),_defineProperty(this,"matchType",void 0),_defineProperty(this,"conditionValue",void 0),_defineProperty(this,"error",void 0),this.customDataIndex=c?+c:null,this.matchType=d,this.conditionValue=e}return _createClass(a,[{key:"evaluate",value:function evaluate(a){var b=a.targetingData;if("number"==typeof this.customDataIndex){var c,d=null===b||void 0===b||null===(c=b[_kameleoonData.KameleoonData.CustomData])||void 0===c?void 0:c[this.customDataIndex];if(d){var e=d.value,f=this.checkCondition(e);return this.error?(0,_tsRes.Err)(this.error):(0,_tsRes.Ok)(f)}}return(0,_tsRes.Ok)(this.matchType===_types.ValueMatchType.UNDEFINED)}},{key:"checkCondition",value:function checkCondition(a){var b=this;if("string"!=typeof this.conditionValue&&this.matchType!==_types.ValueMatchType.TRUE&&this.matchType!==_types.ValueMatchType.FALSE)return!1;var c=this.conditionValue;if(this.matchType===_types.ValueMatchType.AMONG_VALUES){var d=this.parseArray(c);if(!d.ok)return this.error=d.error,!1;var e=new Set(d.data);return Array.isArray(a)?a.some(function(a){return e.has(a)}):d.data.includes(a)}if(Array.isArray(a))return a.some(function(a){return b.checkCondition(a)});switch(this.matchType){case _types.ValueMatchType.CONTAINS:return a.includes(c);case _types.ValueMatchType.EXACT:return a===this.conditionValue;case _types.ValueMatchType.REGULAR_EXPRESSION:return _utilities.Utilities.parseRegExp(c).test(a);case _types.ValueMatchType.LOWER:return+a<+this.conditionValue;case _types.ValueMatchType.EQUAL:return+a===+this.conditionValue;case _types.ValueMatchType.GREATER:return+a>+this.conditionValue;case _types.ValueMatchType.TRUE:return"true"===a.toLowerCase();case _types.ValueMatchType.FALSE:return"false"===a.toLowerCase();default:return!1;}}},{key:"parseArray",value:function parseArray(a){try{var b=JSON.parse(a);if(Array.isArray(b))return(0,_tsRes.Ok)(b)}catch(b){return(0,_tsRes.Err)(new _kameleoonError.KameleoonError(_kameleoonError.KameleoonException.AmongValuesCheck,b,a))}return(0,_tsRes.Ok)([])}}]),a}();exports.CustomData=CustomData;
2
+ //# sourceMappingURL=customData.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"customData.js","names":["CustomData","a","b","customDataIndex","valueMatchType","value","_classCallCheck","_defineProperty","matchType","conditionValue","_createClass","key","evaluate","targetingData","c","customData","KameleoonData","customDataValue","result","checkCondition","error","Err","Ok","ValueMatchType","UNDEFINED","TRUE","FALSE","AMONG_VALUES","parseArray","ok","resultData","Set","data","Array","isArray","some","has","includes","CONTAINS","EXACT","REGULAR_EXPRESSION","Utilities","parseRegExp","test","LOWER","EQUAL","GREATER","toLowerCase","JSON","parse","err","KameleoonError","KameleoonException","AmongValuesCheck","exports"],"sources":["../../../src/targeting/conditions/customData.ts"],"sourcesContent":["import { Err, Ok, Result } from 'ts-res';\nimport { CustomDataType, KameleoonData } from 'src/kameleoonData';\nimport { KameleoonError, KameleoonException } from 'src/kameleoonError';\nimport { Utilities } from 'src/utilities';\nimport { EvaluationDataType, ValueMatchType } from 'src/targeting/types';\nimport { ConditionDataType, ICondition } from './types';\n\nexport class CustomData implements ICondition {\n private customDataIndex: number | null;\n private matchType?: ValueMatchType | null;\n private conditionValue?: string | null;\n private error?: KameleoonError;\n\n constructor({ customDataIndex, valueMatchType, value }: ConditionDataType) {\n this.customDataIndex = customDataIndex ? Number(customDataIndex) : null;\n this.matchType = valueMatchType;\n this.conditionValue = value;\n }\n\n public evaluate({\n targetingData,\n }: EvaluationDataType): Result<boolean, KameleoonError> {\n if (typeof this.customDataIndex === 'number') {\n const customData =\n targetingData?.[KameleoonData.CustomData]?.[this.customDataIndex];\n\n if (customData) {\n const { value: customDataValue } = customData;\n const result = this.checkCondition(customDataValue);\n\n if (this.error) {\n return Err(this.error);\n }\n\n return Ok(result);\n }\n }\n\n return Ok(this.matchType === ValueMatchType.UNDEFINED);\n }\n\n private checkCondition(\n customDataValue: CustomDataType['value'] | string,\n ): boolean {\n if (\n typeof this.conditionValue !== 'string' &&\n this.matchType !== ValueMatchType.TRUE &&\n this.matchType !== ValueMatchType.FALSE\n ) {\n return false;\n }\n\n // --- Note ---\n // `ValueMatchType.TRUE` and `ValueMatchType.FALSE` do not use condition value\n // so we can safely assume that `this.conditionValue` is a string at this point\n const conditionValue = this.conditionValue as string;\n\n // --- Note ---\n // `AMONG_VALUES` is checked separately to avoid recursion overhead\n // for `JSON.parse` inside `this.parseArray`\n if (this.matchType === ValueMatchType.AMONG_VALUES) {\n const result = this.parseArray(conditionValue);\n\n if (!result.ok) {\n this.error = result.error;\n\n return false;\n }\n\n const resultData = new Set(result.data);\n\n return Array.isArray(customDataValue)\n ? customDataValue.some((value) => resultData.has(value))\n : result.data.includes(customDataValue);\n }\n\n if (Array.isArray(customDataValue)) {\n return customDataValue.some((value) => this.checkCondition(value));\n }\n\n switch (this.matchType) {\n case ValueMatchType.CONTAINS:\n return customDataValue.includes(conditionValue);\n case ValueMatchType.EXACT:\n return customDataValue === this.conditionValue;\n case ValueMatchType.REGULAR_EXPRESSION:\n return Utilities.parseRegExp(conditionValue).test(customDataValue);\n case ValueMatchType.LOWER:\n return Number(customDataValue) < Number(this.conditionValue);\n case ValueMatchType.EQUAL:\n return Number(customDataValue) === Number(this.conditionValue);\n case ValueMatchType.GREATER:\n return Number(customDataValue) > Number(this.conditionValue);\n case ValueMatchType.TRUE:\n return customDataValue.toLowerCase() === 'true';\n case ValueMatchType.FALSE:\n return customDataValue.toLowerCase() === 'false';\n default:\n return false;\n }\n }\n\n private parseArray(value: string): Result<string[], KameleoonError> {\n try {\n const result = JSON.parse(value);\n\n if (Array.isArray(result)) {\n return Ok(result);\n }\n } catch (err) {\n return Err(\n new KameleoonError(KameleoonException.AmongValuesCheck, err, value),\n );\n }\n\n return Ok([]);\n }\n}\n"],"mappings":"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"}
@@ -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 DeviceCondition implements ICondition {
5
+ export declare class Device implements ICondition {
6
6
  private device?;
7
7
  constructor({ device }: ConditionDataType);
8
8
  evaluate({ targetingData, }: EvaluationDataType): Result<boolean, KameleoonError>;
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.TargetExperimentCondition=void 0;var _tsRes=require("ts-res"),_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 TargetExperimentCondition=/*#__PURE__*/function(){function a(b){var c=b.variation,d=b.experiment,e=b.variationMatchType;_classCallCheck(this,a),_defineProperty(this,"experimentId",void 0),_defineProperty(this,"variationId",void 0),_defineProperty(this,"matchType",void 0),this.experimentId=d,this.variationId=c,this.matchType=e}return _createClass(a,[{key:"evaluate",value:function evaluate(a){var b=a.variationData;if(!this.experimentId)return(0,_tsRes.Ok)(!1);this.matchType!==_types.MatchTypeVariation.EXACT||this.variationId||(0,_tsRes.Ok)(!1);var c=this.checkCondition({variationId:this.variationId,experimentId:this.experimentId,variationData:b});return(0,_tsRes.Ok)(c)}},{key:"checkCondition",value:function checkCondition(a){var b=a.variationId,c=a.experimentId,d=a.variationData,e=d[c+""];switch(this.matchType){case _types.MatchTypeVariation.EXACT:return(null===e||void 0===e?void 0:e.variationId)===b;case _types.MatchTypeVariation.ANY:return!!e;default:return!1;}}}]),a}();exports.TargetExperimentCondition=TargetExperimentCondition;
2
- //# sourceMappingURL=targetExperimentCondition.js.map
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.Device=void 0;var _tsRes=require("ts-res"),_kameleoonData=require("../../kameleoonData");function _typeof(a){"@babel/helpers - typeof";return _typeof="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(a){return typeof a}:function(a){return a&&"function"==typeof Symbol&&a.constructor===Symbol&&a!==Symbol.prototype?"symbol":typeof a},_typeof(a)}function _classCallCheck(a,b){if(!(a instanceof b))throw new TypeError("Cannot call a class as a function")}function _defineProperties(a,b){for(var c,d=0;d<b.length;d++)c=b[d],c.enumerable=c.enumerable||!1,c.configurable=!0,"value"in c&&(c.writable=!0),Object.defineProperty(a,_toPropertyKey(c.key),c)}function _createClass(a,b,c){return b&&_defineProperties(a.prototype,b),c&&_defineProperties(a,c),Object.defineProperty(a,"prototype",{writable:!1}),a}function _defineProperty(a,b,c){return b=_toPropertyKey(b),b in a?Object.defineProperty(a,b,{value:c,enumerable:!0,configurable:!0,writable:!0}):a[b]=c,a}function _toPropertyKey(a){var b=_toPrimitive(a,"string");return"symbol"===_typeof(b)?b:b+""}function _toPrimitive(a,b){if("object"!==_typeof(a)||null===a)return a;var c=a[Symbol.toPrimitive];if(c!==void 0){var d=c.call(a,b||"default");if("object"!==_typeof(d))return d;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===b?String:Number)(a)}var Device=function(){function a(b){var c=b.device;_classCallCheck(this,a),_defineProperty(this,"device",void 0),this.device=c}return _createClass(a,[{key:"evaluate",value:function evaluate(a){var b=a.targetingData,c=null===b||void 0===b?void 0:b[_kameleoonData.KameleoonData.Device];if(c){var d=c.device;return(0,_tsRes.Ok)(d===this.device)}return(0,_tsRes.Ok)(!1)}}]),a}();exports.Device=Device;
2
+ //# sourceMappingURL=device.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"device.js","names":["Device","a","b","device","_classCallCheck","_defineProperty","_createClass","key","value","evaluate","targetingData","deviceData","KameleoonData","Ok","exports"],"sources":["../../../src/targeting/conditions/device.ts"],"sourcesContent":["import { Ok, Result } from 'ts-res';\nimport { DeviceType, KameleoonData } from 'src/kameleoonData';\nimport { KameleoonError } from 'src/kameleoonError';\nimport { EvaluationDataType } from 'src/targeting/types';\nimport { ConditionDataType, ICondition } from './types';\n\nexport class Device implements ICondition {\n private device?: DeviceType | null;\n\n constructor({ device }: ConditionDataType) {\n this.device = device;\n }\n\n public evaluate({\n targetingData,\n }: EvaluationDataType): Result<boolean, KameleoonError> {\n const deviceData = targetingData?.[KameleoonData.Device];\n\n if (deviceData) {\n const { device } = deviceData;\n\n return Ok(device === this.device);\n }\n\n return Ok(false);\n }\n}\n"],"mappings":"i5CAMa,CAAAA,MAAM,YAGjB,SAAAC,EAAAC,CAAA,CAA2C,IAA7B,CAAAC,CAAM,CAAAD,CAAA,CAANC,MAAM,CAAAC,eAAA,MAAAH,CAAA,EAAAI,eAAA,uBAClB,IAAI,CAACF,MAAM,CAAGA,CAChB,CAAC,OAAAG,YAAA,CAAAL,CAAA,GAAAM,GAAA,YAAAC,KAAA,CAED,SAAAC,SAAAR,CAAA,CAEwD,IADtD,CAAAS,CAAa,CAAAT,CAAA,CAAbS,aAAa,CAEPC,CAAU,QAAGD,CAAa,WAAbA,CAAa,QAAbA,CAAa,CAAGE,4BAAa,CAACZ,MAAM,CAAC,CAExD,GAAIW,CAAU,CAAE,CACd,GAAQ,CAAAR,CAAM,CAAKQ,CAAU,CAArBR,MAAM,CAEd,MAAO,GAAAU,SAAE,EAACV,CAAM,GAAK,IAAI,CAACA,MAAM,CAClC,CAEA,MAAO,GAAAU,SAAE,KACX,CAAC,IAAAZ,CAAA,IAAAa,OAAA,CAAAd,MAAA,CAAAA,MAAA"}
@@ -2,6 +2,6 @@ import { Result } from 'ts-res';
2
2
  import { KameleoonError } from '../../kameleoonError';
3
3
  import { EvaluationDataType } from '../../targeting/types';
4
4
  import { ICondition } from './types';
5
- export declare class ExclusiveExperimentCondition implements ICondition {
6
- evaluate({ experimentId, variationData, }: EvaluationDataType): Result<boolean, KameleoonError>;
5
+ export declare class ExclusiveCampaign implements ICondition {
6
+ evaluate({ variationData, experimentId, }: EvaluationDataType): Result<boolean, KameleoonError>;
7
7
  }
@@ -0,0 +1,2 @@
1
+ "use strict";var _tsRes=require("ts-res");Object.defineProperty(exports,"__esModule",{value:!0}),exports.ExclusiveCampaign=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 _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 _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 ExclusiveCampaign=function(){function a(){_classCallCheck(this,a)}return _createClass(a,[{key:"evaluate",value:function evaluate(a){var b=a.variationData,c=a.experimentId,d=Object.keys(b),e=!d.length,f=1===d.length&&d[0]===c+"";return(0,_tsRes.Ok)(e||f)}}]),a}();exports.ExclusiveCampaign=ExclusiveCampaign;
2
+ //# sourceMappingURL=exclusiveCampaign.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"exclusiveCampaign.js","names":["_tsRes","require","Object","defineProperty","exports","value","ExclusiveCampaign","_typeof","a","Symbol","iterator","constructor","prototype","_classCallCheck","b","TypeError","_defineProperties","c","d","length","enumerable","configurable","writable","_toPropertyKey","key","_createClass","_toPrimitive","toPrimitive","call","String","Number","evaluate","variationData","experimentId","keys","isEmpty","isExclusive","Ok"],"sources":["../../../src/targeting/conditions/exclusiveCampaign.ts"],"sourcesContent":["import { Ok, Result } from 'ts-res';\nimport { KameleoonError } from 'src/kameleoonError';\nimport { EvaluationDataType } from 'src/targeting/types';\nimport { ICondition } from './types';\n\nexport class ExclusiveCampaign implements ICondition {\n evaluate({\n variationData,\n experimentId,\n }: EvaluationDataType): Result<boolean, KameleoonError> {\n const keys = Object.keys(variationData);\n const isEmpty = !keys.length;\n // --- Note ---\n // Checking exclusiveness is done by checking if there is only one experiment id with variation\n // and the next assigned experiment id will overwrite the previous one\n // (thus, still leaving one exclusive experiment)\n const isExclusive = keys.length === 1 && keys[0] === String(experimentId);\n const isSatisfied = isEmpty || isExclusive;\n\n return Ok(isSatisfied);\n }\n}\n"],"mappings":"aAAA,IAAAA,MAAA,CAAAC,OAAA,WAAoCC,MAAA,CAAAC,cAAA,CAAAC,OAAA,eAAAC,KAAA,MAAAD,OAAA,CAAAE,iBAAA,iBAAAC,QAAAC,CAAA,mCAAAD,OAAA,oBAAAE,MAAA,mBAAAA,MAAA,CAAAC,QAAA,UAAAF,CAAA,gBAAAA,CAAA,WAAAA,CAAA,SAAAA,CAAA,qBAAAC,MAAA,EAAAD,CAAA,CAAAG,WAAA,GAAAF,MAAA,EAAAD,CAAA,GAAAC,MAAA,CAAAG,SAAA,iBAAAJ,CAAA,EAAAD,OAAA,CAAAC,CAAA,WAAAK,gBAAAL,CAAA,CAAAM,CAAA,OAAAN,CAAA,YAAAM,CAAA,YAAAC,SAAA,+CAAAC,kBAAAR,CAAA,CAAAM,CAAA,UAAAG,CAAA,CAAAC,CAAA,GAAAA,CAAA,CAAAJ,CAAA,CAAAK,MAAA,CAAAD,CAAA,GAAAD,CAAA,CAAAH,CAAA,CAAAI,CAAA,EAAAD,CAAA,CAAAG,UAAA,CAAAH,CAAA,CAAAG,UAAA,KAAAH,CAAA,CAAAI,YAAA,cAAAJ,CAAA,GAAAA,CAAA,CAAAK,QAAA,KAAApB,MAAA,CAAAC,cAAA,CAAAK,CAAA,CAAAe,cAAA,CAAAN,CAAA,CAAAO,GAAA,EAAAP,CAAA,WAAAQ,aAAAjB,CAAA,CAAAM,CAAA,CAAAG,CAAA,SAAAH,CAAA,EAAAE,iBAAA,CAAAR,CAAA,CAAAI,SAAA,CAAAE,CAAA,EAAAG,CAAA,EAAAD,iBAAA,CAAAR,CAAA,CAAAS,CAAA,EAAAf,MAAA,CAAAC,cAAA,CAAAK,CAAA,cAAAc,QAAA,MAAAd,CAAA,UAAAe,eAAAf,CAAA,MAAAM,CAAA,CAAAY,YAAA,CAAAlB,CAAA,4BAAAD,OAAA,CAAAO,CAAA,EAAAA,CAAA,CAAAA,CAAA,aAAAY,aAAAlB,CAAA,CAAAM,CAAA,gBAAAP,OAAA,CAAAC,CAAA,UAAAA,CAAA,QAAAA,CAAA,KAAAS,CAAA,CAAAT,CAAA,CAAAC,MAAA,CAAAkB,WAAA,KAAAV,CAAA,eAAAC,CAAA,CAAAD,CAAA,CAAAW,IAAA,CAAApB,CAAA,CAAAM,CAAA,2BAAAP,OAAA,CAAAW,CAAA,SAAAA,CAAA,WAAAH,SAAA,mEAAAD,CAAA,CAAAe,MAAA,CAAAC,MAAA,EAAAtB,CAAA,KAKvB,CAAAF,iBAAiB,qBAAAE,EAAA,EAAAK,eAAA,MAAAL,CAAA,SAAAiB,YAAA,CAAAjB,CAAA,GAAAgB,GAAA,YAAAnB,KAAA,CAC5B,SAAA0B,SAAAvB,CAAA,CAGwD,IAFtD,CAAAwB,CAAa,CAAAxB,CAAA,CAAbwB,aAAa,CACbC,CAAY,CAAAzB,CAAA,CAAZyB,YAAY,CAENC,CAAI,CAAGhC,MAAM,CAACgC,IAAI,CAACF,CAAa,CAAC,CACjCG,CAAO,CAAG,CAACD,CAAI,CAACf,MAAM,CAKtBiB,CAAW,CAAmB,CAAC,GAAjBF,CAAI,CAACf,MAAY,EAAIe,CAAI,CAAC,CAAC,CAAC,GAAYD,CAAY,GAAC,CAGzE,MAAO,GAAAI,SAAE,EAFWF,CAAO,EAAIC,CAAW,CAG5C,CAAC,IAAA5B,CAAA,IAAAJ,OAAA,CAAAE,iBAAA,CAAAA,iBAAA"}
@@ -0,0 +1,12 @@
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 FirstVisit implements ICondition {
6
+ private matchType?;
7
+ private conditionValue?;
8
+ private timeUnit?;
9
+ constructor({ matchType, count, unitOfTime }: ConditionDataType);
10
+ evaluate({ targetingData, }: EvaluationDataType): Result<boolean, KameleoonError>;
11
+ private checkCondition;
12
+ }
@@ -0,0 +1,2 @@
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.FirstVisit=void 0;var _tsRes=require("ts-res"),_kameleoonData=require("../../kameleoonData"),_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 FirstVisit=function(){function a(b){var c=b.matchType,d=b.count,e=b.unitOfTime;_classCallCheck(this,a),_defineProperty(this,"matchType",void 0),_defineProperty(this,"conditionValue",void 0),_defineProperty(this,"timeUnit",void 0),this.matchType=c,this.conditionValue=d,this.timeUnit=e}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=c.currentVisit,e=c.previousVisits,f=e.length?e[0]:d;return"number"==typeof f?(0,_tsRes.Ok)(this.checkCondition(f)):(0,_tsRes.Ok)(!1)}},{key:"checkCondition",value:function checkCondition(a){if(!this.matchType||"number"!=typeof this.conditionValue||!this.timeUnit)return!1;var b=Date.now()-a,c=_utilities.Utilities.convertTimeUnit(b,this.timeUnit);switch(this.matchType){case _types.MatchType.GREATER:return c>this.conditionValue;case _types.MatchType.LOWER:return c<this.conditionValue;default:return!1;}}}]),a}();exports.FirstVisit=FirstVisit;
2
+ //# sourceMappingURL=firstVisit.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"firstVisit.js","names":["FirstVisit","a","b","matchType","count","unitOfTime","_classCallCheck","_defineProperty","conditionValue","timeUnit","_createClass","key","value","evaluate","targetingData","visitsData","KameleoonData","VisitsData","Ok","currentVisit","previousVisits","firstVisitTimestamp","length","checkCondition","elapsedTimeMilliseconds","Date","now","elapsedTimeUnit","Utilities","convertTimeUnit","MatchType","GREATER","LOWER","exports"],"sources":["../../../src/targeting/conditions/firstVisit.ts"],"sourcesContent":["import { Ok, Result } from 'ts-res';\nimport { KameleoonData } from 'src/kameleoonData';\nimport { KameleoonError } from 'src/kameleoonError';\nimport { Utilities, TimeUnit } from 'src/utilities';\nimport { EvaluationDataType, MatchType } from 'src/targeting/types';\nimport { ConditionDataType, ICondition } from './types';\n\nexport class FirstVisit implements ICondition {\n private matchType?: MatchType | null;\n private conditionValue?: number | null;\n private timeUnit?: TimeUnit | null;\n\n constructor({ matchType, count, unitOfTime }: ConditionDataType) {\n this.matchType = matchType;\n this.conditionValue = count;\n this.timeUnit = unitOfTime;\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 const { currentVisit, previousVisits } = visitsData;\n\n const firstVisitTimestamp = previousVisits.length\n ? previousVisits[0]\n : currentVisit;\n\n if (typeof firstVisitTimestamp !== 'number') {\n return Ok(false);\n }\n\n return Ok(this.checkCondition(firstVisitTimestamp));\n }\n\n private checkCondition(firstVisitTimestamp: number): boolean {\n if (\n !this.matchType ||\n typeof this.conditionValue !== 'number' ||\n !this.timeUnit\n ) {\n return false;\n }\n\n const elapsedTimeMilliseconds = Date.now() - firstVisitTimestamp;\n const elapsedTimeUnit = Utilities.convertTimeUnit(\n elapsedTimeMilliseconds,\n this.timeUnit,\n );\n\n switch (this.matchType) {\n case MatchType.GREATER:\n return elapsedTimeUnit > this.conditionValue;\n case MatchType.LOWER:\n return elapsedTimeUnit < this.conditionValue;\n default:\n return false;\n }\n }\n}\n"],"mappings":"s9CAOa,CAAAA,UAAU,YAKrB,SAAAC,EAAAC,CAAA,CAAiE,IAAnD,CAAAC,CAAS,CAAAD,CAAA,CAATC,SAAS,CAAEC,CAAK,CAAAF,CAAA,CAALE,KAAK,CAAEC,CAAU,CAAAH,CAAA,CAAVG,UAAU,CAAAC,eAAA,MAAAL,CAAA,EAAAM,eAAA,0BAAAA,eAAA,+BAAAA,eAAA,yBACxC,IAAI,CAACJ,SAAS,CAAGA,CAAS,CAC1B,IAAI,CAACK,cAAc,CAAGJ,CAAK,CAC3B,IAAI,CAACK,QAAQ,CAAGJ,CAClB,CAAC,OAAAK,YAAA,CAAAT,CAAA,GAAAU,GAAA,YAAAC,KAAA,CAED,SAAAC,SAAAZ,CAAA,CAEwD,IADtD,CAAAa,CAAa,CAAAb,CAAA,CAAba,aAAa,CAEPC,CAAU,QAAGD,CAAa,WAAbA,CAAa,QAAbA,CAAa,CAAGE,4BAAa,CAACC,UAAU,CAAC,CAE5D,GAAI,CAACF,CAAU,CACb,MAAO,GAAAG,SAAE,KAAO,CACjB,GAEO,CAAAC,CAAY,CAAqBJ,CAAU,CAA3CI,YAAY,CAAEC,CAAc,CAAKL,CAAU,CAA7BK,cAAc,CAE9BC,CAAmB,CAAGD,CAAc,CAACE,MAAM,CAC7CF,CAAc,CAAC,CAAC,CAAC,CACjBD,CAAY,OAEmB,QAAQ,EAAvC,MAAO,CAAAE,CAAgC,CAIpC,GAAAH,SAAE,EAAC,IAAI,CAACK,cAAc,CAACF,CAAmB,CAAC,CAAC,CAH1C,GAAAH,SAAE,KAIb,CAAC,GAAAP,GAAA,kBAAAC,KAAA,CAED,SAAAW,eAAuBF,CAA2B,CAAW,CAC3D,GACE,CAAC,IAAI,CAAClB,SAAS,EACgB,QAAQ,EAAvC,MAAO,KAAI,CAACK,cAA2B,EACvC,CAAC,IAAI,CAACC,QAAQ,CAEd,SACD,GAEK,CAAAe,CAAuB,CAAGC,IAAI,CAACC,GAAG,EAAE,CAAGL,CAAmB,CAC1DM,CAAe,CAAGC,oBAAS,CAACC,eAAe,CAC/CL,CAAuB,CACvB,IAAI,CAACf,QAAQ,CACd,CAED,OAAQ,IAAI,CAACN,SAAS,EACpB,IAAK,CAAA2B,gBAAS,CAACC,OAAO,CACpB,MAAO,CAAAJ,CAAe,CAAG,IAAI,CAACnB,cAAc,CAC9C,IAAK,CAAAsB,gBAAS,CAACE,KAAK,CAClB,MAAO,CAAAL,CAAe,CAAG,IAAI,CAACnB,cAAc,CAC9C,QACE,SAAa,CAEnB,CAAC,IAAAP,CAAA,IAAAgC,OAAA,CAAAjC,UAAA,CAAAA,UAAA"}
@@ -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 GeolocationCondition implements ICondition {
6
+ private country?;
7
+ private region?;
8
+ private city?;
9
+ constructor({ country, region, city }: ConditionDataType);
10
+ evaluate({ targetingData, }: EvaluationDataType): Result<boolean, KameleoonError>;
11
+ }
@@ -0,0 +1,2 @@
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.GeolocationCondition=void 0;var _tsRes=require("ts-res"),_kameleoonData=require("../../kameleoonData");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 GeolocationCondition=function(){function a(b){var c=b.country,d=b.region,e=b.city;_classCallCheck(this,a),_defineProperty(this,"country",void 0),_defineProperty(this,"region",void 0),_defineProperty(this,"city",void 0),this.country=c,this.region=d,this.city=e}return _createClass(a,[{key:"evaluate",value:function evaluate(a){var b=a.targetingData,c=null===b||void 0===b?void 0:b[_kameleoonData.KameleoonData.GeolocationData];if(c){var d=c.country,e=c.region,f=c.city,g=[this.country,this.region,this.city],h=g[0],i=g[1],j=g[2];if(!h||!d)return(0,_tsRes.Ok)(!1);return(0,_tsRes.Ok)(d===h&&(!i||e===i)&&(!j||f===j))}return(0,_tsRes.Ok)(!1)}}]),a}();exports.GeolocationCondition=GeolocationCondition;
2
+ //# sourceMappingURL=geolocation.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"geolocation.js","names":["GeolocationCondition","a","b","country","region","city","_classCallCheck","_defineProperty","_createClass","key","value","evaluate","targetingData","geolocationData","KameleoonData","GeolocationData","dataCountry","dataRegion","dataCity","g","conditionCountry","conditionRegion","conditionCity","Ok","exports"],"sources":["../../../src/targeting/conditions/geolocation.ts"],"sourcesContent":["import { Ok, Result } from 'ts-res';\nimport { KameleoonData } from 'src/kameleoonData';\nimport { KameleoonError } from 'src/kameleoonError';\nimport { EvaluationDataType } from 'src/targeting/types';\nimport { ConditionDataType, ICondition } from './types';\n\n// --- Note ---\n// `GeolocationCondition` uses `Condition` in the naming to avoid confusion with\n// native `Geolocation` API\nexport class GeolocationCondition implements ICondition {\n private country?: string | null;\n private region?: string | null;\n private city?: string | null;\n\n constructor({ country, region, city }: ConditionDataType) {\n this.country = country;\n this.region = region;\n this.city = city;\n }\n\n public evaluate({\n targetingData,\n }: EvaluationDataType): Result<boolean, KameleoonError> {\n const geolocationData = targetingData?.[KameleoonData.GeolocationData];\n\n if (geolocationData) {\n const {\n country: dataCountry,\n region: dataRegion,\n city: dataCity,\n } = geolocationData;\n const [conditionCountry, conditionRegion, conditionCity] = [\n this.country,\n this.region,\n this.city,\n ];\n\n if (!conditionCountry || !dataCountry) {\n return Ok(false);\n }\n\n const result =\n dataCountry === conditionCountry &&\n (!conditionRegion || dataRegion === conditionRegion) &&\n (!conditionCity || dataCity === conditionCity);\n\n return Ok(result);\n }\n\n return Ok(false);\n }\n}\n"],"mappings":"+5CASa,CAAAA,oBAAoB,YAK/B,SAAAC,EAAAC,CAAA,CAA0D,IAA5C,CAAAC,CAAO,CAAAD,CAAA,CAAPC,OAAO,CAAEC,CAAM,CAAAF,CAAA,CAANE,MAAM,CAAEC,CAAI,CAAAH,CAAA,CAAJG,IAAI,CAAAC,eAAA,MAAAL,CAAA,EAAAM,eAAA,wBAAAA,eAAA,uBAAAA,eAAA,qBACjC,IAAI,CAACJ,OAAO,CAAGA,CAAO,CACtB,IAAI,CAACC,MAAM,CAAGA,CAAM,CACpB,IAAI,CAACC,IAAI,CAAGA,CACd,CAAC,OAAAG,YAAA,CAAAP,CAAA,GAAAQ,GAAA,YAAAC,KAAA,CAED,SAAAC,SAAAV,CAAA,CAEwD,IADtD,CAAAW,CAAa,CAAAX,CAAA,CAAbW,aAAa,CAEPC,CAAe,QAAGD,CAAa,WAAbA,CAAa,QAAbA,CAAa,CAAGE,4BAAa,CAACC,eAAe,CAAC,CAEtE,GAAIF,CAAe,CAAE,IAER,CAAAG,CAAW,CAGlBH,CAAe,CAHjBV,OAAO,CACCc,CAAU,CAEhBJ,CAAe,CAFjBT,MAAM,CACAc,CAAQ,CACZL,CAAe,CADjBR,IAAI,CAAAc,CAAA,CAEqD,CACzD,IAAI,CAAChB,OAAO,CACZ,IAAI,CAACC,MAAM,CACX,IAAI,CAACC,IAAI,CACV,CAJMe,CAAgB,CAAAD,CAAA,IAAEE,CAAe,CAAAF,CAAA,IAAEG,CAAa,CAAAH,CAAA,IAMvD,GAAI,CAACC,CAAgB,EAAI,CAACJ,CAAW,CACnC,MAAO,GAAAO,SAAE,KAAO,CAQlB,MAAO,GAAAA,SAAE,EAJPP,CAAW,GAAKI,CAAgB,GAC/B,CAACC,CAAe,EAAIJ,CAAU,GAAKI,CAAe,CAAC,GACnD,CAACC,CAAa,EAAIJ,CAAQ,GAAKI,CAAa,CAAC,CAGlD,CAEA,MAAO,GAAAC,SAAE,KACX,CAAC,IAAAtB,CAAA,IAAAuB,OAAA,CAAAxB,oBAAA,CAAAA,oBAAA"}
@@ -1,12 +1,24 @@
1
- export { DeviceCondition } from './deviceCondition';
1
+ export { Device } from './device';
2
2
  export { ConditionFactory } from './conditionFactory';
3
3
  export { ConditionDataType, ConditionType } from './types';
4
- export { CustomDataCondition } from './customDataCondition';
5
- export { TargetExperimentCondition } from './targetExperimentCondition';
6
- export { ExclusiveExperimentCondition } from './exclusiveExperimentCondition';
7
- export { BrowserCondition } from './browserCondition';
8
- export { PageUrlCondition } from './pageUrlCondition';
9
- export { PageTitleCondition } from './pageTitleCondition';
10
- export { ConversionCondition } from './conversionCondition';
11
- export { VisitorCodeCondition } from './visitorCodeCondition';
12
- export { SdkLanguageCondition } from './sdkLanguageCondition';
4
+ export { CustomData } from './customData';
5
+ export { ExclusiveCampaign } from './exclusiveCampaign';
6
+ export { Browser } from './browser';
7
+ export { PageUrl } from './pageUrl';
8
+ export { PageTitle } from './pageTitle';
9
+ export { Conversion } from './conversion';
10
+ export { VisitorCode } from './visitorCode';
11
+ export { SdkLanguage } from './sdkLanguage';
12
+ export { TargetFeatureFlag } from './targetFeatureFlag';
13
+ export { Cookie } from './cookie';
14
+ export { OperatingSystem } from './operatingSystem';
15
+ export { GeolocationCondition } from './geolocation';
16
+ export { Segment } from './segment';
17
+ export { PreviousPage } from './previousPage';
18
+ export { VisitedPages } from './visitedPages';
19
+ export { FirstVisit } from './firstVisit';
20
+ export { LastVisit } from './lastVisit';
21
+ export { Visits } from './visits';
22
+ export { SameDayVisits } from './sameDayVisits';
23
+ export { NewVisitor } from './newVisitor';
24
+ export { ApplicationVersion } from './applicationVersion';
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),Object.defineProperty(exports,"BrowserCondition",{enumerable:!0,get:function get(){return _browserCondition.BrowserCondition}}),Object.defineProperty(exports,"ConditionDataType",{enumerable:!0,get:function get(){return _types.ConditionDataType}}),Object.defineProperty(exports,"ConditionFactory",{enumerable:!0,get:function get(){return _conditionFactory.ConditionFactory}}),Object.defineProperty(exports,"ConditionType",{enumerable:!0,get:function get(){return _types.ConditionType}}),Object.defineProperty(exports,"ConversionCondition",{enumerable:!0,get:function get(){return _conversionCondition.ConversionCondition}}),Object.defineProperty(exports,"CustomDataCondition",{enumerable:!0,get:function get(){return _customDataCondition.CustomDataCondition}}),Object.defineProperty(exports,"DeviceCondition",{enumerable:!0,get:function get(){return _deviceCondition.DeviceCondition}}),Object.defineProperty(exports,"ExclusiveExperimentCondition",{enumerable:!0,get:function get(){return _exclusiveExperimentCondition.ExclusiveExperimentCondition}}),Object.defineProperty(exports,"PageTitleCondition",{enumerable:!0,get:function get(){return _pageTitleCondition.PageTitleCondition}}),Object.defineProperty(exports,"PageUrlCondition",{enumerable:!0,get:function get(){return _pageUrlCondition.PageUrlCondition}}),Object.defineProperty(exports,"SdkLanguageCondition",{enumerable:!0,get:function get(){return _sdkLanguageCondition.SdkLanguageCondition}}),Object.defineProperty(exports,"TargetExperimentCondition",{enumerable:!0,get:function get(){return _targetExperimentCondition.TargetExperimentCondition}}),Object.defineProperty(exports,"VisitorCodeCondition",{enumerable:!0,get:function get(){return _visitorCodeCondition.VisitorCodeCondition}});var _deviceCondition=require("./deviceCondition"),_conditionFactory=require("./conditionFactory"),_types=require("./types"),_customDataCondition=require("./customDataCondition"),_targetExperimentCondition=require("./targetExperimentCondition"),_exclusiveExperimentCondition=require("./exclusiveExperimentCondition"),_browserCondition=require("./browserCondition"),_pageUrlCondition=require("./pageUrlCondition"),_pageTitleCondition=require("./pageTitleCondition"),_conversionCondition=require("./conversionCondition"),_visitorCodeCondition=require("./visitorCodeCondition"),_sdkLanguageCondition=require("./sdkLanguageCondition");
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),Object.defineProperty(exports,"ApplicationVersion",{enumerable:!0,get:function get(){return _applicationVersion.ApplicationVersion}}),Object.defineProperty(exports,"Browser",{enumerable:!0,get:function get(){return _browser.Browser}}),Object.defineProperty(exports,"ConditionDataType",{enumerable:!0,get:function get(){return _types.ConditionDataType}}),Object.defineProperty(exports,"ConditionFactory",{enumerable:!0,get:function get(){return _conditionFactory.ConditionFactory}}),Object.defineProperty(exports,"ConditionType",{enumerable:!0,get:function get(){return _types.ConditionType}}),Object.defineProperty(exports,"Conversion",{enumerable:!0,get:function get(){return _conversion.Conversion}}),Object.defineProperty(exports,"Cookie",{enumerable:!0,get:function get(){return _cookie.Cookie}}),Object.defineProperty(exports,"CustomData",{enumerable:!0,get:function get(){return _customData.CustomData}}),Object.defineProperty(exports,"Device",{enumerable:!0,get:function get(){return _device.Device}}),Object.defineProperty(exports,"ExclusiveCampaign",{enumerable:!0,get:function get(){return _exclusiveCampaign.ExclusiveCampaign}}),Object.defineProperty(exports,"FirstVisit",{enumerable:!0,get:function get(){return _firstVisit.FirstVisit}}),Object.defineProperty(exports,"GeolocationCondition",{enumerable:!0,get:function get(){return _geolocation.GeolocationCondition}}),Object.defineProperty(exports,"LastVisit",{enumerable:!0,get:function get(){return _lastVisit.LastVisit}}),Object.defineProperty(exports,"NewVisitor",{enumerable:!0,get:function get(){return _newVisitor.NewVisitor}}),Object.defineProperty(exports,"OperatingSystem",{enumerable:!0,get:function get(){return _operatingSystem.OperatingSystem}}),Object.defineProperty(exports,"PageTitle",{enumerable:!0,get:function get(){return _pageTitle.PageTitle}}),Object.defineProperty(exports,"PageUrl",{enumerable:!0,get:function get(){return _pageUrl.PageUrl}}),Object.defineProperty(exports,"PreviousPage",{enumerable:!0,get:function get(){return _previousPage.PreviousPage}}),Object.defineProperty(exports,"SameDayVisits",{enumerable:!0,get:function get(){return _sameDayVisits.SameDayVisits}}),Object.defineProperty(exports,"SdkLanguage",{enumerable:!0,get:function get(){return _sdkLanguage.SdkLanguage}}),Object.defineProperty(exports,"Segment",{enumerable:!0,get:function get(){return _segment.Segment}}),Object.defineProperty(exports,"TargetFeatureFlag",{enumerable:!0,get:function get(){return _targetFeatureFlag.TargetFeatureFlag}}),Object.defineProperty(exports,"VisitedPages",{enumerable:!0,get:function get(){return _visitedPages.VisitedPages}}),Object.defineProperty(exports,"VisitorCode",{enumerable:!0,get:function get(){return _visitorCode.VisitorCode}}),Object.defineProperty(exports,"Visits",{enumerable:!0,get:function get(){return _visits.Visits}});var _device=require("./device"),_conditionFactory=require("./conditionFactory"),_types=require("./types"),_customData=require("./customData"),_exclusiveCampaign=require("./exclusiveCampaign"),_browser=require("./browser"),_pageUrl=require("./pageUrl"),_pageTitle=require("./pageTitle"),_conversion=require("./conversion"),_visitorCode=require("./visitorCode"),_sdkLanguage=require("./sdkLanguage"),_targetFeatureFlag=require("./targetFeatureFlag"),_cookie=require("./cookie"),_operatingSystem=require("./operatingSystem"),_geolocation=require("./geolocation"),_segment=require("./segment"),_previousPage=require("./previousPage"),_visitedPages=require("./visitedPages"),_firstVisit=require("./firstVisit"),_lastVisit=require("./lastVisit"),_visits=require("./visits"),_sameDayVisits=require("./sameDayVisits"),_newVisitor=require("./newVisitor"),_applicationVersion=require("./applicationVersion");
2
2
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":[],"sources":["../../../src/targeting/conditions/index.ts"],"sourcesContent":["export { DeviceCondition } from './deviceCondition';\nexport { ConditionFactory } from './conditionFactory';\nexport { ConditionDataType, ConditionType } from './types';\nexport { CustomDataCondition } from './customDataCondition';\nexport { TargetExperimentCondition } from './targetExperimentCondition';\nexport { ExclusiveExperimentCondition } from './exclusiveExperimentCondition';\nexport { BrowserCondition } from './browserCondition';\nexport { PageUrlCondition } from './pageUrlCondition';\nexport { PageTitleCondition } from './pageTitleCondition';\nexport { ConversionCondition } from './conversionCondition';\nexport { VisitorCodeCondition } from './visitorCodeCondition';\nexport { SdkLanguageCondition } from './sdkLanguageCondition';\n"],"mappings":""}
1
+ {"version":3,"file":"index.js","names":[],"sources":["../../../src/targeting/conditions/index.ts"],"sourcesContent":["export { Device } from './device';\nexport { ConditionFactory } from './conditionFactory';\nexport { ConditionDataType, ConditionType } from './types';\nexport { CustomData } from './customData';\nexport { ExclusiveCampaign } from './exclusiveCampaign';\nexport { Browser } from './browser';\nexport { PageUrl } from './pageUrl';\nexport { PageTitle } from './pageTitle';\nexport { Conversion } from './conversion';\nexport { VisitorCode } from './visitorCode';\nexport { SdkLanguage } from './sdkLanguage';\nexport { TargetFeatureFlag } from './targetFeatureFlag';\nexport { Cookie } from './cookie';\nexport { OperatingSystem } from './operatingSystem';\nexport { GeolocationCondition } from './geolocation';\nexport { Segment } from './segment';\nexport { PreviousPage } from './previousPage';\nexport { VisitedPages } from './visitedPages';\nexport { FirstVisit } from './firstVisit';\nexport { LastVisit } from './lastVisit';\nexport { Visits } from './visits';\nexport { SameDayVisits } from './sameDayVisits';\nexport { NewVisitor } from './newVisitor';\nexport { ApplicationVersion } from './applicationVersion';\n"],"mappings":""}
@@ -0,0 +1,12 @@
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 LastVisit implements ICondition {
6
+ private matchType?;
7
+ private conditionValue?;
8
+ private timeUnit?;
9
+ constructor({ matchType, count, unitOfTime }: ConditionDataType);
10
+ evaluate({ targetingData, }: EvaluationDataType): Result<boolean, KameleoonError>;
11
+ private checkCondition;
12
+ }
@@ -0,0 +1,2 @@
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.LastVisit=void 0;var _tsRes=require("ts-res"),_kameleoonData=require("../../kameleoonData"),_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 LastVisit=function(){function a(b){var c=b.matchType,d=b.count,e=b.unitOfTime;_classCallCheck(this,a),_defineProperty(this,"matchType",void 0),_defineProperty(this,"conditionValue",void 0),_defineProperty(this,"timeUnit",void 0),this.matchType=c,this.conditionValue=d,this.timeUnit=e}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=c.currentVisit,e=c.previousVisits,f=d?d:e[e.length-1];return"number"==typeof f?(0,_tsRes.Ok)(this.checkCondition(f)):(0,_tsRes.Ok)(!1)}},{key:"checkCondition",value:function checkCondition(a){if(!this.matchType||"number"!=typeof this.conditionValue||!this.timeUnit)return!1;var b=Date.now()-a,c=_utilities.Utilities.convertTimeUnit(b,this.timeUnit);switch(this.matchType){case _types.MatchType.GREATER:return c>this.conditionValue;case _types.MatchType.LOWER:return c<this.conditionValue;default:return!1;}}}]),a}();exports.LastVisit=LastVisit;
2
+ //# sourceMappingURL=lastVisit.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"lastVisit.js","names":["LastVisit","a","b","matchType","count","unitOfTime","_classCallCheck","_defineProperty","conditionValue","timeUnit","_createClass","key","value","evaluate","targetingData","visitsData","KameleoonData","VisitsData","Ok","currentVisit","previousVisits","lastVisitTimestamp","length","checkCondition","elapsedTimeMilliseconds","Date","now","elapsedTimeUnit","Utilities","convertTimeUnit","MatchType","GREATER","LOWER","exports"],"sources":["../../../src/targeting/conditions/lastVisit.ts"],"sourcesContent":["import { Ok, Result } from 'ts-res';\nimport { KameleoonData } from 'src/kameleoonData';\nimport { KameleoonError } from 'src/kameleoonError';\nimport { Utilities, TimeUnit } from 'src/utilities';\nimport { EvaluationDataType, MatchType } from 'src/targeting/types';\nimport { ConditionDataType, ICondition } from './types';\n\nexport class LastVisit implements ICondition {\n private matchType?: MatchType | null;\n private conditionValue?: number | null;\n private timeUnit?: TimeUnit | null;\n\n constructor({ matchType, count, unitOfTime }: ConditionDataType) {\n this.matchType = matchType;\n this.conditionValue = count;\n this.timeUnit = unitOfTime;\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 const { currentVisit, previousVisits } = visitsData;\n\n const lastVisitTimestamp = currentVisit\n ? currentVisit\n : previousVisits[previousVisits.length - 1];\n\n if (typeof lastVisitTimestamp !== 'number') {\n return Ok(false);\n }\n\n return Ok(this.checkCondition(lastVisitTimestamp));\n }\n\n private checkCondition(lastVisitTimestamp: number): boolean {\n if (\n !this.matchType ||\n typeof this.conditionValue !== 'number' ||\n !this.timeUnit\n ) {\n return false;\n }\n\n const elapsedTimeMilliseconds = Date.now() - lastVisitTimestamp;\n const elapsedTimeUnit = Utilities.convertTimeUnit(\n elapsedTimeMilliseconds,\n this.timeUnit,\n );\n\n switch (this.matchType) {\n case MatchType.GREATER:\n return elapsedTimeUnit > this.conditionValue;\n case MatchType.LOWER:\n return elapsedTimeUnit < this.conditionValue;\n default:\n return false;\n }\n }\n}\n"],"mappings":"q9CAOa,CAAAA,SAAS,YAKpB,SAAAC,EAAAC,CAAA,CAAiE,IAAnD,CAAAC,CAAS,CAAAD,CAAA,CAATC,SAAS,CAAEC,CAAK,CAAAF,CAAA,CAALE,KAAK,CAAEC,CAAU,CAAAH,CAAA,CAAVG,UAAU,CAAAC,eAAA,MAAAL,CAAA,EAAAM,eAAA,0BAAAA,eAAA,+BAAAA,eAAA,yBACxC,IAAI,CAACJ,SAAS,CAAGA,CAAS,CAC1B,IAAI,CAACK,cAAc,CAAGJ,CAAK,CAC3B,IAAI,CAACK,QAAQ,CAAGJ,CAClB,CAAC,OAAAK,YAAA,CAAAT,CAAA,GAAAU,GAAA,YAAAC,KAAA,CAED,SAAAC,SAAAZ,CAAA,CAEwD,IADtD,CAAAa,CAAa,CAAAb,CAAA,CAAba,aAAa,CAEPC,CAAU,QAAGD,CAAa,WAAbA,CAAa,QAAbA,CAAa,CAAGE,4BAAa,CAACC,UAAU,CAAC,CAE5D,GAAI,CAACF,CAAU,CACb,MAAO,GAAAG,SAAE,KAAO,CACjB,GAEO,CAAAC,CAAY,CAAqBJ,CAAU,CAA3CI,YAAY,CAAEC,CAAc,CAAKL,CAAU,CAA7BK,cAAc,CAE9BC,CAAkB,CAAGF,CAAY,CACnCA,CAAY,CACZC,CAAc,CAACA,CAAc,CAACE,MAAM,CAAG,CAAC,CAAC,OAEX,QAAQ,EAAtC,MAAO,CAAAD,CAA+B,CAInC,GAAAH,SAAE,EAAC,IAAI,CAACK,cAAc,CAACF,CAAkB,CAAC,CAAC,CAHzC,GAAAH,SAAE,KAIb,CAAC,GAAAP,GAAA,kBAAAC,KAAA,CAED,SAAAW,eAAuBF,CAA0B,CAAW,CAC1D,GACE,CAAC,IAAI,CAAClB,SAAS,EACgB,QAAQ,EAAvC,MAAO,KAAI,CAACK,cAA2B,EACvC,CAAC,IAAI,CAACC,QAAQ,CAEd,SACD,GAEK,CAAAe,CAAuB,CAAGC,IAAI,CAACC,GAAG,EAAE,CAAGL,CAAkB,CACzDM,CAAe,CAAGC,oBAAS,CAACC,eAAe,CAC/CL,CAAuB,CACvB,IAAI,CAACf,QAAQ,CACd,CAED,OAAQ,IAAI,CAACN,SAAS,EACpB,IAAK,CAAA2B,gBAAS,CAACC,OAAO,CACpB,MAAO,CAAAJ,CAAe,CAAG,IAAI,CAACnB,cAAc,CAC9C,IAAK,CAAAsB,gBAAS,CAACE,KAAK,CAClB,MAAO,CAAAL,CAAe,CAAG,IAAI,CAACnB,cAAc,CAC9C,QACE,SAAa,CAEnB,CAAC,IAAAP,CAAA,IAAAgC,OAAA,CAAAjC,SAAA,CAAAA,SAAA"}
@@ -0,0 +1,9 @@
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 NewVisitor implements ICondition {
6
+ private visitorType?;
7
+ constructor({ visitorType }: ConditionDataType);
8
+ evaluate({ targetingData, }: EvaluationDataType): Result<boolean, KameleoonError>;
9
+ }
@@ -0,0 +1,2 @@
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.NewVisitor=void 0;var _tsRes=require("ts-res"),_kameleoonData=require("../../kameleoonData"),_kameleoonError=require("../../kameleoonError"),_types=require("../types");function _typeof(a){"@babel/helpers - typeof";return _typeof="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(a){return typeof a}:function(a){return a&&"function"==typeof Symbol&&a.constructor===Symbol&&a!==Symbol.prototype?"symbol":typeof a},_typeof(a)}function _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 NewVisitor=function(){function a(b){var c=b.visitorType;_classCallCheck(this,a),_defineProperty(this,"visitorType",void 0),this.visitorType=c}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||!this.visitorType)return(0,_tsRes.Ok)(!1);var d=c.currentVisit,e=c.previousVisits,f=d&&!e.length||!d&&!e.length;switch(this.visitorType){case _types.VisitorType.NEW:return(0,_tsRes.Ok)(f);case _types.VisitorType.RETURNING:return(0,_tsRes.Ok)(!f);default:(0,_kameleoonError.exhaustCheck)(this.visitorType);}}}]),a}();exports.NewVisitor=NewVisitor;
2
+ //# sourceMappingURL=newVisitor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"newVisitor.js","names":["NewVisitor","a","b","visitorType","_classCallCheck","_defineProperty","_createClass","key","value","evaluate","targetingData","visitsData","KameleoonData","VisitsData","Ok","currentVisit","previousVisits","isNewVisitor","length","VisitorType","NEW","RETURNING","exhaustCheck","exports"],"sources":["../../../src/targeting/conditions/newVisitor.ts"],"sourcesContent":["import { Ok, Result } from 'ts-res';\nimport { KameleoonData } from 'src/kameleoonData';\nimport { exhaustCheck, KameleoonError } from 'src/kameleoonError';\nimport { EvaluationDataType, VisitorType } from 'src/targeting/types';\nimport { ConditionDataType, ICondition } from './types';\n\nexport class NewVisitor implements ICondition {\n private visitorType?: VisitorType | null;\n\n constructor({ visitorType }: ConditionDataType) {\n this.visitorType = visitorType;\n }\n\n public evaluate({\n targetingData,\n }: EvaluationDataType): Result<boolean, KameleoonError> {\n const visitsData = targetingData?.[KameleoonData.VisitsData];\n\n if (!visitsData || !this.visitorType) {\n return Ok(false);\n }\n\n const { currentVisit, previousVisits } = visitsData;\n\n // --- Note ---\n // Second case handles situation when user didn't use `addData` that\n // creates new current visit\n const isNewVisitor =\n (currentVisit && !previousVisits.length) ||\n (!currentVisit && !previousVisits.length);\n\n switch (this.visitorType) {\n case VisitorType.NEW:\n return Ok(isNewVisitor);\n case VisitorType.RETURNING:\n return Ok(!isNewVisitor);\n default:\n exhaustCheck(this.visitorType);\n }\n }\n}\n"],"mappings":"g+CAMa,CAAAA,UAAU,YAGrB,SAAAC,EAAAC,CAAA,CAAgD,IAAlC,CAAAC,CAAW,CAAAD,CAAA,CAAXC,WAAW,CAAAC,eAAA,MAAAH,CAAA,EAAAI,eAAA,4BACvB,IAAI,CAACF,WAAW,CAAGA,CACrB,CAAC,OAAAG,YAAA,CAAAL,CAAA,GAAAM,GAAA,YAAAC,KAAA,CAED,SAAAC,SAAAR,CAAA,CAEwD,IADtD,CAAAS,CAAa,CAAAT,CAAA,CAAbS,aAAa,CAEPC,CAAU,QAAGD,CAAa,WAAbA,CAAa,QAAbA,CAAa,CAAGE,4BAAa,CAACC,UAAU,CAAC,CAE5D,GAAI,CAACF,CAAU,EAAI,CAAC,IAAI,CAACR,WAAW,CAClC,MAAO,GAAAW,SAAE,KAAO,CACjB,GAEO,CAAAC,CAAY,CAAqBJ,CAAU,CAA3CI,YAAY,CAAEC,CAAc,CAAKL,CAAU,CAA7BK,cAAc,CAK9BC,CAAY,CACfF,CAAY,EAAI,CAACC,CAAc,CAACE,MAAM,EACtC,CAACH,CAAY,EAAI,CAACC,CAAc,CAACE,MAAO,CAE3C,OAAQ,IAAI,CAACf,WAAW,EACtB,IAAK,CAAAgB,kBAAW,CAACC,GAAG,CAClB,MAAO,GAAAN,SAAE,EAACG,CAAY,CAAC,CACzB,IAAK,CAAAE,kBAAW,CAACE,SAAS,CACxB,MAAO,GAAAP,SAAE,EAAC,CAACG,CAAY,CAAC,CAC1B,QACE,GAAAK,4BAAY,EAAC,IAAI,CAACnB,WAAW,CAAC,CAAC,CAErC,CAAC,IAAAF,CAAA,IAAAsB,OAAA,CAAAvB,UAAA,CAAAA,UAAA"}
@@ -0,0 +1,9 @@
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 OperatingSystem implements ICondition {
6
+ private operatingSystem?;
7
+ constructor({ os }: ConditionDataType);
8
+ evaluate({ targetingData, }: EvaluationDataType): Result<boolean, KameleoonError>;
9
+ }
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.DeviceCondition=void 0;var _tsRes=require("ts-res"),_kameleoonData=require("../../kameleoonData");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 DeviceCondition=/*#__PURE__*/function(){function a(b){var c=b.device;_classCallCheck(this,a),_defineProperty(this,"device",void 0),this.device=c}return _createClass(a,[{key:"evaluate",value:function evaluate(a){var b=a.targetingData,c=null===b||void 0===b?void 0:b[_kameleoonData.KameleoonData.Device];if(c){var d=c.device;return(0,_tsRes.Ok)(d===this.device)}return(0,_tsRes.Ok)(!1)}}]),a}();exports.DeviceCondition=DeviceCondition;
2
- //# sourceMappingURL=deviceCondition.js.map
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.OperatingSystem=void 0;var _tsRes=require("ts-res"),_kameleoonData=require("../../kameleoonData");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 OperatingSystem=function(){function a(b){var c=b.os;_classCallCheck(this,a),_defineProperty(this,"operatingSystem",void 0),this.operatingSystem=c}return _createClass(a,[{key:"evaluate",value:function evaluate(a){var b=a.targetingData,c=null===b||void 0===b?void 0:b[_kameleoonData.KameleoonData.OperatingSystem];if(c){var d=c.operatingSystem;return(0,_tsRes.Ok)(d===this.operatingSystem)}return(0,_tsRes.Ok)(!1)}}]),a}();exports.OperatingSystem=OperatingSystem;
2
+ //# sourceMappingURL=operatingSystem.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"operatingSystem.js","names":["OperatingSystem","a","b","os","_classCallCheck","_defineProperty","operatingSystem","_createClass","key","value","evaluate","targetingData","operatingSystemData","KameleoonData","Ok","exports"],"sources":["../../../src/targeting/conditions/operatingSystem.ts"],"sourcesContent":["import { Ok, Result } from 'ts-res';\nimport { KameleoonData } from 'src/kameleoonData';\nimport { KameleoonError } from 'src/kameleoonError';\nimport { EvaluationDataType } from 'src/targeting/types';\nimport { OperatingSystemType } from 'src/kameleoonData/types';\nimport { ConditionDataType, ICondition } from './types';\n\nexport class OperatingSystem implements ICondition {\n private operatingSystem?: OperatingSystemType | null;\n\n constructor({ os }: ConditionDataType) {\n this.operatingSystem = os;\n }\n\n public evaluate({\n targetingData,\n }: EvaluationDataType): Result<boolean, KameleoonError> {\n const operatingSystemData = targetingData?.[KameleoonData.OperatingSystem];\n\n if (operatingSystemData) {\n const { operatingSystem } = operatingSystemData;\n\n return Ok(operatingSystem === this.operatingSystem);\n }\n\n return Ok(false);\n }\n}\n"],"mappings":"05CAOa,CAAAA,eAAe,YAG1B,SAAAC,EAAAC,CAAA,CAAuC,IAAzB,CAAAC,CAAE,CAAAD,CAAA,CAAFC,EAAE,CAAAC,eAAA,MAAAH,CAAA,EAAAI,eAAA,gCACd,IAAI,CAACC,eAAe,CAAGH,CACzB,CAAC,OAAAI,YAAA,CAAAN,CAAA,GAAAO,GAAA,YAAAC,KAAA,CAED,SAAAC,SAAAT,CAAA,CAEwD,IADtD,CAAAU,CAAa,CAAAV,CAAA,CAAbU,aAAa,CAEPC,CAAmB,QAAGD,CAAa,WAAbA,CAAa,QAAbA,CAAa,CAAGE,4BAAa,CAACb,eAAe,CAAC,CAE1E,GAAIY,CAAmB,CAAE,CACvB,GAAQ,CAAAN,CAAe,CAAKM,CAAmB,CAAvCN,eAAe,CAEvB,MAAO,GAAAQ,SAAE,EAACR,CAAe,GAAK,IAAI,CAACA,eAAe,CACpD,CAEA,MAAO,GAAAQ,SAAE,KACX,CAAC,IAAAb,CAAA,IAAAc,OAAA,CAAAf,eAAA,CAAAA,eAAA"}
@@ -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 PageTitleCondition implements ICondition {
5
+ export declare class PageTitle implements ICondition {
6
6
  private matchType?;
7
7
  private conditionValue?;
8
8
  constructor({ matchType, title }: ConditionDataType);
@@ -0,0 +1,2 @@
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.PageTitle=void 0;var _tsRes=require("ts-res"),_kameleoonData=require("../../kameleoonData"),_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 PageTitle=function(){function a(b){var c=b.matchType,d=b.title;_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=this,c=a.targetingData,d=null===c||void 0===c?void 0:c[_kameleoonData.KameleoonData.PageView];return d?(0,_tsRes.Ok)(Object.values(d).some(function(a){return b.checkCondition(a.title)})):(0,_tsRes.Ok)(!1)}},{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.PageTitle=PageTitle;
2
+ //# sourceMappingURL=pageTitle.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pageTitle.js","names":["PageTitle","a","b","matchType","title","_classCallCheck","_defineProperty","conditionValue","_createClass","key","value","evaluate","targetingData","pageViewData","KameleoonData","PageView","Ok","Object","values","some","data","checkCondition","MatchType","CONTAINS","includes","EXACT","REGULAR_EXPRESSION","Utilities","parseRegExp","test","exports"],"sources":["../../../src/targeting/conditions/pageTitle.ts"],"sourcesContent":["import { Ok, Result } from 'ts-res';\nimport { KameleoonData } from 'src/kameleoonData';\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 PageTitle implements ICondition {\n private matchType?: MatchType | null;\n private conditionValue?: string | null;\n\n constructor({ matchType, title }: ConditionDataType) {\n this.matchType = matchType;\n this.conditionValue = title;\n }\n\n public evaluate({\n targetingData,\n }: EvaluationDataType): Result<boolean, KameleoonError> {\n const pageViewData = targetingData?.[KameleoonData.PageView];\n\n if (pageViewData) {\n return Ok(\n Object.values(pageViewData).some((data) => {\n return this.checkCondition(data.title);\n }),\n );\n }\n\n return Ok(false);\n }\n\n private checkCondition(title: string): boolean {\n if (!this.matchType || !this.conditionValue) {\n return false;\n }\n\n switch (this.matchType) {\n case MatchType.CONTAINS:\n return title.includes(this.conditionValue);\n case MatchType.EXACT:\n return title === this.conditionValue;\n case MatchType.REGULAR_EXPRESSION:\n return Utilities.parseRegExp(this.conditionValue).test(title);\n default:\n return false;\n }\n }\n}\n"],"mappings":"q9CAOa,CAAAA,SAAS,YAIpB,SAAAC,EAAAC,CAAA,CAAqD,IAAvC,CAAAC,CAAS,CAAAD,CAAA,CAATC,SAAS,CAAEC,CAAK,CAAAF,CAAA,CAALE,KAAK,CAAAC,eAAA,MAAAJ,CAAA,EAAAK,eAAA,0BAAAA,eAAA,+BAC5B,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,KAAAC,CAAA,MADtDU,CAAa,CAAAX,CAAA,CAAbW,aAAa,CAEPC,CAAY,QAAGD,CAAa,WAAbA,CAAa,QAAbA,CAAa,CAAGE,4BAAa,CAACC,QAAQ,CAAC,OAExD,CAAAF,CAAY,CACP,GAAAG,SAAE,EACPC,MAAM,CAACC,MAAM,CAACL,CAAY,CAAC,CAACM,IAAI,CAAC,SAACC,CAAI,CAAK,CACzC,MAAO,CAAAlB,CAAI,CAACmB,cAAc,CAACD,CAAI,CAAChB,KAAK,CACvC,CAAC,CAAC,CACH,CAGI,GAAAY,SAAE,KACX,CAAC,GAAAP,GAAA,kBAAAC,KAAA,CAED,SAAAW,eAAuBjB,CAAa,CAAW,CAC7C,GAAI,CAAC,IAAI,CAACD,SAAS,EAAI,CAAC,IAAI,CAACI,cAAc,CACzC,SAGF,OAAQ,IAAI,CAACJ,SAAS,EACpB,IAAK,CAAAmB,gBAAS,CAACC,QAAQ,CACrB,MAAO,CAAAnB,CAAK,CAACoB,QAAQ,CAAC,IAAI,CAACjB,cAAc,CAAC,CAC5C,IAAK,CAAAe,gBAAS,CAACG,KAAK,CAClB,MAAO,CAAArB,CAAK,GAAK,IAAI,CAACG,cAAc,CACtC,IAAK,CAAAe,gBAAS,CAACI,kBAAkB,CAC/B,MAAO,CAAAC,oBAAS,CAACC,WAAW,CAAC,IAAI,CAACrB,cAAc,CAAC,CAACsB,IAAI,CAACzB,CAAK,CAAC,CAC/D,QACE,SAAa,CAEnB,CAAC,IAAAH,CAAA,IAAA6B,OAAA,CAAA9B,SAAA,CAAAA,SAAA"}
@@ -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 PageUrlCondition implements ICondition {
5
+ export declare class PageUrl implements ICondition {
6
6
  private matchType?;
7
7
  private conditionValue?;
8
8
  constructor({ matchType, url }: ConditionDataType);
@@ -0,0 +1,2 @@
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.PageUrl=void 0;var _tsRes=require("ts-res"),_kameleoonData=require("../../kameleoonData"),_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 PageUrl=function(){function a(b){var c=b.matchType,d=b.url;_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=this,c=a.targetingData,d=null===c||void 0===c?void 0:c[_kameleoonData.KameleoonData.PageView];return d?(0,_tsRes.Ok)(Object.keys(d).some(function(a){return b.checkCondition(a)})):(0,_tsRes.Ok)(!1)}},{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.PageUrl=PageUrl;
2
+ //# sourceMappingURL=pageUrl.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pageUrl.js","names":["PageUrl","a","b","matchType","url","_classCallCheck","_defineProperty","conditionValue","_createClass","key","value","evaluate","targetingData","pageViewData","KameleoonData","PageView","Ok","Object","keys","some","checkCondition","MatchType","CONTAINS","includes","EXACT","REGULAR_EXPRESSION","Utilities","parseRegExp","test","exports"],"sources":["../../../src/targeting/conditions/pageUrl.ts"],"sourcesContent":["import { Ok, Result } from 'ts-res';\nimport { KameleoonData } from 'src/kameleoonData';\nimport { exhaustCheck, KameleoonError } from 'src/kameleoonError';\nimport { Utilities } from 'src/utilities';\nimport { EvaluationDataType, MatchType } from 'src/targeting/types';\nimport { ConditionDataType, ICondition } from './types';\n\nexport class PageUrl implements ICondition {\n private matchType?: MatchType | null;\n private conditionValue?: string | null;\n\n constructor({ matchType, url }: ConditionDataType) {\n this.matchType = matchType;\n this.conditionValue = url;\n }\n\n public evaluate({\n targetingData,\n }: EvaluationDataType): Result<boolean, KameleoonError> {\n const pageViewData = targetingData?.[KameleoonData.PageView];\n\n if (pageViewData) {\n return Ok(\n Object.keys(pageViewData).some((url) => this.checkCondition(url)),\n );\n }\n\n return Ok(false);\n }\n\n private checkCondition(url: string): boolean {\n if (!this.matchType || !this.conditionValue) {\n return false;\n }\n\n switch (this.matchType) {\n case MatchType.CONTAINS:\n return url.includes(this.conditionValue);\n case MatchType.EXACT:\n return url === this.conditionValue;\n case MatchType.REGULAR_EXPRESSION:\n return Utilities.parseRegExp(this.conditionValue).test(url);\n default:\n return false;\n }\n }\n}\n"],"mappings":"m9CAOa,CAAAA,OAAO,YAIlB,SAAAC,EAAAC,CAAA,CAAmD,IAArC,CAAAC,CAAS,CAAAD,CAAA,CAATC,SAAS,CAAEC,CAAG,CAAAF,CAAA,CAAHE,GAAG,CAAAC,eAAA,MAAAJ,CAAA,EAAAK,eAAA,0BAAAA,eAAA,+BAC1B,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,KAAAC,CAAA,MADtDU,CAAa,CAAAX,CAAA,CAAbW,aAAa,CAEPC,CAAY,QAAGD,CAAa,WAAbA,CAAa,QAAbA,CAAa,CAAGE,4BAAa,CAACC,QAAQ,CAAC,OAExD,CAAAF,CAAY,CACP,GAAAG,SAAE,EACPC,MAAM,CAACC,IAAI,CAACL,CAAY,CAAC,CAACM,IAAI,CAAC,SAACf,CAAG,QAAK,CAAAF,CAAI,CAACkB,cAAc,CAAChB,CAAG,CAAC,EAAC,CAClE,CAGI,GAAAY,SAAE,KACX,CAAC,GAAAP,GAAA,kBAAAC,KAAA,CAED,SAAAU,eAAuBhB,CAAW,CAAW,CAC3C,GAAI,CAAC,IAAI,CAACD,SAAS,EAAI,CAAC,IAAI,CAACI,cAAc,CACzC,SAGF,OAAQ,IAAI,CAACJ,SAAS,EACpB,IAAK,CAAAkB,gBAAS,CAACC,QAAQ,CACrB,MAAO,CAAAlB,CAAG,CAACmB,QAAQ,CAAC,IAAI,CAAChB,cAAc,CAAC,CAC1C,IAAK,CAAAc,gBAAS,CAACG,KAAK,CAClB,MAAO,CAAApB,CAAG,GAAK,IAAI,CAACG,cAAc,CACpC,IAAK,CAAAc,gBAAS,CAACI,kBAAkB,CAC/B,MAAO,CAAAC,oBAAS,CAACC,WAAW,CAAC,IAAI,CAACpB,cAAc,CAAC,CAACqB,IAAI,CAACxB,CAAG,CAAC,CAC7D,QACE,SAAa,CAEnB,CAAC,IAAAH,CAAA,IAAA4B,OAAA,CAAA7B,OAAA,CAAAA,OAAA"}
@@ -0,0 +1,12 @@
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 PreviousPage implements ICondition {
6
+ private conditionValue?;
7
+ private matchType?;
8
+ constructor({ matchType, url }: ConditionDataType);
9
+ evaluate({ targetingData, }: EvaluationDataType): Result<boolean, KameleoonError>;
10
+ private checkCondition;
11
+ private getSecondLatestPageView;
12
+ }
@@ -0,0 +1,2 @@
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.PreviousPage=void 0;var _tsRes=require("ts-res"),_utilities=require("../../utilities"),_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 PreviousPage=function(){function a(b){var c=b.matchType,d=b.url;_classCallCheck(this,a),_defineProperty(this,"conditionValue",void 0),_defineProperty(this,"matchType",void 0),this.conditionValue=d,this.matchType=c}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=this.getSecondLatestPageView(Object.values(c));if(!d)return(0,_tsRes.Ok)(!1);var e=d.urlAddress;return(0,_tsRes.Ok)(this.checkCondition(e))}},{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;}}},{key:"getSecondLatestPageView",value:function getSecondLatestPageView(a){if(!(2>a.length)){var b,c;return a.forEach(function(a){var d,e,f=a.timestamps[a.timestamps.length-1],g=a.timestamps[a.timestamps.length-2];if(!b&&!c)return b=a,void(g&&(c=a));var h=null!==(d=b.timestamps[b.timestamps.length-1])&&void 0!==d?d:0;if(f>h){var i,j;c=b,b=a;var k=null===(i=c)||void 0===i?void 0:i.timestamps[(null===(j=c)||void 0===j?void 0:j.timestamps.length)-1];return void(g&&g>k&&(c=a))}var l;if(b.urlAddress===(null===(e=c)||void 0===e?void 0:e.urlAddress))l=c.timestamps[c.timestamps.length-2];else{var m,n,o;l=null!==(m=null===(n=c)||void 0===n?void 0:n.timestamps[(null===(o=c)||void 0===o?void 0:o.timestamps.length)-1])&&void 0!==m?m:0}f&&f>l&&(c=a)}),c}}}]),a}();exports.PreviousPage=PreviousPage;
2
+ //# sourceMappingURL=previousPage.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"previousPage.js","names":["PreviousPage","a","b","matchType","url","_classCallCheck","_defineProperty","conditionValue","_createClass","key","value","evaluate","targetingData","pageViewsData","KameleoonData","PageView","Ok","secondLatestPageView","getSecondLatestPageView","Object","values","urlAddress","checkCondition","MatchType","CONTAINS","includes","EXACT","REGULAR_EXPRESSION","Utilities","parseRegExp","test","length","latestPV","secondPV","forEach","currentPV","d","e","currentLatestTs","timestamps","currentSecondTs","latestTs","i","j","secondTs","m","n","o","exports"],"sources":["../../../src/targeting/conditions/previousPage.ts"],"sourcesContent":["import { Ok, Result } from 'ts-res';\nimport { Utilities } from 'src/utilities';\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 PreviousPage implements ICondition {\n private conditionValue?: string | null;\n private matchType?: MatchType | null;\n\n constructor({ matchType, url }: ConditionDataType) {\n this.conditionValue = url;\n this.matchType = matchType;\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 // --- Note ---\n // There is more concise way to find previous latest page, but it's less performant,\n // here we only ever check two latest timestamps of page and use one loop\n const secondLatestPageView = this.getSecondLatestPageView(\n Object.values(pageViewsData),\n );\n\n if (!secondLatestPageView) {\n return Ok(false);\n }\n\n const url = secondLatestPageView.urlAddress;\n\n return Ok(this.checkCondition(url));\n }\n\n private checkCondition(url: string): boolean {\n if (!this.matchType || !this.conditionValue) {\n return false;\n }\n\n switch (this.matchType) {\n case MatchType.CONTAINS:\n return url.includes(this.conditionValue);\n case MatchType.EXACT:\n return url === this.conditionValue;\n case MatchType.REGULAR_EXPRESSION:\n return Utilities.parseRegExp(this.conditionValue).test(url);\n default:\n return false;\n }\n }\n\n private getSecondLatestPageView(\n pageViewsData: PageViewDataType[],\n ): PageViewDataType | undefined {\n if (pageViewsData.length < 2) {\n return undefined;\n }\n\n // --- Note ---\n // Arguments and variables named with abbreviations for better readability\n // `second` in this context is `second to latest`\n let latestPV: PageViewDataType | undefined;\n let secondPV: PageViewDataType | undefined;\n\n pageViewsData.forEach((currentPV) => {\n const currentLatestTs =\n currentPV.timestamps[currentPV.timestamps.length - 1];\n const currentSecondTs =\n currentPV.timestamps[currentPV.timestamps.length - 2];\n\n // -- Initial check\n if (!latestPV && !secondPV) {\n latestPV = currentPV;\n\n if (currentSecondTs) {\n secondPV = currentPV;\n }\n\n return;\n }\n\n const latestTs =\n latestPV!.timestamps[latestPV!.timestamps.length - 1] ?? 0;\n\n // -- Covering a case where latest needs to be updated\n if (currentLatestTs > latestTs) {\n secondPV = latestPV;\n latestPV = currentPV;\n\n const secondTs = secondPV?.timestamps[secondPV?.timestamps.length - 1];\n\n // -- Second may need to be updated after latest\n if (currentSecondTs && currentSecondTs > secondTs!) {\n secondPV = currentPV;\n }\n\n return;\n }\n\n // -- Covering a case where only second needs to be updated\n let secondTs: number;\n\n // -- Second and latest can be the same page\n if (latestPV!.urlAddress === secondPV?.urlAddress) {\n // --- Note ---\n // If latest is equal to second, there are at least two timestamps in array\n secondTs = secondPV.timestamps[secondPV.timestamps.length - 2];\n } else {\n secondTs = secondPV?.timestamps[secondPV?.timestamps.length - 1] ?? 0;\n }\n\n // -- Second may need to be updated\n if (currentLatestTs && currentLatestTs > secondTs!) {\n secondPV = currentPV;\n }\n });\n\n return secondPV;\n }\n}\n"],"mappings":"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"}
@@ -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 SameDayVisits 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.SameDayVisits=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 SameDayVisits=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=new Date().setHours(0,0,0,0),f=c.previousVisits,g=c.currentVisit;return f.forEach(function(a){a>e&&d++}),g&&g>e&&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.SameDayVisits=SameDayVisits;
2
+ //# sourceMappingURL=sameDayVisits.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sameDayVisits.js","names":["SameDayVisits","a","b","matchType","visitCount","_classCallCheck","_defineProperty","conditionValue","_createClass","key","value","evaluate","targetingData","visitsData","KameleoonData","VisitsData","Ok","todayVisits","todayTimestamp","Date","setHours","previousVisits","currentVisit","forEach","timestamp","checkCondition","todayVisitsAmount","MatchType","EQUAL","GREATER","LOWER","exports"],"sources":["../../../src/targeting/conditions/sameDayVisits.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 SameDayVisits 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 todayVisits = 0;\n\n const todayTimestamp = new Date().setHours(0, 0, 0, 0);\n const { previousVisits, currentVisit } = visitsData;\n\n previousVisits.forEach((timestamp) => {\n if (timestamp > todayTimestamp) {\n todayVisits++;\n }\n });\n\n if (currentVisit && currentVisit > todayTimestamp) {\n todayVisits++;\n }\n\n return Ok(this.checkCondition(todayVisits));\n }\n\n private checkCondition(todayVisitsAmount: 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 todayVisitsAmount === this.conditionValue;\n case MatchType.GREATER:\n return todayVisitsAmount > this.conditionValue;\n case MatchType.LOWER:\n return todayVisitsAmount < this.conditionValue;\n default:\n return false;\n }\n }\n}\n"],"mappings":"m7CAMa,CAAAA,aAAa,YAIxB,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,CAAW,CAAG,CAAC,CAEbC,CAAc,CAAG,GAAI,CAAAC,IAAI,EAAE,CAACC,QAAQ,CAAC,CAAC,CAAE,CAAC,CAAE,CAAC,CAAE,CAAC,CAAC,CAC9CC,CAAc,CAAmBR,CAAU,CAA3CQ,cAAc,CAAEC,CAAY,CAAKT,CAAU,CAA3BS,YAAY,CAYpC,MAVA,CAAAD,CAAc,CAACE,OAAO,CAAC,SAACC,CAAS,CAAK,CAChCA,CAAS,CAAGN,CAAc,EAC5BD,CAAW,EAEf,CAAC,CAAC,CAEEK,CAAY,EAAIA,CAAY,CAAGJ,CAAc,EAC/CD,CAAW,EAAE,CAGR,GAAAD,SAAE,EAAC,IAAI,CAACS,cAAc,CAACR,CAAW,CAAC,CAC5C,CAAC,GAAAR,GAAA,kBAAAC,KAAA,CAED,SAAAe,eAAuBC,CAAyB,CAAW,CACzD,GAAI,CAAC,IAAI,CAACvB,SAAS,EAAmC,QAAQ,EAAvC,MAAO,KAAI,CAACI,cAA2B,CAC5D,SAGF,OAAQ,IAAI,CAACJ,SAAS,EACpB,IAAK,CAAAwB,gBAAS,CAACC,KAAK,CAClB,MAAO,CAAAF,CAAiB,GAAK,IAAI,CAACnB,cAAc,CAClD,IAAK,CAAAoB,gBAAS,CAACE,OAAO,CACpB,MAAO,CAAAH,CAAiB,CAAG,IAAI,CAACnB,cAAc,CAChD,IAAK,CAAAoB,gBAAS,CAACG,KAAK,CAClB,MAAO,CAAAJ,CAAiB,CAAG,IAAI,CAACnB,cAAc,CAChD,QACE,SAAa,CAEnB,CAAC,IAAAN,CAAA,IAAA8B,OAAA,CAAA/B,aAAA,CAAAA,aAAA"}
@@ -2,14 +2,11 @@ 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 SdkLanguageCondition implements ICondition {
5
+ export declare class SdkLanguage implements ICondition {
6
6
  private sdkLanguage?;
7
7
  private conditionValue?;
8
8
  private versionMatchType?;
9
- private error?;
10
9
  constructor({ sdkLanguage, version, versionMatchType }: ConditionDataType);
11
10
  evaluate({ sdkInfo, }: EvaluationDataType): Result<boolean, KameleoonError>;
12
11
  private checkCondition;
13
- private compareSemVer;
14
- private validateVersion;
15
12
  }
@@ -0,0 +1,2 @@
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.SdkLanguage=void 0;var _tsRes=require("ts-res"),_utilities=require("../../utilities");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 SdkLanguage=function(){function a(b){var c=b.sdkLanguage,d=b.version,e=b.versionMatchType;_classCallCheck(this,a),_defineProperty(this,"sdkLanguage",void 0),_defineProperty(this,"conditionValue",void 0),_defineProperty(this,"versionMatchType",void 0),this.sdkLanguage=c,this.conditionValue=d,this.versionMatchType=e}return _createClass(a,[{key:"evaluate",value:function evaluate(a){var b=a.sdkInfo;return this.checkCondition(b)}},{key:"checkCondition",value:function checkCondition(a){var b=a.type,c=a.version;if(!this.sdkLanguage)return(0,_tsRes.Ok)(!1);if("string"!=typeof this.conditionValue)return(0,_tsRes.Ok)(b===this.sdkLanguage);if(!this.versionMatchType)return(0,_tsRes.Ok)(!1);var d=_utilities.Utilities.compareSemVer({version:c,compareVersion:this.conditionValue,operator:this.versionMatchType});return d.ok?(0,_tsRes.Ok)(b===this.sdkLanguage&&d.data):(0,_tsRes.Err)(d.error)}}]),a}();exports.SdkLanguage=SdkLanguage;
2
+ //# sourceMappingURL=sdkLanguage.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sdkLanguage.js","names":["SdkLanguage","a","b","sdkLanguage","version","versionMatchType","_classCallCheck","_defineProperty","conditionValue","_createClass","key","value","evaluate","sdkInfo","checkCondition","sdkType","type","Ok","result","Utilities","compareSemVer","compareVersion","operator","ok","data","Err","error","exports"],"sources":["../../../src/targeting/conditions/sdkLanguage.ts"],"sourcesContent":["import { Err, Ok, Result } from 'ts-res';\nimport { SdkLanguageType } from 'src/constants';\nimport { KameleoonError } from 'src/kameleoonError';\nimport { Utilities } from 'src/utilities';\nimport { ExternalPackageInfoType } from 'src/types';\nimport { EvaluationDataType, VersionMatchType } from 'src/targeting/types';\nimport { ConditionDataType, ICondition } from './types';\n\nexport class SdkLanguage implements ICondition {\n private sdkLanguage?: SdkLanguageType | null;\n private conditionValue?: string | null;\n private versionMatchType?: VersionMatchType | null;\n\n constructor({ sdkLanguage, version, versionMatchType }: ConditionDataType) {\n this.sdkLanguage = sdkLanguage;\n this.conditionValue = version;\n this.versionMatchType = versionMatchType;\n }\n\n public evaluate({\n sdkInfo,\n }: EvaluationDataType): Result<boolean, KameleoonError> {\n return this.checkCondition(sdkInfo);\n }\n\n private checkCondition(\n sdkInfo: ExternalPackageInfoType,\n ): Result<boolean, KameleoonError> {\n const { type: sdkType, version } = sdkInfo;\n\n if (!this.sdkLanguage) {\n return Ok(false);\n }\n\n if (typeof this.conditionValue !== 'string') {\n return Ok(sdkType === this.sdkLanguage);\n }\n\n if (!this.versionMatchType) {\n return Ok(false);\n }\n\n const result = Utilities.compareSemVer({\n version,\n compareVersion: this.conditionValue,\n operator: this.versionMatchType,\n });\n\n if (!result.ok) {\n return Err(result.error);\n }\n\n return Ok(sdkType === this.sdkLanguage && result.data);\n }\n}\n"],"mappings":"84CAQa,CAAAA,WAAW,YAKtB,SAAAC,EAAAC,CAAA,CAA2E,IAA7D,CAAAC,CAAW,CAAAD,CAAA,CAAXC,WAAW,CAAEC,CAAO,CAAAF,CAAA,CAAPE,OAAO,CAAEC,CAAgB,CAAAH,CAAA,CAAhBG,gBAAgB,CAAAC,eAAA,MAAAL,CAAA,EAAAM,eAAA,4BAAAA,eAAA,+BAAAA,eAAA,iCAClD,IAAI,CAACJ,WAAW,CAAGA,CAAW,CAC9B,IAAI,CAACK,cAAc,CAAGJ,CAAO,CAC7B,IAAI,CAACC,gBAAgB,CAAGA,CAC1B,CAAC,OAAAI,YAAA,CAAAR,CAAA,GAAAS,GAAA,YAAAC,KAAA,CAED,SAAAC,SAAAX,CAAA,CAEwD,IADtD,CAAAY,CAAO,CAAAZ,CAAA,CAAPY,OAAO,CAEP,MAAO,KAAI,CAACC,cAAc,CAACD,CAAO,CACpC,CAAC,GAAAH,GAAA,kBAAAC,KAAA,CAED,SAAAG,eACED,CAAgC,CACC,CACjC,GAAc,CAAAE,CAAO,CAAcF,CAAO,CAAlCG,IAAI,CAAWZ,CAAO,CAAKS,CAAO,CAAnBT,OAAO,CAE9B,GAAI,CAAC,IAAI,CAACD,WAAW,CACnB,MAAO,GAAAc,SAAE,KAAO,CAGlB,GAAmC,QAAQ,EAAvC,MAAO,KAAI,CAACT,cAA2B,CACzC,MAAO,GAAAS,SAAE,EAACF,CAAO,GAAK,IAAI,CAACZ,WAAW,CAAC,CAGzC,GAAI,CAAC,IAAI,CAACE,gBAAgB,CACxB,MAAO,GAAAY,SAAE,KAAO,CAGlB,GAAM,CAAAC,CAAM,CAAGC,oBAAS,CAACC,aAAa,CAAC,CACrChB,OAAO,CAAPA,CAAO,CACPiB,cAAc,CAAE,IAAI,CAACb,cAAc,CACnCc,QAAQ,CAAE,IAAI,CAACjB,gBACjB,CAAC,CAAC,CAAC,MAEE,CAAAa,CAAM,CAACK,EAAE,CAIP,GAAAN,SAAE,EAACF,CAAO,GAAK,IAAI,CAACZ,WAAW,EAAIe,CAAM,CAACM,IAAI,CAAC,CAH7C,GAAAC,UAAG,EAACP,CAAM,CAACQ,KAAK,CAI3B,CAAC,IAAAzB,CAAA,IAAA0B,OAAA,CAAA3B,WAAA,CAAAA,WAAA"}
@@ -0,0 +1,9 @@
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 Segment implements ICondition {
6
+ segmentId?: number | null;
7
+ constructor({ segmentId }: ConditionDataType);
8
+ evaluate(evaluationData: EvaluationDataType): Result<boolean, KameleoonError>;
9
+ }