mpackdb
All repositories: gitoria
1.1 KB
import { pack, unpack } from 'msgpackr';/*** Serialize object to MessagePack with 4-byte length prefix* Format: [4-byte LE size][MessagePack data]*/export function serialize(obj) {const msgpackData = pack(obj);const totalSize = 4 + msgpackData.length;const buffer = Buffer.allocUnsafe(totalSize);// Write 4-byte length prefix (little-endian)buffer.writeInt32LE(totalSize, 0);// Copy MessagePack data after the length prefixmsgpackData.copy(buffer, 4);return buffer;}/*** Deserialize MessagePack data (expects data WITHOUT length prefix)*/export function deserialize(buffer) {return unpack(buffer);}/*** Read size from buffer (first 4 bytes)*/export function readSize(buffer) {return buffer.readInt32LE(0);}/*** Sortable unique ID generator: 9-char base36 timestamp + 3-char base36 random*/export function uuid() {const t = Date.now().toString(36).padStart(9, '0');const r = Math.random().toString(36).slice(2, 5).padStart(3, '0');return t + r;}export const PrimaryKeyType = {NUMBER: 0,UUID: 1,STRING: 2,};export const IndexType = {LEXICAL: 0,NUMERIC: 1,};
Branches
- mastermain branch