@kameleoon/javascript-sdk-core 2.4.6 → 2.5.1

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 (190) hide show
  1. package/dist/cacheManager/cacheManager.js +3 -65
  2. package/dist/cacheManager/cacheManager.js.map +1 -1
  3. package/dist/cacheManager/index.js +1 -19
  4. package/dist/cacheManager/index.js.map +1 -1
  5. package/dist/cacheManager/types.js +1 -5
  6. package/dist/campaignConfiguration/campaignConfiguration.d.ts +10 -7
  7. package/dist/campaignConfiguration/campaignConfiguration.js +9 -283
  8. package/dist/campaignConfiguration/campaignConfiguration.js.map +1 -1
  9. package/dist/campaignConfiguration/constants.d.ts +2 -10
  10. package/dist/campaignConfiguration/constants.js +2 -21
  11. package/dist/campaignConfiguration/constants.js.map +1 -1
  12. package/dist/campaignConfiguration/index.js +1 -86
  13. package/dist/campaignConfiguration/index.js.map +1 -1
  14. package/dist/campaignConfiguration/types.d.ts +8 -7
  15. package/dist/campaignConfiguration/types.js +1 -54
  16. package/dist/campaignConfiguration/types.js.map +1 -1
  17. package/dist/clientSettings/clientSettings.d.ts +1 -1
  18. package/dist/clientSettings/clientSettings.js +1 -35
  19. package/dist/clientSettings/clientSettings.js.map +1 -1
  20. package/dist/clientSettings/index.js +1 -19
  21. package/dist/clientSettings/index.js.map +1 -1
  22. package/dist/clientSettings/types.d.ts +1 -1
  23. package/dist/clientSettings/types.js +1 -5
  24. package/dist/clientSettings/types.js.map +1 -1
  25. package/dist/constants.d.ts +13 -4
  26. package/dist/constants.js +2 -36
  27. package/dist/constants.js.map +1 -1
  28. package/dist/eventSource/constants.js +1 -8
  29. package/dist/eventSource/constants.js.map +1 -1
  30. package/dist/eventSource/externalEventSource.js +1 -33
  31. package/dist/eventSource/externalEventSource.js.map +1 -1
  32. package/dist/eventSource/index.js +1 -50
  33. package/dist/eventSource/index.js.map +1 -1
  34. package/dist/eventSource/types.js +1 -5
  35. package/dist/hasher/hasher.js +6 -44
  36. package/dist/hasher/hasher.js.map +1 -1
  37. package/dist/hasher/index.js +1 -12
  38. package/dist/hasher/index.js.map +1 -1
  39. package/dist/hasher/types.d.ts +1 -1
  40. package/dist/hasher/types.js +1 -5
  41. package/dist/hasher/types.js.map +1 -1
  42. package/dist/index.d.ts +3 -3
  43. package/dist/index.js +1 -310
  44. package/dist/index.js.map +1 -1
  45. package/dist/kameleoonClient.d.ts +16 -4
  46. package/dist/kameleoonClient.js +10 -384
  47. package/dist/kameleoonClient.js.map +1 -1
  48. package/dist/kameleoonData/browser.d.ts +8 -3
  49. package/dist/kameleoonData/browser.js +9 -40
  50. package/dist/kameleoonData/browser.js.map +1 -1
  51. package/dist/kameleoonData/conversion.d.ts +2 -2
  52. package/dist/kameleoonData/conversion.js +5 -50
  53. package/dist/kameleoonData/conversion.js.map +1 -1
  54. package/dist/kameleoonData/customData.d.ts +2 -2
  55. package/dist/kameleoonData/customData.js +5 -55
  56. package/dist/kameleoonData/customData.js.map +1 -1
  57. package/dist/kameleoonData/device.d.ts +2 -2
  58. package/dist/kameleoonData/device.js +5 -40
  59. package/dist/kameleoonData/device.js.map +1 -1
  60. package/dist/kameleoonData/index.d.ts +1 -1
  61. package/dist/kameleoonData/index.js +1 -102
  62. package/dist/kameleoonData/index.js.map +1 -1
  63. package/dist/kameleoonData/pageView.d.ts +2 -2
  64. package/dist/kameleoonData/pageView.js +5 -56
  65. package/dist/kameleoonData/pageView.js.map +1 -1
  66. package/dist/kameleoonData/types.d.ts +44 -27
  67. package/dist/kameleoonData/types.js +6 -42
  68. package/dist/kameleoonData/types.js.map +1 -1
  69. package/dist/kameleoonData/userAgent.d.ts +2 -2
  70. package/dist/kameleoonData/userAgent.js +4 -37
  71. package/dist/kameleoonData/userAgent.js.map +1 -1
  72. package/dist/kameleoonError/constants.d.ts +4 -2
  73. package/dist/kameleoonError/constants.js +1 -31
  74. package/dist/kameleoonError/constants.js.map +1 -1
  75. package/dist/kameleoonError/helpers.js +1 -9
  76. package/dist/kameleoonError/helpers.js.map +1 -1
  77. package/dist/kameleoonError/index.js +1 -26
  78. package/dist/kameleoonError/index.js.map +1 -1
  79. package/dist/kameleoonError/kameleoonError.d.ts +3 -3
  80. package/dist/kameleoonError/kameleoonError.js +2 -75
  81. package/dist/kameleoonError/kameleoonError.js.map +1 -1
  82. package/dist/kameleoonError/types.d.ts +2 -0
  83. package/dist/kameleoonError/types.js +1 -31
  84. package/dist/kameleoonError/types.js.map +1 -1
  85. package/dist/kameleoonUtils.js +2 -44
  86. package/dist/kameleoonUtils.js.map +1 -1
  87. package/dist/requester/constants.js +1 -73
  88. package/dist/requester/constants.js.map +1 -1
  89. package/dist/requester/index.js +1 -80
  90. package/dist/requester/index.js.map +1 -1
  91. package/dist/requester/requester.d.ts +4 -5
  92. package/dist/requester/requester.js +1 -106
  93. package/dist/requester/requester.js.map +1 -1
  94. package/dist/requester/types.d.ts +8 -7
  95. package/dist/requester/types.js +1 -16
  96. package/dist/requester/types.js.map +1 -1
  97. package/dist/storage/constants.js +2 -15
  98. package/dist/storage/constants.js.map +1 -1
  99. package/dist/storage/externalStorage.d.ts +1 -1
  100. package/dist/storage/externalStorage.js +1 -40
  101. package/dist/storage/externalStorage.js.map +1 -1
  102. package/dist/storage/index.js +1 -56
  103. package/dist/storage/index.js.map +1 -1
  104. package/dist/storage/types.d.ts +4 -4
  105. package/dist/storage/types.js +1 -5
  106. package/dist/storage/types.js.map +1 -1
  107. package/dist/targeting/conditions/browserCondition.d.ts +13 -0
  108. package/dist/targeting/conditions/browserCondition.js +2 -0
  109. package/dist/targeting/conditions/browserCondition.js.map +1 -0
  110. package/dist/targeting/conditions/conditionFactory.d.ts +1 -1
  111. package/dist/targeting/conditions/conditionFactory.js +1 -30
  112. package/dist/targeting/conditions/conditionFactory.js.map +1 -1
  113. package/dist/targeting/conditions/conversionCondition.d.ts +10 -0
  114. package/dist/targeting/conditions/conversionCondition.js +4 -0
  115. package/dist/targeting/conditions/conversionCondition.js.map +1 -0
  116. package/dist/targeting/conditions/customDataCondition.d.ts +5 -7
  117. package/dist/targeting/conditions/customDataCondition.js +7 -114
  118. package/dist/targeting/conditions/customDataCondition.js.map +1 -1
  119. package/dist/targeting/conditions/deviceCondition.d.ts +9 -0
  120. package/dist/targeting/conditions/deviceCondition.js +2 -0
  121. package/dist/targeting/conditions/deviceCondition.js.map +1 -0
  122. package/dist/targeting/conditions/exclusiveExperimentCondition.d.ts +3 -5
  123. package/dist/targeting/conditions/exclusiveExperimentCondition.js +1 -32
  124. package/dist/targeting/conditions/exclusiveExperimentCondition.js.map +1 -1
  125. package/dist/targeting/conditions/index.d.ts +7 -0
  126. package/dist/targeting/conditions/index.js +1 -46
  127. package/dist/targeting/conditions/index.js.map +1 -1
  128. package/dist/targeting/conditions/pageTitleCondition.d.ts +11 -0
  129. package/dist/targeting/conditions/pageTitleCondition.js +2 -0
  130. package/dist/targeting/conditions/pageTitleCondition.js.map +1 -0
  131. package/dist/targeting/conditions/pageUrlCondition.d.ts +11 -0
  132. package/dist/targeting/conditions/pageUrlCondition.js +2 -0
  133. package/dist/targeting/conditions/pageUrlCondition.js.map +1 -0
  134. package/dist/targeting/conditions/sdkLanguageCondition.d.ts +15 -0
  135. package/dist/targeting/conditions/sdkLanguageCondition.js +2 -0
  136. package/dist/targeting/conditions/sdkLanguageCondition.js.map +1 -0
  137. package/dist/targeting/conditions/targetExperimentCondition.d.ts +3 -4
  138. package/dist/targeting/conditions/targetExperimentCondition.js +1 -63
  139. package/dist/targeting/conditions/targetExperimentCondition.js.map +1 -1
  140. package/dist/targeting/conditions/types.d.ts +25 -6
  141. package/dist/targeting/conditions/types.js +1 -5
  142. package/dist/targeting/conditions/types.js.map +1 -1
  143. package/dist/targeting/conditions/visitorCodeCondition.d.ts +11 -0
  144. package/dist/targeting/conditions/visitorCodeCondition.js +2 -0
  145. package/dist/targeting/conditions/visitorCodeCondition.js.map +1 -0
  146. package/dist/targeting/index.d.ts +2 -2
  147. package/dist/targeting/index.js +1 -80
  148. package/dist/targeting/index.js.map +1 -1
  149. package/dist/targeting/targetingNode.d.ts +3 -1
  150. package/dist/targeting/targetingNode.js +1 -47
  151. package/dist/targeting/targetingNode.js.map +1 -1
  152. package/dist/targeting/targetingTree.d.ts +3 -1
  153. package/dist/targeting/targetingTree.js +34 -135
  154. package/dist/targeting/targetingTree.js.map +1 -1
  155. package/dist/targeting/types.d.ts +24 -9
  156. package/dist/targeting/types.js +1 -100
  157. package/dist/targeting/types.js.map +1 -1
  158. package/dist/types.d.ts +9 -4
  159. package/dist/types.js +12 -41
  160. package/dist/types.js.map +1 -1
  161. package/dist/utilities/constants.d.ts +1 -0
  162. package/dist/utilities/constants.js +1 -8
  163. package/dist/utilities/constants.js.map +1 -1
  164. package/dist/utilities/index.d.ts +1 -0
  165. package/dist/utilities/index.js +1 -12
  166. package/dist/utilities/index.js.map +1 -1
  167. package/dist/utilities/types.d.ts +14 -7
  168. package/dist/utilities/types.js +1 -5
  169. package/dist/utilities/types.js.map +1 -1
  170. package/dist/utilities/utilities.d.ts +12 -8
  171. package/dist/utilities/utilities.js +1 -216
  172. package/dist/utilities/utilities.js.map +1 -1
  173. package/dist/variationConfiguration/index.js +1 -25
  174. package/dist/variationConfiguration/index.js.map +1 -1
  175. package/dist/variationConfiguration/types.d.ts +5 -3
  176. package/dist/variationConfiguration/types.js +1 -5
  177. package/dist/variationConfiguration/types.js.map +1 -1
  178. package/dist/variationConfiguration/variation.d.ts +1 -1
  179. package/dist/variationConfiguration/variation.js +6 -44
  180. package/dist/variationConfiguration/variation.js.map +1 -1
  181. package/dist/variationConfiguration/variationConfiguration.d.ts +4 -4
  182. package/dist/variationConfiguration/variationConfiguration.js +65 -290
  183. package/dist/variationConfiguration/variationConfiguration.js.map +1 -1
  184. package/package.json +1 -1
  185. package/dist/kameleoonData/constants.d.ts +0 -1
  186. package/dist/kameleoonData/constants.js +0 -9
  187. package/dist/kameleoonData/constants.js.map +0 -1
  188. package/dist/kameleoonData/nonce.d.ts +0 -5
  189. package/dist/kameleoonData/nonce.js +0 -32
  190. package/dist/kameleoonData/nonce.js.map +0 -1
