homebridge 2.0.0-beta.6 → 2.0.0-beta.61

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.
Files changed (286) hide show
  1. package/README.md +16 -17
  2. package/bin/homebridge.js +22 -0
  3. package/config-sample.json +3 -3
  4. package/dist/api.d.ts +136 -0
  5. package/dist/api.d.ts.map +1 -0
  6. package/dist/api.js +151 -0
  7. package/dist/api.js.map +1 -0
  8. package/{lib → dist}/bridgeService.d.ts +16 -32
  9. package/dist/bridgeService.d.ts.map +1 -0
  10. package/dist/bridgeService.js +341 -0
  11. package/dist/bridgeService.js.map +1 -0
  12. package/dist/childBridgeFork.d.ts +40 -0
  13. package/dist/childBridgeFork.d.ts.map +1 -0
  14. package/dist/childBridgeFork.js +361 -0
  15. package/dist/childBridgeFork.js.map +1 -0
  16. package/dist/childBridgeService.d.ts +146 -0
  17. package/dist/childBridgeService.d.ts.map +1 -0
  18. package/dist/childBridgeService.js +416 -0
  19. package/dist/childBridgeService.js.map +1 -0
  20. package/dist/cli.d.ts +3 -0
  21. package/dist/cli.d.ts.map +1 -0
  22. package/dist/cli.js +88 -0
  23. package/dist/cli.js.map +1 -0
  24. package/dist/externalPortService.d.ts +26 -0
  25. package/dist/externalPortService.d.ts.map +1 -0
  26. package/dist/externalPortService.js +77 -0
  27. package/dist/externalPortService.js.map +1 -0
  28. package/dist/index.d.ts +29 -0
  29. package/dist/index.d.ts.map +1 -0
  30. package/dist/index.js +9 -0
  31. package/dist/index.js.map +1 -0
  32. package/dist/ipcService.d.ts +58 -0
  33. package/dist/ipcService.d.ts.map +1 -0
  34. package/dist/ipcService.js +43 -0
  35. package/dist/ipcService.js.map +1 -0
  36. package/dist/logger.d.ts +38 -0
  37. package/dist/logger.d.ts.map +1 -0
  38. package/dist/logger.js +102 -0
  39. package/dist/logger.js.map +1 -0
  40. package/dist/matter/BaseMatterManager.d.ts +21 -0
  41. package/dist/matter/BaseMatterManager.d.ts.map +1 -0
  42. package/dist/matter/BaseMatterManager.js +197 -0
  43. package/dist/matter/BaseMatterManager.js.map +1 -0
  44. package/dist/matter/ChildBridgeMatterManager.d.ts +35 -0
  45. package/dist/matter/ChildBridgeMatterManager.d.ts.map +1 -0
  46. package/dist/matter/ChildBridgeMatterManager.js +222 -0
  47. package/dist/matter/ChildBridgeMatterManager.js.map +1 -0
  48. package/dist/matter/ClusterCommandMapper.d.ts +5 -0
  49. package/dist/matter/ClusterCommandMapper.d.ts.map +1 -0
  50. package/dist/matter/ClusterCommandMapper.js +222 -0
  51. package/dist/matter/ClusterCommandMapper.js.map +1 -0
  52. package/dist/matter/ExternalMatterAccessoryPublisher.d.ts +22 -0
  53. package/dist/matter/ExternalMatterAccessoryPublisher.d.ts.map +1 -0
  54. package/dist/matter/ExternalMatterAccessoryPublisher.js +49 -0
  55. package/dist/matter/ExternalMatterAccessoryPublisher.js.map +1 -0
  56. package/dist/matter/MatterAPIImpl.d.ts +473 -0
  57. package/dist/matter/MatterAPIImpl.d.ts.map +1 -0
  58. package/dist/matter/MatterAPIImpl.js +210 -0
  59. package/dist/matter/MatterAPIImpl.js.map +1 -0
  60. package/dist/matter/MatterBridgeManager.d.ts +39 -0
  61. package/dist/matter/MatterBridgeManager.d.ts.map +1 -0
  62. package/dist/matter/MatterBridgeManager.js +323 -0
  63. package/dist/matter/MatterBridgeManager.js.map +1 -0
  64. package/dist/matter/accessoryCache.d.ts +57 -0
  65. package/dist/matter/accessoryCache.d.ts.map +1 -0
  66. package/dist/matter/accessoryCache.js +155 -0
  67. package/dist/matter/accessoryCache.js.map +1 -0
  68. package/dist/matter/behaviors/AirQualityBehavior.d.ts +8 -0
  69. package/dist/matter/behaviors/AirQualityBehavior.d.ts.map +1 -0
  70. package/dist/matter/behaviors/AirQualityBehavior.js +11 -0
  71. package/dist/matter/behaviors/AirQualityBehavior.js.map +1 -0
  72. package/dist/matter/behaviors/BehaviorRegistry.d.ts +27 -0
  73. package/dist/matter/behaviors/BehaviorRegistry.d.ts.map +1 -0
  74. package/dist/matter/behaviors/BehaviorRegistry.js +110 -0
  75. package/dist/matter/behaviors/BehaviorRegistry.js.map +1 -0
  76. package/dist/matter/behaviors/ColorControlBehavior.d.ts +12 -0
  77. package/dist/matter/behaviors/ColorControlBehavior.d.ts.map +1 -0
  78. package/dist/matter/behaviors/ColorControlBehavior.js +139 -0
  79. package/dist/matter/behaviors/ColorControlBehavior.js.map +1 -0
  80. package/dist/matter/behaviors/ConcentrationMeasurementBehavior.d.ts +32 -0
  81. package/dist/matter/behaviors/ConcentrationMeasurementBehavior.d.ts.map +1 -0
  82. package/dist/matter/behaviors/ConcentrationMeasurementBehavior.js +51 -0
  83. package/dist/matter/behaviors/ConcentrationMeasurementBehavior.js.map +1 -0
  84. package/dist/matter/behaviors/DoorLockBehavior.d.ts +7 -0
  85. package/dist/matter/behaviors/DoorLockBehavior.d.ts.map +1 -0
  86. package/dist/matter/behaviors/DoorLockBehavior.js +48 -0
  87. package/dist/matter/behaviors/DoorLockBehavior.js.map +1 -0
  88. package/dist/matter/behaviors/FanControlBehavior.d.ts +7 -0
  89. package/dist/matter/behaviors/FanControlBehavior.d.ts.map +1 -0
  90. package/dist/matter/behaviors/FanControlBehavior.js +57 -0
  91. package/dist/matter/behaviors/FanControlBehavior.js.map +1 -0
  92. package/dist/matter/behaviors/IdentifyBehavior.d.ts +7 -0
  93. package/dist/matter/behaviors/IdentifyBehavior.d.ts.map +1 -0
  94. package/dist/matter/behaviors/IdentifyBehavior.js +25 -0
  95. package/dist/matter/behaviors/IdentifyBehavior.js.map +1 -0
  96. package/dist/matter/behaviors/LevelControlBehavior.d.ts +11 -0
  97. package/dist/matter/behaviors/LevelControlBehavior.d.ts.map +1 -0
  98. package/dist/matter/behaviors/LevelControlBehavior.js +100 -0
  99. package/dist/matter/behaviors/LevelControlBehavior.js.map +1 -0
  100. package/dist/matter/behaviors/OnOffBehavior.d.ts +8 -0
  101. package/dist/matter/behaviors/OnOffBehavior.d.ts.map +1 -0
  102. package/dist/matter/behaviors/OnOffBehavior.js +60 -0
  103. package/dist/matter/behaviors/OnOffBehavior.js.map +1 -0
  104. package/dist/matter/behaviors/RegistryManager.d.ts +15 -0
  105. package/dist/matter/behaviors/RegistryManager.d.ts.map +1 -0
  106. package/dist/matter/behaviors/RegistryManager.js +31 -0
  107. package/dist/matter/behaviors/RegistryManager.js.map +1 -0
  108. package/dist/matter/behaviors/RvcCleanModeBehavior.d.ts +14 -0
  109. package/dist/matter/behaviors/RvcCleanModeBehavior.d.ts.map +1 -0
  110. package/dist/matter/behaviors/RvcCleanModeBehavior.js +29 -0
  111. package/dist/matter/behaviors/RvcCleanModeBehavior.js.map +1 -0
  112. package/dist/matter/behaviors/RvcOperationalStateBehavior.d.ts +10 -0
  113. package/dist/matter/behaviors/RvcOperationalStateBehavior.d.ts.map +1 -0
  114. package/dist/matter/behaviors/RvcOperationalStateBehavior.js +81 -0
  115. package/dist/matter/behaviors/RvcOperationalStateBehavior.js.map +1 -0
  116. package/dist/matter/behaviors/RvcRunModeBehavior.d.ts +14 -0
  117. package/dist/matter/behaviors/RvcRunModeBehavior.d.ts.map +1 -0
  118. package/dist/matter/behaviors/RvcRunModeBehavior.js +29 -0
  119. package/dist/matter/behaviors/RvcRunModeBehavior.js.map +1 -0
  120. package/dist/matter/behaviors/ServiceAreaBehavior.d.ts +9 -0
  121. package/dist/matter/behaviors/ServiceAreaBehavior.d.ts.map +1 -0
  122. package/dist/matter/behaviors/ServiceAreaBehavior.js +62 -0
  123. package/dist/matter/behaviors/ServiceAreaBehavior.js.map +1 -0
  124. package/dist/matter/behaviors/ThermostatBehavior.d.ts +9 -0
  125. package/dist/matter/behaviors/ThermostatBehavior.d.ts.map +1 -0
  126. package/dist/matter/behaviors/ThermostatBehavior.js +92 -0
  127. package/dist/matter/behaviors/ThermostatBehavior.js.map +1 -0
  128. package/dist/matter/behaviors/WindowCoveringBehavior.d.ts +12 -0
  129. package/dist/matter/behaviors/WindowCoveringBehavior.d.ts.map +1 -0
  130. package/dist/matter/behaviors/WindowCoveringBehavior.js +108 -0
  131. package/dist/matter/behaviors/WindowCoveringBehavior.js.map +1 -0
  132. package/dist/matter/behaviors/index.d.ts +18 -0
  133. package/dist/matter/behaviors/index.d.ts.map +1 -0
  134. package/dist/matter/behaviors/index.js +17 -0
  135. package/dist/matter/behaviors/index.js.map +1 -0
  136. package/dist/matter/clusterTypes.d.ts +182 -0
  137. package/dist/matter/clusterTypes.d.ts.map +1 -0
  138. package/dist/matter/clusterTypes.js +2 -0
  139. package/dist/matter/clusterTypes.js.map +1 -0
  140. package/dist/matter/config.d.ts +9 -0
  141. package/dist/matter/config.d.ts.map +1 -0
  142. package/dist/matter/config.js +84 -0
  143. package/dist/matter/config.js.map +1 -0
  144. package/dist/matter/configValidator.d.ts +26 -0
  145. package/dist/matter/configValidator.d.ts.map +1 -0
  146. package/dist/matter/configValidator.js +173 -0
  147. package/dist/matter/configValidator.js.map +1 -0
  148. package/dist/matter/errorHandler.d.ts +11 -0
  149. package/dist/matter/errorHandler.d.ts.map +1 -0
  150. package/dist/matter/errorHandler.js +81 -0
  151. package/dist/matter/errorHandler.js.map +1 -0
  152. package/dist/matter/errors.d.ts +46 -0
  153. package/dist/matter/errors.d.ts.map +1 -0
  154. package/dist/matter/errors.js +68 -0
  155. package/dist/matter/errors.js.map +1 -0
  156. package/dist/matter/index.d.ts +97 -0
  157. package/dist/matter/index.d.ts.map +1 -0
  158. package/dist/matter/index.js +10 -0
  159. package/dist/matter/index.js.map +1 -0
  160. package/dist/matter/logFormatter.d.ts +2 -0
  161. package/dist/matter/logFormatter.d.ts.map +1 -0
  162. package/dist/matter/logFormatter.js +100 -0
  163. package/dist/matter/logFormatter.js.map +1 -0
  164. package/dist/matter/managerTypes.d.ts +57 -0
  165. package/dist/matter/managerTypes.d.ts.map +1 -0
  166. package/dist/matter/managerTypes.js +2 -0
  167. package/dist/matter/managerTypes.js.map +1 -0
  168. package/dist/matter/server.d.ts +112 -0
  169. package/dist/matter/server.d.ts.map +1 -0
  170. package/dist/matter/server.js +1508 -0
  171. package/dist/matter/server.js.map +1 -0
  172. package/dist/matter/serverHelpers.d.ts +31 -0
  173. package/dist/matter/serverHelpers.d.ts.map +1 -0
  174. package/dist/matter/serverHelpers.js +273 -0
  175. package/dist/matter/serverHelpers.js.map +1 -0
  176. package/dist/matter/sharedTypes.d.ts +93 -0
  177. package/dist/matter/sharedTypes.d.ts.map +1 -0
  178. package/dist/matter/sharedTypes.js +20 -0
  179. package/dist/matter/sharedTypes.js.map +1 -0
  180. package/dist/matter/storage.d.ts +45 -0
  181. package/dist/matter/storage.d.ts.map +1 -0
  182. package/dist/matter/storage.js +325 -0
  183. package/dist/matter/storage.js.map +1 -0
  184. package/dist/matter/typeHelpers.d.ts +15 -0
  185. package/dist/matter/typeHelpers.d.ts.map +1 -0
  186. package/dist/matter/typeHelpers.js +33 -0
  187. package/dist/matter/typeHelpers.js.map +1 -0
  188. package/dist/matter/types.d.ts +642 -0
  189. package/dist/matter/types.d.ts.map +1 -0
  190. package/dist/matter/types.js +208 -0
  191. package/dist/matter/types.js.map +1 -0
  192. package/dist/matter/utils.d.ts +13 -0
  193. package/dist/matter/utils.d.ts.map +1 -0
  194. package/dist/matter/utils.js +21 -0
  195. package/dist/matter/utils.js.map +1 -0
  196. package/{lib → dist}/platformAccessory.d.ts +8 -21
  197. package/dist/platformAccessory.d.ts.map +1 -0
  198. package/dist/platformAccessory.js +79 -0
  199. package/dist/platformAccessory.js.map +1 -0
  200. package/{lib → dist}/plugin.d.ts +2 -6
  201. package/dist/plugin.d.ts.map +1 -0
  202. package/dist/plugin.js +159 -0
  203. package/dist/plugin.js.map +1 -0
  204. package/{lib → dist}/pluginManager.d.ts +3 -25
  205. package/dist/pluginManager.d.ts.map +1 -0
  206. package/{lib → dist}/pluginManager.js +87 -115
  207. package/dist/pluginManager.js.map +1 -0
  208. package/{lib → dist}/server.d.ts +15 -20
  209. package/dist/server.d.ts.map +1 -0
  210. package/dist/server.js +727 -0
  211. package/dist/server.js.map +1 -0
  212. package/{lib → dist}/storageService.d.ts.map +1 -1
  213. package/dist/storageService.js +41 -0
  214. package/dist/storageService.js.map +1 -0
  215. package/{lib → dist}/user.d.ts +1 -3
  216. package/dist/user.d.ts.map +1 -0
  217. package/dist/user.js +29 -0
  218. package/dist/user.js.map +1 -0
  219. package/{lib → dist}/util/mac.d.ts +1 -0
  220. package/dist/util/mac.d.ts.map +1 -0
  221. package/dist/util/mac.js +13 -0
  222. package/dist/util/mac.js.map +1 -0
  223. package/dist/version.d.ts.map +1 -0
  224. package/dist/version.js +16 -0
  225. package/dist/version.js.map +1 -0
  226. package/package.json +49 -50
  227. package/bin/homebridge +0 -17
  228. package/lib/api.d.ts +0 -210
  229. package/lib/api.d.ts.map +0 -1
  230. package/lib/api.js +0 -155
  231. package/lib/api.js.map +0 -1
  232. package/lib/bridgeService.d.ts.map +0 -1
  233. package/lib/bridgeService.js +0 -426
  234. package/lib/bridgeService.js.map +0 -1
  235. package/lib/childBridgeFork.d.ts +0 -37
  236. package/lib/childBridgeFork.d.ts.map +0 -1
  237. package/lib/childBridgeFork.js +0 -244
  238. package/lib/childBridgeFork.js.map +0 -1
  239. package/lib/childBridgeService.d.ts +0 -199
  240. package/lib/childBridgeService.d.ts.map +0 -1
  241. package/lib/childBridgeService.js +0 -428
  242. package/lib/childBridgeService.js.map +0 -1
  243. package/lib/cli.d.ts +0 -4
  244. package/lib/cli.d.ts.map +0 -1
  245. package/lib/cli.js +0 -111
  246. package/lib/cli.js.map +0 -1
  247. package/lib/externalPortService.d.ts +0 -33
  248. package/lib/externalPortService.d.ts.map +0 -1
  249. package/lib/externalPortService.js +0 -64
  250. package/lib/externalPortService.js.map +0 -1
  251. package/lib/index.d.ts +0 -76
  252. package/lib/index.d.ts.map +0 -1
  253. package/lib/index.js +0 -72
  254. package/lib/index.js.map +0 -1
  255. package/lib/ipcService.d.ts +0 -33
  256. package/lib/ipcService.d.ts.map +0 -1
  257. package/lib/ipcService.js +0 -49
  258. package/lib/ipcService.js.map +0 -1
  259. package/lib/logger.d.ts +0 -78
  260. package/lib/logger.d.ts.map +0 -1
  261. package/lib/logger.js +0 -147
  262. package/lib/logger.js.map +0 -1
  263. package/lib/platformAccessory.d.ts.map +0 -1
  264. package/lib/platformAccessory.js +0 -102
  265. package/lib/platformAccessory.js.map +0 -1
  266. package/lib/plugin.d.ts.map +0 -1
  267. package/lib/plugin.js +0 -194
  268. package/lib/plugin.js.map +0 -1
  269. package/lib/pluginManager.d.ts.map +0 -1
  270. package/lib/pluginManager.js.map +0 -1
  271. package/lib/server.d.ts.map +0 -1
  272. package/lib/server.js +0 -457
  273. package/lib/server.js.map +0 -1
  274. package/lib/storageService.js +0 -70
  275. package/lib/storageService.js.map +0 -1
  276. package/lib/user.d.ts.map +0 -1
  277. package/lib/user.js +0 -36
  278. package/lib/user.js.map +0 -1
  279. package/lib/util/mac.d.ts.map +0 -1
  280. package/lib/util/mac.js +0 -20
  281. package/lib/util/mac.js.map +0 -1
  282. package/lib/version.d.ts.map +0 -1
  283. package/lib/version.js +0 -21
  284. package/lib/version.js.map +0 -1
  285. /package/{lib → dist}/storageService.d.ts +0 -0
  286. /package/{lib → dist}/version.d.ts +0 -0
