UNPKG

@critters/next

Version:

Secure bug reporting library for Next.js applications

168 lines (167 loc) 9.95 kB
"use strict"; var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { if (k2 === undefined) k2 = k; var desc = Object.getOwnPropertyDescriptor(m, k); if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { desc = { enumerable: true, get: function() { return m[k]; } }; } Object.defineProperty(o, k2, desc); }) : (function(o, m, k, k2) { if (k2 === undefined) k2 = k; o[k2] = m[k]; })); var __exportStar = (this && this.__exportStar) || function(m, exports) { for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p); }; var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } return new (P || (P = Promise))(function (resolve, reject) { function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } step((generator = generator.apply(thisArg, _arguments || [])).next()); }); }; Object.defineProperty(exports, "__esModule", { value: true }); exports.withAppErrorReporting = exports.withPageErrorReporting = exports.withErrorReporting = exports.useErrorReporting = exports.withErrorBoundary = exports.ErrorBoundary = exports.getBrowserData = exports.getUserInteractions = exports.getNetworkRequests = exports.getConsoleLogs = exports.clearCapturedData = exports.stopAllCollectors = exports.startAllCollectors = exports.startUserInteractionCapture = exports.stopNetworkCapture = exports.startNetworkCapture = exports.stopConsoleCapture = exports.startConsoleCapture = exports.debugLog = exports.getTimestamp = exports.getBrowserInfo = exports.isServer = exports.isBrowser = exports.sanitizeData = exports.safeStringify = exports.formatError = exports.generateSignature = exports.Critters = exports.BugTrackerConfig = void 0; exports.startCritters = startCritters; exports.initBugTracker = initBugTracker; exports.reportBug = reportBug; exports.catch_ = catch_; exports.capture = capture; // Export types __exportStar(require("./types"), exports); // Export configuration var config_1 = require("./config"); Object.defineProperty(exports, "BugTrackerConfig", { enumerable: true, get: function () { return config_1.BugTrackerConfig; } }); // Export reporter var reporter_1 = require("./reporter"); Object.defineProperty(exports, "Critters", { enumerable: true, get: function () { return reporter_1.Critters; } }); // Export utilities var utils_1 = require("./utils"); Object.defineProperty(exports, "generateSignature", { enumerable: true, get: function () { return utils_1.generateSignature; } }); Object.defineProperty(exports, "formatError", { enumerable: true, get: function () { return utils_1.formatError; } }); Object.defineProperty(exports, "safeStringify", { enumerable: true, get: function () { return utils_1.safeStringify; } }); Object.defineProperty(exports, "sanitizeData", { enumerable: true, get: function () { return utils_1.sanitizeData; } }); Object.defineProperty(exports, "isBrowser", { enumerable: true, get: function () { return utils_1.isBrowser; } }); Object.defineProperty(exports, "isServer", { enumerable: true, get: function () { return utils_1.isServer; } }); Object.defineProperty(exports, "getBrowserInfo", { enumerable: true, get: function () { return utils_1.getBrowserInfo; } }); Object.defineProperty(exports, "getTimestamp", { enumerable: true, get: function () { return utils_1.getTimestamp; } }); Object.defineProperty(exports, "debugLog", { enumerable: true, get: function () { return utils_1.debugLog; } }); // Export collectors var collectors_1 = require("./collectors"); Object.defineProperty(exports, "startConsoleCapture", { enumerable: true, get: function () { return collectors_1.startConsoleCapture; } }); Object.defineProperty(exports, "stopConsoleCapture", { enumerable: true, get: function () { return collectors_1.stopConsoleCapture; } }); Object.defineProperty(exports, "startNetworkCapture", { enumerable: true, get: function () { return collectors_1.startNetworkCapture; } }); Object.defineProperty(exports, "stopNetworkCapture", { enumerable: true, get: function () { return collectors_1.stopNetworkCapture; } }); Object.defineProperty(exports, "startUserInteractionCapture", { enumerable: true, get: function () { return collectors_1.startUserInteractionCapture; } }); Object.defineProperty(exports, "startAllCollectors", { enumerable: true, get: function () { return collectors_1.startAllCollectors; } }); Object.defineProperty(exports, "stopAllCollectors", { enumerable: true, get: function () { return collectors_1.stopAllCollectors; } }); Object.defineProperty(exports, "clearCapturedData", { enumerable: true, get: function () { return collectors_1.clearCapturedData; } }); Object.defineProperty(exports, "getConsoleLogs", { enumerable: true, get: function () { return collectors_1.getConsoleLogs; } }); Object.defineProperty(exports, "getNetworkRequests", { enumerable: true, get: function () { return collectors_1.getNetworkRequests; } }); Object.defineProperty(exports, "getUserInteractions", { enumerable: true, get: function () { return collectors_1.getUserInteractions; } }); Object.defineProperty(exports, "getBrowserData", { enumerable: true, get: function () { return collectors_1.getBrowserData; } }); // Export React components var components_1 = require("./components"); Object.defineProperty(exports, "ErrorBoundary", { enumerable: true, get: function () { return components_1.ErrorBoundary; } }); Object.defineProperty(exports, "withErrorBoundary", { enumerable: true, get: function () { return components_1.withErrorBoundary; } }); Object.defineProperty(exports, "useErrorReporting", { enumerable: true, get: function () { return components_1.useErrorReporting; } }); // Export Next.js middleware var middleware_1 = require("./middleware"); Object.defineProperty(exports, "withErrorReporting", { enumerable: true, get: function () { return middleware_1.withErrorReporting; } }); Object.defineProperty(exports, "withPageErrorReporting", { enumerable: true, get: function () { return middleware_1.withPageErrorReporting; } }); Object.defineProperty(exports, "withAppErrorReporting", { enumerable: true, get: function () { return middleware_1.withAppErrorReporting; } }); // Import necessary functions for initialization const config_2 = require("./config"); const utils_2 = require("./utils"); const collectors_2 = require("./collectors"); const reporter_2 = require("./reporter"); /** * Initialize the bug tracker with configuration * @param config - Configuration options for the bug tracker * @description * This function initializes the bug tracker with the provided configuration. * It sets up the global error handlers and starts data collectors in browser environments. * * @example * ```typescript * // Import the startCritters function * import { startCritters } from '@critters/next'; * * // Initialize at the entry point of your application * startCritters({ * apiKey: process.env.NEXT_PUBLIC_BUG_TRACKER_API_KEY!, * // Optional additional configuration * environment: process.env.NODE_ENV, * debug: process.env.NODE_ENV !== "production", * }); * ``` */ function startCritters(config) { // Initialize the configuration const bugTrackerConfig = config_2.BugTrackerConfig.init(config); // Start collectors if in browser environment if ((0, utils_2.isBrowser)() && bugTrackerConfig.isEnabled()) { (0, collectors_2.startAllCollectors)(); // Set up global error handlers setupGlobalErrorHandlers(); } } /** * @deprecated Use startCritters() instead. This function will be removed in a future version. */ function initBugTracker(config) { console.warn("initBugTracker() is deprecated and will be removed in a future version. Please use startCritters() instead."); startCritters(config); } /** * Set up global error handlers for client-side */ function setupGlobalErrorHandlers() { const config = config_2.BugTrackerConfig.getInstance(); if (!config.isEnabled()) return; // Handle unhandled promise rejections window.addEventListener("unhandledrejection", (event) => { const error = event.reason; reporter_2.Critters.getInstance().catch(error, { type: "unhandledRejection", message: (error === null || error === void 0 ? void 0 : error.message) || "Unhandled Promise Rejection", }); }); // Handle uncaught exceptions window.addEventListener("error", (event) => { const { message, filename, lineno, colno, error } = event; reporter_2.Critters.getInstance().catch(error || new Error(message), { type: "uncaughtException", location: `${filename}:${lineno}:${colno}`, }); }); } /** * Report a bug to the configured endpoint * @deprecated Use catch() instead */ function reportBug(error, metadata) { return __awaiter(this, void 0, void 0, function* () { return reporter_2.Critters.getInstance().catch(error, metadata); }); } /** * Catch and report an error to the configured endpoint * @deprecated Use capture() instead */ function catch_(error, metadata) { return __awaiter(this, void 0, void 0, function* () { return reporter_2.Critters.getInstance().catch(error, metadata); }); } /** * Catch and report an error to the configured endpoint */ function capture(error, metadata) { return __awaiter(this, void 0, void 0, function* () { return reporter_2.Critters.getInstance().catch(error, metadata); }); }