@@ -1,48 +1,2 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.TargetingNode = void 0;
7
- var _conditions = require("./conditions");
8
- var _types = require("./types");
9
- function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
10
- function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return typeof key === "symbol" ? key : String(key); }
11
- function _toPrimitive(input, hint) { if (typeof input !== "object" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || "default"); if (typeof res !== "object") return res; throw new TypeError("@@toPrimitive must return a primitive value."); } return (hint === "string" ? String : Number)(input); }
12
- class TargetingNode {
13
- constructor(value, left, right) {
14
- _defineProperty(this, "nodeValue", void 0);
15
- _defineProperty(this, "nodeError", void 0);
16
- _defineProperty(this, "leftChild", void 0);
17
- _defineProperty(this, "rightChild", void 0);
18
- if (this.isOperator(value)) {
19
- this.nodeValue = value;
20
- } else {
21
- const result = _conditions.ConditionFactory.createCondition(value);
22
- if (result.ok) {
23
- this.nodeValue = result.data;
24
- } else {
25
- this.nodeError = result.error;
26
- }
27
- }
28
- this.leftChild = left;
29
- this.rightChild = right;
30
- }
31
- get value() {
32
- return this.nodeValue;
33
- }
34
- get error() {
35
- return this.nodeError;
36
- }
37
- get left() {
38
- return this.leftChild;
39
- }
40
- get right() {
41
- return this.rightChild;
42
- }
43
- isOperator(value) {
44
- return value === _types.Operator.And || value === _types.Operator.Or;
45
- }
46
- }
47
- exports.TargetingNode = TargetingNode;
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;
48
2
  //# sourceMappingURL=targetingNode.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"targetingNode.js","names":["_conditions","require","_types","_defineProperty","obj","key","value","_toPropertyKey","Object","defineProperty","enumerable","configurable","writable","arg","_toPrimitive","String","input","hint","prim","Symbol","toPrimitive","undefined","res","call","TypeError","Number","TargetingNode","constructor","left","right","isOperator","nodeValue","result","ConditionFactory","createCondition","ok","data","nodeError","error","leftChild","rightChild","Operator","And","Or","exports"],"sources":["../../src/targeting/targetingNode.ts"],"sourcesContent":["import { KameleoonError } from '../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\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\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 private isOperator(value: ConditionDataType | Operator): value is Operator {\n return value === Operator.And || value === Operator.Or;\n }\n}\n"],"mappings":";;;;;;AACA,IAAAA,WAAA,GAAAC,OAAA;AACA,IAAAC,MAAA,GAAAD,OAAA;AAAkD,SAAAE,gBAAAC,GAAA,EAAAC,GAAA,EAAAC,KAAA,IAAAD,GAAA,GAAAE,cAAA,CAAAF,GAAA,OAAAA,GAAA,IAAAD,GAAA,IAAAI,MAAA,CAAAC,cAAA,CAAAL,GAAA,EAAAC,GAAA,IAAAC,KAAA,EAAAA,KAAA,EAAAI,UAAA,QAAAC,YAAA,QAAAC,QAAA,oBAAAR,GAAA,CAAAC,GAAA,IAAAC,KAAA,WAAAF,GAAA;AAAA,SAAAG,eAAAM,GAAA,QAAAR,GAAA,GAAAS,YAAA,CAAAD,GAAA,2BAAAR,GAAA,gBAAAA,GAAA,GAAAU,MAAA,CAAAV,GAAA;AAAA,SAAAS,aAAAE,KAAA,EAAAC,IAAA,eAAAD,KAAA,iBAAAA,KAAA,kBAAAA,KAAA,MAAAE,IAAA,GAAAF,KAAA,CAAAG,MAAA,CAAAC,WAAA,OAAAF,IAAA,KAAAG,SAAA,QAAAC,GAAA,GAAAJ,IAAA,CAAAK,IAAA,CAAAP,KAAA,EAAAC,IAAA,2BAAAK,GAAA,sBAAAA,GAAA,YAAAE,SAAA,4DAAAP,IAAA,gBAAAF,MAAA,GAAAU,MAAA,EAAAT,KAAA;AAS3C,MAAMU,aAAa,CAA2B;EAMnDC,WAAWA,CACTrB,KAAmC,EACnCsB,IAAqB,EACrBC,KAAsB,EACtB;IAAA1B,eAAA;IAAAA,eAAA;IAAAA,eAAA;IAAAA,eAAA;IACA,IAAI,IAAI,CAAC2B,UAAU,CAACxB,KAAK,CAAC,EAAE;MAC1B,IAAI,CAACyB,SAAS,GAAGzB,KAAK;IACxB,CAAC,MAAM;MACL,MAAM0B,MAAM,GAAGC,4BAAgB,CAACC,eAAe,CAAC5B,KAAK,CAAC;MAEtD,IAAI0B,MAAM,CAACG,EAAE,EAAE;QACb,IAAI,CAACJ,SAAS,GAAGC,MAAM,CAACI,IAAI;MAC9B,CAAC,MAAM;QACL,IAAI,CAACC,SAAS,GAAGL,MAAM,CAACM,KAAK;MAC/B;IACF;IAEA,IAAI,CAACC,SAAS,GAAGX,IAAI;IACrB,IAAI,CAACY,UAAU,GAAGX,KAAK;EACzB;EAEA,IAAIvB,KAAKA,CAAA,EAA8B;IACrC,OAAO,IAAI,CAACyB,SAAS;EACvB;EAEA,IAAIO,KAAKA,CAAA,EAA+B;IACtC,OAAO,IAAI,CAACD,SAAS;EACvB;EAEA,IAAIT,IAAIA,CAAA,EAA+B;IACrC,OAAO,IAAI,CAACW,SAAS;EACvB;EAEA,IAAIV,KAAKA,CAAA,EAA+B;IACtC,OAAO,IAAI,CAACW,UAAU;EACxB;EAEQV,UAAUA,CAACxB,KAAmC,EAAqB;IACzE,OAAOA,KAAK,KAAKmC,eAAQ,CAACC,GAAG,IAAIpC,KAAK,KAAKmC,eAAQ,CAACE,EAAE;EACxD;AACF;AAACC,OAAA,CAAAlB,aAAA,GAAAA,aAAA"}
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,5 +1,5 @@
1
1
  import { Result } from 'ts-res';
