@simplybusiness/services 2.3.1 → 2.3.3

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.
Files changed (153) hide show
  1. package/CHANGELOG.md +14 -0
  2. package/dist/cjs/address-lookup/index.js +94 -0
  3. package/dist/cjs/address-lookup/index.js.map +7 -0
  4. package/dist/cjs/address-lookup/types.js +19 -0
  5. package/dist/cjs/address-lookup/types.js.map +7 -0
  6. package/dist/cjs/airbrake/index.js +64 -0
  7. package/dist/cjs/airbrake/index.js.map +7 -0
  8. package/dist/cjs/index.js +3 -3
  9. package/dist/cjs/meta.json +801 -2
  10. package/dist/cjs/mocks/eventDefinitions.js +246 -0
  11. package/dist/cjs/mocks/eventDefinitions.js.map +7 -0
  12. package/dist/cjs/mocks/scripts-mock.js +67 -0
  13. package/dist/cjs/mocks/scripts-mock.js.map +7 -0
  14. package/dist/cjs/snowplow/Snowplow.js +197 -0
  15. package/dist/cjs/snowplow/Snowplow.js.map +7 -0
  16. package/dist/cjs/snowplow/SnowplowContext.js +1315 -0
  17. package/dist/cjs/snowplow/SnowplowContext.js.map +7 -0
  18. package/dist/cjs/snowplow/constants.js +27 -0
  19. package/dist/cjs/snowplow/constants.js.map +7 -0
  20. package/dist/cjs/snowplow/contexts.js +95 -0
  21. package/dist/cjs/snowplow/contexts.js.map +7 -0
  22. package/dist/cjs/snowplow/event-definitions/base.js +92 -0
  23. package/dist/cjs/snowplow/event-definitions/base.js.map +7 -0
  24. package/dist/cjs/snowplow/event-definitions/coverage-selection.js +61 -0
  25. package/dist/cjs/snowplow/event-definitions/coverage-selection.js.map +7 -0
  26. package/dist/cjs/snowplow/event-definitions/index.js +1069 -0
  27. package/dist/cjs/snowplow/event-definitions/index.js.map +7 -0
  28. package/dist/cjs/snowplow/event-definitions/intervention.js +59 -0
  29. package/dist/cjs/snowplow/event-definitions/intervention.js.map +7 -0
  30. package/dist/cjs/snowplow/event-definitions/personalised_cover.js +309 -0
  31. package/dist/cjs/snowplow/event-definitions/personalised_cover.js.map +7 -0
  32. package/dist/cjs/snowplow/event-definitions/qcp.js +379 -0
  33. package/dist/cjs/snowplow/event-definitions/qcp.js.map +7 -0
  34. package/dist/cjs/snowplow/event-definitions/questionnaire/questionnaire.js +390 -0
  35. package/dist/cjs/snowplow/event-definitions/questionnaire/questionnaire.js.map +7 -0
  36. package/dist/cjs/snowplow/event-definitions/questionnaire/redaction.js +165 -0
  37. package/dist/cjs/snowplow/event-definitions/questionnaire/redaction.js.map +7 -0
  38. package/dist/cjs/snowplow/event-definitions/referral.js +42 -0
  39. package/dist/cjs/snowplow/event-definitions/referral.js.map +7 -0
  40. package/dist/cjs/snowplow/event-definitions/test-utils.js +33 -0
  41. package/dist/cjs/snowplow/event-definitions/test-utils.js.map +7 -0
  42. package/dist/cjs/snowplow/getSnowplowConfig.js +27 -0
  43. package/dist/cjs/snowplow/getSnowplowConfig.js.map +7 -0
  44. package/dist/cjs/snowplow/index.js +1330 -0
  45. package/dist/cjs/snowplow/index.js.map +7 -0
  46. package/dist/cjs/snowplow/types.js +19 -0
  47. package/dist/cjs/snowplow/types.js.map +7 -0
  48. package/dist/cjs/utils/index.js +63 -0
  49. package/dist/cjs/utils/index.js.map +7 -0
  50. package/dist/cjs/utils/isObject.js +29 -0
  51. package/dist/cjs/utils/isObject.js.map +7 -0
  52. package/dist/cjs/utils/testUtils.js +1372 -0
  53. package/dist/cjs/utils/testUtils.js.map +7 -0
  54. package/dist/cjs/utils/text.js +62 -0
  55. package/dist/cjs/utils/text.js.map +7 -0
  56. package/dist/esm/address-lookup/index.js +7 -0
  57. package/dist/esm/address-lookup/index.js.map +7 -0
  58. package/dist/esm/address-lookup/types.js +1 -0
  59. package/dist/esm/address-lookup/types.js.map +7 -0
  60. package/dist/esm/airbrake/index.js +9 -0
  61. package/dist/esm/airbrake/index.js.map +7 -0
  62. package/dist/esm/chunk-3SO3SL37.js +150 -0
  63. package/dist/esm/chunk-3SO3SL37.js.map +7 -0
  64. package/dist/esm/chunk-75UX5UWV.js +47 -0
  65. package/dist/esm/chunk-75UX5UWV.js.map +7 -0
  66. package/dist/esm/chunk-BJUWIK7N.js +1 -0
  67. package/dist/esm/chunk-BJUWIK7N.js.map +7 -0
  68. package/dist/esm/chunk-BYVY7UWR.js +1 -0
  69. package/dist/esm/chunk-BYVY7UWR.js.map +7 -0
  70. package/dist/esm/chunk-EDKZP2NB.js +165 -0
  71. package/dist/esm/chunk-EDKZP2NB.js.map +7 -0
  72. package/dist/esm/chunk-JILHOFBG.js +7 -0
  73. package/dist/esm/chunk-JILHOFBG.js.map +7 -0
  74. package/dist/esm/chunk-LE4F73Z2.js +9 -0
  75. package/dist/esm/chunk-LE4F73Z2.js.map +7 -0
  76. package/dist/esm/chunk-LE7RCOBX.js +41 -0
  77. package/dist/esm/chunk-LE7RCOBX.js.map +7 -0
  78. package/dist/esm/chunk-MUFIJUOD.js +22 -0
  79. package/dist/esm/chunk-MUFIJUOD.js.map +7 -0
  80. package/dist/esm/chunk-NDWXMYSZ.js +7 -0
  81. package/dist/esm/chunk-NDWXMYSZ.js.map +7 -0
  82. package/dist/esm/chunk-OFQYDVHG.js +58 -0
  83. package/dist/esm/chunk-OFQYDVHG.js.map +7 -0
  84. package/dist/esm/chunk-OQ4YGZGX.js +231 -0
  85. package/dist/esm/chunk-OQ4YGZGX.js.map +7 -0
  86. package/dist/esm/chunk-PI33NKP7.js +58 -0
  87. package/dist/esm/chunk-PI33NKP7.js.map +7 -0
  88. package/dist/esm/chunk-QKBNCG2F.js +145 -0
  89. package/dist/esm/chunk-QKBNCG2F.js.map +7 -0
  90. package/dist/esm/chunk-RLSHHBYY.js +39 -0
  91. package/dist/esm/chunk-RLSHHBYY.js.map +7 -0
  92. package/dist/esm/chunk-RUOVZDWE.js +39 -0
  93. package/dist/esm/chunk-RUOVZDWE.js.map +7 -0
  94. package/dist/esm/chunk-TN5IBPWO.js +44 -0
  95. package/dist/esm/chunk-TN5IBPWO.js.map +7 -0
  96. package/dist/esm/chunk-WGHBTJNE.js +74 -0
  97. package/dist/esm/chunk-WGHBTJNE.js.map +7 -0
  98. package/dist/esm/chunk-XNSKPER5.js +44 -0
  99. package/dist/esm/chunk-XNSKPER5.js.map +7 -0
  100. package/dist/esm/chunk-XRH22EFX.js +72 -0
  101. package/dist/esm/chunk-XRH22EFX.js.map +7 -0
  102. package/dist/esm/chunk-ZEYOXRFM.js +358 -0
  103. package/dist/esm/chunk-ZEYOXRFM.js.map +7 -0
  104. package/dist/esm/index.js +42 -1410
  105. package/dist/esm/index.js.map +4 -4
  106. package/dist/esm/meta.json +1481 -71
  107. package/dist/esm/mocks/eventDefinitions.js +86 -0
  108. package/dist/esm/mocks/eventDefinitions.js.map +7 -0
  109. package/dist/esm/mocks/scripts-mock.js +7 -0
  110. package/dist/esm/mocks/scripts-mock.js.map +7 -0
  111. package/dist/esm/snowplow/Snowplow.js +10 -0
  112. package/dist/esm/snowplow/Snowplow.js.map +7 -0
  113. package/dist/esm/snowplow/SnowplowContext.js +23 -0
  114. package/dist/esm/snowplow/SnowplowContext.js.map +7 -0
  115. package/dist/esm/snowplow/constants.js +7 -0
  116. package/dist/esm/snowplow/constants.js.map +7 -0
  117. package/dist/esm/snowplow/contexts.js +13 -0
  118. package/dist/esm/snowplow/contexts.js.map +7 -0
  119. package/dist/esm/snowplow/event-definitions/base.js +7 -0
  120. package/dist/esm/snowplow/event-definitions/base.js.map +7 -0
  121. package/dist/esm/snowplow/event-definitions/coverage-selection.js +7 -0
  122. package/dist/esm/snowplow/event-definitions/coverage-selection.js.map +7 -0
  123. package/dist/esm/snowplow/event-definitions/index.js +30 -0
  124. package/dist/esm/snowplow/event-definitions/index.js.map +7 -0
  125. package/dist/esm/snowplow/event-definitions/intervention.js +7 -0
  126. package/dist/esm/snowplow/event-definitions/intervention.js.map +7 -0
  127. package/dist/esm/snowplow/event-definitions/personalised_cover.js +11 -0
  128. package/dist/esm/snowplow/event-definitions/personalised_cover.js.map +7 -0
  129. package/dist/esm/snowplow/event-definitions/qcp.js +9 -0
  130. package/dist/esm/snowplow/event-definitions/qcp.js.map +7 -0
  131. package/dist/esm/snowplow/event-definitions/questionnaire/questionnaire.js +9 -0
  132. package/dist/esm/snowplow/event-definitions/questionnaire/questionnaire.js.map +7 -0
  133. package/dist/esm/snowplow/event-definitions/questionnaire/redaction.js +7 -0
  134. package/dist/esm/snowplow/event-definitions/questionnaire/redaction.js.map +7 -0
  135. package/dist/esm/snowplow/event-definitions/referral.js +7 -0
  136. package/dist/esm/snowplow/event-definitions/referral.js.map +7 -0
  137. package/dist/esm/snowplow/event-definitions/test-utils.js +12 -0
  138. package/dist/esm/snowplow/event-definitions/test-utils.js.map +7 -0
  139. package/dist/esm/snowplow/getSnowplowConfig.js +7 -0
  140. package/dist/esm/snowplow/getSnowplowConfig.js.map +7 -0
  141. package/dist/esm/snowplow/index.js +54 -0
  142. package/dist/esm/snowplow/index.js.map +7 -0
  143. package/dist/esm/snowplow/types.js +2 -0
  144. package/dist/esm/snowplow/types.js.map +7 -0
  145. package/dist/esm/utils/index.js +15 -0
  146. package/dist/esm/utils/index.js.map +7 -0
  147. package/dist/esm/utils/isObject.js +7 -0
  148. package/dist/esm/utils/isObject.js.map +7 -0
  149. package/dist/esm/utils/testUtils.js +46 -0
  150. package/dist/esm/utils/testUtils.js.map +7 -0
  151. package/dist/esm/utils/text.js +12 -0
  152. package/dist/esm/utils/text.js.map +7 -0
  153. package/package.json +2 -2
