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.
- package/CHANGELOG.md +12 -1
- package/dist/app.module.js +0 -4
- package/dist/app.module.js.map +1 -1
- package/dist/core/auth/auth.controller.d.ts +2 -0
- package/dist/core/config/config.interfaces.d.ts +0 -2
- package/dist/core/config/config.service.d.ts +3 -0
- package/dist/core/config/config.service.js +20 -0
- package/dist/core/config/config.service.js.map +1 -1
- package/dist/core/feature-flags/feature-flags.registry.d.ts +6 -0
- package/dist/core/feature-flags/feature-flags.registry.js +16 -0
- package/dist/core/feature-flags/feature-flags.registry.js.map +1 -0
- package/dist/core/homebridge-ipc/homebridge-ipc.service.d.ts +1 -1
- package/dist/core/homebridge-ipc/homebridge-ipc.service.js +2 -8
- package/dist/core/homebridge-ipc/homebridge-ipc.service.js.map +1 -1
- package/dist/modules/child-bridges/child-bridges.interfaces.d.ts +22 -6
- package/dist/modules/child-bridges/child-bridges.service.js.map +1 -1
- package/dist/modules/config-editor/config-editor.controller.d.ts +5 -0
- package/dist/modules/config-editor/config-editor.controller.js +44 -0
- package/dist/modules/config-editor/config-editor.controller.js.map +1 -1
- package/dist/modules/config-editor/config-editor.module.js +2 -0
- package/dist/modules/config-editor/config-editor.module.js.map +1 -1
- package/dist/modules/config-editor/config-editor.service.d.ts +9 -1
- package/dist/modules/config-editor/config-editor.service.js +41 -2
- package/dist/modules/config-editor/config-editor.service.js.map +1 -1
- package/dist/modules/plugins/plugins.service.js +9 -0
- package/dist/modules/plugins/plugins.service.js.map +1 -1
- package/dist/modules/server/server.controller.d.ts +0 -8
- package/dist/modules/server/server.controller.js +0 -34
- package/dist/modules/server/server.controller.js.map +1 -1
- package/dist/modules/server/server.module.js +0 -2
- package/dist/modules/server/server.module.js.map +1 -1
- package/dist/modules/server/server.service.d.ts +1 -10
- package/dist/modules/server/server.service.js +15 -77
- package/dist/modules/server/server.service.js.map +1 -1
- package/dist/modules/status/status.gateway.d.ts +2 -0
- package/dist/modules/status/status.interfaces.d.ts +21 -1
- package/dist/modules/status/status.interfaces.js +1 -1
- package/dist/modules/status/status.interfaces.js.map +1 -1
- package/dist/modules/status/status.service.d.ts +4 -1
- package/dist/modules/status/status.service.js +10 -1
- package/dist/modules/status/status.service.js.map +1 -1
- package/package.json +3 -3
- package/public/{chunk-K4H6PB2J.js → chunk-24V3NGFI.js} +1 -1
- package/public/{chunk-ULZPLNSU.js → chunk-2BL56S4G.js} +1 -1
- package/public/{chunk-Y3W3WZ42.js → chunk-2WBA3XZY.js} +1 -1
- package/public/{chunk-BXTJNIAF.js → chunk-36QBSL7L.js} +1 -1
- package/public/{chunk-ZNLFE6SA.js → chunk-3VNZJLNK.js} +1 -1
- package/public/{chunk-YULDG6HZ.js → chunk-4FEGH2UB.js} +1 -1
- package/public/{chunk-Z37KQHXT.js → chunk-6ITGU7FZ.js} +1 -1
- package/public/{chunk-BKJWDEC4.js → chunk-6KKB6PSI.js} +1 -1
- package/public/{chunk-2EKZK7NX.js → chunk-76V3BHHF.js} +1 -1
- package/public/chunk-7XWF5TOT.js +16 -0
- package/public/{chunk-ROHOV4PQ.js → chunk-AJQCA47Y.js} +1 -1
- package/public/{chunk-FBEAGLXX.js → chunk-AQDMQEAB.js} +1 -1
- package/public/{chunk-OI6KCFXH.js → chunk-B4Y5HQE7.js} +1 -1
- package/public/{chunk-VI7CE3DV.js → chunk-CVCFOY5E.js} +1 -1
- package/public/{chunk-K3HCHWTM.js → chunk-CYTLZ6YW.js} +1 -1
- package/public/chunk-DMJW5ZHK.js +49 -0
- package/public/{chunk-XRLPCXVY.js → chunk-EC7TS3KB.js} +1 -1
- package/public/{chunk-KAFW5DRA.js → chunk-EPX4XXOW.js} +1 -1
- package/public/{chunk-NWKHE4QY.js → chunk-FOP6PLYE.js} +5 -5
- package/public/{chunk-GOK2QVWT.js → chunk-FPKBFKV5.js} +1 -1
- package/public/{chunk-3XNA4EQU.js → chunk-FTBZTBWU.js} +1 -1
- package/public/{chunk-A5EKMCXX.js → chunk-FVYFMBVK.js} +1 -1
- package/public/{chunk-AW6ZPEG3.js → chunk-GXYNICAR.js} +1 -1
- package/public/{chunk-BJULQD6Z.js → chunk-IR365KDC.js} +1 -1
- package/public/{chunk-GXMQ3BRX.js → chunk-J3R4IDEX.js} +1 -1
- package/public/{chunk-BD2WNMUL.js → chunk-JEOUZZWT.js} +1 -1
- package/public/{chunk-PC74JU2B.js → chunk-KG4GU7WY.js} +1 -1
- package/public/{chunk-JAPQGXHI.js → chunk-KQOV7H7Y.js} +1 -1
- package/public/{chunk-XID2DQIK.js → chunk-KUYBQYXR.js} +1 -1
- package/public/{chunk-YKU27KZX.js → chunk-M6FUOKKR.js} +1 -1
- package/public/{chunk-AWJONODF.js → chunk-MV2PQACG.js} +1 -1
- package/public/{chunk-ELWCTORK.js → chunk-N2CLJOXQ.js} +1 -1
- package/public/{chunk-LGGTBRNV.js → chunk-NCP5DBJU.js} +1 -1
- package/public/{chunk-UHSROVQY.js → chunk-NNWXZ2UX.js} +1 -1
- package/public/chunk-NTA6XYDQ.js +1 -0
- package/public/{chunk-JA7WBGLB.js → chunk-NV5DYWBE.js} +1 -1
- package/public/{chunk-5EZCX7HV.js → chunk-ODPZEKPC.js} +1 -1
- package/public/{chunk-D4FV2NR6.js → chunk-OODQSAYJ.js} +1 -1
- package/public/chunk-P42657EJ.js +1 -0
- package/public/{chunk-COBEXT75.js → chunk-QBLES7DA.js} +1 -1
- package/public/chunk-QOUWSMXM.js +1 -0
- package/public/chunk-R3EG5T24.js +4 -0
- package/public/{chunk-5KMVHZV7.js → chunk-RACNADXJ.js} +1 -1
- package/public/{chunk-FKNFGRMF.js → chunk-RDNPHK2J.js} +1 -1
- package/public/{chunk-AR55D6KT.js → chunk-RIZYVGAC.js} +1 -1
- package/public/{chunk-SFXLRTS5.js → chunk-RX7ESKHZ.js} +1 -1
- package/public/{chunk-LXFAOFAX.js → chunk-T6MWCILD.js} +1 -1
- package/public/{chunk-U4SKVUE5.js → chunk-TVF3AWYQ.js} +1 -1
- package/public/chunk-VNSJXBAT.js +3 -0
- package/public/chunk-VWMX5XIX.js +1 -0
- package/public/{chunk-KZ6XXGP4.js → chunk-W7QZJGXY.js} +1 -1
- package/public/{chunk-YPUYAJME.js → chunk-WSFWMNAU.js} +1 -1
- package/public/{chunk-SHCD57ND.js → chunk-XKK6O4IO.js} +1 -1
- package/public/{chunk-ZINKZV7F.js → chunk-ZDZFMGQF.js} +1 -1
- package/public/chunk-ZR5W7DTP.js +1 -0
- package/public/{chunk-HNA35CNP.js → chunk-ZRIWYPVK.js} +1 -1
- package/public/index.html +2 -2
- package/public/{main-NHC6QBFW.js → main-GKAAYSQG.js} +1 -1
- package/public/{styles-4Y3CNLUV.css → styles-WNHDEKE4.css} +1 -1
- package/scripts/extract-plugin-alias.js +3 -36
- package/dist/modules/bridges/bridge-identifier.util.d.ts +0 -9
- package/dist/modules/bridges/bridge-identifier.util.js +0 -30
- package/dist/modules/bridges/bridge-identifier.util.js.map +0 -1
- package/dist/modules/bridges/bridges.controller.d.ts +0 -11
- package/dist/modules/bridges/bridges.controller.js +0 -156
- package/dist/modules/bridges/bridges.controller.js.map +0 -1
- package/dist/modules/bridges/bridges.interfaces.d.ts +0 -72
- package/dist/modules/bridges/bridges.interfaces.js +0 -3
- package/dist/modules/bridges/bridges.interfaces.js.map +0 -1
- package/dist/modules/bridges/bridges.module.d.ts +0 -2
- package/dist/modules/bridges/bridges.module.js +0 -39
- package/dist/modules/bridges/bridges.module.js.map +0 -1
- package/dist/modules/bridges/bridges.service.d.ts +0 -16
- package/dist/modules/bridges/bridges.service.js +0 -168
- package/dist/modules/bridges/bridges.service.js.map +0 -1
- package/dist/modules/matter-bridges/matter-bridges.controller.d.ts +0 -18
- package/dist/modules/matter-bridges/matter-bridges.controller.js +0 -104
- package/dist/modules/matter-bridges/matter-bridges.controller.js.map +0 -1
- package/dist/modules/matter-bridges/matter-bridges.gateway.d.ts +0 -19
- package/dist/modules/matter-bridges/matter-bridges.gateway.js +0 -128
- package/dist/modules/matter-bridges/matter-bridges.gateway.js.map +0 -1
- package/dist/modules/matter-bridges/matter-bridges.interfaces.d.ts +0 -24
- package/dist/modules/matter-bridges/matter-bridges.interfaces.js +0 -3
- package/dist/modules/matter-bridges/matter-bridges.interfaces.js.map +0 -1
- package/dist/modules/matter-bridges/matter-bridges.module.d.ts +0 -2
- package/dist/modules/matter-bridges/matter-bridges.module.js +0 -43
- package/dist/modules/matter-bridges/matter-bridges.module.js.map +0 -1
- package/dist/modules/matter-bridges/matter-bridges.service.d.ts +0 -41
- package/dist/modules/matter-bridges/matter-bridges.service.js +0 -329
- package/dist/modules/matter-bridges/matter-bridges.service.js.map +0 -1
- package/public/chunk-4Y2KPCHA.js +0 -1
- package/public/chunk-5BCOF7IG.js +0 -49
- package/public/chunk-BQTCHQHZ.js +0 -1
- package/public/chunk-EYNZEIGI.js +0 -3
- package/public/chunk-MJBWBNSG.js +0 -1
- package/public/chunk-P3A7PEYC.js +0 -17
- package/public/chunk-SXARTKV3.js +0 -1
- package/public/chunk-V7NTVYMU.js +0 -4
- 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
|
-
|
|
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()
|
|
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 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"bridges.interfaces.js","sourceRoot":"","sources":["../../../src/modules/bridges/bridges.interfaces.ts"],"names":[],"mappings":""}
|
|
@@ -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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"}
|