UNPKG

next

Version:

The React Framework

122 lines (120 loc) 5.15 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); 0 && (module.exports = { PagesDevOverlayBridge: null, register: null }); function _export(target, all) { for(var name in all)Object.defineProperty(target, name, { enumerable: true, get: all[name] }); } _export(exports, { PagesDevOverlayBridge: function() { return PagesDevOverlayBridge; }, register: function() { return register; } }); const _interop_require_default = require("@swc/helpers/_/_interop_require_default"); const _jsxruntime = require("react/jsx-runtime"); const _react = /*#__PURE__*/ _interop_require_default._(require("react")); const _nextdevtools = require("next/dist/compiled/next-devtools"); const _hydrationerrorstate = require("./hydration-error-state"); const _router = require("../../../client/router"); const _stitchederror = require("../app/errors/stitched-error"); const _onrecoverableerror = require("../../../client/react-client-callbacks/on-recoverable-error"); const _pagesdevoverlayerrorboundary = require("./pages-dev-overlay-error-boundary"); const _forwardlogs = require("../app/forward-logs"); const usePagesDevOverlayBridge = ()=>{ _react.default.useInsertionEffect(()=>{ // NDT uses a different React instance so it's not technically a state update // scheduled from useInsertionEffect. (0, _nextdevtools.renderPagesDevOverlay)(_stitchederror.getComponentStack, _stitchederror.getOwnerStack, _hydrationerrorstate.getSquashedHydrationErrorDetails, _onrecoverableerror.isRecoverableError); }, []); _react.default.useEffect(()=>{ const { handleStaticIndicator } = require('../../../client/dev/hot-reloader/pages/hot-reloader-pages'); _router.Router.events.on('routeChangeComplete', handleStaticIndicator); return function() { _router.Router.events.off('routeChangeComplete', handleStaticIndicator); }; }, []); }; function PagesDevOverlayBridge(param) { let { children } = param; usePagesDevOverlayBridge(); return /*#__PURE__*/ (0, _jsxruntime.jsx)(_pagesdevoverlayerrorboundary.PagesDevOverlayErrorBoundary, { children: children }); } let isRegistered = false; function handleError(error) { if (!error || !(error instanceof Error) || typeof error.stack !== 'string') { // A non-error was thrown, we don't have anything to show. :-( return; } (0, _hydrationerrorstate.attachHydrationErrorState)(error); // Skip ModuleBuildError and ModuleNotFoundError, as it will be sent through onBuildError callback. // This is to avoid same error as different type showing up on client to cause flashing. if (error.name !== 'ModuleBuildError' && error.name !== 'ModuleNotFoundError') { _nextdevtools.dispatcher.onUnhandledError(error); } } let origConsoleError = console.error; function nextJsHandleConsoleError() { for(var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++){ args[_key] = arguments[_key]; } // See https://github.com/facebook/react/blob/d50323eb845c5fde0d720cae888bf35dedd05506/packages/react-reconciler/src/ReactFiberErrorLogger.js#L78 const maybeError = process.env.NODE_ENV !== 'production' ? args[1] : args[0]; (0, _hydrationerrorstate.storeHydrationErrorStateFromConsoleArgs)(...args); // TODO: Surfaces non-errors logged via `console.error`. handleError(maybeError); if (_forwardlogs.isTerminalLoggingEnabled) { (0, _forwardlogs.forwardErrorLog)(args); } origConsoleError.apply(window.console, args); } function onUnhandledError(event) { const error = event == null ? void 0 : event.error; handleError(error); if (error && _forwardlogs.isTerminalLoggingEnabled) { (0, _forwardlogs.forwardUnhandledError)(error); } } function onUnhandledRejection(ev) { const reason = ev == null ? void 0 : ev.reason; if (!reason || !(reason instanceof Error) || typeof reason.stack !== 'string') { // A non-error was thrown, we don't have anything to show. :-( return; } _nextdevtools.dispatcher.onUnhandledRejection(reason); if (_forwardlogs.isTerminalLoggingEnabled) { (0, _forwardlogs.logUnhandledRejection)(reason); } } function register() { if (isRegistered) { return; } isRegistered = true; try { Error.stackTraceLimit = 50; } catch (e) {} if (_forwardlogs.isTerminalLoggingEnabled) { (0, _forwardlogs.initializeDebugLogForwarding)('pages'); } window.addEventListener('error', onUnhandledError); window.addEventListener('unhandledrejection', onUnhandledRejection); window.console.error = nextJsHandleConsoleError; } if ((typeof exports.default === 'function' || (typeof exports.default === 'object' && exports.default !== null)) && typeof exports.default.__esModule === 'undefined') { Object.defineProperty(exports.default, '__esModule', { value: true }); Object.assign(exports.default, exports); module.exports = exports.default; } //# sourceMappingURL=pages-dev-overlay-setup.js.map