@matter/nodejs 0.16.0-alpha.0-20251006-3fe1e7c57 → 0.16.0-alpha.0-20251013-89bb7099d
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/cjs/config.d.ts +1 -1
- package/dist/cjs/config.js +1 -1
- package/dist/cjs/environment/NodeJsEnvironment.d.ts +2 -0
- package/dist/cjs/environment/NodeJsEnvironment.d.ts.map +1 -1
- package/dist/cjs/environment/NodeJsEnvironment.js +15 -3
- package/dist/cjs/environment/NodeJsEnvironment.js.map +1 -1
- package/dist/cjs/environment/ProcessManager.d.ts +1 -0
- package/dist/cjs/environment/ProcessManager.d.ts.map +1 -1
- package/dist/cjs/environment/ProcessManager.js +8 -0
- package/dist/cjs/environment/ProcessManager.js.map +1 -1
- package/dist/cjs/net/NodeJsHttpEndpoint.d.ts +42 -0
- package/dist/cjs/net/NodeJsHttpEndpoint.d.ts.map +1 -0
- package/dist/cjs/net/NodeJsHttpEndpoint.js +304 -0
- package/dist/cjs/net/NodeJsHttpEndpoint.js.map +6 -0
- package/dist/cjs/net/NodeJsUdpChannel.d.ts +1 -1
- package/dist/cjs/net/NodeJsUdpChannel.d.ts.map +1 -1
- package/dist/cjs/net/NodeJsUdpChannel.js +31 -3
- package/dist/cjs/net/NodeJsUdpChannel.js.map +1 -1
- package/dist/cjs/net/WsAdapter.d.ts +25 -0
- package/dist/cjs/net/WsAdapter.d.ts.map +1 -0
- package/dist/cjs/net/WsAdapter.js +33 -0
- package/dist/cjs/net/WsAdapter.js.map +6 -0
- package/dist/cjs/net/index.d.ts +2 -0
- package/dist/cjs/net/index.d.ts.map +1 -1
- package/dist/cjs/net/index.js +2 -0
- package/dist/cjs/net/index.js.map +1 -1
- package/dist/esm/config.d.ts +1 -1
- package/dist/esm/config.js +1 -1
- package/dist/esm/environment/NodeJsEnvironment.d.ts +2 -0
- package/dist/esm/environment/NodeJsEnvironment.d.ts.map +1 -1
- package/dist/esm/environment/NodeJsEnvironment.js +16 -3
- package/dist/esm/environment/NodeJsEnvironment.js.map +1 -1
- package/dist/esm/environment/ProcessManager.d.ts +1 -0
- package/dist/esm/environment/ProcessManager.d.ts.map +1 -1
- package/dist/esm/environment/ProcessManager.js +8 -0
- package/dist/esm/environment/ProcessManager.js.map +1 -1
- package/dist/esm/net/NodeJsHttpEndpoint.d.ts +42 -0
- package/dist/esm/net/NodeJsHttpEndpoint.d.ts.map +1 -0
- package/dist/esm/net/NodeJsHttpEndpoint.js +284 -0
- package/dist/esm/net/NodeJsHttpEndpoint.js.map +6 -0
- package/dist/esm/net/NodeJsUdpChannel.d.ts +1 -1
- package/dist/esm/net/NodeJsUdpChannel.d.ts.map +1 -1
- package/dist/esm/net/NodeJsUdpChannel.js +34 -3
- package/dist/esm/net/NodeJsUdpChannel.js.map +1 -1
- package/dist/esm/net/WsAdapter.d.ts +25 -0
- package/dist/esm/net/WsAdapter.d.ts.map +1 -0
- package/dist/esm/net/WsAdapter.js +13 -0
- package/dist/esm/net/WsAdapter.js.map +6 -0
- package/dist/esm/net/index.d.ts +2 -0
- package/dist/esm/net/index.d.ts.map +1 -1
- package/dist/esm/net/index.js +2 -0
- package/dist/esm/net/index.js.map +1 -1
- package/package.json +10 -10
- package/src/config.ts +1 -1
- package/src/environment/NodeJsEnvironment.ts +21 -3
- package/src/environment/ProcessManager.ts +12 -0
- package/src/net/NodeJsHttpEndpoint.ts +358 -0
- package/src/net/NodeJsUdpChannel.ts +42 -3
- package/src/net/WsAdapter.ts +30 -0
- package/src/net/index.ts +2 -0
|
@@ -5,10 +5,13 @@
|
|
|
5
5
|
*/
|
|
6
6
|
|
|
7
7
|
import {
|
|
8
|
+
AddressInUseError,
|
|
9
|
+
BindError,
|
|
8
10
|
Bytes,
|
|
9
11
|
ChannelType,
|
|
10
12
|
createPromise,
|
|
11
13
|
Diagnostic,
|
|
14
|
+
ImplementationError,
|
|
12
15
|
isIPv4,
|
|
13
16
|
isIPv6,
|
|
14
17
|
Logger,
|
|
@@ -40,7 +43,22 @@ function createDgramSocket(host: string | undefined, port: number | undefined, o
|
|
|
40
43
|
try {
|
|
41
44
|
socket.close();
|
|
42
45
|
} catch (error) {
|
|
43
|
-
logger.debug("Error closing socket", error);
|
|
46
|
+
logger.debug("Error closing socket:", error);
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
const code = (error as unknown as { code: string })?.code;
|
|
50
|
+
let desc = `${host ? host : options.type === "udp4" ? "0.0.0.0" : "{::}"}`;
|
|
51
|
+
if (port !== undefined) {
|
|
52
|
+
desc = `${desc}:${port}`;
|
|
53
|
+
}
|
|
54
|
+
switch (code) {
|
|
55
|
+
case "EADDRINUSE":
|
|
56
|
+
error = new AddressInUseError(`Cannot bind ${desc} because port is already in use`);
|
|
57
|
+
break;
|
|
58
|
+
|
|
59
|
+
default:
|
|
60
|
+
error = new BindError(`Cannot bind to ${desc} (code ${code})`);
|
|
61
|
+
break;
|
|
44
62
|
}
|
|
45
63
|
reject(error);
|
|
46
64
|
};
|
|
@@ -56,6 +74,7 @@ function createDgramSocket(host: string | undefined, port: number | undefined, o
|
|
|
56
74
|
);
|
|
57
75
|
socket.removeListener("error", handleBindError);
|
|
58
76
|
socket.on("error", error => logger.error(error));
|
|
77
|
+
|
|
59
78
|
resolve(socket);
|
|
60
79
|
});
|
|
61
80
|
});
|
|
@@ -66,11 +85,31 @@ export class NodeJsUdpChannel implements UdpChannel {
|
|
|
66
85
|
readonly #socket: dgram.Socket;
|
|
67
86
|
readonly #netInterface: string | undefined;
|
|
68
87
|
|
|
69
|
-
static async create({ listeningPort, type, listeningAddress, netInterface }: UdpChannelOptions) {
|
|
70
|
-
|
|
88
|
+
static async create({ listeningPort, type, listeningAddress, netInterface, reuseAddress }: UdpChannelOptions) {
|
|
89
|
+
let dgramType: "udp4" | "udp6";
|
|
90
|
+
switch (type) {
|
|
91
|
+
case "udp":
|
|
92
|
+
case "udp6":
|
|
93
|
+
dgramType = "udp6";
|
|
94
|
+
break;
|
|
95
|
+
|
|
96
|
+
case "udp4":
|
|
97
|
+
dgramType = "udp4";
|
|
98
|
+
break;
|
|
99
|
+
|
|
100
|
+
default:
|
|
101
|
+
throw new ImplementationError(`Unrecognized UDP socket type ${type}`);
|
|
102
|
+
}
|
|
103
|
+
|
|
104
|
+
const socketOptions: dgram.SocketOptions = { type: dgramType };
|
|
71
105
|
if (type === "udp6") {
|
|
72
106
|
socketOptions.ipv6Only = true;
|
|
73
107
|
}
|
|
108
|
+
|
|
109
|
+
if (reuseAddress) {
|
|
110
|
+
socketOptions.reuseAddr = true;
|
|
111
|
+
}
|
|
112
|
+
|
|
74
113
|
const socket = await createDgramSocket(listeningAddress, listeningPort, socketOptions);
|
|
75
114
|
socket.setBroadcast(true);
|
|
76
115
|
let netInterfaceZone: string | undefined;
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @license
|
|
3
|
+
* Copyright 2022-2025 Matter.js Authors
|
|
4
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
5
|
+
*/
|
|
6
|
+
|
|
7
|
+
import { HttpEndpoint } from "#general";
|
|
8
|
+
|
|
9
|
+
import { IncomingMessage } from "node:http";
|
|
10
|
+
import { Duplex } from "node:stream";
|
|
11
|
+
|
|
12
|
+
/**
|
|
13
|
+
* This is a pluggable component that handles the upgrade to a WsConnection.
|
|
14
|
+
*
|
|
15
|
+
* We do not implement directly here because Node.js does not support WebSocket servers natively, so we must use a
|
|
16
|
+
* third-party dependency.
|
|
17
|
+
*/
|
|
18
|
+
export interface WsAdapter {
|
|
19
|
+
handle(req: IncomingMessage, socket: Duplex, head: Buffer): Promise<HttpEndpoint.WsConnection>;
|
|
20
|
+
close(): Promise<void>;
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
export namespace WsAdapter {
|
|
24
|
+
// eslint-disable-next-line prefer-const
|
|
25
|
+
export let defaultFactory = undefined as undefined | Factory;
|
|
26
|
+
|
|
27
|
+
export interface Factory {
|
|
28
|
+
(): WsAdapter;
|
|
29
|
+
}
|
|
30
|
+
}
|