@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
|
@@ -27,7 +27,8 @@ export declare class CampaignConfiguration implements ICampaignConfiguration {
|
|
|
27
27
|
private storage;
|
|
28
28
|
private requester;
|
|
29
29
|
private eventSource?;
|
|
30
|
-
|
|
30
|
+
private externalClientConfiguration?;
|
|
31
|
+
constructor({ settings, storage, requester, externalClientConfiguration, }: CampaignConfigurationParametersType);
|
|
31
32
|
initialize(externalEventSource: IExternalEventSourceConstructor): Promise<Result<void, KameleoonError>>;
|
|
32
33
|
addTargetingData(visitorCode: string, ...data: KameleoonDataType[]): Result<void, KameleoonError>;
|
|
33
34
|
getUnsentData(visitorCode: string): KameleoonDataType[];
|
|
@@ -1,217 +1,259 @@
|
|
|
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
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
12
6
|
exports.CampaignConfiguration = void 0;
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
7
|
+
var _tsRes = require("ts-res");
|
|
8
|
+
var _constants = require("./constants");
|
|
9
|
+
var _eventSource = require("../eventSource");
|
|
10
|
+
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
|
|
11
|
+
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
|
|
12
|
+
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; }
|
|
13
|
+
function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return typeof key === "symbol" ? key : String(key); }
|
|
14
|
+
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); }
|
|
16
15
|
class CampaignConfiguration {
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
16
|
+
constructor({
|
|
17
|
+
settings,
|
|
18
|
+
storage,
|
|
19
|
+
requester,
|
|
20
|
+
externalClientConfiguration
|
|
21
|
+
}) {
|
|
22
|
+
_defineProperty(this, "configurationUpdateCallback", void 0);
|
|
23
|
+
_defineProperty(this, "updateConfigurationIntervalId", null);
|
|
24
|
+
_defineProperty(this, "targetingDataIntervalId", null);
|
|
25
|
+
_defineProperty(this, "unsentTargetingData", {});
|
|
26
|
+
_defineProperty(this, "targetingData", _constants.DEFAULT_CAMPAIGN_CONFIGURATION.targetingData);
|
|
27
|
+
_defineProperty(this, "configurationData", _constants.DEFAULT_CAMPAIGN_CONFIGURATION.configurationData);
|
|
28
|
+
_defineProperty(this, "settings", void 0);
|
|
29
|
+
_defineProperty(this, "lastUpdate", void 0);
|
|
30
|
+
_defineProperty(this, "storage", void 0);
|
|
31
|
+
_defineProperty(this, "requester", void 0);
|
|
32
|
+
_defineProperty(this, "eventSource", void 0);
|
|
33
|
+
_defineProperty(this, "externalClientConfiguration", void 0);
|
|
34
|
+
this.requester = requester;
|
|
35
|
+
this.settings = settings;
|
|
36
|
+
this.lastUpdate = new Date();
|
|
37
|
+
this.storage = storage;
|
|
38
|
+
this.readStorageData();
|
|
39
|
+
this.externalClientConfiguration = externalClientConfiguration;
|
|
40
|
+
|
|
41
|
+
// --- Note ---
|
|
42
|
+
// We can not make delayed code execution recoverable, as it might lead
|
|
43
|
+
// to targeting data storage size overflow
|
|
44
|
+
try {
|
|
45
|
+
this.targetingDataIntervalId = setInterval(() => this.cleanupOutdatedTargetingData.call(this, this.targetingData), _constants.CLEANUP_TARGETING_DATA_INTERVAL);
|
|
46
|
+
} catch (err) {
|
|
47
|
+
if (this.targetingDataIntervalId) {
|
|
48
|
+
clearInterval(this.targetingDataIntervalId);
|
|
49
|
+
}
|
|
50
|
+
throw err;
|
|
40
51
|
}
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
// --- Note ---
|
|
52
|
-
// Interval is cleaned up in case real time update
|
|
53
|
-
// was activated while initialized client already exists
|
|
54
|
-
if (this.configurationData.configuration.realTimeUpdate) {
|
|
55
|
-
if (this.updateConfigurationIntervalId) {
|
|
56
|
-
clearInterval(this.updateConfigurationIntervalId);
|
|
57
|
-
}
|
|
58
|
-
this.eventSource = new eventSource_1.ExternalEventSource(this.settings.siteCode, externalEventSource);
|
|
59
|
-
const updateEventCallback = (_timeStamp) => {
|
|
60
|
-
this.updateClientConfiguration();
|
|
61
|
-
if (this.configurationUpdateCallback) {
|
|
62
|
-
this.configurationUpdateCallback();
|
|
63
|
-
}
|
|
64
|
-
};
|
|
65
|
-
this.eventSource.open(updateEventCallback);
|
|
66
|
-
}
|
|
67
|
-
else {
|
|
68
|
-
// --- Note ---
|
|
69
|
-
// Event Source is cleaned up in case real time update
|
|
70
|
-
// was disabled while initialized client already exists
|
|
71
|
-
if (this.eventSource) {
|
|
72
|
-
this.eventSource.close();
|
|
73
|
-
}
|
|
74
|
-
if (this.updateConfigurationIntervalId) {
|
|
75
|
-
clearInterval(this.updateConfigurationIntervalId);
|
|
76
|
-
}
|
|
77
|
-
// --- Note ---
|
|
78
|
-
// Same as targeting data interval we don't want to make failed configuration
|
|
79
|
-
// retrieval recoverable
|
|
80
|
-
try {
|
|
81
|
-
this.updateConfigurationIntervalId = setInterval(this.updateClientConfiguration.bind(this), this.settings.updateInterval);
|
|
82
|
-
}
|
|
83
|
-
catch (err) {
|
|
84
|
-
if (this.updateConfigurationIntervalId) {
|
|
85
|
-
clearInterval(this.updateConfigurationIntervalId);
|
|
86
|
-
}
|
|
87
|
-
throw err;
|
|
88
|
-
}
|
|
89
|
-
}
|
|
90
|
-
return (0, ts_res_1.Ok)();
|
|
91
|
-
});
|
|
52
|
+
}
|
|
53
|
+
async initialize(externalEventSource) {
|
|
54
|
+
const shouldUpdate = this.checkShouldUpdate();
|
|
55
|
+
|
|
56
|
+
// --- Initial data fetch ---
|
|
57
|
+
if (shouldUpdate) {
|
|
58
|
+
const updateResult = await this.updateClientConfiguration();
|
|
59
|
+
if (!updateResult.ok) {
|
|
60
|
+
return updateResult;
|
|
61
|
+
}
|
|
92
62
|
}
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
63
|
+
|
|
64
|
+
// --- Note ---
|
|
65
|
+
// Interval is cleaned up in case real time update
|
|
66
|
+
// was activated while initialized client already exists
|
|
67
|
+
if (this.configurationData.configuration.realTimeUpdate && !this.externalClientConfiguration) {
|
|
68
|
+
if (this.updateConfigurationIntervalId) {
|
|
69
|
+
clearInterval(this.updateConfigurationIntervalId);
|
|
70
|
+
}
|
|
71
|
+
this.eventSource = new _eventSource.ExternalEventSource(this.settings.siteCode, externalEventSource);
|
|
72
|
+
const updateEventCallback = _timeStamp => {
|
|
73
|
+
this.updateClientConfiguration();
|
|
74
|
+
if (this.configurationUpdateCallback) {
|
|
75
|
+
this.configurationUpdateCallback();
|
|
96
76
|
}
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
77
|
+
};
|
|
78
|
+
this.eventSource.open(updateEventCallback);
|
|
79
|
+
} else {
|
|
80
|
+
// --- Note ---
|
|
81
|
+
// Event Source is cleaned up in case real time update
|
|
82
|
+
// was disabled while initialized client already exists
|
|
83
|
+
if (this.eventSource) {
|
|
84
|
+
this.eventSource.close();
|
|
85
|
+
}
|
|
86
|
+
if (this.updateConfigurationIntervalId) {
|
|
87
|
+
clearInterval(this.updateConfigurationIntervalId);
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
// --- Note ---
|
|
91
|
+
// Same as targeting data interval we don't want to make failed configuration
|
|
92
|
+
// retrieval recoverable
|
|
93
|
+
try {
|
|
94
|
+
this.updateConfigurationIntervalId = setInterval(this.updateClientConfiguration.bind(this), this.settings.updateInterval);
|
|
95
|
+
} catch (err) {
|
|
96
|
+
if (this.updateConfigurationIntervalId) {
|
|
97
|
+
clearInterval(this.updateConfigurationIntervalId);
|
|
115
98
|
}
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
getUnsentData(visitorCode) {
|
|
119
|
-
const unsentDataItem = this.unsentTargetingData[visitorCode];
|
|
120
|
-
if (!unsentDataItem) {
|
|
121
|
-
return [];
|
|
122
|
-
}
|
|
123
|
-
return unsentDataItem;
|
|
124
|
-
}
|
|
125
|
-
clearUnsentData(visitorCode) {
|
|
126
|
-
this.unsentTargetingData[visitorCode] = [];
|
|
127
|
-
}
|
|
128
|
-
onConfigurationUpdate(callback) {
|
|
129
|
-
this.configurationUpdateCallback = callback;
|
|
99
|
+
throw err;
|
|
100
|
+
}
|
|
130
101
|
}
|
|
131
|
-
|
|
132
|
-
|
|
102
|
+
return (0, _tsRes.Ok)();
|
|
103
|
+
}
|
|
104
|
+
addTargetingData(visitorCode, ...data) {
|
|
105
|
+
if (!(visitorCode in this.targetingData)) {
|
|
106
|
+
this.targetingData[visitorCode] = [];
|
|
133
107
|
}
|
|
134
|
-
|
|
135
|
-
|
|
108
|
+
data.forEach(dataItem => {
|
|
109
|
+
// --- Note ---
|
|
110
|
+
// Previous check excludes the failure possibility
|
|
111
|
+
this.targetingData[visitorCode].push({
|
|
112
|
+
data: dataItem.data,
|
|
113
|
+
lastActivityTime: Date.now()
|
|
114
|
+
});
|
|
115
|
+
});
|
|
116
|
+
|
|
117
|
+
// --- Note ---
|
|
118
|
+
// `targetingData` should not refresh `lastUpdate` time
|
|
119
|
+
const result = this.updateStorageData(this.lastUpdate);
|
|
120
|
+
if (result.ok) {
|
|
121
|
+
data.forEach(dataItem => {
|
|
122
|
+
if (!this.unsentTargetingData[visitorCode]) {
|
|
123
|
+
this.unsentTargetingData[visitorCode] = [];
|
|
124
|
+
}
|
|
125
|
+
this.unsentTargetingData[visitorCode].push(dataItem);
|
|
126
|
+
});
|
|
136
127
|
}
|
|
137
|
-
|
|
138
|
-
|
|
128
|
+
return result;
|
|
129
|
+
}
|
|
130
|
+
getUnsentData(visitorCode) {
|
|
131
|
+
const unsentDataItem = this.unsentTargetingData[visitorCode];
|
|
132
|
+
if (!unsentDataItem) {
|
|
133
|
+
return [];
|
|
139
134
|
}
|
|
140
|
-
|
|
141
|
-
|
|
135
|
+
return unsentDataItem;
|
|
136
|
+
}
|
|
137
|
+
clearUnsentData(visitorCode) {
|
|
138
|
+
this.unsentTargetingData[visitorCode] = [];
|
|
139
|
+
}
|
|
140
|
+
onConfigurationUpdate(callback) {
|
|
141
|
+
this.configurationUpdateCallback = callback;
|
|
142
|
+
}
|
|
143
|
+
get storedTargetingData() {
|
|
144
|
+
return this.targetingData;
|
|
145
|
+
}
|
|
146
|
+
get experiments() {
|
|
147
|
+
return this.configurationData.experiments;
|
|
148
|
+
}
|
|
149
|
+
get featureFlags() {
|
|
150
|
+
return this.configurationData.featureFlags;
|
|
151
|
+
}
|
|
152
|
+
get configuration() {
|
|
153
|
+
return this.configurationData.configuration;
|
|
154
|
+
}
|
|
155
|
+
checkShouldUpdate() {
|
|
156
|
+
const {
|
|
157
|
+
featureFlags,
|
|
158
|
+
experiments,
|
|
159
|
+
configuration
|
|
160
|
+
} = this.configurationData;
|
|
161
|
+
const {
|
|
162
|
+
updateInterval
|
|
163
|
+
} = this.settings;
|
|
164
|
+
if (!featureFlags.length && !experiments.length) {
|
|
165
|
+
return true;
|
|
142
166
|
}
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
const { updateInterval } = this.settings;
|
|
146
|
-
if (!featureFlags.length && !experiments.length) {
|
|
147
|
-
return true;
|
|
148
|
-
}
|
|
149
|
-
if (configuration.realTimeUpdate) {
|
|
150
|
-
return true;
|
|
151
|
-
}
|
|
152
|
-
const lastUpdateTime = this.lastUpdate.getTime();
|
|
153
|
-
const updateWindowEdge = Date.now() - updateInterval;
|
|
154
|
-
return lastUpdateTime < updateWindowEdge;
|
|
167
|
+
if (configuration.realTimeUpdate) {
|
|
168
|
+
return true;
|
|
155
169
|
}
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
// `targetingData` should not refresh `lastUpdate` time
|
|
174
|
-
this.updateStorageData(this.lastUpdate).throw();
|
|
170
|
+
const lastUpdateTime = this.lastUpdate.getTime();
|
|
171
|
+
const updateWindowEdge = Date.now() - updateInterval;
|
|
172
|
+
return lastUpdateTime < updateWindowEdge;
|
|
173
|
+
}
|
|
174
|
+
cleanupOutdatedTargetingData(data) {
|
|
175
|
+
const currentTime = Date.now();
|
|
176
|
+
const resultTargetingData = _objectSpread({}, data);
|
|
177
|
+
for (const [key, value] of Object.entries(resultTargetingData)) {
|
|
178
|
+
if (value) {
|
|
179
|
+
const resultValue = value.filter(item => {
|
|
180
|
+
const isDataExpired = item.lastActivityTime + _constants.SESSION_DURATION < currentTime;
|
|
181
|
+
return isDataExpired;
|
|
182
|
+
});
|
|
183
|
+
resultTargetingData[key] = resultValue;
|
|
184
|
+
} else {
|
|
185
|
+
resultTargetingData[key] = [];
|
|
186
|
+
}
|
|
175
187
|
}
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
188
|
+
this.targetingData = resultTargetingData;
|
|
189
|
+
// --- Note ---
|
|
190
|
+
// `targetingData` should not refresh `lastUpdate` time
|
|
191
|
+
this.updateStorageData(this.lastUpdate).throw();
|
|
192
|
+
}
|
|
193
|
+
readStorageData() {
|
|
194
|
+
const result = this.storage.read();
|
|
195
|
+
if (result.ok) {
|
|
196
|
+
const {
|
|
197
|
+
kameleoonTargetingData,
|
|
198
|
+
kameleoonConfiguration,
|
|
199
|
+
lastUpdate
|
|
200
|
+
} = result.data;
|
|
201
|
+
this.configurationData = kameleoonConfiguration;
|
|
202
|
+
this.targetingData = kameleoonTargetingData;
|
|
203
|
+
this.lastUpdate = new Date(Date.parse(lastUpdate));
|
|
184
204
|
}
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
205
|
+
}
|
|
206
|
+
async updateClientConfiguration(timeStamp) {
|
|
207
|
+
// --- Note ---
|
|
208
|
+
// if `externalClientConfiguration` is passed, fetching is disabled and passed config is used instead
|
|
209
|
+
if (this.externalClientConfiguration) {
|
|
210
|
+
// --- Note ---
|
|
211
|
+
// `featureFlags` field is omitted (v1)
|
|
212
|
+
// instead `featureFlagConfigurations` is used (v2)
|
|
213
|
+
const {
|
|
214
|
+
configuration,
|
|
215
|
+
experiments,
|
|
216
|
+
featureFlagConfigurations
|
|
217
|
+
} = this.externalClientConfiguration;
|
|
218
|
+
this.configurationData = {
|
|
219
|
+
configuration,
|
|
220
|
+
experiments,
|
|
221
|
+
featureFlags: featureFlagConfigurations
|
|
222
|
+
};
|
|
223
|
+
} else {
|
|
224
|
+
const clientConfigurationResult = await this.requester.getClientConfiguration(timeStamp);
|
|
225
|
+
if (!clientConfigurationResult.ok) {
|
|
226
|
+
return clientConfigurationResult;
|
|
227
|
+
}
|
|
228
|
+
|
|
229
|
+
// --- Note ---
|
|
230
|
+
// `featureFlags` field is omitted (v1)
|
|
231
|
+
// instead `featureFlagConfigurations` is used (v2)
|
|
232
|
+
const {
|
|
233
|
+
configuration,
|
|
234
|
+
experiments,
|
|
235
|
+
featureFlagConfigurations
|
|
236
|
+
} = clientConfigurationResult.data;
|
|
237
|
+
this.configurationData = {
|
|
238
|
+
configuration,
|
|
239
|
+
experiments,
|
|
240
|
+
featureFlags: featureFlagConfigurations
|
|
241
|
+
};
|
|
206
242
|
}
|
|
207
|
-
updateStorageData(
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
kameleoonConfiguration: this.configurationData,
|
|
211
|
-
lastUpdate: lastUpdate.toString(),
|
|
212
|
-
};
|
|
213
|
-
return this.storage.write(data);
|
|
243
|
+
const result = this.updateStorageData(new Date());
|
|
244
|
+
if (!result.ok) {
|
|
245
|
+
return result;
|
|
214
246
|
}
|
|
247
|
+
return (0, _tsRes.Ok)(true);
|
|
248
|
+
}
|
|
249
|
+
updateStorageData(lastUpdate) {
|
|
250
|
+
const data = {
|
|
251
|
+
kameleoonTargetingData: this.targetingData,
|
|
252
|
+
kameleoonConfiguration: this.configurationData,
|
|
253
|
+
lastUpdate: lastUpdate.toString()
|
|
254
|
+
};
|
|
255
|
+
return this.storage.write(data);
|
|
256
|
+
}
|
|
215
257
|
}
|
|
216
258
|
exports.CampaignConfiguration = CampaignConfiguration;
|
|
217
259
|
//# sourceMappingURL=campaignConfiguration.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"campaignConfiguration.js","sourceRoot":"","sources":["../../src/campaignConfiguration/campaignConfiguration.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"campaignConfiguration.js","names":["_tsRes","require","_constants","_eventSource","ownKeys","object","enumerableOnly","keys","Object","getOwnPropertySymbols","symbols","filter","sym","getOwnPropertyDescriptor","enumerable","push","apply","_objectSpread","target","i","arguments","length","source","forEach","key","_defineProperty","getOwnPropertyDescriptors","defineProperties","defineProperty","obj","value","_toPropertyKey","configurable","writable","arg","_toPrimitive","String","input","hint","prim","Symbol","toPrimitive","undefined","res","call","TypeError","Number","CampaignConfiguration","constructor","settings","storage","requester","externalClientConfiguration","DEFAULT_CAMPAIGN_CONFIGURATION","targetingData","configurationData","lastUpdate","Date","readStorageData","targetingDataIntervalId","setInterval","cleanupOutdatedTargetingData","CLEANUP_TARGETING_DATA_INTERVAL","err","clearInterval","initialize","externalEventSource","shouldUpdate","checkShouldUpdate","updateResult","updateClientConfiguration","ok","configuration","realTimeUpdate","updateConfigurationIntervalId","eventSource","ExternalEventSource","siteCode","updateEventCallback","_timeStamp","configurationUpdateCallback","open","close","bind","updateInterval","Ok","addTargetingData","visitorCode","data","dataItem","lastActivityTime","now","result","updateStorageData","unsentTargetingData","getUnsentData","unsentDataItem","clearUnsentData","onConfigurationUpdate","callback","storedTargetingData","experiments","featureFlags","lastUpdateTime","getTime","updateWindowEdge","currentTime","resultTargetingData","entries","resultValue","item","isDataExpired","SESSION_DURATION","throw","read","kameleoonTargetingData","kameleoonConfiguration","parse","timeStamp","featureFlagConfigurations","clientConfigurationResult","getClientConfiguration","toString","write","exports"],"sources":["../../src/campaignConfiguration/campaignConfiguration.ts"],"sourcesContent":["import { Ok, Result } from 'ts-res';\nimport { KameleoonError } from '../kameleoonError/kameleoonError';\nimport { ClientSettingsType } from '../clientSettings/types';\nimport {\n CLEANUP_TARGETING_DATA_INTERVAL,\n DEFAULT_CAMPAIGN_CONFIGURATION,\n SESSION_DURATION,\n} from './constants';\nimport {\n CampaignConfigurationParametersType,\n ConfigurationDataType,\n ConfigurationType,\n ExperimentItemType,\n FeatureFlagType,\n UnsentTargetingDataType,\n} from './types';\nimport { KameleoonDataType } from '../kameleoonData';\nimport { Requester, GetClientConfigurationResultType } from '../requester';\nimport { TargetingDataItemType, TargetingDataType } from '../targeting';\nimport { IStorage, ClientDataType } from '../storage';\nimport {\n ExternalEventSource,\n IEventSource,\n IExternalEventSourceConstructor,\n} from '../eventSource';\n\ninterface ICampaignConfiguration {\n initialize: (\n eventSource: IExternalEventSourceConstructor,\n ) => Promise<Result<void, KameleoonError>>;\n addTargetingData: (\n visitorCode: string,\n ...data: KameleoonDataType[]\n ) => Result<void, KameleoonError>;\n getUnsentData: (visitorCode: string) => KameleoonDataType[];\n clearUnsentData: (visitorCode: string) => void;\n onConfigurationUpdate: (callback: () => void) => void;\n readonly experiments: ExperimentItemType[];\n readonly storedTargetingData: TargetingDataType;\n readonly featureFlags: FeatureFlagType[];\n readonly configuration: ConfigurationType;\n}\n\nexport class CampaignConfiguration implements ICampaignConfiguration {\n private configurationUpdateCallback?: () => void;\n private updateConfigurationIntervalId: NodeJS.Timer | null = null;\n private targetingDataIntervalId: NodeJS.Timer | null = null;\n private unsentTargetingData: UnsentTargetingDataType = {};\n private targetingData: TargetingDataType =\n DEFAULT_CAMPAIGN_CONFIGURATION.targetingData;\n private configurationData: ConfigurationDataType =\n DEFAULT_CAMPAIGN_CONFIGURATION.configurationData;\n private settings: ClientSettingsType;\n private lastUpdate: Date;\n private storage: IStorage<ClientDataType>;\n private requester: Requester;\n private eventSource?: IEventSource;\n private externalClientConfiguration?: GetClientConfigurationResultType;\n\n constructor({\n settings,\n storage,\n requester,\n externalClientConfiguration,\n }: CampaignConfigurationParametersType) {\n this.requester = requester;\n this.settings = settings;\n this.lastUpdate = new Date();\n this.storage = storage;\n this.readStorageData();\n this.externalClientConfiguration = externalClientConfiguration;\n\n // --- Note ---\n // We can not make delayed code execution recoverable, as it might lead\n // to targeting data storage size overflow\n try {\n this.targetingDataIntervalId = setInterval(\n () => this.cleanupOutdatedTargetingData.call(this, this.targetingData),\n CLEANUP_TARGETING_DATA_INTERVAL,\n );\n } catch (err) {\n if (this.targetingDataIntervalId) {\n clearInterval(this.targetingDataIntervalId);\n }\n\n throw err;\n }\n }\n\n public async initialize(\n externalEventSource: IExternalEventSourceConstructor,\n ): Promise<Result<void, KameleoonError>> {\n const shouldUpdate = this.checkShouldUpdate();\n\n // --- Initial data fetch ---\n if (shouldUpdate) {\n const updateResult = await this.updateClientConfiguration();\n\n if (!updateResult.ok) {\n return updateResult;\n }\n }\n\n // --- Note ---\n // Interval is cleaned up in case real time update\n // was activated while initialized client already exists\n if (\n this.configurationData.configuration.realTimeUpdate &&\n !this.externalClientConfiguration\n ) {\n if (this.updateConfigurationIntervalId) {\n clearInterval(this.updateConfigurationIntervalId);\n }\n\n this.eventSource = new ExternalEventSource(\n this.settings.siteCode,\n externalEventSource,\n );\n\n const updateEventCallback = (_timeStamp: number) => {\n this.updateClientConfiguration();\n\n if (this.configurationUpdateCallback) {\n this.configurationUpdateCallback();\n }\n };\n\n this.eventSource.open(updateEventCallback);\n } else {\n // --- Note ---\n // Event Source is cleaned up in case real time update\n // was disabled while initialized client already exists\n if (this.eventSource) {\n this.eventSource.close();\n }\n\n if (this.updateConfigurationIntervalId) {\n clearInterval(this.updateConfigurationIntervalId);\n }\n\n // --- Note ---\n // Same as targeting data interval we don't want to make failed configuration\n // retrieval recoverable\n try {\n this.updateConfigurationIntervalId = setInterval(\n this.updateClientConfiguration.bind(this),\n this.settings.updateInterval,\n );\n } catch (err) {\n if (this.updateConfigurationIntervalId) {\n clearInterval(this.updateConfigurationIntervalId);\n }\n\n throw err;\n }\n }\n\n return Ok();\n }\n\n public addTargetingData(\n visitorCode: string,\n ...data: KameleoonDataType[]\n ): Result<void, KameleoonError> {\n if (!(visitorCode in this.targetingData)) {\n this.targetingData[visitorCode] = [];\n }\n\n data.forEach((dataItem) => {\n // --- Note ---\n // Previous check excludes the failure possibility\n (this.targetingData[visitorCode] as TargetingDataItemType[]).push({\n data: dataItem.data,\n lastActivityTime: Date.now(),\n });\n });\n\n // --- Note ---\n // `targetingData` should not refresh `lastUpdate` time\n const result = this.updateStorageData(this.lastUpdate);\n\n if (result.ok) {\n data.forEach((dataItem) => {\n if (!this.unsentTargetingData[visitorCode]) {\n this.unsentTargetingData[visitorCode] = [];\n }\n\n this.unsentTargetingData[visitorCode].push(dataItem);\n });\n }\n\n return result;\n }\n\n public getUnsentData(visitorCode: string): KameleoonDataType[] {\n const unsentDataItem = this.unsentTargetingData[visitorCode];\n\n if (!unsentDataItem) {\n return [];\n }\n\n return unsentDataItem;\n }\n\n public clearUnsentData(visitorCode: string): void {\n this.unsentTargetingData[visitorCode] = [];\n }\n\n public onConfigurationUpdate(callback: () => void): void {\n this.configurationUpdateCallback = callback;\n }\n\n get storedTargetingData(): TargetingDataType {\n return this.targetingData;\n }\n\n get experiments(): ExperimentItemType[] {\n return this.configurationData.experiments;\n }\n\n get featureFlags(): FeatureFlagType[] {\n return this.configurationData.featureFlags;\n }\n\n get configuration(): ConfigurationType {\n return this.configurationData.configuration;\n }\n\n private checkShouldUpdate(): boolean {\n const { featureFlags, experiments, configuration } = this.configurationData;\n const { updateInterval } = this.settings;\n\n if (!featureFlags.length && !experiments.length) {\n return true;\n }\n\n if (configuration.realTimeUpdate) {\n return true;\n }\n\n const lastUpdateTime = this.lastUpdate.getTime();\n const updateWindowEdge = Date.now() - updateInterval;\n\n return lastUpdateTime < updateWindowEdge;\n }\n\n private cleanupOutdatedTargetingData(data: TargetingDataType): void {\n const currentTime = Date.now();\n const resultTargetingData: TargetingDataType = { ...data };\n\n for (const [key, value] of Object.entries(resultTargetingData)) {\n if (value) {\n const resultValue = value.filter((item) => {\n const isDataExpired =\n item.lastActivityTime + SESSION_DURATION < currentTime;\n\n return isDataExpired;\n });\n\n resultTargetingData[key] = resultValue;\n } else {\n resultTargetingData[key] = [];\n }\n }\n\n this.targetingData = resultTargetingData;\n // --- Note ---\n // `targetingData` should not refresh `lastUpdate` time\n this.updateStorageData(this.lastUpdate).throw();\n }\n\n private readStorageData(): void {\n const result = this.storage.read();\n\n if (result.ok) {\n const { kameleoonTargetingData, kameleoonConfiguration, lastUpdate } =\n result.data;\n\n this.configurationData = kameleoonConfiguration;\n this.targetingData = kameleoonTargetingData;\n this.lastUpdate = new Date(Date.parse(lastUpdate));\n }\n }\n\n private async updateClientConfiguration(\n timeStamp?: number,\n ): Promise<Result<boolean, KameleoonError>> {\n // --- Note ---\n // if `externalClientConfiguration` is passed, fetching is disabled and passed config is used instead\n if (this.externalClientConfiguration) {\n // --- Note ---\n // `featureFlags` field is omitted (v1)\n // instead `featureFlagConfigurations` is used (v2)\n const { configuration, experiments, featureFlagConfigurations } =\n this.externalClientConfiguration;\n\n this.configurationData = {\n configuration,\n experiments,\n featureFlags: featureFlagConfigurations,\n };\n } else {\n const clientConfigurationResult =\n await this.requester.getClientConfiguration(timeStamp);\n\n if (!clientConfigurationResult.ok) {\n return clientConfigurationResult;\n }\n\n // --- Note ---\n // `featureFlags` field is omitted (v1)\n // instead `featureFlagConfigurations` is used (v2)\n const { configuration, experiments, featureFlagConfigurations } =\n clientConfigurationResult.data;\n\n this.configurationData = {\n configuration,\n experiments,\n featureFlags: featureFlagConfigurations,\n };\n }\n\n const result = this.updateStorageData(new Date());\n\n if (!result.ok) {\n return result;\n }\n\n return Ok(true);\n }\n\n private updateStorageData(lastUpdate: Date): Result<void, KameleoonError> {\n const data: ClientDataType = {\n kameleoonTargetingData: this.targetingData,\n kameleoonConfiguration: this.configurationData,\n lastUpdate: lastUpdate.toString(),\n };\n\n return this.storage.write(data);\n }\n}\n"],"mappings":"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"}
|
|
@@ -1,23 +1,29 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.SESSION_DURATION = exports.DEFAULT_CAMPAIGN_CONFIGURATION = exports.CLEANUP_TARGETING_DATA_INTERVAL = void 0;
|
|
7
|
+
var _types = require("../types");
|
|
5
8
|
/**
|
|
6
9
|
* @constant default cleanup interval in millisecons
|
|
7
10
|
* */
|
|
8
|
-
|
|
11
|
+
const CLEANUP_TARGETING_DATA_INTERVAL = 30 * _types.Milliseconds.Minute;
|
|
9
12
|
/**
|
|
10
13
|
* @constant default session duration in millisecons
|
|
11
14
|
* */
|
|
12
|
-
exports.
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
15
|
+
exports.CLEANUP_TARGETING_DATA_INTERVAL = CLEANUP_TARGETING_DATA_INTERVAL;
|
|
16
|
+
const SESSION_DURATION = 30 * _types.Milliseconds.Minute;
|
|
17
|
+
exports.SESSION_DURATION = SESSION_DURATION;
|
|
18
|
+
const DEFAULT_CAMPAIGN_CONFIGURATION = {
|
|
19
|
+
targetingData: {},
|
|
20
|
+
configurationData: {
|
|
21
|
+
experiments: [],
|
|
22
|
+
featureFlags: [],
|
|
23
|
+
configuration: {
|
|
24
|
+
realTimeUpdate: false
|
|
25
|
+
}
|
|
26
|
+
}
|
|
22
27
|
};
|
|
28
|
+
exports.DEFAULT_CAMPAIGN_CONFIGURATION = DEFAULT_CAMPAIGN_CONFIGURATION;
|
|
23
29
|
//# sourceMappingURL=constants.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"constants.js","
|
|
1
|
+
{"version":3,"file":"constants.js","names":["_types","require","CLEANUP_TARGETING_DATA_INTERVAL","Milliseconds","Minute","exports","SESSION_DURATION","DEFAULT_CAMPAIGN_CONFIGURATION","targetingData","configurationData","experiments","featureFlags","configuration","realTimeUpdate"],"sources":["../../src/campaignConfiguration/constants.ts"],"sourcesContent":["import { Milliseconds } from '../types';\n\n/**\n * @constant default cleanup interval in millisecons\n * */\nexport const CLEANUP_TARGETING_DATA_INTERVAL = 30 * Milliseconds.Minute;\n/**\n * @constant default session duration in millisecons\n * */\nexport const SESSION_DURATION = 30 * Milliseconds.Minute;\n\nexport const DEFAULT_CAMPAIGN_CONFIGURATION = {\n targetingData: {},\n configurationData: {\n experiments: [],\n featureFlags: [],\n configuration: {\n realTimeUpdate: false,\n },\n },\n};\n"],"mappings":";;;;;;AAAA,IAAAA,MAAA,GAAAC,OAAA;AAEA;AACA;AACA;AACO,MAAMC,+BAA+B,GAAG,EAAE,GAAGC,mBAAY,CAACC,MAAM;AACvE;AACA;AACA;AAFAC,OAAA,CAAAH,+BAAA,GAAAA,+BAAA;AAGO,MAAMI,gBAAgB,GAAG,EAAE,GAAGH,mBAAY,CAACC,MAAM;AAACC,OAAA,CAAAC,gBAAA,GAAAA,gBAAA;AAElD,MAAMC,8BAA8B,GAAG;EAC5CC,aAAa,EAAE,CAAC,CAAC;EACjBC,iBAAiB,EAAE;IACjBC,WAAW,EAAE,EAAE;IACfC,YAAY,EAAE,EAAE;IAChBC,aAAa,EAAE;MACbC,cAAc,EAAE;IAClB;EACF;AACF,CAAC;AAACR,OAAA,CAAAE,8BAAA,GAAAA,8BAAA"}
|