homebridge 2.0.0-beta.5 → 2.0.0-beta.51
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +16 -17
- package/bin/homebridge.js +22 -0
- package/config-sample.json +3 -3
- package/dist/api.d.ts +137 -0
- package/dist/api.d.ts.map +1 -0
- package/dist/api.js +151 -0
- package/dist/api.js.map +1 -0
- package/{lib → dist}/bridgeService.d.ts +16 -32
- package/dist/bridgeService.d.ts.map +1 -0
- package/dist/bridgeService.js +341 -0
- package/dist/bridgeService.js.map +1 -0
- package/dist/childBridgeFork.d.ts +40 -0
- package/dist/childBridgeFork.d.ts.map +1 -0
- package/dist/childBridgeFork.js +362 -0
- package/dist/childBridgeFork.js.map +1 -0
- package/dist/childBridgeService.d.ts +146 -0
- package/dist/childBridgeService.d.ts.map +1 -0
- package/dist/childBridgeService.js +416 -0
- package/dist/childBridgeService.js.map +1 -0
- package/dist/cli.d.ts +3 -0
- package/dist/cli.d.ts.map +1 -0
- package/dist/cli.js +88 -0
- package/dist/cli.js.map +1 -0
- package/dist/externalPortService.d.ts +26 -0
- package/dist/externalPortService.d.ts.map +1 -0
- package/dist/externalPortService.js +77 -0
- package/dist/externalPortService.js.map +1 -0
- package/dist/index.d.ts +29 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +9 -0
- package/dist/index.js.map +1 -0
- package/dist/ipcService.d.ts +58 -0
- package/dist/ipcService.d.ts.map +1 -0
- package/dist/ipcService.js +43 -0
- package/dist/ipcService.js.map +1 -0
- package/dist/logger.d.ts +38 -0
- package/dist/logger.d.ts.map +1 -0
- package/dist/logger.js +102 -0
- package/dist/logger.js.map +1 -0
- package/dist/matter/BaseMatterManager.d.ts +20 -0
- package/dist/matter/BaseMatterManager.d.ts.map +1 -0
- package/dist/matter/BaseMatterManager.js +183 -0
- package/dist/matter/BaseMatterManager.js.map +1 -0
- package/dist/matter/ChildBridgeMatterManager.d.ts +35 -0
- package/dist/matter/ChildBridgeMatterManager.d.ts.map +1 -0
- package/dist/matter/ChildBridgeMatterManager.js +222 -0
- package/dist/matter/ChildBridgeMatterManager.js.map +1 -0
- package/dist/matter/ClusterCommandMapper.d.ts +5 -0
- package/dist/matter/ClusterCommandMapper.d.ts.map +1 -0
- package/dist/matter/ClusterCommandMapper.js +222 -0
- package/dist/matter/ClusterCommandMapper.js.map +1 -0
- package/dist/matter/ExternalMatterAccessoryPublisher.d.ts +22 -0
- package/dist/matter/ExternalMatterAccessoryPublisher.d.ts.map +1 -0
- package/dist/matter/ExternalMatterAccessoryPublisher.js +49 -0
- package/dist/matter/ExternalMatterAccessoryPublisher.js.map +1 -0
- package/dist/matter/MatterAPIImpl.d.ts +443 -0
- package/dist/matter/MatterAPIImpl.d.ts.map +1 -0
- package/dist/matter/MatterAPIImpl.js +210 -0
- package/dist/matter/MatterAPIImpl.js.map +1 -0
- package/dist/matter/MatterBridgeManager.d.ts +40 -0
- package/dist/matter/MatterBridgeManager.d.ts.map +1 -0
- package/dist/matter/MatterBridgeManager.js +340 -0
- package/dist/matter/MatterBridgeManager.js.map +1 -0
- package/dist/matter/MatterConfigCollector.d.ts +7 -0
- package/dist/matter/MatterConfigCollector.d.ts.map +1 -0
- package/dist/matter/MatterConfigCollector.js +65 -0
- package/dist/matter/MatterConfigCollector.js.map +1 -0
- package/dist/matter/accessoryCache.d.ts +57 -0
- package/dist/matter/accessoryCache.d.ts.map +1 -0
- package/dist/matter/accessoryCache.js +155 -0
- package/dist/matter/accessoryCache.js.map +1 -0
- package/dist/matter/behaviors/AirQualityBehavior.d.ts +8 -0
- package/dist/matter/behaviors/AirQualityBehavior.d.ts.map +1 -0
- package/dist/matter/behaviors/AirQualityBehavior.js +11 -0
- package/dist/matter/behaviors/AirQualityBehavior.js.map +1 -0
- package/dist/matter/behaviors/BehaviorRegistry.d.ts +27 -0
- package/dist/matter/behaviors/BehaviorRegistry.d.ts.map +1 -0
- package/dist/matter/behaviors/BehaviorRegistry.js +110 -0
- package/dist/matter/behaviors/BehaviorRegistry.js.map +1 -0
- package/dist/matter/behaviors/ColorControlBehavior.d.ts +12 -0
- package/dist/matter/behaviors/ColorControlBehavior.d.ts.map +1 -0
- package/dist/matter/behaviors/ColorControlBehavior.js +139 -0
- package/dist/matter/behaviors/ColorControlBehavior.js.map +1 -0
- package/dist/matter/behaviors/ConcentrationMeasurementBehavior.d.ts +32 -0
- package/dist/matter/behaviors/ConcentrationMeasurementBehavior.d.ts.map +1 -0
- package/dist/matter/behaviors/ConcentrationMeasurementBehavior.js +51 -0
- package/dist/matter/behaviors/ConcentrationMeasurementBehavior.js.map +1 -0
- package/dist/matter/behaviors/DoorLockBehavior.d.ts +7 -0
- package/dist/matter/behaviors/DoorLockBehavior.d.ts.map +1 -0
- package/dist/matter/behaviors/DoorLockBehavior.js +48 -0
- package/dist/matter/behaviors/DoorLockBehavior.js.map +1 -0
- package/dist/matter/behaviors/FanControlBehavior.d.ts +7 -0
- package/dist/matter/behaviors/FanControlBehavior.d.ts.map +1 -0
- package/dist/matter/behaviors/FanControlBehavior.js +57 -0
- package/dist/matter/behaviors/FanControlBehavior.js.map +1 -0
- package/dist/matter/behaviors/IdentifyBehavior.d.ts +7 -0
- package/dist/matter/behaviors/IdentifyBehavior.d.ts.map +1 -0
- package/dist/matter/behaviors/IdentifyBehavior.js +25 -0
- package/dist/matter/behaviors/IdentifyBehavior.js.map +1 -0
- package/dist/matter/behaviors/LevelControlBehavior.d.ts +11 -0
- package/dist/matter/behaviors/LevelControlBehavior.d.ts.map +1 -0
- package/dist/matter/behaviors/LevelControlBehavior.js +100 -0
- package/dist/matter/behaviors/LevelControlBehavior.js.map +1 -0
- package/dist/matter/behaviors/OnOffBehavior.d.ts +8 -0
- package/dist/matter/behaviors/OnOffBehavior.d.ts.map +1 -0
- package/dist/matter/behaviors/OnOffBehavior.js +60 -0
- package/dist/matter/behaviors/OnOffBehavior.js.map +1 -0
- package/dist/matter/behaviors/RegistryManager.d.ts +15 -0
- package/dist/matter/behaviors/RegistryManager.d.ts.map +1 -0
- package/dist/matter/behaviors/RegistryManager.js +31 -0
- package/dist/matter/behaviors/RegistryManager.js.map +1 -0
- package/dist/matter/behaviors/RvcCleanModeBehavior.d.ts +14 -0
- package/dist/matter/behaviors/RvcCleanModeBehavior.d.ts.map +1 -0
- package/dist/matter/behaviors/RvcCleanModeBehavior.js +29 -0
- package/dist/matter/behaviors/RvcCleanModeBehavior.js.map +1 -0
- package/dist/matter/behaviors/RvcOperationalStateBehavior.d.ts +10 -0
- package/dist/matter/behaviors/RvcOperationalStateBehavior.d.ts.map +1 -0
- package/dist/matter/behaviors/RvcOperationalStateBehavior.js +81 -0
- package/dist/matter/behaviors/RvcOperationalStateBehavior.js.map +1 -0
- package/dist/matter/behaviors/RvcRunModeBehavior.d.ts +14 -0
- package/dist/matter/behaviors/RvcRunModeBehavior.d.ts.map +1 -0
- package/dist/matter/behaviors/RvcRunModeBehavior.js +29 -0
- package/dist/matter/behaviors/RvcRunModeBehavior.js.map +1 -0
- package/dist/matter/behaviors/ServiceAreaBehavior.d.ts +9 -0
- package/dist/matter/behaviors/ServiceAreaBehavior.d.ts.map +1 -0
- package/dist/matter/behaviors/ServiceAreaBehavior.js +62 -0
- package/dist/matter/behaviors/ServiceAreaBehavior.js.map +1 -0
- package/dist/matter/behaviors/ThermostatBehavior.d.ts +9 -0
- package/dist/matter/behaviors/ThermostatBehavior.d.ts.map +1 -0
- package/dist/matter/behaviors/ThermostatBehavior.js +92 -0
- package/dist/matter/behaviors/ThermostatBehavior.js.map +1 -0
- package/dist/matter/behaviors/WindowCoveringBehavior.d.ts +12 -0
- package/dist/matter/behaviors/WindowCoveringBehavior.d.ts.map +1 -0
- package/dist/matter/behaviors/WindowCoveringBehavior.js +108 -0
- package/dist/matter/behaviors/WindowCoveringBehavior.js.map +1 -0
- package/dist/matter/behaviors/index.d.ts +18 -0
- package/dist/matter/behaviors/index.d.ts.map +1 -0
- package/dist/matter/behaviors/index.js +17 -0
- package/dist/matter/behaviors/index.js.map +1 -0
- package/dist/matter/clusterTypes.d.ts +178 -0
- package/dist/matter/clusterTypes.d.ts.map +1 -0
- package/dist/matter/clusterTypes.js +2 -0
- package/dist/matter/clusterTypes.js.map +1 -0
- package/dist/matter/configValidator.d.ts +26 -0
- package/dist/matter/configValidator.d.ts.map +1 -0
- package/dist/matter/configValidator.js +173 -0
- package/dist/matter/configValidator.js.map +1 -0
- package/dist/matter/errorHandler.d.ts +11 -0
- package/dist/matter/errorHandler.d.ts.map +1 -0
- package/dist/matter/errorHandler.js +81 -0
- package/dist/matter/errorHandler.js.map +1 -0
- package/dist/matter/errors.d.ts +46 -0
- package/dist/matter/errors.d.ts.map +1 -0
- package/dist/matter/errors.js +68 -0
- package/dist/matter/errors.js.map +1 -0
- package/dist/matter/index.d.ts +97 -0
- package/dist/matter/index.d.ts.map +1 -0
- package/dist/matter/index.js +10 -0
- package/dist/matter/index.js.map +1 -0
- package/dist/matter/logFormatter.d.ts +2 -0
- package/dist/matter/logFormatter.d.ts.map +1 -0
- package/dist/matter/logFormatter.js +100 -0
- package/dist/matter/logFormatter.js.map +1 -0
- package/dist/matter/managerTypes.d.ts +57 -0
- package/dist/matter/managerTypes.d.ts.map +1 -0
- package/dist/matter/managerTypes.js +2 -0
- package/dist/matter/managerTypes.js.map +1 -0
- package/dist/matter/server.d.ts +112 -0
- package/dist/matter/server.d.ts.map +1 -0
- package/dist/matter/server.js +1508 -0
- package/dist/matter/server.js.map +1 -0
- package/dist/matter/serverHelpers.d.ts +31 -0
- package/dist/matter/serverHelpers.d.ts.map +1 -0
- package/dist/matter/serverHelpers.js +273 -0
- package/dist/matter/serverHelpers.js.map +1 -0
- package/dist/matter/sharedTypes.d.ts +93 -0
- package/dist/matter/sharedTypes.d.ts.map +1 -0
- package/dist/matter/sharedTypes.js +20 -0
- package/dist/matter/sharedTypes.js.map +1 -0
- package/dist/matter/storage.d.ts +45 -0
- package/dist/matter/storage.d.ts.map +1 -0
- package/dist/matter/storage.js +325 -0
- package/dist/matter/storage.js.map +1 -0
- package/dist/matter/typeHelpers.d.ts +15 -0
- package/dist/matter/typeHelpers.d.ts.map +1 -0
- package/dist/matter/typeHelpers.js +33 -0
- package/dist/matter/typeHelpers.js.map +1 -0
- package/dist/matter/types.d.ts +565 -0
- package/dist/matter/types.d.ts.map +1 -0
- package/dist/matter/types.js +132 -0
- package/dist/matter/types.js.map +1 -0
- package/dist/matter/utils.d.ts +13 -0
- package/dist/matter/utils.d.ts.map +1 -0
- package/dist/matter/utils.js +21 -0
- package/dist/matter/utils.js.map +1 -0
- package/{lib → dist}/platformAccessory.d.ts +8 -21
- package/dist/platformAccessory.d.ts.map +1 -0
- package/dist/platformAccessory.js +79 -0
- package/dist/platformAccessory.js.map +1 -0
- package/{lib → dist}/plugin.d.ts +2 -6
- package/dist/plugin.d.ts.map +1 -0
- package/dist/plugin.js +159 -0
- package/dist/plugin.js.map +1 -0
- package/{lib → dist}/pluginManager.d.ts +3 -25
- package/dist/pluginManager.d.ts.map +1 -0
- package/{lib → dist}/pluginManager.js +87 -115
- package/dist/pluginManager.js.map +1 -0
- package/{lib → dist}/server.d.ts +15 -20
- package/dist/server.d.ts.map +1 -0
- package/dist/server.js +732 -0
- package/dist/server.js.map +1 -0
- package/{lib → dist}/storageService.d.ts.map +1 -1
- package/dist/storageService.js +41 -0
- package/dist/storageService.js.map +1 -0
- package/{lib → dist}/user.d.ts +1 -3
- package/dist/user.d.ts.map +1 -0
- package/dist/user.js +29 -0
- package/dist/user.js.map +1 -0
- package/{lib → dist}/util/mac.d.ts +1 -0
- package/dist/util/mac.d.ts.map +1 -0
- package/dist/util/mac.js +13 -0
- package/dist/util/mac.js.map +1 -0
- package/dist/version.d.ts.map +1 -0
- package/dist/version.js +16 -0
- package/dist/version.js.map +1 -0
- package/package.json +49 -50
- package/bin/homebridge +0 -17
- package/lib/api.d.ts +0 -210
- package/lib/api.d.ts.map +0 -1
- package/lib/api.js +0 -155
- package/lib/api.js.map +0 -1
- package/lib/bridgeService.d.ts.map +0 -1
- package/lib/bridgeService.js +0 -426
- package/lib/bridgeService.js.map +0 -1
- package/lib/childBridgeFork.d.ts +0 -37
- package/lib/childBridgeFork.d.ts.map +0 -1
- package/lib/childBridgeFork.js +0 -244
- package/lib/childBridgeFork.js.map +0 -1
- package/lib/childBridgeService.d.ts +0 -199
- package/lib/childBridgeService.d.ts.map +0 -1
- package/lib/childBridgeService.js +0 -428
- package/lib/childBridgeService.js.map +0 -1
- package/lib/cli.d.ts +0 -4
- package/lib/cli.d.ts.map +0 -1
- package/lib/cli.js +0 -111
- package/lib/cli.js.map +0 -1
- package/lib/externalPortService.d.ts +0 -33
- package/lib/externalPortService.d.ts.map +0 -1
- package/lib/externalPortService.js +0 -64
- package/lib/externalPortService.js.map +0 -1
- package/lib/index.d.ts +0 -76
- package/lib/index.d.ts.map +0 -1
- package/lib/index.js +0 -72
- package/lib/index.js.map +0 -1
- package/lib/ipcService.d.ts +0 -33
- package/lib/ipcService.d.ts.map +0 -1
- package/lib/ipcService.js +0 -49
- package/lib/ipcService.js.map +0 -1
- package/lib/logger.d.ts +0 -78
- package/lib/logger.d.ts.map +0 -1
- package/lib/logger.js +0 -147
- package/lib/logger.js.map +0 -1
- package/lib/platformAccessory.d.ts.map +0 -1
- package/lib/platformAccessory.js +0 -102
- package/lib/platformAccessory.js.map +0 -1
- package/lib/plugin.d.ts.map +0 -1
- package/lib/plugin.js +0 -194
- package/lib/plugin.js.map +0 -1
- package/lib/pluginManager.d.ts.map +0 -1
- package/lib/pluginManager.js.map +0 -1
- package/lib/server.d.ts.map +0 -1
- package/lib/server.js +0 -457
- package/lib/server.js.map +0 -1
- package/lib/storageService.js +0 -70
- package/lib/storageService.js.map +0 -1
- package/lib/user.d.ts.map +0 -1
- package/lib/user.js +0 -36
- package/lib/user.js.map +0 -1
- package/lib/util/mac.d.ts.map +0 -1
- package/lib/util/mac.js +0 -20
- package/lib/util/mac.js.map +0 -1
- package/lib/version.d.ts.map +0 -1
- package/lib/version.js +0 -21
- package/lib/version.js.map +0 -1
- /package/{lib → dist}/storageService.d.ts +0 -0
- /package/{lib → dist}/version.d.ts +0 -0
|
@@ -0,0 +1,132 @@
|
|
|
1
|
+
import * as clusters from '@matter/main/clusters';
|
|
2
|
+
import * as devices from '@matter/main/devices';
|
|
3
|
+
export var MatterAccessoryEventTypes;
|
|
4
|
+
(function (MatterAccessoryEventTypes) {
|
|
5
|
+
MatterAccessoryEventTypes["READY"] = "ready";
|
|
6
|
+
})(MatterAccessoryEventTypes || (MatterAccessoryEventTypes = {}));
|
|
7
|
+
export var MatterErrorType;
|
|
8
|
+
(function (MatterErrorType) {
|
|
9
|
+
MatterErrorType["INITIALIZATION"] = "INITIALIZATION";
|
|
10
|
+
MatterErrorType["NETWORK"] = "NETWORK";
|
|
11
|
+
MatterErrorType["COMMISSIONING"] = "COMMISSIONING";
|
|
12
|
+
MatterErrorType["DEVICE_SYNC"] = "DEVICE_SYNC";
|
|
13
|
+
MatterErrorType["SERVER"] = "SERVER";
|
|
14
|
+
MatterErrorType["STORAGE"] = "STORAGE";
|
|
15
|
+
MatterErrorType["CONFIGURATION"] = "CONFIGURATION";
|
|
16
|
+
MatterErrorType["DEVICE_ERROR"] = "DEVICE_ERROR";
|
|
17
|
+
MatterErrorType["UNKNOWN"] = "UNKNOWN";
|
|
18
|
+
})(MatterErrorType || (MatterErrorType = {}));
|
|
19
|
+
export class MatterError extends Error {
|
|
20
|
+
code;
|
|
21
|
+
details;
|
|
22
|
+
type;
|
|
23
|
+
timestamp;
|
|
24
|
+
recoverable;
|
|
25
|
+
constructor(message, code, details) {
|
|
26
|
+
super(message);
|
|
27
|
+
this.code = code;
|
|
28
|
+
this.details = details;
|
|
29
|
+
this.name = 'MatterError';
|
|
30
|
+
this.type = details?.type ?? MatterErrorType.UNKNOWN;
|
|
31
|
+
this.timestamp = new Date();
|
|
32
|
+
this.recoverable = details?.recoverable ?? true;
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
export class MatterCommissioningError extends MatterError {
|
|
36
|
+
constructor(message, details) {
|
|
37
|
+
super(message, 'COMMISSIONING_ERROR', { ...details, type: MatterErrorType.COMMISSIONING });
|
|
38
|
+
this.name = 'MatterCommissioningError';
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
export class MatterStorageError extends MatterError {
|
|
42
|
+
constructor(message, details) {
|
|
43
|
+
super(message, 'STORAGE_ERROR', { ...details, type: MatterErrorType.STORAGE });
|
|
44
|
+
this.name = 'MatterStorageError';
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
export class MatterDeviceError extends MatterError {
|
|
48
|
+
constructor(message, details) {
|
|
49
|
+
super(message, 'DEVICE_ERROR', { ...details, type: MatterErrorType.DEVICE_ERROR });
|
|
50
|
+
this.name = 'MatterDeviceError';
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
export class MatterNetworkError extends MatterError {
|
|
54
|
+
constructor(message, details) {
|
|
55
|
+
super(message, 'NETWORK_ERROR', { ...details, type: MatterErrorType.NETWORK });
|
|
56
|
+
this.name = 'MatterNetworkError';
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
export { clusters };
|
|
60
|
+
export { devices };
|
|
61
|
+
export const deviceTypes = {
|
|
62
|
+
OnOffLight: devices.OnOffLightDevice,
|
|
63
|
+
DimmableLight: devices.DimmableLightDevice,
|
|
64
|
+
ColorTemperatureLight: devices.ColorTemperatureLightDevice,
|
|
65
|
+
ExtendedColorLight: devices.ExtendedColorLightDevice,
|
|
66
|
+
OnOffSwitch: devices.OnOffLightSwitchDevice,
|
|
67
|
+
OnOffOutlet: devices.OnOffPlugInUnitDevice,
|
|
68
|
+
DimmableOutlet: devices.DimmablePlugInUnitDevice,
|
|
69
|
+
AirQualitySensor: devices.AirQualitySensorDevice,
|
|
70
|
+
TemperatureSensor: devices.TemperatureSensorDevice,
|
|
71
|
+
HumiditySensor: devices.HumiditySensorDevice,
|
|
72
|
+
LightSensor: devices.LightSensorDevice,
|
|
73
|
+
MotionSensor: devices.OccupancySensorDevice,
|
|
74
|
+
ContactSensor: devices.ContactSensorDevice,
|
|
75
|
+
LeakSensor: devices.WaterLeakDetectorDevice,
|
|
76
|
+
SmokeSensor: devices.SmokeCoAlarmDevice,
|
|
77
|
+
Thermostat: devices.ThermostatDevice.with(devices.ThermostatRequirements.ThermostatServer.with('Heating', 'Cooling')),
|
|
78
|
+
Fan: devices.FanDevice,
|
|
79
|
+
DoorLock: devices.DoorLockDevice,
|
|
80
|
+
WindowCovering: devices.WindowCoveringDevice,
|
|
81
|
+
RoboticVacuumCleaner: devices.RoboticVacuumCleanerDevice,
|
|
82
|
+
GenericSwitch: devices.GenericSwitchDevice,
|
|
83
|
+
Pump: devices.PumpDevice,
|
|
84
|
+
RoomAirConditioner: devices.RoomAirConditionerDevice,
|
|
85
|
+
};
|
|
86
|
+
export const clusterNames = {
|
|
87
|
+
OnOff: 'onOff',
|
|
88
|
+
LevelControl: 'levelControl',
|
|
89
|
+
ColorControl: 'colorControl',
|
|
90
|
+
DoorLock: 'doorLock',
|
|
91
|
+
WindowCovering: 'windowCovering',
|
|
92
|
+
Thermostat: 'thermostat',
|
|
93
|
+
FanControl: 'fanControl',
|
|
94
|
+
AirQuality: 'airQuality',
|
|
95
|
+
CarbonMonoxideConcentrationMeasurement: 'carbonMonoxideConcentrationMeasurement',
|
|
96
|
+
NitrogenDioxideConcentrationMeasurement: 'nitrogenDioxideConcentrationMeasurement',
|
|
97
|
+
OzoneConcentrationMeasurement: 'ozoneConcentrationMeasurement',
|
|
98
|
+
Pm10ConcentrationMeasurement: 'pm10ConcentrationMeasurement',
|
|
99
|
+
Pm25ConcentrationMeasurement: 'pm25ConcentrationMeasurement',
|
|
100
|
+
TemperatureMeasurement: 'temperatureMeasurement',
|
|
101
|
+
RelativeHumidityMeasurement: 'relativeHumidityMeasurement',
|
|
102
|
+
IlluminanceMeasurement: 'illuminanceMeasurement',
|
|
103
|
+
OccupancySensing: 'occupancySensing',
|
|
104
|
+
BooleanState: 'booleanState',
|
|
105
|
+
SmokeCoAlarm: 'smokeCoAlarm',
|
|
106
|
+
RvcRunMode: 'rvcRunMode',
|
|
107
|
+
RvcOperationalState: 'rvcOperationalState',
|
|
108
|
+
RvcCleanMode: 'rvcCleanMode',
|
|
109
|
+
ServiceArea: 'serviceArea',
|
|
110
|
+
PumpConfigurationAndControl: 'pumpConfigurationAndControl',
|
|
111
|
+
Identify: 'identify',
|
|
112
|
+
BasicInformation: 'basicInformation',
|
|
113
|
+
BridgedDeviceBasicInformation: 'bridgedDeviceBasicInformation',
|
|
114
|
+
};
|
|
115
|
+
export function hasEndpointState(endpoint) {
|
|
116
|
+
return 'state' in endpoint
|
|
117
|
+
&& typeof endpoint.state === 'object'
|
|
118
|
+
&& endpoint.state !== null
|
|
119
|
+
&& 'set' in endpoint
|
|
120
|
+
&& typeof endpoint.set === 'function';
|
|
121
|
+
}
|
|
122
|
+
export async function updateEndpointState(endpoint, cluster, attributes) {
|
|
123
|
+
if (!hasEndpointState(endpoint)) {
|
|
124
|
+
throw new Error('Endpoint does not support state updates');
|
|
125
|
+
}
|
|
126
|
+
const updateObject = { [cluster]: attributes };
|
|
127
|
+
await endpoint.set(updateObject);
|
|
128
|
+
}
|
|
129
|
+
export function getWindowCoveringCluster(accessory) {
|
|
130
|
+
return accessory.clusters?.windowCovering;
|
|
131
|
+
}
|
|
132
|
+
//# sourceMappingURL=types.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/matter/types.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import type { MacAddress } from 'hap-nodejs';
|
|
2
|
+
export interface NodeError extends Error {
|
|
3
|
+
code?: string;
|
|
4
|
+
errno?: number;
|
|
5
|
+
syscall?: string;
|
|
6
|
+
path?: string;
|
|
7
|
+
}
|
|
8
|
+
export declare function isNodeError(error: unknown): error is NodeError;
|
|
9
|
+
export declare function getErrorCode(error: unknown): string | undefined;
|
|
10
|
+
export declare function normalizeBindConfig(bind: string | string[] | undefined): string[] | undefined;
|
|
11
|
+
export declare function createMatterUsername(uniqueId: string): MacAddress;
|
|
12
|
+
export declare function appendUsernameSuffix(baseUsername: string, suffix: string): MacAddress;
|
|
13
|
+
//# sourceMappingURL=utils.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../src/matter/utils.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAA;AAK5C,MAAM,WAAW,SAAU,SAAQ,KAAK;IACtC,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,IAAI,CAAC,EAAE,MAAM,CAAA;CACd;AAQD,wBAAgB,WAAW,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,SAAS,CAE9D;AAQD,wBAAgB,YAAY,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,GAAG,SAAS,CAE/D;AAkBD,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,SAAS,GAAG,MAAM,EAAE,GAAG,SAAS,CAK7F;AAgBD,wBAAgB,oBAAoB,CAAC,QAAQ,EAAE,MAAM,GAAG,UAAU,CAIjE;AASD,wBAAgB,oBAAoB,CAAC,YAAY,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,UAAU,CAErF"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
export function isNodeError(error) {
|
|
2
|
+
return error instanceof Error && 'code' in error;
|
|
3
|
+
}
|
|
4
|
+
export function getErrorCode(error) {
|
|
5
|
+
return isNodeError(error) ? error.code : undefined;
|
|
6
|
+
}
|
|
7
|
+
export function normalizeBindConfig(bind) {
|
|
8
|
+
if (!bind) {
|
|
9
|
+
return undefined;
|
|
10
|
+
}
|
|
11
|
+
return Array.isArray(bind) ? bind : [bind];
|
|
12
|
+
}
|
|
13
|
+
export function createMatterUsername(uniqueId) {
|
|
14
|
+
const cleanId = uniqueId.replace(/[^A-F0-9]/gi, '');
|
|
15
|
+
const formatted = cleanId.match(/.{1,2}/g)?.slice(0, 6).join(':').toUpperCase() || uniqueId;
|
|
16
|
+
return formatted;
|
|
17
|
+
}
|
|
18
|
+
export function appendUsernameSuffix(baseUsername, suffix) {
|
|
19
|
+
return `${baseUsername}:${suffix}`;
|
|
20
|
+
}
|
|
21
|
+
//# sourceMappingURL=utils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/matter/utils.ts"],"names":[],"mappings":"AAwBA,MAAM,UAAU,WAAW,CAAC,KAAc;IACxC,OAAO,KAAK,YAAY,KAAK,IAAI,MAAM,IAAI,KAAK,CAAA;AAClD,CAAC;AAQD,MAAM,UAAU,YAAY,CAAC,KAAc;IACzC,OAAO,WAAW,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAA;AACpD,CAAC;AAkBD,MAAM,UAAU,mBAAmB,CAAC,IAAmC;IACrE,IAAI,CAAC,IAAI,EAAE,CAAC;QACV,OAAO,SAAS,CAAA;IAClB,CAAC;IACD,OAAO,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAA;AAC5C,CAAC;AAgBD,MAAM,UAAU,oBAAoB,CAAC,QAAgB;IACnD,MAAM,OAAO,GAAG,QAAQ,CAAC,OAAO,CAAC,aAAa,EAAE,EAAE,CAAC,CAAA;IACnD,MAAM,SAAS,GAAG,OAAO,CAAC,KAAK,CAAC,SAAS,CAAC,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,WAAW,EAAE,IAAI,QAAQ,CAAA;IAC3F,OAAO,SAAuB,CAAA;AAChC,CAAC;AASD,MAAM,UAAU,oBAAoB,CAAC,YAAoB,EAAE,MAAc;IACvE,OAAO,GAAG,YAAY,IAAI,MAAM,EAAgB,CAAA;AAClD,CAAC"}
|
|
@@ -1,7 +1,8 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
1
|
+
import type { Controller, ControllerConstructor, SerializedAccessory, Service, WithUUID } from 'hap-nodejs';
|
|
2
|
+
import type { ConstructorArgs } from 'hap-nodejs/dist/types.js';
|
|
3
|
+
import type { PlatformName, PluginIdentifier, PluginName } from './api.js';
|
|
4
|
+
import { EventEmitter } from 'node:events';
|
|
5
|
+
import { Accessory, Categories } from 'hap-nodejs';
|
|
5
6
|
export type UnknownContext = Record<string, any>;
|
|
6
7
|
export interface SerializedPlatformAccessory<T extends UnknownContext = UnknownContext> extends SerializedAccessory {
|
|
7
8
|
plugin: PluginName;
|
|
@@ -12,8 +13,8 @@ export declare const enum PlatformAccessoryEvent {
|
|
|
12
13
|
IDENTIFY = "identify"
|
|
13
14
|
}
|
|
14
15
|
export declare interface PlatformAccessory {
|
|
15
|
-
on(event:
|
|
16
|
-
emit(event:
|
|
16
|
+
on: (event: 'identify', listener: () => void) => this;
|
|
17
|
+
emit: (event: 'identify') => boolean;
|
|
17
18
|
}
|
|
18
19
|
export declare class PlatformAccessory<T extends UnknownContext = UnknownContext> extends EventEmitter {
|
|
19
20
|
private static injectedAccessory?;
|
|
@@ -24,29 +25,15 @@ export declare class PlatformAccessory<T extends UnknownContext = UnknownContext
|
|
|
24
25
|
UUID: string;
|
|
25
26
|
category: Categories;
|
|
26
27
|
services: Service[];
|
|
27
|
-
/**
|
|
28
|
-
* This is a way for Plugin developers to store custom data with their accessory
|
|
29
|
-
*/
|
|
30
28
|
context: T;
|
|
31
29
|
constructor(displayName: string, uuid: string, category?: Categories);
|
|
30
|
+
updateDisplayName(name: string): void;
|
|
32
31
|
addService(service: Service): Service;
|
|
33
32
|
addService<S extends typeof Service>(serviceConstructor: S, ...constructorArgs: ConstructorArgs<S>): Service;
|
|
34
33
|
removeService(service: Service): void;
|
|
35
34
|
getService<T extends WithUUID<typeof Service>>(name: string | T): Service | undefined;
|
|
36
35
|
getServiceById<T extends WithUUID<typeof Service>>(uuid: string | T, subType: string): Service | undefined;
|
|
37
|
-
/**
|
|
38
|
-
* Configures a new controller for the given accessory.
|
|
39
|
-
* See {@link https://developers.homebridge.io/HAP-NodeJS/classes/accessory.html#configurecontroller | Accessory.configureController}.
|
|
40
|
-
*
|
|
41
|
-
* @param controller
|
|
42
|
-
*/
|
|
43
36
|
configureController(controller: Controller | ControllerConstructor): void;
|
|
44
|
-
/**
|
|
45
|
-
* Removes a configured controller from the given accessory.
|
|
46
|
-
* See {@link https://developers.homebridge.io/HAP-NodeJS/classes/accessory.html#removecontroller | Accessory.removeController}.
|
|
47
|
-
*
|
|
48
|
-
* @param controller
|
|
49
|
-
*/
|
|
50
37
|
removeController(controller: Controller): void;
|
|
51
38
|
static serialize(accessory: PlatformAccessory): SerializedPlatformAccessory;
|
|
52
39
|
static deserialize(json: SerializedPlatformAccessory): PlatformAccessory;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"platformAccessory.d.ts","sourceRoot":"","sources":["../src/platformAccessory.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,UAAU,EACV,qBAAqB,EACrB,mBAAmB,EACnB,OAAO,EAEP,QAAQ,EACT,MAAM,YAAY,CAAA;AACnB,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAA;AAE/D,OAAO,KAAK,EAAE,YAAY,EAAE,gBAAgB,EAAE,UAAU,EAAE,MAAM,UAAU,CAAA;AAE1E,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAA;AAE1C,OAAO,EAAE,SAAS,EAAuB,UAAU,EAAE,MAAM,YAAY,CAAA;AAEvE,MAAM,MAAM,cAAc,GAAG,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAA;AAEhD,MAAM,WAAW,2BAA2B,CAAC,CAAC,SAAS,cAAc,GAAG,cAAc,CAAE,SAAQ,mBAAmB;IACjH,MAAM,EAAE,UAAU,CAAA;IAClB,QAAQ,EAAE,YAAY,CAAA;IACtB,OAAO,EAAE,CAAC,CAAA;CACX;AAGD,0BAAkB,sBAAsB;IACtC,QAAQ,aAAa;CACtB;AAGD,MAAM,CAAC,OAAO,WAAW,iBAAiB;IACxC,EAAE,EAAE,CAAC,KAAK,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,IAAI,KAAK,IAAI,CAAA;IACrD,IAAI,EAAE,CAAC,KAAK,EAAE,UAAU,KAAK,OAAO,CAAA;CACrC;AAGD,qBAAa,iBAAiB,CAAC,CAAC,SAAS,cAAc,GAAG,cAAc,CAAE,SAAQ,YAAY;IAE5F,OAAO,CAAC,MAAM,CAAC,iBAAiB,CAAC,CAAW;IAE5C,iBAAiB,CAAC,EAAE,gBAAgB,CAAA;IACpC,mBAAmB,CAAC,EAAE,YAAY,CAAA;IAClC,uBAAuB,EAAE,SAAS,CAAA;IAGlC,WAAW,EAAE,MAAM,CAAA;IACnB,IAAI,EAAE,MAAM,CAAA;IACZ,QAAQ,EAAE,UAAU,CAAA;IACpB,QAAQ,EAAE,OAAO,EAAE,CAAK;IAMjB,OAAO,EAAE,CAAC,CAAU;gBAEf,WAAW,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,UAAU;IAuB7D,iBAAiB,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAOrC,UAAU,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO;IACrC,UAAU,CAAC,CAAC,SAAS,OAAO,OAAO,EAAE,kBAAkB,EAAE,CAAC,EAAE,GAAG,eAAe,EAAE,eAAe,CAAC,CAAC,CAAC,GAAG,OAAO;IAQ5G,aAAa,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI;IAIrC,UAAU,CAAC,CAAC,SAAS,QAAQ,CAAC,OAAO,OAAO,CAAC,EAAE,IAAI,EAAE,MAAM,GAAG,CAAC,GAAG,OAAO,GAAG,SAAS;IAIrF,cAAc,CAAC,CAAC,SAAS,QAAQ,CAAC,OAAO,OAAO,CAAC,EAAE,IAAI,EAAE,MAAM,GAAG,CAAC,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,GAAG,SAAS;IAU1G,mBAAmB,CAAC,UAAU,EAAE,UAAU,GAAG,qBAAqB,GAAG,IAAI;IAUzE,gBAAgB,CAAC,UAAU,EAAE,UAAU,GAAG,IAAI;IAKrD,MAAM,CAAC,SAAS,CAAC,SAAS,EAAE,iBAAiB,GAAG,2BAA2B;IAU3E,MAAM,CAAC,WAAW,CAAC,IAAI,EAAE,2BAA2B,GAAG,iBAAiB;CAczE"}
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
import { EventEmitter } from 'node:events';
|
|
2
|
+
import { Accessory } from 'hap-nodejs';
|
|
3
|
+
export var PlatformAccessoryEvent;
|
|
4
|
+
(function (PlatformAccessoryEvent) {
|
|
5
|
+
PlatformAccessoryEvent["IDENTIFY"] = "identify";
|
|
6
|
+
})(PlatformAccessoryEvent || (PlatformAccessoryEvent = {}));
|
|
7
|
+
export class PlatformAccessory extends EventEmitter {
|
|
8
|
+
static injectedAccessory;
|
|
9
|
+
_associatedPlugin;
|
|
10
|
+
_associatedPlatform;
|
|
11
|
+
_associatedHAPAccessory;
|
|
12
|
+
displayName;
|
|
13
|
+
UUID;
|
|
14
|
+
category;
|
|
15
|
+
services = [];
|
|
16
|
+
context = {};
|
|
17
|
+
constructor(displayName, uuid, category) {
|
|
18
|
+
super();
|
|
19
|
+
this._associatedHAPAccessory = PlatformAccessory.injectedAccessory
|
|
20
|
+
? PlatformAccessory.injectedAccessory
|
|
21
|
+
: new Accessory(displayName, uuid);
|
|
22
|
+
if (category) {
|
|
23
|
+
this._associatedHAPAccessory.category = category;
|
|
24
|
+
}
|
|
25
|
+
this.displayName = this._associatedHAPAccessory.displayName;
|
|
26
|
+
this.UUID = this._associatedHAPAccessory.UUID;
|
|
27
|
+
this.category = category || 1;
|
|
28
|
+
this.services = this._associatedHAPAccessory.services;
|
|
29
|
+
this._associatedHAPAccessory.on("identify", (paired, callback) => {
|
|
30
|
+
this.emit("identify", paired, () => { });
|
|
31
|
+
callback();
|
|
32
|
+
});
|
|
33
|
+
}
|
|
34
|
+
updateDisplayName(name) {
|
|
35
|
+
if (name) {
|
|
36
|
+
this.displayName = name;
|
|
37
|
+
this._associatedHAPAccessory.displayName = name;
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
addService(service, ...constructorArgs) {
|
|
41
|
+
return this._associatedHAPAccessory.addService(service, ...constructorArgs);
|
|
42
|
+
}
|
|
43
|
+
removeService(service) {
|
|
44
|
+
this._associatedHAPAccessory.removeService(service);
|
|
45
|
+
}
|
|
46
|
+
getService(name) {
|
|
47
|
+
return this._associatedHAPAccessory.getService(name);
|
|
48
|
+
}
|
|
49
|
+
getServiceById(uuid, subType) {
|
|
50
|
+
return this._associatedHAPAccessory.getServiceById(uuid, subType);
|
|
51
|
+
}
|
|
52
|
+
configureController(controller) {
|
|
53
|
+
this._associatedHAPAccessory.configureController(controller);
|
|
54
|
+
}
|
|
55
|
+
removeController(controller) {
|
|
56
|
+
this._associatedHAPAccessory.removeController(controller);
|
|
57
|
+
}
|
|
58
|
+
static serialize(accessory) {
|
|
59
|
+
accessory._associatedHAPAccessory.displayName = accessory.displayName;
|
|
60
|
+
return {
|
|
61
|
+
plugin: accessory._associatedPlugin,
|
|
62
|
+
platform: accessory._associatedPlatform,
|
|
63
|
+
context: accessory.context,
|
|
64
|
+
...Accessory.serialize(accessory._associatedHAPAccessory),
|
|
65
|
+
};
|
|
66
|
+
}
|
|
67
|
+
static deserialize(json) {
|
|
68
|
+
const accessory = Accessory.deserialize(json);
|
|
69
|
+
PlatformAccessory.injectedAccessory = accessory;
|
|
70
|
+
const platformAccessory = new PlatformAccessory(accessory.displayName, accessory.UUID);
|
|
71
|
+
PlatformAccessory.injectedAccessory = undefined;
|
|
72
|
+
platformAccessory._associatedPlugin = json.plugin;
|
|
73
|
+
platformAccessory._associatedPlatform = json.platform;
|
|
74
|
+
platformAccessory.context = json.context;
|
|
75
|
+
platformAccessory.category = json.category;
|
|
76
|
+
return platformAccessory;
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
//# sourceMappingURL=platformAccessory.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"platformAccessory.js","sourceRoot":"","sources":["../src/platformAccessory.ts"],"names":[],"mappings":"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"}
|
package/{lib → dist}/plugin.d.ts
RENAMED
|
@@ -1,13 +1,9 @@
|
|
|
1
|
-
import { AccessoryIdentifier, AccessoryName, AccessoryPluginConstructor, API, PlatformIdentifier, PlatformName,
|
|
2
|
-
import { PackageJSON } from
|
|
3
|
-
/**
|
|
4
|
-
* Represents a loaded Homebridge plugin.
|
|
5
|
-
*/
|
|
1
|
+
import type { AccessoryIdentifier, AccessoryName, AccessoryPluginConstructor, API, DynamicPlatformPlugin, PlatformIdentifier, PlatformName, PlatformPluginConstructor, PluginIdentifier, PluginName } from './api.js';
|
|
2
|
+
import type { PackageJSON } from './pluginManager.js';
|
|
6
3
|
export declare class Plugin {
|
|
7
4
|
private readonly pluginName;
|
|
8
5
|
private readonly scope?;
|
|
9
6
|
private readonly pluginPath;
|
|
10
|
-
private readonly isESM;
|
|
11
7
|
disabled: boolean;
|
|
12
8
|
readonly version: string;
|
|
13
9
|
private readonly main;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"plugin.d.ts","sourceRoot":"","sources":["../src/plugin.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,mBAAmB,EACnB,aAAa,EACb,0BAA0B,EAC1B,GAAG,EACH,qBAAqB,EACrB,kBAAkB,EAClB,YAAY,EACZ,yBAAyB,EACzB,gBAAgB,EAEhB,UAAU,EACX,MAAM,UAAU,CAAA;AACjB,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAA;AAkBrD,qBAAa,MAAM;IACjB,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAY;IACvC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAQ;IAC/B,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAQ;IAC5B,QAAQ,UAAQ;IAGvB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;IACxB,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAQ;IAC7B,OAAO,CAAC,WAAW,CAAC,CAGnB;IAGD,OAAO,CAAC,iBAAiB,CAAC,CAAmB;IAC7C,OAAO,CAAC,QAAQ,CAAC,qBAAqB,CAA4D;IAClG,OAAO,CAAC,QAAQ,CAAC,mBAAmB,CAA0D;IAC9F,OAAO,CAAC,QAAQ,CAAC,sBAAsB,CAAwD;gBAEnF,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,MAAM,EAAE,WAAW,EAAE,WAAW,EAAE,KAAK,CAAC,EAAE,MAAM;IA+C7E,mBAAmB,IAAI,gBAAgB;IAIvC,aAAa,IAAI,MAAM;IAIvB,iBAAiB,CAAC,IAAI,EAAE,aAAa,EAAE,WAAW,EAAE,0BAA0B,GAAG,IAAI;IAYrF,gBAAgB,CAAC,IAAI,EAAE,YAAY,EAAE,WAAW,EAAE,yBAAyB,GAAG,IAAI;IAYlF,uBAAuB,CAAC,mBAAmB,EAAE,mBAAmB,GAAG,aAAa,GAAG,0BAA0B;IAW7G,sBAAsB,CAAC,kBAAkB,EAAE,kBAAkB,GAAG,YAAY,GAAG,yBAAyB;IAiBxG,qBAAqB,CAAC,kBAAkB,EAAE,kBAAkB,GAAG,YAAY,EAAE,cAAc,EAAE,qBAAqB,GAAG,IAAI;IAczH,wBAAwB,CAAC,YAAY,EAAE,YAAY,GAAG,qBAAqB,GAAG,SAAS;IAMjF,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAkD3B,UAAU,CAAC,GAAG,EAAE,GAAG,GAAG,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;CAOlD"}
|
package/dist/plugin.js
ADDED
|
@@ -0,0 +1,159 @@
|
|
|
1
|
+
import assert from 'node:assert';
|
|
2
|
+
import { join } from 'node:path';
|
|
3
|
+
import process from 'node:process';
|
|
4
|
+
import { pathToFileURL } from 'node:url';
|
|
5
|
+
import { satisfies } from 'semver';
|
|
6
|
+
import { Logger } from './logger.js';
|
|
7
|
+
import { PluginManager } from './pluginManager.js';
|
|
8
|
+
import getVersion from './version.js';
|
|
9
|
+
const log = Logger.internal;
|
|
10
|
+
export class Plugin {
|
|
11
|
+
pluginName;
|
|
12
|
+
scope;
|
|
13
|
+
pluginPath;
|
|
14
|
+
disabled = false;
|
|
15
|
+
version;
|
|
16
|
+
main;
|
|
17
|
+
loadContext;
|
|
18
|
+
pluginInitializer;
|
|
19
|
+
registeredAccessories = new Map();
|
|
20
|
+
registeredPlatforms = new Map();
|
|
21
|
+
activeDynamicPlatforms = new Map();
|
|
22
|
+
constructor(name, path, packageJSON, scope) {
|
|
23
|
+
this.pluginName = name;
|
|
24
|
+
this.scope = scope;
|
|
25
|
+
this.pluginPath = path;
|
|
26
|
+
this.version = packageJSON.version || '0.0.0';
|
|
27
|
+
this.main = '';
|
|
28
|
+
if (packageJSON.exports) {
|
|
29
|
+
if (typeof packageJSON.exports === 'string') {
|
|
30
|
+
this.main = packageJSON.exports;
|
|
31
|
+
}
|
|
32
|
+
else {
|
|
33
|
+
const exports = packageJSON.exports.import || packageJSON.exports.require || packageJSON.exports.node || packageJSON.exports.default || packageJSON.exports['.'];
|
|
34
|
+
if (typeof exports !== 'string') {
|
|
35
|
+
if (exports.import) {
|
|
36
|
+
this.main = exports.import;
|
|
37
|
+
}
|
|
38
|
+
else {
|
|
39
|
+
this.main = exports.require || exports.node || exports.default;
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
else {
|
|
43
|
+
this.main = exports;
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
if (!this.main) {
|
|
48
|
+
this.main = packageJSON.main || './index.js';
|
|
49
|
+
}
|
|
50
|
+
if (packageJSON.peerDependencies && (!packageJSON.engines || !packageJSON.engines.homebridge)) {
|
|
51
|
+
packageJSON.engines = packageJSON.engines || {};
|
|
52
|
+
packageJSON.engines.homebridge = packageJSON.peerDependencies.homebridge;
|
|
53
|
+
}
|
|
54
|
+
this.loadContext = {
|
|
55
|
+
engines: packageJSON.engines,
|
|
56
|
+
dependencies: packageJSON.dependencies,
|
|
57
|
+
};
|
|
58
|
+
}
|
|
59
|
+
getPluginIdentifier() {
|
|
60
|
+
return (this.scope ? `${this.scope}/` : '') + this.pluginName;
|
|
61
|
+
}
|
|
62
|
+
getPluginPath() {
|
|
63
|
+
return this.pluginPath;
|
|
64
|
+
}
|
|
65
|
+
registerAccessory(name, constructor) {
|
|
66
|
+
if (this.registeredAccessories.has(name)) {
|
|
67
|
+
throw new Error(`Plugin '${this.getPluginIdentifier()}' tried to register an accessory '${name}' which has already been registered!`);
|
|
68
|
+
}
|
|
69
|
+
if (!this.disabled) {
|
|
70
|
+
log.info('Registering accessory \'%s\'', `${this.getPluginIdentifier()}.${name}`);
|
|
71
|
+
}
|
|
72
|
+
this.registeredAccessories.set(name, constructor);
|
|
73
|
+
}
|
|
74
|
+
registerPlatform(name, constructor) {
|
|
75
|
+
if (this.registeredPlatforms.has(name)) {
|
|
76
|
+
throw new Error(`Plugin '${this.getPluginIdentifier()}' tried to register a platform '${name}' which has already been registered!`);
|
|
77
|
+
}
|
|
78
|
+
if (!this.disabled) {
|
|
79
|
+
log.info('Registering platform \'%s\'', `${this.getPluginIdentifier()}.${name}`);
|
|
80
|
+
}
|
|
81
|
+
this.registeredPlatforms.set(name, constructor);
|
|
82
|
+
}
|
|
83
|
+
getAccessoryConstructor(accessoryIdentifier) {
|
|
84
|
+
const name = PluginManager.getAccessoryName(accessoryIdentifier);
|
|
85
|
+
const constructor = this.registeredAccessories.get(name);
|
|
86
|
+
if (!constructor) {
|
|
87
|
+
throw new Error(`The requested accessory '${name}' was not registered by the plugin '${this.getPluginIdentifier()}'.`);
|
|
88
|
+
}
|
|
89
|
+
return constructor;
|
|
90
|
+
}
|
|
91
|
+
getPlatformConstructor(platformIdentifier) {
|
|
92
|
+
const name = PluginManager.getPlatformName(platformIdentifier);
|
|
93
|
+
const constructor = this.registeredPlatforms.get(name);
|
|
94
|
+
if (!constructor) {
|
|
95
|
+
throw new Error(`The requested platform '${name}' was not registered by the plugin '${this.getPluginIdentifier()}'.`);
|
|
96
|
+
}
|
|
97
|
+
if (this.activeDynamicPlatforms.has(name)) {
|
|
98
|
+
throw new Error(`The dynamic platform ${name} from the plugin ${this.getPluginIdentifier()} is configured `
|
|
99
|
+
+ 'times in your config.json.');
|
|
100
|
+
}
|
|
101
|
+
return constructor;
|
|
102
|
+
}
|
|
103
|
+
assignDynamicPlatform(platformIdentifier, platformPlugin) {
|
|
104
|
+
const name = PluginManager.getPlatformName(platformIdentifier);
|
|
105
|
+
let platforms = this.activeDynamicPlatforms.get(name);
|
|
106
|
+
if (!platforms) {
|
|
107
|
+
platforms = [];
|
|
108
|
+
this.activeDynamicPlatforms.set(name, platforms);
|
|
109
|
+
}
|
|
110
|
+
platforms.unshift(platformPlugin);
|
|
111
|
+
}
|
|
112
|
+
getActiveDynamicPlatform(platformName) {
|
|
113
|
+
const platforms = this.activeDynamicPlatforms.get(platformName);
|
|
114
|
+
return platforms && platforms[0];
|
|
115
|
+
}
|
|
116
|
+
async load() {
|
|
117
|
+
const context = this.loadContext;
|
|
118
|
+
assert(context, 'Reached illegal state. Plugin state is undefined!');
|
|
119
|
+
this.loadContext = undefined;
|
|
120
|
+
if (!context.engines || !context.engines.homebridge) {
|
|
121
|
+
throw new Error(`Plugin ${this.pluginPath} does not contain the 'homebridge' package in 'engines'.`);
|
|
122
|
+
}
|
|
123
|
+
const versionRequired = context.engines.homebridge;
|
|
124
|
+
const nodeVersionRequired = context.engines.node;
|
|
125
|
+
if (!satisfies(getVersion(), versionRequired, { includePrerelease: true })) {
|
|
126
|
+
log.warn(`The plugin "${this.pluginName}" requires a Homebridge version of ${versionRequired} which does \
|
|
127
|
+
not satisfy the current Homebridge version of v${getVersion()}. You may need to update this plugin (or Homebridge) to a newer version. \
|
|
128
|
+
You may face unexpected issues or stability problems running this plugin.`);
|
|
129
|
+
}
|
|
130
|
+
if (nodeVersionRequired && !satisfies(process.version, nodeVersionRequired)) {
|
|
131
|
+
log.warn(`The plugin "${this.pluginName}" requires a Node.js version of ${nodeVersionRequired} which does \
|
|
132
|
+
not satisfy the current Node.js version of ${process.version}. You may need to upgrade your installation of Node.js - see https://homebridge.io/w/JTKEF`);
|
|
133
|
+
}
|
|
134
|
+
const dependencies = context.dependencies || {};
|
|
135
|
+
if (dependencies.homebridge || dependencies['hap-nodejs']) {
|
|
136
|
+
log.error(`The plugin "${this.pluginName}" defines 'homebridge' and/or 'hap-nodejs' in their 'dependencies' section, \
|
|
137
|
+
meaning they carry an additional copy of homebridge and hap-nodejs. This not only wastes disk space, but also can cause \
|
|
138
|
+
major incompatibility issues and thus is considered bad practice. Please inform the developer to update their plugin!`);
|
|
139
|
+
}
|
|
140
|
+
const mainPath = join(this.pluginPath, this.main);
|
|
141
|
+
const pluginModules = (await import(pathToFileURL(mainPath).href)).default;
|
|
142
|
+
if (typeof pluginModules === 'function') {
|
|
143
|
+
this.pluginInitializer = pluginModules;
|
|
144
|
+
}
|
|
145
|
+
else if (pluginModules && typeof pluginModules.default === 'function') {
|
|
146
|
+
this.pluginInitializer = pluginModules.default;
|
|
147
|
+
}
|
|
148
|
+
else {
|
|
149
|
+
throw new Error(`Plugin ${this.pluginPath} does not export a initializer function from main.`);
|
|
150
|
+
}
|
|
151
|
+
}
|
|
152
|
+
initialize(api) {
|
|
153
|
+
if (!this.pluginInitializer) {
|
|
154
|
+
throw new Error('Tried to initialize a plugin which hasn\'t been loaded yet!');
|
|
155
|
+
}
|
|
156
|
+
return this.pluginInitializer(api);
|
|
157
|
+
}
|
|
158
|
+
}
|
|
159
|
+
//# sourceMappingURL=plugin.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"plugin.js","sourceRoot":"","sources":["../src/plugin.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,42 +1,23 @@
|
|
|
1
|
-
import { AccessoryIdentifier, AccessoryName, HomebridgeAPI, PlatformIdentifier, PlatformName, PluginIdentifier, PluginName } from
|
|
2
|
-
import { Plugin } from
|
|
1
|
+
import type { AccessoryIdentifier, AccessoryName, HomebridgeAPI, PlatformIdentifier, PlatformName, PluginIdentifier, PluginName } from './api.js';
|
|
2
|
+
import { Plugin } from './plugin.js';
|
|
3
3
|
export interface PackageJSON {
|
|
4
4
|
name: string;
|
|
5
5
|
version: string;
|
|
6
6
|
keywords?: string[];
|
|
7
7
|
exports?: string | Record<string, string | Record<string, string>>;
|
|
8
8
|
main?: string;
|
|
9
|
-
|
|
10
|
-
* When set as module, it marks .js file to be treated as ESM.
|
|
11
|
-
* See https://nodejs.org/dist/latest-v14.x/docs/api/esm.html#esm_enabling
|
|
12
|
-
*/
|
|
13
|
-
type?: "module" | "commonjs";
|
|
9
|
+
type?: 'module' | 'commonjs';
|
|
14
10
|
engines?: Record<string, string>;
|
|
15
11
|
dependencies?: Record<string, string>;
|
|
16
12
|
devDependencies?: Record<string, string>;
|
|
17
13
|
peerDependencies?: Record<string, string>;
|
|
18
14
|
}
|
|
19
15
|
export interface PluginManagerOptions {
|
|
20
|
-
/**
|
|
21
|
-
* Additional path to search for plugins in. Specified relative to the current working directory.
|
|
22
|
-
*/
|
|
23
16
|
customPluginPath?: string;
|
|
24
|
-
/**
|
|
25
|
-
* If set, only load plugins from the customPluginPath, if set, otherwise only from the primary global node_modules.
|
|
26
|
-
*/
|
|
27
17
|
strictPluginResolution?: boolean;
|
|
28
|
-
/**
|
|
29
|
-
* When defined, only plugins specified here will be initialized.
|
|
30
|
-
*/
|
|
31
18
|
activePlugins?: PluginIdentifier[];
|
|
32
|
-
/**
|
|
33
|
-
* Plugins that are marked as disabled and whose corresponding config blocks should be ignored
|
|
34
|
-
*/
|
|
35
19
|
disabledPlugins?: PluginIdentifier[];
|
|
36
20
|
}
|
|
37
|
-
/**
|
|
38
|
-
* Utility which exposes methods to search for installed Homebridge plugins
|
|
39
|
-
*/
|
|
40
21
|
export declare class PluginManager {
|
|
41
22
|
private static readonly PLUGIN_IDENTIFIER_PATTERN;
|
|
42
23
|
private readonly api;
|
|
@@ -65,9 +46,6 @@ export declare class PluginManager {
|
|
|
65
46
|
hasPluginRegistered(pluginIdentifier: PluginIdentifier): boolean;
|
|
66
47
|
getPlugin(pluginIdentifier: PluginIdentifier): Plugin | undefined;
|
|
67
48
|
getPluginByActiveDynamicPlatform(platformName: PlatformName): Plugin | undefined;
|
|
68
|
-
/**
|
|
69
|
-
* Gets all plugins installed on the local system
|
|
70
|
-
*/
|
|
71
49
|
private loadInstalledPlugins;
|
|
72
50
|
loadPlugin(absolutePath: string): Plugin;
|
|
73
51
|
private static loadPackageJSON;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pluginManager.d.ts","sourceRoot":"","sources":["../src/pluginManager.ts"],"names":[],"mappings":"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"}
|