@supernal/interface 1.0.13 → 1.1.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/dist/cjs/src/index.js +18 -1
- package/dist/cjs/src/index.js.map +1 -1
- package/dist/cjs/src/tracking/SITrackingProvider.js +126 -0
- package/dist/cjs/src/tracking/SITrackingProvider.js.map +1 -0
- package/dist/cjs/src/tracking/hooks.js +233 -0
- package/dist/cjs/src/tracking/hooks.js.map +1 -0
- package/dist/cjs/src/tracking/index.js +67 -0
- package/dist/cjs/src/tracking/index.js.map +1 -0
- package/dist/cjs/src/tracking/tracker.js +289 -0
- package/dist/cjs/src/tracking/tracker.js.map +1 -0
- package/dist/esm/src/index.d.ts +3 -0
- package/dist/esm/src/index.d.ts.map +1 -1
- package/dist/esm/src/index.js +4 -0
- package/dist/esm/src/index.js.map +1 -1
- package/dist/esm/src/tracking/SITrackingProvider.d.ts +64 -0
- package/dist/esm/src/tracking/SITrackingProvider.d.ts.map +1 -0
- package/dist/esm/src/tracking/SITrackingProvider.js +82 -0
- package/dist/esm/src/tracking/SITrackingProvider.js.map +1 -0
- package/dist/esm/src/tracking/hooks.d.ts +112 -0
- package/dist/esm/src/tracking/hooks.d.ts.map +1 -0
- package/dist/esm/src/tracking/hooks.js +215 -0
- package/dist/esm/src/tracking/hooks.js.map +1 -0
- package/dist/esm/src/tracking/index.d.ts +48 -0
- package/dist/esm/src/tracking/index.d.ts.map +1 -0
- package/dist/esm/src/tracking/index.js +51 -0
- package/dist/esm/src/tracking/index.js.map +1 -0
- package/dist/esm/src/tracking/tracker.d.ts +121 -0
- package/dist/esm/src/tracking/tracker.d.ts.map +1 -0
- package/dist/esm/src/tracking/tracker.js +284 -0
- package/dist/esm/src/tracking/tracker.js.map +1 -0
- package/package.json +9 -4
|
@@ -0,0 +1,289 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Supernal Interface Interaction Tracking
|
|
4
|
+
*
|
|
5
|
+
* Tracks user interactions with SI components for analytics and AI analysis.
|
|
6
|
+
* Batches events to minimize network requests and handles offline gracefully.
|
|
7
|
+
*
|
|
8
|
+
* @packageDocumentation
|
|
9
|
+
*/
|
|
10
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
11
|
+
exports.SITracker = void 0;
|
|
12
|
+
exports.createTracker = createTracker;
|
|
13
|
+
/**
|
|
14
|
+
* SI Tracker - Core tracking class
|
|
15
|
+
*
|
|
16
|
+
* @example
|
|
17
|
+
* ```typescript
|
|
18
|
+
* const tracker = new SITracker({ endpoint: '/api/analytics' });
|
|
19
|
+
* tracker.track('PostCard', 'view', 'post-123');
|
|
20
|
+
* ```
|
|
21
|
+
*/
|
|
22
|
+
class SITracker {
|
|
23
|
+
constructor(config = {}) {
|
|
24
|
+
this.queue = [];
|
|
25
|
+
this.flushInterval = null;
|
|
26
|
+
this.engagementSessions = new Map();
|
|
27
|
+
this.scrollState = {
|
|
28
|
+
maxDepth: 0,
|
|
29
|
+
lastReportedDepth: 0,
|
|
30
|
+
lastUpdateTime: Date.now(),
|
|
31
|
+
};
|
|
32
|
+
this.userId = null;
|
|
33
|
+
this.config = {
|
|
34
|
+
endpoint: config.endpoint ?? '/api/v1/analytics',
|
|
35
|
+
batchSize: config.batchSize ?? 10,
|
|
36
|
+
flushIntervalMs: config.flushIntervalMs ?? 5000,
|
|
37
|
+
minEngagementMs: config.minEngagementMs ?? 3000,
|
|
38
|
+
scrollDebounceMs: config.scrollDebounceMs ?? 500,
|
|
39
|
+
debug: config.debug ?? false,
|
|
40
|
+
customFetch: config.customFetch ?? fetch,
|
|
41
|
+
};
|
|
42
|
+
this.isClient = typeof window !== 'undefined';
|
|
43
|
+
this.sessionId = this.generateSessionId();
|
|
44
|
+
if (this.isClient) {
|
|
45
|
+
this.startFlushInterval();
|
|
46
|
+
this.setupBeforeUnload();
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
/** Generate a unique session ID */
|
|
50
|
+
generateSessionId() {
|
|
51
|
+
if (!this.isClient)
|
|
52
|
+
return 'server-session';
|
|
53
|
+
// Try to reuse session ID from sessionStorage
|
|
54
|
+
const stored = sessionStorage.getItem('si_session_id');
|
|
55
|
+
if (stored)
|
|
56
|
+
return stored;
|
|
57
|
+
const id = `si_${Date.now().toString(36)}_${Math.random().toString(36).slice(2, 9)}`;
|
|
58
|
+
sessionStorage.setItem('si_session_id', id);
|
|
59
|
+
return id;
|
|
60
|
+
}
|
|
61
|
+
/** Log debug message */
|
|
62
|
+
log(...args) {
|
|
63
|
+
if (this.config.debug) {
|
|
64
|
+
console.log('[SI Tracking]', ...args);
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
/** Set the current user ID for tracking */
|
|
68
|
+
setUserId(userId) {
|
|
69
|
+
this.userId = userId;
|
|
70
|
+
}
|
|
71
|
+
/** Get current session ID */
|
|
72
|
+
getSessionId() {
|
|
73
|
+
return this.sessionId;
|
|
74
|
+
}
|
|
75
|
+
/** Get queue length (for testing) */
|
|
76
|
+
getQueueLength() {
|
|
77
|
+
return this.queue.length;
|
|
78
|
+
}
|
|
79
|
+
/**
|
|
80
|
+
* Track an interaction
|
|
81
|
+
*/
|
|
82
|
+
track(componentId, action, targetId, metadata) {
|
|
83
|
+
if (!this.isClient)
|
|
84
|
+
return;
|
|
85
|
+
const interaction = {
|
|
86
|
+
componentId,
|
|
87
|
+
action,
|
|
88
|
+
targetId,
|
|
89
|
+
metadata,
|
|
90
|
+
timestamp: Date.now(),
|
|
91
|
+
sessionId: this.sessionId,
|
|
92
|
+
};
|
|
93
|
+
this.queue.push(interaction);
|
|
94
|
+
this.log('Queued:', action, targetId);
|
|
95
|
+
// Flush if queue is full
|
|
96
|
+
if (this.queue.length >= this.config.batchSize) {
|
|
97
|
+
this.flush();
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
/** Alias for track - for click events */
|
|
101
|
+
trackClick(componentId, action, targetId, metadata) {
|
|
102
|
+
this.track(componentId, action, targetId, metadata);
|
|
103
|
+
}
|
|
104
|
+
/** Track view (impression) of a component */
|
|
105
|
+
trackView(componentId, targetId) {
|
|
106
|
+
this.track(componentId, 'view', targetId);
|
|
107
|
+
}
|
|
108
|
+
/** Start engagement tracking for a target */
|
|
109
|
+
startEngagement(targetId) {
|
|
110
|
+
if (!this.isClient)
|
|
111
|
+
return;
|
|
112
|
+
this.engagementSessions.set(targetId, {
|
|
113
|
+
targetId,
|
|
114
|
+
startTime: Date.now(),
|
|
115
|
+
scrollDepth: 0,
|
|
116
|
+
interactions: 0,
|
|
117
|
+
});
|
|
118
|
+
this.log('Engagement started:', targetId);
|
|
119
|
+
}
|
|
120
|
+
/** Record an interaction during engagement */
|
|
121
|
+
recordEngagementInteraction(targetId) {
|
|
122
|
+
const session = this.engagementSessions.get(targetId);
|
|
123
|
+
if (session) {
|
|
124
|
+
session.interactions++;
|
|
125
|
+
}
|
|
126
|
+
}
|
|
127
|
+
/** Update scroll depth for engagement session */
|
|
128
|
+
updateEngagementScrollDepth(targetId, depth) {
|
|
129
|
+
const session = this.engagementSessions.get(targetId);
|
|
130
|
+
if (session && depth > session.scrollDepth) {
|
|
131
|
+
session.scrollDepth = depth;
|
|
132
|
+
}
|
|
133
|
+
}
|
|
134
|
+
/** End engagement tracking and log the session */
|
|
135
|
+
endEngagement(targetId, componentId = 'Content') {
|
|
136
|
+
if (!this.isClient)
|
|
137
|
+
return;
|
|
138
|
+
const session = this.engagementSessions.get(targetId);
|
|
139
|
+
if (!session)
|
|
140
|
+
return;
|
|
141
|
+
const duration = Date.now() - session.startTime;
|
|
142
|
+
// Only track if engagement was meaningful
|
|
143
|
+
if (duration >= this.config.minEngagementMs) {
|
|
144
|
+
this.track(componentId, 'view', targetId, {
|
|
145
|
+
engagementDuration: duration,
|
|
146
|
+
scrollDepth: session.scrollDepth,
|
|
147
|
+
interactions: session.interactions,
|
|
148
|
+
});
|
|
149
|
+
this.log('Engagement ended:', targetId, { duration, ...session });
|
|
150
|
+
}
|
|
151
|
+
this.engagementSessions.delete(targetId);
|
|
152
|
+
}
|
|
153
|
+
/** Track scroll depth in feed */
|
|
154
|
+
trackScrollDepth(depth, componentId = 'Feed') {
|
|
155
|
+
if (!this.isClient)
|
|
156
|
+
return;
|
|
157
|
+
const now = Date.now();
|
|
158
|
+
// Only update if depth increased
|
|
159
|
+
if (depth > this.scrollState.maxDepth) {
|
|
160
|
+
this.scrollState.maxDepth = depth;
|
|
161
|
+
}
|
|
162
|
+
// Debounce reporting
|
|
163
|
+
if (now - this.scrollState.lastUpdateTime < this.config.scrollDebounceMs) {
|
|
164
|
+
return;
|
|
165
|
+
}
|
|
166
|
+
// Report at 25%, 50%, 75%, 100% milestones
|
|
167
|
+
const milestones = [25, 50, 75, 100];
|
|
168
|
+
const currentMilestone = milestones.find((m) => this.scrollState.maxDepth >= m && this.scrollState.lastReportedDepth < m);
|
|
169
|
+
if (currentMilestone) {
|
|
170
|
+
this.track(componentId, 'scroll', undefined, {
|
|
171
|
+
depth: currentMilestone,
|
|
172
|
+
maxDepth: this.scrollState.maxDepth,
|
|
173
|
+
});
|
|
174
|
+
this.scrollState.lastReportedDepth = currentMilestone;
|
|
175
|
+
this.log('Scroll milestone:', currentMilestone);
|
|
176
|
+
}
|
|
177
|
+
this.scrollState.lastUpdateTime = now;
|
|
178
|
+
}
|
|
179
|
+
/** Reset scroll tracking (e.g., on page navigation) */
|
|
180
|
+
resetScrollTracking() {
|
|
181
|
+
this.scrollState = {
|
|
182
|
+
maxDepth: 0,
|
|
183
|
+
lastReportedDepth: 0,
|
|
184
|
+
lastUpdateTime: Date.now(),
|
|
185
|
+
};
|
|
186
|
+
}
|
|
187
|
+
/** Start periodic flush interval */
|
|
188
|
+
startFlushInterval() {
|
|
189
|
+
if (this.flushInterval)
|
|
190
|
+
return;
|
|
191
|
+
this.flushInterval = setInterval(() => {
|
|
192
|
+
this.flush();
|
|
193
|
+
}, this.config.flushIntervalMs);
|
|
194
|
+
}
|
|
195
|
+
/** Stop flush interval */
|
|
196
|
+
stopFlushInterval() {
|
|
197
|
+
if (this.flushInterval) {
|
|
198
|
+
clearInterval(this.flushInterval);
|
|
199
|
+
this.flushInterval = null;
|
|
200
|
+
}
|
|
201
|
+
}
|
|
202
|
+
/** Setup beforeunload handler to flush remaining events */
|
|
203
|
+
setupBeforeUnload() {
|
|
204
|
+
window.addEventListener('beforeunload', () => {
|
|
205
|
+
// End all engagement sessions
|
|
206
|
+
for (const targetId of this.engagementSessions.keys()) {
|
|
207
|
+
this.endEngagement(targetId);
|
|
208
|
+
}
|
|
209
|
+
// Use sendBeacon for reliable delivery
|
|
210
|
+
this.flushWithBeacon();
|
|
211
|
+
});
|
|
212
|
+
// Also handle visibility change for mobile
|
|
213
|
+
document.addEventListener('visibilitychange', () => {
|
|
214
|
+
if (document.visibilityState === 'hidden') {
|
|
215
|
+
this.flushWithBeacon();
|
|
216
|
+
}
|
|
217
|
+
});
|
|
218
|
+
}
|
|
219
|
+
/** Flush queued events to the API */
|
|
220
|
+
async flush() {
|
|
221
|
+
if (!this.isClient || this.queue.length === 0)
|
|
222
|
+
return;
|
|
223
|
+
const events = [...this.queue];
|
|
224
|
+
this.queue = [];
|
|
225
|
+
this.log('Flushing', events.length, 'events');
|
|
226
|
+
try {
|
|
227
|
+
const response = await this.config.customFetch(this.config.endpoint, {
|
|
228
|
+
method: 'POST',
|
|
229
|
+
headers: {
|
|
230
|
+
'Content-Type': 'application/json',
|
|
231
|
+
},
|
|
232
|
+
body: JSON.stringify({
|
|
233
|
+
events,
|
|
234
|
+
userId: this.userId,
|
|
235
|
+
}),
|
|
236
|
+
});
|
|
237
|
+
if (!response.ok) {
|
|
238
|
+
// Re-queue events on failure (with limit to prevent infinite growth)
|
|
239
|
+
if (this.queue.length < this.config.batchSize * 3) {
|
|
240
|
+
this.queue.unshift(...events);
|
|
241
|
+
}
|
|
242
|
+
this.log('Flush failed, re-queued');
|
|
243
|
+
}
|
|
244
|
+
}
|
|
245
|
+
catch (error) {
|
|
246
|
+
// Re-queue events on network error
|
|
247
|
+
if (this.queue.length < this.config.batchSize * 3) {
|
|
248
|
+
this.queue.unshift(...events);
|
|
249
|
+
}
|
|
250
|
+
console.warn('[SI Tracking] Failed to flush events:', error);
|
|
251
|
+
}
|
|
252
|
+
}
|
|
253
|
+
/** Flush using sendBeacon (for unload events) */
|
|
254
|
+
flushWithBeacon() {
|
|
255
|
+
if (!this.isClient || this.queue.length === 0)
|
|
256
|
+
return;
|
|
257
|
+
const events = [...this.queue];
|
|
258
|
+
this.queue = [];
|
|
259
|
+
try {
|
|
260
|
+
const blob = new Blob([JSON.stringify({ events, userId: this.userId })], {
|
|
261
|
+
type: 'application/json',
|
|
262
|
+
});
|
|
263
|
+
navigator.sendBeacon(this.config.endpoint, blob);
|
|
264
|
+
this.log('Beacon sent', events.length, 'events');
|
|
265
|
+
}
|
|
266
|
+
catch (error) {
|
|
267
|
+
console.warn('[SI Tracking] Beacon failed:', error);
|
|
268
|
+
}
|
|
269
|
+
}
|
|
270
|
+
/** Cleanup (for testing or unmounting) */
|
|
271
|
+
destroy() {
|
|
272
|
+
this.stopFlushInterval();
|
|
273
|
+
this.flush();
|
|
274
|
+
this.engagementSessions.clear();
|
|
275
|
+
}
|
|
276
|
+
}
|
|
277
|
+
exports.SITracker = SITracker;
|
|
278
|
+
/**
|
|
279
|
+
* Create a singleton tracker instance
|
|
280
|
+
*
|
|
281
|
+
* @example
|
|
282
|
+
* ```typescript
|
|
283
|
+
* export const tracker = createTracker({ endpoint: '/api/analytics' });
|
|
284
|
+
* ```
|
|
285
|
+
*/
|
|
286
|
+
function createTracker(config) {
|
|
287
|
+
return new SITracker(config);
|
|
288
|
+
}
|
|
289
|
+
//# sourceMappingURL=tracker.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tracker.js","sourceRoot":"","sources":["../../../../src/tracking/tracker.ts"],"names":[],"mappings":"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"}
|
package/dist/esm/src/index.d.ts
CHANGED
|
@@ -50,4 +50,7 @@ export { TreeBuilder } from './background/navigation/RuntimeTreeBuilder';
|
|
|
50
50
|
export { LocationContext } from './background/location/LocationContext';
|
|
51
51
|
export declare const VERSION = "1.1.0";
|
|
52
52
|
export declare const PACKAGE_NAME = "@supernal/interface";
|
|
53
|
+
export { SITracker, createTracker, type SITrackerConfig, type SIInteraction, type SIBaseAction, } from './tracking/tracker';
|
|
54
|
+
export { SITrackerProvider, useTracker, useSITrackingInit, useTrackClick, useTrackView, useTrackEngagement, useTrackScrollDepth, useTrackVisibility, createComponentTrackingHook, } from './tracking/hooks';
|
|
55
|
+
export { TrackingProvider, withTracking, type SITrackingProviderProps, } from './tracking/SITrackingProvider';
|
|
53
56
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/index.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/esm/src/index.js
CHANGED
|
@@ -76,6 +76,10 @@ export { LocationContext } from './background/location/LocationContext.js';
|
|
|
76
76
|
// Version info
|
|
77
77
|
export const VERSION = '1.1.0'; // Updated for MCP + State Management
|
|
78
78
|
export const PACKAGE_NAME = '@supernal/interface';
|
|
79
|
+
// Interaction Tracking
|
|
80
|
+
export { SITracker, createTracker, } from './tracking/tracker.js';
|
|
81
|
+
export { SITrackerProvider, useTracker, useSITrackingInit, useTrackClick, useTrackView, useTrackEngagement, useTrackScrollDepth, useTrackVisibility, createComponentTrackingHook, } from './tracking/hooks.js';
|
|
82
|
+
export { TrackingProvider, withTracking, } from './tracking/SITrackingProvider.js';
|
|
79
83
|
// Enterprise features not included in open source
|
|
80
84
|
// Available at https://supernal.ai/enterprise:
|
|
81
85
|
// - Test Generation (TestGenerator, ComponentTestGenerator, DocumentationGenerator)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/index.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* SI Tracking Provider Component
|
|
3
|
+
*
|
|
4
|
+
* React component that provides the tracker instance to the component tree.
|
|
5
|
+
*
|
|
6
|
+
* @packageDocumentation
|
|
7
|
+
*/
|
|
8
|
+
import React from 'react';
|
|
9
|
+
import { SITracker, SITrackerConfig } from './tracker';
|
|
10
|
+
export interface SITrackingProviderProps {
|
|
11
|
+
children: React.ReactNode;
|
|
12
|
+
/** Tracker configuration */
|
|
13
|
+
config?: SITrackerConfig;
|
|
14
|
+
/** Pre-created tracker instance (overrides config) */
|
|
15
|
+
tracker?: SITracker;
|
|
16
|
+
/** Current user ID for tracking */
|
|
17
|
+
userId?: string | null;
|
|
18
|
+
/** Callback when tracker is created */
|
|
19
|
+
onTrackerCreated?: (tracker: SITracker) => void;
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* Provider component that initializes SI tracking for your app
|
|
23
|
+
*
|
|
24
|
+
* @example
|
|
25
|
+
* ```tsx
|
|
26
|
+
* // With config
|
|
27
|
+
* function App() {
|
|
28
|
+
* const { user } = useAuth();
|
|
29
|
+
* return (
|
|
30
|
+
* <SITrackingProvider
|
|
31
|
+
* config={{ endpoint: '/api/analytics' }}
|
|
32
|
+
* userId={user?.id}
|
|
33
|
+
* >
|
|
34
|
+
* <YourApp />
|
|
35
|
+
* </SITrackingProvider>
|
|
36
|
+
* );
|
|
37
|
+
* }
|
|
38
|
+
*
|
|
39
|
+
* // With existing tracker
|
|
40
|
+
* const tracker = createTracker({ endpoint: '/api/analytics' });
|
|
41
|
+
*
|
|
42
|
+
* function App() {
|
|
43
|
+
* return (
|
|
44
|
+
* <SITrackingProvider tracker={tracker}>
|
|
45
|
+
* <YourApp />
|
|
46
|
+
* </SITrackingProvider>
|
|
47
|
+
* );
|
|
48
|
+
* }
|
|
49
|
+
* ```
|
|
50
|
+
*/
|
|
51
|
+
export declare function TrackingProvider({ children, config, tracker: externalTracker, userId, onTrackerCreated, }: SITrackingProviderProps): React.JSX.Element;
|
|
52
|
+
/**
|
|
53
|
+
* Higher-order component to inject tracker
|
|
54
|
+
*
|
|
55
|
+
* @example
|
|
56
|
+
* ```tsx
|
|
57
|
+
* const TrackedComponent = withTracking(MyComponent);
|
|
58
|
+
* // MyComponent receives `tracker` prop
|
|
59
|
+
* ```
|
|
60
|
+
*/
|
|
61
|
+
export declare function withTracking<P extends {
|
|
62
|
+
tracker?: SITracker | null;
|
|
63
|
+
}>(WrappedComponent: React.ComponentType<P>): React.FC<Omit<P, 'tracker'>>;
|
|
64
|
+
//# sourceMappingURL=SITrackingProvider.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SITrackingProvider.d.ts","sourceRoot":"","sources":["../../../../src/tracking/SITrackingProvider.tsx"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAIH,OAAO,KAA6B,MAAM,OAAO,CAAC;AAClD,OAAO,EAAE,SAAS,EAAE,eAAe,EAAiB,MAAM,WAAW,CAAC;AAGtE,MAAM,WAAW,uBAAuB;IACtC,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;IAC1B,4BAA4B;IAC5B,MAAM,CAAC,EAAE,eAAe,CAAC;IACzB,sDAAsD;IACtD,OAAO,CAAC,EAAE,SAAS,CAAC;IACpB,mCAAmC;IACnC,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,uCAAuC;IACvC,gBAAgB,CAAC,EAAE,CAAC,OAAO,EAAE,SAAS,KAAK,IAAI,CAAC;CACjD;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AACH,wBAAgB,gBAAgB,CAAC,EAC/B,QAAQ,EACR,MAAM,EACN,OAAO,EAAE,eAAe,EACxB,MAAM,EACN,gBAAgB,GACjB,EAAE,uBAAuB,qBAuBzB;AAED;;;;;;;;GAQG;AACH,wBAAgB,YAAY,CAAC,CAAC,SAAS;IAAE,OAAO,CAAC,EAAE,SAAS,GAAG,IAAI,CAAA;CAAE,EACnE,gBAAgB,EAAE,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,GACvC,KAAK,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC,CAU9B"}
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* SI Tracking Provider Component
|
|
3
|
+
*
|
|
4
|
+
* React component that provides the tracker instance to the component tree.
|
|
5
|
+
*
|
|
6
|
+
* @packageDocumentation
|
|
7
|
+
*/
|
|
8
|
+
'use client';
|
|
9
|
+
import React, { useMemo, useEffect } from 'react';
|
|
10
|
+
import { createTracker } from './tracker.js';
|
|
11
|
+
import { SITrackerProvider, useSITrackingInit, useTracker } from './hooks.js';
|
|
12
|
+
/**
|
|
13
|
+
* Provider component that initializes SI tracking for your app
|
|
14
|
+
*
|
|
15
|
+
* @example
|
|
16
|
+
* ```tsx
|
|
17
|
+
* // With config
|
|
18
|
+
* function App() {
|
|
19
|
+
* const { user } = useAuth();
|
|
20
|
+
* return (
|
|
21
|
+
* <SITrackingProvider
|
|
22
|
+
* config={{ endpoint: '/api/analytics' }}
|
|
23
|
+
* userId={user?.id}
|
|
24
|
+
* >
|
|
25
|
+
* <YourApp />
|
|
26
|
+
* </SITrackingProvider>
|
|
27
|
+
* );
|
|
28
|
+
* }
|
|
29
|
+
*
|
|
30
|
+
* // With existing tracker
|
|
31
|
+
* const tracker = createTracker({ endpoint: '/api/analytics' });
|
|
32
|
+
*
|
|
33
|
+
* function App() {
|
|
34
|
+
* return (
|
|
35
|
+
* <SITrackingProvider tracker={tracker}>
|
|
36
|
+
* <YourApp />
|
|
37
|
+
* </SITrackingProvider>
|
|
38
|
+
* );
|
|
39
|
+
* }
|
|
40
|
+
* ```
|
|
41
|
+
*/
|
|
42
|
+
export function TrackingProvider({ children, config, tracker: externalTracker, userId, onTrackerCreated, }) {
|
|
43
|
+
// Create or use provided tracker
|
|
44
|
+
const tracker = useMemo(() => {
|
|
45
|
+
if (externalTracker)
|
|
46
|
+
return externalTracker;
|
|
47
|
+
const newTracker = createTracker(config);
|
|
48
|
+
onTrackerCreated?.(newTracker);
|
|
49
|
+
return newTracker;
|
|
50
|
+
}, [externalTracker, config, onTrackerCreated]);
|
|
51
|
+
// Sync user ID
|
|
52
|
+
useSITrackingInit(tracker, userId);
|
|
53
|
+
// Cleanup on unmount
|
|
54
|
+
useEffect(() => {
|
|
55
|
+
return () => {
|
|
56
|
+
// Only destroy if we created the tracker
|
|
57
|
+
if (!externalTracker) {
|
|
58
|
+
tracker.destroy();
|
|
59
|
+
}
|
|
60
|
+
};
|
|
61
|
+
}, [tracker, externalTracker]);
|
|
62
|
+
return React.createElement(SITrackerProvider, { value: tracker }, children);
|
|
63
|
+
}
|
|
64
|
+
/**
|
|
65
|
+
* Higher-order component to inject tracker
|
|
66
|
+
*
|
|
67
|
+
* @example
|
|
68
|
+
* ```tsx
|
|
69
|
+
* const TrackedComponent = withTracking(MyComponent);
|
|
70
|
+
* // MyComponent receives `tracker` prop
|
|
71
|
+
* ```
|
|
72
|
+
*/
|
|
73
|
+
export function withTracking(WrappedComponent) {
|
|
74
|
+
// Inner component that uses the hook
|
|
75
|
+
function WithTrackingInner(props) {
|
|
76
|
+
const tracker = useTracker();
|
|
77
|
+
return React.createElement(WrappedComponent, { ...props, tracker: tracker });
|
|
78
|
+
}
|
|
79
|
+
WithTrackingInner.displayName = `withTracking(${WrappedComponent.displayName || WrappedComponent.name || 'Component'})`;
|
|
80
|
+
return WithTrackingInner;
|
|
81
|
+
}
|
|
82
|
+
//# sourceMappingURL=SITrackingProvider.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SITrackingProvider.js","sourceRoot":"","sources":["../../../../src/tracking/SITrackingProvider.tsx"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,YAAY,CAAC;AAEb,OAAO,KAAK,EAAE,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAClD,OAAO,EAA8B,aAAa,EAAE,MAAM,WAAW,CAAC;AACtE,OAAO,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAc3E;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AACH,MAAM,UAAU,gBAAgB,CAAC,EAC/B,QAAQ,EACR,MAAM,EACN,OAAO,EAAE,eAAe,EACxB,MAAM,EACN,gBAAgB,GACQ;IACxB,iCAAiC;IACjC,MAAM,OAAO,GAAG,OAAO,CAAC,GAAG,EAAE;QAC3B,IAAI,eAAe;YAAE,OAAO,eAAe,CAAC;QAC5C,MAAM,UAAU,GAAG,aAAa,CAAC,MAAM,CAAC,CAAC;QACzC,gBAAgB,EAAE,CAAC,UAAU,CAAC,CAAC;QAC/B,OAAO,UAAU,CAAC;IACpB,CAAC,EAAE,CAAC,eAAe,EAAE,MAAM,EAAE,gBAAgB,CAAC,CAAC,CAAC;IAEhD,eAAe;IACf,iBAAiB,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;IAEnC,qBAAqB;IACrB,SAAS,CAAC,GAAG,EAAE;QACb,OAAO,GAAG,EAAE;YACV,yCAAyC;YACzC,IAAI,CAAC,eAAe,EAAE,CAAC;gBACrB,OAAO,CAAC,OAAO,EAAE,CAAC;YACpB,CAAC;QACH,CAAC,CAAC;IACJ,CAAC,EAAE,CAAC,OAAO,EAAE,eAAe,CAAC,CAAC,CAAC;IAE/B,OAAO,oBAAC,iBAAiB,IAAC,KAAK,EAAE,OAAO,IAAG,QAAQ,CAAqB,CAAC;AAC3E,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,UAAU,YAAY,CAC1B,gBAAwC;IAExC,qCAAqC;IACrC,SAAS,iBAAiB,CAAC,KAAyB;QAClD,MAAM,OAAO,GAAG,UAAU,EAAE,CAAC;QAC7B,OAAO,oBAAC,gBAAgB,OAAM,KAAW,EAAE,OAAO,EAAE,OAAO,GAAI,CAAC;IAClE,CAAC;IAED,iBAAiB,CAAC,WAAW,GAAG,gBAAgB,gBAAgB,CAAC,WAAW,IAAI,gBAAgB,CAAC,IAAI,IAAI,WAAW,GAAG,CAAC;IAExH,OAAO,iBAAiB,CAAC;AAC3B,CAAC"}
|
|
@@ -0,0 +1,112 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* SI Tracking React Hooks
|
|
3
|
+
*
|
|
4
|
+
* React hooks for integrating Supernal Interface tracking into components.
|
|
5
|
+
*
|
|
6
|
+
* @packageDocumentation
|
|
7
|
+
*/
|
|
8
|
+
import type { SITracker, SIBaseAction } from './tracker';
|
|
9
|
+
export declare const SITrackerProvider: import("react").Provider<SITracker<SIBaseAction> | null>;
|
|
10
|
+
/**
|
|
11
|
+
* Get the tracker instance from context
|
|
12
|
+
*/
|
|
13
|
+
export declare function useTracker<TAction extends string = SIBaseAction>(): SITracker<TAction> | null;
|
|
14
|
+
/**
|
|
15
|
+
* Hook to sync auth state with tracker
|
|
16
|
+
* Place this once in your app layout
|
|
17
|
+
*
|
|
18
|
+
* @example
|
|
19
|
+
* ```tsx
|
|
20
|
+
* function App() {
|
|
21
|
+
* const { user } = useAuth();
|
|
22
|
+
* useSITrackingInit(tracker, user?.id);
|
|
23
|
+
* return <div>...</div>;
|
|
24
|
+
* }
|
|
25
|
+
* ```
|
|
26
|
+
*/
|
|
27
|
+
export declare function useSITrackingInit(tracker: SITracker | null, userId: string | null | undefined): void;
|
|
28
|
+
/**
|
|
29
|
+
* Hook for tracking click events
|
|
30
|
+
*
|
|
31
|
+
* @example
|
|
32
|
+
* ```tsx
|
|
33
|
+
* const trackClick = useTrackClick(tracker, 'PostCard');
|
|
34
|
+
* <button onClick={() => trackClick('like', postId)}>Like</button>
|
|
35
|
+
* ```
|
|
36
|
+
*/
|
|
37
|
+
export declare function useTrackClick<TAction extends string = SIBaseAction>(tracker: SITracker<TAction> | null, componentId: string): (action: TAction, targetId?: string, metadata?: Record<string, unknown>) => void;
|
|
38
|
+
/**
|
|
39
|
+
* Hook for tracking component views (impressions)
|
|
40
|
+
* Automatically tracks when component mounts
|
|
41
|
+
*
|
|
42
|
+
* @example
|
|
43
|
+
* ```tsx
|
|
44
|
+
* useTrackView(tracker, 'PostCard', post.id);
|
|
45
|
+
* ```
|
|
46
|
+
*/
|
|
47
|
+
export declare function useTrackView(tracker: SITracker | null, componentId: string, targetId?: string, options?: {
|
|
48
|
+
trackOnMount?: boolean;
|
|
49
|
+
}): void;
|
|
50
|
+
/**
|
|
51
|
+
* Hook for tracking engagement time on a specific target
|
|
52
|
+
* Automatically handles start/end of engagement session
|
|
53
|
+
*
|
|
54
|
+
* @example
|
|
55
|
+
* ```tsx
|
|
56
|
+
* const { recordInteraction } = useTrackEngagement(tracker, post.id);
|
|
57
|
+
* <button onClick={recordInteraction}>Interact</button>
|
|
58
|
+
* ```
|
|
59
|
+
*/
|
|
60
|
+
export declare function useTrackEngagement(tracker: SITracker | null, targetId: string, componentId?: string): {
|
|
61
|
+
recordInteraction: () => void;
|
|
62
|
+
};
|
|
63
|
+
/**
|
|
64
|
+
* Hook for tracking scroll depth in feed
|
|
65
|
+
* Attach to a scrollable container
|
|
66
|
+
*
|
|
67
|
+
* @example
|
|
68
|
+
* ```tsx
|
|
69
|
+
* const { handleScroll, resetScroll } = useTrackScrollDepth(tracker);
|
|
70
|
+
* <div onScroll={handleScroll}>...</div>
|
|
71
|
+
* ```
|
|
72
|
+
*/
|
|
73
|
+
export declare function useTrackScrollDepth(tracker: SITracker | null, componentId?: string): {
|
|
74
|
+
handleScroll: (event: React.UIEvent<HTMLElement>) => void;
|
|
75
|
+
resetScroll: () => void;
|
|
76
|
+
};
|
|
77
|
+
/**
|
|
78
|
+
* Hook for tracking intersection observer visibility
|
|
79
|
+
* Useful for tracking when components come into view in feed
|
|
80
|
+
*
|
|
81
|
+
* @example
|
|
82
|
+
* ```tsx
|
|
83
|
+
* const ref = useTrackVisibility(tracker, 'PostCard', post.id);
|
|
84
|
+
* <div ref={ref}>...</div>
|
|
85
|
+
* ```
|
|
86
|
+
*/
|
|
87
|
+
export declare function useTrackVisibility(tracker: SITracker | null, componentId: string, targetId?: string, options?: {
|
|
88
|
+
threshold?: number;
|
|
89
|
+
}): React.RefCallback<HTMLElement>;
|
|
90
|
+
/**
|
|
91
|
+
* Create a component-specific tracking hook factory
|
|
92
|
+
*
|
|
93
|
+
* @example
|
|
94
|
+
* ```typescript
|
|
95
|
+
* // Define your actions
|
|
96
|
+
* type PostActions = 'like' | 'unlike' | 'share' | 'bookmark';
|
|
97
|
+
*
|
|
98
|
+
* // Create hooks for PostCard
|
|
99
|
+
* export function usePostCardTracking(tracker: SITracker<PostActions>, postId: string) {
|
|
100
|
+
* const trackClick = useTrackClick(tracker, 'PostCard');
|
|
101
|
+
* const visibilityRef = useTrackVisibility(tracker, 'PostCard', postId);
|
|
102
|
+
*
|
|
103
|
+
* return {
|
|
104
|
+
* trackLike: () => trackClick('like', postId),
|
|
105
|
+
* trackShare: () => trackClick('share', postId),
|
|
106
|
+
* visibilityRef,
|
|
107
|
+
* };
|
|
108
|
+
* }
|
|
109
|
+
* ```
|
|
110
|
+
*/
|
|
111
|
+
export declare function createComponentTrackingHook<TAction extends string, TReturn>(componentId: string, factory: (trackClick: (action: TAction, targetId?: string, metadata?: Record<string, unknown>) => void, tracker: SITracker<TAction>, targetId: string) => TReturn): (tracker: SITracker<TAction> | null, targetId: string) => TReturn | null;
|
|
112
|
+
//# sourceMappingURL=hooks.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"hooks.d.ts","sourceRoot":"","sources":["../../../../src/tracking/hooks.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAKH,OAAO,KAAK,EAAE,SAAS,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AAKzD,eAAO,MAAM,iBAAiB,0DAA4B,CAAC;AAE3D;;GAEG;AACH,wBAAgB,UAAU,CAAC,OAAO,SAAS,MAAM,GAAG,YAAY,KAAK,SAAS,CAAC,OAAO,CAAC,GAAG,IAAI,CAE7F;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,iBAAiB,CAC/B,OAAO,EAAE,SAAS,GAAG,IAAI,EACzB,MAAM,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,GAChC,IAAI,CAMN;AAED;;;;;;;;GAQG;AACH,wBAAgB,aAAa,CAAC,OAAO,SAAS,MAAM,GAAG,YAAY,EACjE,OAAO,EAAE,SAAS,CAAC,OAAO,CAAC,GAAG,IAAI,EAClC,WAAW,EAAE,MAAM,YAGR,OAAO,aAAa,MAAM,aAAa,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,UAO1E;AAED;;;;;;;;GAQG;AACH,wBAAgB,YAAY,CAC1B,OAAO,EAAE,SAAS,GAAG,IAAI,EACzB,WAAW,EAAE,MAAM,EACnB,QAAQ,CAAC,EAAE,MAAM,EACjB,OAAO,CAAC,EAAE;IAAE,YAAY,CAAC,EAAE,OAAO,CAAA;CAAE,GACnC,IAAI,CAQN;AAED;;;;;;;;;GASG;AACH,wBAAgB,kBAAkB,CAChC,OAAO,EAAE,SAAS,GAAG,IAAI,EACzB,QAAQ,EAAE,MAAM,EAChB,WAAW,SAAY,GACtB;IACD,iBAAiB,EAAE,MAAM,IAAI,CAAC;CAC/B,CA0BA;AAED;;;;;;;;;GASG;AACH,wBAAgB,mBAAmB,CACjC,OAAO,EAAE,SAAS,GAAG,IAAI,EACzB,WAAW,SAAS,GACnB;IACD,YAAY,EAAE,CAAC,KAAK,EAAE,KAAK,CAAC,OAAO,CAAC,WAAW,CAAC,KAAK,IAAI,CAAC;IAC1D,WAAW,EAAE,MAAM,IAAI,CAAC;CACzB,CA8BA;AAED;;;;;;;;;GASG;AACH,wBAAgB,kBAAkB,CAChC,OAAO,EAAE,SAAS,GAAG,IAAI,EACzB,WAAW,EAAE,MAAM,EACnB,QAAQ,CAAC,EAAE,MAAM,EACjB,OAAO,CAAC,EAAE;IAAE,SAAS,CAAC,EAAE,MAAM,CAAA;CAAE,GAC/B,KAAK,CAAC,WAAW,CAAC,WAAW,CAAC,CAgDhC;AAED;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,wBAAgB,2BAA2B,CAAC,OAAO,SAAS,MAAM,EAAE,OAAO,EACzE,WAAW,EAAE,MAAM,EACnB,OAAO,EAAE,CACP,UAAU,EAAE,CAAC,MAAM,EAAE,OAAO,EAAE,QAAQ,CAAC,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,IAAI,EAC5F,OAAO,EAAE,SAAS,CAAC,OAAO,CAAC,EAC3B,QAAQ,EAAE,MAAM,KACb,OAAO,IAGV,SAAS,SAAS,CAAC,OAAO,CAAC,GAAG,IAAI,EAClC,UAAU,MAAM,KACf,OAAO,GAAG,IAAI,CAOlB"}
|