koa
Version:
34 lines (30 loc) • 888 B
JavaScript
const URLSearchParams = require('url').URLSearchParams
module.exports = {
stringify: (obj) => {
const searchParams = new URLSearchParams()
const addKey = (k, v, params) => {
const val = typeof v === 'string' || typeof v === 'number' ? v : ''
params.append(k, val)
}
for (const [key, value] of Object.entries(obj)) {
if (Array.isArray(value)) {
const lgth = value.length
for (let i = 0; i < lgth; i++) {
addKey(key, value[i], searchParams)
}
} else {
addKey(key, value, searchParams)
}
}
return searchParams.toString()
},
parse: (str) => {
const searchParams = new URLSearchParams(str)
const obj = {}
for (const key of searchParams.keys()) {
const values = searchParams.getAll(key)
obj[key] = values.length <= 1 ? values[0] : values
}
return obj
}
}