liudong
2023-05-29 340f156319b863525e50e900c58e59b86ecb3d5e
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
module.exports = parseArguments
 
function isWritable(stream) {
    return typeof stream.write === "function" &&
        typeof stream.end === "function"
}
 
function parseArguments(req, res, opts, callback) {
    // (req, cb)
    if (typeof res === "function") {
        callback = res
        opts = {}
        res = null
    }
 
    // (req, res, cb)
    if (typeof opts === "function") {
        callback = opts
        opts = {}
    }
 
    // (req, opts, cb)
    if (res && !isWritable(res)) {
        opts = res
        res = null
    }
 
    // default (req, res, opts, cb)
    return { req: req, res: res, opts: opts, callback: callback }
}