@simplybusiness/services 2.3.0 → 2.3.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +15 -0
- package/dist/cjs/address-lookup/index.js +94 -0
- package/dist/cjs/address-lookup/index.js.map +7 -0
- package/dist/cjs/address-lookup/types.js +19 -0
- package/dist/cjs/address-lookup/types.js.map +7 -0
- package/dist/cjs/airbrake/index.js +64 -0
- package/dist/cjs/airbrake/index.js.map +7 -0
- package/dist/cjs/index.js +3 -3
- package/dist/cjs/meta.json +801 -2
- package/dist/cjs/mocks/eventDefinitions.js +246 -0
- package/dist/cjs/mocks/eventDefinitions.js.map +7 -0
- package/dist/cjs/mocks/scripts-mock.js +67 -0
- package/dist/cjs/mocks/scripts-mock.js.map +7 -0
- package/dist/cjs/snowplow/Snowplow.js +197 -0
- package/dist/cjs/snowplow/Snowplow.js.map +7 -0
- package/dist/cjs/snowplow/SnowplowContext.js +1315 -0
- package/dist/cjs/snowplow/SnowplowContext.js.map +7 -0
- package/dist/cjs/snowplow/constants.js +27 -0
- package/dist/cjs/snowplow/constants.js.map +7 -0
- package/dist/cjs/snowplow/contexts.js +95 -0
- package/dist/cjs/snowplow/contexts.js.map +7 -0
- package/dist/cjs/snowplow/event-definitions/base.js +92 -0
- package/dist/cjs/snowplow/event-definitions/base.js.map +7 -0
- package/dist/cjs/snowplow/event-definitions/coverage-selection.js +61 -0
- package/dist/cjs/snowplow/event-definitions/coverage-selection.js.map +7 -0
- package/dist/cjs/snowplow/event-definitions/index.js +1069 -0
- package/dist/cjs/snowplow/event-definitions/index.js.map +7 -0
- package/dist/cjs/snowplow/event-definitions/intervention.js +59 -0
- package/dist/cjs/snowplow/event-definitions/intervention.js.map +7 -0
- package/dist/cjs/snowplow/event-definitions/personalised_cover.js +309 -0
- package/dist/cjs/snowplow/event-definitions/personalised_cover.js.map +7 -0
- package/dist/cjs/snowplow/event-definitions/qcp.js +379 -0
- package/dist/cjs/snowplow/event-definitions/qcp.js.map +7 -0
- package/dist/cjs/snowplow/event-definitions/questionnaire/questionnaire.js +390 -0
- package/dist/cjs/snowplow/event-definitions/questionnaire/questionnaire.js.map +7 -0
- package/dist/cjs/snowplow/event-definitions/questionnaire/redaction.js +165 -0
- package/dist/cjs/snowplow/event-definitions/questionnaire/redaction.js.map +7 -0
- package/dist/cjs/snowplow/event-definitions/referral.js +42 -0
- package/dist/cjs/snowplow/event-definitions/referral.js.map +7 -0
- package/dist/cjs/snowplow/event-definitions/test-utils.js +33 -0
- package/dist/cjs/snowplow/event-definitions/test-utils.js.map +7 -0
- package/dist/cjs/snowplow/getSnowplowConfig.js +27 -0
- package/dist/cjs/snowplow/getSnowplowConfig.js.map +7 -0
- package/dist/cjs/snowplow/index.js +1330 -0
- package/dist/cjs/snowplow/index.js.map +7 -0
- package/dist/cjs/snowplow/types.js +19 -0
- package/dist/cjs/snowplow/types.js.map +7 -0
- package/dist/cjs/utils/index.js +63 -0
- package/dist/cjs/utils/index.js.map +7 -0
- package/dist/cjs/utils/isObject.js +29 -0
- package/dist/cjs/utils/isObject.js.map +7 -0
- package/dist/cjs/utils/testUtils.js +1372 -0
- package/dist/cjs/utils/testUtils.js.map +7 -0
- package/dist/cjs/utils/text.js +62 -0
- package/dist/cjs/utils/text.js.map +7 -0
- package/dist/esm/address-lookup/index.js +7 -0
- package/dist/esm/address-lookup/index.js.map +7 -0
- package/dist/esm/address-lookup/types.js +1 -0
- package/dist/esm/address-lookup/types.js.map +7 -0
- package/dist/esm/airbrake/index.js +9 -0
- package/dist/esm/airbrake/index.js.map +7 -0
- package/dist/esm/chunk-3SO3SL37.js +150 -0
- package/dist/esm/chunk-3SO3SL37.js.map +7 -0
- package/dist/esm/chunk-75UX5UWV.js +47 -0
- package/dist/esm/chunk-75UX5UWV.js.map +7 -0
- package/dist/esm/chunk-BJUWIK7N.js +1 -0
- package/dist/esm/chunk-BJUWIK7N.js.map +7 -0
- package/dist/esm/chunk-BYVY7UWR.js +1 -0
- package/dist/esm/chunk-BYVY7UWR.js.map +7 -0
- package/dist/esm/chunk-EDKZP2NB.js +165 -0
- package/dist/esm/chunk-EDKZP2NB.js.map +7 -0
- package/dist/esm/chunk-JILHOFBG.js +7 -0
- package/dist/esm/chunk-JILHOFBG.js.map +7 -0
- package/dist/esm/chunk-LE4F73Z2.js +9 -0
- package/dist/esm/chunk-LE4F73Z2.js.map +7 -0
- package/dist/esm/chunk-LE7RCOBX.js +41 -0
- package/dist/esm/chunk-LE7RCOBX.js.map +7 -0
- package/dist/esm/chunk-MUFIJUOD.js +22 -0
- package/dist/esm/chunk-MUFIJUOD.js.map +7 -0
- package/dist/esm/chunk-NDWXMYSZ.js +7 -0
- package/dist/esm/chunk-NDWXMYSZ.js.map +7 -0
- package/dist/esm/chunk-OFQYDVHG.js +58 -0
- package/dist/esm/chunk-OFQYDVHG.js.map +7 -0
- package/dist/esm/chunk-OQ4YGZGX.js +231 -0
- package/dist/esm/chunk-OQ4YGZGX.js.map +7 -0
- package/dist/esm/chunk-PI33NKP7.js +58 -0
- package/dist/esm/chunk-PI33NKP7.js.map +7 -0
- package/dist/esm/chunk-QKBNCG2F.js +145 -0
- package/dist/esm/chunk-QKBNCG2F.js.map +7 -0
- package/dist/esm/chunk-RLSHHBYY.js +39 -0
- package/dist/esm/chunk-RLSHHBYY.js.map +7 -0
- package/dist/esm/chunk-RUOVZDWE.js +39 -0
- package/dist/esm/chunk-RUOVZDWE.js.map +7 -0
- package/dist/esm/chunk-TN5IBPWO.js +44 -0
- package/dist/esm/chunk-TN5IBPWO.js.map +7 -0
- package/dist/esm/chunk-WGHBTJNE.js +74 -0
- package/dist/esm/chunk-WGHBTJNE.js.map +7 -0
- package/dist/esm/chunk-XNSKPER5.js +44 -0
- package/dist/esm/chunk-XNSKPER5.js.map +7 -0
- package/dist/esm/chunk-XRH22EFX.js +72 -0
- package/dist/esm/chunk-XRH22EFX.js.map +7 -0
- package/dist/esm/chunk-ZEYOXRFM.js +358 -0
- package/dist/esm/chunk-ZEYOXRFM.js.map +7 -0
- package/dist/esm/index.js +42 -1410
- package/dist/esm/index.js.map +4 -4
- package/dist/esm/meta.json +1481 -71
- package/dist/esm/mocks/eventDefinitions.js +86 -0
- package/dist/esm/mocks/eventDefinitions.js.map +7 -0
- package/dist/esm/mocks/scripts-mock.js +7 -0
- package/dist/esm/mocks/scripts-mock.js.map +7 -0
- package/dist/esm/snowplow/Snowplow.js +10 -0
- package/dist/esm/snowplow/Snowplow.js.map +7 -0
- package/dist/esm/snowplow/SnowplowContext.js +23 -0
- package/dist/esm/snowplow/SnowplowContext.js.map +7 -0
- package/dist/esm/snowplow/constants.js +7 -0
- package/dist/esm/snowplow/constants.js.map +7 -0
- package/dist/esm/snowplow/contexts.js +13 -0
- package/dist/esm/snowplow/contexts.js.map +7 -0
- package/dist/esm/snowplow/event-definitions/base.js +7 -0
- package/dist/esm/snowplow/event-definitions/base.js.map +7 -0
- package/dist/esm/snowplow/event-definitions/coverage-selection.js +7 -0
- package/dist/esm/snowplow/event-definitions/coverage-selection.js.map +7 -0
- package/dist/esm/snowplow/event-definitions/index.js +30 -0
- package/dist/esm/snowplow/event-definitions/index.js.map +7 -0
- package/dist/esm/snowplow/event-definitions/intervention.js +7 -0
- package/dist/esm/snowplow/event-definitions/intervention.js.map +7 -0
- package/dist/esm/snowplow/event-definitions/personalised_cover.js +11 -0
- package/dist/esm/snowplow/event-definitions/personalised_cover.js.map +7 -0
- package/dist/esm/snowplow/event-definitions/qcp.js +9 -0
- package/dist/esm/snowplow/event-definitions/qcp.js.map +7 -0
- package/dist/esm/snowplow/event-definitions/questionnaire/questionnaire.js +9 -0
- package/dist/esm/snowplow/event-definitions/questionnaire/questionnaire.js.map +7 -0
- package/dist/esm/snowplow/event-definitions/questionnaire/redaction.js +7 -0
- package/dist/esm/snowplow/event-definitions/questionnaire/redaction.js.map +7 -0
- package/dist/esm/snowplow/event-definitions/referral.js +7 -0
- package/dist/esm/snowplow/event-definitions/referral.js.map +7 -0
- package/dist/esm/snowplow/event-definitions/test-utils.js +12 -0
- package/dist/esm/snowplow/event-definitions/test-utils.js.map +7 -0
- package/dist/esm/snowplow/getSnowplowConfig.js +7 -0
- package/dist/esm/snowplow/getSnowplowConfig.js.map +7 -0
- package/dist/esm/snowplow/index.js +54 -0
- package/dist/esm/snowplow/index.js.map +7 -0
- package/dist/esm/snowplow/types.js +2 -0
- package/dist/esm/snowplow/types.js.map +7 -0
- package/dist/esm/utils/index.js +15 -0
- package/dist/esm/utils/index.js.map +7 -0
- package/dist/esm/utils/isObject.js +7 -0
- package/dist/esm/utils/isObject.js.map +7 -0
- package/dist/esm/utils/testUtils.js +46 -0
- package/dist/esm/utils/testUtils.js.map +7 -0
- package/dist/esm/utils/text.js +12 -0
- package/dist/esm/utils/text.js.map +7 -0
- package/package.json +2 -2
|
@@ -0,0 +1,246 @@
|
|
|
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/mocks/eventDefinitions.ts
|
|
21
|
+
var eventDefinitions_exports = {};
|
|
22
|
+
__export(eventDefinitions_exports, {
|
|
23
|
+
default: () => eventDefinitions_default
|
|
24
|
+
});
|
|
25
|
+
module.exports = __toCommonJS(eventDefinitions_exports);
|
|
26
|
+
|
|
27
|
+
// src/snowplow/event-definitions/questionnaire/redaction.ts
|
|
28
|
+
var PII_ANSWER = [
|
|
29
|
+
"customer_title",
|
|
30
|
+
"customer_first_name",
|
|
31
|
+
"customer_last_name",
|
|
32
|
+
"customer_email_address",
|
|
33
|
+
"preapp_email_address",
|
|
34
|
+
"customer_telephone_number",
|
|
35
|
+
"customer_alternative_telephone_number",
|
|
36
|
+
"uk_address_lookup",
|
|
37
|
+
"uk_correspondence_address_lookup",
|
|
38
|
+
"customer_address_1_pre_quote",
|
|
39
|
+
"customer_address_2_pre_quote",
|
|
40
|
+
"customer_town_pre_quote",
|
|
41
|
+
"customer_postcode_pre_quote",
|
|
42
|
+
"customer_address_1",
|
|
43
|
+
"customer_address_2",
|
|
44
|
+
"customer_town",
|
|
45
|
+
"customer_postcode",
|
|
46
|
+
"address_1_pre_quote",
|
|
47
|
+
"address_2_pre_quote",
|
|
48
|
+
"uk_postcode_pre_quote",
|
|
49
|
+
"town_pre_quote",
|
|
50
|
+
"owner_first_name",
|
|
51
|
+
"owner_last_name",
|
|
52
|
+
"beneficiary_first_name",
|
|
53
|
+
"beneficiary_last_name",
|
|
54
|
+
"gender",
|
|
55
|
+
"dynamic_ssn_fein",
|
|
56
|
+
"ssn",
|
|
57
|
+
"fein",
|
|
58
|
+
"sof_county_court_judgement_online_yes",
|
|
59
|
+
"sof_county_court_judgement_online_no",
|
|
60
|
+
"sof_ccj_count",
|
|
61
|
+
"sof_ccj_value",
|
|
62
|
+
"sof_ccj_date",
|
|
63
|
+
"sof_court_judgement_yes",
|
|
64
|
+
"sof_court_judgement_no",
|
|
65
|
+
"ccj_date",
|
|
66
|
+
"sof_single_ccj_no",
|
|
67
|
+
"sof_single_ccj_yes",
|
|
68
|
+
"sof_ccj_yes",
|
|
69
|
+
"sof_ccj_no",
|
|
70
|
+
"ccj_count",
|
|
71
|
+
"sof_bankrupt_yes",
|
|
72
|
+
"sof_bankrupt_no",
|
|
73
|
+
"sof_multiple_bankruptcies_yes",
|
|
74
|
+
"sof_multiple_bankruptcies_no",
|
|
75
|
+
"bankruptcy_date",
|
|
76
|
+
"sof_single_bankruptcy_no",
|
|
77
|
+
"sof_single_bankruptcy_yes",
|
|
78
|
+
"sof_bankruptcy_yes",
|
|
79
|
+
"sof_bankruptcy_no",
|
|
80
|
+
"bankruptcy_discharged",
|
|
81
|
+
"sof_liquidation_yes",
|
|
82
|
+
"sof_liquidation_no",
|
|
83
|
+
"sof_multiple_liquidations",
|
|
84
|
+
"liquidation_date",
|
|
85
|
+
"sof_criminal_offence_yes",
|
|
86
|
+
"sof_criminal_offence_no",
|
|
87
|
+
"sof_criminal_yes",
|
|
88
|
+
"sof_criminal_no",
|
|
89
|
+
"hcp_date_of_birth_1",
|
|
90
|
+
"hcp_date_of_birth_2",
|
|
91
|
+
"hcp_date_of_birth_3",
|
|
92
|
+
"hcp_date_of_birth_4",
|
|
93
|
+
"hcp_date_of_birth_5",
|
|
94
|
+
"hcp_date_of_birth_6",
|
|
95
|
+
"hcp_date_of_birth_7",
|
|
96
|
+
"hcp_date_of_birth_8",
|
|
97
|
+
"hcp_date_of_birth_9",
|
|
98
|
+
"hcp_date_of_birth_10",
|
|
99
|
+
"sof_previous_claims_yes",
|
|
100
|
+
"sof_previous_claims_no",
|
|
101
|
+
"sof_claims_yes",
|
|
102
|
+
"sof_claims_no",
|
|
103
|
+
"sof_property_claims_in_the_last_5_years_yes",
|
|
104
|
+
"sof_property_claims_in_the_last_5_years_no",
|
|
105
|
+
"sof_property_claims_in_the_last_0_to_4_years_yes",
|
|
106
|
+
"sof_property_claims_in_the_last_0_to_4_years_no",
|
|
107
|
+
"claim_count",
|
|
108
|
+
"sof_number_of_claims",
|
|
109
|
+
"number_of_claims_in_last_5_years",
|
|
110
|
+
"number_of_claims_in_time_owned",
|
|
111
|
+
"date_of_incident_1",
|
|
112
|
+
"date_of_incident_2",
|
|
113
|
+
"date_of_incident_3",
|
|
114
|
+
"date_of_incident_4",
|
|
115
|
+
"date_of_incident_5",
|
|
116
|
+
"type_of_incident_1",
|
|
117
|
+
"type_of_incident_2",
|
|
118
|
+
"type_of_incident_3",
|
|
119
|
+
"type_of_incident_4",
|
|
120
|
+
"type_of_incident_5",
|
|
121
|
+
"incident_value_1",
|
|
122
|
+
"incident_value_2",
|
|
123
|
+
"incident_value_3",
|
|
124
|
+
"incident_value_4",
|
|
125
|
+
"incident_value_5",
|
|
126
|
+
"sof_pollution_disease_claims_yes",
|
|
127
|
+
"sof_pollution_disease_claims_no",
|
|
128
|
+
"sof_potential_claims_yes",
|
|
129
|
+
"sof_potential_claims_no",
|
|
130
|
+
"sof_previous_circumstances_yes",
|
|
131
|
+
"sof_previous_circumstances_no",
|
|
132
|
+
"sof_possible_claims_yes",
|
|
133
|
+
"sof_possible_claims_no",
|
|
134
|
+
"date_of_possible_incident",
|
|
135
|
+
"type_of_possible_incident",
|
|
136
|
+
"possible_incident_value",
|
|
137
|
+
"sof_property_claims_yes",
|
|
138
|
+
"sof_property_claims_no",
|
|
139
|
+
"sof_liability_claims_yes",
|
|
140
|
+
"sof_liability_claims_no",
|
|
141
|
+
"van_registration",
|
|
142
|
+
"sof_disqualified_director_yes",
|
|
143
|
+
"sof_disqualified_director_no",
|
|
144
|
+
"sof_insurance_refused_yes",
|
|
145
|
+
"sof_insurance_refused_no",
|
|
146
|
+
"sof_insurance_declined_yes",
|
|
147
|
+
"sof_insurance_declined_no",
|
|
148
|
+
"insurance_refused"
|
|
149
|
+
];
|
|
150
|
+
var RADIO_ANSWER_FROM_QUESTIONS = [
|
|
151
|
+
"have_secondary_trade_yes",
|
|
152
|
+
"have_secondary_trade_no"
|
|
153
|
+
];
|
|
154
|
+
var ANSWER_SUFFIX_PATTERN = /_(yes|no)$/;
|
|
155
|
+
var redact = (params) => {
|
|
156
|
+
let { question, answer } = params;
|
|
157
|
+
const piiAnswer = new Set(PII_ANSWER);
|
|
158
|
+
const radioAnswerFromQuestions = new Set(RADIO_ANSWER_FROM_QUESTIONS);
|
|
159
|
+
if (piiAnswer.has(question)) {
|
|
160
|
+
answer = "REDACTED";
|
|
161
|
+
question = question?.replace(ANSWER_SUFFIX_PATTERN, "");
|
|
162
|
+
} else if (radioAnswerFromQuestions.has(question)) {
|
|
163
|
+
question = question?.replace(ANSWER_SUFFIX_PATTERN, "");
|
|
164
|
+
}
|
|
165
|
+
return { question, answer };
|
|
166
|
+
};
|
|
167
|
+
|
|
168
|
+
// src/mocks/eventDefinitions.ts
|
|
169
|
+
var eventDefinitions_default = [
|
|
170
|
+
{
|
|
171
|
+
name: "navButtonClicked",
|
|
172
|
+
type: "structured",
|
|
173
|
+
makePayload: (params) => {
|
|
174
|
+
const { label } = params;
|
|
175
|
+
return {
|
|
176
|
+
category: "navigation",
|
|
177
|
+
action: "thankyou_navigation_button_click",
|
|
178
|
+
label,
|
|
179
|
+
property: "test-property"
|
|
180
|
+
};
|
|
181
|
+
}
|
|
182
|
+
},
|
|
183
|
+
{
|
|
184
|
+
name: "questionAnswered",
|
|
185
|
+
type: "unstructured",
|
|
186
|
+
makePayload: (params) => {
|
|
187
|
+
const { section, context } = params;
|
|
188
|
+
const { question, answer } = redact(params);
|
|
189
|
+
return {
|
|
190
|
+
schema: "iglu:com.simplybusiness/form_question_answered/jsonschema/1-0-4",
|
|
191
|
+
data: {
|
|
192
|
+
site: context.site,
|
|
193
|
+
page_index: 1,
|
|
194
|
+
page_name: "quick_to_quote",
|
|
195
|
+
submitted_from: "quick_to_quote_experiment",
|
|
196
|
+
section_name: section,
|
|
197
|
+
question,
|
|
198
|
+
answer,
|
|
199
|
+
vertical: context.vertical,
|
|
200
|
+
journey_id: context.journeyId
|
|
201
|
+
}
|
|
202
|
+
};
|
|
203
|
+
},
|
|
204
|
+
contexts: ["distributionChannelContext"]
|
|
205
|
+
},
|
|
206
|
+
{
|
|
207
|
+
name: "primaryDetailSelected",
|
|
208
|
+
type: "unstructured",
|
|
209
|
+
makePayload: (params) => {
|
|
210
|
+
const { context, answer, vertical } = params;
|
|
211
|
+
const { site } = context;
|
|
212
|
+
let verticalName = vertical || context.vertical;
|
|
213
|
+
if (verticalName.toLowerCase().indexOf("landlord") > -1) {
|
|
214
|
+
verticalName = answer === "residential" ? "Landlord" : "Commercial landlord";
|
|
215
|
+
}
|
|
216
|
+
return {
|
|
217
|
+
schema: "iglu:com.simplybusiness/primary_detail_selected/jsonschema/1-3-1",
|
|
218
|
+
data: {
|
|
219
|
+
site,
|
|
220
|
+
vertical: verticalName,
|
|
221
|
+
primary_detail: answer,
|
|
222
|
+
selected_type: "trade_selector"
|
|
223
|
+
}
|
|
224
|
+
};
|
|
225
|
+
}
|
|
226
|
+
},
|
|
227
|
+
{
|
|
228
|
+
name: "helpTextOpened",
|
|
229
|
+
type: "unstructured",
|
|
230
|
+
makePayload: (params) => {
|
|
231
|
+
const { primaryText, label, context, helpText } = params;
|
|
232
|
+
return {
|
|
233
|
+
schema: "iglu:com.simplybusiness/help_text_opened/jsonschema/1-1-0",
|
|
234
|
+
data: {
|
|
235
|
+
vertical: context.vertical,
|
|
236
|
+
site: context.site,
|
|
237
|
+
help_text: helpText,
|
|
238
|
+
primary_text: primaryText,
|
|
239
|
+
label,
|
|
240
|
+
page_name: "quick_to_quote"
|
|
241
|
+
}
|
|
242
|
+
};
|
|
243
|
+
}
|
|
244
|
+
}
|
|
245
|
+
];
|
|
246
|
+
//# sourceMappingURL=eventDefinitions.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../src/mocks/eventDefinitions.ts", "../../../src/snowplow/event-definitions/questionnaire/redaction.ts"],
|
|
4
|
+
"sourcesContent": ["import type { ParamsType } from \"../snowplow\";\nimport { redact } from \"../snowplow/event-definitions/questionnaire/redaction\";\n\nexport default [\n {\n name: \"navButtonClicked\",\n type: \"structured\",\n makePayload: (params: { label: \"next\" | \"back\" | \"redirect\" }) => {\n const { label } = params;\n return {\n category: \"navigation\",\n action: \"thankyou_navigation_button_click\",\n label,\n property: \"test-property\",\n };\n },\n },\n {\n name: \"questionAnswered\",\n type: \"unstructured\",\n makePayload: (params: ParamsType) => {\n const { section, context } = params;\n const { question, answer } = redact(params);\n\n return {\n schema:\n \"iglu:com.simplybusiness/form_question_answered/jsonschema/1-0-4\",\n data: {\n site: context.site,\n page_index: 1,\n page_name: \"quick_to_quote\",\n submitted_from: \"quick_to_quote_experiment\",\n section_name: section,\n question,\n answer,\n vertical: context.vertical,\n journey_id: context.journeyId,\n },\n };\n },\n contexts: [\"distributionChannelContext\"],\n },\n {\n name: \"primaryDetailSelected\",\n type: \"unstructured\",\n makePayload: (params: ParamsType) => {\n const { context, answer, vertical } = params;\n const { site } = context;\n let verticalName = vertical || context.vertical;\n\n if (verticalName.toLowerCase().indexOf(\"landlord\") > -1) {\n verticalName =\n answer === \"residential\" ? \"Landlord\" : \"Commercial landlord\";\n }\n\n return {\n schema:\n \"iglu:com.simplybusiness/primary_detail_selected/jsonschema/1-3-1\",\n data: {\n site,\n vertical: verticalName,\n primary_detail: answer,\n selected_type: \"trade_selector\",\n },\n };\n },\n },\n {\n name: \"helpTextOpened\",\n type: \"unstructured\",\n makePayload: (params: ParamsType) => {\n const { primaryText, label, context, helpText } = params;\n\n return {\n schema: \"iglu:com.simplybusiness/help_text_opened/jsonschema/1-1-0\",\n data: {\n vertical: context.vertical,\n site: context.site,\n help_text: helpText,\n primary_text: primaryText,\n label,\n page_name: \"quick_to_quote\",\n },\n };\n },\n },\n];\n", "import type { ParamsType } from \"../../types\";\n\nconst PII_ANSWER = [\n \"customer_title\",\n \"customer_first_name\",\n \"customer_last_name\",\n \"customer_email_address\",\n \"preapp_email_address\",\n \"customer_telephone_number\",\n \"customer_alternative_telephone_number\",\n \"uk_address_lookup\",\n \"uk_correspondence_address_lookup\",\n \"customer_address_1_pre_quote\",\n \"customer_address_2_pre_quote\",\n \"customer_town_pre_quote\",\n \"customer_postcode_pre_quote\",\n \"customer_address_1\",\n \"customer_address_2\",\n \"customer_town\",\n \"customer_postcode\",\n \"address_1_pre_quote\",\n \"address_2_pre_quote\",\n \"uk_postcode_pre_quote\",\n \"town_pre_quote\",\n \"owner_first_name\",\n \"owner_last_name\",\n \"beneficiary_first_name\",\n \"beneficiary_last_name\",\n \"gender\",\n \"dynamic_ssn_fein\",\n \"ssn\",\n \"fein\",\n \"sof_county_court_judgement_online_yes\",\n \"sof_county_court_judgement_online_no\",\n \"sof_ccj_count\",\n \"sof_ccj_value\",\n \"sof_ccj_date\",\n \"sof_court_judgement_yes\",\n \"sof_court_judgement_no\",\n \"ccj_date\",\n \"sof_single_ccj_no\",\n \"sof_single_ccj_yes\",\n \"sof_ccj_yes\",\n \"sof_ccj_no\",\n \"ccj_count\",\n \"sof_bankrupt_yes\",\n \"sof_bankrupt_no\",\n \"sof_multiple_bankruptcies_yes\",\n \"sof_multiple_bankruptcies_no\",\n \"bankruptcy_date\",\n \"sof_single_bankruptcy_no\",\n \"sof_single_bankruptcy_yes\",\n \"sof_bankruptcy_yes\",\n \"sof_bankruptcy_no\",\n \"bankruptcy_discharged\",\n \"sof_liquidation_yes\",\n \"sof_liquidation_no\",\n \"sof_multiple_liquidations\",\n \"liquidation_date\",\n \"sof_criminal_offence_yes\",\n \"sof_criminal_offence_no\",\n \"sof_criminal_yes\",\n \"sof_criminal_no\",\n \"hcp_date_of_birth_1\",\n \"hcp_date_of_birth_2\",\n \"hcp_date_of_birth_3\",\n \"hcp_date_of_birth_4\",\n \"hcp_date_of_birth_5\",\n \"hcp_date_of_birth_6\",\n \"hcp_date_of_birth_7\",\n \"hcp_date_of_birth_8\",\n \"hcp_date_of_birth_9\",\n \"hcp_date_of_birth_10\",\n \"sof_previous_claims_yes\",\n \"sof_previous_claims_no\",\n \"sof_claims_yes\",\n \"sof_claims_no\",\n \"sof_property_claims_in_the_last_5_years_yes\",\n \"sof_property_claims_in_the_last_5_years_no\",\n \"sof_property_claims_in_the_last_0_to_4_years_yes\",\n \"sof_property_claims_in_the_last_0_to_4_years_no\",\n \"claim_count\",\n \"sof_number_of_claims\",\n \"number_of_claims_in_last_5_years\",\n \"number_of_claims_in_time_owned\",\n \"date_of_incident_1\",\n \"date_of_incident_2\",\n \"date_of_incident_3\",\n \"date_of_incident_4\",\n \"date_of_incident_5\",\n \"type_of_incident_1\",\n \"type_of_incident_2\",\n \"type_of_incident_3\",\n \"type_of_incident_4\",\n \"type_of_incident_5\",\n \"incident_value_1\",\n \"incident_value_2\",\n \"incident_value_3\",\n \"incident_value_4\",\n \"incident_value_5\",\n \"sof_pollution_disease_claims_yes\",\n \"sof_pollution_disease_claims_no\",\n \"sof_potential_claims_yes\",\n \"sof_potential_claims_no\",\n \"sof_previous_circumstances_yes\",\n \"sof_previous_circumstances_no\",\n \"sof_possible_claims_yes\",\n \"sof_possible_claims_no\",\n \"date_of_possible_incident\",\n \"type_of_possible_incident\",\n \"possible_incident_value\",\n \"sof_property_claims_yes\",\n \"sof_property_claims_no\",\n \"sof_liability_claims_yes\",\n \"sof_liability_claims_no\",\n \"van_registration\",\n \"sof_disqualified_director_yes\",\n \"sof_disqualified_director_no\",\n \"sof_insurance_refused_yes\",\n \"sof_insurance_refused_no\",\n \"sof_insurance_declined_yes\",\n \"sof_insurance_declined_no\",\n \"insurance_refused\",\n];\n\nconst RADIO_ANSWER_FROM_QUESTIONS = [\n \"have_secondary_trade_yes\",\n \"have_secondary_trade_no\",\n];\n\nconst ANSWER_SUFFIX_PATTERN = /_(yes|no)$/;\n\nexport const redact = (params: ParamsType) => {\n let { question, answer } = params;\n\n const piiAnswer = new Set(PII_ANSWER);\n const radioAnswerFromQuestions = new Set(RADIO_ANSWER_FROM_QUESTIONS);\n\n if (piiAnswer.has(question)) {\n answer = \"REDACTED\";\n question = question?.replace(ANSWER_SUFFIX_PATTERN, \"\");\n } else if (radioAnswerFromQuestions.has(question)) {\n question = question?.replace(ANSWER_SUFFIX_PATTERN, \"\");\n }\n return { question, answer };\n};\n"],
|
|
5
|
+
"mappings": ";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;;;ACEA,IAAM,aAAa;AAAA,EACjB;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF;AAEA,IAAM,8BAA8B;AAAA,EAClC;AAAA,EACA;AACF;AAEA,IAAM,wBAAwB;AAEvB,IAAM,SAAS,CAAC,WAAuB;AAC5C,MAAI,EAAE,UAAU,OAAO,IAAI;AAE3B,QAAM,YAAY,IAAI,IAAI,UAAU;AACpC,QAAM,2BAA2B,IAAI,IAAI,2BAA2B;AAEpE,MAAI,UAAU,IAAI,QAAQ,GAAG;AAC3B,aAAS;AACT,eAAW,UAAU,QAAQ,uBAAuB,EAAE;AAAA,EACxD,WAAW,yBAAyB,IAAI,QAAQ,GAAG;AACjD,eAAW,UAAU,QAAQ,uBAAuB,EAAE;AAAA,EACxD;AACA,SAAO,EAAE,UAAU,OAAO;AAC5B;;;AD9IA,IAAO,2BAAQ;AAAA,EACb;AAAA,IACE,MAAM;AAAA,IACN,MAAM;AAAA,IACN,aAAa,CAAC,WAAoD;AAChE,YAAM,EAAE,MAAM,IAAI;AAClB,aAAO;AAAA,QACL,UAAU;AAAA,QACV,QAAQ;AAAA,QACR;AAAA,QACA,UAAU;AAAA,MACZ;AAAA,IACF;AAAA,EACF;AAAA,EACA;AAAA,IACE,MAAM;AAAA,IACN,MAAM;AAAA,IACN,aAAa,CAAC,WAAuB;AACnC,YAAM,EAAE,SAAS,QAAQ,IAAI;AAC7B,YAAM,EAAE,UAAU,OAAO,IAAI,OAAO,MAAM;AAE1C,aAAO;AAAA,QACL,QACE;AAAA,QACF,MAAM;AAAA,UACJ,MAAM,QAAQ;AAAA,UACd,YAAY;AAAA,UACZ,WAAW;AAAA,UACX,gBAAgB;AAAA,UAChB,cAAc;AAAA,UACd;AAAA,UACA;AAAA,UACA,UAAU,QAAQ;AAAA,UAClB,YAAY,QAAQ;AAAA,QACtB;AAAA,MACF;AAAA,IACF;AAAA,IACA,UAAU,CAAC,4BAA4B;AAAA,EACzC;AAAA,EACA;AAAA,IACE,MAAM;AAAA,IACN,MAAM;AAAA,IACN,aAAa,CAAC,WAAuB;AACnC,YAAM,EAAE,SAAS,QAAQ,SAAS,IAAI;AACtC,YAAM,EAAE,KAAK,IAAI;AACjB,UAAI,eAAe,YAAY,QAAQ;AAEvC,UAAI,aAAa,YAAY,EAAE,QAAQ,UAAU,IAAI,IAAI;AACvD,uBACE,WAAW,gBAAgB,aAAa;AAAA,MAC5C;AAEA,aAAO;AAAA,QACL,QACE;AAAA,QACF,MAAM;AAAA,UACJ;AAAA,UACA,UAAU;AAAA,UACV,gBAAgB;AAAA,UAChB,eAAe;AAAA,QACjB;AAAA,MACF;AAAA,IACF;AAAA,EACF;AAAA,EACA;AAAA,IACE,MAAM;AAAA,IACN,MAAM;AAAA,IACN,aAAa,CAAC,WAAuB;AACnC,YAAM,EAAE,aAAa,OAAO,SAAS,SAAS,IAAI;AAElD,aAAO;AAAA,QACL,QAAQ;AAAA,QACR,MAAM;AAAA,UACJ,UAAU,QAAQ;AAAA,UAClB,MAAM,QAAQ;AAAA,UACd,WAAW;AAAA,UACX,cAAc;AAAA,UACd;AAAA,UACA,WAAW;AAAA,QACb;AAAA,MACF;AAAA,IACF;AAAA,EACF;AACF;",
|
|
6
|
+
"names": []
|
|
7
|
+
}
|
|
@@ -0,0 +1,67 @@
|
|
|
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/mocks/scripts-mock.ts
|
|
21
|
+
var scripts_mock_exports = {};
|
|
22
|
+
__export(scripts_mock_exports, {
|
|
23
|
+
pageData: () => pageData
|
|
24
|
+
});
|
|
25
|
+
module.exports = __toCommonJS(scripts_mock_exports);
|
|
26
|
+
var pageData = {
|
|
27
|
+
scripts: [
|
|
28
|
+
{
|
|
29
|
+
metadata: { name: "snowplow" },
|
|
30
|
+
props: {
|
|
31
|
+
uid: "49a449d8aaa9dd58f90a623d4b9dbcae235bf92a",
|
|
32
|
+
cookieDomain: "",
|
|
33
|
+
// TODO: Change this url to "http://localhost:8000" for local development
|
|
34
|
+
avalancheCollector: "https://snowplow-collector-staging.simplybusiness.com",
|
|
35
|
+
appId: "us-chopin",
|
|
36
|
+
includeGAContext: true,
|
|
37
|
+
eventMethod: "post",
|
|
38
|
+
postPath: "/com.simplybusiness/events",
|
|
39
|
+
trackActivity: true,
|
|
40
|
+
trackPageView: true,
|
|
41
|
+
pageViewContext: {
|
|
42
|
+
schema: "iglu:uk.co.simplybusiness/journey_context/jsonschema/1-0-0",
|
|
43
|
+
data: {
|
|
44
|
+
site: "simplybusiness_us",
|
|
45
|
+
vertical: "usa",
|
|
46
|
+
superSegment: "Unknown",
|
|
47
|
+
primaryDetail: "Lawn care services",
|
|
48
|
+
journeyName: "usa",
|
|
49
|
+
journeyId: "666ff79d90abbc3582e496da",
|
|
50
|
+
pageStepName: "thank_you_ssr",
|
|
51
|
+
pageStepDepth: -1
|
|
52
|
+
}
|
|
53
|
+
},
|
|
54
|
+
distributionChannelContext: {
|
|
55
|
+
schema: "iglu:com.simplybusiness/distribution_channel_context/jsonschema/1-0-0",
|
|
56
|
+
data: { service_channel_identifier: "simplybusiness_us" }
|
|
57
|
+
},
|
|
58
|
+
serviceChannelContext: {
|
|
59
|
+
schema: "iglu:com.simplybusiness/service_channel_context/jsonschema/1-0-0",
|
|
60
|
+
data: { service_channel_identifier: "simplybusiness_us" }
|
|
61
|
+
},
|
|
62
|
+
forceSecureTracker: true
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
]
|
|
66
|
+
};
|
|
67
|
+
//# sourceMappingURL=scripts-mock.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../src/mocks/scripts-mock.ts"],
|
|
4
|
+
"sourcesContent": ["export const pageData = {\n scripts: [\n {\n metadata: { name: \"snowplow\" },\n props: {\n uid: \"49a449d8aaa9dd58f90a623d4b9dbcae235bf92a\",\n cookieDomain: \"\",\n // TODO: Change this url to \"http://localhost:8000\" for local development\n avalancheCollector:\n \"https://snowplow-collector-staging.simplybusiness.com\",\n appId: \"us-chopin\",\n includeGAContext: true,\n eventMethod: \"post\",\n postPath: \"/com.simplybusiness/events\",\n trackActivity: true,\n trackPageView: true,\n pageViewContext: {\n schema: \"iglu:uk.co.simplybusiness/journey_context/jsonschema/1-0-0\",\n data: {\n site: \"simplybusiness_us\",\n vertical: \"usa\",\n superSegment: \"Unknown\",\n primaryDetail: \"Lawn care services\",\n journeyName: \"usa\",\n journeyId: \"666ff79d90abbc3582e496da\",\n pageStepName: \"thank_you_ssr\",\n pageStepDepth: -1,\n },\n },\n distributionChannelContext: {\n schema:\n \"iglu:com.simplybusiness/distribution_channel_context/jsonschema/1-0-0\",\n data: { service_channel_identifier: \"simplybusiness_us\" },\n },\n serviceChannelContext: {\n schema:\n \"iglu:com.simplybusiness/service_channel_context/jsonschema/1-0-0\",\n data: { service_channel_identifier: \"simplybusiness_us\" },\n },\n forceSecureTracker: true,\n },\n },\n ],\n};\n"],
|
|
5
|
+
"mappings": ";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAO,IAAM,WAAW;AAAA,EACtB,SAAS;AAAA,IACP;AAAA,MACE,UAAU,EAAE,MAAM,WAAW;AAAA,MAC7B,OAAO;AAAA,QACL,KAAK;AAAA,QACL,cAAc;AAAA;AAAA,QAEd,oBACE;AAAA,QACF,OAAO;AAAA,QACP,kBAAkB;AAAA,QAClB,aAAa;AAAA,QACb,UAAU;AAAA,QACV,eAAe;AAAA,QACf,eAAe;AAAA,QACf,iBAAiB;AAAA,UACf,QAAQ;AAAA,UACR,MAAM;AAAA,YACJ,MAAM;AAAA,YACN,UAAU;AAAA,YACV,cAAc;AAAA,YACd,eAAe;AAAA,YACf,aAAa;AAAA,YACb,WAAW;AAAA,YACX,cAAc;AAAA,YACd,eAAe;AAAA,UACjB;AAAA,QACF;AAAA,QACA,4BAA4B;AAAA,UAC1B,QACE;AAAA,UACF,MAAM,EAAE,4BAA4B,oBAAoB;AAAA,QAC1D;AAAA,QACA,uBAAuB;AAAA,UACrB,QACE;AAAA,UACF,MAAM,EAAE,4BAA4B,oBAAoB;AAAA,QAC1D;AAAA,QACA,oBAAoB;AAAA,MACtB;AAAA,IACF;AAAA,EACF;AACF;",
|
|
6
|
+
"names": []
|
|
7
|
+
}
|
|
@@ -0,0 +1,197 @@
|
|
|
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/snowplow/Snowplow.ts
|
|
21
|
+
var Snowplow_exports = {};
|
|
22
|
+
__export(Snowplow_exports, {
|
|
23
|
+
Snowplow: () => Snowplow
|
|
24
|
+
});
|
|
25
|
+
module.exports = __toCommonJS(Snowplow_exports);
|
|
26
|
+
var import_browser_tracker = require("@snowplow/browser-tracker");
|
|
27
|
+
var import_browser_plugin_ga_cookies = require("@snowplow/browser-plugin-ga-cookies");
|
|
28
|
+
|
|
29
|
+
// src/snowplow/contexts.ts
|
|
30
|
+
var updateIdentityContext = (contexts, uid) => {
|
|
31
|
+
const index = Object.keys(contexts).findIndex(
|
|
32
|
+
(ctx) => contexts[ctx].schema?.includes("identity_context")
|
|
33
|
+
);
|
|
34
|
+
if (index > -1) {
|
|
35
|
+
const key = Object.keys(contexts)[index];
|
|
36
|
+
return {
|
|
37
|
+
...contexts,
|
|
38
|
+
[key]: {
|
|
39
|
+
...contexts[key],
|
|
40
|
+
data: {
|
|
41
|
+
...contexts[key].data,
|
|
42
|
+
domain_userid: uid
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
};
|
|
46
|
+
}
|
|
47
|
+
return contexts;
|
|
48
|
+
};
|
|
49
|
+
var makeContexts = (keys, config) => (keys || []).map((key) => config[key]);
|
|
50
|
+
|
|
51
|
+
// src/snowplow/Snowplow.ts
|
|
52
|
+
var Snowplow = class _Snowplow {
|
|
53
|
+
constructor(props) {
|
|
54
|
+
this.avalancheTrackerName = "sb-ava";
|
|
55
|
+
this.bronzeAvalancheTrackerName = "sb-ava-br";
|
|
56
|
+
this.pvAvalancheTrackerName = "sb-ava-pv";
|
|
57
|
+
this.uid = "";
|
|
58
|
+
this.trackPageView = false;
|
|
59
|
+
this.contexts = {};
|
|
60
|
+
this.pvContext = [];
|
|
61
|
+
this.structContext = [];
|
|
62
|
+
this.serverData = {};
|
|
63
|
+
this.eventHandlers = {};
|
|
64
|
+
if (!props) return;
|
|
65
|
+
const {
|
|
66
|
+
appId,
|
|
67
|
+
cookieDomain,
|
|
68
|
+
avalancheCollector,
|
|
69
|
+
eventMethod,
|
|
70
|
+
uid,
|
|
71
|
+
postPath,
|
|
72
|
+
trackPageView: tpv
|
|
73
|
+
} = props;
|
|
74
|
+
this.uid = uid;
|
|
75
|
+
this.trackPageView = tpv;
|
|
76
|
+
this.serverData = props?.pageViewContext?.data || {};
|
|
77
|
+
const stateStorageStrategy = "cookieAndLocalStorage";
|
|
78
|
+
const baseOptions = {
|
|
79
|
+
appId,
|
|
80
|
+
cookieDomain,
|
|
81
|
+
eventMethod,
|
|
82
|
+
stateStorageStrategy,
|
|
83
|
+
postPath
|
|
84
|
+
};
|
|
85
|
+
(0, import_browser_tracker.newTracker)(this.avalancheTrackerName, avalancheCollector, baseOptions);
|
|
86
|
+
(0, import_browser_tracker.newTracker)(
|
|
87
|
+
this.bronzeAvalancheTrackerName,
|
|
88
|
+
avalancheCollector,
|
|
89
|
+
baseOptions
|
|
90
|
+
);
|
|
91
|
+
(0, import_browser_tracker.newTracker)(this.pvAvalancheTrackerName, avalancheCollector, {
|
|
92
|
+
...baseOptions,
|
|
93
|
+
eventMethod: eventMethod === "post" ? "beacon" : eventMethod,
|
|
94
|
+
plugins: [(0, import_browser_plugin_ga_cookies.GaCookiesPlugin)()]
|
|
95
|
+
});
|
|
96
|
+
(0, import_browser_tracker.setCookiePath)("/");
|
|
97
|
+
if (uid) {
|
|
98
|
+
(0, import_browser_tracker.setUserId)(uid);
|
|
99
|
+
}
|
|
100
|
+
_Snowplow.instance = this;
|
|
101
|
+
}
|
|
102
|
+
setContexts(contexts) {
|
|
103
|
+
this.contexts = updateIdentityContext(contexts, this.uid);
|
|
104
|
+
this.pvContext = makeContexts(
|
|
105
|
+
[
|
|
106
|
+
"pageViewContext",
|
|
107
|
+
"distributionChannelContext",
|
|
108
|
+
"serviceChannelContext"
|
|
109
|
+
],
|
|
110
|
+
this.contexts
|
|
111
|
+
);
|
|
112
|
+
this.structContext = makeContexts(
|
|
113
|
+
["distributionChannelContext", "serviceChannelContext"],
|
|
114
|
+
this.contexts
|
|
115
|
+
);
|
|
116
|
+
return this;
|
|
117
|
+
}
|
|
118
|
+
// Send a page view event
|
|
119
|
+
trackView(event) {
|
|
120
|
+
if (this.trackPageView) {
|
|
121
|
+
(0, import_browser_tracker.trackPageView)({ ...event, context: this.pvContext }, [
|
|
122
|
+
this.pvAvalancheTrackerName
|
|
123
|
+
]);
|
|
124
|
+
}
|
|
125
|
+
return this;
|
|
126
|
+
}
|
|
127
|
+
// Send a structured event with contexts
|
|
128
|
+
trackEvent(event) {
|
|
129
|
+
(0, import_browser_tracker.trackStructEvent)({ ...event, context: this.structContext }, [
|
|
130
|
+
this.bronzeAvalancheTrackerName
|
|
131
|
+
]);
|
|
132
|
+
return this;
|
|
133
|
+
}
|
|
134
|
+
// Send a custom event with defined schema and optional contexts
|
|
135
|
+
trackUnstructEvent(event, contexts) {
|
|
136
|
+
if (!event) {
|
|
137
|
+
return this;
|
|
138
|
+
}
|
|
139
|
+
if (contexts && Array.isArray(contexts) && contexts.length > 0) {
|
|
140
|
+
const context = makeContexts(contexts, this.contexts);
|
|
141
|
+
(0, import_browser_tracker.trackSelfDescribingEvent)({ event, context }, [this.avalancheTrackerName]);
|
|
142
|
+
} else {
|
|
143
|
+
(0, import_browser_tracker.trackSelfDescribingEvent)({ event }, [this.avalancheTrackerName]);
|
|
144
|
+
}
|
|
145
|
+
return this;
|
|
146
|
+
}
|
|
147
|
+
addEventHandlers(eventDefinitions) {
|
|
148
|
+
const context = this.serverData;
|
|
149
|
+
eventDefinitions.forEach(({ name, type, makePayload, contexts }) => {
|
|
150
|
+
if (type === "structured") {
|
|
151
|
+
this.addEventHandler(name, (params) => {
|
|
152
|
+
void this.trackEvent(
|
|
153
|
+
makePayload({
|
|
154
|
+
...params,
|
|
155
|
+
context
|
|
156
|
+
})
|
|
157
|
+
);
|
|
158
|
+
});
|
|
159
|
+
} else {
|
|
160
|
+
this.addEventHandler(name, (params) => {
|
|
161
|
+
const payload = makePayload({
|
|
162
|
+
...params,
|
|
163
|
+
context
|
|
164
|
+
});
|
|
165
|
+
if (contexts && Array.isArray(contexts) && contexts.length > 0) {
|
|
166
|
+
void this.trackUnstructEvent(payload, contexts);
|
|
167
|
+
} else {
|
|
168
|
+
void this.trackUnstructEvent(payload);
|
|
169
|
+
}
|
|
170
|
+
});
|
|
171
|
+
}
|
|
172
|
+
});
|
|
173
|
+
return this;
|
|
174
|
+
}
|
|
175
|
+
addEventHandler(name, handler) {
|
|
176
|
+
this.eventHandlers[name] = handler;
|
|
177
|
+
return this;
|
|
178
|
+
}
|
|
179
|
+
removeEventHandler(name) {
|
|
180
|
+
delete this.eventHandlers[name];
|
|
181
|
+
return this;
|
|
182
|
+
}
|
|
183
|
+
trigger(name, params) {
|
|
184
|
+
const handler = this.eventHandlers[name];
|
|
185
|
+
if (Object.prototype.hasOwnProperty.call(this.eventHandlers, name) && typeof handler === "function") {
|
|
186
|
+
handler(params);
|
|
187
|
+
}
|
|
188
|
+
return this;
|
|
189
|
+
}
|
|
190
|
+
static getInstance(props) {
|
|
191
|
+
if (!_Snowplow.instance) {
|
|
192
|
+
_Snowplow.instance = new _Snowplow(props);
|
|
193
|
+
}
|
|
194
|
+
return _Snowplow.instance;
|
|
195
|
+
}
|
|
196
|
+
};
|
|
197
|
+
//# sourceMappingURL=Snowplow.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../src/snowplow/Snowplow.ts", "../../../src/snowplow/contexts.ts"],
|
|
4
|
+
"sourcesContent": ["import type {\n PageViewEvent,\n StructuredEvent,\n TrackerConfiguration,\n} from \"@snowplow/browser-tracker\";\nimport {\n newTracker,\n setCookiePath,\n setUserId,\n trackPageView,\n trackSelfDescribingEvent,\n trackStructEvent,\n} from \"@snowplow/browser-tracker\";\nimport { GaCookiesPlugin } from \"@snowplow/browser-plugin-ga-cookies\";\nimport { makeContexts, updateIdentityContext } from \"./contexts\";\nimport type { EventDefinition, SerialisedEvent, TrackingProps } from \"./types\";\n\nexport type FrontOfficeStructuredEvent = StructuredEvent & {\n serviceChannelIdentifier: string;\n};\n\n/**\n * This class is an abstraction which wraps Snowplow\n * and exposes common methods with other services:\n * - trackEvent : sends a standard payload\n * - trackUnstructEvent : sends a payload for custom schema\n */\nexport class Snowplow {\n avalancheTrackerName = \"sb-ava\";\n\n bronzeAvalancheTrackerName = \"sb-ava-br\";\n\n pvAvalancheTrackerName = \"sb-ava-pv\";\n\n uid: unknown = \"\";\n\n trackPageView: boolean = false;\n\n contexts: Record<string, SerialisedEvent> = {};\n\n pvContext: SerialisedEvent[] = [];\n\n structContext: SerialisedEvent[] = [];\n\n serverData: Record<string, unknown> = {};\n\n eventHandlers: Record<string, (params?: Record<string, unknown>) => void> =\n {};\n\n static instance: Snowplow | undefined;\n\n constructor(props?: TrackingProps) {\n if (!props) return;\n\n const {\n appId,\n cookieDomain,\n avalancheCollector,\n eventMethod,\n uid,\n postPath,\n trackPageView: tpv,\n } = props;\n this.uid = uid;\n this.trackPageView = tpv;\n this.serverData = props?.pageViewContext?.data || {};\n\n // Set options\n const stateStorageStrategy = \"cookieAndLocalStorage\";\n const baseOptions: TrackerConfiguration = {\n appId,\n cookieDomain,\n eventMethod,\n stateStorageStrategy,\n postPath,\n };\n // Initialize trackers\n newTracker(this.avalancheTrackerName, avalancheCollector, baseOptions);\n\n newTracker(\n this.bronzeAvalancheTrackerName,\n avalancheCollector,\n baseOptions,\n );\n\n // Page view tracker\n newTracker(this.pvAvalancheTrackerName, avalancheCollector, {\n ...baseOptions,\n eventMethod: eventMethod === \"post\" ? \"beacon\" : eventMethod,\n plugins: [GaCookiesPlugin()],\n });\n\n setCookiePath(\"/\");\n if (uid) {\n setUserId(uid);\n }\n // Create a singleton instance\n Snowplow.instance = this;\n }\n\n setContexts(contexts: Record<string, SerialisedEvent>) {\n this.contexts = updateIdentityContext(contexts, this.uid);\n this.pvContext = makeContexts(\n [\n \"pageViewContext\",\n \"distributionChannelContext\",\n \"serviceChannelContext\",\n ],\n this.contexts,\n );\n this.structContext = makeContexts(\n [\"distributionChannelContext\", \"serviceChannelContext\"],\n this.contexts,\n );\n return this;\n }\n\n // Send a page view event\n trackView(event?: PageViewEvent) {\n if (this.trackPageView) {\n trackPageView({ ...event, context: this.pvContext }, [\n this.pvAvalancheTrackerName,\n ]);\n }\n return this;\n }\n\n // Send a structured event with contexts\n trackEvent(event: StructuredEvent) {\n trackStructEvent({ ...event, context: this.structContext }, [\n this.bronzeAvalancheTrackerName,\n ]);\n return this;\n }\n\n // Send a custom event with defined schema and optional contexts\n trackUnstructEvent(event: SerialisedEvent, contexts?: string[]) {\n if (!event) {\n return this;\n }\n\n if (contexts && Array.isArray(contexts) && contexts.length > 0) {\n // Add context to the event\n const context = makeContexts(contexts, this.contexts);\n trackSelfDescribingEvent({ event, context }, [this.avalancheTrackerName]);\n } else {\n trackSelfDescribingEvent({ event }, [this.avalancheTrackerName]);\n }\n return this;\n }\n\n addEventHandlers(eventDefinitions: EventDefinition[]) {\n // Add server context to makePayload functions\n const context = this.serverData;\n\n eventDefinitions.forEach(({ name, type, makePayload, contexts }) => {\n // Convert type into relevant function\n if (type === \"structured\") {\n this.addEventHandler(name, (params?: Record<string, unknown>) => {\n void this.trackEvent(\n makePayload({\n ...params,\n context,\n }) as StructuredEvent,\n );\n });\n } else {\n this.addEventHandler(name, (params?: Record<string, unknown>) => {\n const payload = makePayload({\n ...params,\n context,\n }) as SerialisedEvent;\n\n if (contexts && Array.isArray(contexts) && contexts.length > 0) {\n void this.trackUnstructEvent(payload, contexts);\n } else {\n void this.trackUnstructEvent(payload);\n }\n });\n }\n });\n return this;\n }\n\n private addEventHandler(\n name: string,\n handler: (params?: Record<string, unknown>) => void,\n ) {\n this.eventHandlers[name] = handler;\n return this;\n }\n\n private removeEventHandler(name: string) {\n delete this.eventHandlers[name];\n return this;\n }\n\n trigger(name: string, params?: Record<string, unknown>) {\n const handler = this.eventHandlers[name];\n\n if (\n Object.prototype.hasOwnProperty.call(this.eventHandlers, name) &&\n typeof handler === \"function\"\n ) {\n handler(params);\n }\n return this;\n }\n\n static getInstance(props?: TrackingProps) {\n if (!Snowplow.instance) {\n Snowplow.instance = new Snowplow(props);\n }\n return Snowplow.instance;\n }\n}\n", "import { snakeCaseKeys } from \"../utils\";\nimport type { SerialisedEvent, TrackingProps } from \"./types\";\n\nexport const getContexts = (\n config: TrackingProps,\n): Record<string, SerialisedEvent> => {\n // Create an object that only contains Context keys\n // and snake_case the keys\n const contextEntries = Object.entries(config || {})\n .filter(([key]) => key.includes(\"Context\") && key !== \"includeGAContext\")\n .reduce((acc, [key, value]) => {\n if (typeof value === \"object\") {\n return { ...acc, [key]: snakeCaseKeys({ ...value }) };\n }\n return {\n ...acc,\n [key]: snakeCaseKeys({ data: { service_channel_identifier: value } }),\n };\n }, {});\n\n return contextEntries as Record<string, SerialisedEvent>;\n};\n\nexport const updateIdentityContext = (\n contexts: Record<string, SerialisedEvent>,\n uid: unknown,\n): Record<string, SerialisedEvent> => {\n const index = Object.keys(contexts).findIndex(ctx =>\n contexts[ctx].schema?.includes(\"identity_context\"),\n );\n if (index > -1) {\n const key = Object.keys(contexts)[index];\n return {\n ...contexts,\n [key]: {\n ...contexts[key],\n data: {\n ...contexts[key].data,\n domain_userid: uid,\n },\n },\n };\n }\n return contexts;\n};\n\nexport const makeContexts = (\n keys: string[],\n config: Record<string, SerialisedEvent>,\n): SerialisedEvent[] => (keys || []).map(key => config[key]);\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
|
+
"names": []
|
|
7
|
+
}
|