2
- import { KameleoonError } from '../kameleoonError';
2
+ import { KameleoonError } from 'src/kameleoonError';
3
3
  import { EvaluationDataType, SegmentType } from './types';
4
4
  interface ITargetingTree {
5
5
  evaluate: (data: EvaluationDataType) => Result<boolean, KameleoonError>;
@@ -12,6 +12,8 @@ export declare class TargetingTree implements ITargetingTree {
12
12
  private evaluateNode;
13
13
  private isLeafNode;
14
14
  private isNonLeafNode;
15
+ private buildTree;
15
16
  private flattenSegment;
17
+ private convertOperators;
16
18
  }
17
19
  export {};
@@ -1,136 +1,35 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.TargetingTree = void 0;
7
- var _tsRes = require("ts-res");
8
- var _targetingNode = require("./targetingNode");
9
- var _types = require("./types");
10
- function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
11
- function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return typeof key === "symbol" ? key : String(key); }
12
- function _toPrimitive(input, hint) { if (typeof input !== "object" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || "default"); if (typeof res !== "object") return res; throw new TypeError("@@toPrimitive must return a primitive value."); } return (hint === "string" ? String : Number)(input); }
13
- class TargetingTree {
14
- constructor(segment) {
15
- _defineProperty(this, "tree", void 0);
16
- _defineProperty(this, "error", null);
17
- const {
18
- conditions,
19
- operators
20
- } = this.flattenSegment(segment);
21
- const nodes = conditions.map(condition => new _targetingNode.TargetingNode(condition));
22
-
23
- // --- Note ---
24
- // - Targeting tree is built bottom-up, it's the only way to both get the consistent logic
25
- // (grouping nested conditions) and have human readable tree representation.
26
- // - Here is an example of how tree is built (we use strict complete binary tree)
27
- // Let's say we have such a condition `value < 10 || value > 20 && value < 30`
28
- // Code-wise it looks as follows (this is not real code, real tree is more complicated and can have more
29
- // levels of deeply nested conditions):
30
- //
31
- // `const operators = [Operator.Or, Operator.And]`
32
- // `const conditions = [
33
- // {type: Condition.Less, value: 10},
34
- // {type: Condition.Greater, value: 20},
35
- // {type: Condition.Less, value: 30},
36
- // ]`
37
- //
38
- // After the first iteration we have node like this:
39
- // AND
40
- // / \
41
- // <30 >20
42
- //
43
- // After the second iteration tree looks as follows:
44
- // OR
45
- // / \
46
- // AND <10
47
- // / \
48
- // <30 >20
49
- // As you can see Leaf Nodes contain conditions and Non-Leaf Nodes contain logical operators
50
- for (const operator of operators) {
51
- const left = nodes.shift();
52
- const right = nodes.shift();
53
- nodes.unshift(new _targetingNode.TargetingNode(operator, left, right));
54
- }
55
-
56
- // --- Note ---
57
- // It's guaranteed that only one root node will remain after iterations
58
- // (as soon as the backend `operators-conditions` relation doesn't change)
59
- this.tree = nodes[0];
60
- }
61
- evaluate(data) {
62
- const result = this.evaluateNode(this.tree, data);
63
- if (this.error) {
64
- return (0, _tsRes.Err)(this.error);
65
- }
66
- return (0, _tsRes.Ok)(result);
67
- }
68
- evaluateNode(node, data) {
69
- if (this.isLeafNode(node)) {
70
- if (node.error) {
71
- // --- Note ---
72
- // Non-existing condition should not break targeting tree
73
- // instead it should be treated as `false` condition
74
- return false;
75
- }
76
- const result = node.value.evaluate(data);
77
- if (!result.ok) {
78
- this.error = result.error;
79
- return false;
80
- }
81
- return result.data;
82
- }
83
- if (this.isNonLeafNode(node)) {
84
- switch (node.value) {
85
- case _types.Operator.And:
86
- {
87
- return this.evaluateNode(node.left, data) && this.evaluateNode(node.right, data);
88
- }
89
- case _types.Operator.Or:
90
- {
91
- return this.evaluateNode(node.left, data) || this.evaluateNode(node.right, data);
92
- }
93
- default:
94
- break;
95
- }
96
- }
97
- return false;
98
- }
99
- isLeafNode(node) {
100
- return !Boolean(node.left && node.right);
101
- }
102
- isNonLeafNode(node) {
103
- return Boolean(node.left && node.right && (node.value === _types.Operator.Or || node.value === _types.Operator.And));
104
- }
105
- flattenSegment(segment) {
106
- const {
107
- firstLevel: conditions,
108
- firstLevelOrOperators: operators
109
- } = segment.conditionsData;
110
- const resultOperators = [...operators];
111
- const resultConditions = [];
112
- conditions.forEach(condition => {
113
- const {
114
- conditions: conditionList,
115
- orOperators
116
- } = condition;
117
-
118
- // --- Note ---
119
- // if `condition` has nested conditions and operators in it, they go to the
120
- // beginning of list, otherwise we just add it to the end
121
- if (orOperators.length) {
122
- orOperators.forEach(item => resultOperators.unshift(item));
123
- conditionList.forEach(item => resultConditions.unshift(item));
124
- } else {
125
- conditionList.forEach(item => resultConditions.push(item));
126
- }
127
- });
128
- const convertedOperators = resultOperators.map(operator => operator ? _types.Operator.Or : _types.Operator.And);
129
- return {
130
- conditions: resultConditions,
131
- operators: convertedOperators
132
- };
133
- }
134
- }
135
- exports.TargetingTree = TargetingTree;
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.TargetingTree=void 0;var _tsRes=require("ts-res"),_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 `false` condition
31
+ return!1;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;
136
35
  //# sourceMappingURL=targetingTree.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"targetingTree.js","names":["_tsRes","require","_targetingNode","_types","_defineProperty","obj","key","value","_toPropertyKey","Object","defineProperty","enumerable","configurable","writable","arg","_toPrimitive","String","input","hint","prim","Symbol","toPrimitive","undefined","res","call","TypeError","Number","TargetingTree","constructor","segment","conditions","operators","flattenSegment","nodes","map","condition","TargetingNode","operator","left","shift","right","unshift","tree","evaluate","data","result","evaluateNode","error","Err","Ok","node","isLeafNode","ok","isNonLeafNode","Operator","And","Or","Boolean","firstLevel","firstLevelOrOperators","conditionsData","resultOperators","resultConditions","forEach","conditionList","orOperators","length","item","push","convertedOperators","exports"],"sources":["../../src/targeting/targetingTree.ts"],"sourcesContent":["import { Result, Ok, Err } from 'ts-res';\nimport { KameleoonError } from '../kameleoonError';\nimport { ConditionDataType } from './conditions';\nimport { ITargetingNode, TargetingNode } from './targetingNode';\nimport {\n EvaluationDataType,\n FlatSegmentType,\n LeafNodeType,\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 { conditions, operators } = this.flattenSegment(segment);\n const nodes = conditions.map((condition) => new TargetingNode(condition));\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 // Code-wise it looks as follows (this is not real code, real tree is more complicated and can have more\n // levels of deeply nested conditions):\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 // As you can see Leaf Nodes contain conditions and Non-Leaf Nodes contain logical operators\n for (const operator of operators) {\n const left = nodes.shift();\n const right = nodes.shift();\n\n nodes.unshift(new TargetingNode(operator, left, right));\n }\n\n // --- Note ---\n // It's guaranteed that only one root node will remain after iterations\n // (as soon as the backend `operators-conditions` relation doesn't change)\n this.tree = nodes[0];\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 `false` condition\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 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 private flattenSegment(segment: SegmentType): FlatSegmentType {\n const { firstLevel: conditions, firstLevelOrOperators: operators } =\n segment.conditionsData;\n\n const resultOperators: boolean[] = [...operators];\n const resultConditions: ConditionDataType[] = [];\n\n conditions.forEach((condition) => {\n const { conditions: conditionList, orOperators } = condition;\n\n // --- Note ---\n // if `condition` has nested conditions and operators in it, they go to the\n // beginning of list, otherwise we just add it to the end\n if (orOperators.length) {\n orOperators.forEach((item) => resultOperators.unshift(item));\n conditionList.forEach((item) => resultConditions.unshift(item));\n } else {\n conditionList.forEach((item) => resultConditions.push(item));\n }\n });\n\n const convertedOperators = resultOperators.map((operator) =>\n operator ? Operator.Or : Operator.And,\n );\n\n return { conditions: resultConditions, operators: convertedOperators };\n }\n}\n"],"mappings":"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"}
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","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 } 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 `false` condition\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,5 +1,6 @@
1
- import { KameleoonDataItemType } from '../kameleoonData';
2
- import { ExperimentVariationsType } from '../storage';
1
+ import { KameleoonVisitorDataType } from 'src/kameleoonData/types';
2
+ import { ExperimentVariationsType } from 'src/storage';
3
+ import { ExternalPackageInfoType } from 'src/types';
3
4
  import { ConditionDataType, ConditionType } from './conditions';
