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.
- package/LICENSE +21 -0
- package/README.md +769 -0
- package/dist/adapters/index.d.mts +4 -0
- package/dist/adapters/index.d.ts +4 -0
- package/dist/adapters/index.js +2405 -0
- package/dist/adapters/index.js.map +1 -0
- package/dist/adapters/index.mjs +23 -0
- package/dist/adapters/index.mjs.map +1 -0
- package/dist/affiliate/index.d.mts +138 -0
- package/dist/affiliate/index.d.ts +138 -0
- package/dist/affiliate/index.js +816 -0
- package/dist/affiliate/index.js.map +1 -0
- package/dist/affiliate/index.mjs +74 -0
- package/dist/affiliate/index.mjs.map +1 -0
- package/dist/affiliate-tracker-BgHwibPv.d.mts +144 -0
- package/dist/affiliate-tracker-BgHwibPv.d.ts +144 -0
- package/dist/chunk-3TQR5DOP.mjs +79 -0
- package/dist/chunk-3TQR5DOP.mjs.map +1 -0
- package/dist/chunk-4MZH5OLR.mjs +2375 -0
- package/dist/chunk-4MZH5OLR.mjs.map +1 -0
- package/dist/chunk-JVEGG6JV.mjs +213 -0
- package/dist/chunk-JVEGG6JV.mjs.map +1 -0
- package/dist/chunk-P4OJDCEZ.mjs +57 -0
- package/dist/chunk-P4OJDCEZ.mjs.map +1 -0
- package/dist/chunk-TNXTKEGS.mjs +758 -0
- package/dist/chunk-TNXTKEGS.mjs.map +1 -0
- package/dist/events/index.d.mts +112 -0
- package/dist/events/index.d.ts +112 -0
- package/dist/events/index.js +2131 -0
- package/dist/events/index.js.map +1 -0
- package/dist/events/index.mjs +30 -0
- package/dist/events/index.mjs.map +1 -0
- package/dist/index-BnNRgdUv.d.ts +676 -0
- package/dist/index-GODWc1s6.d.mts +676 -0
- package/dist/index.d.mts +38 -0
- package/dist/index.d.ts +38 -0
- package/dist/index.js +3269 -0
- package/dist/index.js.map +1 -0
- package/dist/index.mjs +190 -0
- package/dist/index.mjs.map +1 -0
- package/dist/subscriber-43gnCKWe.d.ts +80 -0
- package/dist/subscriber-IFZJU57V.mjs +8 -0
- package/dist/subscriber-IFZJU57V.mjs.map +1 -0
- package/dist/subscriber-sWesj_5p.d.mts +80 -0
- package/dist/types.d.mts +991 -0
- package/dist/types.d.ts +991 -0
- package/dist/types.js +102 -0
- package/dist/types.js.map +1 -0
- package/dist/types.mjs +8 -0
- package/dist/types.mjs.map +1 -0
- package/package.json +110 -0
package/dist/index.mjs
ADDED
|
@@ -0,0 +1,190 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import {
|
|
3
|
+
initTracking,
|
|
4
|
+
initializeEventTracking
|
|
5
|
+
} from "./chunk-P4OJDCEZ.mjs";
|
|
6
|
+
import {
|
|
7
|
+
AffiliateTracker_default,
|
|
8
|
+
captureAffiliateParams,
|
|
9
|
+
clearAffiliateParams,
|
|
10
|
+
getAffiliateParams,
|
|
11
|
+
getAffiliateSource,
|
|
12
|
+
hasAffiliateData,
|
|
13
|
+
useAffiliateSource,
|
|
14
|
+
useAffiliateTracker,
|
|
15
|
+
useHasAffiliateData
|
|
16
|
+
} from "./chunk-TNXTKEGS.mjs";
|
|
17
|
+
import {
|
|
18
|
+
BaseAdapter,
|
|
19
|
+
DEFAULT_CURRENCY,
|
|
20
|
+
EventNames,
|
|
21
|
+
GoogleAdapter,
|
|
22
|
+
HARDCODED_HANDLE,
|
|
23
|
+
KwikCheckoutAdapter,
|
|
24
|
+
KwikPassAdapter,
|
|
25
|
+
MoengageAdapter,
|
|
26
|
+
PixelAdapter,
|
|
27
|
+
PostHogAdapter,
|
|
28
|
+
ShopifyAdapter,
|
|
29
|
+
createAdapterLogger,
|
|
30
|
+
createLogger,
|
|
31
|
+
logger
|
|
32
|
+
} from "./chunk-4MZH5OLR.mjs";
|
|
33
|
+
import {
|
|
34
|
+
EventType
|
|
35
|
+
} from "./chunk-3TQR5DOP.mjs";
|
|
36
|
+
import {
|
|
37
|
+
eventPublisher,
|
|
38
|
+
eventSubscriber,
|
|
39
|
+
publishEvent
|
|
40
|
+
} from "./chunk-JVEGG6JV.mjs";
|
|
41
|
+
|
|
42
|
+
// src/ShopkitAnalytics.tsx
|
|
43
|
+
import { useEffect } from "react";
|
|
44
|
+
import { useShopifyCookies } from "@shopify/hydrogen-react";
|
|
45
|
+
import { Fragment, jsx, jsxs } from "react/jsx-runtime";
|
|
46
|
+
var ShopkitAnalytics = ({
|
|
47
|
+
config,
|
|
48
|
+
children,
|
|
49
|
+
onInitialized,
|
|
50
|
+
onError
|
|
51
|
+
}) => {
|
|
52
|
+
useShopifyCookies({
|
|
53
|
+
hasUserConsent: true,
|
|
54
|
+
domain: config.shopify?.domain || ""
|
|
55
|
+
});
|
|
56
|
+
useEffect(() => {
|
|
57
|
+
const initializeAnalytics = async () => {
|
|
58
|
+
if (config.autoInitialize === false) return;
|
|
59
|
+
const loggerConfig = {
|
|
60
|
+
enabled: config.logger?.enabled ?? config.enableDebugLogs ?? true,
|
|
61
|
+
level: config.logger?.level ?? "info",
|
|
62
|
+
name: "@shopkit/analytics",
|
|
63
|
+
prettyPrint: config.logger?.prettyPrint ?? false
|
|
64
|
+
};
|
|
65
|
+
const logger2 = createLogger(loggerConfig);
|
|
66
|
+
try {
|
|
67
|
+
logger2.info("Starting initialization...");
|
|
68
|
+
const adapters = [];
|
|
69
|
+
const addLoggerConfig = (adapterConfig) => ({
|
|
70
|
+
...adapterConfig,
|
|
71
|
+
enableDebugLogs: loggerConfig.enabled,
|
|
72
|
+
logLevel: loggerConfig.level
|
|
73
|
+
});
|
|
74
|
+
if (config.googleAnalytics) {
|
|
75
|
+
const gaAdapter = new GoogleAdapter(
|
|
76
|
+
addLoggerConfig(config.googleAnalytics)
|
|
77
|
+
);
|
|
78
|
+
adapters.push(gaAdapter);
|
|
79
|
+
logger2.info("Added Google Analytics adapter");
|
|
80
|
+
}
|
|
81
|
+
if (config.facebookPixel) {
|
|
82
|
+
const pixelAdapter = new PixelAdapter(
|
|
83
|
+
addLoggerConfig(config.facebookPixel)
|
|
84
|
+
);
|
|
85
|
+
adapters.push(pixelAdapter);
|
|
86
|
+
logger2.info("Added Facebook Pixel adapter");
|
|
87
|
+
}
|
|
88
|
+
if (config.moengage) {
|
|
89
|
+
const moengageAdapter = new MoengageAdapter(
|
|
90
|
+
addLoggerConfig(config.moengage)
|
|
91
|
+
);
|
|
92
|
+
adapters.push(moengageAdapter);
|
|
93
|
+
logger2.info("Added MoEngage adapter");
|
|
94
|
+
}
|
|
95
|
+
if (config.posthog) {
|
|
96
|
+
const posthogAdapter = new PostHogAdapter(
|
|
97
|
+
addLoggerConfig(config.posthog)
|
|
98
|
+
);
|
|
99
|
+
adapters.push(posthogAdapter);
|
|
100
|
+
logger2.info("Added PostHog adapter");
|
|
101
|
+
}
|
|
102
|
+
if (config.shopify) {
|
|
103
|
+
const shopifyAdapter = new ShopifyAdapter(
|
|
104
|
+
addLoggerConfig(config.shopify)
|
|
105
|
+
);
|
|
106
|
+
adapters.push(shopifyAdapter);
|
|
107
|
+
logger2.info("Added Shopify Analytics adapter");
|
|
108
|
+
}
|
|
109
|
+
if (config.kwikpass) {
|
|
110
|
+
const kwikpassAdapter = new KwikPassAdapter(
|
|
111
|
+
addLoggerConfig(config.kwikpass)
|
|
112
|
+
);
|
|
113
|
+
adapters.push(kwikpassAdapter);
|
|
114
|
+
logger2.info("Added KwikPass Analytics adapter");
|
|
115
|
+
}
|
|
116
|
+
if (config.kwikcheckout) {
|
|
117
|
+
const kwikcheckoutAdapter = new KwikCheckoutAdapter(
|
|
118
|
+
addLoggerConfig(config.kwikcheckout)
|
|
119
|
+
);
|
|
120
|
+
adapters.push(kwikcheckoutAdapter);
|
|
121
|
+
logger2.info("Added KwikCheckout Analytics adapter");
|
|
122
|
+
}
|
|
123
|
+
if (config.customAdapters) {
|
|
124
|
+
adapters.push(...config.customAdapters);
|
|
125
|
+
logger2.info(`Added ${config.customAdapters.length} custom adapters`);
|
|
126
|
+
}
|
|
127
|
+
if (adapters.length === 0) {
|
|
128
|
+
logger2.warn("No analytics adapters configured");
|
|
129
|
+
} else {
|
|
130
|
+
await initializeEventTracking(adapters);
|
|
131
|
+
logger2.info("Event tracking initialized with adapters", {
|
|
132
|
+
adapters: adapters.map((a) => a.name)
|
|
133
|
+
});
|
|
134
|
+
}
|
|
135
|
+
logger2.info("Initialization completed successfully");
|
|
136
|
+
onInitialized?.();
|
|
137
|
+
} catch (err) {
|
|
138
|
+
const error = err instanceof Error ? err : new Error("Unknown initialization error");
|
|
139
|
+
logger2.error("Initialization failed", error);
|
|
140
|
+
onError?.(error);
|
|
141
|
+
}
|
|
142
|
+
};
|
|
143
|
+
initializeAnalytics();
|
|
144
|
+
}, [config, onInitialized, onError]);
|
|
145
|
+
return /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
146
|
+
config.affiliate?.enabled !== false && /* @__PURE__ */ jsx(
|
|
147
|
+
AffiliateTracker_default,
|
|
148
|
+
{
|
|
149
|
+
config: config.affiliate?.config,
|
|
150
|
+
autoCapture: config.affiliate?.autoCapture
|
|
151
|
+
}
|
|
152
|
+
),
|
|
153
|
+
children ? /* @__PURE__ */ jsx(Fragment, { children }) : null
|
|
154
|
+
] });
|
|
155
|
+
};
|
|
156
|
+
var ShopkitAnalytics_default = ShopkitAnalytics;
|
|
157
|
+
export {
|
|
158
|
+
AffiliateTracker_default as AffiliateTracker,
|
|
159
|
+
BaseAdapter,
|
|
160
|
+
DEFAULT_CURRENCY,
|
|
161
|
+
EventNames,
|
|
162
|
+
EventType,
|
|
163
|
+
GoogleAdapter,
|
|
164
|
+
HARDCODED_HANDLE,
|
|
165
|
+
KwikCheckoutAdapter,
|
|
166
|
+
KwikPassAdapter,
|
|
167
|
+
MoengageAdapter,
|
|
168
|
+
PixelAdapter,
|
|
169
|
+
PostHogAdapter,
|
|
170
|
+
ShopifyAdapter,
|
|
171
|
+
ShopkitAnalytics_default as ShopkitAnalytics,
|
|
172
|
+
captureAffiliateParams,
|
|
173
|
+
clearAffiliateParams,
|
|
174
|
+
createAdapterLogger,
|
|
175
|
+
createLogger,
|
|
176
|
+
ShopkitAnalytics_default as default,
|
|
177
|
+
eventPublisher,
|
|
178
|
+
eventSubscriber,
|
|
179
|
+
getAffiliateParams,
|
|
180
|
+
getAffiliateSource,
|
|
181
|
+
hasAffiliateData,
|
|
182
|
+
initTracking,
|
|
183
|
+
initializeEventTracking,
|
|
184
|
+
logger,
|
|
185
|
+
publishEvent,
|
|
186
|
+
useAffiliateSource,
|
|
187
|
+
useAffiliateTracker,
|
|
188
|
+
useHasAffiliateData
|
|
189
|
+
};
|
|
190
|
+
//# sourceMappingURL=index.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/ShopkitAnalytics.tsx"],"sourcesContent":["\"use client\";\n\nimport React, { useEffect } from \"react\";\nimport { useShopifyCookies } from \"@shopify/hydrogen-react\";\nimport { initializeEventTracking } from \"./events/init\";\nimport { AffiliateTracker } from \"./affiliate\";\nimport { createLogger, type LoggerConfig } from \"./logger\";\nimport {\n GoogleAdapter,\n PixelAdapter,\n MoengageAdapter,\n PostHogAdapter,\n ShopifyAdapter,\n KwikPassAdapter,\n KwikCheckoutAdapter,\n} from \"./adapters\";\nimport type {\n GoogleAdapterConfig,\n PixelAdapterConfig,\n MoengageAdapterConfig,\n PostHogAdapterConfig,\n ShopifyAdapterConfig,\n KwikPassConfig,\n KwikCheckoutConfig,\n} from \"./adapters\";\nimport type { TrackingAdapter } from \"./events/subscriber\";\nimport type { AffiliateConfig } from \"./affiliate/types\";\n\nexport interface ShopkitAnalyticsConfig {\n // Analytics Adapters\n googleAnalytics?: GoogleAdapterConfig;\n facebookPixel?: PixelAdapterConfig;\n moengage?: MoengageAdapterConfig;\n posthog?: PostHogAdapterConfig;\n shopify?: ShopifyAdapterConfig;\n kwikpass?: KwikPassConfig;\n kwikcheckout?: KwikCheckoutConfig;\n customAdapters?: TrackingAdapter[];\n\n // Affiliate Tracking\n affiliate?: {\n enabled?: boolean;\n config?: Partial<AffiliateConfig>;\n autoCapture?: boolean;\n };\n\n // Logger Settings\n logger?: LoggerConfig;\n\n // General Settings (deprecated - use logger.enabled instead)\n enableDebugLogs?: boolean;\n autoInitialize?: boolean;\n}\n\nexport interface ShopkitAnalyticsProps {\n config: ShopkitAnalyticsConfig;\n children?: React.ReactNode;\n onInitialized?: () => void;\n onError?: (error: Error) => void;\n}\n\nconst ShopkitAnalytics: React.FC<ShopkitAnalyticsProps> = ({\n config,\n children,\n onInitialized,\n onError,\n}) => {\n // Enable Shopify cookies if Shopify adapter is configured\n useShopifyCookies({\n hasUserConsent: true,\n domain: config.shopify?.domain || \"\",\n });\n\n useEffect(() => {\n const initializeAnalytics = async () => {\n if (config.autoInitialize === false) return;\n\n // Create logger instance\n const loggerConfig: LoggerConfig = {\n enabled: config.logger?.enabled ?? config.enableDebugLogs ?? true,\n level: config.logger?.level ?? \"info\",\n name: \"@shopkit/analytics\",\n prettyPrint: config.logger?.prettyPrint ?? false,\n };\n\n const logger = createLogger(loggerConfig);\n\n try {\n logger.info(\"Starting initialization...\");\n\n const adapters: TrackingAdapter[] = [];\n\n // Helper function to add logger config to adapter config\n const addLoggerConfig = (adapterConfig: any) => ({\n ...adapterConfig,\n enableDebugLogs: loggerConfig.enabled,\n logLevel: loggerConfig.level,\n });\n\n // Google Analytics 4\n if (config.googleAnalytics) {\n const gaAdapter = new GoogleAdapter(\n addLoggerConfig(config.googleAnalytics)\n );\n adapters.push(gaAdapter);\n logger.info(\"Added Google Analytics adapter\");\n }\n\n // Facebook Pixel\n if (config.facebookPixel) {\n const pixelAdapter = new PixelAdapter(\n addLoggerConfig(config.facebookPixel)\n );\n adapters.push(pixelAdapter);\n logger.info(\"Added Facebook Pixel adapter\");\n }\n\n // MoEngage\n if (config.moengage) {\n const moengageAdapter = new MoengageAdapter(\n addLoggerConfig(config.moengage)\n );\n adapters.push(moengageAdapter);\n logger.info(\"Added MoEngage adapter\");\n }\n\n // PostHog\n if (config.posthog) {\n const posthogAdapter = new PostHogAdapter(\n addLoggerConfig(config.posthog)\n );\n adapters.push(posthogAdapter);\n logger.info(\"Added PostHog adapter\");\n }\n\n // Shopify Analytics\n if (config.shopify) {\n const shopifyAdapter = new ShopifyAdapter(\n addLoggerConfig(config.shopify)\n );\n adapters.push(shopifyAdapter);\n logger.info(\"Added Shopify Analytics adapter\");\n }\n\n // KwikPass Analytics\n if (config.kwikpass) {\n const kwikpassAdapter = new KwikPassAdapter(\n addLoggerConfig(config.kwikpass)\n );\n adapters.push(kwikpassAdapter);\n logger.info(\"Added KwikPass Analytics adapter\");\n }\n\n // KwikCheckout Analytics\n if (config.kwikcheckout) {\n const kwikcheckoutAdapter = new KwikCheckoutAdapter(\n addLoggerConfig(config.kwikcheckout)\n );\n adapters.push(kwikcheckoutAdapter);\n logger.info(\"Added KwikCheckout Analytics adapter\");\n }\n\n // Custom adapters\n if (config.customAdapters) {\n adapters.push(...config.customAdapters);\n logger.info(`Added ${config.customAdapters.length} custom adapters`);\n }\n\n if (adapters.length === 0) {\n logger.warn(\"No analytics adapters configured\");\n } else {\n // Initialize the event tracking system\n await initializeEventTracking(adapters);\n logger.info(\"Event tracking initialized with adapters\", {\n adapters: adapters.map((a) => a.name),\n });\n }\n\n logger.info(\"Initialization completed successfully\");\n onInitialized?.();\n } catch (err) {\n const error =\n err instanceof Error\n ? err\n : new Error(\"Unknown initialization error\");\n logger.error(\"Initialization failed\", error);\n onError?.(error);\n }\n };\n\n initializeAnalytics();\n }, [config, onInitialized, onError]);\n\n return (\n <>\n {/* Affiliate Tracker */}\n {config.affiliate?.enabled !== false && (\n <AffiliateTracker\n config={config.affiliate?.config}\n autoCapture={config.affiliate?.autoCapture}\n />\n )}\n\n {children ? <>{children}</> : null}\n </>\n );\n};\n\nexport default ShopkitAnalytics;\n"],"mappings":"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","names":["logger"]}
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
import { TEvent } from './types.js';
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Interface for tracking adapters
|
|
5
|
+
*/
|
|
6
|
+
interface TrackingAdapter {
|
|
7
|
+
/**
|
|
8
|
+
* Name of the tracking adapter
|
|
9
|
+
*/
|
|
10
|
+
name: string;
|
|
11
|
+
/**
|
|
12
|
+
* Whether the adapter is enabled
|
|
13
|
+
*/
|
|
14
|
+
isEnabled: () => boolean;
|
|
15
|
+
/**
|
|
16
|
+
* Initialize the adapter
|
|
17
|
+
*/
|
|
18
|
+
initialize: () => Promise<void>;
|
|
19
|
+
/**
|
|
20
|
+
* Track an event
|
|
21
|
+
*/
|
|
22
|
+
trackEvent: (event: TEvent) => Promise<void>;
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
* EventSubscriber class responsible for managing tracking adapters and forwarding events
|
|
26
|
+
*/
|
|
27
|
+
declare class EventSubscriber {
|
|
28
|
+
private static instance;
|
|
29
|
+
private adapters;
|
|
30
|
+
private initialized;
|
|
31
|
+
private eventQueue;
|
|
32
|
+
private unsubscribe;
|
|
33
|
+
/**
|
|
34
|
+
* Private constructor to enforce singleton pattern
|
|
35
|
+
*/
|
|
36
|
+
private constructor();
|
|
37
|
+
/**
|
|
38
|
+
* Get the singleton instance of EventSubscriber
|
|
39
|
+
*/
|
|
40
|
+
static getInstance(): EventSubscriber;
|
|
41
|
+
/**
|
|
42
|
+
* Register a tracking adapter
|
|
43
|
+
* @param adapter The tracking adapter to register
|
|
44
|
+
*/
|
|
45
|
+
registerAdapter(adapter: TrackingAdapter): void;
|
|
46
|
+
/**
|
|
47
|
+
* Unregister a tracking adapter by name
|
|
48
|
+
* @param adapterName The name of the adapter to unregister
|
|
49
|
+
*/
|
|
50
|
+
unregisterAdapter(adapterName: string): void;
|
|
51
|
+
/**
|
|
52
|
+
* Initialize all registered adapters
|
|
53
|
+
*/
|
|
54
|
+
initialize(): Promise<void>;
|
|
55
|
+
/**
|
|
56
|
+
* Initialize a single adapter
|
|
57
|
+
* @param adapter The adapter to initialize
|
|
58
|
+
*/
|
|
59
|
+
private initializeAdapter;
|
|
60
|
+
/**
|
|
61
|
+
* Handle an event by forwarding it to all enabled adapters
|
|
62
|
+
* @param event The event to handle
|
|
63
|
+
*/
|
|
64
|
+
private handleEvent;
|
|
65
|
+
/**
|
|
66
|
+
* Process any events that were queued before initialization
|
|
67
|
+
*/
|
|
68
|
+
private processEventQueue;
|
|
69
|
+
/**
|
|
70
|
+
* Shutdown the subscriber and all adapters
|
|
71
|
+
*/
|
|
72
|
+
shutdown(): void;
|
|
73
|
+
/**
|
|
74
|
+
* Get all registered adapters
|
|
75
|
+
*/
|
|
76
|
+
getAdapters(): TrackingAdapter[];
|
|
77
|
+
}
|
|
78
|
+
declare const eventSubscriber: EventSubscriber;
|
|
79
|
+
|
|
80
|
+
export { type TrackingAdapter as T, eventSubscriber as e };
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":[],"sourcesContent":[],"mappings":"","names":[]}
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
import { TEvent } from './types.mjs';
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Interface for tracking adapters
|
|
5
|
+
*/
|
|
6
|
+
interface TrackingAdapter {
|
|
7
|
+
/**
|
|
8
|
+
* Name of the tracking adapter
|
|
9
|
+
*/
|
|
10
|
+
name: string;
|
|
11
|
+
/**
|
|
12
|
+
* Whether the adapter is enabled
|
|
13
|
+
*/
|
|
14
|
+
isEnabled: () => boolean;
|
|
15
|
+
/**
|
|
16
|
+
* Initialize the adapter
|
|
17
|
+
*/
|
|
18
|
+
initialize: () => Promise<void>;
|
|
19
|
+
/**
|
|
20
|
+
* Track an event
|
|
21
|
+
*/
|
|
22
|
+
trackEvent: (event: TEvent) => Promise<void>;
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
* EventSubscriber class responsible for managing tracking adapters and forwarding events
|
|
26
|
+
*/
|
|
27
|
+
declare class EventSubscriber {
|
|
28
|
+
private static instance;
|
|
29
|
+
private adapters;
|
|
30
|
+
private initialized;
|
|
31
|
+
private eventQueue;
|
|
32
|
+
private unsubscribe;
|
|
33
|
+
/**
|
|
34
|
+
* Private constructor to enforce singleton pattern
|
|
35
|
+
*/
|
|
36
|
+
private constructor();
|
|
37
|
+
/**
|
|
38
|
+
* Get the singleton instance of EventSubscriber
|
|
39
|
+
*/
|
|
40
|
+
static getInstance(): EventSubscriber;
|
|
41
|
+
/**
|
|
42
|
+
* Register a tracking adapter
|
|
43
|
+
* @param adapter The tracking adapter to register
|
|
44
|
+
*/
|
|
45
|
+
registerAdapter(adapter: TrackingAdapter): void;
|
|
46
|
+
/**
|
|
47
|
+
* Unregister a tracking adapter by name
|
|
48
|
+
* @param adapterName The name of the adapter to unregister
|
|
49
|
+
*/
|
|
50
|
+
unregisterAdapter(adapterName: string): void;
|
|
51
|
+
/**
|
|
52
|
+
* Initialize all registered adapters
|
|
53
|
+
*/
|
|
54
|
+
initialize(): Promise<void>;
|
|
55
|
+
/**
|
|
56
|
+
* Initialize a single adapter
|
|
57
|
+
* @param adapter The adapter to initialize
|
|
58
|
+
*/
|
|
59
|
+
private initializeAdapter;
|
|
60
|
+
/**
|
|
61
|
+
* Handle an event by forwarding it to all enabled adapters
|
|
62
|
+
* @param event The event to handle
|
|
63
|
+
*/
|
|
64
|
+
private handleEvent;
|
|
65
|
+
/**
|
|
66
|
+
* Process any events that were queued before initialization
|
|
67
|
+
*/
|
|
68
|
+
private processEventQueue;
|
|
69
|
+
/**
|
|
70
|
+
* Shutdown the subscriber and all adapters
|
|
71
|
+
*/
|
|
72
|
+
shutdown(): void;
|
|
73
|
+
/**
|
|
74
|
+
* Get all registered adapters
|
|
75
|
+
*/
|
|
76
|
+
getAdapters(): TrackingAdapter[];
|
|
77
|
+
}
|
|
78
|
+
declare const eventSubscriber: EventSubscriber;
|
|
79
|
+
|
|
80
|
+
export { type TrackingAdapter as T, eventSubscriber as e };
|