matterbridge 3.3.8-dev-20251115-920acfc → 3.3.8-dev-20251115-ca5ff21
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.
|
@@ -1,14 +1,15 @@
|
|
|
1
1
|
import { rmSync } from 'node:fs';
|
|
2
2
|
import { inspect } from 'node:util';
|
|
3
3
|
import path from 'node:path';
|
|
4
|
-
import { AnsiLogger } from 'node-ansi-logger';
|
|
4
|
+
import { AnsiLogger, er, rs } from 'node-ansi-logger';
|
|
5
5
|
import { LogLevel as MatterLogLevel, LogFormat as MatterLogFormat, Environment, Lifecycle } from '@matter/general';
|
|
6
6
|
import { Endpoint, ServerNode, ServerNodeStore } from '@matter/node';
|
|
7
7
|
import { DeviceTypeId, VendorId } from '@matter/types/datatype';
|
|
8
|
-
import { AggregatorEndpoint
|
|
8
|
+
import { AggregatorEndpoint } from '@matter/node/endpoints';
|
|
9
9
|
import { MdnsService } from '@matter/main/protocol';
|
|
10
10
|
import { Matterbridge } from '../matterbridge.js';
|
|
11
11
|
import { MATTER_STORAGE_NAME } from '../matterbridgeTypes.js';
|
|
12
|
+
import { bridge } from '../matterbridgeDeviceTypes.js';
|
|
12
13
|
export let loggerLogSpy;
|
|
13
14
|
export let loggerDebugSpy;
|
|
14
15
|
export let loggerInfoSpy;
|
|
@@ -255,13 +256,15 @@ export async function assertAllEndpointNumbersPersisted(targetServer) {
|
|
|
255
256
|
}
|
|
256
257
|
return all.length;
|
|
257
258
|
}
|
|
258
|
-
export async function startServerNode(name, port) {
|
|
259
|
+
export async function startServerNode(name, port, deviceType = bridge.code) {
|
|
260
|
+
const { randomBytes } = await import('node:crypto');
|
|
261
|
+
const random = randomBytes(8).toString('hex');
|
|
259
262
|
server = await ServerNode.create({
|
|
260
263
|
id: name + 'ServerNode',
|
|
261
264
|
environment,
|
|
262
265
|
productDescription: {
|
|
263
266
|
name: name + 'ServerNode',
|
|
264
|
-
deviceType: DeviceTypeId(
|
|
267
|
+
deviceType: DeviceTypeId(deviceType),
|
|
265
268
|
vendorId: VendorId(0xfff1),
|
|
266
269
|
productId: 0x8000,
|
|
267
270
|
},
|
|
@@ -274,10 +277,17 @@ export async function startServerNode(name, port) {
|
|
|
274
277
|
hardwareVersion: 1,
|
|
275
278
|
softwareVersion: 1,
|
|
276
279
|
reachable: true,
|
|
280
|
+
serialNumber: 'SN' + random,
|
|
281
|
+
uniqueId: 'UI' + random,
|
|
277
282
|
},
|
|
278
283
|
network: {
|
|
284
|
+
listeningAddressIpv4: undefined,
|
|
285
|
+
listeningAddressIpv6: undefined,
|
|
279
286
|
port,
|
|
280
287
|
},
|
|
288
|
+
operationalCredentials: {
|
|
289
|
+
certification: undefined,
|
|
290
|
+
},
|
|
281
291
|
});
|
|
282
292
|
expect(server).toBeDefined();
|
|
283
293
|
expect(server.lifecycle.isReady).toBeTruthy();
|
|
@@ -338,7 +348,7 @@ export async function addDevice(owner, device, pause = 10) {
|
|
|
338
348
|
catch (error) {
|
|
339
349
|
const errorMessage = error instanceof Error ? error.message : error;
|
|
340
350
|
const errorInspect = inspect(error, { depth: 10 });
|
|
341
|
-
|
|
351
|
+
process.stderr.write(`${er}Error adding device ${device.maybeId}.${device.maybeNumber}: ${errorMessage}${rs}\nStack: ${errorInspect}\n`);
|
|
342
352
|
return false;
|
|
343
353
|
}
|
|
344
354
|
expect(owner.parts.has(device)).toBeTruthy();
|
|
@@ -363,7 +373,7 @@ export async function deleteDevice(owner, device, pause = 10) {
|
|
|
363
373
|
catch (error) {
|
|
364
374
|
const errorMessage = error instanceof Error ? error.message : error;
|
|
365
375
|
const errorInspect = inspect(error, { depth: 10 });
|
|
366
|
-
|
|
376
|
+
process.stderr.write(`${er}Error deleting device ${device.maybeId}.${device.maybeNumber}: ${errorMessage}${rs}\nStack: ${errorInspect}\n`);
|
|
367
377
|
return false;
|
|
368
378
|
}
|
|
369
379
|
expect(owner.parts.has(device)).toBeFalsy();
|
|
@@ -113,8 +113,13 @@ export function createUniqueId(param1, param2, param3, param4) {
|
|
|
113
113
|
hash.update(param1 + param2 + param3 + param4);
|
|
114
114
|
return hash.digest('hex');
|
|
115
115
|
}
|
|
116
|
-
export function featuresFor(endpoint,
|
|
117
|
-
|
|
116
|
+
export function featuresFor(endpoint, cluster) {
|
|
117
|
+
const behaviorId = getBehavior(endpoint, cluster)?.id;
|
|
118
|
+
if (!behaviorId) {
|
|
119
|
+
endpoint.log?.error(`featuresFor error: cluster not found on endpoint ${or}${endpoint.maybeId}${er}:${or}${endpoint.maybeNumber}${er}`);
|
|
120
|
+
return {};
|
|
121
|
+
}
|
|
122
|
+
return endpoint.behaviors.supported[lowercaseFirstLetter(behaviorId)]['cluster']['supportedFeatures'];
|
|
118
123
|
}
|
|
119
124
|
export function getBehaviourTypesFromClusterServerIds(clusterServerList) {
|
|
120
125
|
const behaviorTypes = [];
|
package/npm-shrinkwrap.json
CHANGED
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "matterbridge",
|
|
3
|
-
"version": "3.3.8-dev-20251115-
|
|
3
|
+
"version": "3.3.8-dev-20251115-ca5ff21",
|
|
4
4
|
"lockfileVersion": 3,
|
|
5
5
|
"requires": true,
|
|
6
6
|
"packages": {
|
|
7
7
|
"": {
|
|
8
8
|
"name": "matterbridge",
|
|
9
|
-
"version": "3.3.8-dev-20251115-
|
|
9
|
+
"version": "3.3.8-dev-20251115-ca5ff21",
|
|
10
10
|
"license": "Apache-2.0",
|
|
11
11
|
"dependencies": {
|
|
12
12
|
"@matter/main": "0.15.6",
|
package/package.json
CHANGED