@hpx7/delta-pack
Version:
A TypeScript code generator and runtime for binary serialization based on schemas.
53 lines (52 loc) • 1.47 kB
JavaScript
export function ReferenceType(reference) {
return { type: "reference", reference };
}
export function ObjectType(properties) {
return { type: "object", properties };
}
export function UnionType(options) {
return { type: "union", options };
}
export function ArrayType(value) {
return { type: "array", value };
}
export function OptionalType(value) {
return { type: "optional", value };
}
export function RecordType(key, value) {
return { type: "record", key, value };
}
export function EnumType(options) {
return { type: "enum", options };
}
export function StringType() {
return { type: "string" };
}
export function IntType() {
return { type: "int" };
}
export function UIntType() {
return { type: "uint" };
}
export function FloatType(options) {
return { type: "float", precision: options?.precision };
}
export function BooleanType() {
return { type: "boolean" };
}
export function isPrimitiveType(type, schema) {
// Resolve references if schema provided
if (type.type === "reference" && schema) {
const refType = schema[type.reference];
if (!refType) {
throw new Error(`Unknown reference type: ${type.reference}`);
}
return isPrimitiveType(refType, schema);
}
return (type.type === "string" ||
type.type === "int" ||
type.type === "uint" ||
type.type === "float" ||
type.type === "boolean" ||
type.type === "enum");
}