@nxtedition/lib 14.0.17 → 14.0.19

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 (3) hide show
  1. package/couch.js +24 -24
  2. package/package.json +2 -1
  3. package/serializers.js +3 -162
package/couch.js CHANGED
@@ -258,8 +258,8 @@ module.exports = function (opts) {
258
258
 
259
259
  const src = res.body
260
260
 
261
- let resume
262
- let error
261
+ let resume = null
262
+ let error = null
263
263
  let str = ''
264
264
 
265
265
  src
@@ -282,33 +282,33 @@ module.exports = function (opts) {
282
282
  } else if (error) {
283
283
  throw error
284
284
  } else {
285
- const promise = new Promise((resolve) => {
286
- resume = resolve
287
- })
288
-
289
285
  const lines = str.split('\n')
290
- str = lines.pop()
291
-
292
- const results = batched ? [] : null
293
- for (const line of lines) {
294
- if (line) {
295
- const change = JSON.parse(line)
296
- if (change.seq) {
297
- params.since = change.seq
298
- }
299
- if (results) {
300
- results.push(change)
301
- } else {
302
- yield change
286
+ str = lines.pop() ?? ''
287
+
288
+ if (lines.length === 0) {
289
+ await new Promise((resolve) => {
290
+ resume = resolve
291
+ })
292
+ } else {
293
+ const results = batched ? [] : null
294
+ for (const line of lines) {
295
+ if (line) {
296
+ const change = JSON.parse(line)
297
+ if (change.seq) {
298
+ params.since = change.seq
299
+ }
300
+ if (results) {
301
+ results.push(change)
302
+ } else {
303
+ yield change
304
+ }
303
305
  }
304
306
  }
305
- }
306
307
 
307
- if (results?.length) {
308
- yield results
308
+ if (results?.length) {
309
+ yield results
310
+ }
309
311
  }
310
-
311
- await promise
312
312
  }
313
313
  }
314
314
  } finally {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@nxtedition/lib",
3
- "version": "14.0.17",
3
+ "version": "14.0.19",
4
4
  "license": "MIT",
5
5
  "author": "Robert Nagy <robert.nagy@boffins.se>",
6
6
  "files": [
@@ -81,6 +81,7 @@
81
81
  "nconf": "^0.12.0",
82
82
  "nested-error-stacks": "^2.1.1",
83
83
  "object-hash": "^3.0.0",
84
+ "pino-std-serializers": "^6.2.2",
84
85
  "qs": "^6.11.1",
85
86
  "request-target": "^1.0.2",
86
87
  "smpte-timecode": "^1.3.3",
package/serializers.js CHANGED
@@ -1,3 +1,5 @@
1
+ const serializers = require('pino-std-serializers')
2
+
1
3
  function getHeader(obj, key) {
2
4
  return obj?.headers?.get?.(key) || obj?.getHeader?.(key) || obj?.headers?.[key]
3
5
  }
@@ -25,169 +27,8 @@ function getHeaders(obj) {
25
27
  )
26
28
  }
27
29
 
28
- const isErrorLike = (err) => {
29
- return err && typeof err.message === 'string'
30
- }
31
-
32
- const getErrorCause = (err) => {
33
- if (!err) {
34
- return
35
- }
36
-
37
- const cause = err.cause
38
-
39
- if (typeof cause === 'function') {
40
- const causeResult = err.cause()
41
- return isErrorLike(causeResult) ? causeResult : undefined
42
- } else {
43
- return isErrorLike(cause) ? cause : undefined
44
- }
45
- }
46
-
47
- const _stackWithCauses = (err, seen) => {
48
- if (!isErrorLike(err)) {
49
- return ''
50
- }
51
-
52
- const stack = err.stack || ''
53
-
54
- // Ensure we don't go circular or crazily deep
55
- if (seen.has(err)) {
56
- return stack + '\ncauses have become circular...'
57
- }
58
-
59
- const cause = getErrorCause(err)
60
-
61
- if (cause) {
62
- seen.add(err)
63
- return stack + '\ncaused by: ' + _stackWithCauses(cause, seen)
64
- } else {
65
- return stack
66
- }
67
- }
68
-
69
- const stackWithCauses = (err) => _stackWithCauses(err, new Set())
70
-
71
- const _messageWithCauses = (err, seen, skip) => {
72
- if (!isErrorLike(err)) {
73
- return ''
74
- }
75
-
76
- const message = skip ? '' : err.message || ''
77
-
78
- // Ensure we don't go circular or crazily deep
79
- if (seen.has(err)) {
80
- return message + ': ...'
81
- }
82
-
83
- const cause = getErrorCause(err)
84
-
85
- if (cause) {
86
- seen.add(err)
87
-
88
- const skipIfVErrorStyleCause = typeof err.cause === 'function'
89
-
90
- return (
91
- message +
92
- (skipIfVErrorStyleCause ? '' : ': ') +
93
- _messageWithCauses(cause, seen, skipIfVErrorStyleCause)
94
- )
95
- } else {
96
- return message
97
- }
98
- }
99
-
100
- const messageWithCauses = (err) => _messageWithCauses(err, new Set())
101
-
102
- const { toString } = Object.prototype
103
- const seen = Symbol('circular-ref-tag')
104
- const rawSymbol = Symbol('pino-raw-err-ref')
105
- const pinoErrProto = Object.create(
106
- {},
107
- {
108
- type: {
109
- enumerable: true,
110
- writable: true,
111
- value: undefined,
112
- },
113
- message: {
114
- enumerable: true,
115
- writable: true,
116
- value: undefined,
117
- },
118
- stack: {
119
- enumerable: true,
120
- writable: true,
121
- value: undefined,
122
- },
123
- aggregateErrors: {
124
- enumerable: true,
125
- writable: true,
126
- value: undefined,
127
- },
128
- raw: {
129
- enumerable: false,
130
- get: function () {
131
- return this[rawSymbol]
132
- },
133
- set: function (val) {
134
- this[rawSymbol] = val
135
- },
136
- },
137
- }
138
- )
139
- Object.defineProperty(pinoErrProto, rawSymbol, {
140
- writable: true,
141
- value: {},
142
- })
143
-
144
- function errSerializer(err) {
145
- if (!err) {
146
- return undefined
147
- } else if (typeof err === 'string') {
148
- err = new Error(err)
149
- } else if (Array.isArray(err)) {
150
- err = new AggregateError(err)
151
- } else if (!isErrorLike(err)) {
152
- err = Object.assign(new Error('invalid error object'), { data: JSON.stringify(err) })
153
- }
154
-
155
- err[seen] = undefined // tag to prevent re-looking at this
156
- const _err = Object.create(pinoErrProto)
157
- _err.type =
158
- toString.call(err.constructor) === '[object Function]' ? err.constructor.name : err.name
159
- _err.message = messageWithCauses(err)
160
- _err.stack = stackWithCauses(err)
161
-
162
- if (Array.isArray(err.errors)) {
163
- _err.aggregateErrors = err.errors.map((err) => errSerializer(err))
164
- }
165
-
166
- for (const key in err) {
167
- if (/^[A-Z_]+$/.test(key)) {
168
- // Ignore constants.
169
- } else if (_err[key] === undefined) {
170
- const val = err[key]
171
- if (isErrorLike(val)) {
172
- // We append cause messages and stacks to _err, therefore skipping causes here
173
- if (key !== 'cause' && !Object.prototype.hasOwnProperty.call(val, seen)) {
174
- _err[key] = errSerializer(val)
175
- }
176
- } else if (key === 'data' && typeof val !== 'string') {
177
- _err[key] = JSON.stringify(val)
178
- } else {
179
- _err[key] = val
180
- }
181
- }
182
- }
183
-
184
- delete err[seen] // clean up tag in case err is serialized again later
185
- _err.raw = err
186
- return _err
187
- }
188
-
189
30
  module.exports = {
190
- err: (err) => errSerializer(err),
31
+ err: serializers.err,
191
32
  res: (res) =>
192
33
  res && {
193
34
  id: res.id || res.req?.id || getHeader(res, 'request-id') || getHeader(res.req, 'request-id'),