UNPKG

eightsleep

Version:
65 lines 2.36 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.validateSideStatus = void 0; const baseerr_1 = __importDefault(require("baseerr")); class InvalidDeviceStatusError extends baseerr_1.default { } function validateDeviceStatus(deviceStatus) { if (typeof deviceStatus != 'object') { throw new InvalidDeviceStatusError('invalid device status', { deviceStatus, }); } const { left, right, solo } = deviceStatus; if (solo) { return { solo: validateSideStatus(solo) }; } return { left: validateSideStatus(left), right: validateSideStatus(right), }; } exports.default = validateDeviceStatus; class InvalidSideStatusError extends baseerr_1.default { } function validateSideStatus(sideStatus) { if (typeof sideStatus != 'object') { throw new InvalidSideStatusError('invalid side status', { sideStatus }); } const { currentActivity, currentLevel, currentTargetLevel, version, } = sideStatus; if (typeof currentActivity !== 'string') throw new InvalidSideStatusError('invalid currentActivity', { sideStatus }); if (typeof currentLevel !== 'number') throw new InvalidSideStatusError('invalid currentLevel', { sideStatus }); if (typeof currentTargetLevel !== 'number' || !/^-?(0|([1-9][0-9])|100)$/.test(currentTargetLevel.toString())) { throw new InvalidSideStatusError('invalid currentTargetLevel', { sideStatus, }); } if (typeof version !== 'number') throw new InvalidSideStatusError('invalid version', { sideStatus }); if (currentActivity === 'off' || currentActivity === 'on') { return { currentActivity, currentLevel, currentTargetLevel: currentTargetLevel, version, }; } else { const { smartTemperature } = sideStatus; return { currentActivity: currentActivity, currentLevel, currentTargetLevel: currentTargetLevel, smartTemperature, version, }; } } exports.validateSideStatus = validateSideStatus; //# sourceMappingURL=validateDeviceStatus.js.map