---
source: postcard-bindgen-core/tests/javascript.rs
expression: ser_file
snapshot_kind: text
---
function serialize_STRUCT_TYPE(s, v) {
s.serialize_number(U32_BYTES, false, v.field_1);
s.serialize_string(v.field_2);
const lambda_v_field_3 = (s, v) => {
s.serialize_number(U32_BYTES, false, v)
};
s.serialize_array(lambda_v_field_3, v.field_3);
const lambda_v_field_4 = (s, v) => {
serialize_STRUCT_TYPE(s, v)
};
s.serialize_array(lambda_v_field_4, v.field_4);
s.serialize_number(U32_BYTES, false, v.field_5.start);
s.serialize_number(U32_BYTES, false, v.field_5.end);
s.serialize_string_key_map((s, v) => s.serialize_number(U32_BYTES, false, v), v.field_6);
s.serialize_map((d, k, v) => [
s.serialize_number(U32_BYTES, false, k),
s.serialize_number(U32_BYTES, false, v)
], v.field_7);
if (v.field_8 !== undefined) {
s.serialize_number(U32_BYTES, false, 1);
s.serialize_number(U32_BYTES, false, v.field_8)
} else {
s.serialize_number(U32_BYTES, false, 0)
};
s.serialize_bool(v.field_9);
s.serialize_number(U32_BYTES, false, v.field_10[0]);
s.serialize_string(v.field_10[1]);
const lambda_v_field_11 = (s, v) => {
s.serialize_string(v)
};
s.serialize_array(lambda_v_field_11, v.field_11, 3);
const lambda_v_field_12 = (s, v) => {
s.serialize_number(U32_BYTES, false, v)
};
s.serialize_array(lambda_v_field_12, v.field_12);
s.serialize_number_float(U32_BYTES, v.field_13);
}
function serialize_UNIT_STRUCT_TYPE(s, v) {}
function serialize_TUPLE_STRUCT_TYPE(s, v) {
s.serialize_number(U32_BYTES, false, v[0]);
s.serialize_string(v[1]);
}
function serialize_ENUM_TYPE(s, v) {
switch (v.tag) {
case "AVariant":
s.serialize_number(U32_BYTES, false, 0);
break;
case "BVariant":
{
s.serialize_number(U32_BYTES, false, 1);
s.serialize_number(U32_BYTES, false, v.value[0]);
s.serialize_string(v.value[1]);
}
break;
case "CVariant":
{
s.serialize_number(U32_BYTES, false, 2);
s.serialize_number(U32_BYTES, false, v.value.field_1);
s.serialize_string(v.value.field_2);
serialize_STRUCT_TYPE(s, v.value.struct_type);
}
break;
default:
throw "variant not implemented"
}
}
function serialize_sub_module_ENUM_TYPE(s, v) {
switch (v.tag) {
case "AVariant":
s.serialize_number(U32_BYTES, false, 0);
break;
case "BVariant":
{
s.serialize_number(U32_BYTES, false, 1);
s.serialize_number(U32_BYTES, false, v.value[0]);
s.serialize_string(v.value[1]);
}
break;
case "CVariant":
{
s.serialize_number(U32_BYTES, false, 2);
s.serialize_number(U32_BYTES, false, v.value.field_1);
s.serialize_string(v.value.field_2);
serialize_STRUCT_TYPE(s, v.value.struct_type);
}
break;
default:
throw "variant not implemented"
}
}
/**
* Serialize a value to an array of bytes.
* @param {string} type - The type of the value to serialize.
* @param {Object} value - The value to serialize.
* @return {Uint8Array} The serialized value as an array of bytes.
*/
function serialize(type, value) {
if (!(typeof type === "string")) {
throw new Error("type must be a string");
}
const s = new Serializer();
switch (type) {
case "StructType":
if (is_STRUCT_TYPE(value)) {
serialize_STRUCT_TYPE(s, value);
} else {
throw new Error("Value " + "StructType" + " has wrong format");
}
break;
case "UnitStructType":
if (is_UNIT_STRUCT_TYPE(value)) {
serialize_UNIT_STRUCT_TYPE(s, value);
} else {
throw new Error("Value " + "UnitStructType" + " has wrong format");
}
break;
case "TupleStructType":
if (is_TUPLE_STRUCT_TYPE(value)) {
serialize_TUPLE_STRUCT_TYPE(s, value);
} else {
throw new Error("Value " + "TupleStructType" + " has wrong format");
}
break;
case "EnumType":
if (is_ENUM_TYPE(value)) {
serialize_ENUM_TYPE(s, value);
} else {
throw new Error("Value " + "EnumType" + " has wrong format");
}
break;
case "sub_module.EnumType":
if (is_sub_module_ENUM_TYPE(value)) {
serialize_sub_module_ENUM_TYPE(s, value);
} else {
throw new Error("Value " + "sub_module.EnumType" + " has wrong format");
}
break;
default:
throw "type not implemented";
}
return s.finish();
}
exports.serialize = serialize