@matterbridge/core 3.11.1-dev-20261023-bb03f52 → 3.11.1-dev-20261025-9f9c3fa
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/behaviors/webRtcTransportProviderServer.js +2 -0
- package/dist/behaviors/webRtcTransportRequestorServer.js +2 -0
- package/dist/behaviors/weriftSession.js +2 -0
- package/dist/cli.js +2 -0
- package/dist/matterNodeHelpers.js +3 -0
- package/dist/matterbridge.d.ts +1 -1
- package/dist/matterbridge.js +18 -13
- package/dist/protectPrototypes.d.ts +4 -0
- package/dist/protectPrototypes.js +28 -0
- package/package.json +5 -5
|
@@ -6,6 +6,7 @@ import { WebRtcTransportProvider } from '@matter/types/clusters/web-rtc-transpor
|
|
|
6
6
|
import { StatusResponseError } from '@matter/types/common';
|
|
7
7
|
import { EndpointNumber, FabricIndex, NodeId } from '@matter/types/datatype';
|
|
8
8
|
import { Status, StreamUsage } from '@matter/types/globals';
|
|
9
|
+
import { protectPrototype } from '../protectPrototypes.js';
|
|
9
10
|
import { MatterbridgeCameraAvStreamManagementServer } from './cameraAvStreamManagementServer.js';
|
|
10
11
|
import { MatterbridgeServer } from './matterbridgeServer.js';
|
|
11
12
|
import { WeriftWebRtcSession } from './weriftSession.js';
|
|
@@ -458,6 +459,7 @@ export class MatterbridgeWebRtcTransportProviderServer extends WebRtcTransportPr
|
|
|
458
459
|
device.log.info(`MatterbridgeWebRtcTransportProviderServer.closeAllSessions: closed ${webRtcPeers.length} webRTC session(s) (endpoint ${this.endpoint.maybeId}.${this.endpoint.maybeNumber})`);
|
|
459
460
|
}
|
|
460
461
|
}
|
|
462
|
+
protectPrototype(MatterbridgeWebRtcTransportProviderServer);
|
|
461
463
|
(function (MatterbridgeWebRtcTransportProviderServer) {
|
|
462
464
|
class State extends WebRtcTransportProviderServer.State {
|
|
463
465
|
weriftOfferOptions = { offerVideo: true, offerAudio: true, videoSource: 'none', audioSource: 'none' };
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { WebRtcTransportRequestorServer } from '@matter/node/behaviors/web-rtc-transport-requestor';
|
|
2
2
|
import { WebRtcTransportRequestor } from '@matter/types/clusters/web-rtc-transport-requestor';
|
|
3
|
+
import { protectPrototype } from '../protectPrototypes.js';
|
|
3
4
|
export class MatterbridgeWebRtcTransportRequestorServer extends WebRtcTransportRequestorServer {
|
|
4
5
|
async offer(request) {
|
|
5
6
|
await super.offer(request);
|
|
@@ -18,6 +19,7 @@ export class MatterbridgeWebRtcTransportRequestorServer extends WebRtcTransportR
|
|
|
18
19
|
this.endpoint.emitCommand(WebRtcTransportRequestor, 'end', request, this.context);
|
|
19
20
|
}
|
|
20
21
|
}
|
|
22
|
+
protectPrototype(MatterbridgeWebRtcTransportRequestorServer);
|
|
21
23
|
export function createDefaultWebRtcTransportRequestorClusterServer(endpoint) {
|
|
22
24
|
endpoint.behaviors.require(MatterbridgeWebRtcTransportRequestorServer, { currentSessions: [] });
|
|
23
25
|
return endpoint;
|
|
@@ -3,6 +3,7 @@ import { fireAndForget, getErrorMessage } from '@matterbridge/utils';
|
|
|
3
3
|
import { AnsiLogger, MAGENTA } from 'node-ansi-logger';
|
|
4
4
|
import { RTCPeerConnection, RTCRtpCodecParameters, useH264, useOPUS, usePCMU, useVP8 } from 'werift';
|
|
5
5
|
import { navigator } from 'werift/nonstandard';
|
|
6
|
+
import { protectPrototype } from '../protectPrototypes.js';
|
|
6
7
|
import { hasFfmpeg, runFfmpeg } from './ffmpeg.js';
|
|
7
8
|
export class WeriftWebRtcSession {
|
|
8
9
|
static activeSessions = new Set();
|
|
@@ -625,3 +626,4 @@ export class WeriftWebRtcSession {
|
|
|
625
626
|
this.log.info(`RTCPeerConnection closed (connectionState=${this.peerConnection.connectionState})`);
|
|
626
627
|
}
|
|
627
628
|
}
|
|
629
|
+
protectPrototype(WeriftWebRtcSession);
|
package/dist/cli.js
CHANGED
|
@@ -126,6 +126,8 @@ export async function main() {
|
|
|
126
126
|
await startInspector();
|
|
127
127
|
log.debug(`***Matterbridge.loadInstance(true) called`);
|
|
128
128
|
const { Matterbridge } = await import('./matterbridge.js');
|
|
129
|
+
const { protectCorePrototypes } = await import('./protectPrototypes.js');
|
|
130
|
+
await protectCorePrototypes();
|
|
129
131
|
instance = await Matterbridge.loadInstance(true);
|
|
130
132
|
log.debug(`***Matterbridge.loadInstance(true) exited`);
|
|
131
133
|
if (hasParameter('experimental-backend')) {
|
package/dist/matterbridge.d.ts
CHANGED
|
@@ -32,6 +32,7 @@ interface MatterbridgeEvents {
|
|
|
32
32
|
triggergarbagecollection: [];
|
|
33
33
|
}
|
|
34
34
|
export declare class Matterbridge extends EventEmitter<MatterbridgeEvents> {
|
|
35
|
+
#private;
|
|
35
36
|
private readonly debug;
|
|
36
37
|
private readonly verbose;
|
|
37
38
|
private readonly diagnostic;
|
|
@@ -71,7 +72,6 @@ export declare class Matterbridge extends EventEmitter<MatterbridgeEvents> {
|
|
|
71
72
|
readonly frontend: Frontend;
|
|
72
73
|
nodeStorage: NodeStorageManager | undefined;
|
|
73
74
|
nodeContext: NodeStorage | undefined;
|
|
74
|
-
protected static instance: Matterbridge | undefined;
|
|
75
75
|
shutdown: boolean;
|
|
76
76
|
private readonly failCountLimit;
|
|
77
77
|
hasCleanupStarted: boolean;
|
package/dist/matterbridge.js
CHANGED
|
@@ -108,7 +108,7 @@ export class Matterbridge extends EventEmitter {
|
|
|
108
108
|
frontend = new Frontend(this);
|
|
109
109
|
nodeStorage;
|
|
110
110
|
nodeContext;
|
|
111
|
-
static instance;
|
|
111
|
+
static #instance;
|
|
112
112
|
shutdown = false;
|
|
113
113
|
failCountLimit = 300;
|
|
114
114
|
hasCleanupStarted = false;
|
|
@@ -431,14 +431,14 @@ export class Matterbridge extends EventEmitter {
|
|
|
431
431
|
}
|
|
432
432
|
}
|
|
433
433
|
static async loadInstance(initialize = false) {
|
|
434
|
-
if (
|
|
435
|
-
|
|
436
|
-
|
|
437
|
-
|
|
438
|
-
|
|
439
|
-
|
|
440
|
-
|
|
441
|
-
return Matterbridge
|
|
434
|
+
if (Matterbridge.#instance)
|
|
435
|
+
throw new Error('Matterbridge instance already loaded');
|
|
436
|
+
if (hasParameter('debug'))
|
|
437
|
+
console.log(GREEN + 'Creating a new instance of Matterbridge.', initialize ? 'Initializing...' : 'Not initializing...', rs);
|
|
438
|
+
Matterbridge.#instance = new Matterbridge();
|
|
439
|
+
if (initialize)
|
|
440
|
+
await Matterbridge.#instance.initialize();
|
|
441
|
+
return Matterbridge.#instance;
|
|
442
442
|
}
|
|
443
443
|
async initialize() {
|
|
444
444
|
this.emit('initialize_started');
|
|
@@ -1198,7 +1198,12 @@ export class Matterbridge extends EventEmitter {
|
|
|
1198
1198
|
this.systemInformation.bunVersion = process.versions.bun;
|
|
1199
1199
|
}
|
|
1200
1200
|
this.systemInformation.hostname = os.hostname();
|
|
1201
|
-
|
|
1201
|
+
try {
|
|
1202
|
+
this.systemInformation.user = os.userInfo().username;
|
|
1203
|
+
}
|
|
1204
|
+
catch {
|
|
1205
|
+
this.systemInformation.user = String(process.getuid?.() ?? 'unknown');
|
|
1206
|
+
}
|
|
1202
1207
|
this.systemInformation.osType = os.type();
|
|
1203
1208
|
this.systemInformation.osRelease = os.release();
|
|
1204
1209
|
this.systemInformation.osPlatform = os.platform();
|
|
@@ -1596,18 +1601,18 @@ export class Matterbridge extends EventEmitter {
|
|
|
1596
1601
|
if (restart) {
|
|
1597
1602
|
if (message === 'updating...') {
|
|
1598
1603
|
this.log.info('Cleanup completed. Updating...');
|
|
1599
|
-
Matterbridge
|
|
1604
|
+
Matterbridge.#instance = undefined;
|
|
1600
1605
|
this.emit('update');
|
|
1601
1606
|
}
|
|
1602
1607
|
else if (message === 'restarting...') {
|
|
1603
1608
|
this.log.info('Cleanup completed. Restarting...');
|
|
1604
|
-
Matterbridge
|
|
1609
|
+
Matterbridge.#instance = undefined;
|
|
1605
1610
|
this.emit('restart');
|
|
1606
1611
|
}
|
|
1607
1612
|
}
|
|
1608
1613
|
else {
|
|
1609
1614
|
this.log.notice('Cleanup completed. Shutting down...');
|
|
1610
|
-
Matterbridge
|
|
1615
|
+
Matterbridge.#instance = undefined;
|
|
1611
1616
|
this.emit('shutdown');
|
|
1612
1617
|
}
|
|
1613
1618
|
this.hasCleanupStarted = false;
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import { logModuleLoaded } from '@matterbridge/utils/loader';
|
|
2
|
+
logModuleLoaded('ProtectPrototypes');
|
|
3
|
+
export function protectPrototype(type) {
|
|
4
|
+
Object.freeze(type.prototype);
|
|
5
|
+
}
|
|
6
|
+
export async function protectCorePrototypes() {
|
|
7
|
+
const { BroadcastServer } = await import('@matterbridge/thread/server');
|
|
8
|
+
const { ThreadsManager } = await import('@matterbridge/thread/manager');
|
|
9
|
+
const { MatterbridgeServer } = await import('./behaviors/matterbridgeServer.js');
|
|
10
|
+
const { Matterbridge } = await import('./matterbridge.js');
|
|
11
|
+
const { MatterbridgePlatform } = await import('./matterbridgePlatform.js');
|
|
12
|
+
const { MatterbridgeAccessoryPlatform } = await import('./matterbridgeAccessoryPlatform.js');
|
|
13
|
+
const { MatterbridgeDynamicPlatform } = await import('./matterbridgeDynamicPlatform.js');
|
|
14
|
+
const { MatterbridgeEndpoint } = await import('./matterbridgeEndpoint.js');
|
|
15
|
+
const { CommandHandler } = await import('./matterbridgeEndpointCommandHandler.js');
|
|
16
|
+
for (const type of [
|
|
17
|
+
BroadcastServer,
|
|
18
|
+
ThreadsManager,
|
|
19
|
+
Matterbridge,
|
|
20
|
+
MatterbridgeEndpoint,
|
|
21
|
+
CommandHandler,
|
|
22
|
+
MatterbridgeServer,
|
|
23
|
+
MatterbridgePlatform,
|
|
24
|
+
MatterbridgeDynamicPlatform,
|
|
25
|
+
MatterbridgeAccessoryPlatform,
|
|
26
|
+
])
|
|
27
|
+
protectPrototype(type);
|
|
28
|
+
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@matterbridge/core",
|
|
3
|
-
"version": "3.11.1-dev-
|
|
3
|
+
"version": "3.11.1-dev-20261025-9f9c3fa",
|
|
4
4
|
"description": "Matterbridge core library",
|
|
5
5
|
"author": "https://github.com/Luligu",
|
|
6
6
|
"homepage": "https://matterbridge.io/",
|
|
@@ -136,10 +136,10 @@
|
|
|
136
136
|
},
|
|
137
137
|
"dependencies": {
|
|
138
138
|
"@matter/main": "0.18.0",
|
|
139
|
-
"@matterbridge/dgram": "3.11.1-dev-
|
|
140
|
-
"@matterbridge/thread": "3.11.1-dev-
|
|
141
|
-
"@matterbridge/types": "3.11.1-dev-
|
|
142
|
-
"@matterbridge/utils": "3.11.1-dev-
|
|
139
|
+
"@matterbridge/dgram": "3.11.1-dev-20261025-9f9c3fa",
|
|
140
|
+
"@matterbridge/thread": "3.11.1-dev-20261025-9f9c3fa",
|
|
141
|
+
"@matterbridge/types": "3.11.1-dev-20261025-9f9c3fa",
|
|
142
|
+
"@matterbridge/utils": "3.11.1-dev-20261025-9f9c3fa",
|
|
143
143
|
"escape-html": "1.0.3",
|
|
144
144
|
"express": "5.3.0",
|
|
145
145
|
"express-rate-limit": "8.7.1",
|