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

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 (141) hide show
  1. package/CHANGELOG.md +12 -1
  2. package/dist/app.module.js +0 -4
  3. package/dist/app.module.js.map +1 -1
  4. package/dist/core/auth/auth.controller.d.ts +2 -0
  5. package/dist/core/config/config.interfaces.d.ts +0 -2
  6. package/dist/core/config/config.service.d.ts +3 -0
  7. package/dist/core/config/config.service.js +20 -0
  8. package/dist/core/config/config.service.js.map +1 -1
  9. package/dist/core/feature-flags/feature-flags.registry.d.ts +6 -0
  10. package/dist/core/feature-flags/feature-flags.registry.js +16 -0
  11. package/dist/core/feature-flags/feature-flags.registry.js.map +1 -0
  12. package/dist/core/homebridge-ipc/homebridge-ipc.service.d.ts +1 -1
  13. package/dist/core/homebridge-ipc/homebridge-ipc.service.js +2 -8
  14. package/dist/core/homebridge-ipc/homebridge-ipc.service.js.map +1 -1
  15. package/dist/modules/child-bridges/child-bridges.interfaces.d.ts +22 -6
  16. package/dist/modules/child-bridges/child-bridges.service.js.map +1 -1
  17. package/dist/modules/config-editor/config-editor.controller.d.ts +5 -0
  18. package/dist/modules/config-editor/config-editor.controller.js +44 -0
  19. package/dist/modules/config-editor/config-editor.controller.js.map +1 -1
  20. package/dist/modules/config-editor/config-editor.module.js +2 -0
  21. package/dist/modules/config-editor/config-editor.module.js.map +1 -1
  22. package/dist/modules/config-editor/config-editor.service.d.ts +9 -1
  23. package/dist/modules/config-editor/config-editor.service.js +41 -2
  24. package/dist/modules/config-editor/config-editor.service.js.map +1 -1
  25. package/dist/modules/plugins/plugins.service.js +9 -0
  26. package/dist/modules/plugins/plugins.service.js.map +1 -1
  27. package/dist/modules/server/server.controller.d.ts +0 -8
  28. package/dist/modules/server/server.controller.js +0 -34
  29. package/dist/modules/server/server.controller.js.map +1 -1
  30. package/dist/modules/server/server.module.js +0 -2
  31. package/dist/modules/server/server.module.js.map +1 -1
  32. package/dist/modules/server/server.service.d.ts +1 -10
  33. package/dist/modules/server/server.service.js +15 -77
  34. package/dist/modules/server/server.service.js.map +1 -1
  35. package/dist/modules/status/status.gateway.d.ts +2 -0
  36. package/dist/modules/status/status.interfaces.d.ts +21 -1
  37. package/dist/modules/status/status.interfaces.js +1 -1
  38. package/dist/modules/status/status.interfaces.js.map +1 -1
  39. package/dist/modules/status/status.service.d.ts +4 -1
  40. package/dist/modules/status/status.service.js +10 -1
  41. package/dist/modules/status/status.service.js.map +1 -1
  42. package/package.json +3 -3
  43. package/public/{chunk-K4H6PB2J.js → chunk-24V3NGFI.js} +1 -1
  44. package/public/{chunk-ULZPLNSU.js → chunk-2BL56S4G.js} +1 -1
  45. package/public/{chunk-Y3W3WZ42.js → chunk-2WBA3XZY.js} +1 -1
  46. package/public/{chunk-BXTJNIAF.js → chunk-36QBSL7L.js} +1 -1
  47. package/public/{chunk-ZNLFE6SA.js → chunk-3VNZJLNK.js} +1 -1
  48. package/public/{chunk-YULDG6HZ.js → chunk-4FEGH2UB.js} +1 -1
  49. package/public/{chunk-Z37KQHXT.js → chunk-6ITGU7FZ.js} +1 -1
  50. package/public/{chunk-BKJWDEC4.js → chunk-6KKB6PSI.js} +1 -1
  51. package/public/{chunk-2EKZK7NX.js → chunk-76V3BHHF.js} +1 -1
  52. package/public/chunk-7XWF5TOT.js +16 -0
  53. package/public/{chunk-ROHOV4PQ.js → chunk-AJQCA47Y.js} +1 -1
  54. package/public/{chunk-FBEAGLXX.js → chunk-AQDMQEAB.js} +1 -1
  55. package/public/{chunk-OI6KCFXH.js → chunk-B4Y5HQE7.js} +1 -1
  56. package/public/{chunk-VI7CE3DV.js → chunk-CVCFOY5E.js} +1 -1
  57. package/public/{chunk-K3HCHWTM.js → chunk-CYTLZ6YW.js} +1 -1
  58. package/public/chunk-DMJW5ZHK.js +49 -0
  59. package/public/{chunk-XRLPCXVY.js → chunk-EC7TS3KB.js} +1 -1
  60. package/public/{chunk-KAFW5DRA.js → chunk-EPX4XXOW.js} +1 -1
  61. package/public/{chunk-NWKHE4QY.js → chunk-FOP6PLYE.js} +5 -5
  62. package/public/{chunk-GOK2QVWT.js → chunk-FPKBFKV5.js} +1 -1
  63. package/public/{chunk-3XNA4EQU.js → chunk-FTBZTBWU.js} +1 -1
  64. package/public/{chunk-A5EKMCXX.js → chunk-FVYFMBVK.js} +1 -1
  65. package/public/{chunk-AW6ZPEG3.js → chunk-GXYNICAR.js} +1 -1
  66. package/public/{chunk-BJULQD6Z.js → chunk-IR365KDC.js} +1 -1
  67. package/public/{chunk-GXMQ3BRX.js → chunk-J3R4IDEX.js} +1 -1
  68. package/public/{chunk-BD2WNMUL.js → chunk-JEOUZZWT.js} +1 -1
  69. package/public/{chunk-PC74JU2B.js → chunk-KG4GU7WY.js} +1 -1
  70. package/public/{chunk-JAPQGXHI.js → chunk-KQOV7H7Y.js} +1 -1
  71. package/public/{chunk-XID2DQIK.js → chunk-KUYBQYXR.js} +1 -1
  72. package/public/{chunk-YKU27KZX.js → chunk-M6FUOKKR.js} +1 -1
  73. package/public/{chunk-AWJONODF.js → chunk-MV2PQACG.js} +1 -1
  74. package/public/{chunk-ELWCTORK.js → chunk-N2CLJOXQ.js} +1 -1
  75. package/public/{chunk-LGGTBRNV.js → chunk-NCP5DBJU.js} +1 -1
  76. package/public/{chunk-UHSROVQY.js → chunk-NNWXZ2UX.js} +1 -1
  77. package/public/chunk-NTA6XYDQ.js +1 -0
  78. package/public/{chunk-JA7WBGLB.js → chunk-NV5DYWBE.js} +1 -1
  79. package/public/{chunk-5EZCX7HV.js → chunk-ODPZEKPC.js} +1 -1
  80. package/public/{chunk-D4FV2NR6.js → chunk-OODQSAYJ.js} +1 -1
  81. package/public/chunk-P42657EJ.js +1 -0
  82. package/public/{chunk-COBEXT75.js → chunk-QBLES7DA.js} +1 -1
  83. package/public/chunk-QOUWSMXM.js +1 -0
  84. package/public/chunk-R3EG5T24.js +4 -0
  85. package/public/{chunk-5KMVHZV7.js → chunk-RACNADXJ.js} +1 -1
  86. package/public/{chunk-FKNFGRMF.js → chunk-RDNPHK2J.js} +1 -1
  87. package/public/{chunk-AR55D6KT.js → chunk-RIZYVGAC.js} +1 -1
  88. package/public/{chunk-SFXLRTS5.js → chunk-RX7ESKHZ.js} +1 -1
  89. package/public/{chunk-LXFAOFAX.js → chunk-T6MWCILD.js} +1 -1
  90. package/public/{chunk-U4SKVUE5.js → chunk-TVF3AWYQ.js} +1 -1
  91. package/public/chunk-VNSJXBAT.js +3 -0
  92. package/public/chunk-VWMX5XIX.js +1 -0
  93. package/public/{chunk-KZ6XXGP4.js → chunk-W7QZJGXY.js} +1 -1
  94. package/public/{chunk-YPUYAJME.js → chunk-WSFWMNAU.js} +1 -1
  95. package/public/{chunk-SHCD57ND.js → chunk-XKK6O4IO.js} +1 -1
  96. package/public/{chunk-ZINKZV7F.js → chunk-ZDZFMGQF.js} +1 -1
  97. package/public/chunk-ZR5W7DTP.js +1 -0
  98. package/public/{chunk-HNA35CNP.js → chunk-ZRIWYPVK.js} +1 -1
  99. package/public/index.html +2 -2
  100. package/public/{main-NHC6QBFW.js → main-GKAAYSQG.js} +1 -1
  101. package/public/{styles-4Y3CNLUV.css → styles-WNHDEKE4.css} +1 -1
  102. package/scripts/extract-plugin-alias.js +3 -36
  103. package/dist/modules/bridges/bridge-identifier.util.d.ts +0 -9
  104. package/dist/modules/bridges/bridge-identifier.util.js +0 -30
  105. package/dist/modules/bridges/bridge-identifier.util.js.map +0 -1
  106. package/dist/modules/bridges/bridges.controller.d.ts +0 -11
  107. package/dist/modules/bridges/bridges.controller.js +0 -156
  108. package/dist/modules/bridges/bridges.controller.js.map +0 -1
  109. package/dist/modules/bridges/bridges.interfaces.d.ts +0 -72
  110. package/dist/modules/bridges/bridges.interfaces.js +0 -3
  111. package/dist/modules/bridges/bridges.interfaces.js.map +0 -1
  112. package/dist/modules/bridges/bridges.module.d.ts +0 -2
  113. package/dist/modules/bridges/bridges.module.js +0 -39
  114. package/dist/modules/bridges/bridges.module.js.map +0 -1
  115. package/dist/modules/bridges/bridges.service.d.ts +0 -16
  116. package/dist/modules/bridges/bridges.service.js +0 -168
  117. package/dist/modules/bridges/bridges.service.js.map +0 -1
  118. package/dist/modules/matter-bridges/matter-bridges.controller.d.ts +0 -18
  119. package/dist/modules/matter-bridges/matter-bridges.controller.js +0 -104
  120. package/dist/modules/matter-bridges/matter-bridges.controller.js.map +0 -1
  121. package/dist/modules/matter-bridges/matter-bridges.gateway.d.ts +0 -19
  122. package/dist/modules/matter-bridges/matter-bridges.gateway.js +0 -128
  123. package/dist/modules/matter-bridges/matter-bridges.gateway.js.map +0 -1
  124. package/dist/modules/matter-bridges/matter-bridges.interfaces.d.ts +0 -24
  125. package/dist/modules/matter-bridges/matter-bridges.interfaces.js +0 -3
  126. package/dist/modules/matter-bridges/matter-bridges.interfaces.js.map +0 -1
  127. package/dist/modules/matter-bridges/matter-bridges.module.d.ts +0 -2
  128. package/dist/modules/matter-bridges/matter-bridges.module.js +0 -43
  129. package/dist/modules/matter-bridges/matter-bridges.module.js.map +0 -1
  130. package/dist/modules/matter-bridges/matter-bridges.service.d.ts +0 -41
  131. package/dist/modules/matter-bridges/matter-bridges.service.js +0 -329
  132. package/dist/modules/matter-bridges/matter-bridges.service.js.map +0 -1
  133. package/public/chunk-4Y2KPCHA.js +0 -1
  134. package/public/chunk-5BCOF7IG.js +0 -49
  135. package/public/chunk-BQTCHQHZ.js +0 -1
  136. package/public/chunk-EYNZEIGI.js +0 -3
  137. package/public/chunk-MJBWBNSG.js +0 -1
  138. package/public/chunk-P3A7PEYC.js +0 -17
  139. package/public/chunk-SXARTKV3.js +0 -1
  140. package/public/chunk-V7NTVYMU.js +0 -4
  141. package/public/chunk-VUV53WFF.js +0 -1
