@dcl/ecs
Version:
Decentraland ECS
31 lines (30 loc) • 723 B
JavaScript
/**
* @internal
*/
export const IOptional = (spec) => {
return {
serialize(value, builder) {
if (value) {
builder.writeInt8(1);
spec.serialize(value, builder);
}
else {
builder.writeInt8(0);
}
},
deserialize(reader) {
const exists = reader.readInt8();
if (exists) {
return spec.deserialize(reader);
}
},
create() {
return undefined;
},
jsonSchema: {
type: spec.jsonSchema.type,
serializationType: 'optional',
optionalJsonSchema: spec.jsonSchema
}
};
};