@matter/general 0.16.0-alpha.0-20251001-7eb06da95 → 0.16.0-alpha.0-20251003-dc6d5523d

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.
Files changed (153) hide show
  1. package/dist/cjs/MatterError.d.ts +2 -2
  2. package/dist/cjs/MatterError.d.ts.map +1 -1
  3. package/dist/cjs/MatterError.js +0 -1
  4. package/dist/cjs/MatterError.js.map +1 -1
  5. package/dist/cjs/environment/Environment.d.ts +12 -0
  6. package/dist/cjs/environment/Environment.d.ts.map +1 -1
  7. package/dist/cjs/environment/Environment.js +48 -7
  8. package/dist/cjs/environment/Environment.js.map +1 -1
  9. package/dist/cjs/environment/Environmental.d.ts +1 -1
  10. package/dist/cjs/environment/Environmental.d.ts.map +1 -1
  11. package/dist/cjs/environment/RuntimeService.d.ts +9 -2
  12. package/dist/cjs/environment/RuntimeService.d.ts.map +1 -1
  13. package/dist/cjs/environment/RuntimeService.js +10 -1
  14. package/dist/cjs/environment/RuntimeService.js.map +1 -1
  15. package/dist/cjs/net/AppAddress.d.ts +46 -0
  16. package/dist/cjs/net/AppAddress.d.ts.map +1 -0
  17. package/dist/cjs/net/AppAddress.js +117 -0
  18. package/dist/cjs/net/AppAddress.js.map +6 -0
  19. package/dist/cjs/net/Channel.d.ts +2 -2
  20. package/dist/cjs/net/Channel.d.ts.map +1 -1
  21. package/dist/cjs/net/{TransportInterface.d.ts → ConnectionlessTransport.d.ts} +9 -8
  22. package/dist/cjs/net/ConnectionlessTransport.d.ts.map +1 -0
  23. package/dist/cjs/net/{TransportInterface.js → ConnectionlessTransport.js} +9 -8
  24. package/dist/cjs/net/ConnectionlessTransport.js.map +6 -0
  25. package/dist/cjs/net/Network.d.ts +2 -2
  26. package/dist/cjs/net/Network.d.ts.map +1 -1
  27. package/dist/cjs/net/ServerAddress.d.ts +7 -2
  28. package/dist/cjs/net/ServerAddress.d.ts.map +1 -1
  29. package/dist/cjs/net/ServerAddress.js +20 -5
  30. package/dist/cjs/net/ServerAddress.js.map +1 -1
  31. package/dist/cjs/net/index.d.ts +3 -5
  32. package/dist/cjs/net/index.d.ts.map +1 -1
  33. package/dist/cjs/net/index.js +3 -5
  34. package/dist/cjs/net/index.js.map +1 -1
  35. package/dist/cjs/net/mock/MockNetwork.d.ts +1 -1
  36. package/dist/cjs/net/mock/MockNetwork.d.ts.map +1 -1
  37. package/dist/cjs/net/mock/MockUdpChannel.d.ts +1 -1
  38. package/dist/cjs/net/mock/MockUdpChannel.d.ts.map +1 -1
  39. package/dist/cjs/net/mock/MockUdpChannel.js +1 -1
  40. package/dist/{esm/net → cjs/net/udp}/UdpChannel.d.ts +3 -3
  41. package/dist/cjs/net/udp/UdpChannel.d.ts.map +1 -0
  42. package/dist/cjs/net/{UdpChannel.js.map → udp/UdpChannel.js.map} +1 -1
  43. package/dist/{esm/net → cjs/net/udp}/UdpInterface.d.ts +9 -10
  44. package/dist/cjs/net/udp/UdpInterface.d.ts.map +1 -0
  45. package/dist/cjs/net/{UdpInterface.js → udp/UdpInterface.js} +2 -2
  46. package/dist/cjs/net/{UdpInterface.js.map → udp/UdpInterface.js.map} +2 -2
  47. package/dist/{esm/net → cjs/net/udp}/UdpMulticastServer.d.ts +1 -1
  48. package/dist/cjs/net/udp/UdpMulticastServer.d.ts.map +1 -0
  49. package/dist/cjs/net/{UdpMulticastServer.js → udp/UdpMulticastServer.js} +5 -5
  50. package/dist/cjs/net/{UdpMulticastServer.js.map → udp/UdpMulticastServer.js.map} +1 -1
  51. package/dist/cjs/net/udp/index.d.ts +9 -0
  52. package/dist/cjs/net/udp/index.d.ts.map +1 -0
  53. package/dist/cjs/net/udp/index.js +26 -0
  54. package/dist/cjs/net/udp/index.js.map +6 -0
  55. package/dist/cjs/time/Duration.d.ts.map +1 -1
  56. package/dist/cjs/time/Duration.js +4 -1
  57. package/dist/cjs/time/Duration.js.map +1 -1
  58. package/dist/esm/MatterError.d.ts +2 -2
  59. package/dist/esm/MatterError.d.ts.map +1 -1
  60. package/dist/esm/MatterError.js +0 -1
  61. package/dist/esm/MatterError.js.map +1 -1
  62. package/dist/esm/environment/Environment.d.ts +12 -0
  63. package/dist/esm/environment/Environment.d.ts.map +1 -1
  64. package/dist/esm/environment/Environment.js +48 -7
  65. package/dist/esm/environment/Environment.js.map +1 -1
  66. package/dist/esm/environment/Environmental.d.ts +1 -1
  67. package/dist/esm/environment/Environmental.d.ts.map +1 -1
  68. package/dist/esm/environment/RuntimeService.d.ts +9 -2
  69. package/dist/esm/environment/RuntimeService.d.ts.map +1 -1
  70. package/dist/esm/environment/RuntimeService.js +10 -1
  71. package/dist/esm/environment/RuntimeService.js.map +1 -1
  72. package/dist/esm/net/AppAddress.d.ts +46 -0
  73. package/dist/esm/net/AppAddress.d.ts.map +1 -0
  74. package/dist/esm/net/AppAddress.js +97 -0
  75. package/dist/esm/net/AppAddress.js.map +6 -0
  76. package/dist/esm/net/Channel.d.ts +2 -2
  77. package/dist/esm/net/Channel.d.ts.map +1 -1
  78. package/dist/esm/net/{TransportInterface.d.ts → ConnectionlessTransport.d.ts} +9 -8
  79. package/dist/esm/net/ConnectionlessTransport.d.ts.map +1 -0
  80. package/dist/esm/net/{TransportInterface.js → ConnectionlessTransport.js} +6 -5
  81. package/dist/esm/net/ConnectionlessTransport.js.map +6 -0
  82. package/dist/esm/net/Network.d.ts +2 -2
  83. package/dist/esm/net/Network.d.ts.map +1 -1
  84. package/dist/esm/net/ServerAddress.d.ts +7 -2
  85. package/dist/esm/net/ServerAddress.d.ts.map +1 -1
  86. package/dist/esm/net/ServerAddress.js +20 -5
  87. package/dist/esm/net/ServerAddress.js.map +1 -1
  88. package/dist/esm/net/index.d.ts +3 -5
  89. package/dist/esm/net/index.d.ts.map +1 -1
  90. package/dist/esm/net/index.js +3 -5
  91. package/dist/esm/net/index.js.map +1 -1
  92. package/dist/esm/net/mock/MockNetwork.d.ts +1 -1
  93. package/dist/esm/net/mock/MockNetwork.d.ts.map +1 -1
  94. package/dist/esm/net/mock/MockUdpChannel.d.ts +1 -1
  95. package/dist/esm/net/mock/MockUdpChannel.d.ts.map +1 -1
  96. package/dist/esm/net/mock/MockUdpChannel.js +1 -1
  97. package/dist/{cjs/net → esm/net/udp}/UdpChannel.d.ts +3 -3
  98. package/dist/esm/net/udp/UdpChannel.d.ts.map +1 -0
  99. package/dist/esm/net/{UdpChannel.js.map → udp/UdpChannel.js.map} +1 -1
  100. package/dist/{cjs/net → esm/net/udp}/UdpInterface.d.ts +9 -10
  101. package/dist/esm/net/udp/UdpInterface.d.ts.map +1 -0
  102. package/dist/esm/net/{UdpInterface.js → udp/UdpInterface.js} +2 -2
  103. package/dist/esm/net/{UdpInterface.js.map → udp/UdpInterface.js.map} +2 -2
  104. package/dist/{cjs/net → esm/net/udp}/UdpMulticastServer.d.ts +1 -1
  105. package/dist/esm/net/udp/UdpMulticastServer.d.ts.map +1 -0
  106. package/dist/esm/net/{UdpMulticastServer.js → udp/UdpMulticastServer.js} +5 -5
  107. package/dist/esm/net/{UdpMulticastServer.js.map → udp/UdpMulticastServer.js.map} +1 -1
  108. package/dist/esm/net/udp/index.d.ts +9 -0
  109. package/dist/esm/net/udp/index.d.ts.map +1 -0
  110. package/dist/esm/net/udp/index.js +9 -0
  111. package/dist/esm/net/udp/index.js.map +6 -0
  112. package/dist/esm/time/Duration.d.ts.map +1 -1
  113. package/dist/esm/time/Duration.js +4 -1
  114. package/dist/esm/time/Duration.js.map +1 -1
  115. package/package.json +2 -2
  116. package/src/MatterError.ts +6 -3
  117. package/src/environment/Environment.ts +66 -8
  118. package/src/environment/Environmental.ts +1 -1
  119. package/src/environment/RuntimeService.ts +21 -2
  120. package/src/net/AppAddress.ts +136 -0
  121. package/src/net/Channel.ts +2 -2
  122. package/src/net/{TransportInterface.ts → ConnectionlessTransport.ts} +12 -8
  123. package/src/net/Network.ts +2 -2
  124. package/src/net/ServerAddress.ts +32 -7
  125. package/src/net/index.ts +3 -5
  126. package/src/net/mock/MockNetwork.ts +1 -1
  127. package/src/net/mock/MockUdpChannel.ts +1 -1
  128. package/src/net/{UdpChannel.ts → udp/UdpChannel.ts} +3 -3
  129. package/src/net/{UdpInterface.ts → udp/UdpInterface.ts} +7 -8
  130. package/src/net/{UdpMulticastServer.ts → udp/UdpMulticastServer.ts} +5 -5
  131. package/src/net/udp/index.ts +9 -0
  132. package/src/time/Duration.ts +8 -1
  133. package/dist/cjs/net/NetInterface.d.ts +0 -25
  134. package/dist/cjs/net/NetInterface.d.ts.map +0 -1
  135. package/dist/cjs/net/NetInterface.js +0 -42
  136. package/dist/cjs/net/NetInterface.js.map +0 -6
  137. package/dist/cjs/net/TransportInterface.d.ts.map +0 -1
  138. package/dist/cjs/net/TransportInterface.js.map +0 -6
  139. package/dist/cjs/net/UdpChannel.d.ts.map +0 -1
  140. package/dist/cjs/net/UdpInterface.d.ts.map +0 -1
  141. package/dist/cjs/net/UdpMulticastServer.d.ts.map +0 -1
  142. package/dist/esm/net/NetInterface.d.ts +0 -25
  143. package/dist/esm/net/NetInterface.d.ts.map +0 -1
  144. package/dist/esm/net/NetInterface.js +0 -22
  145. package/dist/esm/net/NetInterface.js.map +0 -6
  146. package/dist/esm/net/TransportInterface.d.ts.map +0 -1
  147. package/dist/esm/net/TransportInterface.js.map +0 -6
  148. package/dist/esm/net/UdpChannel.d.ts.map +0 -1
  149. package/dist/esm/net/UdpInterface.d.ts.map +0 -1
  150. package/dist/esm/net/UdpMulticastServer.d.ts.map +0 -1
  151. package/src/net/NetInterface.ts +0 -34
  152. /package/dist/cjs/net/{UdpChannel.js → udp/UdpChannel.js} +0 -0
  153. /package/dist/esm/net/{UdpChannel.js → udp/UdpChannel.js} +0 -0
