@simplybusiness/services 0.20.1 → 0.21.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (49) hide show
  1. package/CHANGELOG.md +15 -0
  2. package/dist/cjs/mocks/eventDefinitions.js +5 -21
  3. package/dist/cjs/mocks/eventDefinitions.js.map +1 -1
  4. package/dist/cjs/snowplow/Snowplow.js +41 -28
  5. package/dist/cjs/snowplow/Snowplow.js.map +1 -1
  6. package/dist/cjs/snowplow/contexts.js +52 -12
  7. package/dist/cjs/snowplow/contexts.js.map +1 -1
  8. package/dist/cjs/snowplow/event-definitions/index.js +10 -1
  9. package/dist/cjs/snowplow/event-definitions/index.js.map +1 -1
  10. package/dist/cjs/snowplow/event-definitions/personalised_cover.js +122 -0
  11. package/dist/cjs/snowplow/event-definitions/personalised_cover.js.map +1 -0
  12. package/dist/cjs/snowplow/event-definitions/qcp.js +8 -2
  13. package/dist/cjs/snowplow/event-definitions/qcp.js.map +1 -1
  14. package/dist/cjs/snowplow/event-definitions/questionnaire.js +4 -1
  15. package/dist/cjs/snowplow/event-definitions/questionnaire.js.map +1 -1
  16. package/dist/cjs/tsconfig.tsbuildinfo +1 -1
  17. package/dist/esm/mocks/eventDefinitions.js +5 -21
  18. package/dist/esm/mocks/eventDefinitions.js.map +1 -1
  19. package/dist/esm/snowplow/Snowplow.js +41 -28
  20. package/dist/esm/snowplow/Snowplow.js.map +1 -1
  21. package/dist/esm/snowplow/contexts.js +38 -9
  22. package/dist/esm/snowplow/contexts.js.map +1 -1
  23. package/dist/esm/snowplow/event-definitions/index.js +7 -1
  24. package/dist/esm/snowplow/event-definitions/index.js.map +1 -1
  25. package/dist/esm/snowplow/event-definitions/personalised_cover.js +131 -0
  26. package/dist/esm/snowplow/event-definitions/personalised_cover.js.map +1 -0
  27. package/dist/esm/snowplow/event-definitions/qcp.js +9 -22
  28. package/dist/esm/snowplow/event-definitions/qcp.js.map +1 -1
  29. package/dist/esm/snowplow/event-definitions/questionnaire.js +4 -1
  30. package/dist/esm/snowplow/event-definitions/questionnaire.js.map +1 -1
  31. package/dist/esm/snowplow/types.js.map +1 -1
  32. package/dist/types/mocks/eventDefinitions.d.ts +4 -19
  33. package/dist/types/snowplow/Snowplow.d.ts +7 -5
  34. package/dist/types/snowplow/contexts.d.ts +4 -3
  35. package/dist/types/snowplow/event-definitions/index.d.ts +1 -0
  36. package/dist/types/snowplow/event-definitions/personalised_cover.d.ts +22 -0
  37. package/dist/types/snowplow/event-definitions/qcp.d.ts +0 -20
  38. package/dist/types/snowplow/types.d.ts +3 -1
  39. package/package.json +16 -16
  40. package/src/mocks/eventDefinitions.ts +2 -25
  41. package/src/snowplow/Snowplow.ts +46 -29
  42. package/src/snowplow/contexts.test.ts +134 -6
  43. package/src/snowplow/contexts.ts +44 -14
  44. package/src/snowplow/event-definitions/index.ts +7 -0
  45. package/src/snowplow/event-definitions/personalised_cover.ts +142 -0
  46. package/src/snowplow/event-definitions/qcp.ts +2 -21
  47. package/src/snowplow/event-definitions/questionnaire.ts +1 -0
  48. package/src/snowplow/index.test.ts +40 -30
  49. package/src/snowplow/types.ts +4 -1
@@ -12,6 +12,7 @@ function _define_property(obj, key, value) {
12
12
  return obj;
13
13
  }
14
14
  import { newTracker, setCookiePath, setUserId, trackPageView, trackSelfDescribingEvent, trackStructEvent } from "@snowplow/browser-tracker";
