@kameleoon/javascript-sdk-core 1.1.1 → 2.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (157) hide show
  1. package/dist/cacheManager/cacheManager.d.ts +38 -0
  2. package/dist/cacheManager/cacheManager.js +74 -0
  3. package/dist/cacheManager/cacheManager.js.map +1 -0
  4. package/dist/cacheManager/index.d.ts +2 -0
  5. package/dist/cacheManager/index.js +20 -0
  6. package/dist/cacheManager/index.js.map +1 -0
  7. package/dist/cacheManager/types.d.ts +14 -0
  8. package/dist/cacheManager/types.js +6 -0
  9. package/dist/cacheManager/types.js.map +1 -0
  10. package/dist/campaignConfiguration/campaignConfiguration.d.ts +2 -1
  11. package/dist/campaignConfiguration/campaignConfiguration.js +243 -196
  12. package/dist/campaignConfiguration/campaignConfiguration.js.map +1 -1
  13. package/dist/campaignConfiguration/constants.d.ts +3 -3
  14. package/dist/campaignConfiguration/constants.js +22 -16
  15. package/dist/campaignConfiguration/constants.js.map +1 -1
  16. package/dist/campaignConfiguration/index.d.ts +1 -0
  17. package/dist/campaignConfiguration/index.js +85 -6
  18. package/dist/campaignConfiguration/index.js.map +1 -1
  19. package/dist/campaignConfiguration/types.d.ts +7 -3
  20. package/dist/campaignConfiguration/types.js +53 -45
  21. package/dist/campaignConfiguration/types.js.map +1 -1
  22. package/dist/clientSettings/clientSettings.d.ts +1 -1
  23. package/dist/clientSettings/clientSettings.js +28 -21
  24. package/dist/clientSettings/clientSettings.js.map +1 -1
  25. package/dist/clientSettings/index.js +18 -4
  26. package/dist/clientSettings/index.js.map +1 -1
  27. package/dist/clientSettings/types.d.ts +1 -1
  28. package/dist/clientSettings/types.js +4 -1
  29. package/dist/clientSettings/types.js.map +1 -1
  30. package/dist/constants.d.ts +11 -0
  31. package/dist/constants.js +37 -14
  32. package/dist/constants.js.map +1 -1
  33. package/dist/eventSource/constants.js +6 -2
  34. package/dist/eventSource/constants.js.map +1 -1
  35. package/dist/eventSource/externalEventSource.js +28 -20
  36. package/dist/eventSource/externalEventSource.js.map +1 -1
  37. package/dist/eventSource/index.js +49 -6
  38. package/dist/eventSource/index.js.map +1 -1
  39. package/dist/eventSource/types.d.ts +1 -1
  40. package/dist/eventSource/types.js +4 -1
  41. package/dist/eventSource/types.js.map +1 -1
  42. package/dist/hasher/hasher.d.ts +1 -1
  43. package/dist/hasher/hasher.js +37 -26
  44. package/dist/hasher/hasher.js.map +1 -1
  45. package/dist/hasher/index.js +11 -4
  46. package/dist/hasher/index.js.map +1 -1
  47. package/dist/hasher/types.d.ts +1 -1
  48. package/dist/hasher/types.js +4 -1
  49. package/dist/hasher/types.js.map +1 -1
  50. package/dist/index.d.ts +4 -2
  51. package/dist/index.js +309 -28
  52. package/dist/index.js.map +1 -1
  53. package/dist/kameleoonClient.d.ts +32 -19
  54. package/dist/kameleoonClient.js +353 -235
  55. package/dist/kameleoonClient.js.map +1 -1
  56. package/dist/kameleoonData/browser.js +37 -32
  57. package/dist/kameleoonData/browser.js.map +1 -1
  58. package/dist/kameleoonData/constants.js +6 -2
  59. package/dist/kameleoonData/constants.js.map +1 -1
  60. package/dist/kameleoonData/conversion.js +47 -40
  61. package/dist/kameleoonData/conversion.js.map +1 -1
  62. package/dist/kameleoonData/customData.js +62 -58
  63. package/dist/kameleoonData/customData.js.map +1 -1
  64. package/dist/kameleoonData/device.js +37 -32
  65. package/dist/kameleoonData/device.js.map +1 -1
  66. package/dist/kameleoonData/index.js +101 -18
  67. package/dist/kameleoonData/index.js.map +1 -1
  68. package/dist/kameleoonData/nonce.js +25 -13
  69. package/dist/kameleoonData/nonce.js.map +1 -1
  70. package/dist/kameleoonData/pageView.js +52 -44
  71. package/dist/kameleoonData/pageView.js.map +1 -1
  72. package/dist/kameleoonData/types.js +41 -26
  73. package/dist/kameleoonData/types.js.map +1 -1
  74. package/dist/kameleoonData/userAgent.js +33 -24
  75. package/dist/kameleoonData/userAgent.js.map +1 -1
  76. package/dist/kameleoonError/constants.d.ts +1 -1
  77. package/dist/kameleoonError/constants.js +25 -21
  78. package/dist/kameleoonError/constants.js.map +1 -1
  79. package/dist/kameleoonError/helpers.js +6 -4
  80. package/dist/kameleoonError/helpers.js.map +1 -1
  81. package/dist/kameleoonError/index.js +25 -8
  82. package/dist/kameleoonError/index.js.map +1 -1
  83. package/dist/kameleoonError/kameleoonError.d.ts +1 -1
  84. package/dist/kameleoonError/kameleoonError.js +64 -53
  85. package/dist/kameleoonError/kameleoonError.js.map +1 -1
  86. package/dist/kameleoonError/types.d.ts +1 -1
  87. package/dist/kameleoonError/types.js +26 -22
  88. package/dist/kameleoonError/types.js.map +1 -1
  89. package/dist/kameleoonUtils.js +34 -33
  90. package/dist/kameleoonUtils.js.map +1 -1
  91. package/dist/requester/constants.d.ts +6 -7
  92. package/dist/requester/constants.js +58 -45
  93. package/dist/requester/constants.js.map +1 -1
  94. package/dist/requester/index.d.ts +2 -2
  95. package/dist/requester/index.js +67 -8
  96. package/dist/requester/index.js.map +1 -1
  97. package/dist/requester/requester.d.ts +7 -7
  98. package/dist/requester/requester.js +90 -113
  99. package/dist/requester/requester.js.map +1 -1
  100. package/dist/requester/types.d.ts +38 -10
  101. package/dist/requester/types.js +14 -36
  102. package/dist/requester/types.js.map +1 -1
  103. package/dist/storage/constants.js +11 -7
  104. package/dist/storage/constants.js.map +1 -1
  105. package/dist/storage/externalStorage.js +33 -26
  106. package/dist/storage/externalStorage.js.map +1 -1
  107. package/dist/storage/index.js +55 -6
  108. package/dist/storage/index.js.map +1 -1
  109. package/dist/storage/types.js +4 -1
  110. package/dist/storage/types.js.map +1 -1
  111. package/dist/targeting/conditions/conditionFactory.js +24 -19
  112. package/dist/targeting/conditions/conditionFactory.js.map +1 -1
  113. package/dist/targeting/conditions/customDataCondition.js +99 -88
  114. package/dist/targeting/conditions/customDataCondition.js.map +1 -1
  115. package/dist/targeting/conditions/exclusiveExperimentCondition.js +27 -15
  116. package/dist/targeting/conditions/exclusiveExperimentCondition.js.map +1 -1
  117. package/dist/targeting/conditions/index.js +45 -10
  118. package/dist/targeting/conditions/index.js.map +1 -1
  119. package/dist/targeting/conditions/targetExperimentCondition.js +54 -32
  120. package/dist/targeting/conditions/targetExperimentCondition.js.map +1 -1
  121. package/dist/targeting/conditions/types.js +4 -1
  122. package/dist/targeting/conditions/types.js.map +1 -1
  123. package/dist/targeting/index.js +79 -13
  124. package/dist/targeting/index.js.map +1 -1
  125. package/dist/targeting/targetingNode.js +41 -33
  126. package/dist/targeting/targetingNode.js.map +1 -1
  127. package/dist/targeting/targetingTree.js +125 -104
  128. package/dist/targeting/targetingTree.js.map +1 -1
  129. package/dist/targeting/types.js +99 -91
  130. package/dist/targeting/types.js.map +1 -1
  131. package/dist/types.d.ts +34 -2
  132. package/dist/types.js +58 -21
  133. package/dist/types.js.map +1 -1
  134. package/dist/utilities/constants.js +6 -2
  135. package/dist/utilities/constants.js.map +1 -1
  136. package/dist/utilities/index.js +11 -4
  137. package/dist/utilities/index.js.map +1 -1
  138. package/dist/utilities/types.d.ts +9 -1
  139. package/dist/utilities/types.js +4 -1
  140. package/dist/utilities/types.js.map +1 -1
  141. package/dist/utilities/utilities.d.ts +6 -3
  142. package/dist/utilities/utilities.js +171 -105
  143. package/dist/utilities/utilities.js.map +1 -1
  144. package/dist/variationConfiguration/index.js +24 -4
  145. package/dist/variationConfiguration/index.js.map +1 -1
  146. package/dist/variationConfiguration/types.d.ts +1 -1
  147. package/dist/variationConfiguration/types.js +4 -1
  148. package/dist/variationConfiguration/types.js.map +1 -1
  149. package/dist/variationConfiguration/variation.js +35 -28
  150. package/dist/variationConfiguration/variation.js.map +1 -1
  151. package/dist/variationConfiguration/variationConfiguration.d.ts +5 -6
  152. package/dist/variationConfiguration/variationConfiguration.js +263 -230
  153. package/dist/variationConfiguration/variationConfiguration.js.map +1 -1
  154. package/package.json +6 -4
  155. package/dist/hasher/constants.d.ts +0 -1
  156. package/dist/hasher/constants.js +0 -5
  157. package/dist/hasher/constants.js.map +0 -1
