matter-server 0.5.9 → 0.5.11
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/esm/MatterServer.d.ts.map +1 -1
- package/dist/esm/MatterServer.js +32 -9
- package/dist/esm/MatterServer.js.map +1 -1
- package/dist/esm/cli.d.ts.map +1 -1
- package/dist/esm/cli.js +19 -1
- package/dist/esm/cli.js.map +1 -1
- package/dist/esm/converter/LegacyDataLoader.d.ts.map +1 -1
- package/dist/esm/converter/LegacyDataLoader.js +7 -5
- package/dist/esm/converter/LegacyDataLoader.js.map +1 -1
- package/package.json +8 -8
- package/src/MatterServer.ts +37 -11
- package/src/cli.ts +29 -2
- package/src/converter/LegacyDataLoader.ts +6 -4
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MatterServer.d.ts","sourceRoot":"","sources":["../../src/MatterServer.ts"],"names":[],"mappings":"AAAA;;;;GAIG;
|
|
1
|
+
{"version":3,"file":"MatterServer.d.ts","sourceRoot":"","sources":["../../src/MatterServer.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,gCAAgC,CAAC"}
|
package/dist/esm/MatterServer.js
CHANGED
|
@@ -3,6 +3,7 @@
|
|
|
3
3
|
* Copyright 2025-2026 Open Home Foundation
|
|
4
4
|
* SPDX-License-Identifier: Apache-2.0
|
|
5
5
|
*/
|
|
6
|
+
import "@matter-server/custom-clusters";
|
|
6
7
|
import {
|
|
7
8
|
ConfigStorage,
|
|
8
9
|
Environment,
|
|
@@ -21,7 +22,6 @@ import { HealthHandler } from "./server/HealthHandler.js";
|
|
|
21
22
|
import { StaticFileHandler } from "./server/StaticFileHandler.js";
|
|
22
23
|
import { WebServer } from "./server/WebServer.js";
|
|
23
24
|
import { MATTER_SERVER_VERSION } from "./version.js";
|
|
24
|
-
import "@matter-server/custom-clusters";
|
|
25
25
|
const cliOptions = getCliOptions();
|
|
26
26
|
function mapLogLevel(level) {
|
|
27
27
|
switch (level) {
|
|
@@ -149,21 +149,44 @@ async function start() {
|
|
|
149
149
|
await server.start();
|
|
150
150
|
}
|
|
151
151
|
async function stop() {
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
152
|
+
try {
|
|
153
|
+
await server?.stop();
|
|
154
|
+
} catch (err) {
|
|
155
|
+
console.error(`Failed to stop server: ${err}`);
|
|
156
|
+
}
|
|
157
|
+
try {
|
|
158
|
+
await controller?.stop();
|
|
159
|
+
} catch (err) {
|
|
160
|
+
console.error(`Failed to stop controller: ${err}`);
|
|
161
|
+
}
|
|
162
|
+
try {
|
|
163
|
+
if (legacyDataWriter?.hasPendingWork()) {
|
|
164
|
+
logger.info("Flushing pending legacy data writes...");
|
|
165
|
+
await legacyDataWriter.flush();
|
|
166
|
+
}
|
|
167
|
+
} catch (err) {
|
|
168
|
+
console.error(`Failed to flush legacy data: ${err}`);
|
|
169
|
+
}
|
|
170
|
+
try {
|
|
171
|
+
await config?.close();
|
|
172
|
+
} catch (err) {
|
|
173
|
+
console.error(`Failed to close config storage: ${err}`);
|
|
174
|
+
}
|
|
175
|
+
try {
|
|
176
|
+
await env.runtime.close();
|
|
177
|
+
} catch (err) {
|
|
178
|
+
console.error(`Failed to close runtime: ${err}`);
|
|
157
179
|
}
|
|
158
|
-
await config?.close();
|
|
159
180
|
try {
|
|
160
181
|
await fileLoggerClose?.();
|
|
161
182
|
} catch (err) {
|
|
162
183
|
console.error(`Failed to flush log file on shutdown: ${err}`);
|
|
163
184
|
}
|
|
164
|
-
process.exit(0);
|
|
165
185
|
}
|
|
166
|
-
start().catch((err) =>
|
|
186
|
+
start().catch(async (err) => {
|
|
187
|
+
console.error(err);
|
|
188
|
+
await config?.close();
|
|
189
|
+
});
|
|
167
190
|
process.on("SIGINT", () => void stop().catch((err) => console.error(err)));
|
|
168
191
|
process.on("SIGTERM", () => void stop().catch((err) => console.error(err)));
|
|
169
192
|
//# sourceMappingURL=MatterServer.js.map
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../src/MatterServer.ts"],
|
|
4
|
-
"mappings": "AAAA;AAAA;AAAA;AAAA;AAAA;AAMA;AAAA,EACI;AAAA,EACA;AAAA,EAEA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EAEA;AAAA,OACG;AACP,SAAS,qBAAmD;AAC5D,SAAS,kBAAkB,sBAAuC;AAClE,SAAS,wBAAwB;AACjC,SAAS,qBAAqB;AAC9B,SAAS,qBAAqB;AAC9B,SAAS,yBAAyB;AAClC,SAAS,iBAAiB;AAC1B,SAAS,6BAA6B;
|
|
4
|
+
"mappings": "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",
|
|
5
5
|
"names": []
|
|
6
6
|
}
|
package/dist/esm/cli.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../../src/cli.ts"],"names":[],"mappings":"AAAA;;;;GAIG;
|
|
1
|
+
{"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../../src/cli.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAsBH,eAAO,MAAM,iBAAiB,QAAS,CAAC;AACxC,eAAO,MAAM,iBAAiB,IAAI,CAAC;AAKnC,QAAA,MAAM,UAAU,uEAAwE,CAAC;AAGzF,MAAM,MAAM,QAAQ,GAAG,CAAC,OAAO,UAAU,CAAC,CAAC,MAAM,CAAC,CAAC;AAEnD,MAAM,WAAW,UAAU;IAEvB,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,GAAG,SAAS,CAAC;IAG7B,WAAW,EAAE,MAAM,CAAC;IACpB,IAAI,EAAE,MAAM,CAAC;IACb,aAAa,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC;IAG/B,QAAQ,EAAE,QAAQ,CAAC;IACnB,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IAGvB,gBAAgB,EAAE,MAAM,GAAG,IAAI,CAAC;IAGhC,gBAAgB,EAAE,OAAO,CAAC;IAG1B,gBAAgB,EAAE,MAAM,GAAG,IAAI,CAAC;IAGhC,UAAU,EAAE,OAAO,CAAC;IACpB,cAAc,EAAE,MAAM,GAAG,IAAI,CAAC;IAG9B,gBAAgB,EAAE,OAAO,CAAC;IAC1B,cAAc,EAAE,OAAO,CAAC;CAC3B;AAgCD,wBAAgB,YAAY,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,GAAG,UAAU,CAyJxD;AAKD,wBAAgB,aAAa,IAAI,UAAU,CAK1C"}
|
package/dist/esm/cli.js
CHANGED
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
*/
|
|
6
6
|
import { Command, InvalidArgumentError, Option } from "commander";
|
|
7
7
|
import { readFileSync } from "node:fs";
|
|
8
|
-
import { homedir } from "node:os";
|
|
8
|
+
import { homedir, networkInterfaces } from "node:os";
|
|
9
9
|
import { dirname, join } from "node:path";
|
|
10
10
|
import { fileURLToPath } from "node:url";
|
|
11
11
|
const __dirname = dirname(fileURLToPath(import.meta.url));
|
|
@@ -92,6 +92,24 @@ function parseCliArgs(argv) {
|
|
|
92
92
|
} else if (process.env.LISTEN_ADDRESS) {
|
|
93
93
|
listenAddress = [process.env.LISTEN_ADDRESS];
|
|
94
94
|
}
|
|
95
|
+
if (listenAddress) {
|
|
96
|
+
const interfaces = networkInterfaces();
|
|
97
|
+
listenAddress = listenAddress.flatMap((address) => {
|
|
98
|
+
const match = address.match(/^{{(.+)}}$/);
|
|
99
|
+
if (match) {
|
|
100
|
+
const interfaceName = match[1];
|
|
101
|
+
const interfaceAddresses = interfaces[interfaceName] || [];
|
|
102
|
+
const normalizedInterfaceAddresses = interfaceAddresses.map(
|
|
103
|
+
(a) => a.address.toLowerCase().startsWith("fe80:") && !a.address.includes("%") ? `${a.address}%${interfaceName}` : a.address
|
|
104
|
+
);
|
|
105
|
+
if (normalizedInterfaceAddresses.length === 0) {
|
|
106
|
+
throw new InvalidArgumentError(`No valid IP address found for interface ${interfaceName}`);
|
|
107
|
+
}
|
|
108
|
+
return normalizedInterfaceAddresses;
|
|
109
|
+
}
|
|
110
|
+
return [address];
|
|
111
|
+
});
|
|
112
|
+
}
|
|
95
113
|
return {
|
|
96
114
|
vendorId: opts.vendorid,
|
|
97
115
|
fabricId: opts.fabricid ?? void 0,
|
package/dist/esm/cli.js.map
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../src/cli.ts"],
|
|
4
|
-
"mappings": "AAAA;AAAA;AAAA;AAAA;AAAA;AAWA,SAAS,SAAS,sBAAsB,cAAc;AACtD,SAAS,oBAAoB;AAC7B,SAAS,
|
|
4
|
+
"mappings": "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",
|
|
5
5
|
"names": []
|
|
6
6
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"LegacyDataLoader.d.ts","sourceRoot":"","sources":["../../../src/converter/LegacyDataLoader.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EACH,iCAAiC,EAKjC,WAAW,EACX,sBAAsB,EACtB,gBAAgB,
|
|
1
|
+
{"version":3,"file":"LegacyDataLoader.d.ts","sourceRoot":"","sources":["../../../src/converter/LegacyDataLoader.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EACH,iCAAiC,EAKjC,WAAW,EACX,sBAAsB,EACtB,gBAAgB,EAInB,MAAM,8BAA8B,CAAC;AAKtC,OAAO,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAC5C,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,YAAY,CAAC;AAsBzD;;;;;;;;;;;;GAYG;AACH,wBAAgB,4BAA4B,CAAC,UAAU,EAAE,gBAAgB,GAAG,MAAM,GAAG,SAAS,CAmD7F;AAcD,oCAAoC;AACpC,MAAM,WAAW,UAAU;IACvB,sDAAsD;IACtD,UAAU,CAAC,EAAE,cAAc,CAAC;IAC5B,kDAAkD;IAClD,UAAU,CAAC,EAAE,gBAAgB,CAAC;IAC9B,qEAAqE;IACrE,YAAY,CAAC,EAAE,sBAAsB,CAAC;IACtC,4EAA4E;IAC5E,sBAAsB,CAAC,EAAE,sBAAsB,CAAC;IAChD,gFAAgF;IAChF,0BAA0B,CAAC,EAAE,iCAAiC,CAAC;IAC/D,8EAA8E;IAC9E,qBAAqB,CAAC,EAAE,MAAM,CAAC;IAC/B;;;OAGG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,wCAAwC;IACxC,OAAO,EAAE,OAAO,CAAC;IACjB,sCAAsC;IACtC,KAAK,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,sCAAsC;AACtC,MAAM,WAAW,qBAAqB;IAClC,kDAAkD;IAClD,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,6CAA6C;IAC7C,QAAQ,CAAC,EAAE,MAAM,CAAC;CACrB;AAED;;;;;;;;;GASG;AACH,wBAAsB,cAAc,CAChC,GAAG,EAAE,WAAW,EAChB,WAAW,EAAE,MAAM,EACnB,OAAO,CAAC,EAAE,qBAAqB,GAChC,OAAO,CAAC,UAAU,CAAC,CAgKrB;AAED;;;;;GAKG;AACH,wBAAsB,aAAa,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAOzE;AAED;;;;;;;;;;;;GAYG;AACH,wBAAsB,oBAAoB,CACtC,GAAG,EAAE,WAAW,EAChB,WAAW,EAAE,MAAM,EACnB,YAAY,EAAE,sBAAsB,EACpC,UAAU,EAAE,gBAAgB,EAC5B,kBAAkB,UAAO,GAC1B,OAAO,CAAC,IAAI,CAAC,CA6Cf;AAUD;;;;;;GAMG;AACH,qBAAa,gBAAgB;;gBAiBrB,GAAG,EAAE,WAAW,EAChB,WAAW,EAAE,MAAM,EACnB,YAAY,EAAE,sBAAsB,EACpC,eAAe,GAAE,MAAkC;IAQvD;;OAEG;IACH,aAAa,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,EAAE,gBAAgB,EAAE,MAAM,GAAG,IAAI;IAStE;;OAEG;IACH,YAAY,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI;IAS3C;;OAEG;IACH,cAAc,IAAI,OAAO;IAIzB;;;;OAIG;IACG,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;CAwM/B"}
|
|
@@ -8,7 +8,9 @@ import {
|
|
|
8
8
|
computeServerId,
|
|
9
9
|
Crypto,
|
|
10
10
|
DEFAULT_SERVER_ID,
|
|
11
|
-
Logger
|
|
11
|
+
Logger,
|
|
12
|
+
parseBigIntAwareJson,
|
|
13
|
+
toBigIntAwareJson
|
|
12
14
|
} from "@matter-server/ws-controller";
|
|
13
15
|
import { Millis, Time } from "@matter/main";
|
|
14
16
|
import { access, readFile, rename, unlink, writeFile } from "node:fs/promises";
|
|
@@ -151,7 +153,7 @@ async function loadLegacyData(env, storagePath, options) {
|
|
|
151
153
|
try {
|
|
152
154
|
await access(filePath);
|
|
153
155
|
const content = await readFile(filePath, "utf-8");
|
|
154
|
-
const serverFile =
|
|
156
|
+
const serverFile = parseBigIntAwareJson(content);
|
|
155
157
|
if (!serverFile.nodes) {
|
|
156
158
|
logger.warn(`Server file ${fileLabel} is missing "nodes" key. Loading anyway ...`);
|
|
157
159
|
serverFile.nodes = {};
|
|
@@ -221,7 +223,7 @@ async function saveLegacyServerFile(env, storagePath, fabricConfig, serverFile,
|
|
|
221
223
|
} else {
|
|
222
224
|
logger.debug(`Keeping existing backup intact (main file was corrupted)`);
|
|
223
225
|
}
|
|
224
|
-
const content =
|
|
226
|
+
const content = toBigIntAwareJson(serverFile, 2);
|
|
225
227
|
await writeFile(serverFilePath, content, "utf-8");
|
|
226
228
|
const nodeCount = Object.keys(serverFile.nodes).length;
|
|
227
229
|
logger.info(
|
|
@@ -347,7 +349,7 @@ class LegacyDataWriter {
|
|
|
347
349
|
let loadedFromMainFile = true;
|
|
348
350
|
try {
|
|
349
351
|
const content = await readFile(serverFilePath, "utf-8");
|
|
350
|
-
serverFile =
|
|
352
|
+
serverFile = parseBigIntAwareJson(content);
|
|
351
353
|
if (!serverFile.nodes) {
|
|
352
354
|
logger.warn(`Server file ${serverFileName} is missing "nodes" key`);
|
|
353
355
|
serverFile.nodes = {};
|
|
@@ -359,7 +361,7 @@ class LegacyDataWriter {
|
|
|
359
361
|
}
|
|
360
362
|
try {
|
|
361
363
|
const content = await readFile(backupFilePath, "utf-8");
|
|
362
|
-
serverFile =
|
|
364
|
+
serverFile = parseBigIntAwareJson(content);
|
|
363
365
|
if (!serverFile.nodes) {
|
|
364
366
|
logger.warn(`Backup file ${serverFileName}.backup is missing "nodes" key`);
|
|
365
367
|
serverFile.nodes = {};
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../src/converter/LegacyDataLoader.ts"],
|
|
4
|
-
"mappings": "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
|
|
4
|
+
"mappings": "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",
|
|
5
5
|
"names": []
|
|
6
6
|
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "matter-server",
|
|
3
|
-
"version": "0.5.
|
|
3
|
+
"version": "0.5.11",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"description": "WebSocket Matter server based on matter.js",
|
|
6
6
|
"bugs": {
|
|
@@ -23,19 +23,19 @@
|
|
|
23
23
|
"node": ">=20.19.0 <22.0.0 || >=22.13.0"
|
|
24
24
|
},
|
|
25
25
|
"dependencies": {
|
|
26
|
-
"@matter/main": "0.17.0-alpha.0-
|
|
27
|
-
"@matter-server/ws-controller": "0.5.
|
|
28
|
-
"@matter-server/dashboard": "0.5.
|
|
29
|
-
"@matter-server/custom-clusters": "0.5.
|
|
26
|
+
"@matter/main": "0.17.0-alpha.0-20260401-1edc54c9a",
|
|
27
|
+
"@matter-server/ws-controller": "0.5.11",
|
|
28
|
+
"@matter-server/dashboard": "0.5.11",
|
|
29
|
+
"@matter-server/custom-clusters": "0.5.11",
|
|
30
30
|
"commander": "^14.0.3",
|
|
31
31
|
"express": "^5.2.1"
|
|
32
32
|
},
|
|
33
33
|
"devDependencies": {
|
|
34
34
|
"@types/express": "^5.0.6",
|
|
35
35
|
"@types/node": "^25.5.0",
|
|
36
|
-
"@matter/nodejs": "0.17.0-alpha.0-
|
|
37
|
-
"@matter/testing": "0.17.0-alpha.0-
|
|
38
|
-
"@matter-server/ws-client": "0.5.
|
|
36
|
+
"@matter/nodejs": "0.17.0-alpha.0-20260401-1edc54c9a",
|
|
37
|
+
"@matter/testing": "0.17.0-alpha.0-20260401-1edc54c9a",
|
|
38
|
+
"@matter-server/ws-client": "0.5.11"
|
|
39
39
|
},
|
|
40
40
|
"files": [
|
|
41
41
|
"dist/**/*",
|
package/src/MatterServer.ts
CHANGED
|
@@ -3,7 +3,9 @@
|
|
|
3
3
|
* Copyright 2025-2026 Open Home Foundation
|
|
4
4
|
* SPDX-License-Identifier: Apache-2.0
|
|
5
5
|
*/
|
|
6
|
-
|
|
6
|
+
// Register the custom clusters
|
|
7
|
+
import "@matter-server/custom-clusters";
|
|
8
|
+
// Standard imports
|
|
7
9
|
import {
|
|
8
10
|
ConfigStorage,
|
|
9
11
|
Environment,
|
|
@@ -24,8 +26,6 @@ import { HealthHandler } from "./server/HealthHandler.js";
|
|
|
24
26
|
import { StaticFileHandler } from "./server/StaticFileHandler.js";
|
|
25
27
|
import { WebServer } from "./server/WebServer.js";
|
|
26
28
|
import { MATTER_SERVER_VERSION } from "./version.js";
|
|
27
|
-
// Register the custom clusters
|
|
28
|
-
import "@matter-server/custom-clusters";
|
|
29
29
|
|
|
30
30
|
// Parse CLI options early for logging setup
|
|
31
31
|
const cliOptions = getCliOptions();
|
|
@@ -190,23 +190,49 @@ async function start() {
|
|
|
190
190
|
}
|
|
191
191
|
|
|
192
192
|
async function stop() {
|
|
193
|
-
|
|
194
|
-
|
|
193
|
+
try {
|
|
194
|
+
await server?.stop();
|
|
195
|
+
} catch (err) {
|
|
196
|
+
console.error(`Failed to stop server: ${err}`);
|
|
197
|
+
}
|
|
198
|
+
try {
|
|
199
|
+
await controller?.stop();
|
|
200
|
+
} catch (err) {
|
|
201
|
+
console.error(`Failed to stop controller: ${err}`);
|
|
202
|
+
}
|
|
195
203
|
// Flush any pending legacy data writes before closing
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
204
|
+
try {
|
|
205
|
+
if (legacyDataWriter?.hasPendingWork()) {
|
|
206
|
+
logger.info("Flushing pending legacy data writes...");
|
|
207
|
+
await legacyDataWriter.flush();
|
|
208
|
+
}
|
|
209
|
+
} catch (err) {
|
|
210
|
+
console.error(`Failed to flush legacy data: ${err}`);
|
|
211
|
+
}
|
|
212
|
+
try {
|
|
213
|
+
await config?.close();
|
|
214
|
+
} catch (err) {
|
|
215
|
+
console.error(`Failed to close config storage: ${err}`);
|
|
216
|
+
}
|
|
217
|
+
// Wait for the Environment runtime to fully shut down (flushes all storage,
|
|
218
|
+
// completes async worker cleanup). Without this, controller storage like
|
|
219
|
+
// "server-1-fff1" may not be flushed before the process exits.
|
|
220
|
+
try {
|
|
221
|
+
await env.runtime.close();
|
|
222
|
+
} catch (err) {
|
|
223
|
+
console.error(`Failed to close runtime: ${err}`);
|
|
199
224
|
}
|
|
200
|
-
await config?.close();
|
|
201
225
|
try {
|
|
202
226
|
await fileLoggerClose?.();
|
|
203
227
|
} catch (err) {
|
|
204
228
|
console.error(`Failed to flush log file on shutdown: ${err}`);
|
|
205
229
|
}
|
|
206
|
-
process.exit(0);
|
|
207
230
|
}
|
|
208
231
|
|
|
209
|
-
start().catch(err =>
|
|
232
|
+
start().catch(async err => {
|
|
233
|
+
console.error(err);
|
|
234
|
+
await config?.close();
|
|
235
|
+
});
|
|
210
236
|
|
|
211
237
|
process.on("SIGINT", () => void stop().catch(err => console.error(err)));
|
|
212
238
|
process.on("SIGTERM", () => void stop().catch(err => console.error(err)));
|
package/src/cli.ts
CHANGED
|
@@ -11,14 +11,16 @@
|
|
|
11
11
|
|
|
12
12
|
import { Command, InvalidArgumentError, Option } from "commander";
|
|
13
13
|
import { readFileSync } from "node:fs";
|
|
14
|
-
import { homedir } from "node:os";
|
|
14
|
+
import { homedir, networkInterfaces } from "node:os";
|
|
15
15
|
import { dirname, join } from "node:path";
|
|
16
16
|
import { fileURLToPath } from "node:url";
|
|
17
17
|
|
|
18
18
|
// Read the version from package.json using an ESM-native approach
|
|
19
19
|
const __dirname = dirname(fileURLToPath(import.meta.url));
|
|
20
20
|
const packageJsonPath = join(__dirname, "../../package.json");
|
|
21
|
-
const packageJson = JSON.parse(readFileSync(packageJsonPath, "utf-8")) as {
|
|
21
|
+
const packageJson = JSON.parse(readFileSync(packageJsonPath, "utf-8")) as {
|
|
22
|
+
version: string;
|
|
23
|
+
};
|
|
22
24
|
const VERSION = packageJson.version;
|
|
23
25
|
|
|
24
26
|
// Default values (exported for use in LegacyDataLoader)
|
|
@@ -207,6 +209,31 @@ export function parseCliArgs(argv?: string[]): CliOptions {
|
|
|
207
209
|
listenAddress = [process.env.LISTEN_ADDRESS];
|
|
208
210
|
}
|
|
209
211
|
|
|
212
|
+
// Substitute {{interface}} patterns with all its IP addresses
|
|
213
|
+
if (listenAddress) {
|
|
214
|
+
const interfaces = networkInterfaces();
|
|
215
|
+
listenAddress = listenAddress.flatMap(address => {
|
|
216
|
+
const match = address.match(/^{{(.+)}}$/);
|
|
217
|
+
if (match) {
|
|
218
|
+
const interfaceName = match[1];
|
|
219
|
+
const interfaceAddresses = interfaces[interfaceName] || [];
|
|
220
|
+
|
|
221
|
+
// Add scope to ipv6 link local addresses
|
|
222
|
+
const normalizedInterfaceAddresses = interfaceAddresses.map(a =>
|
|
223
|
+
a.address.toLowerCase().startsWith("fe80:") && !a.address.includes("%")
|
|
224
|
+
? `${a.address}%${interfaceName}`
|
|
225
|
+
: a.address,
|
|
226
|
+
);
|
|
227
|
+
|
|
228
|
+
if (normalizedInterfaceAddresses.length === 0) {
|
|
229
|
+
throw new InvalidArgumentError(`No valid IP address found for interface ${interfaceName}`);
|
|
230
|
+
}
|
|
231
|
+
|
|
232
|
+
return normalizedInterfaceAddresses;
|
|
233
|
+
}
|
|
234
|
+
return [address];
|
|
235
|
+
});
|
|
236
|
+
}
|
|
210
237
|
return {
|
|
211
238
|
vendorId: opts.vendorid,
|
|
212
239
|
fabricId: opts.fabricid ?? undefined,
|
|
@@ -14,6 +14,8 @@ import {
|
|
|
14
14
|
LegacyFabricConfigData,
|
|
15
15
|
LegacyServerFile,
|
|
16
16
|
Logger,
|
|
17
|
+
parseBigIntAwareJson,
|
|
18
|
+
toBigIntAwareJson,
|
|
17
19
|
} from "@matter-server/ws-controller";
|
|
18
20
|
import { Millis, Time, Timer } from "@matter/main";
|
|
19
21
|
import { access, readFile, rename, unlink, writeFile } from "node:fs/promises";
|
|
@@ -284,7 +286,7 @@ export async function loadLegacyData(
|
|
|
284
286
|
try {
|
|
285
287
|
await access(filePath);
|
|
286
288
|
const content = await readFile(filePath, "utf-8");
|
|
287
|
-
const serverFile =
|
|
289
|
+
const serverFile = parseBigIntAwareJson(content) as LegacyServerFile;
|
|
288
290
|
|
|
289
291
|
// Warn if the nodes key is missing
|
|
290
292
|
if (!serverFile.nodes) {
|
|
@@ -401,7 +403,7 @@ export async function saveLegacyServerFile(
|
|
|
401
403
|
logger.debug(`Keeping existing backup intact (main file was corrupted)`);
|
|
402
404
|
}
|
|
403
405
|
|
|
404
|
-
const content =
|
|
406
|
+
const content = toBigIntAwareJson(serverFile, 2);
|
|
405
407
|
await writeFile(serverFilePath, content, "utf-8");
|
|
406
408
|
|
|
407
409
|
const nodeCount = Object.keys(serverFile.nodes).length;
|
|
@@ -587,7 +589,7 @@ export class LegacyDataWriter {
|
|
|
587
589
|
// First, try to load the main file
|
|
588
590
|
try {
|
|
589
591
|
const content = await readFile(serverFilePath, "utf-8");
|
|
590
|
-
serverFile =
|
|
592
|
+
serverFile = parseBigIntAwareJson(content) as LegacyServerFile;
|
|
591
593
|
|
|
592
594
|
// Warn if the nodes key is missing
|
|
593
595
|
if (!serverFile.nodes) {
|
|
@@ -603,7 +605,7 @@ export class LegacyDataWriter {
|
|
|
603
605
|
// Main file failed, try the backup
|
|
604
606
|
try {
|
|
605
607
|
const content = await readFile(backupFilePath, "utf-8");
|
|
606
|
-
serverFile =
|
|
608
|
+
serverFile = parseBigIntAwareJson(content) as LegacyServerFile;
|
|
607
609
|
|
|
608
610
|
// Warn if the nodes key is missing
|
|
609
611
|
if (!serverFile.nodes) {
|