humanbehavior-js 0.2.2 → 0.2.4
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/index.js +26 -27
- package/dist/cjs/index.js.map +1 -1
- package/dist/esm/index.js +26 -27
- package/dist/esm/index.js.map +1 -1
- package/dist/index.min.js +2 -2
- package/dist/index.min.js.map +1 -1
- package/dist/types/index.d.ts +8 -5
- package/package.json +1 -1
- package/simple-spa.html +184 -4
- package/src/api.ts +13 -6
- package/src/tracker.ts +22 -22
- package/.rollup.cache/Users/hudsonch/Desktop/HumanBehaviorInternship/humanbehavior-js/dist/.tsbuildinfo +0 -1
- package/.rollup.cache/Users/hudsonch/Desktop/HumanBehaviorInternship/humanbehavior-js/dist/api.js +0 -312
- package/.rollup.cache/Users/hudsonch/Desktop/HumanBehaviorInternship/humanbehavior-js/dist/api.js.map +0 -1
- package/.rollup.cache/Users/hudsonch/Desktop/HumanBehaviorInternship/humanbehavior-js/dist/index.js +0 -19
- package/.rollup.cache/Users/hudsonch/Desktop/HumanBehaviorInternship/humanbehavior-js/dist/index.js.map +0 -1
- package/.rollup.cache/Users/hudsonch/Desktop/HumanBehaviorInternship/humanbehavior-js/dist/react/index.js +0 -222
- package/.rollup.cache/Users/hudsonch/Desktop/HumanBehaviorInternship/humanbehavior-js/dist/react/index.js.map +0 -1
- package/.rollup.cache/Users/hudsonch/Desktop/HumanBehaviorInternship/humanbehavior-js/dist/redact.js +0 -416
- package/.rollup.cache/Users/hudsonch/Desktop/HumanBehaviorInternship/humanbehavior-js/dist/redact.js.map +0 -1
- package/.rollup.cache/Users/hudsonch/Desktop/HumanBehaviorInternship/humanbehavior-js/dist/tracker.js +0 -950
- package/.rollup.cache/Users/hudsonch/Desktop/HumanBehaviorInternship/humanbehavior-js/dist/tracker.js.map +0 -1
- package/.rollup.cache/Users/hudsonch/Desktop/HumanBehaviorInternship/humanbehavior-js/dist/utils/logger.js +0 -117
- package/.rollup.cache/Users/hudsonch/Desktop/HumanBehaviorInternship/humanbehavior-js/dist/utils/logger.js.map +0 -1
package/.rollup.cache/Users/hudsonch/Desktop/HumanBehaviorInternship/humanbehavior-js/dist/api.js
DELETED
|
@@ -1,312 +0,0 @@
|
|
|
1
|
-
import { __awaiter } from "tslib";
|
|
2
|
-
import { logError, logInfo, logDebug } from './utils/logger';
|
|
3
|
-
export const MAX_CHUNK_SIZE_BYTES = 1024 * 1024; // 1MB chunk size - more conservative
|
|
4
|
-
export function isChunkSizeExceeded(currentChunk, newEvent, sessionId) {
|
|
5
|
-
const nextChunkSize = new TextEncoder().encode(JSON.stringify({
|
|
6
|
-
sessionId,
|
|
7
|
-
events: [...currentChunk, newEvent]
|
|
8
|
-
})).length;
|
|
9
|
-
return nextChunkSize > MAX_CHUNK_SIZE_BYTES;
|
|
10
|
-
}
|
|
11
|
-
export function validateSingleEventSize(event, sessionId) {
|
|
12
|
-
const singleEventSize = new TextEncoder().encode(JSON.stringify({
|
|
13
|
-
sessionId,
|
|
14
|
-
events: [event]
|
|
15
|
-
})).length;
|
|
16
|
-
if (singleEventSize > MAX_CHUNK_SIZE_BYTES) {
|
|
17
|
-
// Instead of throwing, log a warning and suggest reducing event size
|
|
18
|
-
console.warn(`Single event size (${singleEventSize} bytes) exceeds maximum chunk size (${MAX_CHUNK_SIZE_BYTES} bytes). Consider reducing event data size.`);
|
|
19
|
-
}
|
|
20
|
-
}
|
|
21
|
-
export function splitLargeEvent(event, sessionId) {
|
|
22
|
-
const eventSize = new TextEncoder().encode(JSON.stringify({
|
|
23
|
-
sessionId,
|
|
24
|
-
events: [event]
|
|
25
|
-
})).length;
|
|
26
|
-
if (eventSize <= MAX_CHUNK_SIZE_BYTES) {
|
|
27
|
-
return [event];
|
|
28
|
-
}
|
|
29
|
-
// If event is too large, try to split it by removing large properties
|
|
30
|
-
const simplifiedEvent = Object.assign({}, event);
|
|
31
|
-
// Remove potentially large properties
|
|
32
|
-
const largeProperties = ['screenshot', 'html', 'dom', 'fullText', 'innerHTML', 'outerHTML'];
|
|
33
|
-
largeProperties.forEach(prop => {
|
|
34
|
-
if (simplifiedEvent[prop]) {
|
|
35
|
-
delete simplifiedEvent[prop];
|
|
36
|
-
}
|
|
37
|
-
});
|
|
38
|
-
// Check if simplified event is now small enough
|
|
39
|
-
const simplifiedSize = new TextEncoder().encode(JSON.stringify({
|
|
40
|
-
sessionId,
|
|
41
|
-
events: [simplifiedEvent]
|
|
42
|
-
})).length;
|
|
43
|
-
if (simplifiedSize <= MAX_CHUNK_SIZE_BYTES) {
|
|
44
|
-
return [simplifiedEvent];
|
|
45
|
-
}
|
|
46
|
-
// If still too large, create a minimal event
|
|
47
|
-
const minimalEvent = Object.assign({ type: event.type, timestamp: event.timestamp, url: event.url, pathname: event.pathname }, Object.fromEntries(Object.entries(event).filter(([key, value]) => !largeProperties.includes(key) &&
|
|
48
|
-
typeof value !== 'object' &&
|
|
49
|
-
typeof value !== 'string' ||
|
|
50
|
-
(typeof value === 'string' && value.length < 1000))));
|
|
51
|
-
return [minimalEvent];
|
|
52
|
-
}
|
|
53
|
-
export class HumanBehaviorAPI {
|
|
54
|
-
constructor({ apiKey, ingestionUrl }) {
|
|
55
|
-
this.apiKey = apiKey;
|
|
56
|
-
this.baseUrl = ingestionUrl;
|
|
57
|
-
}
|
|
58
|
-
init(sessionId, userId) {
|
|
59
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
60
|
-
// Get current page URL and referrer if in browser environment
|
|
61
|
-
let entryURL = null;
|
|
62
|
-
let referrer = null;
|
|
63
|
-
if (typeof window !== 'undefined') {
|
|
64
|
-
entryURL = window.location.href;
|
|
65
|
-
referrer = document.referrer;
|
|
66
|
-
}
|
|
67
|
-
console.log('API init called with:', { sessionId, userId, entryURL, referrer, baseUrl: this.baseUrl });
|
|
68
|
-
try {
|
|
69
|
-
const response = yield fetch(`${this.baseUrl}/api/ingestion/init`, {
|
|
70
|
-
method: 'POST',
|
|
71
|
-
headers: {
|
|
72
|
-
'Content-Type': 'application/json',
|
|
73
|
-
'Authorization': `Bearer ${this.apiKey}`,
|
|
74
|
-
'Referer': referrer || ''
|
|
75
|
-
},
|
|
76
|
-
body: JSON.stringify({
|
|
77
|
-
sessionId: sessionId,
|
|
78
|
-
endUserId: userId,
|
|
79
|
-
entryURL: entryURL,
|
|
80
|
-
referrer: referrer
|
|
81
|
-
})
|
|
82
|
-
});
|
|
83
|
-
console.log('API init response status:', response.status);
|
|
84
|
-
if (!response.ok) {
|
|
85
|
-
const errorText = yield response.text();
|
|
86
|
-
console.error('API init failed:', response.status, errorText);
|
|
87
|
-
throw new Error(`Failed to initialize ingestion: ${response.statusText} - ${errorText}`);
|
|
88
|
-
}
|
|
89
|
-
const responseJson = yield response.json();
|
|
90
|
-
console.log('API init success:', responseJson);
|
|
91
|
-
return {
|
|
92
|
-
sessionId: responseJson.sessionId,
|
|
93
|
-
endUserId: responseJson.endUserId
|
|
94
|
-
};
|
|
95
|
-
}
|
|
96
|
-
catch (error) {
|
|
97
|
-
console.error('API init error:', error);
|
|
98
|
-
throw error;
|
|
99
|
-
}
|
|
100
|
-
});
|
|
101
|
-
}
|
|
102
|
-
sendEvents(events, sessionId, userId) {
|
|
103
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
104
|
-
const response = yield fetch(`${this.baseUrl}/api/ingestion/events`, {
|
|
105
|
-
method: 'POST',
|
|
106
|
-
headers: {
|
|
107
|
-
'Content-Type': 'application/json',
|
|
108
|
-
'Authorization': `Bearer ${this.apiKey}`
|
|
109
|
-
},
|
|
110
|
-
body: JSON.stringify({
|
|
111
|
-
sessionId,
|
|
112
|
-
events: events,
|
|
113
|
-
endUserId: userId
|
|
114
|
-
})
|
|
115
|
-
});
|
|
116
|
-
if (!response.ok) {
|
|
117
|
-
throw new Error(`Failed to send events: ${response.statusText}`);
|
|
118
|
-
}
|
|
119
|
-
});
|
|
120
|
-
}
|
|
121
|
-
sendEventsChunked(events, sessionId, userId) {
|
|
122
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
123
|
-
try {
|
|
124
|
-
const results = [];
|
|
125
|
-
let currentChunk = [];
|
|
126
|
-
for (const event of events) {
|
|
127
|
-
if (isChunkSizeExceeded(currentChunk, event, sessionId)) {
|
|
128
|
-
// If current chunk is not empty, send it first
|
|
129
|
-
if (currentChunk.length > 0) {
|
|
130
|
-
const response = yield fetch(`${this.baseUrl}/api/ingestion/events`, {
|
|
131
|
-
method: 'POST',
|
|
132
|
-
headers: {
|
|
133
|
-
'Content-Type': 'application/json',
|
|
134
|
-
'Authorization': `Bearer ${this.apiKey}`
|
|
135
|
-
},
|
|
136
|
-
body: JSON.stringify({
|
|
137
|
-
sessionId,
|
|
138
|
-
events: currentChunk,
|
|
139
|
-
endUserId: userId
|
|
140
|
-
})
|
|
141
|
-
});
|
|
142
|
-
if (!response.ok) {
|
|
143
|
-
throw new Error(`Failed to send events: ${response.statusText}`);
|
|
144
|
-
}
|
|
145
|
-
results.push(yield response.json());
|
|
146
|
-
currentChunk = [];
|
|
147
|
-
}
|
|
148
|
-
// Handle large events by splitting them
|
|
149
|
-
const splitEvents = splitLargeEvent(event, sessionId);
|
|
150
|
-
// Start new chunk with the split events
|
|
151
|
-
currentChunk = splitEvents;
|
|
152
|
-
}
|
|
153
|
-
else {
|
|
154
|
-
// Add event to current chunk
|
|
155
|
-
currentChunk.push(event);
|
|
156
|
-
}
|
|
157
|
-
}
|
|
158
|
-
// Send any remaining events
|
|
159
|
-
if (currentChunk.length > 0) {
|
|
160
|
-
const response = yield fetch(`${this.baseUrl}/api/ingestion/events`, {
|
|
161
|
-
method: 'POST',
|
|
162
|
-
headers: {
|
|
163
|
-
'Content-Type': 'application/json',
|
|
164
|
-
'Authorization': `Bearer ${this.apiKey}`
|
|
165
|
-
},
|
|
166
|
-
body: JSON.stringify({
|
|
167
|
-
sessionId,
|
|
168
|
-
events: currentChunk,
|
|
169
|
-
endUserId: userId
|
|
170
|
-
})
|
|
171
|
-
});
|
|
172
|
-
if (!response.ok) {
|
|
173
|
-
throw new Error(`Failed to send events: ${response.statusText}`);
|
|
174
|
-
}
|
|
175
|
-
results.push(yield response.json());
|
|
176
|
-
}
|
|
177
|
-
return results.flat();
|
|
178
|
-
}
|
|
179
|
-
catch (error) {
|
|
180
|
-
logError('Error sending events:', error);
|
|
181
|
-
throw error;
|
|
182
|
-
}
|
|
183
|
-
});
|
|
184
|
-
}
|
|
185
|
-
sendUserData(userId, userData, sessionId) {
|
|
186
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
187
|
-
try {
|
|
188
|
-
const response = yield fetch(`${this.baseUrl}/api/ingestion/user`, {
|
|
189
|
-
method: 'POST',
|
|
190
|
-
headers: {
|
|
191
|
-
'Content-Type': 'application/json',
|
|
192
|
-
'Authorization': `Bearer ${this.apiKey}`
|
|
193
|
-
},
|
|
194
|
-
body: JSON.stringify({
|
|
195
|
-
userId: userId,
|
|
196
|
-
userAttributes: userData,
|
|
197
|
-
sessionId: sessionId
|
|
198
|
-
})
|
|
199
|
-
});
|
|
200
|
-
if (!response.ok) {
|
|
201
|
-
throw new Error(`Failed to send user data: ${response.statusText} with API key: ${this.apiKey}`);
|
|
202
|
-
}
|
|
203
|
-
return yield response.json();
|
|
204
|
-
}
|
|
205
|
-
catch (error) {
|
|
206
|
-
logError('Error sending user data:', error);
|
|
207
|
-
throw error;
|
|
208
|
-
}
|
|
209
|
-
});
|
|
210
|
-
}
|
|
211
|
-
sendUserAuth(userId, userData, sessionId, authFields) {
|
|
212
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
213
|
-
try {
|
|
214
|
-
const response = yield fetch(`${this.baseUrl}/api/ingestion/user/auth`, {
|
|
215
|
-
method: 'POST',
|
|
216
|
-
headers: {
|
|
217
|
-
'Content-Type': 'application/json',
|
|
218
|
-
'Authorization': `Bearer ${this.apiKey}`
|
|
219
|
-
},
|
|
220
|
-
body: JSON.stringify({
|
|
221
|
-
userId: userId,
|
|
222
|
-
userAttributes: userData,
|
|
223
|
-
sessionId: sessionId,
|
|
224
|
-
authFields: authFields
|
|
225
|
-
})
|
|
226
|
-
});
|
|
227
|
-
if (!response.ok) {
|
|
228
|
-
throw new Error(`Failed to authenticate user: ${response.statusText} with API key: ${this.apiKey}`);
|
|
229
|
-
}
|
|
230
|
-
// Returns: { success: true, message: '...', userId: '...' }
|
|
231
|
-
return yield response.json();
|
|
232
|
-
}
|
|
233
|
-
catch (error) {
|
|
234
|
-
logError('Error authenticating user:', error);
|
|
235
|
-
throw error;
|
|
236
|
-
}
|
|
237
|
-
});
|
|
238
|
-
}
|
|
239
|
-
sendBeaconEvents(events, sessionId) {
|
|
240
|
-
// Create JSON payload that matches the server's expected format
|
|
241
|
-
const payload = {
|
|
242
|
-
sessionId: sessionId,
|
|
243
|
-
events: events,
|
|
244
|
-
endUserId: null, // Beacon doesn't have user context
|
|
245
|
-
apiKey: this.apiKey // Include API key in body since beacon can't use headers
|
|
246
|
-
};
|
|
247
|
-
// Convert to Blob for sendBeacon
|
|
248
|
-
const blob = new Blob([JSON.stringify(payload)], {
|
|
249
|
-
type: 'application/json'
|
|
250
|
-
});
|
|
251
|
-
const success = navigator.sendBeacon(`${this.baseUrl}/api/ingestion/events`, blob);
|
|
252
|
-
return success;
|
|
253
|
-
}
|
|
254
|
-
sendCustomEvent(sessionId, eventName, eventProperties) {
|
|
255
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
256
|
-
logInfo('[SDK] Sending custom event', { sessionId, eventName, eventProperties });
|
|
257
|
-
try {
|
|
258
|
-
const response = yield fetch(`${this.baseUrl}/api/ingestion/customEvent`, {
|
|
259
|
-
method: 'POST',
|
|
260
|
-
headers: {
|
|
261
|
-
'Content-Type': 'application/json',
|
|
262
|
-
'Authorization': `Bearer ${this.apiKey}`
|
|
263
|
-
},
|
|
264
|
-
body: JSON.stringify({
|
|
265
|
-
sessionId: sessionId,
|
|
266
|
-
eventName: eventName,
|
|
267
|
-
eventProperties: eventProperties || {}
|
|
268
|
-
})
|
|
269
|
-
});
|
|
270
|
-
logInfo('[SDK] Custom event response', { status: response.status, statusText: response.statusText });
|
|
271
|
-
if (!response.ok) {
|
|
272
|
-
const errorText = yield response.text();
|
|
273
|
-
logError('[SDK] Failed to send custom event', { status: response.status, statusText: response.statusText, errorText });
|
|
274
|
-
throw new Error(`Failed to send custom event: ${response.status} ${response.statusText} - ${errorText}`);
|
|
275
|
-
}
|
|
276
|
-
const json = yield response.json();
|
|
277
|
-
logDebug('[SDK] Custom event success', json);
|
|
278
|
-
return json;
|
|
279
|
-
}
|
|
280
|
-
catch (error) {
|
|
281
|
-
logError('[SDK] Error sending custom event', error, { sessionId, eventName, eventProperties });
|
|
282
|
-
throw error;
|
|
283
|
-
}
|
|
284
|
-
});
|
|
285
|
-
}
|
|
286
|
-
sendCustomEventBatch(sessionId, events) {
|
|
287
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
288
|
-
try {
|
|
289
|
-
const response = yield fetch(`${this.baseUrl}/api/ingestion/customEvent/batch`, {
|
|
290
|
-
method: 'POST',
|
|
291
|
-
headers: {
|
|
292
|
-
'Content-Type': 'application/json',
|
|
293
|
-
'Authorization': `Bearer ${this.apiKey}`
|
|
294
|
-
},
|
|
295
|
-
body: JSON.stringify({
|
|
296
|
-
sessionId: sessionId,
|
|
297
|
-
events: events
|
|
298
|
-
})
|
|
299
|
-
});
|
|
300
|
-
if (!response.ok) {
|
|
301
|
-
throw new Error(`Failed to send custom event batch: ${response.statusText}`);
|
|
302
|
-
}
|
|
303
|
-
return yield response.json();
|
|
304
|
-
}
|
|
305
|
-
catch (error) {
|
|
306
|
-
logError('Error sending custom event batch:', error);
|
|
307
|
-
throw error;
|
|
308
|
-
}
|
|
309
|
-
});
|
|
310
|
-
}
|
|
311
|
-
}
|
|
312
|
-
//# sourceMappingURL=api.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"api.js","sourceRoot":"","sources":["../src/api.ts"],"names":[],"mappings":"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"}
|
package/.rollup.cache/Users/hudsonch/Desktop/HumanBehaviorInternship/humanbehavior-js/dist/index.js
DELETED
|
@@ -1,19 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Main entry point for the HumanBehavior SDK
|
|
3
|
-
*/
|
|
4
|
-
import { HumanBehaviorTracker } from './tracker';
|
|
5
|
-
// Export everything from the tracker module
|
|
6
|
-
export * from './tracker';
|
|
7
|
-
// Export everything from the API module
|
|
8
|
-
export * from './api';
|
|
9
|
-
// Export redaction functionality
|
|
10
|
-
export * from './redact';
|
|
11
|
-
// Export logger functionality
|
|
12
|
-
export * from './utils/logger';
|
|
13
|
-
// Export the tracker as the default export
|
|
14
|
-
export default HumanBehaviorTracker;
|
|
15
|
-
// For UMD builds, expose the main class globally
|
|
16
|
-
if (typeof window !== 'undefined') {
|
|
17
|
-
window.HumanBehaviorTracker = HumanBehaviorTracker;
|
|
18
|
-
}
|
|
19
|
-
//# sourceMappingURL=index.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,oBAAoB,EAAE,MAAM,WAAW,CAAC;AAEjD,4CAA4C;AAC5C,cAAc,WAAW,CAAC;AAE1B,wCAAwC;AACxC,cAAc,OAAO,CAAC;AAEtB,iCAAiC;AACjC,cAAc,UAAU,CAAC;AAEzB,8BAA8B;AAC9B,cAAc,gBAAgB,CAAC;AAE/B,2CAA2C;AAC3C,eAAe,oBAAoB,CAAC;AAEpC,iDAAiD;AACjD,IAAI,OAAO,MAAM,KAAK,WAAW,EAAE,CAAC;IACjC,MAAc,CAAC,oBAAoB,GAAG,oBAAoB,CAAC;AAC9D,CAAC"}
|
|
@@ -1,222 +0,0 @@
|
|
|
1
|
-
import { __awaiter } from "tslib";
|
|
2
|
-
import { Fragment as _Fragment, jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
3
|
-
import { useEffect, useState, createContext, useContext, useCallback, useMemo, useRef } from "react";
|
|
4
|
-
import { HumanBehaviorTracker } from "..";
|
|
5
|
-
import { logError, logWarn, logDebug } from "../utils/logger";
|
|
6
|
-
// Check if we're in a browser environment
|
|
7
|
-
const isBrowser = () => typeof window !== 'undefined';
|
|
8
|
-
// Default context to prevent unnecessary re-renders
|
|
9
|
-
const defaultContext = {
|
|
10
|
-
humanBehavior: null,
|
|
11
|
-
queueEvent: (event) => {
|
|
12
|
-
// In server-side, just no-op
|
|
13
|
-
if (typeof window === 'undefined') {
|
|
14
|
-
return;
|
|
15
|
-
}
|
|
16
|
-
logWarn('HumanBehavior not initialized yet, event queued:', event);
|
|
17
|
-
}
|
|
18
|
-
};
|
|
19
|
-
const HumanBehaviorContext = createContext(null);
|
|
20
|
-
export const HumanBehaviorProvider = ({ apiKey, client, children, options }) => {
|
|
21
|
-
const [humanBehavior, setHumanBehavior] = useState(client || null);
|
|
22
|
-
const [eventQueue, setEventQueue] = useState([]);
|
|
23
|
-
const [isMounted, setIsMounted] = useState(false);
|
|
24
|
-
const [isInitialized, setIsInitialized] = useState(false);
|
|
25
|
-
// Use refs to avoid dependency issues in useEffect
|
|
26
|
-
const apiKeyRef = useRef(apiKey);
|
|
27
|
-
const clientRef = useRef(client);
|
|
28
|
-
const eventQueueRef = useRef(eventQueue);
|
|
29
|
-
// Update refs when props change
|
|
30
|
-
useEffect(() => {
|
|
31
|
-
apiKeyRef.current = apiKey;
|
|
32
|
-
clientRef.current = client;
|
|
33
|
-
}, [apiKey, client]);
|
|
34
|
-
// Update eventQueue ref when queue changes
|
|
35
|
-
useEffect(() => {
|
|
36
|
-
eventQueueRef.current = eventQueue;
|
|
37
|
-
}, [eventQueue]);
|
|
38
|
-
// Memoized queueEvent function to prevent unnecessary re-renders
|
|
39
|
-
const queueEvent = useCallback((event) => {
|
|
40
|
-
setEventQueue(prev => [...prev, event]);
|
|
41
|
-
}, []);
|
|
42
|
-
// Handle mounting state
|
|
43
|
-
useEffect(() => {
|
|
44
|
-
setIsMounted(true);
|
|
45
|
-
}, []);
|
|
46
|
-
useEffect(() => {
|
|
47
|
-
var _a;
|
|
48
|
-
// Only run in browser
|
|
49
|
-
if (!(isBrowser())) {
|
|
50
|
-
return;
|
|
51
|
-
}
|
|
52
|
-
// Skip if not mounted yet (handles Next.js hydration)
|
|
53
|
-
if (!isMounted) {
|
|
54
|
-
return;
|
|
55
|
-
}
|
|
56
|
-
// If client is provided, use that
|
|
57
|
-
if (clientRef.current) {
|
|
58
|
-
setHumanBehavior(clientRef.current);
|
|
59
|
-
setIsInitialized(true);
|
|
60
|
-
return;
|
|
61
|
-
}
|
|
62
|
-
// If no client is provided, apiKey is required
|
|
63
|
-
if (!apiKeyRef.current || apiKeyRef.current.trim() === '') {
|
|
64
|
-
logError("An apiKey is required when no client is provided");
|
|
65
|
-
return;
|
|
66
|
-
}
|
|
67
|
-
if (humanBehavior !== null) {
|
|
68
|
-
return;
|
|
69
|
-
}
|
|
70
|
-
// Create new tracker instance with the validated apiKey
|
|
71
|
-
const tracker = new HumanBehaviorTracker(apiKeyRef.current.trim(), 'https://ingest.humanbehavior.co');
|
|
72
|
-
setHumanBehavior(tracker);
|
|
73
|
-
// Wait for initialization to complete
|
|
74
|
-
(_a = tracker.initializationPromise) === null || _a === void 0 ? void 0 : _a.then(() => __awaiter(void 0, void 0, void 0, function* () {
|
|
75
|
-
yield tracker.start();
|
|
76
|
-
setIsInitialized(true);
|
|
77
|
-
// Process any queued events
|
|
78
|
-
const currentQueue = eventQueueRef.current;
|
|
79
|
-
if (currentQueue.length > 0) {
|
|
80
|
-
for (const event of currentQueue) {
|
|
81
|
-
if (event.type === 'identify') {
|
|
82
|
-
logDebug('Processing queued identify event', event.userProperties);
|
|
83
|
-
try {
|
|
84
|
-
yield tracker.addUserInfo(event.userProperties);
|
|
85
|
-
}
|
|
86
|
-
catch (error) {
|
|
87
|
-
logError('Failed to process queued user info:', error);
|
|
88
|
-
}
|
|
89
|
-
}
|
|
90
|
-
else {
|
|
91
|
-
tracker.addEvent(event);
|
|
92
|
-
}
|
|
93
|
-
}
|
|
94
|
-
setEventQueue([]); // Clear the queue
|
|
95
|
-
}
|
|
96
|
-
})).catch(error => {
|
|
97
|
-
logError('Failed to initialize HumanBehaviorTracker:', error);
|
|
98
|
-
});
|
|
99
|
-
}, [isMounted, humanBehavior]); // Removed apiKey, client, eventQueue from dependencies
|
|
100
|
-
// Memoized context value to prevent unnecessary re-renders
|
|
101
|
-
const contextValue = useMemo(() => {
|
|
102
|
-
if (!isMounted) {
|
|
103
|
-
return null;
|
|
104
|
-
}
|
|
105
|
-
if (!isInitialized) {
|
|
106
|
-
return null;
|
|
107
|
-
}
|
|
108
|
-
return humanBehavior;
|
|
109
|
-
}, [isMounted, isInitialized, humanBehavior]);
|
|
110
|
-
// If not in browser, render children without context
|
|
111
|
-
if (!(isBrowser())) {
|
|
112
|
-
return _jsx(_Fragment, { children: children });
|
|
113
|
-
}
|
|
114
|
-
return (_jsxs(HumanBehaviorContext.Provider, { value: contextValue, children: [_jsx(HumanBehaviorPageView, {}), children] }));
|
|
115
|
-
};
|
|
116
|
-
// No-op implementation for server-side
|
|
117
|
-
const serverSideImplementation = {
|
|
118
|
-
addEvent: () => { },
|
|
119
|
-
addUserInfo: () => __awaiter(void 0, void 0, void 0, function* () { }),
|
|
120
|
-
start: () => { },
|
|
121
|
-
stop: () => { },
|
|
122
|
-
viewLogs: () => { },
|
|
123
|
-
};
|
|
124
|
-
// Memoized queuing implementation for initialization period
|
|
125
|
-
const createQueuingImplementation = (queueEvent) => ({
|
|
126
|
-
addEvent: (event) => {
|
|
127
|
-
queueEvent(event);
|
|
128
|
-
},
|
|
129
|
-
addUserInfo: (userProperties) => __awaiter(void 0, void 0, void 0, function* () {
|
|
130
|
-
queueEvent({
|
|
131
|
-
type: 'identify',
|
|
132
|
-
userProperties,
|
|
133
|
-
});
|
|
134
|
-
}),
|
|
135
|
-
start: () => {
|
|
136
|
-
// Start will be called automatically when initialized
|
|
137
|
-
},
|
|
138
|
-
stop: () => {
|
|
139
|
-
// Stop is a no-op when not initialized
|
|
140
|
-
},
|
|
141
|
-
viewLogs: () => {
|
|
142
|
-
logWarn('Logs are not available until HumanBehaviorTracker is initialized');
|
|
143
|
-
}
|
|
144
|
-
});
|
|
145
|
-
export const useHumanBehavior = () => {
|
|
146
|
-
const tracker = useContext(HumanBehaviorContext);
|
|
147
|
-
if (!tracker) {
|
|
148
|
-
throw new Error('useHumanBehavior must be used within a HumanBehaviorProvider');
|
|
149
|
-
}
|
|
150
|
-
return tracker;
|
|
151
|
-
};
|
|
152
|
-
// Custom hook for managing redaction fields dynamically
|
|
153
|
-
export const useRedaction = () => {
|
|
154
|
-
const tracker = useHumanBehavior();
|
|
155
|
-
const setRedactedFields = useCallback((fields) => {
|
|
156
|
-
tracker.setRedactedFields(fields);
|
|
157
|
-
}, [tracker]);
|
|
158
|
-
const isRedactionActive = useCallback(() => {
|
|
159
|
-
return tracker.isRedactionActive();
|
|
160
|
-
}, [tracker]);
|
|
161
|
-
const getRedactedFields = useCallback(() => {
|
|
162
|
-
return tracker.getRedactedFields();
|
|
163
|
-
}, [tracker]);
|
|
164
|
-
return {
|
|
165
|
-
setRedactedFields,
|
|
166
|
-
isRedactionActive,
|
|
167
|
-
getRedactedFields
|
|
168
|
-
};
|
|
169
|
-
};
|
|
170
|
-
// Custom hook for managing user info
|
|
171
|
-
export const useUserTracking = () => {
|
|
172
|
-
const tracker = useHumanBehavior();
|
|
173
|
-
const addUserInfo = useCallback((userId, userProperties) => __awaiter(void 0, void 0, void 0, function* () {
|
|
174
|
-
try {
|
|
175
|
-
yield tracker.addUserInfo({ userId, userProperties });
|
|
176
|
-
return { success: true };
|
|
177
|
-
}
|
|
178
|
-
catch (error) {
|
|
179
|
-
logError('Failed to add user info:', error);
|
|
180
|
-
return { success: false, error };
|
|
181
|
-
}
|
|
182
|
-
}), [tracker]);
|
|
183
|
-
return {
|
|
184
|
-
addUserInfo
|
|
185
|
-
};
|
|
186
|
-
};
|
|
187
|
-
// Automatic page tracking component (similar to PostHog's PostHogPageView)
|
|
188
|
-
function HumanBehaviorPageView() {
|
|
189
|
-
const tracker = useContext(HumanBehaviorContext);
|
|
190
|
-
useEffect(() => {
|
|
191
|
-
if (tracker && typeof window !== 'undefined') {
|
|
192
|
-
// Track initial page load
|
|
193
|
-
tracker.trackPageView();
|
|
194
|
-
// Listen for route changes (for SPAs)
|
|
195
|
-
const handleRouteChange = () => {
|
|
196
|
-
tracker.trackPageView();
|
|
197
|
-
};
|
|
198
|
-
// Listen for popstate (back/forward navigation)
|
|
199
|
-
window.addEventListener('popstate', handleRouteChange);
|
|
200
|
-
// Listen for pushstate/replacestate (programmatic navigation)
|
|
201
|
-
const originalPushState = history.pushState;
|
|
202
|
-
const originalReplaceState = history.replaceState;
|
|
203
|
-
history.pushState = function (...args) {
|
|
204
|
-
originalPushState.apply(this, args);
|
|
205
|
-
handleRouteChange();
|
|
206
|
-
};
|
|
207
|
-
history.replaceState = function (...args) {
|
|
208
|
-
originalReplaceState.apply(this, args);
|
|
209
|
-
handleRouteChange();
|
|
210
|
-
};
|
|
211
|
-
return () => {
|
|
212
|
-
window.removeEventListener('popstate', handleRouteChange);
|
|
213
|
-
history.pushState = originalPushState;
|
|
214
|
-
history.replaceState = originalReplaceState;
|
|
215
|
-
};
|
|
216
|
-
}
|
|
217
|
-
}, [tracker]);
|
|
218
|
-
return null;
|
|
219
|
-
}
|
|
220
|
-
// Export the tracker class for direct use
|
|
221
|
-
export { HumanBehaviorTracker };
|
|
222
|
-
//# sourceMappingURL=index.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/react/index.tsx"],"names":[],"mappings":"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"}
|