postcard-bindgen-core 0.7.1

A crate to generate bindings for the postcard binary format for other languages than Rust - Core Crate
Documentation
---
source: postcard-bindgen-core/tests/javascript.rs
expression: des_file
---
function deserialize_STRUCT_TYPE(d) {
    return {
        field_1: d.deserialize_number(U32_BYTES, false),
        field_2: d.deserialize_string(),
        field_3: d.deserialize_array(() => d.deserialize_number(U32_BYTES, false)),
        field_4: d.deserialize_array(() => deserialize_STRUCT_TYPE(d)),
        field_5: {
            start: d.deserialize_number(U32_BYTES, false),
            end: d.deserialize_number(U32_BYTES, false)
        },
        field_6: d.deserialize_string_key_map(((d) => d.deserialize_number(U32_BYTES, false))),
        field_7: d.deserialize_map(((d) => [
            d.deserialize_number(U32_BYTES, false),
            d.deserialize_number(U32_BYTES, false)
        ])),
        field_8: (d.deserialize_number(U32_BYTES, false) === 0) ? undefined : d.deserialize_number(U32_BYTES, false),
        field_9: d.deserialize_bool(),
        field_10: [
            d.deserialize_number(U32_BYTES, false),
            d.deserialize_string()
        ],
        field_11: d.deserialize_array(() => d.deserialize_string(), 3),
        field_12: d.deserialize_array(() => d.deserialize_number(U32_BYTES, false)),
        field_13: d.deserialize_number_float(U32_BYTES)
    };
}

function deserialize_UNIT_STRUCT_TYPE(d) {
    return {};
}

function deserialize_TUPLE_STRUCT_TYPE(d) {
    return [
        d.deserialize_number(U32_BYTES, false),
        d.deserialize_string()
    ];
}

function deserialize_ENUM_TYPE(d) {
    switch (d.deserialize_number(U32_BYTES, false)) {
    case 0:
        return {
            tag: "AVariant"
        };
    case 1:
        return {
            tag: "BVariant",
            value: [
                d.deserialize_number(U32_BYTES, false),
                d.deserialize_string()
            ]
        };
    case 2:
        return {
            tag: "CVariant",
            value: {
                field_1: d.deserialize_number(U32_BYTES, false),
                field_2: d.deserialize_string(),
                struct_type: deserialize_STRUCT_TYPE(d)
            }
        };
    default:
        throw "variant not implemented"
    }
}

function deserialize_sub_module_ENUM_TYPE(d) {
    switch (d.deserialize_number(U32_BYTES, false)) {
    case 0:
        return {
            tag: "AVariant"
        };
    case 1:
        return {
            tag: "BVariant",
            value: [
                d.deserialize_number(U32_BYTES, false),
                d.deserialize_string()
            ]
        };
    case 2:
        return {
            tag: "CVariant",
            value: {
                field_1: d.deserialize_number(U32_BYTES, false),
                field_2: d.deserialize_string(),
                struct_type: deserialize_STRUCT_TYPE(d)
            }
        };
    default:
        throw "variant not implemented"
    }
}

/**
 * Deserialize a value from an array of bytes.
 * @param {string} type - The type of the value to deserialize.
 * @param {Uint8Array} bytes - The byte array to deserialize from.
 * @return {Object} The deserialized value and remaining bytes.
 */
function deserialize(type, bytes) {
    if (!(typeof type === "string")) {
        throw "type must be a string";
    }
    const d = new Deserializer(bytes);
    var return_value = undefined;
    switch (type) {
    case "StructType":
        return_value = deserialize_STRUCT_TYPE(d);
        break;
    case "UnitStructType":
        return_value = deserialize_UNIT_STRUCT_TYPE(d);
        break;
    case "TupleStructType":
        return_value = deserialize_TUPLE_STRUCT_TYPE(d);
        break;
    case "EnumType":
        return_value = deserialize_ENUM_TYPE(d);
        break;
    case "sub_module.EnumType":
        return_value = deserialize_sub_module_ENUM_TYPE(d);
        break;
    default:
        throw "type not implemented";
    }
    return { value: return_value, bytes: d.release_bytes() };
}

export {
    deserialize
};