@bentolabs/sdk 1.2.2 → 2.0.2

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/index.d.ts CHANGED
@@ -1,5 +1,24 @@
1
- import { generateSelector } from 'rrweb';
2
- export { generateSelector };
1
+ import { generateSelector, generateSelectorFromElement, generateSelectorFromHTML } from 'rrweb';
2
+ export { generateSelector, generateSelectorFromElement, generateSelectorFromHTML };
3
+ interface NetworkOptions {
4
+ skipUrls?: string[];
5
+ captureHeaders?: boolean;
6
+ captureBody?: boolean;
7
+ maxBodySize?: number;
8
+ sampleRate?: number;
9
+ }
10
+ interface StorageOptions {
11
+ localStorage?: boolean;
12
+ sessionStorage?: boolean;
13
+ cookies?: boolean;
14
+ sensitiveKeys?: string[];
15
+ }
16
+ interface ConsoleOptions {
17
+ levels?: ('log' | 'warn' | 'error' | 'info' | 'debug')[];
18
+ maxLogs?: number;
19
+ maxPayloadSize?: number;
20
+ captureStackTrace?: boolean;
21
+ }
3
22
  interface SDKConfig {
4
23
  apiKey: string;
5
24
  endpoint: string;
@@ -9,6 +28,22 @@ interface SDKConfig {
9
28
  enableRecording: boolean;
10
29
  maxRetries: number;
11
30
  baseRetryDelay: number;
31
+ enableCompression: boolean;
32
+ persistence: 'localStorage' | 'cookie' | 'localStorage+cookie' | 'memory' | 'none';
33
+ respect_dnt: boolean;
34
+ autocapture: boolean;
35
+ capture_pageview: boolean;
36
+ capture_pageleave: boolean;
37
+ capture_network: boolean;
38
+ networkOptions: NetworkOptions;
39
+ capture_storage: boolean;
40
+ storageOptions: StorageOptions;
41
+ capture_console: boolean;
42
+ consoleOptions: ConsoleOptions;
43
+ bootstrap?: {
44
+ distinctID?: string;
45
+ isIdentifiedID?: boolean;
46
+ };
12
47
  }
13
48
  interface SDKOptions {
14
49
  endpoint?: string;
@@ -18,6 +53,64 @@ interface SDKOptions {
18
53
  enableRecording?: boolean;
19
54
  maxRetries?: number;
20
55
  baseRetryDelay?: number;
56
+ enableCompression?: boolean;
57
+ persistence?: 'localStorage' | 'cookie' | 'localStorage+cookie' | 'memory' | 'none';
58
+ respect_dnt?: boolean;
59
+ autocapture?: boolean;
60
+ capture_pageview?: boolean;
61
+ capture_pageleave?: boolean;
62
+ capture_network?: boolean;
63
+ networkOptions?: NetworkOptions;
64
+ capture_storage?: boolean;
65
+ storageOptions?: StorageOptions;
66
+ capture_console?: boolean;
67
+ consoleOptions?: ConsoleOptions;
68
+ bootstrap?: {
69
+ distinctID?: string;
70
+ isIdentifiedID?: boolean;
71
+ };
72
+ }
73
+ interface UserProperties {
74
+ [key: string]: string | number | boolean | null | undefined;
75
+ }
76
+ interface NetworkLog {
77
+ url: string;
78
+ method: string;
79
+ status: number;
80
+ duration: number;
81
+ responseSize: number;
82
+ initiator: 'fetch' | 'xhr';
83
+ error?: string;
84
+ timestamp: number;
85
+ }
86
+ interface StorageLog {
87
+ storageType: 'localStorage' | 'sessionStorage' | 'cookie';
88
+ operation: 'get' | 'set' | 'remove' | 'clear';
89
+ key: string;
90
+ valueType?: string;
91
+ timestamp: number;
92
+ }
93
+ interface ConsoleLog {
94
+ level: 'log' | 'warn' | 'error' | 'info' | 'debug';
95
+ payload: string[];
96
+ trace: string[];
97
+ timestamp: number;
98
+ }
99
+ declare class PeopleAPI {
100
+ private sdk;
101
+ constructor(sdk: BentoLabsSDK);
102
+ /**
103
+ * Set properties on the current user
104
+ */
105
+ set(properties: UserProperties): void;
106
+ /**
107
+ * Set properties on the current user only if they haven't been set already
108
+ */
109
+ setOnce(properties: UserProperties): void;
110
+ /**
111
+ * Remove properties from the current user
112
+ */
113
+ unset(propertyNames: string[]): void;
21
114
  }
22
115
  export declare class BentoLabsSDK {
23
116
  private config;
@@ -26,46 +119,108 @@ export declare class BentoLabsSDK {
26
119
  private isRecording;
27
120
  private batchTimer;
28
121
  private retryTimer;
29
- private stopRecording;
122
+ private isSending;
123
+ private stopRecordingFn;
124
+ private distinctId;
125
+ private identity;
126
+ private superProperties;
127
+ private persistence;
128
+ private initialized;
129
+ private optedOut;
130
+ private networkMonitor;
131
+ private storageMonitor;
132
+ private consoleMonitor;
133
+ people: PeopleAPI;
134
+ private autocaptureCleanup;
30
135
  constructor();
31
136
  /**
32
137
  * Initialize the BentoLabs SDK
33
- * @param apiKey - Your API key for authentication
34
- * @param options - Optional configuration options
35
138
  */
36
139
  init(apiKey: string, options?: SDKOptions): void;
37
140
  /**
38
- * Generate a unique session ID with 'sess_' prefix
141
+ * Identify a user with a distinct ID and optional properties
39
142
  */
40
- private generateSessionId;
143
+ identify(distinctId: string, properties?: UserProperties): void;
41
144
  /**
42
- * Generate a simple UUID v4
145
+ * Reset the user to an anonymous state
43
146
  */
44
- private generateUUID;
147
+ reset(): void;
45
148
  /**
46
- * Start recording user interactions
149
+ * Get the current distinct ID
47
150
  */
48
- private startRecording;
151
+ getDistinctId(): string;
49
152
  /**
50
- * Start batching events for transmission
153
+ * Register super properties to be sent with every event
51
154
  */
52
- private startBatching;
155
+ register(properties: Record<string, unknown>): void;
53
156
  /**
54
- * Add an event to the events array
157
+ * Register super properties only if they haven't been set
55
158
  */
56
- private addEvent;
159
+ registerOnce(properties: Record<string, unknown>): void;
57
160
  /**
58
- * Send batched events to the API with exponential backoff retry
161
+ * Remove a super property
59
162
  */
60
- private sendBatch;
163
+ unregister(propertyName: string): void;
61
164
  /**
62
- * Schedule retry attempts for failed events
165
+ * Capture an event
63
166
  */
64
- private scheduleRetry;
167
+ capture(eventName: string, properties?: Record<string, unknown>): void;
65
168
  /**
66
- * Internal method to stop recording without logging (used during re-init)
169
+ * Track a custom event (legacy method, delegates to capture)
67
170
  */
68
- private stopRecordingInternal;
171
+ trackCustomEvent(eventName: string, data?: Record<string, unknown>): void;
172
+ /**
173
+ * Opt out of tracking
174
+ */
175
+ opt_out_capturing(): void;
176
+ /**
177
+ * Opt back into tracking
178
+ */
179
+ opt_in_capturing(): void;
180
+ /**
181
+ * Check if user has opted out
182
+ */
183
+ has_opted_out_capturing(): boolean;
184
+ /**
185
+ * Check if user has opted in (not opted out)
186
+ */
187
+ has_opted_in_capturing(): boolean;
188
+ /**
189
+ * Start network request monitoring
190
+ */
191
+ startNetworkCapture(): void;
192
+ /**
193
+ * Stop network request monitoring
194
+ */
195
+ stopNetworkCapture(): void;
196
+ /**
197
+ * Start storage monitoring
198
+ */
199
+ startStorageCapture(): void;
200
+ /**
201
+ * Stop storage monitoring
202
+ */
203
+ stopStorageCapture(): void;
204
+ /**
205
+ * Start console monitoring
206
+ */
207
+ startConsoleCapture(): void;
208
+ /**
209
+ * Stop console monitoring
210
+ */
211
+ stopConsoleCapture(): void;
212
+ /**
213
+ * Get network logs
214
+ */
215
+ getNetworkLogs(): NetworkLog[];
216
+ /**
217
+ * Get storage logs
218
+ */
219
+ getStorageLogs(): StorageLog[];
220
+ /**
221
+ * Get console logs
222
+ */
223
+ getConsoleLogs(): ConsoleLog[];
69
224
  /**
70
225
  * Stop recording and clean up resources
71
226
  */
@@ -92,12 +247,19 @@ export declare class BentoLabsSDK {
92
247
  * Manually trigger a batch send
93
248
  */
94
249
  flushEvents(): Promise<void>;
95
- /**
96
- * Track a custom event with custom data
97
- * @param eventName - Name of the custom event
98
- * @param data - Custom event data (will be JSON stringified)
99
- */
100
- trackCustomEvent(eventName: string, data?: Record<string, any>): void;
250
+ private generateSessionId;
251
+ private generateAnonymousId;
252
+ private generateUUID;
253
+ private isDNTEnabled;
254
+ private loadPersistedState;
255
+ private startRecording;
256
+ private startBatching;
257
+ private addEvent;
258
+ private sendBatch;
259
+ private scheduleRetry;
260
+ private stopRecordingInternal;
261
+ private setupAutocapture;
262
+ private handlePageLeave;
101
263
  }
102
264
  declare const sdk: BentoLabsSDK;
103
265
  export default sdk;