@lodestar/types
Version:
Typescript types required for lodestar
27 lines • 1.04 kB
JavaScript
/**
* Deserialize a state from bytes ignoring some fields.
*/
export function deserializeContainerIgnoreFields(sszType, bytes, ignoreFields, fieldRanges) {
const allFields = Object.keys(sszType.fields);
const object = sszType.defaultViewDU();
if (!fieldRanges) {
const dataView = new DataView(bytes.buffer, bytes.byteOffset, bytes.byteLength);
fieldRanges = sszType.getFieldRanges(dataView, 0, bytes.length);
}
for (const [field, type] of Object.entries(sszType.fields)) {
// loaded above
if (ignoreFields.includes(field)) {
continue;
}
const fieldIndex = allFields.indexOf(field);
const fieldRange = fieldRanges[fieldIndex];
if (type.isBasic) {
object[field] = type.deserialize(bytes.subarray(fieldRange.start, fieldRange.end));
}
else {
object[field] = type.deserializeToViewDU(bytes.subarray(fieldRange.start, fieldRange.end));
}
}
return object;
}
//# sourceMappingURL=container.js.map