@nxtedition/lib 20.3.2 → 20.3.5
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/couch.js +4 -49
- package/http.js +1 -6
- package/package.json +1 -1
- package/serializers.js +27 -11
package/couch.js
CHANGED
|
@@ -943,12 +943,6 @@ class StreamOutput extends stream.Readable {
|
|
|
943
943
|
#state
|
|
944
944
|
#decoder
|
|
945
945
|
#headers
|
|
946
|
-
#startTime = performance.now()
|
|
947
|
-
#stats = {
|
|
948
|
-
connect: -1,
|
|
949
|
-
headers: -1,
|
|
950
|
-
ttfb: -1,
|
|
951
|
-
}
|
|
952
946
|
|
|
953
947
|
constructor({ signal, highWaterMark = 256 }) {
|
|
954
948
|
super({ objectMode: true, highWaterMark, signal })
|
|
@@ -958,10 +952,6 @@ class StreamOutput extends stream.Readable {
|
|
|
958
952
|
return this.#headers
|
|
959
953
|
}
|
|
960
954
|
|
|
961
|
-
get stats() {
|
|
962
|
-
return this.#stats
|
|
963
|
-
}
|
|
964
|
-
|
|
965
955
|
_read() {
|
|
966
956
|
this.#resume?.()
|
|
967
957
|
}
|
|
@@ -972,8 +962,6 @@ class StreamOutput extends stream.Readable {
|
|
|
972
962
|
}
|
|
973
963
|
|
|
974
964
|
onConnect(abort) {
|
|
975
|
-
this.#stats.connect = performance.now() - this.#startTime
|
|
976
|
-
|
|
977
965
|
if (this.destroyed) {
|
|
978
966
|
abort(this.errored)
|
|
979
967
|
} else if (this.#state) {
|
|
@@ -987,10 +975,6 @@ class StreamOutput extends stream.Readable {
|
|
|
987
975
|
}
|
|
988
976
|
|
|
989
977
|
onHeaders(statusCode, rawHeaders, resume, statusText, headers = parseHeaders(rawHeaders)) {
|
|
990
|
-
if (this.#stats.headers === -1) {
|
|
991
|
-
this.#stats.headers = performance.now() - this.#startTime - this.#stats.connect
|
|
992
|
-
}
|
|
993
|
-
|
|
994
978
|
if (statusCode >= 300 || statusCode < 200) {
|
|
995
979
|
throw new Error('invalid status code: ' + statusCode)
|
|
996
980
|
}
|
|
@@ -1000,10 +984,6 @@ class StreamOutput extends stream.Readable {
|
|
|
1000
984
|
}
|
|
1001
985
|
|
|
1002
986
|
onData(data) {
|
|
1003
|
-
if (this.#stats.ttfb === -1) {
|
|
1004
|
-
this.#stats.ttfb = performance.now() - this.#startTime - this.#stats.headers
|
|
1005
|
-
}
|
|
1006
|
-
|
|
1007
987
|
const lines = this.#decoder.decode(data, { stream: true }).split(/\r?\n+/)
|
|
1008
988
|
lines[0] = this.#str + lines[0]
|
|
1009
989
|
this.#str = lines.pop() ?? ''
|
|
@@ -1049,16 +1029,8 @@ class PromiseOutput {
|
|
|
1049
1029
|
#str
|
|
1050
1030
|
#decoder
|
|
1051
1031
|
#headers
|
|
1052
|
-
#startTime = performance.now()
|
|
1053
1032
|
#signal
|
|
1054
1033
|
#abort
|
|
1055
|
-
#stats = {
|
|
1056
|
-
connect: -1,
|
|
1057
|
-
headers: -1,
|
|
1058
|
-
data: -1,
|
|
1059
|
-
complete: -1,
|
|
1060
|
-
error: -1,
|
|
1061
|
-
}
|
|
1062
1034
|
|
|
1063
1035
|
constructor({ resolve, reject, signal }) {
|
|
1064
1036
|
this.#resolve = resolve
|
|
@@ -1067,7 +1039,6 @@ class PromiseOutput {
|
|
|
1067
1039
|
}
|
|
1068
1040
|
|
|
1069
1041
|
onConnect(abort) {
|
|
1070
|
-
this.#stats.connect = performance.now() - this.#startTime
|
|
1071
1042
|
this.#decoder = new TextDecoder()
|
|
1072
1043
|
this.#str = ''
|
|
1073
1044
|
|
|
@@ -1080,10 +1051,6 @@ class PromiseOutput {
|
|
|
1080
1051
|
}
|
|
1081
1052
|
|
|
1082
1053
|
onHeaders(statusCode, rawHeaders, resume, statusText, headers = parseHeaders(rawHeaders)) {
|
|
1083
|
-
if (this.#stats.headers === -1) {
|
|
1084
|
-
this.#stats.headers = performance.now() - this.#startTime - this.#stats.connect
|
|
1085
|
-
}
|
|
1086
|
-
|
|
1087
1054
|
if (statusCode >= 300 || statusCode < 200) {
|
|
1088
1055
|
throw new Error('invalid status code: ' + statusCode)
|
|
1089
1056
|
}
|
|
@@ -1092,29 +1059,17 @@ class PromiseOutput {
|
|
|
1092
1059
|
}
|
|
1093
1060
|
|
|
1094
1061
|
onData(data) {
|
|
1095
|
-
if (this.#stats.data === -1) {
|
|
1096
|
-
this.#stats.data = performance.now() - this.#startTime - this.#stats.headers
|
|
1097
|
-
}
|
|
1098
|
-
|
|
1099
1062
|
this.#str += this.#decoder.decode(data, { stream: true })
|
|
1100
1063
|
}
|
|
1101
1064
|
|
|
1102
1065
|
onComplete() {
|
|
1103
|
-
if (this.#stats.complete === -1) {
|
|
1104
|
-
this.#stats.complete = performance.now() - this.#startTime - this.#stats.data
|
|
1105
|
-
}
|
|
1106
|
-
|
|
1107
1066
|
this.#str += this.#decoder.decode(undefined, { stream: false })
|
|
1108
1067
|
|
|
1109
|
-
const val = Object.assign(JSON.parse(this.#str), { headers: this.#headers
|
|
1068
|
+
const val = Object.assign(JSON.parse(this.#str), { headers: this.#headers })
|
|
1110
1069
|
this.#onDone(null, val)
|
|
1111
1070
|
}
|
|
1112
1071
|
|
|
1113
1072
|
onError(err) {
|
|
1114
|
-
if (this.#stats.error === -1) {
|
|
1115
|
-
this.#stats.error = performance.now() - this.#startTime - this.#stats.data
|
|
1116
|
-
}
|
|
1117
|
-
|
|
1118
1073
|
this.#onDone(err)
|
|
1119
1074
|
}
|
|
1120
1075
|
|
|
@@ -1147,13 +1102,13 @@ export function request(url, opts) {
|
|
|
1147
1102
|
|
|
1148
1103
|
if (opts == null && typeof url === 'object' && url != null) {
|
|
1149
1104
|
opts = url
|
|
1105
|
+
url = null
|
|
1150
1106
|
}
|
|
1151
1107
|
|
|
1152
1108
|
const ureq = {
|
|
1153
1109
|
...opts,
|
|
1154
|
-
url,
|
|
1155
1110
|
method: opts.method ?? (opts.body ? 'POST' : 'GET'),
|
|
1156
|
-
blocking: opts.blocking ?? Boolean(stream),
|
|
1111
|
+
blocking: opts.blocking ?? Boolean(opts.stream),
|
|
1157
1112
|
headers: {
|
|
1158
1113
|
'content-type':
|
|
1159
1114
|
opts.body != null && typeof opts.body === 'object' ? 'application/json' : 'plain/text',
|
|
@@ -1167,7 +1122,7 @@ export function request(url, opts) {
|
|
|
1167
1122
|
const dispatcher = opts.dispatcher ?? defaultDispatcher
|
|
1168
1123
|
const signal = opts.signal
|
|
1169
1124
|
|
|
1170
|
-
if (stream) {
|
|
1125
|
+
if (opts.stream) {
|
|
1171
1126
|
const handler = new StreamOutput({ signal, ...stream })
|
|
1172
1127
|
dispatch(dispatcher, ureq, handler)
|
|
1173
1128
|
return handler
|
package/http.js
CHANGED
|
@@ -138,8 +138,6 @@ export async function request(ctx, next) {
|
|
|
138
138
|
reqLogger.error('request error')
|
|
139
139
|
}
|
|
140
140
|
|
|
141
|
-
reqLogger.debug('request ended')
|
|
142
|
-
|
|
143
141
|
res.end()
|
|
144
142
|
} else {
|
|
145
143
|
reqLogger = reqLogger.child({ res, err, responseTime })
|
|
@@ -152,10 +150,7 @@ export async function request(ctx, next) {
|
|
|
152
150
|
reqLogger.error('request error')
|
|
153
151
|
}
|
|
154
152
|
|
|
155
|
-
if (res.writableEnded) {
|
|
156
|
-
reqLogger.debug('response completed')
|
|
157
|
-
} else {
|
|
158
|
-
reqLogger.debug('response destroyed')
|
|
153
|
+
if (!res.writableEnded) {
|
|
159
154
|
res.destroy()
|
|
160
155
|
}
|
|
161
156
|
}
|
package/package.json
CHANGED
package/serializers.js
CHANGED
|
@@ -42,11 +42,11 @@ export default {
|
|
|
42
42
|
err: (err) => errSerializer(err),
|
|
43
43
|
socket: (socket) =>
|
|
44
44
|
socket && {
|
|
45
|
-
id: socket.id ||
|
|
46
|
-
version: socket.version
|
|
47
|
-
user: socket.user
|
|
48
|
-
userAgent: socket.userAgent
|
|
49
|
-
remoteAddress: socket.remoteAddress
|
|
45
|
+
id: socket.id || undefined,
|
|
46
|
+
version: socket.version || undefined,
|
|
47
|
+
user: socket.user || undefined,
|
|
48
|
+
userAgent: socket.userAgent || undefined,
|
|
49
|
+
remoteAddress: socket.remoteAddress || undefined,
|
|
50
50
|
headers: socket.headers,
|
|
51
51
|
},
|
|
52
52
|
res: (res) =>
|
|
@@ -55,7 +55,11 @@ export default {
|
|
|
55
55
|
timing: getTiming(res),
|
|
56
56
|
statusCode: res.statusCode || res.status,
|
|
57
57
|
bytesWritten: res.bytesWritten,
|
|
58
|
-
|
|
58
|
+
bytesReadPerSecond:
|
|
59
|
+
res.bytesWrittenPerSecond ??
|
|
60
|
+
(res.timing?.complete > 0 && res.bytesWritten
|
|
61
|
+
? (res.bytesWritten * 1e3) / res.timing.complete
|
|
62
|
+
: undefined),
|
|
59
63
|
headers: getHeaders(res),
|
|
60
64
|
headersSent: res.headersSent,
|
|
61
65
|
},
|
|
@@ -67,7 +71,11 @@ export default {
|
|
|
67
71
|
url: req.url,
|
|
68
72
|
headers: getHeaders(req),
|
|
69
73
|
bytesRead: req.bytesRead,
|
|
70
|
-
bytesReadPerSecond:
|
|
74
|
+
bytesReadPerSecond:
|
|
75
|
+
req.bytesReadPerSecond ??
|
|
76
|
+
(req.timing?.complete > 0 && req.bytesRead
|
|
77
|
+
? (req.bytesRead * 1e3) / req.timing.complete
|
|
78
|
+
: undefined),
|
|
71
79
|
remoteAddress: req.socket?.remoteAddress,
|
|
72
80
|
remotePort: req.socket?.remotePort,
|
|
73
81
|
},
|
|
@@ -77,8 +85,12 @@ export default {
|
|
|
77
85
|
timing: getTiming(ures),
|
|
78
86
|
statusCode: ures.statusCode ?? ures.status,
|
|
79
87
|
bytesRead: ures.bytesRead,
|
|
80
|
-
bytesReadPerSecond:
|
|
81
|
-
|
|
88
|
+
bytesReadPerSecond:
|
|
89
|
+
ures.bytesReadPerSecond ??
|
|
90
|
+
(ures.timing?.complete > 0 && ures.bytesRead
|
|
91
|
+
? (ures.bytesRead * 1e3) / ures.timing.complete
|
|
92
|
+
: undefined),
|
|
93
|
+
body: typeof ures.body === 'string' ? ures.body : undefined,
|
|
82
94
|
headers: getHeaders(ures),
|
|
83
95
|
},
|
|
84
96
|
ureq: (ureq) => {
|
|
@@ -103,9 +115,13 @@ export default {
|
|
|
103
115
|
timing: getTiming(ureq),
|
|
104
116
|
method: ureq.method,
|
|
105
117
|
url,
|
|
106
|
-
body: typeof ureq.body === 'string' ? ureq.body :
|
|
118
|
+
body: typeof ureq.body === 'string' ? ureq.body : undefined,
|
|
107
119
|
bytesWritten: ureq.bytesWritten,
|
|
108
|
-
|
|
120
|
+
bytesReadPerSecond:
|
|
121
|
+
ureq.bytesWrittenPerSecond ??
|
|
122
|
+
(ureq.timing?.complete > 0 && ureq.bytesWritten
|
|
123
|
+
? (ureq.bytesWritten * 1e3) / ureq.timing.complete
|
|
124
|
+
: undefined),
|
|
109
125
|
headers: getHeaders(ureq),
|
|
110
126
|
query: ureq.query,
|
|
111
127
|
}
|