@kameleoon/javascript-sdk-core 1.1.0 → 2.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 (138) hide show
  1. package/dist/campaignConfiguration/campaignConfiguration.d.ts +2 -1
  2. package/dist/campaignConfiguration/campaignConfiguration.js +239 -197
  3. package/dist/campaignConfiguration/campaignConfiguration.js.map +1 -1
  4. package/dist/campaignConfiguration/constants.js +20 -14
  5. package/dist/campaignConfiguration/constants.js.map +1 -1
  6. package/dist/campaignConfiguration/index.js +78 -6
  7. package/dist/campaignConfiguration/index.js.map +1 -1
  8. package/dist/campaignConfiguration/types.d.ts +3 -2
  9. package/dist/campaignConfiguration/types.js +53 -45
  10. package/dist/campaignConfiguration/types.js.map +1 -1
  11. package/dist/clientSettings/clientSettings.d.ts +1 -1
  12. package/dist/clientSettings/clientSettings.js +28 -21
  13. package/dist/clientSettings/clientSettings.js.map +1 -1
  14. package/dist/clientSettings/index.js +18 -4
  15. package/dist/clientSettings/index.js.map +1 -1
  16. package/dist/clientSettings/types.d.ts +1 -1
  17. package/dist/clientSettings/types.js +4 -1
  18. package/dist/clientSettings/types.js.map +1 -1
  19. package/dist/constants.js +22 -14
  20. package/dist/constants.js.map +1 -1
  21. package/dist/eventSource/constants.js +6 -2
  22. package/dist/eventSource/constants.js.map +1 -1
  23. package/dist/eventSource/externalEventSource.js +28 -20
  24. package/dist/eventSource/externalEventSource.js.map +1 -1
  25. package/dist/eventSource/index.js +49 -6
  26. package/dist/eventSource/index.js.map +1 -1
  27. package/dist/eventSource/types.d.ts +1 -1
  28. package/dist/eventSource/types.js +4 -1
  29. package/dist/eventSource/types.js.map +1 -1
  30. package/dist/hasher/constants.js +6 -2
  31. package/dist/hasher/constants.js.map +1 -1
  32. package/dist/hasher/hasher.js +35 -24
  33. package/dist/hasher/hasher.js.map +1 -1
  34. package/dist/hasher/index.js +11 -4
  35. package/dist/hasher/index.js.map +1 -1
  36. package/dist/hasher/types.js +4 -1
  37. package/dist/hasher/types.js.map +1 -1
  38. package/dist/index.d.ts +2 -1
  39. package/dist/index.js +297 -27
  40. package/dist/index.js.map +1 -1
  41. package/dist/kameleoonClient.d.ts +16 -16
  42. package/dist/kameleoonClient.js +307 -236
  43. package/dist/kameleoonClient.js.map +1 -1
  44. package/dist/kameleoonData/browser.js +37 -32
  45. package/dist/kameleoonData/browser.js.map +1 -1
  46. package/dist/kameleoonData/constants.js +6 -2
  47. package/dist/kameleoonData/constants.js.map +1 -1
  48. package/dist/kameleoonData/conversion.js +47 -40
  49. package/dist/kameleoonData/conversion.js.map +1 -1
  50. package/dist/kameleoonData/customData.js +62 -58
  51. package/dist/kameleoonData/customData.js.map +1 -1
  52. package/dist/kameleoonData/device.js +37 -32
  53. package/dist/kameleoonData/device.js.map +1 -1
  54. package/dist/kameleoonData/index.js +101 -18
  55. package/dist/kameleoonData/index.js.map +1 -1
  56. package/dist/kameleoonData/nonce.js +25 -13
  57. package/dist/kameleoonData/nonce.js.map +1 -1
  58. package/dist/kameleoonData/pageView.js +52 -44
  59. package/dist/kameleoonData/pageView.js.map +1 -1
  60. package/dist/kameleoonData/types.js +41 -26
  61. package/dist/kameleoonData/types.js.map +1 -1
  62. package/dist/kameleoonData/userAgent.js +33 -24
  63. package/dist/kameleoonData/userAgent.js.map +1 -1
  64. package/dist/kameleoonError/constants.js +25 -21
  65. package/dist/kameleoonError/constants.js.map +1 -1
  66. package/dist/kameleoonError/helpers.js +6 -4
  67. package/dist/kameleoonError/helpers.js.map +1 -1
  68. package/dist/kameleoonError/index.js +25 -8
  69. package/dist/kameleoonError/index.js.map +1 -1
  70. package/dist/kameleoonError/kameleoonError.js +64 -53
  71. package/dist/kameleoonError/kameleoonError.js.map +1 -1
  72. package/dist/kameleoonError/types.js +26 -22
  73. package/dist/kameleoonError/types.js.map +1 -1
  74. package/dist/kameleoonUtils.js +34 -33
  75. package/dist/kameleoonUtils.js.map +1 -1
  76. package/dist/requester/constants.d.ts +6 -7
  77. package/dist/requester/constants.js +58 -45
  78. package/dist/requester/constants.js.map +1 -1
  79. package/dist/requester/index.d.ts +2 -2
  80. package/dist/requester/index.js +67 -8
  81. package/dist/requester/index.js.map +1 -1
  82. package/dist/requester/requester.d.ts +7 -7
  83. package/dist/requester/requester.js +100 -113
  84. package/dist/requester/requester.js.map +1 -1
  85. package/dist/requester/types.d.ts +38 -10
  86. package/dist/requester/types.js +14 -36
  87. package/dist/requester/types.js.map +1 -1
  88. package/dist/storage/constants.js +11 -7
  89. package/dist/storage/constants.js.map +1 -1
  90. package/dist/storage/externalStorage.js +33 -26
  91. package/dist/storage/externalStorage.js.map +1 -1
  92. package/dist/storage/index.js +55 -6
  93. package/dist/storage/index.js.map +1 -1
  94. package/dist/storage/types.js +4 -1
  95. package/dist/storage/types.js.map +1 -1
  96. package/dist/targeting/conditions/conditionFactory.js +24 -19
  97. package/dist/targeting/conditions/conditionFactory.js.map +1 -1
  98. package/dist/targeting/conditions/customDataCondition.js +99 -88
  99. package/dist/targeting/conditions/customDataCondition.js.map +1 -1
  100. package/dist/targeting/conditions/exclusiveExperimentCondition.js +27 -15
  101. package/dist/targeting/conditions/exclusiveExperimentCondition.js.map +1 -1
  102. package/dist/targeting/conditions/index.js +45 -10
  103. package/dist/targeting/conditions/index.js.map +1 -1
  104. package/dist/targeting/conditions/targetExperimentCondition.js +54 -32
  105. package/dist/targeting/conditions/targetExperimentCondition.js.map +1 -1
  106. package/dist/targeting/conditions/types.js +4 -1
  107. package/dist/targeting/conditions/types.js.map +1 -1
  108. package/dist/targeting/index.js +79 -13
  109. package/dist/targeting/index.js.map +1 -1
  110. package/dist/targeting/targetingNode.js +41 -33
  111. package/dist/targeting/targetingNode.js.map +1 -1
  112. package/dist/targeting/targetingTree.js +125 -104
  113. package/dist/targeting/targetingTree.js.map +1 -1
  114. package/dist/targeting/types.js +99 -91
  115. package/dist/targeting/types.js.map +1 -1
  116. package/dist/types.d.ts +17 -2
  117. package/dist/types.js +50 -21
  118. package/dist/types.js.map +1 -1
  119. package/dist/utilities/constants.js +6 -2
  120. package/dist/utilities/constants.js.map +1 -1
  121. package/dist/utilities/index.js +11 -4
  122. package/dist/utilities/index.js.map +1 -1
  123. package/dist/utilities/types.d.ts +1 -1
  124. package/dist/utilities/types.js +4 -1
  125. package/dist/utilities/types.js.map +1 -1
  126. package/dist/utilities/utilities.d.ts +2 -2
  127. package/dist/utilities/utilities.js +117 -105
  128. package/dist/utilities/utilities.js.map +1 -1
  129. package/dist/variationConfiguration/index.js +24 -4
  130. package/dist/variationConfiguration/index.js.map +1 -1
  131. package/dist/variationConfiguration/types.js +4 -1
  132. package/dist/variationConfiguration/types.js.map +1 -1
  133. package/dist/variationConfiguration/variation.js +35 -28
  134. package/dist/variationConfiguration/variation.js.map +1 -1
  135. package/dist/variationConfiguration/variationConfiguration.d.ts +5 -5
  136. package/dist/variationConfiguration/variationConfiguration.js +270 -228
  137. package/dist/variationConfiguration/variationConfiguration.js.map +1 -1
  138. package/package.json +7 -5