4
5
  import { TargetingNode } from './targetingNode';
5
6
  export declare enum Operator {
@@ -29,21 +30,23 @@ export type SegmentType = {
29
30
  firstLevel: ConditionLevelType[];
30
31
  };
31
32
  };
32
- export type FlatSegmentType = {
33
- conditions: ConditionDataType[];
33
+ export type NestedConditionGroupType = {
34
34
  operators: Operator[];
35
+ conditions: ConditionDataType[];
35
36
  };
36
- export type TargetingDataItemType = {
37
- lastActivityTime: number;
38
- data: KameleoonDataItemType;
37
+ export type GroupedSegmentsType = {
38
+ topLevelOperators: Operator[];
39
+ nestedConditions: NestedConditionGroupType[];
39
40
  };
40
41
  export type TargetingDataType = {
41
- [visitorCode: string]: TargetingDataItemType[] | undefined;
42
+ [visitorCode: string]: KameleoonVisitorDataType;
42
43
  };
43
44
  export type EvaluationDataType = {
44
- targetingData: TargetingDataItemType[];
45
+ targetingData?: KameleoonVisitorDataType;
45
46
  variationData: ExperimentVariationsType;
47
+ sdkInfo: ExternalPackageInfoType;
46
48
  experimentId: number | null;
49
+ visitorCode: string;
47
50
  };
48
51
  export declare enum MatchTypeCustomData {
49
52
  TRUE = "TRUE",
@@ -66,6 +69,16 @@ export declare enum MatchTypeTest {
66
69
  TEST = "TEST",
67
70
  PERSO = "PERSO"
68
71
  }
72
+ export declare enum MatchType {
73
+ EXACT = "EXACT",
74
+ CONTAINS = "CONTAINS",
75
+ REGULAR_EXPRESSION = "REGULAR_EXPRESSION"
76
+ }
77
+ export declare enum VersionMatchType {
78
+ GREATER = "GREATER",
79
+ EQUAL = "EQUAL",
80
+ LOWER = "LOWER"
81
+ }
69
82
  export declare enum TargetingType {
70
83
  PAGE_URL = "PAGE_URL",
71
84
  PAGE_TITLE = "PAGE_TITLE",
@@ -91,6 +104,8 @@ export declare enum TargetingType {
91
104
  SAME_DAY_VISITS = "SAME_DAY_VISITS",
92
105
  VISITS = "VISITS",
93
106
  VISITS_BY_PAGE = "VISITS_BY_PAGE",
107
+ VISITOR_CODE = "VISITOR_CODE",
108
+ SDK_LANGUAGE = "SDK_LANGUAGE",
94
109
  INTERNAL_SEARCH_KEYWORDS = "INTERNAL_SEARCH_KEYWORDS",
95
110
  TABS_ON_SITE = "TABS_ON_SITE",
96
111
  CONVERSION_PROBABILITY = "CONVERSION_PROBABILITY",
@@ -1,101 +1,2 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.TargetingType = exports.Operator = exports.MatchTypeVariation = exports.MatchTypeTest = exports.MatchTypeCustomData = void 0;
7
- let Operator = /*#__PURE__*/function (Operator) {
8
- Operator["And"] = "AND";
9
- Operator["Or"] = "OR";
10
- return Operator;
11
- }({});
12
- exports.Operator = Operator;
13
- let MatchTypeCustomData = /*#__PURE__*/function (MatchTypeCustomData) {
14
- MatchTypeCustomData["TRUE"] = "TRUE";
15
- MatchTypeCustomData["FALSE"] = "FALSE";
16
- MatchTypeCustomData["EXACT"] = "EXACT";
17
- MatchTypeCustomData["CONTAINS"] = "CONTAINS";
18
- MatchTypeCustomData["REGULAR_EXPRESSION"] = "REGULAR_EXPRESSION";
19
- MatchTypeCustomData["EQUAL"] = "EQUAL";
20
- MatchTypeCustomData["LOWER"] = "LOWER";
21
- MatchTypeCustomData["GREATER"] = "GREATER";
22
- MatchTypeCustomData["UNDEFINED"] = "UNDEFINED";
23
- MatchTypeCustomData["AMONG_VALUES"] = "AMONG_VALUES";
24
- return MatchTypeCustomData;
25
- }({});
26
- exports.MatchTypeCustomData = MatchTypeCustomData;
27
- let MatchTypeVariation = /*#__PURE__*/function (MatchTypeVariation) {
28
- MatchTypeVariation["ANY"] = "ANY";
29
- MatchTypeVariation["EXACT"] = "EXACT";
30
- return MatchTypeVariation;
31
- }({});
32
- exports.MatchTypeVariation = MatchTypeVariation;
33
- let MatchTypeTest = /*#__PURE__*/function (MatchTypeTest) {
34
- MatchTypeTest["ALL"] = "ALL";
35
- MatchTypeTest["TEST"] = "TEST";
36
- MatchTypeTest["PERSO"] = "PERSO";
37
- return MatchTypeTest;
38
- }({});
39
- exports.MatchTypeTest = MatchTypeTest;
40
- let TargetingType = /*#__PURE__*/function (TargetingType) {
41
- TargetingType["PAGE_URL"] = "PAGE_URL";
42
- TargetingType["PAGE_TITLE"] = "PAGE_TITLE";
43
- TargetingType["LANDING_PAGE"] = "LANDING_PAGE";
44
- TargetingType["ORIGIN"] = "ORIGIN";
45
- TargetingType["ORIGIN_TYPE"] = "ORIGIN_TYPE";
46
- TargetingType["REFERRERS"] = "REFERRERS";
47
- TargetingType["NEW_VISITORS"] = "NEW_VISITORS";
48
- TargetingType["INTERESTS"] = "INTERESTS";
49
- TargetingType["BROWSER_LANGUAGE"] = "BROWSER_LANGUAGE";
50
- TargetingType["GEOLOCATION"] = "GEOLOCATION";
51
- TargetingType["DEVICE_TYPE"] = "DEVICE_TYPE";
52
- TargetingType["SCREEN_DIMENSION"] = "SCREEN_DIMENSION";
53
- TargetingType["VISITOR_IP"] = "VISITOR_IP";
54
- TargetingType["AD_BLOCKER"] = "AD_BLOCKER";
55
- TargetingType["PREVIOUS_PAGE"] = "PREVIOUS_PAGE";
56
- TargetingType["KEY_PAGES"] = "KEY_PAGES";
57
- TargetingType["PAGE_VIEWS"] = "PAGE_VIEWS";
58
- TargetingType["FIRST_VISIT"] = "FIRST_VISIT";
59
- TargetingType["LAST_VISIT"] = "LAST_VISIT";
60
- TargetingType["ACTIVE_SESSION"] = "ACTIVE_SESSION";
61
- TargetingType["TIME_SINCE_PAGE_LOAD"] = "TIME_SINCE_PAGE_LOAD";
62
- TargetingType["SAME_DAY_VISITS"] = "SAME_DAY_VISITS";
63
- TargetingType["VISITS"] = "VISITS";
64
- TargetingType["VISITS_BY_PAGE"] = "VISITS_BY_PAGE";
65
- TargetingType["INTERNAL_SEARCH_KEYWORDS"] = "INTERNAL_SEARCH_KEYWORDS";
66
- TargetingType["TABS_ON_SITE"] = "TABS_ON_SITE";
67
- TargetingType["CONVERSION_PROBABILITY"] = "CONVERSION_PROBABILITY";
68
- TargetingType["HEAT_SLICE"] = "HEAT_SLICE";
69
- TargetingType["SKY_STATUS"] = "SKY_STATUS";
70
- TargetingType["TEMPERATURE"] = "TEMPERATURE";
71
- TargetingType["DAY_NIGHT"] = "DAY_NIGHT";
72
- TargetingType["FORECAST_SKY_STATUS"] = "FORECAST_SKY_STATUS";
73
- TargetingType["FORECAST_TEMPERATURE"] = "FORECAST_TEMPERATURE";
74
- TargetingType["DAY_OF_WEEK"] = "DAY_OF_WEEK";
75
- TargetingType["TIME_RANGE"] = "TIME_RANGE";
76
- TargetingType["HOUR_MINUTE_RANGE"] = "HOUR_MINUTE_RANGE";
77
- TargetingType["JS_CODE"] = "JS_CODE";
78
- TargetingType["COOKIE"] = "COOKIE";
79
- TargetingType["EVENT"] = "EVENT";
80
- TargetingType["BROWSER"] = "BROWSER";
81
- TargetingType["OPERATING_SYSTEM"] = "OPERATING_SYSTEM";
82
- TargetingType["DOM_ELEMENT"] = "DOM_ELEMENT";
83
- TargetingType["MOUSE_OUT"] = "MOUSE_OUT";
84
- TargetingType["TARGET_EXPERIMENT"] = "TARGET_EXPERIMENT";
85
- TargetingType["TARGET_PERSONALIZATION"] = "TARGET_PERSONALIZATION";
86
- TargetingType["EXCLUSIVE_EXPERIMENT"] = "EXCLUSIVE_EXPERIMENT";
87
- TargetingType["CONVERSIONS"] = "CONVERSIONS";
88
- TargetingType["CUSTOM_DATUM"] = "CUSTOM_DATUM";
89
- TargetingType["YSANCE_SEGMENT"] = "YSANCE_SEGMENT";
90
- TargetingType["YSANCE_ATTRIBUT"] = "YSANCE_ATTRIBUT";
91
- TargetingType["TEALIUM_BADGE"] = "TEALIUM_BADGE";
92
- TargetingType["TEALIUM_AUDIENCE"] = "TEALIUM_AUDIENCE";
93
- TargetingType["PRICE_OF_DISPLAYED_PAGE"] = "PRICE_OF_DISPLAYED_PAGE";
94
- TargetingType["NUMBER_OF_VISITED_PAGES"] = "NUMBER_OF_VISITED_PAGES";
95
- TargetingType["VISITED_PAGES"] = "VISITED_PAGES";
96
- TargetingType["CUSTOM"] = "CUSTOM";
97
- TargetingType["EXPLICIT_TRIGGER"] = "EXPLICIT_TRIGGER";
98
- return TargetingType;
99
- }({});
100
- exports.TargetingType = TargetingType;
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.VersionMatchType=exports.TargetingType=exports.Operator=exports.MatchTypeVariation=exports.MatchTypeTest=exports.MatchTypeCustomData=exports.MatchType=void 0;var Operator=/*#__PURE__*/function(a){return a.And="AND",a.Or="OR",a}({});exports.Operator=Operator;var MatchTypeCustomData=/*#__PURE__*/function(a){return a.TRUE="TRUE",a.FALSE="FALSE",a.EXACT="EXACT",a.CONTAINS="CONTAINS",a.REGULAR_EXPRESSION="REGULAR_EXPRESSION",a.EQUAL="EQUAL",a.LOWER="LOWER",a.GREATER="GREATER",a.UNDEFINED="UNDEFINED",a.AMONG_VALUES="AMONG_VALUES",a}({});exports.MatchTypeCustomData=MatchTypeCustomData;var MatchTypeVariation=/*#__PURE__*/function(a){return a.ANY="ANY",a.EXACT="EXACT",a}({});exports.MatchTypeVariation=MatchTypeVariation;var MatchTypeTest=/*#__PURE__*/function(a){return a.ALL="ALL",a.TEST="TEST",a.PERSO="PERSO",a}({});exports.MatchTypeTest=MatchTypeTest;var MatchType=/*#__PURE__*/function(a){return a.EXACT="EXACT",a.CONTAINS="CONTAINS",a.REGULAR_EXPRESSION="REGULAR_EXPRESSION",a}({});exports.MatchType=MatchType;var VersionMatchType=/*#__PURE__*/function(a){return a.GREATER="GREATER",a.EQUAL="EQUAL",a.LOWER="LOWER",a}({});exports.VersionMatchType=VersionMatchType;var TargetingType=/*#__PURE__*/function(a){return a.PAGE_URL="PAGE_URL",a.PAGE_TITLE="PAGE_TITLE",a.LANDING_PAGE="LANDING_PAGE",a.ORIGIN="ORIGIN",a.ORIGIN_TYPE="ORIGIN_TYPE",a.REFERRERS="REFERRERS",a.NEW_VISITORS="NEW_VISITORS",a.INTERESTS="INTERESTS",a.BROWSER_LANGUAGE="BROWSER_LANGUAGE",a.GEOLOCATION="GEOLOCATION",a.DEVICE_TYPE="DEVICE_TYPE",a.SCREEN_DIMENSION="SCREEN_DIMENSION",a.VISITOR_IP="VISITOR_IP",a.AD_BLOCKER="AD_BLOCKER",a.PREVIOUS_PAGE="PREVIOUS_PAGE",a.KEY_PAGES="KEY_PAGES",a.PAGE_VIEWS="PAGE_VIEWS",a.FIRST_VISIT="FIRST_VISIT",a.LAST_VISIT="LAST_VISIT",a.ACTIVE_SESSION="ACTIVE_SESSION",a.TIME_SINCE_PAGE_LOAD="TIME_SINCE_PAGE_LOAD",a.SAME_DAY_VISITS="SAME_DAY_VISITS",a.VISITS="VISITS",a.VISITS_BY_PAGE="VISITS_BY_PAGE",a.VISITOR_CODE="VISITOR_CODE",a.SDK_LANGUAGE="SDK_LANGUAGE",a.INTERNAL_SEARCH_KEYWORDS="INTERNAL_SEARCH_KEYWORDS",a.TABS_ON_SITE="TABS_ON_SITE",a.CONVERSION_PROBABILITY="CONVERSION_PROBABILITY",a.HEAT_SLICE="HEAT_SLICE",a.SKY_STATUS="SKY_STATUS",a.TEMPERATURE="TEMPERATURE",a.DAY_NIGHT="DAY_NIGHT",a.FORECAST_SKY_STATUS="FORECAST_SKY_STATUS",a.FORECAST_TEMPERATURE="FORECAST_TEMPERATURE",a.DAY_OF_WEEK="DAY_OF_WEEK",a.TIME_RANGE="TIME_RANGE",a.HOUR_MINUTE_RANGE="HOUR_MINUTE_RANGE",a.JS_CODE="JS_CODE",a.COOKIE="COOKIE",a.EVENT="EVENT",a.BROWSER="BROWSER",a.OPERATING_SYSTEM="OPERATING_SYSTEM",a.DOM_ELEMENT="DOM_ELEMENT",a.MOUSE_OUT="MOUSE_OUT",a.TARGET_EXPERIMENT="TARGET_EXPERIMENT",a.TARGET_PERSONALIZATION="TARGET_PERSONALIZATION",a.EXCLUSIVE_EXPERIMENT="EXCLUSIVE_EXPERIMENT",a.CONVERSIONS="CONVERSIONS",a.CUSTOM_DATUM="CUSTOM_DATUM",a.YSANCE_SEGMENT="YSANCE_SEGMENT",a.YSANCE_ATTRIBUT="YSANCE_ATTRIBUT",a.TEALIUM_BADGE="TEALIUM_BADGE",a.TEALIUM_AUDIENCE="TEALIUM_AUDIENCE",a.PRICE_OF_DISPLAYED_PAGE="PRICE_OF_DISPLAYED_PAGE",a.NUMBER_OF_VISITED_PAGES="NUMBER_OF_VISITED_PAGES",a.VISITED_PAGES="VISITED_PAGES",a.CUSTOM="CUSTOM",a.EXPLICIT_TRIGGER="EXPLICIT_TRIGGER",a}({});exports.TargetingType=TargetingType;
101
2
  //# sourceMappingURL=types.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"types.js","names":["Operator","exports","MatchTypeCustomData","MatchTypeVariation","MatchTypeTest","TargetingType"],"sources":["../../src/targeting/types.ts"],"sourcesContent":["import { KameleoonDataItemType } from '../kameleoonData';\nimport { ExperimentVariationsType } from '../storage';\nimport { ConditionDataType, ConditionType } from './conditions';\nimport { TargetingNode } from './targetingNode';\n\nexport enum Operator {\n And = 'AND',\n Or = 'OR',\n}\n\nexport type NonLeafNodeType = {\n left: TargetingNode;\n right: TargetingNode;\n value: Operator;\n};\n\nexport type LeafNodeType = {\n left: undefined;\n right: undefined;\n value: ConditionType;\n};\n\nexport type NodeValueType = ConditionType | Operator;\n\nexport type ConditionLevelType = {\n orOperators: boolean[];\n conditions: ConditionDataType[];\n};\n\nexport type SegmentType = {\n id: string;\n name: string;\n conditionsData: {\n firstLevelOrOperators: boolean[];\n firstLevel: ConditionLevelType[];\n };\n};\n\nexport type FlatSegmentType = {\n conditions: ConditionDataType[];\n operators: Operator[];\n};\n\nexport type TargetingDataItemType = {\n lastActivityTime: number;\n data: KameleoonDataItemType;\n};\n\nexport type TargetingDataType = {\n // --- Note ---\n // `undefined` is used to indicate possible data absence for certain\n // visitorCode\n [visitorCode: string]: TargetingDataItemType[] | undefined;\n};\n\nexport type EvaluationDataType = {\n targetingData: TargetingDataItemType[];\n variationData: ExperimentVariationsType;\n experimentId: number | null;\n};\n\nexport enum MatchTypeCustomData {\n TRUE = 'TRUE',\n FALSE = 'FALSE',\n EXACT = 'EXACT',\n CONTAINS = 'CONTAINS',\n REGULAR_EXPRESSION = 'REGULAR_EXPRESSION',\n EQUAL = 'EQUAL',\n LOWER = 'LOWER',\n GREATER = 'GREATER',\n UNDEFINED = 'UNDEFINED',\n AMONG_VALUES = 'AMONG_VALUES',\n}\n\nexport enum MatchTypeVariation {\n ANY = 'ANY',\n EXACT = 'EXACT',\n}\n\nexport enum MatchTypeTest {\n ALL = 'ALL',\n TEST = 'TEST',\n PERSO = 'PERSO',\n}\n\nexport enum TargetingType {\n PAGE_URL = 'PAGE_URL',\n PAGE_TITLE = 'PAGE_TITLE',\n LANDING_PAGE = 'LANDING_PAGE',\n ORIGIN = 'ORIGIN',\n ORIGIN_TYPE = 'ORIGIN_TYPE',\n REFERRERS = 'REFERRERS',\n NEW_VISITORS = 'NEW_VISITORS',\n INTERESTS = 'INTERESTS',\n BROWSER_LANGUAGE = 'BROWSER_LANGUAGE',\n GEOLOCATION = 'GEOLOCATION',\n DEVICE_TYPE = 'DEVICE_TYPE',\n SCREEN_DIMENSION = 'SCREEN_DIMENSION',\n VISITOR_IP = 'VISITOR_IP',\n AD_BLOCKER = 'AD_BLOCKER',\n PREVIOUS_PAGE = 'PREVIOUS_PAGE',\n KEY_PAGES = 'KEY_PAGES',\n PAGE_VIEWS = 'PAGE_VIEWS',\n FIRST_VISIT = 'FIRST_VISIT',\n LAST_VISIT = 'LAST_VISIT',\n ACTIVE_SESSION = 'ACTIVE_SESSION',\n TIME_SINCE_PAGE_LOAD = 'TIME_SINCE_PAGE_LOAD',\n SAME_DAY_VISITS = 'SAME_DAY_VISITS',\n VISITS = 'VISITS',\n VISITS_BY_PAGE = 'VISITS_BY_PAGE',\n INTERNAL_SEARCH_KEYWORDS = 'INTERNAL_SEARCH_KEYWORDS',\n TABS_ON_SITE = 'TABS_ON_SITE',\n CONVERSION_PROBABILITY = 'CONVERSION_PROBABILITY',\n HEAT_SLICE = 'HEAT_SLICE',\n SKY_STATUS = 'SKY_STATUS',\n TEMPERATURE = 'TEMPERATURE',\n DAY_NIGHT = 'DAY_NIGHT',\n FORECAST_SKY_STATUS = 'FORECAST_SKY_STATUS',\n FORECAST_TEMPERATURE = 'FORECAST_TEMPERATURE',\n DAY_OF_WEEK = 'DAY_OF_WEEK',\n TIME_RANGE = 'TIME_RANGE',\n HOUR_MINUTE_RANGE = 'HOUR_MINUTE_RANGE',\n JS_CODE = 'JS_CODE',\n COOKIE = 'COOKIE',\n EVENT = 'EVENT',\n BROWSER = 'BROWSER',\n OPERATING_SYSTEM = 'OPERATING_SYSTEM',\n DOM_ELEMENT = 'DOM_ELEMENT',\n MOUSE_OUT = 'MOUSE_OUT',\n TARGET_EXPERIMENT = 'TARGET_EXPERIMENT',\n TARGET_PERSONALIZATION = 'TARGET_PERSONALIZATION',\n EXCLUSIVE_EXPERIMENT = 'EXCLUSIVE_EXPERIMENT',\n CONVERSIONS = 'CONVERSIONS',\n CUSTOM_DATUM = 'CUSTOM_DATUM',\n YSANCE_SEGMENT = 'YSANCE_SEGMENT',\n YSANCE_ATTRIBUT = 'YSANCE_ATTRIBUT',\n TEALIUM_BADGE = 'TEALIUM_BADGE',\n TEALIUM_AUDIENCE = 'TEALIUM_AUDIENCE',\n PRICE_OF_DISPLAYED_PAGE = 'PRICE_OF_DISPLAYED_PAGE',\n NUMBER_OF_VISITED_PAGES = 'NUMBER_OF_VISITED_PAGES',\n VISITED_PAGES = 'VISITED_PAGES',\n CUSTOM = 'CUSTOM',\n EXPLICIT_TRIGGER = 'EXPLICIT_TRIGGER',\n}\n"],"mappings":";;;;;;IAKYA,QAAQ,0BAARA,QAAQ;EAARA,QAAQ;EAARA,QAAQ;EAAA,OAARA,QAAQ;AAAA;AAAAC,OAAA,CAAAD,QAAA,GAAAA,QAAA;AAAA,IAwDRE,mBAAmB,0BAAnBA,mBAAmB;EAAnBA,mBAAmB;EAAnBA,mBAAmB;EAAnBA,mBAAmB;EAAnBA,mBAAmB;EAAnBA,mBAAmB;EAAnBA,mBAAmB;EAAnBA,mBAAmB;EAAnBA,mBAAmB;EAAnBA,mBAAmB;EAAnBA,mBAAmB;EAAA,OAAnBA,mBAAmB;AAAA;AAAAD,OAAA,CAAAC,mBAAA,GAAAA,mBAAA;AAAA,IAanBC,kBAAkB,0BAAlBA,kBAAkB;EAAlBA,kBAAkB;EAAlBA,kBAAkB;EAAA,OAAlBA,kBAAkB;AAAA;AAAAF,OAAA,CAAAE,kBAAA,GAAAA,kBAAA;AAAA,IAKlBC,aAAa,0BAAbA,aAAa;EAAbA,aAAa;EAAbA,aAAa;EAAbA,aAAa;EAAA,OAAbA,aAAa;AAAA;AAAAH,OAAA,CAAAG,aAAA,GAAAA,aAAA;AAAA,IAMbC,aAAa,0BAAbA,aAAa;EAAbA,aAAa;EAAbA,aAAa;EAAbA,aAAa;EAAbA,aAAa;EAAbA,aAAa;EAAbA,aAAa;EAAbA,aAAa;EAAbA,aAAa;EAAbA,aAAa;EAAbA,aAAa;EAAbA,aAAa;EAAbA,aAAa;EAAbA,aAAa;EAAbA,aAAa;EAAbA,aAAa;EAAbA,aAAa;EAAbA,aAAa;EAAbA,aAAa;EAAbA,aAAa;EAAbA,aAAa;EAAbA,aAAa;EAAbA,aAAa;EAAbA,aAAa;EAAbA,aAAa;EAAbA,aAAa;EAAbA,aAAa;EAAbA,aAAa;EAAbA,aAAa;EAAbA,aAAa;EAAbA,aAAa;EAAbA,aAAa;EAAbA,aAAa;EAAbA,aAAa;EAAbA,aAAa;EAAbA,aAAa;EAAbA,aAAa;EAAbA,aAAa;EAAbA,aAAa;EAAbA,aAAa;EAAbA,aAAa;EAAbA,aAAa;EAAbA,aAAa;EAAbA,aAAa;EAAbA,aAAa;EAAbA,aAAa;EAAbA,aAAa;EAAbA,aAAa;EAAbA,aAAa;EAAbA,aAAa;EAAbA,aAAa;EAAbA,aAAa;EAAbA,aAAa;EAAbA,aAAa;EAAbA,aAAa;EAAbA,aAAa;EAAbA,aAAa;EAAbA,aAAa;EAAA,OAAbA,aAAa;AAAA;AAAAJ,OAAA,CAAAI,aAAA,GAAAA,aAAA"}
1
+ {"version":3,"file":"types.js","names":["Operator","And","Or","exports","MatchTypeCustomData","TRUE","FALSE","EXACT","CONTAINS","REGULAR_EXPRESSION","EQUAL","LOWER","GREATER","UNDEFINED","AMONG_VALUES","MatchTypeVariation","ANY","MatchTypeTest","ALL","TEST","PERSO","MatchType","VersionMatchType","TargetingType","PAGE_URL","PAGE_TITLE","LANDING_PAGE","ORIGIN","ORIGIN_TYPE","REFERRERS","NEW_VISITORS","INTERESTS","BROWSER_LANGUAGE","GEOLOCATION","DEVICE_TYPE","SCREEN_DIMENSION","VISITOR_IP","AD_BLOCKER","PREVIOUS_PAGE","KEY_PAGES","PAGE_VIEWS","FIRST_VISIT","LAST_VISIT","ACTIVE_SESSION","TIME_SINCE_PAGE_LOAD","SAME_DAY_VISITS","VISITS","VISITS_BY_PAGE","VISITOR_CODE","SDK_LANGUAGE","INTERNAL_SEARCH_KEYWORDS","TABS_ON_SITE","CONVERSION_PROBABILITY","HEAT_SLICE","SKY_STATUS","TEMPERATURE","DAY_NIGHT","FORECAST_SKY_STATUS","FORECAST_TEMPERATURE","DAY_OF_WEEK","TIME_RANGE","HOUR_MINUTE_RANGE","JS_CODE","COOKIE","EVENT","BROWSER","OPERATING_SYSTEM","DOM_ELEMENT","MOUSE_OUT","TARGET_EXPERIMENT","TARGET_PERSONALIZATION","EXCLUSIVE_EXPERIMENT","CONVERSIONS","CUSTOM_DATUM","YSANCE_SEGMENT","YSANCE_ATTRIBUT","TEALIUM_BADGE","TEALIUM_AUDIENCE","PRICE_OF_DISPLAYED_PAGE","NUMBER_OF_VISITED_PAGES","VISITED_PAGES","CUSTOM","EXPLICIT_TRIGGER"],"sources":["../../src/targeting/types.ts"],"sourcesContent":["import { KameleoonVisitorDataType } from 'src/kameleoonData/types';\nimport { ExperimentVariationsType } from 'src/storage';\nimport { ExternalPackageInfoType } from 'src/types';\nimport { ConditionDataType, ConditionType } from './conditions';\nimport { TargetingNode } from './targetingNode';\n\nexport enum Operator {\n And = 'AND',\n Or = 'OR',\n}\n\nexport type NonLeafNodeType = {\n left: TargetingNode;\n right: TargetingNode;\n value: Operator;\n};\n\nexport type LeafNodeType = {\n left: undefined;\n right: undefined;\n value: ConditionType;\n};\n\nexport type NodeValueType = ConditionType | Operator;\n\nexport type ConditionLevelType = {\n orOperators: boolean[];\n conditions: ConditionDataType[];\n};\n\nexport type SegmentType = {\n id: string;\n name: string;\n conditionsData: {\n firstLevelOrOperators: boolean[];\n firstLevel: ConditionLevelType[];\n };\n};\n\nexport type NestedConditionGroupType = {\n operators: Operator[];\n conditions: ConditionDataType[];\n};\n\nexport type GroupedSegmentsType = {\n topLevelOperators: Operator[];\n nestedConditions: NestedConditionGroupType[];\n};\n\nexport type TargetingDataType = {\n [visitorCode: string]: KameleoonVisitorDataType;\n};\n\nexport type EvaluationDataType = {\n targetingData?: KameleoonVisitorDataType;\n variationData: ExperimentVariationsType;\n sdkInfo: ExternalPackageInfoType;\n experimentId: number | null;\n visitorCode: string;\n};\n\nexport enum MatchTypeCustomData {\n TRUE = 'TRUE',\n FALSE = 'FALSE',\n EXACT = 'EXACT',\n CONTAINS = 'CONTAINS',\n REGULAR_EXPRESSION = 'REGULAR_EXPRESSION',\n EQUAL = 'EQUAL',\n LOWER = 'LOWER',\n GREATER = 'GREATER',\n UNDEFINED = 'UNDEFINED',\n AMONG_VALUES = 'AMONG_VALUES',\n}\n\nexport enum MatchTypeVariation {\n ANY = 'ANY',\n EXACT = 'EXACT',\n}\n\nexport enum MatchTypeTest {\n ALL = 'ALL',\n TEST = 'TEST',\n PERSO = 'PERSO',\n}\n\nexport enum MatchType {\n EXACT = 'EXACT',\n CONTAINS = 'CONTAINS',\n REGULAR_EXPRESSION = 'REGULAR_EXPRESSION',\n}\n\nexport enum VersionMatchType {\n GREATER = 'GREATER',\n EQUAL = 'EQUAL',\n LOWER = 'LOWER',\n}\n\nexport enum TargetingType {\n PAGE_URL = 'PAGE_URL',\n PAGE_TITLE = 'PAGE_TITLE',\n LANDING_PAGE = 'LANDING_PAGE',\n ORIGIN = 'ORIGIN',\n ORIGIN_TYPE = 'ORIGIN_TYPE',\n REFERRERS = 'REFERRERS',\n NEW_VISITORS = 'NEW_VISITORS',\n INTERESTS = 'INTERESTS',\n BROWSER_LANGUAGE = 'BROWSER_LANGUAGE',\n GEOLOCATION = 'GEOLOCATION',\n DEVICE_TYPE = 'DEVICE_TYPE',\n SCREEN_DIMENSION = 'SCREEN_DIMENSION',\n VISITOR_IP = 'VISITOR_IP',\n AD_BLOCKER = 'AD_BLOCKER',\n PREVIOUS_PAGE = 'PREVIOUS_PAGE',\n KEY_PAGES = 'KEY_PAGES',\n PAGE_VIEWS = 'PAGE_VIEWS',\n FIRST_VISIT = 'FIRST_VISIT',\n LAST_VISIT = 'LAST_VISIT',\n ACTIVE_SESSION = 'ACTIVE_SESSION',\n TIME_SINCE_PAGE_LOAD = 'TIME_SINCE_PAGE_LOAD',\n SAME_DAY_VISITS = 'SAME_DAY_VISITS',\n VISITS = 'VISITS',\n VISITS_BY_PAGE = 'VISITS_BY_PAGE',\n VISITOR_CODE = 'VISITOR_CODE',\n SDK_LANGUAGE = 'SDK_LANGUAGE',\n INTERNAL_SEARCH_KEYWORDS = 'INTERNAL_SEARCH_KEYWORDS',\n TABS_ON_SITE = 'TABS_ON_SITE',\n CONVERSION_PROBABILITY = 'CONVERSION_PROBABILITY',\n HEAT_SLICE = 'HEAT_SLICE',\n SKY_STATUS = 'SKY_STATUS',\n TEMPERATURE = 'TEMPERATURE',\n DAY_NIGHT = 'DAY_NIGHT',\n FORECAST_SKY_STATUS = 'FORECAST_SKY_STATUS',\n FORECAST_TEMPERATURE = 'FORECAST_TEMPERATURE',\n DAY_OF_WEEK = 'DAY_OF_WEEK',\n TIME_RANGE = 'TIME_RANGE',\n HOUR_MINUTE_RANGE = 'HOUR_MINUTE_RANGE',\n JS_CODE = 'JS_CODE',\n COOKIE = 'COOKIE',\n EVENT = 'EVENT',\n BROWSER = 'BROWSER',\n OPERATING_SYSTEM = 'OPERATING_SYSTEM',\n DOM_ELEMENT = 'DOM_ELEMENT',\n MOUSE_OUT = 'MOUSE_OUT',\n TARGET_EXPERIMENT = 'TARGET_EXPERIMENT',\n TARGET_PERSONALIZATION = 'TARGET_PERSONALIZATION',\n EXCLUSIVE_EXPERIMENT = 'EXCLUSIVE_EXPERIMENT',\n CONVERSIONS = 'CONVERSIONS',\n CUSTOM_DATUM = 'CUSTOM_DATUM',\n YSANCE_SEGMENT = 'YSANCE_SEGMENT',\n YSANCE_ATTRIBUT = 'YSANCE_ATTRIBUT',\n TEALIUM_BADGE = 'TEALIUM_BADGE',\n TEALIUM_AUDIENCE = 'TEALIUM_AUDIENCE',\n PRICE_OF_DISPLAYED_PAGE = 'PRICE_OF_DISPLAYED_PAGE',\n NUMBER_OF_VISITED_PAGES = 'NUMBER_OF_VISITED_PAGES',\n VISITED_PAGES = 'VISITED_PAGES',\n CUSTOM = 'CUSTOM',\n EXPLICIT_TRIGGER = 'EXPLICIT_TRIGGER',\n}\n"],"mappings":"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"}
package/dist/types.d.ts CHANGED
@@ -1,7 +1,7 @@
1
1
  /// <reference types="node" />
2
2
  import { IncomingMessage, ServerResponse } from 'http';
3
3
  import { JSONType } from './campaignConfiguration/types';
4
- import { SDKType } from './constants';
4
+ import { SdkLanguageType } from './constants';
5
5
  import { IExternalEventSourceConstructor } from './eventSource';
6
6
  import { IExternalStorageConstructor } from './storage';
7
7
  import { IExternalRequestDispatcher, GetClientConfigurationResultType } from './requester';
@@ -35,11 +35,11 @@ export type SDKCoreParameters = {
35
35
  internalConfiguration: InternalSDKConfigurationType;
36
36
  };
37
37
  /**
38
- * @param {SDKType} type - type of the SDK
38
+ * @param {SdkLanguageType} type - type of the SDK
39
39
  * @param {string} version - version of the package
40
40
  * */
41
41
  export type ExternalPackageInfoType = {
42
- type: SDKType;
42
+ type: SdkLanguageType;
43
43
  version: string;
44
44
  };
45
45
  /**
@@ -101,10 +101,15 @@ export declare enum Milliseconds {
101
101
  Minute = 60000,
102
102
  Hour = 3600000
103
103
  }
104
+ /**
105
+ * @param {string} visitorCode - unique visitor identifier, shouldn't exceed 255 characters
106
+ * @param {number} goalId - an id of a goal to track
107
+ * @param {number | undefined} revenue - an optional parameter for revenue, default value is `0`
108
+ * */
104
109
  export type TrackConversionParamsType = {
105
110
  visitorCode: string;
106
111
  goalId: number;
107
- revenue: number;
112
+ revenue?: number;
108
113
  };
109
114
  export type ExperimentType = {
110
115
  id: number;