(error, rememberSet = new SafeSet())
| 110 | |
| 111 | let serialize; |
| 112 | function serializeError(error, rememberSet = new SafeSet()) { |
| 113 | serialize ??= require('v8').serialize; |
| 114 | if (typeof error === 'symbol') { |
| 115 | return Buffer.from(StringFromCharCode(kInspectedSymbol) + inspect(error), 'utf8'); |
| 116 | } |
| 117 | |
| 118 | try { |
| 119 | if (typeof error === 'object' && |
| 120 | ObjectPrototypeToString(error) === '[object Error]') { |
| 121 | if (rememberSet.has(error)) { |
| 122 | return Buffer.from([kCircularReference]); |
| 123 | } |
| 124 | rememberSet.add(error); |
| 125 | |
| 126 | const constructors = GetConstructors(error); |
| 127 | for (let i = 0; i < constructors.length; i++) { |
| 128 | const name = GetName(constructors[i]); |
| 129 | if (errorConstructorNames.has(name)) { |
| 130 | const serialized = serialize({ |
| 131 | constructor: name, |
| 132 | properties: TryGetAllProperties(error, error, rememberSet), |
| 133 | }); |
| 134 | return Buffer.concat([Buffer.from([kSerializedError]), serialized]); |
| 135 | } |
| 136 | } |
| 137 | } |
| 138 | } catch { |
| 139 | // Continue regardless of error. |
| 140 | } |
| 141 | try { |
| 142 | if (error != null && customInspectSymbol in error) { |
| 143 | return Buffer.from(StringFromCharCode(kCustomInspectedObject) + inspect(error), 'utf8'); |
| 144 | } |
| 145 | } catch { |
| 146 | // Continue regardless of error. |
| 147 | } |
| 148 | try { |
| 149 | const serialized = serialize(error); |
| 150 | return Buffer.concat([Buffer.from([kSerializedObject]), serialized]); |
| 151 | } catch { |
| 152 | // Continue regardless of error. |
| 153 | } |
| 154 | return Buffer.from(StringFromCharCode(kInspectedError) + inspect(error), 'utf8'); |
| 155 | } |
| 156 | |
| 157 | function fromBuffer(error) { |
| 158 | return Buffer.from(TypedArrayPrototypeGetBuffer(error), |
no test coverage detected
searching dependent graphs…