matterbridge-roborock-vacuum-plugin
Version:
Matterbridge Roborock Vacuum Plugin
64 lines • 2 kB
JavaScript
import { BaseError } from './BaseError.js';
/** Base error for device operations. */
export class DeviceError extends BaseError {
duid;
constructor(message, duid, metadata) {
super(message, 'DEVICE_ERROR', 500, { ...metadata, duid });
this.duid = duid;
}
}
/** Device not found in user's account. */
export class DeviceNotFoundError extends DeviceError {
constructor(duid) {
super(`Device not found: ${duid}`, duid, {
reason: 'NOT_FOUND',
});
}
}
/** Device connection failed. */
export class DeviceConnectionError extends DeviceError {
constructor(duid, reason, details) {
super(`Failed to connect to device: ${duid}. ${reason}`, duid, {
reason: 'CONNECTION_FAILED',
connectionReason: reason,
...details,
});
}
}
/** Device is offline or unreachable. */
export class DeviceOfflineError extends DeviceError {
constructor(duid) {
super(`Device is offline: ${duid}`, duid, {
reason: 'DEVICE_OFFLINE',
});
}
}
/** Device command failed. */
export class DeviceCommandError extends DeviceError {
constructor(duid, command, reason) {
super(`Command failed for device ${duid}: ${command}. ${reason ?? ''}`, duid, {
reason: 'COMMAND_FAILED',
command,
commandReason: reason,
});
}
}
/** Device model not supported. */
export class UnsupportedDeviceError extends DeviceError {
constructor(model, duid) {
super(`Device model is not supported: ${model}`, duid, {
reason: 'UNSUPPORTED_MODEL',
model,
});
}
}
/** Device initialization failed. */
export class DeviceInitializationError extends DeviceError {
constructor(duid, reason) {
super(`Failed to initialize device: ${duid}. ${reason}`, duid, {
reason: 'INITIALIZATION_FAILED',
initReason: reason,
});
}
}
//# sourceMappingURL=DeviceError.js.map