@kameleoon/javascript-sdk-core 2.10.1 → 3.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (256) hide show
  1. package/dist/cacheManager/cacheManager.js +1 -11
  2. package/dist/cacheManager/cacheManager.js.map +1 -1
  3. package/dist/clientConfiguration/clientConfiguration.d.ts +52 -0
  4. package/dist/clientConfiguration/clientConfiguration.js +2 -0
  5. package/dist/clientConfiguration/clientConfiguration.js.map +1 -0
  6. package/dist/clientConfiguration/constants.d.ts +2 -0
  7. package/dist/clientConfiguration/constants.js +2 -0
  8. package/dist/clientConfiguration/constants.js.map +1 -0
  9. package/dist/clientConfiguration/index.d.ts +2 -0
  10. package/dist/clientConfiguration/index.js +2 -0
  11. package/dist/clientConfiguration/index.js.map +1 -0
  12. package/dist/{campaignConfiguration → clientConfiguration}/types.d.ts +12 -53
  13. package/dist/clientConfiguration/types.js +2 -0
  14. package/dist/clientConfiguration/types.js.map +1 -0
  15. package/dist/clientSettings/clientSettings.js +1 -1
  16. package/dist/clientSettings/clientSettings.js.map +1 -1
  17. package/dist/constants.d.ts +3 -2
  18. package/dist/constants.js +1 -4
  19. package/dist/constants.js.map +1 -1
  20. package/dist/eventSource/externalEventSource.js +1 -1
  21. package/dist/eventSource/externalEventSource.js.map +1 -1
  22. package/dist/hasher/hasher.d.ts +2 -3
  23. package/dist/hasher/hasher.js +1 -6
  24. package/dist/hasher/hasher.js.map +1 -1
  25. package/dist/hasher/types.d.ts +3 -10
  26. package/dist/hasher/types.js.map +1 -1
  27. package/dist/index.d.ts +7 -6
  28. package/dist/index.js +1 -1
  29. package/dist/index.js.map +1 -1
  30. package/dist/kameleoonClient.d.ts +44 -80
  31. package/dist/kameleoonClient.js +1 -18
  32. package/dist/kameleoonClient.js.map +1 -1
  33. package/dist/kameleoonData/applicationVersion.d.ts +26 -0
  34. package/dist/kameleoonData/applicationVersion.js +2 -0
  35. package/dist/kameleoonData/applicationVersion.js.map +1 -0
  36. package/dist/kameleoonData/browser.d.ts +16 -1
  37. package/dist/kameleoonData/browser.js +1 -17
  38. package/dist/kameleoonData/browser.js.map +1 -1
  39. package/dist/kameleoonData/constants.d.ts +4 -0
  40. package/dist/kameleoonData/constants.js +2 -0
  41. package/dist/kameleoonData/constants.js.map +1 -0
  42. package/dist/kameleoonData/conversion.d.ts +14 -1
  43. package/dist/kameleoonData/conversion.js +1 -13
  44. package/dist/kameleoonData/conversion.js.map +1 -1
  45. package/dist/kameleoonData/cookie.d.ts +33 -0
  46. package/dist/kameleoonData/cookie.js +2 -0
  47. package/dist/kameleoonData/cookie.js.map +1 -0
  48. package/dist/kameleoonData/customData.d.ts +14 -1
  49. package/dist/kameleoonData/customData.js +1 -24
  50. package/dist/kameleoonData/customData.js.map +1 -1
  51. package/dist/kameleoonData/dataManager.d.ts +38 -0
  52. package/dist/kameleoonData/dataManager.js +2 -0
  53. package/dist/kameleoonData/dataManager.js.map +1 -0
  54. package/dist/kameleoonData/dataProcessor.d.ts +26 -0
  55. package/dist/kameleoonData/dataProcessor.js +2 -0
  56. package/dist/kameleoonData/dataProcessor.js.map +1 -0
  57. package/dist/kameleoonData/device.d.ts +14 -1
  58. package/dist/kameleoonData/device.js +1 -13
  59. package/dist/kameleoonData/device.js.map +1 -1
  60. package/dist/kameleoonData/geolocation.d.ts +52 -0
  61. package/dist/kameleoonData/geolocation.js +2 -0
  62. package/dist/kameleoonData/geolocation.js.map +1 -0
  63. package/dist/kameleoonData/helpers.d.ts +1 -0
  64. package/dist/kameleoonData/helpers.js +2 -0
  65. package/dist/kameleoonData/helpers.js.map +1 -0
  66. package/dist/kameleoonData/index.d.ts +10 -3
  67. package/dist/kameleoonData/index.js +1 -1
  68. package/dist/kameleoonData/index.js.map +1 -1
  69. package/dist/kameleoonData/operatingSystem.d.ts +34 -0
  70. package/dist/kameleoonData/operatingSystem.js +2 -0
  71. package/dist/kameleoonData/operatingSystem.js.map +1 -0
  72. package/dist/kameleoonData/pageView.d.ts +20 -1
  73. package/dist/kameleoonData/pageView.js +1 -13
  74. package/dist/kameleoonData/pageView.js.map +1 -1
  75. package/dist/kameleoonData/types.d.ts +118 -9
  76. package/dist/kameleoonData/types.js +1 -14
  77. package/dist/kameleoonData/types.js.map +1 -1
  78. package/dist/kameleoonData/userAgent.d.ts +6 -1
  79. package/dist/kameleoonData/userAgent.js +1 -8
  80. package/dist/kameleoonData/userAgent.js.map +1 -1
  81. package/dist/kameleoonData/visitsData.d.ts +34 -0
  82. package/dist/{variationConfiguration/variation.js → kameleoonData/visitsData.js} +2 -7
  83. package/dist/kameleoonData/visitsData.js.map +1 -0
  84. package/dist/kameleoonError/constants.d.ts +5 -4
  85. package/dist/kameleoonError/constants.js +1 -1
  86. package/dist/kameleoonError/constants.js.map +1 -1
  87. package/dist/kameleoonError/kameleoonError.d.ts +5 -4
  88. package/dist/kameleoonError/kameleoonError.js +1 -4
  89. package/dist/kameleoonError/kameleoonError.js.map +1 -1
  90. package/dist/kameleoonError/types.d.ts +8 -3
  91. package/dist/kameleoonError/types.js +1 -1
  92. package/dist/kameleoonError/types.js.map +1 -1
  93. package/dist/kameleoonUtils.js +1 -4
  94. package/dist/kameleoonUtils.js.map +1 -1
  95. package/dist/requester/constants.d.ts +2 -1
  96. package/dist/requester/constants.js +1 -1
  97. package/dist/requester/constants.js.map +1 -1
  98. package/dist/requester/index.d.ts +1 -1
  99. package/dist/requester/index.js +1 -1
  100. package/dist/requester/index.js.map +1 -1
  101. package/dist/requester/requester.d.ts +5 -4
  102. package/dist/requester/requester.js +1 -1
  103. package/dist/requester/requester.js.map +1 -1
  104. package/dist/requester/types.d.ts +73 -8
  105. package/dist/requester/types.js +1 -1
  106. package/dist/requester/types.js.map +1 -1
  107. package/dist/storage/constants.d.ts +1 -0
  108. package/dist/storage/constants.js +1 -4
  109. package/dist/storage/constants.js.map +1 -1
  110. package/dist/storage/index.d.ts +1 -1
  111. package/dist/storage/index.js +1 -1
  112. package/dist/storage/index.js.map +1 -1
  113. package/dist/storage/types.d.ts +5 -8
  114. package/dist/storage/types.js.map +1 -1
  115. package/dist/targeting/conditions/applicationVersion.d.ts +10 -0
  116. package/dist/targeting/conditions/applicationVersion.js +2 -0
  117. package/dist/targeting/conditions/applicationVersion.js.map +1 -0
  118. package/dist/targeting/conditions/{browserCondition.d.ts → browser.d.ts} +1 -1
  119. package/dist/targeting/conditions/browser.js +2 -0
  120. package/dist/targeting/conditions/browser.js.map +1 -0
  121. package/dist/targeting/conditions/conditionFactory.js +1 -1
  122. package/dist/targeting/conditions/conditionFactory.js.map +1 -1
  123. package/dist/targeting/conditions/{conversionCondition.d.ts → conversion.d.ts} +1 -2
  124. package/dist/targeting/conditions/conversion.js +2 -0
  125. package/dist/targeting/conditions/conversion.js.map +1 -0
  126. package/dist/targeting/conditions/cookie.d.ts +15 -0
  127. package/dist/targeting/conditions/cookie.js +2 -0
  128. package/dist/targeting/conditions/cookie.js.map +1 -0
  129. package/dist/targeting/conditions/{customDataCondition.d.ts → customData.d.ts} +1 -1
  130. package/dist/targeting/conditions/customData.js +2 -0
  131. package/dist/targeting/conditions/customData.js.map +1 -0
  132. package/dist/targeting/conditions/{deviceCondition.d.ts → device.d.ts} +1 -1
  133. package/dist/targeting/conditions/{targetExperimentCondition.js → device.js} +2 -2
  134. package/dist/targeting/conditions/device.js.map +1 -0
  135. package/dist/targeting/conditions/{exclusiveExperimentCondition.d.ts → exclusiveCampaign.d.ts} +2 -2
  136. package/dist/targeting/conditions/exclusiveCampaign.js +2 -0
  137. package/dist/targeting/conditions/exclusiveCampaign.js.map +1 -0
  138. package/dist/targeting/conditions/firstVisit.d.ts +12 -0
  139. package/dist/targeting/conditions/firstVisit.js +2 -0
  140. package/dist/targeting/conditions/firstVisit.js.map +1 -0
  141. package/dist/targeting/conditions/geolocation.d.ts +11 -0
  142. package/dist/targeting/conditions/geolocation.js +2 -0
  143. package/dist/targeting/conditions/geolocation.js.map +1 -0
  144. package/dist/targeting/conditions/index.d.ts +22 -10
  145. package/dist/targeting/conditions/index.js +1 -1
  146. package/dist/targeting/conditions/index.js.map +1 -1
  147. package/dist/targeting/conditions/lastVisit.d.ts +12 -0
  148. package/dist/targeting/conditions/lastVisit.js +2 -0
  149. package/dist/targeting/conditions/lastVisit.js.map +1 -0
  150. package/dist/targeting/conditions/newVisitor.d.ts +9 -0
  151. package/dist/targeting/conditions/newVisitor.js +2 -0
  152. package/dist/targeting/conditions/newVisitor.js.map +1 -0
  153. package/dist/targeting/conditions/operatingSystem.d.ts +9 -0
  154. package/dist/targeting/conditions/{deviceCondition.js → operatingSystem.js} +2 -2
  155. package/dist/targeting/conditions/operatingSystem.js.map +1 -0
  156. package/dist/targeting/conditions/{pageTitleCondition.d.ts → pageTitle.d.ts} +1 -1
  157. package/dist/targeting/conditions/pageTitle.js +2 -0
  158. package/dist/targeting/conditions/pageTitle.js.map +1 -0
  159. package/dist/targeting/conditions/{pageUrlCondition.d.ts → pageUrl.d.ts} +1 -1
  160. package/dist/targeting/conditions/pageUrl.js +2 -0
  161. package/dist/targeting/conditions/pageUrl.js.map +1 -0
  162. package/dist/targeting/conditions/previousPage.d.ts +12 -0
  163. package/dist/targeting/conditions/previousPage.js +2 -0
  164. package/dist/targeting/conditions/previousPage.js.map +1 -0
  165. package/dist/targeting/conditions/sameDayVisits.d.ts +11 -0
  166. package/dist/targeting/conditions/sameDayVisits.js +2 -0
  167. package/dist/targeting/conditions/sameDayVisits.js.map +1 -0
  168. package/dist/targeting/conditions/{sdkLanguageCondition.d.ts → sdkLanguage.d.ts} +1 -4
  169. package/dist/targeting/conditions/sdkLanguage.js +2 -0
  170. package/dist/targeting/conditions/sdkLanguage.js.map +1 -0
  171. package/dist/targeting/conditions/segment.d.ts +9 -0
  172. package/dist/targeting/conditions/segment.js +2 -0
  173. package/dist/targeting/conditions/segment.js.map +1 -0
  174. package/dist/targeting/conditions/targetFeatureFlag.d.ts +11 -0
  175. package/dist/targeting/conditions/targetFeatureFlag.js +2 -0
  176. package/dist/targeting/conditions/targetFeatureFlag.js.map +1 -0
  177. package/dist/targeting/conditions/types.d.ts +20 -13
  178. package/dist/targeting/conditions/types.js.map +1 -1
  179. package/dist/targeting/conditions/visitedPages.d.ts +11 -0
  180. package/dist/targeting/conditions/visitedPages.js +2 -0
  181. package/dist/targeting/conditions/visitedPages.js.map +1 -0
  182. package/dist/targeting/conditions/{visitorCodeCondition.d.ts → visitorCode.d.ts} +1 -1
  183. package/dist/targeting/conditions/visitorCode.js +2 -0
  184. package/dist/targeting/conditions/visitorCode.js.map +1 -0
  185. package/dist/targeting/conditions/visits.d.ts +11 -0
  186. package/dist/targeting/conditions/visits.js +2 -0
  187. package/dist/targeting/conditions/visits.js.map +1 -0
  188. package/dist/targeting/index.d.ts +3 -3
  189. package/dist/targeting/index.js +1 -1
  190. package/dist/targeting/index.js.map +1 -1
  191. package/dist/targeting/{targetingNode.d.ts → node.d.ts} +7 -7
  192. package/dist/targeting/node.js +2 -0
  193. package/dist/targeting/node.js.map +1 -0
  194. package/dist/targeting/{targetingTree.d.ts → tree.d.ts} +6 -3
  195. package/dist/targeting/tree.js +2 -0
  196. package/dist/targeting/tree.js.map +1 -0
  197. package/dist/targeting/types.d.ts +30 -8
  198. package/dist/targeting/types.js +1 -1
  199. package/dist/targeting/types.js.map +1 -1
  200. package/dist/types.d.ts +17 -6
  201. package/dist/types.js +1 -41
  202. package/dist/types.js.map +1 -1
  203. package/dist/utilities/index.d.ts +1 -0
  204. package/dist/utilities/index.js +1 -1
  205. package/dist/utilities/index.js.map +1 -1
  206. package/dist/utilities/types.d.ts +61 -6
  207. package/dist/utilities/types.js +1 -1
  208. package/dist/utilities/types.js.map +1 -1
  209. package/dist/utilities/utilities.d.ts +24 -11
  210. package/dist/utilities/utilities.js +1 -1
  211. package/dist/utilities/utilities.js.map +1 -1
  212. package/dist/variationConfiguration/index.d.ts +1 -1
  213. package/dist/variationConfiguration/index.js +1 -1
  214. package/dist/variationConfiguration/index.js.map +1 -1
  215. package/dist/variationConfiguration/types.d.ts +5 -12
  216. package/dist/variationConfiguration/types.js.map +1 -1
  217. package/dist/variationConfiguration/variationConfiguration.d.ts +13 -21
  218. package/dist/variationConfiguration/variationConfiguration.js +1 -65
  219. package/dist/variationConfiguration/variationConfiguration.js.map +1 -1
  220. package/package.json +1 -1
  221. package/dist/campaignConfiguration/campaignConfiguration.d.ts +0 -71
  222. package/dist/campaignConfiguration/campaignConfiguration.js +0 -24
  223. package/dist/campaignConfiguration/campaignConfiguration.js.map +0 -1
  224. package/dist/campaignConfiguration/constants.d.ts +0 -6
  225. package/dist/campaignConfiguration/constants.js +0 -4
  226. package/dist/campaignConfiguration/constants.js.map +0 -1
  227. package/dist/campaignConfiguration/index.d.ts +0 -3
  228. package/dist/campaignConfiguration/index.js +0 -2
  229. package/dist/campaignConfiguration/index.js.map +0 -1
  230. package/dist/campaignConfiguration/types.js +0 -2
  231. package/dist/campaignConfiguration/types.js.map +0 -1
  232. package/dist/targeting/conditions/browserCondition.js +0 -2
  233. package/dist/targeting/conditions/browserCondition.js.map +0 -1
  234. package/dist/targeting/conditions/conversionCondition.js +0 -4
  235. package/dist/targeting/conditions/conversionCondition.js.map +0 -1
  236. package/dist/targeting/conditions/customDataCondition.js +0 -8
  237. package/dist/targeting/conditions/customDataCondition.js.map +0 -1
  238. package/dist/targeting/conditions/deviceCondition.js.map +0 -1
  239. package/dist/targeting/conditions/exclusiveExperimentCondition.js +0 -2
  240. package/dist/targeting/conditions/exclusiveExperimentCondition.js.map +0 -1
  241. package/dist/targeting/conditions/pageTitleCondition.js +0 -2
  242. package/dist/targeting/conditions/pageTitleCondition.js.map +0 -1
  243. package/dist/targeting/conditions/pageUrlCondition.js +0 -2
  244. package/dist/targeting/conditions/pageUrlCondition.js.map +0 -1
  245. package/dist/targeting/conditions/sdkLanguageCondition.js +0 -2
  246. package/dist/targeting/conditions/sdkLanguageCondition.js.map +0 -1
  247. package/dist/targeting/conditions/targetExperimentCondition.d.ts +0 -12
  248. package/dist/targeting/conditions/targetExperimentCondition.js.map +0 -1
  249. package/dist/targeting/conditions/visitorCodeCondition.js +0 -2
  250. package/dist/targeting/conditions/visitorCodeCondition.js.map +0 -1
  251. package/dist/targeting/targetingNode.js +0 -2
  252. package/dist/targeting/targetingNode.js.map +0 -1
  253. package/dist/targeting/targetingTree.js +0 -35
  254. package/dist/targeting/targetingTree.js.map +0 -1
  255. package/dist/variationConfiguration/variation.d.ts +0 -13
  256. package/dist/variationConfiguration/variation.js.map +0 -1
