@thisbefine/analytics 0.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/LICENSE +21 -0
- package/README.md +403 -0
- package/dist/core/analytics.d.ts +123 -0
- package/dist/core/analytics.d.ts.map +1 -0
- package/dist/core/analytics.js +334 -0
- package/dist/core/analytics.js.map +1 -0
- package/dist/core/errors.d.ts +94 -0
- package/dist/core/errors.d.ts.map +1 -0
- package/dist/core/errors.js +420 -0
- package/dist/core/errors.js.map +1 -0
- package/dist/core/logger.d.ts +28 -0
- package/dist/core/logger.d.ts.map +1 -0
- package/dist/core/logger.js +36 -0
- package/dist/core/logger.js.map +1 -0
- package/dist/core/logging.d.ts +12 -0
- package/dist/core/logging.d.ts.map +1 -0
- package/dist/core/logging.js +33 -0
- package/dist/core/logging.js.map +1 -0
- package/dist/core/privacy.d.ts +53 -0
- package/dist/core/privacy.d.ts.map +1 -0
- package/dist/core/privacy.js +94 -0
- package/dist/core/privacy.js.map +1 -0
- package/dist/core/queue.d.ts +59 -0
- package/dist/core/queue.d.ts.map +1 -0
- package/dist/core/queue.js +263 -0
- package/dist/core/queue.js.map +1 -0
- package/dist/core/session.d.ts +90 -0
- package/dist/core/session.d.ts.map +1 -0
- package/dist/core/session.js +246 -0
- package/dist/core/session.js.map +1 -0
- package/dist/core/storage.d.ts +64 -0
- package/dist/core/storage.d.ts.map +1 -0
- package/dist/core/storage.js +242 -0
- package/dist/core/storage.js.map +1 -0
- package/dist/core/types.d.ts +298 -0
- package/dist/core/types.d.ts.map +1 -0
- package/dist/core/types.js +34 -0
- package/dist/core/types.js.map +1 -0
- package/dist/core/validation.d.ts +11 -0
- package/dist/core/validation.d.ts.map +1 -0
- package/dist/core/validation.js +82 -0
- package/dist/core/validation.js.map +1 -0
- package/dist/core/version.d.ts +2 -0
- package/dist/core/version.d.ts.map +1 -0
- package/dist/core/version.js +4 -0
- package/dist/core/version.js.map +1 -0
- package/dist/index.d.ts +45 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +41 -0
- package/dist/index.js.map +1 -0
- package/dist/next/analytics.d.ts +59 -0
- package/dist/next/analytics.d.ts.map +1 -0
- package/dist/next/analytics.js +87 -0
- package/dist/next/analytics.js.map +1 -0
- package/dist/next.d.ts +46 -0
- package/dist/next.d.ts.map +1 -0
- package/dist/next.js +44 -0
- package/dist/next.js.map +1 -0
- package/dist/react/analytics.d.ts +51 -0
- package/dist/react/analytics.d.ts.map +1 -0
- package/dist/react/analytics.js +63 -0
- package/dist/react/analytics.js.map +1 -0
- package/dist/react/bug-report-widget.d.ts +21 -0
- package/dist/react/bug-report-widget.d.ts.map +1 -0
- package/dist/react/bug-report-widget.js +34 -0
- package/dist/react/bug-report-widget.js.map +1 -0
- package/dist/react/hooks.d.ts +141 -0
- package/dist/react/hooks.d.ts.map +1 -0
- package/dist/react/hooks.js +186 -0
- package/dist/react/hooks.js.map +1 -0
- package/dist/react.d.ts +42 -0
- package/dist/react.d.ts.map +1 -0
- package/dist/react.js +39 -0
- package/dist/react.js.map +1 -0
- package/dist/widget/bug-report.d.ts +16 -0
- package/dist/widget/bug-report.d.ts.map +1 -0
- package/dist/widget/bug-report.js +416 -0
- package/dist/widget/bug-report.js.map +1 -0
- package/package.json +107 -0
|
@@ -0,0 +1,334 @@
|
|
|
1
|
+
import { ErrorCapture } from "./errors";
|
|
2
|
+
import { createLogger } from "./logger";
|
|
3
|
+
import { log as sendLog } from "./logging";
|
|
4
|
+
import { Privacy } from "./privacy";
|
|
5
|
+
import { Queue } from "./queue";
|
|
6
|
+
import { Session } from "./session";
|
|
7
|
+
import { Storage } from "./storage";
|
|
8
|
+
import { DEFAULT_CONFIG, LIBRARY_INFO } from "./types";
|
|
9
|
+
import { validateAccountId, validateEventName, validateProperties, validateUserId, } from "./validation";
|
|
10
|
+
/**
|
|
11
|
+
* Main Analytics class - the primary entry point for the SDK
|
|
12
|
+
*
|
|
13
|
+
* Usage:
|
|
14
|
+
* ```typescript
|
|
15
|
+
* const analytics = createAnalytics({ apiKey: 'tbf_xxx' });
|
|
16
|
+
*
|
|
17
|
+
* analytics.track('button_clicked', { buttonId: 'signup' });
|
|
18
|
+
* analytics.identify('user_123', { email: 'user@example.com' });
|
|
19
|
+
* analytics.page('/dashboard');
|
|
20
|
+
* ```
|
|
21
|
+
*/
|
|
22
|
+
export class AnalyticsImpl {
|
|
23
|
+
constructor(config) {
|
|
24
|
+
this.errorCapture = null;
|
|
25
|
+
this.initialized = false;
|
|
26
|
+
this.config = this.resolveConfig(config);
|
|
27
|
+
this.logger = createLogger("Analytics", this.config.debug);
|
|
28
|
+
this.storage = new Storage(this.config.cookieDomain);
|
|
29
|
+
this.session = new Session(this.storage, this.config.sessionTimeout, this.config.debug);
|
|
30
|
+
this.privacy = new Privacy(this.storage, this.config.respectDNT, this.config.debug);
|
|
31
|
+
this.queue = new Queue(this.config);
|
|
32
|
+
if (this.config.errors?.enabled !== false) {
|
|
33
|
+
this.errorCapture = new ErrorCapture(this.config, this.session, this.config.errors);
|
|
34
|
+
this.errorCapture.install();
|
|
35
|
+
}
|
|
36
|
+
this.initialized = true;
|
|
37
|
+
this.logger.log("Analytics initialized", {
|
|
38
|
+
host: this.config.host,
|
|
39
|
+
debug: this.config.debug,
|
|
40
|
+
storageType: this.storage.getStorageType(),
|
|
41
|
+
errorCapture: this.errorCapture !== null,
|
|
42
|
+
});
|
|
43
|
+
}
|
|
44
|
+
/**
|
|
45
|
+
* Resolve configuration with defaults
|
|
46
|
+
*/
|
|
47
|
+
resolveConfig(config) {
|
|
48
|
+
return {
|
|
49
|
+
apiKey: config.apiKey,
|
|
50
|
+
host: config.host ?? DEFAULT_CONFIG.host,
|
|
51
|
+
flushAt: config.flushAt ?? DEFAULT_CONFIG.flushAt,
|
|
52
|
+
flushInterval: config.flushInterval ?? DEFAULT_CONFIG.flushInterval,
|
|
53
|
+
sessionTimeout: config.sessionTimeout ?? DEFAULT_CONFIG.sessionTimeout,
|
|
54
|
+
cookieDomain: config.cookieDomain,
|
|
55
|
+
debug: config.debug ?? DEFAULT_CONFIG.debug,
|
|
56
|
+
respectDNT: config.respectDNT ?? DEFAULT_CONFIG.respectDNT,
|
|
57
|
+
maxRetries: config.maxRetries ?? DEFAULT_CONFIG.maxRetries,
|
|
58
|
+
errors: config.errors,
|
|
59
|
+
};
|
|
60
|
+
}
|
|
61
|
+
/**
|
|
62
|
+
* Track a custom event
|
|
63
|
+
*/
|
|
64
|
+
track(event, properties) {
|
|
65
|
+
if (!this.shouldTrack())
|
|
66
|
+
return;
|
|
67
|
+
const eventValidation = validateEventName(event);
|
|
68
|
+
if (!eventValidation.valid) {
|
|
69
|
+
this.logger.warn("Invalid event:", eventValidation.error);
|
|
70
|
+
return;
|
|
71
|
+
}
|
|
72
|
+
const propsValidation = validateProperties(properties);
|
|
73
|
+
if (!propsValidation.valid) {
|
|
74
|
+
this.logger.warn("Invalid properties:", propsValidation.error);
|
|
75
|
+
return;
|
|
76
|
+
}
|
|
77
|
+
const trackEvent = {
|
|
78
|
+
type: "track",
|
|
79
|
+
event,
|
|
80
|
+
properties,
|
|
81
|
+
timestamp: new Date().toISOString(),
|
|
82
|
+
anonymousId: this.session.getAnonymousId(),
|
|
83
|
+
userId: this.session.getUserId(),
|
|
84
|
+
sessionId: this.session.getSessionId(),
|
|
85
|
+
accountId: this.session.getAccountId(),
|
|
86
|
+
context: this.getContext(),
|
|
87
|
+
};
|
|
88
|
+
this.queue.push(trackEvent);
|
|
89
|
+
this.session.updateLastActivity();
|
|
90
|
+
}
|
|
91
|
+
/**
|
|
92
|
+
* Identify a user with traits
|
|
93
|
+
*/
|
|
94
|
+
identify(userId, traits) {
|
|
95
|
+
if (!this.shouldTrack())
|
|
96
|
+
return;
|
|
97
|
+
const userIdValidation = validateUserId(userId);
|
|
98
|
+
if (!userIdValidation.valid) {
|
|
99
|
+
this.logger.warn("Invalid userId:", userIdValidation.error);
|
|
100
|
+
return;
|
|
101
|
+
}
|
|
102
|
+
const traitsValidation = validateProperties(traits);
|
|
103
|
+
if (!traitsValidation.valid) {
|
|
104
|
+
this.logger.warn("Invalid traits:", traitsValidation.error);
|
|
105
|
+
return;
|
|
106
|
+
}
|
|
107
|
+
this.session.setUserId(userId);
|
|
108
|
+
if (traits) {
|
|
109
|
+
this.session.setUserTraits(traits);
|
|
110
|
+
}
|
|
111
|
+
const identifyEvent = {
|
|
112
|
+
type: "identify",
|
|
113
|
+
userId,
|
|
114
|
+
traits,
|
|
115
|
+
timestamp: new Date().toISOString(),
|
|
116
|
+
anonymousId: this.session.getAnonymousId(),
|
|
117
|
+
sessionId: this.session.getSessionId(),
|
|
118
|
+
accountId: this.session.getAccountId(),
|
|
119
|
+
context: this.getContext(),
|
|
120
|
+
};
|
|
121
|
+
this.queue.push(identifyEvent);
|
|
122
|
+
this.session.updateLastActivity();
|
|
123
|
+
}
|
|
124
|
+
/**
|
|
125
|
+
* Track a page view
|
|
126
|
+
*/
|
|
127
|
+
page(name, properties) {
|
|
128
|
+
if (!this.shouldTrack())
|
|
129
|
+
return;
|
|
130
|
+
const propsValidation = validateProperties(properties);
|
|
131
|
+
if (!propsValidation.valid) {
|
|
132
|
+
this.logger.warn("Invalid properties:", propsValidation.error);
|
|
133
|
+
return;
|
|
134
|
+
}
|
|
135
|
+
const url = typeof window !== "undefined" ? window.location.href : "";
|
|
136
|
+
const referrer = typeof document !== "undefined" ? document.referrer : undefined;
|
|
137
|
+
const pageEvent = {
|
|
138
|
+
type: "page",
|
|
139
|
+
name,
|
|
140
|
+
properties,
|
|
141
|
+
url,
|
|
142
|
+
referrer,
|
|
143
|
+
timestamp: new Date().toISOString(),
|
|
144
|
+
anonymousId: this.session.getAnonymousId(),
|
|
145
|
+
userId: this.session.getUserId(),
|
|
146
|
+
sessionId: this.session.getSessionId(),
|
|
147
|
+
accountId: this.session.getAccountId(),
|
|
148
|
+
context: this.getContext(),
|
|
149
|
+
};
|
|
150
|
+
this.queue.push(pageEvent);
|
|
151
|
+
this.session.updateLastActivity();
|
|
152
|
+
}
|
|
153
|
+
/**
|
|
154
|
+
* Associate the current user with an account/company
|
|
155
|
+
*/
|
|
156
|
+
group(accountId, traits) {
|
|
157
|
+
if (!this.shouldTrack())
|
|
158
|
+
return;
|
|
159
|
+
const accountIdValidation = validateAccountId(accountId);
|
|
160
|
+
if (!accountIdValidation.valid) {
|
|
161
|
+
this.logger.warn("Invalid accountId:", accountIdValidation.error);
|
|
162
|
+
return;
|
|
163
|
+
}
|
|
164
|
+
const traitsValidation = validateProperties(traits);
|
|
165
|
+
if (!traitsValidation.valid) {
|
|
166
|
+
this.logger.warn("Invalid traits:", traitsValidation.error);
|
|
167
|
+
return;
|
|
168
|
+
}
|
|
169
|
+
this.session.setAccountId(accountId);
|
|
170
|
+
if (traits) {
|
|
171
|
+
this.session.setAccountTraits(traits);
|
|
172
|
+
}
|
|
173
|
+
const groupEvent = {
|
|
174
|
+
type: "group",
|
|
175
|
+
accountId,
|
|
176
|
+
traits,
|
|
177
|
+
timestamp: new Date().toISOString(),
|
|
178
|
+
anonymousId: this.session.getAnonymousId(),
|
|
179
|
+
userId: this.session.getUserId(),
|
|
180
|
+
sessionId: this.session.getSessionId(),
|
|
181
|
+
context: this.getContext(),
|
|
182
|
+
};
|
|
183
|
+
this.queue.push(groupEvent);
|
|
184
|
+
this.session.updateLastActivity();
|
|
185
|
+
}
|
|
186
|
+
/**
|
|
187
|
+
* Capture an exception and send to error tracking
|
|
188
|
+
*/
|
|
189
|
+
captureException(error, context) {
|
|
190
|
+
if (!this.shouldTrack())
|
|
191
|
+
return;
|
|
192
|
+
this.errorCapture?.captureException(error, context);
|
|
193
|
+
}
|
|
194
|
+
/**
|
|
195
|
+
* Capture a message as an error event
|
|
196
|
+
*/
|
|
197
|
+
captureMessage(message, level, context) {
|
|
198
|
+
if (!this.shouldTrack())
|
|
199
|
+
return;
|
|
200
|
+
this.errorCapture?.captureMessage(message, level, context);
|
|
201
|
+
}
|
|
202
|
+
/**
|
|
203
|
+
* Add a breadcrumb for error context
|
|
204
|
+
*/
|
|
205
|
+
addBreadcrumb(breadcrumb) {
|
|
206
|
+
this.errorCapture?.addBreadcrumb(breadcrumb);
|
|
207
|
+
}
|
|
208
|
+
/**
|
|
209
|
+
* Send a structured log event
|
|
210
|
+
*/
|
|
211
|
+
log(message, level, metadata) {
|
|
212
|
+
if (!this.shouldTrack())
|
|
213
|
+
return;
|
|
214
|
+
sendLog(this, message, level, metadata);
|
|
215
|
+
}
|
|
216
|
+
/**
|
|
217
|
+
* Reset the current user session (call on logout)
|
|
218
|
+
*/
|
|
219
|
+
reset() {
|
|
220
|
+
this.queue.flush();
|
|
221
|
+
this.session.reset();
|
|
222
|
+
this.errorCapture?.clearBreadcrumbs();
|
|
223
|
+
this.logger.log("Session reset");
|
|
224
|
+
}
|
|
225
|
+
/**
|
|
226
|
+
* Manually flush the event queue
|
|
227
|
+
*/
|
|
228
|
+
async flush() {
|
|
229
|
+
await this.queue.flush();
|
|
230
|
+
}
|
|
231
|
+
/**
|
|
232
|
+
* Opt out of tracking
|
|
233
|
+
*/
|
|
234
|
+
optOut() {
|
|
235
|
+
this.privacy.optOut();
|
|
236
|
+
}
|
|
237
|
+
/**
|
|
238
|
+
* Opt back in to tracking
|
|
239
|
+
*/
|
|
240
|
+
optIn() {
|
|
241
|
+
this.privacy.optIn();
|
|
242
|
+
}
|
|
243
|
+
/**
|
|
244
|
+
* Check if user has opted out
|
|
245
|
+
*/
|
|
246
|
+
isOptedOut() {
|
|
247
|
+
return this.privacy.isOptedOut();
|
|
248
|
+
}
|
|
249
|
+
/**
|
|
250
|
+
* Get current user state
|
|
251
|
+
*/
|
|
252
|
+
getUser() {
|
|
253
|
+
return this.session.getUserState();
|
|
254
|
+
}
|
|
255
|
+
/**
|
|
256
|
+
* Check if tracking should be allowed
|
|
257
|
+
*/
|
|
258
|
+
shouldTrack() {
|
|
259
|
+
if (!this.initialized) {
|
|
260
|
+
this.logger.log("Analytics not initialized, skipping event");
|
|
261
|
+
return false;
|
|
262
|
+
}
|
|
263
|
+
if (!this.privacy.shouldTrack()) {
|
|
264
|
+
return false;
|
|
265
|
+
}
|
|
266
|
+
return true;
|
|
267
|
+
}
|
|
268
|
+
/**
|
|
269
|
+
* Build event context
|
|
270
|
+
*/
|
|
271
|
+
getContext() {
|
|
272
|
+
const context = {
|
|
273
|
+
library: LIBRARY_INFO,
|
|
274
|
+
userAgent: typeof navigator !== "undefined" ? navigator.userAgent : "unknown",
|
|
275
|
+
locale: typeof navigator !== "undefined" ? navigator.language : "en",
|
|
276
|
+
timezone: typeof Intl !== "undefined"
|
|
277
|
+
? Intl.DateTimeFormat().resolvedOptions().timeZone
|
|
278
|
+
: "UTC",
|
|
279
|
+
};
|
|
280
|
+
if (typeof window !== "undefined" && window.screen) {
|
|
281
|
+
context.screen = {
|
|
282
|
+
width: window.screen.width,
|
|
283
|
+
height: window.screen.height,
|
|
284
|
+
};
|
|
285
|
+
}
|
|
286
|
+
if (typeof window !== "undefined") {
|
|
287
|
+
context.page = {
|
|
288
|
+
url: window.location.href,
|
|
289
|
+
path: window.location.pathname,
|
|
290
|
+
referrer: document.referrer,
|
|
291
|
+
title: document.title,
|
|
292
|
+
};
|
|
293
|
+
}
|
|
294
|
+
return context;
|
|
295
|
+
}
|
|
296
|
+
}
|
|
297
|
+
/**
|
|
298
|
+
* Create a new Analytics instance
|
|
299
|
+
*
|
|
300
|
+
* @param config - Analytics configuration
|
|
301
|
+
* @returns Analytics instance
|
|
302
|
+
*
|
|
303
|
+
* @example
|
|
304
|
+
* ```typescript
|
|
305
|
+
* const analytics = createAnalytics({
|
|
306
|
+
* apiKey: 'tbf_xxx',
|
|
307
|
+
* debug: process.env.NODE_ENV === 'development',
|
|
308
|
+
* });
|
|
309
|
+
*
|
|
310
|
+
* analytics.track('signup_completed', { plan: 'pro' });
|
|
311
|
+
* ```
|
|
312
|
+
*/
|
|
313
|
+
export const createAnalytics = (config) => {
|
|
314
|
+
return new AnalyticsImpl(config);
|
|
315
|
+
};
|
|
316
|
+
let globalInstance = null;
|
|
317
|
+
/**
|
|
318
|
+
* Get or create a global analytics instance (for script tag usage)
|
|
319
|
+
*/
|
|
320
|
+
export const getAnalytics = () => {
|
|
321
|
+
return globalInstance;
|
|
322
|
+
};
|
|
323
|
+
/**
|
|
324
|
+
* Initialize the global analytics instance
|
|
325
|
+
*/
|
|
326
|
+
export const initAnalytics = (config) => {
|
|
327
|
+
if (globalInstance) {
|
|
328
|
+
console.warn("[Thisbefine] Analytics already initialized");
|
|
329
|
+
return globalInstance;
|
|
330
|
+
}
|
|
331
|
+
globalInstance = createAnalytics(config);
|
|
332
|
+
return globalInstance;
|
|
333
|
+
};
|
|
334
|
+
//# sourceMappingURL=analytics.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"analytics.js","sourceRoot":"","sources":["../../src/core/analytics.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
import type { Session } from "./session";
|
|
2
|
+
import type { ResolvedConfig } from "./types";
|
|
3
|
+
export interface Breadcrumb {
|
|
4
|
+
type: "click" | "navigation" | "network" | "console" | "custom";
|
|
5
|
+
message: string;
|
|
6
|
+
timestamp: string;
|
|
7
|
+
data?: Record<string, unknown>;
|
|
8
|
+
}
|
|
9
|
+
export interface ErrorPayload {
|
|
10
|
+
message: string;
|
|
11
|
+
stack?: string;
|
|
12
|
+
type?: string;
|
|
13
|
+
level?: "error" | "fatal" | "warning";
|
|
14
|
+
fingerprint: string;
|
|
15
|
+
url?: string;
|
|
16
|
+
breadcrumbs?: Breadcrumb[];
|
|
17
|
+
tags?: Record<string, string>;
|
|
18
|
+
context?: Record<string, unknown>;
|
|
19
|
+
timestamp?: string;
|
|
20
|
+
anonymousId?: string;
|
|
21
|
+
userId?: string;
|
|
22
|
+
sessionId?: string;
|
|
23
|
+
}
|
|
24
|
+
export interface ErrorCaptureConfig {
|
|
25
|
+
/** Enable error capture. Default: true */
|
|
26
|
+
enabled?: boolean;
|
|
27
|
+
/** Capture console.error calls as breadcrumbs. Default: false */
|
|
28
|
+
captureConsoleErrors?: boolean;
|
|
29
|
+
/** Capture fetch/XHR failures as breadcrumbs. Default: false */
|
|
30
|
+
captureNetworkErrors?: boolean;
|
|
31
|
+
/** Max breadcrumbs to retain. Default: 25 */
|
|
32
|
+
maxBreadcrumbs?: number;
|
|
33
|
+
/** Modify or filter errors before sending. Return null to discard. */
|
|
34
|
+
beforeSend?: (payload: ErrorPayload) => ErrorPayload | null;
|
|
35
|
+
}
|
|
36
|
+
/**
|
|
37
|
+
* Error capture module for the analytics SDK.
|
|
38
|
+
*
|
|
39
|
+
* Captures unhandled exceptions, unhandled promise rejections,
|
|
40
|
+
* and records breadcrumbs (clicks, navigation, console, network).
|
|
41
|
+
*/
|
|
42
|
+
export declare class ErrorCapture {
|
|
43
|
+
private config;
|
|
44
|
+
private errorConfig;
|
|
45
|
+
private session;
|
|
46
|
+
private breadcrumbs;
|
|
47
|
+
private installed;
|
|
48
|
+
private logger;
|
|
49
|
+
private originalOnError;
|
|
50
|
+
private originalConsoleError;
|
|
51
|
+
private originalFetch;
|
|
52
|
+
private unhandledRejectionHandler;
|
|
53
|
+
private clickHandler;
|
|
54
|
+
private lastClickTarget;
|
|
55
|
+
private lastClickTime;
|
|
56
|
+
private originalPushState;
|
|
57
|
+
private originalReplaceState;
|
|
58
|
+
private popstateHandler;
|
|
59
|
+
constructor(config: ResolvedConfig, session: Session, errorConfig?: ErrorCaptureConfig);
|
|
60
|
+
/**
|
|
61
|
+
* Install global error handlers and breadcrumb collectors
|
|
62
|
+
*/
|
|
63
|
+
install(): void;
|
|
64
|
+
/**
|
|
65
|
+
* Remove all handlers and restore originals
|
|
66
|
+
*/
|
|
67
|
+
uninstall(): void;
|
|
68
|
+
/**
|
|
69
|
+
* Add a breadcrumb manually
|
|
70
|
+
*/
|
|
71
|
+
addBreadcrumb(breadcrumb: Omit<Breadcrumb, "timestamp">): void;
|
|
72
|
+
/**
|
|
73
|
+
* Clear all breadcrumbs
|
|
74
|
+
*/
|
|
75
|
+
clearBreadcrumbs(): void;
|
|
76
|
+
/**
|
|
77
|
+
* Capture an exception and send it to the API
|
|
78
|
+
*/
|
|
79
|
+
captureException(error: Error, context?: Record<string, unknown>): void;
|
|
80
|
+
/**
|
|
81
|
+
* Capture a message as an error event
|
|
82
|
+
*/
|
|
83
|
+
captureMessage(message: string, level?: "error" | "fatal" | "warning", context?: Record<string, unknown>): void;
|
|
84
|
+
private installErrorHandler;
|
|
85
|
+
private installUnhandledRejectionHandler;
|
|
86
|
+
private installClickBreadcrumbs;
|
|
87
|
+
private installNavigationBreadcrumbs;
|
|
88
|
+
private installConsoleBreadcrumbs;
|
|
89
|
+
private installNetworkBreadcrumbs;
|
|
90
|
+
private pushBreadcrumb;
|
|
91
|
+
private sendError;
|
|
92
|
+
private postError;
|
|
93
|
+
}
|
|
94
|
+
//# sourceMappingURL=errors.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../../src/core/errors.ts"],"names":[],"mappings":"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"}
|