@matter/general 0.13.0-alpha.0-20250324-d7b7d9731 → 0.13.0-alpha.0-20250325-ddb67eace
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/net/Network.d.ts +2 -0
- package/dist/cjs/net/Network.d.ts.map +1 -1
- package/dist/cjs/net/Network.js +4 -1
- package/dist/cjs/net/Network.js.map +1 -1
- package/dist/cjs/net/UdpMulticastServer.d.ts.map +1 -1
- package/dist/cjs/net/UdpMulticastServer.js +34 -18
- package/dist/cjs/net/UdpMulticastServer.js.map +1 -1
- package/dist/cjs/transaction/Transaction.d.ts +19 -19
- package/dist/esm/net/Network.d.ts +2 -0
- package/dist/esm/net/Network.d.ts.map +1 -1
- package/dist/esm/net/Network.js +4 -1
- package/dist/esm/net/Network.js.map +1 -1
- package/dist/esm/net/UdpMulticastServer.d.ts.map +1 -1
- package/dist/esm/net/UdpMulticastServer.js +34 -18
- package/dist/esm/net/UdpMulticastServer.js.map +1 -1
- package/dist/esm/transaction/Transaction.d.ts +19 -19
- package/package.json +2 -2
- package/src/net/Network.ts +2 -0
- package/src/net/UdpMulticastServer.ts +35 -21
|
@@ -8,6 +8,8 @@ import { MaybePromise } from "../util/Promises.js";
|
|
|
8
8
|
import { UdpChannel, UdpChannelOptions } from "./UdpChannel.js";
|
|
9
9
|
export declare class NetworkError extends MatterError {
|
|
10
10
|
}
|
|
11
|
+
export declare class NoAddressAvailableError extends NetworkError {
|
|
12
|
+
}
|
|
11
13
|
/**
|
|
12
14
|
* @see {@link MatterSpecification.v11.Core} § 11.11.4.4
|
|
13
15
|
* Duplicated from the GeneralDiagnostics cluster to avoid circular dependencies.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Network.d.ts","sourceRoot":"","sources":["../../../src/net/Network.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,WAAW,EAAmB,MAAM,mBAAmB,CAAC;AACjE,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAAE,UAAU,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AAEhE,qBAAa,YAAa,SAAQ,WAAW;CAAG;AAEhD;;;GAGG;AACH,oBAAY,aAAa;IACrB;;OAEG;IACH,WAAW,IAAI;IAEf;;OAEG;IACH,IAAI,IAAI;IAER;;OAEG;IACH,QAAQ,IAAI;IAEZ;;OAEG;IACH,QAAQ,IAAI;IAEZ;;OAEG;IACH,MAAM,IAAI;CACb;AAED,MAAM,MAAM,gBAAgB,GAAG;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,aAAa,CAAC;CACxB,CAAC;AAEF,MAAM,MAAM,uBAAuB,GAAG;IAClC,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,IAAI,EAAE,MAAM,EAAE,CAAC;CAClB,CAAC;AAEF,MAAM,MAAM,wBAAwB,GAAG,gBAAgB,GAAG,uBAAuB,CAAC;AAElF,8BAAsB,OAAO;IAEzB,MAAM,CAAC,GAAG,EAAE,MAAM,OAAO,CAEvB;IAEF,QAAQ,CAAC,gBAAgB,CAAC,aAAa,CAAC,EAAE,gBAAgB,EAAE,GAAG,YAAY,CAAC,gBAAgB,EAAE,CAAC;IAC/F,QAAQ,CAAC,QAAQ,CAAC,YAAY,EAAE,MAAM,GAAG,YAAY,CAAC,uBAAuB,GAAG,SAAS,CAAC;IAC1F,QAAQ,CAAC,gBAAgB,CAAC,OAAO,EAAE,iBAAiB,GAAG,OAAO,CAAC,UAAU,CAAC;IAEpE,KAAK;CAGd"}
|
|
1
|
+
{"version":3,"file":"Network.d.ts","sourceRoot":"","sources":["../../../src/net/Network.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,WAAW,EAAmB,MAAM,mBAAmB,CAAC;AACjE,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAAE,UAAU,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AAEhE,qBAAa,YAAa,SAAQ,WAAW;CAAG;AAEhD,qBAAa,uBAAwB,SAAQ,YAAY;CAAG;AAE5D;;;GAGG;AACH,oBAAY,aAAa;IACrB;;OAEG;IACH,WAAW,IAAI;IAEf;;OAEG;IACH,IAAI,IAAI;IAER;;OAEG;IACH,QAAQ,IAAI;IAEZ;;OAEG;IACH,QAAQ,IAAI;IAEZ;;OAEG;IACH,MAAM,IAAI;CACb;AAED,MAAM,MAAM,gBAAgB,GAAG;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,aAAa,CAAC;CACxB,CAAC;AAEF,MAAM,MAAM,uBAAuB,GAAG;IAClC,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,IAAI,EAAE,MAAM,EAAE,CAAC;CAClB,CAAC;AAEF,MAAM,MAAM,wBAAwB,GAAG,gBAAgB,GAAG,uBAAuB,CAAC;AAElF,8BAAsB,OAAO;IAEzB,MAAM,CAAC,GAAG,EAAE,MAAM,OAAO,CAEvB;IAEF,QAAQ,CAAC,gBAAgB,CAAC,aAAa,CAAC,EAAE,gBAAgB,EAAE,GAAG,YAAY,CAAC,gBAAgB,EAAE,CAAC;IAC/F,QAAQ,CAAC,QAAQ,CAAC,YAAY,EAAE,MAAM,GAAG,YAAY,CAAC,uBAAuB,GAAG,SAAS,CAAC;IAC1F,QAAQ,CAAC,gBAAgB,CAAC,OAAO,EAAE,iBAAiB,GAAG,OAAO,CAAC,UAAU,CAAC;IAEpE,KAAK;CAGd"}
|
package/dist/cjs/net/Network.js
CHANGED
|
@@ -20,7 +20,8 @@ var Network_exports = {};
|
|
|
20
20
|
__export(Network_exports, {
|
|
21
21
|
InterfaceType: () => InterfaceType,
|
|
22
22
|
Network: () => Network,
|
|
23
|
-
NetworkError: () => NetworkError
|
|
23
|
+
NetworkError: () => NetworkError,
|
|
24
|
+
NoAddressAvailableError: () => NoAddressAvailableError
|
|
24
25
|
});
|
|
25
26
|
module.exports = __toCommonJS(Network_exports);
|
|
26
27
|
var import_MatterError = require("../MatterError.js");
|
|
@@ -31,6 +32,8 @@ var import_MatterError = require("../MatterError.js");
|
|
|
31
32
|
*/
|
|
32
33
|
class NetworkError extends import_MatterError.MatterError {
|
|
33
34
|
}
|
|
35
|
+
class NoAddressAvailableError extends NetworkError {
|
|
36
|
+
}
|
|
34
37
|
var InterfaceType = /* @__PURE__ */ ((InterfaceType2) => {
|
|
35
38
|
InterfaceType2[InterfaceType2["Unspecified"] = 0] = "Unspecified";
|
|
36
39
|
InterfaceType2[InterfaceType2["WiFi"] = 1] = "WiFi";
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../src/net/Network.ts"],
|
|
4
|
-
"mappings": ";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAMA,yBAA6C;AAN7C;AAAA;AAAA;AAAA;AAAA;AAUO,MAAM,qBAAqB,+BAAY;AAAC;
|
|
4
|
+
"mappings": ";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAMA,yBAA6C;AAN7C;AAAA;AAAA;AAAA;AAAA;AAUO,MAAM,qBAAqB,+BAAY;AAAC;AAExC,MAAM,gCAAgC,aAAa;AAAC;AAMpD,IAAK,gBAAL,kBAAKA,mBAAL;AAIH,EAAAA,8BAAA,iBAAc,KAAd;AAKA,EAAAA,8BAAA,UAAO,KAAP;AAKA,EAAAA,8BAAA,cAAW,KAAX;AAKA,EAAAA,8BAAA,cAAW,KAAX;AAKA,EAAAA,8BAAA,YAAS,KAAT;AAxBQ,SAAAA;AAAA,GAAA;AAwCL,MAAe,QAAQ;AAAA;AAAA,EAE1B,OAAO,MAAqB,MAAM;AAC9B,UAAM,IAAI,mCAAgB,wBAAwB;AAAA,EACtD;AAAA,EAMA,MAAM,QAAQ;AAAA,EAEd;AACJ;",
|
|
5
5
|
"names": ["InterfaceType"]
|
|
6
6
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"UdpMulticastServer.d.ts","sourceRoot":"","sources":["../../../src/net/UdpMulticastServer.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAOH,OAAO,EAAE,OAAO,
|
|
1
|
+
{"version":3,"file":"UdpMulticastServer.d.ts","sourceRoot":"","sources":["../../../src/net/UdpMulticastServer.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAOH,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;IAqDvB,OAAO,CAAC,QAAQ,CAAC,OAAO;IACxB,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,OAAO,CAAC,QAAQ,CAAC,YAAY;WA1DpB,MAAM,CAAC,EAChB,YAAY,EACZ,oBAAoB,EACpB,oBAAoB,EACpB,aAAa,EACb,OAAO,GACV,EAAE,yBAAyB;IAsC5B,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAKhC;IAEF,OAAO;IAUP,SAAS,CAAC,QAAQ,EAAE,CAAC,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,KAAK,IAAI;IAStF,IAAI,CAAC,OAAO,EAAE,UAAU,EAAE,YAAY,CAAC,EAAE,MAAM,EAAE,aAAa,CAAC,EAAE,MAAM;YA+C/D,sBAAsB;IAQ9B,KAAK;CAKd"}
|
|
@@ -26,6 +26,7 @@ var import_Logger = require("../log/Logger.js");
|
|
|
26
26
|
var import_Cache = require("../util/Cache.js");
|
|
27
27
|
var import_Error = require("../util/Error.js");
|
|
28
28
|
var import_Ip = require("../util/Ip.js");
|
|
29
|
+
var import_Network = require("./Network.js");
|
|
29
30
|
/**
|
|
30
31
|
* @license
|
|
31
32
|
* Copyright 2022-2025 Matter.js Authors
|
|
@@ -49,25 +50,40 @@ class UdpMulticastServer {
|
|
|
49
50
|
listeningPort,
|
|
50
51
|
network
|
|
51
52
|
}) {
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
53
|
+
let ipv4UdpChannel = void 0;
|
|
54
|
+
if (broadcastAddressIpv4 !== void 0) {
|
|
55
|
+
try {
|
|
56
|
+
ipv4UdpChannel = await network.createUdpChannel({
|
|
57
|
+
type: "udp4",
|
|
58
|
+
netInterface,
|
|
59
|
+
listeningPort,
|
|
60
|
+
membershipAddresses: [broadcastAddressIpv4]
|
|
61
|
+
});
|
|
62
|
+
} catch (error) {
|
|
63
|
+
import_Network.NoAddressAvailableError.accept(error);
|
|
64
|
+
logger.info(`IPv4 UDP channel not created because IPv4 is not available: ${(0, import_Error.asError)(error).message}`);
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
try {
|
|
68
|
+
return new UdpMulticastServer(
|
|
69
|
+
network,
|
|
70
|
+
broadcastAddressIpv4,
|
|
71
|
+
broadcastAddressIpv6,
|
|
66
72
|
listeningPort,
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
73
|
+
ipv4UdpChannel,
|
|
74
|
+
await network.createUdpChannel({
|
|
75
|
+
type: "udp6",
|
|
76
|
+
netInterface,
|
|
77
|
+
listeningPort,
|
|
78
|
+
membershipAddresses: [broadcastAddressIpv6]
|
|
79
|
+
}),
|
|
80
|
+
netInterface
|
|
81
|
+
);
|
|
82
|
+
} catch (error) {
|
|
83
|
+
import_Network.NoAddressAvailableError.accept(error);
|
|
84
|
+
logger.info(`IPv6 UDP interface not created because IPv6 is not available, but required my Matter.`);
|
|
85
|
+
throw error;
|
|
86
|
+
}
|
|
71
87
|
}
|
|
72
88
|
broadcastChannels = new import_Cache.Cache(
|
|
73
89
|
"UDP broadcast channel",
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../src/net/UdpMulticastServer.ts"],
|
|
4
|
-
"mappings": ";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAMA,yBAAqC;AACrC,oBAAuB;AACvB,mBAAsB;AACtB,mBAAwB;AACxB,gBAAuB;
|
|
4
|
+
"mappings": "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",
|
|
5
5
|
"names": ["netInterface"]
|
|
6
6
|
}
|
|
@@ -144,16 +144,16 @@ export declare const Transaction: {
|
|
|
144
144
|
*/
|
|
145
145
|
act<T>(via: string, actor: (transaction: Transaction) => MaybePromise<T>): MaybePromise<T>;
|
|
146
146
|
ReadOnly: {
|
|
147
|
-
"__#
|
|
148
|
-
"__#
|
|
149
|
-
"__#
|
|
150
|
-
"__#
|
|
151
|
-
"__#
|
|
152
|
-
"__#
|
|
153
|
-
"__#
|
|
154
|
-
"__#
|
|
155
|
-
"__#
|
|
156
|
-
"__#
|
|
147
|
+
"__#14878@#participants": Set<Participant>;
|
|
148
|
+
"__#14878@#roles": Map<{}, Participant>;
|
|
149
|
+
"__#14878@#resources": Set<Resource>;
|
|
150
|
+
"__#14878@#status": Status;
|
|
151
|
+
"__#14878@#waitingOn"?: Iterable<Transaction>;
|
|
152
|
+
"__#14878@#via": string;
|
|
153
|
+
"__#14878@#shared"?: import("../index.js").Observable<[]>;
|
|
154
|
+
"__#14878@#closed"?: import("../index.js").Observable<[]>;
|
|
155
|
+
"__#14878@#isAsync": boolean;
|
|
156
|
+
"__#14878@#reportingLocks": boolean;
|
|
157
157
|
close(): void;
|
|
158
158
|
readonly via: string;
|
|
159
159
|
readonly status: Status;
|
|
@@ -175,15 +175,15 @@ export declare const Transaction: {
|
|
|
175
175
|
waitFor(others: Set<Transaction>): Promise<void>;
|
|
176
176
|
toString(): string;
|
|
177
177
|
treatAsSlow(): void;
|
|
178
|
-
"__#
|
|
179
|
-
"__#
|
|
180
|
-
"__#
|
|
181
|
-
"__#
|
|
182
|
-
"__#
|
|
183
|
-
"__#
|
|
184
|
-
"__#
|
|
185
|
-
"__#
|
|
186
|
-
"__#
|
|
178
|
+
"__#14878@#finalize"(status: Status, why: string, finalizer: () => MaybePromise): Promise<void> | undefined;
|
|
179
|
+
"__#14878@#executePreCommit"(): MaybePromise<void>;
|
|
180
|
+
"__#14878@#executeCommit"(): MaybePromise;
|
|
181
|
+
"__#14878@#executeCommit1"(): MaybePromise;
|
|
182
|
+
"__#14878@#executeCommit2"(): Promise<void> | undefined;
|
|
183
|
+
"__#14878@#executePostCommit"(participants: Participant[]): MaybePromise;
|
|
184
|
+
"__#14878@#executeRollback"(): Promise<void> | undefined;
|
|
185
|
+
"__#14878@#locksChanged"(resources: Set<Resource>, how?: string): void;
|
|
186
|
+
"__#14878@#assertAvailable"(): void;
|
|
187
187
|
};
|
|
188
188
|
Status: typeof Status;
|
|
189
189
|
Resource: typeof Resource;
|
|
@@ -8,6 +8,8 @@ import { MaybePromise } from "../util/Promises.js";
|
|
|
8
8
|
import { UdpChannel, UdpChannelOptions } from "./UdpChannel.js";
|
|
9
9
|
export declare class NetworkError extends MatterError {
|
|
10
10
|
}
|
|
11
|
+
export declare class NoAddressAvailableError extends NetworkError {
|
|
12
|
+
}
|
|
11
13
|
/**
|
|
12
14
|
* @see {@link MatterSpecification.v11.Core} § 11.11.4.4
|
|
13
15
|
* Duplicated from the GeneralDiagnostics cluster to avoid circular dependencies.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Network.d.ts","sourceRoot":"","sources":["../../../src/net/Network.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,WAAW,EAAmB,MAAM,mBAAmB,CAAC;AACjE,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAAE,UAAU,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AAEhE,qBAAa,YAAa,SAAQ,WAAW;CAAG;AAEhD;;;GAGG;AACH,oBAAY,aAAa;IACrB;;OAEG;IACH,WAAW,IAAI;IAEf;;OAEG;IACH,IAAI,IAAI;IAER;;OAEG;IACH,QAAQ,IAAI;IAEZ;;OAEG;IACH,QAAQ,IAAI;IAEZ;;OAEG;IACH,MAAM,IAAI;CACb;AAED,MAAM,MAAM,gBAAgB,GAAG;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,aAAa,CAAC;CACxB,CAAC;AAEF,MAAM,MAAM,uBAAuB,GAAG;IAClC,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,IAAI,EAAE,MAAM,EAAE,CAAC;CAClB,CAAC;AAEF,MAAM,MAAM,wBAAwB,GAAG,gBAAgB,GAAG,uBAAuB,CAAC;AAElF,8BAAsB,OAAO;IAEzB,MAAM,CAAC,GAAG,EAAE,MAAM,OAAO,CAEvB;IAEF,QAAQ,CAAC,gBAAgB,CAAC,aAAa,CAAC,EAAE,gBAAgB,EAAE,GAAG,YAAY,CAAC,gBAAgB,EAAE,CAAC;IAC/F,QAAQ,CAAC,QAAQ,CAAC,YAAY,EAAE,MAAM,GAAG,YAAY,CAAC,uBAAuB,GAAG,SAAS,CAAC;IAC1F,QAAQ,CAAC,gBAAgB,CAAC,OAAO,EAAE,iBAAiB,GAAG,OAAO,CAAC,UAAU,CAAC;IAEpE,KAAK;CAGd"}
|
|
1
|
+
{"version":3,"file":"Network.d.ts","sourceRoot":"","sources":["../../../src/net/Network.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,WAAW,EAAmB,MAAM,mBAAmB,CAAC;AACjE,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAAE,UAAU,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AAEhE,qBAAa,YAAa,SAAQ,WAAW;CAAG;AAEhD,qBAAa,uBAAwB,SAAQ,YAAY;CAAG;AAE5D;;;GAGG;AACH,oBAAY,aAAa;IACrB;;OAEG;IACH,WAAW,IAAI;IAEf;;OAEG;IACH,IAAI,IAAI;IAER;;OAEG;IACH,QAAQ,IAAI;IAEZ;;OAEG;IACH,QAAQ,IAAI;IAEZ;;OAEG;IACH,MAAM,IAAI;CACb;AAED,MAAM,MAAM,gBAAgB,GAAG;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,aAAa,CAAC;CACxB,CAAC;AAEF,MAAM,MAAM,uBAAuB,GAAG;IAClC,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,IAAI,EAAE,MAAM,EAAE,CAAC;CAClB,CAAC;AAEF,MAAM,MAAM,wBAAwB,GAAG,gBAAgB,GAAG,uBAAuB,CAAC;AAElF,8BAAsB,OAAO;IAEzB,MAAM,CAAC,GAAG,EAAE,MAAM,OAAO,CAEvB;IAEF,QAAQ,CAAC,gBAAgB,CAAC,aAAa,CAAC,EAAE,gBAAgB,EAAE,GAAG,YAAY,CAAC,gBAAgB,EAAE,CAAC;IAC/F,QAAQ,CAAC,QAAQ,CAAC,YAAY,EAAE,MAAM,GAAG,YAAY,CAAC,uBAAuB,GAAG,SAAS,CAAC;IAC1F,QAAQ,CAAC,gBAAgB,CAAC,OAAO,EAAE,iBAAiB,GAAG,OAAO,CAAC,UAAU,CAAC;IAEpE,KAAK;CAGd"}
|
package/dist/esm/net/Network.js
CHANGED
|
@@ -6,6 +6,8 @@
|
|
|
6
6
|
import { MatterError, NoProviderError } from "../MatterError.js";
|
|
7
7
|
class NetworkError extends MatterError {
|
|
8
8
|
}
|
|
9
|
+
class NoAddressAvailableError extends NetworkError {
|
|
10
|
+
}
|
|
9
11
|
var InterfaceType = /* @__PURE__ */ ((InterfaceType2) => {
|
|
10
12
|
InterfaceType2[InterfaceType2["Unspecified"] = 0] = "Unspecified";
|
|
11
13
|
InterfaceType2[InterfaceType2["WiFi"] = 1] = "WiFi";
|
|
@@ -25,6 +27,7 @@ class Network {
|
|
|
25
27
|
export {
|
|
26
28
|
InterfaceType,
|
|
27
29
|
Network,
|
|
28
|
-
NetworkError
|
|
30
|
+
NetworkError,
|
|
31
|
+
NoAddressAvailableError
|
|
29
32
|
};
|
|
30
33
|
//# sourceMappingURL=Network.js.map
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../src/net/Network.ts"],
|
|
4
|
-
"mappings": "AAAA;AAAA;AAAA;AAAA;AAAA;AAMA,SAAS,aAAa,uBAAuB;AAItC,MAAM,qBAAqB,YAAY;AAAC;
|
|
4
|
+
"mappings": "AAAA;AAAA;AAAA;AAAA;AAAA;AAMA,SAAS,aAAa,uBAAuB;AAItC,MAAM,qBAAqB,YAAY;AAAC;AAExC,MAAM,gCAAgC,aAAa;AAAC;AAMpD,IAAK,gBAAL,kBAAKA,mBAAL;AAIH,EAAAA,8BAAA,iBAAc,KAAd;AAKA,EAAAA,8BAAA,UAAO,KAAP;AAKA,EAAAA,8BAAA,cAAW,KAAX;AAKA,EAAAA,8BAAA,cAAW,KAAX;AAKA,EAAAA,8BAAA,YAAS,KAAT;AAxBQ,SAAAA;AAAA,GAAA;AAwCL,MAAe,QAAQ;AAAA;AAAA,EAE1B,OAAO,MAAqB,MAAM;AAC9B,UAAM,IAAI,gBAAgB,wBAAwB;AAAA,EACtD;AAAA,EAMA,MAAM,QAAQ;AAAA,EAEd;AACJ;",
|
|
5
5
|
"names": ["InterfaceType"]
|
|
6
6
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"UdpMulticastServer.d.ts","sourceRoot":"","sources":["../../../src/net/UdpMulticastServer.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAOH,OAAO,EAAE,OAAO,
|
|
1
|
+
{"version":3,"file":"UdpMulticastServer.d.ts","sourceRoot":"","sources":["../../../src/net/UdpMulticastServer.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAOH,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;IAqDvB,OAAO,CAAC,QAAQ,CAAC,OAAO;IACxB,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,OAAO,CAAC,QAAQ,CAAC,YAAY;WA1DpB,MAAM,CAAC,EAChB,YAAY,EACZ,oBAAoB,EACpB,oBAAoB,EACpB,aAAa,EACb,OAAO,GACV,EAAE,yBAAyB;IAsC5B,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAKhC;IAEF,OAAO;IAUP,SAAS,CAAC,QAAQ,EAAE,CAAC,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,KAAK,IAAI;IAStF,IAAI,CAAC,OAAO,EAAE,UAAU,EAAE,YAAY,CAAC,EAAE,MAAM,EAAE,aAAa,CAAC,EAAE,MAAM;YA+C/D,sBAAsB;IAQ9B,KAAK;CAKd"}
|
|
@@ -8,6 +8,7 @@ import { Logger } from "../log/Logger.js";
|
|
|
8
8
|
import { Cache } from "../util/Cache.js";
|
|
9
9
|
import { asError } from "../util/Error.js";
|
|
10
10
|
import { isIPv4 } from "../util/Ip.js";
|
|
11
|
+
import { NoAddressAvailableError } from "./Network.js";
|
|
11
12
|
const logger = Logger.get("UdpMulticastServer");
|
|
12
13
|
class UdpMulticastServer {
|
|
13
14
|
constructor(network, broadcastAddressIpv4, broadcastAddressIpv6, broadcastPort, serverIpv4, serverIpv6, netInterface) {
|
|
@@ -26,25 +27,40 @@ class UdpMulticastServer {
|
|
|
26
27
|
listeningPort,
|
|
27
28
|
network
|
|
28
29
|
}) {
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
30
|
+
let ipv4UdpChannel = void 0;
|
|
31
|
+
if (broadcastAddressIpv4 !== void 0) {
|
|
32
|
+
try {
|
|
33
|
+
ipv4UdpChannel = await network.createUdpChannel({
|
|
34
|
+
type: "udp4",
|
|
35
|
+
netInterface,
|
|
36
|
+
listeningPort,
|
|
37
|
+
membershipAddresses: [broadcastAddressIpv4]
|
|
38
|
+
});
|
|
39
|
+
} catch (error) {
|
|
40
|
+
NoAddressAvailableError.accept(error);
|
|
41
|
+
logger.info(`IPv4 UDP channel not created because IPv4 is not available: ${asError(error).message}`);
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
try {
|
|
45
|
+
return new UdpMulticastServer(
|
|
46
|
+
network,
|
|
47
|
+
broadcastAddressIpv4,
|
|
48
|
+
broadcastAddressIpv6,
|
|
43
49
|
listeningPort,
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
50
|
+
ipv4UdpChannel,
|
|
51
|
+
await network.createUdpChannel({
|
|
52
|
+
type: "udp6",
|
|
53
|
+
netInterface,
|
|
54
|
+
listeningPort,
|
|
55
|
+
membershipAddresses: [broadcastAddressIpv6]
|
|
56
|
+
}),
|
|
57
|
+
netInterface
|
|
58
|
+
);
|
|
59
|
+
} catch (error) {
|
|
60
|
+
NoAddressAvailableError.accept(error);
|
|
61
|
+
logger.info(`IPv6 UDP interface not created because IPv6 is not available, but required my Matter.`);
|
|
62
|
+
throw error;
|
|
63
|
+
}
|
|
48
64
|
}
|
|
49
65
|
broadcastChannels = new Cache(
|
|
50
66
|
"UDP broadcast channel",
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../src/net/UdpMulticastServer.ts"],
|
|
4
|
-
"mappings": "AAAA;AAAA;AAAA;AAAA;AAAA;AAMA,SAAS,4BAA4B;AACrC,SAAS,cAAc;AACvB,SAAS,aAAa;AACtB,SAAS,eAAe;AACxB,SAAS,cAAc;
|
|
4
|
+
"mappings": "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",
|
|
5
5
|
"names": ["netInterface"]
|
|
6
6
|
}
|
|
@@ -144,16 +144,16 @@ export declare const Transaction: {
|
|
|
144
144
|
*/
|
|
145
145
|
act<T>(via: string, actor: (transaction: Transaction) => MaybePromise<T>): MaybePromise<T>;
|
|
146
146
|
ReadOnly: {
|
|
147
|
-
"__#
|
|
148
|
-
"__#
|
|
149
|
-
"__#
|
|
150
|
-
"__#
|
|
151
|
-
"__#
|
|
152
|
-
"__#
|
|
153
|
-
"__#
|
|
154
|
-
"__#
|
|
155
|
-
"__#
|
|
156
|
-
"__#
|
|
147
|
+
"__#14878@#participants": Set<Participant>;
|
|
148
|
+
"__#14878@#roles": Map<{}, Participant>;
|
|
149
|
+
"__#14878@#resources": Set<Resource>;
|
|
150
|
+
"__#14878@#status": Status;
|
|
151
|
+
"__#14878@#waitingOn"?: Iterable<Transaction>;
|
|
152
|
+
"__#14878@#via": string;
|
|
153
|
+
"__#14878@#shared"?: import("../index.js").Observable<[]>;
|
|
154
|
+
"__#14878@#closed"?: import("../index.js").Observable<[]>;
|
|
155
|
+
"__#14878@#isAsync": boolean;
|
|
156
|
+
"__#14878@#reportingLocks": boolean;
|
|
157
157
|
close(): void;
|
|
158
158
|
readonly via: string;
|
|
159
159
|
readonly status: Status;
|
|
@@ -175,15 +175,15 @@ export declare const Transaction: {
|
|
|
175
175
|
waitFor(others: Set<Transaction>): Promise<void>;
|
|
176
176
|
toString(): string;
|
|
177
177
|
treatAsSlow(): void;
|
|
178
|
-
"__#
|
|
179
|
-
"__#
|
|
180
|
-
"__#
|
|
181
|
-
"__#
|
|
182
|
-
"__#
|
|
183
|
-
"__#
|
|
184
|
-
"__#
|
|
185
|
-
"__#
|
|
186
|
-
"__#
|
|
178
|
+
"__#14878@#finalize"(status: Status, why: string, finalizer: () => MaybePromise): Promise<void> | undefined;
|
|
179
|
+
"__#14878@#executePreCommit"(): MaybePromise<void>;
|
|
180
|
+
"__#14878@#executeCommit"(): MaybePromise;
|
|
181
|
+
"__#14878@#executeCommit1"(): MaybePromise;
|
|
182
|
+
"__#14878@#executeCommit2"(): Promise<void> | undefined;
|
|
183
|
+
"__#14878@#executePostCommit"(participants: Participant[]): MaybePromise;
|
|
184
|
+
"__#14878@#executeRollback"(): Promise<void> | undefined;
|
|
185
|
+
"__#14878@#locksChanged"(resources: Set<Resource>, how?: string): void;
|
|
186
|
+
"__#14878@#assertAvailable"(): void;
|
|
187
187
|
};
|
|
188
188
|
Status: typeof Status;
|
|
189
189
|
Resource: typeof Resource;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@matter/general",
|
|
3
|
-
"version": "0.13.0-alpha.0-
|
|
3
|
+
"version": "0.13.0-alpha.0-20250325-ddb67eace",
|
|
4
4
|
"description": "Non-Matter support for Matter.js",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"iot",
|
|
@@ -36,7 +36,7 @@
|
|
|
36
36
|
"@noble/curves": "^1.8.1"
|
|
37
37
|
},
|
|
38
38
|
"devDependencies": {
|
|
39
|
-
"@matter/testing": "0.13.0-alpha.0-
|
|
39
|
+
"@matter/testing": "0.13.0-alpha.0-20250325-ddb67eace"
|
|
40
40
|
},
|
|
41
41
|
"files": [
|
|
42
42
|
"dist/**/*",
|
package/src/net/Network.ts
CHANGED
|
@@ -10,6 +10,8 @@ import { UdpChannel, UdpChannelOptions } from "./UdpChannel.js";
|
|
|
10
10
|
|
|
11
11
|
export class NetworkError extends MatterError {}
|
|
12
12
|
|
|
13
|
+
export class NoAddressAvailableError extends NetworkError {}
|
|
14
|
+
|
|
13
15
|
/**
|
|
14
16
|
* @see {@link MatterSpecification.v11.Core} § 11.11.4.4
|
|
15
17
|
* Duplicated from the GeneralDiagnostics cluster to avoid circular dependencies.
|
|
@@ -9,7 +9,7 @@ import { Logger } from "../log/Logger.js";
|
|
|
9
9
|
import { Cache } from "../util/Cache.js";
|
|
10
10
|
import { asError } from "../util/Error.js";
|
|
11
11
|
import { isIPv4 } from "../util/Ip.js";
|
|
12
|
-
import { Network } from "./Network.js";
|
|
12
|
+
import { Network, NoAddressAvailableError } from "./Network.js";
|
|
13
13
|
import { UdpChannel } from "./UdpChannel.js";
|
|
14
14
|
|
|
15
15
|
const logger = Logger.get("UdpMulticastServer");
|
|
@@ -30,27 +30,41 @@ export class UdpMulticastServer {
|
|
|
30
30
|
listeningPort,
|
|
31
31
|
network,
|
|
32
32
|
}: UdpMulticastServerOptions) {
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
33
|
+
let ipv4UdpChannel: UdpChannel | undefined = undefined;
|
|
34
|
+
if (broadcastAddressIpv4 !== undefined) {
|
|
35
|
+
try {
|
|
36
|
+
ipv4UdpChannel = await network.createUdpChannel({
|
|
37
|
+
type: "udp4",
|
|
38
|
+
netInterface,
|
|
39
|
+
listeningPort,
|
|
40
|
+
membershipAddresses: [broadcastAddressIpv4],
|
|
41
|
+
});
|
|
42
|
+
} catch (error) {
|
|
43
|
+
NoAddressAvailableError.accept(error);
|
|
44
|
+
logger.info(`IPv4 UDP channel not created because IPv4 is not available: ${asError(error).message}`);
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
try {
|
|
49
|
+
return new UdpMulticastServer(
|
|
50
|
+
network,
|
|
51
|
+
broadcastAddressIpv4,
|
|
52
|
+
broadcastAddressIpv6,
|
|
49
53
|
listeningPort,
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
+
ipv4UdpChannel,
|
|
55
|
+
await network.createUdpChannel({
|
|
56
|
+
type: "udp6",
|
|
57
|
+
netInterface,
|
|
58
|
+
listeningPort,
|
|
59
|
+
membershipAddresses: [broadcastAddressIpv6],
|
|
60
|
+
}),
|
|
61
|
+
netInterface,
|
|
62
|
+
);
|
|
63
|
+
} catch (error) {
|
|
64
|
+
NoAddressAvailableError.accept(error);
|
|
65
|
+
logger.info(`IPv6 UDP interface not created because IPv6 is not available, but required my Matter.`);
|
|
66
|
+
throw error;
|
|
67
|
+
}
|
|
54
68
|
}
|
|
55
69
|
|
|
56
70
|
private readonly broadcastChannels = new Cache<Promise<UdpChannel>>(
|