@@ -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,108 @@
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
+ const {
27
+ name,
28
+ version
29
+ } = packageInfo;
30
+ // --- Note ---
31
+ // Name looks like this: "@kameleoon/javascript-sdk"
32
+ const parsedName = name.split('/')[1].split('-')[0];
33
+ this.requestDispatcher = requestDispatcher;
34
+ this.siteCode = siteCode;
35
+ this.environment = environment;
36
+ this.packageInfo = {
37
+ name: parsedName,
38
+ version
39
+ };
40
+ }
41
+ async getClientConfiguration(timeStamp) {
42
+ const environmentParam = this.environment ? _constants.UrlParameter.Environment + this.environment : '';
43
+ const timeStampParam = timeStamp ? _constants.UrlParameter.Ts + timeStamp : '';
44
+ const requestUrl = _constants.URL.CLIENT_CONFIGURATION + _constants.UrlQuery.Mobile + this.siteCode + environmentParam + timeStampParam;
45
+ const response = await this.requestDispatcher.get(requestUrl);
46
+ if (!response) {
47
+ return (0, _tsRes.Err)(new _kameleoonError.KameleoonError(_kameleoonError.KameleoonException.ClientConfiguration));
71
48
  }
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
- });
49
+ return (0, _tsRes.Ok)(response);
50
+ }
51
+ async getRemoteData(key) {
52
+ const requestUrl = _constants.URL.DATA + this.siteCode + _constants.UrlParameter.Key + encodeURI(key);
53
+ const response = await this.requestDispatcher.get(requestUrl);
54
+ if (!response) {
55
+ return (0, _tsRes.Err)(new _kameleoonError.KameleoonError(_kameleoonError.KameleoonException.RemoteData));
97
56
  }
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));
57
+ return (0, _tsRes.Ok)(response);
58
+ }
59
+ async trackExperiment({
60
+ variationId,
61
+ visitorCode,
62
+ experimentId,
63
+ isUnallocated,
64
+ body,
65
+ userAgent,
66
+ callback
67
+ }) {
68
+ const url = this.getTrackingUrl(visitorCode);
69
+ const unallocatedAddition = !body ? _constants.UrlEventType.Activity + _constants.UrlParameter.Nonce + this.nonce : '';
70
+ const bodyAddition = isUnallocated ? unallocatedAddition : _constants.UrlEventType.Experiment + _constants.UrlParameter.Id + experimentId + _constants.UrlParameter.VariationId + variationId + _constants.UrlParameter.Nonce + this.nonce;
71
+ const extendedBody = bodyAddition ? body + '\n' + bodyAddition : body;
72
+ const headers = userAgent ? {
73
+ [_constants.Header.UserAgent]: userAgent
74
+ } : undefined;
75
+ const response = await this.requestDispatcher.track({
76
+ url,
77
+ headers,
78
+ body: extendedBody
79
+ });
80
+ if (response && callback) {
81
+ callback();
118
82
  }
83
+ }
84
+ async trackData({
85
+ visitorCode,
86
+ body,
87
+ userAgent
88
+ }) {
89
+ const url = this.getTrackingUrl(visitorCode);
90
+ const headers = userAgent ? {
91
+ [_constants.Header.UserAgent]: userAgent
92
+ } : undefined;
93
+ this.requestDispatcher.track({
94
+ url,
95
+ headers,
96
+ body
97
+ });
98
+ }
99
+ getTrackingUrl(visitorCode) {
100
+ const {
101
+ name,
102
+ version
103
+ } = this.packageInfo;
104
+ return _constants.URL.TRACKING + this.siteCode + _constants.UrlParameter.VisitorCode + encodeURIComponent(visitorCode) + _constants.UrlParameter.SdkName + name + _constants.UrlParameter.SdkVersion + version;
105
+ }
119
106
  }
