@xyo-network/react-user-events 7.5.7 → 7.5.11

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.
@@ -1 +1 @@
1
- {"version":3,"file":"XyoUserEvents.d.ts","sourceRoot":"","sources":["../../src/XyoUserEvents.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,mBAAmB,EAAE,iBAAiB,EAAE,eAAe,EAAE,iBAAiB,EAC3E,MAAM,eAAe,CAAA;AACtB,OAAO,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAA;AAChD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAA;AACjD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAA;AAKhD,OAAO,KAAK,EACV,0BAA0B,EAAE,wBAAwB,EAAE,wBAAwB,EAC/E,MAAM,uCAAuC,CAAA;AAC9C,OAAO,KAAK,EACV,0BAA0B,EAAE,wBAAwB,EAAE,wBAAwB,EAC/E,MAAM,uCAAuC,CAAA;AAC9C,OAAO,KAAK,EACV,6BAA6B,EAAE,2BAA2B,EAAE,2BAA2B,EACxF,MAAM,0CAA0C,CAAA;AAEjD,OAAO,KAAK,EAAE,wBAAwB,EAAE,yBAAyB,EAAE,MAAM,+BAA+B,CAAA;AAExG,qBAAa,aAAa,CAAC,KAAK,SAAS,WAAW,GAAG,WAAW,CAAE,SAAQ,gBAAgB,CAAC,KAAK,CAAC;IAEjG,MAAM,CAAC,QAAQ,EAAE,aAAa,CAAC,WAAW,CAAC,CAAA;IAE3C,SAAS,CAAC,QAAQ,EAAE,wBAAwB,CAAC,KAAK,CAAC,EAAE,CAAA;IAErD,OAAO;IAKP,MAAM,CAAC,GAAG,CAAC,CAAC,SAAS,WAAW,GAAG,WAAW,EAAE,QAAQ,CAAC,EAAE,QAAQ;IASnE,aAAa,CAAC,CAAC,SAAS,KAAK,EAAE,OAAO,EAAE,CAAC,GAAG,mBAAmB,GAAG,OAAO,CAAC,IAAI,CAAC;IAI/E,WAAW,CAAC,CAAC,SAAS,KAAK,EAAE,OAAO,EAAE,CAAC,GAAG,iBAAiB,GAAG,OAAO,CAAC,IAAI,CAAC;IAIrE,SAAS,CAAC,CAAC,SAAS,KAAK,EAAE,MAAM,EAAE,CAAC,GAAG,eAAe;IAItD,WAAW,CAAC,CAAC,SAAS,KAAK,EAAE,MAAM,EAAE,CAAC,GAAG,iBAAiB;IAI1D,oBAAoB,CAAC,CAAC,SAAS,KAAK,EAAE,MAAM,EAAE,CAAC,GAAG,0BAA0B;IAI5E,kBAAkB,CAAC,CAAC,SAAS,KAAK,EAAE,MAAM,EAAE,CAAC,GAAG,wBAAwB;IAIxE,kBAAkB,CAAC,CAAC,SAAS,KAAK,EAAE,MAAM,EAAE,CAAC,GAAG,wBAAwB;IAIxE,oBAAoB,CAAC,CAAC,SAAS,KAAK,EAAE,MAAM,EAAE,CAAC,GAAG,0BAA0B;IAI5E,kBAAkB,CAAC,CAAC,SAAS,KAAK,EAAE,MAAM,EAAE,CAAC,GAAG,wBAAwB;IAIxE,kBAAkB,CAAC,CAAC,SAAS,KAAK,EAAE,MAAM,EAAE,CAAC,GAAG,wBAAwB;IAIxE,uBAAuB,CAAC,CAAC,SAAS,KAAK,EAAE,MAAM,EAAE,CAAC,GAAG,6BAA6B;IAIlF,qBAAqB,CAAC,CAAC,SAAS,KAAK,EAAE,MAAM,EAAE,CAAC,GAAG,2BAA2B;IAI9E,qBAAqB,CAAC,CAAC,SAAS,KAAK,EAAE,MAAM,EAAE,CAAC,GAAG,2BAA2B;IAI9E,mBAAmB,CAAC,CAAC,SAAS,KAAK,EAAE,MAAM,EAAE,CAAC,GAAG,yBAAyB;CAGjF"}
1
+ {"version":3,"file":"XyoUserEvents.d.ts","sourceRoot":"","sources":["../../src/XyoUserEvents.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,mBAAmB,EAAE,iBAAiB,EAAE,eAAe,EAAE,iBAAiB,EAC3E,MAAM,eAAe,CAAA;AACtB,OAAO,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAA;AAChD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAA;AACjD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAA;AAKhD,OAAO,KAAK,EACV,0BAA0B,EAAE,wBAAwB,EAAE,wBAAwB,EAC/E,MAAM,uCAAuC,CAAA;AAC9C,OAAO,KAAK,EACV,0BAA0B,EAAE,wBAAwB,EAAE,wBAAwB,EAC/E,MAAM,uCAAuC,CAAA;AAC9C,OAAO,KAAK,EACV,6BAA6B,EAAE,2BAA2B,EAAE,2BAA2B,EACxF,MAAM,0CAA0C,CAAA;AAEjD,OAAO,KAAK,EAAE,wBAAwB,EAAE,yBAAyB,EAAE,MAAM,+BAA+B,CAAA;AAExG,qBAAa,aAAa,CAAC,KAAK,SAAS,WAAW,GAAG,WAAW,CAAE,SAAQ,gBAAgB,CAAC,KAAK,CAAC;IACjG,MAAM,CAAC,QAAQ,EAAE,aAAa,CAAC,WAAW,CAAC,CAAA;IAE3C,SAAS,CAAC,QAAQ,EAAE,wBAAwB,CAAC,KAAK,CAAC,EAAE,CAAA;IAErD,OAAO;IAKP,MAAM,CAAC,GAAG,CAAC,CAAC,SAAS,WAAW,GAAG,WAAW,EAAE,QAAQ,CAAC,EAAE,QAAQ;IASnE,aAAa,CAAC,CAAC,SAAS,KAAK,EAAE,OAAO,EAAE,CAAC,GAAG,mBAAmB,GAAG,OAAO,CAAC,IAAI,CAAC;IAI/E,WAAW,CAAC,CAAC,SAAS,KAAK,EAAE,OAAO,EAAE,CAAC,GAAG,iBAAiB,GAAG,OAAO,CAAC,IAAI,CAAC;IAIrE,SAAS,CAAC,CAAC,SAAS,KAAK,EAAE,MAAM,EAAE,CAAC,GAAG,eAAe;IAItD,WAAW,CAAC,CAAC,SAAS,KAAK,EAAE,MAAM,EAAE,CAAC,GAAG,iBAAiB;IAI1D,oBAAoB,CAAC,CAAC,SAAS,KAAK,EAAE,MAAM,EAAE,CAAC,GAAG,0BAA0B;IAI5E,kBAAkB,CAAC,CAAC,SAAS,KAAK,EAAE,MAAM,EAAE,CAAC,GAAG,wBAAwB;IAIxE,kBAAkB,CAAC,CAAC,SAAS,KAAK,EAAE,MAAM,EAAE,CAAC,GAAG,wBAAwB;IAIxE,oBAAoB,CAAC,CAAC,SAAS,KAAK,EAAE,MAAM,EAAE,CAAC,GAAG,0BAA0B;IAI5E,kBAAkB,CAAC,CAAC,SAAS,KAAK,EAAE,MAAM,EAAE,CAAC,GAAG,wBAAwB;IAIxE,kBAAkB,CAAC,CAAC,SAAS,KAAK,EAAE,MAAM,EAAE,CAAC,GAAG,wBAAwB;IAIxE,uBAAuB,CAAC,CAAC,SAAS,KAAK,EAAE,MAAM,EAAE,CAAC,GAAG,6BAA6B;IAIlF,qBAAqB,CAAC,CAAC,SAAS,KAAK,EAAE,MAAM,EAAE,CAAC,GAAG,2BAA2B;IAI9E,qBAAqB,CAAC,CAAC,SAAS,KAAK,EAAE,MAAM,EAAE,CAAC,GAAG,2BAA2B;IAI9E,mBAAmB,CAAC,CAAC,SAAS,KAAK,EAAE,MAAM,EAAE,CAAC,GAAG,yBAAyB;CAGjF"}
@@ -1,11 +1,8 @@
1
- var __defProp = Object.defineProperty;
2
- var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
3
-
4
1
  // src/hooks/useXyoUserEvents.ts
5
2
  import { useUserEvents } from "@xylabs/react-pixel";
6
- var useXyoUserEvents = /* @__PURE__ */ __name(() => {
3
+ var useXyoUserEvents = () => {
7
4
  return useUserEvents(true);
8
- }, "useXyoUserEvents");
5
+ };
9
6
 
10
7
  // src/XyoEventHandler.ts
11
8
  import { UserEventHandler } from "@xylabs/pixel";
@@ -13,9 +10,6 @@ import { UserEventHandler } from "@xylabs/pixel";
13
10
  // src/Xy/index.ts
14
11
  import { XyCustomEvent } from "@xylabs/react-pixel";
15
12
  var XyEvents = class {
16
- static {
17
- __name(this, "XyEvents");
18
- }
19
13
  custom(name) {
20
14
  return new XyCustomEvent(name);
21
15
  }
@@ -35,9 +29,6 @@ var XyEvents = class {
35
29
 
36
30
  // src/XyoEventHandler.ts
37
31
  var XyoEventHandler = class extends UserEventHandler {
38
- static {
39
- __name(this, "XyoEventHandler");
40
- }
41
32
  _events = new XyEvents();
42
33
  get events() {
43
34
  return this._events;
@@ -92,9 +83,6 @@ import { UserEventHandler as UserEventHandler2 } from "@xylabs/pixel";
92
83
  // src/Facebook/index.ts
93
84
  import { FacebookCustomEvent, FacebookStandardEvents } from "@xylabs/react-pixel";
94
85
  var FacebookEvents = class extends FacebookStandardEvents {
95
- static {
96
- __name(this, "FacebookEvents");
97
- }
98
86
  custom(name) {
99
87
  return new FacebookCustomEvent(name);
100
88
  }
@@ -105,9 +93,6 @@ var FacebookEvents = class extends FacebookStandardEvents {
105
93
 
106
94
  // src/FacebookEventHandler.ts
107
95
  var FacebookEventHandler = class extends XyoEventHandler {
108
- static {
109
- __name(this, "FacebookEventHandler");
110
- }
111
96
  facebookEvents = new FacebookEvents();
112
97
  get events() {
113
98
  return this.facebookEvents;
@@ -123,9 +108,7 @@ var FacebookEventHandler = class extends XyoEventHandler {
123
108
  }
124
109
  ],
125
110
  content_name: fields.name,
126
- content_ids: [
127
- fields.id
128
- ],
111
+ content_ids: [fields.id],
129
112
  content_type: "product",
130
113
  num_items: fields.quantity ?? 1,
131
114
  currency: fields.currency ?? "USD",
@@ -134,18 +117,13 @@ var FacebookEventHandler = class extends XyoEventHandler {
134
117
  await this.facebookEvents.purchase().send(facebookFields);
135
118
  }
136
119
  async xyoNewsletterSignup(fields) {
137
- await this.facebookEvents.lead().send({
138
- content_category: fields.name
139
- });
120
+ await this.facebookEvents.lead().send({ content_category: fields.name });
140
121
  }
141
122
  };
142
123
 
143
124
  // src/Google/index.ts
144
125
  import { GoogleCustomEvent, GoogleStandardEvents } from "@xylabs/react-pixel";
145
126
  var GoogleEvents = class extends GoogleStandardEvents {
146
- static {
147
- __name(this, "GoogleEvents");
148
- }
149
127
  custom(name) {
150
128
  return new GoogleCustomEvent(name);
151
129
  }
@@ -162,9 +140,6 @@ var GoogleEvents = class extends GoogleStandardEvents {
162
140
 
163
141
  // src/GoogleEventHandler.ts
164
142
  var GoogleEventHandler = class extends XyoEventHandler {
165
- static {
166
- __name(this, "GoogleEventHandler");
167
- }
168
143
  googleEvents = new GoogleEvents();
169
144
  get events() {
170
145
  return this.googleEvents;
@@ -184,9 +159,6 @@ var GoogleEventHandler = class extends XyoEventHandler {
184
159
  // src/Mixpanel/index.ts
185
160
  import { MixpanelCustomEvent, MixpanelPageViewEvent } from "@xylabs/react-pixel";
186
161
  var MixpanelEvents = class {
187
- static {
188
- __name(this, "MixpanelEvents");
189
- }
190
162
  mixpanel;
191
163
  constructor(mixpanel) {
192
164
  this.mixpanel = mixpanel;
@@ -210,9 +182,6 @@ var MixpanelEvents = class {
210
182
 
211
183
  // src/MixpanelEventHandler.ts
212
184
  var MixpanelEventHandler = class extends XyoEventHandler {
213
- static {
214
- __name(this, "MixpanelEventHandler");
215
- }
216
185
  mixpanel;
217
186
  mixpanelEvents;
218
187
  constructor(mixpanel) {
@@ -230,27 +199,15 @@ var MixpanelEventHandler = class extends XyoEventHandler {
230
199
 
231
200
  // src/XyoUserEvents.ts
232
201
  var XyoUserEvents = class _XyoUserEvents extends UserEventHandler2 {
233
- static {
234
- __name(this, "XyoUserEvents");
235
- }
236
- // eslint-disable-next-line sonarjs/public-static-readonly
237
202
  static instance;
238
203
  handlers;
239
204
  constructor(handlers) {
240
205
  super();
241
- this.handlers = handlers ?? [
242
- new XyoEventHandler(),
243
- new FacebookEventHandler(),
244
- new GoogleEventHandler()
245
- ];
206
+ this.handlers = handlers ?? [new XyoEventHandler(), new FacebookEventHandler(), new GoogleEventHandler()];
246
207
  }
247
208
  static get(mixpanel) {
248
209
  this.instance = this.instance ?? (() => {
249
- const handlers = [
250
- new XyoEventHandler(),
251
- new FacebookEventHandler(),
252
- new GoogleEventHandler()
253
- ];
210
+ const handlers = [new XyoEventHandler(), new FacebookEventHandler(), new GoogleEventHandler()];
254
211
  if (mixpanel) handlers.push(new MixpanelEventHandler(mixpanel));
255
212
  return new _XyoUserEvents(handlers);
256
213
  })();
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/hooks/useXyoUserEvents.ts","../../src/XyoEventHandler.ts","../../src/Xy/index.ts","../../src/XyoUserEvents.ts","../../src/Facebook/index.ts","../../src/FacebookEventHandler.ts","../../src/Google/index.ts","../../src/GoogleEventHandler.ts","../../src/Mixpanel/index.ts","../../src/MixpanelEventHandler.ts"],"sourcesContent":["import { useUserEvents } from '@xylabs/react-pixel'\n\nimport type { XyoUserEvents } from '../XyoUserEvents.ts'\n\nexport const useXyoUserEvents = () => {\n return useUserEvents(true) as XyoUserEvents\n}\n","import type {\n FunnelStartedFields, PurchaseFields, TestStartedFields, UserClickFields, ViewContentFields,\n} from '@xylabs/pixel'\nimport { UserEventHandler } from '@xylabs/pixel'\nimport type { EmptyObject, Promisable } from '@xylabs/sdk-js'\n\nimport type {\n XnsEstimateAttemptedFields, XnsEstimateFailureFields, XnsEstimateSuccessFields,\n} from './XnsEstimateEventHandlerInterface.ts'\nimport type {\n XnsPurchaseAttemptedFields, XnsPurchaseFailureFields, XnsPurchaseSuccessFields,\n} from './XnsPurchaseEventHandlerInterface.js'\nimport type {\n XnsReservationAttemptedFields, XnsReservationFailureFields, XnsReservationSuccessFields,\n} from './XnsReservationEventHandlerInterface.ts'\nimport { XyEvents } from './Xy/index.ts'\nimport type { XyoEventHandlerInterface, XyoNewsletterSignupFields } from './XyoEventHandlerInterface.ts'\n\nexport interface Event<TData extends EmptyObject = EmptyObject> {\n send<T extends TData>(fields: T, eventId?: string): Promisable<void>\n}\n\nexport interface Events<TData extends EmptyObject = EmptyObject> {\n custom<T extends TData>(name: string): Event<T>\n purchase<T extends TData>(): Event<PurchaseFields | T>\n userClick<T extends TData>(): Event<UserClickFields | T>\n viewContent<T extends TData>(): Event<ViewContentFields | T>\n}\n\nexport class XyoEventHandler<T extends EmptyObject> extends UserEventHandler<T> implements XyoEventHandlerInterface<T> {\n private _events = new XyEvents()\n\n get events(): Events<T> {\n return this._events\n }\n\n funnelStarted(_fields: T | FunnelStartedFields): Promise<void> {\n throw new Error('Method not implemented.')\n }\n\n testStarted(_fields: T | TestStartedFields): Promise<void> {\n throw new Error('Method not implemented.')\n }\n\n async userClick(fields: UserClickFields) {\n await this.events.userClick().send(fields)\n }\n\n async viewContent(fields: ViewContentFields) {\n await this.events.viewContent().send(fields)\n }\n\n async xnsEstimateAttempted(fields: XnsEstimateAttemptedFields | T) {\n await this.events.custom('XnsEstimateAttempted').send(fields as T)\n }\n\n async xnsEstimateFailure(fields: XnsEstimateFailureFields | T) {\n await this.events.custom('XnsEstimateFailure').send(fields as T)\n }\n\n async xnsEstimateSuccess(fields: XnsEstimateSuccessFields | T) {\n await this.events.custom('XnsEstimateSuccess').send(fields as T)\n }\n\n async xnsPurchaseAttempted(fields: XnsPurchaseAttemptedFields | T) {\n await this.events.custom('XnsPurchaseAttempted').send(fields as T)\n }\n\n async xnsPurchaseFailure(fields: XnsPurchaseFailureFields | T) {\n await this.events.custom('XnsPurchaseFailure').send(fields as T)\n }\n\n async xnsPurchaseSuccess(fields: XnsPurchaseSuccessFields) {\n await this.events.purchase().send(fields)\n }\n\n async xnsReservationAttempted(fields: XnsReservationAttemptedFields | T) {\n await this.events.custom('XnsReservationAttempted').send(fields as T)\n }\n\n async xnsReservationFailure(fields: XnsReservationFailureFields | T) {\n await this.events.custom('XnsReservationFailure').send(fields as T)\n }\n\n async xnsReservationSuccess(fields: XnsReservationSuccessFields | T) {\n await this.events.custom('XnsReservationSuccess').send(fields as T)\n }\n\n async xyoNewsletterSignup(fields: XyoNewsletterSignupFields | T) {\n await this.events.custom('XyoNewsletterSignup').send(fields as T)\n }\n}\n","import type {\n PurchaseFields, UserClickFields, ViewContentFields,\n} from '@xylabs/pixel'\nimport { XyCustomEvent } from '@xylabs/react-pixel'\nimport type { EmptyObject } from '@xylabs/sdk-js'\n\nexport class XyEvents<T extends EmptyObject> {\n custom(name: string) {\n return new XyCustomEvent<PurchaseFields | T>(name)\n }\n\n pageview() {\n return new XyCustomEvent<ViewContentFields | T>('ViewContent')\n }\n\n purchase() {\n return new XyCustomEvent<PurchaseFields | T>('Purchase')\n }\n\n userClick() {\n return new XyCustomEvent<UserClickFields | T>('UserClick')\n }\n\n viewContent() {\n return new XyCustomEvent<ViewContentFields | T>('ViewContent')\n }\n}\n","import type {\n FunnelStartedFields, TestStartedFields, UserClickFields, ViewContentFields,\n} from '@xylabs/pixel'\nimport { UserEventHandler } from '@xylabs/pixel'\nimport type { EmptyObject } from '@xylabs/sdk-js'\nimport type { Mixpanel } from 'mixpanel-browser'\n\nimport { FacebookEventHandler } from './FacebookEventHandler.ts'\nimport { GoogleEventHandler } from './GoogleEventHandler.ts'\nimport { MixpanelEventHandler } from './MixpanelEventHandler.ts'\nimport type {\n XnsEstimateAttemptedFields, XnsEstimateFailureFields, XnsEstimateSuccessFields,\n} from './XnsEstimateEventHandlerInterface.ts'\nimport type {\n XnsPurchaseAttemptedFields, XnsPurchaseFailureFields, XnsPurchaseSuccessFields,\n} from './XnsPurchaseEventHandlerInterface.ts'\nimport type {\n XnsReservationAttemptedFields, XnsReservationFailureFields, XnsReservationSuccessFields,\n} from './XnsReservationEventHandlerInterface.ts'\nimport { XyoEventHandler } from './XyoEventHandler.ts'\nimport type { XyoEventHandlerInterface, XyoNewsletterSignupFields } from './XyoEventHandlerInterface.ts'\n\nexport class XyoUserEvents<TData extends EmptyObject = EmptyObject> extends UserEventHandler<TData> {\n // eslint-disable-next-line sonarjs/public-static-readonly\n static instance: XyoUserEvents<EmptyObject>\n\n protected handlers: XyoEventHandlerInterface<TData>[]\n\n private constructor(handlers?: XyoEventHandlerInterface<TData>[]) {\n super()\n this.handlers = handlers ?? [new XyoEventHandler<TData>(), new FacebookEventHandler<TData>(), new GoogleEventHandler<TData>()]\n }\n\n static get<T extends EmptyObject = EmptyObject>(mixpanel?: Mixpanel) {\n this.instance = this.instance ?? (() => {\n const handlers = [new XyoEventHandler<T>(), new FacebookEventHandler<T>(), new GoogleEventHandler<T>()]\n if (mixpanel) handlers.push(new MixpanelEventHandler(mixpanel))\n return new XyoUserEvents<T>(handlers)\n })()\n return this.instance\n }\n\n funnelStarted<T extends TData>(_fields: T | FunnelStartedFields): Promise<void> {\n throw new Error('Method not implemented.')\n }\n\n testStarted<T extends TData>(_fields: T | TestStartedFields): Promise<void> {\n throw new Error('Method not implemented.')\n }\n\n async userClick<T extends TData>(fields: T | UserClickFields) {\n await Promise.all(this.handlers.map(handler => handler.userClick<T>(fields)))\n }\n\n async viewContent<T extends TData>(fields: T | ViewContentFields) {\n await Promise.all(this.handlers.map(handler => handler.viewContent(fields)))\n }\n\n async xnsEstimateAttempted<T extends TData>(fields: T | XnsEstimateAttemptedFields) {\n await Promise.all(this.handlers.map(handler => handler.xnsEstimateAttempted(fields)))\n }\n\n async xnsEstimateFailure<T extends TData>(fields: T | XnsEstimateFailureFields) {\n await Promise.all(this.handlers.map(handler => handler.xnsEstimateFailure(fields)))\n }\n\n async xnsEstimateSuccess<T extends TData>(fields: T | XnsEstimateSuccessFields) {\n await Promise.all(this.handlers.map(handler => handler.xnsEstimateSuccess(fields)))\n }\n\n async xnsPurchaseAttempted<T extends TData>(fields: T | XnsPurchaseAttemptedFields) {\n await Promise.all(this.handlers.map(handler => handler.xnsPurchaseAttempted(fields)))\n }\n\n async xnsPurchaseFailure<T extends TData>(fields: T | XnsPurchaseFailureFields) {\n await Promise.all(this.handlers.map(handler => handler.xnsPurchaseFailure(fields)))\n }\n\n async xnsPurchaseSuccess<T extends TData>(fields: T | XnsPurchaseSuccessFields) {\n await Promise.all(this.handlers.map(handler => handler.xnsPurchaseSuccess(fields)))\n }\n\n async xnsReservationAttempted<T extends TData>(fields: T | XnsReservationAttemptedFields) {\n await Promise.all(this.handlers.map(handler => handler.xnsReservationAttempted(fields)))\n }\n\n async xnsReservationFailure<T extends TData>(fields: T | XnsReservationFailureFields) {\n await Promise.all(this.handlers.map(handler => handler.xnsReservationFailure(fields)))\n }\n\n async xnsReservationSuccess<T extends TData>(fields: T | XnsReservationSuccessFields) {\n await Promise.all(this.handlers.map(handler => handler.xnsReservationSuccess(fields)))\n }\n\n async xyoNewsletterSignup<T extends TData>(fields: T | XyoNewsletterSignupFields) {\n await Promise.all(this.handlers.map(handler => handler.xyoNewsletterSignup(fields)))\n }\n}\n","import { FacebookCustomEvent, FacebookStandardEvents } from '@xylabs/react-pixel'\nimport type { EmptyObject } from '@xylabs/sdk-js'\n\nexport interface FacebookUserClick extends Record<string, unknown> {\n elementName: string\n elementType: string\n}\n\nexport class FacebookEvents<T extends EmptyObject> extends FacebookStandardEvents<T> {\n custom<T extends EmptyObject>(name: string) {\n return new FacebookCustomEvent<T>(name)\n }\n\n userClick() {\n return new FacebookCustomEvent<FacebookUserClick | T>('UserClick')\n }\n}\n","import type { FacebookPurchase } from '@xylabs/react-pixel'\nimport type { EmptyObject } from '@xylabs/sdk-js'\n\nimport type { CustomProperties } from './CustomProperties.ts'\nimport { FacebookEvents } from './Facebook/index.ts'\nimport type { XnsPurchaseSuccessFields } from './XnsPurchaseEventHandlerInterface.ts'\nimport type { Events } from './XyoEventHandler.ts'\nimport { XyoEventHandler } from './XyoEventHandler.ts'\nimport type { XyoEventHandlerInterface, XyoNewsletterSignupFields } from './XyoEventHandlerInterface.ts'\n\nexport class FacebookEventHandler<T extends EmptyObject> extends XyoEventHandler<T> implements XyoEventHandlerInterface<T> {\n protected facebookEvents = new FacebookEvents<CustomProperties>()\n\n override get events() {\n return this.facebookEvents as Events<T>\n }\n\n override async xnsPurchaseSuccess(fields: XnsPurchaseSuccessFields) {\n const facebookFields: FacebookPurchase = {\n contents: [\n {\n id: fields.id,\n currency: fields.currency ?? 'USD',\n quantity: fields.quantity ?? 1,\n price: fields.price,\n },\n ],\n content_name: fields.name,\n content_ids: [fields.id],\n content_type: 'product',\n num_items: fields.quantity ?? 1,\n currency: fields.currency ?? 'USD',\n value: fields.value,\n }\n await this.facebookEvents.purchase().send(facebookFields)\n }\n\n override async xyoNewsletterSignup(fields: XyoNewsletterSignupFields) {\n await this.facebookEvents.lead().send({ content_category: fields.name })\n }\n}\n","import type {\n PurchaseFields, UserClickFields, ViewContentFields,\n} from '@xylabs/pixel'\nimport { GoogleCustomEvent, GoogleStandardEvents } from '@xylabs/react-pixel'\nimport type { EmptyObject } from '@xylabs/sdk-js'\n\nexport interface GoogleViewContent extends Record<string, unknown> {\n name: string\n path: string\n}\n\nexport interface GoogleUserClick extends Record<string, unknown> {\n elementName: string\n elementType: string\n}\n\nexport class GoogleEvents<TData extends EmptyObject = EmptyObject> extends GoogleStandardEvents<TData> {\n custom<T extends TData>(name: string) {\n return new GoogleCustomEvent<PurchaseFields | T>(name)\n }\n\n pageView<T extends TData>() {\n return new GoogleCustomEvent<ViewContentFields | T>('PageView')\n }\n\n userClick<T extends TData>() {\n return new GoogleCustomEvent<UserClickFields | T>('UserClick')\n }\n\n viewContent<T extends TData>() {\n return new GoogleCustomEvent<ViewContentFields | T>('ViewContent')\n }\n}\n","import type { GoogleCartProperties, GooglePurchaseProperties } from '@xylabs/react-pixel'\nimport type { EmptyObject } from '@xylabs/sdk-js'\n\nimport type { CustomProperties } from './CustomProperties.ts'\nimport { GoogleEvents } from './Google/index.ts'\nimport type { XnsPurchaseSuccessFields } from './XnsPurchaseEventHandlerInterface.ts'\nimport type { Events } from './XyoEventHandler.ts'\nimport { XyoEventHandler } from './XyoEventHandler.ts'\nimport type { XyoEventHandlerInterface } from './XyoEventHandlerInterface.ts'\n\nexport class GoogleEventHandler<T extends EmptyObject> extends XyoEventHandler<T> implements XyoEventHandlerInterface<T> {\n protected googleEvents = new GoogleEvents<CustomProperties | GoogleCartProperties>()\n\n override get events() {\n return this.googleEvents as Events<T>\n }\n\n override async xnsPurchaseSuccess(fields: XnsPurchaseSuccessFields) {\n const googleFields: GooglePurchaseProperties = {\n item_name: fields.name,\n id: fields.id,\n quantity: fields.quantity ?? 1,\n currency: fields.currency ?? 'USD',\n value: fields.value,\n }\n await this.googleEvents.purchase().send(googleFields)\n }\n}\n","import { MixpanelCustomEvent, MixpanelPageViewEvent } from '@xylabs/react-pixel'\nimport type { EmptyObject } from '@xylabs/sdk-js'\nimport type { Mixpanel } from 'mixpanel-browser'\n\nexport class MixpanelEvents<TData extends EmptyObject = EmptyObject> {\n protected mixpanel: Mixpanel\n\n constructor(mixpanel: Mixpanel) {\n this.mixpanel = mixpanel\n }\n\n custom<T extends TData>(name: string) {\n return new MixpanelCustomEvent<T>(name, this.mixpanel)\n }\n\n pageView<T extends TData>() {\n return new MixpanelPageViewEvent<T>(this.mixpanel)\n }\n\n purchase<T extends TData>() {\n return new MixpanelCustomEvent<T>('Purchase', this.mixpanel)\n }\n\n userClick<T extends TData>() {\n return new MixpanelCustomEvent<T>('UserClick', this.mixpanel)\n }\n\n viewContent<T extends TData>() {\n return new MixpanelCustomEvent<T>('ViewContent', this.mixpanel)\n }\n}\n","import type { EmptyObject } from '@xylabs/sdk-js'\nimport type { Mixpanel } from 'mixpanel-browser'\n\nimport { MixpanelEvents } from './Mixpanel/index.ts'\nimport type { XnsPurchaseSuccessFields } from './XnsPurchaseEventHandlerInterface.ts'\nimport type { Events } from './XyoEventHandler.ts'\nimport { XyoEventHandler } from './XyoEventHandler.ts'\nimport type { XyoEventHandlerInterface } from './XyoEventHandlerInterface.ts'\n\nexport class MixpanelEventHandler<T extends EmptyObject> extends XyoEventHandler<T> implements XyoEventHandlerInterface<T> {\n protected mixpanel: Mixpanel\n protected mixpanelEvents: MixpanelEvents\n\n constructor(mixpanel: Mixpanel) {\n super()\n this.mixpanel = mixpanel\n this.mixpanelEvents = new MixpanelEvents(mixpanel)\n }\n\n override get events() {\n return this.mixpanelEvents as Events<T>\n }\n\n override async xnsPurchaseSuccess(fields: XnsPurchaseSuccessFields) {\n return await Promise.resolve(this.mixpanel.track('Purchase', fields))\n }\n}\n"],"mappings":"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","names":["useUserEvents","useXyoUserEvents","useUserEvents","UserEventHandler","XyCustomEvent","XyEvents","custom","name","XyCustomEvent","pageview","purchase","userClick","viewContent","XyoEventHandler","UserEventHandler","_events","XyEvents","events","funnelStarted","_fields","Error","testStarted","userClick","fields","send","viewContent","xnsEstimateAttempted","custom","xnsEstimateFailure","xnsEstimateSuccess","xnsPurchaseAttempted","xnsPurchaseFailure","xnsPurchaseSuccess","purchase","xnsReservationAttempted","xnsReservationFailure","xnsReservationSuccess","xyoNewsletterSignup","UserEventHandler","FacebookCustomEvent","FacebookStandardEvents","FacebookEvents","FacebookStandardEvents","custom","name","FacebookCustomEvent","userClick","FacebookEventHandler","XyoEventHandler","facebookEvents","FacebookEvents","events","xnsPurchaseSuccess","fields","facebookFields","contents","id","currency","quantity","price","content_name","name","content_ids","content_type","num_items","value","purchase","send","xyoNewsletterSignup","lead","content_category","GoogleCustomEvent","GoogleStandardEvents","GoogleEvents","GoogleStandardEvents","custom","name","GoogleCustomEvent","pageView","userClick","viewContent","GoogleEventHandler","XyoEventHandler","googleEvents","GoogleEvents","events","xnsPurchaseSuccess","fields","googleFields","item_name","name","id","quantity","currency","value","purchase","send","MixpanelCustomEvent","MixpanelPageViewEvent","MixpanelEvents","mixpanel","custom","name","MixpanelCustomEvent","pageView","MixpanelPageViewEvent","purchase","userClick","viewContent","MixpanelEventHandler","XyoEventHandler","mixpanel","mixpanelEvents","MixpanelEvents","events","xnsPurchaseSuccess","fields","Promise","resolve","track","XyoUserEvents","UserEventHandler","instance","handlers","XyoEventHandler","FacebookEventHandler","GoogleEventHandler","get","mixpanel","push","MixpanelEventHandler","funnelStarted","_fields","Error","testStarted","userClick","fields","Promise","all","map","handler","viewContent","xnsEstimateAttempted","xnsEstimateFailure","xnsEstimateSuccess","xnsPurchaseAttempted","xnsPurchaseFailure","xnsPurchaseSuccess","xnsReservationAttempted","xnsReservationFailure","xnsReservationSuccess","xyoNewsletterSignup"]}
1
+ {"version":3,"sources":["../../src/hooks/useXyoUserEvents.ts","../../src/XyoEventHandler.ts","../../src/Xy/index.ts","../../src/XyoUserEvents.ts","../../src/Facebook/index.ts","../../src/FacebookEventHandler.ts","../../src/Google/index.ts","../../src/GoogleEventHandler.ts","../../src/Mixpanel/index.ts","../../src/MixpanelEventHandler.ts"],"sourcesContent":["import { useUserEvents } from '@xylabs/react-pixel'\n\nimport type { XyoUserEvents } from '../XyoUserEvents.ts'\n\nexport const useXyoUserEvents = () => {\n return useUserEvents(true) as XyoUserEvents\n}\n","import type {\n FunnelStartedFields, PurchaseFields, TestStartedFields, UserClickFields, ViewContentFields,\n} from '@xylabs/pixel'\nimport { UserEventHandler } from '@xylabs/pixel'\nimport type { EmptyObject, Promisable } from '@xylabs/sdk-js'\n\nimport type {\n XnsEstimateAttemptedFields, XnsEstimateFailureFields, XnsEstimateSuccessFields,\n} from './XnsEstimateEventHandlerInterface.ts'\nimport type {\n XnsPurchaseAttemptedFields, XnsPurchaseFailureFields, XnsPurchaseSuccessFields,\n} from './XnsPurchaseEventHandlerInterface.js'\nimport type {\n XnsReservationAttemptedFields, XnsReservationFailureFields, XnsReservationSuccessFields,\n} from './XnsReservationEventHandlerInterface.ts'\nimport { XyEvents } from './Xy/index.ts'\nimport type { XyoEventHandlerInterface, XyoNewsletterSignupFields } from './XyoEventHandlerInterface.ts'\n\nexport interface Event<TData extends EmptyObject = EmptyObject> {\n send<T extends TData>(fields: T, eventId?: string): Promisable<void>\n}\n\nexport interface Events<TData extends EmptyObject = EmptyObject> {\n custom<T extends TData>(name: string): Event<T>\n purchase<T extends TData>(): Event<PurchaseFields | T>\n userClick<T extends TData>(): Event<UserClickFields | T>\n viewContent<T extends TData>(): Event<ViewContentFields | T>\n}\n\nexport class XyoEventHandler<T extends EmptyObject> extends UserEventHandler<T> implements XyoEventHandlerInterface<T> {\n private _events = new XyEvents()\n\n get events(): Events<T> {\n return this._events\n }\n\n funnelStarted(_fields: T | FunnelStartedFields): Promise<void> {\n throw new Error('Method not implemented.')\n }\n\n testStarted(_fields: T | TestStartedFields): Promise<void> {\n throw new Error('Method not implemented.')\n }\n\n async userClick(fields: UserClickFields) {\n await this.events.userClick().send(fields)\n }\n\n async viewContent(fields: ViewContentFields) {\n await this.events.viewContent().send(fields)\n }\n\n async xnsEstimateAttempted(fields: XnsEstimateAttemptedFields | T) {\n await this.events.custom('XnsEstimateAttempted').send(fields as T)\n }\n\n async xnsEstimateFailure(fields: XnsEstimateFailureFields | T) {\n await this.events.custom('XnsEstimateFailure').send(fields as T)\n }\n\n async xnsEstimateSuccess(fields: XnsEstimateSuccessFields | T) {\n await this.events.custom('XnsEstimateSuccess').send(fields as T)\n }\n\n async xnsPurchaseAttempted(fields: XnsPurchaseAttemptedFields | T) {\n await this.events.custom('XnsPurchaseAttempted').send(fields as T)\n }\n\n async xnsPurchaseFailure(fields: XnsPurchaseFailureFields | T) {\n await this.events.custom('XnsPurchaseFailure').send(fields as T)\n }\n\n async xnsPurchaseSuccess(fields: XnsPurchaseSuccessFields) {\n await this.events.purchase().send(fields)\n }\n\n async xnsReservationAttempted(fields: XnsReservationAttemptedFields | T) {\n await this.events.custom('XnsReservationAttempted').send(fields as T)\n }\n\n async xnsReservationFailure(fields: XnsReservationFailureFields | T) {\n await this.events.custom('XnsReservationFailure').send(fields as T)\n }\n\n async xnsReservationSuccess(fields: XnsReservationSuccessFields | T) {\n await this.events.custom('XnsReservationSuccess').send(fields as T)\n }\n\n async xyoNewsletterSignup(fields: XyoNewsletterSignupFields | T) {\n await this.events.custom('XyoNewsletterSignup').send(fields as T)\n }\n}\n","import type {\n PurchaseFields, UserClickFields, ViewContentFields,\n} from '@xylabs/pixel'\nimport { XyCustomEvent } from '@xylabs/react-pixel'\nimport type { EmptyObject } from '@xylabs/sdk-js'\n\nexport class XyEvents<T extends EmptyObject> {\n custom(name: string) {\n return new XyCustomEvent<PurchaseFields | T>(name)\n }\n\n pageview() {\n return new XyCustomEvent<ViewContentFields | T>('ViewContent')\n }\n\n purchase() {\n return new XyCustomEvent<PurchaseFields | T>('Purchase')\n }\n\n userClick() {\n return new XyCustomEvent<UserClickFields | T>('UserClick')\n }\n\n viewContent() {\n return new XyCustomEvent<ViewContentFields | T>('ViewContent')\n }\n}\n","import type {\n FunnelStartedFields, TestStartedFields, UserClickFields, ViewContentFields,\n} from '@xylabs/pixel'\nimport { UserEventHandler } from '@xylabs/pixel'\nimport type { EmptyObject } from '@xylabs/sdk-js'\nimport type { Mixpanel } from 'mixpanel-browser'\n\nimport { FacebookEventHandler } from './FacebookEventHandler.ts'\nimport { GoogleEventHandler } from './GoogleEventHandler.ts'\nimport { MixpanelEventHandler } from './MixpanelEventHandler.ts'\nimport type {\n XnsEstimateAttemptedFields, XnsEstimateFailureFields, XnsEstimateSuccessFields,\n} from './XnsEstimateEventHandlerInterface.ts'\nimport type {\n XnsPurchaseAttemptedFields, XnsPurchaseFailureFields, XnsPurchaseSuccessFields,\n} from './XnsPurchaseEventHandlerInterface.ts'\nimport type {\n XnsReservationAttemptedFields, XnsReservationFailureFields, XnsReservationSuccessFields,\n} from './XnsReservationEventHandlerInterface.ts'\nimport { XyoEventHandler } from './XyoEventHandler.ts'\nimport type { XyoEventHandlerInterface, XyoNewsletterSignupFields } from './XyoEventHandlerInterface.ts'\n\nexport class XyoUserEvents<TData extends EmptyObject = EmptyObject> extends UserEventHandler<TData> {\n static instance: XyoUserEvents<EmptyObject>\n\n protected handlers: XyoEventHandlerInterface<TData>[]\n\n private constructor(handlers?: XyoEventHandlerInterface<TData>[]) {\n super()\n this.handlers = handlers ?? [new XyoEventHandler<TData>(), new FacebookEventHandler<TData>(), new GoogleEventHandler<TData>()]\n }\n\n static get<T extends EmptyObject = EmptyObject>(mixpanel?: Mixpanel) {\n this.instance = this.instance ?? (() => {\n const handlers = [new XyoEventHandler<T>(), new FacebookEventHandler<T>(), new GoogleEventHandler<T>()]\n if (mixpanel) handlers.push(new MixpanelEventHandler(mixpanel))\n return new XyoUserEvents<T>(handlers)\n })()\n return this.instance\n }\n\n funnelStarted<T extends TData>(_fields: T | FunnelStartedFields): Promise<void> {\n throw new Error('Method not implemented.')\n }\n\n testStarted<T extends TData>(_fields: T | TestStartedFields): Promise<void> {\n throw new Error('Method not implemented.')\n }\n\n async userClick<T extends TData>(fields: T | UserClickFields) {\n await Promise.all(this.handlers.map(handler => handler.userClick<T>(fields)))\n }\n\n async viewContent<T extends TData>(fields: T | ViewContentFields) {\n await Promise.all(this.handlers.map(handler => handler.viewContent(fields)))\n }\n\n async xnsEstimateAttempted<T extends TData>(fields: T | XnsEstimateAttemptedFields) {\n await Promise.all(this.handlers.map(handler => handler.xnsEstimateAttempted(fields)))\n }\n\n async xnsEstimateFailure<T extends TData>(fields: T | XnsEstimateFailureFields) {\n await Promise.all(this.handlers.map(handler => handler.xnsEstimateFailure(fields)))\n }\n\n async xnsEstimateSuccess<T extends TData>(fields: T | XnsEstimateSuccessFields) {\n await Promise.all(this.handlers.map(handler => handler.xnsEstimateSuccess(fields)))\n }\n\n async xnsPurchaseAttempted<T extends TData>(fields: T | XnsPurchaseAttemptedFields) {\n await Promise.all(this.handlers.map(handler => handler.xnsPurchaseAttempted(fields)))\n }\n\n async xnsPurchaseFailure<T extends TData>(fields: T | XnsPurchaseFailureFields) {\n await Promise.all(this.handlers.map(handler => handler.xnsPurchaseFailure(fields)))\n }\n\n async xnsPurchaseSuccess<T extends TData>(fields: T | XnsPurchaseSuccessFields) {\n await Promise.all(this.handlers.map(handler => handler.xnsPurchaseSuccess(fields)))\n }\n\n async xnsReservationAttempted<T extends TData>(fields: T | XnsReservationAttemptedFields) {\n await Promise.all(this.handlers.map(handler => handler.xnsReservationAttempted(fields)))\n }\n\n async xnsReservationFailure<T extends TData>(fields: T | XnsReservationFailureFields) {\n await Promise.all(this.handlers.map(handler => handler.xnsReservationFailure(fields)))\n }\n\n async xnsReservationSuccess<T extends TData>(fields: T | XnsReservationSuccessFields) {\n await Promise.all(this.handlers.map(handler => handler.xnsReservationSuccess(fields)))\n }\n\n async xyoNewsletterSignup<T extends TData>(fields: T | XyoNewsletterSignupFields) {\n await Promise.all(this.handlers.map(handler => handler.xyoNewsletterSignup(fields)))\n }\n}\n","import { FacebookCustomEvent, FacebookStandardEvents } from '@xylabs/react-pixel'\nimport type { EmptyObject } from '@xylabs/sdk-js'\n\nexport interface FacebookUserClick extends Record<string, unknown> {\n elementName: string\n elementType: string\n}\n\nexport class FacebookEvents<T extends EmptyObject> extends FacebookStandardEvents<T> {\n custom<T extends EmptyObject>(name: string) {\n return new FacebookCustomEvent<T>(name)\n }\n\n userClick() {\n return new FacebookCustomEvent<FacebookUserClick | T>('UserClick')\n }\n}\n","import type { FacebookPurchase } from '@xylabs/react-pixel'\nimport type { EmptyObject } from '@xylabs/sdk-js'\n\nimport type { CustomProperties } from './CustomProperties.ts'\nimport { FacebookEvents } from './Facebook/index.ts'\nimport type { XnsPurchaseSuccessFields } from './XnsPurchaseEventHandlerInterface.ts'\nimport type { Events } from './XyoEventHandler.ts'\nimport { XyoEventHandler } from './XyoEventHandler.ts'\nimport type { XyoEventHandlerInterface, XyoNewsletterSignupFields } from './XyoEventHandlerInterface.ts'\n\nexport class FacebookEventHandler<T extends EmptyObject> extends XyoEventHandler<T> implements XyoEventHandlerInterface<T> {\n protected facebookEvents = new FacebookEvents<CustomProperties>()\n\n override get events() {\n return this.facebookEvents as Events<T>\n }\n\n override async xnsPurchaseSuccess(fields: XnsPurchaseSuccessFields) {\n const facebookFields: FacebookPurchase = {\n contents: [\n {\n id: fields.id,\n currency: fields.currency ?? 'USD',\n quantity: fields.quantity ?? 1,\n price: fields.price,\n },\n ],\n content_name: fields.name,\n content_ids: [fields.id],\n content_type: 'product',\n num_items: fields.quantity ?? 1,\n currency: fields.currency ?? 'USD',\n value: fields.value,\n }\n await this.facebookEvents.purchase().send(facebookFields)\n }\n\n override async xyoNewsletterSignup(fields: XyoNewsletterSignupFields) {\n await this.facebookEvents.lead().send({ content_category: fields.name })\n }\n}\n","import type {\n PurchaseFields, UserClickFields, ViewContentFields,\n} from '@xylabs/pixel'\nimport { GoogleCustomEvent, GoogleStandardEvents } from '@xylabs/react-pixel'\nimport type { EmptyObject } from '@xylabs/sdk-js'\n\nexport interface GoogleViewContent extends Record<string, unknown> {\n name: string\n path: string\n}\n\nexport interface GoogleUserClick extends Record<string, unknown> {\n elementName: string\n elementType: string\n}\n\nexport class GoogleEvents<TData extends EmptyObject = EmptyObject> extends GoogleStandardEvents<TData> {\n custom<T extends TData>(name: string) {\n return new GoogleCustomEvent<PurchaseFields | T>(name)\n }\n\n pageView<T extends TData>() {\n return new GoogleCustomEvent<ViewContentFields | T>('PageView')\n }\n\n userClick<T extends TData>() {\n return new GoogleCustomEvent<UserClickFields | T>('UserClick')\n }\n\n viewContent<T extends TData>() {\n return new GoogleCustomEvent<ViewContentFields | T>('ViewContent')\n }\n}\n","import type { GoogleCartProperties, GooglePurchaseProperties } from '@xylabs/react-pixel'\nimport type { EmptyObject } from '@xylabs/sdk-js'\n\nimport type { CustomProperties } from './CustomProperties.ts'\nimport { GoogleEvents } from './Google/index.ts'\nimport type { XnsPurchaseSuccessFields } from './XnsPurchaseEventHandlerInterface.ts'\nimport type { Events } from './XyoEventHandler.ts'\nimport { XyoEventHandler } from './XyoEventHandler.ts'\nimport type { XyoEventHandlerInterface } from './XyoEventHandlerInterface.ts'\n\nexport class GoogleEventHandler<T extends EmptyObject> extends XyoEventHandler<T> implements XyoEventHandlerInterface<T> {\n protected googleEvents = new GoogleEvents<CustomProperties | GoogleCartProperties>()\n\n override get events() {\n return this.googleEvents as Events<T>\n }\n\n override async xnsPurchaseSuccess(fields: XnsPurchaseSuccessFields) {\n const googleFields: GooglePurchaseProperties = {\n item_name: fields.name,\n id: fields.id,\n quantity: fields.quantity ?? 1,\n currency: fields.currency ?? 'USD',\n value: fields.value,\n }\n await this.googleEvents.purchase().send(googleFields)\n }\n}\n","import { MixpanelCustomEvent, MixpanelPageViewEvent } from '@xylabs/react-pixel'\nimport type { EmptyObject } from '@xylabs/sdk-js'\nimport type { Mixpanel } from 'mixpanel-browser'\n\nexport class MixpanelEvents<TData extends EmptyObject = EmptyObject> {\n protected mixpanel: Mixpanel\n\n constructor(mixpanel: Mixpanel) {\n this.mixpanel = mixpanel\n }\n\n custom<T extends TData>(name: string) {\n return new MixpanelCustomEvent<T>(name, this.mixpanel)\n }\n\n pageView<T extends TData>() {\n return new MixpanelPageViewEvent<T>(this.mixpanel)\n }\n\n purchase<T extends TData>() {\n return new MixpanelCustomEvent<T>('Purchase', this.mixpanel)\n }\n\n userClick<T extends TData>() {\n return new MixpanelCustomEvent<T>('UserClick', this.mixpanel)\n }\n\n viewContent<T extends TData>() {\n return new MixpanelCustomEvent<T>('ViewContent', this.mixpanel)\n }\n}\n","import type { EmptyObject } from '@xylabs/sdk-js'\nimport type { Mixpanel } from 'mixpanel-browser'\n\nimport { MixpanelEvents } from './Mixpanel/index.ts'\nimport type { XnsPurchaseSuccessFields } from './XnsPurchaseEventHandlerInterface.ts'\nimport type { Events } from './XyoEventHandler.ts'\nimport { XyoEventHandler } from './XyoEventHandler.ts'\nimport type { XyoEventHandlerInterface } from './XyoEventHandlerInterface.ts'\n\nexport class MixpanelEventHandler<T extends EmptyObject> extends XyoEventHandler<T> implements XyoEventHandlerInterface<T> {\n protected mixpanel: Mixpanel\n protected mixpanelEvents: MixpanelEvents\n\n constructor(mixpanel: Mixpanel) {\n super()\n this.mixpanel = mixpanel\n this.mixpanelEvents = new MixpanelEvents(mixpanel)\n }\n\n override get events() {\n return this.mixpanelEvents as Events<T>\n }\n\n override async xnsPurchaseSuccess(fields: XnsPurchaseSuccessFields) {\n return await Promise.resolve(this.mixpanel.track('Purchase', fields))\n }\n}\n"],"mappings":"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","names":["UserEventHandler","UserEventHandler"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@xyo-network/react-user-events",
3
- "version": "7.5.7",
3
+ "version": "7.5.11",
4
4
  "description": "Common React library for all XYO projects that use React",
5
5
  "keywords": [
6
6
  "xyo",
@@ -36,47 +36,62 @@
36
36
  },
37
37
  "./package.json": "./package.json"
38
38
  },
39
- "module": "dist/browser/index.mjs",
40
- "types": "dist/browser/index.d.ts",
41
39
  "files": [
42
40
  "dist",
43
- "src"
41
+ "README.md"
44
42
  ],
45
- "dependencies": {
46
- "@xylabs/pixel": "~5.0.90",
47
- "@xylabs/react-pixel": "~7.1.17",
48
- "@xylabs/sdk-js": "~5.0.90",
49
- "mixpanel-browser": "~2.77.0"
50
- },
51
43
  "devDependencies": {
52
- "@mui/icons-material": "~7.3.9",
53
- "@mui/material": "~7.3.9",
44
+ "@opentelemetry/api": "^1.9.1",
45
+ "@opentelemetry/sdk-trace-base": "^2.7.0",
54
46
  "@types/mixpanel-browser": "~2.66.0",
55
- "@types/react": "^19.2.14",
56
- "@xylabs/ts-scripts-common": "~7.5.6",
57
- "@xylabs/ts-scripts-yarn3": "~7.5.6",
58
- "@xylabs/tsconfig": "~7.5.6",
59
- "@xylabs/tsconfig-dom": "~7.5.6",
60
- "@xylabs/tsconfig-react": "~7.5.6",
61
- "axios": "^1.13.6",
62
- "react": "^19.2.4",
63
- "react-dom": "^19.2.4",
64
- "react-router-dom": "^7.13.2",
47
+ "@types/node": "~25.6.0",
48
+ "@xylabs/pixel": "~5.0.100",
49
+ "@xylabs/react-pixel": "~7.1.20",
50
+ "@xylabs/sdk-js": "^5.0.100",
51
+ "@xylabs/toolchain": "~7.11.9",
52
+ "@xylabs/tsconfig": "^7.11.9",
53
+ "@xylabs/tsconfig-dom": "^7.11.9",
54
+ "@xylabs/tsconfig-react": "~7.11.9",
55
+ "@xylabs/zod": "~5.0.100",
56
+ "async-mutex": "^0.5.0",
57
+ "axios": "^1.15.2",
58
+ "bn.js": "^5.2.3",
59
+ "bowser": "^2.14.1",
60
+ "buffer": "^6.0.3",
61
+ "chalk": "^5.6.2",
62
+ "esbuild": "~0.28.0",
63
+ "eslint": "^10.2.1",
64
+ "ethers": "^6.16.0",
65
+ "fast-deep-equal": "~3.1.3",
66
+ "js-cookie": "~3.0.5",
67
+ "mixpanel-browser": "~2.78.0",
68
+ "pako": "^2.1.0",
69
+ "spark-md5": "~3.0.2",
65
70
  "typescript": "^5.9.3",
66
71
  "zod": "^4.3.6"
67
72
  },
68
73
  "peerDependencies": {
69
- "@mui/icons-material": ">=6 <8",
70
- "@mui/material": ">=6 <8",
71
- "@xylabs/pixel": "~2",
72
- "axios": "^1",
73
- "react": "^19",
74
- "react-dom": "^19",
75
- "react-router-dom": "^7",
76
- "zod": "^4"
74
+ "@opentelemetry/api": "^1.9.1",
75
+ "@opentelemetry/sdk-trace-base": "^2.7.0",
76
+ "@xylabs/pixel": "~5.0.100",
77
+ "@xylabs/react-pixel": "~7.1.20",
78
+ "@xylabs/sdk-js": "^5.0.100",
79
+ "@xylabs/zod": "~5.0.100",
80
+ "async-mutex": "^0.5.0",
81
+ "axios": "^1.15.2",
82
+ "bn.js": "^5.2.3",
83
+ "bowser": "^2.14.1",
84
+ "buffer": "^6.0.3",
85
+ "chalk": "^5.6.2",
86
+ "ethers": "^6.16.0",
87
+ "fast-deep-equal": "~3.1.3",
88
+ "js-cookie": "~3.0.5",
89
+ "pako": "^2.1.0",
90
+ "spark-md5": "~3.0.2",
91
+ "zod": "^4.3.6"
77
92
  },
78
93
  "publishConfig": {
79
94
  "access": "public"
80
95
  },
81
96
  "docs": "dist/docs.json"
82
- }
97
+ }
@@ -1,5 +0,0 @@
1
- export interface CustomProperties extends Record<string, unknown> {
2
- coinId?: string
3
- itemSet?: string
4
- testData?: string
5
- }
@@ -1,17 +0,0 @@
1
- import { FacebookCustomEvent, FacebookStandardEvents } from '@xylabs/react-pixel'
2
- import type { EmptyObject } from '@xylabs/sdk-js'
3
-
4
- export interface FacebookUserClick extends Record<string, unknown> {
5
- elementName: string
6
- elementType: string
7
- }
8
-
9
- export class FacebookEvents<T extends EmptyObject> extends FacebookStandardEvents<T> {
10
- custom<T extends EmptyObject>(name: string) {
11
- return new FacebookCustomEvent<T>(name)
12
- }
13
-
14
- userClick() {
15
- return new FacebookCustomEvent<FacebookUserClick | T>('UserClick')
16
- }
17
- }
@@ -1,41 +0,0 @@
1
- import type { FacebookPurchase } from '@xylabs/react-pixel'
2
- import type { EmptyObject } from '@xylabs/sdk-js'
3
-
4
- import type { CustomProperties } from './CustomProperties.ts'
5
- import { FacebookEvents } from './Facebook/index.ts'
6
- import type { XnsPurchaseSuccessFields } from './XnsPurchaseEventHandlerInterface.ts'
7
- import type { Events } from './XyoEventHandler.ts'
8
- import { XyoEventHandler } from './XyoEventHandler.ts'
9
- import type { XyoEventHandlerInterface, XyoNewsletterSignupFields } from './XyoEventHandlerInterface.ts'
10
-
11
- export class FacebookEventHandler<T extends EmptyObject> extends XyoEventHandler<T> implements XyoEventHandlerInterface<T> {
12
- protected facebookEvents = new FacebookEvents<CustomProperties>()
13
-
14
- override get events() {
15
- return this.facebookEvents as Events<T>
16
- }
17
-
18
- override async xnsPurchaseSuccess(fields: XnsPurchaseSuccessFields) {
19
- const facebookFields: FacebookPurchase = {
20
- contents: [
21
- {
22
- id: fields.id,
23
- currency: fields.currency ?? 'USD',
24
- quantity: fields.quantity ?? 1,
25
- price: fields.price,
26
- },
27
- ],
28
- content_name: fields.name,
29
- content_ids: [fields.id],
30
- content_type: 'product',
31
- num_items: fields.quantity ?? 1,
32
- currency: fields.currency ?? 'USD',
33
- value: fields.value,
34
- }
35
- await this.facebookEvents.purchase().send(facebookFields)
36
- }
37
-
38
- override async xyoNewsletterSignup(fields: XyoNewsletterSignupFields) {
39
- await this.facebookEvents.lead().send({ content_category: fields.name })
40
- }
41
- }
@@ -1,33 +0,0 @@
1
- import type {
2
- PurchaseFields, UserClickFields, ViewContentFields,
3
- } from '@xylabs/pixel'
4
- import { GoogleCustomEvent, GoogleStandardEvents } from '@xylabs/react-pixel'
5
- import type { EmptyObject } from '@xylabs/sdk-js'
6
-
7
- export interface GoogleViewContent extends Record<string, unknown> {
8
- name: string
9
- path: string
10
- }
11
-
12
- export interface GoogleUserClick extends Record<string, unknown> {
13
- elementName: string
14
- elementType: string
15
- }
16
-
17
- export class GoogleEvents<TData extends EmptyObject = EmptyObject> extends GoogleStandardEvents<TData> {
18
- custom<T extends TData>(name: string) {
19
- return new GoogleCustomEvent<PurchaseFields | T>(name)
20
- }
21
-
22
- pageView<T extends TData>() {
23
- return new GoogleCustomEvent<ViewContentFields | T>('PageView')
24
- }
25
-
26
- userClick<T extends TData>() {
27
- return new GoogleCustomEvent<UserClickFields | T>('UserClick')
28
- }
29
-
30
- viewContent<T extends TData>() {
31
- return new GoogleCustomEvent<ViewContentFields | T>('ViewContent')
32
- }
33
- }
@@ -1,28 +0,0 @@
1
- import type { GoogleCartProperties, GooglePurchaseProperties } from '@xylabs/react-pixel'
2
- import type { EmptyObject } from '@xylabs/sdk-js'
3
-
4
- import type { CustomProperties } from './CustomProperties.ts'
5
- import { GoogleEvents } from './Google/index.ts'
6
- import type { XnsPurchaseSuccessFields } from './XnsPurchaseEventHandlerInterface.ts'
7
- import type { Events } from './XyoEventHandler.ts'
8
- import { XyoEventHandler } from './XyoEventHandler.ts'
9
- import type { XyoEventHandlerInterface } from './XyoEventHandlerInterface.ts'
10
-
11
- export class GoogleEventHandler<T extends EmptyObject> extends XyoEventHandler<T> implements XyoEventHandlerInterface<T> {
12
- protected googleEvents = new GoogleEvents<CustomProperties | GoogleCartProperties>()
13
-
14
- override get events() {
15
- return this.googleEvents as Events<T>
16
- }
17
-
18
- override async xnsPurchaseSuccess(fields: XnsPurchaseSuccessFields) {
19
- const googleFields: GooglePurchaseProperties = {
20
- item_name: fields.name,
21
- id: fields.id,
22
- quantity: fields.quantity ?? 1,
23
- currency: fields.currency ?? 'USD',
24
- value: fields.value,
25
- }
26
- await this.googleEvents.purchase().send(googleFields)
27
- }
28
- }
@@ -1,31 +0,0 @@
1
- import { MixpanelCustomEvent, MixpanelPageViewEvent } from '@xylabs/react-pixel'
2
- import type { EmptyObject } from '@xylabs/sdk-js'
3
- import type { Mixpanel } from 'mixpanel-browser'
4
-
5
- export class MixpanelEvents<TData extends EmptyObject = EmptyObject> {
6
- protected mixpanel: Mixpanel
7
-
8
- constructor(mixpanel: Mixpanel) {
9
- this.mixpanel = mixpanel
10
- }
11
-
12
- custom<T extends TData>(name: string) {
13
- return new MixpanelCustomEvent<T>(name, this.mixpanel)
14
- }
15
-
16
- pageView<T extends TData>() {
17
- return new MixpanelPageViewEvent<T>(this.mixpanel)
18
- }
19
-
20
- purchase<T extends TData>() {
21
- return new MixpanelCustomEvent<T>('Purchase', this.mixpanel)
22
- }
23
-
24
- userClick<T extends TData>() {
25
- return new MixpanelCustomEvent<T>('UserClick', this.mixpanel)
26
- }
27
-
28
- viewContent<T extends TData>() {
29
- return new MixpanelCustomEvent<T>('ViewContent', this.mixpanel)
30
- }
31
- }
@@ -1,27 +0,0 @@
1
- import type { EmptyObject } from '@xylabs/sdk-js'
2
- import type { Mixpanel } from 'mixpanel-browser'
3
-
4
- import { MixpanelEvents } from './Mixpanel/index.ts'
5
- import type { XnsPurchaseSuccessFields } from './XnsPurchaseEventHandlerInterface.ts'
6
- import type { Events } from './XyoEventHandler.ts'
7
- import { XyoEventHandler } from './XyoEventHandler.ts'
8
- import type { XyoEventHandlerInterface } from './XyoEventHandlerInterface.ts'
9
-
10
- export class MixpanelEventHandler<T extends EmptyObject> extends XyoEventHandler<T> implements XyoEventHandlerInterface<T> {
11
- protected mixpanel: Mixpanel
12
- protected mixpanelEvents: MixpanelEvents
13
-
14
- constructor(mixpanel: Mixpanel) {
15
- super()
16
- this.mixpanel = mixpanel
17
- this.mixpanelEvents = new MixpanelEvents(mixpanel)
18
- }
19
-
20
- override get events() {
21
- return this.mixpanelEvents as Events<T>
22
- }
23
-
24
- override async xnsPurchaseSuccess(fields: XnsPurchaseSuccessFields) {
25
- return await Promise.resolve(this.mixpanel.track('Purchase', fields))
26
- }
27
- }
@@ -1,3 +0,0 @@
1
- import { RedditStandardEvents } from '@xylabs/react-pixel'
2
-
3
- export class RedditEvents<T extends Record<string, unknown>> extends RedditStandardEvents<T> {}
@@ -1,3 +0,0 @@
1
- import { SnapchatStandardEvents } from '@xylabs/react-pixel'
2
-
3
- export class SnapchatEvents<T extends Record<string, unknown>> extends SnapchatStandardEvents<T> {}
package/src/TestData.ts DELETED
@@ -1,11 +0,0 @@
1
- export class TestData {
2
- private static localStorageId = 'testData'
3
- data: string
4
- constructor() {
5
- this.data = localStorage.getItem(TestData.localStorageId) ?? ''
6
- }
7
-
8
- toString() {
9
- return this.data
10
- }
11
- }
@@ -1,3 +0,0 @@
1
- import { TiktokStandardEvents } from '@xylabs/react-pixel'
2
-
3
- export class TiktokEvents<T extends Record<string, unknown>> extends TiktokStandardEvents<T> {}
@@ -1,24 +0,0 @@
1
- import type { UserEventHandler } from '@xylabs/pixel'
2
- import type { EmptyObject, Promisable } from '@xylabs/sdk-js'
3
-
4
- export interface XnsEstimateFields extends EmptyObject {
5
- name: string
6
- }
7
-
8
- export interface XnsEstimateAttemptedFields extends XnsEstimateFields {}
9
-
10
- export interface XnsEstimateSuccessFields extends XnsEstimateFields {
11
- price: number
12
- }
13
-
14
- export interface XnsEstimateFailureFields extends XnsEstimateFields {
15
- error: string
16
- }
17
-
18
- export interface XnsEstimateEventHandlerInterface<TData extends EmptyObject> extends UserEventHandler<TData> {
19
- xnsEstimateAttempted<T extends TData>(fields: XnsEstimateAttemptedFields | T): Promisable<void>
20
-
21
- xnsEstimateFailure<T extends TData>(fields: XnsEstimateFailureFields | T): Promisable<void>
22
-
23
- xnsEstimateSuccess<T extends TData>(fields: XnsEstimateSuccessFields | T): Promisable<void>
24
- }
@@ -1,30 +0,0 @@
1
- import type { UserEventHandler } from '@xylabs/pixel'
2
- import type { EmptyObject, Promisable } from '@xylabs/sdk-js'
3
-
4
- export interface XnsPurchaseFields extends EmptyObject {
5
- name: string
6
- price: number
7
- }
8
-
9
- export interface XnsPurchaseAttemptedFields extends XnsPurchaseFields {}
10
-
11
- export interface XnsPurchaseSuccessFields extends XnsPurchaseFields {
12
- currency?: string
13
- /** Identifier for the purchase - rebilly or payload hash */
14
- id: string
15
- quantity?: number
16
- /** price - discount */
17
- value: number
18
- }
19
-
20
- export interface XnsPurchaseFailureFields extends XnsPurchaseFields {
21
- error: string
22
- }
23
-
24
- export interface XnsPurchaseEventHandlerInterface<TData extends EmptyObject> extends UserEventHandler<TData> {
25
- xnsPurchaseAttempted<T extends TData>(fields: T | XnsPurchaseAttemptedFields): Promisable<void>
26
-
27
- xnsPurchaseFailure<T extends TData>(fields: T | XnsPurchaseFailureFields): Promisable<void>
28
-
29
- xnsPurchaseSuccess<T extends TData>(fields: T | XnsPurchaseSuccessFields): Promisable<void>
30
- }
@@ -1,23 +0,0 @@
1
- import type { UserEventHandler } from '@xylabs/pixel'
2
- import type { EmptyObject, Promisable } from '@xylabs/sdk-js'
3
-
4
- export interface XnsReservationFields extends EmptyObject {
5
- email_hash: string
6
- name: string
7
- }
8
-
9
- export interface XnsReservationAttemptedFields extends XnsReservationFields {}
10
-
11
- export interface XnsReservationSuccessFields extends XnsReservationFields {}
12
-
13
- export interface XnsReservationFailureFields extends XnsReservationFields {
14
- error: string
15
- }
16
-
17
- export interface XnsReservationEventHandlerInterface<TData extends EmptyObject> extends UserEventHandler<TData> {
18
- xnsReservationAttempted<T extends TData>(fields: T | XnsReservationAttemptedFields): Promisable<void>
19
-
20
- xnsReservationFailure<T extends TData>(fields: T | XnsReservationFailureFields): Promisable<void>
21
-
22
- xnsReservationSuccess<T extends TData>(fields: T | XnsReservationSuccessFields): Promisable<void>
23
- }
package/src/Xy/index.ts DELETED
@@ -1,27 +0,0 @@
1
- import type {
2
- PurchaseFields, UserClickFields, ViewContentFields,
3
- } from '@xylabs/pixel'
4
- import { XyCustomEvent } from '@xylabs/react-pixel'
5
- import type { EmptyObject } from '@xylabs/sdk-js'
6
-
7
- export class XyEvents<T extends EmptyObject> {
8
- custom(name: string) {
9
- return new XyCustomEvent<PurchaseFields | T>(name)
10
- }
11
-
12
- pageview() {
13
- return new XyCustomEvent<ViewContentFields | T>('ViewContent')
14
- }
15
-
16
- purchase() {
17
- return new XyCustomEvent<PurchaseFields | T>('Purchase')
18
- }
19
-
20
- userClick() {
21
- return new XyCustomEvent<UserClickFields | T>('UserClick')
22
- }
23
-
24
- viewContent() {
25
- return new XyCustomEvent<ViewContentFields | T>('ViewContent')
26
- }
27
- }
@@ -1,92 +0,0 @@
1
- import type {
2
- FunnelStartedFields, PurchaseFields, TestStartedFields, UserClickFields, ViewContentFields,
3
- } from '@xylabs/pixel'
4
- import { UserEventHandler } from '@xylabs/pixel'
5
- import type { EmptyObject, Promisable } from '@xylabs/sdk-js'
6
-
7
- import type {
8
- XnsEstimateAttemptedFields, XnsEstimateFailureFields, XnsEstimateSuccessFields,
9
- } from './XnsEstimateEventHandlerInterface.ts'
10
- import type {
11
- XnsPurchaseAttemptedFields, XnsPurchaseFailureFields, XnsPurchaseSuccessFields,
12
- } from './XnsPurchaseEventHandlerInterface.js'
13
- import type {
14
- XnsReservationAttemptedFields, XnsReservationFailureFields, XnsReservationSuccessFields,
15
- } from './XnsReservationEventHandlerInterface.ts'
16
- import { XyEvents } from './Xy/index.ts'
17
- import type { XyoEventHandlerInterface, XyoNewsletterSignupFields } from './XyoEventHandlerInterface.ts'
18
-
19
- export interface Event<TData extends EmptyObject = EmptyObject> {
20
- send<T extends TData>(fields: T, eventId?: string): Promisable<void>
21
- }
22
-
23
- export interface Events<TData extends EmptyObject = EmptyObject> {
24
- custom<T extends TData>(name: string): Event<T>
25
- purchase<T extends TData>(): Event<PurchaseFields | T>
26
- userClick<T extends TData>(): Event<UserClickFields | T>
27
- viewContent<T extends TData>(): Event<ViewContentFields | T>
28
- }
29
-
30
- export class XyoEventHandler<T extends EmptyObject> extends UserEventHandler<T> implements XyoEventHandlerInterface<T> {
31
- private _events = new XyEvents()
32
-
33
- get events(): Events<T> {
34
- return this._events
35
- }
36
-
37
- funnelStarted(_fields: T | FunnelStartedFields): Promise<void> {
38
- throw new Error('Method not implemented.')
39
- }
40
-
41
- testStarted(_fields: T | TestStartedFields): Promise<void> {
42
- throw new Error('Method not implemented.')
43
- }
44
-
45
- async userClick(fields: UserClickFields) {
46
- await this.events.userClick().send(fields)
47
- }
48
-
49
- async viewContent(fields: ViewContentFields) {
50
- await this.events.viewContent().send(fields)
51
- }
52
-
53
- async xnsEstimateAttempted(fields: XnsEstimateAttemptedFields | T) {
54
- await this.events.custom('XnsEstimateAttempted').send(fields as T)
55
- }
56
-
57
- async xnsEstimateFailure(fields: XnsEstimateFailureFields | T) {
58
- await this.events.custom('XnsEstimateFailure').send(fields as T)
59
- }
60
-
61
- async xnsEstimateSuccess(fields: XnsEstimateSuccessFields | T) {
62
- await this.events.custom('XnsEstimateSuccess').send(fields as T)
63
- }
64
-
65
- async xnsPurchaseAttempted(fields: XnsPurchaseAttemptedFields | T) {
66
- await this.events.custom('XnsPurchaseAttempted').send(fields as T)
67
- }
68
-
69
- async xnsPurchaseFailure(fields: XnsPurchaseFailureFields | T) {
70
- await this.events.custom('XnsPurchaseFailure').send(fields as T)
71
- }
72
-
73
- async xnsPurchaseSuccess(fields: XnsPurchaseSuccessFields) {
74
- await this.events.purchase().send(fields)
75
- }
76
-
77
- async xnsReservationAttempted(fields: XnsReservationAttemptedFields | T) {
78
- await this.events.custom('XnsReservationAttempted').send(fields as T)
79
- }
80
-
81
- async xnsReservationFailure(fields: XnsReservationFailureFields | T) {
82
- await this.events.custom('XnsReservationFailure').send(fields as T)
83
- }
84
-
85
- async xnsReservationSuccess(fields: XnsReservationSuccessFields | T) {
86
- await this.events.custom('XnsReservationSuccess').send(fields as T)
87
- }
88
-
89
- async xyoNewsletterSignup(fields: XyoNewsletterSignupFields | T) {
90
- await this.events.custom('XyoNewsletterSignup').send(fields as T)
91
- }
92
- }
@@ -1,29 +0,0 @@
1
- import type {
2
- FunnelStartedFields, TestStartedFields, UserClickFields, UserEventHandler, ViewContentFields,
3
- } from '@xylabs/pixel'
4
- import type { EmptyObject, Promisable } from '@xylabs/sdk-js'
5
-
6
- import type { XnsEstimateEventHandlerInterface } from './XnsEstimateEventHandlerInterface.ts'
7
- import type { XnsPurchaseEventHandlerInterface } from './XnsPurchaseEventHandlerInterface.ts'
8
- import type { XnsReservationEventHandlerInterface } from './XnsReservationEventHandlerInterface.ts'
9
-
10
- export interface XyoNewsletterSignupFields extends Record<string, unknown> {
11
- email: string
12
- url: string
13
- }
14
-
15
- export interface XyoEventHandlerInterface<TData extends EmptyObject>
16
- extends UserEventHandler<TData>,
17
- XnsEstimateEventHandlerInterface<TData>,
18
- XnsReservationEventHandlerInterface<TData>,
19
- XnsPurchaseEventHandlerInterface<TData> {
20
- funnelStarted<T extends TData>(_fields: T | FunnelStartedFields): Promisable<void>
21
-
22
- testStarted<T extends TData>(_fields: T | TestStartedFields): Promisable<void>
23
-
24
- userClick<T extends TData>(fields: T | UserClickFields): Promisable<void>
25
-
26
- viewContent<T extends TData>(fields: T | ViewContentFields): Promisable<void>
27
-
28
- xyoNewsletterSignup<T extends TData>(fields: T | XyoNewsletterSignupFields): Promisable<void>
29
- }
@@ -1,6 +0,0 @@
1
- export interface XyoUserClickFields {
2
- funnel?: string
3
- name: string
4
- placement?: string
5
- type?: string
6
- }
@@ -1,98 +0,0 @@
1
- import type {
2
- FunnelStartedFields, TestStartedFields, UserClickFields, ViewContentFields,
3
- } from '@xylabs/pixel'
4
- import { UserEventHandler } from '@xylabs/pixel'
5
- import type { EmptyObject } from '@xylabs/sdk-js'
6
- import type { Mixpanel } from 'mixpanel-browser'
7
-
8
- import { FacebookEventHandler } from './FacebookEventHandler.ts'
9
- import { GoogleEventHandler } from './GoogleEventHandler.ts'
10
- import { MixpanelEventHandler } from './MixpanelEventHandler.ts'
11
- import type {
12
- XnsEstimateAttemptedFields, XnsEstimateFailureFields, XnsEstimateSuccessFields,
13
- } from './XnsEstimateEventHandlerInterface.ts'
14
- import type {
15
- XnsPurchaseAttemptedFields, XnsPurchaseFailureFields, XnsPurchaseSuccessFields,
16
- } from './XnsPurchaseEventHandlerInterface.ts'
17
- import type {
18
- XnsReservationAttemptedFields, XnsReservationFailureFields, XnsReservationSuccessFields,
19
- } from './XnsReservationEventHandlerInterface.ts'
20
- import { XyoEventHandler } from './XyoEventHandler.ts'
21
- import type { XyoEventHandlerInterface, XyoNewsletterSignupFields } from './XyoEventHandlerInterface.ts'
22
-
23
- export class XyoUserEvents<TData extends EmptyObject = EmptyObject> extends UserEventHandler<TData> {
24
- // eslint-disable-next-line sonarjs/public-static-readonly
25
- static instance: XyoUserEvents<EmptyObject>
26
-
27
- protected handlers: XyoEventHandlerInterface<TData>[]
28
-
29
- private constructor(handlers?: XyoEventHandlerInterface<TData>[]) {
30
- super()
31
- this.handlers = handlers ?? [new XyoEventHandler<TData>(), new FacebookEventHandler<TData>(), new GoogleEventHandler<TData>()]
32
- }
33
-
34
- static get<T extends EmptyObject = EmptyObject>(mixpanel?: Mixpanel) {
35
- this.instance = this.instance ?? (() => {
36
- const handlers = [new XyoEventHandler<T>(), new FacebookEventHandler<T>(), new GoogleEventHandler<T>()]
37
- if (mixpanel) handlers.push(new MixpanelEventHandler(mixpanel))
38
- return new XyoUserEvents<T>(handlers)
39
- })()
40
- return this.instance
41
- }
42
-
43
- funnelStarted<T extends TData>(_fields: T | FunnelStartedFields): Promise<void> {
44
- throw new Error('Method not implemented.')
45
- }
46
-
47
- testStarted<T extends TData>(_fields: T | TestStartedFields): Promise<void> {
48
- throw new Error('Method not implemented.')
49
- }
50
-
51
- async userClick<T extends TData>(fields: T | UserClickFields) {
52
- await Promise.all(this.handlers.map(handler => handler.userClick<T>(fields)))
53
- }
54
-
55
- async viewContent<T extends TData>(fields: T | ViewContentFields) {
56
- await Promise.all(this.handlers.map(handler => handler.viewContent(fields)))
57
- }
58
-
59
- async xnsEstimateAttempted<T extends TData>(fields: T | XnsEstimateAttemptedFields) {
60
- await Promise.all(this.handlers.map(handler => handler.xnsEstimateAttempted(fields)))
61
- }
62
-
63
- async xnsEstimateFailure<T extends TData>(fields: T | XnsEstimateFailureFields) {
64
- await Promise.all(this.handlers.map(handler => handler.xnsEstimateFailure(fields)))
65
- }
66
-
67
- async xnsEstimateSuccess<T extends TData>(fields: T | XnsEstimateSuccessFields) {
68
- await Promise.all(this.handlers.map(handler => handler.xnsEstimateSuccess(fields)))
69
- }
70
-
71
- async xnsPurchaseAttempted<T extends TData>(fields: T | XnsPurchaseAttemptedFields) {
72
- await Promise.all(this.handlers.map(handler => handler.xnsPurchaseAttempted(fields)))
73
- }
74
-
75
- async xnsPurchaseFailure<T extends TData>(fields: T | XnsPurchaseFailureFields) {
76
- await Promise.all(this.handlers.map(handler => handler.xnsPurchaseFailure(fields)))
77
- }
78
-
79
- async xnsPurchaseSuccess<T extends TData>(fields: T | XnsPurchaseSuccessFields) {
80
- await Promise.all(this.handlers.map(handler => handler.xnsPurchaseSuccess(fields)))
81
- }
82
-
83
- async xnsReservationAttempted<T extends TData>(fields: T | XnsReservationAttemptedFields) {
84
- await Promise.all(this.handlers.map(handler => handler.xnsReservationAttempted(fields)))
85
- }
86
-
87
- async xnsReservationFailure<T extends TData>(fields: T | XnsReservationFailureFields) {
88
- await Promise.all(this.handlers.map(handler => handler.xnsReservationFailure(fields)))
89
- }
90
-
91
- async xnsReservationSuccess<T extends TData>(fields: T | XnsReservationSuccessFields) {
92
- await Promise.all(this.handlers.map(handler => handler.xnsReservationSuccess(fields)))
93
- }
94
-
95
- async xyoNewsletterSignup<T extends TData>(fields: T | XyoNewsletterSignupFields) {
96
- await Promise.all(this.handlers.map(handler => handler.xyoNewsletterSignup(fields)))
97
- }
98
- }
@@ -1,11 +0,0 @@
1
- import mixpanel from 'mixpanel-browser'
2
-
3
- import { XyoUserEvents } from './XyoUserEvents.ts'
4
-
5
- // we call this outside the function to force initialization on page load
6
- let instance: XyoUserEvents
7
-
8
- export const getXyoUserEvents = (mixpanelToken?: string) => {
9
- instance = instance ?? XyoUserEvents.get(mixpanelToken ? mixpanel.init(mixpanelToken) : undefined)
10
- return instance
11
- }
@@ -1 +0,0 @@
1
- export * from './useXyoUserEvents.ts'
@@ -1,7 +0,0 @@
1
- import { useUserEvents } from '@xylabs/react-pixel'
2
-
3
- import type { XyoUserEvents } from '../XyoUserEvents.ts'
4
-
5
- export const useXyoUserEvents = () => {
6
- return useUserEvents(true) as XyoUserEvents
7
- }
package/src/index.ts DELETED
@@ -1,4 +0,0 @@
1
- export * from './hooks/index.ts'
2
- export * from './XyoEventHandler.ts'
3
- export * from './XyoEventHandlerInterface.ts'
4
- export { XyoUserEvents } from './XyoUserEvents.ts'