UNPKG

zon-format

Version:

ZON: The most token-efficient serialization format for LLMs - beats CSV, TOON, JSON, and all competitors

110 lines (109 loc) 3.52 kB
/** * ZON Document Versioning Utilities * * Provides version embedding, extraction, comparison, and validation * for ZON documents to support schema evolution and backward compatibility. */ export interface ZonDocumentMetadata { /** Semantic version of the document format (e.g., "1.3.0") */ version: string; /** Optional schema identifier (e.g., "user-profile-v2") */ schemaId?: string; /** Encoding format used ("zon" | "zon-binary") */ encoding?: string; /** Unix timestamp when document was created */ timestamp?: number; /** Custom metadata fields */ custom?: Record<string, any>; } /** * Embeds version metadata into a data object. * Adds a special __zon_meta field to the root object. * * @param data - Data object to add metadata to * @param version - Semantic version string (e.g., "1.0.0") * @param schemaId - Optional schema identifier * @returns Data object with embedded metadata * * @example * ```typescript * const data = { users: [{ id: 1, name: "Alice" }] }; * const versioned = embedVersion(data, "2.0.0", "user-schema"); * // Result: { __zon_meta: { version: "2.0.0", schemaId: "user-schema", ... }, users: [...] } * ``` */ export declare function embedVersion(data: any, version: string, schemaId?: string, encoding?: string): any; /** * Extracts version metadata from a decoded ZON document. * * @param data - Decoded data object * @returns Metadata if present, null otherwise * * @example * ```typescript * const decoded = decode(zonString); * const meta = extractVersion(decoded); * if (meta) { * console.log(`Version: ${meta.version}`); * } * ``` */ export declare function extractVersion(data: any): ZonDocumentMetadata | null; /** * Removes version metadata from a data object. * * @param data - Data object with metadata * @returns Data object without __zon_meta field */ export declare function stripVersion(data: any): any; /** * Compares two semantic version strings. * * @param v1 - First version (e.g., "1.2.3") * @param v2 - Second version (e.g., "2.0.0") * @returns -1 if v1 < v2, 0 if equal, 1 if v1 > v2 * * @example * ```typescript * compareVersions("1.0.0", "2.0.0") // -1 * compareVersions("2.0.0", "1.0.0") // 1 * compareVersions("1.0.0", "1.0.0") // 0 * ``` */ export declare function compareVersions(v1: string, v2: string): number; /** * Checks if a version is compatible with a required version. * Considers backward compatibility: patch and minor version bumps are compatible. * * @param current - Current version * @param required - Required version * @returns True if current version is compatible with required * * @example * ```typescript * isCompatible("1.2.3", "1.0.0") // true (same major) * isCompatible("2.0.0", "1.0.0") // false (different major) * isCompatible("1.0.0", "1.2.0") // false (current is older) * ``` */ export declare function isCompatible(current: string, required: string): boolean; /** * Validates a semantic version string. * * @param version - Version string to validate * @returns True if valid semantic version format */ export declare function isValidVersion(version: string): boolean; /** * Parses a version string into components. * * @param version - Version string (e.g., "1.2.3-alpha+build") * @returns Object with major, minor, patch, prerelease, build */ export declare function parseVersion(version: string): { major: number; minor: number; patch: number; prerelease?: string; build?: string; };