@kameleoon/javascript-sdk-core 2.4.5 → 2.5.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 (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 +7 -5
  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 +7 -6
  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 +4 -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 -109
  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
@@ -37,6 +37,8 @@ export interface IKameleoonClient {
37
37
  * @returns {KameleoonDataType[]} promise resolved to an array of `KameleoonData` instances, only includes custom data
38
38
  * @throws `KameleoonError` with one of the following `type` s:
39
39
  *
40
+ * - `KameleoonException.VisitorCodeMaxLength` The visitor code length was exceeded
41
+ * - `KameleoonException.VisitorCodeEmpty` The visitor code is empty
40
42
  * - `KameleoonException.RemoteData` - Couldn't retrieve data from Kameleoon server
41
43
  */
42
44
  getRemoteVisitorData: (visitorCode: string, shouldAddData?: boolean) => Promise<KameleoonDataType[]>;
@@ -47,6 +49,8 @@ export interface IKameleoonClient {
47
49
  * @returns {number} associated variationId which is successfully searched/assigned
48
50
  * @throws `KameleoonError` with one of the following `type` s:
49
51
  *
52
+ * - `KameleoonException.VisitorCodeMaxLength` The visitor code length was exceeded
53
+ * - `KameleoonException.VisitorCodeEmpty` The visitor code is empty
50
54
  * - `KameleoonException.ExperimentConfigurationNotFound` No configuration found for provided `experimentId`
51
55
  * - `KameleoonException.VisitorCodeMaxLength` The visitor code length was exceeded
52
56
  * - `KameleoonException.VisitorCodeEmpty` The visitor code is empty
@@ -67,12 +71,15 @@ export interface IKameleoonClient {
67
71
  */
68
72
  trackConversion: ({ visitorCode, goalId, revenue, }: TrackConversionParamsType) => void;
69
73
  /**
70
- * @method flushData - takes visitor associated kameleoon data and sends the data tracking request with collected data
71
- * sent data is removed from `KameleoonClient` instance but not from the storage for correct targeting checks
72
- * @param {string} visitorCode - unique visitor identification string, can't exceed 255 characters length
74
+ * @method flushData - takes visitor associated kameleoon data and sends the data tracking request with collected data,
75
+ * sent data is removed from `KameleoonClient` instance but not from the storage for correct targeting checks. If no visitor is passed,
76
+ * then data for all visitors is sent and removed from `KameleoonClient` instance.
77
+ * @param {string | undefined} visitorCode - unique visitor identification string, can't exceed 255 characters length
73
78
  * @returns {void}
74
79
  * @throws `KameleoonError` with one of the following `type` s:
75
80
  *
81
+ * - `KameleoonException.VisitorCodeMaxLength` The visitor code length was exceeded
82
+ * - `KameleoonException.VisitorCodeEmpty` The visitor code is empty
76
83
  * - `KameleoonException.Initialization` - Method was executed before `initialize` was done for `kameleoonClient`
77
84
  */
78
85
  flushData: (visitorCode: string) => void;
@@ -185,6 +192,10 @@ export interface IKameleoonClient {
185
192
  * See [Kameleoon Automation API](https://developers.kameleoon.com/apis/activation-api-js/api-reference#trigger-1) for the details
186
193
  * @param {string} visitorCode - unique visitor identification string, can't exceed 255 characters length
187
194
  * @returns {string} Kameleoon tracking code
195
+ * @throws `KameleoonError` with one of the following `type` s:
196
+ *
197
+ * - `KameleoonException.VisitorCodeMaxLength` - The visitor code length was exceeded
198
+ * - `KameleoonException.VisitorCodeEmpty` The visitor code is empty
188
199
  */
189
200
  getEngineTrackingCode: (visitorCode: string) => string;
190
201
  /**
@@ -209,6 +220,7 @@ export declare class KameleoonClient implements IKameleoonClient {
209
220
  private trackingCache;
210
221
  private requester;
211
222
  private externalEventSource;
223
+ private externalPackageInfo;
212
224
  /**
213
225
  * @param {SDKCoreParameters} sdkCoreParameters - parameters for initializing sdk core
214
226
  */
@@ -218,7 +230,7 @@ export declare class KameleoonClient implements IKameleoonClient {
218
230
  getRemoteVisitorData(visitorCode: string, shouldAddData?: boolean): Promise<KameleoonDataType[]>;
219
231
  triggerExperiment(visitorCode: string, experimentId: number): number;
220
232
  trackConversion({ visitorCode, goalId, revenue, }: TrackConversionParamsType): void;
221
- flushData(visitorCode: string): void;
233
+ flushData(visitorCode?: string): void;
222
234
  getExperiments(): ExperimentType[];
223
235
  getVisitorExperiments(visitorCode: string, isActive?: boolean): ExperimentType[];
224
236
  getExperimentVariationData(variationId: number): JSONType;
@@ -1,389 +1,15 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.KameleoonClient = void 0;
7
- var _tsRes = require("ts-res");
8
- var _cacheManager = require("./cacheManager");
9
- var _campaignConfiguration = require("./campaignConfiguration");
10
- var _clientSettings = require("./clientSettings");
11
- var _constants = require("./constants");
12
- var _kameleoonData = require("./kameleoonData");
13
- var _kameleoonError = require("./kameleoonError");
14
- var _requester = require("./requester");
15
- var _storage = require("./storage");
16
- var _externalStorage = require("./storage/externalStorage");
17
- var _utilities = require("./utilities");
18
- var _variationConfiguration = require("./variationConfiguration");
19
- function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
20
- function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
21
- 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; }
22
- function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return typeof key === "symbol" ? key : String(key); }
23
- 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); }
24
- /**
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.KameleoonClient=void 0;var _tsRes=require("ts-res"),_cacheManager=require("./cacheManager"),_campaignConfiguration=require("./campaignConfiguration"),_clientSettings=require("./clientSettings"),_constants=require("./constants"),_kameleoonData=require("./kameleoonData"),_kameleoonError=require("./kameleoonError"),_requester=require("./requester"),_storage=require("./storage"),_externalStorage=require("./storage/externalStorage"),_utilities=require("./utilities"),_variationConfiguration=require("./variationConfiguration");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 ownKeys(a,b){var c=Object.keys(a);if(Object.getOwnPropertySymbols){var d=Object.getOwnPropertySymbols(a);b&&(d=d.filter(function(b){return Object.getOwnPropertyDescriptor(a,b).enumerable})),c.push.apply(c,d)}return c}function _objectSpread(a){for(var b,c=1;c<arguments.length;c++)b=null==arguments[c]?{}:arguments[c],c%2?ownKeys(Object(b),!0).forEach(function(c){_defineProperty(a,c,b[c])}):Object.getOwnPropertyDescriptors?Object.defineProperties(a,Object.getOwnPropertyDescriptors(b)):ownKeys(Object(b)).forEach(function(c){Object.defineProperty(a,c,Object.getOwnPropertyDescriptor(b,c))});return a}function _createForOfIteratorHelper(a,b){var c="undefined"!=typeof Symbol&&a[Symbol.iterator]||a["@@iterator"];if(!c){if(Array.isArray(a)||(c=_unsupportedIterableToArray(a))||b&&a&&"number"==typeof a.length){c&&(a=c);var d=0,e=function(){};return{s:e,n:function n(){return d>=a.length?{done:!0}:{done:!1,value:a[d++]}},e:function e(a){throw a},f:e}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var f,g=!0,h=!1;return{s:function s(){c=c.call(a)},n:function n(){var a=c.next();return g=a.done,a},e:function e(a){h=!0,f=a},f:function f(){try{g||null==c.return||c.return()}finally{if(h)throw f}}}}function _unsupportedIterableToArray(a,b){if(a){if("string"==typeof a)return _arrayLikeToArray(a,b);var c=Object.prototype.toString.call(a).slice(8,-1);return"Object"===c&&a.constructor&&(c=a.constructor.name),"Map"===c||"Set"===c?Array.from(a):"Arguments"===c||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(c)?_arrayLikeToArray(a,b):void 0}}function _arrayLikeToArray(a,b){(null==b||b>a.length)&&(b=a.length);for(var c=0,d=Array(b);c<b;c++)d[c]=a[c];return d}function _regeneratorRuntime(){"use strict";/*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/facebook/regenerator/blob/main/LICENSE */function a(a,b,c){return Object.defineProperty(a,b,{value:c,enumerable:!0,configurable:!0,writable:!0}),a[b]}function b(a,b,c,e){var f=b&&b.prototype instanceof d?b:d,g=Object.create(f.prototype),h=new m(e||[]);return s(g,"_invoke",{value:i(a,c,h)}),g}function c(a,b,c){try{return{type:"normal",arg:a.call(b,c)}}catch(a){return{type:"throw",arg:a}}}function d(){}function e(){}function f(){}function g(b){["next","throw","return"].forEach(function(c){a(b,c,function(a){return this._invoke(c,a)})})}function h(a,b){function d(e,f,g,h){var i=c(a[e],a,f);if("throw"!==i.type){var j=i.arg,k=j.value;return k&&"object"==_typeof(k)&&r.call(k,"__await")?b.resolve(k.__await).then(function(a){d("next",a,g,h)},function(a){d("throw",a,g,h)}):b.resolve(k).then(function(a){j.value=a,g(j)},function(a){return d("throw",a,g,h)})}h(i.arg)}var e;s(this,"_invoke",{value:function value(a,c){function f(){return new b(function(b,e){d(a,c,b,e)})}return e=e?e.then(f,f):f()}})}function i(a,b,d){var e="suspendedStart";return function(f,g){if("executing"==e)throw new Error("Generator is already running");if("completed"==e){if("throw"===f)throw g;return o()}for(d.method=f,d.arg=g;;){var h=d.delegate;if(h){var i=j(h,d);if(i){if(i===x)continue;return i}}if("next"===d.method)d.sent=d._sent=d.arg;else if("throw"===d.method){if("suspendedStart"==e)throw e="completed",d.arg;d.dispatchException(d.arg)}else"return"===d.method&&d.abrupt("return",d.arg);e="executing";var k=c(a,b,d);if("normal"===k.type){if(e=d.done?"completed":"suspendedYield",k.arg===x)continue;return{value:k.arg,done:d.done}}"throw"===k.type&&(e="completed",d.method="throw",d.arg=k.arg)}}}function j(a,b){var d=b.method,e=a.iterator[d];if(void 0===e)return b.delegate=null,"throw"===d&&a.iterator.return&&(b.method="return",b.arg=void 0,j(a,b),"throw"===b.method)||"return"!==d&&(b.method="throw",b.arg=new TypeError("The iterator does not provide a '"+d+"' method")),x;var f=c(e,a.iterator,b.arg);if("throw"===f.type)return b.method="throw",b.arg=f.arg,b.delegate=null,x;var g=f.arg;return g?g.done?(b[a.resultName]=g.value,b.next=a.nextLoc,"return"!==b.method&&(b.method="next",b.arg=void 0),b.delegate=null,x):g:(b.method="throw",b.arg=new TypeError("iterator result is not an object"),b.delegate=null,x)}function k(a){var b={tryLoc:a[0]};1 in a&&(b.catchLoc=a[1]),2 in a&&(b.finallyLoc=a[2],b.afterLoc=a[3]),this.tryEntries.push(b)}function l(a){var b=a.completion||{};b.type="normal",delete b.arg,a.completion=b}function m(a){this.tryEntries=[{tryLoc:"root"}],a.forEach(k,this),this.reset(!0)}function n(a){if(a){var b=a[u];if(b)return b.call(a);if("function"==typeof a.next)return a;if(!isNaN(a.length)){var c=-1,d=function b(){for(;++c<a.length;)if(r.call(a,c))return b.value=a[c],b.done=!1,b;return b.value=void 0,b.done=!0,b};return d.next=d}}return{next:o}}function o(){return{value:void 0,done:!0}}_regeneratorRuntime=function(){return p};var p={},q=Object.prototype,r=q.hasOwnProperty,s=Object.defineProperty||function(a,b,c){a[b]=c.value},t="function"==typeof Symbol?Symbol:{},u=t.iterator||"@@iterator",v=t.asyncIterator||"@@asyncIterator",w=t.toStringTag||"@@toStringTag";try{a({},"")}catch(b){a=function(a,b,c){return a[b]=c}}p.wrap=b;var x={},y={};a(y,u,function(){return this});var z=Object.getPrototypeOf,A=z&&z(z(n([])));A&&A!==q&&r.call(A,u)&&(y=A);var B=f.prototype=d.prototype=Object.create(y);return e.prototype=f,s(B,"constructor",{value:f,configurable:!0}),s(f,"constructor",{value:e,configurable:!0}),e.displayName=a(f,w,"GeneratorFunction"),p.isGeneratorFunction=function(a){var b="function"==typeof a&&a.constructor;return!!b&&(b===e||"GeneratorFunction"===(b.displayName||b.name))},p.mark=function(b){return Object.setPrototypeOf?Object.setPrototypeOf(b,f):(b.__proto__=f,a(b,w,"GeneratorFunction")),b.prototype=Object.create(B),b},p.awrap=function(a){return{__await:a}},g(h.prototype),a(h.prototype,v,function(){return this}),p.AsyncIterator=h,p.async=function(a,c,d,e,f){void 0===f&&(f=Promise);var g=new h(b(a,c,d,e),f);return p.isGeneratorFunction(c)?g:g.next().then(function(a){return a.done?a.value:g.next()})},g(B),a(B,w,"Generator"),a(B,u,function(){return this}),a(B,"toString",function(){return"[object Generator]"}),p.keys=function(a){var b=Object(a),c=[];for(var d in b)c.push(d);return c.reverse(),function a(){for(;c.length;){var d=c.pop();if(d in b)return a.value=d,a.done=!1,a}return a.done=!0,a}},p.values=n,m.prototype={constructor:m,reset:function reset(a){if(this.prev=0,this.next=0,this.sent=this._sent=void 0,this.done=!1,this.delegate=null,this.method="next",this.arg=void 0,this.tryEntries.forEach(l),!a)for(var b in this)"t"===b.charAt(0)&&r.call(this,b)&&!isNaN(+b.slice(1))&&(this[b]=void 0)},stop:function stop(){this.done=!0;var a=this.tryEntries[0].completion;if("throw"===a.type)throw a.arg;return this.rval},dispatchException:function dispatchException(a){function b(b,d){return f.type="throw",f.arg=a,c.next=b,d&&(c.method="next",c.arg=void 0),!!d}if(this.done)throw a;for(var c=this,d=this.tryEntries.length-1;0<=d;--d){var e=this.tryEntries[d],f=e.completion;if("root"===e.tryLoc)return b("end");if(e.tryLoc<=this.prev){var g=r.call(e,"catchLoc"),h=r.call(e,"finallyLoc");if(g&&h){if(this.prev<e.catchLoc)return b(e.catchLoc,!0);if(this.prev<e.finallyLoc)return b(e.finallyLoc)}else if(!g){if(!h)throw new Error("try statement without catch or finally");if(this.prev<e.finallyLoc)return b(e.finallyLoc)}else if(this.prev<e.catchLoc)return b(e.catchLoc,!0)}}},abrupt:function abrupt(a,b){for(var c,d=this.tryEntries.length-1;0<=d;--d)if(c=this.tryEntries[d],c.tryLoc<=this.prev&&r.call(c,"finallyLoc")&&this.prev<c.finallyLoc){var e=c;break}e&&("break"===a||"continue"===a)&&e.tryLoc<=b&&b<=e.finallyLoc&&(e=null);var f=e?e.completion:{};return f.type=a,f.arg=b,e?(this.method="next",this.next=e.finallyLoc,x):this.complete(f)},complete:function complete(a,b){if("throw"===a.type)throw a.arg;return"break"===a.type||"continue"===a.type?this.next=a.arg:"return"===a.type?(this.rval=this.arg=a.arg,this.method="return",this.next="end"):"normal"===a.type&&b&&(this.next=b),x},finish:function finish(a){for(var b,c=this.tryEntries.length-1;0<=c;--c)if(b=this.tryEntries[c],b.finallyLoc===a)return this.complete(b.completion,b.afterLoc),l(b),x},catch:function _catch(a){for(var b,c=this.tryEntries.length-1;0<=c;--c)if(b=this.tryEntries[c],b.tryLoc===a){var d=b.completion;if("throw"===d.type){var e=d.arg;l(b)}return e}throw new Error("illegal catch attempt")},delegateYield:function delegateYield(a,b,c){return this.delegate={iterator:n(a),resultName:b,nextLoc:c},"next"===this.method&&(this.arg=void 0),x}},p}function asyncGeneratorStep(a,b,c,d,e,f,g){try{var h=a[f](g),i=h.value}catch(a){return void c(a)}h.done?b(i):Promise.resolve(i).then(d,e)}function _asyncToGenerator(a){return function(){var b=this,c=arguments;return new Promise(function(d,e){function f(a){asyncGeneratorStep(h,d,e,f,g,"next",a)}function g(a){asyncGeneratorStep(h,d,e,f,g,"throw",a)}var h=a.apply(b,c);f(void 0)})}}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)}/**
25
2
  * @class
26
3
  * KameleoonClient - a class for creating kameleoon client instance
27
4
  * for communicating with Kameleoon JavaScript SDK Core, when new instance is created
28
- */
29
- class KameleoonClient {
30
- /**
5
+ */var KameleoonClient=/*#__PURE__*/function(){/**
31
6
  * @param {SDKCoreParameters} sdkCoreParameters - parameters for initializing sdk core
32
- */
33
- constructor({
34
- siteCode,
35
- configuration,
36
- internalConfiguration
37
- }) {
38
- _defineProperty(this, "variationConfiguration", void 0);
39
- _defineProperty(this, "campaignConfiguration", void 0);
40
- _defineProperty(this, "variationDataStorage", void 0);
41
- _defineProperty(this, "trackingCache", void 0);
42
- _defineProperty(this, "requester", void 0);
43
- _defineProperty(this, "externalEventSource", void 0);
44
- const {
45
- settings: clientSettings
46
- } = new _clientSettings.ClientSettings(siteCode, configuration);
47
- const {
48
- externalStorage,
49
- externalEventSource,
50
- externalPackageInfo,
51
- externalRequestDispatcher,
52
- externalClientConfiguration
53
- } = internalConfiguration;
54
- const requester = new _requester.Requester({
55
- siteCode,
56
- environment: clientSettings.environment,
57
- packageInfo: externalPackageInfo,
58
- requestDispatcher: externalRequestDispatcher
59
- });
60
- const trackingCache = new _cacheManager.CacheManager(_constants.CACHE_CLEANUP_TIMEOUT);
61
- const clientDataStorage = new _externalStorage.ExternalStorage(externalStorage.initialize(_storage.KameleoonStorageKey.ClientData));
62
- const variationDataStorage = new _externalStorage.ExternalStorage(externalStorage.initialize(_storage.KameleoonStorageKey.VariationData));
63
- const campaignConfiguration = new _campaignConfiguration.CampaignConfiguration({
64
- settings: clientSettings,
65
- storage: clientDataStorage,
66
- requester,
67
- externalClientConfiguration,
68
- targetingCleanupInterval: configuration?.targetingDataCleanupInterval
69
- });
70
- this.requester = requester;
71
- this.trackingCache = trackingCache;
72
- this.campaignConfiguration = campaignConfiguration;
73
- this.variationDataStorage = variationDataStorage;
74
- this.externalEventSource = externalEventSource;
75
- }
76
- async initialize(useCache) {
77
- const result = await this.campaignConfiguration.initialize(this.externalEventSource, useCache);
78
- result.throw();
79
- const variationConfiguration = new _variationConfiguration.VariationConfiguration(this.campaignConfiguration.experiments, this.variationDataStorage);
80
- this.variationConfiguration = variationConfiguration;
81
- return result.ok;
82
- }
83
- addData(visitorCode, ...data) {
84
- _utilities.Utilities.validateVisitorCode(visitorCode).throw();
85
- if (!this.campaignConfiguration) {
86
- throw new _kameleoonError.KameleoonError(_kameleoonError.KameleoonException.Initialization);
87
- }
88
- this.campaignConfiguration.addTargetingData(visitorCode, ...data).throw();
89
- }
90
- async getRemoteVisitorData(visitorCode, shouldAddData = true) {
91
- const result = await this.requester.getVisitorData(visitorCode);
92
- const data = result.throw();
93
- const visitorData = _utilities.Utilities.parseVisitorData(data);
94
- if (shouldAddData) {
95
- for (const item of visitorData) {
96
- this.addData(visitorCode, item);
97
- }
98
- }
99
- return visitorData;
100
- }
101
- triggerExperiment(visitorCode, experimentId) {
102
- _utilities.Utilities.validateVisitorCode(visitorCode).throw();
103
- if (!this.campaignConfiguration || !this.variationConfiguration) {
104
- throw new _kameleoonError.KameleoonError(_kameleoonError.KameleoonException.Initialization);
105
- }
106
- const experiment = this.campaignConfiguration.experiments.find(item => item.id === String(experimentId));
107
- if (!experiment) {
108
- throw new _kameleoonError.KameleoonError(_kameleoonError.KameleoonException.ExperimentConfigurationNotFound, experimentId, visitorCode);
109
- }
110
- const userAgent = _utilities.Utilities.getUserAgent(visitorCode, this.campaignConfiguration);
111
- const dataUrl = _utilities.Utilities.getDataUrl(visitorCode, this.campaignConfiguration);
112
- const targetingData = this.campaignConfiguration.storedTargetingData[visitorCode];
113
- const trackingParameters = {
114
- body: dataUrl,
115
- visitorCode,
116
- experimentId
117
- };
118
- let variationId = _constants.UNALLOCATED_VARIATION_ID;
119
- const targetingResult = _utilities.Utilities.checkTargeting({
120
- visitorCode,
121
- experimentId,
122
- targetingData,
123
- segment: experiment.segment,
124
- variationConfiguration: this.variationConfiguration
125
- }).throw();
126
- variationId = this.variationConfiguration.getAssociatedVariationId(visitorCode, experimentId).else(error => {
127
- if (error.type === _kameleoonError.KameleoonException.NotAllocated) {
128
- this.requester.trackExperiment(_objectSpread({
129
- isUnallocated: true,
130
- variationId,
131
- userAgent
132
- }, trackingParameters));
133
- return _constants.UNALLOCATED_VARIATION_ID;
134
- }
135
- throw error;
136
- });
137
- this.requester.trackExperiment(_objectSpread({
138
- variationId,
139
- isUnallocated: false,
140
- userAgent
141
- }, trackingParameters));
142
- if (!targetingResult) {
143
- throw new _kameleoonError.KameleoonError(_kameleoonError.KameleoonException.NotTargeted, visitorCode);
144
- }
145
- _utilities.Utilities.updateCache({
146
- cacheManager: this.trackingCache,
147
- visitorCode,
148
- experimentId,
149
- variationId
150
- });
151
- return variationId;
152
- }
153
- trackConversion({
154
- visitorCode,
155
- goalId,
156
- revenue
157
- }) {
158
- this.addData(visitorCode, new _kameleoonData.Conversion({
159
- goalId,
160
- revenue
161
- }));
162
- this.flushData(visitorCode);
163
- }
164
- flushData(visitorCode) {
165
- if (!this.campaignConfiguration) {
166
- throw new _kameleoonError.KameleoonError(_kameleoonError.KameleoonException.Initialization);
167
- }
168
- const dataUrl = _utilities.Utilities.getDataUrl(visitorCode, this.campaignConfiguration);
169
- const userAgent = _utilities.Utilities.getUserAgent(visitorCode, this.campaignConfiguration);
170
- this.requester.trackData({
171
- visitorCode,
172
- body: dataUrl,
173
- userAgent
174
- });
175
- }
176
- getExperiments() {
177
- if (!this.campaignConfiguration) {
178
- throw new _kameleoonError.KameleoonError(_kameleoonError.KameleoonException.Initialization);
179
- }
180
- return this.campaignConfiguration.experiments.map(({
181
- id,
182
- name
183
- }) => ({
184
- id: Number(id),
185
- name
186
- }));
187
- }
188
- getVisitorExperiments(visitorCode, isActive = true) {
189
- if (!this.variationConfiguration || !this.campaignConfiguration) {
190
- throw new _kameleoonError.KameleoonError(_kameleoonError.KameleoonException.Initialization);
191
- }
192
- _utilities.Utilities.validateVisitorCode(visitorCode).throw();
193
- const experiments = this.campaignConfiguration.experiments;
194
- const result = [];
195
- const targetingData = this.campaignConfiguration.storedTargetingData[visitorCode];
196
- for (const experiment of experiments) {
197
- const {
198
- id,
199
- name,
200
- segment
201
- } = experiment;
202
- const targetingResult = _utilities.Utilities.checkTargeting({
203
- targetingData,
204
- visitorCode,
205
- segment,
206
- variationConfiguration: this.variationConfiguration,
207
- experimentId: Number(id)
208
- }).throw();
209
- if (!targetingResult) {
210
- continue;
211
- }
212
-
213
- // -- If `isActive=false` then return every experiment
214
- if (!isActive) {
215
- result.push({
216
- id: Number(id),
217
- name
218
- });
219
- continue;
220
- }
221
-
222
- // -- Else first check if there are saved variations for the experiment
223
- // if there is at least one than it's active
224
- const experimentVariations = this.variationConfiguration.getAssignedVariations(visitorCode);
225
- if (experimentVariations.ok) {
226
- const experimentVariation = experimentVariations.data[experiment.id];
227
- if (experimentVariation) {
228
- result.push({
229
- id: Number(id),
230
- name
231
- });
232
- continue;
233
- }
234
- }
235
-
236
- // -- Second check if the experiment will have an allocated variation upon triggering
237
- // if yes than it's active
238
- const variationResult = this.variationConfiguration.getExperimentVariation(visitorCode, experiment);
239
- if (variationResult.ok) {
240
- result.push({
241
- id: Number(id),
242
- name
243
- });
244
- }
245
- }
246
- return result;
247
- }
248
- getExperimentVariationData(variationId) {
249
- if (!this.campaignConfiguration) {
250
- throw new _kameleoonError.KameleoonError(_kameleoonError.KameleoonException.Initialization);
251
- }
252
- const experiments = this.campaignConfiguration.experiments;
253
- for (const experiment of experiments) {
254
- const variation = experiment.variations.find(item => item.id === String(variationId));
255
- if (variation) {
256
- try {
257
- return JSON.parse(variation.customJson);
258
- } catch (err) {
259
- throw new _kameleoonError.KameleoonError(_kameleoonError.KameleoonException.JSONParse, err);
260
- }
261
- }
262
- }
263
- throw new _kameleoonError.KameleoonError(_kameleoonError.KameleoonException.VariationNotFound);
264
- }
265
- getFeatureFlags() {
266
- if (!this.campaignConfiguration) {
267
- throw new _kameleoonError.KameleoonError(_kameleoonError.KameleoonException.Initialization);
268
- }
269
- return this.campaignConfiguration.featureFlags.map(({
270
- id,
271
- featureKey
272
- }) => ({
273
- id,
274
- key: featureKey
275
- }));
276
- }
277
- getVisitorFeatureFlags(visitorCode) {
278
- if (!this.variationConfiguration || !this.campaignConfiguration) {
279
- throw new _kameleoonError.KameleoonError(_kameleoonError.KameleoonException.Initialization);
280
- }
281
- const featureFlags = this.campaignConfiguration.featureFlags;
282
- const resultFeatureFlags = [];
283
- const targetingData = this.campaignConfiguration.storedTargetingData[visitorCode];
284
- for (const featureFlag of featureFlags) {
285
- const variationData = this.variationConfiguration.getFeatureFlagVariation({
286
- visitorCode,
287
- targetingData,
288
- featureFlag
289
- }).throw();
290
- if (variationData.variationKey !== _constants.OFF_VARIATION_KEY) {
291
- const {
292
- featureFlagId,
293
- featureKey
294
- } = variationData;
295
- resultFeatureFlags.push({
296
- id: featureFlagId,
297
- key: featureKey
298
- });
299
- }
300
- }
301
- return resultFeatureFlags;
302
- }
303
- getFeatureFlagVariationKey(visitorCode, featureKey) {
304
- const {
305
- variationKey
306
- } = this._getFeatureFlagVariation(visitorCode, featureKey).throw();
307
- return variationKey;
308
- }
309
- getFeatureFlagVariable({
310
- visitorCode,
311
- featureKey,
312
- variableKey
313
- }) {
314
- const {
315
- variationKey
316
- } = this._getFeatureFlagVariation(visitorCode, featureKey).throw();
317
-
318
- // --- Note ---
319
- // `_getFeatureFlagVariation` already checks `campaignConfiguration` initialization
320
- const featureFlags = this.campaignConfiguration.featureFlags;
321
- const featureFlag = featureFlags.find(item => item.featureKey === featureKey);
322
- if (!featureFlag) {
323
- throw new _kameleoonError.KameleoonError(_kameleoonError.KameleoonException.FeatureFlagConfigurationNotFound, featureKey, visitorCode);
324
- }
325
- const variable = featureFlag.variations.find(item => item.key === variationKey)?.variables.find(item => item.key === variableKey);
326
- if (!variable) {
327
- throw new _kameleoonError.KameleoonError(_kameleoonError.KameleoonException.FeatureFlagVariableNotFound, variableKey, visitorCode);
328
- }
329
- const featureVariable = _utilities.Utilities.parseFeatureVariable(variable).throw();
330
- return featureVariable;
331
- }
332
- isFeatureFlagActive(visitorCode, featureKey) {
333
- const variationKey = this.getFeatureFlagVariationKey(visitorCode, featureKey);
334
- return variationKey !== _constants.OFF_VARIATION_KEY;
335
- }
336
- async getRemoteData(key) {
337
- const remoteData = await this.requester.getRemoteData(key);
338
- return remoteData.throw();
339
- }
340
- onConfigurationUpdate(callback) {
341
- if (!this.campaignConfiguration) {
342
- throw new _kameleoonError.KameleoonError(_kameleoonError.KameleoonException.Initialization);
343
- }
344
- this.campaignConfiguration.onConfigurationUpdate(callback);
345
- }
346
- getEngineTrackingCode(visitorCode) {
347
- return _utilities.Utilities.getTrackingCode(this.trackingCache, visitorCode);
348
- }
349
- _getFeatureFlagVariation(visitorCode, featureKey) {
350
- if (!this.variationConfiguration || !this.campaignConfiguration) {
351
- return (0, _tsRes.Err)(new _kameleoonError.KameleoonError(_kameleoonError.KameleoonException.Initialization));
352
- }
353
- const featureFlags = this.campaignConfiguration.featureFlags;
354
- const featureFlag = featureFlags.find(item => item.featureKey === featureKey);
355
- if (!featureFlag) {
356
- return (0, _tsRes.Err)(new _kameleoonError.KameleoonError(_kameleoonError.KameleoonException.FeatureFlagConfigurationNotFound, featureKey, visitorCode));
357
- }
358
- const targetingData = this.campaignConfiguration.storedTargetingData[visitorCode];
359
- const variationData = this.variationConfiguration.getFeatureFlagVariation({
360
- visitorCode,
361
- featureFlag,
362
- targetingData,
363
- withAssignment: true
364
- }).throw();
365
- const {
366
- experimentId,
367
- variationId
368
- } = variationData;
369
- if (typeof variationId === 'number' && typeof experimentId === 'number') {
370
- _utilities.Utilities.updateCache({
371
- cacheManager: this.trackingCache,
372
- visitorCode,
373
- experimentId,
374
- variationId
375
- });
376
- }
377
- const userAgent = _utilities.Utilities.getUserAgent(visitorCode, this.campaignConfiguration);
378
- _utilities.Utilities.trackRule({
379
- visitorCode,
380
- requester: this.requester,
381
- featureFlagVariation: variationData,
382
- campaignConfiguration: this.campaignConfiguration,
383
- userAgent
384
- });
385
- return (0, _tsRes.Ok)(variationData);
386
- }
387
- }
388
- exports.KameleoonClient = KameleoonClient;
7
+ */function a(b){var c=b.siteCode,d=b.configuration,e=b.internalConfiguration;_classCallCheck(this,a),_defineProperty(this,"variationConfiguration",void 0),_defineProperty(this,"campaignConfiguration",void 0),_defineProperty(this,"variationDataStorage",void 0),_defineProperty(this,"trackingCache",void 0),_defineProperty(this,"requester",void 0),_defineProperty(this,"externalEventSource",void 0),_defineProperty(this,"externalPackageInfo",void 0);var f=new _clientSettings.ClientSettings(c,d),g=f.settings,h=e.externalStorage,i=e.externalEventSource,j=e.externalPackageInfo,k=e.externalRequestDispatcher,l=e.externalClientConfiguration,m=new _requester.Requester({siteCode:c,environment:g.environment,packageInfo:j,requestDispatcher:k}),n=new _cacheManager.CacheManager(_constants.CACHE_CLEANUP_TIMEOUT),o=new _externalStorage.ExternalStorage(h.initialize(_storage.KameleoonStorageKey.ClientData)),p=new _externalStorage.ExternalStorage(h.initialize(_storage.KameleoonStorageKey.VariationData)),q=new _campaignConfiguration.CampaignConfiguration({settings:g,storage:o,requester:m,externalClientConfiguration:l,targetingCleanupInterval:null===d||void 0===d?void 0:d.targetingDataCleanupInterval});this.requester=m,this.trackingCache=n,this.campaignConfiguration=q,this.variationDataStorage=p,this.externalEventSource=i,this.externalPackageInfo=j}return _createClass(a,[{key:"initialize",value:function(){function a(){return b.apply(this,arguments)}var b=_asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function b(a){var c,d;return _regeneratorRuntime().wrap(function e(b){for(;1;)switch(b.prev=b.next){case 0:return b.next=2,this.campaignConfiguration.initialize(this.externalEventSource,a);case 2:return c=b.sent,c.throw(),d=new _variationConfiguration.VariationConfiguration(this.campaignConfiguration.experiments,this.variationDataStorage),this.variationConfiguration=d,b.abrupt("return",c.ok);case 7:case"end":return b.stop();}},b,this)}));return a}()},{key:"addData",value:function addData(a){var b;if(_utilities.Utilities.validateVisitorCode(a).throw(),!this.campaignConfiguration)throw new _kameleoonError.KameleoonError(_kameleoonError.KameleoonException.Initialization);for(var c=arguments.length,d=Array(1<c?c-1:0),e=1;e<c;e++)d[e-1]=arguments[e];(b=this.campaignConfiguration).addTargetingData.apply(b,[a].concat(d)).throw()}},{key:"getRemoteVisitorData",value:function(){function a(a){return b.apply(this,arguments)}var b=_asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function b(a){var c,d,e,f,g,h,i,j=arguments;return _regeneratorRuntime().wrap(function k(b){for(;1;)switch(b.prev=b.next){case 0:return c=!(1<j.length&&void 0!==j[1])||j[1],b.next=3,this.requester.getVisitorData(a);case 3:if(d=b.sent,e=d.throw(),f=_utilities.Utilities.parseVisitorData(e),c){g=_createForOfIteratorHelper(f);try{for(g.s();!(h=g.n()).done;)i=h.value,this.addData(a,i)}catch(a){g.e(a)}finally{g.f()}}return b.abrupt("return",f);case 8:case"end":return b.stop();}},b,this)}));return a}()},{key:"triggerExperiment",value:function triggerExperiment(a,b){var c=this;if(_utilities.Utilities.validateVisitorCode(a).throw(),!this.campaignConfiguration||!this.variationConfiguration)throw new _kameleoonError.KameleoonError(_kameleoonError.KameleoonException.Initialization);var d=this.campaignConfiguration.experiments.find(function(a){return a.id===b+""});if(!d)throw new _kameleoonError.KameleoonError(_kameleoonError.KameleoonException.ExperimentConfigurationNotFound,b,a);var e=_utilities.Utilities.getUserAgent(a,this.campaignConfiguration),f=_utilities.Utilities.getDataUrl(a,this.campaignConfiguration),g=this.campaignConfiguration.storedTargetingData[a],h={body:f,visitorCode:a,experimentId:b},i=_constants.UNALLOCATED_VARIATION_ID,j=_utilities.Utilities.checkTargeting({visitorCode:a,experimentId:b,targetingData:g,segment:d.segment,variationConfiguration:this.variationConfiguration,packageInfo:this.externalPackageInfo}).throw();if(i=this.variationConfiguration.getAssociatedVariationId(a,b).else(function(a){if(a.type===_kameleoonError.KameleoonException.NotAllocated)return c.requester.trackExperiment(_objectSpread({isUnallocated:!0,variationId:i,userAgent:e},h)),_constants.UNALLOCATED_VARIATION_ID;throw a}),this.requester.trackExperiment(_objectSpread({variationId:i,isUnallocated:!1,userAgent:e},h)),!j)throw new _kameleoonError.KameleoonError(_kameleoonError.KameleoonException.NotTargeted,a);return _utilities.Utilities.updateCache({cacheManager:this.trackingCache,visitorCode:a,experimentId:b,variationId:i}),i}},{key:"trackConversion",value:function trackConversion(a){var b=a.visitorCode,c=a.goalId,d=a.revenue;this.addData(b,new _kameleoonData.Conversion({goalId:c,revenue:d})),this.flushData(b)}},{key:"flushData",value:function flushData(a){if(!this.campaignConfiguration)throw new _kameleoonError.KameleoonError(_kameleoonError.KameleoonException.Initialization);if("string"==typeof a&&_utilities.Utilities.validateVisitorCode(a).throw(),a)return void _utilities.Utilities.trackData({visitorCode:a,campaignConfiguration:this.campaignConfiguration,requester:this.requester});for(var b in this.campaignConfiguration.unsentData)_utilities.Utilities.trackData({visitorCode:b,campaignConfiguration:this.campaignConfiguration,requester:this.requester})}},{key:"getExperiments",value:function getExperiments(){if(!this.campaignConfiguration)throw new _kameleoonError.KameleoonError(_kameleoonError.KameleoonException.Initialization);return this.campaignConfiguration.experiments.map(function(a){var b=a.id,c=a.name;return{id:+b,name:c}})}},{key:"getVisitorExperiments",value:function getVisitorExperiments(a){var b=!(1<arguments.length&&void 0!==arguments[1])||arguments[1];if(!this.variationConfiguration||!this.campaignConfiguration)throw new _kameleoonError.KameleoonError(_kameleoonError.KameleoonException.Initialization);_utilities.Utilities.validateVisitorCode(a).throw();var c,d=this.campaignConfiguration.experiments,e=[],f=this.campaignConfiguration.storedTargetingData[a],g=_createForOfIteratorHelper(d);try{for(g.s();!(c=g.n()).done;){var h=c.value,i=h.id,j=h.name,k=h.segment,l=_utilities.Utilities.checkTargeting({targetingData:f,visitorCode:a,segment:k,variationConfiguration:this.variationConfiguration,experimentId:+i,packageInfo:this.externalPackageInfo}).throw();if(l){// -- If `isActive=false` then return every experiment
8
+ if(!b){e.push({id:+i,name:j});continue}// -- Else first check if there are saved variations for the experiment
9
+ // if there is at least one than it's active
10
+ var m=this.variationConfiguration.getAssignedVariations(a);if(m.ok){var n=m.data[h.id];if(n){e.push({id:+i,name:j});continue}}// -- Second check if the experiment will have an allocated variation upon triggering
11
+ // if yes than it's active
12
+ var o=this.variationConfiguration.getExperimentVariation(a,h);o.ok&&e.push({id:+i,name:j})}}}catch(a){g.e(a)}finally{g.f()}return e}},{key:"getExperimentVariationData",value:function getExperimentVariationData(a){if(!this.campaignConfiguration)throw new _kameleoonError.KameleoonError(_kameleoonError.KameleoonException.Initialization);var b,c=this.campaignConfiguration.experiments,d=_createForOfIteratorHelper(c);try{for(d.s();!(b=d.n()).done;){var e=b.value,f=e.variations.find(function(b){return b.id===a+""});if(f)try{return JSON.parse(f.customJson)}catch(a){throw new _kameleoonError.KameleoonError(_kameleoonError.KameleoonException.JSONParse,a)}}}catch(a){d.e(a)}finally{d.f()}throw new _kameleoonError.KameleoonError(_kameleoonError.KameleoonException.VariationNotFound)}},{key:"getFeatureFlags",value:function getFeatureFlags(){if(!this.campaignConfiguration)throw new _kameleoonError.KameleoonError(_kameleoonError.KameleoonException.Initialization);return this.campaignConfiguration.featureFlags.map(function(a){var b=a.id,c=a.featureKey;return{id:b,key:c}})}},{key:"getVisitorFeatureFlags",value:function getVisitorFeatureFlags(a){if(!this.variationConfiguration||!this.campaignConfiguration)throw new _kameleoonError.KameleoonError(_kameleoonError.KameleoonException.Initialization);var b,c=this.campaignConfiguration.featureFlags,d=[],e=this.campaignConfiguration.storedTargetingData[a],f=_createForOfIteratorHelper(c);try{for(f.s();!(b=f.n()).done;){var g=b.value,h=this.variationConfiguration.getFeatureFlagVariation({visitorCode:a,targetingData:e,featureFlag:g,packageInfo:this.externalPackageInfo}).throw();if(h.variationKey!==_constants.OFF_VARIATION_KEY){var i=h.featureFlagId,j=h.featureKey;d.push({id:i,key:j})}}}catch(a){f.e(a)}finally{f.f()}return d}},{key:"getFeatureFlagVariationKey",value:function getFeatureFlagVariationKey(a,b){_utilities.Utilities.validateVisitorCode(a).throw();var c=this._getFeatureFlagVariation(a,b).throw(),d=c.variationKey;return d}},{key:"getFeatureFlagVariable",value:function getFeatureFlagVariable(a){var b,c=a.visitorCode,d=a.featureKey,e=a.variableKey;_utilities.Utilities.validateVisitorCode(c).throw();var f=this._getFeatureFlagVariation(c,d).throw(),g=f.variationKey,h=this.campaignConfiguration.featureFlags,i=h.find(function(a){return a.featureKey===d});// --- Note ---
13
+ // `_getFeatureFlagVariation` already checks `campaignConfiguration` initialization
14
+ if(!i)throw new _kameleoonError.KameleoonError(_kameleoonError.KameleoonException.FeatureFlagConfigurationNotFound,d,c);var j=null===(b=i.variations.find(function(a){return a.key===g}))||void 0===b?void 0:b.variables.find(function(a){return a.key===e});if(!j)throw new _kameleoonError.KameleoonError(_kameleoonError.KameleoonException.FeatureFlagVariableNotFound,e,c);var k=_utilities.Utilities.parseFeatureVariable(j).throw();return k}},{key:"isFeatureFlagActive",value:function isFeatureFlagActive(a,b){var c=this.getFeatureFlagVariationKey(a,b);return c!==_constants.OFF_VARIATION_KEY}},{key:"getRemoteData",value:function(){function a(a){return b.apply(this,arguments)}var b=_asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function b(a){var c;return _regeneratorRuntime().wrap(function d(b){for(;1;)switch(b.prev=b.next){case 0:return b.next=2,this.requester.getRemoteData(a);case 2:return c=b.sent,b.abrupt("return",c.throw());case 4:case"end":return b.stop();}},b,this)}));return a}()},{key:"onConfigurationUpdate",value:function onConfigurationUpdate(a){if(!this.campaignConfiguration)throw new _kameleoonError.KameleoonError(_kameleoonError.KameleoonException.Initialization);this.campaignConfiguration.onConfigurationUpdate(a)}},{key:"getEngineTrackingCode",value:function getEngineTrackingCode(a){return _utilities.Utilities.validateVisitorCode(a).throw(),_utilities.Utilities.getTrackingCode(this.trackingCache,a)}},{key:"_getFeatureFlagVariation",value:function _getFeatureFlagVariation(a,b){if(!this.variationConfiguration||!this.campaignConfiguration)return(0,_tsRes.Err)(new _kameleoonError.KameleoonError(_kameleoonError.KameleoonException.Initialization));var c=this.campaignConfiguration.featureFlags,d=c.find(function(a){return a.featureKey===b});if(!d)return(0,_tsRes.Err)(new _kameleoonError.KameleoonError(_kameleoonError.KameleoonException.FeatureFlagConfigurationNotFound,b,a));var e=this.campaignConfiguration.storedTargetingData[a],f=this.variationConfiguration.getFeatureFlagVariation({visitorCode:a,featureFlag:d,targetingData:e,withAssignment:!0,packageInfo:this.externalPackageInfo}).throw(),g=f.experimentId,h=f.variationId;"number"==typeof h&&"number"==typeof g&&_utilities.Utilities.updateCache({cacheManager:this.trackingCache,visitorCode:a,experimentId:g,variationId:h});var i=_utilities.Utilities.getUserAgent(a,this.campaignConfiguration);return _utilities.Utilities.trackRule({visitorCode:a,requester:this.requester,featureFlagVariation:f,campaignConfiguration:this.campaignConfiguration,userAgent:i}),(0,_tsRes.Ok)(f)}}]),a}();exports.KameleoonClient=KameleoonClient;
389
15
  //# sourceMappingURL=kameleoonClient.js.map