homebridge-config-ui-x 5.8.1-alpha.0 → 5.8.1-alpha.2

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 (156) hide show
  1. package/dist/app.module.js +2 -0
  2. package/dist/app.module.js.map +1 -1
  3. package/dist/core/config/config.interfaces.d.ts +11 -10
  4. package/dist/core/homebridge-ipc/homebridge-ipc.service.d.ts +1 -1
  5. package/dist/core/homebridge-ipc/homebridge-ipc.service.js +2 -4
  6. package/dist/core/homebridge-ipc/homebridge-ipc.service.js.map +1 -1
  7. package/dist/modules/bridges/bridge-identifier.util.d.ts +9 -0
  8. package/dist/modules/bridges/bridge-identifier.util.js +30 -0
  9. package/dist/modules/bridges/bridge-identifier.util.js.map +1 -0
  10. package/dist/modules/bridges/bridges.controller.d.ts +11 -0
  11. package/dist/modules/bridges/bridges.controller.js +156 -0
  12. package/dist/modules/bridges/bridges.controller.js.map +1 -0
  13. package/dist/modules/bridges/bridges.interfaces.d.ts +72 -0
  14. package/dist/modules/bridges/bridges.interfaces.js +3 -0
  15. package/dist/modules/bridges/bridges.interfaces.js.map +1 -0
  16. package/dist/modules/bridges/bridges.module.d.ts +2 -0
  17. package/dist/modules/bridges/bridges.module.js +39 -0
  18. package/dist/modules/bridges/bridges.module.js.map +1 -0
  19. package/dist/modules/bridges/bridges.service.d.ts +16 -0
  20. package/dist/modules/bridges/bridges.service.js +168 -0
  21. package/dist/modules/bridges/bridges.service.js.map +1 -0
  22. package/dist/modules/child-bridges/child-bridges.gateway.d.ts +1 -14
  23. package/dist/modules/child-bridges/child-bridges.gateway.js +1 -67
  24. package/dist/modules/child-bridges/child-bridges.gateway.js.map +1 -1
  25. package/dist/modules/child-bridges/child-bridges.interfaces.d.ts +5 -43
  26. package/dist/modules/child-bridges/child-bridges.module.js +0 -8
  27. package/dist/modules/child-bridges/child-bridges.module.js.map +1 -1
  28. package/dist/modules/child-bridges/child-bridges.service.d.ts +9 -40
  29. package/dist/modules/child-bridges/child-bridges.service.js +10 -345
  30. package/dist/modules/child-bridges/child-bridges.service.js.map +1 -1
  31. package/dist/modules/config-editor/config-editor.service.js +0 -7
  32. package/dist/modules/config-editor/config-editor.service.js.map +1 -1
  33. package/dist/modules/matter-bridges/matter-bridges.controller.d.ts +18 -0
  34. package/dist/modules/matter-bridges/matter-bridges.controller.js +104 -0
  35. package/dist/modules/matter-bridges/matter-bridges.controller.js.map +1 -0
  36. package/dist/modules/matter-bridges/matter-bridges.gateway.d.ts +0 -3
  37. package/dist/modules/matter-bridges/matter-bridges.gateway.js +0 -42
  38. package/dist/modules/matter-bridges/matter-bridges.gateway.js.map +1 -1
  39. package/dist/modules/matter-bridges/matter-bridges.interfaces.d.ts +11 -46
  40. package/dist/modules/matter-bridges/matter-bridges.interfaces.js +0 -7
  41. package/dist/modules/matter-bridges/matter-bridges.interfaces.js.map +1 -1
  42. package/dist/modules/matter-bridges/matter-bridges.module.js +8 -2
  43. package/dist/modules/matter-bridges/matter-bridges.module.js.map +1 -1
  44. package/dist/modules/matter-bridges/matter-bridges.service.d.ts +24 -14
  45. package/dist/modules/matter-bridges/matter-bridges.service.js +236 -53
  46. package/dist/modules/matter-bridges/matter-bridges.service.js.map +1 -1
  47. package/dist/modules/plugins/plugins.service.js +2 -29
  48. package/dist/modules/plugins/plugins.service.js.map +1 -1
  49. package/dist/modules/server/server.controller.d.ts +14 -6
  50. package/dist/modules/server/server.controller.js +36 -20
  51. package/dist/modules/server/server.controller.js.map +1 -1
  52. package/dist/modules/server/server.module.js +3 -1
  53. package/dist/modules/server/server.module.js.map +1 -1
  54. package/dist/modules/server/server.service.d.ts +10 -1
  55. package/dist/modules/server/server.service.js +79 -2
  56. package/dist/modules/server/server.service.js.map +1 -1
  57. package/dist/modules/status/status.controller.d.ts +1 -1
  58. package/dist/modules/status/status.controller.js +1 -3
  59. package/dist/modules/status/status.controller.js.map +1 -1
  60. package/package.json +6 -6
  61. package/public/{chunk-TUKDK3NJ.js → chunk-2EKZK7NX.js} +1 -1
  62. package/public/{chunk-Z5SXR7XM.js → chunk-33PMRDBB.js} +1 -1
  63. package/public/chunk-3EACECYJ.js +2 -0
  64. package/public/{chunk-L5FTKOE7.js → chunk-3XNA4EQU.js} +1 -1
  65. package/public/chunk-4Y2KPCHA.js +1 -0
  66. package/public/chunk-5BCOF7IG.js +49 -0
  67. package/public/{chunk-AVLU4OBB.js → chunk-5EZCX7HV.js} +1 -1
  68. package/public/{chunk-4DQ2NOSN.js → chunk-5KMVHZV7.js} +1 -1
  69. package/public/{chunk-PUVYEUNW.js → chunk-6VILNURQ.js} +1 -1
  70. package/public/{chunk-EXIREAXJ.js → chunk-A5EKMCXX.js} +1 -1
  71. package/public/{chunk-TENKBXZX.js → chunk-AR55D6KT.js} +1 -1
  72. package/public/{chunk-AP4JI74X.js → chunk-AW6ZPEG3.js} +1 -1
  73. package/public/{chunk-ZYJD3IFR.js → chunk-AWJONODF.js} +1 -1
  74. package/public/{chunk-JFCVTQA4.js → chunk-BD2WNMUL.js} +1 -1
  75. package/public/{chunk-OPWPZI2P.js → chunk-BJULQD6Z.js} +1 -1
  76. package/public/{chunk-YDANTMYI.js → chunk-BKJWDEC4.js} +1 -1
  77. package/public/chunk-BQTCHQHZ.js +1 -0
  78. package/public/{chunk-W6TEFWHS.js → chunk-BXTJNIAF.js} +1 -1
  79. package/public/{chunk-AJ7QBH6A.js → chunk-COBEXT75.js} +1 -1
  80. package/public/{chunk-TXS667XX.js → chunk-D4FV2NR6.js} +1 -1
  81. package/public/{chunk-HQO55IAP.js → chunk-ELWCTORK.js} +1 -1
  82. package/public/{chunk-CZKY2WDA.js → chunk-EYNZEIGI.js} +1 -1
  83. package/public/{chunk-5WCKLLH6.js → chunk-FBEAGLXX.js} +1 -1
  84. package/public/{chunk-AJSLB3ED.js → chunk-FKNFGRMF.js} +1 -1
  85. package/public/{chunk-CBGOSEHO.js → chunk-GOK2QVWT.js} +1 -1
  86. package/public/{chunk-G45L27Q7.js → chunk-GXMQ3BRX.js} +1 -1
  87. package/public/chunk-HNA35CNP.js +1 -0
  88. package/public/{chunk-A6MJKCXP.js → chunk-JA7WBGLB.js} +1 -1
  89. package/public/{chunk-4SJ7LVRB.js → chunk-JAPQGXHI.js} +1 -1
  90. package/public/chunk-JIUPKHC6.js +5 -0
  91. package/public/{chunk-2LNPZWQG.js → chunk-K3HCHWTM.js} +1 -1
  92. package/public/{chunk-OISGHRTF.js → chunk-K4H6PB2J.js} +1 -1
  93. package/public/{chunk-PNB2QVH3.js → chunk-KAFW5DRA.js} +1 -1
  94. package/public/{chunk-PTSXKYWE.js → chunk-KZ6XXGP4.js} +1 -1
  95. package/public/{chunk-NACTGAO2.js → chunk-LGGTBRNV.js} +1 -1
  96. package/public/{chunk-D7S7TYFI.js → chunk-LXFAOFAX.js} +1 -1
  97. package/public/{chunk-2FZPXF6E.js → chunk-M3FIN2AA.js} +1 -1
  98. package/public/{chunk-7C5NPZ7J.js → chunk-M7GSB47P.js} +1 -1
  99. package/public/{chunk-HMTMYCVH.js → chunk-MBD42QUN.js} +1 -1
  100. package/public/chunk-MJBWBNSG.js +1 -0
  101. package/public/chunk-NWKHE4QY.js +19 -0
  102. package/public/{chunk-VDZRGZBL.js → chunk-OI6KCFXH.js} +1 -1
  103. package/public/chunk-P3A7PEYC.js +17 -0
  104. package/public/{chunk-IWJB7IT2.js → chunk-PC74JU2B.js} +1 -1
  105. package/public/{chunk-Q5YQZNNH.js → chunk-Q3A53XG6.js} +1 -1
  106. package/public/{chunk-LKOTF3NL.js → chunk-R6PJW4VJ.js} +1 -1
  107. package/public/{chunk-P2UG4QRG.js → chunk-ROHOV4PQ.js} +1 -1
  108. package/public/{chunk-CQKRPPY5.js → chunk-SFXLRTS5.js} +1 -1
  109. package/public/chunk-SHCD57ND.js +1 -0
  110. package/public/chunk-SXARTKV3.js +1 -0
  111. package/public/{chunk-RWGYAZ5Z.js → chunk-TKL5NWVB.js} +1 -1
  112. package/public/{chunk-PXZ3C3WB.js → chunk-TUI3ZP5I.js} +1 -1
  113. package/public/{chunk-QJNBG7IQ.js → chunk-U4SKVUE5.js} +1 -1
  114. package/public/{chunk-36O7RGHR.js → chunk-UHSROVQY.js} +1 -1
  115. package/public/{chunk-BVFXBL5M.js → chunk-ULZPLNSU.js} +1 -1
  116. package/public/chunk-V7NTVYMU.js +4 -0
  117. package/public/{chunk-LOVIIHLB.js → chunk-VI7CE3DV.js} +1 -1
  118. package/public/chunk-VUV53WFF.js +1 -0
  119. package/public/{chunk-PT3BSLVU.js → chunk-WYZEY4PO.js} +1 -1
  120. package/public/{chunk-PWTIH4WJ.js → chunk-XID2DQIK.js} +1 -1
  121. package/public/{chunk-5YQJFB37.js → chunk-XRLPCXVY.js} +1 -1
  122. package/public/chunk-Y3W3WZ42.js +1 -0
  123. package/public/{chunk-HTO5QSUD.js → chunk-YKU27KZX.js} +1 -1
  124. package/public/{chunk-UKQ7VNGQ.js → chunk-YPUYAJME.js} +1 -1
  125. package/public/{chunk-FEK3NRZH.js → chunk-YULDG6HZ.js} +1 -1
  126. package/public/chunk-Z37KQHXT.js +2 -0
  127. package/public/{chunk-YNDC5MZW.js → chunk-ZINKZV7F.js} +1 -1
  128. package/public/{chunk-NV5MWDBB.js → chunk-ZNLFE6SA.js} +1 -1
  129. package/public/index.html +2 -2
  130. package/public/{main-3LNHHNC2.js → main-NHC6QBFW.js} +1 -1
  131. package/public/media/fa-brands-400-E7XUCEPO.woff2 +0 -0
  132. package/public/media/fa-regular-400-LBQEIAJB.woff2 +0 -0
  133. package/public/media/fa-solid-900-XY6737PV.woff2 +0 -0
  134. package/public/{styles-JQW3VPD2.css → styles-4Y3CNLUV.css} +1 -1
  135. package/scripts/extract-plugin-alias.js +87 -3
  136. package/dist/modules/child-bridges/child-bridges.controller.d.ts +0 -35
  137. package/dist/modules/child-bridges/child-bridges.controller.js +0 -284
  138. package/dist/modules/child-bridges/child-bridges.controller.js.map +0 -1
  139. package/public/chunk-2CYCDT6U.js +0 -1
  140. package/public/chunk-3SCINSZK.js +0 -5
  141. package/public/chunk-4PASWGPR.js +0 -1
  142. package/public/chunk-5EMBTLJ7.js +0 -4
  143. package/public/chunk-5K72UETZ.js +0 -1
  144. package/public/chunk-7OTM6HOE.js +0 -1
  145. package/public/chunk-AXC7PSAQ.js +0 -16
  146. package/public/chunk-JES74EAE.js +0 -2
  147. package/public/chunk-MRBPQZKJ.js +0 -1
  148. package/public/chunk-NE5XVVZY.js +0 -1
  149. package/public/chunk-NKX7JONP.js +0 -1
  150. package/public/chunk-PW42N7TW.js +0 -49
  151. package/public/chunk-SJQJVLLN.js +0 -19
  152. package/public/chunk-UUN7J43O.js +0 -2
  153. package/public/chunk-VTV2NDYL.js +0 -1
  154. package/public/media/fa-brands-400-E3YNADOB.woff2 +0 -0
  155. package/public/media/fa-regular-400-UOSVBSEG.woff2 +0 -0
  156. package/public/media/fa-solid-900-6JWCQRDQ.woff2 +0 -0