15
+ import { makeContexts, updateIdentityContext } from "./contexts";
15
16
  /**
16
17
  * This class is an abstraction which wraps Snowplow
17
18
  * and exposes common methods with other services:
@@ -19,16 +20,12 @@ import { newTracker, setCookiePath, setUserId, trackPageView, trackSelfDescribin
19
20
  * - trackUnstructEvent : sends a payload for custom schema
20
21
  */ export class Snowplow {
21
22
  setContexts(contexts) {
22
- var _this_contexts;
23
- this.contexts = contexts;
24
- // Update identity context
25
- const index = (_this_contexts = this.contexts) === null || _this_contexts === void 0 ? void 0 : _this_contexts.findIndex((ctx)=>{
26
- var _ctx_schema;
27
- return (_ctx_schema = ctx.schema) === null || _ctx_schema === void 0 ? void 0 : _ctx_schema.includes("identity_context");
28
- });
29
- if (index > -1) {
30
- this.contexts[index].data.domain_userid = this.uid;
31
- }
23
+ this.contexts = updateIdentityContext(contexts, this.uid);
24
+ this.pvContext = Object.values(this.contexts);
25
+ this.structContext = makeContexts([
26
+ "distributionChannelContext",
27
+ "serviceChannelContext"
28
+ ], this.contexts);
32
29
  return this;
33
30
  }
34
31
  // Send a page view event
@@ -36,7 +33,7 @@ import { newTracker, setCookiePath, setUserId, trackPageView, trackSelfDescribin
36
33
  if (this.trackPageView) {
37
34
  await trackPageView({
38
35
  ...event,
39
- context: this.contexts
36
+ context: this.pvContext
40
37
  }, [
41
38
  this.avalancheTrackerName
42
39
  ]);
@@ -47,29 +44,39 @@ import { newTracker, setCookiePath, setUserId, trackPageView, trackSelfDescribin
47
44
  async trackEvent(event) {
48
45
  await trackStructEvent({
49
46
  ...event,
50
- context: this.contexts
47
+ context: this.structContext
51
48
  }, [
52
49
  this.bronzeAvalancheTrackerName
53
50
  ]);
54
51
  return this;
55
52
  }
56
53
  // Send a custom event with defined schema and optional contexts
57
- async trackUnstructEvent(event) {
54
+ async trackUnstructEvent(event, contexts) {
58
55
  if (!event) {
59
56
  return this;
60
57
  }
61
- await trackSelfDescribingEvent({
62
- event,
63
- context: this.contexts
64
- }, [
65
- this.avalancheTrackerName
66
- ]);
58
+ if (contexts && Array.isArray(contexts) && contexts.length > 0) {
59
+ // Add context to the event
60
+ const context = makeContexts(contexts, this.contexts);
61
+ await trackSelfDescribingEvent({
62
+ event,
63
+ context
64
+ }, [
65
+ this.avalancheTrackerName
66
+ ]);
67
+ } else {
68
+ await trackSelfDescribingEvent({
69
+ event
70
+ }, [
71
+ this.avalancheTrackerName
72
+ ]);
73
+ }
67
74
  return this;
68
75
  }
69
76
  addEventHandlers(eventDefinitions) {
70
77
  // Add server context to makePayload functions
71
78
  const context = this.serverData;
72
- eventDefinitions.forEach(({ name, type, makePayload })=>{
79
+ eventDefinitions.forEach(({ name, type, makePayload, contexts })=>{
73
80
  // Convert type into relevant function
74
81
  if (type === "structured") {
75
82
  this.addEventHandler(name, (params)=>{
@@ -80,10 +87,15 @@ import { newTracker, setCookiePath, setUserId, trackPageView, trackSelfDescribin
80
87
  });
81
88
  } else {
82
89
  this.addEventHandler(name, (params)=>{
83
- this.trackUnstructEvent(makePayload({
90
+ const payload = makePayload({
84
91
  ...params,
85
92
  context
86
- }));
93
+ });
94
+ if (contexts && Array.isArray(contexts) && contexts.length > 0) {
95
+ this.trackUnstructEvent(payload, contexts);
96
+ } else {
97
+ this.trackUnstructEvent(payload);
98
+ }
87
99
  });
88
100
  }
89
101
  });
@@ -98,8 +110,9 @@ import { newTracker, setCookiePath, setUserId, trackPageView, trackSelfDescribin
98
110
  return this;
99
111
  }
100
112
  trigger(name, params) {
101
- if (this.eventHandlers[name]) {
102
- this.eventHandlers[name](params);
113
+ const handler = this.eventHandlers[name];
114
+ if (Object.prototype.hasOwnProperty.call(this.eventHandlers, name) && typeof handler === "function") {
115
+ handler(params);
103
116
  }
104
117
  return this;
105
118
  }
@@ -116,13 +129,13 @@ import { newTracker, setCookiePath, setUserId, trackPageView, trackSelfDescribin
116
129
  _define_property(this, "pvAvalancheTrackerName", "sb-ava-pv");
117
130
  _define_property(this, "uid", "");
118
131
  _define_property(this, "trackPageView", false);
119
- _define_property(this, "contexts", []);
132
+ _define_property(this, "contexts", {});
133
+ _define_property(this, "pvContext", []);
134
+ _define_property(this, "structContext", []);
120
135
  _define_property(this, "serverData", {});
121
136
  _define_property(this, "eventHandlers", {});
122
137
  if (!props) return;
123
- const { appId, cookieDomain, avalancheCollector, eventMethod, uid, postPath, // includeGAContext,
124
- // trackActivity,
125
- trackPageView: tpv } = props;
138
+ const { appId, cookieDomain, avalancheCollector, eventMethod, uid, postPath, trackPageView: tpv } = props;
126
139
  this.uid = uid;
127
140
  this.trackPageView = tpv;
128
141
  this.serverData = (props === null || props === void 0 ? void 0 : (_props_pageViewContext = props.pageViewContext) === null || _props_pageViewContext === void 0 ? void 0 : _props_pageViewContext.data) || {};
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/snowplow/Snowplow.ts"],"sourcesContent":["import {\n SelfDescribingJson,\n StructuredEvent,\n TrackerConfiguration,\n newTracker,\n setCookiePath,\n setUserId,\n trackPageView,\n trackSelfDescribingEvent,\n trackStructEvent,\n PageViewEvent,\n} from \"@snowplow/browser-tracker\";\nimport { EventDefinition, 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: SelfDescribingJson<Record<string, unknown>>[] = [];\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 // includeGAContext,\n // trackActivity,\n trackPageView: tpv,\n } = props;\n this.uid = uid;\n this.trackPageView = tpv;\n this.serverData = props?.pageViewContext?.data || {};\n\n // Set options\n const stateStorageStrategy = \"cookieAndLocalStorage\";\n const baseOptions: TrackerConfiguration = {\n appId,\n cookieDomain,\n eventMethod,\n stateStorageStrategy,\n postPath,\n };\n // Initialize trackers\n newTracker(this.avalancheTrackerName, avalancheCollector, baseOptions);\n\n newTracker(\n this.bronzeAvalancheTrackerName,\n avalancheCollector,\n baseOptions,\n );\n\n // Page view tracker\n newTracker(this.pvAvalancheTrackerName, avalancheCollector, {\n ...baseOptions,\n eventMethod: eventMethod === \"post\" ? \"beacon\" : eventMethod,\n });\n\n setCookiePath(\"/\");\n if (uid) {\n setUserId(uid);\n }\n // Create a singleton instance\n Snowplow.instance = this;\n }\n\n setContexts(contexts: SelfDescribingJson<Record<string, unknown>>[]) {\n this.contexts = contexts;\n // Update identity context\n const index = this.contexts?.findIndex(ctx =>\n ctx.schema?.includes(\"identity_context\"),\n );\n if (index > -1) {\n this.contexts[index].data.domain_userid = this.uid;\n }\n return this;\n }\n\n // Send a page view event\n async trackView(event?: PageViewEvent) {\n if (this.trackPageView) {\n await trackPageView({ ...event, context: this.contexts }, [\n this.avalancheTrackerName,\n ]);\n }\n return this;\n }\n\n // Send a structured event with contexts\n async trackEvent(event: StructuredEvent) {\n await trackStructEvent({ ...event, context: this.contexts }, [\n this.bronzeAvalancheTrackerName,\n ]);\n return this;\n }\n\n // Send a custom event with defined schema and optional contexts\n async trackUnstructEvent(event: SelfDescribingJson<Record<string, unknown>>) {\n if (!event) {\n return this;\n }\n await trackSelfDescribingEvent({ event, context: this.contexts }, [\n 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 }) => {\n // Convert type into relevant function\n if (type === \"structured\") {\n this.addEventHandler(name, (params?: Record<string, unknown>) => {\n this.trackEvent(\n makePayload({\n ...params,\n context,\n }) as StructuredEvent,\n );\n });\n } else {\n this.addEventHandler(name, (params?: Record<string, unknown>) => {\n this.trackUnstructEvent(\n makePayload({\n ...params,\n context,\n }) as SelfDescribingJson<Record<string, unknown>>,\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 if (this.eventHandlers[name]) {\n this.eventHandlers[name](params);\n }\n return this;\n }\n\n static getInstance(props?: TrackingProps) {\n if (!Snowplow.instance) {\n Snowplow.instance = new Snowplow(props);\n }\n return Snowplow.instance;\n }\n}\n"],"names":["newTracker","setCookiePath","setUserId","trackPageView","trackSelfDescribingEvent","trackStructEvent","Snowplow","setContexts","contexts","index","findIndex","ctx","schema","includes","data","domain_userid","uid","trackView","event","context","avalancheTrackerName","trackEvent","bronzeAvalancheTrackerName","trackUnstructEvent","addEventHandlers","eventDefinitions","serverData","forEach","name","type","makePayload","addEventHandler","params","handler","eventHandlers","removeEventHandler","trigger","getInstance","props","instance","constructor","pvAvalancheTrackerName","appId","cookieDomain","avalancheCollector","eventMethod","postPath","tpv","pageViewContext","stateStorageStrategy","baseOptions"],"mappings":"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"}
1
+ {"version":3,"sources":["../../../src/snowplow/Snowplow.ts"],"sourcesContent":["import {\n PageViewEvent,\n StructuredEvent,\n TrackerConfiguration,\n newTracker,\n setCookiePath,\n setUserId,\n trackPageView,\n trackSelfDescribingEvent,\n trackStructEvent,\n} from \"@snowplow/browser-tracker\";\nimport { makeContexts, updateIdentityContext } from \"./contexts\";\nimport { EventDefinition, SerialisedEvent, TrackingProps } from \"./types\";\n\nexport type FrontOfficeStructuredEvent = StructuredEvent & {\n serviceChannelIdentifier: string;\n};\n\n/**\n * This class is an abstraction which wraps Snowplow\n * and exposes common methods with other services:\n * - trackEvent : sends a standard payload\n * - trackUnstructEvent : sends a payload for custom schema\n */\nexport class Snowplow {\n avalancheTrackerName = \"sb-ava\";\n\n bronzeAvalancheTrackerName = \"sb-ava-br\";\n\n pvAvalancheTrackerName = \"sb-ava-pv\";\n\n uid: unknown = \"\";\n\n trackPageView: boolean = false;\n\n contexts: Record<string, SerialisedEvent> = {};\n\n pvContext: SerialisedEvent[] = [];\n\n structContext: SerialisedEvent[] = [];\n\n serverData: Record<string, unknown> = {};\n\n eventHandlers: Record<string, (params?: Record<string, unknown>) => void> =\n {};\n\n static instance: Snowplow | undefined;\n\n constructor(props?: TrackingProps) {\n if (!props) return;\n\n const {\n appId,\n cookieDomain,\n avalancheCollector,\n eventMethod,\n uid,\n postPath,\n trackPageView: tpv,\n } = props;\n this.uid = uid;\n this.trackPageView = tpv;\n this.serverData = props?.pageViewContext?.data || {};\n\n // Set options\n const stateStorageStrategy = \"cookieAndLocalStorage\";\n const baseOptions: TrackerConfiguration = {\n appId,\n cookieDomain,\n eventMethod,\n stateStorageStrategy,\n postPath,\n };\n // Initialize trackers\n newTracker(this.avalancheTrackerName, avalancheCollector, baseOptions);\n\n newTracker(\n this.bronzeAvalancheTrackerName,\n avalancheCollector,\n baseOptions,\n );\n\n // Page view tracker\n newTracker(this.pvAvalancheTrackerName, avalancheCollector, {\n ...baseOptions,\n eventMethod: eventMethod === \"post\" ? \"beacon\" : eventMethod,\n });\n\n setCookiePath(\"/\");\n if (uid) {\n setUserId(uid);\n }\n // Create a singleton instance\n Snowplow.instance = this;\n }\n\n setContexts(contexts: Record<string, SerialisedEvent>) {\n this.contexts = updateIdentityContext(contexts, this.uid);\n this.pvContext = Object.values(this.contexts);\n this.structContext = makeContexts(\n [\"distributionChannelContext\", \"serviceChannelContext\"],\n this.contexts,\n );\n return this;\n }\n\n // Send a page view event\n async trackView(event?: PageViewEvent) {\n if (this.trackPageView) {\n await trackPageView({ ...event, context: this.pvContext }, [\n this.avalancheTrackerName,\n ]);\n }\n return this;\n }\n\n // Send a structured event with contexts\n async trackEvent(event: StructuredEvent) {\n await trackStructEvent({ ...event, context: this.structContext }, [\n this.bronzeAvalancheTrackerName,\n ]);\n return this;\n }\n\n // Send a custom event with defined schema and optional contexts\n async trackUnstructEvent(event: SerialisedEvent, contexts?: string[]) {\n if (!event) {\n return this;\n }\n\n if (contexts && Array.isArray(contexts) && contexts.length > 0) {\n // Add context to the event\n const context = makeContexts(contexts!, this.contexts);\n\n await trackSelfDescribingEvent({ event, context }, [\n this.avalancheTrackerName,\n ]);\n } else {\n await trackSelfDescribingEvent({ event }, [this.avalancheTrackerName]);\n }\n return this;\n }\n\n addEventHandlers(eventDefinitions: EventDefinition[]) {\n // Add server context to makePayload functions\n const context = this.serverData;\n\n eventDefinitions.forEach(({ name, type, makePayload, contexts }) => {\n // Convert type into relevant function\n if (type === \"structured\") {\n this.addEventHandler(name, (params?: Record<string, unknown>) => {\n this.trackEvent(\n makePayload({\n ...params,\n context,\n }) as StructuredEvent,\n );\n });\n } else {\n this.addEventHandler(name, (params?: Record<string, unknown>) => {\n const payload = makePayload({\n ...params,\n context,\n }) as SerialisedEvent;\n\n if (contexts && Array.isArray(contexts) && contexts.length > 0) {\n this.trackUnstructEvent(payload, contexts);\n } else {\n this.trackUnstructEvent(payload);\n }\n });\n }\n });\n return this;\n }\n\n private addEventHandler(\n name: string,\n handler: (params?: Record<string, unknown>) => void,\n ) {\n this.eventHandlers[name] = handler;\n return this;\n }\n\n private removeEventHandler(name: string) {\n delete this.eventHandlers[name];\n return this;\n }\n\n trigger(name: string, params?: Record<string, unknown>) {\n const handler = this.eventHandlers[name];\n\n if (\n Object.prototype.hasOwnProperty.call(this.eventHandlers, name) &&\n typeof handler === \"function\"\n ) {\n handler(params);\n }\n return this;\n }\n\n static getInstance(props?: TrackingProps) {\n if (!Snowplow.instance) {\n Snowplow.instance = new Snowplow(props);\n }\n return Snowplow.instance;\n }\n}\n"],"names":["newTracker","setCookiePath","setUserId","trackPageView","trackSelfDescribingEvent","trackStructEvent","makeContexts","updateIdentityContext","Snowplow","setContexts","contexts","uid","pvContext","Object","values","structContext","trackView","event","context","avalancheTrackerName","trackEvent","bronzeAvalancheTrackerName","trackUnstructEvent","Array","isArray","length","addEventHandlers","eventDefinitions","serverData","forEach","name","type","makePayload","addEventHandler","params","payload","handler","eventHandlers","removeEventHandler","trigger","prototype","hasOwnProperty","call","getInstance","props","instance","constructor","pvAvalancheTrackerName","appId","cookieDomain","avalancheCollector","eventMethod","postPath","tpv","pageViewContext","data","stateStorageStrategy","baseOptions"],"mappings":"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"}
@@ -1,18 +1,47 @@
1
1
  import { snakeCaseKeys } from "../utils";
2
2
  export const getContexts = (config)=>{
3
- const contexts = config && Object.entries(config).filter(([key])=>key.includes("Context") && key !== "includeGAContext").map(([_key, value])=>{
3
+ // Create an object that only contains Context keys
4
+ // and snake_case the keys
5
+ const contextEntries = Object.entries(config || {}).filter(([key])=>key.includes("Context") && key !== "includeGAContext").reduce((acc, [key, value])=>{
4
6
  if (typeof value === "object") {
5
- return snakeCaseKeys({
6
- ...value
7
- });
7
+ return {
8
+ ...acc,
9
+ [key]: snakeCaseKeys({
10
+ ...value
11
+ })
12
+ };
8
13
  }
9
- return snakeCaseKeys({
10
- data: {
11
- service_channel_identifier: value
12
- }
13
- });
14
+ return {
15
+ ...acc,
16
+ [key]: snakeCaseKeys({
17
+ data: {
18
+ service_channel_identifier: value
19
+ }
20
+ })
21
+ };
22
+ }, {});
23
+ return contextEntries;
24
+ };
25
+ export const updateIdentityContext = (contexts, uid)=>{
26
+ const index = Object.keys(contexts).findIndex((ctx)=>{
27
+ var _contexts_ctx_schema;
28
+ return (_contexts_ctx_schema = contexts[ctx].schema) === null || _contexts_ctx_schema === void 0 ? void 0 : _contexts_ctx_schema.includes("identity_context");
14
29
  });
30
+ if (index > -1) {
31
+ const key = Object.keys(contexts)[index];
32
+ return {
33
+ ...contexts,
34
+ [key]: {
35
+ ...contexts[key],
36
+ data: {
37
+ ...contexts[key].data,
38
+ domain_userid: uid
39
+ }
40
+ }
41
+ };
42
+ }
15
43
  return contexts;
16
44
  };
45
+ export const makeContexts = (keys, config)=>(keys || []).map((key)=>config[key]);
17
46
 
18
47
  //# sourceMappingURL=contexts.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/snowplow/contexts.ts"],"sourcesContent":["import { SelfDescribingJson } from \"@snowplow/browser-tracker\";\nimport { TrackingProps } from \"./types\";\nimport { snakeCaseKeys } from \"../utils\";\n\nexport const getContexts = (\n config: TrackingProps,\n): SelfDescribingJson<Record<string, unknown>>[] => {\n const contexts =\n config &&\n Object.entries(config)\n .filter(([key]) => key.includes(\"Context\") && key !== \"includeGAContext\")\n .map(([_key, value]) => {\n if (typeof value === \"object\") {\n return snakeCaseKeys(({ ...value }));\n }\n return snakeCaseKeys({ data: { service_channel_identifier: value } });\n });\n\n return contexts as unknown as SelfDescribingJson<Record<string, unknown>>[];\n};\n"],"names":["snakeCaseKeys","getContexts","config","contexts","Object","entries","filter","key","includes","map","_key","value","data","service_channel_identifier"],"mappings":"AAEA,SAASA,aAAa,QAAQ,WAAW;AAEzC,OAAO,MAAMC,cAAc,CACzBC;IAEA,MAAMC,WACJD,UACAE,OAAOC,OAAO,CAACH,QACZI,MAAM,CAAC,CAAC,CAACC,IAAI,GAAKA,IAAIC,QAAQ,CAAC,cAAcD,QAAQ,oBACrDE,GAAG,CAAC,CAAC,CAACC,MAAMC,MAAM;QACjB,IAAI,OAAOA,UAAU,UAAU;YAC7B,OAAOX,cAAe;gBAAE,GAAGW,KAAK;YAAC;QACnC;QACA,OAAOX,cAAc;YAAEY,MAAM;gBAAEC,4BAA4BF;YAAM;QAAE;IACrE;IAEJ,OAAOR;AACT,EAAE"}
1
+ {"version":3,"sources":["../../../src/snowplow/contexts.ts"],"sourcesContent":["import { snakeCaseKeys } from \"../utils\";\nimport { SerialisedEvent, TrackingProps } from \"./types\";\n\nexport const getContexts = (\n config: TrackingProps,\n): Record<string, SerialisedEvent> => {\n // Create an object that only contains Context keys\n // and snake_case the keys\n const contextEntries = Object.entries(config || {})\n .filter(([key]) => key.includes(\"Context\") && key !== \"includeGAContext\")\n .reduce((acc, [key, value]) => {\n if (typeof value === \"object\") {\n return { ...acc, [key]: snakeCaseKeys({ ...value }) };\n }\n return {\n ...acc,\n [key]: snakeCaseKeys({ data: { service_channel_identifier: value } }),\n };\n }, {});\n\n return contextEntries as Record<string, SerialisedEvent>;\n};\n\nexport const updateIdentityContext = (\n contexts: Record<string, SerialisedEvent>,\n uid: unknown,\n): Record<string, SerialisedEvent> => {\n const index = Object.keys(contexts).findIndex(ctx =>\n contexts[ctx].schema?.includes(\"identity_context\"),\n );\n if (index > -1) {\n const key = Object.keys(contexts)[index];\n return {\n ...contexts,\n [key]: {\n ...contexts[key],\n data: {\n ...contexts[key].data,\n domain_userid: uid,\n },\n },\n };\n }\n return contexts;\n};\n\nexport const makeContexts = (\n keys: string[],\n config: Record<string, SerialisedEvent>,\n): SerialisedEvent[] => (keys || []).map(key => config[key]);\n"],"names":["snakeCaseKeys","getContexts","config","contextEntries","Object","entries","filter","key","includes","reduce","acc","value","data","service_channel_identifier","updateIdentityContext","contexts","uid","index","keys","findIndex","ctx","schema","domain_userid","makeContexts","map"],"mappings":"AAAA,SAASA,aAAa,QAAQ,WAAW;AAGzC,OAAO,MAAMC,cAAc,CACzBC;IAEA,mDAAmD;IACnD,0BAA0B;IAC1B,MAAMC,iBAAiBC,OAAOC,OAAO,CAACH,UAAU,CAAC,GAC9CI,MAAM,CAAC,CAAC,CAACC,IAAI,GAAKA,IAAIC,QAAQ,CAAC,cAAcD,QAAQ,oBACrDE,MAAM,CAAC,CAACC,KAAK,CAACH,KAAKI,MAAM;QACxB,IAAI,OAAOA,UAAU,UAAU;YAC7B,OAAO;gBAAE,GAAGD,GAAG;gBAAE,CAACH,IAAI,EAAEP,cAAc;oBAAE,GAAGW,KAAK;gBAAC;YAAG;QACtD;QACA,OAAO;YACL,GAAGD,GAAG;YACN,CAACH,IAAI,EAAEP,cAAc;gBAAEY,MAAM;oBAAEC,4BAA4BF;gBAAM;YAAE;QACrE;IACF,GAAG,CAAC;IAEN,OAAOR;AACT,EAAE;AAEF,OAAO,MAAMW,wBAAwB,CACnCC,UACAC;IAEA,MAAMC,QAAQb,OAAOc,IAAI,CAACH,UAAUI,SAAS,CAACC,CAAAA;YAC5CL;gBAAAA,uBAAAA,QAAQ,CAACK,IAAI,CAACC,MAAM,cAApBN,2CAAAA,qBAAsBP,QAAQ,CAAC;;IAEjC,IAAIS,QAAQ,CAAC,GAAG;QACd,MAAMV,MAAMH,OAAOc,IAAI,CAACH,SAAS,CAACE,MAAM;QACxC,OAAO;YACL,GAAGF,QAAQ;YACX,CAACR,IAAI,EAAE;gBACL,GAAGQ,QAAQ,CAACR,IAAI;gBAChBK,MAAM;oBACJ,GAAGG,QAAQ,CAACR,IAAI,CAACK,IAAI;oBACrBU,eAAeN;gBACjB;YACF;QACF;IACF;IACA,OAAOD;AACT,EAAE;AAEF,OAAO,MAAMQ,eAAe,CAC1BL,MACAhB,SACsB,AAACgB,CAAAA,QAAQ,EAAE,AAAD,EAAGM,GAAG,CAACjB,CAAAA,MAAOL,MAAM,CAACK,IAAI,EAAE"}
@@ -3,13 +3,15 @@ import { qcpEventDefinitions } from "./qcp";
3
3
  import { referralEventDefinitions } from "./referral";
4
4
  import { interventionEventDefinitions } from "./intervention";
5
5
  import { questionnaireEventDefinitions } from "./questionnaire";
6
+ import { personalisedCoverEventDefinitions } from "./personalised_cover";
6
7
  // All events (keep up to date with new files)
7
8
  export const eventDefinitions = [
8
9
  ...baseEventDefinitions,
9
10
  ...qcpEventDefinitions,
10
11
  ...referralEventDefinitions,
11
12
  ...interventionEventDefinitions,
12
- ...questionnaireEventDefinitions
13
+ ...questionnaireEventDefinitions,
14
+ ...personalisedCoverEventDefinitions
13
15
  ];
14
16
  export const qcpPageEvents = [
15
17
  ...baseEventDefinitions,
@@ -19,6 +21,10 @@ export const referralPageEvents = [
19
21
  ...baseEventDefinitions,
20
22
  ...referralEventDefinitions
21
23
  ];
24
+ export const personalisedCoverPageEvents = [
25
+ ...baseEventDefinitions,
26
+ ...personalisedCoverEventDefinitions
27
+ ];
22
28
  export const interventionPageEvents = [
23
29
  ...interventionEventDefinitions
24
30
  ];
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/snowplow/event-definitions/index.ts"],"sourcesContent":["import { baseEventDefinitions } from \"./base\";\nimport { qcpEventDefinitions } from \"./qcp\";\nimport { referralEventDefinitions } from \"./referral\";\nimport { interventionEventDefinitions } from \"./intervention\";\nimport { questionnaireEventDefinitions } from \"./questionnaire\";\n\n// All events (keep up to date with new files)\nexport const eventDefinitions = [\n ...baseEventDefinitions,\n ...qcpEventDefinitions,\n ...referralEventDefinitions,\n ...interventionEventDefinitions,\n ...questionnaireEventDefinitions,\n];\n\nexport const qcpPageEvents = [...baseEventDefinitions, ...qcpEventDefinitions];\n\nexport const referralPageEvents = [\n ...baseEventDefinitions,\n ...referralEventDefinitions,\n];\n\nexport const interventionPageEvents = [...interventionEventDefinitions];\n\nexport type { InterventionPayload } from \"./intervention\";\n\nexport const questionnairePageEvents = [...questionnaireEventDefinitions];\n\n// Create a new export for each kind of page below\n// containing just the subset needed for that page\n"],"names":["baseEventDefinitions","qcpEventDefinitions","referralEventDefinitions","interventionEventDefinitions","questionnaireEventDefinitions","eventDefinitions","qcpPageEvents","referralPageEvents","interventionPageEvents","questionnairePageEvents"],"mappings":"AAAA,SAASA,oBAAoB,QAAQ,SAAS;AAC9C,SAASC,mBAAmB,QAAQ,QAAQ;AAC5C,SAASC,wBAAwB,QAAQ,aAAa;AACtD,SAASC,4BAA4B,QAAQ,iBAAiB;AAC9D,SAASC,6BAA6B,QAAQ,kBAAkB;AAEhE,8CAA8C;AAC9C,OAAO,MAAMC,mBAAmB;OAC3BL;OACAC;OACAC;OACAC;OACAC;CACJ,CAAC;AAEF,OAAO,MAAME,gBAAgB;OAAIN;OAAyBC;CAAoB,CAAC;AAE/E,OAAO,MAAMM,qBAAqB;OAC7BP;OACAE;CACJ,CAAC;AAEF,OAAO,MAAMM,yBAAyB;OAAIL;CAA6B,CAAC;AAIxE,OAAO,MAAMM,0BAA0B;OAAIL;CAA8B,CAAC,CAE1E,kDAAkD;CAClD,kDAAkD"}
1
+ {"version":3,"sources":["../../../../src/snowplow/event-definitions/index.ts"],"sourcesContent":["import { baseEventDefinitions } from \"./base\";\nimport { qcpEventDefinitions } from \"./qcp\";\nimport { referralEventDefinitions } from \"./referral\";\nimport { interventionEventDefinitions } from \"./intervention\";\nimport { questionnaireEventDefinitions } from \"./questionnaire\";\nimport { personalisedCoverEventDefinitions } from \"./personalised_cover\";\n\n// All events (keep up to date with new files)\nexport const eventDefinitions = [\n ...baseEventDefinitions,\n ...qcpEventDefinitions,\n ...referralEventDefinitions,\n ...interventionEventDefinitions,\n ...questionnaireEventDefinitions,\n ...personalisedCoverEventDefinitions,\n];\n\nexport const qcpPageEvents = [...baseEventDefinitions, ...qcpEventDefinitions];\n\nexport const referralPageEvents = [\n ...baseEventDefinitions,\n ...referralEventDefinitions,\n];\n\nexport const personalisedCoverPageEvents = [\n ...baseEventDefinitions,\n ...personalisedCoverEventDefinitions,\n];\n\nexport const interventionPageEvents = [...interventionEventDefinitions];\n\nexport type { InterventionPayload } from \"./intervention\";\n\nexport const questionnairePageEvents = [...questionnaireEventDefinitions];\n\n// Create a new export for each kind of page below\n// containing just the subset needed for that page\n"],"names":["baseEventDefinitions","qcpEventDefinitions","referralEventDefinitions","interventionEventDefinitions","questionnaireEventDefinitions","personalisedCoverEventDefinitions","eventDefinitions","qcpPageEvents","referralPageEvents","personalisedCoverPageEvents","interventionPageEvents","questionnairePageEvents"],"mappings":"AAAA,SAASA,oBAAoB,QAAQ,SAAS;AAC9C,SAASC,mBAAmB,QAAQ,QAAQ;AAC5C,SAASC,wBAAwB,QAAQ,aAAa;AACtD,SAASC,4BAA4B,QAAQ,iBAAiB;AAC9D,SAASC,6BAA6B,QAAQ,kBAAkB;AAChE,SAASC,iCAAiC,QAAQ,uBAAuB;AAEzE,8CAA8C;AAC9C,OAAO,MAAMC,mBAAmB;OAC3BN;OACAC;OACAC;OACAC;OACAC;OACAC;CACJ,CAAC;AAEF,OAAO,MAAME,gBAAgB;OAAIP;OAAyBC;CAAoB,CAAC;AAE/E,OAAO,MAAMO,qBAAqB;OAC7BR;OACAE;CACJ,CAAC;AAEF,OAAO,MAAMO,8BAA8B;OACtCT;OACAK;CACJ,CAAC;AAEF,OAAO,MAAMK,yBAAyB;OAAIP;CAA6B,CAAC;AAIxE,OAAO,MAAMQ,0BAA0B;OAAIP;CAA8B,CAAC,CAE1E,kDAAkD;CAClD,kDAAkD"}
@@ -0,0 +1,131 @@
1
+ import { redact } from "./redaction";
2
+ import { DELIMITER } from "../constants";
3
+ import { snakeCase } from "../../utils";
4
+ /**
5
+ * Event definitions for Snowplow
6
+ * @type {EventDefinition[]}
7
+ * @property {string} name - The name of the event, to use when triggering
8
+ * @property {string} type - The type of the event (structured | unstructured)
9
+ * @property {makePayload} makePayload
10
+ * - Function that creates the payload for the event;
11
+ * - Allows optional params object to be passed in
12
+ *
13
+ * @example
14
+ * Parent
15
+ * import { getSnowplowConfig, SnowplowProvider } from "@simplybusiness/services";
16
+ * const snowplowProps = getSnowplowConfig(pageData);
17
+ * <SnowplowProvider scripts={snowplowProps!}>{children}</SnowplowProvider>
18
+ *
19
+ * Child
20
+ * import { useSnowplowContext } from "@simplybusiness/services";
21
+ * const { snowplow } = useSnowplowContext();
22
+ * const handlerFunction = () => snowplow?.trigger("eventNameHere");
23
+ */ export const personalisedCoverEventDefinitions = [
24
+ {
25
+ name: "seeMoreClicked",
26
+ type: "structured",
27
+ makePayload: (_)=>({
28
+ category: "personalised_cover",
29
+ action: "see_more_clicked",
30
+ label: "page",
31
+ property: "personalised_cover"
32
+ })
33
+ },
34
+ {
35
+ name: "selectPackageClicked",
36
+ type: "structured",
37
+ makePayload: (_)=>({
38
+ category: "personalised_cover",
39
+ action: "select_package_clicked",
40
+ label: "page",
41
+ property: "personalised_cover"
42
+ })
43
+ },
44
+ {
45
+ name: "validationShown",
46
+ type: "structured",
47
+ makePayload: (params)=>{
48
+ const { cover, question } = params;
49
+ return {
50
+ category: "personalised_cover",
51
+ action: "validation_shown",
52
+ label: "cover_question",
53
+ property: `${snakeCase(cover)}_${snakeCase(question)}`
54
+ };
55
+ }
56
+ },
57
+ {
58
+ name: "coverQuestionAnswered",
59
+ type: "unstructured",
60
+ makePayload: (params)=>{
61
+ const { context } = params;
62
+ const { question, answer } = redact(params);
63
+ // Flatten the answer to a delimited string
64
+ const flatAnswer = Array.isArray(answer) ? answer.join(DELIMITER) : answer;
65
+ return {
66
+ schema: "iglu:com.simplybusiness/form_question_answered/jsonschema/1-0-1",
67
+ data: {
68
+ site: context.site,
69
+ page_name: "personalised_cover",
70
+ section_name: "Personalised Cover Questions",
71
+ question,
72
+ answer: flatAnswer
73
+ }
74
+ };
75
+ }
76
+ },
77
+ {
78
+ name: "limitLinkClicked",
79
+ type: "structured",
80
+ makePayload: (params)=>{
81
+ const { label } = params;
82
+ return {
83
+ category: "personalised_cover",
84
+ action: "limit_link_clicked",
85
+ label,
86
+ property: "link_clicked"
87
+ };
88
+ }
89
+ },
90
+ {
91
+ name: "limitChanged",
92
+ type: "structured",
93
+ makePayload: (params)=>{
94
+ const { label, limit } = params;
95
+ return {
96
+ category: "personalised_cover",
97
+ action: "limit_changed",
98
+ label,
99
+ property: limit
100
+ };
101
+ }
102
+ },
103
+ {
104
+ name: "coverPresented",
105
+ type: "structured",
106
+ makePayload: (params)=>{
107
+ const { property } = params;
108
+ return {
109
+ category: "personalised_cover",
110
+ action: "cover_presented",
111
+ label: "cover_name",
112
+ property
113
+ };
114
+ }
115
+ },
116
+ {
117
+ name: "moreInfoClicked",
118
+ type: "structured",
119
+ makePayload: (params)=>{
120
+ const { property } = params;
121
+ return {
122
+ category: "personalised_cover",
123
+ action: "more_info_clicked",
124
+ label: "cover_name",
125
+ property
126
+ };
127
+ }
128
+ }
129
+ ];
130
+
131
+ //# sourceMappingURL=personalised_cover.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../src/snowplow/event-definitions/personalised_cover.ts"],"sourcesContent":["import { EventDefinition, ParamsType } from \"../types\";\nimport { redact } from \"./redaction\";\nimport { DELIMITER } from \"../constants\";\nimport { snakeCase } from \"../../utils\";\n\n/**\n * Event definitions for Snowplow\n * @type {EventDefinition[]}\n * @property {string} name - The name of the event, to use when triggering\n * @property {string} type - The type of the event (structured | unstructured)\n * @property {makePayload} makePayload\n * - Function that creates the payload for the event;\n * - Allows optional params object to be passed in\n *\n * @example\n * Parent\n * import { getSnowplowConfig, SnowplowProvider } from \"@simplybusiness/services\";\n * const snowplowProps = getSnowplowConfig(pageData);\n * <SnowplowProvider scripts={snowplowProps!}>{children}</SnowplowProvider>\n *\n * Child\n * import { useSnowplowContext } from \"@simplybusiness/services\";\n * const { snowplow } = useSnowplowContext();\n * const handlerFunction = () => snowplow?.trigger(\"eventNameHere\");\n */\n\nexport const personalisedCoverEventDefinitions: EventDefinition[] = [\n {\n name: \"seeMoreClicked\",\n type: \"structured\",\n makePayload: _ => ({\n category: \"personalised_cover\",\n action: \"see_more_clicked\",\n label: \"page\",\n property: \"personalised_cover\",\n }),\n },\n {\n name: \"selectPackageClicked\",\n type: \"structured\",\n makePayload: _ => ({\n category: \"personalised_cover\",\n action: \"select_package_clicked\",\n label: \"page\",\n property: \"personalised_cover\",\n }),\n },\n {\n name: \"validationShown\",\n type: \"structured\",\n makePayload: params => {\n const { cover, question } = params as ParamsType;\n\n return {\n category: \"personalised_cover\",\n action: \"validation_shown\",\n label: \"cover_question\",\n property: `${snakeCase(cover)}_${snakeCase(question)}`,\n };\n },\n },\n {\n name: \"coverQuestionAnswered\",\n type: \"unstructured\",\n makePayload: params => {\n const { context } = params as ParamsType;\n const { question, answer } = redact(params as ParamsType);\n // Flatten the answer to a delimited string\n const flatAnswer = Array.isArray(answer)\n ? answer.join(DELIMITER)\n : answer;\n\n return {\n schema:\n \"iglu:com.simplybusiness/form_question_answered/jsonschema/1-0-1\",\n data: {\n site: context.site,\n page_name: \"personalised_cover\",\n section_name: \"Personalised Cover Questions\",\n question,\n answer: flatAnswer,\n },\n };\n },\n },\n {\n name: \"limitLinkClicked\",\n type: \"structured\",\n makePayload: params => {\n const { label } = params as ParamsType;\n\n return {\n category: \"personalised_cover\",\n action: \"limit_link_clicked\",\n label,\n property: \"link_clicked\",\n };\n },\n },\n {\n name: \"limitChanged\",\n type: \"structured\",\n makePayload: params => {\n const { label, limit } = params as ParamsType;\n\n return {\n category: \"personalised_cover\",\n action: \"limit_changed\",\n label,\n property: limit,\n };\n },\n },\n {\n name: \"coverPresented\",\n type: \"structured\",\n makePayload: params => {\n const { property } = params as ParamsType;\n\n return {\n category: \"personalised_cover\",\n action: \"cover_presented\",\n label: \"cover_name\",\n property,\n };\n },\n },\n {\n name: \"moreInfoClicked\",\n type: \"structured\",\n makePayload: params => {\n const { property } = params as ParamsType;\n\n return {\n category: \"personalised_cover\",\n action: \"more_info_clicked\",\n label: \"cover_name\",\n property,\n };\n },\n },\n];\n"],"names":["redact","DELIMITER","snakeCase","personalisedCoverEventDefinitions","name","type","makePayload","_","category","action","label","property","params","cover","question","context","answer","flatAnswer","Array","isArray","join","schema","data","site","page_name","section_name","limit"],"mappings":"AACA,SAASA,MAAM,QAAQ,cAAc;AACrC,SAASC,SAAS,QAAQ,eAAe;AACzC,SAASC,SAAS,QAAQ,cAAc;AAExC;;;;;;;;;;;;;;;;;;;CAmBC,GAED,OAAO,MAAMC,oCAAuD;IAClE;QACEC,MAAM;QACNC,MAAM;QACNC,aAAaC,CAAAA,IAAM,CAAA;gBACjBC,UAAU;gBACVC,QAAQ;gBACRC,OAAO;gBACPC,UAAU;YACZ,CAAA;IACF;IACA;QACEP,MAAM;QACNC,MAAM;QACNC,aAAaC,CAAAA,IAAM,CAAA;gBACjBC,UAAU;gBACVC,QAAQ;gBACRC,OAAO;gBACPC,UAAU;YACZ,CAAA;IACF;IACA;QACEP,MAAM;QACNC,MAAM;QACNC,aAAaM,CAAAA;YACX,MAAM,EAAEC,KAAK,EAAEC,QAAQ,EAAE,GAAGF;YAE5B,OAAO;gBACLJ,UAAU;gBACVC,QAAQ;gBACRC,OAAO;gBACPC,UAAU,GAAGT,UAAUW,OAAO,CAAC,EAAEX,UAAUY,WAAW;YACxD;QACF;IACF;IACA;QACEV,MAAM;QACNC,MAAM;QACNC,aAAaM,CAAAA;YACX,MAAM,EAAEG,OAAO,EAAE,GAAGH;YACpB,MAAM,EAAEE,QAAQ,EAAEE,MAAM,EAAE,GAAGhB,OAAOY;YACpC,2CAA2C;YAC3C,MAAMK,aAAaC,MAAMC,OAAO,CAACH,UAC7BA,OAAOI,IAAI,CAACnB,aACZe;YAEJ,OAAO;gBACLK,QACE;gBACFC,MAAM;oBACJC,MAAMR,QAAQQ,IAAI;oBAClBC,WAAW;oBACXC,cAAc;oBACdX;oBACAE,QAAQC;gBACV;YACF;QACF;IACF;IACA;QACEb,MAAM;QACNC,MAAM;QACNC,aAAaM,CAAAA;YACX,MAAM,EAAEF,KAAK,EAAE,GAAGE;YAElB,OAAO;gBACLJ,UAAU;gBACVC,QAAQ;gBACRC;gBACAC,UAAU;YACZ;QACF;IACF;IACA;QACEP,MAAM;QACNC,MAAM;QACNC,aAAaM,CAAAA;YACX,MAAM,EAAEF,KAAK,EAAEgB,KAAK,EAAE,GAAGd;YAEzB,OAAO;gBACLJ,UAAU;gBACVC,QAAQ;gBACRC;gBACAC,UAAUe;YACZ;QACF;IACF;IACA;QACEtB,MAAM;QACNC,MAAM;QACNC,aAAaM,CAAAA;YACX,MAAM,EAAED,QAAQ,EAAE,GAAGC;YAErB,OAAO;gBACLJ,UAAU;gBACVC,QAAQ;gBACRC,OAAO;gBACPC;YACF;QACF;IACF;IACA;QACEP,MAAM;QACNC,MAAM;QACNC,aAAaM,CAAAA;YACX,MAAM,EAAED,QAAQ,EAAE,GAAGC;YAErB,OAAO;gBACLJ,UAAU;gBACVC,QAAQ;gBACRC,OAAO;gBACPC;YACF;QACF;IACF;CACD,CAAC"}
@@ -1,24 +1,5 @@
1
1
  import { snakeCase } from "../../utils";
2
- /**
3
- * Event definitions for Snowplow
4
- * @type {EventDefinition[]}
5
- * @property {string} name - The name of the event, to use when triggering
6
- * @property {string} type - The type of the event (structured | unstructured)
7
- * @property {makePayload} makePayload
8
- * - Function that creates the payload for the event;
9
- * - Allows optional params object to be passed in
10
- *
11
- * @example
12
- * Parent
13
- * import { getSnowplowConfig, SnowplowProvider } from "@simplybusiness/services";
14
- * const snowplowProps = getSnowplowConfig(pageData);
15
- * <SnowplowProvider scripts={snowplowProps!}>{children}</SnowplowProvider>
16
- *
17
- * Child
18
- * import { useSnowplowContext } from "@simplybusiness/services";
19
- * const { snowplow } = useSnowplowContext();
20
- * const handlerFunction = () => snowplow?.trigger("eventNameHere");
21
- */ // QCP page events
2
+ // QCP page events
22
3
  export const qcpEventDefinitions = [
23
4
  {
24
5
  // QDP details button
@@ -128,7 +109,10 @@ export const qcpEventDefinitions = [
128
109
  to_value: toValue
129
110
  }
130
111
  };
131
- }
112
+ },
113
+ contexts: [
114
+ "distributionChannelContext"
115
+ ]
132
116
  },
133
117
  {
134
118
  name: "ratingsModalOpened",
@@ -231,7 +215,10 @@ export const qcpEventDefinitions = [
231
215
  vertical
232
216
  }
233
217
  };
234
- }
218
+ },
219
+ contexts: [
220
+ "serviceChannelContext"
221
+ ]
235
222
  },
236
223
  {
237
224
  name: "helpChatLinkClicked",
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/snowplow/event-definitions/qcp.ts"],"sourcesContent":["import { snakeCase } from \"../../utils\";\nimport { EventDefinition, LinkType, ParamsType } from \"../types\";\n\n/**\n * Event definitions for Snowplow\n * @type {EventDefinition[]}\n * @property {string} name - The name of the event, to use when triggering\n * @property {string} type - The type of the event (structured | unstructured)\n * @property {makePayload} makePayload\n * - Function that creates the payload for the event;\n * - Allows optional params object to be passed in\n *\n * @example\n * Parent\n * import { getSnowplowConfig, SnowplowProvider } from \"@simplybusiness/services\";\n * const snowplowProps = getSnowplowConfig(pageData);\n * <SnowplowProvider scripts={snowplowProps!}>{children}</SnowplowProvider>\n *\n * Child\n * import { useSnowplowContext } from \"@simplybusiness/services\";\n * const { snowplow } = useSnowplowContext();\n * const handlerFunction = () => snowplow?.trigger(\"eventNameHere\");\n */\n\n// QCP page events\nexport const qcpEventDefinitions: EventDefinition[] = [\n {\n // QDP details button\n name: \"detailsClicked\",\n type: \"structured\",\n makePayload: () => ({\n category: \"comparison_cta\",\n action: \"link_click\",\n label: \"Details\",\n }),\n },\n {\n // Buy button\n name: \"selectClicked\",\n type: \"structured\",\n makePayload: () => ({\n category: \"comparison_cta\",\n action: \"link_click\",\n label: \"Buy\",\n }),\n },\n {\n // Quote Details Slider Next steps button\n name: \"nextStepsClicked\",\n type: \"structured\",\n makePayload: () => ({\n category: \"quote_details_slider_next_step_cta\",\n action: \"link_click\",\n label: \"Next steps\",\n }),\n },\n {\n // Toggle deductibles accordion\n name: \"deductiblesClicked\",\n type: \"structured\",\n makePayload: () => ({\n category: \"us-qcp-react\",\n action: \"view_deductables_clicked\",\n label: \"view_deductables_clicked\",\n property: window.location.href,\n }),\n },\n {\n name: \"deductiblesClickedUk\",\n type: \"structured\",\n makePayload: params => {\n const { label, deviceType } = params as ParamsType;\n const urlFriendlyLabel = label.replace(/ /g, \"-\").toLowerCase();\n\n return {\n category: `uk-qcp-react-${deviceType}-${urlFriendlyLabel}-view-excess-toggle`,\n action: \"view_excess_clicked\",\n label,\n property: window.location.href,\n };\n },\n },\n {\n // Quote Details Slider opened\n name: \"sliderOpened\",\n type: \"structured\",\n makePayload: params => {\n const { label } = params as ParamsType;\n\n return {\n category: \"comparison_cta\",\n action: \"quote_details_slider_opened\",\n label,\n };\n },\n },\n {\n // Coverage modal opened\n name: \"coverageModalOpened\",\n type: \"structured\",\n makePayload: params => {\n const {\n category,\n product = \"extra_coverage\",\n title,\n } = params as ParamsType;\n const productLabel = snakeCase(product);\n\n return {\n category,\n action: `${productLabel}_${snakeCase(title)}_popup_opened`,\n label: productLabel,\n property: window.location.href,\n };\n },\n },\n {\n // Toggle cover select\n name: \"coverChanged\",\n type: \"unstructured\",\n makePayload: params => {\n const { name = \"\", fromValue = \"\", toValue = \"\" } = params as ParamsType;\n // Derive data\n let action = \"change\";\n\n // This logic is taken directly from Chopin without documentation:\n // If a cover has zero value, then change the action to add or remove\n if (fromValue === \"0\") {\n action = \"add\";\n }\n if (toValue === \"0\") {\n action = \"remove\";\n }\n\n return {\n schema:\n \"iglu:com.simplybusiness/comparison_page_cover_changed/jsonschema/1-0-0\",\n data: {\n name,\n action,\n from_value: fromValue,\n to_value: toValue,\n },\n };\n },\n },\n {\n name: \"ratingsModalOpened\",\n type: \"structured\",\n makePayload: params => {\n const { category, label } = params as ParamsType;\n\n return {\n category,\n action: \"insurer_rating_help_popup_triggered\",\n label,\n property: window.location.href,\n };\n },\n },\n {\n name: \"coverToggleOpened\",\n type: \"structured\",\n makePayload: () => ({\n category: \"qcp_limit_interaction\",\n label: \"limit_interaction\",\n action: \"limit_interaction_clicked\",\n property: window.location.href,\n }),\n },\n {\n name: \"paymentToggleClicked\",\n type: \"structured\",\n makePayload: params => {\n const { category, label } = params as ParamsType;\n\n return {\n category,\n action: \"button_click\",\n label,\n property: window.location.href,\n };\n },\n },\n {\n name: \"insurerDetailsAccordionClicked\",\n type: \"structured\",\n makePayload: () => ({\n category: \"quote_details_slider_insurer_details_description\",\n action: \"accordion_clicked\",\n label: \"accordion_clicked\",\n property: window.location.href,\n }),\n },\n {\n name: \"priceDetailsPopUpOpened\",\n type: \"structured\",\n makePayload: () => ({\n category: \"price_details\",\n action: \"price_details_popup_opened\",\n label: \"Price details\",\n property: window.location.href,\n }),\n },\n {\n name: \"editLimitButtonClicked\",\n type: \"structured\",\n makePayload: () => ({\n category: \"cover_limit_changes\",\n action: \"edit_limit_button_clicked\",\n label: \"Edit Limit\",\n property: window.location.href,\n }),\n },\n {\n name: \"applyButtonClicked\",\n type: \"structured\",\n makePayload: () => ({\n category: \"cover_limit_changes\",\n action: \"apply_button_clicked\",\n label: \"Apply Button Clicked\",\n property: window.location.href,\n }),\n },\n {\n name: \"coverageInfoClicked\",\n type: \"structured\",\n makePayload: params => {\n const { deviceType } = params as ParamsType;\n\n return {\n action: \"show_coverage_info_clicked\",\n category: `uk-qcp-react-${deviceType}-show-coverage-info-toggle`,\n label: \"show_coverage_info_clicked\",\n property: window.location.href,\n };\n },\n },\n {\n name: \"backToApplication\",\n type: \"unstructured\",\n makePayload: params => {\n const { journeyId, vertical } = params as ParamsType;\n\n return {\n schema: \"iglu:com.simplybusiness/back_to_application/jsonschema/1-0-0\",\n data: {\n journey_id: journeyId,\n vertical,\n },\n };\n },\n },\n {\n name: \"helpChatLinkClicked\",\n type: \"structured\",\n makePayload: () => ({\n category: \"help chat for question\",\n action: \"help_chat_for_question_clicked\",\n property: window.location.href,\n }),\n },\n // No quotes referral\n {\n name: \"coverOptionsLinkClicked\",\n type: \"structured\",\n makePayload: () => ({\n category: \"uk-qcp-react-cover-options-link\",\n action: \"cover_options_link_clicked\",\n label: \"cover_options_link_clicked\",\n property: window.location.href,\n }),\n },\n {\n name: \"referralReasonsVariantBCoverOptionsLinkClicked\",\n type: \"structured\",\n makePayload: () => ({\n category: \"uk-24-12-qcp-mvt-referral-reasons\",\n action: \"cover_options_link_clicked_variant_b\",\n label: \"cover_options_link_clicked_variant_b\",\n property: window.location.href,\n }),\n },\n {\n name: \"referralReasonsVariantCCoverOptionsLinkClicked\",\n type: \"structured\",\n makePayload: () => ({\n category: \"uk-24-12-qcp-mvt-referral-reasons\",\n action: \"cover_options_link_clicked_variant_c\",\n label: \"cover_options_link_clicked_variant_c\",\n property: window.location.href,\n }),\n },\n {\n name: \"phoneNumberLinkClicked\",\n type: \"structured\",\n makePayload: () => ({\n category: \"uk-qcp-react-phone-number-link\",\n action: \"phone_number_link_clicked\",\n label: \"phone_number_link_clicked\",\n property: window.location.href,\n }),\n },\n {\n name: \"stickyFooterClick\",\n type: \"structured\",\n makePayload: () => ({\n category: \"marketing\",\n action: \"link-click\",\n label: \"sticky_footer_button\",\n property: window.location.href,\n }),\n },\n {\n name: \"linkClicked\",\n type: \"unstructured\",\n makePayload: params => {\n const { targetUrl, elementContent } = params as LinkType;\n\n return {\n schema:\n \"iglu:com.snowplowanalytics.snowplow/link_click/jsonschema/1-0-1\",\n data: {\n targetUrl,\n elementContent,\n },\n };\n },\n },\n {\n name: \"qcpUpsellAccordionClicked\",\n type: \"structured\",\n makePayload: params => ({\n category: \"us-qcp-upsells\",\n action: \"accordion_clicked_qcp\",\n label: params?.label as string,\n property: window.location.href,\n }),\n },\n {\n name: \"qdsUpsellAccordionClicked\",\n type: \"structured\",\n makePayload: params => ({\n category: \"us-qcp-upsells\",\n action: \"accordion_clicked_slider\",\n label: params?.label as string,\n property: window.location.href,\n }),\n },\n {\n name: \"qcpUpsellTooltipHelperClicked\",\n type: \"structured\",\n makePayload: params => ({\n category: \"us-qcp-upsells\",\n action: \"tooltip_helper_clicked_qcp\",\n label: params?.label as string,\n property: window.location.href,\n }),\n },\n {\n name: \"qdsUpsellTooltipHelperClicked\",\n type: \"structured\",\n makePayload: params => ({\n category: \"us-qcp-upsells\",\n action: \"tooltip_helper_clicked_slider\",\n label: params?.label as string,\n property: window.location.href,\n }),\n },\n];\n"],"names":["snakeCase","qcpEventDefinitions","name","type","makePayload","category","action","label","property","window","location","href","params","deviceType","urlFriendlyLabel","replace","toLowerCase","product","title","productLabel","fromValue","toValue","schema","data","from_value","to_value","journeyId","vertical","journey_id","targetUrl","elementContent"],"mappings":"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"}
1
+ {"version":3,"sources":["../../../../src/snowplow/event-definitions/qcp.ts"],"sourcesContent":["import { snakeCase } from \"../../utils\";\nimport { EventDefinition, LinkType, ParamsType } from \"../types\";\n\n// QCP page events\nexport const qcpEventDefinitions: EventDefinition[] = [\n {\n // QDP details button\n name: \"detailsClicked\",\n type: \"structured\",\n makePayload: () => ({\n category: \"comparison_cta\",\n action: \"link_click\",\n label: \"Details\",\n }),\n },\n {\n // Buy button\n name: \"selectClicked\",\n type: \"structured\",\n makePayload: () => ({\n category: \"comparison_cta\",\n action: \"link_click\",\n label: \"Buy\",\n }),\n },\n {\n // Quote Details Slider Next steps button\n name: \"nextStepsClicked\",\n type: \"structured\",\n makePayload: () => ({\n category: \"quote_details_slider_next_step_cta\",\n action: \"link_click\",\n label: \"Next steps\",\n }),\n },\n {\n // Toggle deductibles accordion\n name: \"deductiblesClicked\",\n type: \"structured\",\n makePayload: () => ({\n category: \"us-qcp-react\",\n action: \"view_deductables_clicked\",\n label: \"view_deductables_clicked\",\n property: window.location.href,\n }),\n },\n {\n name: \"deductiblesClickedUk\",\n type: \"structured\",\n makePayload: params => {\n const { label, deviceType } = params as ParamsType;\n const urlFriendlyLabel = label.replace(/ /g, \"-\").toLowerCase();\n\n return {\n category: `uk-qcp-react-${deviceType}-${urlFriendlyLabel}-view-excess-toggle`,\n action: \"view_excess_clicked\",\n label,\n property: window.location.href,\n };\n },\n },\n {\n // Quote Details Slider opened\n name: \"sliderOpened\",\n type: \"structured\",\n makePayload: params => {\n const { label } = params as ParamsType;\n\n return {\n category: \"comparison_cta\",\n action: \"quote_details_slider_opened\",\n label,\n };\n },\n },\n {\n // Coverage modal opened\n name: \"coverageModalOpened\",\n type: \"structured\",\n makePayload: params => {\n const {\n category,\n product = \"extra_coverage\",\n title,\n } = params as ParamsType;\n const productLabel = snakeCase(product);\n\n return {\n category,\n action: `${productLabel}_${snakeCase(title)}_popup_opened`,\n label: productLabel,\n property: window.location.href,\n };\n },\n },\n {\n // Toggle cover select\n name: \"coverChanged\",\n type: \"unstructured\",\n makePayload: params => {\n const { name = \"\", fromValue = \"\", toValue = \"\" } = params as ParamsType;\n // Derive data\n let action = \"change\";\n\n // This logic is taken directly from Chopin without documentation:\n // If a cover has zero value, then change the action to add or remove\n if (fromValue === \"0\") {\n action = \"add\";\n }\n if (toValue === \"0\") {\n action = \"remove\";\n }\n\n return {\n schema:\n \"iglu:com.simplybusiness/comparison_page_cover_changed/jsonschema/1-0-0\",\n data: {\n name,\n action,\n from_value: fromValue,\n to_value: toValue,\n },\n };\n },\n contexts: [\"distributionChannelContext\"],\n },\n {\n name: \"ratingsModalOpened\",\n type: \"structured\",\n makePayload: params => {\n const { category, label } = params as ParamsType;\n\n return {\n category,\n action: \"insurer_rating_help_popup_triggered\",\n label,\n property: window.location.href,\n };\n },\n },\n {\n name: \"coverToggleOpened\",\n type: \"structured\",\n makePayload: () => ({\n category: \"qcp_limit_interaction\",\n label: \"limit_interaction\",\n action: \"limit_interaction_clicked\",\n property: window.location.href,\n }),\n },\n {\n name: \"paymentToggleClicked\",\n type: \"structured\",\n makePayload: params => {\n const { category, label } = params as ParamsType;\n\n return {\n category,\n action: \"button_click\",\n label,\n property: window.location.href,\n };\n },\n },\n {\n name: \"insurerDetailsAccordionClicked\",\n type: \"structured\",\n makePayload: () => ({\n category: \"quote_details_slider_insurer_details_description\",\n action: \"accordion_clicked\",\n label: \"accordion_clicked\",\n property: window.location.href,\n }),\n },\n {\n name: \"priceDetailsPopUpOpened\",\n type: \"structured\",\n makePayload: () => ({\n category: \"price_details\",\n action: \"price_details_popup_opened\",\n label: \"Price details\",\n property: window.location.href,\n }),\n },\n {\n name: \"editLimitButtonClicked\",\n type: \"structured\",\n makePayload: () => ({\n category: \"cover_limit_changes\",\n action: \"edit_limit_button_clicked\",\n label: \"Edit Limit\",\n property: window.location.href,\n }),\n },\n {\n name: \"applyButtonClicked\",\n type: \"structured\",\n makePayload: () => ({\n category: \"cover_limit_changes\",\n action: \"apply_button_clicked\",\n label: \"Apply Button Clicked\",\n property: window.location.href,\n }),\n },\n {\n name: \"coverageInfoClicked\",\n type: \"structured\",\n makePayload: params => {\n const { deviceType } = params as ParamsType;\n\n return {\n action: \"show_coverage_info_clicked\",\n category: `uk-qcp-react-${deviceType}-show-coverage-info-toggle`,\n label: \"show_coverage_info_clicked\",\n property: window.location.href,\n };\n },\n },\n {\n name: \"backToApplication\",\n type: \"unstructured\",\n makePayload: params => {\n const { journeyId, vertical } = params as ParamsType;\n\n return {\n schema: \"iglu:com.simplybusiness/back_to_application/jsonschema/1-0-0\",\n data: {\n journey_id: journeyId,\n vertical,\n },\n };\n },\n contexts: [\"serviceChannelContext\"],\n },\n {\n name: \"helpChatLinkClicked\",\n type: \"structured\",\n makePayload: () => ({\n category: \"help chat for question\",\n action: \"help_chat_for_question_clicked\",\n property: window.location.href,\n }),\n },\n // No quotes referral\n {\n name: \"coverOptionsLinkClicked\",\n type: \"structured\",\n makePayload: () => ({\n category: \"uk-qcp-react-cover-options-link\",\n action: \"cover_options_link_clicked\",\n label: \"cover_options_link_clicked\",\n property: window.location.href,\n }),\n },\n {\n name: \"referralReasonsVariantBCoverOptionsLinkClicked\",\n type: \"structured\",\n makePayload: () => ({\n category: \"uk-24-12-qcp-mvt-referral-reasons\",\n action: \"cover_options_link_clicked_variant_b\",\n label: \"cover_options_link_clicked_variant_b\",\n property: window.location.href,\n }),\n },\n {\n name: \"referralReasonsVariantCCoverOptionsLinkClicked\",\n type: \"structured\",\n makePayload: () => ({\n category: \"uk-24-12-qcp-mvt-referral-reasons\",\n action: \"cover_options_link_clicked_variant_c\",\n label: \"cover_options_link_clicked_variant_c\",\n property: window.location.href,\n }),\n },\n {\n name: \"phoneNumberLinkClicked\",\n type: \"structured\",\n makePayload: () => ({\n category: \"uk-qcp-react-phone-number-link\",\n action: \"phone_number_link_clicked\",\n label: \"phone_number_link_clicked\",\n property: window.location.href,\n }),\n },\n {\n name: \"stickyFooterClick\",\n type: \"structured\",\n makePayload: () => ({\n category: \"marketing\",\n action: \"link-click\",\n label: \"sticky_footer_button\",\n property: window.location.href,\n }),\n },\n {\n name: \"linkClicked\",\n type: \"unstructured\",\n makePayload: params => {\n const { targetUrl, elementContent } = params as LinkType;\n\n return {\n schema:\n \"iglu:com.snowplowanalytics.snowplow/link_click/jsonschema/1-0-1\",\n data: {\n targetUrl,\n elementContent,\n },\n };\n },\n },\n {\n name: \"qcpUpsellAccordionClicked\",\n type: \"structured\",\n makePayload: params => ({\n category: \"us-qcp-upsells\",\n action: \"accordion_clicked_qcp\",\n label: params?.label as string,\n property: window.location.href,\n }),\n },\n {\n name: \"qdsUpsellAccordionClicked\",\n type: \"structured\",\n makePayload: params => ({\n category: \"us-qcp-upsells\",\n action: \"accordion_clicked_slider\",\n label: params?.label as string,\n property: window.location.href,\n }),\n },\n {\n name: \"qcpUpsellTooltipHelperClicked\",\n type: \"structured\",\n makePayload: params => ({\n category: \"us-qcp-upsells\",\n action: \"tooltip_helper_clicked_qcp\",\n label: params?.label as string,\n property: window.location.href,\n }),\n },\n {\n name: \"qdsUpsellTooltipHelperClicked\",\n type: \"structured\",\n makePayload: params => ({\n category: \"us-qcp-upsells\",\n action: \"tooltip_helper_clicked_slider\",\n label: params?.label as string,\n property: window.location.href,\n }),\n },\n];\n"],"names":["snakeCase","qcpEventDefinitions","name","type","makePayload","category","action","label","property","window","location","href","params","deviceType","urlFriendlyLabel","replace","toLowerCase","product","title","productLabel","fromValue","toValue","schema","data","from_value","to_value","contexts","journeyId","vertical","journey_id","targetUrl","elementContent"],"mappings":"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"}
@@ -43,7 +43,10 @@ export const questionnaireEventDefinitions = [
43
43
  primary_detail: answer
44
44
  }
45
45
  };
46
- }
46
+ },
47
+ contexts: [
48
+ "distributionChannelContext"
49
+ ]
47
50
  },
