-
Notifications
You must be signed in to change notification settings - Fork 16
/
raw-body.node.txt
42 lines (35 loc) · 3.58 KB
/
raw-body.node.txt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
RAW-BODY
ALTERNATIVES ==> #Reads whole stream content:
# - stream/consumers core Node.js (preferred): Node.js >= 16.7.0
# - also ISTREAM.toArray() and Array.fromAsync()
# - get-stream (preferred if needs maxBuffer, error.bufferedData, browsers):
# - object STREAMs
# - Node/Deno/browsers
# - faster
# - raw-body:
# - handles encoding (using ICONV-LITE)
# - HTTP error types
# - stream-to-promise: fewer options and slightly not as good
# - stream-to-array: objectMode only
#Wait for ISTREAM|OSTREAM to complete|error:
# - Stream.finished() (preferred): core Node.js
# - end-of-stream (preferred if need Node <10): see Node.js core doc
# - stream-to-promise (preferred for OSTREAM if needs Node <10 and PROMISE return value)
# - on-finished: see Node.js core doc
VERSION ==> #3.0.0
RAWBODY(ISTREAM, OPTS|'ENCODING') #Reads ISTREAM using ISTREAM.on('data|end|aborted|error'), then returns it as BUFFER
->>BUFFER #If ISTREAM is a FILE, should call ISTREAM.destroy|close() afterwards
#OPTS:
# - encoding 'ENCODING'|null (using ICONV-LITE): decodes to UTF-8
# - limit SIZE (uses BYTES.parse(), see its doc)
# - length NUM: payload length
#Errors:
# - 400 (ERROR.type "request.aborted"): REQ aborted
# - 400 (ERROR.type "request.size.invalid"): length !== actual REQ length
# - 413 (ERROR.type "entity.too.large"): reached limit
# - 415 (ERROR.type "encoding.unsupported"): wrong 'ENCODING'
# - 500 (ERROR.type "stream.encoding.set"): not sure when set
# - any other underlying errors while streaming might be thrown too, but should
# probably be considered 5** then