@kameleoon/react-sdk 1.2.2 → 3.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (104) hide show
  1. package/CHANGELOG.md +29 -0
  2. package/README.md +315 -43
  3. package/dist/Feature.js +2 -2
  4. package/dist/Feature.js.map +1 -1
  5. package/dist/KameleoonError.d.ts +5 -0
  6. package/dist/KameleoonError.js +31 -0
  7. package/dist/KameleoonError.js.map +1 -0
  8. package/dist/compose.d.ts +1 -1
  9. package/dist/compose.js +27 -2
  10. package/dist/compose.js.map +1 -1
  11. package/dist/constants.d.ts +11 -0
  12. package/dist/constants.js +13 -1
  13. package/dist/constants.js.map +1 -1
  14. package/dist/getKameleoonException.d.ts +2 -0
  15. package/dist/getKameleoonException.js +34 -0
  16. package/dist/getKameleoonException.js.map +1 -0
  17. package/dist/index.d.ts +6 -1
  18. package/dist/index.js +21 -1
  19. package/dist/index.js.map +1 -1
  20. package/dist/stories/Form.d.ts +13 -5
  21. package/dist/stories/Form.js +154 -36
  22. package/dist/stories/Form.js.map +1 -1
  23. package/dist/stories/FormHOC.js +12 -7
  24. package/dist/stories/FormHOC.js.map +1 -1
  25. package/dist/stories/FormHook.js +34 -21
  26. package/dist/stories/FormHook.js.map +1 -1
  27. package/dist/stories/constants.d.ts +5 -2
  28. package/dist/stories/constants.js +11 -8
  29. package/dist/stories/constants.js.map +1 -1
  30. package/dist/types.d.ts +24 -7
  31. package/dist/types.js.map +1 -1
  32. package/dist/useActivateFeature.d.ts +2 -0
  33. package/dist/useActivateFeature.js +11 -2
  34. package/dist/useActivateFeature.js.map +1 -1
  35. package/dist/useAddData.js +17 -1
  36. package/dist/useAddData.js.map +1 -1
  37. package/dist/useConversion.d.ts +1 -1
  38. package/dist/useError.d.ts +7 -0
  39. package/dist/useError.js +34 -0
  40. package/dist/useError.js.map +1 -0
  41. package/dist/useErrors.d.ts +7 -0
  42. package/dist/useErrors.js +42 -0
  43. package/dist/useErrors.js.map +1 -0
  44. package/dist/useFeature.d.ts +1 -1
  45. package/dist/useFeature.js +42 -13
  46. package/dist/useFeature.js.map +1 -1
  47. package/dist/useFeatureVariable.d.ts +2 -0
  48. package/dist/useFeatureVariable.js +11 -2
  49. package/dist/useFeatureVariable.js.map +1 -1
  50. package/dist/useRetrieveDataFromRemoteSource.d.ts +12 -0
  51. package/dist/useRetrieveDataFromRemoteSource.js +79 -0
  52. package/dist/useRetrieveDataFromRemoteSource.js.map +1 -0
  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 +6 -4
  60. package/dist/useVariationAssociatedData.js +11 -2
  61. package/dist/useVariationAssociatedData.js.map +1 -1
  62. package/dist/withActivateFeature.d.ts +2 -0
  63. package/dist/withActivateFeature.js +3 -12
  64. package/dist/withActivateFeature.js.map +1 -1
  65. package/dist/withAddData.js +17 -2
  66. package/dist/withAddData.js.map +1 -1
  67. package/dist/withBrowser.js +0 -1
  68. package/dist/withBrowser.js.map +1 -1
  69. package/dist/withConversion.d.ts +1 -1
  70. package/dist/withConversion.js +0 -1
  71. package/dist/withConversion.js.map +1 -1
  72. package/dist/withCustomData.js +0 -1
  73. package/dist/withCustomData.js.map +1 -1
  74. package/dist/withFeature.js +2 -3
  75. package/dist/withFeature.js.map +1 -1
  76. package/dist/withFeatureVariable.d.ts +2 -0
  77. package/dist/withFeatureVariable.js +2 -2
  78. package/dist/withFeatureVariable.js.map +1 -1
  79. package/dist/withFlush.js +0 -1
  80. package/dist/withFlush.js.map +1 -1
  81. package/dist/withInterest.js +0 -1
  82. package/dist/withInterest.js.map +1 -1
  83. package/dist/withKameleoon.js +0 -1
  84. package/dist/withKameleoon.js.map +1 -1
  85. package/dist/withPageView.js +0 -1
  86. package/dist/withPageView.js.map +1 -1
  87. package/dist/withRetrieveDataFromRemoteSource.d.ts +14 -0
  88. package/dist/withRetrieveDataFromRemoteSource.js +28 -0
  89. package/dist/withRetrieveDataFromRemoteSource.js.map +1 -0
  90. package/dist/withRunWhenReady.d.ts +16 -0
  91. package/dist/withRunWhenReady.js +28 -0
  92. package/dist/withRunWhenReady.js.map +1 -0
  93. package/dist/withTrackingConversion.d.ts +1 -1
  94. package/dist/withTrackingConversion.js +4 -6
  95. package/dist/withTrackingConversion.js.map +1 -1
  96. package/dist/withTriggerExperiment.d.ts +3 -1
  97. package/dist/withTriggerExperiment.js +4 -13
  98. package/dist/withTriggerExperiment.js.map +1 -1
  99. package/dist/withVariationAssociatedData.d.ts +4 -2
  100. package/dist/withVariationAssociatedData.js +3 -11
  101. package/dist/withVariationAssociatedData.js.map +1 -1
  102. package/dist/withVisitorCode.js +0 -1
  103. package/dist/withVisitorCode.js.map +1 -1
  104. package/package.json +3 -2
