@kameleoon/react-sdk 2.1.0 → 4.0.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 (90) hide show
  1. package/README.md +252 -51
  2. package/dist/Feature.js +2 -2
  3. package/dist/Feature.js.map +1 -1
  4. package/dist/KameleoonError.d.ts +5 -0
  5. package/dist/KameleoonError.js +31 -0
  6. package/dist/KameleoonError.js.map +1 -0
  7. package/dist/compose.d.ts +1 -1
  8. package/dist/compose.js +27 -2
  9. package/dist/compose.js.map +1 -1
  10. package/dist/constants.d.ts +10 -0
  11. package/dist/constants.js +12 -1
  12. package/dist/constants.js.map +1 -1
  13. package/dist/getKameleoonException.d.ts +2 -0
  14. package/dist/getKameleoonException.js +34 -0
  15. package/dist/getKameleoonException.js.map +1 -0
  16. package/dist/index.d.ts +6 -4
  17. package/dist/index.js +12 -6
  18. package/dist/index.js.map +1 -1
  19. package/dist/stories/Form.d.ts +15 -8
  20. package/dist/stories/Form.js +82 -21
  21. package/dist/stories/Form.js.map +1 -1
  22. package/dist/stories/FormHOC.js +1 -1
  23. package/dist/stories/FormHOC.js.map +1 -1
  24. package/dist/stories/FormHook.js +14 -8
  25. package/dist/stories/FormHook.js.map +1 -1
  26. package/dist/stories/constants.d.ts +1 -0
  27. package/dist/stories/constants.js +2 -1
  28. package/dist/stories/constants.js.map +1 -1
  29. package/dist/types.d.ts +14 -6
  30. package/dist/types.js.map +1 -1
  31. package/dist/useActivateFeature.d.ts +3 -1
  32. package/dist/useActivateFeature.js +15 -3
  33. package/dist/useActivateFeature.js.map +1 -1
  34. package/dist/useAddData.js +17 -1
  35. package/dist/useAddData.js.map +1 -1
  36. package/dist/useDevice.d.ts +12 -0
  37. package/dist/useDevice.js +16 -0
  38. package/dist/useDevice.js.map +1 -0
  39. package/dist/useError.d.ts +7 -0
  40. package/dist/useError.js +34 -0
  41. package/dist/useError.js.map +1 -0
  42. package/dist/useErrors.d.ts +7 -0
  43. package/dist/useErrors.js +42 -0
  44. package/dist/useErrors.js.map +1 -0
  45. package/dist/useFeature.js +30 -9
  46. package/dist/useFeature.js.map +1 -1
  47. package/dist/useFeatureVariable.d.ts +2 -0
  48. package/dist/useFeatureVariable.js +11 -6
  49. package/dist/useFeatureVariable.js.map +1 -1
  50. package/dist/useRetrieveDataFromRemoteSource.d.ts +2 -2
  51. package/dist/useRetrieveDataFromRemoteSource.js +8 -5
  52. package/dist/useRetrieveDataFromRemoteSource.js.map +1 -1
  53. package/dist/useRunWhenReady.d.ts +14 -0
  54. package/dist/useRunWhenReady.js +23 -0
  55. package/dist/useRunWhenReady.js.map +1 -0
  56. package/dist/useTriggerExperiment.d.ts +2 -0
  57. package/dist/useTriggerExperiment.js +12 -2
  58. package/dist/useTriggerExperiment.js.map +1 -1
  59. package/dist/useVariationAssociatedData.d.ts +4 -2
  60. package/dist/useVariationAssociatedData.js +11 -2
  61. package/dist/useVariationAssociatedData.js.map +1 -1
  62. package/dist/withActivateFeature.d.ts +3 -1
  63. package/dist/withActivateFeature.js +3 -11
  64. package/dist/withActivateFeature.js.map +1 -1
  65. package/dist/withAddData.js +17 -1
  66. package/dist/withAddData.js.map +1 -1
  67. package/dist/withDevice.d.ts +15 -0
  68. package/dist/{withInterest.js → withDevice.js} +7 -9
  69. package/dist/withDevice.js.map +1 -0
  70. package/dist/withFeature.js +2 -2
  71. package/dist/withFeature.js.map +1 -1
  72. package/dist/withFeatureVariable.d.ts +2 -0
  73. package/dist/withFeatureVariable.js +2 -2
  74. package/dist/withFeatureVariable.js.map +1 -1
  75. package/dist/withRunWhenReady.d.ts +16 -0
  76. package/dist/withRunWhenReady.js +28 -0
  77. package/dist/withRunWhenReady.js.map +1 -0
  78. package/dist/withTriggerExperiment.d.ts +2 -0
  79. package/dist/withTriggerExperiment.js +3 -11
  80. package/dist/withTriggerExperiment.js.map +1 -1
  81. package/dist/withVariationAssociatedData.d.ts +4 -2
  82. package/dist/withVariationAssociatedData.js +3 -11
  83. package/dist/withVariationAssociatedData.js.map +1 -1
  84. package/package.json +2 -2
  85. package/CHANGELOG.md +0 -69
  86. package/dist/useInterest.d.ts +0 -12
  87. package/dist/useInterest.js +0 -16
  88. package/dist/useInterest.js.map +0 -1
  89. package/dist/withInterest.d.ts +0 -15
  90. package/dist/withInterest.js.map +0 -1
@@ -1,9 +1,11 @@
1
+ import { KameleoonError } from './KameleoonError';
1
2
  interface ActivateFeatureHookResult {
2
3
  /**
3
4
  * @param visitorCode - unique identifier of the user
4
5
  * @param featureKey - unique identifier or key of the feature you want to expose to a user
5
6
  */
6
- hasFeature: (visitorCode: string, featureKey: string | number) => boolean;
7
+ hasFeature: (featureKey: string | number, visitorCode?: string) => boolean;
8
+ error: KameleoonError | null;
7
9
  }
8
10
  /**
9
11
  * A React Hook that returns callback function which activates a feature toggle
@@ -4,19 +4,31 @@ exports.useActivateFeature = void 0;
4
4
  var react_1 = require("react");
5
5
  var useKameleoon_1 = require("./useKameleoon");
6
6
  var ProviderError_1 = require("./ProviderError");
7
+ var useError_1 = require("./useError");
8
+ var useVisitorCode_1 = require("./useVisitorCode");
7
9
  /**
8
10
  * A React Hook that returns callback function which activates a feature toggle
9
11
  */
10
12
  function useActivateFeature() {
11
13
  var client = (0, useKameleoon_1.useKameleoon)().client;
12
- var hasFeature = (0, react_1.useCallback)(function (visitorCode, featureKey) {
13
- return client.activateFeature(visitorCode, featureKey);
14
- }, [client]);
14
+ var _a = (0, useError_1.useError)(), error = _a.error, setError = _a.setError;
15
+ var getVisitorCode = (0, useVisitorCode_1.useVisitorCode)().getVisitorCode;
16
+ var hasFeature = (0, react_1.useCallback)(function (featureKey, visitorCode) {
17
+ try {
18
+ var userCode = visitorCode !== null && visitorCode !== void 0 ? visitorCode : getVisitorCode('');
19
+ return client.activateFeature(userCode, featureKey);
20
+ }
21
+ catch (unknownError) {
22
+ setError(unknownError);
23
+ return false;
24
+ }
25
+ }, [client, getVisitorCode, setError]);
15
26
  if (!client) {
16
27
  throw new ProviderError_1.ProviderError('useActivateFeature');
17
28
  }
18
29
  return {
19
30
  hasFeature: hasFeature,
31
+ error: error,
20
32
  };
21
33
  }
