UNPKG

@iotize/tap

Version:

IoTize Device client for Javascript

48 lines 3.72 kB
import { TapStreamReader, TapStreamWriter } from '@iotize/tap/client/impl'; import { readFieldLength, writeFieldLength, } from './tlv-mapped-json-compressor'; export function getRequiredByteLengthToEncodeInteger(input, signed) { const bits = Math.ceil(Math.log2(Math.abs(input) + 1)) + (signed ? 1 : 0); return Math.ceil(bits / 8); } export class TLVMappedJsonIntegerCompressor { constructor(signed) { this.signed = signed; } encode(input, stream = new TapStreamWriter()) { let bytesLength; if (input === 0) { bytesLength = 1; } else { bytesLength = getRequiredByteLengthToEncodeInteger(input, this.signed); if (bytesLength <= 0) { throw new Error('Invalid byte length ' + bytesLength); } } if (bytesLength === 3) { bytesLength = 4; } writeFieldLength(stream, bytesLength); if (this.signed) { stream.writeS(input, bytesLength); } else { stream.writeU(input, bytesLength); } return stream.toBytes; } decode(streamOrBuffer) { const stream = TapStreamReader.create(streamOrBuffer); const length = readFieldLength(stream); if (length === 0) { return 0; } if (this.signed) { return stream.readS(length); } else { return stream.readU(length); } } } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGx2LW1hcHBlZC1qc29uLWludGVnZXItY29udmVydGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vZXh0cmEvZGJpb3Qvc3JjL2xpYi9qc29uLWNvbXByZXNzb3IvdGx2LW1hcHBlZC1qc29uLWludGVnZXItY29udmVydGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxlQUFlLEVBQUUsZUFBZSxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFFM0UsT0FBTyxFQUNMLGVBQWUsRUFDZixnQkFBZ0IsR0FDakIsTUFBTSw4QkFBOEIsQ0FBQztBQUV0QyxNQUFNLFVBQVUsb0NBQW9DLENBQ2xELEtBQWEsRUFDYixNQUFlO0lBRWYsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUMxRSxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxHQUFHLENBQUMsQ0FBQyxDQUFDO0FBQzdCLENBQUM7QUFFRCxNQUFNLE9BQU8sOEJBQThCO0lBR3pDLFlBQW9CLE1BQWU7UUFBZixXQUFNLEdBQU4sTUFBTSxDQUFTO0lBQUcsQ0FBQztJQUV2QyxNQUFNLENBQ0osS0FBYSxFQUNiLFNBQTBCLElBQUksZUFBZSxFQUFFO1FBRS9DLElBQUksV0FBbUIsQ0FBQztRQUN4QixJQUFJLEtBQUssS0FBSyxDQUFDLEVBQUU7WUFDZixXQUFXLEdBQUcsQ0FBQyxDQUFDO1NBQ2pCO2FBQU07WUFDTCxXQUFXLEdBQUcsb0NBQW9DLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztZQUN2RSxJQUFJLFdBQVcsSUFBSSxDQUFDLEVBQUU7Z0JBQ3BCLE1BQU0sSUFBSSxLQUFLLENBQUMsc0JBQXNCLEdBQUcsV0FBVyxDQUFDLENBQUM7YUFDdkQ7U0FDRjtRQUNELElBQUksV0FBVyxLQUFLLENBQUMsRUFBRTtZQUNyQixXQUFXLEdBQUcsQ0FBQyxDQUFDO1NBQ2pCO1FBQ0QsZ0JBQWdCLENBQUMsTUFBTSxFQUFFLFdBQVcsQ0FBQyxDQUFDO1FBQ3RDLElBQUksSUFBSSxDQUFDLE1BQU0sRUFBRTtZQUNmLE1BQU0sQ0FBQyxNQUFNLENBQUMsS0FBSyxFQUFFLFdBQVcsQ0FBQyxDQUFDO1NBQ25DO2FBQU07WUFDTCxNQUFNLENBQUMsTUFBTSxDQUFDLEtBQUssRUFBRSxXQUFXLENBQUMsQ0FBQztTQUNuQztRQUNELE9BQU8sTUFBTSxDQUFDLE9BQU8sQ0FBQztJQUN4QixDQUFDO0lBRUQsTUFBTSxDQUFDLGNBQTRDO1FBQ2pELE1BQU0sTUFBTSxHQUFHLGVBQWUsQ0FBQyxNQUFNLENBQUMsY0FBYyxDQUFDLENBQUM7UUFDdEQsTUFBTSxNQUFNLEdBQUcsZUFBZSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ3ZDLElBQUksTUFBTSxLQUFLLENBQUMsRUFBRTtZQUNoQixPQUFPLENBQUMsQ0FBQztTQUNWO1FBQ0QsSUFBSSxJQUFJLENBQUMsTUFBTSxFQUFFO1lBQ2YsT0FBTyxNQUFNLENBQUMsS0FBSyxDQUFDLE1BQW1CLENBQUMsQ0FBQztTQUMxQzthQUFNO1lBQ0wsT0FBTyxNQUFNLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1NBQzdCO0lBQ0gsQ0FBQztDQUNGIn0=