@@ -1 +1 @@
1
- {"version":3,"file":"FormHOC.js","sourceRoot":"","sources":["../../src/stories/FormHOC.tsx"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAAA,uDAAiC;AACjC,yCAAsE;AACtE,kCAYkB;AAClB,gDAA0C;AAE1C,SAAS,OAAO,CAAC,KAAiB;IAChC,OAAO,uBAAC,cAAI,eAAK,KAAK,IAAE,aAAa,EAAE,KAAK,YAAI,CAAC;AACnD,CAAC;AAED,IAAM,iBAAiB,GAAG,IAAA,iBAAO,EAC/B,qBAAa,EACb,uBAAe,EACf,2BAAmB,EACnB,mBAAW,EACX,mBAAW,EACX,oBAAY,EACZ,oBAAY,EACZ,sBAAc,EACd,6BAAqB,EACrB,mCAA2B,EAC3B,IAAA,mBAAW,EAAC;IACV,UAAU,EAAE,uBAAW;IACvB,WAAW,EAAE;QACX,6BAAiB,CAAC,MAAM;QACxB,6BAAiB,CAAC,OAAO;QACzB,6BAAiB,CAAC,MAAM;QACxB,6BAAiB,CAAC,IAAI;KACvB;IACD,WAAW,EAAE,mBAAO;CACrB,CAAC,CACH,CAAC;AAEF,kBAAe,iBAAiB,CAAC,OAAO,CAAC,CAAC"}
1
+ {"version":3,"file":"FormHOC.js","sourceRoot":"","sources":["../../src/stories/FormHOC.tsx"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAAA,uDAAiC;AACjC,yCAAqE;AACrE,kCAckB;AAClB,gDAA0C;AAE1C,SAAS,OAAO,CAAC,KAAiB;IAChC,OAAO,uBAAC,cAAI,eAAK,KAAK,IAAE,aAAa,EAAE,KAAK,YAAI,CAAC;AACnD,CAAC;AAED,IAAM,YAAY,GAAG;IACnB,UAAU,EAAE;QACV,4BAAgB,CAAC,MAAM;QACvB,4BAAgB,CAAC,OAAO;QACxB,4BAAgB,CAAC,MAAM;QACvB,4BAAgB,CAAC,IAAI;KACtB;IACD,WAAW,EAAE,4BAAgB,CAAC,iBAAiB;IAC/C,OAAO,EAAE,4BAAgB,CAAC,iBAAiB;CAC5C,CAAC;AAEF,IAAM,iBAAiB,GAAG,IAAA,iBAAO,EAC/B,qBAAa,EACb,uBAAe,EACf,2BAAmB,EACnB,mBAAW,EACX,mBAAW,EACX,oBAAY,EACZ,oBAAY,EACZ,sBAAc,EACd,6BAAqB,EACrB,wBAAgB,EAChB,mCAA2B,EAC3B,wCAAgC,EAChC,IAAA,mBAAW,EAAC;IACV,UAAU,EAAE,uBAAW;IACvB,YAAY,cAAA;IACZ,WAAW,EAAE,mBAAO;CACrB,CAAC,CACH,CAAC;AAEF,kBAAe,iBAAiB,CAAC,OAAO,CAAC,CAAC"}
@@ -16,32 +16,43 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
16
16
  Object.defineProperty(exports, "__esModule", { value: true });
17
17
  exports.FormHook = void 0;
18
18
  var jsx_runtime_1 = require("react/jsx-runtime");
19
- var constants_1 = require("./constants");
20
- var __1 = require("../");
19
+ var index_1 = require("../index");
21
20
  var Form_1 = __importDefault(require("./Form"));
21
+ var constants_1 = require("./constants");
22
22
  function FormHook() {
23
- var client = (0, __1.useKameleoon)().client;
24
- var getVisitorCode = (0, __1.useVisitorCode)().getVisitorCode;
25
- var addData = (0, __1.useAddData)().addData;
26
- var addBrowser = (0, __1.useBrowser)().addBrowser;
27
- var addPageView = (0, __1.usePageView)().addPageView;
28
- var addInterest = (0, __1.useInterest)().addInterest;
29
- var addConversion = (0, __1.useConversion)().addConversion;
30
- var getVariationAssociatedData = (0, __1.useVariationAssociatedData)().getVariationAssociatedData;
31
- var trackConversion = (0, __1.useTrackingConversion)().trackConversion;
32
- var getVariationId = (0, __1.useTriggerExperiment)().getVariationId;
33
- var hasFeature = (0, __1.useActivateFeature)().hasFeature;
34
- var feature = (0, __1.useFeature)({
35
- featureKey: constants_1.FEATURE_KEY,
36
- variableKey: [
37
- constants_1.FEATURE_VARIABLES.STRING,
38
- constants_1.FEATURE_VARIABLES.BOOLEAN,
39
- constants_1.FEATURE_VARIABLES.NUMBER,
40
- constants_1.FEATURE_VARIABLES.JSON,
23
+ var client = (0, index_1.useKameleoon)().client;
24
+ var getVisitorCode = (0, index_1.useVisitorCode)().getVisitorCode;
25
+ var addData = (0, index_1.useAddData)().addData;
26
+ var addBrowser = (0, index_1.useBrowser)().addBrowser;
27
+ var addPageView = (0, index_1.usePageView)().addPageView;
28
+ var addInterest = (0, index_1.useInterest)().addInterest;
29
+ var addConversion = (0, index_1.useConversion)().addConversion;
30
+ var _a = (0, index_1.useVariationAssociatedData)(), getVariationAssociatedData = _a.getVariationAssociatedData, variationAssociatedDataError = _a.error;
31
+ var trackConversion = (0, index_1.useTrackingConversion)().trackConversion;
32
+ var _b = (0, index_1.useTriggerExperiment)(), getVariationId = _b.getVariationId, triggerExperimentError = _b.error;
33
+ var _c = (0, index_1.useActivateFeature)(), hasFeature = _c.hasFeature, activateFeatureError = _c.error;
34
+ var retrieveDataFromRemoteSource = (0, index_1.useRetrieveDataFromRemoteSource)().retrieveDataFromRemoteSource;
35
+ var runWhenReady = (0, index_1.useRunWhenReady)().runWhenReady;
36
+ var variableKeys = {
37
+ production: [
38
+ constants_1.FeatureVariables.STRING,
39
+ constants_1.FeatureVariables.BOOLEAN,
40
+ constants_1.FeatureVariables.NUMBER,
41
+ constants_1.FeatureVariables.JSON,
41
42
  ],
43
+ development: constants_1.FeatureVariables.MULTI_ENVIRONMENT,
44
+ staging: constants_1.FeatureVariables.MULTI_ENVIRONMENT,
45
+ };
46
+ var _d = (0, index_1.useFeature)({
47
+ featureKey: constants_1.FEATURE_KEY,
48
+ variableKeys: variableKeys,
42
49
  visitorCode: constants_1.USER_ID,
43
- });
50
+ }), feature = _d.feature, featureErrors = _d.errors;
44
51
  var props = {
52
+ variationAssociatedDataError: variationAssociatedDataError,
53
+ triggerExperimentError: triggerExperimentError,
54
+ activateFeatureError: activateFeatureError,
55
+ featureErrors: featureErrors,
45
56
  client: client,
46
57
  feature: feature,
47
58
  getVisitorCode: getVisitorCode,
@@ -52,8 +63,10 @@ function FormHook() {
52
63
  addInterest: addInterest,
53
64
  addConversion: addConversion,
54
65
  getVariationAssociatedData: getVariationAssociatedData,
66
+ retrieveDataFromRemoteSource: retrieveDataFromRemoteSource,
55
67
  getVariationId: getVariationId,
56
68
  trackConversion: trackConversion,
69
+ runWhenReady: runWhenReady,
57
70
  };
58
71
  return (0, jsx_runtime_1.jsx)(Form_1.default, __assign({}, props, { isRenderProps: false }), void 0);
59
72
  }
@@ -1 +1 @@
1
- {"version":3,"file":"FormHook.js","sourceRoot":"","sources":["../../src/stories/FormHook.tsx"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;AAAA,yCAAsE;AACtE,yBAaa;AACb,gDAA0B;AAE1B,SAAgB,QAAQ;IACd,IAAA,MAAM,GAAK,IAAA,gBAAY,GAAE,OAAnB,CAAoB;IAC1B,IAAA,cAAc,GAAK,IAAA,kBAAc,GAAE,eAArB,CAAsB;IACpC,IAAA,OAAO,GAAK,IAAA,cAAU,GAAE,QAAjB,CAAkB;IACzB,IAAA,UAAU,GAAK,IAAA,cAAU,GAAE,WAAjB,CAAkB;IAC5B,IAAA,WAAW,GAAK,IAAA,eAAW,GAAE,YAAlB,CAAmB;IAC9B,IAAA,WAAW,GAAK,IAAA,eAAW,GAAE,YAAlB,CAAmB;IAC9B,IAAA,aAAa,GAAK,IAAA,iBAAa,GAAE,cAApB,CAAqB;IAClC,IAAA,0BAA0B,GAAK,IAAA,8BAA0B,GAAE,2BAAjC,CAAkC;IAC5D,IAAA,eAAe,GAAK,IAAA,yBAAqB,GAAE,gBAA5B,CAA6B;IAC5C,IAAA,cAAc,GAAK,IAAA,wBAAoB,GAAE,eAA3B,CAA4B;IAC1C,IAAA,UAAU,GAAK,IAAA,sBAAkB,GAAE,WAAzB,CAA0B;IAC5C,IAAM,OAAO,GAAG,IAAA,cAAU,EAAC;QACzB,UAAU,EAAE,uBAAW;QACvB,WAAW,EAAE;YACX,6BAAiB,CAAC,MAAM;YACxB,6BAAiB,CAAC,OAAO;YACzB,6BAAiB,CAAC,MAAM;YACxB,6BAAiB,CAAC,IAAI;SACvB;QACD,WAAW,EAAE,mBAAO;KACrB,CAAC,CAAC;IAEH,IAAM,KAAK,GAAG;QACZ,MAAM,QAAA;QACN,OAAO,SAAA;QACP,cAAc,gBAAA;QACd,UAAU,YAAA;QACV,OAAO,SAAA;QACP,UAAU,YAAA;QACV,WAAW,aAAA;QACX,WAAW,aAAA;QACX,aAAa,eAAA;QACb,0BAA0B,4BAAA;QAC1B,cAAc,gBAAA;QACd,eAAe,iBAAA;KAChB,CAAC;IAEF,OAAO,uBAAC,cAAI,eAAK,KAAK,IAAE,aAAa,EAAE,KAAK,YAAI,CAAC;AACnD,CAAC;AAvCD,4BAuCC"}
1
+ {"version":3,"file":"FormHook.js","sourceRoot":"","sources":["../../src/stories/FormHook.tsx"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;AAAA,kCAekB;AAClB,gDAA0B;AAC1B,yCAAqE;AAErE,SAAgB,QAAQ;IACd,IAAA,MAAM,GAAK,IAAA,oBAAY,GAAE,OAAnB,CAAoB;IAC1B,IAAA,cAAc,GAAK,IAAA,sBAAc,GAAE,eAArB,CAAsB;IACpC,IAAA,OAAO,GAAK,IAAA,kBAAU,GAAE,QAAjB,CAAkB;IACzB,IAAA,UAAU,GAAK,IAAA,kBAAU,GAAE,WAAjB,CAAkB;IAC5B,IAAA,WAAW,GAAK,IAAA,mBAAW,GAAE,YAAlB,CAAmB;IAC9B,IAAA,WAAW,GAAK,IAAA,mBAAW,GAAE,YAAlB,CAAmB;IAC9B,IAAA,aAAa,GAAK,IAAA,qBAAa,GAAE,cAApB,CAAqB;IACpC,IAAA,KACJ,IAAA,kCAA0B,GAAE,EADtB,0BAA0B,gCAAA,EAAS,4BAA4B,WACzC,CAAC;IACvB,IAAA,eAAe,GAAK,IAAA,6BAAqB,GAAE,gBAA5B,CAA6B;IAC9C,IAAA,KACJ,IAAA,4BAAoB,GAAE,EADhB,cAAc,oBAAA,EAAS,sBAAsB,WAC7B,CAAC;IACnB,IAAA,KAA8C,IAAA,0BAAkB,GAAE,EAAhE,UAAU,gBAAA,EAAS,oBAAoB,WAAyB,CAAC;IACjE,IAAA,4BAA4B,GAAK,IAAA,uCAA+B,GAAE,6BAAtC,CAAuC;IACnE,IAAA,YAAY,GAAK,IAAA,uBAAe,GAAE,aAAtB,CAAuB;IAE3C,IAAM,YAAY,GAAG;QACnB,UAAU,EAAE;YACV,4BAAgB,CAAC,MAAM;YACvB,4BAAgB,CAAC,OAAO;YACxB,4BAAgB,CAAC,MAAM;YACvB,4BAAgB,CAAC,IAAI;SACtB;QACD,WAAW,EAAE,4BAAgB,CAAC,iBAAiB;QAC/C,OAAO,EAAE,4BAAgB,CAAC,iBAAiB;KAC5C,CAAC;IAEI,IAAA,KAAqC,IAAA,kBAAU,EAAC;QACpD,UAAU,EAAE,uBAAW;QACvB,YAAY,cAAA;QACZ,WAAW,EAAE,mBAAO;KACrB,CAAC,EAJM,OAAO,aAAA,EAAU,aAAa,YAIpC,CAAC;IAEH,IAAM,KAAK,GAAG;QACZ,4BAA4B,8BAAA;QAC5B,sBAAsB,wBAAA;QACtB,oBAAoB,sBAAA;QACpB,aAAa,eAAA;QACb,MAAM,QAAA;QACN,OAAO,SAAA;QACP,cAAc,gBAAA;QACd,UAAU,YAAA;QACV,OAAO,SAAA;QACP,UAAU,YAAA;QACV,WAAW,aAAA;QACX,WAAW,aAAA;QACX,aAAa,eAAA;QACb,0BAA0B,4BAAA;QAC1B,4BAA4B,8BAAA;QAC5B,cAAc,gBAAA;QACd,eAAe,iBAAA;QACf,YAAY,cAAA;KACb,CAAC;IAEF,OAAO,uBAAC,cAAI,eAAK,KAAK,IAAE,aAAa,EAAE,KAAK,YAAI,CAAC;AACnD,CAAC;AAxDD,4BAwDC"}
@@ -1,13 +1,16 @@
1
1
  export declare const KAMELEOON_URL = "https://app.kameleoon.com";
2
2
  export declare const KAMELEOON_SITE_CODE = "0fpmcg34lg";
3
+ export declare const KAMELEOON_VISITOR_KEY = "4rXwHd620g";
3
4
  export declare const KAMELEOON_GOAL_ID = 238446;
4
5
  export declare const FEATURE_KEY = "react_sdk_test";
5
6
  export declare const USER_ID = "98983";
6
7
  export declare const EXPERIMENT_ID = 143611;
7
8
  export declare const GOAL_ID = 245023;
8
- export declare enum FEATURE_VARIABLES {
9
+ export declare const REFRESH_INTERVAL = 5;
10
+ export declare enum FeatureVariables {
9
11
  STRING = "test_variable_one",
10
12
  BOOLEAN = "test_variable_two",
11
13
  NUMBER = "test_variable_three",
12
- JSON = "test_variable_four"
14
+ JSON = "test_variable_four",
15
+ MULTI_ENVIRONMENT = "test_variable_multi_environment"
13
16
  }
@@ -1,18 +1,21 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.FEATURE_VARIABLES = exports.GOAL_ID = exports.EXPERIMENT_ID = exports.USER_ID = exports.FEATURE_KEY = exports.KAMELEOON_GOAL_ID = exports.KAMELEOON_SITE_CODE = exports.KAMELEOON_URL = void 0;
3
+ exports.FeatureVariables = exports.REFRESH_INTERVAL = exports.GOAL_ID = exports.EXPERIMENT_ID = exports.USER_ID = exports.FEATURE_KEY = exports.KAMELEOON_GOAL_ID = exports.KAMELEOON_VISITOR_KEY = exports.KAMELEOON_SITE_CODE = exports.KAMELEOON_URL = void 0;
4
4
  exports.KAMELEOON_URL = 'https://app.kameleoon.com';
5
5
  exports.KAMELEOON_SITE_CODE = '0fpmcg34lg';
6
+ exports.KAMELEOON_VISITOR_KEY = '4rXwHd620g';
6
7
  exports.KAMELEOON_GOAL_ID = 238446;
7
8
  exports.FEATURE_KEY = 'react_sdk_test';
8
9
  exports.USER_ID = '98983';
9
10
  exports.EXPERIMENT_ID = 143611;
10
11
  exports.GOAL_ID = 245023;
11
- var FEATURE_VARIABLES;
12
- (function (FEATURE_VARIABLES) {
13
- FEATURE_VARIABLES["STRING"] = "test_variable_one";
14
- FEATURE_VARIABLES["BOOLEAN"] = "test_variable_two";
15
- FEATURE_VARIABLES["NUMBER"] = "test_variable_three";
16
- FEATURE_VARIABLES["JSON"] = "test_variable_four";
17
- })(FEATURE_VARIABLES = exports.FEATURE_VARIABLES || (exports.FEATURE_VARIABLES = {}));
12
+ exports.REFRESH_INTERVAL = 5;
13
+ var FeatureVariables;
14
+ (function (FeatureVariables) {
15
+ FeatureVariables["STRING"] = "test_variable_one";
16
+ FeatureVariables["BOOLEAN"] = "test_variable_two";
17
+ FeatureVariables["NUMBER"] = "test_variable_three";
18
+ FeatureVariables["JSON"] = "test_variable_four";
19
+ FeatureVariables["MULTI_ENVIRONMENT"] = "test_variable_multi_environment";
20
+ })(FeatureVariables = exports.FeatureVariables || (exports.FeatureVariables = {}));
18
21
  //# sourceMappingURL=constants.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"constants.js","sourceRoot":"","sources":["../../src/stories/constants.ts"],"names":[],"mappings":";;;AAAa,QAAA,aAAa,GAAG,2BAA2B,CAAC;AAC5C,QAAA,mBAAmB,GAAG,YAAY,CAAC;AACnC,QAAA,iBAAiB,GAAG,MAAM,CAAC;AAC3B,QAAA,WAAW,GAAG,gBAAgB,CAAC;AAC/B,QAAA,OAAO,GAAG,OAAO,CAAC;AAClB,QAAA,aAAa,GAAG,MAAM,CAAC;AACvB,QAAA,OAAO,GAAG,MAAM,CAAC;AAE9B,IAAY,iBAKX;AALD,WAAY,iBAAiB;IAC3B,iDAA4B,CAAA;IAC5B,kDAA6B,CAAA;IAC7B,mDAA8B,CAAA;IAC9B,gDAA2B,CAAA;AAC7B,CAAC,EALW,iBAAiB,GAAjB,yBAAiB,KAAjB,yBAAiB,QAK5B"}
1
+ {"version":3,"file":"constants.js","sourceRoot":"","sources":["../../src/stories/constants.ts"],"names":[],"mappings":";;;AAAa,QAAA,aAAa,GAAG,2BAA2B,CAAC;AAC5C,QAAA,mBAAmB,GAAG,YAAY,CAAC;AACnC,QAAA,qBAAqB,GAAG,YAAY,CAAC;AACrC,QAAA,iBAAiB,GAAG,MAAM,CAAC;AAC3B,QAAA,WAAW,GAAG,gBAAgB,CAAC;AAC/B,QAAA,OAAO,GAAG,OAAO,CAAC;AAClB,QAAA,aAAa,GAAG,MAAM,CAAC;AACvB,QAAA,OAAO,GAAG,MAAM,CAAC;AACjB,QAAA,gBAAgB,GAAG,CAAC,CAAC;AAElC,IAAY,gBAMX;AAND,WAAY,gBAAgB;IAC1B,gDAA4B,CAAA;IAC5B,iDAA6B,CAAA;IAC7B,kDAA8B,CAAA;IAC9B,+CAA2B,CAAA;IAC3B,yEAAqD,CAAA;AACvD,CAAC,EANW,gBAAgB,GAAhB,wBAAgB,KAAhB,wBAAgB,QAM3B"}
package/dist/types.d.ts CHANGED
@@ -1,20 +1,37 @@
1
- import { FeatureResultField } from './constants';
2
- export declare type AnyType = any;
1
+ import { FeatureResultField, KameleoonException } from './constants';
2
+ import { KameleoonError } from './KameleoonError';
3
3
  export declare type Without<T, K> = Pick<T, Exclude<keyof T, K>>;
4
+ declare type JSONValue = string | number | boolean | {
5
+ [x: string]: JSONValue;
6
+ } | JSONValue[];
4
7
  export declare type FeatureFlagVariableType = boolean | number | string | undefined;
5
8
  export declare type FeatureVariableType = Record<string, FeatureFlagVariableType>;
6
9
  export declare type UnknownPropsType = Record<string, unknown>;
10
+ export declare type VariableKeyType = string | string[];
11
+ export declare type VariableKeysType = {
12
+ [environment: string]: VariableKeyType;
13
+ };
14
+ export declare type RemoteSourceDataType = Record<string, JSONValue>;
15
+ export declare type VariationAssociatedDataType = Record<string | number | symbol, JSONValue> | null;
16
+ export declare type RemoteSourceResultType = {
17
+ data: RemoteSourceDataType | null;
18
+ error: KameleoonError | null;
19
+ };
7
20
  export interface IFeature {
8
- /** Feature flag status */
9
- [FeatureResultField.IsActive]: boolean;
10
- /** Feature flag variables */
11
- [FeatureResultField.Variables]: FeatureVariableType[];
21
+ feature: {
22
+ /** Feature flag status */
23
+ [FeatureResultField.IsActive]: boolean;
24
+ /** Feature flag variables */
25
+ [FeatureResultField.Variables]: FeatureVariableType[];
26
+ };
27
+ errors: KameleoonException[];
12
28
  }
13
29
  export interface IFeatureParams {
14
30
  /** Unique identifier or key of the feature you want to expose to a user */
15
31
  featureKey: string | number;
16
32
  /** Key of the variable */
17
- variableKey: string | string[];
33
+ variableKeys: VariableKeysType;
18
34
  /** Unique identifier of the user */
19
35
  visitorCode?: string;
20
36
  }
37
+ export {};
package/dist/types.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":";;AAAA,yCAAiD"}
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":";;AAAA,yCAAqE"}
@@ -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
7
  hasFeature: (visitorCode: string, featureKey: string | number) => 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,28 @@ 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");
7
8
  /**
8
9
  * A React Hook that returns callback function which activates a feature toggle
9
10
  */
10
11
  function useActivateFeature() {
11
12
  var client = (0, useKameleoon_1.useKameleoon)().client;
13
+ var _a = (0, useError_1.useError)(), error = _a.error, setError = _a.setError;
12
14
  var hasFeature = (0, react_1.useCallback)(function (visitorCode, featureKey) {
13
- return client.activateFeature(visitorCode, featureKey);
14
- }, [client]);
15
+ try {
16
+ return client.activateFeature(visitorCode, featureKey);
17
+ }
18
+ catch (unknownError) {
19
+ setError(unknownError);
20
+ return false;
21
+ }
22
+ }, [client, setError]);
15
23
  if (!client) {
16
24
  throw new ProviderError_1.ProviderError('useActivateFeature');
17
25
  }
18
26
  return {
19
27
  hasFeature: hasFeature,
28
+ error: error,
20
29
  };
21
30
  }
22
31
  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;AAWtC;;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,UAAU,GAAG,IAAA,mBAAW,EAC5B,UAAC,WAAmB,EAAE,UAA2B;QAC/C,IAAI;YACF,OAAO,MAAM,CAAC,eAAe,CAAC,WAAW,EAAE,UAAU,CAAC,CAAC;SACxD;QAAC,OAAO,YAAY,EAAE;YACrB,QAAQ,CAAC,YAAY,CAAC,CAAC;YAEvB,OAAO,KAAK,CAAC;SACd;IACH,CAAC,EACD,CAAC,MAAM,EAAE,QAAQ,CAAC,CACnB,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;AAzBD,gDAyBC"}
@@ -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"}
@@ -2,7 +2,7 @@ import { Conversion } from 'kameleoon-client-javascript/dist/data';
2
2
  interface ConversionHookResult {
3
3
  /**
4
4
  * @param goalId - unique identifier of the goal
5
- * @param revenue - coversion revenue
5
+ * @param revenue - conversion revenue
6
6
  * @param negative - defines if the revenue is positive or negative
7
7
  */
8
8
  addConversion: (goalId: number, revenue?: number, negative?: boolean) => Conversion;
@@ -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"}
@@ -2,4 +2,4 @@ import { IFeature, IFeatureParams } from './types';
2
2
  /**
3
3
  * A React Hook that returns the status of a feature flag and specified variables
4
4
  */
5
- export declare function useFeature({ featureKey, variableKey, visitorCode, }: IFeatureParams): IFeature;
5
+ export declare function useFeature({ featureKey, variableKeys, visitorCode, }: IFeatureParams): IFeature;
@@ -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");
@@ -17,19 +33,23 @@ var useActivateFeature_1 = require("./useActivateFeature");
17
33
  var useFeatureVariable_1 = require("./useFeatureVariable");
18
34
  var constants_1 = require("./constants");
19
35
  var useVisitorCode_1 = require("./useVisitorCode");
36
+ var useKameleoon_1 = require("./useKameleoon");
37
+ var useErrors_1 = require("./useErrors");
20
38
  /**
21
39
  * A React Hook that returns the status of a feature flag and specified variables
22
40
  */
23
41
  function useFeature(_a) {
24
42
  var _b;
25
- var featureKey = _a.featureKey, variableKey = _a.variableKey, visitorCode = _a.visitorCode;
26
- var hasFeature = (0, useActivateFeature_1.useActivateFeature)().hasFeature;
27
- var getFeatureVariable = (0, useFeatureVariable_1.useFeatureVariable)().getFeatureVariable;
43
+ var featureKey = _a.featureKey, variableKeys = _a.variableKeys, visitorCode = _a.visitorCode;
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;
28
46
  var getVisitorCode = (0, useVisitorCode_1.useVisitorCode)().getVisitorCode;
29
- var _c = (0, react_1.useState)((_b = {},
47
+ var client = (0, useKameleoon_1.useKameleoon)().client;
48
+ var _e = __read((0, react_1.useState)((_b = {},
30
49
  _b[constants_1.FeatureResultField.IsActive] = false,
31
50
  _b[constants_1.FeatureResultField.Variables] = [],
32
- _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;
33
53
  var userCode = visitorCode !== null && visitorCode !== void 0 ? visitorCode : getVisitorCode('');
34
54
  function getVariableObject(key, value) {
35
55
  var _a;
@@ -40,27 +60,33 @@ function useFeature(_a) {
40
60
  }
41
61
  return {};
42
62
  }
43
- var getVariablesArray = (0, react_1.useCallback)(function () {
63
+ var getVariablesArray = (0, react_1.useCallback)(function (environment) {
44
64
  var variablesArray = [];
45
- if (Array.isArray(variableKey)) {
46
- variableKey.forEach(function (key) {
65
+ var environmentVariableKeys = variableKeys[environment];
66
+ if (Array.isArray(environmentVariableKeys)) {
67
+ environmentVariableKeys.forEach(function (key) {
47
68
  variablesArray.push(getVariableObject(key, getFeatureVariable(featureKey, key)));
48
69
  });
49
70
  }
50
71
  else {
51
- variablesArray.push(getVariableObject(variableKey, getFeatureVariable(featureKey, variableKey)));
72
+ variablesArray.push(getVariableObject(environmentVariableKeys, getFeatureVariable(featureKey, environmentVariableKeys)));
52
73
  }
53
74
  return variablesArray;
54
- }, [featureKey, variableKey, getFeatureVariable]);
75
+ }, [variableKeys, getFeatureVariable, featureKey]);
55
76
  (0, react_1.useEffect)(function () {
56
77
  var _a;
78
+ var _b, _c, _d;
79
+ var _e = __read((_b = client.configurations) === null || _b === void 0 ? void 0 : _b.configuration.featureFlags.filter(function (item) {
80
+ return item.identificationKey === featureKey;
81
+ }), 1), featureFlag = _e[0];
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;
57
83
  try {
58
84
  setFeature((_a = {},
59
85
  _a[constants_1.FeatureResultField.IsActive] = hasFeature(userCode, featureKey),
60
- _a[constants_1.FeatureResultField.Variables] = getVariablesArray(),
86
+ _a[constants_1.FeatureResultField.Variables] = getVariablesArray(currentEnvironment),
61
87
  _a));
62
88
  }
63
- catch (_b) {
89
+ catch (_f) {
64
90
  setFeature(function (prevFeature) {
65
91
  var _a;
66
92
  return (__assign(__assign({}, prevFeature), (_a = {}, _a[constants_1.FeatureResultField.IsActive] = false, _a)));
@@ -69,7 +95,10 @@ function useFeature(_a) {
69
95
  // getVariablesArray put in dependencies creates an infinite loop
70
96
  // eslint-disable-next-line react-hooks/exhaustive-deps
71
97
  }, [userCode, featureKey, hasFeature]);
72
- 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 };
73
102
  }
74
103
  exports.useFeature = useFeature;
75
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,yCAAiD;AACjD,mDAAkD;AAElD;;GAEG;AACH,SAAgB,UAAU,CAAC,EAIV;;QAHf,UAAU,gBAAA,EACV,WAAW,iBAAA,EACX,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;IACtC,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,EAAC;QACpC,IAAM,cAAc,GAAG,EAAE,CAAC;QAE1B,IAAI,KAAK,CAAC,OAAO,CAAC,WAAW,CAAC,EAAE;YAC9B,WAAW,CAAC,OAAO,CAAC,UAAC,GAAG;gBACtB,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,WAAW,EACX,kBAAkB,CAAC,UAAU,EAAE,WAAW,CAAC,CAC5C,CACF,CAAC;SACH;QAED,OAAO,cAAc,CAAC;IACxB,CAAC,EAAE,CAAC,UAAU,EAAE,WAAW,EAAE,kBAAkB,CAAC,CAAC,CAAC;IAElD,IAAA,iBAAS,EAAC;;QACR,IAAI;YACF,UAAU;gBACR,GAAC,8BAAkB,CAAC,QAAQ,IAAG,UAAU,CAAC,QAAQ,EAAE,UAAU,CAAC;gBAC/D,GAAC,8BAAkB,CAAC,SAAS,IAAG,iBAAiB,EAAE;oBACnD,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;AAlED,gCAkEC"}
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;
@@ -26,10 +28,17 @@ function useFeatureVariable() {
26
28
  return value;
27
29
  }, []);
28
30
  var getFeatureVariable = (0, react_1.useCallback)(function (featureKey, variableKey) {
29
- return getProcessedVariable(client.obtainFeatureVariable(featureKey, variableKey));
30
- }, [client, getProcessedVariable]);
31
+ try {
32
+ return getProcessedVariable(client.obtainFeatureVariable(featureKey, variableKey));
33
+ }
34
+ catch (unknownError) {
35
+ setError(unknownError);
36
+ return undefined;
37
+ }
38
+ }, [client, getProcessedVariable, setError]);
31
39
  return {
32
40
  getFeatureVariable: getFeatureVariable,
41
+ error: error,
33
42
  };
34
43
  }
35
44
  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,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,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;AA3CD,gDA2CC"}
@@ -0,0 +1,12 @@
1
+ import { RemoteSourceResultType } from './types';
2
+ interface RetrieveDataFromRemoteSourceHookResult {
3
+ /**
4
+ * @param key - unique key for data defined for Kameleoon Data API
5
+ */
6
+ retrieveDataFromRemoteSource: (key: string) => Promise<RemoteSourceResultType>;
7
+ }
8
+ /**
9
+ * A React Hook that returns asynchronous callback function which retrieves data from Kameleoon Data API
10
+ */
11
+ export declare function useRetrieveDataFromRemoteSource(): RetrieveDataFromRemoteSourceHookResult;
12
+ export {};