package/lib/server.js DELETED
@@ -1,457 +0,0 @@
1
- "use strict";
2
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
- if (k2 === undefined) k2 = k;
4
- var desc = Object.getOwnPropertyDescriptor(m, k);
5
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
- desc = { enumerable: true, get: function() { return m[k]; } };
7
- }
8
- Object.defineProperty(o, k2, desc);
9
- }) : (function(o, m, k, k2) {
10
- if (k2 === undefined) k2 = k;
11
- o[k2] = m[k];
12
- }));
13
- var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
- Object.defineProperty(o, "default", { enumerable: true, value: v });
15
- }) : function(o, v) {
16
- o["default"] = v;
17
- });
18
- var __importStar = (this && this.__importStar) || function (mod) {
19
- if (mod && mod.__esModule) return mod;
20
- var result = {};
21
- if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
- __setModuleDefault(result, mod);
23
- return result;
24
- };
25
- var __importDefault = (this && this.__importDefault) || function (mod) {
26
- return (mod && mod.__esModule) ? mod : { "default": mod };
27
- };
28
- Object.defineProperty(exports, "__esModule", { value: true });
29
- exports.Server = exports.ServerStatus = void 0;
30
- const fs_1 = __importDefault(require("fs"));
31
- const chalk_1 = __importDefault(require("chalk"));
32
- const qrcode_terminal_1 = __importDefault(require("qrcode-terminal"));
33
- const api_1 = require("./api");
34
- const bridgeService_1 = require("./bridgeService");
35
- const childBridgeService_1 = require("./childBridgeService");
36
- const externalPortService_1 = require("./externalPortService");
37
- const ipcService_1 = require("./ipcService");
38
- const logger_1 = require("./logger");
39
- const pluginManager_1 = require("./pluginManager");
40
- const user_1 = require("./user");
41
- const mac = __importStar(require("./util/mac"));
42
- const log = logger_1.Logger.internal;
43
- var ServerStatus;
44
- (function (ServerStatus) {
45
- /**
46
- * When the server is starting up
47
- */
48
- ServerStatus["PENDING"] = "pending";
49
- /**
50
- * When the server is online and has published the main bridge
51
- */
52
- ServerStatus["OK"] = "ok";
53
- /**
54
- * When the server is shutting down
55
- */
56
- ServerStatus["DOWN"] = "down";
57
- })(ServerStatus || (exports.ServerStatus = ServerStatus = {}));
58
- class Server {
59
- options;
60
- api;
61
- pluginManager;
62
- bridgeService;
63
- ipcService;
64
- externalPortService;
65
- config;
66
- // used to keep track of child bridges
67
- childBridges = new Map();
68
- // current server status
69
- serverStatus = "pending" /* ServerStatus.PENDING */;
70
- constructor(options = {}) {
71
- this.options = options;
72
- this.config = Server.loadConfig();
73
- // object we feed to Plugins and BridgeService
74
- this.api = new api_1.HomebridgeAPI();
75
- this.ipcService = new ipcService_1.IpcService();
76
- this.externalPortService = new externalPortService_1.ExternalPortService(this.config.ports);
77
- // set status to pending
78
- this.setServerStatus("pending" /* ServerStatus.PENDING */);
79
- // create new plugin manager
80
- const pluginManagerOptions = {
81
- activePlugins: this.config.plugins,
82
- disabledPlugins: this.config.disabledPlugins,
83
- customPluginPath: options.customPluginPath,
84
- strictPluginResolution: options.strictPluginResolution,
85
- };
86
- this.pluginManager = new pluginManager_1.PluginManager(this.api, pluginManagerOptions);
87
- // create new bridge service
88
- const bridgeConfig = {
89
- cachedAccessoriesDir: user_1.User.cachedAccessoryPath(),
90
- cachedAccessoriesItemName: "cachedAccessories",
91
- };
92
- // shallow copy the homebridge options to the bridge options object
93
- Object.assign(bridgeConfig, this.options);
94
- this.bridgeService = new bridgeService_1.BridgeService(this.api, this.pluginManager, this.externalPortService, bridgeConfig, this.config.bridge, this.config);
95
- // watch bridge events to check when server is online
96
- this.bridgeService.bridge.on("advertised" /* AccessoryEventTypes.ADVERTISED */, () => {
97
- this.setServerStatus("ok" /* ServerStatus.OK */);
98
- });
99
- // watch for the paired event to update the server status
100
- this.bridgeService.bridge.on("paired" /* AccessoryEventTypes.PAIRED */, () => {
101
- this.setServerStatus(this.serverStatus);
102
- });
103
- // watch for the unpaired event to update the server status
104
- this.bridgeService.bridge.on("unpaired" /* AccessoryEventTypes.UNPAIRED */, () => {
105
- this.setServerStatus(this.serverStatus);
106
- });
107
- }
108
- /**
109
- * Set the current server status and update parent via IPC
110
- * @param status
111
- */
112
- setServerStatus(status) {
113
- this.serverStatus = status;
114
- this.ipcService.sendMessage("serverStatusUpdate" /* IpcOutgoingEvent.SERVER_STATUS_UPDATE */, {
115
- status: this.serverStatus,
116
- paired: this.bridgeService?.bridge?._accessoryInfo?.paired() ?? null,
117
- setupUri: this.bridgeService?.bridge?.setupURI() ?? null,
118
- name: this.bridgeService?.bridge?.displayName || this.config.bridge.name,
119
- username: this.config.bridge.username,
120
- pin: this.config.bridge.pin,
121
- });
122
- }
123
- async start() {
124
- if (this.config.bridge.disableIpc !== true) {
125
- this.initializeIpcEventHandlers();
126
- }
127
- const promises = [];
128
- // load the cached accessories
129
- await this.bridgeService.loadCachedPlatformAccessoriesFromDisk();
130
- // initialize plugins
131
- await this.pluginManager.initializeInstalledPlugins();
132
- if (this.config.platforms.length > 0) {
133
- promises.push(...this.loadPlatforms());
134
- }
135
- if (this.config.accessories.length > 0) {
136
- this.loadAccessories();
137
- }
138
- // start child bridges
139
- for (const childBridge of this.childBridges.values()) {
140
- childBridge.start();
141
- }
142
- // restore cached accessories
143
- this.bridgeService.restoreCachedPlatformAccessories();
144
- this.api.signalFinished();
145
- // wait for all platforms to publish their accessories before we publish the bridge
146
- await Promise.all(promises)
147
- .then(() => this.publishBridge());
148
- }
149
- teardown() {
150
- this.bridgeService.teardown();
151
- this.setServerStatus("down" /* ServerStatus.DOWN */);
152
- }
153
- publishBridge() {
154
- this.bridgeService.publishBridge();
155
- this.printSetupInfo(this.config.bridge.pin);
156
- }
157
- static loadConfig() {
158
- // Look for the configuration file
159
- const configPath = user_1.User.configPath();
160
- const defaultBridge = {
161
- name: "Homebridge",
162
- username: "CC:22:3D:E3:CE:30",
163
- pin: "031-45-154",
164
- };
165
- if (!fs_1.default.existsSync(configPath)) {
166
- log.warn("config.json (%s) not found.", configPath);
167
- return {
168
- bridge: defaultBridge,
169
- accessories: [],
170
- platforms: [],
171
- };
172
- }
173
- let config;
174
- try {
175
- config = JSON.parse(fs_1.default.readFileSync(configPath, { encoding: "utf8" }));
176
- }
177
- catch (err) {
178
- log.error("There was a problem reading your config.json file.");
179
- log.error("Please try pasting your config.json file here to validate it: https://jsonlint.com");
180
- log.error("");
181
- throw err;
182
- }
183
- if (config.ports !== undefined) {
184
- if (config.ports.start && config.ports.end) {
185
- if (config.ports.start > config.ports.end) {
186
- log.error("Invalid port pool configuration. End should be greater than or equal to start.");
187
- config.ports = undefined;
188
- }
189
- }
190
- else {
191
- log.error("Invalid configuration for 'ports'. Missing 'start' and 'end' properties! Ignoring it!");
192
- config.ports = undefined;
193
- }
194
- }
195
- const bridge = config.bridge || defaultBridge;
196
- bridge.name = bridge.name || defaultBridge.name;
197
- bridge.username = bridge.username || defaultBridge.username;
198
- bridge.pin = bridge.pin || defaultBridge.pin;
199
- config.bridge = bridge;
200
- const username = config.bridge.username;
201
- if (!mac.validMacAddress(username)) {
202
- throw new Error(`Not a valid username: ${username}. Must be 6 pairs of colon-separated hexadecimal chars (A-F 0-9), like a MAC address.`);
203
- }
204
- config.accessories = config.accessories || [];
205
- config.platforms = config.platforms || [];
206
- if (!Array.isArray(config.accessories)) {
207
- log.error("Value provided for accessories must be an array[]");
208
- config.accessories = [];
209
- }
210
- if (!Array.isArray(config.platforms)) {
211
- log.error("Value provided for platforms must be an array[]");
212
- config.platforms = [];
213
- }
214
- log.info("Loaded config.json with %s accessories and %s platforms.", config.accessories.length, config.platforms.length);
215
- if (config.bridge.advertiser) {
216
- if (![
217
- "bonjour-hap" /* MDNSAdvertiser.BONJOUR */,
218
- "ciao" /* MDNSAdvertiser.CIAO */,
219
- "avahi" /* MDNSAdvertiser.AVAHI */,
220
- "resolved" /* MDNSAdvertiser.RESOLVED */,
221
- ].includes(config.bridge.advertiser)) {
222
- config.bridge.advertiser = undefined;
223
- log.error("Value provided in bridge.advertiser is not valid, reverting to platform default.");
224
- }
225
- }
226
- else {
227
- config.bridge.advertiser = undefined;
228
- }
229
- return config;
230
- }
231
- loadAccessories() {
232
- log.info("Loading " + this.config.accessories.length + " accessories...");
233
- this.config.accessories.forEach((accessoryConfig, index) => {
234
- if (!accessoryConfig.accessory) {
235
- log.warn("Your config.json contains an illegal accessory configuration object at position %d. " +
236
- "Missing property 'accessory'. Skipping entry...", index + 1); // we rather count from 1 for the normal people?
237
- return;
238
- }
239
- const accessoryIdentifier = accessoryConfig.accessory;
240
- const displayName = accessoryConfig.name;
241
- if (!displayName) {
242
- log.warn("Could not load accessory %s at position %d as it is missing the required 'name' property!", accessoryIdentifier, index + 1);
243
- return;
244
- }
245
- let plugin;
246
- let constructor;
247
- try {
248
- plugin = this.pluginManager.getPluginForAccessory(accessoryIdentifier);
249
- }
250
- catch (error) {
251
- log.error(error.message);
252
- return;
253
- }
254
- // check the plugin is not disabled
255
- if (plugin.disabled) {
256
- log.warn(`Ignoring config for the accessory "${accessoryIdentifier}" in your config.json as the plugin "${plugin.getPluginIdentifier()}" has been disabled.`);
257
- return;
258
- }
259
- try {
260
- constructor = plugin.getAccessoryConstructor(accessoryIdentifier);
261
- }
262
- catch (error) {
263
- log.error(`Error loading the accessory "${accessoryIdentifier}" requested in your config.json at position ${index + 1} - this is likely an issue with the "${plugin.getPluginIdentifier()}" plugin.`);
264
- log.error(error); // error message contains more information and full stack trace
265
- return;
266
- }
267
- const logger = logger_1.Logger.withPrefix(displayName);
268
- logger("Initializing %s accessory...", accessoryIdentifier);
269
- if (accessoryConfig._bridge) {
270
- // ensure the username is always uppercase
271
- accessoryConfig._bridge.username = accessoryConfig._bridge.username.toUpperCase();
272
- try {
273
- this.validateChildBridgeConfig("accessory" /* PluginType.ACCESSORY */, accessoryIdentifier, accessoryConfig._bridge);
274
- }
275
- catch (error) {
276
- log.error(error.message);
277
- return;
278
- }
279
- let childBridge;
280
- if (this.childBridges.has(accessoryConfig._bridge.username)) {
281
- childBridge = this.childBridges.get(accessoryConfig._bridge.username);
282
- logger(`Adding to existing child bridge ${accessoryConfig._bridge.username}`);
283
- }
284
- else {
285
- logger(`Initializing child bridge ${accessoryConfig._bridge.username}`);
286
- childBridge = new childBridgeService_1.ChildBridgeService("accessory" /* PluginType.ACCESSORY */, accessoryIdentifier, plugin, accessoryConfig._bridge, this.config, this.options, this.api, this.ipcService, this.externalPortService);
287
- this.childBridges.set(accessoryConfig._bridge.username, childBridge);
288
- }
289
- // add config to child bridge service
290
- childBridge.addConfig(accessoryConfig);
291
- return;
292
- }
293
- const accessoryInstance = new constructor(logger, accessoryConfig, this.api);
294
- //pass accessoryIdentifier for UUID generation, and optional parameter uuid_base which can be used instead of displayName for UUID generation
295
- const accessory = this.bridgeService.createHAPAccessory(plugin, accessoryInstance, displayName, accessoryIdentifier, accessoryConfig.uuid_base);
296
- if (accessory) {
297
- try {
298
- this.bridgeService.bridge.addBridgedAccessory(accessory);
299
- }
300
- catch (e) {
301
- logger.error(`Error loading the accessory "${accessoryIdentifier}" from "${plugin.getPluginIdentifier()}" requested in your config.json:`, e.message);
302
- return;
303
- }
304
- }
305
- else {
306
- logger.info("Accessory %s returned empty set of services; not adding it to the bridge.", accessoryIdentifier);
307
- }
308
- });
309
- }
310
- loadPlatforms() {
311
- log.info("Loading " + this.config.platforms.length + " platforms...");
312
- const promises = [];
313
- this.config.platforms.forEach((platformConfig, index) => {
314
- if (!platformConfig.platform) {
315
- log.warn("Your config.json contains an illegal platform configuration object at position %d. " +
316
- "Missing property 'platform'. Skipping entry...", index + 1); // we rather count from 1 for the normal people?
317
- return;
318
- }
319
- const platformIdentifier = platformConfig.platform;
320
- const displayName = platformConfig.name || platformIdentifier;
321
- let plugin;
322
- let constructor;
323
- // do not load homebridge-config-ui-x when running in service mode
324
- if (platformIdentifier === "config" && process.env.UIX_SERVICE_MODE === "1") {
325
- return;
326
- }
327
- try {
328
- plugin = this.pluginManager.getPluginForPlatform(platformIdentifier);
329
- }
330
- catch (error) {
331
- log.error(error.message);
332
- return;
333
- }
334
- // check the plugin is not disabled
335
- if (plugin.disabled) {
336
- log.warn(`Ignoring config for the platform "${platformIdentifier}" in your config.json as the plugin "${plugin.getPluginIdentifier()}" has been disabled.`);
337
- return;
338
- }
339
- try {
340
- constructor = plugin.getPlatformConstructor(platformIdentifier);
341
- }
342
- catch (error) {
343
- log.error(`Error loading the platform "${platformIdentifier}" requested in your config.json at position ${index + 1} - this is likely an issue with the "${plugin.getPluginIdentifier()}" plugin.`);
344
- log.error(error); // error message contains more information and full stack trace
345
- return;
346
- }
347
- const logger = logger_1.Logger.withPrefix(displayName);
348
- logger("Initializing %s platform...", platformIdentifier);
349
- if (platformConfig._bridge) {
350
- // ensure the username is always uppercase
351
- platformConfig._bridge.username = platformConfig._bridge.username.toUpperCase();
352
- try {
353
- this.validateChildBridgeConfig("platform" /* PluginType.PLATFORM */, platformIdentifier, platformConfig._bridge);
354
- }
355
- catch (error) {
356
- log.error(error.message);
357
- return;
358
- }
359
- logger(`Initializing child bridge ${platformConfig._bridge.username}`);
360
- const childBridge = new childBridgeService_1.ChildBridgeService("platform" /* PluginType.PLATFORM */, platformIdentifier, plugin, platformConfig._bridge, this.config, this.options, this.api, this.ipcService, this.externalPortService);
361
- this.childBridges.set(platformConfig._bridge.username, childBridge);
362
- // add config to child bridge service
363
- childBridge.addConfig(platformConfig);
364
- return;
365
- }
366
- const platform = new constructor(logger, platformConfig, this.api);
367
- if (api_1.HomebridgeAPI.isDynamicPlatformPlugin(platform)) {
368
- plugin.assignDynamicPlatform(platformIdentifier, platform);
369
- }
370
- else if (api_1.HomebridgeAPI.isStaticPlatformPlugin(platform)) { // Plugin 1.0, load accessories
371
- promises.push(this.bridgeService.loadPlatformAccessories(plugin, platform, platformIdentifier, logger));
372
- }
373
- else {
374
- // otherwise it's a IndependentPlatformPlugin which doesn't expose any methods at all.
375
- // We just call the constructor and let it be enabled.
376
- }
377
- });
378
- return promises;
379
- }
380
- /**
381
- * Validate an external bridge config
382
- */
383
- validateChildBridgeConfig(type, identifier, bridgeConfig) {
384
- if (!mac.validMacAddress(bridgeConfig.username)) {
385
- throw new Error(`Error loading the ${type} "${identifier}" requested in your config.json - ` +
386
- `not a valid username in _bridge.username: "${bridgeConfig.username}". Must be 6 pairs of colon-separated hexadecimal chars (A-F 0-9), like a MAC address.`);
387
- }
388
- if (this.childBridges.has(bridgeConfig.username)) {
389
- const childBridge = this.childBridges.get(bridgeConfig.username);
390
- if (type === "platform" /* PluginType.PLATFORM */) {
391
- // only a single platform can exist on one child bridge
392
- throw new Error(`Error loading the ${type} "${identifier}" requested in your config.json - ` +
393
- `Duplicate username found in _bridge.username: "${bridgeConfig.username}". Each platform child bridge must have it's own unique username.`);
394
- }
395
- else if (childBridge?.identifier !== identifier) {
396
- // only accessories of the same type can be added to the same child bridge
397
- throw new Error(`Error loading the ${type} "${identifier}" requested in your config.json - ` +
398
- `Duplicate username found in _bridge.username: "${bridgeConfig.username}". You can only group accessories of the same type in a child bridge.`);
399
- }
400
- }
401
- if (bridgeConfig.username === this.config.bridge.username.toUpperCase()) {
402
- throw new Error(`Error loading the ${type} "${identifier}" requested in your config.json - ` +
403
- `Username found in _bridge.username: "${bridgeConfig.username}" is the same as the main bridge. Each child bridge platform/accessory must have it's own unique username.`);
404
- }
405
- }
406
- /**
407
- * Takes care of the IPC Events sent to Homebridge
408
- */
409
- initializeIpcEventHandlers() {
410
- // start ipc service
411
- this.ipcService.start();
412
- // handle restart child bridge event
413
- this.ipcService.on("restartChildBridge" /* IpcIncomingEvent.RESTART_CHILD_BRIDGE */, (username) => {
414
- if (typeof username === "string") {
415
- const childBridge = this.childBridges.get(username.toUpperCase());
416
- childBridge?.restartChildBridge();
417
- }
418
- });
419
- // handle stop child bridge event
420
- this.ipcService.on("stopChildBridge" /* IpcIncomingEvent.STOP_CHILD_BRIDGE */, (username) => {
421
- if (typeof username === "string") {
422
- const childBridge = this.childBridges.get(username.toUpperCase());
423
- childBridge?.stopChildBridge();
424
- }
425
- });
426
- // handle start child bridge event
427
- this.ipcService.on("startChildBridge" /* IpcIncomingEvent.START_CHILD_BRIDGE */, (username) => {
428
- if (typeof username === "string") {
429
- const childBridge = this.childBridges.get(username.toUpperCase());
430
- childBridge?.startChildBridge();
431
- }
432
- });
433
- this.ipcService.on("childBridgeMetadataRequest" /* IpcIncomingEvent.CHILD_BRIDGE_METADATA_REQUEST */, () => {
434
- this.ipcService.sendMessage("childBridgeMetadataResponse" /* IpcOutgoingEvent.CHILD_BRIDGE_METADATA_RESPONSE */, Array.from(this.childBridges.values()).map(x => x.getMetadata()));
435
- });
436
- }
437
- printSetupInfo(pin) {
438
- console.log("Setup Payload:");
439
- console.log(this.bridgeService.bridge.setupURI());
440
- if (!this.options.hideQRCode) {
441
- console.log("Scan this code with your HomeKit app on your iOS device to pair with Homebridge:");
442
- qrcode_terminal_1.default.setErrorLevel("M"); // HAP specifies level M or higher for ECC
443
- qrcode_terminal_1.default.generate(this.bridgeService.bridge.setupURI());
444
- console.log("Or enter this code with your HomeKit app on your iOS device to pair with Homebridge:");
445
- }
446
- else {
447
- console.log("Enter this code with your HomeKit app on your iOS device to pair with Homebridge:");
448
- }
449
- console.log(chalk_1.default.black.bgWhite(" "));
450
- console.log(chalk_1.default.black.bgWhite(" ┌────────────┐ "));
451
- console.log(chalk_1.default.black.bgWhite(" │ " + pin + " │ "));
452
- console.log(chalk_1.default.black.bgWhite(" └────────────┘ "));
453
- console.log(chalk_1.default.black.bgWhite(" "));
454
- }
455
- }
456
- exports.Server = Server;
457
- //# sourceMappingURL=server.js.map
package/lib/server.js.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"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"}
@@ -1,70 +0,0 @@
1
- "use strict";
2
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
- if (k2 === undefined) k2 = k;
4
- var desc = Object.getOwnPropertyDescriptor(m, k);
5
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
- desc = { enumerable: true, get: function() { return m[k]; } };
7
- }
8
- Object.defineProperty(o, k2, desc);
9
- }) : (function(o, m, k, k2) {
10
- if (k2 === undefined) k2 = k;
11
- o[k2] = m[k];
12
- }));
13
- var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
- Object.defineProperty(o, "default", { enumerable: true, value: v });
15
- }) : function(o, v) {
16
- o["default"] = v;
17
- });
18
- var __importStar = (this && this.__importStar) || function (mod) {
19
- if (mod && mod.__esModule) return mod;
20
- var result = {};
21
- if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
- __setModuleDefault(result, mod);
23
- return result;
24
- };
25
- Object.defineProperty(exports, "__esModule", { value: true });
26
- exports.StorageService = void 0;
27
- const path = __importStar(require("path"));
28
- const fs = __importStar(require("fs-extra"));
29
- class StorageService {
30
- baseDirectory;
31
- constructor(baseDirectory) {
32
- this.baseDirectory = baseDirectory;
33
- }
34
- initSync() {
35
- return fs.ensureDirSync(this.baseDirectory);
36
- }
37
- getItemSync(itemName) {
38
- const filePath = path.resolve(this.baseDirectory, itemName);
39
- if (!fs.pathExistsSync(filePath)) {
40
- return null;
41
- }
42
- return fs.readJsonSync(filePath);
43
- }
44
- async getItem(itemName) {
45
- const filePath = path.resolve(this.baseDirectory, itemName);
46
- if (!await fs.pathExists(filePath)) {
47
- return null;
48
- }
49
- return await fs.readJson(filePath);
50
- }
51
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
52
- setItemSync(itemName, data) {
53
- return fs.writeJsonSync(path.resolve(this.baseDirectory, itemName), data);
54
- }
55
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
56
- setItem(itemName, data) {
57
- return fs.writeJson(path.resolve(this.baseDirectory, itemName), data);
58
- }
59
- copyItem(srcItemName, destItemName) {
60
- return fs.copyFile(path.resolve(this.baseDirectory, srcItemName), path.resolve(this.baseDirectory, destItemName));
61
- }
62
- copyItemSync(srcItemName, destItemName) {
63
- return fs.copyFileSync(path.resolve(this.baseDirectory, srcItemName), path.resolve(this.baseDirectory, destItemName));
64
- }
65
- removeItemSync(itemName) {
66
- return fs.removeSync(path.resolve(this.baseDirectory, itemName));
67
- }
68
- }
69
- exports.StorageService = StorageService;
70
- //# sourceMappingURL=storageService.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"storageService.js","sourceRoot":"","sources":["../src/storageService.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,2CAA6B;AAC7B,6CAA+B;AAE/B,MAAa,cAAc;IAEhB;IADT,YACS,aAAqB;QAArB,kBAAa,GAAb,aAAa,CAAQ;IAC3B,CAAC;IAEG,QAAQ;QACb,OAAO,EAAE,CAAC,aAAa,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;IAC9C,CAAC;IAEM,WAAW,CAAI,QAAgB;QACpC,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,aAAa,EAAE,QAAQ,CAAC,CAAC;QAE5D,IAAI,CAAC,EAAE,CAAC,cAAc,CAAC,QAAQ,CAAC,EAAE,CAAC;YACjC,OAAO,IAAI,CAAC;QACd,CAAC;QAED,OAAO,EAAE,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC;IACnC,CAAC;IAEM,KAAK,CAAC,OAAO,CAAI,QAAgB;QACtC,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,aAAa,EAAE,QAAQ,CAAC,CAAC;QAE5D,IAAI,CAAC,MAAM,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;YACnC,OAAO,IAAI,CAAC;QACd,CAAC;QAED,OAAO,MAAM,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;IACrC,CAAC;IAED,8DAA8D;IACvD,WAAW,CAAC,QAAgB,EAAE,IAAmC;QACtE,OAAO,EAAE,CAAC,aAAa,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,aAAa,EAAE,QAAQ,CAAC,EAAE,IAAI,CAAC,CAAC;IAC5E,CAAC;IAED,8DAA8D;IACvD,OAAO,CAAC,QAAgB,EAAE,IAAmC;QAClE,OAAO,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,aAAa,EAAE,QAAQ,CAAC,EAAE,IAAI,CAAC,CAAC;IACxE,CAAC;IAEM,QAAQ,CAAC,WAAmB,EAAE,YAAoB;QACvD,OAAO,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,aAAa,EAAE,WAAW,CAAC,EAAE,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,aAAa,EAAE,YAAY,CAAC,CAAC,CAAC;IACpH,CAAC;IAEM,YAAY,CAAC,WAAmB,EAAE,YAAoB;QAC3D,OAAO,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,aAAa,EAAE,WAAW,CAAC,EAAE,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,aAAa,EAAE,YAAY,CAAC,CAAC,CAAC;IACxH,CAAC;IAEM,cAAc,CAAC,QAAgB;QACpC,OAAO,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,aAAa,EAAE,QAAQ,CAAC,CAAC,CAAC;IACnE,CAAC;CACF;AAlDD,wCAkDC"}
package/lib/user.d.ts.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"file":"user.d.ts","sourceRoot":"","sources":["../src/user.ts"],"names":[],"mappings":"AAGA;;GAEG;AACH,qBAAa,IAAI;IAEf,OAAO,CAAC,MAAM,CAAC,iBAAiB,CAAC,CAAS;IAC1C,OAAO,CAAC,MAAM,CAAC,eAAe,CAAS;IAEvC,MAAM,CAAC,UAAU,IAAI,MAAM;IAI3B,MAAM,CAAC,WAAW,IAAI,MAAM;IAI5B,MAAM,CAAC,mBAAmB,IAAI,MAAM;IAIpC,MAAM,CAAC,WAAW,IAAI,MAAM;WAMd,cAAc,CAAC,GAAG,mBAAmB,EAAE,MAAM,EAAE,GAAG,IAAI;CAQrE"}
package/lib/user.js DELETED
@@ -1,36 +0,0 @@
1
- "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
- Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.User = void 0;
7
- const os_1 = __importDefault(require("os"));
8
- const path_1 = __importDefault(require("path"));
9
- /**
10
- * Manages user settings and storage locations.
11
- */
12
- class User {
13
- static customStoragePath;
14
- static storageAccessed = false;
15
- static configPath() {
16
- return path_1.default.join(User.storagePath(), "config.json");
17
- }
18
- static persistPath() {
19
- return path_1.default.join(User.storagePath(), "persist"); // hap-nodejs data is stored here
20
- }
21
- static cachedAccessoryPath() {
22
- return path_1.default.join(User.storagePath(), "accessories");
23
- }
24
- static storagePath() {
25
- User.storageAccessed = true;
26
- return User.customStoragePath ? User.customStoragePath : path_1.default.join(os_1.default.homedir(), ".homebridge");
27
- }
28
- static setStoragePath(...storagePathSegments) {
29
- if (User.storageAccessed) {
30
- throw new Error("Storage path was already accessed and cannot be changed anymore. Try initializing your custom storage path earlier!");
31
- }
32
- User.customStoragePath = path_1.default.resolve(...storagePathSegments);
33
- }
34
- }
35
- exports.User = User;
36
- //# sourceMappingURL=user.js.map
package/lib/user.js.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"file":"user.js","sourceRoot":"","sources":["../src/user.ts"],"names":[],"mappings":";;;;;;AAAA,4CAAoB;AACpB,gDAAwB;AAExB;;GAEG;AACH,MAAa,IAAI;IAEP,MAAM,CAAC,iBAAiB,CAAU;IAClC,MAAM,CAAC,eAAe,GAAG,KAAK,CAAC;IAEvC,MAAM,CAAC,UAAU;QACf,OAAO,cAAI,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,EAAE,aAAa,CAAC,CAAC;IACtD,CAAC;IAED,MAAM,CAAC,WAAW;QAChB,OAAO,cAAI,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,EAAE,SAAS,CAAC,CAAC,CAAC,iCAAiC;IACpF,CAAC;IAED,MAAM,CAAC,mBAAmB;QACxB,OAAO,cAAI,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,EAAE,aAAa,CAAC,CAAC;IACtD,CAAC;IAED,MAAM,CAAC,WAAW;QAChB,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC;QAE5B,OAAO,IAAI,CAAC,iBAAiB,CAAC,CAAC,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC,CAAC,cAAI,CAAC,IAAI,CAAC,YAAE,CAAC,OAAO,EAAE,EAAE,aAAa,CAAC,CAAC;IAClG,CAAC;IAEM,MAAM,CAAC,cAAc,CAAC,GAAG,mBAA6B;QAC3D,IAAI,IAAI,CAAC,eAAe,EAAE,CAAC;YACzB,MAAM,IAAI,KAAK,CAAC,qHAAqH,CAAC,CAAC;QACzI,CAAC;QAED,IAAI,CAAC,iBAAiB,GAAG,cAAI,CAAC,OAAO,CAAC,GAAG,mBAAmB,CAAC,CAAC;IAChE,CAAC;;AA7BH,oBA+BC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"mac.d.ts","sourceRoot":"","sources":["../../src/util/mac.ts"],"names":[],"mappings":"AAIA,MAAM,MAAM,UAAU,GAAG,MAAM,CAAC;AAEhC,wBAAgB,eAAe,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAExD;AAED,wBAAgB,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,CAAC,UAAU,GAAG,QAAQ,GAAG,UAAU,CAOzF"}
package/lib/util/mac.js DELETED
@@ -1,20 +0,0 @@
1
- "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
- Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.validMacAddress = validMacAddress;
7
- exports.generate = generate;
8
- const crypto_1 = __importDefault(require("crypto"));
9
- const validMac = /^([0-9A-F]{2}:){5}([0-9A-F]{2})$/;
10
- function validMacAddress(address) {
11
- return validMac.test(address);
12
- }
13
- function generate(data) {
14
- const sha1sum = crypto_1.default.createHash("sha1");
15
- sha1sum.update(data);
16
- const s = sha1sum.digest("hex");
17
- let i = 0;
18
- return "xx:xx:xx:xx:xx:xx".replace(/x/g, () => s[i++]).toUpperCase();
19
- }
20
- //# sourceMappingURL=mac.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"mac.js","sourceRoot":"","sources":["../../src/util/mac.ts"],"names":[],"mappings":";;;;;AAMA,0CAEC;AAED,4BAOC;AAjBD,oDAA4B;AAE5B,MAAM,QAAQ,GAAG,kCAAkC,CAAC;AAIpD,SAAgB,eAAe,CAAC,OAAe;IAC7C,OAAO,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;AAChC,CAAC;AAED,SAAgB,QAAQ,CAAC,IAAoD;IAC3E,MAAM,OAAO,GAAG,gBAAM,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;IAC1C,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IACrB,MAAM,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IAEhC,IAAI,CAAC,GAAG,CAAC,CAAC;IACV,OAAO,mBAAmB,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC;AACvE,CAAC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"version.d.ts","sourceRoot":"","sources":["../src/version.ts"],"names":[],"mappings":"AASA,MAAM,CAAC,OAAO,UAAU,UAAU,IAAI,MAAM,CAE3C;AAED,wBAAgB,sBAAsB,IAAI,MAAM,CAE/C"}