"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); const log = require("./log"); const utils = require("./utils"); class EspThermError extends Error { constructor(message) { super(message); } } exports.EspThermError = EspThermError; class EspThermData { constructor(temperature, voltage, timeConsumed) { this.temperature = temperature; this.voltage = voltage; this.timeConsumed = timeConsumed; } toString() { return JSON.stringify(this); } toJSON() { return utils.jsonPrepaper(this, []); } } exports.EspThermData = EspThermData; class EspThermMetadata { constructor(client, timestamp) { this.client = client; this.timestamp = (timestamp) ? timestamp : new Date(); } toString() { return JSON.stringify(this); } toJSON() { return utils.jsonPrepaper(this, []); } } exports.EspThermMetadata = EspThermMetadata; class EspThermMessage { constructor(client, temperature, voltage, timeConsumed) { this.data = new EspThermData(temperature, voltage, timeConsumed); this.metadata = new EspThermMetadata(client); } toString() { return JSON.stringify(this); } toJSON() { return utils.jsonPrepaper(this, []); } } exports.EspThermMessage = EspThermMessage; function espThermToJson(message) { let messageStr = "" + message; let parts = messageStr.split(' '); if (parts.length != 4) { throw new EspThermError(`too few or too much, ${parts.length} elements in message, it was "${message}"`); } let clientId = parts[0]; let temperature = parseFloat(parts[1]); log.info(`temperature: ${temperature}`); if ((typeof (temperature) != "number") || (temperature == null) || isNaN(temperature)) { throw new EspThermError(`temperature element should be a number, message was "${message}"`); } let voltage = parseFloat(parts[2]); if ((typeof (voltage) != "number") || (voltage == null) || isNaN(voltage)) { throw new EspThermError(`voltage element should be a number, message was "${message}"`); } let timeConsumed = parseInt(parts[3]); if ((typeof (timeConsumed) != "number") || (timeConsumed == null) || isNaN(timeConsumed)) { throw new EspThermError(`timeConsumed element should be a number, message was "${message}"`); } let espThermMessage = new EspThermMessage(clientId, temperature, voltage, timeConsumed); return espThermMessage; } exports.espThermToJson = espThermToJson; //# sourceMappingURL=espthermtojson.js.map