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