22
34
  exports.useActivateFeature = useActivateFeature;
@@ -1 +1 @@
1
- {"version":3,"file":"useActivateFeature.js","sourceRoot":"","sources":["../src/useActivateFeature.ts"],"names":[],"mappings":";;;AAAA,+BAAoC;AACpC,+CAA8C;AAC9C,iDAAgD;AAUhD;;GAEG;AACH,SAAgB,kBAAkB;IACxB,IAAA,MAAM,GAAK,IAAA,2BAAY,GAAE,OAAnB,CAAoB;IAElC,IAAM,UAAU,GAAG,IAAA,mBAAW,EAC5B,UAAC,WAAmB,EAAE,UAA2B;QAC/C,OAAA,MAAM,CAAC,eAAe,CAAC,WAAW,EAAE,UAAU,CAAC;IAA/C,CAA+C,EACjD,CAAC,MAAM,CAAC,CACT,CAAC;IAEF,IAAI,CAAC,MAAM,EAAE;QACX,MAAM,IAAI,6BAAa,CAAC,oBAAoB,CAAC,CAAC;KAC/C;IAED,OAAO;QACL,UAAU,YAAA;KACX,CAAC;AACJ,CAAC;AAhBD,gDAgBC"}
1
+ {"version":3,"file":"useActivateFeature.js","sourceRoot":"","sources":["../src/useActivateFeature.ts"],"names":[],"mappings":";;;AAAA,+BAAoC;AACpC,+CAA8C;AAC9C,iDAAgD;AAEhD,uCAAsC;AACtC,mDAAkD;AAWlD;;GAEG;AACH,SAAgB,kBAAkB;IACxB,IAAA,MAAM,GAAK,IAAA,2BAAY,GAAE,OAAnB,CAAoB;IAC5B,IAAA,KAAsB,IAAA,mBAAQ,GAAE,EAA9B,KAAK,WAAA,EAAE,QAAQ,cAAe,CAAC;IAC/B,IAAA,cAAc,GAAK,IAAA,+BAAc,GAAE,eAArB,CAAsB;IAE5C,IAAM,UAAU,GAAG,IAAA,mBAAW,EAC5B,UAAC,UAA2B,EAAE,WAAoB;QAChD,IAAI;YACF,IAAM,QAAQ,GAAG,WAAW,aAAX,WAAW,cAAX,WAAW,GAAI,cAAc,CAAC,EAAE,CAAC,CAAC;YAEnD,OAAO,MAAM,CAAC,eAAe,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC;SACrD;QAAC,OAAO,YAAY,EAAE;YACrB,QAAQ,CAAC,YAAY,CAAC,CAAC;YAEvB,OAAO,KAAK,CAAC;SACd;IACH,CAAC,EACD,CAAC,MAAM,EAAE,cAAc,EAAE,QAAQ,CAAC,CACnC,CAAC;IAEF,IAAI,CAAC,MAAM,EAAE;QACX,MAAM,IAAI,6BAAa,CAAC,oBAAoB,CAAC,CAAC;KAC/C;IAED,OAAO;QACL,UAAU,YAAA;QACV,KAAK,OAAA;KACN,CAAC;AACJ,CAAC;AA5BD,gDA4BC"}
@@ -1,4 +1,20 @@
1
1
  "use strict";
2
+ var __read = (this && this.__read) || function (o, n) {
3
+ var m = typeof Symbol === "function" && o[Symbol.iterator];
4
+ if (!m) return o;
5
+ var i = m.call(o), r, ar = [], e;
6
+ try {
7
+ while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);
8
+ }
9
+ catch (error) { e = { error: error }; }
10
+ finally {
11
+ try {
12
+ if (r && !r.done && (m = i["return"])) m.call(i);
13
+ }
14
+ finally { if (e) throw e.error; }
15
+ }
16
+ return ar;
17
+ };
2
18
  var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
3
19
  if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
4
20
  if (ar || !(i in from)) {
@@ -23,7 +39,7 @@ function useAddData() {
23
39
  for (var _i = 1; _i < arguments.length; _i++) {
24
40
  dataTypes[_i - 1] = arguments[_i];
25
41
  }
26
- client.addData.apply(client, __spreadArray([visitorCode], dataTypes, false));
42
+ client.addData.apply(client, __spreadArray([visitorCode], __read(dataTypes), false));
27
43
  }, [client]);
