shopkit-analytics 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (51) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +769 -0
  3. package/dist/adapters/index.d.mts +4 -0
  4. package/dist/adapters/index.d.ts +4 -0
  5. package/dist/adapters/index.js +2405 -0
  6. package/dist/adapters/index.js.map +1 -0
  7. package/dist/adapters/index.mjs +23 -0
  8. package/dist/adapters/index.mjs.map +1 -0
  9. package/dist/affiliate/index.d.mts +138 -0
  10. package/dist/affiliate/index.d.ts +138 -0
  11. package/dist/affiliate/index.js +816 -0
  12. package/dist/affiliate/index.js.map +1 -0
  13. package/dist/affiliate/index.mjs +74 -0
  14. package/dist/affiliate/index.mjs.map +1 -0
  15. package/dist/affiliate-tracker-BgHwibPv.d.mts +144 -0
  16. package/dist/affiliate-tracker-BgHwibPv.d.ts +144 -0
  17. package/dist/chunk-3TQR5DOP.mjs +79 -0
  18. package/dist/chunk-3TQR5DOP.mjs.map +1 -0
  19. package/dist/chunk-4MZH5OLR.mjs +2375 -0
  20. package/dist/chunk-4MZH5OLR.mjs.map +1 -0
  21. package/dist/chunk-JVEGG6JV.mjs +213 -0
  22. package/dist/chunk-JVEGG6JV.mjs.map +1 -0
  23. package/dist/chunk-P4OJDCEZ.mjs +57 -0
  24. package/dist/chunk-P4OJDCEZ.mjs.map +1 -0
  25. package/dist/chunk-TNXTKEGS.mjs +758 -0
  26. package/dist/chunk-TNXTKEGS.mjs.map +1 -0
  27. package/dist/events/index.d.mts +112 -0
  28. package/dist/events/index.d.ts +112 -0
  29. package/dist/events/index.js +2131 -0
  30. package/dist/events/index.js.map +1 -0
  31. package/dist/events/index.mjs +30 -0
  32. package/dist/events/index.mjs.map +1 -0
  33. package/dist/index-BnNRgdUv.d.ts +676 -0
  34. package/dist/index-GODWc1s6.d.mts +676 -0
  35. package/dist/index.d.mts +38 -0
  36. package/dist/index.d.ts +38 -0
  37. package/dist/index.js +3269 -0
  38. package/dist/index.js.map +1 -0
  39. package/dist/index.mjs +190 -0
  40. package/dist/index.mjs.map +1 -0
  41. package/dist/subscriber-43gnCKWe.d.ts +80 -0
  42. package/dist/subscriber-IFZJU57V.mjs +8 -0
  43. package/dist/subscriber-IFZJU57V.mjs.map +1 -0
  44. package/dist/subscriber-sWesj_5p.d.mts +80 -0
  45. package/dist/types.d.mts +991 -0
  46. package/dist/types.d.ts +991 -0
  47. package/dist/types.js +102 -0
  48. package/dist/types.js.map +1 -0
  49. package/dist/types.mjs +8 -0
  50. package/dist/types.mjs.map +1 -0
  51. package/package.json +110 -0
