UNPKG

json-joy

Version:

Collection of libraries for building collaborative editing apps.

44 lines (43 loc) 1.42 kB
import { readFileSync } from 'fs'; import { MsgPackEncoder } from '@jsonjoy.com/json-pack/lib/msgpack'; import { CborEncoder } from '@jsonjoy.com/json-pack/lib/cbor/CborEncoder'; import * as JSONB from '@jsonjoy.com/json-pack/lib/json-binary'; import arg from 'arg'; const args = arg({ '--format': String, '--cbor': Boolean, }, { argv: process.argv, }); const ALLOWED_FORMATS = new Set(['msgpack', 'messagepack', 'cbor']); const format = args['--cbor'] ? 'cbor' : String(args['--format'] ?? 'msgpack').toLowerCase(); if (!ALLOWED_FORMATS.has(format)) throw new Error(`Unknown format: ${format}`); try { switch (format) { case 'msgpack': case 'messagepack': { const encoder = new MsgPackEncoder(); const buf = readFileSync(0); const doc = JSONB.parse(buf.toString()); const encoded = encoder.encode(doc); process.stdout.write(encoded); break; } case 'cbor': { const encoder = new CborEncoder(); const buf = readFileSync(0); const doc = JSONB.parse(buf.toString()); const encoded = encoder.encode(doc); process.stdout.write(encoded); break; } } } catch (error) { const output = error instanceof Error ? error.message : String(error); process.stderr.write(output + '\n'); process.exit(1); }