UNPKG

serverless-offline-msk

Version:

A serverless offline plugin that enables AWS MSK events

57 lines (41 loc) 1.33 kB
'use strict'; // coppied from https://github.com/sindresorhus/serialize-error/blob/master/index.js and converted // to use _.entries instead of Object.entries. and linted for our standards const { entries } = require('lodash'); const destroyCircular = (from, seen) => { const to = Array.isArray(from) ? [] : {}; seen.push(from); for (const [key, value] of entries(from)) { if (typeof value === 'function') { continue; } if (!value || typeof value !== 'object') { to[key] = value; continue; } if (!seen.includes(from[key])) { to[key] = destroyCircular(from[key], seen.slice()); continue; } to[key] = '[Circular]'; } const commonProperties = ['name', 'message', 'stack', 'code']; for (const property of commonProperties) { if (typeof from[property] === 'string') { to[property] = from[property]; } } return to; }; const serializeError = (value) => { if (typeof value === 'object') { return destroyCircular(value, []); } // People sometimes throw things besides Error objects… if (typeof value === 'function') { // `JSON.stringify()` discards functions. We do too, unless a function is thrown directly. return `[Function: ${value.name || 'anonymous'}]`; } return value; }; module.exports = serializeError;