UNPKG

@node-dlc/wire

Version:
33 lines (30 loc) 887 B
import { EncodingType } from './EncodingType'; import { ZlibEncoder } from './ZlibEncoder'; export class Encoder { public encode(encoding: EncodingType, data: Buffer): Buffer { let encoded: Buffer; switch (encoding) { case EncodingType.Raw: encoded = data; break; case EncodingType.ZlibDeflate: encoded = new ZlibEncoder().encode(data); break; default: throw new Error('Unknown encoding type'); } return Buffer.concat([Buffer.from([encoding]), encoded]); } public decode(buffer: Buffer): Buffer { const encoding = buffer.readUInt8(0); const raw = buffer.slice(1); switch (encoding) { case EncodingType.Raw: return raw; case EncodingType.ZlibDeflate: return new ZlibEncoder().decode(raw); default: throw new Error('Unknown encoding type'); } } }