@uniformdev/insights 20.31.1-alpha.184 → 20.35.1-alpha.188
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/index.d.mts +2 -0
- package/dist/index.d.ts +2 -0
- package/dist/index.esm.js +152 -29
- package/dist/index.js +152 -29
- package/dist/index.mjs +152 -29
- package/package.json +4 -6
package/dist/index.d.mts
CHANGED
|
@@ -84,6 +84,8 @@ type UniformInsights = {
|
|
|
84
84
|
testResult: (result: TestEvent, compositionData?: UniformMetadata) => void;
|
|
85
85
|
personalizationResult: (result: PersonalizationEvent, compositionData?: UniformMetadata) => void;
|
|
86
86
|
goalConvert: (goalId: string, compositionData?: UniformMetadata) => void;
|
|
87
|
+
segmentUpdated: (segmentId: string, value: number, compositionData?: UniformMetadata) => void;
|
|
88
|
+
enrichmentUpdated: (enrichmentId: string, key: string, strength: number, compositionData?: UniformMetadata) => void;
|
|
87
89
|
get sessionId(): string | undefined;
|
|
88
90
|
};
|
|
89
91
|
|
package/dist/index.d.ts
CHANGED
|
@@ -84,6 +84,8 @@ type UniformInsights = {
|
|
|
84
84
|
testResult: (result: TestEvent, compositionData?: UniformMetadata) => void;
|
|
85
85
|
personalizationResult: (result: PersonalizationEvent, compositionData?: UniformMetadata) => void;
|
|
86
86
|
goalConvert: (goalId: string, compositionData?: UniformMetadata) => void;
|
|
87
|
+
segmentUpdated: (segmentId: string, value: number, compositionData?: UniformMetadata) => void;
|
|
88
|
+
enrichmentUpdated: (enrichmentId: string, key: string, strength: number, compositionData?: UniformMetadata) => void;
|
|
87
89
|
get sessionId(): string | undefined;
|
|
88
90
|
};
|
|
89
91
|
|
package/dist/index.esm.js
CHANGED
|
@@ -209,6 +209,40 @@ var generalRandomId = () => {
|
|
|
209
209
|
}
|
|
210
210
|
return Math.random().toString(32).substring(2);
|
|
211
211
|
};
|
|
212
|
+
var convertUniformMetadataToInsightsMetadata = (uniformMetadata) => {
|
|
213
|
+
return uniformMetadata ? {
|
|
214
|
+
composition_id: uniformMetadata.compositionId,
|
|
215
|
+
pm_node_path: uniformMetadata.matchedRoute,
|
|
216
|
+
dynamic_inputs: uniformMetadata.dynamicInputs
|
|
217
|
+
} : void 0;
|
|
218
|
+
};
|
|
219
|
+
|
|
220
|
+
// src/events/enrichment.ts
|
|
221
|
+
var buildEnrichmentUpdatedMessage = ({
|
|
222
|
+
sessionId,
|
|
223
|
+
visitorId,
|
|
224
|
+
pageId,
|
|
225
|
+
projectId,
|
|
226
|
+
enrichmentId,
|
|
227
|
+
key,
|
|
228
|
+
strength,
|
|
229
|
+
compositionData
|
|
230
|
+
}) => ({
|
|
231
|
+
action: "enrichment_updated",
|
|
232
|
+
version: "2",
|
|
233
|
+
session_id: sessionId,
|
|
234
|
+
visitor_id: visitorId,
|
|
235
|
+
page_view_id: pageId,
|
|
236
|
+
timestamp: (/* @__PURE__ */ new Date()).toISOString(),
|
|
237
|
+
project_id: projectId,
|
|
238
|
+
payload: {
|
|
239
|
+
id: enrichmentId,
|
|
240
|
+
key,
|
|
241
|
+
strength
|
|
242
|
+
},
|
|
243
|
+
web_metadata: getWebMetadata(),
|
|
244
|
+
uniform: compositionData || {}
|
|
245
|
+
});
|
|
212
246
|
|
|
213
247
|
// src/events/goal.ts
|
|
214
248
|
var buildGoalConvertMessage = (sessionId, visitorId, pageId, projectId, goalId, compositionData) => ({
|
|
@@ -259,6 +293,31 @@ var buildPersonalizationResultMessage = (sessionId, visitorId, pageId, projectId
|
|
|
259
293
|
uniform: compositionData || {}
|
|
260
294
|
});
|
|
261
295
|
|
|
296
|
+
// src/events/segment.ts
|
|
297
|
+
var buildSegmentUpdatedMessage = ({
|
|
298
|
+
sessionId,
|
|
299
|
+
visitorId,
|
|
300
|
+
pageId,
|
|
301
|
+
projectId,
|
|
302
|
+
segmentId,
|
|
303
|
+
value,
|
|
304
|
+
compositionData
|
|
305
|
+
}) => ({
|
|
306
|
+
action: "segment_updated",
|
|
307
|
+
version: "2",
|
|
308
|
+
session_id: sessionId,
|
|
309
|
+
visitor_id: visitorId,
|
|
310
|
+
page_view_id: pageId,
|
|
311
|
+
timestamp: (/* @__PURE__ */ new Date()).toISOString(),
|
|
312
|
+
project_id: projectId,
|
|
313
|
+
payload: {
|
|
314
|
+
id: segmentId,
|
|
315
|
+
value
|
|
316
|
+
},
|
|
317
|
+
web_metadata: getWebMetadata(),
|
|
318
|
+
uniform: compositionData || {}
|
|
319
|
+
});
|
|
320
|
+
|
|
262
321
|
// src/events/session.ts
|
|
263
322
|
var buildSessionStartMessage = (sessionId, visitorId, pageId, projectId, previousSessionId, compositionData) => ({
|
|
264
323
|
action: "session_start",
|
|
@@ -357,10 +416,19 @@ var createMemoryStorage = () => {
|
|
|
357
416
|
|
|
358
417
|
// src/plugin.ts
|
|
359
418
|
var createInsightsCore = (options) => {
|
|
419
|
+
if (options.endpoint.type === "api" && !options.endpoint.host) {
|
|
420
|
+
throw new Error("Insights context plugin requires API host");
|
|
421
|
+
}
|
|
422
|
+
if (options.endpoint.type === "api" && !options.endpoint.apiKey) {
|
|
423
|
+
throw new Error("Insights context plugin requires API key");
|
|
424
|
+
}
|
|
425
|
+
if (!options.endpoint.projectId) {
|
|
426
|
+
throw new Error("Insights context plugin requires project ID");
|
|
427
|
+
}
|
|
360
428
|
const {
|
|
361
429
|
endpoint,
|
|
362
430
|
storage: customStorage,
|
|
363
|
-
batchConfig
|
|
431
|
+
batchConfig,
|
|
364
432
|
sessionDurationSeconds = 30 * 60,
|
|
365
433
|
getVisitorId = generateVisitorId,
|
|
366
434
|
getSessionId = generateSessionId
|
|
@@ -504,6 +572,37 @@ var createInsightsCore = (options) => {
|
|
|
504
572
|
);
|
|
505
573
|
addEvent(message);
|
|
506
574
|
},
|
|
575
|
+
segmentUpdated: (segmentId, value, compositionData) => {
|
|
576
|
+
if (!storageData) {
|
|
577
|
+
return;
|
|
578
|
+
}
|
|
579
|
+
const message = buildSegmentUpdatedMessage({
|
|
580
|
+
sessionId: storageData.sessionId,
|
|
581
|
+
visitorId: storageData.visitorId,
|
|
582
|
+
pageId,
|
|
583
|
+
projectId: endpoint.projectId,
|
|
584
|
+
segmentId,
|
|
585
|
+
value,
|
|
586
|
+
compositionData
|
|
587
|
+
});
|
|
588
|
+
addEvent(message);
|
|
589
|
+
},
|
|
590
|
+
enrichmentUpdated: (enrichmentId, key, strength, compositionData) => {
|
|
591
|
+
if (!storageData) {
|
|
592
|
+
return;
|
|
593
|
+
}
|
|
594
|
+
const message = buildEnrichmentUpdatedMessage({
|
|
595
|
+
sessionId: storageData.sessionId,
|
|
596
|
+
visitorId: storageData.visitorId,
|
|
597
|
+
pageId,
|
|
598
|
+
projectId: endpoint.projectId,
|
|
599
|
+
enrichmentId,
|
|
600
|
+
key,
|
|
601
|
+
strength,
|
|
602
|
+
compositionData
|
|
603
|
+
});
|
|
604
|
+
addEvent(message);
|
|
605
|
+
},
|
|
507
606
|
forget: () => {
|
|
508
607
|
storage.clear();
|
|
509
608
|
storageData = void 0;
|
|
@@ -520,6 +619,7 @@ var createInsightsPlugin = (options) => {
|
|
|
520
619
|
let previousUrl = void 0;
|
|
521
620
|
let isInitialized = false;
|
|
522
621
|
let eventQueue = [];
|
|
622
|
+
let contextInstance = void 0;
|
|
523
623
|
const processQueuedEvents = () => {
|
|
524
624
|
if (isInitialized && eventQueue.length > 0) {
|
|
525
625
|
eventQueue.forEach((event) => event());
|
|
@@ -533,12 +633,31 @@ var createInsightsPlugin = (options) => {
|
|
|
533
633
|
eventQueue.push(eventFn);
|
|
534
634
|
}
|
|
535
635
|
};
|
|
636
|
+
const previousScores = {};
|
|
637
|
+
const handleScoreUpdates = (updatedScores, compositionData) => {
|
|
638
|
+
if (!contextInstance) {
|
|
639
|
+
return;
|
|
640
|
+
}
|
|
641
|
+
Object.entries(updatedScores).forEach(([scoreKey, value]) => {
|
|
642
|
+
var _a, _b;
|
|
643
|
+
if (previousScores[scoreKey] === value) {
|
|
644
|
+
return;
|
|
645
|
+
}
|
|
646
|
+
const aggregateDimension = contextInstance.manifest.getAggregateDimensionByKey(scoreKey);
|
|
647
|
+
const signalDimension = (_b = (_a = contextInstance.manifest.data.project.pz) == null ? void 0 : _a.sig) == null ? void 0 : _b[scoreKey];
|
|
648
|
+
if (aggregateDimension || signalDimension) {
|
|
649
|
+
insights.segmentUpdated(scoreKey, value, compositionData);
|
|
650
|
+
previousScores[scoreKey] = value;
|
|
651
|
+
}
|
|
652
|
+
});
|
|
653
|
+
};
|
|
536
654
|
return {
|
|
537
655
|
init: (context) => {
|
|
538
656
|
if (typeof window === "undefined") {
|
|
539
657
|
return () => {
|
|
540
658
|
};
|
|
541
659
|
}
|
|
660
|
+
contextInstance = context;
|
|
542
661
|
const consentChanged = () => {
|
|
543
662
|
if (context.storage.data.consent) {
|
|
544
663
|
insights.init(context).then(() => {
|
|
@@ -552,44 +671,27 @@ var createInsightsPlugin = (options) => {
|
|
|
552
671
|
};
|
|
553
672
|
const handlePersonalizationResult = (data) => {
|
|
554
673
|
queueEvent(() => {
|
|
555
|
-
|
|
556
|
-
|
|
557
|
-
|
|
558
|
-
|
|
559
|
-
dynamic_inputs: (_c = data.compositionMetadata) == null ? void 0 : _c.dynamicInputs
|
|
560
|
-
});
|
|
674
|
+
insights.personalizationResult(
|
|
675
|
+
data,
|
|
676
|
+
convertUniformMetadataToInsightsMetadata(data.compositionMetadata)
|
|
677
|
+
);
|
|
561
678
|
});
|
|
562
679
|
};
|
|
563
680
|
const handleTestResult = (result) => {
|
|
564
681
|
queueEvent(() => {
|
|
565
|
-
insights.testResult(
|
|
566
|
-
result,
|
|
567
|
-
result.compositionMetadata ? {
|
|
568
|
-
composition_id: result.compositionMetadata.compositionId,
|
|
569
|
-
pm_node_path: result.compositionMetadata.matchedRoute,
|
|
570
|
-
dynamic_inputs: result.compositionMetadata.dynamicInputs
|
|
571
|
-
} : void 0
|
|
572
|
-
);
|
|
682
|
+
insights.testResult(result, convertUniformMetadataToInsightsMetadata(result.compositionMetadata));
|
|
573
683
|
});
|
|
574
684
|
};
|
|
575
685
|
const handleGoalConvert = (result) => {
|
|
576
686
|
const compositionMetadata = context.getCompositionMetadata();
|
|
577
687
|
queueEvent(() => {
|
|
578
|
-
insights.goalConvert(result.goalId,
|
|
579
|
-
composition_id: compositionMetadata == null ? void 0 : compositionMetadata.compositionId,
|
|
580
|
-
pm_node_path: compositionMetadata == null ? void 0 : compositionMetadata.matchedRoute,
|
|
581
|
-
dynamic_inputs: compositionMetadata == null ? void 0 : compositionMetadata.dynamicInputs
|
|
582
|
-
});
|
|
688
|
+
insights.goalConvert(result.goalId, convertUniformMetadataToInsightsMetadata(compositionMetadata));
|
|
583
689
|
});
|
|
584
690
|
};
|
|
585
691
|
const handleCanvasDataUpdated = (data) => {
|
|
586
692
|
if (data) {
|
|
587
693
|
queueEvent(() => {
|
|
588
|
-
insights.pageHit(
|
|
589
|
-
composition_id: data.compositionId,
|
|
590
|
-
pm_node_path: data.matchedRoute,
|
|
591
|
-
dynamic_inputs: data.dynamicInputs
|
|
592
|
-
});
|
|
694
|
+
insights.pageHit(convertUniformMetadataToInsightsMetadata(data));
|
|
593
695
|
});
|
|
594
696
|
}
|
|
595
697
|
};
|
|
@@ -609,11 +711,32 @@ var createInsightsPlugin = (options) => {
|
|
|
609
711
|
context.events.off("canvasDataUpdated", handleCanvasDataUpdated);
|
|
610
712
|
};
|
|
611
713
|
},
|
|
612
|
-
update: (
|
|
613
|
-
|
|
614
|
-
|
|
714
|
+
update: (updatedData, recalculatedScores) => {
|
|
715
|
+
var _a;
|
|
716
|
+
const compositionMetadata = convertUniformMetadataToInsightsMetadata(
|
|
717
|
+
(_a = updatedData.compositionMetadata) != null ? _a : contextInstance == null ? void 0 : contextInstance.getCompositionMetadata()
|
|
718
|
+
);
|
|
719
|
+
if (updatedData.url && updatedData.url.toString() !== previousUrl) {
|
|
720
|
+
previousUrl = updatedData.url.toString();
|
|
721
|
+
queueEvent(() => {
|
|
722
|
+
insights.pageHit(compositionMetadata);
|
|
723
|
+
});
|
|
724
|
+
}
|
|
725
|
+
if (updatedData.enrichments && updatedData.enrichments.length > 0) {
|
|
726
|
+
queueEvent(() => {
|
|
727
|
+
updatedData.enrichments.forEach((enrichmentData) => {
|
|
728
|
+
insights.enrichmentUpdated(
|
|
729
|
+
enrichmentData.cat,
|
|
730
|
+
enrichmentData.key,
|
|
731
|
+
enrichmentData.str,
|
|
732
|
+
compositionMetadata
|
|
733
|
+
);
|
|
734
|
+
});
|
|
735
|
+
});
|
|
736
|
+
}
|
|
737
|
+
if (recalculatedScores) {
|
|
615
738
|
queueEvent(() => {
|
|
616
|
-
|
|
739
|
+
handleScoreUpdates(recalculatedScores, compositionMetadata);
|
|
617
740
|
});
|
|
618
741
|
}
|
|
619
742
|
},
|
package/dist/index.js
CHANGED
|
@@ -245,6 +245,40 @@ var generalRandomId = () => {
|
|
|
245
245
|
}
|
|
246
246
|
return Math.random().toString(32).substring(2);
|
|
247
247
|
};
|
|
248
|
+
var convertUniformMetadataToInsightsMetadata = (uniformMetadata) => {
|
|
249
|
+
return uniformMetadata ? {
|
|
250
|
+
composition_id: uniformMetadata.compositionId,
|
|
251
|
+
pm_node_path: uniformMetadata.matchedRoute,
|
|
252
|
+
dynamic_inputs: uniformMetadata.dynamicInputs
|
|
253
|
+
} : void 0;
|
|
254
|
+
};
|
|
255
|
+
|
|
256
|
+
// src/events/enrichment.ts
|
|
257
|
+
var buildEnrichmentUpdatedMessage = ({
|
|
258
|
+
sessionId,
|
|
259
|
+
visitorId,
|
|
260
|
+
pageId,
|
|
261
|
+
projectId,
|
|
262
|
+
enrichmentId,
|
|
263
|
+
key,
|
|
264
|
+
strength,
|
|
265
|
+
compositionData
|
|
266
|
+
}) => ({
|
|
267
|
+
action: "enrichment_updated",
|
|
268
|
+
version: "2",
|
|
269
|
+
session_id: sessionId,
|
|
270
|
+
visitor_id: visitorId,
|
|
271
|
+
page_view_id: pageId,
|
|
272
|
+
timestamp: (/* @__PURE__ */ new Date()).toISOString(),
|
|
273
|
+
project_id: projectId,
|
|
274
|
+
payload: {
|
|
275
|
+
id: enrichmentId,
|
|
276
|
+
key,
|
|
277
|
+
strength
|
|
278
|
+
},
|
|
279
|
+
web_metadata: getWebMetadata(),
|
|
280
|
+
uniform: compositionData || {}
|
|
281
|
+
});
|
|
248
282
|
|
|
249
283
|
// src/events/goal.ts
|
|
250
284
|
var buildGoalConvertMessage = (sessionId, visitorId, pageId, projectId, goalId, compositionData) => ({
|
|
@@ -295,6 +329,31 @@ var buildPersonalizationResultMessage = (sessionId, visitorId, pageId, projectId
|
|
|
295
329
|
uniform: compositionData || {}
|
|
296
330
|
});
|
|
297
331
|
|
|
332
|
+
// src/events/segment.ts
|
|
333
|
+
var buildSegmentUpdatedMessage = ({
|
|
334
|
+
sessionId,
|
|
335
|
+
visitorId,
|
|
336
|
+
pageId,
|
|
337
|
+
projectId,
|
|
338
|
+
segmentId,
|
|
339
|
+
value,
|
|
340
|
+
compositionData
|
|
341
|
+
}) => ({
|
|
342
|
+
action: "segment_updated",
|
|
343
|
+
version: "2",
|
|
344
|
+
session_id: sessionId,
|
|
345
|
+
visitor_id: visitorId,
|
|
346
|
+
page_view_id: pageId,
|
|
347
|
+
timestamp: (/* @__PURE__ */ new Date()).toISOString(),
|
|
348
|
+
project_id: projectId,
|
|
349
|
+
payload: {
|
|
350
|
+
id: segmentId,
|
|
351
|
+
value
|
|
352
|
+
},
|
|
353
|
+
web_metadata: getWebMetadata(),
|
|
354
|
+
uniform: compositionData || {}
|
|
355
|
+
});
|
|
356
|
+
|
|
298
357
|
// src/events/session.ts
|
|
299
358
|
var buildSessionStartMessage = (sessionId, visitorId, pageId, projectId, previousSessionId, compositionData) => ({
|
|
300
359
|
action: "session_start",
|
|
@@ -393,10 +452,19 @@ var createMemoryStorage = () => {
|
|
|
393
452
|
|
|
394
453
|
// src/plugin.ts
|
|
395
454
|
var createInsightsCore = (options) => {
|
|
455
|
+
if (options.endpoint.type === "api" && !options.endpoint.host) {
|
|
456
|
+
throw new Error("Insights context plugin requires API host");
|
|
457
|
+
}
|
|
458
|
+
if (options.endpoint.type === "api" && !options.endpoint.apiKey) {
|
|
459
|
+
throw new Error("Insights context plugin requires API key");
|
|
460
|
+
}
|
|
461
|
+
if (!options.endpoint.projectId) {
|
|
462
|
+
throw new Error("Insights context plugin requires project ID");
|
|
463
|
+
}
|
|
396
464
|
const {
|
|
397
465
|
endpoint,
|
|
398
466
|
storage: customStorage,
|
|
399
|
-
batchConfig
|
|
467
|
+
batchConfig,
|
|
400
468
|
sessionDurationSeconds = 30 * 60,
|
|
401
469
|
getVisitorId = generateVisitorId,
|
|
402
470
|
getSessionId = generateSessionId
|
|
@@ -540,6 +608,37 @@ var createInsightsCore = (options) => {
|
|
|
540
608
|
);
|
|
541
609
|
addEvent(message);
|
|
542
610
|
},
|
|
611
|
+
segmentUpdated: (segmentId, value, compositionData) => {
|
|
612
|
+
if (!storageData) {
|
|
613
|
+
return;
|
|
614
|
+
}
|
|
615
|
+
const message = buildSegmentUpdatedMessage({
|
|
616
|
+
sessionId: storageData.sessionId,
|
|
617
|
+
visitorId: storageData.visitorId,
|
|
618
|
+
pageId,
|
|
619
|
+
projectId: endpoint.projectId,
|
|
620
|
+
segmentId,
|
|
621
|
+
value,
|
|
622
|
+
compositionData
|
|
623
|
+
});
|
|
624
|
+
addEvent(message);
|
|
625
|
+
},
|
|
626
|
+
enrichmentUpdated: (enrichmentId, key, strength, compositionData) => {
|
|
627
|
+
if (!storageData) {
|
|
628
|
+
return;
|
|
629
|
+
}
|
|
630
|
+
const message = buildEnrichmentUpdatedMessage({
|
|
631
|
+
sessionId: storageData.sessionId,
|
|
632
|
+
visitorId: storageData.visitorId,
|
|
633
|
+
pageId,
|
|
634
|
+
projectId: endpoint.projectId,
|
|
635
|
+
enrichmentId,
|
|
636
|
+
key,
|
|
637
|
+
strength,
|
|
638
|
+
compositionData
|
|
639
|
+
});
|
|
640
|
+
addEvent(message);
|
|
641
|
+
},
|
|
543
642
|
forget: () => {
|
|
544
643
|
storage.clear();
|
|
545
644
|
storageData = void 0;
|
|
@@ -556,6 +655,7 @@ var createInsightsPlugin = (options) => {
|
|
|
556
655
|
let previousUrl = void 0;
|
|
557
656
|
let isInitialized = false;
|
|
558
657
|
let eventQueue = [];
|
|
658
|
+
let contextInstance = void 0;
|
|
559
659
|
const processQueuedEvents = () => {
|
|
560
660
|
if (isInitialized && eventQueue.length > 0) {
|
|
561
661
|
eventQueue.forEach((event) => event());
|
|
@@ -569,12 +669,31 @@ var createInsightsPlugin = (options) => {
|
|
|
569
669
|
eventQueue.push(eventFn);
|
|
570
670
|
}
|
|
571
671
|
};
|
|
672
|
+
const previousScores = {};
|
|
673
|
+
const handleScoreUpdates = (updatedScores, compositionData) => {
|
|
674
|
+
if (!contextInstance) {
|
|
675
|
+
return;
|
|
676
|
+
}
|
|
677
|
+
Object.entries(updatedScores).forEach(([scoreKey, value]) => {
|
|
678
|
+
var _a, _b;
|
|
679
|
+
if (previousScores[scoreKey] === value) {
|
|
680
|
+
return;
|
|
681
|
+
}
|
|
682
|
+
const aggregateDimension = contextInstance.manifest.getAggregateDimensionByKey(scoreKey);
|
|
683
|
+
const signalDimension = (_b = (_a = contextInstance.manifest.data.project.pz) == null ? void 0 : _a.sig) == null ? void 0 : _b[scoreKey];
|
|
684
|
+
if (aggregateDimension || signalDimension) {
|
|
685
|
+
insights.segmentUpdated(scoreKey, value, compositionData);
|
|
686
|
+
previousScores[scoreKey] = value;
|
|
687
|
+
}
|
|
688
|
+
});
|
|
689
|
+
};
|
|
572
690
|
return {
|
|
573
691
|
init: (context) => {
|
|
574
692
|
if (typeof window === "undefined") {
|
|
575
693
|
return () => {
|
|
576
694
|
};
|
|
577
695
|
}
|
|
696
|
+
contextInstance = context;
|
|
578
697
|
const consentChanged = () => {
|
|
579
698
|
if (context.storage.data.consent) {
|
|
580
699
|
insights.init(context).then(() => {
|
|
@@ -588,44 +707,27 @@ var createInsightsPlugin = (options) => {
|
|
|
588
707
|
};
|
|
589
708
|
const handlePersonalizationResult = (data) => {
|
|
590
709
|
queueEvent(() => {
|
|
591
|
-
|
|
592
|
-
|
|
593
|
-
|
|
594
|
-
|
|
595
|
-
dynamic_inputs: (_c = data.compositionMetadata) == null ? void 0 : _c.dynamicInputs
|
|
596
|
-
});
|
|
710
|
+
insights.personalizationResult(
|
|
711
|
+
data,
|
|
712
|
+
convertUniformMetadataToInsightsMetadata(data.compositionMetadata)
|
|
713
|
+
);
|
|
597
714
|
});
|
|
598
715
|
};
|
|
599
716
|
const handleTestResult = (result) => {
|
|
600
717
|
queueEvent(() => {
|
|
601
|
-
insights.testResult(
|
|
602
|
-
result,
|
|
603
|
-
result.compositionMetadata ? {
|
|
604
|
-
composition_id: result.compositionMetadata.compositionId,
|
|
605
|
-
pm_node_path: result.compositionMetadata.matchedRoute,
|
|
606
|
-
dynamic_inputs: result.compositionMetadata.dynamicInputs
|
|
607
|
-
} : void 0
|
|
608
|
-
);
|
|
718
|
+
insights.testResult(result, convertUniformMetadataToInsightsMetadata(result.compositionMetadata));
|
|
609
719
|
});
|
|
610
720
|
};
|
|
611
721
|
const handleGoalConvert = (result) => {
|
|
612
722
|
const compositionMetadata = context.getCompositionMetadata();
|
|
613
723
|
queueEvent(() => {
|
|
614
|
-
insights.goalConvert(result.goalId,
|
|
615
|
-
composition_id: compositionMetadata == null ? void 0 : compositionMetadata.compositionId,
|
|
616
|
-
pm_node_path: compositionMetadata == null ? void 0 : compositionMetadata.matchedRoute,
|
|
617
|
-
dynamic_inputs: compositionMetadata == null ? void 0 : compositionMetadata.dynamicInputs
|
|
618
|
-
});
|
|
724
|
+
insights.goalConvert(result.goalId, convertUniformMetadataToInsightsMetadata(compositionMetadata));
|
|
619
725
|
});
|
|
620
726
|
};
|
|
621
727
|
const handleCanvasDataUpdated = (data) => {
|
|
622
728
|
if (data) {
|
|
623
729
|
queueEvent(() => {
|
|
624
|
-
insights.pageHit(
|
|
625
|
-
composition_id: data.compositionId,
|
|
626
|
-
pm_node_path: data.matchedRoute,
|
|
627
|
-
dynamic_inputs: data.dynamicInputs
|
|
628
|
-
});
|
|
730
|
+
insights.pageHit(convertUniformMetadataToInsightsMetadata(data));
|
|
629
731
|
});
|
|
630
732
|
}
|
|
631
733
|
};
|
|
@@ -645,11 +747,32 @@ var createInsightsPlugin = (options) => {
|
|
|
645
747
|
context.events.off("canvasDataUpdated", handleCanvasDataUpdated);
|
|
646
748
|
};
|
|
647
749
|
},
|
|
648
|
-
update: (
|
|
649
|
-
|
|
650
|
-
|
|
750
|
+
update: (updatedData, recalculatedScores) => {
|
|
751
|
+
var _a;
|
|
752
|
+
const compositionMetadata = convertUniformMetadataToInsightsMetadata(
|
|
753
|
+
(_a = updatedData.compositionMetadata) != null ? _a : contextInstance == null ? void 0 : contextInstance.getCompositionMetadata()
|
|
754
|
+
);
|
|
755
|
+
if (updatedData.url && updatedData.url.toString() !== previousUrl) {
|
|
756
|
+
previousUrl = updatedData.url.toString();
|
|
757
|
+
queueEvent(() => {
|
|
758
|
+
insights.pageHit(compositionMetadata);
|
|
759
|
+
});
|
|
760
|
+
}
|
|
761
|
+
if (updatedData.enrichments && updatedData.enrichments.length > 0) {
|
|
762
|
+
queueEvent(() => {
|
|
763
|
+
updatedData.enrichments.forEach((enrichmentData) => {
|
|
764
|
+
insights.enrichmentUpdated(
|
|
765
|
+
enrichmentData.cat,
|
|
766
|
+
enrichmentData.key,
|
|
767
|
+
enrichmentData.str,
|
|
768
|
+
compositionMetadata
|
|
769
|
+
);
|
|
770
|
+
});
|
|
771
|
+
});
|
|
772
|
+
}
|
|
773
|
+
if (recalculatedScores) {
|
|
651
774
|
queueEvent(() => {
|
|
652
|
-
|
|
775
|
+
handleScoreUpdates(recalculatedScores, compositionMetadata);
|
|
653
776
|
});
|
|
654
777
|
}
|
|
655
778
|
},
|
package/dist/index.mjs
CHANGED
|
@@ -209,6 +209,40 @@ var generalRandomId = () => {
|
|
|
209
209
|
}
|
|
210
210
|
return Math.random().toString(32).substring(2);
|
|
211
211
|
};
|
|
212
|
+
var convertUniformMetadataToInsightsMetadata = (uniformMetadata) => {
|
|
213
|
+
return uniformMetadata ? {
|
|
214
|
+
composition_id: uniformMetadata.compositionId,
|
|
215
|
+
pm_node_path: uniformMetadata.matchedRoute,
|
|
216
|
+
dynamic_inputs: uniformMetadata.dynamicInputs
|
|
217
|
+
} : void 0;
|
|
218
|
+
};
|
|
219
|
+
|
|
220
|
+
// src/events/enrichment.ts
|
|
221
|
+
var buildEnrichmentUpdatedMessage = ({
|
|
222
|
+
sessionId,
|
|
223
|
+
visitorId,
|
|
224
|
+
pageId,
|
|
225
|
+
projectId,
|
|
226
|
+
enrichmentId,
|
|
227
|
+
key,
|
|
228
|
+
strength,
|
|
229
|
+
compositionData
|
|
230
|
+
}) => ({
|
|
231
|
+
action: "enrichment_updated",
|
|
232
|
+
version: "2",
|
|
233
|
+
session_id: sessionId,
|
|
234
|
+
visitor_id: visitorId,
|
|
235
|
+
page_view_id: pageId,
|
|
236
|
+
timestamp: (/* @__PURE__ */ new Date()).toISOString(),
|
|
237
|
+
project_id: projectId,
|
|
238
|
+
payload: {
|
|
239
|
+
id: enrichmentId,
|
|
240
|
+
key,
|
|
241
|
+
strength
|
|
242
|
+
},
|
|
243
|
+
web_metadata: getWebMetadata(),
|
|
244
|
+
uniform: compositionData || {}
|
|
245
|
+
});
|
|
212
246
|
|
|
213
247
|
// src/events/goal.ts
|
|
214
248
|
var buildGoalConvertMessage = (sessionId, visitorId, pageId, projectId, goalId, compositionData) => ({
|
|
@@ -259,6 +293,31 @@ var buildPersonalizationResultMessage = (sessionId, visitorId, pageId, projectId
|
|
|
259
293
|
uniform: compositionData || {}
|
|
260
294
|
});
|
|
261
295
|
|
|
296
|
+
// src/events/segment.ts
|
|
297
|
+
var buildSegmentUpdatedMessage = ({
|
|
298
|
+
sessionId,
|
|
299
|
+
visitorId,
|
|
300
|
+
pageId,
|
|
301
|
+
projectId,
|
|
302
|
+
segmentId,
|
|
303
|
+
value,
|
|
304
|
+
compositionData
|
|
305
|
+
}) => ({
|
|
306
|
+
action: "segment_updated",
|
|
307
|
+
version: "2",
|
|
308
|
+
session_id: sessionId,
|
|
309
|
+
visitor_id: visitorId,
|
|
310
|
+
page_view_id: pageId,
|
|
311
|
+
timestamp: (/* @__PURE__ */ new Date()).toISOString(),
|
|
312
|
+
project_id: projectId,
|
|
313
|
+
payload: {
|
|
314
|
+
id: segmentId,
|
|
315
|
+
value
|
|
316
|
+
},
|
|
317
|
+
web_metadata: getWebMetadata(),
|
|
318
|
+
uniform: compositionData || {}
|
|
319
|
+
});
|
|
320
|
+
|
|
262
321
|
// src/events/session.ts
|
|
263
322
|
var buildSessionStartMessage = (sessionId, visitorId, pageId, projectId, previousSessionId, compositionData) => ({
|
|
264
323
|
action: "session_start",
|
|
@@ -357,10 +416,19 @@ var createMemoryStorage = () => {
|
|
|
357
416
|
|
|
358
417
|
// src/plugin.ts
|
|
359
418
|
var createInsightsCore = (options) => {
|
|
419
|
+
if (options.endpoint.type === "api" && !options.endpoint.host) {
|
|
420
|
+
throw new Error("Insights context plugin requires API host");
|
|
421
|
+
}
|
|
422
|
+
if (options.endpoint.type === "api" && !options.endpoint.apiKey) {
|
|
423
|
+
throw new Error("Insights context plugin requires API key");
|
|
424
|
+
}
|
|
425
|
+
if (!options.endpoint.projectId) {
|
|
426
|
+
throw new Error("Insights context plugin requires project ID");
|
|
427
|
+
}
|
|
360
428
|
const {
|
|
361
429
|
endpoint,
|
|
362
430
|
storage: customStorage,
|
|
363
|
-
batchConfig
|
|
431
|
+
batchConfig,
|
|
364
432
|
sessionDurationSeconds = 30 * 60,
|
|
365
433
|
getVisitorId = generateVisitorId,
|
|
366
434
|
getSessionId = generateSessionId
|
|
@@ -504,6 +572,37 @@ var createInsightsCore = (options) => {
|
|
|
504
572
|
);
|
|
505
573
|
addEvent(message);
|
|
506
574
|
},
|
|
575
|
+
segmentUpdated: (segmentId, value, compositionData) => {
|
|
576
|
+
if (!storageData) {
|
|
577
|
+
return;
|
|
578
|
+
}
|
|
579
|
+
const message = buildSegmentUpdatedMessage({
|
|
580
|
+
sessionId: storageData.sessionId,
|
|
581
|
+
visitorId: storageData.visitorId,
|
|
582
|
+
pageId,
|
|
583
|
+
projectId: endpoint.projectId,
|
|
584
|
+
segmentId,
|
|
585
|
+
value,
|
|
586
|
+
compositionData
|
|
587
|
+
});
|
|
588
|
+
addEvent(message);
|
|
589
|
+
},
|
|
590
|
+
enrichmentUpdated: (enrichmentId, key, strength, compositionData) => {
|
|
591
|
+
if (!storageData) {
|
|
592
|
+
return;
|
|
593
|
+
}
|
|
594
|
+
const message = buildEnrichmentUpdatedMessage({
|
|
595
|
+
sessionId: storageData.sessionId,
|
|
596
|
+
visitorId: storageData.visitorId,
|
|
597
|
+
pageId,
|
|
598
|
+
projectId: endpoint.projectId,
|
|
599
|
+
enrichmentId,
|
|
600
|
+
key,
|
|
601
|
+
strength,
|
|
602
|
+
compositionData
|
|
603
|
+
});
|
|
604
|
+
addEvent(message);
|
|
605
|
+
},
|
|
507
606
|
forget: () => {
|
|
508
607
|
storage.clear();
|
|
509
608
|
storageData = void 0;
|
|
@@ -520,6 +619,7 @@ var createInsightsPlugin = (options) => {
|
|
|
520
619
|
let previousUrl = void 0;
|
|
521
620
|
let isInitialized = false;
|
|
522
621
|
let eventQueue = [];
|
|
622
|
+
let contextInstance = void 0;
|
|
523
623
|
const processQueuedEvents = () => {
|
|
524
624
|
if (isInitialized && eventQueue.length > 0) {
|
|
525
625
|
eventQueue.forEach((event) => event());
|
|
@@ -533,12 +633,31 @@ var createInsightsPlugin = (options) => {
|
|
|
533
633
|
eventQueue.push(eventFn);
|
|
534
634
|
}
|
|
535
635
|
};
|
|
636
|
+
const previousScores = {};
|
|
637
|
+
const handleScoreUpdates = (updatedScores, compositionData) => {
|
|
638
|
+
if (!contextInstance) {
|
|
639
|
+
return;
|
|
640
|
+
}
|
|
641
|
+
Object.entries(updatedScores).forEach(([scoreKey, value]) => {
|
|
642
|
+
var _a, _b;
|
|
643
|
+
if (previousScores[scoreKey] === value) {
|
|
644
|
+
return;
|
|
645
|
+
}
|
|
646
|
+
const aggregateDimension = contextInstance.manifest.getAggregateDimensionByKey(scoreKey);
|
|
647
|
+
const signalDimension = (_b = (_a = contextInstance.manifest.data.project.pz) == null ? void 0 : _a.sig) == null ? void 0 : _b[scoreKey];
|
|
648
|
+
if (aggregateDimension || signalDimension) {
|
|
649
|
+
insights.segmentUpdated(scoreKey, value, compositionData);
|
|
650
|
+
previousScores[scoreKey] = value;
|
|
651
|
+
}
|
|
652
|
+
});
|
|
653
|
+
};
|
|
536
654
|
return {
|
|
537
655
|
init: (context) => {
|
|
538
656
|
if (typeof window === "undefined") {
|
|
539
657
|
return () => {
|
|
540
658
|
};
|
|
541
659
|
}
|
|
660
|
+
contextInstance = context;
|
|
542
661
|
const consentChanged = () => {
|
|
543
662
|
if (context.storage.data.consent) {
|
|
544
663
|
insights.init(context).then(() => {
|
|
@@ -552,44 +671,27 @@ var createInsightsPlugin = (options) => {
|
|
|
552
671
|
};
|
|
553
672
|
const handlePersonalizationResult = (data) => {
|
|
554
673
|
queueEvent(() => {
|
|
555
|
-
|
|
556
|
-
|
|
557
|
-
|
|
558
|
-
|
|
559
|
-
dynamic_inputs: (_c = data.compositionMetadata) == null ? void 0 : _c.dynamicInputs
|
|
560
|
-
});
|
|
674
|
+
insights.personalizationResult(
|
|
675
|
+
data,
|
|
676
|
+
convertUniformMetadataToInsightsMetadata(data.compositionMetadata)
|
|
677
|
+
);
|
|
561
678
|
});
|
|
562
679
|
};
|
|
563
680
|
const handleTestResult = (result) => {
|
|
564
681
|
queueEvent(() => {
|
|
565
|
-
insights.testResult(
|
|
566
|
-
result,
|
|
567
|
-
result.compositionMetadata ? {
|
|
568
|
-
composition_id: result.compositionMetadata.compositionId,
|
|
569
|
-
pm_node_path: result.compositionMetadata.matchedRoute,
|
|
570
|
-
dynamic_inputs: result.compositionMetadata.dynamicInputs
|
|
571
|
-
} : void 0
|
|
572
|
-
);
|
|
682
|
+
insights.testResult(result, convertUniformMetadataToInsightsMetadata(result.compositionMetadata));
|
|
573
683
|
});
|
|
574
684
|
};
|
|
575
685
|
const handleGoalConvert = (result) => {
|
|
576
686
|
const compositionMetadata = context.getCompositionMetadata();
|
|
577
687
|
queueEvent(() => {
|
|
578
|
-
insights.goalConvert(result.goalId,
|
|
579
|
-
composition_id: compositionMetadata == null ? void 0 : compositionMetadata.compositionId,
|
|
580
|
-
pm_node_path: compositionMetadata == null ? void 0 : compositionMetadata.matchedRoute,
|
|
581
|
-
dynamic_inputs: compositionMetadata == null ? void 0 : compositionMetadata.dynamicInputs
|
|
582
|
-
});
|
|
688
|
+
insights.goalConvert(result.goalId, convertUniformMetadataToInsightsMetadata(compositionMetadata));
|
|
583
689
|
});
|
|
584
690
|
};
|
|
585
691
|
const handleCanvasDataUpdated = (data) => {
|
|
586
692
|
if (data) {
|
|
587
693
|
queueEvent(() => {
|
|
588
|
-
insights.pageHit(
|
|
589
|
-
composition_id: data.compositionId,
|
|
590
|
-
pm_node_path: data.matchedRoute,
|
|
591
|
-
dynamic_inputs: data.dynamicInputs
|
|
592
|
-
});
|
|
694
|
+
insights.pageHit(convertUniformMetadataToInsightsMetadata(data));
|
|
593
695
|
});
|
|
594
696
|
}
|
|
595
697
|
};
|
|
@@ -609,11 +711,32 @@ var createInsightsPlugin = (options) => {
|
|
|
609
711
|
context.events.off("canvasDataUpdated", handleCanvasDataUpdated);
|
|
610
712
|
};
|
|
611
713
|
},
|
|
612
|
-
update: (
|
|
613
|
-
|
|
614
|
-
|
|
714
|
+
update: (updatedData, recalculatedScores) => {
|
|
715
|
+
var _a;
|
|
716
|
+
const compositionMetadata = convertUniformMetadataToInsightsMetadata(
|
|
717
|
+
(_a = updatedData.compositionMetadata) != null ? _a : contextInstance == null ? void 0 : contextInstance.getCompositionMetadata()
|
|
718
|
+
);
|
|
719
|
+
if (updatedData.url && updatedData.url.toString() !== previousUrl) {
|
|
720
|
+
previousUrl = updatedData.url.toString();
|
|
721
|
+
queueEvent(() => {
|
|
722
|
+
insights.pageHit(compositionMetadata);
|
|
723
|
+
});
|
|
724
|
+
}
|
|
725
|
+
if (updatedData.enrichments && updatedData.enrichments.length > 0) {
|
|
726
|
+
queueEvent(() => {
|
|
727
|
+
updatedData.enrichments.forEach((enrichmentData) => {
|
|
728
|
+
insights.enrichmentUpdated(
|
|
729
|
+
enrichmentData.cat,
|
|
730
|
+
enrichmentData.key,
|
|
731
|
+
enrichmentData.str,
|
|
732
|
+
compositionMetadata
|
|
733
|
+
);
|
|
734
|
+
});
|
|
735
|
+
});
|
|
736
|
+
}
|
|
737
|
+
if (recalculatedScores) {
|
|
615
738
|
queueEvent(() => {
|
|
616
|
-
|
|
739
|
+
handleScoreUpdates(recalculatedScores, compositionMetadata);
|
|
617
740
|
});
|
|
618
741
|
}
|
|
619
742
|
},
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@uniformdev/insights",
|
|
3
|
-
"version": "20.
|
|
3
|
+
"version": "20.35.1-alpha.188+c2a5b9c45f",
|
|
4
4
|
"description": "Uniform Context Insights package",
|
|
5
5
|
"license": "SEE LICENSE IN LICENSE.txt",
|
|
6
6
|
"main": "./dist/index.js",
|
|
@@ -43,14 +43,12 @@
|
|
|
43
43
|
"@types/js-cookie": "3.0.6",
|
|
44
44
|
"@types/node": "^20.0.0",
|
|
45
45
|
"@types/uuid": "9.0.4",
|
|
46
|
-
"@vitest/coverage-v8": "3.2.4",
|
|
47
46
|
"benny": "3.7.1",
|
|
48
47
|
"vite": "^7.0.6",
|
|
49
|
-
"vite-tsconfig-paths": "^5.1.4"
|
|
50
|
-
"vitest": "3.2.4"
|
|
48
|
+
"vite-tsconfig-paths": "^5.1.4"
|
|
51
49
|
},
|
|
52
50
|
"dependencies": {
|
|
53
|
-
"@uniformdev/context": "20.
|
|
51
|
+
"@uniformdev/context": "20.35.1-alpha.188+c2a5b9c45f",
|
|
54
52
|
"p-limit": "3.1.0"
|
|
55
53
|
},
|
|
56
54
|
"files": [
|
|
@@ -59,5 +57,5 @@
|
|
|
59
57
|
"publishConfig": {
|
|
60
58
|
"access": "public"
|
|
61
59
|
},
|
|
62
|
-
"gitHead": "
|
|
60
|
+
"gitHead": "c2a5b9c45fdbcd3199fba23e38beaf7ca0388c35"
|
|
63
61
|
}
|