eightsleep
Version:
eightsleep api client
57 lines • 2 kB
JavaScript
import BaseError from 'baseerr';
class InvalidDeviceStatusError extends BaseError {
}
export 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),
};
}
class InvalidSideStatusError extends BaseError {
}
export 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,
};
}
}
//# sourceMappingURL=validateDeviceStatus.js.map