@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.
- package/dist/campaignConfiguration/campaignConfiguration.d.ts +2 -1
- package/dist/campaignConfiguration/campaignConfiguration.js +239 -197
- package/dist/campaignConfiguration/campaignConfiguration.js.map +1 -1
- package/dist/campaignConfiguration/constants.js +20 -14
- package/dist/campaignConfiguration/constants.js.map +1 -1
- package/dist/campaignConfiguration/index.js +78 -6
- package/dist/campaignConfiguration/index.js.map +1 -1
- package/dist/campaignConfiguration/types.d.ts +3 -2
- package/dist/campaignConfiguration/types.js +53 -45
- package/dist/campaignConfiguration/types.js.map +1 -1
- package/dist/clientSettings/clientSettings.d.ts +1 -1
- package/dist/clientSettings/clientSettings.js +28 -21
- package/dist/clientSettings/clientSettings.js.map +1 -1
- package/dist/clientSettings/index.js +18 -4
- package/dist/clientSettings/index.js.map +1 -1
- package/dist/clientSettings/types.d.ts +1 -1
- package/dist/clientSettings/types.js +4 -1
- package/dist/clientSettings/types.js.map +1 -1
- package/dist/constants.js +22 -14
- package/dist/constants.js.map +1 -1
- package/dist/eventSource/constants.js +6 -2
- package/dist/eventSource/constants.js.map +1 -1
- package/dist/eventSource/externalEventSource.js +28 -20
- package/dist/eventSource/externalEventSource.js.map +1 -1
- package/dist/eventSource/index.js +49 -6
- package/dist/eventSource/index.js.map +1 -1
- package/dist/eventSource/types.d.ts +1 -1
- package/dist/eventSource/types.js +4 -1
- package/dist/eventSource/types.js.map +1 -1
- package/dist/hasher/constants.js +6 -2
- package/dist/hasher/constants.js.map +1 -1
- package/dist/hasher/hasher.js +35 -24
- package/dist/hasher/hasher.js.map +1 -1
- package/dist/hasher/index.js +11 -4
- package/dist/hasher/index.js.map +1 -1
- package/dist/hasher/types.js +4 -1
- package/dist/hasher/types.js.map +1 -1
- package/dist/index.d.ts +2 -1
- package/dist/index.js +297 -27
- package/dist/index.js.map +1 -1
- package/dist/kameleoonClient.d.ts +16 -16
- package/dist/kameleoonClient.js +307 -236
- package/dist/kameleoonClient.js.map +1 -1
- package/dist/kameleoonData/browser.js +37 -32
- package/dist/kameleoonData/browser.js.map +1 -1
- package/dist/kameleoonData/constants.js +6 -2
- package/dist/kameleoonData/constants.js.map +1 -1
- package/dist/kameleoonData/conversion.js +47 -40
- package/dist/kameleoonData/conversion.js.map +1 -1
- package/dist/kameleoonData/customData.js +62 -58
- package/dist/kameleoonData/customData.js.map +1 -1
- package/dist/kameleoonData/device.js +37 -32
- package/dist/kameleoonData/device.js.map +1 -1
- package/dist/kameleoonData/index.js +101 -18
- package/dist/kameleoonData/index.js.map +1 -1
- package/dist/kameleoonData/nonce.js +25 -13
- package/dist/kameleoonData/nonce.js.map +1 -1
- package/dist/kameleoonData/pageView.js +52 -44
- package/dist/kameleoonData/pageView.js.map +1 -1
- package/dist/kameleoonData/types.js +41 -26
- package/dist/kameleoonData/types.js.map +1 -1
- package/dist/kameleoonData/userAgent.js +33 -24
- package/dist/kameleoonData/userAgent.js.map +1 -1
- package/dist/kameleoonError/constants.js +25 -21
- package/dist/kameleoonError/constants.js.map +1 -1
- package/dist/kameleoonError/helpers.js +6 -4
- package/dist/kameleoonError/helpers.js.map +1 -1
- package/dist/kameleoonError/index.js +25 -8
- package/dist/kameleoonError/index.js.map +1 -1
- package/dist/kameleoonError/kameleoonError.js +64 -53
- package/dist/kameleoonError/kameleoonError.js.map +1 -1
- package/dist/kameleoonError/types.js +26 -22
- package/dist/kameleoonError/types.js.map +1 -1
- package/dist/kameleoonUtils.js +34 -33
- package/dist/kameleoonUtils.js.map +1 -1
- package/dist/requester/constants.d.ts +6 -7
- package/dist/requester/constants.js +58 -45
- package/dist/requester/constants.js.map +1 -1
- package/dist/requester/index.d.ts +2 -2
- package/dist/requester/index.js +67 -8
- package/dist/requester/index.js.map +1 -1
- package/dist/requester/requester.d.ts +7 -7
- package/dist/requester/requester.js +100 -113
- package/dist/requester/requester.js.map +1 -1
- package/dist/requester/types.d.ts +38 -10
- package/dist/requester/types.js +14 -36
- package/dist/requester/types.js.map +1 -1
- package/dist/storage/constants.js +11 -7
- package/dist/storage/constants.js.map +1 -1
- package/dist/storage/externalStorage.js +33 -26
- package/dist/storage/externalStorage.js.map +1 -1
- package/dist/storage/index.js +55 -6
- package/dist/storage/index.js.map +1 -1
- package/dist/storage/types.js +4 -1
- package/dist/storage/types.js.map +1 -1
- package/dist/targeting/conditions/conditionFactory.js +24 -19
- package/dist/targeting/conditions/conditionFactory.js.map +1 -1
- package/dist/targeting/conditions/customDataCondition.js +99 -88
- package/dist/targeting/conditions/customDataCondition.js.map +1 -1
- package/dist/targeting/conditions/exclusiveExperimentCondition.js +27 -15
- package/dist/targeting/conditions/exclusiveExperimentCondition.js.map +1 -1
- package/dist/targeting/conditions/index.js +45 -10
- package/dist/targeting/conditions/index.js.map +1 -1
- package/dist/targeting/conditions/targetExperimentCondition.js +54 -32
- package/dist/targeting/conditions/targetExperimentCondition.js.map +1 -1
- package/dist/targeting/conditions/types.js +4 -1
- package/dist/targeting/conditions/types.js.map +1 -1
- package/dist/targeting/index.js +79 -13
- package/dist/targeting/index.js.map +1 -1
- package/dist/targeting/targetingNode.js +41 -33
- package/dist/targeting/targetingNode.js.map +1 -1
- package/dist/targeting/targetingTree.js +125 -104
- package/dist/targeting/targetingTree.js.map +1 -1
- package/dist/targeting/types.js +99 -91
- package/dist/targeting/types.js.map +1 -1
- package/dist/types.d.ts +17 -2
- package/dist/types.js +50 -21
- package/dist/types.js.map +1 -1
- package/dist/utilities/constants.js +6 -2
- package/dist/utilities/constants.js.map +1 -1
- package/dist/utilities/index.js +11 -4
- package/dist/utilities/index.js.map +1 -1
- package/dist/utilities/types.d.ts +1 -1
- package/dist/utilities/types.js +4 -1
- package/dist/utilities/types.js.map +1 -1
- package/dist/utilities/utilities.d.ts +2 -2
- package/dist/utilities/utilities.js +117 -105
- package/dist/utilities/utilities.js.map +1 -1
- package/dist/variationConfiguration/index.js +24 -4
- package/dist/variationConfiguration/index.js.map +1 -1
- package/dist/variationConfiguration/types.js +4 -1
- package/dist/variationConfiguration/types.js.map +1 -1
- package/dist/variationConfiguration/variation.js +35 -28
- package/dist/variationConfiguration/variation.js.map +1 -1
- package/dist/variationConfiguration/variationConfiguration.d.ts +5 -5
- package/dist/variationConfiguration/variationConfiguration.js +270 -228
- package/dist/variationConfiguration/variationConfiguration.js.map +1 -1
- package/package.json +7 -5
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","
|
|
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
|
|
17
|
-
|
|
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
|
|
22
|
+
private getTrackingUrl;
|
|
23
23
|
}
|
|
@@ -1,121 +1,108 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
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
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
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
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
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
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
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","
|
|
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 {
|
|
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 ["
|
|
25
|
-
declare const TRACKING_KEYS: readonly ["
|
|
26
|
-
declare const QUERY_KEYS: readonly ["
|
|
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>}
|
|
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 {};
|
package/dist/requester/types.js
CHANGED
|
@@ -1,39 +1,17 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
3
6
|
exports.HttpMethod = void 0;
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
}
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
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","
|
|
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
|
-
|
|
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
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
}
|
|
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","
|
|
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
|
-
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
3
6
|
exports.ExternalStorage = void 0;
|
|
4
|
-
|
|
5
|
-
|
|
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
|
-
|
|
8
|
-
|
|
9
|
-
|
|
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
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
}
|
|
22
|
-
|
|
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","
|
|
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"}
|