UNPKG

@iotize/tap

Version:

IoTize Device client for Javascript

41 lines 3.59 kB
import { TapStreamReader, TapStreamWriter } from '@iotize/tap/client/impl'; import { readFieldLength, writeFieldLength, } from './tlv-mapped-json-compressor'; import { getRequiredByteLengthToEncodeInteger } from './tlv-mapped-json-integer-converter'; export class TLVMappedFloat64Compressor { encode(input, stream = new TapStreamWriter()) { if (input === 0) { writeFieldLength(stream, 0); return stream.toBytes; } if (Number.isInteger(input)) { const length = getRequiredByteLengthToEncodeInteger(input, true); if (length < 3) { writeFieldLength(stream, length); stream.writeS(input, length); return stream.toBytes; } } let floatLength = Math.fround(input) === input ? 4 : 8; writeFieldLength(stream, floatLength); stream.writeF(input, floatLength); return stream.toBytes; } decode(streamOrBuffer) { const stream = TapStreamReader.create(streamOrBuffer); const length = readFieldLength(stream); if (length === 0) { return 0; } else if (length === 4 || length == 8) { return stream.readFloat(length); } else if (length < 3) { return stream.readS(length); } else { console.warn(`failed to decode float64 number with length "${length}"`); return 0; } } } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGx2LW1hcHBlZC1mbG9hdC02NC1jb252ZXJ0ZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9leHRyYS9kYmlvdC9zcmMvbGliL2pzb24tY29tcHJlc3Nvci90bHYtbWFwcGVkLWZsb2F0LTY0LWNvbnZlcnRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsZUFBZSxFQUFFLGVBQWUsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBRTNFLE9BQU8sRUFDTCxlQUFlLEVBQ2YsZ0JBQWdCLEdBQ2pCLE1BQU0sOEJBQThCLENBQUM7QUFDdEMsT0FBTyxFQUFFLG9DQUFvQyxFQUFFLE1BQU0scUNBQXFDLENBQUM7QUFFM0YsTUFBTSxPQUFPLDBCQUEwQjtJQUdyQyxNQUFNLENBQ0osS0FBYSxFQUNiLFNBQTBCLElBQUksZUFBZSxFQUFFO1FBRS9DLElBQUksS0FBSyxLQUFLLENBQUMsRUFBRTtZQUNmLGdCQUFnQixDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUMsQ0FBQztZQUM1QixPQUFPLE1BQU0sQ0FBQyxPQUFPLENBQUM7U0FDdkI7UUFDRCxJQUFJLE1BQU0sQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLEVBQUU7WUFDM0IsTUFBTSxNQUFNLEdBQUcsb0NBQW9DLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxDQUFDO1lBQ2pFLElBQUksTUFBTSxHQUFHLENBQUMsRUFBRTtnQkFDZCxnQkFBZ0IsQ0FBQyxNQUFNLEVBQUUsTUFBTSxDQUFDLENBQUM7Z0JBQ2pDLE1BQU0sQ0FBQyxNQUFNLENBQUMsS0FBSyxFQUFFLE1BQU0sQ0FBQyxDQUFDO2dCQUM3QixPQUFPLE1BQU0sQ0FBQyxPQUFPLENBQUM7YUFDdkI7U0FDRjtRQUNELElBQUksV0FBVyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLEtBQUssS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUN2RCxnQkFBZ0IsQ0FBQyxNQUFNLEVBQUUsV0FBVyxDQUFDLENBQUM7UUFDdEMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxLQUFLLEVBQUUsV0FBVyxDQUFDLENBQUM7UUFDbEMsT0FBTyxNQUFNLENBQUMsT0FBTyxDQUFDO0lBQ3hCLENBQUM7SUFFRCxNQUFNLENBQUMsY0FBNEM7UUFDakQsTUFBTSxNQUFNLEdBQUcsZUFBZSxDQUFDLE1BQU0sQ0FBQyxjQUFjLENBQUMsQ0FBQztRQUN0RCxNQUFNLE1BQU0sR0FBRyxlQUFlLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDdkMsSUFBSSxNQUFNLEtBQUssQ0FBQyxFQUFFO1lBQ2hCLE9BQU8sQ0FBQyxDQUFDO1NBQ1Y7YUFBTSxJQUFJLE1BQU0sS0FBSyxDQUFDLElBQUksTUFBTSxJQUFJLENBQUMsRUFBRTtZQUN0QyxPQUFPLE1BQU0sQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLENBQUM7U0FDakM7YUFBTSxJQUFJLE1BQU0sR0FBRyxDQUFDLEVBQUU7WUFDckIsT0FBTyxNQUFNLENBQUMsS0FBSyxDQUFDLE1BQWUsQ0FBQyxDQUFDO1NBQ3RDO2FBQU07WUFDTCxPQUFPLENBQUMsSUFBSSxDQUFDLGdEQUFnRCxNQUFNLEdBQUcsQ0FBQyxDQUFDO1lBQ3hFLE9BQU8sQ0FBQyxDQUFDO1NBQ1Y7SUFDSCxDQUFDO0NBQ0YifQ==