@simplybusiness/services 0.1.2 → 0.1.3

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 CHANGED
@@ -1,5 +1,11 @@
1
1
  # Changelog
2
2
 
3
+ ## 0.1.3
4
+
5
+ ### Patch Changes
6
+
7
+ - 2f33be2: Add missing Snowplow types to services package; fix long imports
8
+
3
9
  ## 0.1.2
4
10
 
5
11
  ### Patch Changes
@@ -1,12 +1,8 @@
1
- // TODO: move all Snowplow related code to a single index.tsx file
2
1
  "use strict";
3
2
  Object.defineProperty(exports, "__esModule", {
4
3
  value: true
5
4
  });
6
5
  _export_star(require("./snowplow"), exports);
7
- _export_star(require("./snowplow/SnowplowContext"), exports);
8
- _export_star(require("./snowplow/getSnowplowConfig"), exports);
9
- _export_star(require("./snowplow/contexts"), exports);
10
6
  _export_star(require("./airbrake"), exports);
11
7
  function _export_star(from, to) {
12
8
  Object.keys(from).forEach(function(k) {
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/services/index.tsx"],"sourcesContent":["// TODO: move all Snowplow related code to a single index.tsx file\nexport * from \"./snowplow\";\nexport * from \"./snowplow/SnowplowContext\";\nexport * from \"./snowplow/getSnowplowConfig\";\nexport * from \"./snowplow/contexts\";\nexport * from \"./airbrake\";\n"],"names":[],"mappings":"AAAA,kEAAkE;;;;;qBACpD;qBACA;qBACA;qBACA;qBACA"}
1
+ {"version":3,"sources":["../../../src/services/index.tsx"],"sourcesContent":["export * from \"./snowplow\";\nexport * from \"./airbrake\";\n"],"names":[],"mappings":";;;;qBAAc;qBACA"}
@@ -0,0 +1,138 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", {
3
+ value: true
4
+ });
5
+ Object.defineProperty(exports, "Snowplow", {
6
+ enumerable: true,
7
+ get: function() {
8
+ return Snowplow;
9
+ }
10
+ });
11
+ const _browsertracker = require("@snowplow/browser-tracker");
12
+ function _define_property(obj, key, value) {
13
+ if (key in obj) {
14
+ Object.defineProperty(obj, key, {
15
+ value: value,
16
+ enumerable: true,
17
+ configurable: true,
18
+ writable: true
19
+ });
20
+ } else {
21
+ obj[key] = value;
22
+ }
23
+ return obj;
24
+ }
25
+ class Snowplow {
26
+ setContexts(contexts) {
27
+ var _this_contexts;
28
+ this.contexts = contexts;
29
+ // Update identity context
30
+ const index = (_this_contexts = this.contexts) === null || _this_contexts === void 0 ? void 0 : _this_contexts.findIndex((ctx)=>{
31
+ var _ctx_schema;
32
+ return (_ctx_schema = ctx.schema) === null || _ctx_schema === void 0 ? void 0 : _ctx_schema.includes("identity_context");
33
+ });
34
+ if (index > -1) {
35
+ this.contexts[index].data.domain_userid = this.uid;
36
+ }
37
+ return this;
38
+ }
39
+ // Send a page view event
40
+ trackView() {
41
+ if (this.trackPageView) {
42
+ (0, _browsertracker.trackPageView)({
43
+ context: this.contexts
44
+ });
45
+ }
46
+ return this;
47
+ }
48
+ // Send a structured event with contexts
49
+ async trackEvent(event) {
50
+ await (0, _browsertracker.trackStructEvent)({
51
+ ...event,
52
+ context: this.contexts
53
+ }, [
54
+ this.bronzeAvalancheTrackerName
55
+ ]);
56
+ return this;
57
+ }
58
+ // Send a custom event with defined schema and optional contexts
59
+ async trackUnstructEvent(event) {
60
+ if (!event) {
61
+ return this;
62
+ }
63
+ await (0, _browsertracker.trackSelfDescribingEvent)({
64
+ event,
65
+ context: this.contexts
66
+ }, [
67
+ this.avalancheTrackerName
68
+ ]);
69
+ return this;
70
+ }
71
+ addEventHandlers(eventDefinitions) {
72
+ eventDefinitions.forEach(({ name, type, makePayload })=>{
73
+ // Convert type into relevant function
74
+ if (type === "structured") {
75
+ this.addEventHandler(name, (params)=>{
76
+ this.trackEvent(makePayload(params));
77
+ });
78
+ } else {
79
+ this.addEventHandler(name, (params)=>{
80
+ this.trackUnstructEvent(makePayload(params));
81
+ });
82
+ }
83
+ });
84
+ return this;
85
+ }
86
+ addEventHandler(name, handler) {
87
+ this.eventHandlers[name] = handler;
88
+ return this;
89
+ }
90
+ removeEventHandler(name) {
91
+ delete this.eventHandlers[name];
92
+ return this;
93
+ }
94
+ trigger(name, params) {
95
+ if (this.eventHandlers[name]) {
96
+ this.eventHandlers[name](params);
97
+ }
98
+ return this;
99
+ }
100
+ constructor(props){
101
+ _define_property(this, "avalancheTrackerName", "sb-ava");
102
+ _define_property(this, "bronzeAvalancheTrackerName", "sb-ava-br");
103
+ _define_property(this, "pvAvalancheTrackerName", "sb-ava-pv");
104
+ _define_property(this, "uid", "");
105
+ _define_property(this, "trackPageView", false);
106
+ _define_property(this, "contexts", []);
107
+ _define_property(this, "eventHandlers", {});
108
+ if (!props) return;
109
+ const { appId, cookieDomain, avalancheCollector, eventMethod, uid, postPath, // includeGAContext,
110
+ // trackActivity,
111
+ trackPageView: tpv } = props;
112
+ this.uid = uid;
113
+ this.trackPageView = tpv;
114
+ // Set options
115
+ const stateStorageStrategy = "cookieAndLocalStorage";
116
+ const baseOptions = {
117
+ appId,
118
+ cookieDomain,
119
+ eventMethod,
120
+ stateStorageStrategy,
121
+ postPath
122
+ };
123
+ // Initialize trackers
124
+ (0, _browsertracker.newTracker)(this.avalancheTrackerName, avalancheCollector, baseOptions);
125
+ (0, _browsertracker.newTracker)(this.bronzeAvalancheTrackerName, avalancheCollector, baseOptions);
126
+ // Page view tracker
127
+ (0, _browsertracker.newTracker)(this.pvAvalancheTrackerName, avalancheCollector, {
128
+ ...baseOptions,
129
+ eventMethod: eventMethod === "post" ? "beacon" : eventMethod
130
+ });
131
+ (0, _browsertracker.setCookiePath)("/");
132
+ if (uid) {
133
+ (0, _browsertracker.setUserId)(uid);
134
+ }
135
+ }
136
+ }
137
+
138
+ //# sourceMappingURL=Snowplow.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../src/services/snowplow/Snowplow.ts"],"sourcesContent":["import {\n SelfDescribingJson,\n StructuredEvent,\n TrackerConfiguration,\n newTracker,\n setCookiePath,\n setUserId,\n trackPageView,\n trackSelfDescribingEvent,\n trackStructEvent,\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 eventHandlers: Record<string, (params?: Record<string, unknown>) => void> =\n {};\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\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 }\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 trackView() {\n if (this.trackPageView) {\n trackPageView({ context: this.contexts });\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 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(makePayload(params) as StructuredEvent);\n });\n } else {\n this.addEventHandler(name, (params?: Record<string, unknown>) => {\n this.trackUnstructEvent(\n makePayload(params) 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"],"names":["Snowplow","setContexts","contexts","index","findIndex","ctx","schema","includes","data","domain_userid","uid","trackView","trackPageView","context","trackEvent","event","trackStructEvent","bronzeAvalancheTrackerName","trackUnstructEvent","trackSelfDescribingEvent","avalancheTrackerName","addEventHandlers","eventDefinitions","forEach","name","type","makePayload","addEventHandler","params","handler","eventHandlers","removeEventHandler","trigger","constructor","props","pvAvalancheTrackerName","appId","cookieDomain","avalancheCollector","eventMethod","postPath","tpv","stateStorageStrategy","baseOptions","newTracker","setCookiePath","setUserId"],"mappings":"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"}
@@ -18,13 +18,13 @@ _export(exports, {
18
18
  });
19
19
  const _jsxruntime = require("react/jsx-runtime");
20
20
  const _react = require("react");
21
- const _ = require(".");
22
21
  const _contexts = require("./contexts");
23
22
  const _eventdefinitions = require("./event-definitions");
23
+ const _Snowplow = require("./Snowplow");
24
24
  const SnowplowContext = /*#__PURE__*/ (0, _react.createContext)(null);
25
25
  const SnowplowProvider = ({ scripts, children })=>{
26
26
  const [config, _setConfig] = (0, _react.useState)(scripts);
27
- const [snowplow, setSnowplow] = (0, _react.useState)(new _.Snowplow(config));
27
+ const [snowplow, setSnowplow] = (0, _react.useState)(new _Snowplow.Snowplow(config));
28
28
  // Attach event handlers and set contexts
29
29
  (0, _react.useEffect)(()=>{
30
30
  if (snowplow && scripts) {
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/services/snowplow/SnowplowContext.tsx"],"sourcesContent":["/* eslint-disable @typescript-eslint/no-unused-vars */\nimport {\n createContext,\n useContext,\n useEffect,\n useMemo,\n useState,\n type ReactNode,\n} from \"react\";\nimport { Snowplow } from \".\";\nimport { getContexts } from \"./contexts\";\nimport { eventDefinitions } from \"./event-definitions\";\nimport { EventDefinition, TrackingProps } from \"./types\";\n\nexport interface SnowplowContextInterface {\n config: TrackingProps;\n snowplow?: Snowplow;\n}\n\nconst SnowplowContext = createContext<SnowplowContextInterface | null>(null);\n\ntype ProviderProps = {\n scripts: TrackingProps;\n children: ReactNode;\n};\n\nexport const SnowplowProvider = ({ scripts, children }: ProviderProps) => {\n const [config, _setConfig] = useState<TrackingProps>(scripts);\n const [snowplow, setSnowplow] = useState<Snowplow>(new Snowplow(config));\n\n // Attach event handlers and set contexts\n useEffect(() => {\n if (snowplow && scripts) {\n const contexts = getContexts(config);\n\n snowplow\n .setContexts(contexts)\n .addEventHandlers(eventDefinitions as EventDefinition[]);\n // Send page view event\n if (config.trackPageView) snowplow.trackView();\n }\n }, [config, snowplow, scripts]);\n\n const value: SnowplowContextInterface = useMemo(\n () => ({\n config,\n snowplow,\n }),\n [config, snowplow],\n );\n\n return (\n <SnowplowContext.Provider value={value}>\n {children}\n </SnowplowContext.Provider>\n );\n};\n\nexport function useSnowplowContext() {\n const context = useContext(SnowplowContext);\n\n if (!context) {\n throw new Error(\n \"useSnowplowContext must be used inside a `SnowplowProvider`\",\n );\n }\n return context;\n}\n"],"names":["SnowplowProvider","useSnowplowContext","SnowplowContext","createContext","scripts","children","config","_setConfig","useState","snowplow","setSnowplow","Snowplow","useEffect","contexts","getContexts","setContexts","addEventHandlers","eventDefinitions","trackPageView","trackView","value","useMemo","Provider","context","useContext","Error"],"mappings":"AAAA,oDAAoD;;;;;;;;;;;IA0BvCA,gBAAgB;eAAhBA;;IAgCGC,kBAAkB;eAAlBA;;;;uBAlDT;kBACkB;0BACG;kCACK;AAQjC,MAAMC,gCAAkBC,IAAAA,oBAAa,EAAkC;AAOhE,MAAMH,mBAAmB,CAAC,EAAEI,OAAO,EAAEC,QAAQ,EAAiB;IACnE,MAAM,CAACC,QAAQC,WAAW,GAAGC,IAAAA,eAAQ,EAAgBJ;IACrD,MAAM,CAACK,UAAUC,YAAY,GAAGF,IAAAA,eAAQ,EAAW,IAAIG,UAAQ,CAACL;IAEhE,yCAAyC;IACzCM,IAAAA,gBAAS,EAAC;QACR,IAAIH,YAAYL,SAAS;YACvB,MAAMS,WAAWC,IAAAA,qBAAW,EAACR;YAE7BG,SACGM,WAAW,CAACF,UACZG,gBAAgB,CAACC,kCAAgB;YACpC,uBAAuB;YACvB,IAAIX,OAAOY,aAAa,EAAET,SAASU,SAAS;QAC9C;IACF,GAAG;QAACb;QAAQG;QAAUL;KAAQ;IAE9B,MAAMgB,QAAkCC,IAAAA,cAAO,EAC7C,IAAO,CAAA;YACLf;YACAG;QACF,CAAA,GACA;QAACH;QAAQG;KAAS;IAGpB,qBACE,qBAACP,gBAAgBoB,QAAQ;QAACF,OAAOA;kBAC9Bf;;AAGP;AAEO,SAASJ;IACd,MAAMsB,UAAUC,IAAAA,iBAAU,EAACtB;IAE3B,IAAI,CAACqB,SAAS;QACZ,MAAM,IAAIE,MACR;IAEJ;IACA,OAAOF;AACT"}
1
+ {"version":3,"sources":["../../../../src/services/snowplow/SnowplowContext.tsx"],"sourcesContent":["/* eslint-disable @typescript-eslint/no-unused-vars */\nimport {\n createContext,\n useContext,\n useEffect,\n useMemo,\n useState,\n type ReactNode,\n} from \"react\";\nimport { getContexts } from \"./contexts\";\nimport { eventDefinitions } from \"./event-definitions\";\nimport { EventDefinition, TrackingProps } from \"./types\";\nimport { Snowplow } from \"./Snowplow\";\n\nexport interface SnowplowContextInterface {\n config: TrackingProps;\n snowplow?: Snowplow;\n}\n\nconst SnowplowContext = createContext<SnowplowContextInterface | null>(null);\n\ntype ProviderProps = {\n scripts: TrackingProps;\n children: ReactNode;\n};\n\nexport const SnowplowProvider = ({ scripts, children }: ProviderProps) => {\n const [config, _setConfig] = useState<TrackingProps>(scripts);\n const [snowplow, setSnowplow] = useState<Snowplow>(new Snowplow(config));\n\n // Attach event handlers and set contexts\n useEffect(() => {\n if (snowplow && scripts) {\n const contexts = getContexts(config);\n\n snowplow\n .setContexts(contexts)\n .addEventHandlers(eventDefinitions as EventDefinition[]);\n // Send page view event\n if (config.trackPageView) snowplow.trackView();\n }\n }, [config, snowplow, scripts]);\n\n const value: SnowplowContextInterface = useMemo(\n () => ({\n config,\n snowplow,\n }),\n [config, snowplow],\n );\n\n return (\n <SnowplowContext.Provider value={value}>\n {children}\n </SnowplowContext.Provider>\n );\n};\n\nexport function useSnowplowContext() {\n const context = useContext(SnowplowContext);\n\n if (!context) {\n throw new Error(\n \"useSnowplowContext must be used inside a `SnowplowProvider`\",\n );\n }\n return context;\n}\n"],"names":["SnowplowProvider","useSnowplowContext","SnowplowContext","createContext","scripts","children","config","_setConfig","useState","snowplow","setSnowplow","Snowplow","useEffect","contexts","getContexts","setContexts","addEventHandlers","eventDefinitions","trackPageView","trackView","value","useMemo","Provider","context","useContext","Error"],"mappings":"AAAA,oDAAoD;;;;;;;;;;;IA0BvCA,gBAAgB;eAAhBA;;IAgCGC,kBAAkB;eAAlBA;;;;uBAlDT;0BACqB;kCACK;0BAER;AAOzB,MAAMC,gCAAkBC,IAAAA,oBAAa,EAAkC;AAOhE,MAAMH,mBAAmB,CAAC,EAAEI,OAAO,EAAEC,QAAQ,EAAiB;IACnE,MAAM,CAACC,QAAQC,WAAW,GAAGC,IAAAA,eAAQ,EAAgBJ;IACrD,MAAM,CAACK,UAAUC,YAAY,GAAGF,IAAAA,eAAQ,EAAW,IAAIG,kBAAQ,CAACL;IAEhE,yCAAyC;IACzCM,IAAAA,gBAAS,EAAC;QACR,IAAIH,YAAYL,SAAS;YACvB,MAAMS,WAAWC,IAAAA,qBAAW,EAACR;YAE7BG,SACGM,WAAW,CAACF,UACZG,gBAAgB,CAACC,kCAAgB;YACpC,uBAAuB;YACvB,IAAIX,OAAOY,aAAa,EAAET,SAASU,SAAS;QAC9C;IACF,GAAG;QAACb;QAAQG;QAAUL;KAAQ;IAE9B,MAAMgB,QAAkCC,IAAAA,cAAO,EAC7C,IAAO,CAAA;YACLf;YACAG;QACF,CAAA,GACA;QAACH;QAAQG;KAAS;IAGpB,qBACE,qBAACP,gBAAgBoB,QAAQ;QAACF,OAAOA;kBAC9Bf;;AAGP;AAEO,SAASJ;IACd,MAAMsB,UAAUC,IAAAA,iBAAU,EAACtB;IAE3B,IAAI,CAACqB,SAAS;QACZ,MAAM,IAAIE,MACR;IAEJ;IACA,OAAOF;AACT"}
@@ -2,137 +2,23 @@
2
2
  Object.defineProperty(exports, "__esModule", {
3
3
  value: true
4
4
  });
5
- Object.defineProperty(exports, "Snowplow", {
6
- enumerable: true,
7
- get: function() {
8
- return Snowplow;
9
- }
10
- });
11
- const _browsertracker = require("@snowplow/browser-tracker");
12
- function _define_property(obj, key, value) {
13
- if (key in obj) {
14
- Object.defineProperty(obj, key, {
15
- value: value,
16
- enumerable: true,
17
- configurable: true,
18
- writable: true
19
- });
20
- } else {
21
- obj[key] = value;
22
- }
23
- return obj;
24
- }
25
- class Snowplow {
26
- setContexts(contexts) {
27
- var _this_contexts;
28
- this.contexts = contexts;
29
- // Update identity context
30
- const index = (_this_contexts = this.contexts) === null || _this_contexts === void 0 ? void 0 : _this_contexts.findIndex((ctx)=>{
31
- var _ctx_schema;
32
- return (_ctx_schema = ctx.schema) === null || _ctx_schema === void 0 ? void 0 : _ctx_schema.includes("identity_context");
33
- });
34
- if (index > -1) {
35
- this.contexts[index].data.domain_userid = this.uid;
36
- }
37
- return this;
38
- }
39
- // Send a page view event
40
- trackView() {
41
- if (this.trackPageView) {
42
- (0, _browsertracker.trackPageView)({
43
- context: this.contexts
5
+ _export_star(require("./contexts"), exports);
6
+ _export_star(require("./getSnowplowConfig"), exports);
7
+ _export_star(require("./Snowplow"), exports);
8
+ _export_star(require("./SnowplowContext"), exports);
9
+ _export_star(require("./types"), exports);
10
+ function _export_star(from, to) {
11
+ Object.keys(from).forEach(function(k) {
12
+ if (k !== "default" && !Object.prototype.hasOwnProperty.call(to, k)) {
13
+ Object.defineProperty(to, k, {
14
+ enumerable: true,
15
+ get: function() {
16
+ return from[k];
17
+ }
44
18
  });
45
19
  }
46
- return this;
47
- }
48
- // Send a structured event with contexts
49
- async trackEvent(event) {
50
- await (0, _browsertracker.trackStructEvent)({
51
- ...event,
52
- context: this.contexts
53
- }, [
54
- this.bronzeAvalancheTrackerName
55
- ]);
56
- return this;
57
- }
58
- // Send a custom event with defined schema and optional contexts
59
- async trackUnstructEvent(event) {
60
- if (!event) {
61
- return this;
62
- }
63
- await (0, _browsertracker.trackSelfDescribingEvent)({
64
- event,
65
- context: this.contexts
66
- }, [
67
- this.avalancheTrackerName
68
- ]);
69
- return this;
70
- }
71
- addEventHandlers(eventDefinitions) {
72
- eventDefinitions.forEach(({ name, type, makePayload })=>{
73
- // Convert type into relevant function
74
- if (type === "structured") {
75
- this.addEventHandler(name, (params)=>{
76
- this.trackEvent(makePayload(params));
77
- });
78
- } else {
79
- this.addEventHandler(name, (params)=>{
80
- this.trackUnstructEvent(makePayload(params));
81
- });
82
- }
83
- });
84
- return this;
85
- }
86
- addEventHandler(name, handler) {
87
- this.eventHandlers[name] = handler;
88
- return this;
89
- }
90
- removeEventHandler(name) {
91
- delete this.eventHandlers[name];
92
- return this;
93
- }
94
- trigger(name, params) {
95
- if (this.eventHandlers[name]) {
96
- this.eventHandlers[name](params);
97
- }
98
- return this;
99
- }
100
- constructor(props){
101
- _define_property(this, "avalancheTrackerName", "sb-ava");
102
- _define_property(this, "bronzeAvalancheTrackerName", "sb-ava-br");
103
- _define_property(this, "pvAvalancheTrackerName", "sb-ava-pv");
104
- _define_property(this, "uid", "");
105
- _define_property(this, "trackPageView", false);
106
- _define_property(this, "contexts", []);
107
- _define_property(this, "eventHandlers", {});
108
- if (!props) return;
109
- const { appId, cookieDomain, avalancheCollector, eventMethod, uid, postPath, // includeGAContext,
110
- // trackActivity,
111
- trackPageView: tpv } = props;
112
- this.uid = uid;
113
- this.trackPageView = tpv;
114
- // Set options
115
- const stateStorageStrategy = "cookieAndLocalStorage";
116
- const baseOptions = {
117
- appId,
118
- cookieDomain,
119
- eventMethod,
120
- stateStorageStrategy,
121
- postPath
122
- };
123
- // Initialize trackers
124
- (0, _browsertracker.newTracker)(this.avalancheTrackerName, avalancheCollector, baseOptions);
125
- (0, _browsertracker.newTracker)(this.bronzeAvalancheTrackerName, avalancheCollector, baseOptions);
126
- // Page view tracker
127
- (0, _browsertracker.newTracker)(this.pvAvalancheTrackerName, avalancheCollector, {
128
- ...baseOptions,
129
- eventMethod: eventMethod === "post" ? "beacon" : eventMethod
130
- });
131
- (0, _browsertracker.setCookiePath)("/");
132
- if (uid) {
133
- (0, _browsertracker.setUserId)(uid);
134
- }
135
- }
20
+ });
21
+ return from;
136
22
  }
137
23
 
138
24
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/services/snowplow/index.ts"],"sourcesContent":["import {\n SelfDescribingJson,\n StructuredEvent,\n TrackerConfiguration,\n newTracker,\n setCookiePath,\n setUserId,\n trackPageView,\n trackSelfDescribingEvent,\n trackStructEvent,\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 eventHandlers: Record<string, (params?: Record<string, unknown>) => void> =\n {};\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\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 }\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 trackView() {\n if (this.trackPageView) {\n trackPageView({ context: this.contexts });\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 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(makePayload(params) as StructuredEvent);\n });\n } else {\n this.addEventHandler(name, (params?: Record<string, unknown>) => {\n this.trackUnstructEvent(\n makePayload(params) 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"],"names":["Snowplow","setContexts","contexts","index","findIndex","ctx","schema","includes","data","domain_userid","uid","trackView","trackPageView","context","trackEvent","event","trackStructEvent","bronzeAvalancheTrackerName","trackUnstructEvent","trackSelfDescribingEvent","avalancheTrackerName","addEventHandlers","eventDefinitions","forEach","name","type","makePayload","addEventHandler","params","handler","eventHandlers","removeEventHandler","trigger","constructor","props","pvAvalancheTrackerName","appId","cookieDomain","avalancheCollector","eventMethod","postPath","tpv","stateStorageStrategy","baseOptions","newTracker","setCookiePath","setUserId"],"mappings":"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"}
1
+ {"version":3,"sources":["../../../../src/services/snowplow/index.ts"],"sourcesContent":["export * from \"./contexts\";\nexport * from \"./getSnowplowConfig\";\nexport * from \"./Snowplow\";\nexport * from \"./SnowplowContext\";\nexport * from \"./types\";\n"],"names":[],"mappings":";;;;qBAAc;qBACA;qBACA;qBACA;qBACA"}
@@ -1,8 +1,4 @@
1
- // TODO: move all Snowplow related code to a single index.tsx file
2
1
  export * from "./snowplow";
3
- export * from "./snowplow/SnowplowContext";
4
- export * from "./snowplow/getSnowplowConfig";
5
- export * from "./snowplow/contexts";
6
2
  export * from "./airbrake";
7
3
 
8
4
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/services/index.tsx"],"sourcesContent":["// TODO: move all Snowplow related code to a single index.tsx file\nexport * from \"./snowplow\";\nexport * from \"./snowplow/SnowplowContext\";\nexport * from \"./snowplow/getSnowplowConfig\";\nexport * from \"./snowplow/contexts\";\nexport * from \"./airbrake\";\n"],"names":[],"mappings":"AAAA,kEAAkE;AAClE,cAAc,aAAa;AAC3B,cAAc,6BAA6B;AAC3C,cAAc,+BAA+B;AAC7C,cAAc,sBAAsB;AACpC,cAAc,aAAa"}
1
+ {"version":3,"sources":["../../../src/services/index.tsx"],"sourcesContent":["export * from \"./snowplow\";\nexport * from \"./airbrake\";\n"],"names":[],"mappings":"AAAA,cAAc,aAAa;AAC3B,cAAc,aAAa"}
@@ -0,0 +1,133 @@
1
+ function _define_property(obj, key, value) {
2
+ if (key in obj) {
3
+ Object.defineProperty(obj, key, {
4
+ value: value,
5
+ enumerable: true,
6
+ configurable: true,
7
+ writable: true
8
+ });
9
+ } else {
10
+ obj[key] = value;
11
+ }
12
+ return obj;
13
+ }
14
+ import { newTracker, setCookiePath, setUserId, trackPageView, trackSelfDescribingEvent, trackStructEvent } from "@snowplow/browser-tracker";
15
+ /**
16
+ * This class is an abstraction which wraps Snowplow
17
+ * and exposes common methods with other services:
18
+ * - trackEvent : sends a standard payload
19
+ * - trackUnstructEvent : sends a payload for custom schema
20
+ */ export class Snowplow {
21
+ 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
+ }
32
+ return this;
33
+ }
34
+ // Send a page view event
35
+ trackView() {
36
+ if (this.trackPageView) {
37
+ trackPageView({
38
+ context: this.contexts
39
+ });
40
+ }
41
+ return this;
42
+ }
43
+ // Send a structured event with contexts
44
+ async trackEvent(event) {
45
+ await trackStructEvent({
46
+ ...event,
47
+ context: this.contexts
48
+ }, [
49
+ this.bronzeAvalancheTrackerName
50
+ ]);
51
+ return this;
52
+ }
53
+ // Send a custom event with defined schema and optional contexts
54
+ async trackUnstructEvent(event) {
55
+ if (!event) {
56
+ return this;
57
+ }
58
+ await trackSelfDescribingEvent({
59
+ event,
60
+ context: this.contexts
61
+ }, [
62
+ this.avalancheTrackerName
63
+ ]);
64
+ return this;
65
+ }
66
+ addEventHandlers(eventDefinitions) {
67
+ eventDefinitions.forEach(({ name, type, makePayload })=>{
68
+ // Convert type into relevant function
69
+ if (type === "structured") {
70
+ this.addEventHandler(name, (params)=>{
71
+ this.trackEvent(makePayload(params));
72
+ });
73
+ } else {
74
+ this.addEventHandler(name, (params)=>{
75
+ this.trackUnstructEvent(makePayload(params));
76
+ });
77
+ }
78
+ });
79
+ return this;
80
+ }
81
+ addEventHandler(name, handler) {
82
+ this.eventHandlers[name] = handler;
83
+ return this;
84
+ }
85
+ removeEventHandler(name) {
86
+ delete this.eventHandlers[name];
87
+ return this;
88
+ }
89
+ trigger(name, params) {
90
+ if (this.eventHandlers[name]) {
91
+ this.eventHandlers[name](params);
92
+ }
93
+ return this;
94
+ }
95
+ constructor(props){
96
+ _define_property(this, "avalancheTrackerName", "sb-ava");
97
+ _define_property(this, "bronzeAvalancheTrackerName", "sb-ava-br");
98
+ _define_property(this, "pvAvalancheTrackerName", "sb-ava-pv");
99
+ _define_property(this, "uid", "");
100
+ _define_property(this, "trackPageView", false);
101
+ _define_property(this, "contexts", []);
102
+ _define_property(this, "eventHandlers", {});
103
+ if (!props) return;
104
+ const { appId, cookieDomain, avalancheCollector, eventMethod, uid, postPath, // includeGAContext,
105
+ // trackActivity,
106
+ trackPageView: tpv } = props;
107
+ this.uid = uid;
108
+ this.trackPageView = tpv;
109
+ // Set options
110
+ const stateStorageStrategy = "cookieAndLocalStorage";
111
+ const baseOptions = {
112
+ appId,
113
+ cookieDomain,
114
+ eventMethod,
115
+ stateStorageStrategy,
116
+ postPath
117
+ };
118
+ // Initialize trackers
119
+ newTracker(this.avalancheTrackerName, avalancheCollector, baseOptions);
120
+ newTracker(this.bronzeAvalancheTrackerName, avalancheCollector, baseOptions);
121
+ // Page view tracker
122
+ newTracker(this.pvAvalancheTrackerName, avalancheCollector, {
123
+ ...baseOptions,
124
+ eventMethod: eventMethod === "post" ? "beacon" : eventMethod
125
+ });
126
+ setCookiePath("/");
127
+ if (uid) {
128
+ setUserId(uid);
129
+ }
130
+ }
131
+ }
132
+
133
+ //# sourceMappingURL=Snowplow.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../src/services/snowplow/Snowplow.ts"],"sourcesContent":["import {\n SelfDescribingJson,\n StructuredEvent,\n TrackerConfiguration,\n newTracker,\n setCookiePath,\n setUserId,\n trackPageView,\n trackSelfDescribingEvent,\n trackStructEvent,\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 eventHandlers: Record<string, (params?: Record<string, unknown>) => void> =\n {};\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\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 }\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 trackView() {\n if (this.trackPageView) {\n trackPageView({ context: this.contexts });\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 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(makePayload(params) as StructuredEvent);\n });\n } else {\n this.addEventHandler(name, (params?: Record<string, unknown>) => {\n this.trackUnstructEvent(\n makePayload(params) 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"],"names":["newTracker","setCookiePath","setUserId","trackPageView","trackSelfDescribingEvent","trackStructEvent","Snowplow","setContexts","contexts","index","findIndex","ctx","schema","includes","data","domain_userid","uid","trackView","context","trackEvent","event","bronzeAvalancheTrackerName","trackUnstructEvent","avalancheTrackerName","addEventHandlers","eventDefinitions","forEach","name","type","makePayload","addEventHandler","params","handler","eventHandlers","removeEventHandler","trigger","constructor","props","pvAvalancheTrackerName","appId","cookieDomain","avalancheCollector","eventMethod","postPath","tpv","stateStorageStrategy","baseOptions"],"mappings":"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"}
@@ -1,8 +1,8 @@
1
1
  /* eslint-disable @typescript-eslint/no-unused-vars */ import { jsx as _jsx } from "react/jsx-runtime";
2
2
  import { createContext, useContext, useEffect, useMemo, useState } from "react";
3
- import { Snowplow } from ".";
4
3
  import { getContexts } from "./contexts";
5
4
  import { eventDefinitions } from "./event-definitions";
5
+ import { Snowplow } from "./Snowplow";
6
6
  const SnowplowContext = /*#__PURE__*/ createContext(null);
7
7
  export const SnowplowProvider = ({ scripts, children })=>{
8
8
  const [config, _setConfig] = useState(scripts);
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/services/snowplow/SnowplowContext.tsx"],"sourcesContent":["/* eslint-disable @typescript-eslint/no-unused-vars */\nimport {\n createContext,\n useContext,\n useEffect,\n useMemo,\n useState,\n type ReactNode,\n} from \"react\";\nimport { Snowplow } from \".\";\nimport { getContexts } from \"./contexts\";\nimport { eventDefinitions } from \"./event-definitions\";\nimport { EventDefinition, TrackingProps } from \"./types\";\n\nexport interface SnowplowContextInterface {\n config: TrackingProps;\n snowplow?: Snowplow;\n}\n\nconst SnowplowContext = createContext<SnowplowContextInterface | null>(null);\n\ntype ProviderProps = {\n scripts: TrackingProps;\n children: ReactNode;\n};\n\nexport const SnowplowProvider = ({ scripts, children }: ProviderProps) => {\n const [config, _setConfig] = useState<TrackingProps>(scripts);\n const [snowplow, setSnowplow] = useState<Snowplow>(new Snowplow(config));\n\n // Attach event handlers and set contexts\n useEffect(() => {\n if (snowplow && scripts) {\n const contexts = getContexts(config);\n\n snowplow\n .setContexts(contexts)\n .addEventHandlers(eventDefinitions as EventDefinition[]);\n // Send page view event\n if (config.trackPageView) snowplow.trackView();\n }\n }, [config, snowplow, scripts]);\n\n const value: SnowplowContextInterface = useMemo(\n () => ({\n config,\n snowplow,\n }),\n [config, snowplow],\n );\n\n return (\n <SnowplowContext.Provider value={value}>\n {children}\n </SnowplowContext.Provider>\n );\n};\n\nexport function useSnowplowContext() {\n const context = useContext(SnowplowContext);\n\n if (!context) {\n throw new Error(\n \"useSnowplowContext must be used inside a `SnowplowProvider`\",\n );\n }\n return context;\n}\n"],"names":["createContext","useContext","useEffect","useMemo","useState","Snowplow","getContexts","eventDefinitions","SnowplowContext","SnowplowProvider","scripts","children","config","_setConfig","snowplow","setSnowplow","contexts","setContexts","addEventHandlers","trackPageView","trackView","value","Provider","useSnowplowContext","context","Error"],"mappings":"AAAA,oDAAoD;AACpD,SACEA,aAAa,EACbC,UAAU,EACVC,SAAS,EACTC,OAAO,EACPC,QAAQ,QAEH,QAAQ;AACf,SAASC,QAAQ,QAAQ,IAAI;AAC7B,SAASC,WAAW,QAAQ,aAAa;AACzC,SAASC,gBAAgB,QAAQ,sBAAsB;AAQvD,MAAMC,gCAAkBR,cAA+C;AAOvE,OAAO,MAAMS,mBAAmB,CAAC,EAAEC,OAAO,EAAEC,QAAQ,EAAiB;IACnE,MAAM,CAACC,QAAQC,WAAW,GAAGT,SAAwBM;IACrD,MAAM,CAACI,UAAUC,YAAY,GAAGX,SAAmB,IAAIC,SAASO;IAEhE,yCAAyC;IACzCV,UAAU;QACR,IAAIY,YAAYJ,SAAS;YACvB,MAAMM,WAAWV,YAAYM;YAE7BE,SACGG,WAAW,CAACD,UACZE,gBAAgB,CAACX;YACpB,uBAAuB;YACvB,IAAIK,OAAOO,aAAa,EAAEL,SAASM,SAAS;QAC9C;IACF,GAAG;QAACR;QAAQE;QAAUJ;KAAQ;IAE9B,MAAMW,QAAkClB,QACtC,IAAO,CAAA;YACLS;YACAE;QACF,CAAA,GACA;QAACF;QAAQE;KAAS;IAGpB,qBACE,KAACN,gBAAgBc,QAAQ;QAACD,OAAOA;kBAC9BV;;AAGP,EAAE;AAEF,OAAO,SAASY;IACd,MAAMC,UAAUvB,WAAWO;IAE3B,IAAI,CAACgB,SAAS;QACZ,MAAM,IAAIC,MACR;IAEJ;IACA,OAAOD;AACT"}
1
+ {"version":3,"sources":["../../../../src/services/snowplow/SnowplowContext.tsx"],"sourcesContent":["/* eslint-disable @typescript-eslint/no-unused-vars */\nimport {\n createContext,\n useContext,\n useEffect,\n useMemo,\n useState,\n type ReactNode,\n} from \"react\";\nimport { getContexts } from \"./contexts\";\nimport { eventDefinitions } from \"./event-definitions\";\nimport { EventDefinition, TrackingProps } from \"./types\";\nimport { Snowplow } from \"./Snowplow\";\n\nexport interface SnowplowContextInterface {\n config: TrackingProps;\n snowplow?: Snowplow;\n}\n\nconst SnowplowContext = createContext<SnowplowContextInterface | null>(null);\n\ntype ProviderProps = {\n scripts: TrackingProps;\n children: ReactNode;\n};\n\nexport const SnowplowProvider = ({ scripts, children }: ProviderProps) => {\n const [config, _setConfig] = useState<TrackingProps>(scripts);\n const [snowplow, setSnowplow] = useState<Snowplow>(new Snowplow(config));\n\n // Attach event handlers and set contexts\n useEffect(() => {\n if (snowplow && scripts) {\n const contexts = getContexts(config);\n\n snowplow\n .setContexts(contexts)\n .addEventHandlers(eventDefinitions as EventDefinition[]);\n // Send page view event\n if (config.trackPageView) snowplow.trackView();\n }\n }, [config, snowplow, scripts]);\n\n const value: SnowplowContextInterface = useMemo(\n () => ({\n config,\n snowplow,\n }),\n [config, snowplow],\n );\n\n return (\n <SnowplowContext.Provider value={value}>\n {children}\n </SnowplowContext.Provider>\n );\n};\n\nexport function useSnowplowContext() {\n const context = useContext(SnowplowContext);\n\n if (!context) {\n throw new Error(\n \"useSnowplowContext must be used inside a `SnowplowProvider`\",\n );\n }\n return context;\n}\n"],"names":["createContext","useContext","useEffect","useMemo","useState","getContexts","eventDefinitions","Snowplow","SnowplowContext","SnowplowProvider","scripts","children","config","_setConfig","snowplow","setSnowplow","contexts","setContexts","addEventHandlers","trackPageView","trackView","value","Provider","useSnowplowContext","context","Error"],"mappings":"AAAA,oDAAoD;AACpD,SACEA,aAAa,EACbC,UAAU,EACVC,SAAS,EACTC,OAAO,EACPC,QAAQ,QAEH,QAAQ;AACf,SAASC,WAAW,QAAQ,aAAa;AACzC,SAASC,gBAAgB,QAAQ,sBAAsB;AAEvD,SAASC,QAAQ,QAAQ,aAAa;AAOtC,MAAMC,gCAAkBR,cAA+C;AAOvE,OAAO,MAAMS,mBAAmB,CAAC,EAAEC,OAAO,EAAEC,QAAQ,EAAiB;IACnE,MAAM,CAACC,QAAQC,WAAW,GAAGT,SAAwBM;IACrD,MAAM,CAACI,UAAUC,YAAY,GAAGX,SAAmB,IAAIG,SAASK;IAEhE,yCAAyC;IACzCV,UAAU;QACR,IAAIY,YAAYJ,SAAS;YACvB,MAAMM,WAAWX,YAAYO;YAE7BE,SACGG,WAAW,CAACD,UACZE,gBAAgB,CAACZ;YACpB,uBAAuB;YACvB,IAAIM,OAAOO,aAAa,EAAEL,SAASM,SAAS;QAC9C;IACF,GAAG;QAACR;QAAQE;QAAUJ;KAAQ;IAE9B,MAAMW,QAAkClB,QACtC,IAAO,CAAA;YACLS;YACAE;QACF,CAAA,GACA;QAACF;QAAQE;KAAS;IAGpB,qBACE,KAACN,gBAAgBc,QAAQ;QAACD,OAAOA;kBAC9BV;;AAGP,EAAE;AAEF,OAAO,SAASY;IACd,MAAMC,UAAUvB,WAAWO;IAE3B,IAAI,CAACgB,SAAS;QACZ,MAAM,IAAIC,MACR;IAEJ;IACA,OAAOD;AACT"}