@simplybusiness/services 2.3.0 → 2.3.2
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/address-lookup/index.js +94 -0
- package/dist/cjs/address-lookup/index.js.map +7 -0
- package/dist/cjs/address-lookup/types.js +19 -0
- package/dist/cjs/address-lookup/types.js.map +7 -0
- package/dist/cjs/airbrake/index.js +64 -0
- package/dist/cjs/airbrake/index.js.map +7 -0
- package/dist/cjs/index.js +3 -3
- package/dist/cjs/meta.json +801 -2
- package/dist/cjs/mocks/eventDefinitions.js +246 -0
- package/dist/cjs/mocks/eventDefinitions.js.map +7 -0
- package/dist/cjs/mocks/scripts-mock.js +67 -0
- package/dist/cjs/mocks/scripts-mock.js.map +7 -0
- package/dist/cjs/snowplow/Snowplow.js +197 -0
- package/dist/cjs/snowplow/Snowplow.js.map +7 -0
- package/dist/cjs/snowplow/SnowplowContext.js +1315 -0
- package/dist/cjs/snowplow/SnowplowContext.js.map +7 -0
- package/dist/cjs/snowplow/constants.js +27 -0
- package/dist/cjs/snowplow/constants.js.map +7 -0
- package/dist/cjs/snowplow/contexts.js +95 -0
- package/dist/cjs/snowplow/contexts.js.map +7 -0
- package/dist/cjs/snowplow/event-definitions/base.js +92 -0
- package/dist/cjs/snowplow/event-definitions/base.js.map +7 -0
- package/dist/cjs/snowplow/event-definitions/coverage-selection.js +61 -0
- package/dist/cjs/snowplow/event-definitions/coverage-selection.js.map +7 -0
- package/dist/cjs/snowplow/event-definitions/index.js +1069 -0
- package/dist/cjs/snowplow/event-definitions/index.js.map +7 -0
- package/dist/cjs/snowplow/event-definitions/intervention.js +59 -0
- package/dist/cjs/snowplow/event-definitions/intervention.js.map +7 -0
- package/dist/cjs/snowplow/event-definitions/personalised_cover.js +309 -0
- package/dist/cjs/snowplow/event-definitions/personalised_cover.js.map +7 -0
- package/dist/cjs/snowplow/event-definitions/qcp.js +379 -0
- package/dist/cjs/snowplow/event-definitions/qcp.js.map +7 -0
- package/dist/cjs/snowplow/event-definitions/questionnaire/questionnaire.js +390 -0
- package/dist/cjs/snowplow/event-definitions/questionnaire/questionnaire.js.map +7 -0
- package/dist/cjs/snowplow/event-definitions/questionnaire/redaction.js +165 -0
- package/dist/cjs/snowplow/event-definitions/questionnaire/redaction.js.map +7 -0
- package/dist/cjs/snowplow/event-definitions/referral.js +42 -0
- package/dist/cjs/snowplow/event-definitions/referral.js.map +7 -0
- package/dist/cjs/snowplow/event-definitions/test-utils.js +33 -0
- package/dist/cjs/snowplow/event-definitions/test-utils.js.map +7 -0
- package/dist/cjs/snowplow/getSnowplowConfig.js +27 -0
- package/dist/cjs/snowplow/getSnowplowConfig.js.map +7 -0
- package/dist/cjs/snowplow/index.js +1330 -0
- package/dist/cjs/snowplow/index.js.map +7 -0
- package/dist/cjs/snowplow/types.js +19 -0
- package/dist/cjs/snowplow/types.js.map +7 -0
- package/dist/cjs/utils/index.js +63 -0
- package/dist/cjs/utils/index.js.map +7 -0
- package/dist/cjs/utils/isObject.js +29 -0
- package/dist/cjs/utils/isObject.js.map +7 -0
- package/dist/cjs/utils/testUtils.js +1372 -0
- package/dist/cjs/utils/testUtils.js.map +7 -0
- package/dist/cjs/utils/text.js +62 -0
- package/dist/cjs/utils/text.js.map +7 -0
- package/dist/esm/address-lookup/index.js +7 -0
- package/dist/esm/address-lookup/index.js.map +7 -0
- package/dist/esm/address-lookup/types.js +1 -0
- package/dist/esm/address-lookup/types.js.map +7 -0
- package/dist/esm/airbrake/index.js +9 -0
- package/dist/esm/airbrake/index.js.map +7 -0
- package/dist/esm/chunk-3SO3SL37.js +150 -0
- package/dist/esm/chunk-3SO3SL37.js.map +7 -0
- package/dist/esm/chunk-75UX5UWV.js +47 -0
- package/dist/esm/chunk-75UX5UWV.js.map +7 -0
- package/dist/esm/chunk-BJUWIK7N.js +1 -0
- package/dist/esm/chunk-BJUWIK7N.js.map +7 -0
- package/dist/esm/chunk-BYVY7UWR.js +1 -0
- package/dist/esm/chunk-BYVY7UWR.js.map +7 -0
- package/dist/esm/chunk-EDKZP2NB.js +165 -0
- package/dist/esm/chunk-EDKZP2NB.js.map +7 -0
- package/dist/esm/chunk-JILHOFBG.js +7 -0
- package/dist/esm/chunk-JILHOFBG.js.map +7 -0
- package/dist/esm/chunk-LE4F73Z2.js +9 -0
- package/dist/esm/chunk-LE4F73Z2.js.map +7 -0
- package/dist/esm/chunk-LE7RCOBX.js +41 -0
- package/dist/esm/chunk-LE7RCOBX.js.map +7 -0
- package/dist/esm/chunk-MUFIJUOD.js +22 -0
- package/dist/esm/chunk-MUFIJUOD.js.map +7 -0
- package/dist/esm/chunk-NDWXMYSZ.js +7 -0
- package/dist/esm/chunk-NDWXMYSZ.js.map +7 -0
- package/dist/esm/chunk-OFQYDVHG.js +58 -0
- package/dist/esm/chunk-OFQYDVHG.js.map +7 -0
- package/dist/esm/chunk-OQ4YGZGX.js +231 -0
- package/dist/esm/chunk-OQ4YGZGX.js.map +7 -0
- package/dist/esm/chunk-PI33NKP7.js +58 -0
- package/dist/esm/chunk-PI33NKP7.js.map +7 -0
- package/dist/esm/chunk-QKBNCG2F.js +145 -0
- package/dist/esm/chunk-QKBNCG2F.js.map +7 -0
- package/dist/esm/chunk-RLSHHBYY.js +39 -0
- package/dist/esm/chunk-RLSHHBYY.js.map +7 -0
- package/dist/esm/chunk-RUOVZDWE.js +39 -0
- package/dist/esm/chunk-RUOVZDWE.js.map +7 -0
- package/dist/esm/chunk-TN5IBPWO.js +44 -0
- package/dist/esm/chunk-TN5IBPWO.js.map +7 -0
- package/dist/esm/chunk-WGHBTJNE.js +74 -0
- package/dist/esm/chunk-WGHBTJNE.js.map +7 -0
- package/dist/esm/chunk-XNSKPER5.js +44 -0
- package/dist/esm/chunk-XNSKPER5.js.map +7 -0
- package/dist/esm/chunk-XRH22EFX.js +72 -0
- package/dist/esm/chunk-XRH22EFX.js.map +7 -0
- package/dist/esm/chunk-ZEYOXRFM.js +358 -0
- package/dist/esm/chunk-ZEYOXRFM.js.map +7 -0
- package/dist/esm/index.js +42 -1410
- package/dist/esm/index.js.map +4 -4
- package/dist/esm/meta.json +1481 -71
- package/dist/esm/mocks/eventDefinitions.js +86 -0
- package/dist/esm/mocks/eventDefinitions.js.map +7 -0
- package/dist/esm/mocks/scripts-mock.js +7 -0
- package/dist/esm/mocks/scripts-mock.js.map +7 -0
- package/dist/esm/snowplow/Snowplow.js +10 -0
- package/dist/esm/snowplow/Snowplow.js.map +7 -0
- package/dist/esm/snowplow/SnowplowContext.js +23 -0
- package/dist/esm/snowplow/SnowplowContext.js.map +7 -0
- package/dist/esm/snowplow/constants.js +7 -0
- package/dist/esm/snowplow/constants.js.map +7 -0
- package/dist/esm/snowplow/contexts.js +13 -0
- package/dist/esm/snowplow/contexts.js.map +7 -0
- package/dist/esm/snowplow/event-definitions/base.js +7 -0
- package/dist/esm/snowplow/event-definitions/base.js.map +7 -0
- package/dist/esm/snowplow/event-definitions/coverage-selection.js +7 -0
- package/dist/esm/snowplow/event-definitions/coverage-selection.js.map +7 -0
- package/dist/esm/snowplow/event-definitions/index.js +30 -0
- package/dist/esm/snowplow/event-definitions/index.js.map +7 -0
- package/dist/esm/snowplow/event-definitions/intervention.js +7 -0
- package/dist/esm/snowplow/event-definitions/intervention.js.map +7 -0
- package/dist/esm/snowplow/event-definitions/personalised_cover.js +11 -0
- package/dist/esm/snowplow/event-definitions/personalised_cover.js.map +7 -0
- package/dist/esm/snowplow/event-definitions/qcp.js +9 -0
- package/dist/esm/snowplow/event-definitions/qcp.js.map +7 -0
- package/dist/esm/snowplow/event-definitions/questionnaire/questionnaire.js +9 -0
- package/dist/esm/snowplow/event-definitions/questionnaire/questionnaire.js.map +7 -0
- package/dist/esm/snowplow/event-definitions/questionnaire/redaction.js +7 -0
- package/dist/esm/snowplow/event-definitions/questionnaire/redaction.js.map +7 -0
- package/dist/esm/snowplow/event-definitions/referral.js +7 -0
- package/dist/esm/snowplow/event-definitions/referral.js.map +7 -0
- package/dist/esm/snowplow/event-definitions/test-utils.js +12 -0
- package/dist/esm/snowplow/event-definitions/test-utils.js.map +7 -0
- package/dist/esm/snowplow/getSnowplowConfig.js +7 -0
- package/dist/esm/snowplow/getSnowplowConfig.js.map +7 -0
- package/dist/esm/snowplow/index.js +54 -0
- package/dist/esm/snowplow/index.js.map +7 -0
- package/dist/esm/snowplow/types.js +2 -0
- package/dist/esm/snowplow/types.js.map +7 -0
- package/dist/esm/utils/index.js +15 -0
- package/dist/esm/utils/index.js.map +7 -0
- package/dist/esm/utils/isObject.js +7 -0
- package/dist/esm/utils/isObject.js.map +7 -0
- package/dist/esm/utils/testUtils.js +46 -0
- package/dist/esm/utils/testUtils.js.map +7 -0
- package/dist/esm/utils/text.js +12 -0
- package/dist/esm/utils/text.js.map +7 -0
- package/package.json +2 -2
|
@@ -0,0 +1,165 @@
|
|
|
1
|
+
import {
|
|
2
|
+
makeContexts,
|
|
3
|
+
updateIdentityContext
|
|
4
|
+
} from "./chunk-TN5IBPWO.js";
|
|
5
|
+
|
|
6
|
+
// src/snowplow/Snowplow.ts
|
|
7
|
+
import {
|
|
8
|
+
newTracker,
|
|
9
|
+
setCookiePath,
|
|
10
|
+
setUserId,
|
|
11
|
+
trackPageView,
|
|
12
|
+
trackSelfDescribingEvent,
|
|
13
|
+
trackStructEvent
|
|
14
|
+
} from "@snowplow/browser-tracker";
|
|
15
|
+
import { GaCookiesPlugin } from "@snowplow/browser-plugin-ga-cookies";
|
|
16
|
+
var Snowplow = class _Snowplow {
|
|
17
|
+
constructor(props) {
|
|
18
|
+
this.avalancheTrackerName = "sb-ava";
|
|
19
|
+
this.bronzeAvalancheTrackerName = "sb-ava-br";
|
|
20
|
+
this.pvAvalancheTrackerName = "sb-ava-pv";
|
|
21
|
+
this.uid = "";
|
|
22
|
+
this.trackPageView = false;
|
|
23
|
+
this.contexts = {};
|
|
24
|
+
this.pvContext = [];
|
|
25
|
+
this.structContext = [];
|
|
26
|
+
this.serverData = {};
|
|
27
|
+
this.eventHandlers = {};
|
|
28
|
+
if (!props) return;
|
|
29
|
+
const {
|
|
30
|
+
appId,
|
|
31
|
+
cookieDomain,
|
|
32
|
+
avalancheCollector,
|
|
33
|
+
eventMethod,
|
|
34
|
+
uid,
|
|
35
|
+
postPath,
|
|
36
|
+
trackPageView: tpv
|
|
37
|
+
} = props;
|
|
38
|
+
this.uid = uid;
|
|
39
|
+
this.trackPageView = tpv;
|
|
40
|
+
this.serverData = props?.pageViewContext?.data || {};
|
|
41
|
+
const stateStorageStrategy = "cookieAndLocalStorage";
|
|
42
|
+
const baseOptions = {
|
|
43
|
+
appId,
|
|
44
|
+
cookieDomain,
|
|
45
|
+
eventMethod,
|
|
46
|
+
stateStorageStrategy,
|
|
47
|
+
postPath
|
|
48
|
+
};
|
|
49
|
+
newTracker(this.avalancheTrackerName, avalancheCollector, baseOptions);
|
|
50
|
+
newTracker(
|
|
51
|
+
this.bronzeAvalancheTrackerName,
|
|
52
|
+
avalancheCollector,
|
|
53
|
+
baseOptions
|
|
54
|
+
);
|
|
55
|
+
newTracker(this.pvAvalancheTrackerName, avalancheCollector, {
|
|
56
|
+
...baseOptions,
|
|
57
|
+
eventMethod: eventMethod === "post" ? "beacon" : eventMethod,
|
|
58
|
+
plugins: [GaCookiesPlugin()]
|
|
59
|
+
});
|
|
60
|
+
setCookiePath("/");
|
|
61
|
+
if (uid) {
|
|
62
|
+
setUserId(uid);
|
|
63
|
+
}
|
|
64
|
+
_Snowplow.instance = this;
|
|
65
|
+
}
|
|
66
|
+
setContexts(contexts) {
|
|
67
|
+
this.contexts = updateIdentityContext(contexts, this.uid);
|
|
68
|
+
this.pvContext = makeContexts(
|
|
69
|
+
[
|
|
70
|
+
"pageViewContext",
|
|
71
|
+
"distributionChannelContext",
|
|
72
|
+
"serviceChannelContext"
|
|
73
|
+
],
|
|
74
|
+
this.contexts
|
|
75
|
+
);
|
|
76
|
+
this.structContext = makeContexts(
|
|
77
|
+
["distributionChannelContext", "serviceChannelContext"],
|
|
78
|
+
this.contexts
|
|
79
|
+
);
|
|
80
|
+
return this;
|
|
81
|
+
}
|
|
82
|
+
// Send a page view event
|
|
83
|
+
trackView(event) {
|
|
84
|
+
if (this.trackPageView) {
|
|
85
|
+
trackPageView({ ...event, context: this.pvContext }, [
|
|
86
|
+
this.pvAvalancheTrackerName
|
|
87
|
+
]);
|
|
88
|
+
}
|
|
89
|
+
return this;
|
|
90
|
+
}
|
|
91
|
+
// Send a structured event with contexts
|
|
92
|
+
trackEvent(event) {
|
|
93
|
+
trackStructEvent({ ...event, context: this.structContext }, [
|
|
94
|
+
this.bronzeAvalancheTrackerName
|
|
95
|
+
]);
|
|
96
|
+
return this;
|
|
97
|
+
}
|
|
98
|
+
// Send a custom event with defined schema and optional contexts
|
|
99
|
+
trackUnstructEvent(event, contexts) {
|
|
100
|
+
if (!event) {
|
|
101
|
+
return this;
|
|
102
|
+
}
|
|
103
|
+
if (contexts && Array.isArray(contexts) && contexts.length > 0) {
|
|
104
|
+
const context = makeContexts(contexts, this.contexts);
|
|
105
|
+
trackSelfDescribingEvent({ event, context }, [this.avalancheTrackerName]);
|
|
106
|
+
} else {
|
|
107
|
+
trackSelfDescribingEvent({ event }, [this.avalancheTrackerName]);
|
|
108
|
+
}
|
|
109
|
+
return this;
|
|
110
|
+
}
|
|
111
|
+
addEventHandlers(eventDefinitions) {
|
|
112
|
+
const context = this.serverData;
|
|
113
|
+
eventDefinitions.forEach(({ name, type, makePayload, contexts }) => {
|
|
114
|
+
if (type === "structured") {
|
|
115
|
+
this.addEventHandler(name, (params) => {
|
|
116
|
+
void this.trackEvent(
|
|
117
|
+
makePayload({
|
|
118
|
+
...params,
|
|
119
|
+
context
|
|
120
|
+
})
|
|
121
|
+
);
|
|
122
|
+
});
|
|
123
|
+
} else {
|
|
124
|
+
this.addEventHandler(name, (params) => {
|
|
125
|
+
const payload = makePayload({
|
|
126
|
+
...params,
|
|
127
|
+
context
|
|
128
|
+
});
|
|
129
|
+
if (contexts && Array.isArray(contexts) && contexts.length > 0) {
|
|
130
|
+
void this.trackUnstructEvent(payload, contexts);
|
|
131
|
+
} else {
|
|
132
|
+
void this.trackUnstructEvent(payload);
|
|
133
|
+
}
|
|
134
|
+
});
|
|
135
|
+
}
|
|
136
|
+
});
|
|
137
|
+
return this;
|
|
138
|
+
}
|
|
139
|
+
addEventHandler(name, handler) {
|
|
140
|
+
this.eventHandlers[name] = handler;
|
|
141
|
+
return this;
|
|
142
|
+
}
|
|
143
|
+
removeEventHandler(name) {
|
|
144
|
+
delete this.eventHandlers[name];
|
|
145
|
+
return this;
|
|
146
|
+
}
|
|
147
|
+
trigger(name, params) {
|
|
148
|
+
const handler = this.eventHandlers[name];
|
|
149
|
+
if (Object.prototype.hasOwnProperty.call(this.eventHandlers, name) && typeof handler === "function") {
|
|
150
|
+
handler(params);
|
|
151
|
+
}
|
|
152
|
+
return this;
|
|
153
|
+
}
|
|
154
|
+
static getInstance(props) {
|
|
155
|
+
if (!_Snowplow.instance) {
|
|
156
|
+
_Snowplow.instance = new _Snowplow(props);
|
|
157
|
+
}
|
|
158
|
+
return _Snowplow.instance;
|
|
159
|
+
}
|
|
160
|
+
};
|
|
161
|
+
|
|
162
|
+
export {
|
|
163
|
+
Snowplow
|
|
164
|
+
};
|
|
165
|
+
//# sourceMappingURL=chunk-EDKZP2NB.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../src/snowplow/Snowplow.ts"],
|
|
4
|
+
"sourcesContent": ["import type {\n PageViewEvent,\n StructuredEvent,\n TrackerConfiguration,\n} from \"@snowplow/browser-tracker\";\nimport {\n newTracker,\n setCookiePath,\n setUserId,\n trackPageView,\n trackSelfDescribingEvent,\n trackStructEvent,\n} from \"@snowplow/browser-tracker\";\nimport { GaCookiesPlugin } from \"@snowplow/browser-plugin-ga-cookies\";\nimport { makeContexts, updateIdentityContext } from \"./contexts\";\nimport type { 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 plugins: [GaCookiesPlugin()],\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 = makeContexts(\n [\n \"pageViewContext\",\n \"distributionChannelContext\",\n \"serviceChannelContext\",\n ],\n this.contexts,\n );\n this.structContext = makeContexts(\n [\"distributionChannelContext\", \"serviceChannelContext\"],\n this.contexts,\n );\n return this;\n }\n\n // Send a page view event\n trackView(event?: PageViewEvent) {\n if (this.trackPageView) {\n trackPageView({ ...event, context: this.pvContext }, [\n this.pvAvalancheTrackerName,\n ]);\n }\n return this;\n }\n\n // Send a structured event with contexts\n trackEvent(event: StructuredEvent) {\n 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 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 trackSelfDescribingEvent({ event, context }, [this.avalancheTrackerName]);\n } else {\n 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 void 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 void this.trackUnstructEvent(payload, contexts);\n } else {\n void 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"],
|
|
5
|
+
"mappings": "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",
|
|
6
|
+
"names": []
|
|
7
|
+
}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
// src/utils/isObject.tsx
|
|
2
|
+
function isObject(value) {
|
|
3
|
+
return typeof value === "object" && value !== null && !Array.isArray(value) && Object.getPrototypeOf(value) === Object.prototype;
|
|
4
|
+
}
|
|
5
|
+
|
|
6
|
+
export {
|
|
7
|
+
isObject
|
|
8
|
+
};
|
|
9
|
+
//# sourceMappingURL=chunk-LE4F73Z2.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../src/utils/isObject.tsx"],
|
|
4
|
+
"sourcesContent": ["export function isObject(value: unknown): value is Record<string, unknown> {\n return (\n typeof value === \"object\" &&\n value !== null &&\n !Array.isArray(value) &&\n Object.getPrototypeOf(value) === Object.prototype\n );\n}\n"],
|
|
5
|
+
"mappings": ";AAAO,SAAS,SAAS,OAAkD;AACzE,SACE,OAAO,UAAU,YACjB,UAAU,QACV,CAAC,MAAM,QAAQ,KAAK,KACpB,OAAO,eAAe,KAAK,MAAM,OAAO;AAE5C;",
|
|
6
|
+
"names": []
|
|
7
|
+
}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
// src/snowplow/event-definitions/coverage-selection.ts
|
|
2
|
+
var coverageSelectionEventDefinitions = [
|
|
3
|
+
{
|
|
4
|
+
name: "checkboxFormQuestionAnswered",
|
|
5
|
+
type: "unstructured",
|
|
6
|
+
makePayload: (params) => {
|
|
7
|
+
const { context, pageIndex, pageName, sectionName, question, answer } = params;
|
|
8
|
+
return {
|
|
9
|
+
schema: "iglu:com.simplybusiness/checkbox_form_question_answered/jsonschema/1-0-1",
|
|
10
|
+
data: {
|
|
11
|
+
site: context.site,
|
|
12
|
+
vertical: context.vertical ?? "",
|
|
13
|
+
journey_id: context.journeyId,
|
|
14
|
+
page_index: pageIndex,
|
|
15
|
+
page_name: pageName,
|
|
16
|
+
section_name: sectionName,
|
|
17
|
+
question,
|
|
18
|
+
answer
|
|
19
|
+
}
|
|
20
|
+
};
|
|
21
|
+
}
|
|
22
|
+
},
|
|
23
|
+
{
|
|
24
|
+
name: "learnMoreModalOpened",
|
|
25
|
+
type: "structured",
|
|
26
|
+
makePayload: (params) => {
|
|
27
|
+
const { product } = params;
|
|
28
|
+
return {
|
|
29
|
+
category: "coverage_selection",
|
|
30
|
+
action: "learn_more_modal_opened",
|
|
31
|
+
label: product,
|
|
32
|
+
property: window.location.href
|
|
33
|
+
};
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
];
|
|
37
|
+
|
|
38
|
+
export {
|
|
39
|
+
coverageSelectionEventDefinitions
|
|
40
|
+
};
|
|
41
|
+
//# sourceMappingURL=chunk-LE7RCOBX.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../src/snowplow/event-definitions/coverage-selection.ts"],
|
|
4
|
+
"sourcesContent": ["import type { EventDefinition, ParamsType } from \"../types\";\n\ntype CheckboxFormQuestionAnsweredParams = ParamsType & {\n pageIndex: number;\n pageName: string;\n sectionName: string;\n question: string;\n answer: string[];\n};\n\n// Coverage selection events (recommendations, showcase, etc.)\nexport const coverageSelectionEventDefinitions: EventDefinition[] = [\n {\n name: \"checkboxFormQuestionAnswered\",\n type: \"unstructured\",\n makePayload: params => {\n const { context, pageIndex, pageName, sectionName, question, answer } =\n params as CheckboxFormQuestionAnsweredParams;\n\n return {\n schema:\n \"iglu:com.simplybusiness/checkbox_form_question_answered/jsonschema/1-0-1\",\n data: {\n site: context.site,\n vertical: context.vertical ?? \"\",\n journey_id: context.journeyId,\n page_index: pageIndex,\n page_name: pageName,\n section_name: sectionName,\n question,\n answer,\n },\n };\n },\n },\n {\n name: \"learnMoreModalOpened\",\n type: \"structured\",\n makePayload: params => {\n const { product } = params as ParamsType & { product: string };\n\n return {\n category: \"coverage_selection\",\n action: \"learn_more_modal_opened\",\n label: product,\n property: window.location.href,\n };\n },\n },\n];\n"],
|
|
5
|
+
"mappings": ";AAWO,IAAM,oCAAuD;AAAA,EAClE;AAAA,IACE,MAAM;AAAA,IACN,MAAM;AAAA,IACN,aAAa,YAAU;AACrB,YAAM,EAAE,SAAS,WAAW,UAAU,aAAa,UAAU,OAAO,IAClE;AAEF,aAAO;AAAA,QACL,QACE;AAAA,QACF,MAAM;AAAA,UACJ,MAAM,QAAQ;AAAA,UACd,UAAU,QAAQ,YAAY;AAAA,UAC9B,YAAY,QAAQ;AAAA,UACpB,YAAY;AAAA,UACZ,WAAW;AAAA,UACX,cAAc;AAAA,UACd;AAAA,UACA;AAAA,QACF;AAAA,MACF;AAAA,IACF;AAAA,EACF;AAAA,EACA;AAAA,IACE,MAAM;AAAA,IACN,MAAM;AAAA,IACN,aAAa,YAAU;AACrB,YAAM,EAAE,QAAQ,IAAI;AAEpB,aAAO;AAAA,QACL,UAAU;AAAA,QACV,QAAQ;AAAA,QACR,OAAO;AAAA,QACP,UAAU,OAAO,SAAS;AAAA,MAC5B;AAAA,IACF;AAAA,EACF;AACF;",
|
|
6
|
+
"names": []
|
|
7
|
+
}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
// src/snowplow/event-definitions/referral.ts
|
|
2
|
+
var referralEventDefinitions = [
|
|
3
|
+
{
|
|
4
|
+
name: "nextCoverageClicked",
|
|
5
|
+
type: "structured",
|
|
6
|
+
makePayload: (params) => {
|
|
7
|
+
const { url } = params;
|
|
8
|
+
const eventName = "post_referral_workers_compensation_continuation_link";
|
|
9
|
+
return {
|
|
10
|
+
category: eventName,
|
|
11
|
+
action: "link_click",
|
|
12
|
+
label: eventName,
|
|
13
|
+
property: url
|
|
14
|
+
};
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
];
|
|
18
|
+
|
|
19
|
+
export {
|
|
20
|
+
referralEventDefinitions
|
|
21
|
+
};
|
|
22
|
+
//# sourceMappingURL=chunk-MUFIJUOD.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../src/snowplow/event-definitions/referral.ts"],
|
|
4
|
+
"sourcesContent": ["import type { EventDefinition, ParamsType } from \"../types\";\n\n// Referral page events\nexport const referralEventDefinitions: EventDefinition[] = [\n {\n name: \"nextCoverageClicked\",\n type: \"structured\",\n makePayload: params => {\n const { url } = params as ParamsType;\n const eventName = \"post_referral_workers_compensation_continuation_link\";\n\n return {\n category: eventName,\n action: \"link_click\",\n label: eventName,\n property: url,\n };\n },\n },\n];\n"],
|
|
5
|
+
"mappings": ";AAGO,IAAM,2BAA8C;AAAA,EACzD;AAAA,IACE,MAAM;AAAA,IACN,MAAM;AAAA,IACN,aAAa,YAAU;AACrB,YAAM,EAAE,IAAI,IAAI;AAChB,YAAM,YAAY;AAElB,aAAO;AAAA,QACL,UAAU;AAAA,QACV,QAAQ;AAAA,QACR,OAAO;AAAA,QACP,UAAU;AAAA,MACZ;AAAA,IACF;AAAA,EACF;AACF;",
|
|
6
|
+
"names": []
|
|
7
|
+
}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../src/snowplow/getSnowplowConfig.ts"],
|
|
4
|
+
"sourcesContent": ["import type { TrackingProps, PageDataProps } from \"./types\";\n\n// Get Snowplow config from page data props\nexport const getSnowplowConfig = (\n pageData: PageDataProps,\n): TrackingProps | undefined =>\n pageData.scripts?.find(({ metadata }) => metadata.name === \"snowplow\")\n ?.props as TrackingProps;\n"],
|
|
5
|
+
"mappings": ";AAGO,IAAM,oBAAoB,CAC/B,aAEA,SAAS,SAAS,KAAK,CAAC,EAAE,SAAS,MAAM,SAAS,SAAS,UAAU,GACjE;",
|
|
6
|
+
"names": []
|
|
7
|
+
}
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
import {
|
|
2
|
+
eventDefinitions
|
|
3
|
+
} from "./chunk-PI33NKP7.js";
|
|
4
|
+
import {
|
|
5
|
+
Snowplow
|
|
6
|
+
} from "./chunk-EDKZP2NB.js";
|
|
7
|
+
import {
|
|
8
|
+
getContexts
|
|
9
|
+
} from "./chunk-TN5IBPWO.js";
|
|
10
|
+
|
|
11
|
+
// src/snowplow/SnowplowContext.tsx
|
|
12
|
+
import {
|
|
13
|
+
createContext,
|
|
14
|
+
useContext,
|
|
15
|
+
useEffect,
|
|
16
|
+
useMemo,
|
|
17
|
+
useState
|
|
18
|
+
} from "react";
|
|
19
|
+
import { jsx } from "react/jsx-runtime";
|
|
20
|
+
var SnowplowContext = createContext(null);
|
|
21
|
+
var SnowplowProvider = ({ scripts, children }) => {
|
|
22
|
+
const [config, _setConfig] = useState(scripts);
|
|
23
|
+
const [snowplowInstance] = useState(
|
|
24
|
+
() => Snowplow.getInstance(config)
|
|
25
|
+
);
|
|
26
|
+
useEffect(() => {
|
|
27
|
+
if (snowplowInstance && scripts) {
|
|
28
|
+
const contexts = getContexts(config);
|
|
29
|
+
snowplowInstance.setContexts(contexts).addEventHandlers(eventDefinitions);
|
|
30
|
+
if (config.trackPageView) {
|
|
31
|
+
void snowplowInstance.trackView();
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
}, [config, snowplowInstance, scripts]);
|
|
35
|
+
const value = useMemo(
|
|
36
|
+
() => ({
|
|
37
|
+
config,
|
|
38
|
+
snowplow: snowplowInstance
|
|
39
|
+
}),
|
|
40
|
+
[config, snowplowInstance]
|
|
41
|
+
);
|
|
42
|
+
return /* @__PURE__ */ jsx(SnowplowContext.Provider, { value, children });
|
|
43
|
+
};
|
|
44
|
+
function useSnowplowContext() {
|
|
45
|
+
const context = useContext(SnowplowContext);
|
|
46
|
+
if (!context) {
|
|
47
|
+
throw new Error(
|
|
48
|
+
"useSnowplowContext must be used inside a `SnowplowProvider`"
|
|
49
|
+
);
|
|
50
|
+
}
|
|
51
|
+
return context;
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
export {
|
|
55
|
+
SnowplowProvider,
|
|
56
|
+
useSnowplowContext
|
|
57
|
+
};
|
|
58
|
+
//# sourceMappingURL=chunk-OFQYDVHG.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../src/snowplow/SnowplowContext.tsx"],
|
|
4
|
+
"sourcesContent": ["/* eslint-disable @typescript-eslint/no-unused-vars */\nimport {\n createContext,\n useContext,\n useEffect,\n useMemo,\n useState,\n type ReactNode,\n} from \"react\";\nimport { getContexts } from \"./contexts\";\nimport { eventDefinitions } from \"./event-definitions\";\nimport { Snowplow } from \"./Snowplow\";\nimport type { EventDefinition, TrackingProps } from \"./types\";\n\nexport interface SnowplowContextInterface {\n config: TrackingProps;\n snowplow?: Snowplow;\n}\n\nconst SnowplowContext = createContext<SnowplowContextInterface | null>(null);\n\ntype ProviderProps = {\n scripts: TrackingProps;\n children: ReactNode;\n};\n\nexport const SnowplowProvider = ({ scripts, children }: ProviderProps) => {\n const [config, _setConfig] = useState<TrackingProps>(scripts);\n const [snowplowInstance] = useState<Snowplow>(() =>\n Snowplow.getInstance(config),\n );\n\n // Attach event handlers and set contexts\n useEffect(() => {\n if (snowplowInstance && scripts) {\n const contexts = getContexts(config);\n\n snowplowInstance.setContexts(contexts).addEventHandlers(eventDefinitions);\n // Send page view event\n if (config.trackPageView) {\n void snowplowInstance.trackView();\n }\n }\n }, [config, snowplowInstance, scripts]);\n\n const value: SnowplowContextInterface = useMemo(\n () => ({\n config,\n snowplow: snowplowInstance,\n }),\n [config, snowplowInstance],\n );\n\n return (\n <SnowplowContext.Provider value={value}>\n {children}\n </SnowplowContext.Provider>\n );\n};\n\nexport function useSnowplowContext() {\n const context = useContext(SnowplowContext);\n\n if (!context) {\n throw new Error(\n \"useSnowplowContext must be used inside a `SnowplowProvider`\",\n );\n }\n return context;\n}\n"],
|
|
5
|
+
"mappings": ";;;;;;;;;;;AACA;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OAEK;AA8CH;AAnCJ,IAAM,kBAAkB,cAA+C,IAAI;AAOpE,IAAM,mBAAmB,CAAC,EAAE,SAAS,SAAS,MAAqB;AACxE,QAAM,CAAC,QAAQ,UAAU,IAAI,SAAwB,OAAO;AAC5D,QAAM,CAAC,gBAAgB,IAAI;AAAA,IAAmB,MAC5C,SAAS,YAAY,MAAM;AAAA,EAC7B;AAGA,YAAU,MAAM;AACd,QAAI,oBAAoB,SAAS;AAC/B,YAAM,WAAW,YAAY,MAAM;AAEnC,uBAAiB,YAAY,QAAQ,EAAE,iBAAiB,gBAAgB;AAExE,UAAI,OAAO,eAAe;AACxB,aAAK,iBAAiB,UAAU;AAAA,MAClC;AAAA,IACF;AAAA,EACF,GAAG,CAAC,QAAQ,kBAAkB,OAAO,CAAC;AAEtC,QAAM,QAAkC;AAAA,IACtC,OAAO;AAAA,MACL;AAAA,MACA,UAAU;AAAA,IACZ;AAAA,IACA,CAAC,QAAQ,gBAAgB;AAAA,EAC3B;AAEA,SACE,oBAAC,gBAAgB,UAAhB,EAAyB,OACvB,UACH;AAEJ;AAEO,SAAS,qBAAqB;AACnC,QAAM,UAAU,WAAW,eAAe;AAE1C,MAAI,CAAC,SAAS;AACZ,UAAM,IAAI;AAAA,MACR;AAAA,IACF;AAAA,EACF;AACA,SAAO;AACT;",
|
|
6
|
+
"names": []
|
|
7
|
+
}
|
|
@@ -0,0 +1,231 @@
|
|
|
1
|
+
import {
|
|
2
|
+
redact
|
|
3
|
+
} from "./chunk-QKBNCG2F.js";
|
|
4
|
+
import {
|
|
5
|
+
DELIMITER
|
|
6
|
+
} from "./chunk-JILHOFBG.js";
|
|
7
|
+
|
|
8
|
+
// src/snowplow/event-definitions/questionnaire/questionnaire.ts
|
|
9
|
+
var questionnaireEventDefinitions = [
|
|
10
|
+
{
|
|
11
|
+
name: "questionAnswered",
|
|
12
|
+
type: "unstructured",
|
|
13
|
+
makePayload: (params) => {
|
|
14
|
+
const { section, context } = params;
|
|
15
|
+
const { question, answer } = redact(params);
|
|
16
|
+
const flatAnswer = Array.isArray(answer) ? answer.join(DELIMITER) : answer;
|
|
17
|
+
return {
|
|
18
|
+
schema: "iglu:com.simplybusiness/form_question_answered/jsonschema/1-0-4",
|
|
19
|
+
data: {
|
|
20
|
+
site: context.site,
|
|
21
|
+
page_index: 1,
|
|
22
|
+
page_name: "quick_to_quote",
|
|
23
|
+
submitted_from: "quick_to_quote_experiment",
|
|
24
|
+
section_name: section,
|
|
25
|
+
question,
|
|
26
|
+
answer: flatAnswer,
|
|
27
|
+
vertical: context.vertical,
|
|
28
|
+
journey_id: context.journeyId
|
|
29
|
+
}
|
|
30
|
+
};
|
|
31
|
+
}
|
|
32
|
+
},
|
|
33
|
+
{
|
|
34
|
+
name: "primaryDetailSelected",
|
|
35
|
+
type: "unstructured",
|
|
36
|
+
makePayload: (params) => {
|
|
37
|
+
const {
|
|
38
|
+
context,
|
|
39
|
+
answer,
|
|
40
|
+
vertical,
|
|
41
|
+
searchId,
|
|
42
|
+
selectedListPosition,
|
|
43
|
+
selectionMethod
|
|
44
|
+
} = params;
|
|
45
|
+
const { site } = context;
|
|
46
|
+
const isUSPage = site === "simplybusiness_us";
|
|
47
|
+
let verticalName = vertical || context.vertical;
|
|
48
|
+
if (verticalName.toLowerCase().indexOf("landlord") > -1) {
|
|
49
|
+
verticalName = answer === "residential" ? "Landlord" : "Commercial landlord";
|
|
50
|
+
}
|
|
51
|
+
const data = {
|
|
52
|
+
site,
|
|
53
|
+
vertical: verticalName,
|
|
54
|
+
primary_detail: answer,
|
|
55
|
+
selected_type: "trade_selector",
|
|
56
|
+
location: window?.location?.pathname ?? ""
|
|
57
|
+
};
|
|
58
|
+
if (searchId) {
|
|
59
|
+
data.search_id = searchId;
|
|
60
|
+
}
|
|
61
|
+
if (selectionMethod) {
|
|
62
|
+
data.selection_method = selectionMethod;
|
|
63
|
+
}
|
|
64
|
+
if (isUSPage) {
|
|
65
|
+
data.selected_list_position = selectedListPosition !== void 0 ? (selectedListPosition + 1).toString() : null;
|
|
66
|
+
data.selected_location = "trade_selector_vertical";
|
|
67
|
+
data.business_unit = site;
|
|
68
|
+
}
|
|
69
|
+
return {
|
|
70
|
+
schema: "iglu:com.simplybusiness/primary_detail_selected/jsonschema/1-4-0",
|
|
71
|
+
data
|
|
72
|
+
};
|
|
73
|
+
},
|
|
74
|
+
contexts: ["distributionChannelContext", "serviceChannelContext"]
|
|
75
|
+
},
|
|
76
|
+
{
|
|
77
|
+
name: "helpTextOpened",
|
|
78
|
+
type: "unstructured",
|
|
79
|
+
makePayload: (params) => {
|
|
80
|
+
const { primaryText, label, context, helpText } = params;
|
|
81
|
+
return {
|
|
82
|
+
schema: "iglu:com.simplybusiness/help_text_opened/jsonschema/1-1-0",
|
|
83
|
+
data: {
|
|
84
|
+
vertical: context.vertical,
|
|
85
|
+
site: context.site,
|
|
86
|
+
primary_text: primaryText,
|
|
87
|
+
help_text: helpText,
|
|
88
|
+
label,
|
|
89
|
+
page_name: "quick_to_quote"
|
|
90
|
+
}
|
|
91
|
+
};
|
|
92
|
+
}
|
|
93
|
+
},
|
|
94
|
+
{
|
|
95
|
+
name: "assumptionsButtonClicked",
|
|
96
|
+
type: "structured",
|
|
97
|
+
makePayload: (params) => {
|
|
98
|
+
const { source, presentationGroup } = params;
|
|
99
|
+
return {
|
|
100
|
+
action: source,
|
|
101
|
+
category: presentationGroup
|
|
102
|
+
};
|
|
103
|
+
}
|
|
104
|
+
},
|
|
105
|
+
{
|
|
106
|
+
name: "navButtonClicked",
|
|
107
|
+
type: "structured",
|
|
108
|
+
makePayload: (params) => {
|
|
109
|
+
const { label, category } = params;
|
|
110
|
+
return {
|
|
111
|
+
label,
|
|
112
|
+
action: "link_click",
|
|
113
|
+
category
|
|
114
|
+
};
|
|
115
|
+
}
|
|
116
|
+
},
|
|
117
|
+
{
|
|
118
|
+
name: "manualAddressClicked",
|
|
119
|
+
type: "structured",
|
|
120
|
+
makePayload: (params) => {
|
|
121
|
+
const { category } = params;
|
|
122
|
+
return {
|
|
123
|
+
action: "link_click",
|
|
124
|
+
category,
|
|
125
|
+
label: "Enter address manually"
|
|
126
|
+
};
|
|
127
|
+
}
|
|
128
|
+
},
|
|
129
|
+
{
|
|
130
|
+
name: "assumptionLinkClicked",
|
|
131
|
+
type: "structured",
|
|
132
|
+
makePayload: (params) => {
|
|
133
|
+
const { label, category, property } = params;
|
|
134
|
+
return {
|
|
135
|
+
action: "assumption_link_click",
|
|
136
|
+
category,
|
|
137
|
+
label,
|
|
138
|
+
property
|
|
139
|
+
};
|
|
140
|
+
}
|
|
141
|
+
},
|
|
142
|
+
{
|
|
143
|
+
name: "addressLookupFocused",
|
|
144
|
+
type: "structured",
|
|
145
|
+
makePayload: (params) => {
|
|
146
|
+
const { label, category } = params;
|
|
147
|
+
return {
|
|
148
|
+
action: "address_lookup_focused",
|
|
149
|
+
category,
|
|
150
|
+
label
|
|
151
|
+
};
|
|
152
|
+
}
|
|
153
|
+
},
|
|
154
|
+
{
|
|
155
|
+
name: "addressLookupTypedIn",
|
|
156
|
+
type: "structured",
|
|
157
|
+
makePayload: (params) => {
|
|
158
|
+
const { label, category } = params;
|
|
159
|
+
return {
|
|
160
|
+
action: "address_lookup_typed_in",
|
|
161
|
+
category,
|
|
162
|
+
label
|
|
163
|
+
};
|
|
164
|
+
}
|
|
165
|
+
},
|
|
166
|
+
{
|
|
167
|
+
name: "addressOptionsDisplayed",
|
|
168
|
+
type: "structured",
|
|
169
|
+
makePayload: (params) => {
|
|
170
|
+
const { label, category } = params;
|
|
171
|
+
return {
|
|
172
|
+
action: "address_options_displayed",
|
|
173
|
+
category,
|
|
174
|
+
label
|
|
175
|
+
};
|
|
176
|
+
}
|
|
177
|
+
},
|
|
178
|
+
{
|
|
179
|
+
name: "tradeChanged",
|
|
180
|
+
type: "structured",
|
|
181
|
+
makePayload: (params) => {
|
|
182
|
+
const { label, property } = params;
|
|
183
|
+
return {
|
|
184
|
+
action: "change_your_selected_profession_button_clicked",
|
|
185
|
+
category: "change_your_selected_profession_button",
|
|
186
|
+
label: `Question: ${label}`,
|
|
187
|
+
property
|
|
188
|
+
// Answer before change
|
|
189
|
+
};
|
|
190
|
+
}
|
|
191
|
+
},
|
|
192
|
+
{
|
|
193
|
+
name: "questionValidationFailed",
|
|
194
|
+
type: "structured",
|
|
195
|
+
makePayload: (params) => {
|
|
196
|
+
const { question, errorMessage } = params;
|
|
197
|
+
return {
|
|
198
|
+
category: "questionnaire",
|
|
199
|
+
action: `${question} validation failed`,
|
|
200
|
+
label: errorMessage
|
|
201
|
+
};
|
|
202
|
+
}
|
|
203
|
+
},
|
|
204
|
+
{
|
|
205
|
+
name: "stateQuestionAnswered",
|
|
206
|
+
type: "unstructured",
|
|
207
|
+
makePayload: (params) => {
|
|
208
|
+
const { context, answer, selectedCoverages } = params;
|
|
209
|
+
const data = {
|
|
210
|
+
vertical: context.vertical,
|
|
211
|
+
selected_type: context.journeyName ?? "usa",
|
|
212
|
+
location: window?.location?.pathname ?? "",
|
|
213
|
+
url: window?.location?.href ?? "",
|
|
214
|
+
state: answer,
|
|
215
|
+
selection_method: "dropdown"
|
|
216
|
+
};
|
|
217
|
+
if (selectedCoverages?.length) {
|
|
218
|
+
data.products = selectedCoverages.join(",");
|
|
219
|
+
}
|
|
220
|
+
return {
|
|
221
|
+
schema: "iglu:com.simplybusiness/state_question_answered/jsonschema/1-0-0",
|
|
222
|
+
data
|
|
223
|
+
};
|
|
224
|
+
}
|
|
225
|
+
}
|
|
226
|
+
];
|
|
227
|
+
|
|
228
|
+
export {
|
|
229
|
+
questionnaireEventDefinitions
|
|
230
|
+
};
|
|
231
|
+
//# sourceMappingURL=chunk-OQ4YGZGX.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../src/snowplow/event-definitions/questionnaire/questionnaire.ts"],
|
|
4
|
+
"sourcesContent": ["import { DELIMITER } from \"../../constants\";\nimport type { EventDefinition, ParamsType } from \"../../types\";\nimport { redact } from \"./redaction\";\n\n// Questionnaire events\nexport const questionnaireEventDefinitions: EventDefinition[] = [\n {\n name: \"questionAnswered\",\n type: \"unstructured\",\n makePayload: params => {\n const { section, 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-4\",\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: flatAnswer,\n vertical: context.vertical,\n journey_id: context.journeyId,\n },\n };\n },\n },\n {\n name: \"primaryDetailSelected\",\n type: \"unstructured\",\n makePayload: params => {\n const {\n context,\n answer,\n vertical,\n searchId,\n selectedListPosition,\n selectionMethod,\n } = params as ParamsType;\n const { site } = context;\n const isUSPage = site === \"simplybusiness_us\";\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 const data: Record<string, unknown> = {\n site,\n vertical: verticalName,\n primary_detail: answer,\n selected_type: \"trade_selector\",\n location: window?.location?.pathname ?? \"\",\n };\n\n // Always include search_id if present\n if (searchId) {\n data.search_id = searchId;\n }\n // Always include selection_method if present\n if (selectionMethod) {\n data.selection_method = selectionMethod;\n }\n\n // US only fields\n if (isUSPage) {\n data.selected_list_position =\n selectedListPosition !== undefined\n ? (selectedListPosition + 1).toString()\n : null;\n data.selected_location = \"trade_selector_vertical\";\n data.business_unit = site;\n }\n\n return {\n schema:\n \"iglu:com.simplybusiness/primary_detail_selected/jsonschema/1-4-0\",\n data,\n };\n },\n contexts: [\"distributionChannelContext\", \"serviceChannelContext\"],\n },\n {\n name: \"helpTextOpened\",\n type: \"unstructured\",\n makePayload: params => {\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 primary_text: primaryText,\n help_text: helpText,\n label,\n page_name: \"quick_to_quote\",\n },\n };\n },\n },\n {\n name: \"assumptionsButtonClicked\",\n type: \"structured\",\n makePayload: params => {\n const { source, presentationGroup } = params as ParamsType;\n\n return {\n action: source,\n category: presentationGroup,\n };\n },\n },\n {\n name: \"navButtonClicked\",\n type: \"structured\",\n makePayload: params => {\n const { label, category } = params as ParamsType;\n\n return {\n label,\n action: \"link_click\",\n category,\n };\n },\n },\n {\n name: \"manualAddressClicked\",\n type: \"structured\",\n makePayload: params => {\n const { category } = params as ParamsType;\n\n return {\n action: \"link_click\",\n category,\n label: \"Enter address manually\",\n };\n },\n },\n {\n name: \"assumptionLinkClicked\",\n type: \"structured\",\n makePayload: params => {\n const { label, category, property } = params as ParamsType;\n\n return {\n action: \"assumption_link_click\",\n category,\n label,\n property,\n };\n },\n },\n {\n name: \"addressLookupFocused\",\n type: \"structured\",\n makePayload: params => {\n const { label, category } = params as ParamsType;\n\n return {\n action: \"address_lookup_focused\",\n category,\n label,\n };\n },\n },\n {\n name: \"addressLookupTypedIn\",\n type: \"structured\",\n makePayload: params => {\n const { label, category } = params as ParamsType;\n\n return {\n action: \"address_lookup_typed_in\",\n category,\n label,\n };\n },\n },\n {\n name: \"addressOptionsDisplayed\",\n type: \"structured\",\n makePayload: params => {\n const { label, category } = params as ParamsType;\n\n return {\n action: \"address_options_displayed\",\n category,\n label,\n };\n },\n },\n {\n name: \"tradeChanged\",\n type: \"structured\",\n makePayload: params => {\n const { label, property } = params as ParamsType;\n\n return {\n action: \"change_your_selected_profession_button_clicked\",\n category: \"change_your_selected_profession_button\",\n label: `Question: ${label}`,\n property, // Answer before change\n };\n },\n },\n {\n name: \"questionValidationFailed\",\n type: \"structured\",\n makePayload: params => {\n const { question, errorMessage } = params as ParamsType;\n\n return {\n category: \"questionnaire\",\n action: `${question} validation failed`,\n label: errorMessage,\n };\n },\n },\n {\n name: \"stateQuestionAnswered\",\n type: \"unstructured\",\n makePayload: params => {\n const { context, answer, selectedCoverages } = params as ParamsType & {\n selectedCoverages?: string[];\n selectedType?: string;\n };\n\n const data: Record<string, string> = {\n vertical: context.vertical,\n selected_type: context.journeyName ?? \"usa\",\n location: window?.location?.pathname ?? \"\",\n url: window?.location?.href ?? \"\",\n state: answer,\n selection_method: \"dropdown\",\n };\n\n if (selectedCoverages?.length) {\n data.products = selectedCoverages.join(\",\");\n }\n\n return {\n schema:\n \"iglu:com.simplybusiness/state_question_answered/jsonschema/1-0-0\",\n data,\n };\n },\n },\n];\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
|
+
"names": []
|
|
7
|
+
}
|