@nxtedition/lib 14.0.16 → 14.0.18

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.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@nxtedition/lib",
3
- "version": "14.0.16",
3
+ "version": "14.0.18",
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'),
@@ -165,7 +165,16 @@ module.exports = ({ ds, proxify }) => {
165
165
  return (str, args$) => expr(args$)
166
166
  }
167
167
 
168
- return (str, args$) => expr(args$).pipe(rx.map((body) => `${pre}${stringify(body)}${post}`))
168
+ return (str, args$) =>
169
+ rxjs
170
+ .combineLatest([
171
+ compileStringTemplate(pre)?.(str, args$) ?? rxjs.of(pre),
172
+ expr(args$),
173
+ compileStringTemplate(post)?.(str, args$) ?? rxjs.of(post),
174
+ ])
175
+ .pipe(
176
+ rx.map(([pre, body, post]) => (pre || post ? `${pre}${stringify(body)}${post}` : body))
177
+ )
169
178
  } else if (type === 'nxt') {
170
179
  const expr = compilers.nxt(body)
171
180