@@ -1,10 +1,69 @@
1
1
  "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.UrlParameter = exports.UrlEventType = exports.URL = exports.Requester = void 0;
4
- var requester_1 = require("./requester");
5
- Object.defineProperty(exports, "Requester", { enumerable: true, get: function () { return requester_1.Requester; } });
6
- var constants_1 = require("./constants");
7
- Object.defineProperty(exports, "URL", { enumerable: true, get: function () { return constants_1.URL; } });
8
- Object.defineProperty(exports, "UrlEventType", { enumerable: true, get: function () { return constants_1.UrlEventType; } });
9
- Object.defineProperty(exports, "UrlParameter", { enumerable: true, get: function () { return constants_1.UrlParameter; } });
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ Object.defineProperty(exports, "GetClientConfigurationResultType", {
7
+ enumerable: true,
8
+ get: function () {
9
+ return _types.GetClientConfigurationResultType;
10
+ }
11
+ });
12
+ Object.defineProperty(exports, "Header", {
13
+ enumerable: true,
14
+ get: function () {
15
+ return _constants.Header;
16
+ }
17
+ });
18
+ Object.defineProperty(exports, "HttpMethod", {
19
+ enumerable: true,
20
+ get: function () {
21
+ return _types.HttpMethod;
22
+ }
23
+ });
24
+ Object.defineProperty(exports, "IExternalRequestDispatcher", {
25
+ enumerable: true,
26
+ get: function () {
27
+ return _types.IExternalRequestDispatcher;
28
+ }
29
+ });
30
+ Object.defineProperty(exports, "Requester", {
31
+ enumerable: true,
32
+ get: function () {
33
+ return _requester.Requester;
34
+ }
35
+ });
36
+ Object.defineProperty(exports, "TrackExperimentParamsType", {
37
+ enumerable: true,
38
+ get: function () {
39
+ return _types.TrackExperimentParamsType;
40
+ }
41
+ });
42
+ Object.defineProperty(exports, "TrackParametersType", {
43
+ enumerable: true,
44
+ get: function () {
45
+ return _types.TrackParametersType;
46
+ }
47
+ });
48
+ Object.defineProperty(exports, "URL", {
49
+ enumerable: true,
50
+ get: function () {
51
+ return _constants.URL;
52
+ }
53
+ });
54
+ Object.defineProperty(exports, "UrlEventType", {
55
+ enumerable: true,
56
+ get: function () {
57
+ return _constants.UrlEventType;
58
+ }
59
+ });
60
+ Object.defineProperty(exports, "UrlParameter", {
61
+ enumerable: true,
62
+ get: function () {
63
+ return _constants.UrlParameter;
64
+ }
65
+ });
66
+ var _requester = require("./requester");
67
+ var _constants = require("./constants");
68
+ var _types = require("./types");
10
69
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/requester/index.ts"],"names":[],"mappings":";;;AAAA,yCAAwC;AAA/B,sGAAA,SAAS,OAAA;AAClB,yCAA8D;AAArD,gGAAA,GAAG,OAAA;AAAE,yGAAA,YAAY,OAAA;AAAE,yGAAA,YAAY,OAAA"}
1
+ {"version":3,"file":"index.js","names":["_requester","require","_constants","_types"],"sources":["../../src/requester/index.ts"],"sourcesContent":["export { Requester } from './requester';\nexport { URL, UrlEventType, UrlParameter, Header, } from './constants';\nexport {\n HttpMethod,\n TrackParametersType,\n TrackExperimentParamsType,\n IExternalRequestDispatcher,\n GetClientConfigurationResultType,\n} from './types';\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,IAAAA,UAAA,GAAAC,OAAA;AACA,IAAAC,UAAA,GAAAD,OAAA;AACA,IAAAE,MAAA,GAAAF,OAAA"}
@@ -1,9 +1,8 @@
1
1
  import { Result } from 'ts-res';
2
- import { Environment } from '../types';
3
2
  import { KameleoonError } from '../kameleoonError';
4
- import { GetClientConfigurationResultType, TrackDataParamsType, TrackExperimentParamsType } from './types';
5
- import { Nonce } from '../kameleoonData/nonce';
3
+ import { GetClientConfigurationResultType, RequesterParamsType, TrackDataParamsType, TrackExperimentParamsType } from './types';
6
4
  import { JSONType } from '../campaignConfiguration';
5
+ import { Nonce } from '../kameleoonData/nonce';
7
6
  export interface IRequester {
8
7
  getClientConfiguration: () => Promise<Result<GetClientConfigurationResultType, KameleoonError>>;
9
8
  getRemoteData: (key: string) => Promise<Result<JSONType, KameleoonError>>;
@@ -12,12 +11,13 @@ export interface IRequester {
12
11
  }
13
12
  export declare class Requester extends Nonce implements IRequester {
14
13
  private siteCode;
15
- private environment;
16
- private headers;
17
- constructor(siteCode: string, environment: Environment | null);
14
+ private environment?;
15
+ private requestDispatcher;
16
+ private packageInfo;
17
+ constructor({ siteCode, environment, packageInfo, requestDispatcher, }: RequesterParamsType);
18
18
  getClientConfiguration(timeStamp?: number): Promise<Result<GetClientConfigurationResultType, KameleoonError>>;
19
19
  getRemoteData(key: string): Promise<Result<JSONType, KameleoonError>>;
20
20
  trackExperiment({ variationId, visitorCode, experimentId, isUnallocated, body, userAgent, callback, }: TrackExperimentParamsType): Promise<void>;
21
21
  trackData({ visitorCode, body, userAgent, }: TrackDataParamsType): Promise<void>;
22
- private getTrackingParameters;
22
+ private getTrackingUrl;
23
23
  }
@@ -1,121 +1,98 @@
1
1
  "use strict";
2
- var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
- function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
- return new (P || (P = Promise))(function (resolve, reject) {
5
- function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
- function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
- function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
- step((generator = generator.apply(thisArg, _arguments || [])).next());
9
- });
10
- };
11
- var __importDefault = (this && this.__importDefault) || function (mod) {
12
- return (mod && mod.__esModule) ? mod : { "default": mod };
13
- };
14
- Object.defineProperty(exports, "__esModule", { value: true });
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
15
6
  exports.Requester = void 0;
16
- const node_fetch_1 = __importDefault(require("node-fetch"));
17
- const ts_res_1 = require("ts-res");
18
- const kameleoonError_1 = require("../kameleoonError");
19
- const constants_1 = require("./constants");
20
- const types_1 = require("./types");
21
- const nonce_1 = require("../kameleoonData/nonce");
22
- class Requester extends nonce_1.Nonce {
23
- constructor(siteCode, environment) {
24
- super();
25
- const { npm_package_name, npm_package_version } = process.env;
26
- this.siteCode = siteCode;
27
- this.environment = environment;
28
- this.headers = {
29
- [constants_1.Header.KameleoonClient]: `${npm_package_name}/${npm_package_version}`,
30
- };
31
- }
32
- getClientConfiguration(timeStamp) {
33
- return __awaiter(this, void 0, void 0, function* () {
34
- const environmentParam = this.environment
35
- ? constants_1.UrlParameter.Environment + this.environment
36
- : '';
37
- const timeStampParam = timeStamp ? constants_1.UrlParameter.Ts + timeStamp : '';
38
- const requestUrl = constants_1.URL.CLIENT_CONFIGURATION +
39
- constants_1.UrlQuery.Mobile +
40
- this.siteCode +
41
- environmentParam +
42
- timeStampParam;
43
- const response = yield (0, node_fetch_1.default)(requestUrl, { method: types_1.HttpMethod.Get });
44
- if (!response.ok) {
45
- return (0, ts_res_1.Err)(new kameleoonError_1.KameleoonError(kameleoonError_1.KameleoonException.ClientConfiguration));
46
- }
47
- const responseData = yield response.json();
48
- if (responseData) {
49
- return (0, ts_res_1.Ok)(responseData);
50
- }
51
- return (0, ts_res_1.Err)(new kameleoonError_1.KameleoonError(kameleoonError_1.KameleoonException.ClientConfiguration));
52
- });
53
- }
54
- getRemoteData(key) {
55
- return __awaiter(this, void 0, void 0, function* () {
56
- const requestUrl = constants_1.URL.API_DATA +
57
- constants_1.UrlQuery.Data +
58
- this.siteCode +
59
- constants_1.UrlParameter.Key +
60
- encodeURI(key);
61
- const response = yield (0, node_fetch_1.default)(requestUrl, { method: types_1.HttpMethod.Get });
62
- if (!response.ok) {
63
- return (0, ts_res_1.Err)(new kameleoonError_1.KameleoonError(kameleoonError_1.KameleoonException.RemoteData));
64
- }
65
- const responseData = yield response.json();
66
- if (responseData) {
67
- return (0, ts_res_1.Ok)(responseData);
68
- }
69
- return (0, ts_res_1.Err)(new kameleoonError_1.KameleoonError(kameleoonError_1.KameleoonException.RemoteData));
70
- });
7
+ var _tsRes = require("ts-res");
8
+ var _kameleoonError = require("../kameleoonError");
9
+ var _constants = require("./constants");
10
+ var _nonce = require("../kameleoonData/nonce");
11
+ 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; }
12
+ function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return typeof key === "symbol" ? key : String(key); }
13
+ 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); }
14
+ class Requester extends _nonce.Nonce {
15
+ constructor({
16
+ siteCode,
17
+ environment,
18
+ packageInfo,
19
+ requestDispatcher
20
+ }) {
21
+ super();
22
+ _defineProperty(this, "siteCode", void 0);
23
+ _defineProperty(this, "environment", void 0);
24
+ _defineProperty(this, "requestDispatcher", void 0);
25
+ _defineProperty(this, "packageInfo", void 0);
26
+ this.requestDispatcher = requestDispatcher;
27
+ this.siteCode = siteCode;
28
+ this.environment = environment;
29
+ this.packageInfo = packageInfo;
30
+ }
31
+ async getClientConfiguration(timeStamp) {
32
+ const environmentParam = this.environment ? _constants.UrlParameter.Environment + this.environment : '';
33
+ const timeStampParam = timeStamp ? _constants.UrlParameter.Ts + timeStamp : '';
34
+ const requestUrl = _constants.URL.CLIENT_CONFIGURATION + _constants.UrlQuery.Mobile + this.siteCode + environmentParam + timeStampParam;
35
+ const response = await this.requestDispatcher.get(requestUrl);
36
+ if (!response) {
37
+ return (0, _tsRes.Err)(new _kameleoonError.KameleoonError(_kameleoonError.KameleoonException.ClientConfiguration));
71
38
  }
72
- trackExperiment({ variationId, visitorCode, experimentId, isUnallocated, body, userAgent, callback, }) {
73
- return __awaiter(this, void 0, void 0, function* () {
74
- const noneVariation = isUnallocated
75
- ? constants_1.UrlParameter.NoneVariation + isUnallocated
76
- : '';
77
- const trackingParameters = this.getTrackingParameters(visitorCode);
78
- const requestUrl = constants_1.URL.API_SSX +
79
- constants_1.UrlTracking.Experiment +
80
- trackingParameters +
81
- constants_1.UrlParameter.ExperimentId +
82
- experimentId +
83
- constants_1.UrlParameter.VariationId +
84
- variationId +
85
- noneVariation;
86
- const headers = userAgent
87
- ? Object.assign(Object.assign({}, this.headers), { [constants_1.Header.UserAgent]: userAgent }) : this.headers;
88
- const response = yield (0, node_fetch_1.default)(requestUrl, {
89
- method: types_1.HttpMethod.Post,
90
- headers,
91
- body,
92
- });
93
- if (response.ok && callback) {
94
- callback();
95
- }
96
- });
39
+ return (0, _tsRes.Ok)(response);
40
+ }
41
+ async getRemoteData(key) {
42
+ const requestUrl = _constants.URL.DATA + this.siteCode + _constants.UrlParameter.Key + encodeURI(key);
43
+ const response = await this.requestDispatcher.get(requestUrl);
44
+ if (!response) {
45
+ return (0, _tsRes.Err)(new _kameleoonError.KameleoonError(_kameleoonError.KameleoonException.RemoteData));
97
46
  }
98
- trackData({ visitorCode, body, userAgent, }) {
99
- return __awaiter(this, void 0, void 0, function* () {
100
- const trackingParameters = this.getTrackingParameters(visitorCode);
101
- const requestUrl = constants_1.URL.API_SSX + constants_1.UrlTracking.Data + trackingParameters;
102
- const headers = userAgent
103
- ? Object.assign(Object.assign({}, this.headers), { [constants_1.Header.UserAgent]: userAgent }) : this.headers;
104
- (0, node_fetch_1.default)(requestUrl, {
105
- method: types_1.HttpMethod.Post,
106
- headers,
107
- body,
108
- });
109
- });
110
- }
111
- getTrackingParameters(visitorCode) {
112
- return (constants_1.UrlParameter.Nonce +
113
- this.nonce +
114
- constants_1.UrlParameter.SiteCode +
115
- this.siteCode +
116
- constants_1.UrlParameter.VisitorCode +
117
- encodeURIComponent(visitorCode));
47
+ return (0, _tsRes.Ok)(response);
48
+ }
49
+ async trackExperiment({
50
+ variationId,
51
+ visitorCode,
52
+ experimentId,
53
+ isUnallocated,
54
+ body,
55
+ userAgent,
56
+ callback
57
+ }) {
58
+ const url = this.getTrackingUrl(visitorCode);
59
+ const unallocatedAddition = !body ? _constants.UrlEventType.Activity + _constants.UrlParameter.Nonce + this.nonce : '';
60
+ const bodyAddition = isUnallocated ? unallocatedAddition : _constants.UrlEventType.Experiment + _constants.UrlParameter.Id + experimentId + _constants.UrlParameter.VariationId + variationId + _constants.UrlParameter.Nonce + this.nonce;
61
+ const extendedBody = bodyAddition ? body + '\n' + bodyAddition : body;
62
+ const headers = userAgent ? {
63
+ [_constants.Header.UserAgent]: userAgent
64
+ } : undefined;
65
+ const response = await this.requestDispatcher.track({
66
+ url,
67
+ headers,
68
+ body: extendedBody
69
+ });
70
+ if (response && callback) {
71
+ callback();
118
72
  }
73
+ }
74
+ async trackData({
75
+ visitorCode,
76
+ body,
77
+ userAgent
78
+ }) {
79
+ const url = this.getTrackingUrl(visitorCode);
80
+ const headers = userAgent ? {
81
+ [_constants.Header.UserAgent]: userAgent
82
+ } : undefined;
83
+ this.requestDispatcher.track({
84
+ url,
85
+ headers,
86
+ body
87
+ });
88
+ }
89
+ getTrackingUrl(visitorCode) {
90
+ const {
91
+ type,
92
+ version
93
+ } = this.packageInfo;
94
+ return _constants.URL.TRACKING + this.siteCode + _constants.UrlParameter.VisitorCode + encodeURIComponent(visitorCode) + _constants.UrlParameter.SdkName + type + _constants.UrlParameter.SdkVersion + version;
95
+ }
119
96
  }
120
97
  exports.Requester = Requester;
121
98
  //# sourceMappingURL=requester.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"requester.js","sourceRoot":"","sources":["../../src/requester/requester.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"requester.js","names":["_tsRes","require","_kameleoonError","_constants","_nonce","_defineProperty","obj","key","value","_toPropertyKey","Object","defineProperty","enumerable","configurable","writable","arg","_toPrimitive","String","input","hint","prim","Symbol","toPrimitive","undefined","res","call","TypeError","Number","Requester","Nonce","constructor","siteCode","environment","packageInfo","requestDispatcher","getClientConfiguration","timeStamp","environmentParam","UrlParameter","Environment","timeStampParam","Ts","requestUrl","URL","CLIENT_CONFIGURATION","UrlQuery","Mobile","response","get","Err","KameleoonError","KameleoonException","ClientConfiguration","Ok","getRemoteData","DATA","Key","encodeURI","RemoteData","trackExperiment","variationId","visitorCode","experimentId","isUnallocated","body","userAgent","callback","url","getTrackingUrl","unallocatedAddition","UrlEventType","Activity","nonce","bodyAddition","Experiment","Id","VariationId","extendedBody","headers","Header","UserAgent","track","trackData","type","version","TRACKING","VisitorCode","encodeURIComponent","SdkName","SdkVersion","exports"],"sources":["../../src/requester/requester.ts"],"sourcesContent":["import { Err, Ok, Result } from 'ts-res';\nimport { Environment, ExternalPackageInfoType } from '../types';\nimport { KameleoonError, KameleoonException } from '../kameleoonError';\nimport { URL, UrlParameter, Header, UrlQuery, UrlEventType } from './constants';\nimport {\n GetClientConfigurationResultType,\n RequesterParamsType,\n TrackDataParamsType,\n TrackExperimentParamsType,\n IExternalRequestDispatcher,\n} from './types';\nimport { JSONType } from '../campaignConfiguration';\nimport { Nonce } from '../kameleoonData/nonce';\n\nexport interface IRequester {\n getClientConfiguration: () => Promise<\n Result<GetClientConfigurationResultType, KameleoonError>\n >;\n getRemoteData: (key: string) => Promise<Result<JSONType, KameleoonError>>;\n trackExperiment: ({\n variationId,\n visitorCode,\n experimentId,\n isUnallocated,\n callback,\n body,\n }: TrackExperimentParamsType) => Promise<void>;\n trackData: ({ visitorCode, body }: TrackDataParamsType) => Promise<void>;\n}\n\nexport class Requester extends Nonce implements IRequester {\n private siteCode: string;\n private environment?: Environment;\n private requestDispatcher: IExternalRequestDispatcher;\n private packageInfo: ExternalPackageInfoType;\n\n constructor({\n siteCode,\n environment,\n packageInfo,\n requestDispatcher,\n }: RequesterParamsType) {\n super();\n\n this.requestDispatcher = requestDispatcher;\n this.siteCode = siteCode;\n this.environment = environment;\n this.packageInfo = packageInfo;\n }\n\n public async getClientConfiguration(\n timeStamp?: number,\n ): Promise<Result<GetClientConfigurationResultType, KameleoonError>> {\n const environmentParam = this.environment\n ? UrlParameter.Environment + this.environment\n : '';\n const timeStampParam = timeStamp ? UrlParameter.Ts + timeStamp : '';\n\n const requestUrl =\n URL.CLIENT_CONFIGURATION +\n UrlQuery.Mobile +\n this.siteCode +\n environmentParam +\n timeStampParam;\n\n const response = await this.requestDispatcher.get(requestUrl);\n\n if (!response) {\n return Err(new KameleoonError(KameleoonException.ClientConfiguration));\n }\n\n return Ok(response as GetClientConfigurationResultType);\n }\n\n public async getRemoteData(\n key: string,\n ): Promise<Result<JSONType, KameleoonError>> {\n const requestUrl: string =\n URL.DATA + this.siteCode + UrlParameter.Key + encodeURI(key);\n\n const response = await this.requestDispatcher.get(requestUrl);\n\n if (!response) {\n return Err(new KameleoonError(KameleoonException.RemoteData));\n }\n\n return Ok(response);\n }\n\n public async trackExperiment({\n variationId,\n visitorCode,\n experimentId,\n isUnallocated,\n body,\n userAgent,\n callback,\n }: TrackExperimentParamsType): Promise<void> {\n const url = this.getTrackingUrl(visitorCode);\n\n const unallocatedAddition = !body\n ? UrlEventType.Activity + UrlParameter.Nonce + this.nonce\n : '';\n const bodyAddition = isUnallocated\n ? unallocatedAddition\n : UrlEventType.Experiment +\n UrlParameter.Id +\n experimentId +\n UrlParameter.VariationId +\n variationId +\n UrlParameter.Nonce +\n this.nonce;\n const extendedBody = bodyAddition ? body + '\\n' + bodyAddition : body;\n\n const headers = userAgent\n ? {\n [Header.UserAgent]: userAgent,\n }\n : undefined;\n\n const response = await this.requestDispatcher.track({\n url,\n headers,\n body: extendedBody,\n });\n\n if (response && callback) {\n callback();\n }\n }\n\n public async trackData({\n visitorCode,\n body,\n userAgent,\n }: TrackDataParamsType): Promise<void> {\n const url = this.getTrackingUrl(visitorCode);\n\n const headers = userAgent\n ? {\n [Header.UserAgent]: userAgent,\n }\n : undefined;\n\n this.requestDispatcher.track({\n url,\n headers,\n body,\n });\n }\n\n private getTrackingUrl(visitorCode: string): string {\n const { type, version } = this.packageInfo;\n\n return (\n URL.TRACKING +\n this.siteCode +\n UrlParameter.VisitorCode +\n encodeURIComponent(visitorCode) +\n UrlParameter.SdkName +\n type +\n UrlParameter.SdkVersion +\n version\n );\n }\n}\n"],"mappings":";;;;;;AAAA,IAAAA,MAAA,GAAAC,OAAA;AAEA,IAAAC,eAAA,GAAAD,OAAA;AACA,IAAAE,UAAA,GAAAF,OAAA;AASA,IAAAG,MAAA,GAAAH,OAAA;AAA+C,SAAAI,gBAAAC,GAAA,EAAAC,GAAA,EAAAC,KAAA,IAAAD,GAAA,GAAAE,cAAA,CAAAF,GAAA,OAAAA,GAAA,IAAAD,GAAA,IAAAI,MAAA,CAAAC,cAAA,CAAAL,GAAA,EAAAC,GAAA,IAAAC,KAAA,EAAAA,KAAA,EAAAI,UAAA,QAAAC,YAAA,QAAAC,QAAA,oBAAAR,GAAA,CAAAC,GAAA,IAAAC,KAAA,WAAAF,GAAA;AAAA,SAAAG,eAAAM,GAAA,QAAAR,GAAA,GAAAS,YAAA,CAAAD,GAAA,2BAAAR,GAAA,gBAAAA,GAAA,GAAAU,MAAA,CAAAV,GAAA;AAAA,SAAAS,aAAAE,KAAA,EAAAC,IAAA,eAAAD,KAAA,iBAAAA,KAAA,kBAAAA,KAAA,MAAAE,IAAA,GAAAF,KAAA,CAAAG,MAAA,CAAAC,WAAA,OAAAF,IAAA,KAAAG,SAAA,QAAAC,GAAA,GAAAJ,IAAA,CAAAK,IAAA,CAAAP,KAAA,EAAAC,IAAA,2BAAAK,GAAA,sBAAAA,GAAA,YAAAE,SAAA,4DAAAP,IAAA,gBAAAF,MAAA,GAAAU,MAAA,EAAAT,KAAA;AAkBxC,MAAMU,SAAS,SAASC,YAAK,CAAuB;EAMzDC,WAAWA,CAAC;IACVC,QAAQ;IACRC,WAAW;IACXC,WAAW;IACXC;EACmB,CAAC,EAAE;IACtB,KAAK,EAAE;IAAC7B,eAAA;IAAAA,eAAA;IAAAA,eAAA;IAAAA,eAAA;IAER,IAAI,CAAC6B,iBAAiB,GAAGA,iBAAiB;IAC1C,IAAI,CAACH,QAAQ,GAAGA,QAAQ;IACxB,IAAI,CAACC,WAAW,GAAGA,WAAW;IAC9B,IAAI,CAACC,WAAW,GAAGA,WAAW;EAChC;EAEA,MAAaE,sBAAsBA,CACjCC,SAAkB,EACiD;IACnE,MAAMC,gBAAgB,GAAG,IAAI,CAACL,WAAW,GACrCM,uBAAY,CAACC,WAAW,GAAG,IAAI,CAACP,WAAW,GAC3C,EAAE;IACN,MAAMQ,cAAc,GAAGJ,SAAS,GAAGE,uBAAY,CAACG,EAAE,GAAGL,SAAS,GAAG,EAAE;IAEnE,MAAMM,UAAU,GACdC,cAAG,CAACC,oBAAoB,GACxBC,mBAAQ,CAACC,MAAM,GACf,IAAI,CAACf,QAAQ,GACbM,gBAAgB,GAChBG,cAAc;IAEhB,MAAMO,QAAQ,GAAG,MAAM,IAAI,CAACb,iBAAiB,CAACc,GAAG,CAACN,UAAU,CAAC;IAE7D,IAAI,CAACK,QAAQ,EAAE;MACb,OAAO,IAAAE,UAAG,EAAC,IAAIC,8BAAc,CAACC,kCAAkB,CAACC,mBAAmB,CAAC,CAAC;IACxE;IAEA,OAAO,IAAAC,SAAE,EAACN,QAAQ,CAAqC;EACzD;EAEA,MAAaO,aAAaA,CACxB/C,GAAW,EACgC;IAC3C,MAAMmC,UAAkB,GACtBC,cAAG,CAACY,IAAI,GAAG,IAAI,CAACxB,QAAQ,GAAGO,uBAAY,CAACkB,GAAG,GAAGC,SAAS,CAAClD,GAAG,CAAC;IAE9D,MAAMwC,QAAQ,GAAG,MAAM,IAAI,CAACb,iBAAiB,CAACc,GAAG,CAACN,UAAU,CAAC;IAE7D,IAAI,CAACK,QAAQ,EAAE;MACb,OAAO,IAAAE,UAAG,EAAC,IAAIC,8BAAc,CAACC,kCAAkB,CAACO,UAAU,CAAC,CAAC;IAC/D;IAEA,OAAO,IAAAL,SAAE,EAACN,QAAQ,CAAC;EACrB;EAEA,MAAaY,eAAeA,CAAC;IAC3BC,WAAW;IACXC,WAAW;IACXC,YAAY;IACZC,aAAa;IACbC,IAAI;IACJC,SAAS;IACTC;EACyB,CAAC,EAAiB;IAC3C,MAAMC,GAAG,GAAG,IAAI,CAACC,cAAc,CAACP,WAAW,CAAC;IAE5C,MAAMQ,mBAAmB,GAAG,CAACL,IAAI,GAC7BM,uBAAY,CAACC,QAAQ,GAAGjC,uBAAY,CAACT,KAAK,GAAG,IAAI,CAAC2C,KAAK,GACvD,EAAE;IACN,MAAMC,YAAY,GAAGV,aAAa,GAC9BM,mBAAmB,GACnBC,uBAAY,CAACI,UAAU,GACvBpC,uBAAY,CAACqC,EAAE,GACfb,YAAY,GACZxB,uBAAY,CAACsC,WAAW,GACxBhB,WAAW,GACXtB,uBAAY,CAACT,KAAK,GAClB,IAAI,CAAC2C,KAAK;IACd,MAAMK,YAAY,GAAGJ,YAAY,GAAGT,IAAI,GAAG,IAAI,GAAGS,YAAY,GAAGT,IAAI;IAErE,MAAMc,OAAO,GAAGb,SAAS,GACrB;MACE,CAACc,iBAAM,CAACC,SAAS,GAAGf;IACtB,CAAC,GACD1C,SAAS;IAEb,MAAMwB,QAAQ,GAAG,MAAM,IAAI,CAACb,iBAAiB,CAAC+C,KAAK,CAAC;MAClDd,GAAG;MACHW,OAAO;MACPd,IAAI,EAAEa;IACR,CAAC,CAAC;IAEF,IAAI9B,QAAQ,IAAImB,QAAQ,EAAE;MACxBA,QAAQ,EAAE;IACZ;EACF;EAEA,MAAagB,SAASA,CAAC;IACrBrB,WAAW;IACXG,IAAI;IACJC;EACmB,CAAC,EAAiB;IACrC,MAAME,GAAG,GAAG,IAAI,CAACC,cAAc,CAACP,WAAW,CAAC;IAE5C,MAAMiB,OAAO,GAAGb,SAAS,GACrB;MACE,CAACc,iBAAM,CAACC,SAAS,GAAGf;IACtB,CAAC,GACD1C,SAAS;IAEb,IAAI,CAACW,iBAAiB,CAAC+C,KAAK,CAAC;MAC3Bd,GAAG;MACHW,OAAO;MACPd;IACF,CAAC,CAAC;EACJ;EAEQI,cAAcA,CAACP,WAAmB,EAAU;IAClD,MAAM;MAAEsB,IAAI;MAAEC;IAAQ,CAAC,GAAG,IAAI,CAACnD,WAAW;IAE1C,OACEU,cAAG,CAAC0C,QAAQ,GACZ,IAAI,CAACtD,QAAQ,GACbO,uBAAY,CAACgD,WAAW,GACxBC,kBAAkB,CAAC1B,WAAW,CAAC,GAC/BvB,uBAAY,CAACkD,OAAO,GACpBL,IAAI,GACJ7C,uBAAY,CAACmD,UAAU,GACvBL,OAAO;EAEX;AACF;AAACM,OAAA,CAAA9D,SAAA,GAAAA,SAAA"}
@@ -1,4 +1,12 @@
1
- import { ConfigurationDataType, FeatureFlagType } from '../campaignConfiguration';
1
+ import { JSONType, FeatureFlagType, ConfigurationDataType } from '../campaignConfiguration';
2
+ import { Environment, ExternalPackageInfoType } from '../types';
3
+ import { Header } from './constants';
4
+ export type RequesterParamsType = {
5
+ siteCode: string;
6
+ environment?: Environment;
7
+ packageInfo: ExternalPackageInfoType;
8
+ requestDispatcher: IExternalRequestDispatcher;
9
+ };
2
10
  export type TrackExperimentParamsType = {
3
11
  body: string;
4
12
  variationId: number;
@@ -20,16 +28,16 @@ export declare enum HttpMethod {
20
28
  Get = "GET",
21
29
  Post = "POST"
22
30
  }
23
- declare const EVENT_TYPE_KEYS: readonly ["customData", "staticData", "page", "conversion"];
24
- declare const PARAMETER_KEYS: readonly ["valueToCount", "nonce", "browserIndex", "siteCode", "environment", "visitorCode", "experimentId", "negative", "revenue", "title", "referrersIndices", "overwrite", "index", "noneVariation", "href", "variationId", "deviceType", "goalId", "ts", "key"];
25
- declare const TRACKING_KEYS: readonly ["experiment", "data"];
26
- declare const QUERY_KEYS: readonly ["data", "sse", "mobile"];
27
- export type TrackingType = Record<Capitalize<typeof TRACKING_KEYS[number]>, string>;
28
- export type QueryType = Record<Capitalize<typeof QUERY_KEYS[number]>, string>;
29
- export type ParameterType = Record<Capitalize<typeof PARAMETER_KEYS[number]>, string>;
30
- export type EventType = Record<Capitalize<typeof EVENT_TYPE_KEYS[number]>, string>;
31
+ declare const EVENT_TYPE_KEYS: readonly ["customData", "staticData", "page", "conversion", "activity", "experiment"];
32
+ declare const PARAMETER_KEYS: readonly ["valuesCountMap", "id", "nonce", "sdkName", "sdkVersion", "browserIndex", "siteCode", "environment", "visitorCode", "negative", "revenue", "title", "referrersIndices", "overwrite", "index", "href", "variationId", "deviceType", "goalId", "ts", "key"];
33
+ declare const TRACKING_KEYS: readonly ["visit", "map"];
34
+ declare const QUERY_KEYS: readonly ["sse", "mobile", "map", "events"];
35
+ export type TrackingType = Record<Capitalize<(typeof TRACKING_KEYS)[number]>, string>;
36
+ export type QueryType = Record<Capitalize<(typeof QUERY_KEYS)[number]>, string>;
37
+ export type ParameterType = Record<Capitalize<(typeof PARAMETER_KEYS)[number]>, string>;
38
+ export type EventType = Record<Capitalize<(typeof EVENT_TYPE_KEYS)[number]>, string>;
31
39
  export type StrictTrackingRecord<T> = {
32
- [K in keyof T]: K extends string ? `${Uncapitalize<K>}Tracking?` : never;
40
+ [K in keyof T]: K extends string ? `${Uncapitalize<K>}/` : never;
33
41
  };
34
42
  export type StrictQueryRecord<T> = {
35
43
  [K in keyof T]: K extends string ? `${Uncapitalize<K>}?siteCode=` : never;
@@ -40,4 +48,24 @@ export type StrictEventTypeRecord<T> = {
40
48
  export type StrictParameterRecord<T> = {
41
49
  [K in keyof T]: K extends string ? `&${Uncapitalize<K>}=` : never;
42
50
  };
51
+ export type TrackParametersType = {
52
+ url: string;
53
+ headers?: Partial<Record<Header, string>>;
54
+ body: string;
55
+ };
56
+ /**
57
+ * @interface an interface of External Request Dispatcher which will be used to perform requests.
58
+ * */
59
+ export interface IExternalRequestDispatcher {
60
+ /**
61
+ * @method track - send a track request
62
+ * @param {TrackParametersType} parameters - track parameters
63
+ * */
64
+ track: (params: TrackParametersType) => Promise<boolean>;
65
+ /**
66
+ * @method get - get data
67
+ * @param {string} url - url address
68
+ * */
69
+ get: (url: string) => Promise<JSONType>;
70
+ }
43
71
  export {};
@@ -1,39 +1,17 @@
1
1
  "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
3
6
  exports.HttpMethod = void 0;
4
- var HttpMethod;
5
- (function (HttpMethod) {
6
- HttpMethod["Get"] = "GET";
7
- HttpMethod["Post"] = "POST";
8
- })(HttpMethod = exports.HttpMethod || (exports.HttpMethod = {}));
9
- const EVENT_TYPE_KEYS = [
10
- 'customData',
11
- 'staticData',
12
- 'page',
13
- 'conversion',
14
- ];
15
- const PARAMETER_KEYS = [
16
- 'valueToCount',
17
- 'nonce',
18
- 'browserIndex',
19
- 'siteCode',
20
- 'environment',
21
- 'visitorCode',
22
- 'experimentId',
23
- 'negative',
24
- 'revenue',
25
- 'title',
26
- 'referrersIndices',
27
- 'overwrite',
28
- 'index',
29
- 'noneVariation',
30
- 'href',
31
- 'variationId',
32
- 'deviceType',
33
- 'goalId',
34
- 'ts',
35
- 'key',
36
- ];
37
- const TRACKING_KEYS = ['experiment', 'data'];
38
- const QUERY_KEYS = ['data', 'sse', 'mobile'];
7
+ let HttpMethod = /*#__PURE__*/function (HttpMethod) {
8
+ HttpMethod["Get"] = "GET";
9
+ HttpMethod["Post"] = "POST";
10
+ return HttpMethod;
11
+ }({});
12
+ exports.HttpMethod = HttpMethod;
13
+ const EVENT_TYPE_KEYS = ['customData', 'staticData', 'page', 'conversion', 'activity', 'experiment'];
14
+ const PARAMETER_KEYS = ['valuesCountMap', 'id', 'nonce', 'sdkName', 'sdkVersion', 'browserIndex', 'siteCode', 'environment', 'visitorCode', 'negative', 'revenue', 'title', 'referrersIndices', 'overwrite', 'index', 'href', 'variationId', 'deviceType', 'goalId', 'ts', 'key'];
15
+ const TRACKING_KEYS = ['visit', 'map'];
16
+ const QUERY_KEYS = ['sse', 'mobile', 'map', 'events'];
39
17
  //# sourceMappingURL=types.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/requester/types.ts"],"names":[],"mappings":";;;AA0BA,IAAY,UAGX;AAHD,WAAY,UAAU;IACpB,yBAAW,CAAA;IACX,2BAAa,CAAA;AACf,CAAC,EAHW,UAAU,GAAV,kBAAU,KAAV,kBAAU,QAGrB;AAED,MAAM,eAAe,GAAG;IACtB,YAAY;IACZ,YAAY;IACZ,MAAM;IACN,YAAY;CACJ,CAAC;AACX,MAAM,cAAc,GAAG;IACrB,cAAc;IACd,OAAO;IACP,cAAc;IACd,UAAU;IACV,aAAa;IACb,aAAa;IACb,cAAc;IACd,UAAU;IACV,SAAS;IACT,OAAO;IACP,kBAAkB;IAClB,WAAW;IACX,OAAO;IACP,eAAe;IACf,MAAM;IACN,aAAa;IACb,YAAY;IACZ,QAAQ;IACR,IAAI;IACJ,KAAK;CACG,CAAC;AACX,MAAM,aAAa,GAAG,CAAC,YAAY,EAAE,MAAM,CAAU,CAAC;AACtD,MAAM,UAAU,GAAG,CAAC,MAAM,EAAE,KAAK,EAAE,QAAQ,CAAU,CAAC"}
1
+ {"version":3,"file":"types.js","names":["HttpMethod","exports","EVENT_TYPE_KEYS","PARAMETER_KEYS","TRACKING_KEYS","QUERY_KEYS"],"sources":["../../src/requester/types.ts"],"sourcesContent":["import {\n JSONType,\n FeatureFlagType,\n ConfigurationDataType,\n} from '../campaignConfiguration';\nimport { Environment, ExternalPackageInfoType } from '../types';\nimport { Header } from './constants';\n\nexport type RequesterParamsType = {\n siteCode: string;\n environment?: Environment;\n packageInfo: ExternalPackageInfoType;\n requestDispatcher: IExternalRequestDispatcher;\n};\n\nexport type TrackExperimentParamsType = {\n body: string;\n variationId: number;\n visitorCode: string;\n experimentId: number;\n isUnallocated: boolean;\n userAgent?: string;\n callback?: () => void;\n};\n\nexport type TrackDataParamsType = {\n visitorCode: string;\n body: string;\n userAgent?: string;\n};\n\nexport type GetClientConfigurationResultType = Omit<\n ConfigurationDataType,\n 'featureFlags'\n> & { featureFlagConfigurations: FeatureFlagType[] };\n\nexport enum HttpMethod {\n Get = 'GET',\n Post = 'POST',\n}\n\nconst EVENT_TYPE_KEYS = [\n 'customData',\n 'staticData',\n 'page',\n 'conversion',\n 'activity',\n 'experiment',\n] as const;\nconst PARAMETER_KEYS = [\n 'valuesCountMap',\n 'id',\n 'nonce',\n 'sdkName',\n 'sdkVersion',\n 'browserIndex',\n 'siteCode',\n 'environment',\n 'visitorCode',\n 'negative',\n 'revenue',\n 'title',\n 'referrersIndices',\n 'overwrite',\n 'index',\n 'href',\n 'variationId',\n 'deviceType',\n 'goalId',\n 'ts',\n 'key',\n] as const;\nconst TRACKING_KEYS = ['visit', 'map'] as const;\nconst QUERY_KEYS = ['sse', 'mobile', 'map', 'events'] as const;\n\nexport type TrackingType = Record<\n Capitalize<(typeof TRACKING_KEYS)[number]>,\n string\n>;\nexport type QueryType = Record<Capitalize<(typeof QUERY_KEYS)[number]>, string>;\nexport type ParameterType = Record<\n Capitalize<(typeof PARAMETER_KEYS)[number]>,\n string\n>;\nexport type EventType = Record<\n Capitalize<(typeof EVENT_TYPE_KEYS)[number]>,\n string\n>;\n\nexport type StrictTrackingRecord<T> = {\n [K in keyof T]: K extends string ? `${Uncapitalize<K>}/` : never;\n};\nexport type StrictQueryRecord<T> = {\n [K in keyof T]: K extends string ? `${Uncapitalize<K>}?siteCode=` : never;\n};\nexport type StrictEventTypeRecord<T> = {\n [K in keyof T]: K extends string ? `eventType=${Uncapitalize<K>}` : never;\n};\nexport type StrictParameterRecord<T> = {\n [K in keyof T]: K extends string ? `&${Uncapitalize<K>}=` : never;\n};\n\nexport type TrackParametersType = {\n url: string;\n headers?: Partial<Record<Header, string>>;\n body: string;\n};\n\n/**\n * @interface an interface of External Request Dispatcher which will be used to perform requests.\n * */\nexport interface IExternalRequestDispatcher {\n /**\n * @method track - send a track request\n * @param {TrackParametersType} parameters - track parameters\n * */\n track: (params: TrackParametersType) => Promise<boolean>;\n /**\n * @method get - get data\n * @param {string} url - url address\n * */\n get: (url: string) => Promise<JSONType>;\n}\n"],"mappings":";;;;;;IAoCYA,UAAU,0BAAVA,UAAU;EAAVA,UAAU;EAAVA,UAAU;EAAA,OAAVA,UAAU;AAAA;AAAAC,OAAA,CAAAD,UAAA,GAAAA,UAAA;AAKtB,MAAME,eAAe,GAAG,CACtB,YAAY,EACZ,YAAY,EACZ,MAAM,EACN,YAAY,EACZ,UAAU,EACV,YAAY,CACJ;AACV,MAAMC,cAAc,GAAG,CACrB,gBAAgB,EAChB,IAAI,EACJ,OAAO,EACP,SAAS,EACT,YAAY,EACZ,cAAc,EACd,UAAU,EACV,aAAa,EACb,aAAa,EACb,UAAU,EACV,SAAS,EACT,OAAO,EACP,kBAAkB,EAClB,WAAW,EACX,OAAO,EACP,MAAM,EACN,aAAa,EACb,YAAY,EACZ,QAAQ,EACR,IAAI,EACJ,KAAK,CACG;AACV,MAAMC,aAAa,GAAG,CAAC,OAAO,EAAE,KAAK,CAAU;AAC/C,MAAMC,UAAU,GAAG,CAAC,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,QAAQ,CAAU"}
@@ -1,14 +1,18 @@
1
1
  "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
3
6
  exports.KameleoonStorageKey = void 0;
4
7
  /**
5
8
  * @readonly
6
9
  * @enum {string} an Enum containing keys for Kameleoon SDK related data stored on storage
7
10
  * */
8
- var KameleoonStorageKey;
9
- (function (KameleoonStorageKey) {
10
- KameleoonStorageKey["ClientData"] = "kameleoonClientData";
11
- KameleoonStorageKey["VariationData"] = "kameleoonVariationData";
12
- KameleoonStorageKey["VisitorCode"] = "kameleoonVisitorCode";
13
- })(KameleoonStorageKey = exports.KameleoonStorageKey || (exports.KameleoonStorageKey = {}));
11
+ let KameleoonStorageKey = /*#__PURE__*/function (KameleoonStorageKey) {
12
+ KameleoonStorageKey["ClientData"] = "kameleoonClientData";
13
+ KameleoonStorageKey["VariationData"] = "kameleoonVariationData";
14
+ KameleoonStorageKey["VisitorCode"] = "kameleoonVisitorCode";
15
+ return KameleoonStorageKey;
16
+ }({});
17
+ exports.KameleoonStorageKey = KameleoonStorageKey;
14
18
  //# sourceMappingURL=constants.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"constants.js","sourceRoot":"","sources":["../../src/storage/constants.ts"],"names":[],"mappings":";;;AAAA;;;KAGK;AACL,IAAY,mBAIX;AAJD,WAAY,mBAAmB;IAC7B,yDAAkC,CAAA;IAClC,+DAAwC,CAAA;IACxC,2DAAoC,CAAA;AACtC,CAAC,EAJW,mBAAmB,GAAnB,2BAAmB,KAAnB,2BAAmB,QAI9B"}
1
+ {"version":3,"file":"constants.js","names":["KameleoonStorageKey","exports"],"sources":["../../src/storage/constants.ts"],"sourcesContent":["/**\n * @readonly\n * @enum {string} an Enum containing keys for Kameleoon SDK related data stored on storage\n * */\nexport enum KameleoonStorageKey {\n ClientData = 'kameleoonClientData',\n VariationData = 'kameleoonVariationData',\n VisitorCode = 'kameleoonVisitorCode',\n}\n"],"mappings":";;;;;;AAAA;AACA;AACA;AACA;AAHA,IAIYA,mBAAmB,0BAAnBA,mBAAmB;EAAnBA,mBAAmB;EAAnBA,mBAAmB;EAAnBA,mBAAmB;EAAA,OAAnBA,mBAAmB;AAAA;AAAAC,OAAA,CAAAD,mBAAA,GAAAA,mBAAA"}
@@ -1,34 +1,41 @@
1
1
  "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
3
6
  exports.ExternalStorage = void 0;
4
- const ts_res_1 = require("ts-res");
5
- const kameleoonError_1 = require("../kameleoonError");
7
+ var _tsRes = require("ts-res");
8
+ var _kameleoonError = require("../kameleoonError");
9
+ function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
10
+ function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return typeof key === "symbol" ? key : String(key); }
11
+ function _toPrimitive(input, hint) { if (typeof input !== "object" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || "default"); if (typeof res !== "object") return res; throw new TypeError("@@toPrimitive must return a primitive value."); } return (hint === "string" ? String : Number)(input); }
6
12
  class ExternalStorage {
7
- constructor(externalStorage) {
8
- this.key = externalStorage.key;
9
- this.storage = externalStorage;
13
+ constructor(externalStorage) {
14
+ _defineProperty(this, "key", void 0);
15
+ _defineProperty(this, "storage", void 0);
16
+ this.key = externalStorage.key;
17
+ this.storage = externalStorage;
18
+ }
19
+ read() {
20
+ const result = this.storage.read();
21
+ if (!result.ok) {
22
+ return result;
10
23
  }
11
- read() {
12
- const result = this.storage.read();
13
- if (!result.ok) {
14
- return result;
15
- }
16
- return this.parse(result.data);
17
- }
18
- write(data) {
19
- this.storage.write(JSON.stringify(data));
20
- return (0, ts_res_1.Ok)();
21
- }
22
- parse(data) {
23
- let result;
24
- try {
25
- result = JSON.parse(data);
26
- }
27
- catch (err) {
28
- throw new kameleoonError_1.KameleoonError(kameleoonError_1.KameleoonException.StorageParse, err, this.key);
29
- }
30
- return (0, ts_res_1.Ok)(result);
24
+ return this.parse(result.data);
25
+ }
26
+ write(data) {
27
+ this.storage.write(JSON.stringify(data));
28
+ return (0, _tsRes.Ok)();
29
+ }
30
+ parse(data) {
31
+ let result;
32
+ try {
33
+ result = JSON.parse(data);
34
+ } catch (err) {
35
+ throw new _kameleoonError.KameleoonError(_kameleoonError.KameleoonException.StorageParse, err, this.key);
31
36
  }
37
+ return (0, _tsRes.Ok)(result);
38
+ }
32
39
  }
33
40
  exports.ExternalStorage = ExternalStorage;
34
41
  //# sourceMappingURL=externalStorage.js.map