25 lines
717 B
JavaScript
25 lines
717 B
JavaScript
const toObject = require('to-object-reducer');
|
|
|
|
// return object
|
|
const base64decode = str => Buffer.from(str, 'base64').toString('utf8')
|
|
const base64encode = str => Buffer.from(str, 'utf8').toString('base64')
|
|
|
|
module.exports.decode = (str = '') => {
|
|
const keypairs = str
|
|
.split(',')
|
|
// .map(s => s.trim())
|
|
const keyvals = keypairs
|
|
.map(s => s.split(' '))
|
|
.filter(arr => arr.length === 2)
|
|
.filter(([key]) => key !== '')
|
|
.map(([key, val]) => [key, base64decode(val)])
|
|
return keyvals.reduce(toObject, {})
|
|
}
|
|
|
|
module.exports.encode = (obj = {}) => Object
|
|
.keys(obj)
|
|
.map(key => [key, obj[key]])
|
|
.map(([key, val]) => [key, base64encode(val)])
|
|
.map(kvArr => kvArr.join(' '))
|
|
.join(',')
|