Buckets:
| module.exports = errSerializer | |
| const { messageWithCauses, stackWithCauses, isErrorLike } = require('./err-helpers') | |
| const { pinoErrProto, pinoErrorSymbols } = require('./err-proto') | |
| const { seen } = pinoErrorSymbols | |
| const { toString } = Object.prototype | |
| function errSerializer (err) { | |
| if (!isErrorLike(err)) { | |
| 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 = messageWithCauses(err) | |
| _err.stack = stackWithCauses(err) | |
| if (Array.isArray(err.errors)) { | |
| _err.aggregateErrors = err.errors.map(err => errSerializer(err)) | |
| } | |
| for (const key in err) { | |
| if (_err[key] === undefined) { | |
| const val = err[key] | |
| if (isErrorLike(val)) { | |
| // We append cause messages and stacks to _err, therefore skipping causes here | |
| if (key !== 'cause' && !Object.prototype.hasOwnProperty.call(val, 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 | |
| } | |
Xet Storage Details
- Size:
- 1.25 kB
- Xet hash:
- 873a4e02e60db31b0abfe142baee0682631b6f2b4303311e3b9a773df6d9263e
·
Xet efficiently stores files, intelligently splitting them into unique chunks and accelerating uploads and downloads. More info.