@simplybusiness/services 2.4.4 → 2.4.6
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 +14 -0
- package/dist/cjs/index.js +6 -2
- package/dist/cjs/index.js.map +2 -2
- package/dist/cjs/meta.json +27 -27
- package/dist/cjs/snowplow/Snowplow.js +3 -0
- package/dist/cjs/snowplow/Snowplow.js.map +2 -2
- package/dist/cjs/snowplow/SnowplowContext.js +6 -2
- package/dist/cjs/snowplow/SnowplowContext.js.map +2 -2
- package/dist/cjs/snowplow/event-definitions/index.js +3 -2
- package/dist/cjs/snowplow/event-definitions/index.js.map +2 -2
- package/dist/cjs/snowplow/event-definitions/questionnaire/questionnaire.js +3 -2
- package/dist/cjs/snowplow/event-definitions/questionnaire/questionnaire.js.map +2 -2
- package/dist/cjs/snowplow/index.js +6 -2
- package/dist/cjs/snowplow/index.js.map +2 -2
- package/dist/cjs/utils/testUtils.js +6 -2
- package/dist/cjs/utils/testUtils.js.map +2 -2
- package/dist/esm/{chunk-EDKZP2NB.js → chunk-2TWF6FRS.js} +4 -1
- package/dist/esm/{chunk-EDKZP2NB.js.map → chunk-2TWF6FRS.js.map} +2 -2
- package/dist/esm/{chunk-YO5FUC73.js → chunk-3VFJFBNM.js} +4 -3
- package/dist/esm/chunk-3VFJFBNM.js.map +7 -0
- package/dist/esm/{chunk-7QIIG44X.js → chunk-RSDIB373.js} +3 -3
- package/dist/esm/{chunk-LLSH4K4D.js → chunk-X77BVKJO.js} +2 -2
- package/dist/esm/index.js +4 -4
- package/dist/esm/meta.json +39 -39
- package/dist/esm/snowplow/Snowplow.js +1 -1
- package/dist/esm/snowplow/SnowplowContext.js +4 -4
- package/dist/esm/snowplow/event-definitions/index.js +2 -2
- package/dist/esm/snowplow/event-definitions/questionnaire/questionnaire.js +1 -1
- package/dist/esm/snowplow/index.js +4 -4
- package/dist/esm/utils/testUtils.js +4 -4
- package/dist/tsconfig.build.tsbuildinfo +1 -1
- package/package.json +3 -3
- package/src/snowplow/Snowplow.ts +4 -0
- package/src/snowplow/event-definitions/questionnaire/questionnaire.test.ts +43 -0
- package/src/snowplow/event-definitions/questionnaire/questionnaire.ts +5 -1
- package/src/snowplow/index.test.ts +32 -0
- package/dist/esm/chunk-YO5FUC73.js.map +0 -7
- /package/dist/esm/{chunk-7QIIG44X.js.map → chunk-RSDIB373.js.map} +0 -0
- /package/dist/esm/{chunk-LLSH4K4D.js.map → chunk-X77BVKJO.js.map} +0 -0
package/dist/cjs/meta.json
CHANGED
|
@@ -112,7 +112,7 @@
|
|
|
112
112
|
"format": "esm"
|
|
113
113
|
},
|
|
114
114
|
"src/snowplow/event-definitions/questionnaire/questionnaire.ts": {
|
|
115
|
-
"bytes":
|
|
115
|
+
"bytes": 8947,
|
|
116
116
|
"imports": [
|
|
117
117
|
{
|
|
118
118
|
"path": "src/snowplow/constants.ts",
|
|
@@ -184,7 +184,7 @@
|
|
|
184
184
|
"format": "esm"
|
|
185
185
|
},
|
|
186
186
|
"src/snowplow/Snowplow.ts": {
|
|
187
|
-
"bytes":
|
|
187
|
+
"bytes": 5732,
|
|
188
188
|
"imports": [
|
|
189
189
|
{
|
|
190
190
|
"path": "@snowplow/browser-tracker",
|
|
@@ -360,7 +360,7 @@
|
|
|
360
360
|
"imports": [],
|
|
361
361
|
"exports": [],
|
|
362
362
|
"inputs": {},
|
|
363
|
-
"bytes":
|
|
363
|
+
"bytes": 78170
|
|
364
364
|
},
|
|
365
365
|
"dist/cjs/index.js": {
|
|
366
366
|
"imports": [
|
|
@@ -430,7 +430,7 @@
|
|
|
430
430
|
"bytesInOutput": 8839
|
|
431
431
|
},
|
|
432
432
|
"src/snowplow/event-definitions/questionnaire/questionnaire.ts": {
|
|
433
|
-
"bytesInOutput":
|
|
433
|
+
"bytesInOutput": 7953
|
|
434
434
|
},
|
|
435
435
|
"src/snowplow/event-definitions/coverage-selection.ts": {
|
|
436
436
|
"bytesInOutput": 947
|
|
@@ -445,13 +445,13 @@
|
|
|
445
445
|
"bytesInOutput": 117
|
|
446
446
|
},
|
|
447
447
|
"src/snowplow/Snowplow.ts": {
|
|
448
|
-
"bytesInOutput":
|
|
448
|
+
"bytesInOutput": 4556
|
|
449
449
|
},
|
|
450
450
|
"src/snowplow/SnowplowContext.tsx": {
|
|
451
451
|
"bytesInOutput": 1186
|
|
452
452
|
}
|
|
453
453
|
},
|
|
454
|
-
"bytes":
|
|
454
|
+
"bytes": 42352
|
|
455
455
|
},
|
|
456
456
|
"dist/cjs/utils/index.js.map": {
|
|
457
457
|
"imports": [],
|
|
@@ -517,7 +517,7 @@
|
|
|
517
517
|
"imports": [],
|
|
518
518
|
"exports": [],
|
|
519
519
|
"inputs": {},
|
|
520
|
-
"bytes":
|
|
520
|
+
"bytes": 73273
|
|
521
521
|
},
|
|
522
522
|
"dist/cjs/utils/testUtils.js": {
|
|
523
523
|
"imports": [
|
|
@@ -592,7 +592,7 @@
|
|
|
592
592
|
"bytesInOutput": 8839
|
|
593
593
|
},
|
|
594
594
|
"src/snowplow/event-definitions/questionnaire/questionnaire.ts": {
|
|
595
|
-
"bytesInOutput":
|
|
595
|
+
"bytesInOutput": 7953
|
|
596
596
|
},
|
|
597
597
|
"src/snowplow/event-definitions/coverage-selection.ts": {
|
|
598
598
|
"bytesInOutput": 947
|
|
@@ -604,19 +604,19 @@
|
|
|
604
604
|
"bytesInOutput": 760
|
|
605
605
|
},
|
|
606
606
|
"src/snowplow/Snowplow.ts": {
|
|
607
|
-
"bytesInOutput":
|
|
607
|
+
"bytesInOutput": 4556
|
|
608
608
|
},
|
|
609
609
|
"src/snowplow/getSnowplowConfig.ts": {
|
|
610
610
|
"bytesInOutput": 119
|
|
611
611
|
}
|
|
612
612
|
},
|
|
613
|
-
"bytes":
|
|
613
|
+
"bytes": 39812
|
|
614
614
|
},
|
|
615
615
|
"dist/cjs/snowplow/Snowplow.js.map": {
|
|
616
616
|
"imports": [],
|
|
617
617
|
"exports": [],
|
|
618
618
|
"inputs": {},
|
|
619
|
-
"bytes":
|
|
619
|
+
"bytes": 10890
|
|
620
620
|
},
|
|
621
621
|
"dist/cjs/snowplow/Snowplow.js": {
|
|
622
622
|
"imports": [
|
|
@@ -635,13 +635,13 @@
|
|
|
635
635
|
"entryPoint": "src/snowplow/Snowplow.ts",
|
|
636
636
|
"inputs": {
|
|
637
637
|
"src/snowplow/Snowplow.ts": {
|
|
638
|
-
"bytesInOutput":
|
|
638
|
+
"bytesInOutput": 4690
|
|
639
639
|
},
|
|
640
640
|
"src/snowplow/contexts.ts": {
|
|
641
641
|
"bytesInOutput": 512
|
|
642
642
|
}
|
|
643
643
|
},
|
|
644
|
-
"bytes":
|
|
644
|
+
"bytes": 6125
|
|
645
645
|
},
|
|
646
646
|
"dist/cjs/snowplow/constants.js.map": {
|
|
647
647
|
"imports": [],
|
|
@@ -704,7 +704,7 @@
|
|
|
704
704
|
"imports": [],
|
|
705
705
|
"exports": [],
|
|
706
706
|
"inputs": {},
|
|
707
|
-
"bytes":
|
|
707
|
+
"bytes": 69830
|
|
708
708
|
},
|
|
709
709
|
"dist/cjs/snowplow/index.js": {
|
|
710
710
|
"imports": [
|
|
@@ -763,7 +763,7 @@
|
|
|
763
763
|
"bytesInOutput": 8839
|
|
764
764
|
},
|
|
765
765
|
"src/snowplow/event-definitions/questionnaire/questionnaire.ts": {
|
|
766
|
-
"bytesInOutput":
|
|
766
|
+
"bytesInOutput": 7953
|
|
767
767
|
},
|
|
768
768
|
"src/snowplow/event-definitions/coverage-selection.ts": {
|
|
769
769
|
"bytesInOutput": 947
|
|
@@ -778,13 +778,13 @@
|
|
|
778
778
|
"bytesInOutput": 117
|
|
779
779
|
},
|
|
780
780
|
"src/snowplow/Snowplow.ts": {
|
|
781
|
-
"bytesInOutput":
|
|
781
|
+
"bytesInOutput": 4556
|
|
782
782
|
},
|
|
783
783
|
"src/snowplow/SnowplowContext.tsx": {
|
|
784
784
|
"bytesInOutput": 1186
|
|
785
785
|
}
|
|
786
786
|
},
|
|
787
|
-
"bytes":
|
|
787
|
+
"bytes": 38457
|
|
788
788
|
},
|
|
789
789
|
"dist/cjs/snowplow/types.js.map": {
|
|
790
790
|
"imports": [],
|
|
@@ -807,7 +807,7 @@
|
|
|
807
807
|
"imports": [],
|
|
808
808
|
"exports": [],
|
|
809
809
|
"inputs": {},
|
|
810
|
-
"bytes":
|
|
810
|
+
"bytes": 69072
|
|
811
811
|
},
|
|
812
812
|
"dist/cjs/snowplow/SnowplowContext.js": {
|
|
813
813
|
"imports": [
|
|
@@ -866,7 +866,7 @@
|
|
|
866
866
|
"bytesInOutput": 8839
|
|
867
867
|
},
|
|
868
868
|
"src/snowplow/event-definitions/questionnaire/questionnaire.ts": {
|
|
869
|
-
"bytesInOutput":
|
|
869
|
+
"bytesInOutput": 7953
|
|
870
870
|
},
|
|
871
871
|
"src/snowplow/event-definitions/coverage-selection.ts": {
|
|
872
872
|
"bytesInOutput": 947
|
|
@@ -878,10 +878,10 @@
|
|
|
878
878
|
"bytesInOutput": 760
|
|
879
879
|
},
|
|
880
880
|
"src/snowplow/Snowplow.ts": {
|
|
881
|
-
"bytesInOutput":
|
|
881
|
+
"bytesInOutput": 4556
|
|
882
882
|
}
|
|
883
883
|
},
|
|
884
|
-
"bytes":
|
|
884
|
+
"bytes": 37770
|
|
885
885
|
},
|
|
886
886
|
"dist/cjs/snowplow/event-definitions/base.js.map": {
|
|
887
887
|
"imports": [],
|
|
@@ -921,7 +921,7 @@
|
|
|
921
921
|
"imports": [],
|
|
922
922
|
"exports": [],
|
|
923
923
|
"inputs": {},
|
|
924
|
-
"bytes":
|
|
924
|
+
"bytes": 54375
|
|
925
925
|
},
|
|
926
926
|
"dist/cjs/snowplow/event-definitions/index.js": {
|
|
927
927
|
"imports": [],
|
|
@@ -953,7 +953,7 @@
|
|
|
953
953
|
"bytesInOutput": 8839
|
|
954
954
|
},
|
|
955
955
|
"src/snowplow/event-definitions/questionnaire/questionnaire.ts": {
|
|
956
|
-
"bytesInOutput":
|
|
956
|
+
"bytesInOutput": 7953
|
|
957
957
|
},
|
|
958
958
|
"src/snowplow/event-definitions/coverage-selection.ts": {
|
|
959
959
|
"bytesInOutput": 947
|
|
@@ -962,7 +962,7 @@
|
|
|
962
962
|
"bytesInOutput": 379
|
|
963
963
|
}
|
|
964
964
|
},
|
|
965
|
-
"bytes":
|
|
965
|
+
"bytes": 30428
|
|
966
966
|
},
|
|
967
967
|
"dist/cjs/snowplow/event-definitions/intervention.js.map": {
|
|
968
968
|
"imports": [],
|
|
@@ -1065,7 +1065,7 @@
|
|
|
1065
1065
|
"imports": [],
|
|
1066
1066
|
"exports": [],
|
|
1067
1067
|
"inputs": {},
|
|
1068
|
-
"bytes":
|
|
1068
|
+
"bytes": 20547
|
|
1069
1069
|
},
|
|
1070
1070
|
"dist/cjs/snowplow/event-definitions/questionnaire/questionnaire.js": {
|
|
1071
1071
|
"imports": [],
|
|
@@ -1073,7 +1073,7 @@
|
|
|
1073
1073
|
"entryPoint": "src/snowplow/event-definitions/questionnaire/questionnaire.ts",
|
|
1074
1074
|
"inputs": {
|
|
1075
1075
|
"src/snowplow/event-definitions/questionnaire/questionnaire.ts": {
|
|
1076
|
-
"bytesInOutput":
|
|
1076
|
+
"bytesInOutput": 8146
|
|
1077
1077
|
},
|
|
1078
1078
|
"src/snowplow/constants.ts": {
|
|
1079
1079
|
"bytesInOutput": 21
|
|
@@ -1082,7 +1082,7 @@
|
|
|
1082
1082
|
"bytesInOutput": 3841
|
|
1083
1083
|
}
|
|
1084
1084
|
},
|
|
1085
|
-
"bytes":
|
|
1085
|
+
"bytes": 13073
|
|
1086
1086
|
},
|
|
1087
1087
|
"dist/cjs/snowplow/event-definitions/questionnaire/redaction.js.map": {
|
|
1088
1088
|
"imports": [],
|
|
@@ -181,6 +181,9 @@ var Snowplow = class _Snowplow {
|
|
|
181
181
|
return this;
|
|
182
182
|
}
|
|
183
183
|
trigger(name, params) {
|
|
184
|
+
if (!this.serverData || Object.keys(this.serverData).length === 0) {
|
|
185
|
+
return this;
|
|
186
|
+
}
|
|
184
187
|
const handler = this.eventHandlers[name];
|
|
185
188
|
if (Object.prototype.hasOwnProperty.call(this.eventHandlers, name) && typeof handler === "function") {
|
|
186
189
|
handler(params);
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
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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",
|
|
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 if (!this.serverData || Object.keys(this.serverData).length === 0) {\n return this;\n }\n\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
6
|
"names": []
|
|
7
7
|
}
|
|
@@ -863,7 +863,8 @@ var questionnaireEventDefinitions = [
|
|
|
863
863
|
vertical,
|
|
864
864
|
searchId,
|
|
865
865
|
selectedListPosition,
|
|
866
|
-
selectionMethod
|
|
866
|
+
selectionMethod,
|
|
867
|
+
selectedLocation
|
|
867
868
|
} = params;
|
|
868
869
|
const { site } = context;
|
|
869
870
|
const isUSPage = site === "simplybusiness_us";
|
|
@@ -886,7 +887,7 @@ var questionnaireEventDefinitions = [
|
|
|
886
887
|
}
|
|
887
888
|
if (isUSPage) {
|
|
888
889
|
data.selected_list_position = selectedListPosition !== void 0 ? (selectedListPosition + 1).toString() : null;
|
|
889
|
-
data.selected_location = "trade_selector_vertical";
|
|
890
|
+
data.selected_location = selectedLocation !== void 0 ? selectedLocation : "trade_selector_vertical";
|
|
890
891
|
data.business_unit = site;
|
|
891
892
|
}
|
|
892
893
|
const preFilledSource = params.preFilledSource ?? (typeof sessionStorage !== "undefined" ? sessionStorage.getItem("preFilledSource") : null);
|
|
@@ -1345,6 +1346,9 @@ var Snowplow = class _Snowplow {
|
|
|
1345
1346
|
return this;
|
|
1346
1347
|
}
|
|
1347
1348
|
trigger(name, params) {
|
|
1349
|
+
if (!this.serverData || Object.keys(this.serverData).length === 0) {
|
|
1350
|
+
return this;
|
|
1351
|
+
}
|
|
1348
1352
|
const handler = this.eventHandlers[name];
|
|
1349
1353
|
if (Object.prototype.hasOwnProperty.call(this.eventHandlers, name) && typeof handler === "function") {
|
|
1350
1354
|
handler(params);
|