@@ -0,0 +1,136 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2022-2025 Matter.js Authors
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+
7
+ import { Diagnostic } from "#log/Diagnostic.js";
8
+ import { NetworkError } from "./Network.js";
9
+
10
+ export class InvalidAppAddress extends NetworkError {}
11
+
12
+ /**
13
+ * An application network address.
14
+ *
15
+ * This is an OSI layer 7 address representable as an object or URL.
16
+ */
17
+ export class AppAddress extends URL {
18
+ constructor(definition: AppAddress.Definition) {
19
+ if (typeof definition === "object" && !(definition instanceof URL)) {
20
+ let protocol = definition.appProtocol;
21
+ let host;
22
+ if (definition.tls) {
23
+ protocol += "s";
24
+ }
25
+ if (definition.transport.kind === "unix") {
26
+ protocol += "+unix";
27
+ host = encodeURIComponent(definition.transport.path);
28
+ } else {
29
+ host = definition.transport.host;
30
+ if (definition.transport.port) {
31
+ host = `${host}:${definition.transport.port}`;
32
+ }
33
+ }
34
+ const path = definition.path ?? "/";
35
+ definition = `${protocol}://${host}${path}`;
36
+ }
37
+ try {
38
+ super(definition);
39
+ } catch (e) {
40
+ if (e instanceof SyntaxError) {
41
+ throw new InvalidAppAddress(`Invalid app address:${e.message}`);
42
+ }
43
+ throw e;
44
+ }
45
+ }
46
+
47
+ get [Diagnostic.value]() {
48
+ return this.toString();
49
+ }
50
+
51
+ get appProtocol() {
52
+ return this.protocol.replace(/[:+].*$/, "");
53
+ }
54
+
55
+ get isTls() {
56
+ switch (this.appProtocol) {
57
+ case "https":
58
+ case "mqtts":
59
+ case "wss":
60
+ return true;
61
+
62
+ case "mqtt":
63
+ // MQTT over WebSockets over TLS
64
+ return this.protocolModifiers.includes("wss");
65
+ }
66
+ return false;
67
+ }
68
+
69
+ get protocolModifiers() {
70
+ const segments = this.protocol.replace(/:$/, "").split("+");
71
+ segments.shift();
72
+ return segments;
73
+ }
74
+
75
+ get transport(): AppAddress.TransportAddress {
76
+ if (this.protocolModifiers.includes("unix")) {
77
+ return {
78
+ kind: "unix",
79
+ path: decodeURIComponent(this.hostname),
80
+ };
81
+ }
82
+
83
+ return {
84
+ kind: "ip",
85
+ host: this.hostname,
86
+ port: this.portNum,
87
+ };
88
+ }
89
+
90
+ get portNum() {
91
+ if (this.port !== "") {
92
+ return Number(this.port);
93
+ }
94
+ return 0;
95
+ }
96
+
97
+ get isWildcardHost() {
98
+ return this.host === "0.0.0.0" || this.host === "::";
99
+ }
100
+
101
+ get isWildcardPort() {
102
+ return this.port === "0";
103
+ }
104
+
105
+ static for(definition: AppAddress.Definition) {
106
+ if (definition instanceof AppAddress) {
107
+ return definition;
108
+ }
109
+
110
+ return new AppAddress(definition);
111
+ }
112
+ }
113
+
114
+ export namespace AppAddress {
115
+ export type Definition = Object | URL | string;
116
+
117
+ export type TransportAddress = IpTransportAddress | UnixSocketTransportAddress;
118
+
119
+ export interface IpTransportAddress {
120
+ kind: "ip";
121
+ host: string;
122
+ port: number;
123
+ }
124
+
125
+ export interface UnixSocketTransportAddress {
126
+ kind: "unix";
127
+ path: string;
128
+ }
129
+
130
+ export interface Object {
131
+ appProtocol: string;
132
+ transport: TransportAddress;
133
+ tls?: boolean;
134
+ path?: string;
135
+ }
136
+ }
@@ -3,7 +3,7 @@
3
3
  * Copyright 2022-2025 Matter.js Authors
