UNPKG

@hpx7/delta-pack

Version:

A TypeScript code generator and runtime for binary serialization based on schemas.

53 lines (52 loc) 1.47 kB
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"); }