@nxtedition/lib 26.4.6 → 26.4.8
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/http.js +1 -1
- package/package.json +1 -1
- package/serializers.js +44 -28
- package/util/compare-rev.js +24 -16
package/http.js
CHANGED
package/package.json
CHANGED
package/serializers.js
CHANGED
|
@@ -1,11 +1,12 @@
|
|
|
1
1
|
import { SIGNALS } from './platform.js'
|
|
2
2
|
import { parseHeaders } from '@nxtedition/nxt-undici'
|
|
3
3
|
import requestTarget from 'request-target'
|
|
4
|
+
import querystring from 'fast-querystring'
|
|
4
5
|
|
|
5
6
|
function getHeader(obj, key) {
|
|
6
7
|
return !obj || !key
|
|
7
8
|
? undefined
|
|
8
|
-
: obj.headers?.
|
|
9
|
+
: obj.headers?.[key] || obj.headers?.get?.(key) || obj.getHeader?.(key)
|
|
9
10
|
}
|
|
10
11
|
|
|
11
12
|
function getHeaders(obj) {
|
|
@@ -35,15 +36,15 @@ function getUrl(obj) {
|
|
|
35
36
|
|
|
36
37
|
const { origin, path, hostname, protocol, port, url } = obj
|
|
37
38
|
|
|
39
|
+
if (typeof url === 'string' && url) {
|
|
40
|
+
return url
|
|
41
|
+
}
|
|
42
|
+
|
|
38
43
|
const href = url?.href
|
|
39
44
|
if (typeof href === 'string' && href) {
|
|
40
45
|
return href
|
|
41
46
|
}
|
|
42
47
|
|
|
43
|
-
if (typeof url === 'string' && url) {
|
|
44
|
-
return url
|
|
45
|
-
}
|
|
46
|
-
|
|
47
48
|
if (origin && (!path || typeof path === 'string')) {
|
|
48
49
|
if (typeof origin === 'object') {
|
|
49
50
|
return `${origin.protocol || 'http:'}//${origin.hostname}:${origin.port || { 'http:': 80, 'https:': 443 }[origin.protocol]}${path || ''}`
|
|
@@ -81,6 +82,18 @@ function getTarget(obj) {
|
|
|
81
82
|
if (typeof obj.url === 'string') {
|
|
82
83
|
// TODO(fix): What if url is a full url?
|
|
83
84
|
return requestTarget({ url: obj.url, headers: obj.headers ?? {}, socket: obj.socket })
|
|
85
|
+
} else {
|
|
86
|
+
const { origin, path, hostname, protocol, port, search, query } = obj
|
|
87
|
+
return {
|
|
88
|
+
origin,
|
|
89
|
+
protocol: protocol || undefined,
|
|
90
|
+
hostname: hostname || undefined,
|
|
91
|
+
port: port || undefined,
|
|
92
|
+
pathname: path || undefined,
|
|
93
|
+
search:
|
|
94
|
+
search ||
|
|
95
|
+
(typeof query === 'object' && query != null ? querystring.stringify(query) : undefined),
|
|
96
|
+
}
|
|
84
97
|
}
|
|
85
98
|
} catch {
|
|
86
99
|
return undefined
|
|
@@ -104,15 +117,17 @@ export default {
|
|
|
104
117
|
},
|
|
105
118
|
req: (req) =>
|
|
106
119
|
req && {
|
|
120
|
+
id: req.id || getHeader(req, 'request-id'),
|
|
107
121
|
method: req.method,
|
|
108
|
-
headers: getHeaders(req),
|
|
109
122
|
target: getTarget(req),
|
|
123
|
+
url: getUrl(req),
|
|
124
|
+
headers: getHeaders(req),
|
|
110
125
|
timing: req.timing,
|
|
111
126
|
bytesRead: req.bytesRead >= 0 ? req.bytesRead : undefined,
|
|
112
127
|
bytesReadPerSecond:
|
|
113
128
|
req.bytesReadPerSecond ??
|
|
114
|
-
(req.timing?.
|
|
115
|
-
? (req.bytesRead * 1e3) / req.timing.
|
|
129
|
+
(req.timing?.end > 0 && req.bytesRead > 0
|
|
130
|
+
? (req.bytesRead * 1e3) / req.timing.end
|
|
116
131
|
: undefined),
|
|
117
132
|
remoteAddress: req.socket?.remoteAddress,
|
|
118
133
|
remotePort: req.socket?.remotePort,
|
|
@@ -120,43 +135,45 @@ export default {
|
|
|
120
135
|
closed: req.closed,
|
|
121
136
|
destroyed: req.destroyed,
|
|
122
137
|
},
|
|
138
|
+
ureq: (ureq) =>
|
|
139
|
+
ureq && {
|
|
140
|
+
id: ureq.id || getHeader(ureq, 'request-id'),
|
|
141
|
+
method: ureq.method,
|
|
142
|
+
target: getTarget(ureq),
|
|
143
|
+
url: getUrl(ureq),
|
|
144
|
+
headers: getHeaders(ureq),
|
|
145
|
+
timing: ureq.timing,
|
|
146
|
+
bytesWritten: ureq.bytesWritten,
|
|
147
|
+
bytesReadPerSecond:
|
|
148
|
+
ureq.bytesWrittenPerSecond ??
|
|
149
|
+
(ureq.timing && ureq.timing.data > 0 && ureq.timing.end > 0
|
|
150
|
+
? (ureq.bytesWritten * 1e3) / (ureq.timing.end - ureq.timing.data)
|
|
151
|
+
: undefined),
|
|
152
|
+
body: typeof ureq.body === 'string' ? ureq.body : undefined,
|
|
153
|
+
},
|
|
123
154
|
res: (res) =>
|
|
124
155
|
res && {
|
|
156
|
+
id: res.id || getHeader(res, 'request-id') || getHeader(res.req, 'request-id'),
|
|
125
157
|
headers: getHeaders(res),
|
|
126
158
|
statusCode: res.statusCode || res.status,
|
|
127
159
|
timing: res.timing,
|
|
128
160
|
bytesWritten: res.bytesWritten >= 0 ? res.bytesWritten : undefined,
|
|
129
161
|
bytesWrittenPerSecond:
|
|
130
162
|
res.bytesWrittenPerSecond ??
|
|
131
|
-
(res.timing?.
|
|
132
|
-
? (res.bytesWritten * 1e3) / res.timing.
|
|
163
|
+
(res.timing?.end > 0 && res.bytesWritten > 0
|
|
164
|
+
? (res.bytesWritten * 1e3) / res.timing.end
|
|
133
165
|
: undefined),
|
|
134
166
|
headersSent: res.headersSent,
|
|
135
167
|
aborted: res.aborted,
|
|
136
168
|
closed: res.closed,
|
|
137
169
|
destroyed: res.destroyed,
|
|
138
170
|
},
|
|
139
|
-
ureq: (ureq) =>
|
|
140
|
-
ureq && {
|
|
141
|
-
url: getUrl(ureq),
|
|
142
|
-
id: ureq.id || getHeader(ureq, 'request-id'),
|
|
143
|
-
timing: ureq.timing,
|
|
144
|
-
method: ureq.method,
|
|
145
|
-
body: typeof ureq.body === 'string' ? ureq.body : undefined,
|
|
146
|
-
bytesWritten: ureq.bytesWritten,
|
|
147
|
-
bytesReadPerSecond:
|
|
148
|
-
ureq.bytesWrittenPerSecond ??
|
|
149
|
-
(ureq.timing && ureq.timing.data > 0 && ureq.timing.end > 0
|
|
150
|
-
? (ureq.bytesWritten * 1e3) / (ureq.timing.end - ureq.timing.data)
|
|
151
|
-
: undefined),
|
|
152
|
-
headers: getHeaders(ureq),
|
|
153
|
-
query: ureq.query,
|
|
154
|
-
},
|
|
155
171
|
ures: (ures) =>
|
|
156
172
|
ures && {
|
|
157
173
|
id: ures.id || getHeader(ures, 'request-id') || getHeader(ures.req, 'request-id'),
|
|
158
|
-
|
|
174
|
+
headers: getHeaders(ures),
|
|
159
175
|
statusCode: ures.statusCode ?? ures.status,
|
|
176
|
+
timing: ures.timing,
|
|
160
177
|
bytesRead: ures.bytesRead,
|
|
161
178
|
bytesReadPerSecond:
|
|
162
179
|
ures.bytesReadPerSecond ??
|
|
@@ -164,7 +181,6 @@ export default {
|
|
|
164
181
|
? (ures.bytesRead * 1e3) / (ures.timing.end - ures.timing.data)
|
|
165
182
|
: undefined),
|
|
166
183
|
body: typeof ures.body === 'string' ? ures.body : undefined,
|
|
167
|
-
headers: getHeaders(ures),
|
|
168
184
|
},
|
|
169
185
|
}
|
|
170
186
|
|
package/util/compare-rev.js
CHANGED
|
@@ -214,14 +214,18 @@ export function compareRevSliceSlice(a, b) {
|
|
|
214
214
|
let lenA = endA
|
|
215
215
|
a = a.buffer
|
|
216
216
|
|
|
217
|
-
if (
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
) {
|
|
224
|
-
throw new Error('invalid
|
|
217
|
+
if (!Buffer.isBuffer(a)) {
|
|
218
|
+
throw Object.assign(new Error('a is not a Buffer.'), {
|
|
219
|
+
data: a?.constructor?.name,
|
|
220
|
+
})
|
|
221
|
+
}
|
|
222
|
+
|
|
223
|
+
if (!Number.isInteger(idxA) || idxA < 0) {
|
|
224
|
+
throw Object.assign(new Error('a has invalid index'), { data: idxA })
|
|
225
|
+
}
|
|
226
|
+
|
|
227
|
+
if (!Number.isInteger(lenA) || lenA < 0) {
|
|
228
|
+
throw Object.assign(new Error('a has invalid length'), { data: lenA })
|
|
225
229
|
}
|
|
226
230
|
|
|
227
231
|
const endB = b.byteOffset + b.byteLength
|
|
@@ -229,14 +233,18 @@ export function compareRevSliceSlice(a, b) {
|
|
|
229
233
|
let lenB = endB
|
|
230
234
|
b = b.buffer
|
|
231
235
|
|
|
232
|
-
if (
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
) {
|
|
239
|
-
throw new Error('invalid
|
|
236
|
+
if (!Buffer.isBuffer(b)) {
|
|
237
|
+
throw Object.assign(new Error('b is not a Buffer.'), {
|
|
238
|
+
data: b?.constructor?.name,
|
|
239
|
+
})
|
|
240
|
+
}
|
|
241
|
+
|
|
242
|
+
if (!Number.isInteger(idxB) || idxB < 0) {
|
|
243
|
+
throw Object.assign(new Error('b has invalid index'), { data: idxB })
|
|
244
|
+
}
|
|
245
|
+
|
|
246
|
+
if (!Number.isInteger(lenB) || lenB < 0) {
|
|
247
|
+
throw Object.assign(new Error('b has invalid length'), { data: lenB })
|
|
240
248
|
}
|
|
241
249
|
|
|
242
250
|
// Handle INF-XXXXXXXX
|