UNPKG

matterbridge-roborock-vacuum-plugin

Version:
101 lines 2.38 kB
/** * 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