forked from ipfs/js-ipfs
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathto-url-search-params.js
49 lines (38 loc) · 999 Bytes
/
to-url-search-params.js
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
42
43
44
45
46
47
48
49
'use strict'
const modeToString = require('./mode-to-string')
const mtimeToObject = require('./mtime-to-object')
/**
* @param {object} params
* @returns {URLSearchParams}
*/
module.exports = ({ arg, searchParams, hashAlg, mtime, mode, ...options } = {}) => {
if (searchParams) {
options = {
...options,
...searchParams
}
}
if (hashAlg) {
options.hash = hashAlg
}
if (mtime != null) {
mtime = mtimeToObject(mtime)
options.mtime = mtime.secs
options.mtimeNsecs = mtime.nsecs
}
if (mode != null) {
options.mode = modeToString(mode)
}
if (options.timeout && !isNaN(options.timeout)) {
// server API expects timeouts as strings
options.timeout = `${options.timeout}ms`
}
if (arg === undefined || arg === null) {
arg = []
} else if (!Array.isArray(arg)) {
arg = [arg]
}
const urlSearchParams = new URLSearchParams(options)
arg.forEach(arg => urlSearchParams.append('arg', arg))
return urlSearchParams
}