@@ -0,0 +1,676 @@
1
+ import { TEvent } from './types.js';
2
+ import { T as TrackingAdapter } from './subscriber-43gnCKWe.js';
3
+ import { AnalyticsEventName, ShopifyAnalyticsProduct, ShopifyPageViewPayload } from '@shopify/hydrogen-react';
4
+
5
+ /**
6
+ * Logger configuration options
7
+ */
8
+ interface LoggerConfig {
9
+ level?: "trace" | "debug" | "info" | "warn" | "error" | "fatal";
10
+ enabled?: boolean;
11
+ name?: string;
12
+ prettyPrint?: boolean;
13
+ redact?: string[];
14
+ }
15
+ /**
16
+ * Logger interface for consistent logging across adapters
17
+ */
18
+ interface Logger {
19
+ trace: (message: string, ...args: any[]) => void;
20
+ debug: (message: string, ...args: any[]) => void;
21
+ info: (message: string, ...args: any[]) => void;
22
+ warn: (message: string, ...args: any[]) => void;
23
+ error: (message: string, error?: Error, ...args: any[]) => void;
24
+ fatal: (message: string, error?: Error, ...args: any[]) => void;
25
+ child: (bindings: Record<string, any>) => Logger;
26
+ }
27
+ /**
28
+ * Create a logger instance
29
+ */
30
+ declare function createLogger(config?: LoggerConfig): Logger;
31
+ /**
32
+ * Default logger instance
33
+ */
34
+ declare const logger: Logger;
35
+ /**
36
+ * Create adapter-specific logger
37
+ */
38
+ declare function createAdapterLogger(adapterName: string, config?: LoggerConfig): Logger;
39
+
40
+ /**
41
+ * Abstract base class for tracking adapters
42
+ */
43
+ declare abstract class BaseAdapter implements TrackingAdapter {
44
+ /**
45
+ * Name of the tracking adapter
46
+ */
47
+ abstract readonly name: string;
48
+ /**
49
+ * Configuration for the adapter
50
+ */
51
+ protected config: Record<string, any>;
52
+ /**
53
+ * Logger instance for this adapter
54
+ */
55
+ protected logger: Logger;
56
+ /**
57
+ * Whether the adapter has been initialized
58
+ */
59
+ protected initialized: boolean;
60
+ /**
61
+ * Constructor
62
+ * @param config Configuration for the adapter
63
+ */
64
+ constructor(config?: Record<string, any>);
65
+ /**
66
+ * Initialize logger with proper adapter name
67
+ * Should be called by subclasses after name is available
68
+ */
69
+ protected initializeLogger(): void;
70
+ /**
71
+ * Check if the adapter is enabled
72
+ */
73
+ isEnabled(): boolean;
74
+ /**
75
+ * Initialize the adapter
76
+ */
77
+ abstract initialize(): Promise<void>;
78
+ /**
79
+ * Track an event
80
+ * @param event The event to track
81
+ */
82
+ abstract trackEvent(event: TEvent): Promise<void>;
83
+ /**
84
+ * Get a configuration value
85
+ * @param key The configuration key
86
+ * @param defaultValue The default value if the key is not found
87
+ */
88
+ protected getConfig<T>(key: string, defaultValue?: T): T;
89
+ /**
90
+ * Get affiliate parameters from session storage or custom implementation
91
+ * Override this method to provide your own affiliate tracking implementation
92
+ * @returns Affiliate parameters or null if not available
93
+ */
94
+ protected getAffiliateParams(): Record<string, string> | null;
95
+ /**
96
+ * Enhance event parameters with affiliate data
97
+ * @param params The original parameters
98
+ * @returns Parameters enhanced with affiliate data
99
+ */
100
+ protected enhanceWithAffiliateParams(params: Record<string, any>): Record<string, any>;
101
+ }
102
+
103
+ declare global {
104
+ interface Window {
105
+ fbq?: (type: string, eventName: string, params?: Record<string, any>) => void;
106
+ }
107
+ }
108
+ /**
109
+ * Configuration for the Facebook Pixel adapter
110
+ */
111
+ interface PixelAdapterConfig {
112
+ /**
113
+ * Facebook Pixel ID
114
+ */
115
+ pixelId: string;
116
+ }
117
+ /**
118
+ * Facebook Pixel tracking adapter
119
+ * Assumes that the Facebook Pixel script is already loaded in the page
120
+ */
121
+ declare class PixelAdapter extends BaseAdapter {
122
+ readonly name = "FacebookPixel";
123
+ constructor(config: PixelAdapterConfig);
124
+ /**
125
+ * Initialize the Facebook Pixel
126
+ */
127
+ initialize(): Promise<void>;
128
+ /**
129
+ * Track an event with Facebook Pixel
130
+ * @param event The event to track
131
+ */
132
+ trackEvent(event: TEvent): Promise<void>;
133
+ /**
134
+ * Track a page view event
135
+ * @param event The page view event
136
+ */
137
+ private trackPageView;
138
+ /**
139
+ * Track a product view event
140
+ * @param event The product view event
141
+ */
142
+ private trackProductView;
143
+ /**
144
+ * Track an add to cart event
145
+ * @param event The add to cart event
146
+ */
147
+ private trackAddToCart;
148
+ /**
149
+ * Track a checkout started event
150
+ * @param event The checkout started event
151
+ */
152
+ private trackCheckoutStarted;
153
+ /**
154
+ * Track a checkout completed event
155
+ * @param event The checkout completed event
156
+ */
157
+ private trackCheckoutCompleted;
158
+ /**
159
+ * Track a search event
160
+ * @param event The search event
161
+ */
162
+ private trackSearch;
163
+ /**
164
+ * Track an add payment info event
165
+ * @param event The add payment info event
166
+ */
167
+ private trackAddPaymentInfo;
168
+ /**
169
+ * Track a view content event
170
+ * @param event The view content event
171
+ */
172
+ private trackViewContent;
173
+ /**
174
+ * Track a purchase event
175
+ * @param event The purchase event
176
+ */
177
+ private trackPurchase;
178
+ /**
179
+ * Convert an event to Facebook Pixel parameters
180
+ * @param event The event to convert
181
+ */
182
+ private eventToParams;
183
+ }
184
+
185
+ declare global {
186
+ interface Window {
187
+ gtag?: (...args: any[]) => void;
188
+ }
189
+ }
190
+ /**
191
+ * Configuration for the Google Analytics adapter
192
+ */
193
+ interface GoogleAdapterConfig {
194
+ /**
195
+ * Google Analytics measurement ID (e.g., G-XXXXXXXXXX)
196
+ */
197
+ measurementId: string;
198
+ }
199
+ /**
200
+ * Google Analytics tracking adapter
201
+ * Assumes that the Google Analytics script is already loaded in the page
202
+ */
203
+ declare class GoogleAdapter extends BaseAdapter {
204
+ readonly name = "GoogleAnalytics";
205
+ constructor(config: GoogleAdapterConfig);
206
+ /**
207
+ * Initialize Google Analytics adapter
208
+ * This just checks if gtag is available
209
+ */
210
+ isEnabled(): boolean;
211
+ initialize(): Promise<void>;
212
+ /**
213
+ * Track an event with Google Analytics
214
+ * @param event The event to track
215
+ */
216
+ trackEvent(event: TEvent): Promise<void>;
217
+ /**
218
+ * Track a page view event
219
+ * @param event The page view event
220
+ * @param measurementId The Google Analytics measurement ID
221
+ */
222
+ private trackPageView;
223
+ private trackUserEngagement;
224
+ private trackSessionStart;
225
+ private trackFirstVisit;
226
+ private trackViewItem;
227
+ private trackScroll;
228
+ private trackCheckoutPayment;
229
+ private trackViewedProduct;
230
+ private trackAddToCart;
231
+ private trackFormStart;
232
+ private trackCheckoutStarted;
233
+ private trackFormSubmission;
234
+ private trackSearch;
235
+ /**
236
+ * Track a checkout completed event
237
+ * @param event The checkout completed event
238
+ */
239
+ private trackCheckoutCompleted;
240
+ /**
241
+ * Track a custom event
242
+ * @param event The custom event
243
+ */
244
+ private trackCustomEvent;
245
+ /**
246
+ * Track an add payment info event
247
+ * @param event The add payment info event
248
+ */
249
+ private trackAddPaymentInfo;
250
+ /**
251
+ * Track a view content event
252
+ * @param event The view content event
253
+ */
254
+ private trackViewContent;
255
+ /**
256
+ * Track a purchase event
257
+ * @param event The purchase event
258
+ */
259
+ private trackPurchase;
260
+ /**
261
+ * Track a view search results event
262
+ * @param event The view search results event
263
+ */
264
+ private trackViewSearchResults;
265
+ /**
266
+ * Track an order placed event
267
+ * @param event The order placed event
268
+ */
269
+ private trackOrderPlaced;
270
+ /**
271
+ * Track a begin checkout event
272
+ * @param event The begin checkout event
273
+ */
274
+ private trackBeginCheckout;
275
+ /**
276
+ * Convert an event to Google Analytics parameters
277
+ * @param event The event to convert
278
+ */
279
+ private eventToParams;
280
+ }
281
+
282
+ /**
283
+ * Configuration for the MoenGage adapter
284
+ */
285
+ interface MoengageAdapterConfig {
286
+ /**
287
+ * MoenGage App ID (required for SDK initialization)
288
+ */
289
+ appId: string;
290
+ /**
291
+ * Whether to enable user identification
292
+ */
293
+ enableUserIdentification?: boolean;
294
+ /**
295
+ * Debug mode for MoenGage SDK
296
+ */
297
+ debug?: boolean;
298
+ /**
299
+ * Data center region (default: 'dc_01')
300
+ */
301
+ region?: string;
302
+ }
303
+ /**
304
+ * MoenGage tracking adapter using the official Web SDK
305
+ */
306
+ declare class MoengageAdapter extends BaseAdapter {
307
+ readonly name = "MoEngage";
308
+ private sdk;
309
+ constructor(config: MoengageAdapterConfig);
310
+ /**
311
+ * Initialize the MoenGage adapter using the Web SDK
312
+ */
313
+ initialize(): Promise<void>;
314
+ /**
315
+ * Track an event with MoenGage SDK
316
+ * @param event The event to track
317
+ */
318
+ trackEvent(event: TEvent): Promise<void>;
319
+ /**
320
+ * Track a page view event
321
+ * @param event The page view event
322
+ */
323
+ private trackPageView;
324
+ /**
325
+ * Track a button click event
326
+ * @param event The button click event
327
+ */
328
+ private trackButtonClick;
329
+ /**
330
+ * Track a form submission event
331
+ * @param event The form submission event
332
+ */
333
+ private trackFormSubmission;
334
+ /**
335
+ * Track a product view event
336
+ * @param event The product view event
337
+ */
338
+ private trackProductView;
339
+ /**
340
+ * Track an add to cart event
341
+ * @param event The add to cart event
342
+ */
343
+ private trackAddToCart;
344
+ /**
345
+ * Track a remove from cart event
346
+ * @param event The remove from cart event
347
+ */
348
+ private trackRemoveFromCart;
349
+ /**
350
+ * Track a checkout started event
351
+ * @param event The checkout started event
352
+ */
353
+ private trackCheckoutStarted;
354
+ /**
355
+ * Track a checkout completed event
356
+ * @param event The checkout completed event
357
+ */
358
+ private trackCheckoutCompleted;
359
+ /**
360
+ * Track a search event
361
+ * @param event The search event
362
+ */
363
+ private trackSearch;
364
+ /**
365
+ * Track a user signup event
366
+ * @param event The user signup event
367
+ */
368
+ private trackUserSignup;
369
+ /**
370
+ * Track a user login event
371
+ * @param event The user login event
372
+ */
373
+ private trackUserLogin;
374
+ /**
375
+ * Track a custom event
376
+ * @param event The custom event
377
+ */
378
+ private trackCustomEvent;
379
+ /**
380
+ * Convert an event to MoenGage parameters
381
+ * @param event The event to convert
382
+ */
383
+ private eventToParams;
384
+ /**
385
+ * Set user attributes in MoenGage
386
+ * @param attributes User attributes to set
387
+ */
388
+ setUserAttributes(attributes: Record<string, any>): void;
389
+ }
390
+
391
+ declare global {
392
+ interface Window {
393
+ posthog?: {
394
+ capture: (eventName: string, properties?: Record<string, any>) => void;
395
+ identify: (distinctId: string, properties?: Record<string, any>) => void;
396
+ };
397
+ }
398
+ }
399
+ /**
400
+ * Configuration for the PostHog adapter
401
+ */
402
+ interface PostHogAdapterConfig {
403
+ /**
404
+ * Enable debug logs
405
+ */
406
+ enableDebugLogs?: boolean;
407
+ }
408
+ /**
409
+ * PostHog tracking adapter
410
+ * Assumes that the PostHog script is already loaded in the page
411
+ */
412
+ declare class PostHogAdapter extends BaseAdapter {
413
+ readonly name = "PostHog";
414
+ constructor(config?: PostHogAdapterConfig);
415
+ /**
416
+ * Initialize PostHog
417
+ */
418
+ initialize(): Promise<void>;
419
+ /**
420
+ * Track an event with PostHog
421
+ * @param event The event to track
422
+ */
423
+ trackEvent(event: TEvent): Promise<void>;
424
+ /**
425
+ * Track a page view event
426
+ * @param event The page view event
427
+ */
428
+ private trackPageView;
429
+ /**
430
+ * Track a product view event
431
+ * @param event The product view event
432
+ */
433
+ private trackProductView;
434
+ /**
435
+ * Track an add to cart event
436
+ * @param event The add to cart event
437
+ */
438
+ private trackAddToCart;
439
+ /**
440
+ * Track a checkout started event
441
+ * @param event The checkout started event
442
+ */
443
+ private trackCheckoutStarted;
444
+ /**
445
+ * Track a checkout completed event
446
+ * @param event The checkout completed event
447
+ */
448
+ private trackCheckoutCompleted;
449
+ /**
450
+ * Track a search event
451
+ * @param event The search event
452
+ */
453
+ private trackSearch;
454
+ /**
455
+ * Track an add payment info event
456
+ * @param event The add payment info event
457
+ */
458
+ private trackAddPaymentInfo;
459
+ /**
460
+ * Convert an event to PostHog parameters
461
+ * @param event The event to convert
462
+ */
463
+ private eventToParams;
464
+ }
465
+
466
+ /**
467
+ * Type definitions for analytics payloads
468
+ */
469
+ type SendPageViewPayload = {
470
+ pageType?: string;
471
+ products?: ShopifyAnalyticsProduct[];
472
+ collectionHandle?: string;
473
+ searchString?: string;
474
+ totalValue?: number;
475
+ cartId?: string;
476
+ };
477
+ type SendAddToCartPayload = {
478
+ cartId: string;
479
+ products?: ShopifyAnalyticsProduct[];
480
+ totalValue?: ShopifyPageViewPayload["totalValue"];
481
+ };
482
+ /**
483
+ * Configuration interface for Shopify Analytics Adapter
484
+ */
485
+ interface ShopifyAdapterConfig {
486
+ shopId: string;
487
+ domain: string;
488
+ currency?: string;
489
+ }
490
+ /**
491
+ * Shopify Analytics Adapter for tracking events to Shopify Admin Analytics
492
+ */
493
+ declare class ShopifyAdapter extends BaseAdapter {
494
+ readonly name = "ShopifyAnalytics";
495
+ private shopId;
496
+ private domain;
497
+ private currency;
498
+ constructor(config: ShopifyAdapterConfig);
499
+ /**
500
+ * Initialize the Shopify Analytics adapter
501
+ */
502
+ initialize(): Promise<void>;
503
+ /**
504
+ * Convert product ID to Shopify GID format if it's not already
505
+ */
506
+ private formatProductGid;
507
+ /**
508
+ * Get user consent status from your consent management system
509
+ */
510
+ private getUserConsent;
511
+ /**
512
+ * Check user consent (implement based on your consent management)
513
+ */
514
+ private checkUserConsent;
515
+ private checkAnalyticsConsent;
516
+ private checkMarketingConsent;
517
+ private checkSaleOfDataConsent;
518
+ /**
519
+ * Create base payload for all events
520
+ */
521
+ private createBasePayload;
522
+ /**
523
+ * Send page view event using the enhanced functionality
524
+ */
525
+ sendPageView: (eventName: keyof typeof AnalyticsEventName, payload?: SendPageViewPayload) => Promise<void>;
526
+ /**
527
+ * Send add to cart event using the enhanced functionality
528
+ */
529
+ sendAddToCart: ({ cartId, totalValue, products, }: SendAddToCartPayload) => Promise<void>;
530
+ /**
531
+ * Track an event using Shopify Analytics
532
+ */
533
+ trackEvent(event: TEvent): Promise<void>;
534
+ /**
535
+ * Check if Shopify session is properly established
536
+ */
537
+ isSessionValid(): boolean;
538
+ /**
539
+ * Get session debug information
540
+ */
541
+ getSessionDebugInfo(): object;
542
+ /**
543
+ * Track add to cart event with enhanced error handling
544
+ */
545
+ private trackAddToCart;
546
+ }
547
+
548
+ /**
549
+ * Configuration interface for KwikPass Adapter
550
+ */
551
+ interface KwikPassConfig {
552
+ enableDebugLogs?: boolean;
553
+ enableKwikPassEvents?: boolean;
554
+ }
555
+ /**
556
+ * KwikPass Analytics Adapter for tracking events to KwikPass platform
557
+ */
558
+ declare class KwikPassAdapter extends BaseAdapter {
559
+ readonly name = "KwikPass";
560
+ private enableKwikPassEvents;
561
+ constructor(config?: KwikPassConfig);
562
+ /**
563
+ * Initialize the KwikPass adapter
564
+ */
565
+ initialize(): Promise<void>;
566
+ /**
567
+ * Track an event using KwikPass
568
+ */
569
+ trackEvent(event: TEvent): Promise<void>;
570
+ /**
571
+ * Send event to KwikPass platform
572
+ */
573
+ private sendKwikPassEvent;
574
+ /**
575
+ * Track product view event
576
+ */
577
+ private trackCollectionView;
578
+ /**
579
+ * Track collection view event
580
+ */
581
+ private trackProductView;
582
+ /**
583
+ * Track page view event
584
+ */
585
+ private trackPageView;
586
+ }
587
+
588
+ /**
589
+ * Configuration interface for Kwik Checkout Adapter
590
+ */
591
+ interface KwikCheckoutConfig {
592
+ mid?: string;
593
+ environment?: string;
594
+ storeId?: string;
595
+ enableDebugLogs?: boolean;
596
+ }
597
+ /**
598
+ * Kwik Checkout Analytics Adapter for tracking checkout events to GoKwik platform
599
+ */
600
+ declare class KwikCheckoutAdapter extends BaseAdapter {
601
+ readonly name = "KwikCheckout";
602
+ private mid;
603
+ private environment;
604
+ private storeId;
605
+ constructor(config: KwikCheckoutConfig);
606
+ /**
607
+ * Initialize the GoKwik adapter
608
+ */
609
+ initialize(): Promise<void>;
610
+ /**
611
+ * Track an event using GoKwik
612
+ */
613
+ trackEvent(event: TEvent): Promise<void>;
614
+ /**
615
+ * Send event to GoKwik platform
616
+ */
617
+ private sendGoKwikEvent;
618
+ /**
619
+ * Track started checkout GK event
620
+ */
621
+ private trackStartedCheckoutGK;
622
+ /**
623
+ * Track mobile added GK event
624
+ */
625
+ private trackMobileAddedGK;
626
+ /**
627
+ * Track address selected GK event
628
+ */
629
+ private trackAddressSelectedGK;
630
+ /**
631
+ * Track address completed GK event
632
+ */
633
+ private trackAddressCompletedGK;
634
+ /**
635
+ * Track address added GK event
636
+ */
637
+ private trackAddressAddedGK;
638
+ /**
639
+ * Track PIN code added GK event
640
+ */
641
+ private trackPinCodeAddedGK;
642
+ /**
643
+ * Track payment method selected GK event
644
+ */
645
+ private trackPaymentMethodSelectedGK;
646
+ /**
647
+ * Track payment completed GK event
648
+ */
649
+ private trackPaymentCompletedGK;
650
+ /**
651
+ * Track order success event
652
+ */
653
+ private trackOrderSuccess;
654
+ /**
655
+ * Track order completed event
656
+ */
657
+ private trackOrderCompleted;
658
+ /**
659
+ * Track cart viewed event
660
+ */
661
+ private trackCartViewed;
662
+ /**
663
+ * Track checkout started event
664
+ */
665
+ private trackCheckoutStarted;
666
+ /**
667
+ * Track checkout completed event
668
+ */
669
+ private trackCheckoutCompleted;
670
+ /**
671
+ * Track add payment info event
672
+ */
673
+ private trackAddPaymentInfo;
674
+ }
675
+
676
+ export { BaseAdapter as B, type GoogleAdapterConfig as G, type KwikPassConfig as K, type LoggerConfig as L, type MoengageAdapterConfig as M, type PixelAdapterConfig as P, type ShopifyAdapterConfig as S, type PostHogAdapterConfig as a, type KwikCheckoutConfig as b, PixelAdapter as c, GoogleAdapter as d, MoengageAdapter as e, PostHogAdapter as f, ShopifyAdapter as g, KwikPassAdapter as h, KwikCheckoutAdapter as i, type Logger as j, createLogger as k, logger as l, createAdapterLogger as m };