matterbridge 3.0.1-dev-20250503-71b796a → 3.0.1-dev-20250503-466a8ec
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/dist/frontend.js +44 -16
- package/dist/matterbridge.js +2 -0
- package/npm-shrinkwrap.json +2 -2
- package/package.json +1 -1
package/dist/frontend.js
CHANGED
|
@@ -364,16 +364,6 @@ export class Frontend {
|
|
|
364
364
|
}
|
|
365
365
|
});
|
|
366
366
|
});
|
|
367
|
-
this.expressApp.get('/api/download-mjstorage', async (req, res) => {
|
|
368
|
-
this.log.debug('The frontend sent /api/download-mjstorage');
|
|
369
|
-
await createZip(path.join(os.tmpdir(), `matterbridge.${this.matterbridge.matterStorageName}.zip`), path.join(this.matterbridge.matterbridgeDirectory, this.matterbridge.matterStorageName));
|
|
370
|
-
res.download(path.join(os.tmpdir(), `matterbridge.${this.matterbridge.matterStorageName}.zip`), `matterbridge.${this.matterbridge.matterStorageName}.zip`, (error) => {
|
|
371
|
-
if (error) {
|
|
372
|
-
this.log.error(`Error downloading the matter storage matterbridge.${this.matterbridge.matterStorageName}.zip: ${error instanceof Error ? error.message : error}`);
|
|
373
|
-
res.status(500).send('Error downloading the matter storage zip file');
|
|
374
|
-
}
|
|
375
|
-
});
|
|
376
|
-
});
|
|
377
367
|
this.expressApp.get('/api/download-mbstorage', async (req, res) => {
|
|
378
368
|
this.log.debug('The frontend sent /api/download-mbstorage');
|
|
379
369
|
await createZip(path.join(os.tmpdir(), `matterbridge.${this.matterbridge.nodeStorageName}.zip`), path.join(this.matterbridge.matterbridgeDirectory, this.matterbridge.nodeStorageName));
|
|
@@ -384,6 +374,16 @@ export class Frontend {
|
|
|
384
374
|
}
|
|
385
375
|
});
|
|
386
376
|
});
|
|
377
|
+
this.expressApp.get('/api/download-mjstorage', async (req, res) => {
|
|
378
|
+
this.log.debug('The frontend sent /api/download-mjstorage');
|
|
379
|
+
await createZip(path.join(os.tmpdir(), `matterbridge.${this.matterbridge.matterStorageName}.zip`), path.join(this.matterbridge.matterbridgeDirectory, this.matterbridge.matterStorageName));
|
|
380
|
+
res.download(path.join(os.tmpdir(), `matterbridge.${this.matterbridge.matterStorageName}.zip`), `matterbridge.${this.matterbridge.matterStorageName}.zip`, (error) => {
|
|
381
|
+
if (error) {
|
|
382
|
+
this.log.error(`Error downloading the matter storage matterbridge.${this.matterbridge.matterStorageName}.zip: ${error instanceof Error ? error.message : error}`);
|
|
383
|
+
res.status(500).send('Error downloading the matter storage zip file');
|
|
384
|
+
}
|
|
385
|
+
});
|
|
386
|
+
});
|
|
387
387
|
this.expressApp.get('/api/download-pluginstorage', async (req, res) => {
|
|
388
388
|
this.log.debug('The frontend sent /api/download-pluginstorage');
|
|
389
389
|
await createZip(path.join(os.tmpdir(), `matterbridge.pluginstorage.zip`), this.matterbridge.matterbridgePluginDirectory);
|
|
@@ -965,44 +965,54 @@ export class Frontend {
|
|
|
965
965
|
this.wssSendSnackbarMessage(`Saved config for plugin ${data.params.pluginName}`);
|
|
966
966
|
this.wssSendRefreshRequired('plugins');
|
|
967
967
|
this.wssSendRestartRequired();
|
|
968
|
+
client.send(JSON.stringify({ id: data.id, method: data.method, src: 'Matterbridge', dst: data.src, success: true }));
|
|
968
969
|
}
|
|
969
970
|
}
|
|
970
971
|
else if (data.method === '/api/shellysysupdate') {
|
|
971
972
|
const { triggerShellySysUpdate } = await import('./shelly.js');
|
|
972
973
|
triggerShellySysUpdate(this.matterbridge);
|
|
974
|
+
client.send(JSON.stringify({ id: data.id, method: data.method, src: 'Matterbridge', dst: data.src, success: true }));
|
|
973
975
|
}
|
|
974
976
|
else if (data.method === '/api/shellymainupdate') {
|
|
975
977
|
const { triggerShellyMainUpdate } = await import('./shelly.js');
|
|
976
978
|
triggerShellyMainUpdate(this.matterbridge);
|
|
979
|
+
client.send(JSON.stringify({ id: data.id, method: data.method, src: 'Matterbridge', dst: data.src, success: true }));
|
|
977
980
|
}
|
|
978
981
|
else if (data.method === '/api/shellycreatesystemlog') {
|
|
979
982
|
const { createShellySystemLog } = await import('./shelly.js');
|
|
980
983
|
createShellySystemLog(this.matterbridge);
|
|
984
|
+
client.send(JSON.stringify({ id: data.id, method: data.method, src: 'Matterbridge', dst: data.src, success: true }));
|
|
981
985
|
}
|
|
982
986
|
else if (data.method === '/api/shellynetconfig') {
|
|
983
987
|
this.log.debug('/api/shellynetconfig:', data.params);
|
|
984
988
|
const { triggerShellyChangeIp: triggerShellyChangeNet } = await import('./shelly.js');
|
|
985
989
|
triggerShellyChangeNet(this.matterbridge, data.params);
|
|
990
|
+
client.send(JSON.stringify({ id: data.id, method: data.method, src: 'Matterbridge', dst: data.src, success: true }));
|
|
986
991
|
}
|
|
987
992
|
else if (data.method === '/api/softreset') {
|
|
988
993
|
const { triggerShellySoftReset } = await import('./shelly.js');
|
|
989
994
|
triggerShellySoftReset(this.matterbridge);
|
|
995
|
+
client.send(JSON.stringify({ id: data.id, method: data.method, src: 'Matterbridge', dst: data.src, success: true }));
|
|
990
996
|
}
|
|
991
997
|
else if (data.method === '/api/hardreset') {
|
|
992
998
|
const { triggerShellyHardReset } = await import('./shelly.js');
|
|
993
999
|
triggerShellyHardReset(this.matterbridge);
|
|
1000
|
+
client.send(JSON.stringify({ id: data.id, method: data.method, src: 'Matterbridge', dst: data.src, success: true }));
|
|
994
1001
|
}
|
|
995
1002
|
else if (data.method === '/api/reboot') {
|
|
996
1003
|
const { triggerShellyReboot } = await import('./shelly.js');
|
|
997
1004
|
triggerShellyReboot(this.matterbridge);
|
|
1005
|
+
client.send(JSON.stringify({ id: data.id, method: data.method, src: 'Matterbridge', dst: data.src, success: true }));
|
|
998
1006
|
}
|
|
999
1007
|
else if (data.method === '/api/restart') {
|
|
1000
1008
|
this.wssSendSnackbarMessage(`Restarting matterbridge...`, 0);
|
|
1001
1009
|
await this.matterbridge.restartProcess();
|
|
1010
|
+
client.send(JSON.stringify({ id: data.id, method: data.method, src: 'Matterbridge', dst: data.src, success: true }));
|
|
1002
1011
|
}
|
|
1003
1012
|
else if (data.method === '/api/shutdown') {
|
|
1004
1013
|
this.wssSendSnackbarMessage(`Shutting down matterbridge...`, 0);
|
|
1005
1014
|
await this.matterbridge.shutdownProcess();
|
|
1015
|
+
client.send(JSON.stringify({ id: data.id, method: data.method, src: 'Matterbridge', dst: data.src, success: true }));
|
|
1006
1016
|
}
|
|
1007
1017
|
else if (data.method === '/api/create-backup') {
|
|
1008
1018
|
this.wssSendSnackbarMessage('Creating backup...', 0);
|
|
@@ -1011,19 +1021,23 @@ export class Frontend {
|
|
|
1011
1021
|
this.log.notice(`Backup ready to be downloaded.`);
|
|
1012
1022
|
this.wssSendCloseSnackbarMessage('Creating backup...');
|
|
1013
1023
|
this.wssSendSnackbarMessage('Backup ready to be downloaded', 10);
|
|
1024
|
+
client.send(JSON.stringify({ id: data.id, method: data.method, src: 'Matterbridge', dst: data.src, success: true }));
|
|
1014
1025
|
}
|
|
1015
1026
|
else if (data.method === '/api/unregister') {
|
|
1016
1027
|
this.wssSendSnackbarMessage('Unregistering all bridged devices...', 0);
|
|
1017
1028
|
await this.matterbridge.unregisterAndShutdownProcess();
|
|
1018
1029
|
this.wssSendCloseSnackbarMessage('Unregistering all bridged devices...');
|
|
1030
|
+
client.send(JSON.stringify({ id: data.id, method: data.method, src: 'Matterbridge', dst: data.src, success: true }));
|
|
1019
1031
|
}
|
|
1020
1032
|
else if (data.method === '/api/reset') {
|
|
1021
1033
|
this.wssSendSnackbarMessage('Resetting matterbridge commissioning...', 10);
|
|
1022
1034
|
await this.matterbridge.shutdownProcessAndReset();
|
|
1035
|
+
client.send(JSON.stringify({ id: data.id, method: data.method, src: 'Matterbridge', dst: data.src, success: true }));
|
|
1023
1036
|
}
|
|
1024
1037
|
else if (data.method === '/api/factoryreset') {
|
|
1025
1038
|
this.wssSendSnackbarMessage('Factory reset of matterbridge...', 10);
|
|
1026
1039
|
await this.matterbridge.shutdownProcessAndFactoryReset();
|
|
1040
|
+
client.send(JSON.stringify({ id: data.id, method: data.method, src: 'Matterbridge', dst: data.src, success: true }));
|
|
1027
1041
|
}
|
|
1028
1042
|
else if (data.method === '/api/advertise') {
|
|
1029
1043
|
const pairingCodes = await this.matterbridge.advertiseServerNode(this.matterbridge.serverNode);
|
|
@@ -1039,7 +1053,7 @@ export class Frontend {
|
|
|
1039
1053
|
this.matterbridge.matterbridgeInformation.matterbridgeAdvertise = false;
|
|
1040
1054
|
this.wssSendRefreshRequired('matterbridgeAdvertise');
|
|
1041
1055
|
this.wssSendSnackbarMessage(`Stopped fabrics share`, 0);
|
|
1042
|
-
client.send(JSON.stringify({ id: data.id, method: data.method, src: 'Matterbridge', dst: data.src }));
|
|
1056
|
+
client.send(JSON.stringify({ id: data.id, method: data.method, src: 'Matterbridge', dst: data.src, success: true }));
|
|
1043
1057
|
}
|
|
1044
1058
|
else if (data.method === '/api/settings') {
|
|
1045
1059
|
client.send(JSON.stringify({ id: data.id, method: data.method, src: 'Matterbridge', dst: data.src, response: await this.getApiSettings() }));
|
|
@@ -1205,17 +1219,18 @@ export class Frontend {
|
|
|
1205
1219
|
return;
|
|
1206
1220
|
}
|
|
1207
1221
|
this.log.debug(`Received /api/config name ${CYAN}${data.params.name}${db} value ${CYAN}${data.params.value}${db}`);
|
|
1208
|
-
this.log.fatal(`Received /api/config name ${CYAN}${data.params.name}${db} value(${typeof data.params.value}) ${CYAN}${data.params.value}${db}`);
|
|
1209
1222
|
switch (data.params.name) {
|
|
1210
1223
|
case 'setpassword':
|
|
1211
1224
|
if (isValidString(data.params.value)) {
|
|
1212
1225
|
await this.matterbridge.nodeContext?.set('password', data.params.value);
|
|
1226
|
+
client.send(JSON.stringify({ id: data.id, method: data.method, src: 'Matterbridge', dst: data.src, success: true }));
|
|
1213
1227
|
}
|
|
1214
1228
|
break;
|
|
1215
1229
|
case 'setbridgemode':
|
|
1216
|
-
if (isValidString(data.params.value,
|
|
1230
|
+
if (isValidString(data.params.value) && ['bridge', 'childbridge'].includes(data.params.value)) {
|
|
1217
1231
|
await this.matterbridge.nodeContext?.set('bridgeMode', data.params.value);
|
|
1218
1232
|
this.wssSendRestartRequired();
|
|
1233
|
+
client.send(JSON.stringify({ id: data.id, method: data.method, src: 'Matterbridge', dst: data.src, success: true }));
|
|
1219
1234
|
}
|
|
1220
1235
|
break;
|
|
1221
1236
|
case 'setmbloglevel':
|
|
@@ -1240,6 +1255,7 @@ export class Frontend {
|
|
|
1240
1255
|
await this.matterbridge.setLogLevel("fatal");
|
|
1241
1256
|
}
|
|
1242
1257
|
await this.matterbridge.nodeContext?.set('matterbridgeLogLevel', this.log.logLevel);
|
|
1258
|
+
client.send(JSON.stringify({ id: data.id, method: data.method, src: 'Matterbridge', dst: data.src, success: true }));
|
|
1243
1259
|
}
|
|
1244
1260
|
break;
|
|
1245
1261
|
case 'setmblogfile':
|
|
@@ -1251,6 +1267,7 @@ export class Frontend {
|
|
|
1251
1267
|
AnsiLogger.setGlobalLogfile(path.join(this.matterbridge.matterbridgeDirectory, this.matterbridge.matterbrideLoggerFile), this.matterbridge.matterbridgeInformation.loggerLevel, true);
|
|
1252
1268
|
else
|
|
1253
1269
|
AnsiLogger.setGlobalLogfile(undefined);
|
|
1270
|
+
client.send(JSON.stringify({ id: data.id, method: data.method, src: 'Matterbridge', dst: data.src, success: true }));
|
|
1254
1271
|
}
|
|
1255
1272
|
break;
|
|
1256
1273
|
case 'setmjloglevel':
|
|
@@ -1276,6 +1293,7 @@ export class Frontend {
|
|
|
1276
1293
|
}
|
|
1277
1294
|
this.matterbridge.matterbridgeInformation.matterLoggerLevel = Logger.level;
|
|
1278
1295
|
await this.matterbridge.nodeContext?.set('matterLogLevel', Logger.level);
|
|
1296
|
+
client.send(JSON.stringify({ id: data.id, method: data.method, src: 'Matterbridge', dst: data.src, success: true }));
|
|
1279
1297
|
}
|
|
1280
1298
|
break;
|
|
1281
1299
|
case 'setmjlogfile':
|
|
@@ -1302,6 +1320,7 @@ export class Frontend {
|
|
|
1302
1320
|
this.log.debug(`Error removing the matterfilelogger for file ${CYAN}${path.join(this.matterbridge.matterbridgeDirectory, this.matterbridge.matterLoggerFile)}${er}: ${error instanceof Error ? error.message : error}`);
|
|
1303
1321
|
}
|
|
1304
1322
|
}
|
|
1323
|
+
client.send(JSON.stringify({ id: data.id, method: data.method, src: 'Matterbridge', dst: data.src, success: true }));
|
|
1305
1324
|
}
|
|
1306
1325
|
break;
|
|
1307
1326
|
case 'setmdnsinterface':
|
|
@@ -1311,6 +1330,7 @@ export class Frontend {
|
|
|
1311
1330
|
this.matterbridge.matterbridgeInformation.mattermdnsinterface = this.matterbridge.mdnsInterface;
|
|
1312
1331
|
await this.matterbridge.nodeContext?.set('mattermdnsinterface', data.params.value);
|
|
1313
1332
|
this.wssSendRestartRequired();
|
|
1333
|
+
client.send(JSON.stringify({ id: data.id, method: data.method, src: 'Matterbridge', dst: data.src, success: true }));
|
|
1314
1334
|
}
|
|
1315
1335
|
break;
|
|
1316
1336
|
case 'setipv4address':
|
|
@@ -1320,6 +1340,7 @@ export class Frontend {
|
|
|
1320
1340
|
this.matterbridge.matterbridgeInformation.matteripv4address = this.matterbridge.ipv4address;
|
|
1321
1341
|
await this.matterbridge.nodeContext?.set('matteripv4address', data.params.value);
|
|
1322
1342
|
this.wssSendRestartRequired();
|
|
1343
|
+
client.send(JSON.stringify({ id: data.id, method: data.method, src: 'Matterbridge', dst: data.src, success: true }));
|
|
1323
1344
|
}
|
|
1324
1345
|
break;
|
|
1325
1346
|
case 'setipv6address':
|
|
@@ -1329,6 +1350,7 @@ export class Frontend {
|
|
|
1329
1350
|
this.matterbridge.matterbridgeInformation.matteripv6address = this.matterbridge.ipv6address;
|
|
1330
1351
|
await this.matterbridge.nodeContext?.set('matteripv6address', data.params.value);
|
|
1331
1352
|
this.wssSendRestartRequired();
|
|
1353
|
+
client.send(JSON.stringify({ id: data.id, method: data.method, src: 'Matterbridge', dst: data.src, success: true }));
|
|
1332
1354
|
}
|
|
1333
1355
|
break;
|
|
1334
1356
|
case 'setmatterport':
|
|
@@ -1340,11 +1362,12 @@ export class Frontend {
|
|
|
1340
1362
|
this.wssSendRestartRequired();
|
|
1341
1363
|
}
|
|
1342
1364
|
else {
|
|
1343
|
-
this.log.debug(`Reset matter commissioning port to ${CYAN}
|
|
1344
|
-
this.matterbridge.matterbridgeInformation.matterPort =
|
|
1345
|
-
await this.matterbridge.nodeContext?.set('matterport',
|
|
1365
|
+
this.log.debug(`Reset matter commissioning port to ${CYAN}5540${db}`);
|
|
1366
|
+
this.matterbridge.matterbridgeInformation.matterPort = 5540;
|
|
1367
|
+
await this.matterbridge.nodeContext?.set('matterport', 5540);
|
|
1346
1368
|
this.wssSendRestartRequired();
|
|
1347
1369
|
}
|
|
1370
|
+
client.send(JSON.stringify({ id: data.id, method: data.method, src: 'Matterbridge', dst: data.src, success: true }));
|
|
1348
1371
|
break;
|
|
1349
1372
|
case 'setmatterdiscriminator':
|
|
1350
1373
|
data.params.value = isValidString(data.params.value) ? parseInt(data.params.value) : 0;
|
|
@@ -1360,6 +1383,7 @@ export class Frontend {
|
|
|
1360
1383
|
await this.matterbridge.nodeContext?.remove('matterdiscriminator');
|
|
1361
1384
|
this.wssSendRestartRequired();
|
|
1362
1385
|
}
|
|
1386
|
+
client.send(JSON.stringify({ id: data.id, method: data.method, src: 'Matterbridge', dst: data.src, success: true }));
|
|
1363
1387
|
break;
|
|
1364
1388
|
case 'setmatterpasscode':
|
|
1365
1389
|
data.params.value = isValidString(data.params.value) ? parseInt(data.params.value) : 0;
|
|
@@ -1375,7 +1399,11 @@ export class Frontend {
|
|
|
1375
1399
|
await this.matterbridge.nodeContext?.remove('matterpasscode');
|
|
1376
1400
|
this.wssSendRestartRequired();
|
|
1377
1401
|
}
|
|
1402
|
+
client.send(JSON.stringify({ id: data.id, method: data.method, src: 'Matterbridge', dst: data.src, success: true }));
|
|
1378
1403
|
break;
|
|
1404
|
+
default:
|
|
1405
|
+
this.log.warn(`Unknown parameter ${data.params.name} in /api/config`);
|
|
1406
|
+
client.send(JSON.stringify({ id: data.id, method: data.method, src: 'Matterbridge', dst: data.src, error: `Unknown parameter ${data.params.name} in /api/config` }));
|
|
1379
1407
|
}
|
|
1380
1408
|
}
|
|
1381
1409
|
else if (data.method === '/api/command') {
|
package/dist/matterbridge.js
CHANGED
|
@@ -1018,6 +1018,7 @@ export class Matterbridge extends EventEmitter {
|
|
|
1018
1018
|
}
|
|
1019
1019
|
async cleanup(message, restart = false) {
|
|
1020
1020
|
if (this.initialized && !this.hasCleanupStarted) {
|
|
1021
|
+
this.emit('cleanup_started');
|
|
1021
1022
|
this.hasCleanupStarted = true;
|
|
1022
1023
|
this.log.info(message);
|
|
1023
1024
|
if (this.startMatterInterval) {
|
|
@@ -1171,6 +1172,7 @@ export class Matterbridge extends EventEmitter {
|
|
|
1171
1172
|
}
|
|
1172
1173
|
this.hasCleanupStarted = false;
|
|
1173
1174
|
this.initialized = false;
|
|
1175
|
+
this.emit('cleanup_completed');
|
|
1174
1176
|
}
|
|
1175
1177
|
else {
|
|
1176
1178
|
this.log.debug('Cleanup already started...');
|
package/npm-shrinkwrap.json
CHANGED
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "matterbridge",
|
|
3
|
-
"version": "3.0.1-dev-20250503-
|
|
3
|
+
"version": "3.0.1-dev-20250503-466a8ec",
|
|
4
4
|
"lockfileVersion": 3,
|
|
5
5
|
"requires": true,
|
|
6
6
|
"packages": {
|
|
7
7
|
"": {
|
|
8
8
|
"name": "matterbridge",
|
|
9
|
-
"version": "3.0.1-dev-20250503-
|
|
9
|
+
"version": "3.0.1-dev-20250503-466a8ec",
|
|
10
10
|
"license": "Apache-2.0",
|
|
11
11
|
"dependencies": {
|
|
12
12
|
"@matter/main": "0.13.0",
|
package/package.json
CHANGED