UNPKG

vite-plugin-react-server

Version:
52 lines (49 loc) 6.05 kB
/** * vite-plugin-react-server * Copyright (c) Nico Brinkkemper * MIT License */ import { createLogger } from 'vite'; import { toError } from './toError.js'; import { getNodeEnv } from '../config/getNodeEnv.js'; import { logError } from './logError.js'; import { PANIC_SYMBOL } from './shouldPanic.js'; let errRepeat = 0; let lastError = null; const handleError = function _handleError(options) { const { error, errorInfo, logger = createLogger(), mode = getNodeEnv(), panicThreshold = "none", critical = false, log = false } = options; if (errorInfo != null) { const errInfo = new Error(`Digest: ${errorInfo.digest ?? "unknown"}`); errInfo.stack = errorInfo.componentStack ?? void 0; errInfo.name = "ErrorInfo"; if (log) logError(errInfo, logger, mode); } const err = toError(error, errorInfo ?? void 0); if (panicThreshold === "all_errors" || critical && panicThreshold === "critical_errors") { err[PANIC_SYMBOL] = true; return err; } if (log) { if (lastError?.message === error?.message && lastError?.stack === error?.stack) { errRepeat++; const repeatedFrom = new Error("Error repeated", { cause: err }); repeatedFrom.stack = err.stack; logger.error(`${err.message} (${errRepeat})`, { error: repeatedFrom }); } else { errRepeat = 0; lastError = error; logError(err, logger, mode); } } return null; }; export { handleError }; //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGFuZGxlRXJyb3IuanMiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3BsdWdpbi9lcnJvci9oYW5kbGVFcnJvci50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBjcmVhdGVMb2dnZXIgfSBmcm9tIFwidml0ZVwiO1xuaW1wb3J0IHsgdG9FcnJvciB9IGZyb20gXCIuL3RvRXJyb3IuanNcIjtcbmltcG9ydCB7IGdldE5vZGVFbnYgfSBmcm9tIFwiLi4vY29uZmlnL2dldE5vZGVFbnYuanNcIjtcbmltcG9ydCB7IGxvZ0Vycm9yIH0gZnJvbSBcIi4vbG9nRXJyb3IuanNcIjtcbmltcG9ydCB7IFBBTklDX1NZTUJPTCB9IGZyb20gXCIuL3Nob3VsZFBhbmljLmpzXCI7XG5pbXBvcnQgdHlwZSB7IEhhbmRsZUVycm9yRm4gfSBmcm9tIFwiLi90eXBlcy5qc1wiO1xuXG5sZXQgZXJyUmVwZWF0ID0gMDtcbmxldCBsYXN0RXJyb3I6IEVycm9yIHwgbnVsbCA9IG51bGw7XG4vKipcbiAqIFNpbXBsaWZpZWQgZXJyb3IgaGFuZGxpbmcgZnVuY3Rpb24gdGhhdDpcbiAqIC0gRm9ybWF0cyBhbmQgbG9ncyBlcnJvcnNcbiAqIC0gSGFuZGxlcyBwYW5pYyB0aHJlc2hvbGRzXG4gKiAtIFJldHVybnMgZXJyb3IgdG8gdGhyb3cgb3IgbnVsbCB0byBjb250aW51ZVxuICovXG5leHBvcnQgY29uc3QgaGFuZGxlRXJyb3I6IEhhbmRsZUVycm9yRm4gPSBmdW5jdGlvbiBfaGFuZGxlRXJyb3IoXG4gIG9wdGlvbnNcbik6IEVycm9yIHwgbnVsbCB7XG4gIGNvbnN0IHtcbiAgICBlcnJvcixcbiAgICBlcnJvckluZm8sXG4gICAgbG9nZ2VyID0gY3JlYXRlTG9nZ2VyKCksXG4gICAgbW9kZSA9IGdldE5vZGVFbnYoKSxcbiAgICBwYW5pY1RocmVzaG9sZCA9IFwibm9uZVwiLFxuICAgIGNyaXRpY2FsID0gZmFsc2UsXG4gICAgbG9nID0gZmFsc2UsXG4gIH0gPSBvcHRpb25zO1xuICAvLyBIYW5kbGUgUmVhY3QgZXJyb3IgaW5mbyBpZiBwcmVzZW50XG4gIGlmIChlcnJvckluZm8gIT0gbnVsbCkge1xuICAgIGNvbnN0IGVyckluZm8gPSBuZXcgRXJyb3IoYERpZ2VzdDogJHsoZXJyb3JJbmZvIGFzIGFueSkuZGlnZXN0ID8/ICd1bmtub3duJ31gKTtcbiAgICBlcnJJbmZvLnN0YWNrID0gZXJyb3JJbmZvLmNvbXBvbmVudFN0YWNrID8/IHVuZGVmaW5lZDtcbiAgICBlcnJJbmZvLm5hbWUgPSBcIkVycm9ySW5mb1wiO1xuICAgIGlmIChsb2cpIGxvZ0Vycm9yKGVyckluZm8sIGxvZ2dlciwgbW9kZSk7XG4gIH1cblxuICBjb25zdCBlcnIgPSB0b0Vycm9yKGVycm9yLCBlcnJvckluZm8gPz8gdW5kZWZpbmVkKTtcblxuICAvLyBTaW1wbGUgcGFuaWMgdGhyZXNob2xkIGxvZ2ljXG4gIGlmIChwYW5pY1RocmVzaG9sZCA9PT0gXCJhbGxfZXJyb3JzXCIgfHwgKGNyaXRpY2FsICYmIHBhbmljVGhyZXNob2xkID09PSBcImNyaXRpY2FsX2Vycm9yc1wiKSkge1xuICAgIC8vIE1hcmsgZXJyb3IgZm9yIHBhbmljIGFuZCByZXR1cm4gaXQgdG8gYmUgdGhyb3duXG4gICAgKGVyciBhcyBhbnkpW1BBTklDX1NZTUJPTF0gPSB0cnVlO1xuICAgIHJldHVybiBlcnI7XG4gIH1cblxuICBpZiAobG9nKSB7XG4gICAgaWYgKFxuICAgICAgbGFzdEVycm9yPy5tZXNzYWdlID09PSAoZXJyb3IgYXMgRXJyb3IpPy5tZXNzYWdlICYmXG4gICAgICBsYXN0RXJyb3I/LnN0YWNrID09PSAoZXJyb3IgYXMgRXJyb3IpPy5zdGFja1xuICAgICkge1xuICAgICAgZXJyUmVwZWF0Kys7XG4gICAgICBjb25zdCByZXBlYXRlZEZyb20gPSBuZXcgRXJyb3IoXCJFcnJvciByZXBlYXRlZFwiLCB7IGNhdXNlOiBlcnIgfSk7XG4gICAgICByZXBlYXRlZEZyb20uc3RhY2sgPSBlcnIuc3RhY2s7XG4gICAgICBsb2dnZXIuZXJyb3IoYCR7ZXJyLm1lc3NhZ2V9ICgke2VyclJlcGVhdH0pYCwgeyBlcnJvcjogcmVwZWF0ZWRGcm9tIH0pO1xuICAgIH0gZWxzZSB7XG4gICAgICBlcnJSZXBlYXQgPSAwO1xuICAgICAgbGFzdEVycm9yID0gZXJyb3IgYXMgRXJyb3I7XG4gICAgICBsb2dFcnJvcihlcnIsIGxvZ2dlciwgbW9kZSk7XG4gICAgfVxuICB9XG5cbiAgLy8gRm9yIFwibm9uZVwiIG9yIG5vbi1jcml0aWNhbCBlcnJvcnMsIGNvbnRpbnVlIHByb2Nlc3NpbmdcbiAgcmV0dXJuIG51bGw7XG59O1xuIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7O0FBT0EsSUFBSSxTQUFZLEdBQUEsQ0FBQTtBQUNoQixJQUFJLFNBQTBCLEdBQUEsSUFBQTtBQU9qQixNQUFBLFdBQUEsR0FBNkIsU0FBUyxZQUFBLENBQ2pELE9BQ2MsRUFBQTtBQUNkLEVBQU0sTUFBQTtBQUFBLElBQ0osS0FBQTtBQUFBLElBQ0EsU0FBQTtBQUFBLElBQ0EsU0FBUyxZQUFhLEVBQUE7QUFBQSxJQUN0QixPQUFPLFVBQVcsRUFBQTtBQUFBLElBQ2xCLGNBQWlCLEdBQUEsTUFBQTtBQUFBLElBQ2pCLFFBQVcsR0FBQSxLQUFBO0FBQUEsSUFDWCxHQUFNLEdBQUE7QUFBQSxHQUNKLEdBQUEsT0FBQTtBQUVKLEVBQUEsSUFBSSxhQUFhLElBQU0sRUFBQTtBQUNyQixJQUFBLE1BQU0sVUFBVSxJQUFJLEtBQUEsQ0FBTSxXQUFZLFNBQWtCLENBQUEsTUFBQSxJQUFVLFNBQVMsQ0FBRSxDQUFBLENBQUE7QUFDN0UsSUFBUSxPQUFBLENBQUEsS0FBQSxHQUFRLFVBQVUsY0FBa0IsSUFBQSxNQUFBO0FBQzVDLElBQUEsT0FBQSxDQUFRLElBQU8sR0FBQSxXQUFBO0FBQ2YsSUFBQSxJQUFJLEdBQUssRUFBQSxRQUFBLENBQVMsT0FBUyxFQUFBLE1BQUEsRUFBUSxJQUFJLENBQUE7QUFBQTtBQUd6QyxFQUFBLE1BQU0sR0FBTSxHQUFBLE9BQUEsQ0FBUSxLQUFPLEVBQUEsU0FBQSxJQUFhLE1BQVMsQ0FBQTtBQUdqRCxFQUFBLElBQUksY0FBbUIsS0FBQSxZQUFBLElBQWlCLFFBQVksSUFBQSxjQUFBLEtBQW1CLGlCQUFvQixFQUFBO0FBRXpGLElBQUMsR0FBQSxDQUFZLFlBQVksQ0FBSSxHQUFBLElBQUE7QUFDN0IsSUFBTyxPQUFBLEdBQUE7QUFBQTtBQUdULEVBQUEsSUFBSSxHQUFLLEVBQUE7QUFDUCxJQUFBLElBQ0UsV0FBVyxPQUFhLEtBQUEsS0FBQSxFQUFpQixXQUN6QyxTQUFXLEVBQUEsS0FBQSxLQUFXLE9BQWlCLEtBQ3ZDLEVBQUE7QUFDQSxNQUFBLFNBQUEsRUFBQTtBQUNBLE1BQUEsTUFBTSxlQUFlLElBQUksS0FBQSxDQUFNLGtCQUFrQixFQUFFLEtBQUEsRUFBTyxLQUFLLENBQUE7QUFDL0QsTUFBQSxZQUFBLENBQWEsUUFBUSxHQUFJLENBQUEsS0FBQTtBQUN6QixNQUFPLE1BQUEsQ0FBQSxLQUFBLENBQU0sQ0FBRyxFQUFBLEdBQUEsQ0FBSSxPQUFPLENBQUEsRUFBQSxFQUFLLFNBQVMsQ0FBSyxDQUFBLENBQUEsRUFBQSxFQUFFLEtBQU8sRUFBQSxZQUFBLEVBQWMsQ0FBQTtBQUFBLEtBQ2hFLE1BQUE7QUFDTCxNQUFZLFNBQUEsR0FBQSxDQUFBO0FBQ1osTUFBWSxTQUFBLEdBQUEsS0FBQTtBQUNaLE1BQVMsUUFBQSxDQUFBLEdBQUEsRUFBSyxRQUFRLElBQUksQ0FBQTtBQUFBO0FBQzVCO0FBSUYsRUFBTyxPQUFBLElBQUE7QUFDVDs7OzsifQ==