eightsleep
Version:
eightsleep api client
65 lines • 2.36 kB
JavaScript
;
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