28
44
  return {
29
45
  addData: addData,
@@ -1 +1 @@
1
- {"version":3,"file":"useAddData.js","sourceRoot":"","sources":["../src/useAddData.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,+BAAoC;AAEpC,+CAA8C;AAU9C;;;GAGG;AACH,SAAgB,UAAU;IAChB,IAAA,MAAM,GAAK,IAAA,2BAAY,GAAE,OAAnB,CAAoB;IAElC,IAAM,OAAO,GAAG,IAAA,mBAAW,EACzB,UAAC,WAAmB;QAAE,mBAAqB;aAArB,UAAqB,EAArB,qBAAqB,EAArB,IAAqB;YAArB,kCAAqB;;QACzC,MAAM,CAAC,OAAO,OAAd,MAAM,iBAAS,WAAW,GAAK,SAAS,UAAE;IAC5C,CAAC,EACD,CAAC,MAAM,CAAC,CACT,CAAC;IAEF,OAAO;QACL,OAAO,SAAA;KACR,CAAC;AACJ,CAAC;AAbD,gCAaC"}
1
+ {"version":3,"file":"useAddData.js","sourceRoot":"","sources":["../src/useAddData.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,+BAAoC;AAEpC,+CAA8C;AAU9C;;;GAGG;AACH,SAAgB,UAAU;IAChB,IAAA,MAAM,GAAK,IAAA,2BAAY,GAAE,OAAnB,CAAoB;IAElC,IAAM,OAAO,GAAG,IAAA,mBAAW,EACzB,UAAC,WAAmB;QAAE,mBAAqB;aAArB,UAAqB,EAArB,qBAAqB,EAArB,IAAqB;YAArB,kCAAqB;;QACzC,MAAM,CAAC,OAAO,OAAd,MAAM,iBAAS,WAAW,UAAK,SAAS,WAAE;IAC5C,CAAC,EACD,CAAC,MAAM,CAAC,CACT,CAAC;IAEF,OAAO;QACL,OAAO,SAAA;KACR,CAAC;AACJ,CAAC;AAbD,gCAaC"}
@@ -0,0 +1,12 @@
1
+ import { Device as IDevice, DeviceType } from 'kameleoon-client-javascript/dist/data';
2
+ interface DeviceHookResult {
3
+ /**
4
+ * @param device - device type: Phone, Tablet, Desktop
5
+ */
6
+ addDevice: (device: DeviceType) => IDevice;
7
+ }
8
+ /**
9
+ * A React Hook that returns a callback function which adds interest
10
+ */
11
+ export declare function useDevice(): DeviceHookResult;
12
+ export {};
@@ -0,0 +1,16 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.useDevice = void 0;
4
+ var react_1 = require("react");
5
+ var kameleoon_client_javascript_1 = require("kameleoon-client-javascript");
6
+ /**
7
+ * A React Hook that returns a callback function which adds interest
8
+ */
9
+ function useDevice() {
10
+ var addDevice = (0, react_1.useCallback)(function (device) { return new kameleoon_client_javascript_1.KameleoonData.Device(device); }, []);
11
+ return {
12
+ addDevice: addDevice,
13
+ };
14
+ }
15
+ exports.useDevice = useDevice;
16
+ //# sourceMappingURL=useDevice.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useDevice.js","sourceRoot":"","sources":["../src/useDevice.ts"],"names":[],"mappings":";;;AAAA,+BAAoC;AACpC,2EAA4D;AAa5D;;GAEG;AACH,SAAgB,SAAS;IACvB,IAAM,SAAS,GAAG,IAAA,mBAAW,EAC3B,UAAC,MAAkB,IAAc,OAAA,IAAI,2CAAa,CAAC,MAAM,CAAC,MAAM,CAAC,EAAhC,CAAgC,EACjE,EAAE,CACH,CAAC;IAEF,OAAO;QACL,SAAS,WAAA;KACV,CAAC;AACJ,CAAC;AATD,8BASC"}
@@ -0,0 +1,7 @@
1
+ import { KameleoonError } from './KameleoonError';
2
+ declare type UseErrorHookResultType = {
3
+ error: KameleoonError | null;
4
+ setError: (unknownError: unknown) => void;
5
+ };
6
+ export declare function useError(): UseErrorHookResultType;
7
+ export {};
@@ -0,0 +1,34 @@
1
+ "use strict";
2
+ var __read = (this && this.__read) || function (o, n) {
3
+ var m = typeof Symbol === "function" && o[Symbol.iterator];
4
+ if (!m) return o;
5
+ var i = m.call(o), r, ar = [], e;
6
+ try {
7
+ while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);
8
+ }
9
+ catch (error) { e = { error: error }; }
10
+ finally {
11
+ try {
12
+ if (r && !r.done && (m = i["return"])) m.call(i);
13
+ }
14
+ finally { if (e) throw e.error; }
15
+ }
16
+ return ar;
17
+ };
18
+ Object.defineProperty(exports, "__esModule", { value: true });
19
+ exports.useError = void 0;
20
+ var react_1 = require("react");
21
+ var getKameleoonException_1 = require("./getKameleoonException");
22
+ function useError() {
23
+ var _a = __read((0, react_1.useState)(null), 2), error = _a[0], setError = _a[1];
24
+ var setErrorHandler = (0, react_1.useCallback)(function (unknownError) {
25
+ var exception = (0, getKameleoonException_1.getKameleoonException)(unknownError);
26
+ setError(exception);
27
+ }, []);
28
+ return {
29
+ error: error,
30
+ setError: setErrorHandler,
31
+ };
32
+ }
33
+ exports.useError = useError;
34
+ //# sourceMappingURL=useError.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useError.js","sourceRoot":"","sources":["../src/useError.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;AAAA,+BAA8C;AAC9C,iEAAgE;AAQhE,SAAgB,QAAQ;IAChB,IAAA,KAAA,OAAoB,IAAA,gBAAQ,EAAwB,IAAI,CAAC,IAAA,EAAxD,KAAK,QAAA,EAAE,QAAQ,QAAyC,CAAC;IAEhE,IAAM,eAAe,GAAG,IAAA,mBAAW,EAAC,UAAC,YAAqB;QACxD,IAAM,SAAS,GAAG,IAAA,6CAAqB,EAAC,YAAqB,CAAC,CAAC;QAC/D,QAAQ,CAAC,SAAS,CAAC,CAAC;IACtB,CAAC,EAAE,EAAE,CAAC,CAAC;IAEP,OAAO;QACL,KAAK,OAAA;QACL,QAAQ,EAAE,eAAe;KAC1B,CAAC;AACJ,CAAC;AAZD,4BAYC"}
@@ -0,0 +1,7 @@
1
+ import { KameleoonException } from './constants';
2
+ declare type UseErrorsHookResultType = {
3
+ errors: KameleoonException[];
4
+ setErrors: (newErrors: Array<KameleoonException | undefined>) => void;
5
+ };
6
+ export declare function useErrors(): UseErrorsHookResultType;
7
+ export {};
@@ -0,0 +1,42 @@
1
+ "use strict";
2
+ var __read = (this && this.__read) || function (o, n) {
3
+ var m = typeof Symbol === "function" && o[Symbol.iterator];
4
+ if (!m) return o;
5
+ var i = m.call(o), r, ar = [], e;
6
+ try {
7
+ while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);
8
+ }
9
+ catch (error) { e = { error: error }; }
10
+ finally {
11
+ try {
12
+ if (r && !r.done && (m = i["return"])) m.call(i);
13
+ }
14
+ finally { if (e) throw e.error; }
15
+ }
16
+ return ar;
17
+ };
18
+ var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
19
+ if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
20
+ if (ar || !(i in from)) {
21
+ if (!ar) ar = Array.prototype.slice.call(from, 0, i);
22
+ ar[i] = from[i];
23
+ }
24
+ }
25
+ return to.concat(ar || Array.prototype.slice.call(from));
26
+ };
27
+ Object.defineProperty(exports, "__esModule", { value: true });
28
+ exports.useErrors = void 0;
29
+ var react_1 = require("react");
30
+ function useErrors() {
31
+ var _a = __read((0, react_1.useState)([]), 2), errors = _a[0], setErrors = _a[1];
32
+ var setErrorHandler = (0, react_1.useCallback)(function (newErrors) {
33
+ var uniqueErrors = __spreadArray([], __read(new Set(newErrors)), false).filter(function (value) { return Boolean(value); });
34
+ setErrors(uniqueErrors);
35
+ }, []);
36
+ return {
37
+ errors: errors,
38
+ setErrors: setErrorHandler,
39
+ };
40
+ }
41
+ exports.useErrors = useErrors;
42
+ //# sourceMappingURL=useErrors.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useErrors.js","sourceRoot":"","sources":["../src/useErrors.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,+BAA8C;AAQ9C,SAAgB,SAAS;IACjB,IAAA,KAAA,OAAsB,IAAA,gBAAQ,EAAuB,EAAE,CAAC,IAAA,EAAvD,MAAM,QAAA,EAAE,SAAS,QAAsC,CAAC;IAE/D,IAAM,eAAe,GAAG,IAAA,mBAAW,EACjC,UAAC,SAAgD;QAC/C,IAAM,YAAY,GAAG,yBAAI,IAAI,GAAG,CAAC,SAAS,CAAC,UAAE,MAAM,CACjD,UAAC,KAAK,IAAkC,OAAA,OAAO,CAAC,KAAK,CAAC,EAAd,CAAc,CACvD,CAAC;QAEF,SAAS,CAAC,YAAY,CAAC,CAAC;IAC1B,CAAC,EACD,EAAE,CACH,CAAC;IAEF,OAAO;QACL,MAAM,QAAA;QACN,SAAS,EAAE,eAAe;KAC3B,CAAC;AACJ,CAAC;AAlBD,8BAkBC"}
@@ -10,6 +10,22 @@ var __assign = (this && this.__assign) || function () {
10
10
  };
