matterbridge-roborock-vacuum-plugin
Version:
Matterbridge Roborock Vacuum Plugin
101 lines • 2.38 kB
JavaScript
/**
* Registry for managing robot vacuum devices.
* Provides centralized storage and lookup for Device and RoborockVacuumCleaner instances.
*/
export class DeviceRegistry {
robots = new Map();
devices = new Map();
/**
* Register a device and its associated robot vacuum cleaner.
*/
register(device, robot) {
if (!device?.duid)
return;
this.devices.set(device.duid, device);
this.robots.set(device.duid, robot);
}
registerRobot(robot) {
if (!robot?.device.duid)
return;
this.robots.set(robot.device.duid, robot);
}
/**
* Register a device only (without robot).
* Used during device discovery before robot is created.
*/
registerDevice(device) {
if (!device?.duid)
return;
this.devices.set(device.duid, device);
}
/**
* Unregister a device and its robot by serial number.
*/
unregister(duid) {
this.devices.delete(duid);
this.robots.delete(duid);
}
/**
* Get a robot by serial number.
*/
getRobot(duid) {
return this.robots.get(duid);
}
/**
* Get a device by serial number.
*/
getDevice(duid) {
return this.devices.get(duid);
}
/**
* Get all registered robots.
*/
getAllRobots() {
return Array.from(this.robots.values());
}
/**
* Get all registered devices.
*/
getAllDevices() {
return Array.from(this.devices.values());
}
/**
* Get the number of registered devices.
*/
get size() {
return this.devices.size;
}
/**
* Check if there are any registered devices.
*/
hasDevices() {
return this.devices.size > 0;
}
/**
* Clear all registered devices and robots.
*/
clear() {
this.devices.clear();
this.robots.clear();
}
/**
* Iterate over all robot entries.
*/
*robotEntries() {
yield* this.robots.entries();
}
/**
* Iterate over all device entries.
*/
*deviceEntries() {
yield* this.devices.entries();
}
// Expose maps for backward compatibility
get robotsMap() {
return this.robots;
}
get devicesMap() {
return this.devices;
}
}
//# sourceMappingURL=deviceRegistry.js.map