120
107
  exports.Requester = Requester;
121
108
  //# 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","name","version","parsedName","split","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","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 const { name, version } = packageInfo;\n // --- Note ---\n // Name looks like this: \"@kameleoon/javascript-sdk\"\n const parsedName = name.split('/')[1].split('-')[0];\n\n this.requestDispatcher = requestDispatcher;\n this.siteCode = siteCode;\n this.environment = environment;\n this.packageInfo = { name: parsedName, version };\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 { name, version } = this.packageInfo;\n\n return (\n URL.TRACKING +\n this.siteCode +\n UrlParameter.VisitorCode +\n encodeURIComponent(visitorCode) +\n UrlParameter.SdkName +\n name +\n UrlParameter.SdkVersion +\n version\n );\n }\n}\n"],"mappings":"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"}
@@ -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
@@ -1 +1 @@
1
- {"version":3,"file":"externalStorage.js","sourceRoot":"","sources":["../../src/storage/externalStorage.ts"],"names":[],"mappings":";;;AAAA,mCAAoC;AAEpC,sDAAuE;AAGvE,MAAa,eAAe;IAI1B,YAAY,eAAiC;QAC3C,IAAI,CAAC,GAAG,GAAG,eAAe,CAAC,GAAG,CAAC;QAC/B,IAAI,CAAC,OAAO,GAAG,eAAe,CAAC;IACjC,CAAC;IAEM,IAAI;QACT,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;QAEnC,IAAI,CAAC,MAAM,CAAC,EAAE,EAAE;YACd,OAAO,MAAM,CAAC;SACf;QAED,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IACjC,CAAC;IAEM,KAAK,CAAC,IAAO;QAClB,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC;QAEzC,OAAO,IAAA,WAAE,GAAE,CAAC;IACd,CAAC;IAEO,KAAK,CAAC,IAAY;QACxB,IAAI,MAAS,CAAC;QAEd,IAAI;YACF,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;SAC3B;QAAC,OAAO,GAAG,EAAE;YACZ,MAAM,IAAI,+BAAc,CAAC,mCAAkB,CAAC,YAAY,EAAE,GAAG,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC;SAC1E;QAED,OAAO,IAAA,WAAE,EAAC,MAAM,CAAC,CAAC;IACpB,CAAC;CACF;AApCD,0CAoCC"}
1
+ {"version":3,"file":"externalStorage.js","names":["_tsRes","require","_kameleoonError","_defineProperty","obj","key","value","_toPropertyKey","Object","defineProperty","enumerable","configurable","writable","arg","_toPrimitive","String","input","hint","prim","Symbol","toPrimitive","undefined","res","call","TypeError","Number","ExternalStorage","constructor","externalStorage","storage","read","result","ok","parse","data","write","JSON","stringify","Ok","err","KameleoonError","KameleoonException","StorageParse","exports"],"sources":["../../src/storage/externalStorage.ts"],"sourcesContent":["import { Ok, Result } from 'ts-res';\nimport { IExternalStorage, IStorage, StorageDataType } from './types';\nimport { KameleoonError, KameleoonException } from '../kameleoonError';\nimport { KameleoonStorageKey } from './constants';\n\nexport class ExternalStorage<T extends StorageDataType> implements IStorage<T> {\n private key: KameleoonStorageKey;\n private storage: IExternalStorage;\n\n constructor(externalStorage: IExternalStorage) {\n this.key = externalStorage.key;\n this.storage = externalStorage;\n }\n\n public read(): Result<T, KameleoonError> {\n const result = this.storage.read();\n\n if (!result.ok) {\n return result;\n }\n\n return this.parse(result.data);\n }\n\n public write(data: T): Result<void, KameleoonError> {\n this.storage.write(JSON.stringify(data));\n\n return Ok();\n }\n\n private parse(data: string): Result<T, KameleoonError> {\n let result: T;\n\n try {\n result = JSON.parse(data);\n } catch (err) {\n throw new KameleoonError(KameleoonException.StorageParse, err, this.key);\n }\n\n return Ok(result);\n }\n}\n"],"mappings":";;;;;;AAAA,IAAAA,MAAA,GAAAC,OAAA;AAEA,IAAAC,eAAA,GAAAD,OAAA;AAAuE,SAAAE,gBAAAC,GAAA,EAAAC,GAAA,EAAAC,KAAA,IAAAD,GAAA,GAAAE,cAAA,CAAAF,GAAA,OAAAA,GAAA,IAAAD,GAAA,IAAAI,MAAA,CAAAC,cAAA,CAAAL,GAAA,EAAAC,GAAA,IAAAC,KAAA,EAAAA,KAAA,EAAAI,UAAA,QAAAC,YAAA,QAAAC,QAAA,oBAAAR,GAAA,CAAAC,GAAA,IAAAC,KAAA,WAAAF,GAAA;AAAA,SAAAG,eAAAM,GAAA,QAAAR,GAAA,GAAAS,YAAA,CAAAD,GAAA,2BAAAR,GAAA,gBAAAA,GAAA,GAAAU,MAAA,CAAAV,GAAA;AAAA,SAAAS,aAAAE,KAAA,EAAAC,IAAA,eAAAD,KAAA,iBAAAA,KAAA,kBAAAA,KAAA,MAAAE,IAAA,GAAAF,KAAA,CAAAG,MAAA,CAAAC,WAAA,OAAAF,IAAA,KAAAG,SAAA,QAAAC,GAAA,GAAAJ,IAAA,CAAAK,IAAA,CAAAP,KAAA,EAAAC,IAAA,2BAAAK,GAAA,sBAAAA,GAAA,YAAAE,SAAA,4DAAAP,IAAA,gBAAAF,MAAA,GAAAU,MAAA,EAAAT,KAAA;AAGhE,MAAMU,eAAe,CAAmD;EAI7EC,WAAWA,CAACC,eAAiC,EAAE;IAAAzB,eAAA;IAAAA,eAAA;IAC7C,IAAI,CAACE,GAAG,GAAGuB,eAAe,CAACvB,GAAG;IAC9B,IAAI,CAACwB,OAAO,GAAGD,eAAe;EAChC;EAEOE,IAAIA,CAAA,EAA8B;IACvC,MAAMC,MAAM,GAAG,IAAI,CAACF,OAAO,CAACC,IAAI,EAAE;IAElC,IAAI,CAACC,MAAM,CAACC,EAAE,EAAE;MACd,OAAOD,MAAM;IACf;IAEA,OAAO,IAAI,CAACE,KAAK,CAACF,MAAM,CAACG,IAAI,CAAC;EAChC;EAEOC,KAAKA,CAACD,IAAO,EAAgC;IAClD,IAAI,CAACL,OAAO,CAACM,KAAK,CAACC,IAAI,CAACC,SAAS,CAACH,IAAI,CAAC,CAAC;IAExC,OAAO,IAAAI,SAAE,GAAE;EACb;EAEQL,KAAKA,CAACC,IAAY,EAA6B;IACrD,IAAIH,MAAS;IAEb,IAAI;MACFA,MAAM,GAAGK,IAAI,CAACH,KAAK,CAACC,IAAI,CAAC;IAC3B,CAAC,CAAC,OAAOK,GAAG,EAAE;MACZ,MAAM,IAAIC,8BAAc,CAACC,kCAAkB,CAACC,YAAY,EAAEH,GAAG,EAAE,IAAI,CAAClC,GAAG,CAAC;IAC1E;IAEA,OAAO,IAAAiC,SAAE,EAACP,MAAM,CAAC;EACnB;AACF;AAACY,OAAA,CAAAjB,eAAA,GAAAA,eAAA"}