heartbeat-monitor/node_modules/next/dist/esm/client/react-client-callbacks/app-router.js
Matt Bruce bed1169443 Initial commit: Heartbeat Monitor dashboard
- Full-featured monitoring dashboard for local web apps
- Real-time status tracking with uptime percentages
- Visual sparklines for status history
- Add/Edit/Delete apps dynamically
- Categories and color coding
- Auto-refresh every 30 seconds
- API endpoints for apps and status management
2026-02-18 11:16:01 -06:00

69 lines
5.0 KiB
JavaScript

// This file is only used in app router due to the specific error state handling.
import { getReactStitchedError } from '../components/react-dev-overlay/internal/helpers/stitched-error';
import { handleClientError } from '../components/react-dev-overlay/internal/helpers/use-error-handler';
import { isNextRouterError } from '../components/is-next-router-error';
import { isBailoutToCSRError } from '../../shared/lib/lazy-dynamic/bailout-to-csr';
import { reportGlobalError } from './report-global-error';
import { originConsoleError } from '../components/globals/intercept-console-error';
export const onCaughtError = (err, errorInfo)=>{
// Skip certain custom errors which are not expected to be reported on client
if (isBailoutToCSRError(err) || isNextRouterError(err)) return;
if (process.env.NODE_ENV !== 'production') {
var _errorInfo_errorBoundary, _errorInfo_componentStack;
const errorBoundaryComponent = errorInfo == null ? void 0 : (_errorInfo_errorBoundary = errorInfo.errorBoundary) == null ? void 0 : _errorInfo_errorBoundary.constructor;
const errorBoundaryName = (// read react component displayName
errorBoundaryComponent == null ? void 0 : errorBoundaryComponent.displayName) || (errorBoundaryComponent == null ? void 0 : errorBoundaryComponent.name) || 'Unknown';
const componentThatErroredFrame = errorInfo == null ? void 0 : (_errorInfo_componentStack = errorInfo.componentStack) == null ? void 0 : _errorInfo_componentStack.split('\n')[1];
var // regex to match the function name in the stack trace
// example 1: at Page (http://localhost:3000/_next/static/chunks/pages/index.js?ts=1631600000000:2:1)
// example 2: Page@http://localhost:3000/_next/static/chunks/pages/index.js?ts=1631600000000:2:1
_componentThatErroredFrame_match;
// Match chrome or safari stack trace
const matches = (_componentThatErroredFrame_match = componentThatErroredFrame == null ? void 0 : componentThatErroredFrame.match(/\s+at (\w+)\s+|(\w+)@/)) != null ? _componentThatErroredFrame_match : [];
const componentThatErroredName = matches[1] || matches[2] || 'Unknown';
// Create error location with errored component and error boundary, to match the behavior of default React onCaughtError handler.
const errorBoundaryMessage = "It was handled by the <" + errorBoundaryName + "> error boundary.";
const componentErrorMessage = componentThatErroredName ? "The above error occurred in the <" + componentThatErroredName + "> component." : "The above error occurred in one of your components.";
const errorLocation = componentErrorMessage + " " + errorBoundaryMessage;
const stitchedError = getReactStitchedError(err);
// TODO: change to passing down errorInfo later
// In development mode, pass along the component stack to the error
if (errorInfo.componentStack) {
;
stitchedError._componentStack = errorInfo.componentStack;
}
// Log and report the error with location but without modifying the error stack
originConsoleError('%o\n\n%s', err, errorLocation);
handleClientError(stitchedError, []);
} else {
originConsoleError(err);
}
};
export const onUncaughtError = (err, errorInfo)=>{
// Skip certain custom errors which are not expected to be reported on client
if (isBailoutToCSRError(err) || isNextRouterError(err)) return;
if (process.env.NODE_ENV !== 'production') {
var _errorInfo_componentStack;
const componentThatErroredFrame = errorInfo == null ? void 0 : (_errorInfo_componentStack = errorInfo.componentStack) == null ? void 0 : _errorInfo_componentStack.split('\n')[1];
var _componentThatErroredFrame_match;
// Match chrome or safari stack trace
const matches = (_componentThatErroredFrame_match = componentThatErroredFrame == null ? void 0 : componentThatErroredFrame.match(/\s+at (\w+)\s+|(\w+)@/)) != null ? _componentThatErroredFrame_match : [];
const componentThatErroredName = matches[1] || matches[2] || 'Unknown';
// Create error location with errored component and error boundary, to match the behavior of default React onCaughtError handler.
const errorLocation = componentThatErroredName ? "The above error occurred in the <" + componentThatErroredName + "> component." : "The above error occurred in one of your components.";
const stitchedError = getReactStitchedError(err);
// TODO: change to passing down errorInfo later
// In development mode, pass along the component stack to the error
if (errorInfo.componentStack) {
;
stitchedError._componentStack = errorInfo.componentStack;
}
// Log and report the error with location but without modifying the error stack
originConsoleError('%o\n\n%s', err, errorLocation);
reportGlobalError(stitchedError);
} else {
reportGlobalError(err);
}
};
//# sourceMappingURL=app-router.js.map