@aeternity/aepp-sdk
Version:
SDK for the æternity blockchain
38 lines • 1.12 kB
JavaScript
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