48
51
  {
49
52
  name: "helpTextOpened",
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/snowplow/event-definitions/questionnaire.ts"],"sourcesContent":["import { DELIMITER } from \"../constants\";\nimport { EventDefinition, ParamsType } from \"../types\";\nimport { redact } from \"./redaction\";\n\n// Questionnaire events\nexport const questionnaireEventDefinitions: EventDefinition[] = [\n {\n name: \"questionAnswered\",\n type: \"unstructured\",\n makePayload: params => {\n const { section, context } = params as ParamsType;\n const { question, answer } = redact(params as ParamsType);\n // Flatten the answer to a delimited string\n const flatAnswer = Array.isArray(answer)\n ? answer.join(DELIMITER)\n : answer;\n\n return {\n schema:\n \"iglu:com.simplybusiness/form_question_answered/jsonschema/1-0-3\",\n data: {\n site: context.site,\n page_index: 1,\n page_name: \"quick_to_quote\",\n submitted_from: \"quick_to_quote_experiment\",\n section_name: section,\n question,\n answer: flatAnswer,\n vertical: context.vertical,\n },\n };\n },\n },\n {\n name: \"primaryDetailSelected\",\n type: \"unstructured\",\n makePayload: params => {\n const { context, answer, vertical } = params as ParamsType;\n const { site } = context;\n let verticalName = vertical || context.vertical;\n\n if (verticalName.toLowerCase().indexOf(\"landlord\") > -1) {\n verticalName =\n answer === \"residential\" ? \"Landlord\" : \"Commercial landlord\";\n }\n\n return {\n schema:\n \"iglu:com.simplybusiness/primary_detail_selected/jsonschema/1-3-0\",\n data: {\n site,\n vertical: verticalName,\n primary_detail: answer,\n },\n };\n },\n },\n {\n name: \"helpTextOpened\",\n type: \"unstructured\",\n makePayload: params => {\n const { primaryText, label, context, helpText } = params as ParamsType;\n\n return {\n schema: \"iglu:com.simplybusiness/help_text_opened/jsonschema/1-1-0\",\n data: {\n vertical: context.vertical,\n site: context.site,\n primary_text: primaryText,\n help_text: helpText,\n label,\n page_name: \"quick_to_quote\",\n },\n };\n },\n },\n {\n name: \"assumptionsButtonClicked\",\n type: \"structured\",\n makePayload: params => {\n const { source, presentationGroup } = params as ParamsType;\n\n return {\n action: source,\n category: presentationGroup,\n };\n },\n },\n {\n name: \"navButtonClicked\",\n type: \"structured\",\n makePayload: params => {\n const { label, category } = params as ParamsType;\n\n return {\n label,\n action: \"link_click\",\n category,\n };\n },\n },\n {\n name: \"manualAddressClicked\",\n type: \"structured\",\n makePayload: params => {\n const { category } = params as ParamsType;\n\n return {\n action: \"link_click\",\n category,\n label: \"Enter address manually\",\n };\n },\n },\n];\n"],"names":["DELIMITER","redact","questionnaireEventDefinitions","name","type","makePayload","params","section","context","question","answer","flatAnswer","Array","isArray","join","schema","data","site","page_index","page_name","submitted_from","section_name","vertical","verticalName","toLowerCase","indexOf","primary_detail","primaryText","label","helpText","primary_text","help_text","source","presentationGroup","action","category"],"mappings":"AAAA,SAASA,SAAS,QAAQ,eAAe;AAEzC,SAASC,MAAM,QAAQ,cAAc;AAErC,uBAAuB;AACvB,OAAO,MAAMC,gCAAmD;IAC9D;QACEC,MAAM;QACNC,MAAM;QACNC,aAAaC,CAAAA;YACX,MAAM,EAAEC,OAAO,EAAEC,OAAO,EAAE,GAAGF;YAC7B,MAAM,EAAEG,QAAQ,EAAEC,MAAM,EAAE,GAAGT,OAAOK;YACpC,2CAA2C;YAC3C,MAAMK,aAAaC,MAAMC,OAAO,CAACH,UAC7BA,OAAOI,IAAI,CAACd,aACZU;YAEJ,OAAO;gBACLK,QACE;gBACFC,MAAM;oBACJC,MAAMT,QAAQS,IAAI;oBAClBC,YAAY;oBACZC,WAAW;oBACXC,gBAAgB;oBAChBC,cAAcd;oBACdE;oBACAC,QAAQC;oBACRW,UAAUd,QAAQc,QAAQ;gBAC5B;YACF;QACF;IACF;IACA;QACEnB,MAAM;QACNC,MAAM;QACNC,aAAaC,CAAAA;YACX,MAAM,EAAEE,OAAO,EAAEE,MAAM,EAAEY,QAAQ,EAAE,GAAGhB;YACtC,MAAM,EAAEW,IAAI,EAAE,GAAGT;YACjB,IAAIe,eAAeD,YAAYd,QAAQc,QAAQ;YAE/C,IAAIC,aAAaC,WAAW,GAAGC,OAAO,CAAC,cAAc,CAAC,GAAG;gBACvDF,eACEb,WAAW,gBAAgB,aAAa;YAC5C;YAEA,OAAO;gBACLK,QACE;gBACFC,MAAM;oBACJC;oBACAK,UAAUC;oBACVG,gBAAgBhB;gBAClB;YACF;QACF;IACF;IACA;QACEP,MAAM;QACNC,MAAM;QACNC,aAAaC,CAAAA;YACX,MAAM,EAAEqB,WAAW,EAAEC,KAAK,EAAEpB,OAAO,EAAEqB,QAAQ,EAAE,GAAGvB;YAElD,OAAO;gBACLS,QAAQ;gBACRC,MAAM;oBACJM,UAAUd,QAAQc,QAAQ;oBAC1BL,MAAMT,QAAQS,IAAI;oBAClBa,cAAcH;oBACdI,WAAWF;oBACXD;oBACAT,WAAW;gBACb;YACF;QACF;IACF;IACA;QACEhB,MAAM;QACNC,MAAM;QACNC,aAAaC,CAAAA;YACX,MAAM,EAAE0B,MAAM,EAAEC,iBAAiB,EAAE,GAAG3B;YAEtC,OAAO;gBACL4B,QAAQF;gBACRG,UAAUF;YACZ;QACF;IACF;IACA;QACE9B,MAAM;QACNC,MAAM;QACNC,aAAaC,CAAAA;YACX,MAAM,EAAEsB,KAAK,EAAEO,QAAQ,EAAE,GAAG7B;YAE5B,OAAO;gBACLsB;gBACAM,QAAQ;gBACRC;YACF;QACF;IACF;IACA;QACEhC,MAAM;QACNC,MAAM;QACNC,aAAaC,CAAAA;YACX,MAAM,EAAE6B,QAAQ,EAAE,GAAG7B;YAErB,OAAO;gBACL4B,QAAQ;gBACRC;gBACAP,OAAO;YACT;QACF;IACF;CACD,CAAC"}
1
+ {"version":3,"sources":["../../../../src/snowplow/event-definitions/questionnaire.ts"],"sourcesContent":["import { DELIMITER } from \"../constants\";\nimport { EventDefinition, ParamsType } from \"../types\";\nimport { redact } from \"./redaction\";\n\n// Questionnaire events\nexport const questionnaireEventDefinitions: EventDefinition[] = [\n {\n name: \"questionAnswered\",\n type: \"unstructured\",\n makePayload: params => {\n const { section, context } = params as ParamsType;\n const { question, answer } = redact(params as ParamsType);\n // Flatten the answer to a delimited string\n const flatAnswer = Array.isArray(answer)\n ? answer.join(DELIMITER)\n : answer;\n\n return {\n schema:\n \"iglu:com.simplybusiness/form_question_answered/jsonschema/1-0-3\",\n data: {\n site: context.site,\n page_index: 1,\n page_name: \"quick_to_quote\",\n submitted_from: \"quick_to_quote_experiment\",\n section_name: section,\n question,\n answer: flatAnswer,\n vertical: context.vertical,\n },\n };\n },\n },\n {\n name: \"primaryDetailSelected\",\n type: \"unstructured\",\n makePayload: params => {\n const { context, answer, vertical } = params as ParamsType;\n const { site } = context;\n let verticalName = vertical || context.vertical;\n\n if (verticalName.toLowerCase().indexOf(\"landlord\") > -1) {\n verticalName =\n answer === \"residential\" ? \"Landlord\" : \"Commercial landlord\";\n }\n\n return {\n schema:\n \"iglu:com.simplybusiness/primary_detail_selected/jsonschema/1-3-0\",\n data: {\n site,\n vertical: verticalName,\n primary_detail: answer,\n },\n };\n },\n contexts: [\"distributionChannelContext\"],\n },\n {\n name: \"helpTextOpened\",\n type: \"unstructured\",\n makePayload: params => {\n const { primaryText, label, context, helpText } = params as ParamsType;\n\n return {\n schema: \"iglu:com.simplybusiness/help_text_opened/jsonschema/1-1-0\",\n data: {\n vertical: context.vertical,\n site: context.site,\n primary_text: primaryText,\n help_text: helpText,\n label,\n page_name: \"quick_to_quote\",\n },\n };\n },\n },\n {\n name: \"assumptionsButtonClicked\",\n type: \"structured\",\n makePayload: params => {\n const { source, presentationGroup } = params as ParamsType;\n\n return {\n action: source,\n category: presentationGroup,\n };\n },\n },\n {\n name: \"navButtonClicked\",\n type: \"structured\",\n makePayload: params => {\n const { label, category } = params as ParamsType;\n\n return {\n label,\n action: \"link_click\",\n category,\n };\n },\n },\n {\n name: \"manualAddressClicked\",\n type: \"structured\",\n makePayload: params => {\n const { category } = params as ParamsType;\n\n return {\n action: \"link_click\",\n category,\n label: \"Enter address manually\",\n };\n },\n },\n];\n"],"names":["DELIMITER","redact","questionnaireEventDefinitions","name","type","makePayload","params","section","context","question","answer","flatAnswer","Array","isArray","join","schema","data","site","page_index","page_name","submitted_from","section_name","vertical","verticalName","toLowerCase","indexOf","primary_detail","contexts","primaryText","label","helpText","primary_text","help_text","source","presentationGroup","action","category"],"mappings":"AAAA,SAASA,SAAS,QAAQ,eAAe;AAEzC,SAASC,MAAM,QAAQ,cAAc;AAErC,uBAAuB;AACvB,OAAO,MAAMC,gCAAmD;IAC9D;QACEC,MAAM;QACNC,MAAM;QACNC,aAAaC,CAAAA;YACX,MAAM,EAAEC,OAAO,EAAEC,OAAO,EAAE,GAAGF;YAC7B,MAAM,EAAEG,QAAQ,EAAEC,MAAM,EAAE,GAAGT,OAAOK;YACpC,2CAA2C;YAC3C,MAAMK,aAAaC,MAAMC,OAAO,CAACH,UAC7BA,OAAOI,IAAI,CAACd,aACZU;YAEJ,OAAO;gBACLK,QACE;gBACFC,MAAM;oBACJC,MAAMT,QAAQS,IAAI;oBAClBC,YAAY;oBACZC,WAAW;oBACXC,gBAAgB;oBAChBC,cAAcd;oBACdE;oBACAC,QAAQC;oBACRW,UAAUd,QAAQc,QAAQ;gBAC5B;YACF;QACF;IACF;IACA;QACEnB,MAAM;QACNC,MAAM;QACNC,aAAaC,CAAAA;YACX,MAAM,EAAEE,OAAO,EAAEE,MAAM,EAAEY,QAAQ,EAAE,GAAGhB;YACtC,MAAM,EAAEW,IAAI,EAAE,GAAGT;YACjB,IAAIe,eAAeD,YAAYd,QAAQc,QAAQ;YAE/C,IAAIC,aAAaC,WAAW,GAAGC,OAAO,CAAC,cAAc,CAAC,GAAG;gBACvDF,eACEb,WAAW,gBAAgB,aAAa;YAC5C;YAEA,OAAO;gBACLK,QACE;gBACFC,MAAM;oBACJC;oBACAK,UAAUC;oBACVG,gBAAgBhB;gBAClB;YACF;QACF;QACAiB,UAAU;YAAC;SAA6B;IAC1C;IACA;QACExB,MAAM;QACNC,MAAM;QACNC,aAAaC,CAAAA;YACX,MAAM,EAAEsB,WAAW,EAAEC,KAAK,EAAErB,OAAO,EAAEsB,QAAQ,EAAE,GAAGxB;YAElD,OAAO;gBACLS,QAAQ;gBACRC,MAAM;oBACJM,UAAUd,QAAQc,QAAQ;oBAC1BL,MAAMT,QAAQS,IAAI;oBAClBc,cAAcH;oBACdI,WAAWF;oBACXD;oBACAV,WAAW;gBACb;YACF;QACF;IACF;IACA;QACEhB,MAAM;QACNC,MAAM;QACNC,aAAaC,CAAAA;YACX,MAAM,EAAE2B,MAAM,EAAEC,iBAAiB,EAAE,GAAG5B;YAEtC,OAAO;gBACL6B,QAAQF;gBACRG,UAAUF;YACZ;QACF;IACF;IACA;QACE/B,MAAM;QACNC,MAAM;QACNC,aAAaC,CAAAA;YACX,MAAM,EAAEuB,KAAK,EAAEO,QAAQ,EAAE,GAAG9B;YAE5B,OAAO;gBACLuB;gBACAM,QAAQ;gBACRC;YACF;QACF;IACF;IACA;QACEjC,MAAM;QACNC,MAAM;QACNC,aAAaC,CAAAA;YACX,MAAM,EAAE8B,QAAQ,EAAE,GAAG9B;YAErB,OAAO;gBACL6B,QAAQ;gBACRC;gBACAP,OAAO;YACT;QACF;IACF;CACD,CAAC"}