@simplybusiness/services 2.7.7 → 2.8.0
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 +13 -0
- package/dist/cjs/index.js +27 -0
- package/dist/cjs/index.js.map +2 -2
- package/dist/cjs/meta.json +23 -23
- package/dist/cjs/snowplow/Snowplow.js.map +1 -1
- package/dist/cjs/snowplow/SnowplowContext.js +27 -0
- package/dist/cjs/snowplow/SnowplowContext.js.map +2 -2
- package/dist/cjs/snowplow/contexts.js.map +1 -1
- package/dist/cjs/snowplow/event-definitions/index.js +27 -0
- package/dist/cjs/snowplow/event-definitions/index.js.map +2 -2
- package/dist/cjs/snowplow/event-definitions/questionnaire/questionnaire.js +27 -0
- package/dist/cjs/snowplow/event-definitions/questionnaire/questionnaire.js.map +2 -2
- package/dist/cjs/snowplow/index.js +27 -0
- package/dist/cjs/snowplow/index.js.map +2 -2
- package/dist/cjs/utils/testUtils.js +27 -0
- package/dist/cjs/utils/testUtils.js.map +2 -2
- package/dist/esm/{chunk-2NJVETWD.js → chunk-EXE7XR3Q.js} +2 -2
- package/dist/esm/{chunk-3U2OGG7X.js → chunk-HLJQKITS.js} +28 -1
- package/dist/esm/{chunk-3U2OGG7X.js.map → chunk-HLJQKITS.js.map} +2 -2
- package/dist/esm/{chunk-YL4B2IYT.js → chunk-LDG3C5GH.js} +4 -4
- package/dist/esm/{chunk-TN5IBPWO.js → chunk-MZ7BEV3O.js} +1 -1
- package/dist/esm/{chunk-TN5IBPWO.js.map → chunk-MZ7BEV3O.js.map} +1 -1
- package/dist/esm/{chunk-2TWF6FRS.js → chunk-N5QMO2XU.js} +2 -2
- package/dist/esm/index.js +5 -5
- package/dist/esm/meta.json +49 -49
- package/dist/esm/snowplow/Snowplow.js +2 -2
- package/dist/esm/snowplow/SnowplowContext.js +5 -5
- package/dist/esm/snowplow/contexts.js +1 -1
- 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 +5 -5
- package/dist/esm/utils/testUtils.js +5 -5
- package/dist/esm/utils/testUtils.js.map +2 -2
- package/dist/tsconfig.build.tsbuildinfo +1 -1
- package/dist/types/mocks/eventDefinitions.d.ts +3 -3
- package/package.json +9 -8
- package/src/snowplow/SnowplowContext.test.tsx +1 -4
- package/src/snowplow/contexts.test.ts +2 -2
- package/src/snowplow/contexts.ts +1 -1
- package/src/snowplow/event-definitions/questionnaire/questionnaire.test.ts +48 -0
- package/src/snowplow/event-definitions/questionnaire/questionnaire.ts +29 -0
- package/src/snowplow/index.test.ts +5 -5
- package/src/utils/testUtils.tsx +1 -2
- /package/dist/esm/{chunk-2NJVETWD.js.map → chunk-EXE7XR3Q.js.map} +0 -0
- /package/dist/esm/{chunk-YL4B2IYT.js.map → chunk-LDG3C5GH.js.map} +0 -0
- /package/dist/esm/{chunk-2TWF6FRS.js.map → chunk-N5QMO2XU.js.map} +0 -0
package/dist/cjs/meta.json
CHANGED
|
@@ -49,7 +49,7 @@
|
|
|
49
49
|
"format": "esm"
|
|
50
50
|
},
|
|
51
51
|
"src/snowplow/contexts.ts": {
|
|
52
|
-
"bytes":
|
|
52
|
+
"bytes": 1404,
|
|
53
53
|
"imports": [
|
|
54
54
|
{
|
|
55
55
|
"path": "src/utils/index.ts",
|
|
@@ -102,7 +102,7 @@
|
|
|
102
102
|
"format": "esm"
|
|
103
103
|
},
|
|
104
104
|
"src/snowplow/event-definitions/questionnaire/questionnaire.ts": {
|
|
105
|
-
"bytes":
|
|
105
|
+
"bytes": 10181,
|
|
106
106
|
"imports": [
|
|
107
107
|
{
|
|
108
108
|
"path": "src/snowplow/constants.ts",
|
|
@@ -293,7 +293,7 @@
|
|
|
293
293
|
"format": "esm"
|
|
294
294
|
},
|
|
295
295
|
"src/utils/testUtils.tsx": {
|
|
296
|
-
"bytes":
|
|
296
|
+
"bytes": 1020,
|
|
297
297
|
"imports": [
|
|
298
298
|
{
|
|
299
299
|
"path": "@testing-library/react",
|
|
@@ -350,7 +350,7 @@
|
|
|
350
350
|
"imports": [],
|
|
351
351
|
"exports": [],
|
|
352
352
|
"inputs": {},
|
|
353
|
-
"bytes":
|
|
353
|
+
"bytes": 77963
|
|
354
354
|
},
|
|
355
355
|
"dist/cjs/index.js": {
|
|
356
356
|
"imports": [
|
|
@@ -420,7 +420,7 @@
|
|
|
420
420
|
"bytesInOutput": 3841
|
|
421
421
|
},
|
|
422
422
|
"src/snowplow/event-definitions/questionnaire/questionnaire.ts": {
|
|
423
|
-
"bytesInOutput":
|
|
423
|
+
"bytesInOutput": 9005
|
|
424
424
|
},
|
|
425
425
|
"src/snowplow/event-definitions/coverage-selection.ts": {
|
|
426
426
|
"bytesInOutput": 1605
|
|
@@ -441,7 +441,7 @@
|
|
|
441
441
|
"bytesInOutput": 1186
|
|
442
442
|
}
|
|
443
443
|
},
|
|
444
|
-
"bytes":
|
|
444
|
+
"bytes": 42196
|
|
445
445
|
},
|
|
446
446
|
"dist/cjs/utils/index.js.map": {
|
|
447
447
|
"imports": [],
|
|
@@ -507,7 +507,7 @@
|
|
|
507
507
|
"imports": [],
|
|
508
508
|
"exports": [],
|
|
509
509
|
"inputs": {},
|
|
510
|
-
"bytes":
|
|
510
|
+
"bytes": 72994
|
|
511
511
|
},
|
|
512
512
|
"dist/cjs/utils/testUtils.js": {
|
|
513
513
|
"imports": [
|
|
@@ -582,7 +582,7 @@
|
|
|
582
582
|
"bytesInOutput": 3841
|
|
583
583
|
},
|
|
584
584
|
"src/snowplow/event-definitions/questionnaire/questionnaire.ts": {
|
|
585
|
-
"bytesInOutput":
|
|
585
|
+
"bytesInOutput": 9005
|
|
586
586
|
},
|
|
587
587
|
"src/snowplow/event-definitions/coverage-selection.ts": {
|
|
588
588
|
"bytesInOutput": 1605
|
|
@@ -600,13 +600,13 @@
|
|
|
600
600
|
"bytesInOutput": 119
|
|
601
601
|
}
|
|
602
602
|
},
|
|
603
|
-
"bytes":
|
|
603
|
+
"bytes": 39722
|
|
604
604
|
},
|
|
605
605
|
"dist/cjs/snowplow/Snowplow.js.map": {
|
|
606
606
|
"imports": [],
|
|
607
607
|
"exports": [],
|
|
608
608
|
"inputs": {},
|
|
609
|
-
"bytes":
|
|
609
|
+
"bytes": 10855
|
|
610
610
|
},
|
|
611
611
|
"dist/cjs/snowplow/Snowplow.js": {
|
|
612
612
|
"imports": [
|
|
@@ -654,7 +654,7 @@
|
|
|
654
654
|
"imports": [],
|
|
655
655
|
"exports": [],
|
|
656
656
|
"inputs": {},
|
|
657
|
-
"bytes":
|
|
657
|
+
"bytes": 4639
|
|
658
658
|
},
|
|
659
659
|
"dist/cjs/snowplow/contexts.js": {
|
|
660
660
|
"imports": [],
|
|
@@ -694,7 +694,7 @@
|
|
|
694
694
|
"imports": [],
|
|
695
695
|
"exports": [],
|
|
696
696
|
"inputs": {},
|
|
697
|
-
"bytes":
|
|
697
|
+
"bytes": 69623
|
|
698
698
|
},
|
|
699
699
|
"dist/cjs/snowplow/index.js": {
|
|
700
700
|
"imports": [
|
|
@@ -753,7 +753,7 @@
|
|
|
753
753
|
"bytesInOutput": 3841
|
|
754
754
|
},
|
|
755
755
|
"src/snowplow/event-definitions/questionnaire/questionnaire.ts": {
|
|
756
|
-
"bytesInOutput":
|
|
756
|
+
"bytesInOutput": 9005
|
|
757
757
|
},
|
|
758
758
|
"src/snowplow/event-definitions/coverage-selection.ts": {
|
|
759
759
|
"bytesInOutput": 1605
|
|
@@ -774,7 +774,7 @@
|
|
|
774
774
|
"bytesInOutput": 1186
|
|
775
775
|
}
|
|
776
776
|
},
|
|
777
|
-
"bytes":
|
|
777
|
+
"bytes": 38301
|
|
778
778
|
},
|
|
779
779
|
"dist/cjs/snowplow/types.js.map": {
|
|
780
780
|
"imports": [],
|
|
@@ -797,7 +797,7 @@
|
|
|
797
797
|
"imports": [],
|
|
798
798
|
"exports": [],
|
|
799
799
|
"inputs": {},
|
|
800
|
-
"bytes":
|
|
800
|
+
"bytes": 68870
|
|
801
801
|
},
|
|
802
802
|
"dist/cjs/snowplow/SnowplowContext.js": {
|
|
803
803
|
"imports": [
|
|
@@ -856,7 +856,7 @@
|
|
|
856
856
|
"bytesInOutput": 3841
|
|
857
857
|
},
|
|
858
858
|
"src/snowplow/event-definitions/questionnaire/questionnaire.ts": {
|
|
859
|
-
"bytesInOutput":
|
|
859
|
+
"bytesInOutput": 9005
|
|
860
860
|
},
|
|
861
861
|
"src/snowplow/event-definitions/coverage-selection.ts": {
|
|
862
862
|
"bytesInOutput": 1605
|
|
@@ -871,7 +871,7 @@
|
|
|
871
871
|
"bytesInOutput": 4556
|
|
872
872
|
}
|
|
873
873
|
},
|
|
874
|
-
"bytes":
|
|
874
|
+
"bytes": 37680
|
|
875
875
|
},
|
|
876
876
|
"dist/cjs/snowplow/event-definitions/base.js.map": {
|
|
877
877
|
"imports": [],
|
|
@@ -911,7 +911,7 @@
|
|
|
911
911
|
"imports": [],
|
|
912
912
|
"exports": [],
|
|
913
913
|
"inputs": {},
|
|
914
|
-
"bytes":
|
|
914
|
+
"bytes": 54202
|
|
915
915
|
},
|
|
916
916
|
"dist/cjs/snowplow/event-definitions/index.js": {
|
|
917
917
|
"imports": [],
|
|
@@ -943,7 +943,7 @@
|
|
|
943
943
|
"bytesInOutput": 3841
|
|
944
944
|
},
|
|
945
945
|
"src/snowplow/event-definitions/questionnaire/questionnaire.ts": {
|
|
946
|
-
"bytesInOutput":
|
|
946
|
+
"bytesInOutput": 9005
|
|
947
947
|
},
|
|
948
948
|
"src/snowplow/event-definitions/coverage-selection.ts": {
|
|
949
949
|
"bytesInOutput": 1605
|
|
@@ -952,7 +952,7 @@
|
|
|
952
952
|
"bytesInOutput": 379
|
|
953
953
|
}
|
|
954
954
|
},
|
|
955
|
-
"bytes":
|
|
955
|
+
"bytes": 30272
|
|
956
956
|
},
|
|
957
957
|
"dist/cjs/snowplow/event-definitions/intervention.js.map": {
|
|
958
958
|
"imports": [],
|
|
@@ -1049,7 +1049,7 @@
|
|
|
1049
1049
|
"imports": [],
|
|
1050
1050
|
"exports": [],
|
|
1051
1051
|
"inputs": {},
|
|
1052
|
-
"bytes":
|
|
1052
|
+
"bytes": 22439
|
|
1053
1053
|
},
|
|
1054
1054
|
"dist/cjs/snowplow/event-definitions/questionnaire/questionnaire.js": {
|
|
1055
1055
|
"imports": [],
|
|
@@ -1057,7 +1057,7 @@
|
|
|
1057
1057
|
"entryPoint": "src/snowplow/event-definitions/questionnaire/questionnaire.ts",
|
|
1058
1058
|
"inputs": {
|
|
1059
1059
|
"src/snowplow/event-definitions/questionnaire/questionnaire.ts": {
|
|
1060
|
-
"bytesInOutput":
|
|
1060
|
+
"bytesInOutput": 9198
|
|
1061
1061
|
},
|
|
1062
1062
|
"src/snowplow/constants.ts": {
|
|
1063
1063
|
"bytesInOutput": 21
|
|
@@ -1066,7 +1066,7 @@
|
|
|
1066
1066
|
"bytesInOutput": 3841
|
|
1067
1067
|
}
|
|
1068
1068
|
},
|
|
1069
|
-
"bytes":
|
|
1069
|
+
"bytes": 14125
|
|
1070
1070
|
},
|
|
1071
1071
|
"dist/cjs/snowplow/event-definitions/questionnaire/redaction.js.map": {
|
|
1072
1072
|
"imports": [],
|
|
@@ -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 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
|
|
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;\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
5
|
"mappings": "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",
|
|
6
6
|
"names": []
|
|
7
7
|
}
|
|
@@ -1066,6 +1066,33 @@ var questionnaireEventDefinitions = [
|
|
|
1066
1066
|
property: window?.location?.href ?? ""
|
|
1067
1067
|
};
|
|
1068
1068
|
}
|
|
1069
|
+
},
|
|
1070
|
+
{
|
|
1071
|
+
name: "usPhoneNumberSmsConsentSkipped",
|
|
1072
|
+
type: "structured",
|
|
1073
|
+
makePayload: () => {
|
|
1074
|
+
return {
|
|
1075
|
+
category: "us_phone_number_modal",
|
|
1076
|
+
action: "sms_consent_skipped",
|
|
1077
|
+
property: window?.location?.href ?? ""
|
|
1078
|
+
};
|
|
1079
|
+
}
|
|
1080
|
+
},
|
|
1081
|
+
{
|
|
1082
|
+
name: "usPhoneNumberSubmitted",
|
|
1083
|
+
type: "structured",
|
|
1084
|
+
makePayload: (params) => {
|
|
1085
|
+
const { consentLabel, viewName } = params;
|
|
1086
|
+
const consent = consentLabel?.trim();
|
|
1087
|
+
const consentName = consent === "Yes, I agree" ? "consent_given" : consent || "no_consent";
|
|
1088
|
+
const name = viewName?.trim() || "no_view";
|
|
1089
|
+
return {
|
|
1090
|
+
category: "us_phone_number_modal",
|
|
1091
|
+
action: "submitted",
|
|
1092
|
+
label: `${consentName}_from_${name}`,
|
|
1093
|
+
property: window?.location?.href ?? ""
|
|
1094
|
+
};
|
|
1095
|
+
}
|
|
1069
1096
|
}
|
|
1070
1097
|
];
|
|
1071
1098
|
|