UNPKG

http-errors-enhanced

Version:

Create HTTP errors with additional properties for any framework.

48 lines (47 loc) 1.49 kB
import { sep } from 'node:path'; const processRoot = process.cwd(); let fileProcessRoot = `file://${processRoot}`; if (process.platform === 'win32') { fileProcessRoot = 'file:///' + process.cwd().replaceAll(sep, '/'); } export function pascalCase(original) { const rest = original .slice(1) .toLowerCase() .replaceAll(/(\s+[a-z])/g, (_, char) => char.toUpperCase().trim()); return original.slice(0, 1).toUpperCase() + rest; } export function upperFirst(original) { return original.slice(0, 1).toUpperCase() + original.slice(1); } export function lowerFirst(original) { return original.slice(0, 1).toLowerCase() + original.slice(1); } export function addAdditionalProperties(target, source) { for (const v in source) { if (v in target) { continue; } target[v] = source[v]; } } export function serializeError(error, omitStack = false) { const tag = error.code ?? error.name ?? 'Error'; const serialized = { message: `[${tag}] ${error.message}` }; if (!omitStack) { serialized.stack = (error.stack ?? '') .split('\n') .slice(1) .map(s => s .trim() .replace(/^at /, '') .replace(/^at /, '') .replace(fileProcessRoot, 'file://$ROOT') .replace(processRoot, '$ROOT') .replaceAll(sep, '/')); } addAdditionalProperties(serialized, error); return serialized; }