@@ -1 +0,0 @@
1
- {"version":3,"file":"browserCondition.js","names":["BrowserCondition","a","b","browser","version","versionMatchType","_classCallCheck","_defineProperty","_createClass","key","value","evaluate","targetingData","browserData","KameleoonData","Browser","result","checkCondition","error","Err","Ok","parsedVersion","parseFloat","isNaN","KameleoonError","KameleoonException","VersionParse","VersionMatchType","EQUAL","GREATER","LOWER","exhaustCheck","exports"],"sources":["../../../src/targeting/conditions/browserCondition.ts"],"sourcesContent":["import { Err, Ok, Result } from 'ts-res';\nimport { KameleoonData, BrowserType, BrowserDataType } from 'src/kameleoonData';\nimport {\n exhaustCheck,\n KameleoonError,\n KameleoonException,\n} from 'src/kameleoonError';\nimport { EvaluationDataType, VersionMatchType } from 'src/targeting/types';\nimport { ConditionDataType, ICondition } from './types';\n\nexport class BrowserCondition implements ICondition {\n private browser?: BrowserType | null;\n private version?: string | null;\n private versionMatchType?: VersionMatchType | null;\n private error?: KameleoonError;\n\n constructor({ browser, version, versionMatchType }: ConditionDataType) {\n this.browser = browser;\n this.version = version;\n this.versionMatchType = versionMatchType;\n }\n\n public evaluate({\n targetingData,\n }: EvaluationDataType): Result<boolean, KameleoonError> {\n const browserData = targetingData?.[KameleoonData.Browser];\n\n if (browserData) {\n const result = this.checkCondition(browserData);\n\n if (this.error) {\n return Err(this.error);\n }\n\n return Ok(result);\n }\n\n return Ok(false);\n }\n\n private checkCondition(browserData: BrowserDataType): boolean {\n const { browser, version } = browserData;\n\n if (typeof this.browser !== 'string') {\n return false;\n }\n\n if (typeof this.version !== 'string') {\n return browser === this.browser;\n }\n\n if (!this.versionMatchType || typeof version !== 'number') {\n return false;\n }\n\n const parsedVersion = parseFloat(this.version);\n\n if (isNaN(parsedVersion)) {\n this.error = new KameleoonError(\n KameleoonException.VersionParse,\n this.version,\n );\n }\n\n switch (this.versionMatchType) {\n case VersionMatchType.EQUAL:\n return browser === this.browser && version === parsedVersion;\n case VersionMatchType.GREATER:\n return browser === this.browser && version > parsedVersion;\n case VersionMatchType.LOWER:\n return browser === this.browser && version < parsedVersion;\n default:\n exhaustCheck(this.versionMatchType);\n }\n }\n}\n"],"mappings":"s+CAUa,CAAAA,gBAAgB,yBAM3B,SAAAC,EAAAC,CAAA,CAAuE,IAAzD,CAAAC,CAAO,CAAAD,CAAA,CAAPC,OAAO,CAAEC,CAAO,CAAAF,CAAA,CAAPE,OAAO,CAAEC,CAAgB,CAAAH,CAAA,CAAhBG,gBAAgB,CAAAC,eAAA,MAAAL,CAAA,EAAAM,eAAA,wBAAAA,eAAA,wBAAAA,eAAA,iCAAAA,eAAA,sBAC9C,IAAI,CAACJ,OAAO,CAAGA,CAAO,CACtB,IAAI,CAACC,OAAO,CAAGA,CAAO,CACtB,IAAI,CAACC,gBAAgB,CAAGA,CAC1B,CAAC,OAAAG,YAAA,CAAAP,CAAA,GAAAQ,GAAA,YAAAC,KAAA,CAED,SAAAC,SAAAV,CAAA,CAEwD,IADtD,CAAAW,CAAa,CAAAX,CAAA,CAAbW,aAAa,CAEPC,CAAW,QAAGD,CAAa,WAAbA,CAAa,QAAbA,CAAa,CAAGE,4BAAa,CAACC,OAAO,CAAC,CAE1D,GAAIF,CAAW,CAAE,CACf,GAAM,CAAAG,CAAM,CAAG,IAAI,CAACC,cAAc,CAACJ,CAAW,CAAC,CAAC,MAE5C,KAAI,CAACK,KAAK,CACL,GAAAC,UAAG,EAAC,IAAI,CAACD,KAAK,CAAC,CAGjB,GAAAE,SAAE,EAACJ,CAAM,CAClB,CAEA,MAAO,GAAAI,SAAE,KACX,CAAC,GAAAX,GAAA,kBAAAC,KAAA,CAED,SAAAO,eAAuBJ,CAA4B,CAAW,CAC5D,GAAQ,CAAAV,CAAO,CAAcU,CAAW,CAAhCV,OAAO,CAAEC,CAAO,CAAKS,CAAW,CAAvBT,OAAO,CAExB,GAA4B,QAAQ,EAAhC,MAAO,KAAI,CAACD,OAAoB,CAClC,SAGF,GAA4B,QAAQ,EAAhC,MAAO,KAAI,CAACC,OAAoB,CAClC,MAAO,CAAAD,CAAO,GAAK,IAAI,CAACA,OAAO,CAGjC,GAAI,CAAC,IAAI,CAACE,gBAAgB,EAAuB,QAAQ,EAA3B,MAAO,CAAAD,CAAoB,CACvD,SAGF,GAAM,CAAAiB,CAAa,CAAGC,UAAU,CAAC,IAAI,CAAClB,OAAO,CAAC,CAS9C,OAPImB,KAAK,CAACF,CAAa,CAAC,GACtB,IAAI,CAACH,KAAK,CAAG,GAAI,CAAAM,8BAAc,CAC7BC,kCAAkB,CAACC,YAAY,CAC/B,IAAI,CAACtB,OAAO,CACb,EAGK,IAAI,CAACC,gBAAgB,EAC3B,IAAK,CAAAsB,uBAAgB,CAACC,KAAK,CACzB,MAAO,CAAAzB,CAAO,GAAK,IAAI,CAACA,OAAO,EAAIC,CAAO,GAAKiB,CAAa,CAC9D,IAAK,CAAAM,uBAAgB,CAACE,OAAO,CAC3B,MAAO,CAAA1B,CAAO,GAAK,IAAI,CAACA,OAAO,EAAIC,CAAO,CAAGiB,CAAa,CAC5D,IAAK,CAAAM,uBAAgB,CAACG,KAAK,CACzB,MAAO,CAAA3B,CAAO,GAAK,IAAI,CAACA,OAAO,EAAIC,CAAO,CAAGiB,CAAa,CAC5D,QACE,GAAAU,4BAAY,EAAC,IAAI,CAAC1B,gBAAgB,CAAC,CAAC,CAE1C,CAAC,IAAAJ,CAAA,IAAA+B,OAAA,CAAAhC,gBAAA,CAAAA,gBAAA"}
@@ -1,4 +0,0 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.ConversionCondition=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 ConversionCondition=/*#__PURE__*/function(){function a(b){var c=b.goalId;_classCallCheck(this,a),_defineProperty(this,"conditionValue",void 0),this.conditionValue=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.Conversion];if(c){var d=c.goalId;return(0,_tsRes.Ok)(this.checkCondition(d))}return(0,_tsRes.Ok)(!1)}},{key:"checkCondition",value:function checkCondition(a){return!!this.conditionValue&&(-1===this.conditionValue||a===this.conditionValue);// --- Note ---
2
- // `goalId` with value `-1` means any goal conversion
3
- }}]),a}();exports.ConversionCondition=ConversionCondition;
4
- //# sourceMappingURL=conversionCondition.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"conversionCondition.js","names":["ConversionCondition","a","b","goalId","_classCallCheck","_defineProperty","conditionValue","_createClass","key","value","evaluate","targetingData","conversionData","KameleoonData","Conversion","Ok","checkCondition","exports"],"sources":["../../../src/targeting/conditions/conversionCondition.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\nexport class ConversionCondition implements ICondition {\n private conditionValue?: number | null;\n\n constructor({ goalId }: ConditionDataType) {\n this.conditionValue = goalId;\n }\n\n public evaluate({\n targetingData,\n }: EvaluationDataType): Result<boolean, KameleoonError> {\n const conversionData = targetingData?.[KameleoonData.Conversion];\n\n if (conversionData) {\n const { goalId } = conversionData;\n\n return Ok(this.checkCondition(goalId));\n }\n\n return Ok(false);\n }\n\n private checkCondition(goalId: number): boolean {\n if (!this.conditionValue) {\n return false;\n }\n\n // --- Note ---\n // `goalId` with value `-1` means any goal conversion\n if (this.conditionValue === -1) {\n return true;\n }\n\n return goalId === this.conditionValue;\n }\n}\n"],"mappings":"85CAMa,CAAAA,mBAAmB,yBAG9B,SAAAC,EAAAC,CAAA,CAA2C,IAA7B,CAAAC,CAAM,CAAAD,CAAA,CAANC,MAAM,CAAAC,eAAA,MAAAH,CAAA,EAAAI,eAAA,+BAClB,IAAI,CAACC,cAAc,CAAGH,CACxB,CAAC,OAAAI,YAAA,CAAAN,CAAA,GAAAO,GAAA,YAAAC,KAAA,CAED,SAAAC,SAAAT,CAAA,CAEwD,IADtD,CAAAU,CAAa,CAAAV,CAAA,CAAbU,aAAa,CAEPC,CAAc,QAAGD,CAAa,WAAbA,CAAa,QAAbA,CAAa,CAAGE,4BAAa,CAACC,UAAU,CAAC,CAEhE,GAAIF,CAAc,CAAE,CAClB,GAAQ,CAAAT,CAAM,CAAKS,CAAc,CAAzBT,MAAM,CAEd,MAAO,GAAAY,SAAE,EAAC,IAAI,CAACC,cAAc,CAACb,CAAM,CAAC,CACvC,CAEA,MAAO,GAAAY,SAAE,KACX,CAAC,GAAAP,GAAA,kBAAAC,KAAA,CAED,SAAAO,eAAuBb,CAAc,CAAW,SACzC,IAAI,CAACG,cAAc,GAMI,CAAC,CAAC,GAA1B,IAAI,CAACA,cAAqB,EAIvBH,CAAM,GAAK,IAAI,CAACG,cAAc,EANrC;AACA;AAMF,CAAC,IAAAL,CAAA,IAAAgB,OAAA,CAAAjB,mBAAA,CAAAA,mBAAA"}
@@ -1,8 +0,0 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.CustomDataCondition=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 CustomDataCondition=/*#__PURE__*/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.MatchTypeCustomData.UNDEFINED)}},{key:"checkCondition",value:function checkCondition(a){var b=this;if("string"!=typeof this.conditionValue&&this.matchType!==_types.MatchTypeCustomData.TRUE&&this.matchType!==_types.MatchTypeCustomData.FALSE)return!1;// --- Note ---
2
- // `MatchTypeCustomData.TRUE` and `MatchTypeCustomData.FALSE` do not use condition value
3
- // so we can safely assume that `this.conditionValue` is a string at this point
4
- var c=this.conditionValue;// --- Note ---
5
- // `AMONG_VALUES` is checked separately to avoid recursion overhead
6
- // for `JSON.parse` inside `this.parseArray`
7
- if(this.matchType===_types.MatchTypeCustomData.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.MatchTypeCustomData.CONTAINS:return a.includes(c);case _types.MatchTypeCustomData.EXACT:return a===this.conditionValue;case _types.MatchTypeCustomData.REGULAR_EXPRESSION:return _utilities.Utilities.parseRegExp(c).test(a);case _types.MatchTypeCustomData.LOWER:return+a<+this.conditionValue;case _types.MatchTypeCustomData.EQUAL:return+a===+this.conditionValue;case _types.MatchTypeCustomData.GREATER:return+a>+this.conditionValue;case _types.MatchTypeCustomData.TRUE:return"true"===a.toLowerCase();case _types.MatchTypeCustomData.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.CustomDataCondition=CustomDataCondition;
8
- //# sourceMappingURL=customDataCondition.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"customDataCondition.js","names":["CustomDataCondition","a","b","customDataIndex","valueMatchType","value","_classCallCheck","_defineProperty","matchType","conditionValue","_createClass","key","evaluate","targetingData","c","customData","KameleoonData","CustomData","customDataValue","result","checkCondition","error","Err","Ok","MatchTypeCustomData","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/customDataCondition.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, MatchTypeCustomData } from 'src/targeting/types';\nimport { ConditionDataType, ICondition } from './types';\n\nexport class CustomDataCondition implements ICondition {\n private customDataIndex: number | null;\n private matchType?: MatchTypeCustomData | 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 === MatchTypeCustomData.UNDEFINED);\n }\n\n private checkCondition(customDataValue: CustomDataType['value']): boolean {\n if (\n typeof this.conditionValue !== 'string' &&\n this.matchType !== MatchTypeCustomData.TRUE &&\n this.matchType !== MatchTypeCustomData.FALSE\n ) {\n return false;\n }\n\n // --- Note ---\n // `MatchTypeCustomData.TRUE` and `MatchTypeCustomData.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 === MatchTypeCustomData.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 MatchTypeCustomData.CONTAINS:\n return customDataValue.includes(conditionValue);\n case MatchTypeCustomData.EXACT:\n return customDataValue === this.conditionValue;\n case MatchTypeCustomData.REGULAR_EXPRESSION:\n return Utilities.parseRegExp(conditionValue).test(customDataValue);\n case MatchTypeCustomData.LOWER:\n return Number(customDataValue) < Number(this.conditionValue);\n case MatchTypeCustomData.EQUAL:\n return Number(customDataValue) === Number(this.conditionValue);\n case MatchTypeCustomData.GREATER:\n return Number(customDataValue) > Number(this.conditionValue);\n case MatchTypeCustomData.TRUE:\n return customDataValue.toLowerCase() === 'true';\n case MatchTypeCustomData.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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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"deviceCondition.js","names":["DeviceCondition","a","b","device","_classCallCheck","_defineProperty","_createClass","key","value","evaluate","targetingData","deviceData","KameleoonData","Device","Ok","exports"],"sources":["../../../src/targeting/conditions/deviceCondition.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 DeviceCondition 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":"05CAMa,CAAAA,eAAe,yBAG1B,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,CAACC,MAAM,CAAC,CAExD,GAAIF,CAAU,CAAE,CACd,GAAQ,CAAAR,CAAM,CAAKQ,CAAU,CAArBR,MAAM,CAEd,MAAO,GAAAW,SAAE,EAACX,CAAM,GAAK,IAAI,CAACA,MAAM,CAClC,CAEA,MAAO,GAAAW,SAAE,KACX,CAAC,IAAAb,CAAA,IAAAc,OAAA,CAAAf,eAAA,CAAAA,eAAA"}
@@ -1,2 +0,0 @@
1
- "use strict";var _tsRes=require("ts-res");Object.defineProperty(exports,"__esModule",{value:!0}),exports.ExclusiveExperimentCondition=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 ExclusiveExperimentCondition=/*#__PURE__*/function(){function a(){_classCallCheck(this,a)}return _createClass(a,[{key:"evaluate",value:function evaluate(a){var b=a.experimentId,c=a.variationData,d=Object.keys(c),e=!d.length,f=1===d.length&&d[0]===b+"";return(0,_tsRes.Ok)(e||f)}}]),a}();exports.ExclusiveExperimentCondition=ExclusiveExperimentCondition;
2
- //# sourceMappingURL=exclusiveExperimentCondition.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"exclusiveExperimentCondition.js","names":["_tsRes","require","Object","defineProperty","exports","value","ExclusiveExperimentCondition","_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","experimentId","variationData","keys","isEmpty","isExclusive","Ok"],"sources":["../../../src/targeting/conditions/exclusiveExperimentCondition.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 ExclusiveExperimentCondition implements ICondition {\n evaluate({\n experimentId,\n variationData,\n }: EvaluationDataType): Result<boolean, KameleoonError> {\n const keys = Object.keys(variationData);\n const isEmpty = !keys.length;\n // --- Note ---\n // Meaning the next variation assignment won't add new experiment\n // but rather overwrite the existing one\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,4BAAA,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,4BAA4B,kCAAAE,EAAA,EAAAK,eAAA,MAAAL,CAAA,SAAAiB,YAAA,CAAAjB,CAAA,GAAAgB,GAAA,YAAAnB,KAAA,CACvC,SAAA0B,SAAAvB,CAAA,CAGwD,IAFtD,CAAAwB,CAAY,CAAAxB,CAAA,CAAZwB,YAAY,CACZC,CAAa,CAAAzB,CAAA,CAAbyB,aAAa,CAEPC,CAAI,CAAGhC,MAAM,CAACgC,IAAI,CAACD,CAAa,CAAC,CACjCE,CAAO,CAAG,CAACD,CAAI,CAACf,MAAM,CAItBiB,CAAW,CAAmB,CAAC,GAAjBF,CAAI,CAACf,MAAY,EAAIe,CAAI,CAAC,CAAC,CAAC,GAAYF,CAAY,GAAC,CAGzE,MAAO,GAAAK,SAAE,EAFWF,CAAO,EAAIC,CAAW,CAG5C,CAAC,IAAA5B,CAAA,IAAAJ,OAAA,CAAAE,4BAAA,CAAAA,4BAAA"}
@@ -1,2 +0,0 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.PageTitleCondition=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 PageTitleCondition=/*#__PURE__*/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=a.targetingData,c=null===b||void 0===b?void 0:b[_kameleoonData.KameleoonData.PageView];if(c){var d=c.title;return(0,_tsRes.Ok)(this.checkCondition(d))}return(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:(0,_kameleoonError.exhaustCheck)(this.matchType);}}}]),a}();exports.PageTitleCondition=PageTitleCondition;
2
- //# sourceMappingURL=pageTitleCondition.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"pageTitleCondition.js","names":["PageTitleCondition","a","b","matchType","title","_classCallCheck","_defineProperty","conditionValue","_createClass","key","value","evaluate","targetingData","pageViewData","KameleoonData","PageView","Ok","checkCondition","MatchType","CONTAINS","includes","EXACT","REGULAR_EXPRESSION","Utilities","parseRegExp","test","exhaustCheck","exports"],"sources":["../../../src/targeting/conditions/pageTitleCondition.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 PageTitleCondition 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 const { title } = pageViewData;\n\n return Ok(this.checkCondition(title));\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 exhaustCheck(this.matchType);\n }\n }\n}\n"],"mappings":"8gDAOa,CAAAA,kBAAkB,yBAI7B,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,IADtD,CAAAW,CAAa,CAAAX,CAAA,CAAbW,aAAa,CAEPC,CAAY,QAAGD,CAAa,WAAbA,CAAa,QAAbA,CAAa,CAAGE,4BAAa,CAACC,QAAQ,CAAC,CAE5D,GAAIF,CAAY,CAAE,CAChB,GAAQ,CAAAT,CAAK,CAAKS,CAAY,CAAtBT,KAAK,CAEb,MAAO,GAAAY,SAAE,EAAC,IAAI,CAACC,cAAc,CAACb,CAAK,CAAC,CACtC,CAEA,MAAO,GAAAY,SAAE,KACX,CAAC,GAAAP,GAAA,kBAAAC,KAAA,CAED,SAAAO,eAAuBb,CAAa,CAAW,CAC7C,GAAI,CAAC,IAAI,CAACD,SAAS,EAAI,CAAC,IAAI,CAACI,cAAc,CACzC,SAGF,OAAQ,IAAI,CAACJ,SAAS,EACpB,IAAK,CAAAe,gBAAS,CAACC,QAAQ,CACrB,MAAO,CAAAf,CAAK,CAACgB,QAAQ,CAAC,IAAI,CAACb,cAAc,CAAC,CAC5C,IAAK,CAAAW,gBAAS,CAACG,KAAK,CAClB,MAAO,CAAAjB,CAAK,GAAK,IAAI,CAACG,cAAc,CACtC,IAAK,CAAAW,gBAAS,CAACI,kBAAkB,CAC/B,MAAO,CAAAC,oBAAS,CAACC,WAAW,CAAC,IAAI,CAACjB,cAAc,CAAC,CAACkB,IAAI,CAACrB,CAAK,CAAC,CAC/D,QACE,GAAAsB,4BAAY,EAAC,IAAI,CAACvB,SAAS,CAAC,CAAC,CAEnC,CAAC,IAAAF,CAAA,IAAA0B,OAAA,CAAA3B,kBAAA,CAAAA,kBAAA"}
@@ -1,2 +0,0 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.PageUrlCondition=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 PageUrlCondition=/*#__PURE__*/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=a.targetingData,c=null===b||void 0===b?void 0:b[_kameleoonData.KameleoonData.PageView];if(c){var d=c.urlAddress;return(0,_tsRes.Ok)(this.checkCondition(d))}return(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:(0,_kameleoonError.exhaustCheck)(this.matchType);}}}]),a}();exports.PageUrlCondition=PageUrlCondition;
2
- //# sourceMappingURL=pageUrlCondition.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"pageUrlCondition.js","names":["PageUrlCondition","a","b","matchType","url","_classCallCheck","_defineProperty","conditionValue","_createClass","key","value","evaluate","targetingData","pageViewData","KameleoonData","PageView","urlAddress","Ok","checkCondition","MatchType","CONTAINS","includes","EXACT","REGULAR_EXPRESSION","Utilities","parseRegExp","test","exhaustCheck","exports"],"sources":["../../../src/targeting/conditions/pageUrlCondition.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 PageUrlCondition 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 const { urlAddress } = pageViewData;\n\n return Ok(this.checkCondition(urlAddress));\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 exhaustCheck(this.matchType);\n }\n }\n}\n"],"mappings":"4gDAOa,CAAAA,gBAAgB,yBAI3B,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,IADtD,CAAAW,CAAa,CAAAX,CAAA,CAAbW,aAAa,CAEPC,CAAY,QAAGD,CAAa,WAAbA,CAAa,QAAbA,CAAa,CAAGE,4BAAa,CAACC,QAAQ,CAAC,CAE5D,GAAIF,CAAY,CAAE,CAChB,GAAQ,CAAAG,CAAU,CAAKH,CAAY,CAA3BG,UAAU,CAElB,MAAO,GAAAC,SAAE,EAAC,IAAI,CAACC,cAAc,CAACF,CAAU,CAAC,CAC3C,CAEA,MAAO,GAAAC,SAAE,KACX,CAAC,GAAAR,GAAA,kBAAAC,KAAA,CAED,SAAAQ,eAAuBd,CAAW,CAAW,CAC3C,GAAI,CAAC,IAAI,CAACD,SAAS,EAAI,CAAC,IAAI,CAACI,cAAc,CACzC,SAGF,OAAQ,IAAI,CAACJ,SAAS,EACpB,IAAK,CAAAgB,gBAAS,CAACC,QAAQ,CACrB,MAAO,CAAAhB,CAAG,CAACiB,QAAQ,CAAC,IAAI,CAACd,cAAc,CAAC,CAC1C,IAAK,CAAAY,gBAAS,CAACG,KAAK,CAClB,MAAO,CAAAlB,CAAG,GAAK,IAAI,CAACG,cAAc,CACpC,IAAK,CAAAY,gBAAS,CAACI,kBAAkB,CAC/B,MAAO,CAAAC,oBAAS,CAACC,WAAW,CAAC,IAAI,CAAClB,cAAc,CAAC,CAACmB,IAAI,CAACtB,CAAG,CAAC,CAC7D,QACE,GAAAuB,4BAAY,EAAC,IAAI,CAACxB,SAAS,CAAC,CAAC,CAEnC,CAAC,IAAAF,CAAA,IAAA2B,OAAA,CAAA5B,gBAAA,CAAAA,gBAAA"}
@@ -1,2 +0,0 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.SdkLanguageCondition=void 0;var _tsRes=require("ts-res"),_kameleoonError=require("../../kameleoonError"),_types=require("../types");function _typeof(a){"@babel/helpers - typeof";return _typeof="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(a){return typeof a}:function(a){return a&&"function"==typeof Symbol&&a.constructor===Symbol&&a!==Symbol.prototype?"symbol":typeof a},_typeof(a)}function _slicedToArray(a,b){return _arrayWithHoles(a)||_iterableToArrayLimit(a,b)||_unsupportedIterableToArray(a,b)||_nonIterableRest()}function _nonIterableRest(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}function _unsupportedIterableToArray(a,b){if(a){if("string"==typeof a)return _arrayLikeToArray(a,b);var c=Object.prototype.toString.call(a).slice(8,-1);return"Object"===c&&a.constructor&&(c=a.constructor.name),"Map"===c||"Set"===c?Array.from(a):"Arguments"===c||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(c)?_arrayLikeToArray(a,b):void 0}}function _arrayLikeToArray(a,b){(null==b||b>a.length)&&(b=a.length);for(var c=0,d=Array(b);c<b;c++)d[c]=a[c];return d}function _iterableToArrayLimit(a,b){var c=null==a?null:"undefined"!=typeof Symbol&&a[Symbol.iterator]||a["@@iterator"];if(null!=c){var d,e,f,g,h=[],i=!0,j=!1;try{if(f=(c=c.call(a)).next,0===b){if(Object(c)!==c)return;i=!1}else for(;!(i=(d=f.call(c)).done)&&(h.push(d.value),h.length!==b);i=!0);}catch(a){j=!0,e=a}finally{try{if(!i&&null!=c.return&&(g=c.return(),Object(g)!==g))return}finally{if(j)throw e}}return h}}function _arrayWithHoles(a){if(Array.isArray(a))return a}function _classCallCheck(a,b){if(!(a instanceof b))throw new TypeError("Cannot call a class as a function")}function _defineProperties(a,b){for(var c,d=0;d<b.length;d++)c=b[d],c.enumerable=c.enumerable||!1,c.configurable=!0,"value"in c&&(c.writable=!0),Object.defineProperty(a,_toPropertyKey(c.key),c)}function _createClass(a,b,c){return b&&_defineProperties(a.prototype,b),c&&_defineProperties(a,c),Object.defineProperty(a,"prototype",{writable:!1}),a}function _defineProperty(a,b,c){return b=_toPropertyKey(b),b in a?Object.defineProperty(a,b,{value:c,enumerable:!0,configurable:!0,writable:!0}):a[b]=c,a}function _toPropertyKey(a){var b=_toPrimitive(a,"string");return"symbol"===_typeof(b)?b:b+""}function _toPrimitive(a,b){if("object"!==_typeof(a)||null===a)return a;var c=a[Symbol.toPrimitive];if(c!==void 0){var d=c.call(a,b||"default");if("object"!==_typeof(d))return d;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===b?String:Number)(a)}var SdkLanguageCondition=/*#__PURE__*/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),_defineProperty(this,"error",void 0),this.sdkLanguage=c,this.conditionValue=d,this.versionMatchType=e}return _createClass(a,[{key:"evaluate",value:function evaluate(a){var b=a.sdkInfo,c=this.checkCondition(b);return this.error?(0,_tsRes.Err)(this.error):(0,_tsRes.Ok)(c)}},{key:"checkCondition",value:function checkCondition(a){var b=a.type,c=a.version;return!!this.sdkLanguage&&("string"==typeof this.conditionValue?!!this.versionMatchType&&b===this.sdkLanguage&&this.compareSemVer({version:c,compareVersion:this.conditionValue,operator:this.versionMatchType}):b===this.sdkLanguage)}},{key:"compareSemVer",value:function compareSemVer(a){var b=a.version,c=a.compareVersion,d=a.operator,e=this.validateVersion(b),f=_slicedToArray(e,3),g=f[0],h=f[1],i=f[2],j=this.validateVersion(c),k=_slicedToArray(j,3),l=k[0],m=k[1],n=k[2],o=g===l,p=h===m;switch(d){case _types.VersionMatchType.EQUAL:return o&&p&&i===n;case _types.VersionMatchType.GREATER:return g>l||o&&h>m||o&&p&&i>n;case _types.VersionMatchType.LOWER:return g<l||o&&h<m||o&&p&&i<n;default:(0,_kameleoonError.exhaustCheck)(d);}}},{key:"validateVersion",value:function validateVersion(a){var b=a.split(".");return b.some(function isBadVersion(a){return isNaN(parseInt(a))||0===a.length})||3!==b.length?(this.error=new _kameleoonError.KameleoonError(_kameleoonError.KameleoonException.SemanticVersionParse,a),[0,0,0]):b.map(function(a){return parseInt(a)})}}]),a}();exports.SdkLanguageCondition=SdkLanguageCondition;
2
- //# sourceMappingURL=sdkLanguageCondition.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"sdkLanguageCondition.js","names":["SdkLanguageCondition","a","b","sdkLanguage","version","versionMatchType","_classCallCheck","_defineProperty","conditionValue","_createClass","key","value","evaluate","sdkInfo","result","checkCondition","error","Err","Ok","sdkType","type","compareSemVer","compareVersion","operator","e","validateVersion","f","_slicedToArray","major","minor","patch","j","k","compareMajor","compareMinor","comparePatch","isMajorEqual","isMinorEqual","VersionMatchType","EQUAL","GREATER","LOWER","exhaustCheck","versionSplit","split","some","isBadVersion","item","isNaN","parseInt","length","KameleoonError","KameleoonException","SemanticVersionParse","map","exports"],"sources":["../../../src/targeting/conditions/sdkLanguageCondition.ts"],"sourcesContent":["import { Err, Ok, Result } from 'ts-res';\nimport { SdkLanguageType } from 'src/constants';\nimport {\n exhaustCheck,\n KameleoonError,\n KameleoonException,\n} from 'src/kameleoonError';\nimport { ExternalPackageInfoType } from 'src/types';\nimport { EvaluationDataType, VersionMatchType } from 'src/targeting/types';\nimport { ConditionDataType, ICondition } from './types';\n\nexport class SdkLanguageCondition implements ICondition {\n private sdkLanguage?: SdkLanguageType | null;\n private conditionValue?: string | null;\n private versionMatchType?: VersionMatchType | null;\n private error?: KameleoonError;\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 const result = this.checkCondition(sdkInfo);\n\n if (this.error) {\n return Err(this.error);\n }\n\n return Ok(result);\n }\n\n private checkCondition(sdkInfo: ExternalPackageInfoType): boolean {\n const { type: sdkType, version } = sdkInfo;\n\n if (!this.sdkLanguage) {\n return false;\n }\n\n if (typeof this.conditionValue !== 'string') {\n return sdkType === this.sdkLanguage;\n }\n\n if (!this.versionMatchType) {\n return false;\n }\n\n return (\n sdkType === this.sdkLanguage &&\n this.compareSemVer({\n version,\n compareVersion: this.conditionValue,\n operator: this.versionMatchType,\n })\n );\n }\n\n private compareSemVer({\n version,\n compareVersion,\n operator,\n }: {\n version: string;\n compareVersion: string;\n operator: VersionMatchType;\n }): boolean {\n const [major, minor, patch] = this.validateVersion(version);\n const [compareMajor, compareMinor, comparePatch] =\n this.validateVersion(compareVersion);\n\n const [isMajorEqual, isMinorEqual, isPatchEqual] = [\n major === compareMajor,\n minor === compareMinor,\n patch === comparePatch,\n ];\n\n switch (operator) {\n case VersionMatchType.EQUAL:\n return isMajorEqual && isMinorEqual && isPatchEqual;\n case VersionMatchType.GREATER:\n return (\n major > compareMajor ||\n (isMajorEqual && minor > compareMinor) ||\n (isMajorEqual && isMinorEqual && patch > comparePatch)\n );\n case VersionMatchType.LOWER:\n return (\n major < compareMajor ||\n (isMajorEqual && minor < compareMinor) ||\n (isMajorEqual && isMinorEqual && patch < comparePatch)\n );\n default:\n exhaustCheck(operator);\n }\n }\n\n private validateVersion(version: string): [number, number, number] {\n const versionSplit = version.split('.');\n const isBadVersion = (item: string) =>\n isNaN(parseInt(item)) || item.length === 0;\n\n if (versionSplit.some(isBadVersion) || versionSplit.length !== 3) {\n this.error = new KameleoonError(\n KameleoonException.SemanticVersionParse,\n version,\n );\n\n return [0, 0, 0];\n }\n\n return versionSplit.map((item) => parseInt(item)) as [\n number,\n number,\n number,\n ];\n }\n}\n"],"mappings":"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"}
@@ -1,12 +0,0 @@
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 TargetExperimentCondition implements ICondition {
6
- private experimentId?;
7
- private variationId?;
8
- private matchType?;
9
- constructor({ variation, experiment, variationMatchType, }: ConditionDataType);
10
- evaluate({ variationData, }: EvaluationDataType): Result<boolean, KameleoonError>;
11
- private checkCondition;
12
- }
@@ -1 +0,0 @@
1
- {"version":3,"file":"targetExperimentCondition.js","names":["TargetExperimentCondition","a","b","variation","experiment","variationMatchType","_classCallCheck","_defineProperty","experimentId","variationId","matchType","_createClass","key","value","evaluate","variationData","Ok","MatchTypeVariation","EXACT","result","checkCondition","ANY","exports"],"sources":["../../../src/targeting/conditions/targetExperimentCondition.ts"],"sourcesContent":["import { Ok, Result } from 'ts-res';\nimport { KameleoonError } from 'src/kameleoonError';\nimport { ExperimentVariationsType } from 'src/storage';\nimport { EvaluationDataType, MatchTypeVariation } from 'src/targeting/types';\nimport { ConditionDataType, ICondition } from './types';\n\nexport class TargetExperimentCondition implements ICondition {\n private experimentId?: number | null;\n private variationId?: number | null;\n private matchType?: MatchTypeVariation | null;\n\n constructor({\n variation,\n experiment,\n variationMatchType,\n }: ConditionDataType) {\n this.experimentId = experiment;\n this.variationId = variation;\n this.matchType = variationMatchType;\n }\n\n public evaluate({\n variationData,\n }: EvaluationDataType): Result<boolean, KameleoonError> {\n if (!this.experimentId) {\n return Ok(false);\n }\n\n if (this.matchType === MatchTypeVariation.EXACT && !this.variationId) {\n Ok(false);\n }\n\n const result = this.checkCondition({\n variationId: this.variationId,\n experimentId: this.experimentId,\n variationData,\n });\n\n return Ok(result);\n }\n\n private checkCondition({\n variationId,\n experimentId,\n variationData,\n }: {\n variationId?: number | null;\n experimentId: number;\n variationData: ExperimentVariationsType;\n }): boolean {\n const experimentIdString = String(experimentId);\n const variation = variationData[experimentIdString];\n\n switch (this.matchType) {\n case MatchTypeVariation.EXACT: {\n return variation?.variationId === variationId;\n }\n case MatchTypeVariation.ANY:\n return Boolean(variation);\n default:\n return false;\n }\n }\n}\n"],"mappings":"i5CAMa,CAAAA,yBAAyB,yBAKpC,SAAAC,EAAAC,CAAA,CAIsB,IAHpB,CAAAC,CAAS,CAAAD,CAAA,CAATC,SAAS,CACTC,CAAU,CAAAF,CAAA,CAAVE,UAAU,CACVC,CAAkB,CAAAH,CAAA,CAAlBG,kBAAkB,CAAAC,eAAA,MAAAL,CAAA,EAAAM,eAAA,6BAAAA,eAAA,4BAAAA,eAAA,0BAElB,IAAI,CAACC,YAAY,CAAGJ,CAAU,CAC9B,IAAI,CAACK,WAAW,CAAGN,CAAS,CAC5B,IAAI,CAACO,SAAS,CAAGL,CACnB,CAAC,OAAAM,YAAA,CAAAV,CAAA,GAAAW,GAAA,YAAAC,KAAA,CAED,SAAAC,SAAAb,CAAA,CAEwD,IADtD,CAAAc,CAAa,CAAAd,CAAA,CAAbc,aAAa,CAEb,GAAI,CAAC,IAAI,CAACP,YAAY,CACpB,MAAO,GAAAQ,SAAE,KAAO,CAGd,IAAI,CAACN,SAAS,GAAKO,yBAAkB,CAACC,KAAK,EAAK,IAAI,CAACT,WAAW,EAClE,GAAAO,SAAE,KAAO,CAGX,GAAM,CAAAG,CAAM,CAAG,IAAI,CAACC,cAAc,CAAC,CACjCX,WAAW,CAAE,IAAI,CAACA,WAAW,CAC7BD,YAAY,CAAE,IAAI,CAACA,YAAY,CAC/BO,aAAa,CAAbA,CACF,CAAC,CAAC,CAEF,MAAO,GAAAC,SAAE,EAACG,CAAM,CAClB,CAAC,GAAAP,GAAA,kBAAAC,KAAA,CAED,SAAAO,eAAAnB,CAAA,CAQY,IAPV,CAAAQ,CAAW,CAAAR,CAAA,CAAXQ,WAAW,CACXD,CAAY,CAAAP,CAAA,CAAZO,YAAY,CACZO,CAAa,CAAAd,CAAA,CAAbc,aAAa,CAOPZ,CAAS,CAAGY,CAAa,CADGP,CAAY,IACK,CAEnD,OAAQ,IAAI,CAACE,SAAS,EACpB,IAAK,CAAAO,yBAAkB,CAACC,KAAK,CAC3B,MAAO,QAAAf,CAAS,WAATA,CAAS,QAATA,CAAS,CAAEM,WAAW,IAAKA,CAAW,CAE/C,IAAK,CAAAQ,yBAAkB,CAACI,GAAG,CACzB,QAAelB,CAAS,CAC1B,QACE,SAAa,CAEnB,CAAC,IAAAF,CAAA,IAAAqB,OAAA,CAAAtB,yBAAA,CAAAA,yBAAA"}
@@ -1,2 +0,0 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.VisitorCodeCondition=void 0;var _tsRes=require("ts-res"),_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 VisitorCodeCondition=/*#__PURE__*/function(){function a(b){var c=b.visitorCode,d=b.matchType;_classCallCheck(this,a),_defineProperty(this,"matchType",void 0),_defineProperty(this,"conditionValue",void 0),this.matchType=d,this.conditionValue=c}return _createClass(a,[{key:"evaluate",value:function evaluate(a){var b=a.visitorCode;return(0,_tsRes.Ok)(this.checkCondition(b))}},{key:"checkCondition",value:function checkCondition(a){if(!this.matchType||!this.conditionValue)return!1;switch(this.matchType){case _types.MatchType.CONTAINS:return a.includes(this.conditionValue);case _types.MatchType.EXACT:return a===this.conditionValue;case _types.MatchType.REGULAR_EXPRESSION:return _utilities.Utilities.parseRegExp(this.conditionValue).test(a);default:(0,_kameleoonError.exhaustCheck)(this.matchType);}}}]),a}();exports.VisitorCodeCondition=VisitorCodeCondition;
2
- //# sourceMappingURL=visitorCodeCondition.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"visitorCodeCondition.js","names":["VisitorCodeCondition","a","b","visitorCode","matchType","_classCallCheck","_defineProperty","conditionValue","_createClass","key","value","evaluate","Ok","checkCondition","MatchType","CONTAINS","includes","EXACT","REGULAR_EXPRESSION","Utilities","parseRegExp","test","exhaustCheck","exports"],"sources":["../../../src/targeting/conditions/visitorCodeCondition.ts"],"sourcesContent":["import { Ok, Result } from 'ts-res';\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 VisitorCodeCondition implements ICondition {\n private matchType?: MatchType | null;\n private conditionValue?: string | null;\n\n constructor({ visitorCode, matchType }: ConditionDataType) {\n this.matchType = matchType;\n this.conditionValue = visitorCode;\n }\n\n public evaluate({\n visitorCode,\n }: EvaluationDataType): Result<boolean, KameleoonError> {\n return Ok(this.checkCondition(visitorCode));\n }\n\n private checkCondition(visitorCode: string): boolean {\n if (!this.matchType || !this.conditionValue) {\n return false;\n }\n\n switch (this.matchType) {\n case MatchType.CONTAINS:\n return visitorCode.includes(this.conditionValue);\n case MatchType.EXACT:\n return visitorCode === this.conditionValue;\n case MatchType.REGULAR_EXPRESSION:\n return Utilities.parseRegExp(this.conditionValue).test(visitorCode);\n default:\n exhaustCheck(this.matchType);\n }\n }\n}\n"],"mappings":"k+CAMa,CAAAA,oBAAoB,yBAI/B,SAAAC,EAAAC,CAAA,CAA2D,IAA7C,CAAAC,CAAW,CAAAD,CAAA,CAAXC,WAAW,CAAEC,CAAS,CAAAF,CAAA,CAATE,SAAS,CAAAC,eAAA,MAAAJ,CAAA,EAAAK,eAAA,0BAAAA,eAAA,+BAClC,IAAI,CAACF,SAAS,CAAGA,CAAS,CAC1B,IAAI,CAACG,cAAc,CAAGJ,CACxB,CAAC,OAAAK,YAAA,CAAAP,CAAA,GAAAQ,GAAA,YAAAC,KAAA,CAED,SAAAC,SAAAV,CAAA,CAEwD,IADtD,CAAAE,CAAW,CAAAF,CAAA,CAAXE,WAAW,CAEX,MAAO,GAAAS,SAAE,EAAC,IAAI,CAACC,cAAc,CAACV,CAAW,CAAC,CAC5C,CAAC,GAAAM,GAAA,kBAAAC,KAAA,CAED,SAAAG,eAAuBV,CAAmB,CAAW,CACnD,GAAI,CAAC,IAAI,CAACC,SAAS,EAAI,CAAC,IAAI,CAACG,cAAc,CACzC,SAGF,OAAQ,IAAI,CAACH,SAAS,EACpB,IAAK,CAAAU,gBAAS,CAACC,QAAQ,CACrB,MAAO,CAAAZ,CAAW,CAACa,QAAQ,CAAC,IAAI,CAACT,cAAc,CAAC,CAClD,IAAK,CAAAO,gBAAS,CAACG,KAAK,CAClB,MAAO,CAAAd,CAAW,GAAK,IAAI,CAACI,cAAc,CAC5C,IAAK,CAAAO,gBAAS,CAACI,kBAAkB,CAC/B,MAAO,CAAAC,oBAAS,CAACC,WAAW,CAAC,IAAI,CAACb,cAAc,CAAC,CAACc,IAAI,CAAClB,CAAW,CAAC,CACrE,QACE,GAAAmB,4BAAY,EAAC,IAAI,CAAClB,SAAS,CAAC,CAAC,CAEnC,CAAC,IAAAH,CAAA,IAAAsB,OAAA,CAAAvB,oBAAA,CAAAA,oBAAA"}
@@ -1,2 +0,0 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.TargetingNode=void 0;var _conditions=require("./conditions"),_types=require("./types");function _typeof(a){"@babel/helpers - typeof";return _typeof="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(a){return typeof a}:function(a){return a&&"function"==typeof Symbol&&a.constructor===Symbol&&a!==Symbol.prototype?"symbol":typeof a},_typeof(a)}function _classCallCheck(a,b){if(!(a instanceof b))throw new TypeError("Cannot call a class as a function")}function _defineProperties(a,b){for(var c,d=0;d<b.length;d++)c=b[d],c.enumerable=c.enumerable||!1,c.configurable=!0,"value"in c&&(c.writable=!0),Object.defineProperty(a,_toPropertyKey(c.key),c)}function _createClass(a,b,c){return b&&_defineProperties(a.prototype,b),c&&_defineProperties(a,c),Object.defineProperty(a,"prototype",{writable:!1}),a}function _defineProperty(a,b,c){return b=_toPropertyKey(b),b in a?Object.defineProperty(a,b,{value:c,enumerable:!0,configurable:!0,writable:!0}):a[b]=c,a}function _toPropertyKey(a){var b=_toPrimitive(a,"string");return"symbol"===_typeof(b)?b:b+""}function _toPrimitive(a,b){if("object"!==_typeof(a)||null===a)return a;var c=a[Symbol.toPrimitive];if(c!==void 0){var d=c.call(a,b||"default");if("object"!==_typeof(d))return d;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===b?String:Number)(a)}var TargetingNode=/*#__PURE__*/function(){function a(b,c,d){if(_classCallCheck(this,a),_defineProperty(this,"nodeValue",void 0),_defineProperty(this,"nodeError",void 0),_defineProperty(this,"leftChild",void 0),_defineProperty(this,"rightChild",void 0),_defineProperty(this,"inverseResult",!1),this.isOperator(b))this.nodeValue=b;else{var e,f=_conditions.ConditionFactory.createCondition(b);this.inverseResult=null!==(e=b.isInclude)&&void 0!==e&&!e,f.ok?this.nodeValue=f.data:this.nodeError=f.error}this.leftChild=c,this.rightChild=d}return _createClass(a,[{key:"value",get:function get(){return this.nodeValue}},{key:"error",get:function get(){return this.nodeError}},{key:"left",get:function get(){return this.leftChild}},{key:"right",get:function get(){return this.rightChild}},{key:"inverse",get:function get(){return this.inverseResult}},{key:"isOperator",value:function isOperator(a){return a===_types.Operator.And||a===_types.Operator.Or}}]),a}();exports.TargetingNode=TargetingNode;
2
- //# sourceMappingURL=targetingNode.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"targetingNode.js","names":["TargetingNode","a","value","left","right","_classCallCheck","_defineProperty","isOperator","nodeValue","e","result","ConditionFactory","createCondition","inverseResult","isInclude","ok","data","nodeError","error","leftChild","rightChild","_createClass","key","get","Operator","And","Or","exports"],"sources":["../../src/targeting/targetingNode.ts"],"sourcesContent":["import { KameleoonError } from 'src/kameleoonError';\nimport { ConditionFactory, ConditionDataType } from './conditions';\nimport { NodeValueType, Operator } from './types';\n\nexport interface ITargetingNode {\n readonly value?: NodeValueType;\n readonly left?: ITargetingNode;\n readonly right?: ITargetingNode;\n readonly error?: KameleoonError;\n}\n\nexport class TargetingNode implements ITargetingNode {\n private nodeValue?: NodeValueType;\n private nodeError?: KameleoonError;\n private leftChild?: ITargetingNode;\n private rightChild?: ITargetingNode;\n private inverseResult: boolean = false;\n\n constructor(\n value: ConditionDataType | Operator,\n left?: ITargetingNode,\n right?: ITargetingNode,\n ) {\n if (this.isOperator(value)) {\n this.nodeValue = value;\n } else {\n const result = ConditionFactory.createCondition(value);\n this.inverseResult = !(value.isInclude ?? true);\n\n if (result.ok) {\n this.nodeValue = result.data;\n } else {\n this.nodeError = result.error;\n }\n }\n\n this.leftChild = left;\n this.rightChild = right;\n }\n\n get value(): NodeValueType | undefined {\n return this.nodeValue;\n }\n\n get error(): KameleoonError | undefined {\n return this.nodeError;\n }\n\n get left(): ITargetingNode | undefined {\n return this.leftChild;\n }\n\n get right(): ITargetingNode | undefined {\n return this.rightChild;\n }\n\n get inverse(): boolean {\n return this.inverseResult;\n }\n\n private isOperator(value: ConditionDataType | Operator): value is Operator {\n return value === Operator.And || value === Operator.Or;\n }\n}\n"],"mappings":"+4CAWa,CAAAA,aAAa,yBAOxB,SAAAC,EACEC,CAAmC,CACnCC,CAAqB,CACrBC,CAAsB,CACtB,CACA,GAAAC,eAAA,MAAAJ,CAAA,EAAAK,eAAA,0BAAAA,eAAA,0BAAAA,eAAA,0BAAAA,eAAA,2BAAAA,eAAA,0BAAI,IAAI,CAACC,UAAU,CAACL,CAAK,CAAC,CACxB,IAAI,CAACM,SAAS,CAAGN,CAAK,KACjB,KAAAO,CAAA,CACCC,CAAM,CAAGC,4BAAgB,CAACC,eAAe,CAACV,CAAK,CAAC,CACtD,IAAI,CAACW,aAAa,SAAAJ,CAAA,CAAKP,CAAK,CAACY,SAAS,YAAAL,CAAA,GAAAA,CAAS,CAE3CC,CAAM,CAACK,EAAE,CACX,IAAI,CAACP,SAAS,CAAGE,CAAM,CAACM,IAAI,CAE5B,IAAI,CAACC,SAAS,CAAGP,CAAM,CAACQ,KAE5B,CAEA,IAAI,CAACC,SAAS,CAAGhB,CAAI,CACrB,IAAI,CAACiB,UAAU,CAAGhB,CACpB,CAAC,OAAAiB,YAAA,CAAApB,CAAA,GAAAqB,GAAA,SAAAC,GAAA,CAED,SAAAA,IAAA,CAAuC,CACrC,MAAO,KAAI,CAACf,SACd,CAAC,GAAAc,GAAA,SAAAC,GAAA,CAED,SAAAA,IAAA,CAAwC,CACtC,MAAO,KAAI,CAACN,SACd,CAAC,GAAAK,GAAA,QAAAC,GAAA,CAED,SAAAA,IAAA,CAAuC,CACrC,MAAO,KAAI,CAACJ,SACd,CAAC,GAAAG,GAAA,SAAAC,GAAA,CAED,SAAAA,IAAA,CAAwC,CACtC,MAAO,KAAI,CAACH,UACd,CAAC,GAAAE,GAAA,WAAAC,GAAA,CAED,SAAAA,IAAA,CAAuB,CACrB,MAAO,KAAI,CAACV,aACd,CAAC,GAAAS,GAAA,cAAApB,KAAA,CAED,SAAAK,WAAmBL,CAAmC,CAAqB,CACzE,MAAO,CAAAA,CAAK,GAAKsB,eAAQ,CAACC,GAAG,EAAIvB,CAAK,GAAKsB,eAAQ,CAACE,EACtD,CAAC,IAAAzB,CAAA,IAAA0B,OAAA,CAAA3B,aAAA,CAAAA,aAAA"}
@@ -1,35 +0,0 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.TargetingTree=void 0;var _tsRes=require("ts-res"),_kameleoonError=require("../kameleoonError"),_targetingNode=require("./targetingNode"),_types=require("./types");function _typeof(a){"@babel/helpers - typeof";return _typeof="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(a){return typeof a}:function(a){return a&&"function"==typeof Symbol&&a.constructor===Symbol&&a!==Symbol.prototype?"symbol":typeof a},_typeof(a)}function _createForOfIteratorHelper(a,b){var c="undefined"!=typeof Symbol&&a[Symbol.iterator]||a["@@iterator"];if(!c){if(Array.isArray(a)||(c=_unsupportedIterableToArray(a))||b&&a&&"number"==typeof a.length){c&&(a=c);var d=0,e=function(){};return{s:e,n:function n(){return d>=a.length?{done:!0}:{done:!1,value:a[d++]}},e:function e(a){throw a},f:e}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var f,g=!0,h=!1;return{s:function s(){c=c.call(a)},n:function n(){var a=c.next();return g=a.done,a},e:function e(a){h=!0,f=a},f:function f(){try{g||null==c.return||c.return()}finally{if(h)throw f}}}}function _unsupportedIterableToArray(a,b){if(a){if("string"==typeof a)return _arrayLikeToArray(a,b);var c=Object.prototype.toString.call(a).slice(8,-1);return"Object"===c&&a.constructor&&(c=a.constructor.name),"Map"===c||"Set"===c?Array.from(a):"Arguments"===c||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(c)?_arrayLikeToArray(a,b):void 0}}function _arrayLikeToArray(a,b){(null==b||b>a.length)&&(b=a.length);for(var c=0,d=Array(b);c<b;c++)d[c]=a[c];return d}function _classCallCheck(a,b){if(!(a instanceof b))throw new TypeError("Cannot call a class as a function")}function _defineProperties(a,b){for(var c,d=0;d<b.length;d++)c=b[d],c.enumerable=c.enumerable||!1,c.configurable=!0,"value"in c&&(c.writable=!0),Object.defineProperty(a,_toPropertyKey(c.key),c)}function _createClass(a,b,c){return b&&_defineProperties(a.prototype,b),c&&_defineProperties(a,c),Object.defineProperty(a,"prototype",{writable:!1}),a}function _defineProperty(a,b,c){return b=_toPropertyKey(b),b in a?Object.defineProperty(a,b,{value:c,enumerable:!0,configurable:!0,writable:!0}):a[b]=c,a}function _toPropertyKey(a){var b=_toPrimitive(a,"string");return"symbol"===_typeof(b)?b:b+""}function _toPrimitive(a,b){if("object"!==_typeof(a)||null===a)return a;var c=a[Symbol.toPrimitive];if(c!==void 0){var d=c.call(a,b||"default");if("object"!==_typeof(d))return d;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===b?String:Number)(a)}var TargetingTree=/*#__PURE__*/function(){function a(b){var c=this;_classCallCheck(this,a),_defineProperty(this,"tree",void 0),_defineProperty(this,"error",null);var d=this.flattenSegment(b),e=d.nestedConditions,f=d.topLevelOperators,g=e.map(function(a){var b=a.conditions,d=a.operators,e=b.map(function(a){return new _targetingNode.TargetingNode(a)});return c.buildTree(e,d)});// --- Note ---
2
- // - Targeting tree is built bottom-up, it's the only way to both get the consistent logic
3
- // (grouping nested conditions) and have human readable tree representation.
4
- // - Here is an example of how tree is built (we use strict complete binary tree)
5
- // Let's say we have such a condition `value < 10 || value > 20 && value < 30`
6
- // Following is pseudo code for building tree:
7
- //
8
- // `const operators = [Operator.Or, Operator.And]`
9
- // `const conditions = [
10
- // {type: Condition.Less, value: 10},
11
- // {type: Condition.Greater, value: 20},
12
- // {type: Condition.Less, value: 30},
13
- // ]`
14
- //
15
- // After the first iteration we have node like this:
16
- // AND
17
- // / \
18
- // <30 >20
19
- //
20
- // After the second iteration tree looks as follows:
21
- // OR
22
- // / \
23
- // AND <10
24
- // / \
25
- // <30 >20
26
- //
27
- // As you can see Leaf Nodes contain conditions and Non-Leaf Nodes contain logical operators
28
- this.tree=this.buildTree(g,f)}return _createClass(a,[{key:"evaluate",value:function evaluate(a){var b=this.evaluateNode(this.tree,a);return this.error?(0,_tsRes.Err)(this.error):(0,_tsRes.Ok)(b)}},{key:"evaluateNode",value:function evaluateNode(a,b){if(this.isLeafNode(a)){if(a.error)// --- Note ---
29
- // Non-existing condition should not break targeting tree
30
- // instead it should be treated as `true` condition
31
- return a.error.type===_kameleoonError.KameleoonException.TargetingCondition;var c=a.value.evaluate(b);return c.ok?a.inverse?!c.data:c.data:(this.error=c.error,!1)}if(this.isNonLeafNode(a))switch(a.value){case _types.Operator.And:return this.evaluateNode(a.left,b)&&this.evaluateNode(a.right,b);case _types.Operator.Or:return this.evaluateNode(a.left,b)||this.evaluateNode(a.right,b);default:}return!1}},{key:"isLeafNode",value:function isLeafNode(a){return!!!(a.left&&a.right)}},{key:"isNonLeafNode",value:function isNonLeafNode(a){return!!(a.left&&a.right&&(a.value===_types.Operator.Or||a.value===_types.Operator.And))}// --- Note ---
32
- // This method mutates `nodes` array
33
- // It's done for the sake of performance
34
- },{key:"buildTree",value:function buildTree(a,b){if(1===a.length)return a[0];var c,d=_createForOfIteratorHelper(b);try{for(d.s();!(c=d.n()).done;){var e=c.value,f=a.shift(),g=a.shift(),h=new _targetingNode.TargetingNode(e,f,g);a.unshift(h)}}catch(a){d.e(a)}finally{d.f()}return a[0]}},{key:"flattenSegment",value:function flattenSegment(a){var b=this,c=a.conditionsData,d=c.firstLevel,e=c.firstLevelOrOperators,f=[];return d.forEach(function(a){var c=a.conditions,d=a.orOperators,e={operators:b.convertOperators(d),conditions:c};f.push(e)}),{topLevelOperators:this.convertOperators(e),nestedConditions:f}}},{key:"convertOperators",value:function convertOperators(a){return a.map(function(a){return a?_types.Operator.Or:_types.Operator.And})}}]),a}();exports.TargetingTree=TargetingTree;
35
- //# sourceMappingURL=targetingTree.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"targetingTree.js","names":["TargetingTree","a","segment","c","_classCallCheck","_defineProperty","d","flattenSegment","nestedConditions","topLevelOperators","nestedNodes","map","conditions","operators","nodes","condition","TargetingNode","buildTree","tree","_createClass","key","value","evaluate","data","result","evaluateNode","error","Err","Ok","node","isLeafNode","type","KameleoonException","TargetingCondition","ok","inverse","isNonLeafNode","Operator","And","left","right","Or","length","_createForOfIteratorHelper","s","n","done","operator","shift","newNode","unshift","e","f","b","conditionsData","firstLevel","firstLevelOrOperators","forEach","conditionList","orOperators","group","convertOperators","push","exports"],"sources":["../../src/targeting/targetingTree.ts"],"sourcesContent":["import { Result, Ok, Err } from 'ts-res';\nimport { KameleoonError, KameleoonException } from 'src/kameleoonError';\nimport { ITargetingNode, TargetingNode } from './targetingNode';\nimport {\n EvaluationDataType,\n GroupedSegmentsType,\n LeafNodeType,\n NestedConditionGroupType,\n NonLeafNodeType,\n Operator,\n SegmentType,\n} from './types';\n\ninterface ITargetingTree {\n evaluate: (data: EvaluationDataType) => Result<boolean, KameleoonError>;\n}\n\nexport class TargetingTree implements ITargetingTree {\n private tree: TargetingNode;\n private error: KameleoonError | null = null;\n\n constructor(segment: SegmentType) {\n const { nestedConditions, topLevelOperators } =\n this.flattenSegment(segment);\n\n // --- Note ---\n // - Targeting tree is built bottom-up, it's the only way to both get the consistent logic\n // (grouping nested conditions) and have human readable tree representation.\n // - Here is an example of how tree is built (we use strict complete binary tree)\n // Let's say we have such a condition `value < 10 || value > 20 && value < 30`\n // Following is pseudo code for building tree:\n //\n // `const operators = [Operator.Or, Operator.And]`\n // `const conditions = [\n // {type: Condition.Less, value: 10},\n // {type: Condition.Greater, value: 20},\n // {type: Condition.Less, value: 30},\n // ]`\n //\n // After the first iteration we have node like this:\n // AND\n // / \\\n // <30 >20\n //\n // After the second iteration tree looks as follows:\n // OR\n // / \\\n // AND <10\n // / \\\n // <30 >20\n //\n // As you can see Leaf Nodes contain conditions and Non-Leaf Nodes contain logical operators\n const nestedNodes = nestedConditions.map(({ conditions, operators }) => {\n const nodes = conditions.map((condition) => new TargetingNode(condition));\n\n return this.buildTree(nodes, operators);\n });\n\n this.tree = this.buildTree(nestedNodes, topLevelOperators);\n }\n\n public evaluate(data: EvaluationDataType): Result<boolean, KameleoonError> {\n const result = this.evaluateNode(this.tree, data);\n\n if (this.error) {\n return Err(this.error);\n }\n\n return Ok(result);\n }\n\n private evaluateNode(node: TargetingNode, data: EvaluationDataType): boolean {\n if (this.isLeafNode(node)) {\n if (node.error) {\n // --- Note ---\n // Non-existing condition should not break targeting tree\n // instead it should be treated as `true` condition\n if (node.error.type === KameleoonException.TargetingCondition) {\n return true;\n }\n\n return false;\n }\n\n const result = node.value.evaluate(data);\n\n if (!result.ok) {\n this.error = result.error;\n\n return false;\n }\n\n return node.inverse ? !result.data : result.data;\n }\n\n if (this.isNonLeafNode(node)) {\n switch (node.value) {\n case Operator.And: {\n return (\n this.evaluateNode(node.left, data) &&\n this.evaluateNode(node.right, data)\n );\n }\n case Operator.Or: {\n return (\n this.evaluateNode(node.left, data) ||\n this.evaluateNode(node.right, data)\n );\n }\n default:\n break;\n }\n }\n\n return false;\n }\n\n private isLeafNode(node: ITargetingNode): node is LeafNodeType {\n return !Boolean(node.left && node.right);\n }\n\n private isNonLeafNode(node: ITargetingNode): node is NonLeafNodeType {\n return Boolean(\n node.left &&\n node.right &&\n (node.value === Operator.Or || node.value === Operator.And),\n );\n }\n\n // --- Note ---\n // This method mutates `nodes` array\n // It's done for the sake of performance\n private buildTree(\n nodes: TargetingNode[],\n operators: Operator[],\n ): TargetingNode {\n if (nodes.length === 1) {\n return nodes[0];\n }\n\n for (const operator of operators) {\n const left = nodes.shift();\n const right = nodes.shift();\n\n const newNode = new TargetingNode(operator, left, right);\n nodes.unshift(newNode);\n }\n\n return nodes[0];\n }\n\n private flattenSegment(segment: SegmentType): GroupedSegmentsType {\n const { firstLevel: conditions, firstLevelOrOperators: operators } =\n segment.conditionsData;\n\n const nestedConditions: NestedConditionGroupType[] = [];\n\n conditions.forEach((condition) => {\n const { conditions: conditionList, orOperators } = condition;\n\n const group = {\n operators: this.convertOperators(orOperators),\n conditions: conditionList,\n };\n\n nestedConditions.push(group);\n });\n\n return {\n topLevelOperators: this.convertOperators(operators),\n nestedConditions,\n };\n }\n\n private convertOperators(operators: boolean[]): Operator[] {\n return operators.map((operator) => (operator ? Operator.Or : Operator.And));\n }\n}\n"],"mappings":"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"}
@@ -1,13 +0,0 @@
1
- import { RespoolTimeType } from '../campaignConfiguration/types';
2
- import { VariationType } from './types';
3
- interface IVariation {
4
- readonly id: number;
5
- isValid: (respoolTime?: RespoolTimeType[]) => boolean;
6
- }
7
- export declare class Variation implements IVariation {
8
- variationData?: VariationType;
9
- constructor(variationData?: VariationType);
10
- get id(): number;
11
- isValid(respoolTime?: RespoolTimeType[]): boolean;
12
- }
13
- export {};
@@ -1 +0,0 @@
1
- {"version":3,"file":"variation.js","names":["_types","require","Object","defineProperty","exports","value","Variation","_typeof","a","Symbol","iterator","constructor","prototype","_classCallCheck","b","TypeError","_defineProperties","c","d","length","enumerable","configurable","writable","_toPropertyKey","key","_createClass","_defineProperty","_toPrimitive","toPrimitive","call","String","Number","variationData","get","Error","variationId","isValid","respoolTime","variation","assignmentTime","Date","parse","assignmentDate","getTime","Milliseconds","Second","variationRespoolTime","find","respool"],"sources":["../../src/variationConfiguration/variation.ts"],"sourcesContent":["import { RespoolTimeType } from 'src/campaignConfiguration/types';\nimport { Milliseconds } from 'src/types';\nimport { VariationType } from './types';\n\ninterface IVariation {\n readonly id: number;\n isValid: (respoolTime?: RespoolTimeType[]) => boolean;\n}\n\nexport class Variation implements IVariation {\n variationData?: VariationType;\n\n constructor(variationData?: VariationType) {\n this.variationData = variationData;\n }\n\n get id(): number {\n if (!this.variationData) {\n throw new Error(\n \"Internal usage error: Check if the variation `isValid`, before getting it's `id`\",\n );\n }\n\n return this.variationData.variationId;\n }\n\n public isValid(respoolTime?: RespoolTimeType[]): boolean {\n const variation = this.variationData;\n\n if (!variation) {\n return false;\n }\n\n // --- Note ---\n // - Respool is a kind of shuffle parameter\n // it's presence indicates that variations assigned to\n // user has changed at certain time (time is the value of `respoolTime` in seconds)\n // - So the variation is valid unless it has been shuffled after it's assignment\n if (respoolTime?.length) {\n const assignmentTime =\n new Date(Date.parse(variation.assignmentDate)).getTime() /\n Milliseconds.Second;\n const variationRespoolTime = respoolTime.find(\n (respool) => respool.variationId === String(variation.variationId),\n );\n\n if (!variationRespoolTime) {\n return true;\n }\n\n return assignmentTime > variationRespoolTime.value;\n }\n\n return true;\n }\n}\n"],"mappings":"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"}