homebridge-config-ui-x 5.9.1-beta.8 → 5.10.0

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 (169) hide show
  1. package/CHANGELOG.md +14 -6
  2. package/dist/app.module.js +2 -0
  3. package/dist/app.module.js.map +1 -1
  4. package/dist/core/auth/auth.controller.d.ts +2 -5
  5. package/dist/core/config/config.interfaces.d.ts +6 -13
  6. package/dist/core/config/config.service.d.ts +2 -7
  7. package/dist/core/config/config.service.js +2 -9
  8. package/dist/core/config/config.service.js.map +1 -1
  9. package/dist/core/config/config.startup.js +17 -48
  10. package/dist/core/config/config.startup.js.map +1 -1
  11. package/dist/core/feature-flags/feature-flags.registry.js +0 -5
  12. package/dist/core/feature-flags/feature-flags.registry.js.map +1 -1
  13. package/dist/core/homebridge-ipc/homebridge-ipc.service.js +0 -1
  14. package/dist/core/homebridge-ipc/homebridge-ipc.service.js.map +1 -1
  15. package/dist/core/scheduler/scheduler.module.js +8 -0
  16. package/dist/core/scheduler/scheduler.module.js.map +1 -1
  17. package/dist/core/scheduler/scheduler.service.d.ts +12 -1
  18. package/dist/core/scheduler/scheduler.service.js +95 -2
  19. package/dist/core/scheduler/scheduler.service.js.map +1 -1
  20. package/dist/core/spa/spa.filter.d.ts +0 -3
  21. package/dist/core/spa/spa.filter.js +2 -22
  22. package/dist/core/spa/spa.filter.js.map +1 -1
  23. package/dist/globalDefaults.js +0 -3
  24. package/dist/globalDefaults.js.map +1 -1
  25. package/dist/main.js +6 -19
  26. package/dist/main.js.map +1 -1
  27. package/dist/modules/accessories/accessories.controller.d.ts +1 -1
  28. package/dist/modules/accessories/accessories.module.js +0 -2
  29. package/dist/modules/accessories/accessories.module.js.map +1 -1
  30. package/dist/modules/accessories/accessories.service.d.ts +3 -21
  31. package/dist/modules/accessories/accessories.service.js +17 -280
  32. package/dist/modules/accessories/accessories.service.js.map +1 -1
  33. package/dist/modules/child-bridges/child-bridges.interfaces.d.ts +0 -9
  34. package/dist/modules/config-editor/config-editor.controller.d.ts +5 -7
  35. package/dist/modules/config-editor/config-editor.controller.js +61 -59
  36. package/dist/modules/config-editor/config-editor.controller.js.map +1 -1
  37. package/dist/modules/config-editor/config-editor.dto.d.ts +6 -0
  38. package/dist/modules/config-editor/config-editor.dto.js +40 -0
  39. package/dist/modules/config-editor/config-editor.dto.js.map +1 -0
  40. package/dist/modules/config-editor/config-editor.service.d.ts +5 -7
  41. package/dist/modules/config-editor/config-editor.service.js +54 -49
  42. package/dist/modules/config-editor/config-editor.service.js.map +1 -1
  43. package/dist/modules/custom-plugins/plugins-settings-ui/plugins-settings-ui.service.js +1 -1
  44. package/dist/modules/custom-plugins/plugins-settings-ui/plugins-settings-ui.service.js.map +1 -1
  45. package/dist/modules/plugins/plugins.controller.d.ts +5 -0
  46. package/dist/modules/plugins/plugins.controller.js +51 -2
  47. package/dist/modules/plugins/plugins.controller.js.map +1 -1
  48. package/dist/modules/plugins/plugins.module.js +4 -0
  49. package/dist/modules/plugins/plugins.module.js.map +1 -1
  50. package/dist/modules/plugins/plugins.service.d.ts +13 -2
  51. package/dist/modules/plugins/plugins.service.js +136 -17
  52. package/dist/modules/plugins/plugins.service.js.map +1 -1
  53. package/dist/modules/server/server.controller.d.ts +0 -50
  54. package/dist/modules/server/server.controller.js +2 -201
  55. package/dist/modules/server/server.controller.js.map +1 -1
  56. package/dist/modules/server/server.service.d.ts +0 -48
  57. package/dist/modules/server/server.service.js +31 -503
  58. package/dist/modules/server/server.service.js.map +1 -1
  59. package/dist/modules/status/status.gateway.d.ts +0 -2
  60. package/dist/modules/status/status.interfaces.d.ts +0 -11
  61. package/dist/modules/status/status.service.d.ts +1 -4
  62. package/dist/modules/status/status.service.js +2 -21
  63. package/dist/modules/status/status.service.js.map +1 -1
  64. package/package.json +15 -14
  65. package/public/assets/plugin-ui-utils/ui.js +0 -3
  66. package/public/assets/plugin-ui-utils/ui.js.map +1 -1
  67. package/public/{chunk-HZFYCQBZ.js → chunk-2ATI5RL3.js} +1 -1
  68. package/public/{chunk-HROBMVVC.js → chunk-3TGMHJM3.js} +1 -1
  69. package/public/{chunk-WFVVY4KI.js → chunk-4TYE7FOW.js} +1 -1
  70. package/public/{chunk-DWAKEAKY.js → chunk-5DT3N4NO.js} +1 -1
  71. package/public/{chunk-SEGYMPW4.js → chunk-5FAEMT7K.js} +1 -1
  72. package/public/chunk-6FMRO7HY.js +19 -0
  73. package/public/chunk-6WCXE37R.js +4 -0
  74. package/public/{chunk-EAENKK4C.js → chunk-726EPARV.js} +1 -1
  75. package/public/{chunk-2ZJDZ6SD.js → chunk-ABJURGQA.js} +1 -1
  76. package/public/{chunk-HIP2JJ4B.js → chunk-ALWUQZSW.js} +1 -1
  77. package/public/chunk-ASYRF2UP.js +1 -0
  78. package/public/{chunk-5KJA3LTW.js → chunk-AY5APEAK.js} +1 -1
  79. package/public/{chunk-ETDI4WB6.js → chunk-B57RMJ4J.js} +1 -1
  80. package/public/chunk-BDFSTR4R.js +1 -0
  81. package/public/{chunk-4VJCJCXJ.js → chunk-CKGQSHVZ.js} +1 -1
  82. package/public/{chunk-VINUD5O5.js → chunk-DMDEAXJH.js} +1 -1
  83. package/public/{chunk-WANJM2H4.js → chunk-DN72EAQ5.js} +1 -1
  84. package/public/{chunk-ARZPXRWQ.js → chunk-E3OCSFY5.js} +1 -1
  85. package/public/chunk-ERT4USI6.js +1 -0
  86. package/public/chunk-EZCJGSOY.js +5 -0
  87. package/public/{chunk-QIBWBWTA.js → chunk-FKIJIVEG.js} +1 -1
  88. package/public/{chunk-TCWES5JH.js → chunk-G4HQSJ23.js} +1 -1
  89. package/public/{chunk-R6KWC4OQ.js → chunk-GOWJQFU3.js} +1 -1
  90. package/public/{chunk-RGE5F7TI.js → chunk-H5WFRSS4.js} +1 -1
  91. package/public/chunk-HPLLPVW3.js +1 -0
  92. package/public/chunk-IHZHS7ZW.js +40 -0
  93. package/public/{chunk-ULCLDDZP.js → chunk-IJB6PBR5.js} +1 -1
  94. package/public/{chunk-S2KCQV5B.js → chunk-INEQMM2I.js} +1 -1
  95. package/public/chunk-IR2HMKD2.js +1 -0
  96. package/public/chunk-J3RGEHLW.js +1 -0
  97. package/public/chunk-JEESCTKG.js +16 -0
  98. package/public/{chunk-JXJXX7ID.js → chunk-LFWS6OUH.js} +1 -1
  99. package/public/chunk-LKJ4JJLK.js +1 -0
  100. package/public/{chunk-BEI5ZJFO.js → chunk-MGSFT332.js} +1 -1
  101. package/public/chunk-MJHLBHHD.js +1 -0
  102. package/public/{chunk-RUISJUO6.js → chunk-MK4QUOAX.js} +1 -1
  103. package/public/{chunk-BIKUQ7HD.js → chunk-N7EXU2NV.js} +1 -1
  104. package/public/{chunk-VLJKE3FE.js → chunk-OKTWUEQP.js} +1 -1
  105. package/public/{chunk-IJNJ3FHH.js → chunk-OQU6YMM6.js} +1 -1
  106. package/public/{chunk-6CALBO44.js → chunk-PBN5VTOU.js} +1 -1
  107. package/public/{chunk-GY4XWIFC.js → chunk-QDT36PQN.js} +1 -1
  108. package/public/{chunk-I24Z7SXB.js → chunk-QH66HEIY.js} +1 -1
  109. package/public/{chunk-6I4QMSKL.js → chunk-QONMKSXQ.js} +1 -1
  110. package/public/{chunk-MNT5ZGV3.js → chunk-RFQQSATI.js} +1 -1
  111. package/public/{chunk-GNXYAW2L.js → chunk-RUWA3EFR.js} +1 -1
  112. package/public/{chunk-VNH5MZV2.js → chunk-RV34PNIK.js} +1 -1
  113. package/public/{chunk-E5O5DRJC.js → chunk-RWL56OKC.js} +1 -1
  114. package/public/chunk-S2OEXAQE.js +1 -0
  115. package/public/{chunk-W4KA53M7.js → chunk-SAWH3ANN.js} +1 -1
  116. package/public/{chunk-DNZHARDF.js → chunk-SBHNM2QO.js} +1 -1
  117. package/public/{chunk-HRG6LQHN.js → chunk-SDSUBQRV.js} +1 -1
  118. package/public/{chunk-4D5P6BHP.js → chunk-SQWHIT2O.js} +1 -1
  119. package/public/{chunk-QETY3MXU.js → chunk-STKYISTF.js} +1 -1
  120. package/public/{chunk-H22EEHWT.js → chunk-TDRGDK3T.js} +1 -1
  121. package/public/{chunk-3LCQQJW4.js → chunk-TNZDCJJB.js} +1 -1
  122. package/public/chunk-TTFY54LY.js +1 -0
  123. package/public/chunk-TXPIYSRT.js +50 -0
  124. package/public/{chunk-2JNDNW24.js → chunk-UD5DX3PK.js} +1 -1
  125. package/public/{chunk-GQNXAXF5.js → chunk-UD7BEYXY.js} +1 -1
  126. package/public/{chunk-DO7GP4DT.js → chunk-UX77G732.js} +1 -1
  127. package/public/{chunk-RXMYAQOI.js → chunk-VLO3EC7G.js} +1 -1
  128. package/public/{chunk-MCXMRIGS.js → chunk-WGI4RZDV.js} +1 -1
  129. package/public/{chunk-YFMEPI62.js → chunk-WZOQNFMH.js} +1 -1
  130. package/public/chunk-X4UYQV4U.js +1 -0
  131. package/public/chunk-XDYNVDC3.js +1 -0
  132. package/public/{chunk-G5BHTUT2.js → chunk-XS5676NQ.js} +1 -1
  133. package/public/chunk-YHWOJFWU.js +1 -0
  134. package/public/{chunk-7K67C3PU.js → chunk-Z6SZHO36.js} +1 -1
  135. package/public/index.html +2 -2
  136. package/public/{main-6PZDJ4RZ.js → main-BIEDFTMT.js} +1 -1
  137. package/public/{styles-WNHDEKE4.css → styles-7EFV5QBG.css} +1 -1
  138. package/scripts/extract-plugin-alias.js +2 -53
  139. package/dist/core/spa/spa-html.service.d.ts +0 -5
  140. package/dist/core/spa/spa-html.service.js +0 -32
  141. package/dist/core/spa/spa-html.service.js.map +0 -1
  142. package/dist/core/ssl/ssl-cert-generator.service.d.ts +0 -15
  143. package/dist/core/ssl/ssl-cert-generator.service.js +0 -125
  144. package/dist/core/ssl/ssl-cert-generator.service.js.map +0 -1
  145. package/dist/modules/accessories/accessories.interfaces.d.ts +0 -94
  146. package/dist/modules/accessories/accessories.interfaces.js +0 -2
  147. package/dist/modules/accessories/accessories.interfaces.js.map +0 -1
  148. package/docs/ssl-upload-pr.md +0 -103
  149. package/public/assets/matter.svg +0 -8
  150. package/public/chunk-23KUWEO4.js +0 -1
  151. package/public/chunk-4TGFZOBX.js +0 -1
  152. package/public/chunk-4V523ITW.js +0 -1
  153. package/public/chunk-5ODRL5LA.js +0 -1
  154. package/public/chunk-CJHKCP34.js +0 -1
  155. package/public/chunk-CRWNCWLB.js +0 -4
  156. package/public/chunk-CWOQYOG4.js +0 -50
  157. package/public/chunk-DKMXUJA5.js +0 -1
  158. package/public/chunk-FW3AEHYC.js +0 -1
  159. package/public/chunk-IMMKC4PU.js +0 -52
  160. package/public/chunk-MSJEG33P.js +0 -1
  161. package/public/chunk-Q6MUJSJP.js +0 -1
  162. package/public/chunk-RERUZJD4.js +0 -5
  163. package/public/chunk-RLXU3LMU.js +0 -1
  164. package/public/chunk-SEF2HXUO.js +0 -16
  165. package/public/chunk-T4J24RHT.js +0 -1
  166. package/public/chunk-V3CWCNXE.js +0 -19
  167. package/public/chunk-VP7UJDZQ.js +0 -1
  168. package/public/chunk-XO27BOPF.js +0 -1
  169. package/public/media/matter-P563JGDL.svg +0 -8
