@nxtedition/lib 19.1.6 → 19.1.7

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (2) hide show
  1. package/package.json +1 -1
  2. package/serializers.js +34 -20
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@nxtedition/lib",
3
- "version": "19.1.6",
3
+ "version": "19.1.7",
4
4
  "license": "MIT",
5
5
  "author": "Robert Nagy <robert.nagy@boffins.se>",
6
6
  "type": "module",
package/serializers.js CHANGED
@@ -90,6 +90,10 @@ export default {
90
90
  },
91
91
  }
92
92
 
93
+ // TODO (fix): Merge with errros/serializeError.
94
+ // Note that 'data' here should be string while in "serializeError" it should be object.
95
+ // Maybe we should rename serializeError to makeErrorObject or somehting??
96
+
93
97
  // Based on: https://github.com/pinojs/pino-std-serializers
94
98
 
95
99
  const seen = Symbol('circular-ref-tag')
@@ -136,17 +140,13 @@ Object.defineProperty(pinoErrProto, rawSymbol, {
136
140
 
137
141
  function errSerializer(err) {
138
142
  if (Array.isArray(err)) {
139
- if (err.length === 0) {
140
- return null
141
- } else if (err.length === 1) {
142
- return errSerializer(err[0])
143
- } else {
144
- return new AggregateError(err.map(errSerializer))
145
- }
146
- }
147
-
148
- if (!isErrorLike(err)) {
149
- return null
143
+ return err.length === 0 ? undefined : errSerializer({ message: '', errors: err })
144
+ } else if (!isErrorLike(err)) {
145
+ return undefined
146
+ } else if (err.message === '' && Array.isArray(err.errors) && err.errors.length === 0) {
147
+ return undefined
148
+ } else if (err.message === '' && Array.isArray(err.errors) && err.errors.length === 1) {
149
+ return errSerializer(err.errors[0])
150
150
  }
151
151
 
152
152
  err[seen] = undefined // tag to prevent re-looking at this
@@ -171,20 +171,34 @@ function errSerializer(err) {
171
171
  if (!Object.prototype.hasOwnProperty.call(val, seen)) {
172
172
  _err[key] = errSerializer(val)
173
173
  }
174
- } else if (val == null) {
175
- // Do nothing...
176
- } else if (key === 'data' && typeof val === 'object') {
177
- _err[key] = JSON.stringify(val, undefined, 2)
178
- } else if (key === 'code' && typeof val === 'number') {
179
- _err[key] = String(val)
180
- } else if (key === 'signal' && typeof val === 'number') {
181
- _err[key] = SIGNALS[val] ?? String(val)
182
- } else {
174
+ } else if (val != null) {
183
175
  _err[key] = val
184
176
  }
185
177
  }
186
178
  }
187
179
 
180
+ if (_err.data != null && typeof _err.data !== 'string') {
181
+ _err.data = JSON.stringify(_err.data, undefined, 2)
182
+ }
183
+
184
+ if (_err.code != null && typeof _err.code !== 'string') {
185
+ _err.code = String(_err.code)
186
+ }
187
+
188
+ if (_err.statusCode == null && _err.status != null) {
189
+ _err.statusCode = Number(_err.status) ?? undefined
190
+ }
191
+
192
+ if (_err.signalCode == null && _err.signal != null) {
193
+ _err.signalCode = SIGNALS[_err._signal] ?? _err._signal
194
+ } else if (_err.signalCode != null) {
195
+ _err.signalCode = SIGNALS[_err.signalCode] ?? _err.signalCode
196
+ }
197
+
198
+ if (_err.exitCode == null && _err.code != null && /^([A-Z]+|[a-z]+|[0-9]+)$/.test(_err.code)) {
199
+ _err.exitCode = String(_err.code)
200
+ }
201
+
188
202
  delete err[seen] // clean up tag in case err is serialized again later
189
203
  _err.raw = err
190
204
  return _err