@aeternity/aepp-sdk
Version:
SDK for the æternity blockchain
27 lines • 1.05 kB
JavaScript
import { Buffer as _Buffer } from "buffer";
import { ArgumentError } from '../../../utils/errors.js';
import { isItemOfArray } from '../../../utils/other.js';
export default function genEnumerationField(enm) {
const values = Object.values(enm).filter(v => typeof v === 'number');
return {
serialize(value) {
if (typeof value !== 'number') throw new ArgumentError('value', 'to be a number', value);
if (value > 0xff) throw new ArgumentError('value', 'to be less than 256', value);
if (!isItemOfArray(value, values)) {
throw new ArgumentError('value', 'to be a value of Enum', value);
}
return _Buffer.from([value]);
},
deserialize(buffer) {
if (buffer.length !== 1) {
throw new ArgumentError('buffer', 'to have single element', buffer.length);
}
const value = buffer[0];
if (!isItemOfArray(value, values)) {
throw new ArgumentError('value', 'to be a value of Enum', value);
}
return value;
}
};
}
//# sourceMappingURL=enumeration.js.map