@@ -36,6 +36,26 @@ const HomebridgeApiMock = {
36
36
  serverVersion: '1.2.3',
37
37
  on: () => { /** mock */ },
38
38
  emit: () => { /** mock */ },
39
+ // Mock Matter API
40
+ isMatterAvailable() {
41
+ return true
42
+ },
43
+ isMatterEnabled() {
44
+ return true
45
+ },
46
+ matterDeviceTypes: new Proxy({}, {
47
+ get() {
48
+ return {} // Return empty object for any device type
49
+ },
50
+ }),
51
+ matterClusters: new Proxy({}, {
52
+ get() {
53
+ return {} // Return empty object for any cluster
54
+ },
55
+ }),
56
+ registerMatterAccessory: () => { /** mock */ },
57
+ unregisterMatterAccessory: () => { /** mock */ },
58
+ updateMatterAccessoryState: () => { /** mock */ },
39
59
  hap: {
40
60
  Characteristic: new class Characteristic extends EventEmitter {
41
61
  constructor() {
@@ -99,21 +119,79 @@ const HomebridgeApiMock = {
99
119
  },
100
120
  }
101
121
 
102
- function main() {
122
+ async function main() {
103
123
  try {
124
+ console.error('[extract-plugin-alias] Starting extraction...')
104
125
  let pluginInitializer
105
126
  const pluginPath = process.env.UIX_EXTRACT_PLUGIN_PATH
106
- const pluginModules = require(pluginPath)
127
+ console.error('[extract-plugin-alias] Plugin path:', pluginPath)
128
+
129
+ // Read package.json to get the proper entry point
130
+ let actualEntryPoint = pluginPath
131
+ try {
132
+ const fs = require('node:fs')
133
+ const packageJsonPath = path.join(pluginPath, 'package.json')
134
+ console.error('[extract-plugin-alias] Reading package.json from:', packageJsonPath)
135
+ const packageJson = JSON.parse(fs.readFileSync(packageJsonPath, 'utf8'))
136
+
137
+ if (packageJson.main) {
138
+ actualEntryPoint = path.join(pluginPath, packageJson.main)
139
+ console.error('[extract-plugin-alias] Using main entry point:', actualEntryPoint)
140
+ }
141
+
142
+ // Check if it's an ESM module
143
+ if (packageJson.type === 'module') {
144
+ console.error('[extract-plugin-alias] Package is ESM module')
145
+ }
146
+ } catch (err) {
147
+ console.error('[extract-plugin-alias] Could not read package.json, using directory path')
148
+ }
149
+
150
+ let pluginModules
151
+
152
+ // Try to load as CommonJS first
153
+ try {
154
+ console.error('[extract-plugin-alias] Attempting CommonJS require...')
155
+ pluginModules = require(actualEntryPoint)
156
+ console.error('[extract-plugin-alias] Plugin loaded via CommonJS')
157
+ } catch (requireError) {
158
+ // If require fails, try dynamic import for ESM modules
159
+ console.error('[extract-plugin-alias] CommonJS require failed, trying ESM import...')
160
+ console.error('[extract-plugin-alias] Error was:', requireError.message)
161
+ try {
162
+ // For ESM, we need to use file:// URL on some platforms
163
+ const importPath = actualEntryPoint.startsWith('/') || actualEntryPoint.startsWith('file://')
164
+ ? actualEntryPoint
165
+ : path.resolve(actualEntryPoint)
166
+ console.error('[extract-plugin-alias] Import path:', importPath)
167
+ pluginModules = await import(importPath)
168
+ console.error('[extract-plugin-alias] Plugin loaded via ESM import')
169
+ } catch (importError) {
170
+ console.error('[extract-plugin-alias] ESM import also failed:', importError.message)
171
+ throw requireError // Throw the original error
172
+ }
173
+ }
174
+
175
+ console.error('[extract-plugin-alias] Plugin loaded, checking for initializer...')
107
176
 
108
177
  if (typeof pluginModules === 'function') {
178
+ console.error('[extract-plugin-alias] Found function export')
109
179
  pluginInitializer = pluginModules
110
180
  } else if (pluginModules && typeof pluginModules.default === 'function') {
181
+ console.error('[extract-plugin-alias] Found default function export')
111
182
  pluginInitializer = pluginModules.default
112
183
  } else {
184
+ console.error('[extract-plugin-alias] No valid initializer found')
185
+ console.error('[extract-plugin-alias] pluginModules type:', typeof pluginModules)
186
+ console.error('[extract-plugin-alias] pluginModules.default type:', typeof pluginModules?.default)
187
+ console.error('[extract-plugin-alias] pluginModules keys:', Object.keys(pluginModules || {}))
113
188
  throw new Error(`Plugin ${pluginPath} does not export a initializer function from main.`)
114
189
  }
115
190
 
191
+ console.error('[extract-plugin-alias] Calling plugin initializer...')
116
192
  pluginInitializer(HomebridgeApiMock)
193
+ console.error('[extract-plugin-alias] Plugin initialized')
194
+ console.error('[extract-plugin-alias] Extracted alias:', pluginAlias, 'type:', pluginType)
117
195
 
118
196
  process.send({
119
197
  pluginAlias,
@@ -121,12 +199,18 @@ function main() {
121
199
  })
122
200
  process.exit()
123
201
  } catch (e) {
202
+ console.error('[extract-plugin-alias] Error during extraction:', e.message)
203
+ console.error('[extract-plugin-alias] Stack:', e.stack)
124
204
  process.exit(1)
125
205
  }
126
206
  }
127
207
 
128
- main()
208
+ main().catch((err) => {
209
+ console.error('[extract-plugin-alias] Unhandled error:', err)
210
+ process.exit(1)
211
+ })
129
212
 
130
213
  setTimeout(() => {
214
+ console.error('[extract-plugin-alias] Timeout - extraction took too long')
131
215
  process.exit(1)
132
216
  }, 2500)
@@ -1,35 +0,0 @@
1
- import { ChildBridgeFilter } from './child-bridges.interfaces';
2
- import { ChildBridgesService } from './child-bridges.service';
3
- export declare class ChildBridgesController {
4
- private readonly childBridgesService;
5
- constructor(childBridgesService: ChildBridgesService);
6
- getChildBridges(filter?: ChildBridgeFilter): Promise<import("./child-bridges.interfaces").UnifiedChildBridge[]>;
7
- getHapChildBridges(): Promise<import("./child-bridges.interfaces").UnifiedChildBridge[]>;
8
- getMatterChildBridges(): Promise<import("./child-bridges.interfaces").UnifiedChildBridge[]>;
9
- getExternalBridges(): Promise<import("./child-bridges.interfaces").UnifiedChildBridge[]>;
10
- getChildBridgesForPlugin(pluginName: string, filter?: ChildBridgeFilter): Promise<import("./child-bridges.interfaces").UnifiedChildBridge[]>;
11
- getChildBridge(username: string): Promise<import("./child-bridges.interfaces").UnifiedChildBridge>;
12
- restartChildBridge(username: string): Promise<{
13
- status: string;
14
- username: string;
15
- }>;
16
- stopChildBridge(username: string): Promise<{
17
- status: string;
18
- username: string;
19
- }>;
20
- startChildBridge(username: string): Promise<{
21
- status: string;
22
- username: string;
23
- }>;
24
- getChildBridgePairing(username: string): Promise<any>;
25
- deleteChildBridgePairing(username: string, resetPairingInfo?: string): Promise<void>;
26
- getChildBridgeAccessories(username: string): Promise<any[] | import("../matter-bridges/matter-bridges.interfaces").MatterAccessoriesResponse>;
27
- deleteChildBridgeAccessories(username: string): Promise<void>;
28
- deleteMultipleBridges(bridges: {
29
- username: string;
30
- resetPairingInfo?: boolean;
31
- }[]): Promise<void>;
32
- deleteMultipleAccessories(bridges: {
33
- username: string;
34
- }[]): Promise<void>;
35
- }
@@ -1,284 +0,0 @@
1
- "use strict";
2
- var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3
- var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
- if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5
- 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;
6
- return c > 3 && r && Object.defineProperty(target, key, r), r;
7
- };
8
- var __metadata = (this && this.__metadata) || function (k, v) {
9
- if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
10
- };
11
- var __param = (this && this.__param) || function (paramIndex, decorator) {
12
- return function (target, key) { decorator(target, key, paramIndex); }
13
- };
14
- Object.defineProperty(exports, "__esModule", { value: true });
15
- exports.ChildBridgesController = void 0;
16
- const common_1 = require("@nestjs/common");
17
- const passport_1 = require("@nestjs/passport");
18
- const swagger_1 = require("@nestjs/swagger");
19
- const admin_guard_1 = require("../../core/auth/guards/admin.guard");
20
- const child_bridges_service_1 = require("./child-bridges.service");
21
- let ChildBridgesController = class ChildBridgesController {
22
- constructor(childBridgesService) {
23
- this.childBridgesService = childBridgesService;
24
- }
25
- async getChildBridges(filter) {
26
- return await this.childBridgesService.getChildBridges(filter || 'all');
27
- }
28
- async getHapChildBridges() {
29
- return await this.childBridgesService.getChildBridges('hap');
30
- }
31
- async getMatterChildBridges() {
32
- return await this.childBridgesService.getChildBridges('matter');
33
- }
34
- async getExternalBridges() {
35
- return await this.childBridgesService.getChildBridges('external');
36
- }
37
- async getChildBridgesForPlugin(pluginName, filter) {
38
- return await this.childBridgesService.getChildBridgesForPlugin(pluginName, filter || 'all');
39
- }
40
- async getChildBridge(username) {
41
- return await this.childBridgesService.getChildBridge(username);
42
- }
43
- async restartChildBridge(username) {
44
- await this.childBridgesService.restartChildBridge(username);
45
- return { status: 'restarting', username };
46
- }
47
- async stopChildBridge(username) {
48
- await this.childBridgesService.stopChildBridge(username);
49
- return { status: 'stopped', username };
50
- }
51
- async startChildBridge(username) {
52
- await this.childBridgesService.startChildBridge(username);
53
- return { status: 'starting', username };
54
- }
55
- async getChildBridgePairing(username) {
56
- return await this.childBridgesService.getChildBridgePairing(username);
57
- }
58
- async deleteChildBridgePairing(username, resetPairingInfo) {
59
- const resetPairingInfoBool = resetPairingInfo === 'true';
60
- await this.childBridgesService.deleteChildBridgePairing(username, resetPairingInfoBool);
61
- }
62
- async getChildBridgeAccessories(username) {
63
- return await this.childBridgesService.getChildBridgeAccessories(username);
64
- }
65
- async deleteChildBridgeAccessories(username) {
66
- await this.childBridgesService.deleteChildBridgeAccessories(username);
67
- }
68
- async deleteMultipleBridges(bridges) {
69
- await this.childBridgesService.deleteMultiplePairings(bridges);
70
- }
71
- async deleteMultipleAccessories(bridges) {
72
- await this.childBridgesService.deleteMultipleAccessories(bridges);
73
- }
74
- };
75
- exports.ChildBridgesController = ChildBridgesController;
76
- __decorate([
77
- (0, common_1.Get)(),
78
- (0, swagger_1.ApiOperation)({
79
- summary: 'Get all child bridges (HAP, Matter, and External).',
80
- description: 'Returns bridges with username field. HAP/External bridges have MAC addresses with colons (e.g., 0E:AA:BB:CC:DD:EE). Matter bridges have serialNumbers (e.g., `HB-LR5QA8K2-A7F3`). When using usernames in URL paths, remove colons from MAC addresses.',
81
- }),
82
- (0, swagger_1.ApiQuery)({ name: 'filter', enum: ['all', 'hap', 'matter', 'external'], required: false }),
83
- __param(0, (0, common_1.Query)('filter')),
84
- __metadata("design:type", Function),
85
- __metadata("design:paramtypes", [String]),
86
- __metadata("design:returntype", Promise)
87
- ], ChildBridgesController.prototype, "getChildBridges", null);
88
- __decorate([
89
- (0, common_1.Get)('hap'),
90
- (0, swagger_1.ApiOperation)({ summary: 'Get only HAP child bridges.' }),
91
- __metadata("design:type", Function),
92
- __metadata("design:paramtypes", []),
93
- __metadata("design:returntype", Promise)
94
- ], ChildBridgesController.prototype, "getHapChildBridges", null);
95
- __decorate([
96
- (0, common_1.Get)('matter'),
97
- (0, swagger_1.ApiOperation)({ summary: 'Get only Matter child bridges.' }),
98
- __metadata("design:type", Function),
99
- __metadata("design:paramtypes", []),
100
- __metadata("design:returntype", Promise)
101
- ], ChildBridgesController.prototype, "getMatterChildBridges", null);
102
- __decorate([
103
- (0, common_1.Get)('external'),
104
- (0, swagger_1.ApiOperation)({ summary: 'Get only External bridges (cameras, TVs, etc).' }),
105
- __metadata("design:type", Function),
106
- __metadata("design:paramtypes", []),
107
- __metadata("design:returntype", Promise)
108
- ], ChildBridgesController.prototype, "getExternalBridges", null);
109
- __decorate([
110
- (0, common_1.Get)('plugin/:pluginName'),
111
- (0, swagger_1.ApiOperation)({ summary: 'Get child bridges for a specific plugin.' }),
112
- (0, swagger_1.ApiParam)({ name: 'pluginName', type: 'string' }),
113
- (0, swagger_1.ApiQuery)({ name: 'filter', enum: ['all', 'hap', 'matter'], required: false }),
114
- __param(0, (0, common_1.Param)('pluginName')),
115
- __param(1, (0, common_1.Query)('filter')),
116
- __metadata("design:type", Function),
117
- __metadata("design:paramtypes", [String, String]),
118
- __metadata("design:returntype", Promise)
119
- ], ChildBridgesController.prototype, "getChildBridgesForPlugin", null);
120
- __decorate([
121
- (0, common_1.Get)(':username'),
122
- (0, swagger_1.ApiOperation)({ summary: 'Get a specific child bridge.' }),
123
- (0, swagger_1.ApiParam)({
124
- name: 'username',
125
- type: 'string',
126
- description: 'For **HAP/External**: username without colons (e.g. `0EAABBCCDDEE`), for **Matter**: username with dashes (e.g. `HB-LR5QA8K2-A7F3`).',
127
- }),
128
- __param(0, (0, common_1.Param)('username')),
129
- __metadata("design:type", Function),
130
- __metadata("design:paramtypes", [String]),
131
- __metadata("design:returntype", Promise)
132
- ], ChildBridgesController.prototype, "getChildBridge", null);
133
- __decorate([
134
- (0, common_1.Put)(':username/restart'),
135
- (0, swagger_1.ApiOperation)({ summary: 'Restart a child bridge (HAP or Matter).' }),
136
- (0, swagger_1.ApiParam)({
137
- name: 'username',
138
- type: 'string',
139
- description: 'For **HAP/External**: username without colons (e.g. `0EAABBCCDDEE`), for **Matter**: username with dashes (e.g. `HB-LR5QA8K2-A7F3`).',
140
- }),
141
- __param(0, (0, common_1.Param)('username')),
142
- __metadata("design:type", Function),
143
- __metadata("design:paramtypes", [String]),
144
- __metadata("design:returntype", Promise)
145
- ], ChildBridgesController.prototype, "restartChildBridge", null);
146
- __decorate([
147
- (0, common_1.Put)(':username/stop'),
148
- (0, swagger_1.ApiOperation)({ summary: 'Stop a child bridge (HAP or Matter).' }),
149
- (0, swagger_1.ApiParam)({
150
- name: 'username',
151
- type: 'string',
152
- description: 'For **HAP/External**: username without colons (e.g. `0EAABBCCDDEE`), for **Matter**: username with dashes (e.g. `HB-LR5QA8K2-A7F3`).',
153
- }),
154
- __param(0, (0, common_1.Param)('username')),
155
- __metadata("design:type", Function),
156
- __metadata("design:paramtypes", [String]),
157
- __metadata("design:returntype", Promise)
158
- ], ChildBridgesController.prototype, "stopChildBridge", null);
159
- __decorate([
160
- (0, common_1.Put)(':username/start'),
161
- (0, swagger_1.ApiOperation)({ summary: 'Start a child bridge (HAP or Matter).' }),
162
- (0, swagger_1.ApiParam)({
163
- name: 'username',
164
- type: 'string',
165
- description: 'For **HAP/External**: username without colons (e.g. `0EAABBCCDDEE`), for **Matter**: username with dashes (e.g. `HB-LR5QA8K2-A7F3`).',
166
- }),
167
- __param(0, (0, common_1.Param)('username')),
168
- __metadata("design:type", Function),
169
- __metadata("design:paramtypes", [String]),
170
- __metadata("design:returntype", Promise)
171
- ], ChildBridgesController.prototype, "startChildBridge", null);
172
- __decorate([
173
- (0, common_1.Get)(':username/pairing'),
174
- (0, swagger_1.ApiOperation)({ summary: 'Get pairing information for a child bridge.' }),
175
- (0, swagger_1.ApiParam)({
176
- name: 'username',
177
- type: 'string',
178
- description: 'For **HAP/External**: username without colons (e.g. `0EAABBCCDDEE`), for **Matter**: username with dashes (e.g. `HB-LR5QA8K2-A7F3`).',
179
- }),
180
- __param(0, (0, common_1.Param)('username')),
181
- __metadata("design:type", Function),
182
- __metadata("design:paramtypes", [String]),
183
- __metadata("design:returntype", Promise)
184
- ], ChildBridgesController.prototype, "getChildBridgePairing", null);
185
- __decorate([
186
- (0, common_1.UseGuards)(admin_guard_1.AdminGuard),
187
- (0, common_1.Delete)(':username/pairing'),
188
- (0, swagger_1.ApiOperation)({ summary: 'Remove pairing for a child bridge.' }),
189
- (0, swagger_1.ApiParam)({
190
- name: 'username',
191
- type: 'string',
192
- description: 'For **HAP/External**: username without colons (e.g. `0EAABBCCDDEE`), for **Matter**: username with dashes (e.g. `HB-LR5QA8K2-A7F3`).',
193
- }),
194
- (0, swagger_1.ApiQuery)({ name: 'resetPairingInfo', type: Boolean, required: false }),
195
- (0, common_1.HttpCode)(204),
196
- __param(0, (0, common_1.Param)('username')),
197
- __param(1, (0, common_1.Query)('resetPairingInfo')),
198
- __metadata("design:type", Function),
199
- __metadata("design:paramtypes", [String, String]),
200
- __metadata("design:returntype", Promise)
201
- ], ChildBridgesController.prototype, "deleteChildBridgePairing", null);
202
- __decorate([
203
- (0, common_1.Get)(':username/accessories'),
204
- (0, swagger_1.ApiOperation)({ summary: 'Get accessories for a child bridge.' }),
205
- (0, swagger_1.ApiParam)({
206
- name: 'username',
207
- type: 'string',
208
- description: 'For **HAP/External**: username without colons (e.g. `0EAABBCCDDEE`), for **Matter**: username with dashes (e.g. `HB-LR5QA8K2-A7F3`).',
209
- }),
210
- __param(0, (0, common_1.Param)('username')),
211
- __metadata("design:type", Function),
212
- __metadata("design:paramtypes", [String]),
213
- __metadata("design:returntype", Promise)
214
- ], ChildBridgesController.prototype, "getChildBridgeAccessories", null);
215
- __decorate([
216
- (0, common_1.UseGuards)(admin_guard_1.AdminGuard),
217
- (0, common_1.Delete)(':username/accessories'),
218
- (0, swagger_1.ApiOperation)({ summary: 'Remove accessories for a child bridge.' }),
219
- (0, swagger_1.ApiParam)({
220
- name: 'username',
221
- type: 'string',
222
- description: 'For **HAP/External**: username without colons (e.g. `0EAABBCCDDEE`), for **Matter**: username with dashes (e.g. `HB-LR5QA8K2-A7F3`).',
223
- }),
224
- (0, common_1.HttpCode)(204),
225
- __param(0, (0, common_1.Param)('username')),
226
- __metadata("design:type", Function),
227
- __metadata("design:paramtypes", [String]),
228
- __metadata("design:returntype", Promise)
229
- ], ChildBridgesController.prototype, "deleteChildBridgeAccessories", null);
230
- __decorate([
231
- (0, common_1.UseGuards)(admin_guard_1.AdminGuard),
232
- (0, common_1.Delete)(),
233
- (0, swagger_1.ApiOperation)({ summary: 'Remove multiple child bridges.' }),
234
- (0, swagger_1.ApiBody)({
235
- description: 'Array of bridges to remove. For **HAP/External**: username without colons (e.g. `0EAABBCCDDEE`), for **Matter**: username with dashes (e.g. `HB-LR5QA8K2-A7F3`).',
236
- type: 'array',
237
- schema: {
238
- type: 'array',
239
- items: {
240
- type: 'object',
241
- properties: {
242
- username: { type: 'string', description: 'Bridge identifier' },
243
- resetPairingInfo: { type: 'boolean', description: 'Whether to reset pairing info' },
244
- },
245
- },
246
- },
247
- }),
248
- (0, common_1.HttpCode)(204),
249
- __param(0, (0, common_1.Body)()),
250
- __metadata("design:type", Function),
251
- __metadata("design:paramtypes", [Array]),
252
- __metadata("design:returntype", Promise)
253
- ], ChildBridgesController.prototype, "deleteMultipleBridges", null);
254
- __decorate([
255
- (0, common_1.UseGuards)(admin_guard_1.AdminGuard),
256
- (0, common_1.Delete)('accessories'),
257
- (0, swagger_1.ApiOperation)({ summary: 'Remove accessories for multiple bridges.' }),
258
- (0, swagger_1.ApiBody)({
259
- description: 'Array of bridge usernames. For **HAP/External**: username without colons (e.g. `0EAABBCCDDEE`), for **Matter**: username with dashes (e.g. `HB-LR5QA8K2-A7F3`).',
260
- type: 'array',
261
- schema: {
262
- type: 'array',
263
- items: {
264
- type: 'object',
265
- properties: {
266
- username: { type: 'string', description: 'Bridge identifier' },
267
- },
268
- },
269
- },
270
- }),
271
- (0, common_1.HttpCode)(204),
272
- __param(0, (0, common_1.Body)()),
273
- __metadata("design:type", Function),
274
- __metadata("design:paramtypes", [Array]),
275
- __metadata("design:returntype", Promise)
276
- ], ChildBridgesController.prototype, "deleteMultipleAccessories", null);
277
- exports.ChildBridgesController = ChildBridgesController = __decorate([
278
- (0, swagger_1.ApiTags)('Child Bridges'),
279
- (0, swagger_1.ApiBearerAuth)(),
280
- (0, common_1.UseGuards)((0, passport_1.AuthGuard)()),
281
- (0, common_1.Controller)('child-bridges'),
282
- __metadata("design:paramtypes", [child_bridges_service_1.ChildBridgesService])
283
- ], ChildBridgesController);
284
- //# sourceMappingURL=child-bridges.controller.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"child-bridges.controller.js","sourceRoot":"","sources":["../../../src/modules/child-bridges/child-bridges.controller.ts"],"names":[],"mappings":"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"}
@@ -1 +0,0 @@
1
- import{m as K}from"./chunk-YNDC5MZW.js";import{B as J,e as W,l as z,s as q,t as H,v as G}from"./chunk-NKX7JONP.js";import{e as Z}from"./chunk-Z5SXR7XM.js";import{k as Q,l as X,n as Y,q as ee}from"./chunk-AVLU4OBB.js";import{Db as w,Gb as h,Ib as d,La as s,Lc as O,Vb as l,Wa as V,Wb as v,Xb as I,Yb as F,a as R,ac as U,b as M,bc as L,cc as N,h as D,ic as j,ja as y,jc as P,kb as E,lb as g,mb as x,nc as _,oa as f,ob as $,oc as u,pa as C,pb as k,qb as T,rb as b,sb as o,tb as a,ub as B,w as A}from"./chunk-3SCINSZK.js";var te=(t,r)=>({"btn-danger":t,"btn-elegant":r}),ie=(t,r,e)=>({"fa-trash":t,"fa-undo":r,"fa-spinner fa-pulse":e});function ne(t,r){t&1&&(o(0,"div",12),B(1,"i",13),a(),o(2,"p",14),l(3),_(4,"translate"),a()),t&2&&(s(3),v(u(4,1,"reset.no_accessories")))}function se(t,r){if(t&1&&(o(0,"option",24),l(1),a()),t&2){let e=r.$implicit;b("value",e._id),s(),F("",e.name," (",e._username,")")}}function oe(t,r){if(t&1){let e=w();o(0,"li",20),l(1),_(2,"translate"),a(),o(3,"li",18)(4,"label",21),l(5),_(6,"translate"),a(),o(7,"div",22)(8,"select",23),N("ngModelChange",function(i){f(e);let m=d(2);return L(m.selectedBridge,i)||(m.selectedBridge=i),C(i)}),h("change",function(i){f(e);let m=d(2);return C(m.onBridgeChange(i.target.value))}),k(9,se,2,3,"option",24,$),a()()()}if(t&2){let e=d(2);s(),v(u(2,3,"form.label.changes_kept")),s(4),v(u(6,5,"reset.accessory_ind.bridge")),s(3),U("ngModel",e.selectedBridge),s(),T(e.pairings)}}function ae(t,r){if(t&1&&(o(0,"li",18)(1,"label",25),l(2),_(3,"translate"),a(),o(4,"div",26),l(5),a()()),t&2){let e=d(2);s(2),v(u(3,2,"reset.accessory_ind.bridge")),s(3),I(" ",e.getCurrentlySelectedBridge()," ")}}function re(t,r){if(t&1){let e=w();o(0,"li",19)(1,"span"),l(2),B(3,"br"),o(4,"small")(5,"span",27),l(6),a()()(),o(7,"button",28),_(8,"translate"),h("click",function(){let i=f(e).$implicit,m=d(2);return C(m.toggleList(i.UUID,i.$cacheFile))}),B(9,"i",29),a()()}if(t&2){let e=r.$implicit,n=d(2);s(2),I(" ",e.displayName),s(4),v(e.UUID),s(),b("disabled",n.clicked)("ngClass",j(8,te,!n.isInList(e.UUID,e.$cacheFile),n.isInList(e.UUID,e.$cacheFile))),E("aria-label",u(8,6,"form.button_delete")),s(2),b("ngClass",P(11,ie,!n.isInList(e.UUID,e.$cacheFile),n.isInList(e.UUID,e.$cacheFile)&&!n.clicked,n.isInList(e.UUID,e.$cacheFile)&&n.clicked))}}function le(t,r){if(t&1&&(o(0,"div",12),B(1,"i",15),a(),o(2,"ul",16)(3,"li"),l(4),_(5,"translate"),a(),o(6,"li"),l(7),_(8,"translate"),a(),o(9,"li"),l(10),_(11,"translate"),a()(),o(12,"ul",17),g(13,oe,11,7),g(14,ae,6,4,"li",18),k(15,re,10,15,"li",19,$),a()),t&2){let e=d();s(4),v(u(5,5,"reset.accessory_ind.list_1")),s(3),v(u(8,7,"reset.accessory_ind.list_2")),s(3),v(u(11,9,"reset.accessory_ind.list_3")),s(3),x(e.pairings.length>1?13:-1),s(),x(e.pairings.length===1?14:-1),s(),T(e.selectedBridgeAccessories)}}function ce(t,r){if(t&1){let e=w();o(0,"button",30),h("click",function(){f(e);let i=d();return C(i.dismissModal())}),l(1),_(2,"translate"),a()}if(t&2){let e=d();b("disabled",e.clicked),s(),I(" ",u(2,2,"form.button_close")," ")}}function de(t,r){if(t&1){let e=w();o(0,"button",31),h("click",function(){f(e);let i=d();return C(i.dismissModal())}),l(1),_(2,"translate"),a()}t&2&&(s(),I(" ",u(2,1,"form.button_close")," "))}function me(t,r){if(t&1&&l(0),t&2){let e=d(3);I(" (",e.toDelete.length,") ")}}function pe(t,r){if(t&1&&(l(0),_(1,"translate"),g(2,me,1,1)),t&2){let e=d(2);I(" ",u(1,2,"form.button_remove")," "),s(2),x(e.toDelete.length>0?2:-1)}}function _e(t,r){t&1&&B(0,"i",33)}function ue(t,r){if(t&1){let e=w();o(0,"button",32),h("click",function(){f(e);let i=d();return C(i.removeAccessories())}),g(1,pe,3,4),g(2,_e,1,0,"i",33),a()}if(t&2){let e=d();b("disabled",!e.toDelete.length||e.clicked),s(),x(e.clicked?-1:1),s(),x(e.clicked?2:-1)}}var Ee=(()=>{class t{$activeModal=y(K);$api=y(ee);$router=y(Z);$toastr=y(Y);$translate=y(Q);selectedBridge="";pairings=[];clicked=!1;selectedBridgeAccessories=[];accessoriesExist=!1;toDelete=[];ngOnInit(){this.loadCachedAccessories()}onBridgeChange(e){this.selectedBridge=e,this.selectedBridgeAccessories=this.pairings.find(n=>n._id===this.selectedBridge)?.accessories}getCurrentlySelectedBridge(){let e=this.pairings.find(n=>n._id===this.selectedBridge);return`${e.name} - ${e._username}`}toggleList(e,n){this.toDelete.some(i=>i.uuid===e&&i.cacheFile===n)?this.toDelete=this.toDelete.filter(i=>i.uuid!==e||i.cacheFile!==n):this.toDelete.push({cacheFile:n,uuid:e})}isInList(e,n){return this.toDelete.some(i=>i.uuid===e&&i.cacheFile===n)}removeAccessories(){return this.clicked=!0,this.$api.delete("/server/cached-accessories",{body:this.toDelete}).subscribe({next:()=>{this.$toastr.success(this.$translate.instant("reset.accessory_ind.done"),this.$translate.instant("toast.title_success")),this.$activeModal.close(),this.$router.navigate(["/restart"],{queryParams:{restarting:!0}})},error:e=>{this.clicked=!1,console.error(e),this.$toastr.error(this.$translate.instant("reset.accessory_ind.fail"),this.$translate.instant("toast.title_error"))}})}dismissModal(){this.$activeModal.dismiss("Dismiss")}loadCachedAccessories(){return D(this,null,function*(){try{let[e,n,i]=yield Promise.all([A(this.$api.get("/server/cached-accessories")),A(this.$api.get("/child-bridges")),A(this.$api.get("/config-editor"))]),m=new Map,S=i.bridge?.username?.replace(/:/g,"")||"";S&&m.set(S,{_id:S,_username:i.bridge?.username||"",name:i.bridge?.name||"Homebridge",_main:!0,accessories:[]}),n.forEach(p=>{let c=p.username?.replace(/:/g,"");c&&m.set(c,M(R({},p),{_id:c,_username:p.username,accessories:[]}))}),e.sort((p,c)=>p.displayName.localeCompare(c.displayName)).forEach(p=>{let c=p.$cacheFile?.split(".")?.[1]||S;(!this.selectedBridge||this.selectedBridge===c)&&(m.has(c)||m.set(c,{_id:c,_username:c.match(/.{1,2}/g).join(":"),name:this.$translate.instant("reset.accessory_ind.unknown"),accessories:[]}),m.get(c).accessories.push(p))}),this.pairings=Array.from(m.values()).filter(p=>p.accessories.length>0).sort((p,c)=>p._main&&!c._main?-1:!p._main&&c._main?1:p.name.localeCompare(c.name)),this.selectedBridge=this.selectedBridge||this.pairings[0]?._id,this.selectedBridge&&(this.accessoriesExist=!0,this.selectedBridgeAccessories=this.pairings[0].accessories)}catch(e){console.error(e),this.$toastr.error(this.$translate.instant("reset.error_message"),this.$translate.instant("toast.title_error")),this.$activeModal.close()}})}static \u0275fac=function(n){return new(n||t)};static \u0275cmp=V({type:t,selectors:[["ng-component"]],inputs:{selectedBridge:"selectedBridge"},decls:17,vars:12,consts:[[1,"modal-content"],[1,"modal-header"],[1,"modal-title"],["type","button","data-bs-dismiss","modal",1,"btn-close",3,"click","disabled"],[1,"modal-body"],[1,"modal-footer","justify-content-between"],[1,"text-start"],["type","button","data-bs-dismiss","modal",1,"btn","btn-elegant",3,"disabled"],[1,"text-center"],["type","button","data-bs-dismiss","modal",1,"btn","btn-elegant"],[1,"text-end"],["type","button","data-bs-dismiss","modal",1,"btn","btn-danger",3,"disabled"],[1,"text-center","mb-3"],[1,"fas","fa-circle-check","primary-text",2,"font-size","75px"],[1,"mb-0","text-center"],[1,"fas","fa-network-wired","primary-text",2,"font-size","75px"],[1,"mb-3"],[1,"list-group","list-group-box","mb-0"],[1,"list-group-item","d-flex","flex-column","flex-md-row","align-items-center"],[1,"list-group-item","d-flex","justify-content-between","align-items-center"],[1,"list-group-item","text-center","grey-text","small"],["for","bridgeSelect",1,"mb-2","mb-md-0","w-100","w-md-50"],[1,"text-start","text-md-end","w-100","w-md-50"],["id","bridgeSelect",1,"custom-select",3,"ngModelChange","change","ngModel"],[3,"value"],[1,"mb-2","mb-md-0","w-100","w-md-50"],[1,"text-start","text-md-end","w-100","w-md-50","grey-text","font-monospace"],[1,"font-monospace","grey-text"],[1,"btn","btn-danger","m-0","ms-3",3,"click","disabled","ngClass"],[1,"fas",3,"ngClass"],["type","button","data-bs-dismiss","modal",1,"btn","btn-elegant",3,"click","disabled"],["type","button","data-bs-dismiss","modal",1,"btn","btn-elegant",3,"click"],["type","button","data-bs-dismiss","modal",1,"btn","btn-danger",3,"click","disabled"],[1,"fas","fa-spinner","fa-pulse"]],template:function(n,i){n&1&&(o(0,"div",0)(1,"div",1)(2,"h5",2),l(3),_(4,"translate"),a(),o(5,"button",3),_(6,"translate"),h("click",function(){return i.dismissModal()}),a()(),o(7,"div",4),g(8,ne,5,3),g(9,le,17,11),a(),o(10,"div",5)(11,"div",6),g(12,ce,3,4,"button",7),a(),o(13,"div",8),g(14,de,3,3,"button",9),a(),o(15,"div",10),g(16,ue,3,3,"button",11),a()()()),n&2&&(s(3),v(u(4,8,"reset.accessory_ind.title")),s(2),b("disabled",i.clicked),E("aria-label",u(6,10,"form.button_close")),s(3),x(i.accessoriesExist?-1:8),s(),x(i.accessoriesExist?9:-1),s(3),x(i.accessoriesExist?12:-1),s(2),x(i.accessoriesExist?-1:14),s(2),x(i.accessoriesExist?16:-1))},dependencies:[O,J,H,G,q,W,z,X],encapsulation:2})}return t})();export{Ee as a};