@@ -1 +1 @@
1
- {"version":3,"file":"scheduler.service.js","sourceRoot":"","sources":["../../../src/core/scheduler/scheduler.service.ts"],"names":[],"mappings":";;;;;;AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAA;AAC3C,OAAO,EAAE,SAAS,EAAE,cAAc,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,eAAe,CAAA;AAG9E,IAAM,gBAAgB,GAAtB,MAAM,gBAAgB;IACX,WAAW,GAAG,WAAW,CAAA;IACzB,aAAa,GAAG,aAAa,CAAA;IAC7B,SAAS,GAAG,SAAS,CAAA;IACrB,cAAc,GAAG,cAAc,CAAA;CAChD,CAAA;AALY,gBAAgB;IAD5B,UAAU,EAAE;GACA,gBAAgB,CAK5B"}
1
+ {"version":3,"file":"scheduler.service.js","sourceRoot":"","sources":["../../../src/core/scheduler/scheduler.service.ts"],"names":[],"mappings":"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"}
@@ -1,7 +1,4 @@
1
1
  import type { ArgumentsHost, ExceptionFilter, HttpException } from '@nestjs/common';
2
- import '../../globalDefaults.js';
3
2
  export declare class SpaFilter implements ExceptionFilter {
4
- private readonly webroot;
5
- constructor();
6
3
  catch(_exception: HttpException, host: ArgumentsHost): any;
7
4
  }
