@iotize/tap
Version:
IoTize Device client for Javascript
31 lines • 3.02 kB
JavaScript
import { TapStreamReader, TapStreamWriter } from '../../frame/tap-stream-core';
function safeParseInt(v) {
const res = parseInt(v);
if (isNaN(res)) {
throw invalidStringVersionFormatError(v);
}
return res;
}
function invalidStringVersionFormatError(version) {
return new Error(`Invalid string version format for "${version}". Should be x.x.x. For example: 1.0.3.`);
}
export class StringVersionConverter {
encode(version, stream = new TapStreamWriter()) {
const parts = version.split('.');
if (parts.length !== 3) {
throw invalidStringVersionFormatError(version);
}
stream.writeUnsigned(safeParseInt(parts[0]), 1);
stream.writeUnsigned(safeParseInt(parts[1]), 1);
stream.writeUnsigned(safeParseInt(parts[2]), 2);
return stream.toBytes;
}
decode(data) {
// if (!data || data.length !== 4) {
// throw ConverterError.unexpectedBufferSize(4, data);
// }
const stream = data instanceof TapStreamReader ? data : TapStreamReader.create(data);
return `${stream.readUnsigned(1)}.${stream.readUnsigned(1)}.${stream.readUnsigned(2)}`;
}
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RyaW5nLXZlcnNpb24tY29udmVydGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vY2xpZW50L2ltcGwvc3JjL2xpYi9jb252ZXJ0ZXIvYm9keS9zdHJpbmctdmVyc2lvbi1jb252ZXJ0ZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUEsT0FBTyxFQUFFLGVBQWUsRUFBRSxlQUFlLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUUvRSxTQUFTLFlBQVksQ0FBQyxDQUFTO0lBQzdCLE1BQU0sR0FBRyxHQUFHLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUN4QixJQUFJLEtBQUssQ0FBQyxHQUFHLENBQUMsRUFBRTtRQUNkLE1BQU0sK0JBQStCLENBQUMsQ0FBQyxDQUFDLENBQUM7S0FDMUM7SUFDRCxPQUFPLEdBQUcsQ0FBQztBQUNiLENBQUM7QUFFRCxTQUFTLCtCQUErQixDQUFDLE9BQWU7SUFDdEQsT0FBTyxJQUFJLEtBQUssQ0FDZCxzQ0FBc0MsT0FBTyx5Q0FBeUMsQ0FDdkYsQ0FBQztBQUNKLENBQUM7QUFFRCxNQUFNLE9BQU8sc0JBQXNCO0lBQzFCLE1BQU0sQ0FDWCxPQUFlLEVBQ2YsU0FBMEIsSUFBSSxlQUFlLEVBQUU7UUFFL0MsTUFBTSxLQUFLLEdBQUcsT0FBTyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUNqQyxJQUFJLEtBQUssQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFO1lBQ3RCLE1BQU0sK0JBQStCLENBQUMsT0FBTyxDQUFDLENBQUM7U0FDaEQ7UUFDRCxNQUFNLENBQUMsYUFBYSxDQUFDLFlBQVksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztRQUVoRCxNQUFNLENBQUMsYUFBYSxDQUFDLFlBQVksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztRQUVoRCxNQUFNLENBQUMsYUFBYSxDQUFDLFlBQVksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztRQUVoRCxPQUFPLE1BQU0sQ0FBQyxPQUFPLENBQUM7SUFDeEIsQ0FBQztJQUVNLE1BQU0sQ0FBQyxJQUFrQztRQUM5QyxvQ0FBb0M7UUFDcEMsMERBQTBEO1FBQzFELElBQUk7UUFDSixNQUFNLE1BQU0sR0FDVixJQUFJLFlBQVksZUFBZSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLGVBQWUsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDeEUsT0FBTyxHQUFHLE1BQU0sQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLElBQUksTUFBTSxDQUFDLFlBQVksQ0FDckQsQ0FBQyxDQUNGLElBQUksTUFBTSxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO0lBQ2hDLENBQUM7Q0FDRiJ9