homebridge 2.0.0-beta.3 → 2.0.0-beta.30

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 (111) hide show
  1. package/README.md +16 -17
  2. package/bin/homebridge.js +22 -0
  3. package/config-sample.json +3 -3
  4. package/{lib → dist}/api.d.ts +23 -40
  5. package/dist/api.d.ts.map +1 -0
  6. package/{lib → dist}/api.js +38 -64
  7. package/dist/api.js.map +1 -0
  8. package/{lib → dist}/bridgeService.d.ts +15 -8
  9. package/dist/bridgeService.d.ts.map +1 -0
  10. package/{lib → dist}/bridgeService.js +84 -114
  11. package/dist/bridgeService.js.map +1 -0
  12. package/{lib → dist}/childBridgeFork.d.ts +4 -3
  13. package/dist/childBridgeFork.d.ts.map +1 -0
  14. package/{lib → dist}/childBridgeFork.js +38 -41
  15. package/dist/childBridgeFork.js.map +1 -0
  16. package/{lib → dist}/childBridgeService.d.ts +11 -7
  17. package/dist/childBridgeService.d.ts.map +1 -0
  18. package/{lib → dist}/childBridgeService.js +89 -66
  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 +90 -0
  23. package/dist/cli.js.map +1 -0
  24. package/{lib → dist}/externalPortService.d.ts +2 -2
  25. package/{lib → dist}/externalPortService.d.ts.map +1 -1
  26. package/{lib → dist}/externalPortService.js +4 -9
  27. package/dist/externalPortService.js.map +1 -0
  28. package/{lib → dist}/index.d.ts +29 -29
  29. package/dist/index.d.ts.map +1 -0
  30. package/dist/index.js +19 -0
  31. package/dist/index.js.map +1 -0
  32. package/{lib → dist}/ipcService.d.ts +2 -5
  33. package/dist/ipcService.d.ts.map +1 -0
  34. package/{lib → dist}/ipcService.js +12 -12
  35. package/dist/ipcService.js.map +1 -0
  36. package/{lib → dist}/logger.d.ts +6 -6
  37. package/dist/logger.d.ts.map +1 -0
  38. package/{lib → dist}/logger.js +19 -28
  39. package/dist/logger.js.map +1 -0
  40. package/{lib → dist}/platformAccessory.d.ts +8 -6
  41. package/dist/platformAccessory.d.ts.map +1 -0
  42. package/{lib → dist}/platformAccessory.js +19 -16
  43. package/dist/platformAccessory.js.map +1 -0
  44. package/{lib → dist}/plugin.d.ts +2 -3
  45. package/dist/plugin.d.ts.map +1 -0
  46. package/{lib → dist}/plugin.js +39 -51
  47. package/dist/plugin.js.map +1 -0
  48. package/{lib → dist}/pluginManager.d.ts +3 -3
  49. package/dist/pluginManager.d.ts.map +1 -0
  50. package/{lib → dist}/pluginManager.js +76 -81
  51. package/dist/pluginManager.js.map +1 -0
  52. package/dist/server.d.ts.map +1 -0
  53. package/{lib → dist}/server.js +92 -116
  54. package/dist/server.js.map +1 -0
  55. package/{lib → dist}/storageService.d.ts.map +1 -1
  56. package/dist/storageService.js +41 -0
  57. package/dist/storageService.js.map +1 -0
  58. package/{lib → dist}/user.d.ts.map +1 -1
  59. package/dist/user.js +29 -0
  60. package/dist/user.js.map +1 -0
  61. package/{lib → dist}/util/mac.d.ts +1 -0
  62. package/dist/util/mac.d.ts.map +1 -0
  63. package/dist/util/mac.js +14 -0
  64. package/dist/util/mac.js.map +1 -0
  65. package/dist/version.d.ts.map +1 -0
  66. package/dist/version.js +16 -0
  67. package/dist/version.js.map +1 -0
  68. package/package.json +46 -48
  69. package/bin/homebridge +0 -17
  70. package/lib/api.d.ts.map +0 -1
  71. package/lib/api.js.map +0 -1
  72. package/lib/bridgeService.d.ts.map +0 -1
  73. package/lib/bridgeService.js.map +0 -1
  74. package/lib/childBridgeFork.d.ts.map +0 -1
  75. package/lib/childBridgeFork.js.map +0 -1
  76. package/lib/childBridgeService.d.ts.map +0 -1
  77. package/lib/childBridgeService.js.map +0 -1
  78. package/lib/cli.d.ts +0 -4
  79. package/lib/cli.d.ts.map +0 -1
  80. package/lib/cli.js +0 -111
  81. package/lib/cli.js.map +0 -1
  82. package/lib/externalPortService.js.map +0 -1
  83. package/lib/index.d.ts.map +0 -1
  84. package/lib/index.js +0 -72
  85. package/lib/index.js.map +0 -1
  86. package/lib/ipcService.d.ts.map +0 -1
  87. package/lib/ipcService.js.map +0 -1
  88. package/lib/logger.d.ts.map +0 -1
  89. package/lib/logger.js.map +0 -1
  90. package/lib/platformAccessory.d.ts.map +0 -1
  91. package/lib/platformAccessory.js.map +0 -1
  92. package/lib/plugin.d.ts.map +0 -1
  93. package/lib/plugin.js.map +0 -1
  94. package/lib/pluginManager.d.ts.map +0 -1
  95. package/lib/pluginManager.js.map +0 -1
  96. package/lib/server.d.ts.map +0 -1
  97. package/lib/server.js.map +0 -1
  98. package/lib/storageService.js +0 -70
  99. package/lib/storageService.js.map +0 -1
  100. package/lib/user.js +0 -36
  101. package/lib/user.js.map +0 -1
  102. package/lib/util/mac.d.ts.map +0 -1
  103. package/lib/util/mac.js +0 -20
  104. package/lib/util/mac.js.map +0 -1
  105. package/lib/version.d.ts.map +0 -1
  106. package/lib/version.js +0 -21
  107. package/lib/version.js.map +0 -1
  108. /package/{lib → dist}/server.d.ts +0 -0
  109. /package/{lib → dist}/storageService.d.ts +0 -0
  110. /package/{lib → dist}/user.d.ts +0 -0
  111. /package/{lib → dist}/version.d.ts +0 -0