11
11
  return __assign.apply(this, arguments);
12
12
  };
13
+ var __read = (this && this.__read) || function (o, n) {
14
+ var m = typeof Symbol === "function" && o[Symbol.iterator];
15
+ if (!m) return o;
16
+ var i = m.call(o), r, ar = [], e;
17
+ try {
18
+ while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);
19
+ }
20
+ catch (error) { e = { error: error }; }
21
+ finally {
22
+ try {
23
+ if (r && !r.done && (m = i["return"])) m.call(i);
24
+ }
25
+ finally { if (e) throw e.error; }
26
+ }
27
+ return ar;
28
+ };
13
29
  Object.defineProperty(exports, "__esModule", { value: true });
14
30
  exports.useFeature = void 0;
15
31
  var react_1 = require("react");
@@ -18,20 +34,22 @@ var useFeatureVariable_1 = require("./useFeatureVariable");
18
34
  var constants_1 = require("./constants");
19
35
  var useVisitorCode_1 = require("./useVisitorCode");
20
36
  var useKameleoon_1 = require("./useKameleoon");
37
+ var useErrors_1 = require("./useErrors");
21
38
  /**
22
39
  * A React Hook that returns the status of a feature flag and specified variables
23
40
  */
24
41
  function useFeature(_a) {
25
42
  var _b;
26
43
  var featureKey = _a.featureKey, variableKeys = _a.variableKeys, visitorCode = _a.visitorCode;
27
- var hasFeature = (0, useActivateFeature_1.useActivateFeature)().hasFeature;
28
- var getFeatureVariable = (0, useFeatureVariable_1.useFeatureVariable)().getFeatureVariable;
44
+ var _c = (0, useActivateFeature_1.useActivateFeature)(), hasFeature = _c.hasFeature, activateFeatureError = _c.error;
45
+ var _d = (0, useFeatureVariable_1.useFeatureVariable)(), getFeatureVariable = _d.getFeatureVariable, featureVariableError = _d.error;
29
46
  var getVisitorCode = (0, useVisitorCode_1.useVisitorCode)().getVisitorCode;
30
47
  var client = (0, useKameleoon_1.useKameleoon)().client;
31
- var _c = (0, react_1.useState)((_b = {},
48
+ var _e = __read((0, react_1.useState)((_b = {},
32
49
  _b[constants_1.FeatureResultField.IsActive] = false,
33
50
  _b[constants_1.FeatureResultField.Variables] = [],
34
- _b)), feature = _c[0], setFeature = _c[1];
51
+ _b)), 2), feature = _e[0], setFeature = _e[1];
52
+ var _f = (0, useErrors_1.useErrors)(), errors = _f.errors, setErrors = _f.setErrors;
35
53
  var userCode = visitorCode !== null && visitorCode !== void 0 ? visitorCode : getVisitorCode('');
36
54
  function getVariableObject(key, value) {
37
55
  var _a;
@@ -58,17 +76,17 @@ function useFeature(_a) {
58
76
  (0, react_1.useEffect)(function () {
59
77
  var _a;
60
78
  var _b, _c, _d;
61
- var featureFlag = ((_b = client.configurations) === null || _b === void 0 ? void 0 : _b.configuration.featureFlags.filter(function (item) {
79
+ var _e = __read((_b = client.configurations) === null || _b === void 0 ? void 0 : _b.configuration.featureFlags.filter(function (item) {
62
80
  return item.identificationKey === featureKey;
63
- }))[0];
81
+ }), 1), featureFlag = _e[0];
64
82
  var currentEnvironment = (_d = (_c = featureFlag === null || featureFlag === void 0 ? void 0 : featureFlag.environment) === null || _c === void 0 ? void 0 : _c.key) !== null && _d !== void 0 ? _d : constants_1.PRODUCTION;
65
83
  try {
66
84
  setFeature((_a = {},
67
- _a[constants_1.FeatureResultField.IsActive] = hasFeature(userCode, featureKey),
85
+ _a[constants_1.FeatureResultField.IsActive] = hasFeature(featureKey, userCode),
68
86
  _a[constants_1.FeatureResultField.Variables] = getVariablesArray(currentEnvironment),
69
87
  _a));
70
88
  }
71
- catch (_e) {
89
+ catch (_f) {
72
90
  setFeature(function (prevFeature) {
73
91
  var _a;
74
92
  return (__assign(__assign({}, prevFeature), (_a = {}, _a[constants_1.FeatureResultField.IsActive] = false, _a)));
@@ -77,7 +95,10 @@ function useFeature(_a) {
77
95
  // getVariablesArray put in dependencies creates an infinite loop
78
96
  // eslint-disable-next-line react-hooks/exhaustive-deps
79
97
  }, [userCode, featureKey, hasFeature]);
80
- return feature;
98
+ (0, react_1.useEffect)(function () {
99
+ setErrors([activateFeatureError === null || activateFeatureError === void 0 ? void 0 : activateFeatureError.type, featureVariableError === null || featureVariableError === void 0 ? void 0 : featureVariableError.type]);
100
+ }, [activateFeatureError, featureVariableError, setErrors]);
101
+ return { feature: feature, errors: errors };
81
102
  }
82
103
  exports.useFeature = useFeature;
83
104
  //# sourceMappingURL=useFeature.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"useFeature.js","sourceRoot":"","sources":["../src/useFeature.ts"],"names":[],"mappings":";;;;;;;;;;;;;;AAAA,+BAAyD;AACzD,2DAA0D;AAC1D,2DAA0D;AAE1D,yCAA6D;AAC7D,mDAAkD;AAClD,+CAA8C;AAE9C;;GAEG;AACH,SAAgB,UAAU,CAAC,EAIV;;QAHf,UAAU,gBAAA,EACV,YAAY,kBAAA,EACZ,WAAW,iBAAA;IAEH,IAAA,UAAU,GAAK,IAAA,uCAAkB,GAAE,WAAzB,CAA0B;IACpC,IAAA,kBAAkB,GAAK,IAAA,uCAAkB,GAAE,mBAAzB,CAA0B;IAC5C,IAAA,cAAc,GAAK,IAAA,+BAAc,GAAE,eAArB,CAAsB;IACpC,IAAA,MAAM,GAAK,IAAA,2BAAY,GAAE,OAAnB,CAAoB;IAC5B,IAAA,KAAwB,IAAA,gBAAQ;QACpC,GAAC,8BAAkB,CAAC,QAAQ,IAAG,KAAK;QACpC,GAAC,8BAAkB,CAAC,SAAS,IAAG,EAAE;YAClC,EAHK,OAAO,QAAA,EAAE,UAAU,QAGxB,CAAC;IAEH,IAAM,QAAQ,GAAG,WAAW,aAAX,WAAW,cAAX,WAAW,GAAI,cAAc,CAAC,EAAE,CAAC,CAAC;IAEnD,SAAS,iBAAiB,CACxB,GAAW,EACX,KAA8B;;QAE9B,IAAI,KAAK,EAAE;YACT;gBACE,GAAC,GAAG,IAAG,KAAK;mBACZ;SACH;QAED,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,IAAM,iBAAiB,GAAG,IAAA,mBAAW,EACnC,UAAC,WAAmB;QAClB,IAAM,cAAc,GAAG,EAAE,CAAC;QAC1B,IAAM,uBAAuB,GAAG,YAAY,CAAC,WAAW,CAAC,CAAC;QAE1D,IAAI,KAAK,CAAC,OAAO,CAAC,uBAAuB,CAAC,EAAE;YAC1C,uBAAuB,CAAC,OAAO,CAAC,UAAC,GAAG;gBAClC,cAAc,CAAC,IAAI,CACjB,iBAAiB,CAAC,GAAG,EAAE,kBAAkB,CAAC,UAAU,EAAE,GAAG,CAAC,CAAC,CAC5D,CAAC;YACJ,CAAC,CAAC,CAAC;SACJ;aAAM;YACL,cAAc,CAAC,IAAI,CACjB,iBAAiB,CACf,uBAAuB,EACvB,kBAAkB,CAAC,UAAU,EAAE,uBAAuB,CAAC,CACxD,CACF,CAAC;SACH;QAED,OAAO,cAAc,CAAC;IACxB,CAAC,EACD,CAAC,YAAY,EAAE,kBAAkB,EAAE,UAAU,CAAC,CAC/C,CAAC;IAEF,IAAA,iBAAS,EAAC;;;QACD,IAAA,WAAW,GAChB,CAAA,MAAA,MAAM,CAAC,cAAc,0CAAE,aAAa,CAAC,YAAY,CAAC,MAAM,CACtD,UAAC,IAA6B;YAC5B,OAAA,IAAI,CAAC,iBAAiB,KAAK,UAAU;QAArC,CAAqC,CACxC,CAAA,GAJe,CAId;QAEJ,IAAM,kBAAkB,GAAG,MAAA,MAAA,WAAW,aAAX,WAAW,uBAAX,WAAW,CAAE,WAAW,0CAAE,GAAG,mCAAI,sBAAU,CAAC;QAEvE,IAAI;YACF,UAAU;gBACR,GAAC,8BAAkB,CAAC,QAAQ,IAAG,UAAU,CAAC,QAAQ,EAAE,UAAU,CAAC;gBAC/D,GAAC,8BAAkB,CAAC,SAAS,IAAG,iBAAiB,CAAC,kBAAkB,CAAC;oBACrE,CAAC;SACJ;QAAC,WAAM;YACN,UAAU,CAAC,UAAC,WAAW;;gBAAK,OAAA,uBACvB,WAAW,gBACb,8BAAkB,CAAC,QAAQ,IAAG,KAAK,OACpC;YAH0B,CAG1B,CAAC,CAAC;SACL;QACD,iEAAiE;QACjE,uDAAuD;IACzD,CAAC,EAAE,CAAC,QAAQ,EAAE,UAAU,EAAE,UAAU,CAAC,CAAC,CAAC;IAEvC,OAAO,OAAO,CAAC;AACjB,CAAC;AA/ED,gCA+EC"}
1
+ {"version":3,"file":"useFeature.js","sourceRoot":"","sources":["../src/useFeature.ts"],"names":[],"mappings":"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"}
@@ -1,10 +1,12 @@
1
1
  import { FeatureFlagVariableType } from './types';
2
+ import { KameleoonError } from './KameleoonError';
2
3
  interface FeatureVariableHookResult {
3
4
  /**
4
5
  * @param featureKey - unique identifier or key of the feature you want to obtain to a user
5
6
  * @param variableKey - key of the variable
6
7
  */
7
8
  getFeatureVariable: (featureKey: string | number, variableKey: string) => FeatureFlagVariableType;
9
+ error: KameleoonError | null;
8
10
  }
9
11
  /**
10
12
  * A React Hook that returns callback function which retrieves a feature variable
@@ -7,11 +7,13 @@ exports.useFeatureVariable = void 0;
7
7
  var react_1 = require("react");
8
8
  var isJSON_1 = __importDefault(require("validator/lib/isJSON"));
9
9
  var useKameleoon_1 = require("./useKameleoon");
10
+ var useError_1 = require("./useError");
10
11
  /**
11
12
  * A React Hook that returns callback function which retrieves a feature variable
12
13
  */
13
14
  function useFeatureVariable() {
14
15
  var client = (0, useKameleoon_1.useKameleoon)().client;
16
+ var _a = (0, useError_1.useError)(), error = _a.error, setError = _a.setError;
15
17
  var getProcessedVariable = (0, react_1.useCallback)(function (value) {
16
18
  if (typeof value === 'undefined') {
17
19
  return undefined;
@@ -19,17 +21,20 @@ function useFeatureVariable() {
19
21
  if (typeof value === 'string' && (0, isJSON_1.default)(value)) {
20
22
  return JSON.parse(value);
21
23
  }
22
- // JS SDK returns string instead of actual boolean therefore temporal fix
23
- if (typeof value === 'string' && (value === 'True' || value === 'False')) {
24
- return JSON.parse(value.toLowerCase());
25
- }
26
24
  return value;
27
25
  }, []);
28
26
  var getFeatureVariable = (0, react_1.useCallback)(function (featureKey, variableKey) {
29
- return getProcessedVariable(client.obtainFeatureVariable(featureKey, variableKey));
30
- }, [client, getProcessedVariable]);
27
+ try {
28
+ return getProcessedVariable(client.obtainFeatureVariable(featureKey, variableKey));
29
+ }
30
+ catch (unknownError) {
31
+ setError(unknownError);
32
+ return undefined;
33
+ }
34
+ }, [client, getProcessedVariable, setError]);
31
35
  return {
32
36
  getFeatureVariable: getFeatureVariable,
37
+ error: error,
33
38
  };
34
39
  }
35
40
  exports.useFeatureVariable = useFeatureVariable;
@@ -1 +1 @@
1
- {"version":3,"file":"useFeatureVariable.js","sourceRoot":"","sources":["../src/useFeatureVariable.ts"],"names":[],"mappings":";;;;;;AAAA,+BAAoC;AACpC,gEAA0C;AAC1C,+CAA8C;AAc9C;;GAEG;AACH,SAAgB,kBAAkB;IACxB,IAAA,MAAM,GAAK,IAAA,2BAAY,GAAE,OAAnB,CAAoB;IAElC,IAAM,oBAAoB,GAAG,IAAA,mBAAW,EAAC,UAAC,KAAK;QAC7C,IAAI,OAAO,KAAK,KAAK,WAAW,EAAE;YAChC,OAAO,SAAS,CAAC;SAClB;QAED,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,IAAA,gBAAM,EAAC,KAAK,CAAC,EAAE;YAC9C,OAAO,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;SAC1B;QAED,yEAAyE;QACzE,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,CAAC,KAAK,KAAK,MAAM,IAAI,KAAK,KAAK,OAAO,CAAC,EAAE;YACxE,OAAO,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC,CAAC;SACxC;QAED,OAAO,KAAK,CAAC;IACf,CAAC,EAAE,EAAE,CAAC,CAAC;IAEP,IAAM,kBAAkB,GAAG,IAAA,mBAAW,EACpC,UACE,UAA2B,EAC3B,WAAmB;QAEnB,OAAA,oBAAoB,CAClB,MAAM,CAAC,qBAAqB,CAAC,UAAU,EAAE,WAAW,CAAC,CACtD;IAFD,CAEC,EACH,CAAC,MAAM,EAAE,oBAAoB,CAAC,CAC/B,CAAC;IAEF,OAAO;QACL,kBAAkB,oBAAA;KACnB,CAAC;AACJ,CAAC;AAlCD,gDAkCC"}
1
+ {"version":3,"file":"useFeatureVariable.js","sourceRoot":"","sources":["../src/useFeatureVariable.ts"],"names":[],"mappings":";;;;;;AAAA,+BAAoC;AACpC,gEAA0C;AAC1C,+CAA8C;AAG9C,uCAAsC;AActC;;GAEG;AACH,SAAgB,kBAAkB;IACxB,IAAA,MAAM,GAAK,IAAA,2BAAY,GAAE,OAAnB,CAAoB;IAC5B,IAAA,KAAsB,IAAA,mBAAQ,GAAE,EAA9B,KAAK,WAAA,EAAE,QAAQ,cAAe,CAAC;IAEvC,IAAM,oBAAoB,GAAG,IAAA,mBAAW,EAAC,UAAC,KAAK;QAC7C,IAAI,OAAO,KAAK,KAAK,WAAW,EAAE;YAChC,OAAO,SAAS,CAAC;SAClB;QAED,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,IAAA,gBAAM,EAAC,KAAK,CAAC,EAAE;YAC9C,OAAO,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;SAC1B;QAED,OAAO,KAAK,CAAC;IACf,CAAC,EAAE,EAAE,CAAC,CAAC;IAEP,IAAM,kBAAkB,GAAG,IAAA,mBAAW,EACpC,UACE,UAA2B,EAC3B,WAAmB;QAEnB,IAAI;YACF,OAAO,oBAAoB,CACzB,MAAM,CAAC,qBAAqB,CAAC,UAAU,EAAE,WAAW,CAAC,CACtD,CAAC;SACH;QAAC,OAAO,YAAY,EAAE;YACrB,QAAQ,CAAC,YAAY,CAAC,CAAC;YAEvB,OAAO,SAAS,CAAC;SAClB;IACH,CAAC,EACD,CAAC,MAAM,EAAE,oBAAoB,EAAE,QAAQ,CAAC,CACzC,CAAC;IAEF,OAAO;QACL,kBAAkB,oBAAA;QAClB,KAAK,OAAA;KACN,CAAC;AACJ,CAAC;AAtCD,gDAsCC"}
@@ -1,9 +1,9 @@
1
- import { RemoteSourceDataType } from './types';
1
+ import { RemoteSourceResultType } from './types';
2
2
  interface RetrieveDataFromRemoteSourceHookResult {
3
3
  /**
4
4
  * @param key - unique key for data defined for Kameleoon Data API
5
5
  */
6
- retrieveDataFromRemoteSource: (key: string) => Promise<RemoteSourceDataType>;
6
+ retrieveDataFromRemoteSource: (key: string) => Promise<RemoteSourceResultType>;
7
7
  }
8
8
  /**
9
9
  * A React Hook that returns asynchronous callback function which retrieves data from Kameleoon Data API
@@ -40,6 +40,8 @@ exports.useRetrieveDataFromRemoteSource = void 0;
40
40
  var react_1 = require("react");
41
41
  var useKameleoon_1 = require("./useKameleoon");
42
42
  var ProviderError_1 = require("./ProviderError");
43
+ var KameleoonError_1 = require("./KameleoonError");
44
+ var constants_1 = require("./constants");
43
45
  /**
44
46
  * A React Hook that returns asynchronous callback function which retrieves data from Kameleoon Data API
45
47
  */
@@ -52,16 +54,17 @@ function useRetrieveDataFromRemoteSource() {
52
54
  Object.getPrototypeOf(object) === Object.prototype);
53
55
  }, []);
54
56
  var retrieveDataFromRemoteSource = (0, react_1.useCallback)(function (key) { return __awaiter(_this, void 0, void 0, function () {
55
- var data;
57
+ var resultData, error;
56
58
  return __generator(this, function (_a) {
57
59
  switch (_a.label) {
58
60
  case 0: return [4 /*yield*/, client.retrieveDataFromRemoteSource(key)];
59
61
  case 1:
60
- data = (_a.sent());
61
- if (isObjectEmpty(data)) {
62
- throw new Error('No data was retrieved from remote source or the data is empty');
62
+ resultData = (_a.sent());
63
+ if (isObjectEmpty(resultData)) {
64
+ error = new KameleoonError_1.KameleoonError(constants_1.KameleoonException.NoDataWasRetrievedFromRemoteServer);
65
+ return [2 /*return*/, { data: null, error: error }];
63
66
  }
64
- return [2 /*return*/, data];
67
+ return [2 /*return*/, { data: resultData, error: null }];
65
68
  }
66
69
  });
67
70
  }); }, [client, isObjectEmpty]);
@@ -1 +1 @@
1
- {"version":3,"file":"useRetrieveDataFromRemoteSource.js","sourceRoot":"","sources":["../src/useRetrieveDataFromRemoteSource.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,+BAAoC;AACpC,+CAA8C;AAC9C,iDAAgD;AAUhD;;GAEG;AACH,SAAgB,+BAA+B;IAA/C,iBAmCC;IAlCS,IAAA,MAAM,GAAK,IAAA,2BAAY,GAAE,OAAnB,CAAoB;IAElC,IAAM,aAAa,GAAG,IAAA,mBAAW,EAAC,UAAC,MAA4B;QAC7D,OAAO,CACL,MAAM;YACN,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,MAAM,KAAK,CAAC;YAChC,MAAM,CAAC,cAAc,CAAC,MAAM,CAAC,KAAK,MAAM,CAAC,SAAS,CACnD,CAAC;IACJ,CAAC,EAAE,EAAE,CAAC,CAAC;IAEP,IAAM,4BAA4B,GAAG,IAAA,mBAAW,EAC9C,UAAO,GAAW;;;;wBACF,qBAAM,MAAM,CAAC,4BAA4B,CACrD,GAAG,CACJ,EAAA;;oBAFK,IAAI,GAAG,CAAC,SAEb,CAAyB;oBAE1B,IAAI,aAAa,CAAC,IAAI,CAAC,EAAE;wBACvB,MAAM,IAAI,KAAK,CACb,+DAA+D,CAChE,CAAC;qBACH;oBAED,sBAAO,IAAI,EAAC;;;SACb,EACD,CAAC,MAAM,EAAE,aAAa,CAAC,CACxB,CAAC;IAEF,IAAI,CAAC,MAAM,EAAE;QACX,MAAM,IAAI,6BAAa,CAAC,cAAc,CAAC,CAAC;KACzC;IAED,OAAO;QACL,4BAA4B,8BAAA;KAC7B,CAAC;AACJ,CAAC;AAnCD,0EAmCC"}
1
+ {"version":3,"file":"useRetrieveDataFromRemoteSource.js","sourceRoot":"","sources":["../src/useRetrieveDataFromRemoteSource.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,+BAAoC;AACpC,+CAA8C;AAC9C,iDAAgD;AAEhD,mDAAkD;AAClD,yCAAiD;AAWjD;;GAEG;AACH,SAAgB,+BAA+B;IAA/C,iBAqCC;IApCS,IAAA,MAAM,GAAK,IAAA,2BAAY,GAAE,OAAnB,CAAoB;IAElC,IAAM,aAAa,GAAG,IAAA,mBAAW,EAAC,UAAC,MAA4B;QAC7D,OAAO,CACL,MAAM;YACN,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,MAAM,KAAK,CAAC;YAChC,MAAM,CAAC,cAAc,CAAC,MAAM,CAAC,KAAK,MAAM,CAAC,SAAS,CACnD,CAAC;IACJ,CAAC,EAAE,EAAE,CAAC,CAAC;IAEP,IAAM,4BAA4B,GAAG,IAAA,mBAAW,EAC9C,UAAO,GAAW;;;;wBACI,qBAAM,MAAM,CAAC,4BAA4B,CAC3D,GAAG,CACJ,EAAA;;oBAFK,UAAU,GAAG,CAAC,SAEnB,CAAyB;oBAE1B,IAAI,aAAa,CAAC,UAAU,CAAC,EAAE;wBACvB,KAAK,GAAG,IAAI,+BAAc,CAC9B,8BAAkB,CAAC,kCAAkC,CACtD,CAAC;wBAEF,sBAAO,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,OAAA,EAAE,EAAC;qBAC9B;oBAED,sBAAO,EAAE,IAAI,EAAE,UAAU,EAAE,KAAK,EAAE,IAAI,EAAE,EAAC;;;SAC1C,EACD,CAAC,MAAM,EAAE,aAAa,CAAC,CACxB,CAAC;IAEF,IAAI,CAAC,MAAM,EAAE;QACX,MAAM,IAAI,6BAAa,CAAC,cAAc,CAAC,CAAC;KACzC;IAED,OAAO;QACL,4BAA4B,8BAAA;KAC7B,CAAC;AACJ,CAAC;AArCD,0EAqCC"}
@@ -0,0 +1,14 @@
1
+ interface RunWhenReadyHookResult {
2
+ /**
3
+ * @param successCallback - callback which will be executed on successful client initialization
4
+ * @param errorCallback - callback which will be executed if client wasn't able to initialize during the timeout
5
+ * @param timeout - timeout which is given to perform HTTP call for initialization in ms (by default: 2 seconds)
6
+ */
7
+ runWhenReady: (successCallback: () => void, errorCallback: () => void, timeout?: number) => void;
8
+ }
9
+ /**
10
+ * A React Hook that returns callback function which makes sure that
11
+ * Kameleoon Client will be initialized properly using HTTP call within the specified timeout
12
+ */
13
+ export declare function useRunWhenReady(): RunWhenReadyHookResult;
14
+ export {};
@@ -0,0 +1,23 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.useRunWhenReady = void 0;
4
+ var react_1 = require("react");
5
+ var useKameleoon_1 = require("./useKameleoon");
6
+ var ProviderError_1 = require("./ProviderError");
7
+ /**
8
+ * A React Hook that returns callback function which makes sure that
9
+ * Kameleoon Client will be initialized properly using HTTP call within the specified timeout
10
+ */
11
+ function useRunWhenReady() {
12
+ var client = (0, useKameleoon_1.useKameleoon)().client;
13
+ var DEFAULT_TIMEOUT = 2000;
14
+ var runWhenReady = (0, react_1.useCallback)(function (successCallback, errorCallback, timeout) {
15
+ client.runWhenReady(successCallback, errorCallback, timeout !== null && timeout !== void 0 ? timeout : DEFAULT_TIMEOUT);
16
+ }, [client]);
17
+ if (!client) {
18
+ throw new ProviderError_1.ProviderError('useRunWhenReady');
19
+ }
20
+ return { runWhenReady: runWhenReady };
21
+ }
22
+ exports.useRunWhenReady = useRunWhenReady;
23
+ //# sourceMappingURL=useRunWhenReady.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useRunWhenReady.js","sourceRoot":"","sources":["../src/useRunWhenReady.ts"],"names":[],"mappings":";;;AAAA,+BAAoC;AACpC,+CAA8C;AAC9C,iDAAgD;AAehD;;;GAGG;AACH,SAAgB,eAAe;IACrB,IAAA,MAAM,GAAK,IAAA,2BAAY,GAAE,OAAnB,CAAoB;IAClC,IAAM,eAAe,GAAG,IAAI,CAAC;IAE7B,IAAM,YAAY,GAAG,IAAA,mBAAW,EAC9B,UACE,eAA2B,EAC3B,aAAyB,EACzB,OAAgB;QAEhB,MAAM,CAAC,YAAY,CACjB,eAAe,EACf,aAAa,EACb,OAAO,aAAP,OAAO,cAAP,OAAO,GAAI,eAAe,CAC3B,CAAC;IACJ,CAAC,EACD,CAAC,MAAM,CAAC,CACT,CAAC;IAEF,IAAI,CAAC,MAAM,EAAE;QACX,MAAM,IAAI,6BAAa,CAAC,iBAAiB,CAAC,CAAC;KAC5C;IAED,OAAO,EAAE,YAAY,cAAA,EAAE,CAAC;AAC1B,CAAC;AAxBD,0CAwBC"}
@@ -1,9 +1,11 @@
1
+ import { KameleoonError } from './KameleoonError';
1
2
  interface IGetVariationIdHookResult {
2
3
  /**
3
4
  * @param visitorCode - unique identifier of the user
4
5
  * @param experimentId - unique identifier of the experiment you want to expose to a user
5
6
  */
6
7
  getVariationId: (visitorCode: string, experimentId: number) => number;
8
+ error: KameleoonError | null;
7
9
  }
8
10
  /**
9
11
  * A React Hook that returns callback function which triggers experiment.
@@ -3,6 +3,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.useTriggerExperiment = void 0;
4
4
  var react_1 = require("react");
5
5
  var useKameleoon_1 = require("./useKameleoon");
6
+ var useError_1 = require("./useError");
6
7
  /**
7
8
  * A React Hook that returns callback function which triggers experiment.
8
9
  * If such a user has never been associated with any variation, the SDK returns a randomly selected variation.
@@ -10,12 +11,21 @@ var useKameleoon_1 = require("./useKameleoon");
10
11
  * it will detect the previously registered variation and return the variationID
11
12
  */
12
13
  function useTriggerExperiment() {
14
+ var _a = (0, useError_1.useError)(), error = _a.error, setError = _a.setError;
13
15
  var client = (0, useKameleoon_1.useKameleoon)().client;
16
+ var DEFAULT_VARIATION_ID = 0;
14
17
  var getVariationId = (0, react_1.useCallback)(function (visitorCode, experimentId) {
15
- return client.triggerExperiment(visitorCode, experimentId);
16
- }, [client]);
18
+ try {
19
+ return client.triggerExperiment(visitorCode, experimentId);
20
+ }
21
+ catch (unknownError) {
22
+ setError(unknownError);
23
+ return DEFAULT_VARIATION_ID;
24
+ }
25
+ }, [client, setError]);
17
26
  return {
18
27
  getVariationId: getVariationId,
28
+ error: error,
19
29
  };
20
30
  }
21
31
  exports.useTriggerExperiment = useTriggerExperiment;
@@ -1 +1 @@
1
- {"version":3,"file":"useTriggerExperiment.js","sourceRoot":"","sources":["../src/useTriggerExperiment.ts"],"names":[],"mappings":";;;AAAA,+BAAoC;AACpC,+CAA8C;AAU9C;;;;;GAKG;AACH,SAAgB,oBAAoB;IAC1B,IAAA,MAAM,GAAK,IAAA,2BAAY,GAAE,OAAnB,CAAoB;IAElC,IAAM,cAAc,GAAG,IAAA,mBAAW,EAChC,UAAC,WAAmB,EAAE,YAAoB;QACxC,OAAA,MAAM,CAAC,iBAAiB,CAAC,WAAW,EAAE,YAAY,CAAC;IAAnD,CAAmD,EACrD,CAAC,MAAM,CAAC,CACT,CAAC;IAEF,OAAO;QACL,cAAc,gBAAA;KACf,CAAC;AACJ,CAAC;AAZD,oDAYC"}
1
+ {"version":3,"file":"useTriggerExperiment.js","sourceRoot":"","sources":["../src/useTriggerExperiment.ts"],"names":[],"mappings":";;;AAAA,+BAAoC;AACpC,+CAA8C;AAE9C,uCAAsC;AAWtC;;;;;GAKG;AACH,SAAgB,oBAAoB;IAC5B,IAAA,KAAsB,IAAA,mBAAQ,GAAE,EAA9B,KAAK,WAAA,EAAE,QAAQ,cAAe,CAAC;IAC/B,IAAA,MAAM,GAAK,IAAA,2BAAY,GAAE,OAAnB,CAAoB;IAClC,IAAM,oBAAoB,GAAG,CAAC,CAAC;IAE/B,IAAM,cAAc,GAAG,IAAA,mBAAW,EAChC,UAAC,WAAmB,EAAE,YAAoB;QACxC,IAAI;YACF,OAAO,MAAM,CAAC,iBAAiB,CAAC,WAAW,EAAE,YAAY,CAAC,CAAC;SAC5D;QAAC,OAAO,YAAY,EAAE;YACrB,QAAQ,CAAC,YAAY,CAAC,CAAC;YAEvB,OAAO,oBAAoB,CAAC;SAC7B;IACH,CAAC,EACD,CAAC,MAAM,EAAE,QAAQ,CAAC,CACnB,CAAC;IAEF,OAAO;QACL,cAAc,gBAAA;QACd,KAAK,OAAA;KACN,CAAC;AACJ,CAAC;AAtBD,oDAsBC"}
@@ -1,9 +1,11 @@
1
- import { AnyType } from './types';
1
+ import { KameleoonError } from './KameleoonError';
2
+ import { VariationAssociatedDataType } from './types';
2
3
  interface VariationAssociatedDataHookResult {
3
4
  /**
4
5
  * @param variationId - unique identifier of the variation you want to obtain associated data for
5
6
  */
6
- getVariationAssociatedData: (variationId: number) => AnyType;
7
+ getVariationAssociatedData: (variationId: number) => VariationAssociatedDataType;
8
+ error: KameleoonError | null;
7
9
  }
8
10
  /**
9
11
  * A React Hook that returns callback function which retrieves JSON data associated with a variation.
@@ -3,6 +3,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.useVariationAssociatedData = void 0;
4
4
  var react_1 = require("react");
5
5
  var useKameleoon_1 = require("./useKameleoon");
6
+ var useError_1 = require("./useError");
6
7
  /**
7
8
  * A React Hook that returns callback function which retrieves JSON data associated with a variation.
8
9
  * The JSON data usually represents some metadata of the variation,
@@ -10,11 +11,19 @@ var useKameleoon_1 = require("./useKameleoon");
10
11
  */
11
12
  function useVariationAssociatedData() {
12
13
  var client = (0, useKameleoon_1.useKameleoon)().client;
14
+ var _a = (0, useError_1.useError)(), error = _a.error, setError = _a.setError;
13
15
  var getVariationAssociatedData = (0, react_1.useCallback)(function (variationId) {
14
- return client.obtainVariationAssociatedData(variationId);
15
- }, [client]);
16
+ try {
17
+ return client.obtainVariationAssociatedData(variationId);
18
+ }
19
+ catch (unknownError) {
20
+ setError(unknownError);
21
+ return null;
22
+ }
23
+ }, [client, setError]);
16
24
  return {
17
25
  getVariationAssociatedData: getVariationAssociatedData,
26
+ error: error,
18
27
  };
19
28
  }
20
29
  exports.useVariationAssociatedData = useVariationAssociatedData;
@@ -1 +1 @@
1
- {"version":3,"file":"useVariationAssociatedData.js","sourceRoot":"","sources":["../src/useVariationAssociatedData.ts"],"names":[],"mappings":";;;AAAA,+BAAoC;AACpC,+CAA8C;AAU9C;;;;GAIG;AACH,SAAgB,0BAA0B;IAChC,IAAA,MAAM,GAAK,IAAA,2BAAY,GAAE,OAAnB,CAAoB;IAElC,IAAM,0BAA0B,GAAG,IAAA,mBAAW,EAC5C,UAAC,WAAmB;QAClB,OAAA,MAAM,CAAC,6BAA6B,CAAC,WAAW,CAAC;IAAjD,CAAiD,EACnD,CAAC,MAAM,CAAC,CACT,CAAC;IAEF,OAAO;QACL,0BAA0B,4BAAA;KAC3B,CAAC;AACJ,CAAC;AAZD,gEAYC"}
1
+ {"version":3,"file":"useVariationAssociatedData.js","sourceRoot":"","sources":["../src/useVariationAssociatedData.ts"],"names":[],"mappings":";;;AAAA,+BAAoC;AACpC,+CAA8C;AAG9C,uCAAsC;AAYtC;;;;GAIG;AACH,SAAgB,0BAA0B;IAChC,IAAA,MAAM,GAAK,IAAA,2BAAY,GAAE,OAAnB,CAAoB;IAC5B,IAAA,KAAsB,IAAA,mBAAQ,GAAE,EAA9B,KAAK,WAAA,EAAE,QAAQ,cAAe,CAAC;IAEvC,IAAM,0BAA0B,GAAG,IAAA,mBAAW,EAC5C,UAAC,WAAmB;QAClB,IAAI;YACF,OAAO,MAAM,CAAC,6BAA6B,CAAC,WAAW,CAAC,CAAC;SAC1D;QAAC,OAAO,YAAY,EAAE;YACrB,QAAQ,CAAC,YAAY,CAAC,CAAC;YAEvB,OAAO,IAAI,CAAC;SACb;IACH,CAAC,EACD,CAAC,MAAM,EAAE,QAAQ,CAAC,CACnB,CAAC;IAEF,OAAO;QACL,0BAA0B,4BAAA;QAC1B,KAAK,OAAA;KACN,CAAC;AACJ,CAAC;AArBD,gEAqBC"}
@@ -1,11 +1,13 @@
1
1
  import React from 'react';
2
2
  import { UnknownPropsType, Without } from './types';
3
+ import { KameleoonError } from './KameleoonError';
3
4
  interface IWithHasFeature {
4
5
  /**
5
6
  * @param visitorCode - unique identifier of the user
6
7
  * @param featureKey - unique identifier or key of the feature you want to expose to a user
7
8
  */
8
- hasFeature: (visitorCode: string, featureKey: string | number) => boolean;
9
+ hasFeature: (featureKey: string | number, visitorCode?: string) => boolean;
10
+ activateFeatureError: KameleoonError | null;
9
11
  }
10
12
  /**
11
13
  * A React HOC that gives a wrapped component access to callback