UNPKG

resume-client-socket.io

Version:

Resume Client API for Socket.IO and Node.JS - Medical Speech to Summarized Text

69 lines (63 loc) 1.47 kB
'use strict' module.exports = errSerializer const { toString } = Object.prototype const seen = Symbol('circular-ref-tag') const rawSymbol = Symbol('pino-raw-err-ref') const pinoErrProto = Object.create({}, { type: { enumerable: true, writable: true, value: undefined }, message: { enumerable: true, writable: true, value: undefined }, stack: { enumerable: true, writable: true, value: undefined }, raw: { enumerable: false, get: function () { return this[rawSymbol] }, set: function (val) { this[rawSymbol] = val } } }) Object.defineProperty(pinoErrProto, rawSymbol, { writable: true, value: {} }) function errSerializer (err) { if (!(err instanceof Error)) { return err } err[seen] = undefined // tag to prevent re-looking at this const _err = Object.create(pinoErrProto) _err.type = toString.call(err.constructor) === '[object Function]' ? err.constructor.name : err.name _err.message = err.message _err.stack = err.stack for (const key in err) { if (_err[key] === undefined) { const val = err[key] if (val instanceof Error) { /* eslint-disable no-prototype-builtins */ if (!val.hasOwnProperty(seen)) { _err[key] = errSerializer(val) } } else { _err[key] = val } } } delete err[seen] // clean up tag in case err is serialized again later _err.raw = err return _err }