1234567891011121314151617181920212223242526272829303132333435363738394041 |
- /* eslint no-undefined: 0 */
- 'use strict';
- const format = require('./format');
- const { LEVEL, MESSAGE } = require('triple-beam');
- /*
- * function errors (info)
- * If the `message` property of the `info` object is an instance of `Error`,
- * replace the `Error` object its own `message` property.
- *
- * Optionally, the Error's `stack` and/or `cause` properties can also be appended to the `info` object.
- */
- module.exports = format((einfo, { stack, cause }) => {
- if (einfo instanceof Error) {
- const info = Object.assign({}, einfo, {
- level: einfo.level,
- [LEVEL]: einfo[LEVEL] || einfo.level,
- message: einfo.message,
- [MESSAGE]: einfo[MESSAGE] || einfo.message
- });
- if (stack) info.stack = einfo.stack;
- if (cause) info.cause = einfo.cause;
- return info;
- }
- if (!(einfo.message instanceof Error)) return einfo;
- // Assign all enumerable properties and the
- // message property from the error provided.
- const err = einfo.message;
- Object.assign(einfo, err);
- einfo.message = err.message;
- einfo[MESSAGE] = err.message;
- // Assign the stack and/or cause if requested.
- if (stack) einfo.stack = err.stack;
- if (cause) einfo.cause = err.cause;
- return einfo;
- });
|