@uniformdev/context 19.134.3-alpha.28 → 19.135.1-alpha.10
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.js
CHANGED
@@ -80,6 +80,7 @@ __export(src_exports, {
|
|
80
80
|
enableConsoleLogDrain: () => enableConsoleLogDrain,
|
81
81
|
enableContextDevTools: () => enableContextDevTools,
|
82
82
|
enableDebugConsoleLogDrain: () => enableDebugConsoleLogDrain,
|
83
|
+
enableUniformInsights: () => enableUniformInsights,
|
83
84
|
evaluateVariantMatch: () => evaluateVariantMatch,
|
84
85
|
eventEvaluator: () => eventEvaluator,
|
85
86
|
explainStringMatch: () => explainStringMatch,
|
@@ -146,6 +147,31 @@ function computeAggregateDimension(primitiveScores, aggregateDimension, allAggre
|
|
146
147
|
// src/manifest/constants.ts
|
147
148
|
var ENR_SEPARATOR = "_";
|
148
149
|
|
150
|
+
// src/manifest/goals/evaluators/SignalGoalEvaluator.ts
|
151
|
+
var _signal, _id;
|
152
|
+
var SignalGoalEvaluator = class {
|
153
|
+
constructor(options) {
|
154
|
+
__privateAdd(this, _signal, void 0);
|
155
|
+
__privateAdd(this, _id, void 0);
|
156
|
+
__privateSet(this, _id, options.id);
|
157
|
+
__privateSet(this, _signal, options.signal);
|
158
|
+
}
|
159
|
+
get id() {
|
160
|
+
return __privateGet(this, _id);
|
161
|
+
}
|
162
|
+
evaluate({ scores, quirks }) {
|
163
|
+
const score = scores == null ? void 0 : scores[__privateGet(this, _id)];
|
164
|
+
const key = `goal_${__privateGet(this, _id)}_triggered`;
|
165
|
+
const hasGoalTriggered = (quirks == null ? void 0 : quirks[key]) === "1";
|
166
|
+
return {
|
167
|
+
key,
|
168
|
+
triggered: typeof score === "number" && !hasGoalTriggered
|
169
|
+
};
|
170
|
+
}
|
171
|
+
};
|
172
|
+
_signal = new WeakMap();
|
173
|
+
_id = new WeakMap();
|
174
|
+
|
149
175
|
// src/manifest/signals/SignalInstance.ts
|
150
176
|
var _evaluator, _onLogMessage;
|
151
177
|
var SignalInstance = class {
|
@@ -203,7 +229,7 @@ var rollForControlGroup = (value) => {
|
|
203
229
|
};
|
204
230
|
|
205
231
|
// src/manifest/ManifestInstance.ts
|
206
|
-
var _mf, _signalInstances, _onLogMessage2;
|
232
|
+
var _mf, _signalInstances, _goalEvaluators, _onLogMessage2;
|
207
233
|
var ManifestInstance = class {
|
208
234
|
constructor({
|
209
235
|
manifest,
|
@@ -215,13 +241,19 @@ var ManifestInstance = class {
|
|
215
241
|
__publicField(this, "data");
|
216
242
|
__privateAdd(this, _mf, void 0);
|
217
243
|
__privateAdd(this, _signalInstances, void 0);
|
244
|
+
__privateAdd(this, _goalEvaluators, []);
|
218
245
|
__privateAdd(this, _onLogMessage2, void 0);
|
219
|
-
var _a, _b, _c;
|
246
|
+
var _a, _b, _c, _d, _e;
|
220
247
|
__privateSet(this, _mf, (_a = manifest.project) != null ? _a : {});
|
221
248
|
this.data = manifest;
|
222
249
|
__privateSet(this, _signalInstances, Object.entries((_c = (_b = __privateGet(this, _mf).pz) == null ? void 0 : _b.sig) != null ? _c : []).map(
|
223
250
|
([id, signal]) => new SignalInstance({ ...signal, id }, evaluator, onLogMessage)
|
224
251
|
));
|
252
|
+
Object.entries((_e = (_d = __privateGet(this, _mf).pz) == null ? void 0 : _d.sig) != null ? _e : []).forEach(([id, signal]) => {
|
253
|
+
if (signal.conversion) {
|
254
|
+
__privateGet(this, _goalEvaluators).push(new SignalGoalEvaluator({ id, signal }));
|
255
|
+
}
|
256
|
+
});
|
225
257
|
__privateSet(this, _onLogMessage2, onLogMessage);
|
226
258
|
}
|
227
259
|
rollForControlGroup() {
|
@@ -249,6 +281,28 @@ var ManifestInstance = class {
|
|
249
281
|
}
|
250
282
|
return commands;
|
251
283
|
}
|
284
|
+
computeGoals(data) {
|
285
|
+
const commands = [];
|
286
|
+
__privateGet(this, _goalEvaluators).forEach((evaluator) => {
|
287
|
+
const { triggered, key } = evaluator.evaluate(data);
|
288
|
+
if (triggered) {
|
289
|
+
commands.push({
|
290
|
+
type: "setgoal",
|
291
|
+
data: {
|
292
|
+
goal: evaluator.id
|
293
|
+
}
|
294
|
+
});
|
295
|
+
commands.push({
|
296
|
+
type: "setquirk",
|
297
|
+
data: {
|
298
|
+
key,
|
299
|
+
value: "1"
|
300
|
+
}
|
301
|
+
});
|
302
|
+
}
|
303
|
+
});
|
304
|
+
return commands;
|
305
|
+
}
|
252
306
|
/**
|
253
307
|
* Computes aggregated scores based on other dimensions
|
254
308
|
*/
|
@@ -267,6 +321,7 @@ var ManifestInstance = class {
|
|
267
321
|
};
|
268
322
|
_mf = new WeakMap();
|
269
323
|
_signalInstances = new WeakMap();
|
324
|
+
_goalEvaluators = new WeakMap();
|
270
325
|
_onLogMessage2 = new WeakMap();
|
271
326
|
|
272
327
|
// src/manifest/signals/criteria/evaluators/cookieEvaluator.ts
|
@@ -1158,6 +1213,7 @@ var emptyVisitorData = () => ({
|
|
1158
1213
|
scores: {},
|
1159
1214
|
sessionScores: {},
|
1160
1215
|
tests: {},
|
1216
|
+
goals: {},
|
1161
1217
|
consent: false,
|
1162
1218
|
controlGroup: false,
|
1163
1219
|
personalizeVariants: {}
|
@@ -1173,7 +1229,7 @@ var clone = (0, import_rfdc.default)();
|
|
1173
1229
|
function applyCommandsToData(commands, state, inControlGroup) {
|
1174
1230
|
const newData = state ? clone(state) : emptyVisitorData();
|
1175
1231
|
commands.forEach((command) => {
|
1176
|
-
var _a, _b;
|
1232
|
+
var _a, _b, _c;
|
1177
1233
|
switch (command.type) {
|
1178
1234
|
case "consent":
|
1179
1235
|
newData.consent = command.data;
|
@@ -1228,6 +1284,10 @@ function applyCommandsToData(commands, state, inControlGroup) {
|
|
1228
1284
|
console.warn("Overwriting existing control group definition is not allowed");
|
1229
1285
|
}
|
1230
1286
|
break;
|
1287
|
+
case "setgoal":
|
1288
|
+
newData.goals = (_c = newData.goals) != null ? _c : {};
|
1289
|
+
newData.goals[command.data.goal] = true;
|
1290
|
+
break;
|
1231
1291
|
default:
|
1232
1292
|
throw new Error(`Unknown command`);
|
1233
1293
|
}
|
@@ -1393,7 +1453,7 @@ currentData_get = function() {
|
|
1393
1453
|
};
|
1394
1454
|
_replaceData = new WeakSet();
|
1395
1455
|
replaceData_fn = function(data, quiet = false) {
|
1396
|
-
var _a, _b, _c, _d, _e, _f, _g, _h, _i;
|
1456
|
+
var _a, _b, _c, _d, _e, _f, _g, _h, _i, _j, _k;
|
1397
1457
|
const oldData = __privateGet(this, _currentData, currentData_get);
|
1398
1458
|
const now = Date.now();
|
1399
1459
|
if (data.controlGroup) {
|
@@ -1414,6 +1474,7 @@ replaceData_fn = function(data, quiet = false) {
|
|
1414
1474
|
const haveSessionScoresChanged = !(0, import_lite3.dequal)(oldData == null ? void 0 : oldData.visitorData.sessionScores, data.sessionScores);
|
1415
1475
|
const haveQuirksChanged = !(0, import_lite3.dequal)(oldData == null ? void 0 : oldData.visitorData.quirks, data.quirks);
|
1416
1476
|
const haveTestsChanged = !(0, import_lite3.dequal)(oldData == null ? void 0 : oldData.visitorData.tests, data.tests);
|
1477
|
+
const haveGoalsChanged = !(0, import_lite3.dequal)(oldData == null ? void 0 : oldData.visitorData.goals, data.goals);
|
1417
1478
|
const updatedData = {
|
1418
1479
|
updated: now,
|
1419
1480
|
visitorData: data
|
@@ -1438,6 +1499,15 @@ replaceData_fn = function(data, quiet = false) {
|
|
1438
1499
|
__privateGet(this, _mitt2).emit("controlGroupUpdated", data);
|
1439
1500
|
(_i = (_h = __privateGet(this, _options)).onLogMessage) == null ? void 0 : _i.call(_h, ["debug", 104, (_g = data.controlGroup) != null ? _g : false]);
|
1440
1501
|
}
|
1502
|
+
if (haveGoalsChanged) {
|
1503
|
+
const newGoalKeys = Object.keys((_j = data.goals) != null ? _j : {});
|
1504
|
+
for (let i = 0; i < newGoalKeys.length; i++) {
|
1505
|
+
const key = newGoalKeys[i];
|
1506
|
+
if (!((_k = oldData == null ? void 0 : oldData.visitorData.goals) == null ? void 0 : _k[key])) {
|
1507
|
+
__privateGet(this, _mitt2).emit("goalConverted", { goalId: key });
|
1508
|
+
}
|
1509
|
+
}
|
1510
|
+
}
|
1441
1511
|
}
|
1442
1512
|
};
|
1443
1513
|
_setVisitTimeout = new WeakSet();
|
@@ -1490,10 +1560,11 @@ var import_lite4 = require("dequal/lite");
|
|
1490
1560
|
var import_mitt3 = __toESM(require("mitt"));
|
1491
1561
|
var CONTEXTUAL_EDITING_TEST_NAME = "contextual_editing_test";
|
1492
1562
|
var CONTEXTUAL_EDITING_TEST_SELECTED_VARIANT_ID = "contextual_editing_test_selected_variant";
|
1493
|
-
var _serverTransitionState, _scores, _state, _pzCache, _mitt3, _emitTest, emitTest_fn, _updateComputedScores, updateComputedScores_fn, _calculateScores, calculateScores_fn;
|
1563
|
+
var _serverTransitionState, _scores, _state, _pzCache, _plugins, _mitt3, _emitTest, emitTest_fn, _updateGoals, updateGoals_fn, _updateComputedScores, updateComputedScores_fn, _calculateScores, calculateScores_fn;
|
1494
1564
|
var Context = class {
|
1495
1565
|
constructor(options) {
|
1496
1566
|
__privateAdd(this, _emitTest);
|
1567
|
+
__privateAdd(this, _updateGoals);
|
1497
1568
|
__privateAdd(this, _updateComputedScores);
|
1498
1569
|
__privateAdd(this, _calculateScores);
|
1499
1570
|
__publicField(this, "manifest");
|
@@ -1501,6 +1572,7 @@ var Context = class {
|
|
1501
1572
|
__privateAdd(this, _scores, {});
|
1502
1573
|
__privateAdd(this, _state, void 0);
|
1503
1574
|
__privateAdd(this, _pzCache, {});
|
1575
|
+
__privateAdd(this, _plugins, void 0);
|
1504
1576
|
__privateAdd(this, _mitt3, (0, import_mitt3.default)());
|
1505
1577
|
/**
|
1506
1578
|
* Subscribe to events
|
@@ -1513,7 +1585,8 @@ var Context = class {
|
|
1513
1585
|
var _a, _b;
|
1514
1586
|
const { manifest, ...storageOptions } = options;
|
1515
1587
|
__privateSet(this, _state, {});
|
1516
|
-
(
|
1588
|
+
__privateSet(this, _plugins, options.plugins);
|
1589
|
+
(_a = __privateGet(this, _plugins)) == null ? void 0 : _a.forEach((plugin) => {
|
1517
1590
|
if (!plugin.logDrain) {
|
1518
1591
|
return;
|
1519
1592
|
}
|
@@ -1556,11 +1629,15 @@ var Context = class {
|
|
1556
1629
|
previousState: __privateGet(this, _state),
|
1557
1630
|
visitor: this.storage.data
|
1558
1631
|
});
|
1632
|
+
__privateMethod(this, _updateGoals, updateGoals_fn).call(this, {
|
1633
|
+
quirks: quirks.quirks,
|
1634
|
+
scores: void 0
|
1635
|
+
});
|
1559
1636
|
this.storage.updateData(updates);
|
1560
1637
|
__privateGet(this, _mitt3).emit("quirksUpdated", quirks.quirks);
|
1561
1638
|
__privateGet(this, _mitt3).emit("log", ["info", 4, quirks.quirks]);
|
1562
1639
|
});
|
1563
|
-
(_b =
|
1640
|
+
(_b = __privateGet(this, _plugins)) == null ? void 0 : _b.forEach((plugin) => {
|
1564
1641
|
if (!plugin.init) {
|
1565
1642
|
return;
|
1566
1643
|
}
|
@@ -1695,6 +1772,15 @@ var Context = class {
|
|
1695
1772
|
__privateSet(this, _serverTransitionState, void 0);
|
1696
1773
|
__privateGet(this, _mitt3).emit("log", ["debug", 131]);
|
1697
1774
|
}
|
1775
|
+
if (__privateGet(this, _plugins)) {
|
1776
|
+
for (let i = 0; i < __privateGet(this, _plugins).length; i++) {
|
1777
|
+
const plugin = __privateGet(this, _plugins)[i];
|
1778
|
+
if (!plugin.update) {
|
1779
|
+
continue;
|
1780
|
+
}
|
1781
|
+
await plugin.update(newData);
|
1782
|
+
}
|
1783
|
+
}
|
1698
1784
|
} finally {
|
1699
1785
|
__privateGet(this, _mitt3).emit("log", ["info", 2, "ENDGROUP"]);
|
1700
1786
|
}
|
@@ -1790,6 +1876,15 @@ var Context = class {
|
|
1790
1876
|
*/
|
1791
1877
|
async forget(fromAllDevices) {
|
1792
1878
|
__privateSet(this, _state, {});
|
1879
|
+
if (__privateGet(this, _plugins)) {
|
1880
|
+
for (let i = 0; i < __privateGet(this, _plugins).length; i++) {
|
1881
|
+
const plugin = __privateGet(this, _plugins)[i];
|
1882
|
+
if (!plugin.forget) {
|
1883
|
+
continue;
|
1884
|
+
}
|
1885
|
+
await plugin.forget();
|
1886
|
+
}
|
1887
|
+
}
|
1793
1888
|
await this.storage.delete(fromAllDevices);
|
1794
1889
|
}
|
1795
1890
|
/**
|
@@ -1830,17 +1925,29 @@ _serverTransitionState = new WeakMap();
|
|
1830
1925
|
_scores = new WeakMap();
|
1831
1926
|
_state = new WeakMap();
|
1832
1927
|
_pzCache = new WeakMap();
|
1928
|
+
_plugins = new WeakMap();
|
1833
1929
|
_mitt3 = new WeakMap();
|
1834
1930
|
_emitTest = new WeakSet();
|
1835
1931
|
emitTest_fn = function(event) {
|
1836
1932
|
__privateGet(this, _mitt3).emit("testResult", event);
|
1837
1933
|
};
|
1934
|
+
_updateGoals = new WeakSet();
|
1935
|
+
updateGoals_fn = async function(data) {
|
1936
|
+
const goalCommands = this.manifest.computeGoals(data);
|
1937
|
+
if (goalCommands.length !== 0) {
|
1938
|
+
await this.storage.updateData(goalCommands);
|
1939
|
+
}
|
1940
|
+
};
|
1838
1941
|
_updateComputedScores = new WeakSet();
|
1839
1942
|
updateComputedScores_fn = function(newData) {
|
1840
1943
|
const newScores = __privateMethod(this, _calculateScores, calculateScores_fn).call(this, newData);
|
1841
1944
|
const newScoresHaveChanged = !(0, import_lite4.dequal)(newScores, __privateGet(this, _scores));
|
1842
1945
|
if (newScoresHaveChanged) {
|
1843
1946
|
__privateSet(this, _scores, newScores);
|
1947
|
+
__privateMethod(this, _updateGoals, updateGoals_fn).call(this, {
|
1948
|
+
scores: __privateGet(this, _scores),
|
1949
|
+
quirks: void 0
|
1950
|
+
});
|
1844
1951
|
__privateGet(this, _mitt3).emit("scoresUpdated", newScores);
|
1845
1952
|
__privateGet(this, _mitt3).emit("log", ["info", 3, newScores]);
|
1846
1953
|
}
|
@@ -1979,6 +2086,339 @@ var ScriptType = /* @__PURE__ */ ((ScriptType2) => {
|
|
1979
2086
|
})(ScriptType || {});
|
1980
2087
|
var EdgeNodeTagName = "nesitag";
|
1981
2088
|
|
2089
|
+
// src/insights/index.ts
|
2090
|
+
var import_uuid = require("uuid");
|
2091
|
+
var getBasePayload = () => {
|
2092
|
+
const timeZone = Intl.DateTimeFormat().resolvedOptions().timeZone;
|
2093
|
+
const locale = navigator.languages && navigator.languages.length ? navigator.languages[0] : navigator.userLanguage || navigator.language || navigator.browserLanguage || "en";
|
2094
|
+
return {
|
2095
|
+
"user-agent": window.navigator.userAgent,
|
2096
|
+
locale,
|
2097
|
+
location: timeZone,
|
2098
|
+
referrer: document.referrer,
|
2099
|
+
pathname: window.location.pathname,
|
2100
|
+
href: window.location.href
|
2101
|
+
};
|
2102
|
+
};
|
2103
|
+
var createInsightsClient = ({ endpoint }) => {
|
2104
|
+
const url = new URL(endpoint.host);
|
2105
|
+
url.pathname = "/v0/events";
|
2106
|
+
url.searchParams.set("name", "analytics_events");
|
2107
|
+
const endpointUrl = url.toString();
|
2108
|
+
const sendMessage = async (message) => {
|
2109
|
+
if (typeof window.__UNIFORM_CONTEXTUAL_EDITING__ !== "undefined") {
|
2110
|
+
return;
|
2111
|
+
}
|
2112
|
+
const converted = {
|
2113
|
+
...message,
|
2114
|
+
payload: JSON.stringify(message.payload)
|
2115
|
+
};
|
2116
|
+
const response = await fetch(endpointUrl, {
|
2117
|
+
method: "POST",
|
2118
|
+
headers: {
|
2119
|
+
"Content-Type": "application/json",
|
2120
|
+
Authorization: `Bearer ${endpoint.apiKey}`
|
2121
|
+
},
|
2122
|
+
body: JSON.stringify(converted)
|
2123
|
+
});
|
2124
|
+
const json = await response.json();
|
2125
|
+
return json;
|
2126
|
+
};
|
2127
|
+
return {
|
2128
|
+
sessionStart: (options) => {
|
2129
|
+
const message = {
|
2130
|
+
action: "session_start",
|
2131
|
+
version: "1",
|
2132
|
+
session_id: options.sessionId,
|
2133
|
+
visitor_id: options.visitorId,
|
2134
|
+
page_view_id: options.pageId,
|
2135
|
+
timestamp: (/* @__PURE__ */ new Date()).toISOString(),
|
2136
|
+
payload: {
|
2137
|
+
...getBasePayload(),
|
2138
|
+
previous_session_id: options.previousSessionId
|
2139
|
+
}
|
2140
|
+
};
|
2141
|
+
return sendMessage(message);
|
2142
|
+
},
|
2143
|
+
pageHit: (options) => {
|
2144
|
+
const message = {
|
2145
|
+
action: "page_hit",
|
2146
|
+
version: "1",
|
2147
|
+
session_id: options.sessionId,
|
2148
|
+
visitor_id: options.visitorId,
|
2149
|
+
page_view_id: options.pageId,
|
2150
|
+
timestamp: (/* @__PURE__ */ new Date()).toISOString(),
|
2151
|
+
payload: getBasePayload()
|
2152
|
+
};
|
2153
|
+
return sendMessage(message);
|
2154
|
+
},
|
2155
|
+
testResult: async (options) => {
|
2156
|
+
const message = {
|
2157
|
+
action: "test_result",
|
2158
|
+
version: "1",
|
2159
|
+
session_id: options.sessionId,
|
2160
|
+
visitor_id: options.visitorId,
|
2161
|
+
page_view_id: options.pageId,
|
2162
|
+
timestamp: (/* @__PURE__ */ new Date()).toISOString(),
|
2163
|
+
payload: {
|
2164
|
+
...getBasePayload(),
|
2165
|
+
...options
|
2166
|
+
}
|
2167
|
+
};
|
2168
|
+
return sendMessage(message);
|
2169
|
+
},
|
2170
|
+
personalizationResult: async (options) => {
|
2171
|
+
const messages = options.variantIds.map((variant) => {
|
2172
|
+
const message = {
|
2173
|
+
action: "personalization_result",
|
2174
|
+
version: "1",
|
2175
|
+
session_id: options.sessionId,
|
2176
|
+
visitor_id: options.visitorId,
|
2177
|
+
page_view_id: options.pageId,
|
2178
|
+
timestamp: (/* @__PURE__ */ new Date()).toISOString(),
|
2179
|
+
payload: {
|
2180
|
+
...getBasePayload(),
|
2181
|
+
name: options.name,
|
2182
|
+
variantId: variant.id,
|
2183
|
+
control: variant.control || options.control,
|
2184
|
+
changed: options.changed
|
2185
|
+
}
|
2186
|
+
};
|
2187
|
+
return message;
|
2188
|
+
});
|
2189
|
+
await Promise.all(messages.map((message) => sendMessage(message)));
|
2190
|
+
},
|
2191
|
+
goalConvert: (options) => {
|
2192
|
+
const message = {
|
2193
|
+
action: "goal_convert",
|
2194
|
+
version: "1",
|
2195
|
+
session_id: options.sessionId,
|
2196
|
+
visitor_id: options.visitorId,
|
2197
|
+
page_view_id: options.pageId,
|
2198
|
+
timestamp: (/* @__PURE__ */ new Date()).toISOString(),
|
2199
|
+
payload: {
|
2200
|
+
...getBasePayload(),
|
2201
|
+
goalId: options.goalId
|
2202
|
+
}
|
2203
|
+
};
|
2204
|
+
return sendMessage(message);
|
2205
|
+
},
|
2206
|
+
scoresChange: async (options) => {
|
2207
|
+
const message = {
|
2208
|
+
action: "scores_change",
|
2209
|
+
version: "1",
|
2210
|
+
session_id: options.sessionId,
|
2211
|
+
visitor_id: options.visitorId,
|
2212
|
+
page_view_id: options.pageId,
|
2213
|
+
timestamp: (/* @__PURE__ */ new Date()).toISOString(),
|
2214
|
+
payload: {
|
2215
|
+
...getBasePayload(),
|
2216
|
+
scores: options.scores
|
2217
|
+
}
|
2218
|
+
};
|
2219
|
+
return sendMessage(message);
|
2220
|
+
}
|
2221
|
+
};
|
2222
|
+
};
|
2223
|
+
var createInsightsStorage = () => {
|
2224
|
+
const STORAGE_KEY2 = "ufin";
|
2225
|
+
return {
|
2226
|
+
get: () => {
|
2227
|
+
const data = localStorage.getItem(STORAGE_KEY2);
|
2228
|
+
if (!data) {
|
2229
|
+
return;
|
2230
|
+
}
|
2231
|
+
return JSON.parse(data);
|
2232
|
+
},
|
2233
|
+
set: (data) => {
|
2234
|
+
const toSet = {
|
2235
|
+
...data,
|
2236
|
+
updated: Date.now()
|
2237
|
+
};
|
2238
|
+
localStorage.setItem(STORAGE_KEY2, JSON.stringify(toSet));
|
2239
|
+
},
|
2240
|
+
clear: () => {
|
2241
|
+
localStorage.removeItem(STORAGE_KEY2);
|
2242
|
+
}
|
2243
|
+
};
|
2244
|
+
};
|
2245
|
+
var generateVisitorId = () => {
|
2246
|
+
return `visitor_${generalRandomId()}`;
|
2247
|
+
};
|
2248
|
+
var generateSessionId = () => {
|
2249
|
+
return `session_${generalRandomId()}`;
|
2250
|
+
};
|
2251
|
+
var generatePageId = () => {
|
2252
|
+
return `page_${generalRandomId()}`;
|
2253
|
+
};
|
2254
|
+
var createInsights = ({
|
2255
|
+
endpoint,
|
2256
|
+
sessionDurationSeconds = 30 * 60
|
2257
|
+
}) => {
|
2258
|
+
const client = createInsightsClient({
|
2259
|
+
endpoint
|
2260
|
+
});
|
2261
|
+
const storage = createInsightsStorage();
|
2262
|
+
let storageData = void 0;
|
2263
|
+
let pageId = generatePageId();
|
2264
|
+
let previousUrl = void 0;
|
2265
|
+
return {
|
2266
|
+
init: () => {
|
2267
|
+
storageData = storage.get();
|
2268
|
+
if (!storageData || Date.now() - storageData.updated > sessionDurationSeconds * 1e3) {
|
2269
|
+
const previousSessionId = storageData == null ? void 0 : storageData.sessionId;
|
2270
|
+
storageData = {
|
2271
|
+
visitorId: (storageData == null ? void 0 : storageData.visitorId) || generateVisitorId(),
|
2272
|
+
sessionId: generateSessionId(),
|
2273
|
+
updated: Date.now()
|
2274
|
+
};
|
2275
|
+
storage.set(storageData);
|
2276
|
+
client.sessionStart({
|
2277
|
+
visitorId: storageData.visitorId,
|
2278
|
+
sessionId: storageData.sessionId,
|
2279
|
+
previousSessionId,
|
2280
|
+
maxAgeSeconds: sessionDurationSeconds,
|
2281
|
+
pageId
|
2282
|
+
});
|
2283
|
+
} else if (storageData) {
|
2284
|
+
storage.set(storageData);
|
2285
|
+
}
|
2286
|
+
},
|
2287
|
+
pageHit: () => {
|
2288
|
+
if (!storageData) {
|
2289
|
+
console.error("Insights not initialized");
|
2290
|
+
return;
|
2291
|
+
}
|
2292
|
+
if (previousUrl === window.location.href) {
|
2293
|
+
return;
|
2294
|
+
}
|
2295
|
+
previousUrl = window.location.href;
|
2296
|
+
pageId = generatePageId();
|
2297
|
+
client.pageHit({
|
2298
|
+
visitorId: storageData.visitorId,
|
2299
|
+
sessionId: storageData.sessionId,
|
2300
|
+
pageId
|
2301
|
+
});
|
2302
|
+
},
|
2303
|
+
testResult: (result) => {
|
2304
|
+
if (!storageData) {
|
2305
|
+
console.error("Insights not initialized");
|
2306
|
+
return;
|
2307
|
+
}
|
2308
|
+
client.testResult({
|
2309
|
+
...result,
|
2310
|
+
visitorId: storageData.visitorId,
|
2311
|
+
sessionId: storageData.sessionId,
|
2312
|
+
pageId
|
2313
|
+
});
|
2314
|
+
},
|
2315
|
+
personalizationResult: (result) => {
|
2316
|
+
if (!storageData) {
|
2317
|
+
console.error("Insights not initialized");
|
2318
|
+
return;
|
2319
|
+
}
|
2320
|
+
client.personalizationResult({
|
2321
|
+
...result,
|
2322
|
+
visitorId: storageData.visitorId,
|
2323
|
+
sessionId: storageData.sessionId,
|
2324
|
+
pageId
|
2325
|
+
});
|
2326
|
+
},
|
2327
|
+
goalConvert: (goalId) => {
|
2328
|
+
if (!storageData) {
|
2329
|
+
console.error("Insights not initialized");
|
2330
|
+
return;
|
2331
|
+
}
|
2332
|
+
client.goalConvert({
|
2333
|
+
visitorId: storageData.visitorId,
|
2334
|
+
sessionId: storageData.sessionId,
|
2335
|
+
goalId,
|
2336
|
+
pageId
|
2337
|
+
});
|
2338
|
+
},
|
2339
|
+
scoresChange: (scores) => {
|
2340
|
+
if (!storageData) {
|
2341
|
+
console.error("Insights not initialized");
|
2342
|
+
return;
|
2343
|
+
}
|
2344
|
+
client.scoresChange({
|
2345
|
+
visitorId: storageData.visitorId,
|
2346
|
+
sessionId: storageData.sessionId,
|
2347
|
+
scores,
|
2348
|
+
pageId
|
2349
|
+
});
|
2350
|
+
},
|
2351
|
+
forget: () => {
|
2352
|
+
storage.clear();
|
2353
|
+
storageData = void 0;
|
2354
|
+
},
|
2355
|
+
get sessionId() {
|
2356
|
+
return storageData == null ? void 0 : storageData.sessionId;
|
2357
|
+
}
|
2358
|
+
};
|
2359
|
+
};
|
2360
|
+
var enableUniformInsights = (options) => {
|
2361
|
+
const insights = createInsights({
|
2362
|
+
endpoint: options.endpoint
|
2363
|
+
});
|
2364
|
+
let previousUrl = void 0;
|
2365
|
+
return {
|
2366
|
+
init: (context) => {
|
2367
|
+
if (typeof window === "undefined") {
|
2368
|
+
return () => {
|
2369
|
+
};
|
2370
|
+
}
|
2371
|
+
const consentChanged = () => {
|
2372
|
+
if (context.storage.data.consent) {
|
2373
|
+
insights.init();
|
2374
|
+
} else {
|
2375
|
+
insights.forget();
|
2376
|
+
}
|
2377
|
+
};
|
2378
|
+
const handlePersonalizationResult = (data) => {
|
2379
|
+
insights.personalizationResult(data);
|
2380
|
+
};
|
2381
|
+
const handleTestResult = (result) => {
|
2382
|
+
insights.testResult(result);
|
2383
|
+
};
|
2384
|
+
const handleGoalConvert = (result) => {
|
2385
|
+
insights.goalConvert(result.goalId);
|
2386
|
+
};
|
2387
|
+
const handleScoreChange = (scores) => {
|
2388
|
+
insights.scoresChange(scores);
|
2389
|
+
};
|
2390
|
+
context.storage.events.on("goalConverted", handleGoalConvert);
|
2391
|
+
context.storage.events.on("consentUpdated", consentChanged);
|
2392
|
+
context.events.on("personalizationResult", handlePersonalizationResult);
|
2393
|
+
context.events.on("testResult", handleTestResult);
|
2394
|
+
context.events.on("scoresUpdated", handleScoreChange);
|
2395
|
+
if (context.storage.data.consent) {
|
2396
|
+
consentChanged();
|
2397
|
+
}
|
2398
|
+
return () => {
|
2399
|
+
context.storage.events.off("consentUpdated", consentChanged);
|
2400
|
+
context.storage.events.off("goalConverted", handleGoalConvert);
|
2401
|
+
context.events.off("personalizationResult", handlePersonalizationResult);
|
2402
|
+
context.events.off("testResult", handleTestResult);
|
2403
|
+
context.events.off("scoresUpdated", handleScoreChange);
|
2404
|
+
};
|
2405
|
+
},
|
2406
|
+
update: (context) => {
|
2407
|
+
if (context.url && context.url !== previousUrl) {
|
2408
|
+
previousUrl = context.url;
|
2409
|
+
insights.pageHit();
|
2410
|
+
}
|
2411
|
+
},
|
2412
|
+
forget: () => {
|
2413
|
+
insights.forget();
|
2414
|
+
}
|
2415
|
+
};
|
2416
|
+
};
|
2417
|
+
var generalRandomId = () => {
|
2418
|
+
const id = (0, import_uuid.v4)();
|
2419
|
+
return id.replaceAll("-", "").toLowerCase();
|
2420
|
+
};
|
2421
|
+
|
1982
2422
|
// src/logging/enableConsoleLogDrain.ts
|
1983
2423
|
var import_rfdc2 = __toESM(require("rfdc"));
|
1984
2424
|
|
@@ -2183,6 +2623,7 @@ function parseQuickConnect(serialized) {
|
|
2183
2623
|
enableConsoleLogDrain,
|
2184
2624
|
enableContextDevTools,
|
2185
2625
|
enableDebugConsoleLogDrain,
|
2626
|
+
enableUniformInsights,
|
2186
2627
|
evaluateVariantMatch,
|
2187
2628
|
eventEvaluator,
|
2188
2629
|
explainStringMatch,
|