4
4
  * SPDX-License-Identifier: Apache-2.0
5
5
  */
6
- import { ServerAddressIp } from "#net/ServerAddress.js";
6
+ import { ServerAddressUdp } from "#net/ServerAddress.js";
7
7
  import { isObject } from "#util/Type.js";
8
8
 
9
9
  export enum ChannelType {
@@ -32,7 +32,7 @@ export interface Channel<T> {
32
32
  }
33
33
 
34
34
  export interface IpNetworkChannel<T> extends Channel<T> {
35
- networkAddress: ServerAddressIp;
35
+ networkAddress: ServerAddressUdp;
36
36
  }
37
37
 
38
38
  export function isIpNetworkChannel<T>(channel: Channel<T>): channel is IpNetworkChannel<T> {
@@ -9,18 +9,19 @@ import { Environmental } from "#environment/Environmental.js";
9
9
  import { Bytes } from "#util/Bytes.js";
10
10
  import { BasicSet } from "#util/Set.js";
11
11
  import { Channel, ChannelType } from "./Channel.js";
12
+ import { ServerAddress } from "./ServerAddress.js";
12
13
 
13
14
  /**
14
- * A TransportInterface is a generic interface for sending and receiving data on an established incoming connection.
15
- * It cannot open new connections.
15
+ * A local network endpoint associated with a specific {@link ServerAddress} for a connectionless protocol.
16
16
  */
17
- export interface TransportInterface {
18
- onData(listener: (socket: Channel<Bytes>, data: Bytes) => void): TransportInterface.Listener;
17
+ export interface ConnectionlessTransport {
18
+ onData(listener: (socket: Channel<Bytes>, data: Bytes) => void): ConnectionlessTransport.Listener;
19
19
  close(): Promise<void>;
20
20
  supports(type: ChannelType, address?: string): boolean;
21
+ openChannel(address: ServerAddress): Promise<Channel<Bytes>>;
21
22
  }
22
23
 
23
- export namespace TransportInterface {
24
+ export namespace ConnectionlessTransport {
24
25
  export interface Listener {
25
26
  close(): Promise<void>;
26
27
  }
@@ -29,14 +30,16 @@ export namespace TransportInterface {
29
30
  /**
30
31
  * A collection of {@link TransportInterfaces} managed as a unit.
31
32
  */
32
- export class TransportInterfaceSet<T extends TransportInterface = TransportInterface> extends BasicSet<T> {
33
+ export class ConnectionlessTransportSet<
34
+ T extends ConnectionlessTransport = ConnectionlessTransport,
35
+ > extends BasicSet<T> {
33
36
  constructor(...initialInterfaces: T[]) {
34
37
  super(...initialInterfaces);
35
38
  }
36
39
 
37
40
  static [Environmental.create](env: Environment) {
38
- const instance = new TransportInterfaceSet();
39
- env.set(TransportInterfaceSet, instance);
41
+ const instance = new ConnectionlessTransportSet();
42
+ env.set(ConnectionlessTransportSet, instance);
40
43
  return instance;
41
44
  }
42
45
 
@@ -47,6 +50,7 @@ export class TransportInterfaceSet<T extends TransportInterface = TransportInter
47
50
  for (const transportInterface of this) {
48
51
  await transportInterface.close();
49
52
  }
53
+ this.clear();
50
54
  }
51
55
 
52
56
  /**
@@ -5,8 +5,8 @@
5
5
  */
6
6
 
7
7
  import { MatterError } from "../MatterError.js";
8
- import { MaybePromise } from "../util/Promises.js";
9
- import { UdpChannel, UdpChannelOptions } from "./UdpChannel.js";
8
+ import type { MaybePromise } from "../util/Promises.js";
9
+ import type { UdpChannel, UdpChannelOptions } from "./udp/UdpChannel.js";
10
10
 
11
11
  export class NetworkError extends MatterError {}
12
12
 
@@ -9,12 +9,18 @@ import { Duration } from "#time/Duration.js";
9
9
  import { Timestamp } from "#time/Timestamp.js";
10
10
  import { Seconds } from "#time/TimeUnit.js";
11
11
 
12
- export type ServerAddressIp = {
12
+ export type ServerAddressUdp = {
13
13
  type: "udp";
14
14
  ip: string;
15
15
  port: number;
16
16
  };
17
17
 
18
+ export type ServerAddressTcp = {
19
+ type: "tcp";
20
+ ip: string;
21
+ port: number;
22
+ };
23
+
18
24
  export type ServerAddressBle = {
19
25
  type: "ble";
20
26
  peripheralAddress: string;
@@ -28,7 +34,7 @@ export interface Lifespan {
28
34
  ttl: Duration;
29
35
  }
30
36
 
31
- export type ServerAddress = (ServerAddressIp | ServerAddressBle) & Partial<Lifespan>;
37
+ export type ServerAddress = (ServerAddressUdp | ServerAddressTcp | ServerAddressBle) & Partial<Lifespan>;
32
38
 
33
39
  export function ServerAddress(definition: ServerAddress.Definition) {
34
40
  return {
@@ -40,16 +46,35 @@ export function ServerAddress(definition: ServerAddress.Definition) {
40
46
 
41
47
  export namespace ServerAddress {
42
48
  export function urlFor(address: ServerAddress): string {
43
- return address.type === "udp" ? `udp://[${address.ip}]:${address.port}` : `ble://${address.peripheralAddress}`;
49
+ switch (address.type) {
50
+ case "udp":
51
+ case "tcp":
52
+ return `${address.type}://${address.ip}:${address.port}`;
53
+
54
+ case "ble":
55
+ return `ble://${address.peripheralAddress}`;
56
+
57
+ default:
58
+ return `${(address as any).type}://`;
59
+ }
44
60
  }
45
61
 
46
62
  export function diagnosticFor(address: ServerAddress) {
47
63
  const diagnostic = Array<unknown>();
48
64
 
49
- if (address.type === "udp") {
50
- diagnostic.push("udp://", Diagnostic.strong(address.ip), ":", address.port);
51
- } else {
52
- diagnostic.push("ble://", Diagnostic.strong(address.peripheralAddress));
65
+ switch (address.type) {
66
+ case "udp":
67
+ case "tcp":
68
+ diagnostic.push(`${address.type}://`, Diagnostic.strong(address.ip), ":", address.port);
69
+ break;
70
+
71
+ case "ble":
72
+ diagnostic.push("ble://", Diagnostic.strong(address.peripheralAddress));
73
+ break;
74
+
75
+ default:
76
+ diagnostic.push(`${(address as any).type}://`);
77
+ break;
53
78
  }
54
79
 
55
80
  if ("ttl" in address && typeof address.ttl === "number") {
package/src/net/index.ts CHANGED
@@ -4,13 +4,11 @@
4
4
  * SPDX-License-Identifier: Apache-2.0
5
5
  */
6
6
 
7
+ export * from "./AppAddress.js";
7
8
  export * from "./Channel.js";
9
+ export * from "./ConnectionlessTransport.js";
8
10
  export * from "./mock/index.js";
9
- export * from "./NetInterface.js";
10
11
  export * from "./Network.js";
11
12
  export * from "./RetrySchedule.js";
12
13
  export * from "./ServerAddress.js";
13
- export * from "./TransportInterface.js";
14
- export * from "./UdpChannel.js";
15
- export * from "./UdpInterface.js";
16
- export * from "./UdpMulticastServer.js";
14
+ export * from "./udp/index.js";
@@ -7,7 +7,7 @@
7
7
  import { ChannelType } from "#net/Channel.js";
8
8
  import { isIPv4 } from "../../util/Ip.js";
9
9
  import { Network, NetworkError, NetworkInterface, NetworkInterfaceDetails } from "../Network.js";
10
- import { UdpChannelOptions } from "../UdpChannel.js";
10
+ import { UdpChannelOptions } from "../udp/UdpChannel.js";
11
11
  import { MockRouter } from "./MockRouter.js";
12
12
  import { MockUdpChannel } from "./MockUdpChannel.js";
13
13
  import type { NetworkSimulator } from "./NetworkSimulator.js";
@@ -7,7 +7,7 @@
7
7
  import { ChannelType } from "#net/Channel.js";
8
8
  import { Bytes } from "#util/Bytes.js";
9
9
  import { NetworkError } from "../Network.js";
10
- import { MAX_UDP_MESSAGE_SIZE, UdpChannel, UdpChannelOptions } from "../UdpChannel.js";
10
+ import { MAX_UDP_MESSAGE_SIZE, UdpChannel, UdpChannelOptions } from "../udp/UdpChannel.js";
11
11
  import { MockNetwork } from "./MockNetwork.js";
12
12
  import { MockRouter } from "./MockRouter.js";
13
13
 
@@ -5,8 +5,8 @@
5
5
  */
6
6
 
7
7
  import { Bytes, MaybePromise } from "#util/index.js";
8
- import { ChannelType } from "./Channel.js";
9
- import { TransportInterface } from "./TransportInterface.js";
8
+ import { ChannelType } from "../Channel.js";
9
+ import { ConnectionlessTransport } from "../ConnectionlessTransport.js";
10
10
 
11
11
  /** @see {@link MatterSpecification.v12.Core} § 4.4.4 */
12
12
  export const MAX_UDP_MESSAGE_SIZE = 1280 - 48; // 48 bytes IP and UDP header size for IPv6
@@ -24,7 +24,7 @@ export interface UdpChannel {
24
24
  maxPayloadSize: number;
25
25
  addMembership(address: string): MaybePromise<void>;
26
26
  dropMembership(address: string): MaybePromise<void>;
27
- onData(listener: UdpChannel.Callback): TransportInterface.Listener;
27
+ onData(listener: UdpChannel.Callback): ConnectionlessTransport.Listener;
28
28
  send(host: string, port: number, data: Bytes): Promise<void>;
29
29
  close(): Promise<void>;
30
30
  get port(): number;
@@ -4,15 +4,14 @@
4
4
  * SPDX-License-Identifier: Apache-2.0
5
5
  */
6
6
 
7
+ import { Channel, ChannelType, IpNetworkChannel } from "#net/Channel.js";
8
+ import { ConnectionlessTransport } from "#net/ConnectionlessTransport.js";
9
+ import { Network, NetworkError } from "#net/Network.js";
7
10
  import { Bytes } from "#util/Bytes.js";
8
- import { Channel, ChannelType, IpNetworkChannel } from "./Channel.js";
9
- import { NetInterface } from "./NetInterface.js";
10
- import { Network, NetworkError } from "./Network.js";
11
- import { ServerAddress, ServerAddressIp } from "./ServerAddress.js";
12
- import { TransportInterface } from "./TransportInterface.js";
11
+ import { ServerAddress, ServerAddressUdp } from "../ServerAddress.js";
13
12
  import { UdpChannel } from "./UdpChannel.js";
14
13
 
15
- export class UdpInterface implements NetInterface {
14
+ export class UdpInterface implements ConnectionlessTransport {
16
15
  readonly #server: UdpChannel;
17
16
 
18
17
  static async create(network: Network, type: "udp4" | "udp6", port?: number, host?: string, netInterface?: string) {
@@ -41,7 +40,7 @@ export class UdpInterface implements NetInterface {
41
40
  return Promise.resolve(new UdpConnection(this.#server, ip, port));
42
41
  }
43
42
 
44
- onData(listener: (channel: Channel<Bytes>, messageBytes: Bytes) => void): TransportInterface.Listener {
43
+ onData(listener: (channel: Channel<Bytes>, messageBytes: Bytes) => void): ConnectionlessTransport.Listener {
45
44
  return this.#server.onData((_netInterface, peerHost, peerPort, data) =>
46
45
  listener(new UdpConnection(this.#server, peerHost, peerPort), data),
47
46
  );
@@ -89,7 +88,7 @@ export class UdpConnection implements IpNetworkChannel<Bytes> {
89
88
  return `${this.type}://[${this.#peerAddress}]:${this.#peerPort}`;
90
89
  }
91
90
 
92
- get networkAddress(): ServerAddressIp {
91
+ get networkAddress(): ServerAddressUdp {
93
92
  return { type: "udp", ip: this.#peerAddress, port: this.#peerPort };
94
93
  }
95
94
 
@@ -7,11 +7,11 @@
7
7
  import { MatterAggregateError } from "#MatterError.js";
8
8
  import { Minutes } from "#time/TimeUnit.js";
9
9
  import { Bytes } from "#util/Bytes.js";
10
- import { Logger } from "../log/Logger.js";
11
- import { Cache } from "../util/Cache.js";
12
- import { asError } from "../util/Error.js";
13
- import { isIPv4 } from "../util/Ip.js";
14
- import { Network, NoAddressAvailableError } from "./Network.js";
10
+ import { Logger } from "../../log/Logger.js";
11
+ import { Cache } from "../../util/Cache.js";
12
+ import { asError } from "../../util/Error.js";
13
+ import { isIPv4 } from "../../util/Ip.js";
14
+ import { Network, NoAddressAvailableError } from "../Network.js";
15
15
  import { UdpChannel } from "./UdpChannel.js";
16
16
 
17
17
  const logger = Logger.get("UdpMulticastServer");
@@ -0,0 +1,9 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2022-2025 Matter.js Authors
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+
7
+ export * from "./UdpChannel.js";
8
+ export * from "./UdpInterface.js";
9
+ export * from "./UdpMulticastServer.js";
@@ -71,6 +71,9 @@ export namespace Duration {
71
71
  export function format<T extends Duration | undefined>(
72
72
  duration: T,
73
73
  ): T extends undefined ? string | undefined : string {
74
+ if (duration === undefined) {
75
+ return undefined as T extends undefined ? string | undefined : string;
76
+ }
74
77
  let ms = duration as number;
75
78
 
76
79
  if (typeof ms !== "number" || !Number.isFinite(ms)) {
@@ -177,5 +180,9 @@ export namespace Duration {
177
180
  }
178
181
 
179
182
  function toPrecision(number: number, precision: number) {
180
- return number.toPrecision(precision).replace(/\.?0+/, "");
183
+ // Remove trailing zeros after a non-zero decimal digit, then remove any trailing '.0'
184
+ return number
185
+ .toPrecision(precision)
186
+ .replace(/(\.\d*?[1-9])0+$/, "$1")
187
+ .replace(/\.0+$/, "");
181
188
  }
@@ -1,25 +0,0 @@
1
- /**
2
- * @license
3
- * Copyright 2022-2025 Matter.js Authors
4
- * SPDX-License-Identifier: Apache-2.0
5
- */
6
- import { Environment } from "#environment/Environment.js";
7
- import { Environmental } from "#environment/Environmental.js";
8
- import { Bytes } from "#util/Bytes.js";
9
- import { Channel } from "./Channel.js";
10
- import { ServerAddress } from "./ServerAddress.js";
11
- import { TransportInterface, TransportInterfaceSet } from "./TransportInterface.js";
12
- /**
13
- * A Network interface enhances a TransportInterface with the ability to open a channel to a remote server.
14
- */
15
- export interface NetInterface extends TransportInterface {
16
- openChannel(address: ServerAddress): Promise<Channel<Bytes>>;
17
- }
18
- export declare function isNetworkInterface(obj: TransportInterface | NetInterface): obj is NetInterface;
19
- /**
20
- * A collection of {@link NetInterfaces} managed as a unit.
21
- */
22
- export declare class NetInterfaceSet extends TransportInterfaceSet<NetInterface> {
23
- static [Environmental.create](env: Environment): NetInterfaceSet;
24
- }
25
- //# sourceMappingURL=NetInterface.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"NetInterface.d.ts","sourceRoot":"","sources":["../../../src/net/NetInterface.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,WAAW,EAAE,MAAM,6BAA6B,CAAC;AAC1D,OAAO,EAAE,aAAa,EAAE,MAAM,+BAA+B,CAAC;AAC9D,OAAO,EAAE,KAAK,EAAE,MAAM,gBAAgB,CAAC;AACvC,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AACvC,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACnD,OAAO,EAAE,kBAAkB,EAAE,qBAAqB,EAAE,MAAM,yBAAyB,CAAC;AAEpF;;GAEG;AACH,MAAM,WAAW,YAAa,SAAQ,kBAAkB;IACpD,WAAW,CAAC,OAAO,EAAE,aAAa,GAAG,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC;CAChE;AAED,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,kBAAkB,GAAG,YAAY,GAAG,GAAG,IAAI,YAAY,CAE9F;AAED;;GAEG;AACH,qBAAa,eAAgB,SAAQ,qBAAqB,CAAC,YAAY,CAAC;WACpD,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,WAAW;CAK1D"}
@@ -1,42 +0,0 @@
1
- "use strict";
2
- var __defProp = Object.defineProperty;
3
- var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
- var __getOwnPropNames = Object.getOwnPropertyNames;
5
- var __hasOwnProp = Object.prototype.hasOwnProperty;
6
- var __export = (target, all) => {
7
- for (var name in all)
8
- __defProp(target, name, { get: all[name], enumerable: true });
9
- };
10
- var __copyProps = (to, from, except, desc) => {
11
- if (from && typeof from === "object" || typeof from === "function") {
12
- for (let key of __getOwnPropNames(from))
13
- if (!__hasOwnProp.call(to, key) && key !== except)
14
- __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
15
- }
16
- return to;
17
- };
18
- var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
- var NetInterface_exports = {};
20
- __export(NetInterface_exports, {
21
- NetInterfaceSet: () => NetInterfaceSet,
22
- isNetworkInterface: () => isNetworkInterface
23
- });
24
- module.exports = __toCommonJS(NetInterface_exports);
25
- var import_Environmental = require("#environment/Environmental.js");
26
- var import_TransportInterface = require("./TransportInterface.js");
27
- /**
28
- * @license
29
- * Copyright 2022-2025 Matter.js Authors
30
- * SPDX-License-Identifier: Apache-2.0
31
- */
32
- function isNetworkInterface(obj) {
33
- return "openChannel" in obj;
34
- }
35
- class NetInterfaceSet extends import_TransportInterface.TransportInterfaceSet {
36
- static [import_Environmental.Environmental.create](env) {
37
- const instance = new NetInterfaceSet();
38
- env.set(NetInterfaceSet, instance);
39
- return instance;
40
- }
41
- }
42
- //# sourceMappingURL=NetInterface.js.map
@@ -1,6 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../../../src/net/NetInterface.ts"],
4
- "mappings": ";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAOA,2BAA8B;AAI9B,gCAA0D;AAX1D;AAAA;AAAA;AAAA;AAAA;AAoBO,SAAS,mBAAmB,KAA6D;AAC5F,SAAO,iBAAiB;AAC5B;AAKO,MAAM,wBAAwB,gDAAoC;AAAA,EACrE,QAAiB,mCAAc,MAAM,EAAE,KAAkB;AACrD,UAAM,WAAW,IAAI,gBAAgB;AACrC,QAAI,IAAI,iBAAiB,QAAQ;AACjC,WAAO;AAAA,EACX;AACJ;",
5
- "names": []
6
- }
@@ -1 +0,0 @@
1
- {"version":3,"file":"TransportInterface.d.ts","sourceRoot":"","sources":["../../../src/net/TransportInterface.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,WAAW,EAAE,MAAM,6BAA6B,CAAC;AAC1D,OAAO,EAAE,aAAa,EAAE,MAAM,+BAA+B,CAAC;AAC9D,OAAO,EAAE,KAAK,EAAE,MAAM,gBAAgB,CAAC;AACvC,OAAO,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAC;AACxC,OAAO,EAAE,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAEpD;;;GAGG;AACH,MAAM,WAAW,kBAAkB;IAC/B,MAAM,CAAC,QAAQ,EAAE,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,CAAC,EAAE,IAAI,EAAE,KAAK,KAAK,IAAI,GAAG,kBAAkB,CAAC,QAAQ,CAAC;IAC7F,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IACvB,QAAQ,CAAC,IAAI,EAAE,WAAW,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC;CAC1D;AAED,yBAAiB,kBAAkB,CAAC;IAChC,UAAiB,QAAQ;QACrB,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;KAC1B;CACJ;AAED;;GAEG;AACH,qBAAa,qBAAqB,CAAC,CAAC,SAAS,kBAAkB,GAAG,kBAAkB,CAAE,SAAQ,QAAQ,CAAC,CAAC,CAAC;gBACzF,GAAG,iBAAiB,EAAE,CAAC,EAAE;IAIrC,MAAM,CAAC,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,WAAW;IAM9C;;OAEG;IACG,KAAK;IAMX;;OAEG;IACH,YAAY,CAAC,IAAI,EAAE,WAAW,EAAE,OAAO,CAAC,EAAE,MAAM;IAIhD;;OAEG;IACH,eAAe,CAAC,IAAI,EAAE,WAAW,EAAE,OAAO,CAAC,EAAE,MAAM;CAGtD"}
@@ -1,6 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../../../src/net/TransportInterface.ts"],
4
- "mappings": ";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAOA,2BAA8B;AAE9B,iBAAyB;AATzB;AAAA;AAAA;AAAA;AAAA;AA+BO,MAAM,8BAAiF,oBAAY;AAAA,EACtG,eAAe,mBAAwB;AACnC,UAAM,GAAG,iBAAiB;AAAA,EAC9B;AAAA,EAEA,QAAQ,mCAAc,MAAM,EAAE,KAAkB;AAC5C,UAAM,WAAW,IAAI,sBAAsB;AAC3C,QAAI,IAAI,uBAAuB,QAAQ;AACvC,WAAO;AAAA,EACX;AAAA;AAAA;AAAA;AAAA,EAKA,MAAM,QAAQ;AACV,eAAW,sBAAsB,MAAM;AACnC,YAAM,mBAAmB,MAAM;AAAA,IACnC;AAAA,EACJ;AAAA;AAAA;AAAA;AAAA,EAKA,aAAa,MAAmB,SAAkB;AAC9C,WAAO,KAAK,KAAK,wBAAsB,mBAAmB,SAAS,MAAM,OAAO,CAAC;AAAA,EACrF;AAAA;AAAA;AAAA;AAAA,EAKA,gBAAgB,MAAmB,SAAkB;AACjD,WAAO,KAAK,aAAa,MAAM,OAAO,MAAM;AAAA,EAChD;AACJ;",
5
- "names": []
6
- }
@@ -1 +0,0 @@
1
- {"version":3,"file":"UdpChannel.d.ts","sourceRoot":"","sources":["../../../src/net/UdpChannel.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,KAAK,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AACrD,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAC3C,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAE7D,wDAAwD;AACxD,eAAO,MAAM,oBAAoB,QAAY,CAAC;AAE9C,MAAM,MAAM,aAAa,GAAG,MAAM,GAAG,MAAM,CAAC;AAE5C,MAAM,WAAW,iBAAiB;IAC9B,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,IAAI,EAAE,aAAa,CAAC;IACpB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,YAAY,CAAC,EAAE,MAAM,CAAC;CACzB;AAED,MAAM,WAAW,UAAU;IACvB,cAAc,EAAE,MAAM,CAAC;IACvB,aAAa,CAAC,OAAO,EAAE,MAAM,GAAG,YAAY,CAAC,IAAI,CAAC,CAAC;IACnD,cAAc,CAAC,OAAO,EAAE,MAAM,GAAG,YAAY,CAAC,IAAI,CAAC,CAAC;IACpD,MAAM,CAAC,QAAQ,EAAE,UAAU,CAAC,QAAQ,GAAG,kBAAkB,CAAC,QAAQ,CAAC;IACnE,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC7D,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IACvB,IAAI,IAAI,IAAI,MAAM,CAAC;IACnB,QAAQ,CAAC,IAAI,EAAE,WAAW,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC;CAC1D;AAED,yBAAiB,UAAU,CAAC;IACxB,UAAiB,QAAQ;QACrB,CAAC,YAAY,EAAE,MAAM,GAAG,SAAS,EAAE,WAAW,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK,GAAG,IAAI,CAAC;KAChG;CACJ"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"UdpInterface.d.ts","sourceRoot":"","sources":["../../../src/net/UdpInterface.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,KAAK,EAAE,MAAM,gBAAgB,CAAC;AACvC,OAAO,EAAE,OAAO,EAAE,WAAW,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AACtE,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACjD,OAAO,EAAE,OAAO,EAAgB,MAAM,cAAc,CAAC;AACrD,OAAO,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AACpE,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAC7D,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAE7C,qBAAa,YAAa,YAAW,YAAY;;WAGhC,MAAM,CAAC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,EAAE,YAAY,CAAC,EAAE,MAAM;gBAMpG,MAAM,EAAE,UAAU;IAI9B,SAAS,KAAK,MAAM,eAEnB;IAED,QAAQ,CAAC,IAAI,EAAE,WAAW,EAAE,OAAO,EAAE,MAAM;IAIrC,WAAW,CAAC,OAAO,EAAE,aAAa;IAQxC,MAAM,CAAC,QAAQ,EAAE,CAAC,OAAO,EAAE,OAAO,CAAC,KAAK,CAAC,EAAE,YAAY,EAAE,KAAK,KAAK,IAAI,GAAG,kBAAkB,CAAC,QAAQ;IAMrG,IAAI,IAAI,WAEP;IAED,KAAK;IAIL,aAAa,CAAC,OAAO,EAAE,MAAM;IAI7B,cAAc,CAAC,OAAO,EAAE,MAAM;CAGjC;AAED,qBAAa,aAAc,YAAW,gBAAgB,CAAC,KAAK,CAAC;;IACzD,QAAQ,CAAC,UAAU,SAAS;IAC5B,QAAQ,CAAC,IAAI,mBAAmB;gBAKpB,MAAM,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM;IAMrE,IAAI,cAAc,WAEjB;IAED,IAAI,CAAC,IAAI,EAAE,KAAK;IAIhB,IAAI,IAAI,WAEP;IAED,IAAI,cAAc,IAAI,eAAe,CAEpC;IAEK,KAAK;CAGd"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"UdpMulticastServer.d.ts","sourceRoot":"","sources":["../../../src/net/UdpMulticastServer.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAIH,OAAO,EAAE,KAAK,EAAE,MAAM,gBAAgB,CAAC;AAKvC,OAAO,EAAE,OAAO,EAA2B,MAAM,cAAc,CAAC;AAKhE,MAAM,WAAW,yBAAyB;IACtC,OAAO,EAAE,OAAO,CAAC;IACjB,aAAa,EAAE,MAAM,CAAC;IACtB,oBAAoB,EAAE,MAAM,CAAC;IAC7B,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B,YAAY,CAAC,EAAE,MAAM,CAAC;CACzB;AAED,qBAAa,kBAAkB;IAsDvB,QAAQ,CAAC,OAAO,EAAE,OAAO;IACzB,OAAO,CAAC,QAAQ,CAAC,oBAAoB;IACrC,OAAO,CAAC,QAAQ,CAAC,oBAAoB;IACrC,OAAO,CAAC,QAAQ,CAAC,aAAa;IAC9B,OAAO,CAAC,QAAQ,CAAC,UAAU;IAC3B,OAAO,CAAC,QAAQ,CAAC,UAAU;IAC3B,QAAQ,CAAC,YAAY,EAAE,MAAM,GAAG,SAAS;WA3DhC,MAAM,CAAC,EAChB,YAAY,EACZ,oBAAoB,EACpB,oBAAoB,EACpB,aAAa,EACb,OAAO,GACV,EAAE,yBAAyB;IAuC5B,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAKhC;IAEF,OAAO;IAUP,IAAI,YAAY,YAEf;IAED,SAAS,CAAC,QAAQ,EAAE,CAAC,OAAO,EAAE,KAAK,EAAE,WAAW,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,KAAK,IAAI;IAiBjF,IAAI,CAAC,OAAO,EAAE,KAAK,EAAE,YAAY,CAAC,EAAE,MAAM,EAAE,aAAa,CAAC,EAAE,MAAM;YA+C1D,sBAAsB;IAQ9B,KAAK;CAKd"}
@@ -1,25 +0,0 @@
1
- /**
2
- * @license
3
- * Copyright 2022-2025 Matter.js Authors
4
- * SPDX-License-Identifier: Apache-2.0
5
- */
6
- import { Environment } from "#environment/Environment.js";
7
- import { Environmental } from "#environment/Environmental.js";
8
- import { Bytes } from "#util/Bytes.js";
9
- import { Channel } from "./Channel.js";
10
- import { ServerAddress } from "./ServerAddress.js";
11
- import { TransportInterface, TransportInterfaceSet } from "./TransportInterface.js";
12
- /**
13
- * A Network interface enhances a TransportInterface with the ability to open a channel to a remote server.
14
- */
15
- export interface NetInterface extends TransportInterface {
16
- openChannel(address: ServerAddress): Promise<Channel<Bytes>>;
17
- }
18
- export declare function isNetworkInterface(obj: TransportInterface | NetInterface): obj is NetInterface;
19
- /**
20
- * A collection of {@link NetInterfaces} managed as a unit.
21
- */
22
- export declare class NetInterfaceSet extends TransportInterfaceSet<NetInterface> {
23
- static [Environmental.create](env: Environment): NetInterfaceSet;
24
- }
25
- //# sourceMappingURL=NetInterface.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"NetInterface.d.ts","sourceRoot":"","sources":["../../../src/net/NetInterface.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,WAAW,EAAE,MAAM,6BAA6B,CAAC;AAC1D,OAAO,EAAE,aAAa,EAAE,MAAM,+BAA+B,CAAC;AAC9D,OAAO,EAAE,KAAK,EAAE,MAAM,gBAAgB,CAAC;AACvC,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AACvC,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACnD,OAAO,EAAE,kBAAkB,EAAE,qBAAqB,EAAE,MAAM,yBAAyB,CAAC;AAEpF;;GAEG;AACH,MAAM,WAAW,YAAa,SAAQ,kBAAkB;IACpD,WAAW,CAAC,OAAO,EAAE,aAAa,GAAG,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC;CAChE;AAED,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,kBAAkB,GAAG,YAAY,GAAG,GAAG,IAAI,YAAY,CAE9F;AAED;;GAEG;AACH,qBAAa,eAAgB,SAAQ,qBAAqB,CAAC,YAAY,CAAC;WACpD,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,WAAW;CAK1D"}
@@ -1,22 +0,0 @@
1
- /**
2
- * @license
3
- * Copyright 2022-2025 Matter.js Authors
4
- * SPDX-License-Identifier: Apache-2.0
5
- */
6
- import { Environmental } from "#environment/Environmental.js";
7
- import { TransportInterfaceSet } from "./TransportInterface.js";
8
- function isNetworkInterface(obj) {
9
- return "openChannel" in obj;
10
- }
11
- class NetInterfaceSet extends TransportInterfaceSet {
12
- static [Environmental.create](env) {
13
- const instance = new NetInterfaceSet();
14
- env.set(NetInterfaceSet, instance);
15
- return instance;
16
- }
17
- }
18
- export {
19
- NetInterfaceSet,
20
- isNetworkInterface
21
- };
22
- //# sourceMappingURL=NetInterface.js.map
@@ -1,6 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../../../src/net/NetInterface.ts"],
4
- "mappings": "AAAA;AAAA;AAAA;AAAA;AAAA;AAOA,SAAS,qBAAqB;AAI9B,SAA6B,6BAA6B;AASnD,SAAS,mBAAmB,KAA6D;AAC5F,SAAO,iBAAiB;AAC5B;AAKO,MAAM,wBAAwB,sBAAoC;AAAA,EACrE,QAAiB,cAAc,MAAM,EAAE,KAAkB;AACrD,UAAM,WAAW,IAAI,gBAAgB;AACrC,QAAI,IAAI,iBAAiB,QAAQ;AACjC,WAAO;AAAA,EACX;AACJ;",
5
- "names": []
6
- }
@@ -1 +0,0 @@
1
- {"version":3,"file":"TransportInterface.d.ts","sourceRoot":"","sources":["../../../src/net/TransportInterface.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,WAAW,EAAE,MAAM,6BAA6B,CAAC;AAC1D,OAAO,EAAE,aAAa,EAAE,MAAM,+BAA+B,CAAC;AAC9D,OAAO,EAAE,KAAK,EAAE,MAAM,gBAAgB,CAAC;AACvC,OAAO,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAC;AACxC,OAAO,EAAE,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAEpD;;;GAGG;AACH,MAAM,WAAW,kBAAkB;IAC/B,MAAM,CAAC,QAAQ,EAAE,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,CAAC,EAAE,IAAI,EAAE,KAAK,KAAK,IAAI,GAAG,kBAAkB,CAAC,QAAQ,CAAC;IAC7F,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IACvB,QAAQ,CAAC,IAAI,EAAE,WAAW,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC;CAC1D;AAED,yBAAiB,kBAAkB,CAAC;IAChC,UAAiB,QAAQ;QACrB,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;KAC1B;CACJ;AAED;;GAEG;AACH,qBAAa,qBAAqB,CAAC,CAAC,SAAS,kBAAkB,GAAG,kBAAkB,CAAE,SAAQ,QAAQ,CAAC,CAAC,CAAC;gBACzF,GAAG,iBAAiB,EAAE,CAAC,EAAE;IAIrC,MAAM,CAAC,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,WAAW;IAM9C;;OAEG;IACG,KAAK;IAMX;;OAEG;IACH,YAAY,CAAC,IAAI,EAAE,WAAW,EAAE,OAAO,CAAC,EAAE,MAAM;IAIhD;;OAEG;IACH,eAAe,CAAC,IAAI,EAAE,WAAW,EAAE,OAAO,CAAC,EAAE,MAAM;CAGtD"}
@@ -1,6 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../../../src/net/TransportInterface.ts"],
4
- "mappings": "AAAA;AAAA;AAAA;AAAA;AAAA;AAOA,SAAS,qBAAqB;AAE9B,SAAS,gBAAgB;AAsBlB,MAAM,8BAAiF,SAAY;AAAA,EACtG,eAAe,mBAAwB;AACnC,UAAM,GAAG,iBAAiB;AAAA,EAC9B;AAAA,EAEA,QAAQ,cAAc,MAAM,EAAE,KAAkB;AAC5C,UAAM,WAAW,IAAI,sBAAsB;AAC3C,QAAI,IAAI,uBAAuB,QAAQ;AACvC,WAAO;AAAA,EACX;AAAA;AAAA;AAAA;AAAA,EAKA,MAAM,QAAQ;AACV,eAAW,sBAAsB,MAAM;AACnC,YAAM,mBAAmB,MAAM;AAAA,IACnC;AAAA,EACJ;AAAA;AAAA;AAAA;AAAA,EAKA,aAAa,MAAmB,SAAkB;AAC9C,WAAO,KAAK,KAAK,wBAAsB,mBAAmB,SAAS,MAAM,OAAO,CAAC;AAAA,EACrF;AAAA;AAAA;AAAA;AAAA,EAKA,gBAAgB,MAAmB,SAAkB;AACjD,WAAO,KAAK,aAAa,MAAM,OAAO,MAAM;AAAA,EAChD;AACJ;",
5
- "names": []
6
- }
@@ -1 +0,0 @@
1
- {"version":3,"file":"UdpChannel.d.ts","sourceRoot":"","sources":["../../../src/net/UdpChannel.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,KAAK,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AACrD,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAC3C,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAE7D,wDAAwD;AACxD,eAAO,MAAM,oBAAoB,QAAY,CAAC;AAE9C,MAAM,MAAM,aAAa,GAAG,MAAM,GAAG,MAAM,CAAC;AAE5C,MAAM,WAAW,iBAAiB;IAC9B,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,IAAI,EAAE,aAAa,CAAC;IACpB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,YAAY,CAAC,EAAE,MAAM,CAAC;CACzB;AAED,MAAM,WAAW,UAAU;IACvB,cAAc,EAAE,MAAM,CAAC;IACvB,aAAa,CAAC,OAAO,EAAE,MAAM,GAAG,YAAY,CAAC,IAAI,CAAC,CAAC;IACnD,cAAc,CAAC,OAAO,EAAE,MAAM,GAAG,YAAY,CAAC,IAAI,CAAC,CAAC;IACpD,MAAM,CAAC,QAAQ,EAAE,UAAU,CAAC,QAAQ,GAAG,kBAAkB,CAAC,QAAQ,CAAC;IACnE,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC7D,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IACvB,IAAI,IAAI,IAAI,MAAM,CAAC;IACnB,QAAQ,CAAC,IAAI,EAAE,WAAW,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC;CAC1D;AAED,yBAAiB,UAAU,CAAC;IACxB,UAAiB,QAAQ;QACrB,CAAC,YAAY,EAAE,MAAM,GAAG,SAAS,EAAE,WAAW,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK,GAAG,IAAI,CAAC;KAChG;CACJ"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"UdpInterface.d.ts","sourceRoot":"","sources":["../../../src/net/UdpInterface.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,KAAK,EAAE,MAAM,gBAAgB,CAAC;AACvC,OAAO,EAAE,OAAO,EAAE,WAAW,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AACtE,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACjD,OAAO,EAAE,OAAO,EAAgB,MAAM,cAAc,CAAC;AACrD,OAAO,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AACpE,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAC7D,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAE7C,qBAAa,YAAa,YAAW,YAAY;;WAGhC,MAAM,CAAC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,EAAE,YAAY,CAAC,EAAE,MAAM;gBAMpG,MAAM,EAAE,UAAU;IAI9B,SAAS,KAAK,MAAM,eAEnB;IAED,QAAQ,CAAC,IAAI,EAAE,WAAW,EAAE,OAAO,EAAE,MAAM;IAIrC,WAAW,CAAC,OAAO,EAAE,aAAa;IAQxC,MAAM,CAAC,QAAQ,EAAE,CAAC,OAAO,EAAE,OAAO,CAAC,KAAK,CAAC,EAAE,YAAY,EAAE,KAAK,KAAK,IAAI,GAAG,kBAAkB,CAAC,QAAQ;IAMrG,IAAI,IAAI,WAEP;IAED,KAAK;IAIL,aAAa,CAAC,OAAO,EAAE,MAAM;IAI7B,cAAc,CAAC,OAAO,EAAE,MAAM;CAGjC;AAED,qBAAa,aAAc,YAAW,gBAAgB,CAAC,KAAK,CAAC;;IACzD,QAAQ,CAAC,UAAU,SAAS;IAC5B,QAAQ,CAAC,IAAI,mBAAmB;gBAKpB,MAAM,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM;IAMrE,IAAI,cAAc,WAEjB;IAED,IAAI,CAAC,IAAI,EAAE,KAAK;IAIhB,IAAI,IAAI,WAEP;IAED,IAAI,cAAc,IAAI,eAAe,CAEpC;IAEK,KAAK;CAGd"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"UdpMulticastServer.d.ts","sourceRoot":"","sources":["../../../src/net/UdpMulticastServer.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAIH,OAAO,EAAE,KAAK,EAAE,MAAM,gBAAgB,CAAC;AAKvC,OAAO,EAAE,OAAO,EAA2B,MAAM,cAAc,CAAC;AAKhE,MAAM,WAAW,yBAAyB;IACtC,OAAO,EAAE,OAAO,CAAC;IACjB,aAAa,EAAE,MAAM,CAAC;IACtB,oBAAoB,EAAE,MAAM,CAAC;IAC7B,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B,YAAY,CAAC,EAAE,MAAM,CAAC;CACzB;AAED,qBAAa,kBAAkB;IAsDvB,QAAQ,CAAC,OAAO,EAAE,OAAO;IACzB,OAAO,CAAC,QAAQ,CAAC,oBAAoB;IACrC,OAAO,CAAC,QAAQ,CAAC,oBAAoB;IACrC,OAAO,CAAC,QAAQ,CAAC,aAAa;IAC9B,OAAO,CAAC,QAAQ,CAAC,UAAU;IAC3B,OAAO,CAAC,QAAQ,CAAC,UAAU;IAC3B,QAAQ,CAAC,YAAY,EAAE,MAAM,GAAG,SAAS;WA3DhC,MAAM,CAAC,EAChB,YAAY,EACZ,oBAAoB,EACpB,oBAAoB,EACpB,aAAa,EACb,OAAO,GACV,EAAE,yBAAyB;IAuC5B,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAKhC;IAEF,OAAO;IAUP,IAAI,YAAY,YAEf;IAED,SAAS,CAAC,QAAQ,EAAE,CAAC,OAAO,EAAE,KAAK,EAAE,WAAW,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,KAAK,IAAI;IAiBjF,IAAI,CAAC,OAAO,EAAE,KAAK,EAAE,YAAY,CAAC,EAAE,MAAM,EAAE,aAAa,CAAC,EAAE,MAAM;YA+C1D,sBAAsB;IAQ9B,KAAK;CAKd"}