@@ -0,0 +1,1372 @@
1
+ "use strict";
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
6
+ var __export = (target, all) => {
7
+ for (var name in all)
8
+ __defProp(target, name, { get: all[name], enumerable: true });
9
+ };
10
+ var __copyProps = (to, from, except, desc) => {
11
+ if (from && typeof from === "object" || typeof from === "function") {
12
+ for (let key of __getOwnPropNames(from))
13
+ if (!__hasOwnProp.call(to, key) && key !== except)
14
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
15
+ }
16
+ return to;
17
+ };
18
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
+
20
+ // src/utils/testUtils.tsx
21
+ var testUtils_exports = {};
22
+ __export(testUtils_exports, {
23
+ mockLocation: () => mockLocation,
24
+ renderWithProviders: () => renderWithProviders
25
+ });
26
+ module.exports = __toCommonJS(testUtils_exports);
27
+ var import_react2 = require("@testing-library/react");
28
+
29
+ // src/mocks/scripts-mock.ts
30
+ var pageData = {
31
+ scripts: [
32
+ {
33
+ metadata: { name: "snowplow" },
34
+ props: {
35
+ uid: "49a449d8aaa9dd58f90a623d4b9dbcae235bf92a",
36
+ cookieDomain: "",
37
+ // TODO: Change this url to "http://localhost:8000" for local development
38
+ avalancheCollector: "https://snowplow-collector-staging.simplybusiness.com",
39
+ appId: "us-chopin",
40
+ includeGAContext: true,
41
+ eventMethod: "post",
42
+ postPath: "/com.simplybusiness/events",
43
+ trackActivity: true,
44
+ trackPageView: true,
45
+ pageViewContext: {
46
+ schema: "iglu:uk.co.simplybusiness/journey_context/jsonschema/1-0-0",
47
+ data: {
48
+ site: "simplybusiness_us",
49
+ vertical: "usa",
50
+ superSegment: "Unknown",
51
+ primaryDetail: "Lawn care services",
52
+ journeyName: "usa",
53
+ journeyId: "666ff79d90abbc3582e496da",
54
+ pageStepName: "thank_you_ssr",
55
+ pageStepDepth: -1
56
+ }
57
+ },
58
+ distributionChannelContext: {
59
+ schema: "iglu:com.simplybusiness/distribution_channel_context/jsonschema/1-0-0",
60
+ data: { service_channel_identifier: "simplybusiness_us" }
61
+ },
62
+ serviceChannelContext: {
63
+ schema: "iglu:com.simplybusiness/service_channel_context/jsonschema/1-0-0",
64
+ data: { service_channel_identifier: "simplybusiness_us" }
65
+ },
66
+ forceSecureTracker: true
67
+ }
68
+ }
69
+ ]
70
+ };
71
+
72
+ // src/snowplow/SnowplowContext.tsx
73
+ var import_react = require("react");
74
+
75
+ // src/utils/text.ts
76
+ var snakeCaseKeys = (object) => Object.entries(object || {}).reduce(
77
+ (acc, [key, value]) => {
78
+ const newKey = camelToSnakeCase(key);
79
+ if (Array.isArray(value) && value.every(isObject)) {
80
+ return {
81
+ ...acc,
82
+ [newKey]: value.map((v) => snakeCaseKeys(v))
83
+ };
84
+ }
85
+ if (isObject(value)) {
86
+ return {
87
+ ...acc,
88
+ [newKey]: snakeCaseKeys(value)
89
+ };
90
+ }
91
+ return {
92
+ ...acc,
93
+ [newKey]: value
94
+ };
95
+ },
96
+ {}
97
+ );
98
+ var snakeCase = (text = "") => text.toLowerCase().replace(/ /g, "_");
99
+ var camelToSnakeCase = (text) => text.charAt(0).toLowerCase() + text.slice(1).replace(
100
+ /(\[.*?\])|[A-Z]/g,
101
+ (match, group) => group ? match : `_${match.toLowerCase()}`
102
+ );
103
+
104
+ // src/utils/isObject.tsx
105
+ function isObject(value) {
106
+ return typeof value === "object" && value !== null && !Array.isArray(value) && Object.getPrototypeOf(value) === Object.prototype;
107
+ }
108
+
109
+ // src/snowplow/contexts.ts
110
+ var getContexts = (config) => {
111
+ const contextEntries = Object.entries(config || {}).filter(([key]) => key.includes("Context") && key !== "includeGAContext").reduce((acc, [key, value]) => {
112
+ if (typeof value === "object") {
113
+ return { ...acc, [key]: snakeCaseKeys({ ...value }) };
114
+ }
115
+ return {
116
+ ...acc,
117
+ [key]: snakeCaseKeys({ data: { service_channel_identifier: value } })
118
+ };
119
+ }, {});
120
+ return contextEntries;
121
+ };
122
+ var updateIdentityContext = (contexts, uid) => {
123
+ const index = Object.keys(contexts).findIndex(
124
+ (ctx) => contexts[ctx].schema?.includes("identity_context")
125
+ );
126
+ if (index > -1) {
127
+ const key = Object.keys(contexts)[index];
128
+ return {
129
+ ...contexts,
130
+ [key]: {
131
+ ...contexts[key],
132
+ data: {
133
+ ...contexts[key].data,
134
+ domain_userid: uid
135
+ }
136
+ }
137
+ };
138
+ }
139
+ return contexts;
140
+ };
141
+ var makeContexts = (keys, config) => (keys || []).map((key) => config[key]);
142
+
143
+ // src/snowplow/event-definitions/base.ts
144
+ var baseEventDefinitions = [
145
+ // Mobile link in header
146
+ {
147
+ name: "mobileLinkClick",
148
+ type: "structured",
149
+ makePayload: () => ({
150
+ category: "marketing",
151
+ action: "link-click",
152
+ label: "mobile_call_button",
153
+ property: window.location.href
154
+ })
155
+ },
156
+ // Operating hours link in footer
157
+ {
158
+ name: "operatingHoursClick",
159
+ type: "unstructured",
160
+ makePayload: () => ({
161
+ schema: "iglu:com.snowplowanalytics.snowplow/unstruct_event/jsonschema/1-0-0",
162
+ data: {
163
+ schema: "iglu:com.simplybusiness/operating_hours_clicked/jsonschema/1-0-2",
164
+ data: {}
165
+ }
166
+ })
167
+ },
168
+ {
169
+ name: "progressbarClicked",
170
+ type: "unstructured",
171
+ makePayload: (params) => {
172
+ const {
173
+ section,
174
+ context,
175
+ fromStepIndex,
176
+ fromStepName,
177
+ stepIndex,
178
+ stepName
179
+ } = params;
180
+ return {
181
+ schema: "iglu:com.simplybusiness/progressbar_clicked/jsonschema/1-1-0",
182
+ data: {
183
+ source_page_index: fromStepIndex,
184
+ source_page_name: fromStepName,
185
+ page_index: stepIndex,
186
+ page_name: stepName,
187
+ site: context.site,
188
+ section_name: section,
189
+ vertical: context.vertical
190
+ }
191
+ };
192
+ }
193
+ },
194
+ // Zendesk help chat link
195
+ {
196
+ name: "helpChatLinkClicked",
197
+ type: "structured",
198
+ makePayload: (params) => {
199
+ const { label } = params;
200
+ return {
201
+ category: "help chat for question",
202
+ action: "help_chat_for_question_clicked",
203
+ label,
204
+ property: window.location.href
205
+ };
206
+ },
207
+ contexts: ["serviceChannelContext"]
208
+ }
209
+ ];
210
+
211
+ // src/snowplow/event-definitions/intervention.ts
212
+ var interventionEventDefinitions = [
213
+ {
214
+ name: "interventionInteractionCompleted",
215
+ type: "unstructured",
216
+ makePayload: (params) => {
217
+ const {
218
+ interventionName,
219
+ userUniqueIdentifier,
220
+ userUniqueIdentifierType,
221
+ action,
222
+ site
223
+ } = params;
224
+ return {
225
+ schema: "iglu:com.simplybusiness/intervention_interaction_completed/jsonschema/2-1-0",
226
+ data: {
227
+ intervention_name: interventionName,
228
+ user_unique_identifier: userUniqueIdentifier,
229
+ user_unique_identifier_type: userUniqueIdentifierType,
230
+ action,
231
+ site
232
+ }
233
+ };
234
+ }
235
+ },
236
+ {
237
+ name: "iaLiveChatInterventionClosed",
238
+ type: "structured",
239
+ makePayload: (_) => ({
240
+ category: "insurance_assistant",
241
+ action: "ia_live_chat_intervention_closed"
242
+ })
243
+ }
244
+ ];
245
+
246
+ // src/snowplow/constants.ts
247
+ var DELIMITER = "|";
248
+
249
+ // src/snowplow/event-definitions/questionnaire/redaction.ts
250
+ var PII_ANSWER = [
251
+ "customer_title",
252
+ "customer_first_name",
253
+ "customer_last_name",
254
+ "customer_email_address",
255
+ "preapp_email_address",
256
+ "customer_telephone_number",
257
+ "customer_alternative_telephone_number",
258
+ "uk_address_lookup",
259
+ "uk_correspondence_address_lookup",
260
+ "customer_address_1_pre_quote",
261
+ "customer_address_2_pre_quote",
262
+ "customer_town_pre_quote",
263
+ "customer_postcode_pre_quote",
264
+ "customer_address_1",
265
+ "customer_address_2",
266
+ "customer_town",
267
+ "customer_postcode",
268
+ "address_1_pre_quote",
269
+ "address_2_pre_quote",
270
+ "uk_postcode_pre_quote",
271
+ "town_pre_quote",
272
+ "owner_first_name",
273
+ "owner_last_name",
274
+ "beneficiary_first_name",
275
+ "beneficiary_last_name",
276
+ "gender",
277
+ "dynamic_ssn_fein",
278
+ "ssn",
279
+ "fein",
280
+ "sof_county_court_judgement_online_yes",
281
+ "sof_county_court_judgement_online_no",
282
+ "sof_ccj_count",
283
+ "sof_ccj_value",
284
+ "sof_ccj_date",
285
+ "sof_court_judgement_yes",
286
+ "sof_court_judgement_no",
287
+ "ccj_date",
288
+ "sof_single_ccj_no",
289
+ "sof_single_ccj_yes",
290
+ "sof_ccj_yes",
291
+ "sof_ccj_no",
292
+ "ccj_count",
293
+ "sof_bankrupt_yes",
294
+ "sof_bankrupt_no",
295
+ "sof_multiple_bankruptcies_yes",
296
+ "sof_multiple_bankruptcies_no",
297
+ "bankruptcy_date",
298
+ "sof_single_bankruptcy_no",
299
+ "sof_single_bankruptcy_yes",
300
+ "sof_bankruptcy_yes",
301
+ "sof_bankruptcy_no",
302
+ "bankruptcy_discharged",
303
+ "sof_liquidation_yes",
304
+ "sof_liquidation_no",
305
+ "sof_multiple_liquidations",
306
+ "liquidation_date",
307
+ "sof_criminal_offence_yes",
308
+ "sof_criminal_offence_no",
309
+ "sof_criminal_yes",
310
+ "sof_criminal_no",
311
+ "hcp_date_of_birth_1",
312
+ "hcp_date_of_birth_2",
313
+ "hcp_date_of_birth_3",
314
+ "hcp_date_of_birth_4",
315
+ "hcp_date_of_birth_5",
316
+ "hcp_date_of_birth_6",
317
+ "hcp_date_of_birth_7",
318
+ "hcp_date_of_birth_8",
319
+ "hcp_date_of_birth_9",
320
+ "hcp_date_of_birth_10",
321
+ "sof_previous_claims_yes",
322
+ "sof_previous_claims_no",
323
+ "sof_claims_yes",
324
+ "sof_claims_no",
325
+ "sof_property_claims_in_the_last_5_years_yes",
326
+ "sof_property_claims_in_the_last_5_years_no",
327
+ "sof_property_claims_in_the_last_0_to_4_years_yes",
328
+ "sof_property_claims_in_the_last_0_to_4_years_no",
329
+ "claim_count",
330
+ "sof_number_of_claims",
331
+ "number_of_claims_in_last_5_years",
332
+ "number_of_claims_in_time_owned",
333
+ "date_of_incident_1",
334
+ "date_of_incident_2",
335
+ "date_of_incident_3",
336
+ "date_of_incident_4",
337
+ "date_of_incident_5",
338
+ "type_of_incident_1",
339
+ "type_of_incident_2",
340
+ "type_of_incident_3",
341
+ "type_of_incident_4",
342
+ "type_of_incident_5",
343
+ "incident_value_1",
344
+ "incident_value_2",
345
+ "incident_value_3",
346
+ "incident_value_4",
347
+ "incident_value_5",
348
+ "sof_pollution_disease_claims_yes",
349
+ "sof_pollution_disease_claims_no",
350
+ "sof_potential_claims_yes",
351
+ "sof_potential_claims_no",
352
+ "sof_previous_circumstances_yes",
353
+ "sof_previous_circumstances_no",
354
+ "sof_possible_claims_yes",
355
+ "sof_possible_claims_no",
356
+ "date_of_possible_incident",
357
+ "type_of_possible_incident",
358
+ "possible_incident_value",
359
+ "sof_property_claims_yes",
360
+ "sof_property_claims_no",
361
+ "sof_liability_claims_yes",
362
+ "sof_liability_claims_no",
363
+ "van_registration",
364
+ "sof_disqualified_director_yes",
365
+ "sof_disqualified_director_no",
366
+ "sof_insurance_refused_yes",
367
+ "sof_insurance_refused_no",
368
+ "sof_insurance_declined_yes",
369
+ "sof_insurance_declined_no",
370
+ "insurance_refused"
371
+ ];
372
+ var RADIO_ANSWER_FROM_QUESTIONS = [
373
+ "have_secondary_trade_yes",
374
+ "have_secondary_trade_no"
375
+ ];
376
+ var ANSWER_SUFFIX_PATTERN = /_(yes|no)$/;
377
+ var redact = (params) => {
378
+ let { question, answer } = params;
379
+ const piiAnswer = new Set(PII_ANSWER);
380
+ const radioAnswerFromQuestions = new Set(RADIO_ANSWER_FROM_QUESTIONS);
381
+ if (piiAnswer.has(question)) {
382
+ answer = "REDACTED";
383
+ question = question?.replace(ANSWER_SUFFIX_PATTERN, "");
384
+ } else if (radioAnswerFromQuestions.has(question)) {
385
+ question = question?.replace(ANSWER_SUFFIX_PATTERN, "");
386
+ }
387
+ return { question, answer };
388
+ };
389
+
390
+ // src/snowplow/event-definitions/personalised_cover.ts
391
+ var personalisedCoverEventDefinitions = [
392
+ {
393
+ name: "seeMoreClicked",
394
+ type: "structured",
395
+ makePayload: (_) => ({
396
+ category: "personalised_cover",
397
+ action: "see_more_clicked",
398
+ label: "page",
399
+ property: "personalised_cover"
400
+ })
401
+ },
402
+ {
403
+ name: "selectPackageClicked",
404
+ type: "structured",
405
+ makePayload: (_) => ({
406
+ category: "personalised_cover",
407
+ action: "select_package_clicked",
408
+ label: "page",
409
+ property: "personalised_cover"
410
+ })
411
+ },
412
+ {
413
+ name: "validationShown",
414
+ type: "structured",
415
+ makePayload: (params) => {
416
+ const { cover, question } = params;
417
+ return {
418
+ category: "personalised_cover",
419
+ action: "validation_shown",
420
+ label: "cover_question",
421
+ property: `${snakeCase(cover)}_${snakeCase(question)}`
422
+ };
423
+ }
424
+ },
425
+ {
426
+ name: "coverQuestionAnswered",
427
+ type: "unstructured",
428
+ makePayload: (params) => {
429
+ const { context } = params;
430
+ const { question, answer } = redact(params);
431
+ const flatAnswer = Array.isArray(answer) ? answer.join(DELIMITER) : answer;
432
+ return {
433
+ schema: "iglu:com.simplybusiness/form_question_answered/jsonschema/1-0-4",
434
+ data: {
435
+ site: context.site,
436
+ page_name: "personalised_cover",
437
+ section_name: "Personalised Cover Questions",
438
+ question,
439
+ answer: flatAnswer,
440
+ vertical: context.vertical,
441
+ journey_id: context.journeyId
442
+ }
443
+ };
444
+ }
445
+ },
446
+ {
447
+ name: "limitLinkClicked",
448
+ type: "structured",
449
+ makePayload: (params) => {
450
+ const { label } = params;
451
+ return {
452
+ category: "personalised_cover",
453
+ action: "limit_link_clicked",
454
+ label,
455
+ property: "link_clicked"
456
+ };
457
+ }
458
+ },
459
+ {
460
+ name: "limitChanged",
461
+ type: "structured",
462
+ makePayload: (params) => {
463
+ const { label, limit } = params;
464
+ return {
465
+ category: "personalised_cover",
466
+ action: "limit_changed",
467
+ label,
468
+ property: limit
469
+ };
470
+ }
471
+ },
472
+ {
473
+ name: "coverPresented",
474
+ type: "structured",
475
+ makePayload: (params) => {
476
+ const { property } = params;
477
+ return {
478
+ category: "personalised_cover",
479
+ action: "cover_presented",
480
+ label: "cover_name",
481
+ property
482
+ };
483
+ }
484
+ },
485
+ {
486
+ name: "coverDetailsClicked",
487
+ type: "structured",
488
+ makePayload: (params) => {
489
+ const { property } = params;
490
+ return {
491
+ category: "personalised_cover",
492
+ action: "cover_details_clicked",
493
+ label: "cover_name",
494
+ property
495
+ };
496
+ }
497
+ },
498
+ {
499
+ name: "additionalQuestionsClicked",
500
+ type: "structured",
501
+ makePayload: (params) => {
502
+ const { property } = params;
503
+ return {
504
+ category: "personalised_cover",
505
+ action: "cover_details_clicked",
506
+ label: "cover_name",
507
+ property
508
+ };
509
+ }
510
+ },
511
+ {
512
+ name: "chatbotPromptClicked",
513
+ type: "structured",
514
+ makePayload: (params) => {
515
+ const { label, property } = params;
516
+ return {
517
+ category: "personalised_cover",
518
+ action: "chatbot_prompt_clicked",
519
+ label: property,
520
+ property: label
521
+ };
522
+ }
523
+ }
524
+ ];
525
+
526
+ // src/snowplow/event-definitions/qcp.ts
527
+ var qcpEventDefinitions = [
528
+ {
529
+ // QDP details button
530
+ name: "detailsClicked",
531
+ type: "structured",
532
+ makePayload: () => ({
533
+ category: "comparison_cta",
534
+ action: "link_click",
535
+ label: "Details"
536
+ })
537
+ },
538
+ {
539
+ // Buy button
540
+ name: "selectClicked",
541
+ type: "structured",
542
+ makePayload: () => ({
543
+ category: "comparison_cta",
544
+ action: "link_click",
545
+ label: "Buy"
546
+ })
547
+ },
548
+ {
549
+ // Quote Details Slider Next steps button
550
+ name: "nextStepsClicked",
551
+ type: "structured",
552
+ makePayload: () => ({
553
+ category: "quote_details_slider_next_step_cta",
554
+ action: "link_click",
555
+ label: "Next steps"
556
+ })
557
+ },
558
+ {
559
+ // Toggle deductibles accordion
560
+ name: "deductiblesClicked",
561
+ type: "structured",
562
+ makePayload: () => ({
563
+ category: "us-qcp-react",
564
+ action: "view_deductables_clicked",
565
+ label: "view_deductables_clicked",
566
+ property: window.location.href
567
+ })
568
+ },
569
+ {
570
+ name: "deductiblesClickedUk",
571
+ type: "structured",
572
+ makePayload: (params) => {
573
+ const { label, deviceType } = params;
574
+ const urlFriendlyLabel = label.replace(/ /g, "-").toLowerCase();
575
+ return {
576
+ category: `uk-qcp-react-${deviceType}-${urlFriendlyLabel}-view-excess-toggle`,
577
+ action: "view_excess_clicked",
578
+ label,
579
+ property: window.location.href
580
+ };
581
+ }
582
+ },
583
+ {
584
+ // Quote Details Slider opened
585
+ name: "sliderOpened",
586
+ type: "structured",
587
+ makePayload: (params) => {
588
+ const { label } = params;
589
+ return {
590
+ category: "comparison_cta",
591
+ action: "quote_details_slider_opened",
592
+ label
593
+ };
594
+ }
595
+ },
596
+ {
597
+ // Coverage modal opened
598
+ name: "coverageModalOpened",
599
+ type: "structured",
600
+ makePayload: (params) => {
601
+ const {
602
+ category,
603
+ product = "extra_coverage",
604
+ title
605
+ } = params;
606
+ const productLabel = snakeCase(product);
607
+ return {
608
+ category,
609
+ action: `${productLabel}_${snakeCase(title)}_popup_opened`,
610
+ label: productLabel,
611
+ property: window.location.href
612
+ };
613
+ }
614
+ },
615
+ {
616
+ // Toggle cover select
617
+ name: "coverChanged",
618
+ type: "unstructured",
619
+ makePayload: (params) => {
620
+ const { name = "", fromValue = "", toValue = "" } = params;
621
+ let action = "change";
622
+ if (fromValue === "0") {
623
+ action = "add";
624
+ }
625
+ if (toValue === "0") {
626
+ action = "remove";
627
+ }
628
+ return {
629
+ schema: "iglu:com.simplybusiness/comparison_page_cover_changed/jsonschema/1-0-0",
630
+ data: {
631
+ name,
632
+ action,
633
+ from_value: fromValue,
634
+ to_value: toValue
635
+ }
636
+ };
637
+ },
638
+ contexts: ["distributionChannelContext"]
639
+ },
640
+ {
641
+ name: "ratingsModalOpened",
642
+ type: "structured",
643
+ makePayload: (params) => {
644
+ const { category, label } = params;
645
+ return {
646
+ category,
647
+ action: "insurer_rating_help_popup_triggered",
648
+ label,
649
+ property: window.location.href
650
+ };
651
+ }
652
+ },
653
+ {
654
+ name: "coverToggleOpened",
655
+ type: "structured",
656
+ makePayload: () => ({
657
+ category: "qcp_limit_interaction",
658
+ label: "limit_interaction",
659
+ action: "limit_interaction_clicked",
660
+ property: window.location.href
661
+ })
662
+ },
663
+ {
664
+ name: "paymentToggleClicked",
665
+ type: "structured",
666
+ makePayload: (params) => {
667
+ const { category, label } = params;
668
+ return {
669
+ category,
670
+ action: "button_click",
671
+ label,
672
+ property: window.location.href
673
+ };
674
+ }
675
+ },
676
+ {
677
+ name: "insurerDetailsAccordionClicked",
678
+ type: "structured",
679
+ makePayload: () => ({
680
+ category: "quote_details_slider_insurer_details_description",
681
+ action: "accordion_clicked",
682
+ label: "accordion_clicked",
683
+ property: window.location.href
684
+ })
685
+ },
686
+ {
687
+ name: "priceDetailsPopUpOpened",
688
+ type: "structured",
689
+ makePayload: () => ({
690
+ category: "price_details",
691
+ action: "price_details_popup_opened",
692
+ label: "Price details",
693
+ property: window.location.href
694
+ })
695
+ },
696
+ {
697
+ name: "editLimitButtonClicked",
698
+ type: "structured",
699
+ makePayload: () => ({
700
+ category: "cover_limit_changes",
701
+ action: "edit_limit_button_clicked",
702
+ label: "Edit Limit",
703
+ property: window.location.href
704
+ })
705
+ },
706
+ {
707
+ name: "applyButtonClicked",
708
+ type: "structured",
709
+ makePayload: () => ({
710
+ category: "cover_limit_changes",
711
+ action: "apply_button_clicked",
712
+ label: "Apply Button Clicked",
713
+ property: window.location.href
714
+ })
715
+ },
716
+ {
717
+ name: "coverageInfoClicked",
718
+ type: "structured",
719
+ makePayload: (params) => {
720
+ const { deviceType, open = true } = params;
721
+ return {
722
+ action: "show_coverage_info_clicked",
723
+ category: `uk-qcp-react-${deviceType}-show-coverage-info-toggle`,
724
+ label: `${open ? "show" : "hide"}_coverage_info_clicked`,
725
+ property: window.location.href
726
+ };
727
+ }
728
+ },
729
+ {
730
+ name: "backToApplication",
731
+ type: "unstructured",
732
+ makePayload: (params) => {
733
+ const { journeyId, vertical } = params;
734
+ return {
735
+ schema: "iglu:com.simplybusiness/qcp_back_to_application/jsonschema/1-0-0",
736
+ data: {
737
+ journey_id: journeyId,
738
+ vertical
739
+ }
740
+ };
741
+ },
742
+ contexts: ["serviceChannelContext"]
743
+ },
744
+ // No quotes referral
745
+ {
746
+ name: "coverOptionsLinkClicked",
747
+ type: "structured",
748
+ makePayload: () => ({
749
+ category: "uk-qcp-react-cover-options-link",
750
+ action: "cover_options_link_clicked",
751
+ label: "cover_options_link_clicked",
752
+ property: window.location.href
753
+ })
754
+ },
755
+ {
756
+ name: "referralReasonsVariantBCoverOptionsLinkClicked",
757
+ type: "structured",
758
+ makePayload: () => ({
759
+ category: "uk-24-12-qcp-mvt-referral-reasons",
760
+ action: "cover_options_link_clicked_variant_b",
761
+ label: "cover_options_link_clicked_variant_b",
762
+ property: window.location.href
763
+ })
764
+ },
765
+ {
766
+ name: "referralReasonsVariantCCoverOptionsLinkClicked",
767
+ type: "structured",
768
+ makePayload: () => ({
769
+ category: "uk-24-12-qcp-mvt-referral-reasons",
770
+ action: "cover_options_link_clicked_variant_c",
771
+ label: "cover_options_link_clicked_variant_c",
772
+ property: window.location.href
773
+ })
774
+ },
775
+ {
776
+ name: "phoneNumberLinkClicked",
777
+ type: "structured",
778
+ makePayload: () => ({
779
+ category: "uk-qcp-react-phone-number-link",
780
+ action: "phone_number_link_clicked",
781
+ label: "phone_number_link_clicked",
782
+ property: window.location.href
783
+ })
784
+ },
785
+ {
786
+ name: "linkClicked",
787
+ type: "unstructured",
788
+ makePayload: (params) => {
789
+ const { targetUrl, elementContent } = params;
790
+ return {
791
+ schema: "iglu:com.snowplowanalytics.snowplow/link_click/jsonschema/1-0-1",
792
+ data: {
793
+ targetUrl,
794
+ elementContent
795
+ }
796
+ };
797
+ }
798
+ },
799
+ {
800
+ name: "qcpUpsellAccordionClicked",
801
+ type: "structured",
802
+ makePayload: (params) => ({
803
+ category: "us-qcp-upsells",
804
+ action: "accordion_clicked_qcp",
805
+ label: params?.label,
806
+ property: window.location.href
807
+ })
808
+ },
809
+ {
810
+ name: "qdsUpsellAccordionClicked",
811
+ type: "structured",
812
+ makePayload: (params) => ({
813
+ category: "us-qcp-upsells",
814
+ action: "accordion_clicked_slider",
815
+ label: params?.label,
816
+ property: window.location.href
817
+ })
818
+ },
819
+ {
820
+ name: "qcpUpsellTooltipHelperClicked",
821
+ type: "structured",
822
+ makePayload: (params) => ({
823
+ category: "us-qcp-upsells",
824
+ action: "tooltip_helper_clicked_qcp",
825
+ label: params?.label,
826
+ property: window.location.href
827
+ })
828
+ },
829
+ {
830
+ name: "qdsUpsellTooltipHelperClicked",
831
+ type: "structured",
832
+ makePayload: (params) => ({
833
+ category: "us-qcp-upsells",
834
+ action: "tooltip_helper_clicked_slider",
835
+ label: params?.label,
836
+ property: window.location.href
837
+ })
838
+ },
839
+ {
840
+ name: "qcpQuoteButtonClicked",
841
+ type: "structured",
842
+ makePayload: (payload) => ({
843
+ category: "quote-buttons",
844
+ action: "button-clicked",
845
+ label: payload?.label,
846
+ property: window.location.href
847
+ })
848
+ },
849
+ {
850
+ name: "layoutToggleClickedExperiment",
851
+ type: "structured",
852
+ makePayload: (params) => {
853
+ const { layout } = params;
854
+ return {
855
+ category: "uk-25-04-16-gridview_layout",
856
+ action: "layout_toggle_clicked",
857
+ label: layout,
858
+ property: window.location.href
859
+ };
860
+ }
861
+ },
862
+ {
863
+ name: "cancelAnytimeBadgeClicked",
864
+ type: "structured",
865
+ makePayload: (payload) => {
866
+ return {
867
+ category: "us-26-02-qcp-cancel-anytime-test",
868
+ action: "cancel_anytime_badge_clicked",
869
+ label: payload?.label || "cancel_anytime",
870
+ property: window.location.href
871
+ };
872
+ }
873
+ }
874
+ ];
875
+
876
+ // src/snowplow/event-definitions/questionnaire/questionnaire.ts
877
+ var questionnaireEventDefinitions = [
878
+ {
879
+ name: "questionAnswered",
880
+ type: "unstructured",
881
+ makePayload: (params) => {
882
+ const { section, context } = params;
883
+ const { question, answer } = redact(params);
884
+ const flatAnswer = Array.isArray(answer) ? answer.join(DELIMITER) : answer;
885
+ return {
886
+ schema: "iglu:com.simplybusiness/form_question_answered/jsonschema/1-0-4",
887
+ data: {
888
+ site: context.site,
889
+ page_index: 1,
890
+ page_name: "quick_to_quote",
891
+ submitted_from: "quick_to_quote_experiment",
892
+ section_name: section,
893
+ question,
894
+ answer: flatAnswer,
895
+ vertical: context.vertical,
896
+ journey_id: context.journeyId
897
+ }
898
+ };
899
+ }
900
+ },
901
+ {
902
+ name: "primaryDetailSelected",
903
+ type: "unstructured",
904
+ makePayload: (params) => {
905
+ const {
906
+ context,
907
+ answer,
908
+ vertical,
909
+ searchId,
910
+ selectedListPosition,
911
+ selectionMethod
912
+ } = params;
913
+ const { site } = context;
914
+ const isUSPage = site === "simplybusiness_us";
915
+ let verticalName = vertical || context.vertical;
916
+ if (verticalName.toLowerCase().indexOf("landlord") > -1) {
917
+ verticalName = answer === "residential" ? "Landlord" : "Commercial landlord";
918
+ }
919
+ const data = {
920
+ site,
921
+ vertical: verticalName,
922
+ primary_detail: answer,
923
+ selected_type: "trade_selector",
924
+ location: window?.location?.pathname ?? ""
925
+ };
926
+ if (searchId) {
927
+ data.search_id = searchId;
928
+ }
929
+ if (selectionMethod) {
930
+ data.selection_method = selectionMethod;
931
+ }
932
+ if (isUSPage) {
933
+ data.selected_list_position = selectedListPosition !== void 0 ? (selectedListPosition + 1).toString() : null;
934
+ data.selected_location = "trade_selector_vertical";
935
+ data.business_unit = site;
936
+ }
937
+ return {
938
+ schema: "iglu:com.simplybusiness/primary_detail_selected/jsonschema/1-4-0",
939
+ data
940
+ };
941
+ },
942
+ contexts: ["distributionChannelContext", "serviceChannelContext"]
943
+ },
944
+ {
945
+ name: "helpTextOpened",
946
+ type: "unstructured",
947
+ makePayload: (params) => {
948
+ const { primaryText, label, context, helpText } = params;
949
+ return {
950
+ schema: "iglu:com.simplybusiness/help_text_opened/jsonschema/1-1-0",
951
+ data: {
952
+ vertical: context.vertical,
953
+ site: context.site,
954
+ primary_text: primaryText,
955
+ help_text: helpText,
956
+ label,
957
+ page_name: "quick_to_quote"
958
+ }
959
+ };
960
+ }
961
+ },
962
+ {
963
+ name: "assumptionsButtonClicked",
964
+ type: "structured",
965
+ makePayload: (params) => {
966
+ const { source, presentationGroup } = params;
967
+ return {
968
+ action: source,
969
+ category: presentationGroup
970
+ };
971
+ }
972
+ },
973
+ {
974
+ name: "navButtonClicked",
975
+ type: "structured",
976
+ makePayload: (params) => {
977
+ const { label, category } = params;
978
+ return {
979
+ label,
980
+ action: "link_click",
981
+ category
982
+ };
983
+ }
984
+ },
985
+ {
986
+ name: "manualAddressClicked",
987
+ type: "structured",
988
+ makePayload: (params) => {
989
+ const { category } = params;
990
+ return {
991
+ action: "link_click",
992
+ category,
993
+ label: "Enter address manually"
994
+ };
995
+ }
996
+ },
997
+ {
998
+ name: "assumptionLinkClicked",
999
+ type: "structured",
1000
+ makePayload: (params) => {
1001
+ const { label, category, property } = params;
1002
+ return {
1003
+ action: "assumption_link_click",
1004
+ category,
1005
+ label,
1006
+ property
1007
+ };
1008
+ }
1009
+ },
1010
+ {
1011
+ name: "addressLookupFocused",
1012
+ type: "structured",
1013
+ makePayload: (params) => {
1014
+ const { label, category } = params;
1015
+ return {
1016
+ action: "address_lookup_focused",
1017
+ category,
1018
+ label
1019
+ };
1020
+ }
1021
+ },
1022
+ {
1023
+ name: "addressLookupTypedIn",
1024
+ type: "structured",
1025
+ makePayload: (params) => {
1026
+ const { label, category } = params;
1027
+ return {
1028
+ action: "address_lookup_typed_in",
1029
+ category,
1030
+ label
1031
+ };
1032
+ }
1033
+ },
1034
+ {
1035
+ name: "addressOptionsDisplayed",
1036
+ type: "structured",
1037
+ makePayload: (params) => {
1038
+ const { label, category } = params;
1039
+ return {
1040
+ action: "address_options_displayed",
1041
+ category,
1042
+ label
1043
+ };
1044
+ }
1045
+ },
1046
+ {
1047
+ name: "tradeChanged",
1048
+ type: "structured",
1049
+ makePayload: (params) => {
1050
+ const { label, property } = params;
1051
+ return {
1052
+ action: "change_your_selected_profession_button_clicked",
1053
+ category: "change_your_selected_profession_button",
1054
+ label: `Question: ${label}`,
1055
+ property
1056
+ // Answer before change
1057
+ };
1058
+ }
1059
+ },
1060
+ {
1061
+ name: "questionValidationFailed",
1062
+ type: "structured",
1063
+ makePayload: (params) => {
1064
+ const { question, errorMessage } = params;
1065
+ return {
1066
+ category: "questionnaire",
1067
+ action: `${question} validation failed`,
1068
+ label: errorMessage
1069
+ };
1070
+ }
1071
+ },
1072
+ {
1073
+ name: "stateQuestionAnswered",
1074
+ type: "unstructured",
1075
+ makePayload: (params) => {
1076
+ const { context, answer, selectedCoverages } = params;
1077
+ const data = {
1078
+ vertical: context.vertical,
1079
+ selected_type: context.journeyName ?? "usa",
1080
+ location: window?.location?.pathname ?? "",
1081
+ url: window?.location?.href ?? "",
1082
+ state: answer,
1083
+ selection_method: "dropdown"
1084
+ };
1085
+ if (selectedCoverages?.length) {
1086
+ data.products = selectedCoverages.join(",");
1087
+ }
1088
+ return {
1089
+ schema: "iglu:com.simplybusiness/state_question_answered/jsonschema/1-0-0",
1090
+ data
1091
+ };
1092
+ }
1093
+ }
1094
+ ];
1095
+
1096
+ // src/snowplow/event-definitions/coverage-selection.ts
1097
+ var coverageSelectionEventDefinitions = [
1098
+ {
1099
+ name: "checkboxFormQuestionAnswered",
1100
+ type: "unstructured",
1101
+ makePayload: (params) => {
1102
+ const { context, pageIndex, pageName, sectionName, question, answer } = params;
1103
+ return {
1104
+ schema: "iglu:com.simplybusiness/checkbox_form_question_answered/jsonschema/1-0-1",
1105
+ data: {
1106
+ site: context.site,
1107
+ vertical: context.vertical ?? "",
1108
+ journey_id: context.journeyId,
1109
+ page_index: pageIndex,
1110
+ page_name: pageName,
1111
+ section_name: sectionName,
1112
+ question,
1113
+ answer
1114
+ }
1115
+ };
1116
+ }
1117
+ },
1118
+ {
1119
+ name: "learnMoreModalOpened",
1120
+ type: "structured",
1121
+ makePayload: (params) => {
1122
+ const { product } = params;
1123
+ return {
1124
+ category: "coverage_selection",
1125
+ action: "learn_more_modal_opened",
1126
+ label: product,
1127
+ property: window.location.href
1128
+ };
1129
+ }
1130
+ }
1131
+ ];
1132
+
1133
+ // src/snowplow/event-definitions/referral.ts
1134
+ var referralEventDefinitions = [
1135
+ {
1136
+ name: "nextCoverageClicked",
1137
+ type: "structured",
1138
+ makePayload: (params) => {
1139
+ const { url } = params;
1140
+ const eventName = "post_referral_workers_compensation_continuation_link";
1141
+ return {
1142
+ category: eventName,
1143
+ action: "link_click",
1144
+ label: eventName,
1145
+ property: url
1146
+ };
1147
+ }
1148
+ }
1149
+ ];
1150
+
1151
+ // src/snowplow/event-definitions/index.ts
1152
+ var eventDefinitions = [
1153
+ ...baseEventDefinitions,
1154
+ ...qcpEventDefinitions,
1155
+ ...referralEventDefinitions,
1156
+ ...interventionEventDefinitions,
1157
+ ...questionnaireEventDefinitions,
1158
+ ...personalisedCoverEventDefinitions,
1159
+ ...coverageSelectionEventDefinitions
1160
+ ];
1161
+ var qcpPageEvents = [...baseEventDefinitions, ...qcpEventDefinitions];
1162
+ var referralPageEvents = [
1163
+ ...baseEventDefinitions,
1164
+ ...referralEventDefinitions
1165
+ ];
1166
+ var personalisedCoverPageEvents = [
1167
+ ...baseEventDefinitions,
1168
+ ...personalisedCoverEventDefinitions
1169
+ ];
1170
+ var interventionPageEvents = [...interventionEventDefinitions];
1171
+ var questionnairePageEvents = [...questionnaireEventDefinitions];
1172
+ var coverageSelectionPageEvents = [
1173
+ ...baseEventDefinitions,
1174
+ ...coverageSelectionEventDefinitions
1175
+ ];
1176
+
1177
+ // src/snowplow/Snowplow.ts
1178
+ var import_browser_tracker = require("@snowplow/browser-tracker");
1179
+ var import_browser_plugin_ga_cookies = require("@snowplow/browser-plugin-ga-cookies");
1180
+ var Snowplow = class _Snowplow {
1181
+ constructor(props) {
1182
+ this.avalancheTrackerName = "sb-ava";
1183
+ this.bronzeAvalancheTrackerName = "sb-ava-br";
1184
+ this.pvAvalancheTrackerName = "sb-ava-pv";
1185
+ this.uid = "";
1186
+ this.trackPageView = false;
1187
+ this.contexts = {};
1188
+ this.pvContext = [];
1189
+ this.structContext = [];
1190
+ this.serverData = {};
1191
+ this.eventHandlers = {};
1192
+ if (!props) return;
1193
+ const {
1194
+ appId,
1195
+ cookieDomain,
1196
+ avalancheCollector,
1197
+ eventMethod,
1198
+ uid,
1199
+ postPath,
1200
+ trackPageView: tpv
1201
+ } = props;
1202
+ this.uid = uid;
1203
+ this.trackPageView = tpv;
1204
+ this.serverData = props?.pageViewContext?.data || {};
1205
+ const stateStorageStrategy = "cookieAndLocalStorage";
1206
+ const baseOptions = {
1207
+ appId,
1208
+ cookieDomain,
1209
+ eventMethod,
1210
+ stateStorageStrategy,
1211
+ postPath
1212
+ };
1213
+ (0, import_browser_tracker.newTracker)(this.avalancheTrackerName, avalancheCollector, baseOptions);
1214
+ (0, import_browser_tracker.newTracker)(
1215
+ this.bronzeAvalancheTrackerName,
1216
+ avalancheCollector,
1217
+ baseOptions
1218
+ );
1219
+ (0, import_browser_tracker.newTracker)(this.pvAvalancheTrackerName, avalancheCollector, {
1220
+ ...baseOptions,
1221
+ eventMethod: eventMethod === "post" ? "beacon" : eventMethod,
1222
+ plugins: [(0, import_browser_plugin_ga_cookies.GaCookiesPlugin)()]
1223
+ });
1224
+ (0, import_browser_tracker.setCookiePath)("/");
1225
+ if (uid) {
1226
+ (0, import_browser_tracker.setUserId)(uid);
1227
+ }
1228
+ _Snowplow.instance = this;
1229
+ }
1230
+ setContexts(contexts) {
1231
+ this.contexts = updateIdentityContext(contexts, this.uid);
1232
+ this.pvContext = makeContexts(
1233
+ [
1234
+ "pageViewContext",
1235
+ "distributionChannelContext",
1236
+ "serviceChannelContext"
1237
+ ],
1238
+ this.contexts
1239
+ );
1240
+ this.structContext = makeContexts(
1241
+ ["distributionChannelContext", "serviceChannelContext"],
1242
+ this.contexts
1243
+ );
1244
+ return this;
1245
+ }
1246
+ // Send a page view event
1247
+ trackView(event) {
1248
+ if (this.trackPageView) {
1249
+ (0, import_browser_tracker.trackPageView)({ ...event, context: this.pvContext }, [
1250
+ this.pvAvalancheTrackerName
1251
+ ]);
1252
+ }
1253
+ return this;
1254
+ }
1255
+ // Send a structured event with contexts
1256
+ trackEvent(event) {
1257
+ (0, import_browser_tracker.trackStructEvent)({ ...event, context: this.structContext }, [
1258
+ this.bronzeAvalancheTrackerName
1259
+ ]);
1260
+ return this;
1261
+ }
1262
+ // Send a custom event with defined schema and optional contexts
1263
+ trackUnstructEvent(event, contexts) {
1264
+ if (!event) {
1265
+ return this;
1266
+ }
1267
+ if (contexts && Array.isArray(contexts) && contexts.length > 0) {
1268
+ const context = makeContexts(contexts, this.contexts);
1269
+ (0, import_browser_tracker.trackSelfDescribingEvent)({ event, context }, [this.avalancheTrackerName]);
1270
+ } else {
1271
+ (0, import_browser_tracker.trackSelfDescribingEvent)({ event }, [this.avalancheTrackerName]);
1272
+ }
1273
+ return this;
1274
+ }
1275
+ addEventHandlers(eventDefinitions2) {
1276
+ const context = this.serverData;
1277
+ eventDefinitions2.forEach(({ name, type, makePayload, contexts }) => {
1278
+ if (type === "structured") {
1279
+ this.addEventHandler(name, (params) => {
1280
+ void this.trackEvent(
1281
+ makePayload({
1282
+ ...params,
1283
+ context
1284
+ })
1285
+ );
1286
+ });
1287
+ } else {
1288
+ this.addEventHandler(name, (params) => {
1289
+ const payload = makePayload({
1290
+ ...params,
1291
+ context
1292
+ });
1293
+ if (contexts && Array.isArray(contexts) && contexts.length > 0) {
1294
+ void this.trackUnstructEvent(payload, contexts);
1295
+ } else {
1296
+ void this.trackUnstructEvent(payload);
1297
+ }
1298
+ });
1299
+ }
1300
+ });
1301
+ return this;
1302
+ }
1303
+ addEventHandler(name, handler) {
1304
+ this.eventHandlers[name] = handler;
1305
+ return this;
1306
+ }
1307
+ removeEventHandler(name) {
1308
+ delete this.eventHandlers[name];
1309
+ return this;
1310
+ }
1311
+ trigger(name, params) {
1312
+ const handler = this.eventHandlers[name];
1313
+ if (Object.prototype.hasOwnProperty.call(this.eventHandlers, name) && typeof handler === "function") {
1314
+ handler(params);
1315
+ }
1316
+ return this;
1317
+ }
1318
+ static getInstance(props) {
1319
+ if (!_Snowplow.instance) {
1320
+ _Snowplow.instance = new _Snowplow(props);
1321
+ }
1322
+ return _Snowplow.instance;
1323
+ }
1324
+ };
1325
+
1326
+ // src/snowplow/SnowplowContext.tsx
1327
+ var import_jsx_runtime = require("react/jsx-runtime");
1328
+ var SnowplowContext = (0, import_react.createContext)(null);
1329
+ var SnowplowProvider = ({ scripts, children }) => {
1330
+ const [config, _setConfig] = (0, import_react.useState)(scripts);
1331
+ const [snowplowInstance] = (0, import_react.useState)(
1332
+ () => Snowplow.getInstance(config)
1333
+ );
1334
+ (0, import_react.useEffect)(() => {
1335
+ if (snowplowInstance && scripts) {
1336
+ const contexts = getContexts(config);
1337
+ snowplowInstance.setContexts(contexts).addEventHandlers(eventDefinitions);
1338
+ if (config.trackPageView) {
1339
+ void snowplowInstance.trackView();
1340
+ }
1341
+ }
1342
+ }, [config, snowplowInstance, scripts]);
1343
+ const value = (0, import_react.useMemo)(
1344
+ () => ({
1345
+ config,
1346
+ snowplow: snowplowInstance
1347
+ }),
1348
+ [config, snowplowInstance]
1349
+ );
1350
+ return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(SnowplowContext.Provider, { value, children });
1351
+ };
1352
+
1353
+ // src/snowplow/getSnowplowConfig.ts
1354
+ var getSnowplowConfig = (pageData2) => pageData2.scripts?.find(({ metadata }) => metadata.name === "snowplow")?.props;
1355
+
1356
+ // src/utils/testUtils.tsx
1357
+ var import_jsx_runtime2 = require("react/jsx-runtime");
1358
+ var snowplowProps = getSnowplowConfig(pageData);
1359
+ var ProvidersMock = ({ children }) => /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(SnowplowProvider, { scripts: snowplowProps, children });
1360
+ var renderWithProviders = (ui, options) => (0, import_react2.render)(ui, { wrapper: ProvidersMock, ...options });
1361
+ var mockLocation = ({
1362
+ origin = "https://simplybusiness.co.uk",
1363
+ pathname = ""
1364
+ }) => Object.defineProperty(window, "location", {
1365
+ get() {
1366
+ return {
1367
+ origin,
1368
+ pathname
1369
+ };
1370
+ }
1371
+ });
1372
+ //# sourceMappingURL=testUtils.js.map