@simplybusiness/services 0.20.1 → 0.21.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/CHANGELOG.md +15 -0
- package/dist/cjs/mocks/eventDefinitions.js +5 -21
- package/dist/cjs/mocks/eventDefinitions.js.map +1 -1
- package/dist/cjs/snowplow/Snowplow.js +41 -28
- package/dist/cjs/snowplow/Snowplow.js.map +1 -1
- package/dist/cjs/snowplow/contexts.js +52 -12
- package/dist/cjs/snowplow/contexts.js.map +1 -1
- package/dist/cjs/snowplow/event-definitions/index.js +10 -1
- package/dist/cjs/snowplow/event-definitions/index.js.map +1 -1
- package/dist/cjs/snowplow/event-definitions/personalised_cover.js +122 -0
- package/dist/cjs/snowplow/event-definitions/personalised_cover.js.map +1 -0
- package/dist/cjs/snowplow/event-definitions/qcp.js +8 -2
- package/dist/cjs/snowplow/event-definitions/qcp.js.map +1 -1
- package/dist/cjs/snowplow/event-definitions/questionnaire.js +4 -1
- package/dist/cjs/snowplow/event-definitions/questionnaire.js.map +1 -1
- package/dist/cjs/tsconfig.tsbuildinfo +1 -1
- package/dist/esm/mocks/eventDefinitions.js +5 -21
- package/dist/esm/mocks/eventDefinitions.js.map +1 -1
- package/dist/esm/snowplow/Snowplow.js +41 -28
- package/dist/esm/snowplow/Snowplow.js.map +1 -1
- package/dist/esm/snowplow/contexts.js +38 -9
- package/dist/esm/snowplow/contexts.js.map +1 -1
- package/dist/esm/snowplow/event-definitions/index.js +7 -1
- package/dist/esm/snowplow/event-definitions/index.js.map +1 -1
- package/dist/esm/snowplow/event-definitions/personalised_cover.js +131 -0
- package/dist/esm/snowplow/event-definitions/personalised_cover.js.map +1 -0
- package/dist/esm/snowplow/event-definitions/qcp.js +9 -22
- package/dist/esm/snowplow/event-definitions/qcp.js.map +1 -1
- package/dist/esm/snowplow/event-definitions/questionnaire.js +4 -1
- package/dist/esm/snowplow/event-definitions/questionnaire.js.map +1 -1
- package/dist/esm/snowplow/types.js.map +1 -1
- package/dist/types/mocks/eventDefinitions.d.ts +4 -19
- package/dist/types/snowplow/Snowplow.d.ts +7 -5
- package/dist/types/snowplow/contexts.d.ts +4 -3
- package/dist/types/snowplow/event-definitions/index.d.ts +1 -0
- package/dist/types/snowplow/event-definitions/personalised_cover.d.ts +22 -0
- package/dist/types/snowplow/event-definitions/qcp.d.ts +0 -20
- package/dist/types/snowplow/types.d.ts +3 -1
- package/package.json +16 -16
- package/src/mocks/eventDefinitions.ts +2 -25
- package/src/snowplow/Snowplow.ts +46 -29
- package/src/snowplow/contexts.test.ts +134 -6
- package/src/snowplow/contexts.ts +44 -14
- package/src/snowplow/event-definitions/index.ts +7 -0
- package/src/snowplow/event-definitions/personalised_cover.ts +142 -0
- package/src/snowplow/event-definitions/qcp.ts +2 -21
- package/src/snowplow/event-definitions/questionnaire.ts +1 -0
- package/src/snowplow/index.test.ts +40 -30
- package/src/snowplow/types.ts +4 -1
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,20 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## 0.21.1
|
|
4
|
+
|
|
5
|
+
### Patch Changes
|
|
6
|
+
|
|
7
|
+
- 9acf157: Upgrade dependencies
|
|
8
|
+
- Updated dependencies [9acf157]
|
|
9
|
+
- Updated dependencies [a5c2fbd]
|
|
10
|
+
- @simplybusiness/mobius@5.24.3
|
|
11
|
+
|
|
12
|
+
## 0.21.0
|
|
13
|
+
|
|
14
|
+
### Minor Changes
|
|
15
|
+
|
|
16
|
+
- bbbe357: Correctly set event contexts based on definitions
|
|
17
|
+
|
|
3
18
|
## 0.20.1
|
|
4
19
|
|
|
5
20
|
### Patch Changes
|
|
@@ -23,25 +23,6 @@ const _default = [
|
|
|
23
23
|
};
|
|
24
24
|
}
|
|
25
25
|
},
|
|
26
|
-
{
|
|
27
|
-
name: "questionAnswered",
|
|
28
|
-
type: "unstructured",
|
|
29
|
-
makePayload: (params)=>{
|
|
30
|
-
const { vertical, question, answer } = params;
|
|
31
|
-
return {
|
|
32
|
-
schema: "iglu:com.simplybusiness/form_question_answered/jsonschema/1-0-1",
|
|
33
|
-
data: {
|
|
34
|
-
site: "",
|
|
35
|
-
vertical: vertical || "business",
|
|
36
|
-
page_index: 1,
|
|
37
|
-
page_name: "Coverage diagnosis questionnaire",
|
|
38
|
-
section_name: "Coverage diagnosis questionnaire",
|
|
39
|
-
question,
|
|
40
|
-
answer
|
|
41
|
-
}
|
|
42
|
-
};
|
|
43
|
-
}
|
|
44
|
-
},
|
|
45
26
|
{
|
|
46
27
|
name: "questionAnswered",
|
|
47
28
|
type: "unstructured",
|
|
@@ -61,7 +42,10 @@ const _default = [
|
|
|
61
42
|
vertical: context.vertical
|
|
62
43
|
}
|
|
63
44
|
};
|
|
64
|
-
}
|
|
45
|
+
},
|
|
46
|
+
contexts: [
|
|
47
|
+
"distributionChannelContext"
|
|
48
|
+
]
|
|
65
49
|
},
|
|
66
50
|
{
|
|
67
51
|
name: "primaryDetailSelected",
|
|
@@ -69,7 +53,7 @@ const _default = [
|
|
|
69
53
|
makePayload: (params)=>{
|
|
70
54
|
const { context, answer, vertical } = params;
|
|
71
55
|
const { site } = context;
|
|
72
|
-
let verticalName = vertical
|
|
56
|
+
let verticalName = vertical || context.vertical;
|
|
73
57
|
if (verticalName.toLowerCase().indexOf("landlord") > -1) {
|
|
74
58
|
verticalName = answer === "residential" ? "Landlord" : "Commercial landlord";
|
|
75
59
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/mocks/eventDefinitions.ts"],"sourcesContent":["import { ParamsType } from \"../snowplow\";\nimport { redact } from \"../snowplow/event-definitions/redaction\";\n\nexport default [\n {\n name: \"navButtonClicked\",\n type: \"structured\",\n makePayload: (params: { label: \"next\" | \"back\" | \"redirect\" }) => {\n const { label } = params;\n return {\n category: \"navigation\",\n action: \"thankyou_navigation_button_click\",\n label,\n property: \"test-property\",\n };\n },\n },\n {\n name: \"questionAnswered\",\n type: \"unstructured\",\n makePayload: (params:
|
|
1
|
+
{"version":3,"sources":["../../../src/mocks/eventDefinitions.ts"],"sourcesContent":["import { ParamsType } from \"../snowplow\";\nimport { redact } from \"../snowplow/event-definitions/redaction\";\n\nexport default [\n {\n name: \"navButtonClicked\",\n type: \"structured\",\n makePayload: (params: { label: \"next\" | \"back\" | \"redirect\" }) => {\n const { label } = params;\n return {\n category: \"navigation\",\n action: \"thankyou_navigation_button_click\",\n label,\n property: \"test-property\",\n };\n },\n },\n {\n name: \"questionAnswered\",\n type: \"unstructured\",\n makePayload: (params: ParamsType) => {\n const { section, context } = params as ParamsType;\n const { question, answer } = redact(params as ParamsType);\n\n return {\n schema:\n \"iglu:com.simplybusiness/form_question_answered/jsonschema/1-0-3\",\n data: {\n site: context.site,\n page_index: 1,\n page_name: \"quick_to_quote\",\n submitted_from: \"quick_to_quote_experiment\",\n section_name: section,\n question,\n answer,\n vertical: context.vertical,\n },\n };\n },\n contexts: [\"distributionChannelContext\"],\n },\n {\n name: \"primaryDetailSelected\",\n type: \"unstructured\",\n makePayload: (params: ParamsType) => {\n const { context, answer, vertical } = params as ParamsType;\n const { site } = context;\n let verticalName = vertical || context.vertical;\n\n if (verticalName.toLowerCase().indexOf(\"landlord\") > -1) {\n verticalName =\n answer === \"residential\" ? \"Landlord\" : \"Commercial landlord\";\n }\n\n return {\n schema:\n \"iglu:com.simplybusiness/primary_detail_selected/jsonschema/1-3-0\",\n data: {\n site,\n vertical: verticalName,\n primary_detail: answer,\n },\n };\n },\n },\n {\n name: \"helpTextOpened\",\n type: \"unstructured\",\n makePayload: (params: ParamsType) => {\n const { primaryText, label, context, helpText } = params as ParamsType;\n\n return {\n schema: \"iglu:com.simplybusiness/help_text_opened/jsonschema/1-1-0\",\n data: {\n vertical: context.vertical,\n site: context.site,\n help_text: helpText,\n primary_text: primaryText,\n label,\n page_name: \"quick_to_quote\",\n },\n };\n },\n },\n];\n"],"names":["name","type","makePayload","params","label","category","action","property","section","context","question","answer","redact","schema","data","site","page_index","page_name","submitted_from","section_name","vertical","contexts","verticalName","toLowerCase","indexOf","primary_detail","primaryText","helpText","help_text","primary_text"],"mappings":";;;;+BAGA;;;eAAA;;;2BAFuB;MAEvB,WAAe;IACb;QACEA,MAAM;QACNC,MAAM;QACNC,aAAa,CAACC;YACZ,MAAM,EAAEC,KAAK,EAAE,GAAGD;YAClB,OAAO;gBACLE,UAAU;gBACVC,QAAQ;gBACRF;gBACAG,UAAU;YACZ;QACF;IACF;IACA;QACEP,MAAM;QACNC,MAAM;QACNC,aAAa,CAACC;YACZ,MAAM,EAAEK,OAAO,EAAEC,OAAO,EAAE,GAAGN;YAC7B,MAAM,EAAEO,QAAQ,EAAEC,MAAM,EAAE,GAAGC,IAAAA,iBAAM,EAACT;YAEpC,OAAO;gBACLU,QACE;gBACFC,MAAM;oBACJC,MAAMN,QAAQM,IAAI;oBAClBC,YAAY;oBACZC,WAAW;oBACXC,gBAAgB;oBAChBC,cAAcX;oBACdE;oBACAC;oBACAS,UAAUX,QAAQW,QAAQ;gBAC5B;YACF;QACF;QACAC,UAAU;YAAC;SAA6B;IAC1C;IACA;QACErB,MAAM;QACNC,MAAM;QACNC,aAAa,CAACC;YACZ,MAAM,EAAEM,OAAO,EAAEE,MAAM,EAAES,QAAQ,EAAE,GAAGjB;YACtC,MAAM,EAAEY,IAAI,EAAE,GAAGN;YACjB,IAAIa,eAAeF,YAAYX,QAAQW,QAAQ;YAE/C,IAAIE,aAAaC,WAAW,GAAGC,OAAO,CAAC,cAAc,CAAC,GAAG;gBACvDF,eACEX,WAAW,gBAAgB,aAAa;YAC5C;YAEA,OAAO;gBACLE,QACE;gBACFC,MAAM;oBACJC;oBACAK,UAAUE;oBACVG,gBAAgBd;gBAClB;YACF;QACF;IACF;IACA;QACEX,MAAM;QACNC,MAAM;QACNC,aAAa,CAACC;YACZ,MAAM,EAAEuB,WAAW,EAAEtB,KAAK,EAAEK,OAAO,EAAEkB,QAAQ,EAAE,GAAGxB;YAElD,OAAO;gBACLU,QAAQ;gBACRC,MAAM;oBACJM,UAAUX,QAAQW,QAAQ;oBAC1BL,MAAMN,QAAQM,IAAI;oBAClBa,WAAWD;oBACXE,cAAcH;oBACdtB;oBACAa,WAAW;gBACb;YACF;QACF;IACF;CACD"}
|
|
@@ -9,6 +9,7 @@ Object.defineProperty(exports, "Snowplow", {
|
|
|
9
9
|
}
|
|
10
10
|
});
|
|
11
11
|
const _browsertracker = require("@snowplow/browser-tracker");
|
|
12
|
+
const _contexts = require("./contexts");
|
|
12
13
|
function _define_property(obj, key, value) {
|
|
13
14
|
if (key in obj) {
|
|
14
15
|
Object.defineProperty(obj, key, {
|
|
@@ -24,16 +25,12 @@ function _define_property(obj, key, value) {
|
|
|
24
25
|
}
|
|
25
26
|
class Snowplow {
|
|
26
27
|
setContexts(contexts) {
|
|
27
|
-
|
|
28
|
-
this.
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
});
|
|
34
|
-
if (index > -1) {
|
|
35
|
-
this.contexts[index].data.domain_userid = this.uid;
|
|
36
|
-
}
|
|
28
|
+
this.contexts = (0, _contexts.updateIdentityContext)(contexts, this.uid);
|
|
29
|
+
this.pvContext = Object.values(this.contexts);
|
|
30
|
+
this.structContext = (0, _contexts.makeContexts)([
|
|
31
|
+
"distributionChannelContext",
|
|
32
|
+
"serviceChannelContext"
|
|
33
|
+
], this.contexts);
|
|
37
34
|
return this;
|
|
38
35
|
}
|
|
39
36
|
// Send a page view event
|
|
@@ -41,7 +38,7 @@ class Snowplow {
|
|
|
41
38
|
if (this.trackPageView) {
|
|
42
39
|
await (0, _browsertracker.trackPageView)({
|
|
43
40
|
...event,
|
|
44
|
-
context: this.
|
|
41
|
+
context: this.pvContext
|
|
45
42
|
}, [
|
|
46
43
|
this.avalancheTrackerName
|
|
47
44
|
]);
|
|
@@ -52,29 +49,39 @@ class Snowplow {
|
|
|
52
49
|
async trackEvent(event) {
|
|
53
50
|
await (0, _browsertracker.trackStructEvent)({
|
|
54
51
|
...event,
|
|
55
|
-
context: this.
|
|
52
|
+
context: this.structContext
|
|
56
53
|
}, [
|
|
57
54
|
this.bronzeAvalancheTrackerName
|
|
58
55
|
]);
|
|
59
56
|
return this;
|
|
60
57
|
}
|
|
61
58
|
// Send a custom event with defined schema and optional contexts
|
|
62
|
-
async trackUnstructEvent(event) {
|
|
59
|
+
async trackUnstructEvent(event, contexts) {
|
|
63
60
|
if (!event) {
|
|
64
61
|
return this;
|
|
65
62
|
}
|
|
66
|
-
|
|
67
|
-
event
|
|
68
|
-
context
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
63
|
+
if (contexts && Array.isArray(contexts) && contexts.length > 0) {
|
|
64
|
+
// Add context to the event
|
|
65
|
+
const context = (0, _contexts.makeContexts)(contexts, this.contexts);
|
|
66
|
+
await (0, _browsertracker.trackSelfDescribingEvent)({
|
|
67
|
+
event,
|
|
68
|
+
context
|
|
69
|
+
}, [
|
|
70
|
+
this.avalancheTrackerName
|
|
71
|
+
]);
|
|
72
|
+
} else {
|
|
73
|
+
await (0, _browsertracker.trackSelfDescribingEvent)({
|
|
74
|
+
event
|
|
75
|
+
}, [
|
|
76
|
+
this.avalancheTrackerName
|
|
77
|
+
]);
|
|
78
|
+
}
|
|
72
79
|
return this;
|
|
73
80
|
}
|
|
74
81
|
addEventHandlers(eventDefinitions) {
|
|
75
82
|
// Add server context to makePayload functions
|
|
76
83
|
const context = this.serverData;
|
|
77
|
-
eventDefinitions.forEach(({ name, type, makePayload })=>{
|
|
84
|
+
eventDefinitions.forEach(({ name, type, makePayload, contexts })=>{
|
|
78
85
|
// Convert type into relevant function
|
|
79
86
|
if (type === "structured") {
|
|
80
87
|
this.addEventHandler(name, (params)=>{
|
|
@@ -85,10 +92,15 @@ class Snowplow {
|
|
|
85
92
|
});
|
|
86
93
|
} else {
|
|
87
94
|
this.addEventHandler(name, (params)=>{
|
|
88
|
-
|
|
95
|
+
const payload = makePayload({
|
|
89
96
|
...params,
|
|
90
97
|
context
|
|
91
|
-
})
|
|
98
|
+
});
|
|
99
|
+
if (contexts && Array.isArray(contexts) && contexts.length > 0) {
|
|
100
|
+
this.trackUnstructEvent(payload, contexts);
|
|
101
|
+
} else {
|
|
102
|
+
this.trackUnstructEvent(payload);
|
|
103
|
+
}
|
|
92
104
|
});
|
|
93
105
|
}
|
|
94
106
|
});
|
|
@@ -103,8 +115,9 @@ class Snowplow {
|
|
|
103
115
|
return this;
|
|
104
116
|
}
|
|
105
117
|
trigger(name, params) {
|
|
106
|
-
|
|
107
|
-
|
|
118
|
+
const handler = this.eventHandlers[name];
|
|
119
|
+
if (Object.prototype.hasOwnProperty.call(this.eventHandlers, name) && typeof handler === "function") {
|
|
120
|
+
handler(params);
|
|
108
121
|
}
|
|
109
122
|
return this;
|
|
110
123
|
}
|
|
@@ -121,13 +134,13 @@ class Snowplow {
|
|
|
121
134
|
_define_property(this, "pvAvalancheTrackerName", "sb-ava-pv");
|
|
122
135
|
_define_property(this, "uid", "");
|
|
123
136
|
_define_property(this, "trackPageView", false);
|
|
124
|
-
_define_property(this, "contexts",
|
|
137
|
+
_define_property(this, "contexts", {});
|
|
138
|
+
_define_property(this, "pvContext", []);
|
|
139
|
+
_define_property(this, "structContext", []);
|
|
125
140
|
_define_property(this, "serverData", {});
|
|
126
141
|
_define_property(this, "eventHandlers", {});
|
|
127
142
|
if (!props) return;
|
|
128
|
-
const { appId, cookieDomain, avalancheCollector, eventMethod, uid, postPath,
|
|
129
|
-
// trackActivity,
|
|
130
|
-
trackPageView: tpv } = props;
|
|
143
|
+
const { appId, cookieDomain, avalancheCollector, eventMethod, uid, postPath, trackPageView: tpv } = props;
|
|
131
144
|
this.uid = uid;
|
|
132
145
|
this.trackPageView = tpv;
|
|
133
146
|
this.serverData = (props === null || props === void 0 ? void 0 : (_props_pageViewContext = props.pageViewContext) === null || _props_pageViewContext === void 0 ? void 0 : _props_pageViewContext.data) || {};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/snowplow/Snowplow.ts"],"sourcesContent":["import {\n
|
|
1
|
+
{"version":3,"sources":["../../../src/snowplow/Snowplow.ts"],"sourcesContent":["import {\n PageViewEvent,\n StructuredEvent,\n TrackerConfiguration,\n newTracker,\n setCookiePath,\n setUserId,\n trackPageView,\n trackSelfDescribingEvent,\n trackStructEvent,\n} from \"@snowplow/browser-tracker\";\nimport { makeContexts, updateIdentityContext } from \"./contexts\";\nimport { EventDefinition, SerialisedEvent, TrackingProps } from \"./types\";\n\nexport type FrontOfficeStructuredEvent = StructuredEvent & {\n serviceChannelIdentifier: string;\n};\n\n/**\n * This class is an abstraction which wraps Snowplow\n * and exposes common methods with other services:\n * - trackEvent : sends a standard payload\n * - trackUnstructEvent : sends a payload for custom schema\n */\nexport class Snowplow {\n avalancheTrackerName = \"sb-ava\";\n\n bronzeAvalancheTrackerName = \"sb-ava-br\";\n\n pvAvalancheTrackerName = \"sb-ava-pv\";\n\n uid: unknown = \"\";\n\n trackPageView: boolean = false;\n\n contexts: Record<string, SerialisedEvent> = {};\n\n pvContext: SerialisedEvent[] = [];\n\n structContext: SerialisedEvent[] = [];\n\n serverData: Record<string, unknown> = {};\n\n eventHandlers: Record<string, (params?: Record<string, unknown>) => void> =\n {};\n\n static instance: Snowplow | undefined;\n\n constructor(props?: TrackingProps) {\n if (!props) return;\n\n const {\n appId,\n cookieDomain,\n avalancheCollector,\n eventMethod,\n uid,\n postPath,\n trackPageView: tpv,\n } = props;\n this.uid = uid;\n this.trackPageView = tpv;\n this.serverData = props?.pageViewContext?.data || {};\n\n // Set options\n const stateStorageStrategy = \"cookieAndLocalStorage\";\n const baseOptions: TrackerConfiguration = {\n appId,\n cookieDomain,\n eventMethod,\n stateStorageStrategy,\n postPath,\n };\n // Initialize trackers\n newTracker(this.avalancheTrackerName, avalancheCollector, baseOptions);\n\n newTracker(\n this.bronzeAvalancheTrackerName,\n avalancheCollector,\n baseOptions,\n );\n\n // Page view tracker\n newTracker(this.pvAvalancheTrackerName, avalancheCollector, {\n ...baseOptions,\n eventMethod: eventMethod === \"post\" ? \"beacon\" : eventMethod,\n });\n\n setCookiePath(\"/\");\n if (uid) {\n setUserId(uid);\n }\n // Create a singleton instance\n Snowplow.instance = this;\n }\n\n setContexts(contexts: Record<string, SerialisedEvent>) {\n this.contexts = updateIdentityContext(contexts, this.uid);\n this.pvContext = Object.values(this.contexts);\n this.structContext = makeContexts(\n [\"distributionChannelContext\", \"serviceChannelContext\"],\n this.contexts,\n );\n return this;\n }\n\n // Send a page view event\n async trackView(event?: PageViewEvent) {\n if (this.trackPageView) {\n await trackPageView({ ...event, context: this.pvContext }, [\n this.avalancheTrackerName,\n ]);\n }\n return this;\n }\n\n // Send a structured event with contexts\n async trackEvent(event: StructuredEvent) {\n await trackStructEvent({ ...event, context: this.structContext }, [\n this.bronzeAvalancheTrackerName,\n ]);\n return this;\n }\n\n // Send a custom event with defined schema and optional contexts\n async trackUnstructEvent(event: SerialisedEvent, contexts?: string[]) {\n if (!event) {\n return this;\n }\n\n if (contexts && Array.isArray(contexts) && contexts.length > 0) {\n // Add context to the event\n const context = makeContexts(contexts!, this.contexts);\n\n await trackSelfDescribingEvent({ event, context }, [\n this.avalancheTrackerName,\n ]);\n } else {\n await trackSelfDescribingEvent({ event }, [this.avalancheTrackerName]);\n }\n return this;\n }\n\n addEventHandlers(eventDefinitions: EventDefinition[]) {\n // Add server context to makePayload functions\n const context = this.serverData;\n\n eventDefinitions.forEach(({ name, type, makePayload, contexts }) => {\n // Convert type into relevant function\n if (type === \"structured\") {\n this.addEventHandler(name, (params?: Record<string, unknown>) => {\n this.trackEvent(\n makePayload({\n ...params,\n context,\n }) as StructuredEvent,\n );\n });\n } else {\n this.addEventHandler(name, (params?: Record<string, unknown>) => {\n const payload = makePayload({\n ...params,\n context,\n }) as SerialisedEvent;\n\n if (contexts && Array.isArray(contexts) && contexts.length > 0) {\n this.trackUnstructEvent(payload, contexts);\n } else {\n this.trackUnstructEvent(payload);\n }\n });\n }\n });\n return this;\n }\n\n private addEventHandler(\n name: string,\n handler: (params?: Record<string, unknown>) => void,\n ) {\n this.eventHandlers[name] = handler;\n return this;\n }\n\n private removeEventHandler(name: string) {\n delete this.eventHandlers[name];\n return this;\n }\n\n trigger(name: string, params?: Record<string, unknown>) {\n const handler = this.eventHandlers[name];\n\n if (\n Object.prototype.hasOwnProperty.call(this.eventHandlers, name) &&\n typeof handler === \"function\"\n ) {\n handler(params);\n }\n return this;\n }\n\n static getInstance(props?: TrackingProps) {\n if (!Snowplow.instance) {\n Snowplow.instance = new Snowplow(props);\n }\n return Snowplow.instance;\n }\n}\n"],"names":["Snowplow","setContexts","contexts","updateIdentityContext","uid","pvContext","Object","values","structContext","makeContexts","trackView","event","trackPageView","context","avalancheTrackerName","trackEvent","trackStructEvent","bronzeAvalancheTrackerName","trackUnstructEvent","Array","isArray","length","trackSelfDescribingEvent","addEventHandlers","eventDefinitions","serverData","forEach","name","type","makePayload","addEventHandler","params","payload","handler","eventHandlers","removeEventHandler","trigger","prototype","hasOwnProperty","call","getInstance","props","instance","constructor","pvAvalancheTrackerName","appId","cookieDomain","avalancheCollector","eventMethod","postPath","tpv","pageViewContext","data","stateStorageStrategy","baseOptions","newTracker","setCookiePath","setUserId"],"mappings":";;;;+BAwBaA;;;eAAAA;;;gCAdN;0BAC6C;;;;;;;;;;;;;;AAa7C,MAAMA;IAwEXC,YAAYC,QAAyC,EAAE;QACrD,IAAI,CAACA,QAAQ,GAAGC,IAAAA,+BAAqB,EAACD,UAAU,IAAI,CAACE,GAAG;QACxD,IAAI,CAACC,SAAS,GAAGC,OAAOC,MAAM,CAAC,IAAI,CAACL,QAAQ;QAC5C,IAAI,CAACM,aAAa,GAAGC,IAAAA,sBAAY,EAC/B;YAAC;YAA8B;SAAwB,EACvD,IAAI,CAACP,QAAQ;QAEf,OAAO,IAAI;IACb;IAEA,yBAAyB;IACzB,MAAMQ,UAAUC,KAAqB,EAAE;QACrC,IAAI,IAAI,CAACC,aAAa,EAAE;YACtB,MAAMA,IAAAA,6BAAa,EAAC;gBAAE,GAAGD,KAAK;gBAAEE,SAAS,IAAI,CAACR,SAAS;YAAC,GAAG;gBACzD,IAAI,CAACS,oBAAoB;aAC1B;QACH;QACA,OAAO,IAAI;IACb;IAEA,wCAAwC;IACxC,MAAMC,WAAWJ,KAAsB,EAAE;QACvC,MAAMK,IAAAA,gCAAgB,EAAC;YAAE,GAAGL,KAAK;YAAEE,SAAS,IAAI,CAACL,aAAa;QAAC,GAAG;YAChE,IAAI,CAACS,0BAA0B;SAChC;QACD,OAAO,IAAI;IACb;IAEA,gEAAgE;IAChE,MAAMC,mBAAmBP,KAAsB,EAAET,QAAmB,EAAE;QACpE,IAAI,CAACS,OAAO;YACV,OAAO,IAAI;QACb;QAEA,IAAIT,YAAYiB,MAAMC,OAAO,CAAClB,aAAaA,SAASmB,MAAM,GAAG,GAAG;YAC9D,2BAA2B;YAC3B,MAAMR,UAAUJ,IAAAA,sBAAY,EAACP,UAAW,IAAI,CAACA,QAAQ;YAErD,MAAMoB,IAAAA,wCAAwB,EAAC;gBAAEX;gBAAOE;YAAQ,GAAG;gBACjD,IAAI,CAACC,oBAAoB;aAC1B;QACH,OAAO;YACL,MAAMQ,IAAAA,wCAAwB,EAAC;gBAAEX;YAAM,GAAG;gBAAC,IAAI,CAACG,oBAAoB;aAAC;QACvE;QACA,OAAO,IAAI;IACb;IAEAS,iBAAiBC,gBAAmC,EAAE;QACpD,8CAA8C;QAC9C,MAAMX,UAAU,IAAI,CAACY,UAAU;QAE/BD,iBAAiBE,OAAO,CAAC,CAAC,EAAEC,IAAI,EAAEC,IAAI,EAAEC,WAAW,EAAE3B,QAAQ,EAAE;YAC7D,sCAAsC;YACtC,IAAI0B,SAAS,cAAc;gBACzB,IAAI,CAACE,eAAe,CAACH,MAAM,CAACI;oBAC1B,IAAI,CAAChB,UAAU,CACbc,YAAY;wBACV,GAAGE,MAAM;wBACTlB;oBACF;gBAEJ;YACF,OAAO;gBACL,IAAI,CAACiB,eAAe,CAACH,MAAM,CAACI;oBAC1B,MAAMC,UAAUH,YAAY;wBAC1B,GAAGE,MAAM;wBACTlB;oBACF;oBAEA,IAAIX,YAAYiB,MAAMC,OAAO,CAAClB,aAAaA,SAASmB,MAAM,GAAG,GAAG;wBAC9D,IAAI,CAACH,kBAAkB,CAACc,SAAS9B;oBACnC,OAAO;wBACL,IAAI,CAACgB,kBAAkB,CAACc;oBAC1B;gBACF;YACF;QACF;QACA,OAAO,IAAI;IACb;IAEQF,gBACNH,IAAY,EACZM,OAAmD,EACnD;QACA,IAAI,CAACC,aAAa,CAACP,KAAK,GAAGM;QAC3B,OAAO,IAAI;IACb;IAEQE,mBAAmBR,IAAY,EAAE;QACvC,OAAO,IAAI,CAACO,aAAa,CAACP,KAAK;QAC/B,OAAO,IAAI;IACb;IAEAS,QAAQT,IAAY,EAAEI,MAAgC,EAAE;QACtD,MAAME,UAAU,IAAI,CAACC,aAAa,CAACP,KAAK;QAExC,IACErB,OAAO+B,SAAS,CAACC,cAAc,CAACC,IAAI,CAAC,IAAI,CAACL,aAAa,EAAEP,SACzD,OAAOM,YAAY,YACnB;YACAA,QAAQF;QACV;QACA,OAAO,IAAI;IACb;IAEA,OAAOS,YAAYC,KAAqB,EAAE;QACxC,IAAI,CAACzC,SAAS0C,QAAQ,EAAE;YACtB1C,SAAS0C,QAAQ,GAAG,IAAI1C,SAASyC;QACnC;QACA,OAAOzC,SAAS0C,QAAQ;IAC1B;IA9JAC,YAAYF,KAAqB,CAAE;YAcfA;QArCpB3B,uBAAAA,wBAAuB;QAEvBG,uBAAAA,8BAA6B;QAE7B2B,uBAAAA,0BAAyB;QAEzBxC,uBAAAA,OAAe;QAEfQ,uBAAAA,iBAAyB;QAEzBV,uBAAAA,YAA4C,CAAC;QAE7CG,uBAAAA,aAA+B,EAAE;QAEjCG,uBAAAA,iBAAmC,EAAE;QAErCiB,uBAAAA,cAAsC,CAAC;QAEvCS,uBAAAA,iBACE,CAAC;QAKD,IAAI,CAACO,OAAO;QAEZ,MAAM,EACJI,KAAK,EACLC,YAAY,EACZC,kBAAkB,EAClBC,WAAW,EACX5C,GAAG,EACH6C,QAAQ,EACRrC,eAAesC,GAAG,EACnB,GAAGT;QACJ,IAAI,CAACrC,GAAG,GAAGA;QACX,IAAI,CAACQ,aAAa,GAAGsC;QACrB,IAAI,CAACzB,UAAU,GAAGgB,CAAAA,kBAAAA,6BAAAA,yBAAAA,MAAOU,eAAe,cAAtBV,6CAAAA,uBAAwBW,IAAI,KAAI,CAAC;QAEnD,cAAc;QACd,MAAMC,uBAAuB;QAC7B,MAAMC,cAAoC;YACxCT;YACAC;YACAE;YACAK;YACAJ;QACF;QACA,sBAAsB;QACtBM,IAAAA,0BAAU,EAAC,IAAI,CAACzC,oBAAoB,EAAEiC,oBAAoBO;QAE1DC,IAAAA,0BAAU,EACR,IAAI,CAACtC,0BAA0B,EAC/B8B,oBACAO;QAGF,oBAAoB;QACpBC,IAAAA,0BAAU,EAAC,IAAI,CAACX,sBAAsB,EAAEG,oBAAoB;YAC1D,GAAGO,WAAW;YACdN,aAAaA,gBAAgB,SAAS,WAAWA;QACnD;QAEAQ,IAAAA,6BAAa,EAAC;QACd,IAAIpD,KAAK;YACPqD,IAAAA,yBAAS,EAACrD;QACZ;QACA,8BAA8B;QAC9BJ,SAAS0C,QAAQ,GAAG,IAAI;IAC1B;AAiHF;AAjKE,iBAtBW1C,UAsBJ0C,YAAP,KAAA"}
|
|
@@ -2,27 +2,67 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", {
|
|
3
3
|
value: true
|
|
4
4
|
});
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
5
|
+
function _export(target, all) {
|
|
6
|
+
for(var name in all)Object.defineProperty(target, name, {
|
|
7
|
+
enumerable: true,
|
|
8
|
+
get: all[name]
|
|
9
|
+
});
|
|
10
|
+
}
|
|
11
|
+
_export(exports, {
|
|
12
|
+
getContexts: function() {
|
|
8
13
|
return getContexts;
|
|
14
|
+
},
|
|
15
|
+
makeContexts: function() {
|
|
16
|
+
return makeContexts;
|
|
17
|
+
},
|
|
18
|
+
updateIdentityContext: function() {
|
|
19
|
+
return updateIdentityContext;
|
|
9
20
|
}
|
|
10
21
|
});
|
|
11
22
|
const _utils = require("../utils");
|
|
12
23
|
const getContexts = (config)=>{
|
|
13
|
-
|
|
24
|
+
// Create an object that only contains Context keys
|
|
25
|
+
// and snake_case the keys
|
|
26
|
+
const contextEntries = Object.entries(config || {}).filter(([key])=>key.includes("Context") && key !== "includeGAContext").reduce((acc, [key, value])=>{
|
|
14
27
|
if (typeof value === "object") {
|
|
15
|
-
return
|
|
16
|
-
...
|
|
17
|
-
|
|
28
|
+
return {
|
|
29
|
+
...acc,
|
|
30
|
+
[key]: (0, _utils.snakeCaseKeys)({
|
|
31
|
+
...value
|
|
32
|
+
})
|
|
33
|
+
};
|
|
18
34
|
}
|
|
19
|
-
return
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
35
|
+
return {
|
|
36
|
+
...acc,
|
|
37
|
+
[key]: (0, _utils.snakeCaseKeys)({
|
|
38
|
+
data: {
|
|
39
|
+
service_channel_identifier: value
|
|
40
|
+
}
|
|
41
|
+
})
|
|
42
|
+
};
|
|
43
|
+
}, {});
|
|
44
|
+
return contextEntries;
|
|
45
|
+
};
|
|
46
|
+
const updateIdentityContext = (contexts, uid)=>{
|
|
47
|
+
const index = Object.keys(contexts).findIndex((ctx)=>{
|
|
48
|
+
var _contexts_ctx_schema;
|
|
49
|
+
return (_contexts_ctx_schema = contexts[ctx].schema) === null || _contexts_ctx_schema === void 0 ? void 0 : _contexts_ctx_schema.includes("identity_context");
|
|
24
50
|
});
|
|
51
|
+
if (index > -1) {
|
|
52
|
+
const key = Object.keys(contexts)[index];
|
|
53
|
+
return {
|
|
54
|
+
...contexts,
|
|
55
|
+
[key]: {
|
|
56
|
+
...contexts[key],
|
|
57
|
+
data: {
|
|
58
|
+
...contexts[key].data,
|
|
59
|
+
domain_userid: uid
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
};
|
|
63
|
+
}
|
|
25
64
|
return contexts;
|
|
26
65
|
};
|
|
66
|
+
const makeContexts = (keys, config)=>(keys || []).map((key)=>config[key]);
|
|
27
67
|
|
|
28
68
|
//# sourceMappingURL=contexts.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/snowplow/contexts.ts"],"sourcesContent":["import {
|
|
1
|
+
{"version":3,"sources":["../../../src/snowplow/contexts.ts"],"sourcesContent":["import { snakeCaseKeys } from \"../utils\";\nimport { SerialisedEvent, TrackingProps } from \"./types\";\n\nexport const getContexts = (\n config: TrackingProps,\n): Record<string, SerialisedEvent> => {\n // Create an object that only contains Context keys\n // and snake_case the keys\n const contextEntries = Object.entries(config || {})\n .filter(([key]) => key.includes(\"Context\") && key !== \"includeGAContext\")\n .reduce((acc, [key, value]) => {\n if (typeof value === \"object\") {\n return { ...acc, [key]: snakeCaseKeys({ ...value }) };\n }\n return {\n ...acc,\n [key]: snakeCaseKeys({ data: { service_channel_identifier: value } }),\n };\n }, {});\n\n return contextEntries as Record<string, SerialisedEvent>;\n};\n\nexport const updateIdentityContext = (\n contexts: Record<string, SerialisedEvent>,\n uid: unknown,\n): Record<string, SerialisedEvent> => {\n const index = Object.keys(contexts).findIndex(ctx =>\n contexts[ctx].schema?.includes(\"identity_context\"),\n );\n if (index > -1) {\n const key = Object.keys(contexts)[index];\n return {\n ...contexts,\n [key]: {\n ...contexts[key],\n data: {\n ...contexts[key].data,\n domain_userid: uid,\n },\n },\n };\n }\n return contexts;\n};\n\nexport const makeContexts = (\n keys: string[],\n config: Record<string, SerialisedEvent>,\n): SerialisedEvent[] => (keys || []).map(key => config[key]);\n"],"names":["getContexts","makeContexts","updateIdentityContext","config","contextEntries","Object","entries","filter","key","includes","reduce","acc","value","snakeCaseKeys","data","service_channel_identifier","contexts","uid","index","keys","findIndex","ctx","schema","domain_userid","map"],"mappings":";;;;;;;;;;;IAGaA,WAAW;eAAXA;;IA2CAC,YAAY;eAAZA;;IAvBAC,qBAAqB;eAArBA;;;uBAvBiB;AAGvB,MAAMF,cAAc,CACzBG;IAEA,mDAAmD;IACnD,0BAA0B;IAC1B,MAAMC,iBAAiBC,OAAOC,OAAO,CAACH,UAAU,CAAC,GAC9CI,MAAM,CAAC,CAAC,CAACC,IAAI,GAAKA,IAAIC,QAAQ,CAAC,cAAcD,QAAQ,oBACrDE,MAAM,CAAC,CAACC,KAAK,CAACH,KAAKI,MAAM;QACxB,IAAI,OAAOA,UAAU,UAAU;YAC7B,OAAO;gBAAE,GAAGD,GAAG;gBAAE,CAACH,IAAI,EAAEK,IAAAA,oBAAa,EAAC;oBAAE,GAAGD,KAAK;gBAAC;YAAG;QACtD;QACA,OAAO;YACL,GAAGD,GAAG;YACN,CAACH,IAAI,EAAEK,IAAAA,oBAAa,EAAC;gBAAEC,MAAM;oBAAEC,4BAA4BH;gBAAM;YAAE;QACrE;IACF,GAAG,CAAC;IAEN,OAAOR;AACT;AAEO,MAAMF,wBAAwB,CACnCc,UACAC;IAEA,MAAMC,QAAQb,OAAOc,IAAI,CAACH,UAAUI,SAAS,CAACC,CAAAA;YAC5CL;gBAAAA,uBAAAA,QAAQ,CAACK,IAAI,CAACC,MAAM,cAApBN,2CAAAA,qBAAsBP,QAAQ,CAAC;;IAEjC,IAAIS,QAAQ,CAAC,GAAG;QACd,MAAMV,MAAMH,OAAOc,IAAI,CAACH,SAAS,CAACE,MAAM;QACxC,OAAO;YACL,GAAGF,QAAQ;YACX,CAACR,IAAI,EAAE;gBACL,GAAGQ,QAAQ,CAACR,IAAI;gBAChBM,MAAM;oBACJ,GAAGE,QAAQ,CAACR,IAAI,CAACM,IAAI;oBACrBS,eAAeN;gBACjB;YACF;QACF;IACF;IACA,OAAOD;AACT;AAEO,MAAMf,eAAe,CAC1BkB,MACAhB,SACsB,AAACgB,CAAAA,QAAQ,EAAE,AAAD,EAAGK,GAAG,CAAChB,CAAAA,MAAOL,MAAM,CAACK,IAAI"}
|
|
@@ -15,6 +15,9 @@ _export(exports, {
|
|
|
15
15
|
interventionPageEvents: function() {
|
|
16
16
|
return interventionPageEvents;
|
|
17
17
|
},
|
|
18
|
+
personalisedCoverPageEvents: function() {
|
|
19
|
+
return personalisedCoverPageEvents;
|
|
20
|
+
},
|
|
18
21
|
qcpPageEvents: function() {
|
|
19
22
|
return qcpPageEvents;
|
|
20
23
|
},
|
|
@@ -30,12 +33,14 @@ const _qcp = require("./qcp");
|
|
|
30
33
|
const _referral = require("./referral");
|
|
31
34
|
const _intervention = require("./intervention");
|
|
32
35
|
const _questionnaire = require("./questionnaire");
|
|
36
|
+
const _personalised_cover = require("./personalised_cover");
|
|
33
37
|
const eventDefinitions = [
|
|
34
38
|
..._base.baseEventDefinitions,
|
|
35
39
|
..._qcp.qcpEventDefinitions,
|
|
36
40
|
..._referral.referralEventDefinitions,
|
|
37
41
|
..._intervention.interventionEventDefinitions,
|
|
38
|
-
..._questionnaire.questionnaireEventDefinitions
|
|
42
|
+
..._questionnaire.questionnaireEventDefinitions,
|
|
43
|
+
..._personalised_cover.personalisedCoverEventDefinitions
|
|
39
44
|
];
|
|
40
45
|
const qcpPageEvents = [
|
|
41
46
|
..._base.baseEventDefinitions,
|
|
@@ -45,6 +50,10 @@ const referralPageEvents = [
|
|
|
45
50
|
..._base.baseEventDefinitions,
|
|
46
51
|
..._referral.referralEventDefinitions
|
|
47
52
|
];
|
|
53
|
+
const personalisedCoverPageEvents = [
|
|
54
|
+
..._base.baseEventDefinitions,
|
|
55
|
+
..._personalised_cover.personalisedCoverEventDefinitions
|
|
56
|
+
];
|
|
48
57
|
const interventionPageEvents = [
|
|
49
58
|
..._intervention.interventionEventDefinitions
|
|
50
59
|
];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../src/snowplow/event-definitions/index.ts"],"sourcesContent":["import { baseEventDefinitions } from \"./base\";\nimport { qcpEventDefinitions } from \"./qcp\";\nimport { referralEventDefinitions } from \"./referral\";\nimport { interventionEventDefinitions } from \"./intervention\";\nimport { questionnaireEventDefinitions } from \"./questionnaire\";\n\n// All events (keep up to date with new files)\nexport const eventDefinitions = [\n ...baseEventDefinitions,\n ...qcpEventDefinitions,\n ...referralEventDefinitions,\n ...interventionEventDefinitions,\n ...questionnaireEventDefinitions,\n];\n\nexport const qcpPageEvents = [...baseEventDefinitions, ...qcpEventDefinitions];\n\nexport const referralPageEvents = [\n ...baseEventDefinitions,\n ...referralEventDefinitions,\n];\n\nexport const interventionPageEvents = [...interventionEventDefinitions];\n\nexport type { InterventionPayload } from \"./intervention\";\n\nexport const questionnairePageEvents = [...questionnaireEventDefinitions];\n\n// Create a new export for each kind of page below\n// containing just the subset needed for that page\n"],"names":["eventDefinitions","interventionPageEvents","qcpPageEvents","questionnairePageEvents","referralPageEvents","baseEventDefinitions","qcpEventDefinitions","referralEventDefinitions","interventionEventDefinitions","questionnaireEventDefinitions"],"mappings":";;;;;;;;;;;
|
|
1
|
+
{"version":3,"sources":["../../../../src/snowplow/event-definitions/index.ts"],"sourcesContent":["import { baseEventDefinitions } from \"./base\";\nimport { qcpEventDefinitions } from \"./qcp\";\nimport { referralEventDefinitions } from \"./referral\";\nimport { interventionEventDefinitions } from \"./intervention\";\nimport { questionnaireEventDefinitions } from \"./questionnaire\";\nimport { personalisedCoverEventDefinitions } from \"./personalised_cover\";\n\n// All events (keep up to date with new files)\nexport const eventDefinitions = [\n ...baseEventDefinitions,\n ...qcpEventDefinitions,\n ...referralEventDefinitions,\n ...interventionEventDefinitions,\n ...questionnaireEventDefinitions,\n ...personalisedCoverEventDefinitions,\n];\n\nexport const qcpPageEvents = [...baseEventDefinitions, ...qcpEventDefinitions];\n\nexport const referralPageEvents = [\n ...baseEventDefinitions,\n ...referralEventDefinitions,\n];\n\nexport const personalisedCoverPageEvents = [\n ...baseEventDefinitions,\n ...personalisedCoverEventDefinitions,\n];\n\nexport const interventionPageEvents = [...interventionEventDefinitions];\n\nexport type { InterventionPayload } from \"./intervention\";\n\nexport const questionnairePageEvents = [...questionnaireEventDefinitions];\n\n// Create a new export for each kind of page below\n// containing just the subset needed for that page\n"],"names":["eventDefinitions","interventionPageEvents","personalisedCoverPageEvents","qcpPageEvents","questionnairePageEvents","referralPageEvents","baseEventDefinitions","qcpEventDefinitions","referralEventDefinitions","interventionEventDefinitions","questionnaireEventDefinitions","personalisedCoverEventDefinitions"],"mappings":";;;;;;;;;;;IAQaA,gBAAgB;eAAhBA;;IAqBAC,sBAAsB;eAAtBA;;IALAC,2BAA2B;eAA3BA;;IAPAC,aAAa;eAAbA;;IAgBAC,uBAAuB;eAAvBA;;IAdAC,kBAAkB;eAAlBA;;;sBAnBwB;qBACD;0BACK;8BACI;+BACC;oCACI;AAG3C,MAAML,mBAAmB;OAC3BM,0BAAoB;OACpBC,wBAAmB;OACnBC,kCAAwB;OACxBC,0CAA4B;OAC5BC,4CAA6B;OAC7BC,qDAAiC;CACrC;AAEM,MAAMR,gBAAgB;OAAIG,0BAAoB;OAAKC,wBAAmB;CAAC;AAEvE,MAAMF,qBAAqB;OAC7BC,0BAAoB;OACpBE,kCAAwB;CAC5B;AAEM,MAAMN,8BAA8B;OACtCI,0BAAoB;OACpBK,qDAAiC;CACrC;AAEM,MAAMV,yBAAyB;OAAIQ,0CAA4B;CAAC;AAIhE,MAAML,0BAA0B;OAAIM,4CAA6B;CAAC,EAEzE,kDAAkD;CAClD,kDAAkD"}
|
|
@@ -0,0 +1,122 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", {
|
|
3
|
+
value: true
|
|
4
|
+
});
|
|
5
|
+
Object.defineProperty(exports, "personalisedCoverEventDefinitions", {
|
|
6
|
+
enumerable: true,
|
|
7
|
+
get: function() {
|
|
8
|
+
return personalisedCoverEventDefinitions;
|
|
9
|
+
}
|
|
10
|
+
});
|
|
11
|
+
const _redaction = require("./redaction");
|
|
12
|
+
const _constants = require("../constants");
|
|
13
|
+
const _utils = require("../../utils");
|
|
14
|
+
const personalisedCoverEventDefinitions = [
|
|
15
|
+
{
|
|
16
|
+
name: "seeMoreClicked",
|
|
17
|
+
type: "structured",
|
|
18
|
+
makePayload: (_)=>({
|
|
19
|
+
category: "personalised_cover",
|
|
20
|
+
action: "see_more_clicked",
|
|
21
|
+
label: "page",
|
|
22
|
+
property: "personalised_cover"
|
|
23
|
+
})
|
|
24
|
+
},
|
|
25
|
+
{
|
|
26
|
+
name: "selectPackageClicked",
|
|
27
|
+
type: "structured",
|
|
28
|
+
makePayload: (_)=>({
|
|
29
|
+
category: "personalised_cover",
|
|
30
|
+
action: "select_package_clicked",
|
|
31
|
+
label: "page",
|
|
32
|
+
property: "personalised_cover"
|
|
33
|
+
})
|
|
34
|
+
},
|
|
35
|
+
{
|
|
36
|
+
name: "validationShown",
|
|
37
|
+
type: "structured",
|
|
38
|
+
makePayload: (params)=>{
|
|
39
|
+
const { cover, question } = params;
|
|
40
|
+
return {
|
|
41
|
+
category: "personalised_cover",
|
|
42
|
+
action: "validation_shown",
|
|
43
|
+
label: "cover_question",
|
|
44
|
+
property: `${(0, _utils.snakeCase)(cover)}_${(0, _utils.snakeCase)(question)}`
|
|
45
|
+
};
|
|
46
|
+
}
|
|
47
|
+
},
|
|
48
|
+
{
|
|
49
|
+
name: "coverQuestionAnswered",
|
|
50
|
+
type: "unstructured",
|
|
51
|
+
makePayload: (params)=>{
|
|
52
|
+
const { context } = params;
|
|
53
|
+
const { question, answer } = (0, _redaction.redact)(params);
|
|
54
|
+
// Flatten the answer to a delimited string
|
|
55
|
+
const flatAnswer = Array.isArray(answer) ? answer.join(_constants.DELIMITER) : answer;
|
|
56
|
+
return {
|
|
57
|
+
schema: "iglu:com.simplybusiness/form_question_answered/jsonschema/1-0-1",
|
|
58
|
+
data: {
|
|
59
|
+
site: context.site,
|
|
60
|
+
page_name: "personalised_cover",
|
|
61
|
+
section_name: "Personalised Cover Questions",
|
|
62
|
+
question,
|
|
63
|
+
answer: flatAnswer
|
|
64
|
+
}
|
|
65
|
+
};
|
|
66
|
+
}
|
|
67
|
+
},
|
|
68
|
+
{
|
|
69
|
+
name: "limitLinkClicked",
|
|
70
|
+
type: "structured",
|
|
71
|
+
makePayload: (params)=>{
|
|
72
|
+
const { label } = params;
|
|
73
|
+
return {
|
|
74
|
+
category: "personalised_cover",
|
|
75
|
+
action: "limit_link_clicked",
|
|
76
|
+
label,
|
|
77
|
+
property: "link_clicked"
|
|
78
|
+
};
|
|
79
|
+
}
|
|
80
|
+
},
|
|
81
|
+
{
|
|
82
|
+
name: "limitChanged",
|
|
83
|
+
type: "structured",
|
|
84
|
+
makePayload: (params)=>{
|
|
85
|
+
const { label, limit } = params;
|
|
86
|
+
return {
|
|
87
|
+
category: "personalised_cover",
|
|
88
|
+
action: "limit_changed",
|
|
89
|
+
label,
|
|
90
|
+
property: limit
|
|
91
|
+
};
|
|
92
|
+
}
|
|
93
|
+
},
|
|
94
|
+
{
|
|
95
|
+
name: "coverPresented",
|
|
96
|
+
type: "structured",
|
|
97
|
+
makePayload: (params)=>{
|
|
98
|
+
const { property } = params;
|
|
99
|
+
return {
|
|
100
|
+
category: "personalised_cover",
|
|
101
|
+
action: "cover_presented",
|
|
102
|
+
label: "cover_name",
|
|
103
|
+
property
|
|
104
|
+
};
|
|
105
|
+
}
|
|
106
|
+
},
|
|
107
|
+
{
|
|
108
|
+
name: "moreInfoClicked",
|
|
109
|
+
type: "structured",
|
|
110
|
+
makePayload: (params)=>{
|
|
111
|
+
const { property } = params;
|
|
112
|
+
return {
|
|
113
|
+
category: "personalised_cover",
|
|
114
|
+
action: "more_info_clicked",
|
|
115
|
+
label: "cover_name",
|
|
116
|
+
property
|
|
117
|
+
};
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
];
|
|
121
|
+
|
|
122
|
+
//# sourceMappingURL=personalised_cover.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../../src/snowplow/event-definitions/personalised_cover.ts"],"sourcesContent":["import { EventDefinition, ParamsType } from \"../types\";\nimport { redact } from \"./redaction\";\nimport { DELIMITER } from \"../constants\";\nimport { snakeCase } from \"../../utils\";\n\n/**\n * Event definitions for Snowplow\n * @type {EventDefinition[]}\n * @property {string} name - The name of the event, to use when triggering\n * @property {string} type - The type of the event (structured | unstructured)\n * @property {makePayload} makePayload\n * - Function that creates the payload for the event;\n * - Allows optional params object to be passed in\n *\n * @example\n * Parent\n * import { getSnowplowConfig, SnowplowProvider } from \"@simplybusiness/services\";\n * const snowplowProps = getSnowplowConfig(pageData);\n * <SnowplowProvider scripts={snowplowProps!}>{children}</SnowplowProvider>\n *\n * Child\n * import { useSnowplowContext } from \"@simplybusiness/services\";\n * const { snowplow } = useSnowplowContext();\n * const handlerFunction = () => snowplow?.trigger(\"eventNameHere\");\n */\n\nexport const personalisedCoverEventDefinitions: EventDefinition[] = [\n {\n name: \"seeMoreClicked\",\n type: \"structured\",\n makePayload: _ => ({\n category: \"personalised_cover\",\n action: \"see_more_clicked\",\n label: \"page\",\n property: \"personalised_cover\",\n }),\n },\n {\n name: \"selectPackageClicked\",\n type: \"structured\",\n makePayload: _ => ({\n category: \"personalised_cover\",\n action: \"select_package_clicked\",\n label: \"page\",\n property: \"personalised_cover\",\n }),\n },\n {\n name: \"validationShown\",\n type: \"structured\",\n makePayload: params => {\n const { cover, question } = params as ParamsType;\n\n return {\n category: \"personalised_cover\",\n action: \"validation_shown\",\n label: \"cover_question\",\n property: `${snakeCase(cover)}_${snakeCase(question)}`,\n };\n },\n },\n {\n name: \"coverQuestionAnswered\",\n type: \"unstructured\",\n makePayload: params => {\n const { context } = params as ParamsType;\n const { question, answer } = redact(params as ParamsType);\n // Flatten the answer to a delimited string\n const flatAnswer = Array.isArray(answer)\n ? answer.join(DELIMITER)\n : answer;\n\n return {\n schema:\n \"iglu:com.simplybusiness/form_question_answered/jsonschema/1-0-1\",\n data: {\n site: context.site,\n page_name: \"personalised_cover\",\n section_name: \"Personalised Cover Questions\",\n question,\n answer: flatAnswer,\n },\n };\n },\n },\n {\n name: \"limitLinkClicked\",\n type: \"structured\",\n makePayload: params => {\n const { label } = params as ParamsType;\n\n return {\n category: \"personalised_cover\",\n action: \"limit_link_clicked\",\n label,\n property: \"link_clicked\",\n };\n },\n },\n {\n name: \"limitChanged\",\n type: \"structured\",\n makePayload: params => {\n const { label, limit } = params as ParamsType;\n\n return {\n category: \"personalised_cover\",\n action: \"limit_changed\",\n label,\n property: limit,\n };\n },\n },\n {\n name: \"coverPresented\",\n type: \"structured\",\n makePayload: params => {\n const { property } = params as ParamsType;\n\n return {\n category: \"personalised_cover\",\n action: \"cover_presented\",\n label: \"cover_name\",\n property,\n };\n },\n },\n {\n name: \"moreInfoClicked\",\n type: \"structured\",\n makePayload: params => {\n const { property } = params as ParamsType;\n\n return {\n category: \"personalised_cover\",\n action: \"more_info_clicked\",\n label: \"cover_name\",\n property,\n };\n },\n },\n];\n"],"names":["personalisedCoverEventDefinitions","name","type","makePayload","_","category","action","label","property","params","cover","question","snakeCase","context","answer","redact","flatAnswer","Array","isArray","join","DELIMITER","schema","data","site","page_name","section_name","limit"],"mappings":";;;;+BA0BaA;;;eAAAA;;;2BAzBU;2BACG;uBACA;AAuBnB,MAAMA,oCAAuD;IAClE;QACEC,MAAM;QACNC,MAAM;QACNC,aAAaC,CAAAA,IAAM,CAAA;gBACjBC,UAAU;gBACVC,QAAQ;gBACRC,OAAO;gBACPC,UAAU;YACZ,CAAA;IACF;IACA;QACEP,MAAM;QACNC,MAAM;QACNC,aAAaC,CAAAA,IAAM,CAAA;gBACjBC,UAAU;gBACVC,QAAQ;gBACRC,OAAO;gBACPC,UAAU;YACZ,CAAA;IACF;IACA;QACEP,MAAM;QACNC,MAAM;QACNC,aAAaM,CAAAA;YACX,MAAM,EAAEC,KAAK,EAAEC,QAAQ,EAAE,GAAGF;YAE5B,OAAO;gBACLJ,UAAU;gBACVC,QAAQ;gBACRC,OAAO;gBACPC,UAAU,GAAGI,IAAAA,gBAAS,EAACF,OAAO,CAAC,EAAEE,IAAAA,gBAAS,EAACD,WAAW;YACxD;QACF;IACF;IACA;QACEV,MAAM;QACNC,MAAM;QACNC,aAAaM,CAAAA;YACX,MAAM,EAAEI,OAAO,EAAE,GAAGJ;YACpB,MAAM,EAAEE,QAAQ,EAAEG,MAAM,EAAE,GAAGC,IAAAA,iBAAM,EAACN;YACpC,2CAA2C;YAC3C,MAAMO,aAAaC,MAAMC,OAAO,CAACJ,UAC7BA,OAAOK,IAAI,CAACC,oBAAS,IACrBN;YAEJ,OAAO;gBACLO,QACE;gBACFC,MAAM;oBACJC,MAAMV,QAAQU,IAAI;oBAClBC,WAAW;oBACXC,cAAc;oBACdd;oBACAG,QAAQE;gBACV;YACF;QACF;IACF;IACA;QACEf,MAAM;QACNC,MAAM;QACNC,aAAaM,CAAAA;YACX,MAAM,EAAEF,KAAK,EAAE,GAAGE;YAElB,OAAO;gBACLJ,UAAU;gBACVC,QAAQ;gBACRC;gBACAC,UAAU;YACZ;QACF;IACF;IACA;QACEP,MAAM;QACNC,MAAM;QACNC,aAAaM,CAAAA;YACX,MAAM,EAAEF,KAAK,EAAEmB,KAAK,EAAE,GAAGjB;YAEzB,OAAO;gBACLJ,UAAU;gBACVC,QAAQ;gBACRC;gBACAC,UAAUkB;YACZ;QACF;IACF;IACA;QACEzB,MAAM;QACNC,MAAM;QACNC,aAAaM,CAAAA;YACX,MAAM,EAAED,QAAQ,EAAE,GAAGC;YAErB,OAAO;gBACLJ,UAAU;gBACVC,QAAQ;gBACRC,OAAO;gBACPC;YACF;QACF;IACF;IACA;QACEP,MAAM;QACNC,MAAM;QACNC,aAAaM,CAAAA;YACX,MAAM,EAAED,QAAQ,EAAE,GAAGC;YAErB,OAAO;gBACLJ,UAAU;gBACVC,QAAQ;gBACRC,OAAO;gBACPC;YACF;QACF;IACF;CACD"}
|
|
@@ -118,7 +118,10 @@ const qcpEventDefinitions = [
|
|
|
118
118
|
to_value: toValue
|
|
119
119
|
}
|
|
120
120
|
};
|
|
121
|
-
}
|
|
121
|
+
},
|
|
122
|
+
contexts: [
|
|
123
|
+
"distributionChannelContext"
|
|
124
|
+
]
|
|
122
125
|
},
|
|
123
126
|
{
|
|
124
127
|
name: "ratingsModalOpened",
|
|
@@ -221,7 +224,10 @@ const qcpEventDefinitions = [
|
|
|
221
224
|
vertical
|
|
222
225
|
}
|
|
223
226
|
};
|
|
224
|
-
}
|
|
227
|
+
},
|
|
228
|
+
contexts: [
|
|
229
|
+
"serviceChannelContext"
|
|
230
|
+
]
|
|
225
231
|
},
|
|
226
232
|
{
|
|
227
233
|
name: "helpChatLinkClicked",
|