@@ -4,35 +4,16 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key,
4
4
  else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
5
5
  return c > 3 && r && Object.defineProperty(target, key, r), r;
6
6
  };
7
- var __metadata = (this && this.__metadata) || function (k, v) {
8
- if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
9
- };
10
7
  import { readFileSync } from 'node:fs';
11
8
  import { resolve } from 'node:path';
12
9
  import process from 'node:process';
13
10
  import { Catch, NotFoundException } from '@nestjs/common';
14
- import '../../globalDefaults.js';
15
11
  let SpaFilter = class SpaFilter {
16
- webroot;
17
- constructor() {
18
- const envWebroot = process.env.UIX_ORIGINAL_WEBROOT;
19
- this.webroot = (envWebroot && envWebroot !== globalThis.webroot.errorCode)
20
- ? envWebroot
21
- : '';
22
- }
23
12
  catch(_exception, host) {
24
13
  const ctx = host.switchToHttp();
25
14
  const req = ctx.getRequest();
26
15
  const res = ctx.getResponse();
27
- const urlWithoutWebroot = this.webroot ? req.url.replace(new RegExp(`^${this.webroot}`), '') : req.url;
28
- if (urlWithoutWebroot.startsWith('/api/')
29
- || urlWithoutWebroot.startsWith('/socket.io')
30
- || urlWithoutWebroot.startsWith('/assets')
31
- || urlWithoutWebroot.startsWith('/swagger')
32
- || urlWithoutWebroot.match(/\.(js|css|png|jpg|jpeg|gif|svg|ico|woff|woff2|ttf|eot|webmanifest)$/)) {
33
- return res.code(404).send('Not Found');
34
- }
35
- if (this.webroot && !req.url.startsWith(this.webroot)) {
16
+ if (req.url.startsWith('/api/') || req.url.startsWith('/socket.io') || req.url.startsWith('/assets')) {
36
17
  return res.code(404).send('Not Found');
37
18
  }
38
19
  const file = readFileSync(resolve(process.env.UIX_BASE_PATH, 'public/index.html'), 'utf-8');
@@ -44,8 +25,7 @@ let SpaFilter = class SpaFilter {
44
25
  }
45
26
  };
46
27
  SpaFilter = __decorate([
47
- Catch(NotFoundException),
48
- __metadata("design:paramtypes", [])
28
+ Catch(NotFoundException)
49
29
  ], SpaFilter);
50
30
  export { SpaFilter };
51
31
  //# sourceMappingURL=spa.filter.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"spa.filter.js","sourceRoot":"","sources":["../../../src/core/spa/spa.filter.ts"],"names":[],"mappings":";;;;;;;;;AAEA,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAA;AACtC,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AACnC,OAAO,OAAO,MAAM,cAAc,CAAA;AAElC,OAAO,EAAE,KAAK,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAA;AAEzD,OAAO,yBAAyB,CAAA;AAGzB,IAAM,SAAS,GAAf,MAAM,SAAS;IACH,OAAO,CAAQ;IAEhC;QACE,MAAM,UAAU,GAAG,OAAO,CAAC,GAAG,CAAC,oBAAoB,CAAA;QACnD,IAAI,CAAC,OAAO,GAAG,CAAC,UAAU,IAAI,UAAU,KAAK,UAAU,CAAC,OAAO,CAAC,SAAS,CAAC;YACxE,CAAC,CAAC,UAAU;YACZ,CAAC,CAAC,EAAE,CAAA;IACR,CAAC;IAED,KAAK,CAAC,UAAyB,EAAE,IAAmB;QAClD,MAAM,GAAG,GAAG,IAAI,CAAC,YAAY,EAAE,CAAA;QAC/B,MAAM,GAAG,GAAG,GAAG,CAAC,UAAU,EAAE,CAAA;QAC5B,MAAM,GAAG,GAAG,GAAG,CAAC,WAAW,EAAE,CAAA;QAG7B,MAAM,iBAAiB,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,MAAM,CAAC,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAA;QAEtG,IAAI,iBAAiB,CAAC,UAAU,CAAC,OAAO,CAAC;eACpC,iBAAiB,CAAC,UAAU,CAAC,YAAY,CAAC;eAC1C,iBAAiB,CAAC,UAAU,CAAC,SAAS,CAAC;eACvC,iBAAiB,CAAC,UAAU,CAAC,UAAU,CAAC;eACxC,iBAAiB,CAAC,KAAK,CAAC,qEAAqE,CAAC,EAAE,CAAC;YACpG,OAAO,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,CAAA;QACxC,CAAC;QAGD,IAAI,IAAI,CAAC,OAAO,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;YACtD,OAAO,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,CAAA;QACxC,CAAC;QAED,MAAM,IAAI,GAAG,YAAY,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,aAAa,EAAE,mBAAmB,CAAC,EAAE,OAAO,CAAC,CAAA;QAC3F,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC,CAAA;QACrB,GAAG,CAAC,MAAM,CAAC,eAAe,EAAE,qCAAqC,CAAC,CAAA;QAClE,GAAG,CAAC,MAAM,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAA;QAChC,GAAG,CAAC,MAAM,CAAC,SAAS,EAAE,GAAG,CAAC,CAAA;QAC1B,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;IAChB,CAAC;CACF,CAAA;AAtCY,SAAS;IADrB,KAAK,CAAC,iBAAiB,CAAC;;GACZ,SAAS,CAsCrB"}
1
+ {"version":3,"file":"spa.filter.js","sourceRoot":"","sources":["../../../src/core/spa/spa.filter.ts"],"names":[],"mappings":";;;;;;AAEA,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAA;AACtC,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AACnC,OAAO,OAAO,MAAM,cAAc,CAAA;AAElC,OAAO,EAAE,KAAK,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAA;AAGlD,IAAM,SAAS,GAAf,MAAM,SAAS;IACpB,KAAK,CAAC,UAAyB,EAAE,IAAmB;QAClD,MAAM,GAAG,GAAG,IAAI,CAAC,YAAY,EAAE,CAAA;QAC/B,MAAM,GAAG,GAAG,GAAG,CAAC,UAAU,EAAE,CAAA;QAC5B,MAAM,GAAG,GAAG,GAAG,CAAC,WAAW,EAAE,CAAA;QAE7B,IAAI,GAAG,CAAC,GAAG,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,GAAG,CAAC,GAAG,CAAC,UAAU,CAAC,YAAY,CAAC,IAAI,GAAG,CAAC,GAAG,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;YACrG,OAAO,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,CAAA;QACxC,CAAC;QAED,MAAM,IAAI,GAAG,YAAY,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,aAAa,EAAE,mBAAmB,CAAC,EAAE,OAAO,CAAC,CAAA;QAC3F,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC,CAAA;QACrB,GAAG,CAAC,MAAM,CAAC,eAAe,EAAE,qCAAqC,CAAC,CAAA;QAClE,GAAG,CAAC,MAAM,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAA;QAChC,GAAG,CAAC,MAAM,CAAC,SAAS,EAAE,GAAG,CAAC,CAAA;QAC1B,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;IAChB,CAAC;CACF,CAAA;AAjBY,SAAS;IADrB,KAAK,CAAC,iBAAiB,CAAC;GACZ,SAAS,CAiBrB"}
@@ -7,8 +7,5 @@ globalThis.backup = {
7
7
  globalThis.terminal = {
8
8
  bufferSize: 50000,
9
9
  };
10
- globalThis.webroot = {
11
- errorCode: 'EACCES',
12
- };
13
10
  export {};
14
11
  //# sourceMappingURL=globalDefaults.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"globalDefaults.js","sourceRoot":"","sources":["../src/globalDefaults.ts"],"names":[],"mappings":"AACA,UAAU,CAAC,MAAM,GAAG;IAElB,aAAa,EAAE,EAAE,GAAG,IAAI,GAAG,IAAI;IAC/B,iBAAiB,EAAE,MAAM;IAGzB,iBAAiB,EAAE,EAAE,GAAG,IAAI,GAAG,IAAI;IACnC,qBAAqB,EAAE,MAAM;CAC9B,CAAA;AAED,UAAU,CAAC,QAAQ,GAAG;IAEpB,UAAU,EAAE,KAAK;CAClB,CAAA;AAED,UAAU,CAAC,OAAO,GAAG;IAEnB,SAAS,EAAE,QAAQ;CACpB,CAAA"}
1
+ {"version":3,"file":"globalDefaults.js","sourceRoot":"","sources":["../src/globalDefaults.ts"],"names":[],"mappings":"AACA,UAAU,CAAC,MAAM,GAAG;IAElB,aAAa,EAAE,EAAE,GAAG,IAAI,GAAG,IAAI;IAC/B,iBAAiB,EAAE,MAAM;IAGzB,iBAAiB,EAAE,EAAE,GAAG,IAAI,GAAG,IAAI;IACnC,qBAAqB,EAAE,MAAM;CAC9B,CAAA;AAED,UAAU,CAAC,QAAQ,GAAG;IAEpB,UAAU,EAAE,KAAK;CAClB,CAAA"}
package/dist/main.js CHANGED
@@ -12,7 +12,6 @@ import { AppModule } from './app.module.js';
12
12
  import { ConfigService } from './core/config/config.service.js';
13
13
  import { getStartupConfig } from './core/config/config.startup.js';
14
14
  import { Logger } from './core/logger/logger.service.js';
15
- import { SpaHtmlService } from './core/spa/spa-html.service.js';
16
15
  import { SpaFilter } from './core/spa/spa.filter.js';
17
16
  import './env-setup.js';
18
17
  import 'reflect-metadata';
@@ -62,23 +61,12 @@ async function bootstrap() {
62
61
  },
63
62
  });
64
63
  const app = await NestFactory.create(AppModule, fAdapter, {
65
- logger: startupConfig.debug ? new Logger() : false,
64
+ logger: (startupConfig.debug || process.env.UIX_DEVELOPMENT === '1') ? new Logger() : false,
65
+ httpsOptions: startupConfig.httpsOptions,
66
66
  });
67
67
  const configService = app.get(ConfigService);
68
68
  const logger = app.get(Logger);
69
- let realWebroot = startupConfig.webroot || '';
70
- try {
71
- await SpaHtmlService.updateIndexHtml(startupConfig.webroot);
72
- process.env.UIX_ORIGINAL_WEBROOT = startupConfig.webroot;
73
- configService.setOriginalWebroot(startupConfig.webroot);
74
- }
75
- catch (error) {
76
- logger.warn(`Could not update index.html with webroot ${startupConfig.webroot}: ${error.message}`);
77
- realWebroot = '';
78
- process.env.UIX_ORIGINAL_WEBROOT = globalThis.webroot.errorCode;
79
- configService.setOriginalWebroot(globalThis.webroot.errorCode);
80
- }
81
- app.getHttpAdapter().get(realWebroot || '/', async (req, res) => {
69
+ app.getHttpAdapter().get('/', async (req, res) => {
82
70
  res.type('text/html');
83
71
  res.header('Cache-Control', 'no-cache, no-store, must-revalidate');
84
72
  res.header('Pragma', 'no-cache');
@@ -90,9 +78,8 @@ async function bootstrap() {
90
78
  setHeaders(res) {
91
79
  res.setHeader('Cache-Control', 'public,max-age=31536000,immutable');
92
80
  },
93
- ...realWebroot ? { prefix: realWebroot } : {},
94
81
  });
95
- app.setGlobalPrefix(`${realWebroot || ''}/api`);
82
+ app.setGlobalPrefix('/api');
96
83
  app.enableCors({
97
84
  origin: ['http://localhost:8080', 'http://localhost:4200'],
98
85
  methods: ['GET', 'POST', 'PUT', 'PATCH', 'DELETE', 'OPTIONS'],
@@ -115,7 +102,7 @@ async function bootstrap() {
115
102
  })
116
103
  .build();
117
104
  const document = SwaggerModule.createDocument(app, options);
118
- SwaggerModule.setup(`${realWebroot}/swagger`.replace(/^\//, ''), app, document);
105
+ SwaggerModule.setup('swagger', app, document);
119
106
  app.useGlobalFilters(new SpaFilter());
120
107
  logger.warn(`Homebridge UI v${configService.package.version} is listening on ${startupConfig.host} port ${configService.ui.port}.`);
121
108
  await app.listen(configService.ui.port, startupConfig.host);
@@ -132,7 +119,7 @@ async function bootstrap() {
132
119
  port: configService.ui.port,
133
120
  host: startupConfig.host === '0.0.0.0' || startupConfig.host === '::' ? undefined : startupConfig.host,
134
121
  txt: {
135
- path: realWebroot || '/',
122
+ path: '/',
136
123
  version: configService.package.version,
137
124
  https: startupConfig.httpsOptions ? 'true' : 'false',
138
125
  },
package/dist/main.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"main.js","sourceRoot":"","sources":["../src/main.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"main.js","sourceRoot":"","sources":["../src/main.ts"],"names":[],"mappings":"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"}
@@ -5,6 +5,6 @@ export declare class AccessoriesController {
5
5
  constructor(accessoriesService: AccessoriesService);
6
6
  getAccessories(): Promise<import("@homebridge/hap-client").ServiceType[]>;
7
7
  getAccessoryLayout(req: any): Promise<any>;
8
- getAccessory(uniqueId: string): Promise<import("./accessories.interfaces.js").MatterService | import("@homebridge/hap-client").ServiceType>;
8
+ getAccessory(uniqueId: string): Promise<import("@homebridge/hap-client").ServiceType>;
9
9
  setAccessoryCharacteristic(uniqueId: any, body: AccessorySetCharacteristicDto): Promise<import("@homebridge/hap-client").ServiceType>;
10
10
  }
@@ -7,7 +7,6 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key,
7
7
  import { Module } from '@nestjs/common';
8
8
  import { PassportModule } from '@nestjs/passport';
9
9
  import { ConfigModule } from '../../core/config/config.module.js';
10
- import { HomebridgeIpcModule } from '../../core/homebridge-ipc/homebridge-ipc.module.js';
11
10
  import { LoggerModule } from '../../core/logger/logger.module.js';
12
11
  import { AccessoriesController } from './accessories.controller.js';
13
12
  import { AccessoriesGateway } from './accessories.gateway.js';
@@ -20,7 +19,6 @@ AccessoriesModule = __decorate([
20
19
  PassportModule.register({ defaultStrategy: 'jwt' }),
21
20
  ConfigModule,
22
21
  LoggerModule,
23
- HomebridgeIpcModule,
24
22
  ],
25
23
  providers: [
26
24
  AccessoriesService,
@@ -1 +1 @@
1
- {"version":3,"file":"accessories.module.js","sourceRoot":"","sources":["../../../src/modules/accessories/accessories.module.ts"],"names":[],"mappings":";;;;;;AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAA;AACvC,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAA;AAEjD,OAAO,EAAE,YAAY,EAAE,MAAM,oCAAoC,CAAA;AACjE,OAAO,EAAE,mBAAmB,EAAE,MAAM,oDAAoD,CAAA;AACxF,OAAO,EAAE,YAAY,EAAE,MAAM,oCAAoC,CAAA;AACjE,OAAO,EAAE,qBAAqB,EAAE,MAAM,6BAA6B,CAAA;AACnE,OAAO,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAA;AAC7D,OAAO,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAA;AAoBtD,IAAM,iBAAiB,GAAvB,MAAM,iBAAiB;CAAG,CAAA;AAApB,iBAAiB;IAlB7B,MAAM,CAAC;QACN,OAAO,EAAE;YACP,cAAc,CAAC,QAAQ,CAAC,EAAE,eAAe,EAAE,KAAK,EAAE,CAAC;YACnD,YAAY;YACZ,YAAY;YACZ,mBAAmB;SACpB;QACD,SAAS,EAAE;YACT,kBAAkB;YAClB,kBAAkB;SACnB;QACD,OAAO,EAAE;YACP,kBAAkB;SACnB;QACD,WAAW,EAAE;YACX,qBAAqB;SACtB;KACF,CAAC;GACW,iBAAiB,CAAG"}
1
+ {"version":3,"file":"accessories.module.js","sourceRoot":"","sources":["../../../src/modules/accessories/accessories.module.ts"],"names":[],"mappings":";;;;;;AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAA;AACvC,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAA;AAEjD,OAAO,EAAE,YAAY,EAAE,MAAM,oCAAoC,CAAA;AACjE,OAAO,EAAE,YAAY,EAAE,MAAM,oCAAoC,CAAA;AACjE,OAAO,EAAE,qBAAqB,EAAE,MAAM,6BAA6B,CAAA;AACnE,OAAO,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAA;AAC7D,OAAO,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAA;AAmBtD,IAAM,iBAAiB,GAAvB,MAAM,iBAAiB;CAAG,CAAA;AAApB,iBAAiB;IAjB7B,MAAM,CAAC;QACN,OAAO,EAAE;YACP,cAAc,CAAC,QAAQ,CAAC,EAAE,eAAe,EAAE,KAAK,EAAE,CAAC;YACnD,YAAY;YACZ,YAAY;SACb;QACD,SAAS,EAAE;YACT,kBAAkB;YAClB,kBAAkB;SACnB;QACD,OAAO,EAAE;YACP,kBAAkB;SACnB;QACD,WAAW,EAAE;YACX,qBAAqB;SACtB;KACF,CAAC;GACW,iBAAiB,CAAG"}
@@ -1,38 +1,20 @@
1
1
  import type { ServiceType } from '@homebridge/hap-client';
2
- import type { Socket } from 'socket.io';
3
- import type { MatterService } from './accessories.interfaces.js';
4
2
  import { HapClient } from '@homebridge/hap-client';
5
3
  import NodeCache from 'node-cache';
6
4
  import { ConfigService } from '../../core/config/config.service.js';
7
- import { HomebridgeIpcService } from '../../core/homebridge-ipc/homebridge-ipc.service.js';
8
5
  import { Logger } from '../../core/logger/logger.service.js';
9
6
  export declare class AccessoriesService {
10
7
  private readonly configService;
11
8
  private readonly logger;
12
- private readonly homebridgeIpcService;
13
9
  hapClient: HapClient;
14
10
  accessoriesCache: NodeCache;
15
- private matterMonitoringActive;
16
- private matterUpdateListener;
17
- private activeClients;
18
- private matterAccessories;
19
- constructor(configService: ConfigService, logger: Logger, homebridgeIpcService: HomebridgeIpcService);
20
- connect(client: Socket): Promise<void>;
11
+ constructor(configService: ConfigService, logger: Logger);
12
+ connect(client: any): Promise<void>;
21
13
  private refreshCharacteristics;
22
14
  loadAccessories(): Promise<ServiceType[]>;
23
- getAccessory(uniqueId: string): Promise<MatterService | ServiceType>;
24
- private getMatterAccessory;
15
+ getAccessory(uniqueId: string): Promise<ServiceType>;
25
16
  setAccessoryCharacteristic(uniqueId: string, characteristicType: string, value: number | boolean | string): Promise<ServiceType>;
26
17
  getAccessoryLayout(username: string): Promise<any>;
27
18
  saveAccessoryLayout(user: string, layout: Record<string, unknown>): Promise<Record<string, unknown>>;
28
19
  resetInstancePool(): void;
29
- private parseMatterUniqueId;
30
- private buildMatterUniqueId;
31
- private waitForMatterEvent;
32
- private startMatterMonitoring;
33
- private stopMatterMonitoring;
34
- private loadMatterAccessories;
35
- private transformMatterAccessory;
36
- private handleMatterStateUpdate;
37
- private handleMatterControl;
38
20
  }
@@ -16,22 +16,15 @@ import { BadRequestException, Inject, Injectable } from '@nestjs/common';
16
16
  import { mkdirp, pathExists, readJson, writeJsonSync } from 'fs-extra/esm';
17
17
  import NodeCache from 'node-cache';
18
18
  import { ConfigService } from '../../core/config/config.service.js';
19
- import { HomebridgeIpcService } from '../../core/homebridge-ipc/homebridge-ipc.service.js';
20
19
  import { Logger } from '../../core/logger/logger.service.js';
21
20
  let AccessoriesService = class AccessoriesService {
22
21
  configService;
23
22
  logger;
24
- homebridgeIpcService;
25
23
  hapClient;
26
24
  accessoriesCache = new NodeCache({ stdTTL: 0 });
27
- matterMonitoringActive = false;
28
- matterUpdateListener = null;
29
- activeClients = new Set();
30
- matterAccessories = [];
31
- constructor(configService, logger, homebridgeIpcService) {
25
+ constructor(configService, logger) {
32
26
  this.configService = configService;
33
27
  this.logger = logger;
34
- this.homebridgeIpcService = homebridgeIpcService;
35
28
  if (this.configService.homebridgeInsecureMode) {
36
29
  this.hapClient = new HapClient({
37
30
  pin: this.configService.homebridgeConfig.bridge.pin,
@@ -45,10 +38,6 @@ let AccessoriesService = class AccessoriesService {
45
38
  this.logger.error('Homebridge must be running in insecure mode to control accessories.');
46
39
  return;
47
40
  }
48
- this.activeClients.add(client);
49
- if (this.activeClients.size === 1) {
50
- await this.startMatterMonitoring();
51
- }
52
41
  let services;
53
42
  const loadAllAccessories = async (refresh) => {
54
43
  if (!refresh) {
@@ -57,48 +46,26 @@ let AccessoriesService = class AccessoriesService {
57
46
  client.emit('accessories-data', cached);
58
47
  }
59
48
  }
60
- const hapServices = await this.loadAccessories();
61
- this.refreshCharacteristics(hapServices);
62
- client.emit('hap-accessories-ready-for-control');
63
- client.emit('accessories-data', hapServices);
64
- const matterServices = await this.loadMatterAccessories();
65
- client.emit('matter-accessories-ready-for-control');
66
- if (matterServices.length > 0) {
67
- client.emit('accessories-data', matterServices);
68
- }
69
- services = [...hapServices, ...matterServices];
49
+ services = await this.loadAccessories();
50
+ this.refreshCharacteristics(services);
70
51
  client.emit('accessories-ready-for-control');
52
+ client.emit('accessories-data', services);
71
53
  this.accessoriesCache.set('services', services);
72
54
  };
73
55
  await loadAllAccessories(false);
74
56
  const requestHandler = async (msg) => {
75
- if (msg.refresh) {
76
- await loadAllAccessories(true);
77
- }
78
- else if (msg.set) {
79
- if (msg.set.uniqueId && msg.set.uniqueId.startsWith('matter:')) {
80
- if (msg.set.cluster && msg.set.attributes) {
81
- await this.handleMatterControl(client, {
82
- uniqueId: msg.set.uniqueId,
83
- cluster: msg.set.cluster,
84
- attributes: msg.set.attributes,
85
- });
57
+ if (msg.set) {
58
+ const service = services.find(x => x.uniqueId === msg.set.uniqueId);
59
+ if (service) {
60
+ try {
61
+ await service.setCharacteristic(msg.set.iid, msg.set.value);
62
+ services = await this.loadAccessories();
63
+ setTimeout(() => {
64
+ this.refreshCharacteristics(services);
65
+ }, 1500);
86
66
  }
87
- }
88
- else {
89
- const service = services.find(x => x.uniqueId === msg.set.uniqueId);
90
- if (service && 'serviceCharacteristics' in service) {
91
- try {
92
- await service.setCharacteristic(msg.set.iid, msg.set.value);
93
- const hapServices = await this.loadAccessories();
94
- setTimeout(() => {
95
- this.refreshCharacteristics(hapServices);
96
- }, 1500);
97
- services = [...hapServices, ...this.matterAccessories];
98
- }
99
- catch (e) {
100
- client.emit('accessory-control-failure', e.message);
101
- }
67
+ catch (e) {
68
+ client.emit('accessory-control-failure', e.message);
102
69
  }
103
70
  }
104
71
  }
@@ -109,7 +76,7 @@ let AccessoriesService = class AccessoriesService {
109
76
  client.emit('accessories-data', data);
110
77
  };
111
78
  monitor.on('service-update', updateHandler);
112
- const instanceUpdateHandler = async () => {
79
+ const instanceUpdateHandler = async (data) => {
113
80
  client.emit('accessories-reload-required', services);
114
81
  };
115
82
  this.hapClient.on('instance-discovered', instanceUpdateHandler);
@@ -124,10 +91,6 @@ let AccessoriesService = class AccessoriesService {
124
91
  monitor.removeAllListeners('service-update');
125
92
  monitor.finish();
126
93
  this.hapClient.removeListener('instance-discovered', instanceUpdateHandler);
127
- this.activeClients.delete(client);
128
- if (this.activeClients.size === 0) {
129
- this.stopMatterMonitoring();
130
- }
131
94
  };
132
95
  client.on('disconnect', onEnd.bind(this));
133
96
  client.on('end', onEnd.bind(this));
@@ -158,9 +121,6 @@ let AccessoriesService = class AccessoriesService {
158
121
  }
159
122
  }
160
123
  async getAccessory(uniqueId) {
161
- if (uniqueId.startsWith('matter:')) {
162
- return this.getMatterAccessory(uniqueId);
163
- }
164
124
  const services = await this.loadAccessories();
165
125
  const service = services.find(x => x.uniqueId === uniqueId);
166
126
  if (!service) {
@@ -174,29 +134,6 @@ let AccessoriesService = class AccessoriesService {
174
134
  throw new BadRequestException(e.message);
175
135
  }
176
136
  }
177
- async getMatterAccessory(uniqueId) {
178
- try {
179
- const { uuid, partId } = this.parseMatterUniqueId(uniqueId);
180
- const response = await this.waitForMatterEvent('accessoryInfo', () => {
181
- this.homebridgeIpcService.sendMessage('getMatterAccessoryInfo', { uuid });
182
- });
183
- if (response.error) {
184
- throw new BadRequestException(response.error);
185
- }
186
- if (partId) {
187
- const part = response.parts?.find((p) => p.id === partId);
188
- if (part) {
189
- return this.transformMatterAccessory(response, part);
190
- }
191
- throw new BadRequestException(`Part '${partId}' not found in accessory`);
192
- }
193
- return this.transformMatterAccessory(response);
194
- }
195
- catch (error) {
196
- this.logger.error(`Failed to get Matter accessory info for ${uniqueId}:`, error);
197
- throw new BadRequestException(error.message || 'Failed to get Matter accessory info');
198
- }
199
- }
200
137
  async setAccessoryCharacteristic(uniqueId, characteristicType, value) {
201
138
  const services = await this.loadAccessories();
202
139
  const service = services.find(x => x.uniqueId === uniqueId);
@@ -291,213 +228,13 @@ let AccessoriesService = class AccessoriesService {
291
228
  this.hapClient.resetInstancePool();
292
229
  }
293
230
  }
294
- parseMatterUniqueId(uniqueId) {
295
- const parts = uniqueId.replace('matter:', '').split(':');
296
- return {
297
- uuid: parts[0],
298
- partId: parts[1],
299
- };
300
- }
301
- buildMatterUniqueId(uuid, partId) {
302
- return partId ? `matter:${uuid}:${partId}` : `matter:${uuid}`;
303
- }
304
- async waitForMatterEvent(eventType, sendRequest) {
305
- return new Promise((resolve, reject) => {
306
- const actionTimeout = setTimeout(() => {
307
- this.homebridgeIpcService.removeListener('matterEvent', listener);
308
- reject(new Error('The Homebridge service did not respond'));
309
- }, 3000);
310
- const listener = (event) => {
311
- if (event.type === eventType) {
312
- clearTimeout(actionTimeout);
313
- this.homebridgeIpcService.removeListener('matterEvent', listener);
314
- resolve(event.data);
315
- }
316
- };
317
- this.homebridgeIpcService.on('matterEvent', listener);
318
- sendRequest();
319
- });
320
- }
321
- async startMatterMonitoring() {
322
- if (this.matterMonitoringActive) {
323
- return;
324
- }
325
- try {
326
- this.logger.debug('Starting Matter accessory monitoring');
327
- this.homebridgeIpcService.sendMessage('startMatterMonitoring');
328
- this.matterMonitoringActive = true;
329
- this.matterUpdateListener = (event) => {
330
- switch (event.type) {
331
- case 'accessoryUpdate':
332
- if (event.data && 'uuid' in event.data && 'cluster' in event.data) {
333
- this.handleMatterStateUpdate(event.data);
334
- }
335
- break;
336
- case 'accessoryAdded':
337
- case 'accessoryRemoved':
338
- if (event.data && 'uuid' in event.data) {
339
- this.logger.debug(`Matter accessory ${event.type}: ${event.data.uuid} - triggering reload`);
340
- }
341
- for (const client of this.activeClients) {
342
- client.emit('matter-accessories-reload-required');
343
- }
344
- break;
345
- }
346
- };
347
- this.homebridgeIpcService.on('matterEvent', this.matterUpdateListener);
348
- this.logger.debug('Matter monitoring started successfully');
349
- }
350
- catch (error) {
351
- this.logger.error('Failed to start Matter monitoring:', error);
352
- }
353
- }
354
- async stopMatterMonitoring() {
355
- if (!this.matterMonitoringActive) {
356
- return;
357
- }
358
- try {
359
- this.logger.debug('Stopping Matter accessory monitoring');
360
- if (this.matterUpdateListener) {
361
- this.homebridgeIpcService.removeListener('matterEvent', this.matterUpdateListener);
362
- this.matterUpdateListener = null;
363
- }
364
- this.homebridgeIpcService.sendMessage('stopMatterMonitoring');
365
- this.matterMonitoringActive = false;
366
- this.matterAccessories = [];
367
- this.logger.debug('Matter monitoring stopped');
368
- }
369
- catch (error) {
370
- this.logger.error('Failed to stop Matter monitoring:', error);
371
- }
372
- }
373
- async loadMatterAccessories() {
374
- if (!this.matterMonitoringActive) {
375
- this.logger.warn('Matter monitoring not active, skipping accessory load');
376
- return [];
377
- }
378
- try {
379
- const response = await this.waitForMatterEvent('accessoriesData', () => {
380
- this.homebridgeIpcService.sendMessage('getMatterAccessories', {});
381
- });
382
- if (response.error) {
383
- throw new Error(response.error);
384
- }
385
- const accessories = response.accessories || [];
386
- this.logger.debug(`Loaded ${accessories.length} Matter accessories from IPC`);
387
- const matterServices = accessories.flatMap((accessory) => {
388
- const services = [];
389
- services.push({
390
- ...this.transformMatterAccessory(accessory),
391
- protocol: 'matter',
392
- });
393
- if (accessory.parts) {
394
- for (const part of accessory.parts) {
395
- services.push({
396
- ...this.transformMatterAccessory(accessory, part),
397
- protocol: 'matter',
398
- });
399
- }
400
- }
401
- return services;
402
- });
403
- this.logger.debug(`Transformed ${matterServices.length} Matter services (including parts)`);
404
- this.matterAccessories = matterServices;
405
- return matterServices;
406
- }
407
- catch (error) {
408
- this.logger.error('Failed to load Matter accessories:', error);
409
- return [];
410
- }
411
- }
412
- transformMatterAccessory(accessory, part) {
413
- const targetClusters = part?.clusters || accessory.clusters;
414
- const displayName = part
415
- ? `${accessory.displayName} - ${part.displayName}`
416
- : accessory.displayName;
417
- const uniqueId = part
418
- ? `matter:${accessory.uuid}:${part.id}`
419
- : `matter:${accessory.uuid}`;
420
- const deviceType = part?.deviceType || accessory.deviceType;
421
- const bridgeUsername = accessory.bridge?.username || 'unknown';
422
- if (bridgeUsername === 'unknown') {
423
- this.logger.warn(`Matter accessory '${displayName}' (${uniqueId}) has no bridge.username - layout may not persist correctly`);
424
- }
425
- return {
426
- uniqueId,
427
- uuid: accessory.uuid,
428
- serviceName: displayName,
429
- displayName,
430
- deviceType,
431
- clusters: targetClusters,
432
- partId: part?.id,
433
- protocol: 'matter',
434
- instance: {
435
- name: accessory.bridge?.name || 'Matter Bridge',
436
- username: bridgeUsername,
437
- },
438
- accessoryInformation: {
439
- 'Name': displayName,
440
- 'Manufacturer': accessory.manufacturer || 'Unknown',
441
- 'Model': accessory.model || deviceType,
442
- 'Serial Number': accessory.serialNumber || accessory.uuid,
443
- 'Firmware Revision': accessory.firmwareRevision || '1.0.0',
444
- },
445
- bridge: accessory.bridge,
446
- plugin: accessory.plugin,
447
- platform: accessory.platform,
448
- commissioned: accessory.commissioned,
449
- fabricCount: accessory.fabricCount,
450
- fabrics: accessory.fabrics,
451
- aid: 0,
452
- iid: 0,
453
- };
454
- }
455
- handleMatterStateUpdate(data) {
456
- const uniqueId = this.buildMatterUniqueId(data.uuid, data.partId);
457
- const service = this.matterAccessories.find(s => s.uniqueId === uniqueId);
458
- if (!service) {
459
- return;
460
- }
461
- service.clusters[data.cluster] = {
462
- ...service.clusters[data.cluster],
463
- ...data.state,
464
- };
465
- for (const client of this.activeClients) {
466
- client.emit('accessories-data', [service]);
467
- }
468
- }
469
- async handleMatterControl(client, control) {
470
- try {
471
- const { uuid, partId } = this.parseMatterUniqueId(control.uniqueId);
472
- const accessory = this.matterAccessories.find(acc => acc.uuid === uuid);
473
- const bridgeUsername = accessory?.bridge?.username;
474
- const response = await this.waitForMatterEvent('accessoryControlResponse', () => {
475
- this.homebridgeIpcService.sendMessage('matterAccessoryControl', {
476
- uuid,
477
- cluster: control.cluster,
478
- attributes: control.attributes,
479
- bridgeUsername,
480
- partId,
481
- });
482
- });
483
- if (!response.success) {
484
- client.emit('accessory-control-failure', response.error || 'Matter control failed');
485
- }
486
- }
487
- catch (error) {
488
- this.logger.error('Matter control failed:', error);
489
- client.emit('accessory-control-failure', error.message || 'Matter control failed');
490
- }
491
- }
492
231
  };
493
232
  AccessoriesService = __decorate([
494
233
  Injectable(),
495
234
  __param(0, Inject(ConfigService)),
496
235
  __param(1, Inject(Logger)),
497
- __param(2, Inject(HomebridgeIpcService)),
498
236
  __metadata("design:paramtypes", [ConfigService,
499
- Logger,
500
- HomebridgeIpcService])
237
+ Logger])
501
238
  ], AccessoriesService);
502
239
  export { AccessoriesService };
503
240
  //# sourceMappingURL=accessories.service.js.map