@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
@@ -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":"0mFAiBa,CAAAA,aAAa,yBAIxB,SAAAC,EAAYC,CAAoB,CAAE,KAAAC,CAAA,MAAAC,eAAA,MAAAH,CAAA,EAAAI,eAAA,qBAAAA,eAAA,cAFK,IAAI,MAAAC,CAAA,CAIvC,IAAI,CAACC,cAAc,CAACL,CAAO,CAAC,CADtBM,CAAgB,CAAAF,CAAA,CAAhBE,gBAAgB,CAAEC,CAAiB,CAAAH,CAAA,CAAjBG,iBAAiB,CA8BrCC,CAAW,CAAGF,CAAgB,CAACG,GAAG,CAAC,SAAAV,CAAA,CAA+B,IAA5B,CAAAW,CAAU,CAAAX,CAAA,CAAVW,UAAU,CAAEC,CAAS,CAAAZ,CAAA,CAATY,SAAS,CACzDC,CAAK,CAAGF,CAAU,CAACD,GAAG,CAAC,SAACI,CAAS,QAAK,IAAI,CAAAC,4BAAa,CAACD,CAAS,CAAC,EAAC,CAEzE,MAAO,CAAAZ,CAAI,CAACc,SAAS,CAACH,CAAK,CAAED,CAAS,CACxC,CAAC,CAAC,CA/BF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAOA,IAAI,CAACK,IAAI,CAAG,IAAI,CAACD,SAAS,CAACP,CAAW,CAAED,CAAiB,CAC3D,CAAC,OAAAU,YAAA,CAAAlB,CAAA,GAAAmB,GAAA,YAAAC,KAAA,CAED,SAAAC,SAAgBC,CAAwB,CAAmC,CACzE,GAAM,CAAAC,CAAM,CAAG,IAAI,CAACC,YAAY,CAAC,IAAI,CAACP,IAAI,CAAEK,CAAI,CAAC,CAAC,MAE9C,KAAI,CAACG,KAAK,CACL,GAAAC,UAAG,EAAC,IAAI,CAACD,KAAK,CAAC,CAGjB,GAAAE,SAAE,EAACJ,CAAM,CAClB,CAAC,GAAAJ,GAAA,gBAAAC,KAAA,CAED,SAAAI,aAAqBI,CAAmB,CAAEN,CAAwB,CAAW,CAC3E,GAAI,IAAI,CAACO,UAAU,CAACD,CAAI,CAAC,CAAE,CACzB,GAAIA,CAAI,CAACH,KAAK,CACZ;AACA;AACA;AAAA,MACI,CAAAG,CAAI,CAACH,KAAK,CAACK,IAAI,GAAKC,kCAAkB,CAACC,kBAAkB,CAO/D,GAAM,CAAAT,CAAM,CAAGK,CAAI,CAACR,KAAK,CAACC,QAAQ,CAACC,CAAI,CAAC,CAAC,MAEpC,CAAAC,CAAM,CAACU,EAAE,CAMPL,CAAI,CAACM,OAAO,CAAG,CAACX,CAAM,CAACD,IAAI,CAAGC,CAAM,CAACD,IAAI,EAL9C,IAAI,CAACG,KAAK,CAAGF,CAAM,CAACE,KAAK,IAM7B,CAEA,GAAI,IAAI,CAACU,aAAa,CAACP,CAAI,CAAC,CAC1B,OAAQA,CAAI,CAACR,KAAK,EAChB,IAAK,CAAAgB,eAAQ,CAACC,GAAG,CACf,MACE,KAAI,CAACb,YAAY,CAACI,CAAI,CAACU,IAAI,CAAEhB,CAAI,CAAC,EAClC,IAAI,CAACE,YAAY,CAACI,CAAI,CAACW,KAAK,CAAEjB,CAAI,CAAC,CAGvC,IAAK,CAAAc,eAAQ,CAACI,EAAE,CACd,MACE,KAAI,CAAChB,YAAY,CAACI,CAAI,CAACU,IAAI,CAAEhB,CAAI,CAAC,EAClC,IAAI,CAACE,YAAY,CAACI,CAAI,CAACW,KAAK,CAAEjB,CAAI,CAAC,CAGvC,QACQ,CAIZ,QACF,CAAC,GAAAH,GAAA,cAAAC,KAAA,CAED,SAAAS,WAAmBD,CAAoB,CAAwB,CAC7D,MAAO,IAASA,CAAI,CAACU,IAAI,EAAIV,CAAI,CAACW,KAAK,CACzC,CAAC,GAAApB,GAAA,iBAAAC,KAAA,CAED,SAAAe,cAAsBP,CAAoB,CAA2B,CACnE,SACEA,CAAI,CAACU,IAAI,EACPV,CAAI,CAACW,KAAK,GACTX,CAAI,CAACR,KAAK,GAAKgB,eAAQ,CAACI,EAAE,EAAIZ,CAAI,CAACR,KAAK,GAAKgB,eAAQ,CAACC,GAAG,CAAC,CAEjE,CAEA;AACA;AACA;AAAA,GAAAlB,GAAA,aAAAC,KAAA,CACA,SAAAJ,UACEH,CAAsB,CACtBD,CAAqB,CACN,CACf,GAAqB,CAAC,GAAlBC,CAAK,CAAC4B,MAAY,CACpB,MAAO,CAAA5B,CAAK,CAAC,CAAC,CAAC,CAChB,IAAAX,CAAA,CAAAG,CAAA,CAAAqC,0BAAA,CAEsB9B,CAAS,MAAhC,IAAAP,CAAA,CAAAsC,CAAA,KAAAzC,CAAA,CAAAG,CAAA,CAAAuC,CAAA,IAAAC,IAAA,EAAkC,IAAvB,CAAAC,CAAQ,CAAA5C,CAAA,CAAAkB,KAAA,CACXkB,CAAI,CAAGzB,CAAK,CAACkC,KAAK,EAAE,CACpBR,CAAK,CAAG1B,CAAK,CAACkC,KAAK,EAAE,CAErBC,CAAO,CAAG,GAAI,CAAAjC,4BAAa,CAAC+B,CAAQ,CAAER,CAAI,CAAEC,CAAK,CAAC,CACxD1B,CAAK,CAACoC,OAAO,CAACD,CAAO,CACvB,CAAC,OAAAhD,CAAA,EAAAK,CAAA,CAAA6C,CAAA,CAAAlD,CAAA,UAAAK,CAAA,CAAA8C,CAAA,GAED,MAAO,CAAAtC,CAAK,CAAC,CAAC,CAChB,CAAC,GAAAM,GAAA,kBAAAC,KAAA,CAED,SAAAd,eAAuBL,CAAoB,CAAuB,KAAAmD,CAAA,MAAAlD,CAAA,CAE9DD,CAAO,CAACoD,cAAc,CADJ1C,CAAU,CAAAT,CAAA,CAAtBoD,UAAU,CAAqC1C,CAAS,CAAAV,CAAA,CAAhCqD,qBAAqB,CAG/ChD,CAA4C,CAAG,EAAE,CAavD,MAXA,CAAAI,CAAU,CAAC6C,OAAO,CAAC,SAAC1C,CAAS,CAAK,IACZ,CAAA2C,CAAa,CAAkB3C,CAAS,CAApDH,UAAU,CAAiB+C,CAAW,CAAK5C,CAAS,CAAzB4C,WAAW,CAExCC,CAAK,CAAG,CACZ/C,SAAS,CAAEwC,CAAI,CAACQ,gBAAgB,CAACF,CAAW,CAAC,CAC7C/C,UAAU,CAAE8C,CACd,CAAC,CAEDlD,CAAgB,CAACsD,IAAI,CAACF,CAAK,CAC7B,CAAC,CAAC,CAEK,CACLnD,iBAAiB,CAAE,IAAI,CAACoD,gBAAgB,CAAChD,CAAS,CAAC,CACnDL,gBAAgB,CAAhBA,CACF,CACF,CAAC,GAAAY,GAAA,oBAAAC,KAAA,CAED,SAAAwC,iBAAyBhD,CAAoB,CAAc,CACzD,MAAO,CAAAA,CAAS,CAACF,GAAG,CAAC,SAACoC,CAAQ,QAAM,CAAAA,CAAQ,CAAGV,eAAQ,CAACI,EAAE,CAAGJ,eAAQ,CAACC,GAAG,CAAC,CAC5E,CAAC,IAAArC,CAAA,IAAA8D,OAAA,CAAA/D,aAAA,CAAAA,aAAA"}
@@ -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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"}