@@ -1,20 +1,18 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.ChildBridgeFork = void 0;
1
+ /* global NodeJS */
2
+ import process from 'node:process';
3
+ import { HAPStorage } from 'hap-nodejs';
4
+ import { HomebridgeAPI } from './api.js';
5
+ import { BridgeService } from './bridgeService.js';
6
+ import { ChildBridgeExternalPortService } from './externalPortService.js';
7
+ import { Logger } from './logger.js';
8
+ import { PluginManager } from './pluginManager.js';
9
+ import { User } from './user.js';
10
+ import 'source-map-support/register.js';
4
11
  /**
5
12
  * This is a standalone script executed as a child process fork
6
13
  */
7
- process.title = "homebridge: child bridge";
8
- // registering node-source-map-support for typescript stack traces
9
- require("source-map-support/register");
10
- const hap_nodejs_1 = require("hap-nodejs");
11
- const api_1 = require("./api");
12
- const bridgeService_1 = require("./bridgeService");
13
- const externalPortService_1 = require("./externalPortService");
14
- const logger_1 = require("./logger");
15
- const pluginManager_1 = require("./pluginManager");
16
- const user_1 = require("./user");
17
- class ChildBridgeFork {
14
+ process.title = 'homebridge: child bridge';
15
+ export class ChildBridgeFork {
18
16
  bridgeService;
19
17
  api;
20
18
  pluginManager;
@@ -53,23 +51,23 @@ class ChildBridgeFork {
53
51
  }
54
52
  // set bridge settings (inherited from main bridge)
55
53
  if (this.bridgeOptions.noLogTimestamps) {
56
- logger_1.Logger.setTimestampEnabled(false);
54
+ Logger.setTimestampEnabled(false);
57
55
  }
58
56
  if (this.bridgeOptions.debugModeEnabled) {
59
- logger_1.Logger.setDebugEnabled(true);
57
+ Logger.setDebugEnabled(true);
60
58
  }
61
59
  if (this.bridgeOptions.forceColourLogging) {
62
- logger_1.Logger.forceColor();
60
+ Logger.forceColor();
63
61
  }
64
62
  if (this.bridgeOptions.customStoragePath) {
65
- user_1.User.setStoragePath(this.bridgeOptions.customStoragePath);
63
+ User.setStoragePath(this.bridgeOptions.customStoragePath);
66
64
  }
67
65
  // Initialize HAP-NodeJS with a custom persist directory
68
- hap_nodejs_1.HAPStorage.setCustomStoragePath(user_1.User.persistPath());
66
+ HAPStorage.setCustomStoragePath(User.persistPath());
69
67
  // load api
70
- this.api = new api_1.HomebridgeAPI();
71
- this.pluginManager = new pluginManager_1.PluginManager(this.api);
72
- this.externalPortService = new externalPortService_1.ChildBridgeExternalPortService(this);
68
+ this.api = new HomebridgeAPI();
69
+ this.pluginManager = new PluginManager(this.api);
70
+ this.externalPortService = new ChildBridgeExternalPortService(this);
73
71
  // load plugin
74
72
  this.plugin = this.pluginManager.loadPlugin(data.pluginPath);
75
73
  await this.plugin.load();
@@ -81,7 +79,7 @@ class ChildBridgeFork {
81
79
  });
82
80
  }
