UNPKG

@aeternity/aepp-sdk

Version:

SDK for the æternity blockchain

38 lines 1.12 kB
import { EntryTag } from '../entry/constants.js'; import { encode, Encoding, decode } from '../../../utils/encoder.js'; export default function genMapField(encoding, tag) { return { serialize(object, { packEntry }) { return decode(packEntry({ tag: EntryTag.Mtree, values: Object.entries(object).map(([key, value]) => ({ tag: EntryTag.MtreeValue, key: decode(key), value: decode(packEntry({ ...value, tag })) })) })); }, deserialize(buffer, { unpackEntry }) { const { values } = unpackEntry(encode(buffer, Encoding.Bytearray), EntryTag.Mtree); return Object.fromEntries(values // TODO: remove after resolving https://github.com/aeternity/aeternity/issues/4066 .filter(({ key }) => encoding !== Encoding.ContractAddress || key.length === 32).map(({ key, value }) => [encode(key, encoding), unpackEntry(encode(value, Encoding.Bytearray), tag)])); }, recursiveType: true }; } //# sourceMappingURL=map.js.map