@@ -6,6 +6,7 @@
6
6
 
7
7
  const process = require('node:process')
8
8
  const EventEmitter = require('node:events').EventEmitter
9
+ const { readFileSync } = require('node:fs')
9
10
  const path = require('node:path')
10
11
 
11
12
  let pluginAlias
@@ -121,27 +122,17 @@ const HomebridgeApiMock = {
121
122
 
122
123
  async function main() {
123
124
  try {
124
- console.error('[extract-plugin-alias] Starting extraction...')
125
125
  let pluginInitializer
126
126
  const pluginPath = process.env.UIX_EXTRACT_PLUGIN_PATH
127
- console.error('[extract-plugin-alias] Plugin path:', pluginPath)
128
127
 
129
128
  // Read package.json to get the proper entry point
130
129
  let actualEntryPoint = pluginPath
131
130
  try {
132
- const fs = require('node:fs')
133
131
  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'))
132
+ const packageJson = JSON.parse(readFileSync(packageJsonPath, 'utf8'))
136
133
 
137
134
  if (packageJson.main) {
138
135
  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
136
  }
146
137
  } catch (err) {
147
138
  console.error('[extract-plugin-alias] Could not read package.json, using directory path')
@@ -151,47 +142,29 @@ async function main() {
151
142
 
152
143
  // Try to load as CommonJS first
153
144
  try {
154
- console.error('[extract-plugin-alias] Attempting CommonJS require...')
155
145
  pluginModules = require(actualEntryPoint)
156
- console.error('[extract-plugin-alias] Plugin loaded via CommonJS')
157
146
  } catch (requireError) {
158
147
  // 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
148
  try {
162
149
  // For ESM, we need to use file:// URL on some platforms
163
150
  const importPath = actualEntryPoint.startsWith('/') || actualEntryPoint.startsWith('file://')
164
151
  ? actualEntryPoint
165
152
  : path.resolve(actualEntryPoint)
166
- console.error('[extract-plugin-alias] Import path:', importPath)
167
153
  pluginModules = await import(importPath)
168
- console.error('[extract-plugin-alias] Plugin loaded via ESM import')
169
154
  } catch (importError) {
170
- console.error('[extract-plugin-alias] ESM import also failed:', importError.message)
171
155
  throw requireError // Throw the original error
172
156
  }
173
157
  }
174
158
 
175
- console.error('[extract-plugin-alias] Plugin loaded, checking for initializer...')
176
-
177
159
  if (typeof pluginModules === 'function') {
178
- console.error('[extract-plugin-alias] Found function export')
179
160
  pluginInitializer = pluginModules
180
161
  } else if (pluginModules && typeof pluginModules.default === 'function') {
181
- console.error('[extract-plugin-alias] Found default function export')
182
162
  pluginInitializer = pluginModules.default
183
163
  } 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 || {}))
188
164
  throw new Error(`Plugin ${pluginPath} does not export a initializer function from main.`)
189
165
  }
190
166
 
191
- console.error('[extract-plugin-alias] Calling plugin initializer...')
192
167
  pluginInitializer(HomebridgeApiMock)
193
- console.error('[extract-plugin-alias] Plugin initialized')
194
- console.error('[extract-plugin-alias] Extracted alias:', pluginAlias, 'type:', pluginType)
195
168
 
196
169
  process.send({
197
170
  pluginAlias,
@@ -199,18 +172,12 @@ async function main() {
199
172
  })
200
173
  process.exit()
201
174
  } catch (e) {
202
- console.error('[extract-plugin-alias] Error during extraction:', e.message)
203
- console.error('[extract-plugin-alias] Stack:', e.stack)
204
175
  process.exit(1)
205
176
  }
206
177
  }
207
178
 
208
- main().catch((err) => {
209
- console.error('[extract-plugin-alias] Unhandled error:', err)
210
- process.exit(1)
211
- })
179
+ main()
212
180
 
213
181
  setTimeout(() => {
214
- console.error('[extract-plugin-alias] Timeout - extraction took too long')
215
182
  process.exit(1)
216
183
  }, 2500)
@@ -1,9 +0,0 @@
1
- import type { BridgeType } from './bridges.interfaces';
2
- export declare class BridgeIdentifierUtil {
3
- static sanitizeForFilesystem(username: string, type: BridgeType): string;
4
- static sanitizeForEndpoint(username: string): string;
5
- static idToUsername(id: string): string;
6
- static getMatterIdentifier(username: string): string;
7
- static getHapIdentifier(username: string): string;
8
- static normalizeUsername(username: string): string;
9
- }
@@ -1,30 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.BridgeIdentifierUtil = void 0;
4
- class BridgeIdentifierUtil {
5
- static sanitizeForFilesystem(username, type) {
6
- const base = type === 'matter' ? `${username}-matter` : username;
7
- return base
8
- .replace(/[^a-z0-9]/gi, '-')
9
- .replace(/-+/g, '-')
10
- .replace(/^-|-$/g, '');
11
- }
12
- static sanitizeForEndpoint(username) {
13
- return username.replace(/:/g, '');
14
- }
15
- static idToUsername(id) {
16
- const matched = id.match(/.{1,2}/g);
17
- return matched ? matched.join(':').toUpperCase() : id;
18
- }
19
- static getMatterIdentifier(username) {
20
- return this.sanitizeForFilesystem(username, 'matter');
21
- }
22
- static getHapIdentifier(username) {
23
- return this.sanitizeForFilesystem(username, 'hap');
24
- }
25
- static normalizeUsername(username) {
26
- return username.toUpperCase();
27
- }
28
- }
29
- exports.BridgeIdentifierUtil = BridgeIdentifierUtil;
30
- //# sourceMappingURL=bridge-identifier.util.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"bridge-identifier.util.js","sourceRoot":"","sources":["../../../src/modules/bridges/bridge-identifier.util.ts"],"names":[],"mappings":";;;AAQA,MAAa,oBAAoB;IAoB/B,MAAM,CAAC,qBAAqB,CAAC,QAAgB,EAAE,IAAgB;QAC7D,MAAM,IAAI,GAAG,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,GAAG,QAAQ,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAA;QAChE,OAAO,IAAI;aACR,OAAO,CAAC,aAAa,EAAE,GAAG,CAAC;aAC3B,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC;aACnB,OAAO,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAA;IAC1B,CAAC;IAgBD,MAAM,CAAC,mBAAmB,CAAC,QAAgB;QACzC,OAAO,QAAQ,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,CAAA;IACnC,CAAC;IAgBD,MAAM,CAAC,YAAY,CAAC,EAAU;QAC5B,MAAM,OAAO,GAAG,EAAE,CAAC,KAAK,CAAC,SAAS,CAAC,CAAA;QACnC,OAAO,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE,CAAA;IACvD,CAAC;IAgBD,MAAM,CAAC,mBAAmB,CAAC,QAAgB;QACzC,OAAO,IAAI,CAAC,qBAAqB,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAA;IACvD,CAAC;IAgBD,MAAM,CAAC,gBAAgB,CAAC,QAAgB;QACtC,OAAO,IAAI,CAAC,qBAAqB,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAA;IACpD,CAAC;IAgBD,MAAM,CAAC,iBAAiB,CAAC,QAAgB;QACvC,OAAO,QAAQ,CAAC,WAAW,EAAE,CAAA;IAC/B,CAAC;CACF;AAtHD,oDAsHC"}
@@ -1,11 +0,0 @@
1
- import { BridgesService } from './bridges.service';
2
- export declare class BridgesController {
3
- private readonly bridgesService;
4
- constructor(bridgesService: BridgesService);
5
- getCommissioningInfo(username: string, type?: 'hap' | 'matter'): Promise<import("./bridges.interfaces").BridgeCommissioningInfo>;
6
- deleteBridge(username: string, type: 'hap' | 'matter' | 'both', resetPairingInfo?: string): Promise<{
7
- ok: boolean;
8
- }>;
9
- getBridgeMetadata(username: string, type?: 'hap' | 'matter'): Promise<import("./bridges.interfaces").BridgeMetadata>;
10
- getAllBridgeMetadata(type?: 'hap' | 'matter'): Promise<import("./bridges.interfaces").BridgeMetadata[]>;
11
- }
@@ -1,156 +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.BridgesController = 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 bridges_service_1 = require("./bridges.service");
21
- let BridgesController = class BridgesController {
22
- constructor(bridgesService) {
23
- this.bridgesService = bridgesService;
24
- }
25
- async getCommissioningInfo(username, type) {
26
- const bridgeType = type || 'hap';
27
- const normalizedUsername = username.includes(':')
28
- ? username
29
- : username.match(/.{1,2}/g)?.join(':') || username;
30
- return await this.bridgesService.getCommissioningInfo(normalizedUsername, bridgeType);
31
- }
32
- async deleteBridge(username, type, resetPairingInfo) {
33
- if (!type) {
34
- throw new common_1.BadRequestException('Query parameter "type" is required (hap, matter, or both)');
35
- }
36
- const normalizedUsername = username.includes(':')
37
- ? username
38
- : username.match(/.{1,2}/g)?.join(':') || username;
39
- const resetPairingInfoBool = resetPairingInfo === 'true';
40
- return await this.bridgesService.deleteBridge(normalizedUsername, type, resetPairingInfoBool);
41
- }
42
- async getBridgeMetadata(username, type) {
43
- const bridgeType = type || 'hap';
44
- const normalizedUsername = username.includes(':')
45
- ? username
46
- : username.match(/.{1,2}/g)?.join(':') || username;
47
- return await this.bridgesService.getBridgeMetadata(normalizedUsername, bridgeType);
48
- }
49
- async getAllBridgeMetadata(type) {
50
- return await this.bridgesService.getAllBridgeMetadata(type);
51
- }
52
- };
53
- exports.BridgesController = BridgesController;
54
- __decorate([
55
- (0, common_1.UseGuards)(admin_guard_1.AdminGuard),
56
- (0, swagger_1.ApiOperation)({
57
- summary: 'Get bridge commissioning/pairing information',
58
- description: 'Returns unified commissioning info for HAP or Matter bridges',
59
- }),
60
- (0, swagger_1.ApiParam)({
61
- name: 'username',
62
- description: 'Bridge username in MAC format (e.g., "0E:DD:15:2B:48:AA" or "0EDD152B48AA")',
63
- }),
64
- (0, swagger_1.ApiQuery)({
65
- name: 'type',
66
- enum: ['hap', 'matter'],
67
- description: 'Bridge type to query',
68
- required: false,
69
- }),
70
- (0, common_1.Get)(':username/info'),
71
- __param(0, (0, common_1.Param)('username')),
72
- __param(1, (0, common_1.Query)('type')),
73
- __metadata("design:type", Function),
74
- __metadata("design:paramtypes", [String, String]),
75
- __metadata("design:returntype", Promise)
76
- ], BridgesController.prototype, "getCommissioningInfo", null);
77
- __decorate([
78
- (0, common_1.UseGuards)(admin_guard_1.AdminGuard),
79
- (0, swagger_1.ApiOperation)({
80
- summary: 'Delete a bridge',
81
- description: 'Delete HAP and/or Matter bridge. Explicitly specify which type(s) to delete.',
82
- }),
83
- (0, swagger_1.ApiParam)({
84
- name: 'username',
85
- description: 'Bridge username in MAC format (e.g., "0E:DD:15:2B:48:AA" or "0EDD152B48AA")',
86
- }),
87
- (0, swagger_1.ApiQuery)({
88
- name: 'type',
89
- enum: ['hap', 'matter', 'both'],
90
- description: 'Which bridge type(s) to delete',
91
- required: true,
92
- }),
93
- (0, swagger_1.ApiQuery)({
94
- name: 'resetPairingInfo',
95
- type: Boolean,
96
- description: 'For HAP bridges: reset pairing info (generate new username/pin)',
97
- required: false,
98
- }),
99
- (0, common_1.Delete)(':username'),
100
- (0, common_1.HttpCode)(204),
101
- __param(0, (0, common_1.Param)('username')),
102
- __param(1, (0, common_1.Query)('type')),
103
- __param(2, (0, common_1.Query)('resetPairingInfo')),
104
- __metadata("design:type", Function),
105
- __metadata("design:paramtypes", [String, String, String]),
106
- __metadata("design:returntype", Promise)
107
- ], BridgesController.prototype, "deleteBridge", null);
108
- __decorate([
109
- (0, common_1.UseGuards)(admin_guard_1.AdminGuard),
110
- (0, swagger_1.ApiOperation)({
111
- summary: 'Get bridge metadata',
112
- description: 'Returns metadata for a specific bridge',
113
- }),
114
- (0, swagger_1.ApiParam)({
115
- name: 'username',
116
- description: 'Bridge username in MAC format (e.g., "0E:DD:15:2B:48:AA" or "0EDD152B48AA")',
117
- }),
118
- (0, swagger_1.ApiQuery)({
119
- name: 'type',
120
- enum: ['hap', 'matter'],
121
- description: 'Bridge type to query',
122
- required: false,
123
- }),
124
- (0, common_1.Get)(':username/metadata'),
125
- __param(0, (0, common_1.Param)('username')),
126
- __param(1, (0, common_1.Query)('type')),
127
- __metadata("design:type", Function),
128
- __metadata("design:paramtypes", [String, String]),
129
- __metadata("design:returntype", Promise)
130
- ], BridgesController.prototype, "getBridgeMetadata", null);
131
- __decorate([
132
- (0, common_1.UseGuards)(admin_guard_1.AdminGuard),
133
- (0, swagger_1.ApiOperation)({
134
- summary: 'Get all bridge metadata',
135
- description: 'Returns metadata for all bridges, optionally filtered by type',
136
- }),
137
- (0, swagger_1.ApiQuery)({
138
- name: 'type',
139
- enum: ['hap', 'matter'],
140
- description: 'Optional filter by bridge type',
141
- required: false,
142
- }),
143
- (0, common_1.Get)('metadata'),
144
- __param(0, (0, common_1.Query)('type')),
145
- __metadata("design:type", Function),
146
- __metadata("design:paramtypes", [String]),
147
- __metadata("design:returntype", Promise)
148
- ], BridgesController.prototype, "getAllBridgeMetadata", null);
149
- exports.BridgesController = BridgesController = __decorate([
150
- (0, swagger_1.ApiTags)('Bridges'),
151
- (0, swagger_1.ApiBearerAuth)(),
152
- (0, common_1.UseGuards)((0, passport_1.AuthGuard)()),
153
- (0, common_1.Controller)('bridges'),
154
- __metadata("design:paramtypes", [bridges_service_1.BridgesService])
155
- ], BridgesController);
156
- //# sourceMappingURL=bridges.controller.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"bridges.controller.js","sourceRoot":"","sources":["../../../src/modules/bridges/bridges.controller.ts"],"names":[],"mappings":"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"}
@@ -1,72 +0,0 @@
1
- export type BridgeType = 'hap' | 'matter';
2
- export type BridgeStatus = 'pending' | 'ok' | 'down';
3
- export interface BridgeCommissioningInfo {
4
- type: BridgeType;
5
- pin?: string;
6
- setupUri?: string;
7
- commissioned: boolean;
8
- port?: number;
9
- serialNumber?: string;
10
- displayName?: string;
11
- username?: string;
12
- setupID?: string;
13
- category?: number;
14
- _category?: string;
15
- configVersion?: number;
16
- lastFirmwareVersion?: string;
17
- _id?: string;
18
- _main?: boolean;
19
- passcode?: number;
20
- discriminator?: number;
21
- manualPairingCode?: string;
22
- qrCode?: string;
23
- matterEnabled?: boolean;
24
- }
25
- export interface BridgeMetadata {
26
- type: BridgeType;
27
- status: BridgeStatus;
28
- identifier: string;
29
- username?: string;
30
- port?: number;
31
- pin?: string;
32
- setupUri?: string;
33
- commissioned?: boolean;
34
- name: string;
35
- plugin: string;
36
- pid?: number;
37
- manuallyStopped?: boolean;
38
- serialNumber?: string;
39
- deviceCount?: number;
40
- paired?: boolean | null;
41
- qrCode?: string;
42
- manualPairingCode?: string;
43
- passcode?: number;
44
- discriminator?: number;
45
- matterEnabled?: boolean;
46
- companionBridgeConfig?: {
47
- type: BridgeType;
48
- port?: number;
49
- name?: string;
50
- identifier?: string;
51
- };
52
- }
53
- export interface BridgeConfig {
54
- matterOnly?: boolean;
55
- port?: number;
56
- name?: string;
57
- username?: string;
58
- pin?: string;
59
- setupID?: string;
60
- manufacturer?: string;
61
- model?: string;
62
- firmwareRevision?: string;
63
- debugModeEnabled?: boolean;
64
- env?: {
65
- DEBUG?: string;
66
- NODE_OPTIONS?: string;
67
- };
68
- matter?: {
69
- port?: number;
70
- name?: string;
71
- };
72
- }
@@ -1,3 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- //# sourceMappingURL=bridges.interfaces.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"bridges.interfaces.js","sourceRoot":"","sources":["../../../src/modules/bridges/bridges.interfaces.ts"],"names":[],"mappings":""}
@@ -1,2 +0,0 @@
1
- export declare class BridgesModule {
2
- }
@@ -1,39 +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
- Object.defineProperty(exports, "__esModule", { value: true });
9
- exports.BridgesModule = void 0;
10
- const common_1 = require("@nestjs/common");
11
- const passport_1 = require("@nestjs/passport");
12
- const logger_module_1 = require("../../core/logger/logger.module");
13
- const matter_bridges_module_1 = require("../matter-bridges/matter-bridges.module");
14
- const server_module_1 = require("../server/server.module");
15
- const bridges_controller_1 = require("./bridges.controller");
16
- const bridges_service_1 = require("./bridges.service");
17
- let BridgesModule = class BridgesModule {
18
- };
19
- exports.BridgesModule = BridgesModule;
20
- exports.BridgesModule = BridgesModule = __decorate([
21
- (0, common_1.Module)({
22
- imports: [
23
- passport_1.PassportModule.register({ defaultStrategy: 'jwt' }),
24
- logger_module_1.LoggerModule,
25
- server_module_1.ServerModule,
26
- matter_bridges_module_1.MatterBridgesModule,
27
- ],
28
- controllers: [
29
- bridges_controller_1.BridgesController,
30
- ],
31
- providers: [
32
- bridges_service_1.BridgesService,
33
- ],
34
- exports: [
35
- bridges_service_1.BridgesService,
36
- ],
37
- })
38
- ], BridgesModule);
39
- //# sourceMappingURL=bridges.module.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"bridges.module.js","sourceRoot":"","sources":["../../../src/modules/bridges/bridges.module.ts"],"names":[],"mappings":";;;;;;;;;AAAA,2CAAuC;AACvC,+CAAiD;AAEjD,mEAA8D;AAC9D,mFAA6E;AAC7E,2DAAsD;AACtD,6DAAwD;AACxD,uDAAkD;AA0B3C,IAAM,aAAa,GAAnB,MAAM,aAAa;CAAG,CAAA;AAAhB,sCAAa;wBAAb,aAAa;IAjBzB,IAAA,eAAM,EAAC;QACN,OAAO,EAAE;YACP,yBAAc,CAAC,QAAQ,CAAC,EAAE,eAAe,EAAE,KAAK,EAAE,CAAC;YACnD,4BAAY;YACZ,4BAAY;YACZ,2CAAmB;SACpB;QACD,WAAW,EAAE;YACX,sCAAiB;SAClB;QACD,SAAS,EAAE;YACT,gCAAc;SACf;QACD,OAAO,EAAE;YACP,gCAAc;SACf;KACF,CAAC;GACW,aAAa,CAAG"}
@@ -1,16 +0,0 @@
1
- import type { BridgeCommissioningInfo, BridgeMetadata } from './bridges.interfaces';
2
- import { MatterBridgesService } from '../matter-bridges/matter-bridges.service';
3
- import { ServerService } from '../server/server.service';
4
- export declare class BridgesService {
5
- private readonly serverService;
6
- private readonly matterBridgesService;
7
- constructor(serverService: ServerService, matterBridgesService: MatterBridgesService);
8
- getCommissioningInfo(username: string, type?: 'hap' | 'matter'): Promise<BridgeCommissioningInfo>;
9
- private getHapCommissioningInfo;
10
- private getMatterCommissioningInfo;
11
- deleteBridge(username: string, type: 'hap' | 'matter' | 'both', resetPairingInfo?: boolean): Promise<{
12
- ok: boolean;
13
- }>;
14
- getBridgeMetadata(username: string, type: 'hap' | 'matter'): Promise<BridgeMetadata | null>;
15
- getAllBridgeMetadata(type?: 'hap' | 'matter'): Promise<BridgeMetadata[]>;
16
- }
@@ -1,168 +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
- Object.defineProperty(exports, "__esModule", { value: true });
12
- exports.BridgesService = void 0;
13
- const common_1 = require("@nestjs/common");
14
- const matter_bridges_service_1 = require("../matter-bridges/matter-bridges.service");
15
- const server_service_1 = require("../server/server.service");
16
- const bridge_identifier_util_1 = require("./bridge-identifier.util");
17
- let BridgesService = class BridgesService {
18
- constructor(serverService, matterBridgesService) {
19
- this.serverService = serverService;
20
- this.matterBridgesService = matterBridgesService;
21
- }
22
- async getCommissioningInfo(username, type = 'hap') {
23
- const normalizedUsername = bridge_identifier_util_1.BridgeIdentifierUtil.normalizeUsername(username);
24
- if (type === 'hap') {
25
- return this.getHapCommissioningInfo(normalizedUsername);
26
- }
27
- else {
28
- return this.getMatterCommissioningInfo(normalizedUsername);
29
- }
30
- }
31
- async getHapCommissioningInfo(username) {
32
- const id = bridge_identifier_util_1.BridgeIdentifierUtil.sanitizeForEndpoint(username);
33
- try {
34
- const device = await this.serverService.getDevicePairingById(id);
35
- return {
36
- type: 'hap',
37
- pin: device.pincode,
38
- setupUri: device._setupCode,
39
- commissioned: device._isPaired,
40
- port: device.port,
41
- serialNumber: device.serialNumber,
42
- displayName: device.displayName,
43
- username: device._username || username,
44
- setupID: device.setupID,
45
- category: device.category,
46
- _category: device._category,
47
- configVersion: device.configVersion,
48
- lastFirmwareVersion: device.lastFirmwareVersion,
49
- _id: device._id,
50
- _main: device._main,
51
- };
52
- }
53
- catch (e) {
54
- if (e instanceof common_1.NotFoundException) {
55
- throw new common_1.NotFoundException(`HAP bridge with username ${username} not found`);
56
- }
57
- throw e;
58
- }
59
- }
60
- async getMatterCommissioningInfo(username) {
61
- const identifier = bridge_identifier_util_1.BridgeIdentifierUtil.getMatterIdentifier(username);
62
- try {
63
- const info = await this.matterBridgesService.getCommissioningInfo(identifier);
64
- return {
65
- type: 'matter',
66
- pin: info.pin,
67
- setupUri: info.setupUri,
68
- commissioned: info.commissioned,
69
- port: info.port,
70
- serialNumber: info.serialNumber,
71
- username,
72
- passcode: info.passcode,
73
- discriminator: info.discriminator,
74
- manualPairingCode: info.manualPairingCode,
75
- qrCode: info.qrCode,
76
- matterEnabled: info.matterEnabled,
77
- };
78
- }
79
- catch (e) {
80
- throw new common_1.NotFoundException(`Matter bridge with username ${username} not found`);
81
- }
82
- }
83
- async deleteBridge(username, type, resetPairingInfo = false) {
84
- const normalizedUsername = bridge_identifier_util_1.BridgeIdentifierUtil.normalizeUsername(username);
85
- if (type === 'hap' || type === 'both') {
86
- const id = bridge_identifier_util_1.BridgeIdentifierUtil.sanitizeForEndpoint(normalizedUsername);
87
- await this.serverService.deleteDevicePairing(id, resetPairingInfo);
88
- }
89
- if (type === 'matter' || type === 'both') {
90
- const identifier = bridge_identifier_util_1.BridgeIdentifierUtil.getMatterIdentifier(normalizedUsername);
91
- await this.serverService.deleteMatterBridge(identifier);
92
- }
93
- return { ok: true };
94
- }
95
- async getBridgeMetadata(username, type) {
96
- const normalizedUsername = bridge_identifier_util_1.BridgeIdentifierUtil.normalizeUsername(username);
97
- if (type === 'matter') {
98
- const identifier = bridge_identifier_util_1.BridgeIdentifierUtil.getMatterIdentifier(normalizedUsername);
99
- const bridge = await this.matterBridgesService.getMatterBridge(identifier);
100
- if (!bridge) {
101
- return null;
102
- }
103
- return bridge;
104
- }
105
- else {
106
- const id = bridge_identifier_util_1.BridgeIdentifierUtil.sanitizeForEndpoint(normalizedUsername);
107
- try {
108
- const device = await this.serverService.getDevicePairingById(id);
109
- return {
110
- type: 'hap',
111
- status: 'ok',
112
- identifier: id,
113
- username: device._username || normalizedUsername,
114
- port: device.port,
115
- pin: device.pincode,
116
- setupUri: device._setupCode,
117
- commissioned: device._isPaired,
118
- name: device.name || device.displayName,
119
- plugin: '',
120
- serialNumber: device.serialNumber,
121
- paired: device._isPaired,
122
- };
123
- }
124
- catch (e) {
125
- if (e instanceof common_1.NotFoundException) {
126
- return null;
127
- }
128
- throw e;
129
- }
130
- }
131
- }
132
- async getAllBridgeMetadata(type) {
133
- if (type === 'matter') {
134
- return await this.matterBridgesService.getMatterBridges();
135
- }
136
- else if (type === 'hap') {
137
- const pairings = await this.serverService.getDevicePairings();
138
- return pairings.map((device) => ({
139
- type: 'hap',
140
- status: 'ok',
141
- identifier: device._id,
142
- username: device._username,
143
- port: device.port,
144
- pin: device.pincode,
145
- setupUri: device._setupCode,
146
- commissioned: device._isPaired,
147
- name: device.name || device.displayName,
148
- plugin: '',
149
- serialNumber: device.serialNumber,
150
- paired: device._isPaired,
151
- }));
152
- }
153
- else {
154
- const [hapBridges, matterBridges] = await Promise.all([
155
- this.getAllBridgeMetadata('hap'),
156
- this.getAllBridgeMetadata('matter'),
157
- ]);
158
- return [...hapBridges, ...matterBridges];
159
- }
160
- }
161
- };
162
- exports.BridgesService = BridgesService;
163
- exports.BridgesService = BridgesService = __decorate([
164
- (0, common_1.Injectable)(),
165
- __metadata("design:paramtypes", [server_service_1.ServerService,
166
- matter_bridges_service_1.MatterBridgesService])
167
- ], BridgesService);
168
- //# sourceMappingURL=bridges.service.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"bridges.service.js","sourceRoot":"","sources":["../../../src/modules/bridges/bridges.service.ts"],"names":[],"mappings":"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"}