@uniformdev/context 19.142.2-alpha.1 → 19.146.1-alpha.1
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/api/api.d.mts +25 -1
- package/dist/api/api.d.ts +25 -1
- package/dist/index.d.mts +12 -3
- package/dist/index.d.ts +12 -3
- package/dist/index.esm.js +447 -7
- package/dist/index.js +448 -7
- package/dist/index.mjs +447 -7
- package/dist/{types-WtfxfDct.d.mts → types-DqYG-dCc.d.mts} +36 -2
- package/dist/{types-WtfxfDct.d.ts → types-DqYG-dCc.d.ts} +36 -2
- package/package.json +5 -3
package/dist/index.mjs
CHANGED
@@ -76,6 +76,31 @@ function computeAggregateDimension(primitiveScores, aggregateDimension, allAggre
|
|
76
76
|
// src/manifest/constants.ts
|
77
77
|
var ENR_SEPARATOR = "_";
|
78
78
|
|
79
|
+
// src/manifest/goals/evaluators/SignalGoalEvaluator.ts
|
80
|
+
var _signal, _id;
|
81
|
+
var SignalGoalEvaluator = class {
|
82
|
+
constructor(options) {
|
83
|
+
__privateAdd(this, _signal, void 0);
|
84
|
+
__privateAdd(this, _id, void 0);
|
85
|
+
__privateSet(this, _id, options.id);
|
86
|
+
__privateSet(this, _signal, options.signal);
|
87
|
+
}
|
88
|
+
get id() {
|
89
|
+
return __privateGet(this, _id);
|
90
|
+
}
|
91
|
+
evaluate({ scores, quirks }) {
|
92
|
+
const score = scores == null ? void 0 : scores[__privateGet(this, _id)];
|
93
|
+
const key = `goal_${__privateGet(this, _id)}_triggered`;
|
94
|
+
const hasGoalTriggered = (quirks == null ? void 0 : quirks[key]) === "1";
|
95
|
+
return {
|
96
|
+
key,
|
97
|
+
triggered: typeof score === "number" && !hasGoalTriggered
|
98
|
+
};
|
99
|
+
}
|
100
|
+
};
|
101
|
+
_signal = new WeakMap();
|
102
|
+
_id = new WeakMap();
|
103
|
+
|
79
104
|
// src/manifest/signals/SignalInstance.ts
|
80
105
|
var _evaluator, _onLogMessage;
|
81
106
|
var SignalInstance = class {
|
@@ -133,7 +158,7 @@ var rollForControlGroup = (value) => {
|
|
133
158
|
};
|
134
159
|
|
135
160
|
// src/manifest/ManifestInstance.ts
|
136
|
-
var _mf, _signalInstances, _onLogMessage2;
|
161
|
+
var _mf, _signalInstances, _goalEvaluators, _onLogMessage2;
|
137
162
|
var ManifestInstance = class {
|
138
163
|
constructor({
|
139
164
|
manifest,
|
@@ -145,13 +170,19 @@ var ManifestInstance = class {
|
|
145
170
|
__publicField(this, "data");
|
146
171
|
__privateAdd(this, _mf, void 0);
|
147
172
|
__privateAdd(this, _signalInstances, void 0);
|
173
|
+
__privateAdd(this, _goalEvaluators, []);
|
148
174
|
__privateAdd(this, _onLogMessage2, void 0);
|
149
|
-
var _a, _b, _c;
|
175
|
+
var _a, _b, _c, _d, _e;
|
150
176
|
__privateSet(this, _mf, (_a = manifest.project) != null ? _a : {});
|
151
177
|
this.data = manifest;
|
152
178
|
__privateSet(this, _signalInstances, Object.entries((_c = (_b = __privateGet(this, _mf).pz) == null ? void 0 : _b.sig) != null ? _c : []).map(
|
153
179
|
([id, signal]) => new SignalInstance({ ...signal, id }, evaluator, onLogMessage)
|
154
180
|
));
|
181
|
+
Object.entries((_e = (_d = __privateGet(this, _mf).pz) == null ? void 0 : _d.sig) != null ? _e : []).forEach(([id, signal]) => {
|
182
|
+
if (signal.conversion) {
|
183
|
+
__privateGet(this, _goalEvaluators).push(new SignalGoalEvaluator({ id, signal }));
|
184
|
+
}
|
185
|
+
});
|
155
186
|
__privateSet(this, _onLogMessage2, onLogMessage);
|
156
187
|
}
|
157
188
|
rollForControlGroup() {
|
@@ -179,6 +210,28 @@ var ManifestInstance = class {
|
|
179
210
|
}
|
180
211
|
return commands;
|
181
212
|
}
|
213
|
+
computeGoals(data) {
|
214
|
+
const commands = [];
|
215
|
+
__privateGet(this, _goalEvaluators).forEach((evaluator) => {
|
216
|
+
const { triggered, key } = evaluator.evaluate(data);
|
217
|
+
if (triggered) {
|
218
|
+
commands.push({
|
219
|
+
type: "setgoal",
|
220
|
+
data: {
|
221
|
+
goal: evaluator.id
|
222
|
+
}
|
223
|
+
});
|
224
|
+
commands.push({
|
225
|
+
type: "setquirk",
|
226
|
+
data: {
|
227
|
+
key,
|
228
|
+
value: "1"
|
229
|
+
}
|
230
|
+
});
|
231
|
+
}
|
232
|
+
});
|
233
|
+
return commands;
|
234
|
+
}
|
182
235
|
/**
|
183
236
|
* Computes aggregated scores based on other dimensions
|
184
237
|
*/
|
@@ -197,6 +250,7 @@ var ManifestInstance = class {
|
|
197
250
|
};
|
198
251
|
_mf = new WeakMap();
|
199
252
|
_signalInstances = new WeakMap();
|
253
|
+
_goalEvaluators = new WeakMap();
|
200
254
|
_onLogMessage2 = new WeakMap();
|
201
255
|
|
202
256
|
// src/manifest/signals/criteria/evaluators/cookieEvaluator.ts
|
@@ -1088,6 +1142,7 @@ var emptyVisitorData = () => ({
|
|
1088
1142
|
scores: {},
|
1089
1143
|
sessionScores: {},
|
1090
1144
|
tests: {},
|
1145
|
+
goals: {},
|
1091
1146
|
consent: false,
|
1092
1147
|
controlGroup: false,
|
1093
1148
|
personalizeVariants: {}
|
@@ -1103,7 +1158,7 @@ var clone = rfdc();
|
|
1103
1158
|
function applyCommandsToData(commands, state, inControlGroup) {
|
1104
1159
|
const newData = state ? clone(state) : emptyVisitorData();
|
1105
1160
|
commands.forEach((command) => {
|
1106
|
-
var _a, _b;
|
1161
|
+
var _a, _b, _c;
|
1107
1162
|
switch (command.type) {
|
1108
1163
|
case "consent":
|
1109
1164
|
newData.consent = command.data;
|
@@ -1158,6 +1213,10 @@ function applyCommandsToData(commands, state, inControlGroup) {
|
|
1158
1213
|
console.warn("Overwriting existing control group definition is not allowed");
|
1159
1214
|
}
|
1160
1215
|
break;
|
1216
|
+
case "setgoal":
|
1217
|
+
newData.goals = (_c = newData.goals) != null ? _c : {};
|
1218
|
+
newData.goals[command.data.goal] = true;
|
1219
|
+
break;
|
1161
1220
|
default:
|
1162
1221
|
throw new Error(`Unknown command`);
|
1163
1222
|
}
|
@@ -1323,7 +1382,7 @@ currentData_get = function() {
|
|
1323
1382
|
};
|
1324
1383
|
_replaceData = new WeakSet();
|
1325
1384
|
replaceData_fn = function(data, quiet = false) {
|
1326
|
-
var _a, _b, _c, _d, _e, _f, _g, _h, _i;
|
1385
|
+
var _a, _b, _c, _d, _e, _f, _g, _h, _i, _j, _k;
|
1327
1386
|
const oldData = __privateGet(this, _currentData, currentData_get);
|
1328
1387
|
const now = Date.now();
|
1329
1388
|
if (data.controlGroup) {
|
@@ -1344,6 +1403,7 @@ replaceData_fn = function(data, quiet = false) {
|
|
1344
1403
|
const haveSessionScoresChanged = !dequal3(oldData == null ? void 0 : oldData.visitorData.sessionScores, data.sessionScores);
|
1345
1404
|
const haveQuirksChanged = !dequal3(oldData == null ? void 0 : oldData.visitorData.quirks, data.quirks);
|
1346
1405
|
const haveTestsChanged = !dequal3(oldData == null ? void 0 : oldData.visitorData.tests, data.tests);
|
1406
|
+
const haveGoalsChanged = !dequal3(oldData == null ? void 0 : oldData.visitorData.goals, data.goals);
|
1347
1407
|
const updatedData = {
|
1348
1408
|
updated: now,
|
1349
1409
|
visitorData: data
|
@@ -1368,6 +1428,15 @@ replaceData_fn = function(data, quiet = false) {
|
|
1368
1428
|
__privateGet(this, _mitt2).emit("controlGroupUpdated", data);
|
1369
1429
|
(_i = (_h = __privateGet(this, _options)).onLogMessage) == null ? void 0 : _i.call(_h, ["debug", 104, (_g = data.controlGroup) != null ? _g : false]);
|
1370
1430
|
}
|
1431
|
+
if (haveGoalsChanged) {
|
1432
|
+
const newGoalKeys = Object.keys((_j = data.goals) != null ? _j : {});
|
1433
|
+
for (let i = 0; i < newGoalKeys.length; i++) {
|
1434
|
+
const key = newGoalKeys[i];
|
1435
|
+
if (!((_k = oldData == null ? void 0 : oldData.visitorData.goals) == null ? void 0 : _k[key])) {
|
1436
|
+
__privateGet(this, _mitt2).emit("goalConverted", { goalId: key });
|
1437
|
+
}
|
1438
|
+
}
|
1439
|
+
}
|
1371
1440
|
}
|
1372
1441
|
};
|
1373
1442
|
_setVisitTimeout = new WeakSet();
|
@@ -1420,10 +1489,11 @@ import { dequal as dequal4 } from "dequal/lite";
|
|
1420
1489
|
import mitt3 from "mitt";
|
1421
1490
|
var CONTEXTUAL_EDITING_TEST_NAME = "contextual_editing_test";
|
1422
1491
|
var CONTEXTUAL_EDITING_TEST_SELECTED_VARIANT_ID = "contextual_editing_test_selected_variant";
|
1423
|
-
var _serverTransitionState, _scores, _state, _pzCache, _mitt3, _emitTest, emitTest_fn, _updateComputedScores, updateComputedScores_fn, _calculateScores, calculateScores_fn;
|
1492
|
+
var _serverTransitionState, _scores, _state, _pzCache, _plugins, _mitt3, _emitTest, emitTest_fn, _updateGoals, updateGoals_fn, _updateComputedScores, updateComputedScores_fn, _calculateScores, calculateScores_fn;
|
1424
1493
|
var Context = class {
|
1425
1494
|
constructor(options) {
|
1426
1495
|
__privateAdd(this, _emitTest);
|
1496
|
+
__privateAdd(this, _updateGoals);
|
1427
1497
|
__privateAdd(this, _updateComputedScores);
|
1428
1498
|
__privateAdd(this, _calculateScores);
|
1429
1499
|
__publicField(this, "manifest");
|
@@ -1431,6 +1501,7 @@ var Context = class {
|
|
1431
1501
|
__privateAdd(this, _scores, {});
|
1432
1502
|
__privateAdd(this, _state, void 0);
|
1433
1503
|
__privateAdd(this, _pzCache, {});
|
1504
|
+
__privateAdd(this, _plugins, void 0);
|
1434
1505
|
__privateAdd(this, _mitt3, mitt3());
|
1435
1506
|
/**
|
1436
1507
|
* Subscribe to events
|
@@ -1443,7 +1514,8 @@ var Context = class {
|
|
1443
1514
|
var _a, _b;
|
1444
1515
|
const { manifest, ...storageOptions } = options;
|
1445
1516
|
__privateSet(this, _state, {});
|
1446
|
-
(
|
1517
|
+
__privateSet(this, _plugins, options.plugins);
|
1518
|
+
(_a = __privateGet(this, _plugins)) == null ? void 0 : _a.forEach((plugin) => {
|
1447
1519
|
if (!plugin.logDrain) {
|
1448
1520
|
return;
|
1449
1521
|
}
|
@@ -1486,11 +1558,15 @@ var Context = class {
|
|
1486
1558
|
previousState: __privateGet(this, _state),
|
1487
1559
|
visitor: this.storage.data
|
1488
1560
|
});
|
1561
|
+
__privateMethod(this, _updateGoals, updateGoals_fn).call(this, {
|
1562
|
+
quirks: quirks.quirks,
|
1563
|
+
scores: void 0
|
1564
|
+
});
|
1489
1565
|
this.storage.updateData(updates);
|
1490
1566
|
__privateGet(this, _mitt3).emit("quirksUpdated", quirks.quirks);
|
1491
1567
|
__privateGet(this, _mitt3).emit("log", ["info", 4, quirks.quirks]);
|
1492
1568
|
});
|
1493
|
-
(_b =
|
1569
|
+
(_b = __privateGet(this, _plugins)) == null ? void 0 : _b.forEach((plugin) => {
|
1494
1570
|
if (!plugin.init) {
|
1495
1571
|
return;
|
1496
1572
|
}
|
@@ -1625,6 +1701,15 @@ var Context = class {
|
|
1625
1701
|
__privateSet(this, _serverTransitionState, void 0);
|
1626
1702
|
__privateGet(this, _mitt3).emit("log", ["debug", 131]);
|
1627
1703
|
}
|
1704
|
+
if (__privateGet(this, _plugins)) {
|
1705
|
+
for (let i = 0; i < __privateGet(this, _plugins).length; i++) {
|
1706
|
+
const plugin = __privateGet(this, _plugins)[i];
|
1707
|
+
if (!plugin.update) {
|
1708
|
+
continue;
|
1709
|
+
}
|
1710
|
+
await plugin.update(newData);
|
1711
|
+
}
|
1712
|
+
}
|
1628
1713
|
} finally {
|
1629
1714
|
__privateGet(this, _mitt3).emit("log", ["info", 2, "ENDGROUP"]);
|
1630
1715
|
}
|
@@ -1720,6 +1805,15 @@ var Context = class {
|
|
1720
1805
|
*/
|
1721
1806
|
async forget(fromAllDevices) {
|
1722
1807
|
__privateSet(this, _state, {});
|
1808
|
+
if (__privateGet(this, _plugins)) {
|
1809
|
+
for (let i = 0; i < __privateGet(this, _plugins).length; i++) {
|
1810
|
+
const plugin = __privateGet(this, _plugins)[i];
|
1811
|
+
if (!plugin.forget) {
|
1812
|
+
continue;
|
1813
|
+
}
|
1814
|
+
await plugin.forget();
|
1815
|
+
}
|
1816
|
+
}
|
1723
1817
|
await this.storage.delete(fromAllDevices);
|
1724
1818
|
}
|
1725
1819
|
/**
|
@@ -1760,17 +1854,29 @@ _serverTransitionState = new WeakMap();
|
|
1760
1854
|
_scores = new WeakMap();
|
1761
1855
|
_state = new WeakMap();
|
1762
1856
|
_pzCache = new WeakMap();
|
1857
|
+
_plugins = new WeakMap();
|
1763
1858
|
_mitt3 = new WeakMap();
|
1764
1859
|
_emitTest = new WeakSet();
|
1765
1860
|
emitTest_fn = function(event) {
|
1766
1861
|
__privateGet(this, _mitt3).emit("testResult", event);
|
1767
1862
|
};
|
1863
|
+
_updateGoals = new WeakSet();
|
1864
|
+
updateGoals_fn = async function(data) {
|
1865
|
+
const goalCommands = this.manifest.computeGoals(data);
|
1866
|
+
if (goalCommands.length !== 0) {
|
1867
|
+
await this.storage.updateData(goalCommands);
|
1868
|
+
}
|
1869
|
+
};
|
1768
1870
|
_updateComputedScores = new WeakSet();
|
1769
1871
|
updateComputedScores_fn = function(newData) {
|
1770
1872
|
const newScores = __privateMethod(this, _calculateScores, calculateScores_fn).call(this, newData);
|
1771
1873
|
const newScoresHaveChanged = !dequal4(newScores, __privateGet(this, _scores));
|
1772
1874
|
if (newScoresHaveChanged) {
|
1773
1875
|
__privateSet(this, _scores, newScores);
|
1876
|
+
__privateMethod(this, _updateGoals, updateGoals_fn).call(this, {
|
1877
|
+
scores: __privateGet(this, _scores),
|
1878
|
+
quirks: void 0
|
1879
|
+
});
|
1774
1880
|
__privateGet(this, _mitt3).emit("scoresUpdated", newScores);
|
1775
1881
|
__privateGet(this, _mitt3).emit("log", ["info", 3, newScores]);
|
1776
1882
|
}
|
@@ -1909,6 +2015,339 @@ var ScriptType = /* @__PURE__ */ ((ScriptType2) => {
|
|
1909
2015
|
})(ScriptType || {});
|
1910
2016
|
var EdgeNodeTagName = "nesitag";
|
1911
2017
|
|
2018
|
+
// src/insights/index.ts
|
2019
|
+
import { v4 } from "uuid";
|
2020
|
+
var getBasePayload = () => {
|
2021
|
+
const timeZone = Intl.DateTimeFormat().resolvedOptions().timeZone;
|
2022
|
+
const locale = navigator.languages && navigator.languages.length ? navigator.languages[0] : navigator.userLanguage || navigator.language || navigator.browserLanguage || "en";
|
2023
|
+
return {
|
2024
|
+
"user-agent": window.navigator.userAgent,
|
2025
|
+
locale,
|
2026
|
+
location: timeZone,
|
2027
|
+
referrer: document.referrer,
|
2028
|
+
pathname: window.location.pathname,
|
2029
|
+
href: window.location.href
|
2030
|
+
};
|
2031
|
+
};
|
2032
|
+
var createInsightsClient = ({ endpoint }) => {
|
2033
|
+
const url = new URL(endpoint.host);
|
2034
|
+
url.pathname = "/v0/events";
|
2035
|
+
url.searchParams.set("name", "analytics_events");
|
2036
|
+
const endpointUrl = url.toString();
|
2037
|
+
const sendMessage = async (message) => {
|
2038
|
+
if (typeof window.__UNIFORM_CONTEXTUAL_EDITING__ !== "undefined") {
|
2039
|
+
return;
|
2040
|
+
}
|
2041
|
+
const converted = {
|
2042
|
+
...message,
|
2043
|
+
payload: JSON.stringify(message.payload)
|
2044
|
+
};
|
2045
|
+
const response = await fetch(endpointUrl, {
|
2046
|
+
method: "POST",
|
2047
|
+
headers: {
|
2048
|
+
"Content-Type": "application/json",
|
2049
|
+
Authorization: `Bearer ${endpoint.apiKey}`
|
2050
|
+
},
|
2051
|
+
body: JSON.stringify(converted)
|
2052
|
+
});
|
2053
|
+
const json = await response.json();
|
2054
|
+
return json;
|
2055
|
+
};
|
2056
|
+
return {
|
2057
|
+
sessionStart: (options) => {
|
2058
|
+
const message = {
|
2059
|
+
action: "session_start",
|
2060
|
+
version: "1",
|
2061
|
+
session_id: options.sessionId,
|
2062
|
+
visitor_id: options.visitorId,
|
2063
|
+
page_view_id: options.pageId,
|
2064
|
+
timestamp: (/* @__PURE__ */ new Date()).toISOString(),
|
2065
|
+
payload: {
|
2066
|
+
...getBasePayload(),
|
2067
|
+
previous_session_id: options.previousSessionId
|
2068
|
+
}
|
2069
|
+
};
|
2070
|
+
return sendMessage(message);
|
2071
|
+
},
|
2072
|
+
pageHit: (options) => {
|
2073
|
+
const message = {
|
2074
|
+
action: "page_hit",
|
2075
|
+
version: "1",
|
2076
|
+
session_id: options.sessionId,
|
2077
|
+
visitor_id: options.visitorId,
|
2078
|
+
page_view_id: options.pageId,
|
2079
|
+
timestamp: (/* @__PURE__ */ new Date()).toISOString(),
|
2080
|
+
payload: getBasePayload()
|
2081
|
+
};
|
2082
|
+
return sendMessage(message);
|
2083
|
+
},
|
2084
|
+
testResult: async (options) => {
|
2085
|
+
const message = {
|
2086
|
+
action: "test_result",
|
2087
|
+
version: "1",
|
2088
|
+
session_id: options.sessionId,
|
2089
|
+
visitor_id: options.visitorId,
|
2090
|
+
page_view_id: options.pageId,
|
2091
|
+
timestamp: (/* @__PURE__ */ new Date()).toISOString(),
|
2092
|
+
payload: {
|
2093
|
+
...getBasePayload(),
|
2094
|
+
...options
|
2095
|
+
}
|
2096
|
+
};
|
2097
|
+
return sendMessage(message);
|
2098
|
+
},
|
2099
|
+
personalizationResult: async (options) => {
|
2100
|
+
const messages = options.variantIds.map((variant) => {
|
2101
|
+
const message = {
|
2102
|
+
action: "personalization_result",
|
2103
|
+
version: "1",
|
2104
|
+
session_id: options.sessionId,
|
2105
|
+
visitor_id: options.visitorId,
|
2106
|
+
page_view_id: options.pageId,
|
2107
|
+
timestamp: (/* @__PURE__ */ new Date()).toISOString(),
|
2108
|
+
payload: {
|
2109
|
+
...getBasePayload(),
|
2110
|
+
name: options.name,
|
2111
|
+
variantId: variant.id,
|
2112
|
+
control: variant.control || options.control,
|
2113
|
+
changed: options.changed
|
2114
|
+
}
|
2115
|
+
};
|
2116
|
+
return message;
|
2117
|
+
});
|
2118
|
+
await Promise.all(messages.map((message) => sendMessage(message)));
|
2119
|
+
},
|
2120
|
+
goalConvert: (options) => {
|
2121
|
+
const message = {
|
2122
|
+
action: "goal_convert",
|
2123
|
+
version: "1",
|
2124
|
+
session_id: options.sessionId,
|
2125
|
+
visitor_id: options.visitorId,
|
2126
|
+
page_view_id: options.pageId,
|
2127
|
+
timestamp: (/* @__PURE__ */ new Date()).toISOString(),
|
2128
|
+
payload: {
|
2129
|
+
...getBasePayload(),
|
2130
|
+
goalId: options.goalId
|
2131
|
+
}
|
2132
|
+
};
|
2133
|
+
return sendMessage(message);
|
2134
|
+
},
|
2135
|
+
scoresChange: async (options) => {
|
2136
|
+
const message = {
|
2137
|
+
action: "scores_change",
|
2138
|
+
version: "1",
|
2139
|
+
session_id: options.sessionId,
|
2140
|
+
visitor_id: options.visitorId,
|
2141
|
+
page_view_id: options.pageId,
|
2142
|
+
timestamp: (/* @__PURE__ */ new Date()).toISOString(),
|
2143
|
+
payload: {
|
2144
|
+
...getBasePayload(),
|
2145
|
+
scores: options.scores
|
2146
|
+
}
|
2147
|
+
};
|
2148
|
+
return sendMessage(message);
|
2149
|
+
}
|
2150
|
+
};
|
2151
|
+
};
|
2152
|
+
var createInsightsStorage = () => {
|
2153
|
+
const STORAGE_KEY2 = "ufin";
|
2154
|
+
return {
|
2155
|
+
get: () => {
|
2156
|
+
const data = localStorage.getItem(STORAGE_KEY2);
|
2157
|
+
if (!data) {
|
2158
|
+
return;
|
2159
|
+
}
|
2160
|
+
return JSON.parse(data);
|
2161
|
+
},
|
2162
|
+
set: (data) => {
|
2163
|
+
const toSet = {
|
2164
|
+
...data,
|
2165
|
+
updated: Date.now()
|
2166
|
+
};
|
2167
|
+
localStorage.setItem(STORAGE_KEY2, JSON.stringify(toSet));
|
2168
|
+
},
|
2169
|
+
clear: () => {
|
2170
|
+
localStorage.removeItem(STORAGE_KEY2);
|
2171
|
+
}
|
2172
|
+
};
|
2173
|
+
};
|
2174
|
+
var generateVisitorId = () => {
|
2175
|
+
return `visitor_${generalRandomId()}`;
|
2176
|
+
};
|
2177
|
+
var generateSessionId = () => {
|
2178
|
+
return `session_${generalRandomId()}`;
|
2179
|
+
};
|
2180
|
+
var generatePageId = () => {
|
2181
|
+
return `page_${generalRandomId()}`;
|
2182
|
+
};
|
2183
|
+
var createInsights = ({
|
2184
|
+
endpoint,
|
2185
|
+
sessionDurationSeconds = 30 * 60
|
2186
|
+
}) => {
|
2187
|
+
const client = createInsightsClient({
|
2188
|
+
endpoint
|
2189
|
+
});
|
2190
|
+
const storage = createInsightsStorage();
|
2191
|
+
let storageData = void 0;
|
2192
|
+
let pageId = generatePageId();
|
2193
|
+
let previousUrl = void 0;
|
2194
|
+
return {
|
2195
|
+
init: () => {
|
2196
|
+
storageData = storage.get();
|
2197
|
+
if (!storageData || Date.now() - storageData.updated > sessionDurationSeconds * 1e3) {
|
2198
|
+
const previousSessionId = storageData == null ? void 0 : storageData.sessionId;
|
2199
|
+
storageData = {
|
2200
|
+
visitorId: (storageData == null ? void 0 : storageData.visitorId) || generateVisitorId(),
|
2201
|
+
sessionId: generateSessionId(),
|
2202
|
+
updated: Date.now()
|
2203
|
+
};
|
2204
|
+
storage.set(storageData);
|
2205
|
+
client.sessionStart({
|
2206
|
+
visitorId: storageData.visitorId,
|
2207
|
+
sessionId: storageData.sessionId,
|
2208
|
+
previousSessionId,
|
2209
|
+
maxAgeSeconds: sessionDurationSeconds,
|
2210
|
+
pageId
|
2211
|
+
});
|
2212
|
+
} else if (storageData) {
|
2213
|
+
storage.set(storageData);
|
2214
|
+
}
|
2215
|
+
},
|
2216
|
+
pageHit: () => {
|
2217
|
+
if (!storageData) {
|
2218
|
+
console.error("Insights not initialized");
|
2219
|
+
return;
|
2220
|
+
}
|
2221
|
+
if (previousUrl === window.location.href) {
|
2222
|
+
return;
|
2223
|
+
}
|
2224
|
+
previousUrl = window.location.href;
|
2225
|
+
pageId = generatePageId();
|
2226
|
+
client.pageHit({
|
2227
|
+
visitorId: storageData.visitorId,
|
2228
|
+
sessionId: storageData.sessionId,
|
2229
|
+
pageId
|
2230
|
+
});
|
2231
|
+
},
|
2232
|
+
testResult: (result) => {
|
2233
|
+
if (!storageData) {
|
2234
|
+
console.error("Insights not initialized");
|
2235
|
+
return;
|
2236
|
+
}
|
2237
|
+
client.testResult({
|
2238
|
+
...result,
|
2239
|
+
visitorId: storageData.visitorId,
|
2240
|
+
sessionId: storageData.sessionId,
|
2241
|
+
pageId
|
2242
|
+
});
|
2243
|
+
},
|
2244
|
+
personalizationResult: (result) => {
|
2245
|
+
if (!storageData) {
|
2246
|
+
console.error("Insights not initialized");
|
2247
|
+
return;
|
2248
|
+
}
|
2249
|
+
client.personalizationResult({
|
2250
|
+
...result,
|
2251
|
+
visitorId: storageData.visitorId,
|
2252
|
+
sessionId: storageData.sessionId,
|
2253
|
+
pageId
|
2254
|
+
});
|
2255
|
+
},
|
2256
|
+
goalConvert: (goalId) => {
|
2257
|
+
if (!storageData) {
|
2258
|
+
console.error("Insights not initialized");
|
2259
|
+
return;
|
2260
|
+
}
|
2261
|
+
client.goalConvert({
|
2262
|
+
visitorId: storageData.visitorId,
|
2263
|
+
sessionId: storageData.sessionId,
|
2264
|
+
goalId,
|
2265
|
+
pageId
|
2266
|
+
});
|
2267
|
+
},
|
2268
|
+
scoresChange: (scores) => {
|
2269
|
+
if (!storageData) {
|
2270
|
+
console.error("Insights not initialized");
|
2271
|
+
return;
|
2272
|
+
}
|
2273
|
+
client.scoresChange({
|
2274
|
+
visitorId: storageData.visitorId,
|
2275
|
+
sessionId: storageData.sessionId,
|
2276
|
+
scores,
|
2277
|
+
pageId
|
2278
|
+
});
|
2279
|
+
},
|
2280
|
+
forget: () => {
|
2281
|
+
storage.clear();
|
2282
|
+
storageData = void 0;
|
2283
|
+
},
|
2284
|
+
get sessionId() {
|
2285
|
+
return storageData == null ? void 0 : storageData.sessionId;
|
2286
|
+
}
|
2287
|
+
};
|
2288
|
+
};
|
2289
|
+
var enableUniformInsights = (options) => {
|
2290
|
+
const insights = createInsights({
|
2291
|
+
endpoint: options.endpoint
|
2292
|
+
});
|
2293
|
+
let previousUrl = void 0;
|
2294
|
+
return {
|
2295
|
+
init: (context) => {
|
2296
|
+
if (typeof window === "undefined") {
|
2297
|
+
return () => {
|
2298
|
+
};
|
2299
|
+
}
|
2300
|
+
const consentChanged = () => {
|
2301
|
+
if (context.storage.data.consent) {
|
2302
|
+
insights.init();
|
2303
|
+
} else {
|
2304
|
+
insights.forget();
|
2305
|
+
}
|
2306
|
+
};
|
2307
|
+
const handlePersonalizationResult = (data) => {
|
2308
|
+
insights.personalizationResult(data);
|
2309
|
+
};
|
2310
|
+
const handleTestResult = (result) => {
|
2311
|
+
insights.testResult(result);
|
2312
|
+
};
|
2313
|
+
const handleGoalConvert = (result) => {
|
2314
|
+
insights.goalConvert(result.goalId);
|
2315
|
+
};
|
2316
|
+
const handleScoreChange = (scores) => {
|
2317
|
+
insights.scoresChange(scores);
|
2318
|
+
};
|
2319
|
+
context.storage.events.on("goalConverted", handleGoalConvert);
|
2320
|
+
context.storage.events.on("consentUpdated", consentChanged);
|
2321
|
+
context.events.on("personalizationResult", handlePersonalizationResult);
|
2322
|
+
context.events.on("testResult", handleTestResult);
|
2323
|
+
context.events.on("scoresUpdated", handleScoreChange);
|
2324
|
+
if (context.storage.data.consent) {
|
2325
|
+
consentChanged();
|
2326
|
+
}
|
2327
|
+
return () => {
|
2328
|
+
context.storage.events.off("consentUpdated", consentChanged);
|
2329
|
+
context.storage.events.off("goalConverted", handleGoalConvert);
|
2330
|
+
context.events.off("personalizationResult", handlePersonalizationResult);
|
2331
|
+
context.events.off("testResult", handleTestResult);
|
2332
|
+
context.events.off("scoresUpdated", handleScoreChange);
|
2333
|
+
};
|
2334
|
+
},
|
2335
|
+
update: (context) => {
|
2336
|
+
if (context.url && context.url !== previousUrl) {
|
2337
|
+
previousUrl = context.url;
|
2338
|
+
insights.pageHit();
|
2339
|
+
}
|
2340
|
+
},
|
2341
|
+
forget: () => {
|
2342
|
+
insights.forget();
|
2343
|
+
}
|
2344
|
+
};
|
2345
|
+
};
|
2346
|
+
var generalRandomId = () => {
|
2347
|
+
const id = v4();
|
2348
|
+
return id.replaceAll("-", "").toLowerCase();
|
2349
|
+
};
|
2350
|
+
|
1912
2351
|
// src/logging/enableConsoleLogDrain.ts
|
1913
2352
|
import rfdc2 from "rfdc";
|
1914
2353
|
|
@@ -2112,6 +2551,7 @@ export {
|
|
2112
2551
|
enableConsoleLogDrain,
|
2113
2552
|
enableContextDevTools,
|
2114
2553
|
enableDebugConsoleLogDrain,
|
2554
|
+
enableUniformInsights,
|
2115
2555
|
evaluateVariantMatch,
|
2116
2556
|
eventEvaluator,
|
2117
2557
|
explainStringMatch,
|