@homebridge/hap-client 2.0.5-beta.9 → 2.0.5

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/CHANGELOG.md CHANGED
@@ -2,17 +2,18 @@
2
2
 
3
3
  All notable changes to `@homebridge/hap-client` will be documented in this file. This project tries to adhere to [Semantic Versioning](http://semver.org/).
4
4
 
5
- ## BETA
5
+ ## v2.0.5 (2024-12-04)
6
6
 
7
7
  ### Changed
8
8
 
9
9
  - updated dependencies
10
- - Added refresh of 'values' field when refreshServiceCharacteristics or getCharacteristic is executed
11
- - Added new setCharacteristic option, setCharacteristicByType which allows finding the characteristic by type.
10
+ - Added refresh of 'values' field when refreshServiceCharacteristics or getCharacteristic is used
11
+ - Added new setCharacteristic option, setCharacteristicByType which finds characteristic by type for setting.
12
12
  - Added new getResource request to retrieve snapshot images from camera's
13
13
  - Minor tweak to serviceName, and if the name is blank, use the name value from Accessory Information
14
- - Fixed issue of error handler triggering error when contacting a homebridge instance that is down
14
+ - Fixed issue of error handler triggering an error when attempting to connect to a homebridge instance that is down
15
15
  - Added restart of monitor when client connections close
16
+ - Added console logging if a logger is not provided
16
17
 
17
18
  ## v2.0.4 (2024-11-07)
18
19
 
package/README.md CHANGED
@@ -14,10 +14,46 @@
14
14
 
15
15
  A client for an insecure HAP-NodeJS instance. Provides a Typescript based interface based on the homekit accessory protocol, allowing the creation of clients able to connect to and control Homebridge devices.
16
16
 
17
+ # API
18
+
19
+ ```
20
+ const { HapClient } = require('@homebridge/hap-client');
21
+
22
+ this.hapClient = new HapClient({
23
+ config: { debug: true },
24
+ pin: config.username,
25
+ logger: this.log,
26
+ });
27
+
28
+ this.monitor = await this.hapClient.monitorCharacteristics(services?: ServiceType[]); // Creates event monitors for all event capabable Homebridge services. If a list of services is, this list is used rather than all
29
+ ```
30
+
31
+ ## hap-client Events
32
+
33
+ ```
34
+ this.hapClient.on('instance-discovered', this.instanceDiscovered(instance: HapInstance)); // Emitted during discovery for each HB instance discovered
35
+
36
+ this.hapClient.on('instance-configuration-changed', this.instanceChanged(instance: HapInstance)); // Emitted during discovery for each HB instance change
37
+
38
+ this.hapClient.on('discovery-terminated', this.discoveryTerminated()); // Instance discovery was terminated
39
+
40
+ this.hapClient.on('discovery-ended', this.discoveryEnded()); // Emitted when discovery has ended ( 60 Seconds )
41
+
42
+ this.monitor.on('service-update', this.serviceUpdate(services)); // Emitted when a characteristic change is received from a homebridge service
43
+
44
+ this.monitor.on('monitor-close', this.monitorClose(instance, hadError)); // Emitted when the connection to a homebridge service is closed ( likely a restart )
45
+
46
+ this.monitor.on('monitor-error', this.monitorError(instance, error)); // Emitted when the connection to a homebridge service has an error ( likely a restart )
47
+
48
+ this.monitor.on('monitor-refresh', this.monitorRefresh(instance, error)); // Emitted when the connection to a homebridge instance has been refreshed ( Triggered when an instance is discovered and its port, configuration number or name has changed)
49
+ ```
50
+
51
+
17
52
  # Dependant Applications
18
53
 
19
54
  - homebridge-config-ui-x
20
55
  - homebridge-gsh
56
+ - node-red-contrib-homebridge-automation
21
57
 
22
58
  - [NPM Dependants](https://www.npmjs.com/package/@homebridge/hap-client?activeTab=dependents)
23
59
 
package/dist/index.d.ts CHANGED
@@ -22,7 +22,11 @@ export declare class HapClient extends EventEmitter {
22
22
  logger?: any;
23
23
  config: any;
24
24
  });
25
- debug(msg: any): void;
25
+ private logMessage;
26
+ debug(msg: string): void;
27
+ info(msg: string): void;
28
+ warn(msg: string): void;
29
+ error(msg: string): void;
26
30
  resetInstancePool(): void;
27
31
  refreshInstances(): void;
28
32
  private startDiscovery;
package/dist/index.js CHANGED
@@ -32,37 +32,51 @@ class HapClient extends node_events_1.EventEmitter {
32
32
  discoveryInProgress = false;
33
33
  logger;
34
34
  pin;
35
- debugEnabled;
35
+ debugEnabled = false;
36
36
  config;
37
37
  instances = [];
38
- hiddenServices = [
39
- hap_types_1.Services.AccessoryInformation,
40
- ];
41
- hiddenCharacteristics = [
42
- hap_types_1.Characteristics.Name,
43
- ];
38
+ hiddenServices = [hap_types_1.Services.AccessoryInformation];
39
+ hiddenCharacteristics = [hap_types_1.Characteristics.Name];
44
40
  resetInstancePoolTimeout = undefined;
45
41
  startDiscoveryTimeout = undefined;
46
42
  hapMonitor;
47
43
  constructor(opts) {
48
44
  super();
49
45
  this.pin = opts.pin;
50
- this.logger = opts.logger;
51
- this.debugEnabled = opts.config.debug;
46
+ this.logger = opts.logger || console;
47
+ this.debugEnabled = !!opts.config.debug;
52
48
  this.config = opts.config;
53
49
  this.startDiscovery();
54
50
  }
55
- debug(msg) {
56
- if (this.debugEnabled) {
57
- this.logger.log(msg);
51
+ logMessage(level, msg, includeStack = false) {
52
+ if (!this.logger || typeof this.logger[level] !== 'function') {
53
+ return;
58
54
  }
55
+ const message = includeStack
56
+ ? `${msg} @ ${new Error().stack?.split('\n')[3]?.trim()}`
57
+ : msg;
58
+ if (level === 'debug' && !this.debugEnabled)
59
+ return;
60
+ this.logger[level](message);
61
+ }
62
+ debug(msg) {
63
+ this.logMessage('debug', msg, true);
64
+ }
65
+ info(msg) {
66
+ this.logMessage('info', msg);
67
+ }
68
+ warn(msg) {
69
+ this.logMessage('warn', msg);
70
+ }
71
+ error(msg) {
72
+ this.logMessage('error', msg);
59
73
  }
60
74
  resetInstancePool() {
61
75
  if (this.discoveryInProgress) {
62
76
  this.browser.stop();
63
77
  this.debug(`[HapClient] Discovery :: Terminated`);
64
78
  this.discoveryInProgress = false;
65
- this.emit('discovery-ended');
79
+ this.emit('discovery-terminated');
66
80
  }
67
81
  this.instances = [];
68
82
  this.resetInstancePoolTimeout = setTimeout(() => {
@@ -106,17 +120,25 @@ class HapClient extends node_events_1.EventEmitter {
106
120
  port: device.port,
107
121
  services: [],
108
122
  connectionFailedCount: 0,
123
+ configurationNumber: device.txt['c#'],
109
124
  };
110
125
  this.debug(`[HapClient] Discovery :: Found HAP device with username ${instance.username}`);
111
126
  const existingInstanceIndex = this.instances.findIndex(x => x.username === instance.username);
112
127
  if (existingInstanceIndex > -1) {
128
+ const configurationChanged = this.instances[existingInstanceIndex].configurationNumber !== instance.configurationNumber;
113
129
  if (this.instances[existingInstanceIndex].port !== instance.port ||
114
- this.instances[existingInstanceIndex].name !== instance.name) {
130
+ this.instances[existingInstanceIndex].name !== instance.name ||
131
+ configurationChanged) {
115
132
  this.instances[existingInstanceIndex].port = instance.port;
116
133
  this.instances[existingInstanceIndex].name = instance.name;
134
+ this.instances[existingInstanceIndex].configurationNumber = instance.configurationNumber;
117
135
  this.debug(`[HapClient] Discovery :: [${this.instances[existingInstanceIndex].ipAddress}:${instance.port} ` +
118
136
  `(${instance.username})] Instance Updated`);
119
- this.emit('instance-discovered', instance);
137
+ this.emit('instance-discovered', this.instances[existingInstanceIndex]);
138
+ if (configurationChanged) {
139
+ this.emit('instance-configuration-changed', this.instances[existingInstanceIndex]);
140
+ }
141
+ this.hapMonitor?.refreshMonitorConnection(this.instances[existingInstanceIndex]);
120
142
  }
121
143
  return;
122
144
  }
@@ -147,6 +169,7 @@ class HapClient extends node_events_1.EventEmitter {
147
169
  this.instances.push(instance);
148
170
  this.debug(`[HapClient] Discovery :: [${instance.ipAddress}:${instance.port} (${instance.username})] Instance Registered`);
149
171
  this.emit('instance-discovered', instance);
172
+ this.hapMonitor?.refreshMonitorConnection(instance);
150
173
  }
151
174
  else {
152
175
  this.debug(`[HapClient] Discovery :: Could not register to device with username ${instance.username}`);
@@ -184,14 +207,12 @@ class HapClient extends node_events_1.EventEmitter {
184
207
  }
185
208
  }
186
209
  catch (e) {
187
- if (this.logger) {
188
- instance.connectionFailedCount++;
189
- this.debug(`[HapClient] [${instance.ipAddress}:${instance.port} (${instance.username})] Failed to connect`);
190
- if (instance.connectionFailedCount > 5) {
191
- const instanceIndex = this.instances.findIndex(x => x.username === instance.username && x.ipAddress === instance.ipAddress);
192
- this.instances.splice(instanceIndex, 1);
193
- this.debug(`[HapClient] [${instance.ipAddress}:${instance.port} (${instance.username})] Removed From Instance Pool`);
194
- }
210
+ instance.connectionFailedCount++;
211
+ this.debug(`[HapClient] [${instance.ipAddress}:${instance.port} (${instance.username})] Failed to connect`);
212
+ if (instance.connectionFailedCount > 5) {
213
+ const instanceIndex = this.instances.findIndex(x => x.username === instance.username && x.ipAddress === instance.ipAddress);
214
+ this.instances.splice(instanceIndex, 1);
215
+ this.debug(`[HapClient] [${instance.ipAddress}:${instance.port} (${instance.username})] Removed From Instance Pool`);
195
216
  }
196
217
  }
197
218
  }
@@ -324,12 +345,12 @@ class HapClient extends node_events_1.EventEmitter {
324
345
  characteristic.value = c.value;
325
346
  service.values[characteristic.type] = c.value;
326
347
  });
348
+ return service;
327
349
  }
328
350
  catch (e) {
329
- this.debug(e);
330
- this.logger.log(`Failed to refresh characteristics for ${service.serviceName}: ${e.message}`);
351
+ this.debug(`[HapClient] +${e}`);
352
+ this.error(`[HapClient] Failed to refresh characteristics for ${service.serviceName}: ${e.message}`);
331
353
  }
332
- return service;
333
354
  }
334
355
  async getCharacteristic(service, iid) {
335
356
  try {
@@ -344,8 +365,8 @@ class HapClient extends node_events_1.EventEmitter {
344
365
  return characteristic;
345
366
  }
346
367
  catch (e) {
347
- this.debug(e);
348
- this.logger.log(`Failed to get characteristics for ${service.serviceName} with iid ${iid}: ${e.message}`);
368
+ this.debug(`[HapClient] +${e}`);
369
+ this.error(`[HapClient] Failed to get characteristic for ${service.serviceName} with iid ${iid}: ${e.message}`);
349
370
  }
350
371
  }
351
372
  async setCharacteristicByType(service, type, value) {
@@ -373,22 +394,17 @@ class HapClient extends node_events_1.EventEmitter {
373
394
  return this.getCharacteristic(service, iid);
374
395
  }
375
396
  catch (e) {
376
- if (this.logger) {
377
- this.logger.error(`[HapClient] [${service.instance.ipAddress}:${service.instance.port} (${service.instance.username})] ` +
378
- `Failed to set value for ${service.serviceName}.`);
379
- if (e.response && e.response?.status === 470 || e.response?.status === 401) {
380
- this.logger.warn(`[HapClient] [${service.instance.ipAddress}:${service.instance.port} (${service.instance.username})] ` +
381
- `Make sure Homebridge pin for this instance is set to ${this.pin}.`);
382
- throw new Error(`Failed to control accessory. Make sure the Homebridge pin for ${service.instance.ipAddress}:${service.instance.port} ` +
383
- `is set to ${this.pin}.`);
384
- }
385
- else {
386
- this.logger.error(e.message);
387
- throw new Error(`Failed to control accessory: ${e.message}`);
388
- }
397
+ this.error(`[HapClient] [${service.instance.ipAddress}:${service.instance.port} (${service.instance.username})] ` +
398
+ `Failed to set value for ${service.serviceName}.`);
399
+ if (e.response && e.response?.status === 470 || e.response?.status === 401) {
400
+ this.warn(`[HapClient] [${service.instance.ipAddress}:${service.instance.port} (${service.instance.username})] ` +
401
+ `Make sure Homebridge pin for this instance is set to ${this.pin}.`);
402
+ throw new Error(`Failed to control accessory. Make sure the Homebridge pin for ${service.instance.ipAddress}:${service.instance.port} ` +
403
+ `is set to ${this.pin}.`);
389
404
  }
390
405
  else {
391
- console.log(e);
406
+ this.error(e.message);
407
+ throw new Error(`Failed to control accessory: ${e.message}`);
392
408
  }
393
409
  }
394
410
  }
@@ -406,34 +422,23 @@ class HapClient extends node_events_1.EventEmitter {
406
422
  return resp.data;
407
423
  }
408
424
  else {
409
- if (this.logger) {
410
- this.logger.warn(`[HapClient] getResource [${service.instance.ipAddress}:${service.instance.port} (${service.instance.username})] ` +
411
- `Failed to request resource from accessory ${service.serviceName}. Response status Code ${resp.status}`);
412
- }
413
- else {
414
- console.log(`[HapClient] getResource [${service.instance.ipAddress}:${service.instance.port} (${service.instance.username})] ` +
415
- `Failed to request resource from accessory ${service.serviceName}. Response status Code ${resp.status}`);
416
- }
425
+ this.warn(`[HapClient] getResource [${service.instance.ipAddress}:${service.instance.port} (${service.instance.username})] ` +
426
+ `Failed to request resource from accessory ${service.serviceName}. Response status Code ${resp.status}`);
417
427
  }
418
428
  return;
419
429
  }
420
430
  catch (e) {
421
- if (this.logger) {
422
- this.logger.error(`[HapClient] [${service.instance.ipAddress}:${service.instance.port} (${service.instance.username})] ` +
423
- `Failed to request resource from accessory ${service.serviceName}.`);
424
- if (e.response && e.response?.status === 470 || e.response?.status === 401) {
425
- this.logger.warn(`[HapClient] [${service.instance.ipAddress}:${service.instance.port} (${service.instance.username})] ` +
426
- `Make sure Homebridge pin for this instance is set to ${this.pin}.`);
427
- throw new Error(`Failed to request resource from accessory. Make sure the Homebridge pin for ${service.instance.ipAddress}:${service.instance.port} ` +
428
- `is set to ${this.pin}.`);
429
- }
430
- else {
431
- this.logger.error(e.message);
432
- throw new Error(`Failed to request resource: ${e.message}`);
433
- }
431
+ this.error(`[HapClient] [${service.instance.ipAddress}:${service.instance.port} (${service.instance.username})] ` +
432
+ `Failed to request resource from accessory ${service.serviceName}.`);
433
+ if (e.response && e.response?.status === 470 || e.response?.status === 401) {
434
+ this.warn(`[HapClient] [${service.instance.ipAddress}:${service.instance.port} (${service.instance.username})] ` +
435
+ `Make sure Homebridge pin for this instance is set to ${this.pin}.`);
436
+ throw new Error(`Failed to request resource from accessory. Make sure the Homebridge pin for ${service.instance.ipAddress}:${service.instance.port} ` +
437
+ `is set to ${this.pin}.`);
434
438
  }
435
439
  else {
436
- console.log(e);
440
+ this.error(e.message);
441
+ throw new Error(`Failed to request resource: ${e.message}`);
437
442
  }
438
443
  }
439
444
  }
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAAA,6CAAyC;AACzC,6CAA2C;AAE3C,iCAA0B;AAC1B,qDAA4D;AAC5D,yCAAyC;AACzC,2CAAsC;AAEtC,uCAAqC;AACrC,2CAAwD;AAExD,uCAAuC;AACvC,iCAAwC;AAExC,+CAA6B;AAE7B,MAAa,SAAU,SAAQ,0BAAY;IACjC,OAAO,GAAG,IAAI,yBAAO,EAAE,CAAC;IACxB,OAAO,CAAU;IACjB,mBAAmB,GAAG,KAAK,CAAC;IAE5B,MAAM,CAAM;IACZ,GAAG,CAAS;IACZ,YAAY,GAAY,KAAK,CAAC;IAC9B,MAAM,CAGZ;IAEM,SAAS,GAAkB,EAAE,CAAC;IAE9B,cAAc,GAAG,CAAC,oBAAQ,CAAC,oBAAoB,CAAC,CAAC;IACjD,qBAAqB,GAAG,CAAC,2BAAe,CAAC,IAAI,CAAC,CAAC;IAE/C,wBAAwB,GAA+B,SAAS,CAAC;IACjE,qBAAqB,GAA+B,SAAS,CAAC;IAC9D,UAAU,CAAa;IAE/B,YAAY,IAIX;QACC,KAAK,EAAE,CAAC;QACR,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC;QACpB,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,IAAI,OAAO,CAAC;QACrC,IAAI,CAAC,YAAY,GAAG,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC;QACxC,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;QAC1B,IAAI,CAAC,cAAc,EAAE,CAAC;IACxB,CAAC;IAKO,UAAU,CAAC,KAA0C,EAAE,GAAW,EAAE,YAAY,GAAG,KAAK;QAC9F,IAAI,CAAC,IAAI,CAAC,MAAM,IAAI,OAAO,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,UAAU,EAAE,CAAC;YAC7D,OAAO;QACT,CAAC;QAED,MAAM,OAAO,GAAG,YAAY;YAC1B,CAAC,CAAC,GAAG,GAAG,MAAM,IAAI,KAAK,EAAE,CAAC,KAAK,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,EAAE;YACzD,CAAC,CAAC,GAAG,CAAC;QAER,IAAI,KAAK,KAAK,OAAO,IAAI,CAAC,IAAI,CAAC,YAAY;YAAE,OAAO;QACpD,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,CAAC;IAC9B,CAAC;IAED,KAAK,CAAC,GAAW;QACf,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC;IACtC,CAAC;IAED,IAAI,CAAC,GAAW;QACd,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAC/B,CAAC;IAED,IAAI,CAAC,GAAW;QACd,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAC/B,CAAC;IAED,KAAK,CAAC,GAAW;QACf,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;IAChC,CAAC;IAGM,iBAAiB;QACtB,IAAI,IAAI,CAAC,mBAAmB,EAAE,CAAC;YAC7B,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;YACpB,IAAI,CAAC,KAAK,CAAC,qCAAqC,CAAC,CAAC;YAClD,IAAI,CAAC,mBAAmB,GAAG,KAAK,CAAC;YACjC,IAAI,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC;QACpC,CAAC;QAED,IAAI,CAAC,SAAS,GAAG,EAAE,CAAC;QACpB,IAAI,CAAC,wBAAwB,GAAG,UAAU,CAAC,GAAG,EAAE;YAC9C,IAAI,CAAC,gBAAgB,EAAE,CAAC;QAC1B,CAAC,EAAE,IAAI,CAAC,CAAC;IACX,CAAC;IAKM,gBAAgB;QACrB,IAAI,CAAC,IAAI,CAAC,mBAAmB,EAAE,CAAC;YAC9B,IAAI,CAAC,cAAc,EAAE,CAAC;QACxB,CAAC;aAAM,CAAC;YACN,IAAI,CAAC;gBACH,IAAI,CAAC,KAAK,CAAC,0DAA0D,CAAC,CAAC;gBACvE,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC;YACxB,CAAC;YAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC;QACjB,CAAC;IACH,CAAC;IAEO,KAAK,CAAC,cAAc;QAC1B,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC;QAEhC,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC;YAC/B,IAAI,EAAE,KAAK;SACZ,CAAC,CAAC;QAGH,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;QACrB,IAAI,CAAC,KAAK,CAAC,kCAAkC,CAAC,CAAC;QAG/C,IAAI,CAAC,qBAAqB,GAAG,UAAU,CAAC,GAAG,EAAE;YAC3C,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;YACpB,IAAI,CAAC,KAAK,CAAC,gCAAgC,CAAC,CAAC;YAC7C,IAAI,CAAC,mBAAmB,GAAG,KAAK,CAAC;YACjC,IAAI,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;QAC/B,CAAC,EAAE,KAAK,CAAC,CAAC;QAGV,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,EAAE,MAAe,EAAE,EAAE;YAC9C,IAAI,CAAC,MAAM,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC;gBAC3B,IAAI,CAAC,KAAK,CAAC,0EAA0E,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;gBAC/G,OAAO;YACT,CAAC;YAED,MAAM,QAAQ,GAAgB;gBAC5B,IAAI,EAAE,MAAM,CAAC,GAAG,CAAC,EAAE;gBACnB,QAAQ,EAAE,MAAM,CAAC,GAAG,CAAC,EAAE;gBACvB,SAAS,EAAE,IAAI;gBACf,IAAI,EAAE,MAAM,CAAC,IAAI;gBACjB,QAAQ,EAAE,EAAE;gBACZ,qBAAqB,EAAE,CAAC;gBACxB,mBAAmB,EAAE,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC;aACtC,CAAC;YAEF,IAAI,CAAC,KAAK,CAAC,2DAA2D,QAAQ,CAAC,QAAQ,EAAE,CAAC,CAAC;YAG3F,MAAM,qBAAqB,GAAG,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,KAAK,QAAQ,CAAC,QAAQ,CAAC,CAAC;YAC9F,IAAI,qBAAqB,GAAG,CAAC,CAAC,EAAE,CAAC;gBAE/B,MAAM,oBAAoB,GAAG,IAAI,CAAC,SAAS,CAAC,qBAAqB,CAAC,CAAC,mBAAmB,KAAK,QAAQ,CAAC,mBAAmB,CAAC;gBACxH,IACE,IAAI,CAAC,SAAS,CAAC,qBAAqB,CAAC,CAAC,IAAI,KAAK,QAAQ,CAAC,IAAI;oBAC5D,IAAI,CAAC,SAAS,CAAC,qBAAqB,CAAC,CAAC,IAAI,KAAK,QAAQ,CAAC,IAAI;oBAC5D,oBAAoB,EACpB,CAAC;oBACD,IAAI,CAAC,SAAS,CAAC,qBAAqB,CAAC,CAAC,IAAI,GAAG,QAAQ,CAAC,IAAI,CAAC;oBAC3D,IAAI,CAAC,SAAS,CAAC,qBAAqB,CAAC,CAAC,IAAI,GAAG,QAAQ,CAAC,IAAI,CAAC;oBAC3D,IAAI,CAAC,SAAS,CAAC,qBAAqB,CAAC,CAAC,mBAAmB,GAAG,QAAQ,CAAC,mBAAmB,CAAC;oBACzF,IAAI,CAAC,KAAK,CAAC,6BAA6B,IAAI,CAAC,SAAS,CAAC,qBAAqB,CAAC,CAAC,SAAS,IAAI,QAAQ,CAAC,IAAI,GAAG;wBACzG,IAAI,QAAQ,CAAC,QAAQ,qBAAqB,CAAC,CAAC;oBAC9C,IAAI,CAAC,IAAI,CAAC,qBAAqB,EAAE,IAAI,CAAC,SAAS,CAAC,qBAAqB,CAAC,CAAC,CAAC;oBACxE,IAAI,oBAAoB,EAAE,CAAC;wBACzB,IAAI,CAAC,IAAI,CAAC,gCAAgC,EAAE,IAAI,CAAC,SAAS,CAAC,qBAAqB,CAAC,CAAC,CAAC;oBACrF,CAAC;oBACD,IAAI,CAAC,UAAU,EAAE,wBAAwB,CAAC,IAAI,CAAC,SAAS,CAAC,qBAAqB,CAAC,CAAC,CAAC;gBACnF,CAAC;gBAED,OAAO;YACT,CAAC;YAGD,IAAI,IAAI,CAAC,MAAM,CAAC,iBAAiB,IAAI,IAAI,CAAC,MAAM,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC,WAAW,EAAE,KAAK,CAAC,CAAC,WAAW,EAAE,CAAC,EAAE,CAAC;gBAClI,IAAI,CAAC,KAAK,CAAC,mDAAmD,QAAQ,CAAC,QAAQ,oCAAoC,CAAC,CAAC;gBACrH,OAAO;YACT,CAAC;YAED,KAAK,MAAM,EAAE,IAAI,MAAM,CAAC,SAAS,EAAE,CAAC;gBAClC,IAAI,EAAE,CAAC,KAAK,CAAC,wEAAwE,CAAC,EAAE,CAAC;oBACvF,IAAI,CAAC;wBACH,IAAI,CAAC,KAAK,CAAC,oCAAoC,QAAQ,CAAC,QAAQ,eAAe,EAAE,IAAI,MAAM,CAAC,IAAI,cAAc,CAAC,CAAC;wBAChH,MAAM,IAAI,GAA2B,CAAC,MAAM,eAAK,CAAC,GAAG,CAAC,UAAU,EAAE,IAAI,MAAM,CAAC,IAAI,cAAc,EAAE;4BAC/F,OAAO,EAAE,KAAK;yBACf,CAAC,CAAC,CAAC,IAAI,CAAC;wBACT,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC;4BACrB,IAAI,CAAC,KAAK,CAAC,oCAAoC,QAAQ,CAAC,QAAQ,eAAe,EAAE,IAAI,MAAM,CAAC,IAAI,cAAc,CAAC,CAAC;4BAChH,QAAQ,CAAC,SAAS,GAAG,EAAE,CAAC;wBAC1B,CAAC;wBACD,MAAM;oBACR,CAAC;oBAAC,OAAO,CAAC,EAAE,CAAC;wBACX,IAAI,CAAC,KAAK,CAAC,mCAAmC,QAAQ,CAAC,QAAQ,eAAe,EAAE,IAAI,MAAM,CAAC,IAAI,cAAc,CAAC,CAAC;wBAC/G,IAAI,CAAC,KAAK,CAAC,mCAAmC,QAAQ,CAAC,QAAQ,gBAAgB,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC;oBAC9F,CAAC;gBACH,CAAC;YACH,CAAC;YAGD,IAAI,QAAQ,CAAC,SAAS,IAAI,MAAM,IAAI,CAAC,uBAAuB,CAAC,QAAQ,CAAC,EAAE,CAAC;gBACvE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;gBAC9B,IAAI,CAAC,KAAK,CAAC,6BAA6B,QAAQ,CAAC,SAAS,IAAI,QAAQ,CAAC,IAAI,KAAK,QAAQ,CAAC,QAAQ,wBAAwB,CAAC,CAAC;gBAC3H,IAAI,CAAC,IAAI,CAAC,qBAAqB,EAAE,QAAQ,CAAC,CAAC;gBAC3C,IAAI,CAAC,UAAU,EAAE,wBAAwB,CAAC,QAAQ,CAAC,CAAC;YACtD,CAAC;iBAAM,CAAC;gBACN,IAAI,CAAC,KAAK,CAAC,uEAAuE,QAAQ,CAAC,QAAQ,EAAE,CAAC,CAAC;YACzG,CAAC;QACH,CAAC,CAAC,CAAC;IAEL,CAAC;IAKO,KAAK,CAAC,uBAAuB,CAAC,QAAqB;QACzD,IAAI,CAAC;YACH,MAAM,eAAK,CAAC,GAAG,CAAC,UAAU,QAAQ,CAAC,SAAS,IAAI,QAAQ,CAAC,IAAI,kBAAkB,EAC7E;gBACE,eAAe,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC;aACxC,EACD;gBACE,OAAO,EAAE;oBACP,aAAa,EAAE,IAAI,CAAC,GAAG;iBACxB;aACF,CACF,CAAC;YACF,OAAO,IAAI,CAAC;QACd,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,IAAI,CAAC,KAAK,CAAC,6BAA6B,QAAQ,CAAC,SAAS,IAAI,QAAQ,CAAC,IAAI,KAAK,QAAQ,CAAC,QAAQ,qDAAqD,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC;YACnK,OAAO,KAAK,CAAC;QACf,CAAC;IACH,CAAC;IAEO,KAAK,CAAC,cAAc;QAC1B,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,CAAC;YAC3B,IAAI,CAAC,KAAK,CAAC,oFAAoF,CAAC,CAAC;QACnG,CAAC;QAED,MAAM,WAAW,GAAG,EAAE,CAAC;QACvB,KAAK,MAAM,QAAQ,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;YACtC,IAAI,CAAC;gBACH,MAAM,IAAI,GAA2B,CAAC,MAAM,eAAK,CAAC,GAAG,CAAC,UAAU,QAAQ,CAAC,SAAS,IAAI,QAAQ,CAAC,IAAI,cAAc,CAAC,CAAC,CAAC,IAAI,CAAC;gBACzH,QAAQ,CAAC,qBAAqB,GAAG,CAAC,CAAC;gBACnC,KAAK,MAAM,SAAS,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC;oBACzC,SAAS,CAAC,QAAQ,GAAG,QAAQ,CAAC;oBAC9B,WAAW,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;gBAC9B,CAAC;YACH,CAAC;YAAC,OAAO,CAAC,EAAE,CAAC;gBACX,QAAQ,CAAC,qBAAqB,EAAE,CAAC;gBACjC,IAAI,CAAC,KAAK,CAAC,gBAAgB,QAAQ,CAAC,SAAS,IAAI,QAAQ,CAAC,IAAI,KAAK,QAAQ,CAAC,QAAQ,sBAAsB,CAAC,CAAC;gBAE5G,IAAI,QAAQ,CAAC,qBAAqB,GAAG,CAAC,EAAE,CAAC;oBACvC,MAAM,aAAa,GAAG,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,KAAK,QAAQ,CAAC,QAAQ,IAAI,CAAC,CAAC,SAAS,KAAK,QAAQ,CAAC,SAAS,CAAC,CAAC;oBAC5H,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,aAAa,EAAE,CAAC,CAAC,CAAC;oBACxC,IAAI,CAAC,KAAK,CAAC,gBAAgB,QAAQ,CAAC,SAAS,IAAI,QAAQ,CAAC,IAAI,KAAK,QAAQ,CAAC,QAAQ,+BAA+B,CAAC,CAAC;gBACvH,CAAC;YACH,CAAC;QACH,CAAC;QACD,OAAO,WAAW,CAAC;IACrB,CAAC;IASM,KAAK,CAAC,sBAAsB,CAAC,QAAwB;QAE1D,QAAQ,GAAG,QAAQ,IAAI,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;QACnD,IAAI,CAAC,UAAU,GAAG,IAAI,oBAAU,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,IAAI,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC;QACzF,OAAO,IAAI,CAAC,UAAU,CAAC;IACzB,CAAC;IAMM,KAAK,CAAC,cAAc;QAEzB,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;QAEhD,MAAM,QAAQ,GAAuB,EAAE,CAAC;QAGxC,WAAW,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE;YAE9B,KAAK,MAAM,OAAO,IAAI,SAAS,CAAC,QAAQ,EAAE,CAAC;gBACzC,OAAO,CAAC,IAAI,GAAG,IAAA,qBAAc,EAAC,OAAO,CAAC,IAAI,CAAC,CAAC;gBAC5C,KAAK,MAAM,cAAc,IAAI,OAAO,CAAC,eAAe,EAAE,CAAC;oBACrD,cAAc,CAAC,IAAI,GAAG,IAAA,qBAAc,EAAC,cAAc,CAAC,IAAI,CAAC,CAAC;gBAC5D,CAAC;YACH,CAAC;YAGD,MAAM,2BAA2B,GAAG,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,oBAAQ,CAAC,oBAAoB,CAAC,CAAC;YAC3G,MAAM,oBAAoB,GAAG,EAAoC,CAAC;YAElE,IAAI,2BAA2B,IAAI,2BAA2B,CAAC,eAAe,EAAE,CAAC;gBAC/E,2BAA2B,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE;oBACxD,IAAI,CAAC,CAAC,KAAK,EAAE,CAAC;wBACZ,oBAAoB,CAAC,CAAC,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC;oBAChD,CAAC;gBACH,CAAC,CAAC,CAAC;YACL,CAAC;YAGD,SAAS,CAAC,QAAQ;iBACf,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,oBAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;iBAC1E,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE;gBACT,IAAI,WAAW,GAAG,CAAC,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,2BAAe,CAAC,IAAI,CAAC,CAAC;gBAG/E,WAAW,GAAG,WAAW,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC;oBACxC,GAAG,EAAE,CAAC;oBACN,IAAI,EAAE,2BAAe,CAAC,IAAI;oBAC1B,WAAW,EAAE,MAAM;oBACnB,MAAM,EAAE,QAAQ;oBAChB,KAAK,EAAE,oBAAoB,CAAC,IAAI,IAAI,IAAI,CAAC,cAAc,CAAC,oBAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;oBACzE,KAAK,EAAE,CAAC,IAAI,CAAC;iBACd,CAAC;gBAGF,MAAM,sBAAsB,GAA8B,CAAC,CAAC,eAAe;qBACxE,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,qBAAqB,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,2BAAe,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;qBACxF,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE;oBACT,OAAO;wBACL,GAAG,EAAE,SAAS,CAAC,GAAG;wBAClB,GAAG,EAAE,CAAC,CAAC,GAAG;wBACV,IAAI,EAAE,CAAC,CAAC,IAAI;wBACZ,IAAI,EAAE,2BAAe,CAAC,CAAC,CAAC,IAAI,CAAC;wBAC7B,WAAW,EAAE,oBAAQ,CAAC,CAAC,CAAC,IAAI,CAAC;wBAC7B,WAAW,EAAE,WAAW,CAAC,KAAK,CAAC,QAAQ,EAAE;wBACzC,WAAW,EAAE,CAAC,CAAC,WAAW;wBAC1B,KAAK,EAAE,CAAC,CAAC,KAAK;wBACd,MAAM,EAAE,CAAC,CAAC,MAAM;wBAChB,KAAK,EAAE,CAAC,CAAC,KAAK;wBACd,IAAI,EAAE,CAAC,CAAC,IAAI;wBACZ,QAAQ,EAAE,CAAC,CAAC,QAAQ;wBACpB,QAAQ,EAAE,CAAC,CAAC,QAAQ;wBACpB,OAAO,EAAE,CAAC,CAAC,OAAO;wBAClB,OAAO,EAAE,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC;wBAC/B,QAAQ,EAAE,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC;wBAChC,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC;qBAC3B,CAAC;gBACJ,CAAC,CAAC,CAAC;gBAEL,MAAM,OAAO,GAAgB;oBAC3B,GAAG,EAAE,SAAS,CAAC,GAAG;oBAClB,GAAG,EAAE,CAAC,CAAC,GAAG;oBACV,IAAI,EAAE,CAAC,CAAC,IAAI;oBACZ,IAAI,EAAE,oBAAQ,CAAC,CAAC,CAAC,IAAI,CAAC;oBACtB,SAAS,EAAE,IAAI,CAAC,cAAc,CAAC,oBAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;oBAChD,WAAW,EAAE,CAAC,WAAW,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,WAAW,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,oBAAoB,CAAC,IAAI,CAAC;oBAC7G,sBAAsB;oBACtB,oBAAoB;oBACpB,MAAM,EAAE,EAAE;oBACV,MAAM,EAAE,CAAC,CAAC,MAAM;oBAChB,QAAQ,EAAE,SAAS,CAAC,QAAQ;iBAC7B,CAAC;gBAGF,OAAO,CAAC,QAAQ,GAAG,IAAA,wBAAU,EAAC,QAAQ,CAAC;qBACpC,MAAM,CAAC,GAAG,OAAO,CAAC,QAAQ,CAAC,QAAQ,GAAG,OAAO,CAAC,GAAG,GAAG,OAAO,CAAC,GAAG,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC;qBACjF,MAAM,CAAC,KAAK,CAAC,CAAC;gBAGjB,OAAO,CAAC,sBAAsB,GAAG,GAAG,EAAE;oBACpC,OAAO,IAAI,CAAC,6BAA6B,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC;gBAChE,CAAC,CAAC;gBAGF,OAAO,CAAC,iBAAiB,GAAG,CAAC,GAAW,EAAE,KAAgC,EAAE,EAAE;oBAC5E,OAAO,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,GAAG,EAAE,KAAK,CAAC,CAAC;gBAChE,CAAC,CAAC;gBAEF,OAAO,CAAC,uBAAuB,GAAG,CAAC,IAAY,EAAE,KAAgC,EAAE,EAAE;oBACnF,OAAO,IAAI,CAAC,uBAAuB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC;gBACvE,CAAC,CAAC;gBAGF,OAAO,CAAC,iBAAiB,GAAG,CAAC,IAAY,EAAE,EAAE;oBAC3C,OAAO,OAAO,CAAC,sBAAsB,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC;gBACnE,CAAC,CAAC;gBAEF,IAAI,OAAO,CAAC,IAAI,KAAK,2BAA2B,EAAE,CAAC;oBACjD,OAAO,CAAC,WAAW,GAAG,CAAC,IAAyB,EAAE,EAAE;wBAClD,OAAO,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;oBACpD,CAAC,CAAC;gBACJ,CAAC;gBACD,OAAO,CAAC,sBAAsB,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE;oBAE3C,CAAC,CAAC,QAAQ,GAAG,KAAK,EAAE,KAAgC,EAAE,EAAE;wBACtD,OAAO,MAAM,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;oBACxE,CAAC,CAAC;oBAGF,CAAC,CAAC,QAAQ,GAAG,KAAK,IAAI,EAAE;wBACtB,OAAO,MAAM,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC;oBACjE,CAAC,CAAC;oBAGF,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC;gBACnC,CAAC,CAAC,CAAC;gBAEH,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YACzB,CAAC,CAAC,CAAC;QACP,CAAC,CAAC,CAAC;QAEH,OAAO,QAAQ,CAAC;IAClB,CAAC;IAED,KAAK,CAAC,UAAU,CAAC,GAAW;QAC1B,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;QAC7C,OAAO,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,KAAK,GAAG,CAAC,CAAC;IAC3C,CAAC;IAED,KAAK,CAAC,gBAAgB,CAAC,WAAmB;QACxC,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;QAC7C,OAAO,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,WAAW,KAAK,WAAW,CAAC,CAAC;IAC3D,CAAC;IAED,KAAK,CAAC,6BAA6B,CAAC,OAAoB;QACtD,IAAI,CAAC;YACH,MAAM,IAAI,GAAa,OAAO,CAAC,sBAAsB,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;YAEtE,MAAM,IAAI,GAA8B,CAAC,MAAM,eAAK,CAAC,GAAG,CAAC,UAAU,OAAO,CAAC,QAAQ,CAAC,SAAS,IAAI,OAAO,CAAC,QAAQ,CAAC,IAAI,kBAAkB,EAAE;gBACxI,MAAM,EAAE;oBACN,EAAE,EAAE,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC,GAAG,IAAI,GAAG,EAAE,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC;iBACvD;aACF,CAAC,CAAC,CAAC,IAAI,CAAC;YAET,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE;gBACjC,MAAM,cAAc,GAAG,OAAO,CAAC,sBAAsB,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,GAAG,KAAK,OAAO,CAAC,GAAG,CAAC,CAAC;gBAC1G,cAAc,CAAC,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC;gBAC/B,OAAO,CAAC,MAAM,CAAC,cAAc,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC;YAChD,CAAC,CAAC,CAAC;YACH,OAAO,OAAO,CAAC;QACjB,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,IAAI,CAAC,KAAK,CAAC,gBAAgB,CAAC,EAAE,CAAC,CAAC;YAEhC,IAAI,CAAC,KAAK,CAAC,qDAAqD,OAAO,CAAC,WAAW,KAAK,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC;QAEvG,CAAC;IACH,CAAC;IAED,KAAK,CAAC,iBAAiB,CAAC,OAAoB,EAAE,GAAW;QACvD,IAAI,CAAC;YACH,MAAM,IAAI,GAA8B,CAAC,MAAM,eAAK,CAAC,GAAG,CAAC,UAAU,OAAO,CAAC,QAAQ,CAAC,SAAS,IAAI,OAAO,CAAC,QAAQ,CAAC,IAAI,kBAAkB,EAAE;gBACxI,MAAM,EAAE;oBACN,EAAE,EAAE,GAAG,OAAO,CAAC,GAAG,IAAI,GAAG,EAAE;iBAC5B;aACF,CAAC,CAAC,CAAC,IAAI,CAAC;YAET,MAAM,cAAc,GAAG,OAAO,CAAC,sBAAsB,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,KAAK,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,GAAG,KAAK,OAAO,CAAC,GAAG,CAAC,CAAC;YAChI,cAAc,CAAC,KAAK,GAAG,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;YACrD,OAAO,CAAC,MAAM,CAAC,cAAc,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;YAEpE,OAAO,cAAc,CAAC;QACxB,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,IAAI,CAAC,KAAK,CAAC,gBAAgB,CAAC,EAAE,CAAC,CAAC;YAEhC,IAAI,CAAC,KAAK,CAAC,gDAAgD,OAAO,CAAC,WAAW,aAAa,GAAG,KAAK,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC;QAElH,CAAC;IACH,CAAC;IAED,KAAK,CAAC,uBAAuB,CAAC,OAAoB,EAAE,IAAY,EAAE,KAAgC;QAChG,MAAM,cAAc,GAAG,OAAO,CAAC,sBAAsB,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC;QACjF,IAAI,CAAC,cAAc,EAAE,CAAC;YACpB,MAAM,IAAI,KAAK,CAAC,kBAAkB,IAAI,yBAAyB,OAAO,CAAC,WAAW,EAAE,CAAC,CAAC;QACxF,CAAC;QACD,OAAO,IAAI,CAAC,iBAAiB,CAAC,OAAO,EAAE,cAAc,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;IACpE,CAAC;IAED,KAAK,CAAC,iBAAiB,CAAC,OAAoB,EAAE,GAAW,EAAE,KAAgC;QACzF,IAAI,CAAC;YACH,MAAM,eAAK,CAAC,GAAG,CAAC,UAAU,OAAO,CAAC,QAAQ,CAAC,SAAS,IAAI,OAAO,CAAC,QAAQ,CAAC,IAAI,kBAAkB,EAC7F;gBACE,eAAe,EAAE;oBACf;wBACE,GAAG,EAAE,OAAO,CAAC,GAAG;wBAChB,GAAG;wBACH,KAAK;qBACN;iBACF;aACF,EACD;gBACE,OAAO,EAAE;oBACP,aAAa,EAAE,IAAI,CAAC,GAAG;iBACxB;aACF,CACF,CAAC;YACF,OAAO,IAAI,CAAC,iBAAiB,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;QAC9C,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YAEX,IAAI,CAAC,KAAK,CAAC,gBAAgB,OAAO,CAAC,QAAQ,CAAC,SAAS,IAAI,OAAO,CAAC,QAAQ,CAAC,IAAI,KAAK,OAAO,CAAC,QAAQ,CAAC,QAAQ,KAAK;gBAC/G,2BAA2B,OAAO,CAAC,WAAW,GAAG,CAAC,CAAC;YACrD,IAAI,CAAC,CAAC,QAAQ,IAAI,CAAC,CAAC,QAAQ,EAAE,MAAM,KAAK,GAAG,IAAI,CAAC,CAAC,QAAQ,EAAE,MAAM,KAAK,GAAG,EAAE,CAAC;gBAC3E,IAAI,CAAC,IAAI,CAAC,gBAAgB,OAAO,CAAC,QAAQ,CAAC,SAAS,IAAI,OAAO,CAAC,QAAQ,CAAC,IAAI,KAAK,OAAO,CAAC,QAAQ,CAAC,QAAQ,KAAK;oBAC9G,wDAAwD,IAAI,CAAC,GAAG,GAAG,CAAC,CAAC;gBACvE,MAAM,IAAI,KAAK,CAAC,iEAAiE,OAAO,CAAC,QAAQ,CAAC,SAAS,IAAI,OAAO,CAAC,QAAQ,CAAC,IAAI,GAAG;oBACrI,aAAa,IAAI,CAAC,GAAG,GAAG,CAAC,CAAC;YAC9B,CAAC;iBAAM,CAAC;gBACN,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;gBACtB,MAAM,IAAI,KAAK,CAAC,gCAAgC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC;YAC/D,CAAC;QAEH,CAAC;IACH,CAAC;IAED,KAAK,CAAC,WAAW,CAAC,OAAoB,EAAE,IAAyB;QAC/D,IAAI,CAAC;YACH,MAAM,IAAI,GAAQ,MAAM,eAAK,CAAC,IAAI,CAAC,UAAU,OAAO,CAAC,QAAQ,CAAC,SAAS,IAAI,OAAO,CAAC,QAAQ,CAAC,IAAI,WAAW,EACzG;gBACE,GAAG,IAAI,EAAE,GAAG,EAAE,OAAO,CAAC,GAAG;aAC1B,EACD;gBACE,YAAY,EAAE,aAAa;gBAC3B,OAAO,EAAE;oBACP,aAAa,EAAE,IAAI,CAAC,GAAG;iBACxB;aACF,CACF,CAAC;YACF,IAAI,IAAI,CAAC,MAAM,KAAK,GAAG,EAAE,CAAC;gBACxB,OAAO,IAAI,CAAC,IAAI,CAAC;YACnB,CAAC;iBAAM,CAAC;gBAEN,IAAI,CAAC,IAAI,CAAC,4BAA4B,OAAO,CAAC,QAAQ,CAAC,SAAS,IAAI,OAAO,CAAC,QAAQ,CAAC,IAAI,KAAK,OAAO,CAAC,QAAQ,CAAC,QAAQ,KAAK;oBAC1H,6CAA6C,OAAO,CAAC,WAAW,0BAA0B,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC;YAE7G,CAAC;YACD,OAAO;QACT,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YAEX,IAAI,CAAC,KAAK,CAAC,gBAAgB,OAAO,CAAC,QAAQ,CAAC,SAAS,IAAI,OAAO,CAAC,QAAQ,CAAC,IAAI,KAAK,OAAO,CAAC,QAAQ,CAAC,QAAQ,KAAK;gBAC/G,6CAA6C,OAAO,CAAC,WAAW,GAAG,CAAC,CAAC;YACvE,IAAI,CAAC,CAAC,QAAQ,IAAI,CAAC,CAAC,QAAQ,EAAE,MAAM,KAAK,GAAG,IAAI,CAAC,CAAC,QAAQ,EAAE,MAAM,KAAK,GAAG,EAAE,CAAC;gBAC3E,IAAI,CAAC,IAAI,CAAC,gBAAgB,OAAO,CAAC,QAAQ,CAAC,SAAS,IAAI,OAAO,CAAC,QAAQ,CAAC,IAAI,KAAK,OAAO,CAAC,QAAQ,CAAC,QAAQ,KAAK;oBAC9G,wDAAwD,IAAI,CAAC,GAAG,GAAG,CAAC,CAAC;gBACvE,MAAM,IAAI,KAAK,CAAC,+EAA+E,OAAO,CAAC,QAAQ,CAAC,SAAS,IAAI,OAAO,CAAC,QAAQ,CAAC,IAAI,GAAG;oBACnJ,aAAa,IAAI,CAAC,GAAG,GAAG,CAAC,CAAC;YAC9B,CAAC;iBAAM,CAAC;gBACN,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;gBACtB,MAAM,IAAI,KAAK,CAAC,+BAA+B,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC;YAC9D,CAAC;QAEH,CAAC;IACH,CAAC;IAEO,cAAc,CAAC,MAAc;QACnC,OAAO,IAAA,qBAAQ,EAAC,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC;IACtC,CAAC;IAKM,KAAK,CAAC,OAAO;QAClB,IAAI,CAAC,OAAO,EAAE,IAAI,EAAE,CAAC;QACrB,IAAI,CAAC,UAAU,EAAE,MAAM,EAAE,CAAC;QAC1B,IAAI,CAAC,mBAAmB,GAAG,KAAK,CAAC;QACjC,IAAI,IAAI,CAAC,wBAAwB,EAAE,CAAC;YAClC,YAAY,CAAC,IAAI,CAAC,wBAAwB,CAAC,CAAA;QAC7C,CAAC;QACD,IAAI,IAAI,CAAC,qBAAqB,EAAE,CAAC;YAC/B,YAAY,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAA;QAC1C,CAAC;IACH,CAAC;CAEF;AA5iBD,8BA4iBC"}
@@ -6,6 +6,7 @@ export interface HapInstance {
6
6
  username: string;
7
7
  connectionFailedCount: number;
8
8
  services: ServiceType[];
9
+ configurationNumber: number;
9
10
  }
10
11
  export interface HapEvInstance {
11
12
  name: string;
package/dist/monitor.d.ts CHANGED
@@ -1,5 +1,5 @@
1
1
  import { EventEmitter } from 'node:events';
2
- import { ServiceType } from './interfaces';
2
+ import { HapEvInstance, ServiceType } from './interfaces';
3
3
  export declare class HapMonitor extends EventEmitter {
4
4
  private pin;
5
5
  private evInstances;
@@ -7,7 +7,11 @@ export declare class HapMonitor extends EventEmitter {
7
7
  private logger;
8
8
  private debug;
9
9
  constructor(logger: any, debug: any, pin: string, services: ServiceType[]);
10
+ log(message: string): void;
11
+ error(message: string): void;
10
12
  start(): void;
13
+ connectInstance(instance: HapEvInstance): void;
11
14
  finish(): void;
15
+ refreshMonitorConnection(refreshInstance: HapEvInstance): void;
12
16
  parseServices(): void;
13
17
  }
package/dist/monitor.js CHANGED
@@ -19,64 +19,65 @@ class HapMonitor extends node_events_1.EventEmitter {
19
19
  this.parseServices();
20
20
  this.start();
21
21
  }
22
+ log(message) {
23
+ this.logger?.log(`[HapMonitor] ${message}`);
24
+ }
25
+ error(message) {
26
+ this.logger?.log(`[HapMonitor] ERROR: ${message}`);
27
+ }
22
28
  start() {
23
29
  for (const instance of this.evInstances) {
24
- try {
25
- instance.socket = (0, eventedHttpClient_1.createConnection)(instance, this.pin, { characteristics: instance.evCharacteristics });
26
- this.debug(`[HapClient] [${instance.ipAddress}:${instance.port} (${instance.username})] Connected`);
27
- instance.socket.on('data', (data) => {
28
- const message = (0, eventedHttpClient_1.parseMessage)(data);
29
- if (message.statusCode === 401) {
30
- if (this.logger) {
30
+ this.connectInstance(instance);
31
+ }
32
+ }
33
+ connectInstance(instance) {
34
+ try {
35
+ this.debug(`[HapClient] [${instance.ipAddress}:${instance.port} (${instance.username})] Connecting`);
36
+ instance.socket = (0, eventedHttpClient_1.createConnection)(instance, this.pin, { characteristics: instance.evCharacteristics });
37
+ this.debug(`[HapClient] [${instance.ipAddress}:${instance.port} (${instance.username})] Connected`);
38
+ instance.socket.on('data', (data) => {
39
+ const message = (0, eventedHttpClient_1.parseMessage)(data);
40
+ if (message.statusCode === 401) {
41
+ this.debug(`[HapClient] [${instance.ipAddress}:${instance.port} (${instance.username})] ` +
42
+ `${message.statusCode} ${message.statusMessage} - make sure Homebridge pin for this instance is set to ${this.pin}.`);
43
+ }
44
+ if (message.protocol === 'EVENT') {
45
+ try {
46
+ const body = JSON.parse(message.body);
47
+ if (body.characteristics && body.characteristics.length) {
31
48
  this.debug(`[HapClient] [${instance.ipAddress}:${instance.port} (${instance.username})] ` +
32
- `${message.statusCode} ${message.statusMessage} - make sure Homebridge pin for this instance is set to ${this.pin}.`);
33
- }
34
- }
35
- if (message.protocol === 'EVENT') {
36
- try {
37
- const body = JSON.parse(message.body);
38
- if (body.characteristics && body.characteristics.length) {
39
- this.debug(`[HapClient] [${instance.ipAddress}:${instance.port} (${instance.username})] ` +
40
- `Got Event: ${JSON.stringify(body.characteristics)}`);
41
- const response = body.characteristics.map((c) => {
42
- const services = this.services.filter(x => x.aid === c.aid && x.instance.username === instance.username);
43
- const service = services.find(x => x.serviceCharacteristics.find(y => y.iid === c.iid));
44
- if (service) {
45
- const characteristic = service.serviceCharacteristics.find(x => x.iid === c.iid);
46
- if (characteristic) {
47
- characteristic.value = c.value;
48
- service.values[characteristic.type] = c.value;
49
- return service;
50
- }
49
+ `Got Event: ${JSON.stringify(body.characteristics)}`);
50
+ const response = body.characteristics.map((c) => {
51
+ const services = this.services.filter(x => x.aid === c.aid && x.instance.username === instance.username);
52
+ const service = services.find(x => x.serviceCharacteristics.find(y => y.iid === c.iid));
53
+ if (service) {
54
+ const characteristic = service.serviceCharacteristics.find(x => x.iid === c.iid);
55
+ if (characteristic) {
56
+ characteristic.value = c.value;
57
+ service.values[characteristic.type] = c.value;
58
+ return service;
51
59
  }
52
- });
53
- this.emit('service-update', response.filter(x => x));
54
- }
55
- }
56
- catch (e) {
60
+ }
61
+ });
62
+ this.emit('service-update', response.filter(x => x));
57
63
  }
58
64
  }
59
- });
60
- let closeTimeout = null;
61
- instance.socket.on('close', (data) => {
62
- this.emit('monitor-close', data);
63
- if (!closeTimeout) {
64
- closeTimeout = setTimeout(() => {
65
- this.finish();
66
- this.start();
67
- closeTimeout = null;
68
- }, 10000);
65
+ catch (e) {
69
66
  }
70
- });
71
- instance.socket.on('error', (data) => {
72
- this.emit('monitor-error', data);
73
- this.debug(`ERROR: monitor-error ${data}`);
74
- });
75
- }
76
- catch (e) {
77
- this.debug(e);
78
- this.logger.log(`Monitor Start Error [${instance.ipAddress}:${instance.port} (${instance.username})]: ${e.message}`);
79
- }
67
+ }
68
+ });
69
+ instance.socket.on('close', (hadError) => {
70
+ this.emit('monitor-close', instance, hadError);
71
+ this.debug(`[HapClient] [${instance.ipAddress}:${instance.port} (${instance.username})] closed: ${hadError}`);
72
+ });
73
+ instance.socket.on('error', (error) => {
74
+ this.emit('monitor-error', instance, error);
75
+ this.debug(`[HapClient] [${instance.ipAddress}:${instance.port} (${instance.username})] error: ${error}`);
76
+ });
77
+ }
78
+ catch (e) {
79
+ this.debug(e);
80
+ this.error(`Monitor Start Error [${instance.ipAddress}:${instance.port} (${instance.username})]: ${e.message}`);
80
81
  }
81
82
  }
82
83
  finish() {
@@ -92,6 +93,18 @@ class HapMonitor extends node_events_1.EventEmitter {
92
93
  }
93
94
  }
94
95
  }
96
+ refreshMonitorConnection(refreshInstance) {
97
+ this.debug(`[HapClient] [${refreshInstance.ipAddress}:${refreshInstance.port} (${refreshInstance.username})] Refreshing Monitor`);
98
+ const instance = this.evInstances.find(x => x.username === refreshInstance.username);
99
+ if (instance) {
100
+ instance.socket.destroy();
101
+ instance.socket.removeAllListeners();
102
+ instance.port = refreshInstance.port;
103
+ instance.ipAddress = refreshInstance.ipAddress;
104
+ this.connectInstance(instance);
105
+ this.emit('monitor-refresh', instance);
106
+ }
107
+ }
95
108
  parseServices() {
96
109
  for (const service of this.services) {
97
110
  const evCharacteristics = service.serviceCharacteristics.filter(x => x.perms.includes('ev'));
@@ -1 +1 @@
1
- {"version":3,"file":"monitor.js","sourceRoot":"","sources":["../src/monitor.ts"],"names":[],"mappings":";;;AAAA,6CAA2C;AAE3C,2DAAqE;AAMrE,MAAa,UAAW,SAAQ,0BAAY;IAClC,GAAG,CAAC;IACJ,WAAW,CAAkB;IAC7B,QAAQ,CAAgB;IACxB,MAAM,CAAM;IACZ,KAAK,CAAyB;IAEtC,YAAY,MAAW,EAAE,KAAU,EAAE,GAAW,EAAE,QAAuB;QACvE,KAAK,EAAE,CAAC;QACR,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;QACnB,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC;QACf,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;QACzB,IAAI,CAAC,WAAW,GAAG,EAAE,CAAC;QAGtB,IAAI,CAAC,aAAa,EAAE,CAAC;QAGrB,IAAI,CAAC,KAAK,EAAE,CAAC;IACf,CAAC;IAED,KAAK;QACH,KAAK,MAAM,QAAQ,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC;YACxC,IAAI,CAAC;gBACH,QAAQ,CAAC,MAAM,GAAG,IAAA,oCAAgB,EAAC,QAAQ,EAAE,IAAI,CAAC,GAAG,EAAE,EAAE,eAAe,EAAE,QAAQ,CAAC,iBAAiB,EAAE,CAAC,CAAC;gBAExG,IAAI,CAAC,KAAK,CAAC,gBAAgB,QAAQ,CAAC,SAAS,IAAI,QAAQ,CAAC,IAAI,KAAK,QAAQ,CAAC,QAAQ,cAAc,CAAC,CAAC;gBAEpG,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,EAAE;oBAClC,MAAM,OAAO,GAAG,IAAA,gCAAY,EAAC,IAAI,CAAC,CAAC;oBAEnC,IAAI,OAAO,CAAC,UAAU,KAAK,GAAG,EAAE,CAAC;wBAC/B,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;4BAChB,IAAI,CAAC,KAAK,CAAC,gBAAgB,QAAQ,CAAC,SAAS,IAAI,QAAQ,CAAC,IAAI,KAAK,QAAQ,CAAC,QAAQ,KAAK;gCACvF,GAAG,OAAO,CAAC,UAAU,IAAI,OAAO,CAAC,aAAa,2DAA2D,IAAI,CAAC,GAAG,GAAG,CAAC,CAAC;wBAC1H,CAAC;oBACH,CAAC;oBAED,IAAI,OAAO,CAAC,QAAQ,KAAK,OAAO,EAAE,CAAC;wBACjC,IAAI,CAAC;4BACH,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;4BACtC,IAAI,IAAI,CAAC,eAAe,IAAI,IAAI,CAAC,eAAe,CAAC,MAAM,EAAE,CAAC;gCACxD,IAAI,CAAC,KAAK,CAAC,gBAAgB,QAAQ,CAAC,SAAS,IAAI,QAAQ,CAAC,IAAI,KAAK,QAAQ,CAAC,QAAQ,KAAK;oCACvF,cAAc,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,eAAe,CAAC,EAAE,CAAC,CAAC;gCAExD,MAAM,QAAQ,GAAG,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE;oCAE9C,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,QAAQ,CAAC,QAAQ,KAAK,QAAQ,CAAC,QAAQ,CAAC,CAAC;oCACzG,MAAM,OAAO,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,sBAAsB,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;oCAExF,IAAI,OAAO,EAAE,CAAC;wCAEZ,MAAM,cAAc,GAAG,OAAO,CAAC,sBAAsB,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC;wCACjF,IAAI,cAAc,EAAE,CAAC;4CACnB,cAAc,CAAC,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC;4CAC/B,OAAO,CAAC,MAAM,CAAC,cAAc,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC;4CAC9C,OAAO,OAAO,CAAC;wCACjB,CAAC;oCACH,CAAC;gCAEH,CAAC,CAAC,CAAC;gCAGH,IAAI,CAAC,IAAI,CAAC,gBAAgB,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;4BACvD,CAAC;wBACH,CAAC;wBAAC,OAAO,CAAC,EAAE,CAAC;wBAEb,CAAC;oBACH,CAAC;gBACH,CAAC,CAAC,CAAC;gBACH,IAAI,YAAY,GAAG,IAAI,CAAC;gBACxB,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,IAAI,EAAE,EAAE;oBACnC,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE,IAAI,CAAC,CAAC;oBACjC,IAAI,CAAC,YAAY,EAAE,CAAC;wBAClB,YAAY,GAAG,UAAU,CAAC,GAAG,EAAE;4BAC7B,IAAI,CAAC,MAAM,EAAE,CAAC;4BACd,IAAI,CAAC,KAAK,EAAE,CAAC;4BACb,YAAY,GAAG,IAAI,CAAC;wBACtB,CAAC,EAAE,KAAK,CAAC,CAAC;oBACZ,CAAC;gBACH,CAAC,CAAC,CAAC;gBACH,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,IAAI,EAAE,EAAE;oBACnC,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE,IAAI,CAAC,CAAC;oBACjC,IAAI,CAAC,KAAK,CAAC,wBAAwB,IAAI,EAAE,CAAC,CAAC;gBAC7C,CAAC,CAAC,CAAC;YACL,CAAC;YAAC,OAAO,CAAC,EAAE,CAAC;gBACX,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;gBACd,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,wBAAwB,QAAQ,CAAC,SAAS,IAAI,QAAQ,CAAC,IAAI,KAAK,QAAQ,CAAC,QAAQ,OAAO,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC;YACvH,CAAC;QACH,CAAC;IACH,CAAC;IAED,MAAM;QACJ,KAAK,MAAM,QAAQ,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC;YACxC,IAAI,QAAQ,CAAC,MAAM,EAAE,CAAC;gBACpB,IAAI,CAAC;oBACH,QAAQ,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;oBAC1B,QAAQ,CAAC,MAAM,CAAC,kBAAkB,EAAE,CAAC;oBACrC,IAAI,CAAC,KAAK,CAAC,gBAAgB,QAAQ,CAAC,SAAS,IAAI,QAAQ,CAAC,IAAI,KAAK,QAAQ,CAAC,QAAQ,iBAAiB,CAAC,CAAC;gBACzG,CAAC;gBAAC,OAAO,CAAC,EAAE,CAAC;gBAEb,CAAC;YACH,CAAC;QACH,CAAC;IACH,CAAC;IAED,aAAa;QAEX,KAAK,MAAM,OAAO,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;YACpC,MAAM,iBAAiB,GAAG,OAAO,CAAC,sBAAsB,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC;YAE7F,IAAI,iBAAiB,CAAC,MAAM,EAAE,CAAC;gBAE7B,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,KAAK,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC;oBAC1E,MAAM,WAAW,GAAG,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,OAAO,CAAC,QAAQ,CAAkB,CAAC;oBACzE,WAAW,CAAC,iBAAiB,GAAG,EAAE,CAAC;oBACnC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;gBACrC,CAAC;gBAED,MAAM,QAAQ,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,KAAK,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;gBAEtF,KAAK,MAAM,gBAAgB,IAAI,iBAAiB,EAAE,CAAC;oBACjD,IAAI,CAAC,QAAQ,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,KAAK,OAAO,CAAC,GAAG,IAAI,CAAC,CAAC,GAAG,KAAK,gBAAgB,CAAC,GAAG,CAAC,EAAE,CAAC;wBACnG,QAAQ,CAAC,iBAAiB,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,OAAO,CAAC,GAAG,EAAE,GAAG,EAAE,gBAAgB,CAAC,GAAG,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC;oBAC7F,CAAC;gBACH,CAAC;YACH,CAAC;QACH,CAAC;IACH,CAAC;CACF;AAlID,gCAkIC"}
1
+ {"version":3,"file":"monitor.js","sourceRoot":"","sources":["../src/monitor.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@homebridge/hap-client",
3
- "version": "2.0.5-beta.9",
3
+ "version": "2.0.5",
4
4
  "description": "A client for HAP-NodeJS.",
5
5
  "main": "./dist/index.js",
6
6
  "scripts": {
@@ -23,8 +23,7 @@
23
23
  "api"
24
24
  ],
25
25
  "author": {
26
- "name": "oznu",
27
- "email": "dev@oz.nu"
26
+ "name": "Homebridge"
28
27
  },
29
28
  "contributors": [
30
29
  {
@@ -38,14 +37,14 @@
38
37
  },
39
38
  "homepage": "https://github.com/homebridge/hap-client/blob/latest#readme",
40
39
  "dependencies": {
41
- "axios": "1.7.7",
40
+ "axios": "1.7.9",
42
41
  "bonjour-service": "1.3.0",
43
42
  "decamelize": "5.0.1",
44
43
  "inflection": "3.0.0",
45
44
  "source-map-support": "0.5.21"
46
45
  },
47
46
  "devDependencies": {
48
- "@types/node": "^22.9.1",
47
+ "@types/node": "^22.10.1",
49
48
  "@types/source-map-support": "^0.5.10",
50
49
  "@typescript-eslint/eslint-plugin": "^8.15.0",
51
50
  "@typescript-eslint/parser": "^8.15.0",
@@ -55,4 +54,4 @@
55
54
  "ts-node": "^10.9.2",
56
55
  "typescript": "^5.6.3"
57
56
  }
58
- }
57
+ }
@@ -1,85 +0,0 @@
1
- #!/bin/env node
2
-
3
- /**
4
- * This scripts queries the npm registry to pull out the latest version for a given tag.
5
- */
6
-
7
- const assert = require('node:assert')
8
- const child_process = require('node:child_process')
9
- const fs = require('node:fs')
10
- const process = require('node:process')
11
-
12
- const semver = require('semver')
13
-
14
- const BRANCH_VERSION_PATTERN = /^([A-Z]+)-(\d+\.\d+\.\d+)$/i
15
-
16
- // Load the contents of the package.json file
17
- const packageJSON = JSON.parse(fs.readFileSync('package.json', 'utf8'))
18
-
19
- const refArgument = process.argv[2]
20
- const tagArgument = process.argv[3] || 'latest'
21
-
22
- if (refArgument == null) {
23
- console.error('ref argument is missing')
24
- console.error('Usage: npm-version-script.js <ref> [tag]')
25
- process.exit(1)
26
- }
27
-
28
- /**
29
- * Queries the NPM registry for the latest version for the provided tag.
30
- * @param tag The tag to query for.
31
- * @returns {string} Returns the version.
32
- */
33
- function getTagVersionFromNpm(tag) {
34
- try {
35
- return child_process.execSync(`npm info ${packageJSON.name} version --tag="${tag}"`).toString('utf8').trim()
36
- } catch (e) {
37
- console.error(`Failed to query the npm registry for the latest version for tag: ${tag}`)
38
- // throw e;
39
- return '0.0.0'
40
- }
41
- }
42
-
43
- function desiredTargetVersion(ref) {
44
- // ref is a GitHub action ref string
45
- if (ref.startsWith('refs/pull/')) {
46
- throw new Error('The version script was executed inside a PR!')
47
- }
48
-
49
- assert(ref.startsWith('refs/heads/'))
50
- const branchName = ref.slice('refs/heads/'.length)
51
-
52
- const results = branchName.match(BRANCH_VERSION_PATTERN)
53
- if (results != null) {
54
- if (results[1] !== tagArgument) {
55
- console.warn(`The base branch name (${results[1]}) differs from the tag name ${tagArgument}`)
56
- }
57
-
58
- return results[2]
59
- }
60
-
61
- throw new Error(`Malformed branch name for ref: ${ref}. Can't derive the base version. Use a branch name like: beta-x.x.x or alpha-x.x.x`)
62
- }
63
-
64
- // derive the base version from the branch ref
65
- const baseVersion = desiredTargetVersion(refArgument)
66
-
67
- // query the npm registry for the latest version of the provided tag name
68
- const latestReleasedVersion = getTagVersionFromNpm(tagArgument) // e.g. 0.7.0-beta.12
69
- const latestReleaseBase = semver.inc(latestReleasedVersion, 'patch') // will produce 0.7.0 (removing the preid, needed for the equality check below)
70
-
71
- let publishTag
72
- if (semver.eq(baseVersion, latestReleaseBase)) { // check if we are releasing another version for the latest beta or alpha
73
- publishTag = latestReleasedVersion // set the current latest beta or alpha to be incremented
74
- } else {
75
- publishTag = baseVersion // start of with a new beta or alpha version
76
- }
77
-
78
- // save the package.json
79
- packageJSON.version = publishTag
80
- fs.writeFileSync('package.json', JSON.stringify(packageJSON, null, 2))
81
-
82
- // perform the same change to the package-lock.json
83
- const packageLockJSON = JSON.parse(fs.readFileSync('package-lock.json', 'utf8'))
84
- packageLockJSON.version = publishTag
85
- fs.writeFileSync('package-lock.json', JSON.stringify(packageLockJSON, null, 2))