edge-core-js
Version:
Edge account & wallet management library
55 lines (48 loc) • 1.13 kB
JavaScript
import { asCodec, asObject, } from 'cleaners'
/**
* Reads a JSON-style object into a JavaScript `Map` object with string keys.
*/
export function asMap(cleaner) {
const asJsonObject = asObject(cleaner)
return asCodec(
raw => {
const clean = asJsonObject(raw)
const out = new Map()
for (const key of Object.keys(clean)) out.set(key, clean[key])
return out
},
clean => {
const out = {}
clean.forEach((value, key) => {
out[key] = value
})
return asJsonObject(out)
}
)
}
/**
* Reads a JSON-style object into a JavaScript `Map` object
* with EdgeTokenId keys.
*/
export function asTokenIdMap(
cleaner
) {
const asJsonObject = asObject(cleaner)
return asCodec(
raw => {
const clean = asJsonObject(raw)
const out = new Map()
for (const key of Object.keys(clean)) {
out.set(key === '' ? null : key, clean[key])
}
return out
},
clean => {
const out = {}
clean.forEach((value, key) => {
out[key == null ? '' : key] = value
})
return asJsonObject(out)
}
)
}