83
81
  async startBridge() {
84
- this.bridgeService = new bridgeService_1.BridgeService(this.api, this.pluginManager, this.externalPortService, this.bridgeOptions, this.bridgeConfig, this.homebridgeConfig);
82
+ this.bridgeService = new BridgeService(this.api, this.pluginManager, this.externalPortService, this.bridgeOptions, this.bridgeConfig, this.homebridgeConfig);
85
83
  // watch bridge events to check when server is online
86
84
  this.bridgeService.bridge.on("advertised" /* AccessoryEventTypes.ADVERTISED */, () => {
87
85
  this.sendPairedStatusEvent();
@@ -100,13 +98,13 @@ class ChildBridgeFork {
100
98
  if (this.type === "platform" /* PluginType.PLATFORM */) {
101
99
  const plugin = this.pluginManager.getPluginForPlatform(this.identifier);
102
100
  const displayName = config.name || plugin.getPluginIdentifier();
103
- const logger = logger_1.Logger.withPrefix(displayName);
101
+ const logger = Logger.withPrefix(displayName);
104
102
  const constructor = plugin.getPlatformConstructor(this.identifier);
105
103
  const platform = new constructor(logger, config, this.api);
106
- if (api_1.HomebridgeAPI.isDynamicPlatformPlugin(platform)) {
104
+ if (HomebridgeAPI.isDynamicPlatformPlugin(platform)) {
107
105
  plugin.assignDynamicPlatform(this.identifier, platform);
108
106
  }
109
- else if (api_1.HomebridgeAPI.isStaticPlatformPlugin(platform)) { // Plugin 1.0, load accessories
107
+ else if (HomebridgeAPI.isStaticPlatformPlugin(platform)) { // Plugin 1.0, load accessories
110
108
  await this.bridgeService.loadPlatformAccessories(plugin, platform, this.identifier, logger);
111
109
  }
112
110
  else {
@@ -118,19 +116,19 @@ class ChildBridgeFork {
118
116
  const plugin = this.pluginManager.getPluginForAccessory(this.identifier);
119
117
  const displayName = config.name;
120
118
  if (!displayName) {
121
- logger_1.Logger.internal.warn("Could not load accessory %s as it is missing the required 'name' property!", this.identifier);
119
+ Logger.internal.warn('Could not load accessory %s as it is missing the required \'name\' property!', this.identifier);
122
120
  return;
123
121
  }
124
- const logger = logger_1.Logger.withPrefix(displayName);
122
+ const logger = Logger.withPrefix(displayName);
125
123
  const constructor = plugin.getAccessoryConstructor(this.identifier);
126
124
  const accessoryInstance = new constructor(logger, config, this.api);
127
- //pass accessoryIdentifier for UUID generation, and optional parameter uuid_base which can be used instead of displayName for UUID generation
125
+ // pass accessoryIdentifier for UUID generation, and optional parameter uuid_base which can be used instead of displayName for UUID generation
128
126
  const accessory = this.bridgeService.createHAPAccessory(plugin, accessoryInstance, displayName, this.identifier, config.uuid_base);
129
127
  if (accessory) {
130
128
  this.bridgeService.bridge.addBridgedAccessory(accessory);
131
129
  }
132
130
  else {
133
- logger("Accessory %s returned empty set of services. Won't adding it to the bridge!", this.identifier);
131
+ logger('Accessory %s returned empty set of services. Won\'t adding it to the bridge!', this.identifier);
134
132
  }
135
133
  }
136
134
  }
@@ -148,7 +146,7 @@ class ChildBridgeFork {
148
146
  async requestExternalPort(username) {
149
147
  return new Promise((resolve) => {
150
148
  const requestTimeout = setTimeout(() => {
151
- logger_1.Logger.internal.warn("Parent process did not respond to port allocation request within 5 seconds - assigning random port.");
149
+ Logger.internal.warn('Parent process did not respond to port allocation request within 5 seconds - assigning random port.');
152
150
  resolve(undefined);
153
151
  }, 5000);
154
152
  // setup callback
@@ -185,7 +183,6 @@ class ChildBridgeFork {
185
183
  this.bridgeService.teardown();
186
184
  }
187
185
  }
188
- exports.ChildBridgeFork = ChildBridgeFork;
189
186
  /**
190
187
  * Start Self
191
188
  */
@@ -193,8 +190,8 @@ const childPluginFork = new ChildBridgeFork();
193
190
  /**
194
191
  * Handle incoming IPC messages from the parent Homebridge process
195
192
  */
196
- process.on("message", (message) => {
197
- if (typeof message !== "object" || !message.id) {
193
+ process.on('message', (message) => {
194
+ if (typeof message !== 'object' || !message.id) {
198
195
  return;
199
196
  }
200
197
  switch (message.id) {
@@ -216,28 +213,28 @@ process.on("message", (message) => {
216
213
  * Handle the sigterm shutdown signals
217
214
  */
218
215
  let shuttingDown = false;
219
- const signalHandler = (signal, signalNum) => {
216
+ function signalHandler(signal, signalNum) {
220
217
  if (shuttingDown) {
221
218
  return;
222
219
  }
223
220
  shuttingDown = true;
224
- logger_1.Logger.internal.info("Got %s, shutting down child bridge process...", signal);
221
+ Logger.internal.info('Got %s, shutting down child bridge process...', signal);
225
222
  try {
226
223
  childPluginFork.shutdown();
227
224
  }
228
- catch (e) {
225
+ catch (error) {
229
226
  // do nothing
230
227
  }
231
228
  setTimeout(() => process.exit(128 + signalNum), 5000);
232
- };
233
- process.on("SIGINT", signalHandler.bind(undefined, "SIGINT", 2));
234
- process.on("SIGTERM", signalHandler.bind(undefined, "SIGTERM", 15));
229
+ }
230
+ process.on('SIGINT', signalHandler.bind(undefined, 'SIGINT', 2));
231
+ process.on('SIGTERM', signalHandler.bind(undefined, 'SIGTERM', 15));
235
232
  /**
236
233
  * Ensure orphaned processes are cleaned up
237
234
  */
238
235
  setInterval(() => {
239
236
  if (!process.connected) {
240
- logger_1.Logger.internal.info("Parent process not connected, terminating process...");
237
+ Logger.internal.info('Parent process not connected, terminating process...');
241
238
  process.exit(1);
242
239
  }
243
240
  }, 5000);
@@ -0,0 +1 @@
1
+ {"version":3,"file":"childBridgeFork.js","sourceRoot":"","sources":["../src/childBridgeFork.ts"],"names":[],"mappings":"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"}
@@ -1,10 +1,11 @@
1
- import { MacAddress } from "hap-nodejs";
2
- import { HomebridgeAPI, PluginType } from "./api";
3
- import { AccessoryConfig, BridgeConfiguration, BridgeOptions, HomebridgeConfig, PlatformConfig } from "./bridgeService";
4
- import { ExternalPortService } from "./externalPortService";
5
- import { IpcService } from "./ipcService";
6
- import { Plugin } from "./plugin";
7
- import { HomebridgeOptions } from "./server";
1
+ import type { MacAddress } from 'hap-nodejs';
2
+ import type { HomebridgeAPI } from './api.js';
3
+ import type { AccessoryConfig, BridgeConfiguration, BridgeOptions, HomebridgeConfig, PlatformConfig } from './bridgeService.js';
4
+ import type { ExternalPortService } from './externalPortService.js';
5
+ import type { IpcService } from './ipcService.js';
6
+ import type { Plugin } from './plugin.js';
7
+ import type { HomebridgeOptions } from './server.js';
8
+ import { PluginType } from './api.js';
8
9
  export declare const enum ChildProcessMessageEventType {
9
10
  /**
10
11
  * Sent from the child process when it is ready to accept config
@@ -85,6 +86,7 @@ export interface ChildMetadata {
85
86
  paired?: boolean | null;
86
87
  setupUri?: string | null;
87
88
  username: MacAddress;
89
+ port?: number;
88
90
  pin: string;
89
91
  name: string;
90
92
  plugin: string;
@@ -117,6 +119,8 @@ export declare class ChildBridgeService {
117
119
  private pluginConfig;
118
120
  private log;
119
121
  private displayName?;
122
+ private restartCount;
123
+ private readonly maxRestarts;
120
124
  constructor(type: PluginType, identifier: string, plugin: Plugin, bridgeConfig: BridgeConfiguration, homebridgeConfig: HomebridgeConfig, homebridgeOptions: HomebridgeOptions, api: HomebridgeAPI, ipcService: IpcService, externalPortService: ExternalPortService);
121
125
  /**
122
126
  * Start the child bridge service
@@ -0,0 +1 @@
1
+ {"version":3,"file":"childBridgeService.d.ts","sourceRoot":"","sources":["../src/childBridgeService.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAA;AAG5C,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,UAAU,CAAA;AAC7C,OAAO,KAAK,EACV,eAAe,EACf,mBAAmB,EACnB,aAAa,EACb,gBAAgB,EAChB,cAAc,EACf,MAAM,oBAAoB,CAAA;AAC3B,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAA;AACnE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAA;AAEjD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,aAAa,CAAA;AACzC,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAA;AASpD,OAAO,EAAE,UAAU,EAAE,MAAM,UAAU,CAAA;AASrC,0BAAkB,4BAA4B;IAC5C;;OAEG;IACH,KAAK,UAAU;IAEf;;OAEG;IACH,IAAI,SAAS;IAEb;;OAEG;IACH,MAAM,WAAW;IAEjB;;OAEG;IACH,KAAK,UAAU;IAEf;;OAEG;IACH,MAAM,WAAW;IAEjB;;OAEG;IACH,YAAY,gBAAgB;IAE5B;;OAEG;IACH,cAAc,kBAAkB;IAEhC;;OAEG;IACH,aAAa,WAAW;CACzB;AAGD,0BAAkB,iBAAiB;IACjC;;OAEG;IACH,OAAO,YAAY;IAEnB;;OAEG;IACH,EAAE,OAAO;IAET;;OAEG;IACH,IAAI,SAAS;CACd;AAED,MAAM,WAAW,wBAAwB,CAAC,CAAC;IACzC,EAAE,EAAE,4BAA4B,CAAA;IAChC,IAAI,CAAC,EAAE,CAAC,CAAA;CACT;AAED,MAAM,WAAW,yBAAyB;IACxC,IAAI,EAAE,UAAU,CAAA;IAChB,UAAU,EAAE,MAAM,CAAA;IAClB,UAAU,EAAE,MAAM,CAAA;IAClB,YAAY,EAAE,KAAK,CAAC,cAAc,GAAG,eAAe,CAAC,CAAA;IACrD,YAAY,EAAE,mBAAmB,CAAA;IACjC,gBAAgB,EAAE,gBAAgB,CAAA;IAClC,aAAa,EAAE,aAAa,CAAA;CAC7B;AAED,MAAM,WAAW,iCAAiC;IAChD,OAAO,EAAE,MAAM,CAAA;CAChB;AAED,MAAM,WAAW,gCAAgC;IAC/C,QAAQ,EAAE,UAAU,CAAA;CACrB;AAED,MAAM,WAAW,kCAAkC;IACjD,QAAQ,EAAE,UAAU,CAAA;IACpB,IAAI,CAAC,EAAE,MAAM,CAAA;CACd;AAED,MAAM,WAAW,gCAAgC;IAC/C,MAAM,EAAE,OAAO,GAAG,IAAI,CAAA;IACtB,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAA;CACxB;AAED,MAAM,WAAW,aAAa;IAC5B,MAAM,EAAE,iBAAiB,CAAA;IACzB,MAAM,CAAC,EAAE,OAAO,GAAG,IAAI,CAAA;IACvB,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IACxB,QAAQ,EAAE,UAAU,CAAA;IACpB,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,GAAG,EAAE,MAAM,CAAA;IACX,IAAI,EAAE,MAAM,CAAA;IACZ,MAAM,EAAE,MAAM,CAAA;IACd,UAAU,EAAE,MAAM,CAAA;IAClB,eAAe,EAAE,OAAO,CAAA;IACxB,GAAG,CAAC,EAAE,MAAM,CAAA;CACb;AAED;;;GAGG;AACH,qBAAa,kBAAkB;IAgBpB,IAAI,EAAE,UAAU;IAChB,UAAU,EAAE,MAAM;IACzB,OAAO,CAAC,MAAM;IACd,OAAO,CAAC,YAAY;IACpB,OAAO,CAAC,gBAAgB;IACxB,OAAO,CAAC,iBAAiB;IACzB,OAAO,CAAC,GAAG;IACX,OAAO,CAAC,UAAU;IAClB,OAAO,CAAC,mBAAmB;IAvB7B,OAAO,CAAC,KAAK,CAAC,CAAc;IAC5B,OAAO,CAAC,IAAI,CAAe;IAC3B,OAAO,CAAC,UAAU,CAAkB;IACpC,OAAO,CAAC,YAAY,CAAQ;IAC5B,OAAO,CAAC,gBAAgB,CAA+C;IACvE,OAAO,CAAC,YAAY,CAAuB;IAC3C,OAAO,CAAC,eAAe,CAAQ;IAC/B,OAAO,CAAC,QAAQ,CAAsB;IACtC,OAAO,CAAC,YAAY,CAA8C;IAClE,OAAO,CAAC,GAAG,CAAS;IACpB,OAAO,CAAC,WAAW,CAAC,CAAQ;IAC5B,OAAO,CAAC,YAAY,CAAI;IACxB,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAI;gBAGvB,IAAI,EAAE,UAAU,EAChB,UAAU,EAAE,MAAM,EACjB,MAAM,EAAE,MAAM,EACd,YAAY,EAAE,mBAAmB,EACjC,gBAAgB,EAAE,gBAAgB,EAClC,iBAAiB,EAAE,iBAAiB,EACpC,GAAG,EAAE,aAAa,EAClB,UAAU,EAAE,UAAU,EACtB,mBAAmB,EAAE,mBAAmB;IAYlD;;OAEG;IACI,KAAK,IAAI,IAAI;IAgBpB;;;;OAIG;IACI,SAAS,CAAC,MAAM,EAAE,cAAc,GAAG,eAAe,GAAG,IAAI;IAIhE,OAAO,KAAK,YAAY,GAEvB;IAED,OAAO,KAAK,YAAY,QAGvB;IAED;;OAEG;IACH,OAAO,CAAC,iBAAiB;IA8DzB;;;;OAIG;IACH,OAAO,CAAC,kBAAkB;IAiC1B;;;;OAIG;IACH,OAAO,CAAC,WAAW;IASnB;;;OAGG;IACH,OAAO,CAAC,eAAe;IA8BvB;;OAEG;IACH,OAAO,CAAC,aAAa;IAWrB;;OAEG;IACH,OAAO,CAAC,UAAU;IAwClB;;OAEG;IACH,OAAO,CAAC,WAAW;IAInB;;OAEG;YACW,iBAAiB;IAQ/B;;OAEG;IACH,OAAO,CAAC,QAAQ;IAOhB;;OAEG;IACH,OAAO,CAAC,gBAAgB;IAIxB;;OAEG;IACI,kBAAkB,IAAI,IAAI;IAWjC;;OAEG;IACI,eAAe,IAAI,IAAI;IAc9B;;OAEG;IACI,gBAAgB,IAAI,IAAI;IAW/B;;OAEG;IACU,aAAa,IAAI,OAAO,CAAC,IAAI,CAAC;IA0B3C;;OAEG;IACI,WAAW,IAAI,aAAa;CAepC"}
@@ -1,15 +1,14 @@
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.ChildBridgeService = exports.ChildBridgeStatus = exports.ChildProcessMessageEventType = void 0;
7
- const child_process_1 = __importDefault(require("child_process"));
8
- const path_1 = __importDefault(require("path"));
9
- const fs_extra_1 = __importDefault(require("fs-extra"));
10
- const logger_1 = require("./logger");
11
- const user_1 = require("./user");
12
- var ChildProcessMessageEventType;
1
+ import { fork } from 'node:child_process';
2
+ import { dirname, resolve } from 'node:path';
3
+ import process from 'node:process';
4
+ import { fileURLToPath } from 'node:url';
5
+ import fs from 'fs-extra';
6
+ import { Logger } from './logger.js';
7
+ import { User } from './user.js';
8
+ const __filename = fileURLToPath(import.meta.url);
9
+ const __dirname = dirname(__filename);
10
+ // eslint-disable-next-line no-restricted-syntax
11
+ export var ChildProcessMessageEventType;
13
12
  (function (ChildProcessMessageEventType) {
14
13
  /**
15
14
  * Sent from the child process when it is ready to accept config
@@ -43,8 +42,9 @@ var ChildProcessMessageEventType;
43
42
  * Sent from the child to update its current status
44
43
  */
45
44
  ChildProcessMessageEventType["STATUS_UPDATE"] = "status";
46
- })(ChildProcessMessageEventType || (exports.ChildProcessMessageEventType = ChildProcessMessageEventType = {}));
47
- var ChildBridgeStatus;
45
+ })(ChildProcessMessageEventType || (ChildProcessMessageEventType = {}));
46
+ // eslint-disable-next-line no-restricted-syntax
47
+ export var ChildBridgeStatus;
48
48
  (function (ChildBridgeStatus) {
49
49
  /**
50
50
  * When the child bridge is loading, or restarting
@@ -58,12 +58,12 @@ var ChildBridgeStatus;
58
58
  * The bridge is shutting down, or the process ended unexpectedly
59
59
  */
60
60
  ChildBridgeStatus["DOWN"] = "down";
61
- })(ChildBridgeStatus || (exports.ChildBridgeStatus = ChildBridgeStatus = {}));
61
+ })(ChildBridgeStatus || (ChildBridgeStatus = {}));
62
62
  /**
63
63
  * Manages the child processes of platforms/accessories being exposed as separate forked bridges.
64
64
  * A child bridge runs a single platform or accessory.
65
65
  */
66
- class ChildBridgeService {
66
+ export class ChildBridgeService {
67
67
  type;
68
68
  identifier;
69
69
  plugin;
@@ -84,6 +84,8 @@ class ChildBridgeService {
84
84
  pluginConfig = [];
85
85
  log;
86
86
  displayName;
87
+ restartCount = 0;
88
+ maxRestarts = 4;
87
89
  constructor(type, identifier, plugin, bridgeConfig, homebridgeConfig, homebridgeOptions, api, ipcService, externalPortService) {
88
90
  this.type = type;
89
91
  this.identifier = identifier;
@@ -94,8 +96,8 @@ class ChildBridgeService {
94
96
  this.api = api;
95
97
  this.ipcService = ipcService;
96
98
  this.externalPortService = externalPortService;
97
- this.log = logger_1.Logger.withPrefix(this.plugin.getPluginIdentifier());
98
- this.api.on("shutdown", () => {
99
+ this.log = Logger.withPrefix(this.plugin.getPluginIdentifier());
100
+ this.api.on('shutdown', () => {
99
101
  this.shuttingDown = true;
100
102
  this.teardown();
101
103
  });
@@ -117,7 +119,7 @@ class ChildBridgeService {
117
119
  this.displayName = this.pluginConfig[0]?.name || this.plugin.getPluginIdentifier();
118
120
  }
119
121
  // re-configured log with display name
120
- this.log = logger_1.Logger.withPrefix(this.displayName);
122
+ this.log = Logger.withPrefix(this.displayName);
121
123
  }
122
124
  /**
123
125
  * Add a config block to a child bridge.
@@ -139,42 +141,38 @@ class ChildBridgeService {
139
141
  */
140
142
  startChildProcess() {
141
143
  this.bridgeStatus = "pending" /* ChildBridgeStatus.PENDING */;
142
- this.child = child_process_1.default.fork(path_1.default.resolve(__dirname, "childBridgeFork.js"), this.args, this.processEnv);
143
- this.child.stdout?.on("data", (data) => {
144
+ this.child = fork(resolve(__dirname, 'childBridgeFork.js'), this.args, this.processEnv);
145
+ this.child.stdout?.on('data', (data) => {
144
146
  process.stdout.write(data);
145
147
  });
146
- this.child.stderr?.on("data", (data) => {
148
+ this.child.stderr?.on('data', (data) => {
147
149
  process.stderr.write(data);
148
150
  });
149
- this.child.on("exit", () => {
150
- this.log.warn("Child bridge process ended");
151
- });
152
- this.child.on("error", (e) => {
151
+ this.child.on('error', (e) => {
153
152
  this.bridgeStatus = "down" /* ChildBridgeStatus.DOWN */;
154
- this.log.error("Child process error", e);
153
+ this.log.error('Child bridge process error', e);
155
154
  });
156
- this.child.once("close", (code, signal) => {
157
- this.bridgeStatus = "down" /* ChildBridgeStatus.DOWN */;
155
+ this.child.once('close', (code, signal) => {
158
156
  this.handleProcessClose(code, signal);
159
157
  });
160
158
  // handle incoming ipc messages from the child process
161
- this.child.on("message", (message) => {
162
- if (typeof message !== "object" || !message.id) {
159
+ this.child.on('message', (message) => {
160
+ if (typeof message !== 'object' || !message.id) {
163
161
  return;
164
162
  }
165
163
  switch (message.id) {
166
164
  case "ready" /* ChildProcessMessageEventType.READY */: {
167
- this.log(`Launched child bridge with PID ${this.child?.pid}`);
165
+ this.log(`Child bridge starting${this.child?.pid ? ` (pid ${this.child.pid})` : ''}...`);
168
166
  this.loadPlugin();
169
167
  break;
170
168
  }
171
169
  case "loaded" /* ChildProcessMessageEventType.LOADED */: {
172
170
  const version = message.data.version;
173
171
  if (this.pluginConfig.length > 1) {
174
- this.log(`Loaded ${this.plugin.getPluginIdentifier()} v${version} child bridge successfully with ${this.pluginConfig.length} accessories`);
172
+ this.log.success(`Child bridge started successfully with ${this.pluginConfig.length} accessories (plugin v${version}).`);
175
173
  }
176
174
  else {
177
- this.log(`Loaded ${this.plugin.getPluginIdentifier()} v${version} child bridge successfully`);
175
+ this.log.success(`Child bridge started successfully (plugin v${version}).`);
178
176
  }
179
177
  this.startBridge();
180
178
  break;
@@ -202,13 +200,35 @@ class ChildBridgeService {
202
200
  * @param signal
203
201
  */
204
202
  handleProcessClose(code, signal) {
205
- this.log(`Process Ended. Code: ${code}, Signal: ${signal}`);
206
- setTimeout(() => {
207
- if (!this.shuttingDown) {
208
- this.log("Restarting Process...");
209
- this.startChildProcess();
203
+ const isLikelyPluginCrash = code === 1 && signal === null;
204
+ this.log.warn(`Child bridge ended (code ${code}, signal ${signal}).${isLikelyPluginCrash
205
+ ? ' The child bridge ended unexpectedly, which is normally due to the plugin not catching its errors properly. Please report this to the plugin developer by clicking on the'
206
+ + ' \'Report An Issue\' option in the plugin menu dropdown from the Homebridge UI. If there are related logs shown above, please include them in your report.'
207
+ : ''}`);
208
+ if (isLikelyPluginCrash) {
209
+ if (this.restartCount < this.maxRestarts) {
210
+ this.bridgeStatus = "pending" /* ChildBridgeStatus.PENDING */;
211
+ this.restartCount += 1;
212
+ const delay = this.restartCount * 10; // first attempt after 10 seconds, second after 20 seconds, etc.
213
+ this.log(`Child bridge will automatically restart in ${delay} seconds (restart attempt ${this.restartCount} of ${this.maxRestarts}).`);
214
+ setTimeout(() => {
215
+ if (!this.shuttingDown) {
216
+ this.startChildProcess();
217
+ }
218
+ }, delay * 1000);
210
219
  }
211
- }, 7000);
220
+ else {
221
+ this.bridgeStatus = "down" /* ChildBridgeStatus.DOWN */;
222
+ this.manuallyStopped = true;
223
+ this.log.error(`Child bridge will no longer restart after failing ${this.maxRestarts + 1} times, you will need to manually start this child bridge from the Homebridge UI.`);
224
+ }
225
+ return;
226
+ }
227
+ if (!this.shuttingDown) {
228
+ this.bridgeStatus = "down" /* ChildBridgeStatus.DOWN */;
229
+ this.restartCount = 0;
230
+ this.startChildProcess();
231
+ }
212
232
  }
213
233
  /**
214
234
  * Helper function to send a message to the child process
@@ -228,26 +248,26 @@ class ChildBridgeService {
228
248
  * These will be passed through to the forked process
229
249
  */
230
250
  setProcessFlags() {
231
- if (this.homebridgeOptions.debugModeEnabled) {
232
- this.args.push("-D");
251
+ if (this.bridgeConfig.debugModeEnabled) {
252
+ this.args.push('-D');
233
253
  }
234
254
  if (this.homebridgeOptions.forceColourLogging) {
235
- this.args.push("-C");
255
+ this.args.push('-C');
236
256
  }
237
257
  if (this.homebridgeOptions.insecureAccess) {
238
- this.args.push("-I");
258
+ this.args.push('-I');
239
259
  }
240
260
  if (this.homebridgeOptions.noLogTimestamps) {
241
- this.args.push("-T");
261
+ this.args.push('-T');
242
262
  }
243
263
  if (this.homebridgeOptions.keepOrphanedCachedAccessories) {
244
- this.args.push("-K");
264
+ this.args.push('-K');
245
265
  }
246
266
  if (this.homebridgeOptions.customStoragePath) {
247
- this.args.push("-U", this.homebridgeOptions.customStoragePath);
267
+ this.args.push('-U', this.homebridgeOptions.customStoragePath);
248
268
  }
249
269
  if (this.homebridgeOptions.customPluginPath) {
250
- this.args.push("-P", this.homebridgeOptions.customPluginPath);
270
+ this.args.push('-P', this.homebridgeOptions.customPluginPath);
251
271
  }
252
272
  }
253
273
  /**
@@ -257,8 +277,8 @@ class ChildBridgeService {
257
277
  this.processEnv = {
258
278
  env: {
259
279
  ...process.env,
260
- DEBUG: `${process.env.DEBUG || ""} ${this.bridgeConfig.env?.DEBUG || ""}`.trim(),
261
- NODE_OPTIONS: `${process.env.NODE_OPTIONS || ""} ${this.bridgeConfig.env?.NODE_OPTIONS || ""}`.trim(),
280
+ DEBUG: `${process.env.DEBUG || ''} ${this.bridgeConfig.env?.DEBUG || ''}`.trim(),
281
+ NODE_OPTIONS: `${process.env.NODE_OPTIONS || ''} ${this.bridgeConfig.env?.NODE_OPTIONS || ''}`.trim(),
262
282
  },
263
283
  silent: true,
264
284
  };
@@ -278,10 +298,11 @@ class ChildBridgeService {
278
298
  manufacturer: this.bridgeConfig.manufacturer || this.homebridgeConfig.bridge.manufacturer,
279
299
  model: this.bridgeConfig.model || this.homebridgeConfig.bridge.model,
280
300
  firmwareRevision: this.bridgeConfig.firmwareRevision || this.homebridgeConfig.bridge.firmwareRevision,
301
+ serialNumber: this.bridgeConfig.serialNumber || this.bridgeConfig.username,
281
302
  };
282
303
  const bridgeOptions = {
283
- cachedAccessoriesDir: user_1.User.cachedAccessoryPath(),
284
- cachedAccessoriesItemName: "cachedAccessories." + this.bridgeConfig.username.replace(/:/g, "").toUpperCase(),
304
+ cachedAccessoriesDir: User.cachedAccessoryPath(),
305
+ cachedAccessoriesItemName: `cachedAccessories.${this.bridgeConfig.username.replace(/:/g, '').toUpperCase()}`,
285
306
  };
286
307
  // shallow copy the homebridge options to the bridge options object
287
308
  Object.assign(bridgeOptions, this.homebridgeOptions);
@@ -314,7 +335,7 @@ class ChildBridgeService {
314
335
  const port = await this.externalPortService.requestPort(request.username);
315
336
  this.sendMessage("portAllocated" /* ChildProcessMessageEventType.PORT_ALLOCATED */, {
316
337
  username: request.username,
317
- port: port,
338
+ port,
318
339
  });
319
340
  }
320
341
  /**
@@ -323,7 +344,7 @@ class ChildBridgeService {
323
344
  teardown() {
324
345
  if (this.child && this.child.connected) {
325
346
  this.bridgeStatus = "down" /* ChildBridgeStatus.DOWN */;
326
- this.child.kill("SIGTERM");
347
+ this.child.kill('SIGTERM');
327
348
  }
328
349
  }
329
350
  /**
@@ -337,10 +358,11 @@ class ChildBridgeService {
337
358
  */
338
359
  restartChildBridge() {
339
360
  if (this.manuallyStopped) {
361
+ this.restartCount = 0;
340
362
  this.startChildBridge();
341
363
  }
342
364
  else {
343
- this.log.warn("Restarting child bridge...");
365
+ this.log.warn('Child bridge restarting...');
344
366
  this.refreshConfig();
345
367
  this.teardown();
346
368
  }
@@ -350,14 +372,16 @@ class ChildBridgeService {
350
372
  */
351
373
  stopChildBridge() {
352
374
  if (!this.shuttingDown) {
353
- this.log.warn("Stopping child bridge (will not restart)...");
375
+ this.log.warn('Child bridge stopping, will not restart.');
354
376
  this.shuttingDown = true;
355
377
  this.manuallyStopped = true;
356
- this.child?.removeAllListeners("close");
378
+ this.restartCount = 0;
379
+ this.bridgeStatus = "down" /* ChildBridgeStatus.DOWN */;
380
+ this.child?.removeAllListeners('close');
357
381
  this.teardown();
358
382
  }
359
383
  else {
360
- this.log.warn("Bridge already shutting down or stopped.");
384
+ this.log.warn('Child bridge already shutting down or stopped.');
361
385
  }
362
386
  }
363
387
  /**
@@ -365,14 +389,13 @@ class ChildBridgeService {
365
389
  */
366
390
  startChildBridge() {
367
391
  if (this.manuallyStopped && this.bridgeStatus === "down" /* ChildBridgeStatus.DOWN */ && (!this.child || !this.child.connected)) {
368
- this.log.warn("Starting child bridge...");
369
392
  this.refreshConfig();
370
393
  this.startChildProcess();
371
394
  this.shuttingDown = false;
372
395
  this.manuallyStopped = false;
373
396
  }
374
397
  else {
375
- this.log.warn("Cannot start child bridge, it is still running or was not manually stopped");
398
+ this.log.warn('Child bridge cannot be started, it is still running or was not manually stopped.');
376
399
  }
377
400
  }
378
401
  /**
@@ -380,7 +403,7 @@ class ChildBridgeService {
380
403
  */
381
404
  async refreshConfig() {
382
405
  try {
383
- const homebridgeConfig = await fs_extra_1.default.readJson(user_1.User.configPath());
406
+ const homebridgeConfig = await fs.readJson(User.configPath());
384
407
  if (this.type === "platform" /* PluginType.PLATFORM */) {
385
408
  const config = homebridgeConfig.platforms?.filter(x => x.platform === this.identifier && x._bridge?.username === this.bridgeConfig.username);
386
409
  if (config.length) {
@@ -388,7 +411,7 @@ class ChildBridgeService {
388
411
  this.bridgeConfig = this.pluginConfig[0]._bridge || this.bridgeConfig;
389
412
  }
390
413
  else {
391
- this.log.warn("Platform config could not be found, using existing config.");
414
+ this.log.warn('Platform config could not be found, using existing config.');
392
415
  }
393
416
  }
394
417
  else if (this.type === "accessory" /* PluginType.ACCESSORY */) {
@@ -398,12 +421,12 @@ class ChildBridgeService {
398
421
  this.bridgeConfig = this.pluginConfig[0]._bridge || this.bridgeConfig;
399
422
  }
400
423
  else {
401
- this.log.warn("Accessory config could not be found, using existing config.");
424
+ this.log.warn('Accessory config could not be found, using existing config.');
402
425
  }
403
426
  }
404
427
  }
405
- catch (e) {
406
- this.log.error("Failed to refresh plugin config:", e.message);
428
+ catch (error) {
429
+ this.log.error('Failed to refresh plugin config:', error.message);
407
430
  }
408
431
  }
409
432
  /**
@@ -415,6 +438,7 @@ class ChildBridgeService {
415
438
  paired: this.pairedStatus,
416
439
  setupUri: this.setupUri,
417
440
  username: this.bridgeConfig.username,
441
+ port: this.bridgeConfig.port,
418
442
  pin: this.bridgeConfig.pin || this.homebridgeConfig.bridge.pin,
419
443
  name: this.bridgeConfig.name || this.displayName || this.plugin.getPluginIdentifier(),
420
444
  plugin: this.plugin.getPluginIdentifier(),
@@ -424,5 +448,4 @@ class ChildBridgeService {
424
448
  };
425
449
  }
426
450
  }
427
- exports.ChildBridgeService = ChildBridgeService;
428
451
  //# sourceMappingURL=childBridgeService.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"childBridgeService.js","sourceRoot":"","sources":["../src/childBridgeService.ts"],"names":[],"mappings":"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"}
package/dist/cli.d.ts ADDED
@@ -0,0 +1,3 @@
1
+ import 'source-map-support/register.js';
2
+ export default function cli(): void;
3
+ //# sourceMappingURL=cli.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"AAeA,OAAO,gCAAgC,CAAA;AAYvC,MAAM,CAAC,OAAO,UAAU,GAAG,IAAI,IAAI,CAsFlC"}