mysql2
Version:
fast mysql driver. Implements core protocol, prepared statements, ssl and compression in native JS
26 lines (22 loc) • 761 B
JavaScript
;
/** @param {Function} constructorOpt Passed to Error.captureStackTrace (omit this frame from stacks). */
function captureStackHolder(constructorOpt) {
const holder = {};
Error.captureStackTrace(holder, constructorOpt);
return holder;
}
/**
* Replace `err.stack` frames with the capture from `holder`, keeping the
* callback error instance and its MySQL fields.
*
* @param {Error} err
* @param {{ stack?: string }} holder
*/
function applyCapturedStack(err, holder) {
const stack = holder && holder.stack;
if (typeof stack !== 'string' || !stack) return;
const lines = stack.split('\n');
lines[0] = `${err.name}: ${err.message}`;
err.stack = lines.join('\n');
}
module.exports = { captureStackHolder, applyCapturedStack };