@matter/general 0.16.8-alpha.0-20260123-dff2cae52 → 0.16.8-alpha.0-20260127-65e1b40e2
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/ServerAddress.d.ts.map +1 -1
- package/dist/cjs/net/ServerAddress.js +2 -1
- package/dist/cjs/net/ServerAddress.js.map +1 -1
- package/dist/cjs/net/dns-sd/DnssdName.d.ts +56 -0
- package/dist/cjs/net/dns-sd/DnssdName.d.ts.map +1 -0
- package/dist/cjs/net/dns-sd/DnssdName.js +193 -0
- package/dist/cjs/net/dns-sd/DnssdName.js.map +6 -0
- package/dist/cjs/net/dns-sd/DnssdNames.d.ts +77 -0
- package/dist/cjs/net/dns-sd/DnssdNames.d.ts.map +1 -0
- package/dist/cjs/net/dns-sd/DnssdNames.js +238 -0
- package/dist/cjs/net/dns-sd/DnssdNames.js.map +6 -0
- package/dist/cjs/net/dns-sd/DnssdSolicitor.d.ts +80 -0
- package/dist/cjs/net/dns-sd/DnssdSolicitor.d.ts.map +1 -0
- package/dist/cjs/net/dns-sd/DnssdSolicitor.js +212 -0
- package/dist/cjs/net/dns-sd/DnssdSolicitor.js.map +6 -0
- package/dist/cjs/net/dns-sd/IpService.d.ts +73 -0
- package/dist/cjs/net/dns-sd/IpService.d.ts.map +1 -0
- package/dist/cjs/net/dns-sd/IpService.js +329 -0
- package/dist/cjs/net/dns-sd/IpService.js.map +6 -0
- package/dist/cjs/net/dns-sd/IpServiceResolution.d.ts +16 -0
- package/dist/cjs/net/dns-sd/IpServiceResolution.d.ts.map +1 -0
- package/dist/cjs/net/dns-sd/IpServiceResolution.js +162 -0
- package/dist/cjs/net/dns-sd/IpServiceResolution.js.map +6 -0
- package/dist/cjs/net/dns-sd/IpServiceStatus.d.ts +58 -0
- package/dist/cjs/net/dns-sd/IpServiceStatus.d.ts.map +1 -0
- package/dist/cjs/net/dns-sd/IpServiceStatus.js +191 -0
- package/dist/cjs/net/dns-sd/IpServiceStatus.js.map +6 -0
- package/dist/cjs/net/dns-sd/index.d.ts +6 -0
- package/dist/cjs/net/dns-sd/index.d.ts.map +1 -1
- package/dist/cjs/net/dns-sd/index.js +6 -0
- package/dist/cjs/net/dns-sd/index.js.map +1 -1
- package/dist/cjs/net/udp/UdpInterface.js +1 -1
- package/dist/cjs/net/udp/UdpInterface.js.map +1 -1
- package/dist/cjs/util/AsyncIterator.d.ts +21 -0
- package/dist/cjs/util/AsyncIterator.d.ts.map +1 -0
- package/dist/cjs/util/AsyncIterator.js +71 -0
- package/dist/cjs/util/AsyncIterator.js.map +6 -0
- package/dist/cjs/util/index.d.ts +1 -0
- package/dist/cjs/util/index.d.ts.map +1 -1
- package/dist/cjs/util/index.js +1 -0
- package/dist/cjs/util/index.js.map +1 -1
- package/dist/esm/net/ServerAddress.d.ts.map +1 -1
- package/dist/esm/net/ServerAddress.js +2 -1
- package/dist/esm/net/ServerAddress.js.map +1 -1
- package/dist/esm/net/dns-sd/DnssdName.d.ts +56 -0
- package/dist/esm/net/dns-sd/DnssdName.d.ts.map +1 -0
- package/dist/esm/net/dns-sd/DnssdName.js +173 -0
- package/dist/esm/net/dns-sd/DnssdName.js.map +6 -0
- package/dist/esm/net/dns-sd/DnssdNames.d.ts +77 -0
- package/dist/esm/net/dns-sd/DnssdNames.d.ts.map +1 -0
- package/dist/esm/net/dns-sd/DnssdNames.js +218 -0
- package/dist/esm/net/dns-sd/DnssdNames.js.map +6 -0
- package/dist/esm/net/dns-sd/DnssdSolicitor.d.ts +80 -0
- package/dist/esm/net/dns-sd/DnssdSolicitor.d.ts.map +1 -0
- package/dist/esm/net/dns-sd/DnssdSolicitor.js +192 -0
- package/dist/esm/net/dns-sd/DnssdSolicitor.js.map +6 -0
- package/dist/esm/net/dns-sd/IpService.d.ts +73 -0
- package/dist/esm/net/dns-sd/IpService.d.ts.map +1 -0
- package/dist/esm/net/dns-sd/IpService.js +309 -0
- package/dist/esm/net/dns-sd/IpService.js.map +6 -0
- package/dist/esm/net/dns-sd/IpServiceResolution.d.ts +16 -0
- package/dist/esm/net/dns-sd/IpServiceResolution.d.ts.map +1 -0
- package/dist/esm/net/dns-sd/IpServiceResolution.js +142 -0
- package/dist/esm/net/dns-sd/IpServiceResolution.js.map +6 -0
- package/dist/esm/net/dns-sd/IpServiceStatus.d.ts +58 -0
- package/dist/esm/net/dns-sd/IpServiceStatus.d.ts.map +1 -0
- package/dist/esm/net/dns-sd/IpServiceStatus.js +171 -0
- package/dist/esm/net/dns-sd/IpServiceStatus.js.map +6 -0
- package/dist/esm/net/dns-sd/index.d.ts +6 -0
- package/dist/esm/net/dns-sd/index.d.ts.map +1 -1
- package/dist/esm/net/dns-sd/index.js +6 -0
- package/dist/esm/net/dns-sd/index.js.map +1 -1
- package/dist/esm/net/udp/UdpInterface.js +1 -1
- package/dist/esm/net/udp/UdpInterface.js.map +1 -1
- package/dist/esm/util/AsyncIterator.d.ts +21 -0
- package/dist/esm/util/AsyncIterator.d.ts.map +1 -0
- package/dist/esm/util/AsyncIterator.js +51 -0
- package/dist/esm/util/AsyncIterator.js.map +6 -0
- package/dist/esm/util/index.d.ts +1 -0
- package/dist/esm/util/index.d.ts.map +1 -1
- package/dist/esm/util/index.js +1 -0
- package/dist/esm/util/index.js.map +1 -1
- package/package.json +2 -2
- package/src/net/ServerAddress.ts +2 -1
- package/src/net/dns-sd/DnssdName.ts +252 -0
- package/src/net/dns-sd/DnssdNames.ts +208 -0
- package/src/net/dns-sd/DnssdSolicitor.ts +231 -0
- package/src/net/dns-sd/IpService.ts +346 -0
- package/src/net/dns-sd/IpServiceResolution.ts +134 -0
- package/src/net/dns-sd/IpServiceStatus.ts +212 -0
- package/src/net/dns-sd/index.ts +6 -0
- package/src/net/udp/UdpInterface.ts +1 -1
- package/src/util/AsyncIterator.ts +70 -0
- package/src/util/index.ts +1 -0
|
@@ -0,0 +1,192 @@
|
|
|
1
|
+
var __knownSymbol = (name, symbol) => (symbol = Symbol[name]) ? symbol : /* @__PURE__ */ Symbol.for("Symbol." + name);
|
|
2
|
+
var __typeError = (msg) => {
|
|
3
|
+
throw TypeError(msg);
|
|
4
|
+
};
|
|
5
|
+
var __using = (stack, value, async) => {
|
|
6
|
+
if (value != null) {
|
|
7
|
+
if (typeof value !== "object" && typeof value !== "function") __typeError("Object expected");
|
|
8
|
+
var dispose, inner;
|
|
9
|
+
if (async) dispose = value[__knownSymbol("asyncDispose")];
|
|
10
|
+
if (dispose === void 0) {
|
|
11
|
+
dispose = value[__knownSymbol("dispose")];
|
|
12
|
+
if (async) inner = dispose;
|
|
13
|
+
}
|
|
14
|
+
if (typeof dispose !== "function") __typeError("Object not disposable");
|
|
15
|
+
if (inner) dispose = function() {
|
|
16
|
+
try {
|
|
17
|
+
inner.call(this);
|
|
18
|
+
} catch (e) {
|
|
19
|
+
return Promise.reject(e);
|
|
20
|
+
}
|
|
21
|
+
};
|
|
22
|
+
stack.push([async, dispose, value]);
|
|
23
|
+
} else if (async) {
|
|
24
|
+
stack.push([async]);
|
|
25
|
+
}
|
|
26
|
+
return value;
|
|
27
|
+
};
|
|
28
|
+
var __callDispose = (stack, error, hasError) => {
|
|
29
|
+
var E = typeof SuppressedError === "function" ? SuppressedError : function(e, s, m, _) {
|
|
30
|
+
return _ = Error(m), _.name = "SuppressedError", _.error = e, _.suppressed = s, _;
|
|
31
|
+
};
|
|
32
|
+
var fail = (e) => error = hasError ? new E(e, error, "An error was suppressed during disposal") : (hasError = true, e);
|
|
33
|
+
var next = (it) => {
|
|
34
|
+
while (it = stack.pop()) {
|
|
35
|
+
try {
|
|
36
|
+
var result = it[1] && it[1].call(it[2]);
|
|
37
|
+
if (it[0]) return Promise.resolve(result).then(next, (e) => (fail(e), next()));
|
|
38
|
+
} catch (e) {
|
|
39
|
+
fail(e);
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
if (hasError) throw error;
|
|
43
|
+
};
|
|
44
|
+
return next();
|
|
45
|
+
};
|
|
46
|
+
/**
|
|
47
|
+
* @license
|
|
48
|
+
* Copyright 2022-2026 Matter.js Authors
|
|
49
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
50
|
+
*/
|
|
51
|
+
import { DnsMessageType, DnsRecordClass } from "#codec/DnsCodec.js";
|
|
52
|
+
import { Logger } from "#log/Logger.js";
|
|
53
|
+
import { RetrySchedule } from "#net/RetrySchedule.js";
|
|
54
|
+
import { Time } from "#time/Time.js";
|
|
55
|
+
import { Hours, Millis, Seconds } from "#time/TimeUnit.js";
|
|
56
|
+
import { Abort } from "#util/Abort.js";
|
|
57
|
+
import { BasicMultiplex } from "#util/Multiplex.js";
|
|
58
|
+
import { ObservableValue } from "#util/Observable.js";
|
|
59
|
+
const logger = new Logger("DiscoverySolicitor");
|
|
60
|
+
var DnssdSolicitor;
|
|
61
|
+
((DnssdSolicitor2) => {
|
|
62
|
+
DnssdSolicitor2.DefaultRetries = {
|
|
63
|
+
initialInterval: Seconds(1),
|
|
64
|
+
jitterFactor: 0.2,
|
|
65
|
+
backoffFactor: 2,
|
|
66
|
+
maximumInterval: Hours(1)
|
|
67
|
+
};
|
|
68
|
+
})(DnssdSolicitor || (DnssdSolicitor = {}));
|
|
69
|
+
class QueryMulticaster {
|
|
70
|
+
#names;
|
|
71
|
+
#schedule;
|
|
72
|
+
#abort = new Abort();
|
|
73
|
+
#toSolicit = /* @__PURE__ */ new Map();
|
|
74
|
+
#discovering = /* @__PURE__ */ new Map();
|
|
75
|
+
#namesReady = new ObservableValue();
|
|
76
|
+
#workers = new BasicMultiplex();
|
|
77
|
+
constructor(names, retries) {
|
|
78
|
+
this.#names = names;
|
|
79
|
+
this.#schedule = new RetrySchedule(
|
|
80
|
+
names.entropy,
|
|
81
|
+
RetrySchedule.Configuration(DnssdSolicitor.DefaultRetries, retries)
|
|
82
|
+
);
|
|
83
|
+
this.#workers.add(this.#emitSolicitations());
|
|
84
|
+
}
|
|
85
|
+
solicit(solicitation) {
|
|
86
|
+
if (this.#abort.aborted) {
|
|
87
|
+
return;
|
|
88
|
+
}
|
|
89
|
+
const entry = this.#toSolicit.get(solicitation.name);
|
|
90
|
+
if (entry === void 0) {
|
|
91
|
+
this.#toSolicit.set(solicitation.name, { ...solicitation });
|
|
92
|
+
} else {
|
|
93
|
+
entry.recordTypes = [.../* @__PURE__ */ new Set([...entry.recordTypes, ...solicitation.recordTypes])];
|
|
94
|
+
if (solicitation.associatedNames) {
|
|
95
|
+
if (!entry.associatedNames) {
|
|
96
|
+
entry.associatedNames = solicitation.associatedNames;
|
|
97
|
+
} else {
|
|
98
|
+
entry.associatedNames = [.../* @__PURE__ */ new Set([...entry.associatedNames, ...solicitation.associatedNames])];
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
this.#namesReady.emit(true);
|
|
103
|
+
}
|
|
104
|
+
async discover(discovery) {
|
|
105
|
+
let active = this.#discovering.get(discovery.name);
|
|
106
|
+
if (active) {
|
|
107
|
+
active.waiting.add(discovery);
|
|
108
|
+
} else {
|
|
109
|
+
const abort = new Abort({ abort: this.#abort });
|
|
110
|
+
active = {
|
|
111
|
+
abort,
|
|
112
|
+
finished: this.#discover(discovery, abort),
|
|
113
|
+
waiting: /* @__PURE__ */ new Set([discovery])
|
|
114
|
+
};
|
|
115
|
+
this.#discovering.set(discovery.name, active);
|
|
116
|
+
}
|
|
117
|
+
try {
|
|
118
|
+
await Abort.race(discovery.abort, active.finished);
|
|
119
|
+
} finally {
|
|
120
|
+
active.waiting.delete(discovery);
|
|
121
|
+
if (active.waiting.size === 0) {
|
|
122
|
+
active.abort();
|
|
123
|
+
this.#discovering.delete(discovery.name);
|
|
124
|
+
}
|
|
125
|
+
}
|
|
126
|
+
}
|
|
127
|
+
async #discover(solicitation, abort) {
|
|
128
|
+
let timeout = Millis.floor(Millis(20 + 100 * (this.#names.entropy.randomUint32 / Math.pow(2, 32))));
|
|
129
|
+
for (const nextTimeout of this.#schedule) {
|
|
130
|
+
var _stack = [];
|
|
131
|
+
try {
|
|
132
|
+
const delay = __using(_stack, new Abort({ abort, timeout }));
|
|
133
|
+
await delay;
|
|
134
|
+
if (abort.aborted) {
|
|
135
|
+
break;
|
|
136
|
+
}
|
|
137
|
+
timeout = nextTimeout;
|
|
138
|
+
this.solicit(solicitation);
|
|
139
|
+
} catch (_) {
|
|
140
|
+
var _error = _, _hasError = true;
|
|
141
|
+
} finally {
|
|
142
|
+
__callDispose(_stack, _error, _hasError);
|
|
143
|
+
}
|
|
144
|
+
}
|
|
145
|
+
}
|
|
146
|
+
async close() {
|
|
147
|
+
this.#abort();
|
|
148
|
+
await this.#workers;
|
|
149
|
+
}
|
|
150
|
+
async #emitSolicitations() {
|
|
151
|
+
while (true) {
|
|
152
|
+
await this.#abort.race(this.#namesReady);
|
|
153
|
+
if (this.#abort.aborted) {
|
|
154
|
+
return;
|
|
155
|
+
}
|
|
156
|
+
await this.#abort.race(Time.sleep("discovery solicitor delay", 0));
|
|
157
|
+
if (this.#abort.aborted) {
|
|
158
|
+
return;
|
|
159
|
+
}
|
|
160
|
+
const entries = [...this.#toSolicit.values()];
|
|
161
|
+
this.#namesReady.value = false;
|
|
162
|
+
this.#toSolicit.clear();
|
|
163
|
+
const queries = Array();
|
|
164
|
+
const answers = Array();
|
|
165
|
+
for (const {
|
|
166
|
+
name: { qname: name, records },
|
|
167
|
+
recordTypes
|
|
168
|
+
} of entries) {
|
|
169
|
+
for (const recordType of recordTypes) {
|
|
170
|
+
queries.push({ name, recordClass: DnsRecordClass.IN, recordType });
|
|
171
|
+
}
|
|
172
|
+
answers.push(...records);
|
|
173
|
+
}
|
|
174
|
+
try {
|
|
175
|
+
await this.#abort.race(
|
|
176
|
+
this.#names.socket.send({
|
|
177
|
+
messageType: DnsMessageType.Query,
|
|
178
|
+
queries,
|
|
179
|
+
answers
|
|
180
|
+
})
|
|
181
|
+
);
|
|
182
|
+
} catch (e) {
|
|
183
|
+
logger.error("Unhandled error soliciting DNS-SD names:", e);
|
|
184
|
+
}
|
|
185
|
+
}
|
|
186
|
+
}
|
|
187
|
+
}
|
|
188
|
+
export {
|
|
189
|
+
DnssdSolicitor,
|
|
190
|
+
QueryMulticaster
|
|
191
|
+
};
|
|
192
|
+
//# sourceMappingURL=DnssdSolicitor.js.map
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../../src/net/dns-sd/DnssdSolicitor.ts"],
|
|
4
|
+
"mappings": "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",
|
|
5
|
+
"names": ["DnssdSolicitor"]
|
|
6
|
+
}
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @license
|
|
3
|
+
* Copyright 2022-2026 Matter.js Authors
|
|
4
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
5
|
+
*/
|
|
6
|
+
import { ServerAddressUdp } from "#net/ServerAddress.js";
|
|
7
|
+
import { ServerAddressSet } from "#net/ServerAddressSet.js";
|
|
8
|
+
import { AsyncObservable } from "#util/Observable.js";
|
|
9
|
+
import { DnssdName } from "./DnssdName.js";
|
|
10
|
+
import { DnssdNames } from "./DnssdNames.js";
|
|
11
|
+
import { IpServiceStatus } from "./IpServiceStatus.js";
|
|
12
|
+
/**
|
|
13
|
+
* A service addressable by IP that updates as {@link DnssdNames} change.
|
|
14
|
+
*/
|
|
15
|
+
export declare class IpService {
|
|
16
|
+
#private;
|
|
17
|
+
constructor(name: string, via: string, names: DnssdNames);
|
|
18
|
+
/**
|
|
19
|
+
* The DNS-SD name.
|
|
20
|
+
*/
|
|
21
|
+
get name(): DnssdName;
|
|
22
|
+
/**
|
|
23
|
+
* Other DNS-SD names.
|
|
24
|
+
*/
|
|
25
|
+
get names(): DnssdNames;
|
|
26
|
+
/**
|
|
27
|
+
* Identifier used for logging.
|
|
28
|
+
*/
|
|
29
|
+
get via(): string;
|
|
30
|
+
/**
|
|
31
|
+
* Status details of the service.
|
|
32
|
+
*/
|
|
33
|
+
get status(): IpServiceStatus;
|
|
34
|
+
/**
|
|
35
|
+
* Release resources.
|
|
36
|
+
*/
|
|
37
|
+
close(): Promise<void>;
|
|
38
|
+
/**
|
|
39
|
+
* Known addresses.
|
|
40
|
+
*/
|
|
41
|
+
get addresses(): ServerAddressSet<ServerAddressUdp>;
|
|
42
|
+
/**
|
|
43
|
+
* Values from TXT records.
|
|
44
|
+
*/
|
|
45
|
+
get parameters(): Map<string, string>;
|
|
46
|
+
/**
|
|
47
|
+
* Emits when the service changes.
|
|
48
|
+
*/
|
|
49
|
+
get changed(): AsyncObservable<[], void>;
|
|
50
|
+
map<T>(fn: (addr: ServerAddressUdp) => T): T[];
|
|
51
|
+
/**
|
|
52
|
+
* Stream address updates, starting with initial set of addresses.
|
|
53
|
+
*
|
|
54
|
+
* Outputs addresses in priority order so the stream may be used directly for establishing new connections.
|
|
55
|
+
*
|
|
56
|
+
* If no addresses are present, triggers discovery using standard MDNS backoff schedule.
|
|
57
|
+
*/
|
|
58
|
+
addressChanges({ abort, order, }?: {
|
|
59
|
+
abort?: AbortSignal;
|
|
60
|
+
order?: ServerAddressSet.Comparator;
|
|
61
|
+
ipv4?: boolean;
|
|
62
|
+
}): AsyncGenerator<{
|
|
63
|
+
kind: "add" | "delete";
|
|
64
|
+
address: ServerAddressUdp;
|
|
65
|
+
}>;
|
|
66
|
+
}
|
|
67
|
+
export declare namespace IpService {
|
|
68
|
+
interface AddressChange {
|
|
69
|
+
kind: "add" | "delete";
|
|
70
|
+
address: ServerAddressUdp;
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
//# sourceMappingURL=IpService.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"IpService.d.ts","sourceRoot":"","sources":["../../../../src/net/dns-sd/IpService.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAIH,OAAO,EAAmB,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAC1E,OAAO,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AAI5D,OAAO,EAAE,eAAe,EAAuC,MAAM,qBAAqB,CAAC;AAC3F,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAC3C,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC7C,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAEvD;;GAEG;AACH,qBAAa,SAAS;;gBAWN,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,UAAU;IAgBxD;;OAEG;IACH,IAAI,IAAI,cAEP;IAED;;OAEG;IACH,IAAI,KAAK,eAER;IAED;;OAEG;IACH,IAAI,GAAG,WAEN;IAED;;OAEG;IACH,IAAI,MAAM,oBAET;IAED;;OAEG;IACG,KAAK;IAQX;;OAEG;IACH,IAAI,SAAS,uCAEZ;IAED;;OAEG;IACH,IAAI,UAAU,wBAEb;IAED;;OAEG;IACH,IAAI,OAAO,8BAEV;IAED,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,IAAI,EAAE,gBAAgB,KAAK,CAAC,GAAG,CAAC,EAAE;IAI9C;;;;;;OAMG;IACI,cAAc,CAAC,EAClB,KAAK,EACL,KAA4C,GAC/C,GAAE;QACC,KAAK,CAAC,EAAE,WAAW,CAAC;QACpB,KAAK,CAAC,EAAE,gBAAgB,CAAC,UAAU,CAAC;QACpC,IAAI,CAAC,EAAE,OAAO,CAAC;KACb,GAAG,cAAc,CAAC;QAAE,IAAI,EAAE,KAAK,GAAG,QAAQ,CAAC;QAAC,OAAO,EAAE,gBAAgB,CAAA;KAAE,CAAC;CAyLjF;AAED,yBAAiB,SAAS,CAAC;IACvB,UAAiB,aAAa;QAC1B,IAAI,EAAE,KAAK,GAAG,QAAQ,CAAC;QACvB,OAAO,EAAE,gBAAgB,CAAC;KAC7B;CACJ"}
|
|
@@ -0,0 +1,309 @@
|
|
|
1
|
+
var __knownSymbol = (name, symbol) => (symbol = Symbol[name]) ? symbol : /* @__PURE__ */ Symbol.for("Symbol." + name);
|
|
2
|
+
var __typeError = (msg) => {
|
|
3
|
+
throw TypeError(msg);
|
|
4
|
+
};
|
|
5
|
+
var __using = (stack, value, async) => {
|
|
6
|
+
if (value != null) {
|
|
7
|
+
if (typeof value !== "object" && typeof value !== "function") __typeError("Object expected");
|
|
8
|
+
var dispose, inner;
|
|
9
|
+
if (async) dispose = value[__knownSymbol("asyncDispose")];
|
|
10
|
+
if (dispose === void 0) {
|
|
11
|
+
dispose = value[__knownSymbol("dispose")];
|
|
12
|
+
if (async) inner = dispose;
|
|
13
|
+
}
|
|
14
|
+
if (typeof dispose !== "function") __typeError("Object not disposable");
|
|
15
|
+
if (inner) dispose = function() {
|
|
16
|
+
try {
|
|
17
|
+
inner.call(this);
|
|
18
|
+
} catch (e) {
|
|
19
|
+
return Promise.reject(e);
|
|
20
|
+
}
|
|
21
|
+
};
|
|
22
|
+
stack.push([async, dispose, value]);
|
|
23
|
+
} else if (async) {
|
|
24
|
+
stack.push([async]);
|
|
25
|
+
}
|
|
26
|
+
return value;
|
|
27
|
+
};
|
|
28
|
+
var __callDispose = (stack, error, hasError) => {
|
|
29
|
+
var E = typeof SuppressedError === "function" ? SuppressedError : function(e, s, m, _) {
|
|
30
|
+
return _ = Error(m), _.name = "SuppressedError", _.error = e, _.suppressed = s, _;
|
|
31
|
+
};
|
|
32
|
+
var fail = (e) => error = hasError ? new E(e, error, "An error was suppressed during disposal") : (hasError = true, e);
|
|
33
|
+
var next = (it) => {
|
|
34
|
+
while (it = stack.pop()) {
|
|
35
|
+
try {
|
|
36
|
+
var result = it[1] && it[1].call(it[2]);
|
|
37
|
+
if (it[0]) return Promise.resolve(result).then(next, (e) => (fail(e), next()));
|
|
38
|
+
} catch (e) {
|
|
39
|
+
fail(e);
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
if (hasError) throw error;
|
|
43
|
+
};
|
|
44
|
+
return next();
|
|
45
|
+
};
|
|
46
|
+
/**
|
|
47
|
+
* @license
|
|
48
|
+
* Copyright 2022-2026 Matter.js Authors
|
|
49
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
50
|
+
*/
|
|
51
|
+
import { DnsRecordType } from "#codec/DnsCodec.js";
|
|
52
|
+
import { Diagnostic } from "#log/Diagnostic.js";
|
|
53
|
+
import { ServerAddressSet } from "#net/ServerAddressSet.js";
|
|
54
|
+
import { Time } from "#time/Time.js";
|
|
55
|
+
import { Abort } from "#util/Abort.js";
|
|
56
|
+
import { AsyncObservable, AsyncObservableValue, ObserverGroup } from "#util/Observable.js";
|
|
57
|
+
import { IpServiceStatus } from "./IpServiceStatus.js";
|
|
58
|
+
class IpService {
|
|
59
|
+
#name;
|
|
60
|
+
#via;
|
|
61
|
+
#names;
|
|
62
|
+
#observers = new ObserverGroup(this);
|
|
63
|
+
#services = /* @__PURE__ */ new Map();
|
|
64
|
+
#changed = new AsyncObservable();
|
|
65
|
+
#addresses = ServerAddressSet();
|
|
66
|
+
#status = new IpServiceStatus(this);
|
|
67
|
+
#notified;
|
|
68
|
+
constructor(name, via, names) {
|
|
69
|
+
this.#name = names.get(name);
|
|
70
|
+
this.#names = names;
|
|
71
|
+
this.#via = Diagnostic.via(via);
|
|
72
|
+
this.#observers.on(this.#name, this.#onServiceChanged);
|
|
73
|
+
for (const record of this.#name.records) {
|
|
74
|
+
const service = serviceOf(record);
|
|
75
|
+
if (!service) {
|
|
76
|
+
continue;
|
|
77
|
+
}
|
|
78
|
+
this.#updateService(record.ttl, service);
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
/**
|
|
82
|
+
* The DNS-SD name.
|
|
83
|
+
*/
|
|
84
|
+
get name() {
|
|
85
|
+
return this.#name;
|
|
86
|
+
}
|
|
87
|
+
/**
|
|
88
|
+
* Other DNS-SD names.
|
|
89
|
+
*/
|
|
90
|
+
get names() {
|
|
91
|
+
return this.#names;
|
|
92
|
+
}
|
|
93
|
+
/**
|
|
94
|
+
* Identifier used for logging.
|
|
95
|
+
*/
|
|
96
|
+
get via() {
|
|
97
|
+
return this.#via;
|
|
98
|
+
}
|
|
99
|
+
/**
|
|
100
|
+
* Status details of the service.
|
|
101
|
+
*/
|
|
102
|
+
get status() {
|
|
103
|
+
return this.#status;
|
|
104
|
+
}
|
|
105
|
+
/**
|
|
106
|
+
* Release resources.
|
|
107
|
+
*/
|
|
108
|
+
async close() {
|
|
109
|
+
this.#observers.close();
|
|
110
|
+
await this.#status.close();
|
|
111
|
+
if (this.#notified) {
|
|
112
|
+
await this.#notified;
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
/**
|
|
116
|
+
* Known addresses.
|
|
117
|
+
*/
|
|
118
|
+
get addresses() {
|
|
119
|
+
return this.#addresses;
|
|
120
|
+
}
|
|
121
|
+
/**
|
|
122
|
+
* Values from TXT records.
|
|
123
|
+
*/
|
|
124
|
+
get parameters() {
|
|
125
|
+
return this.#name.parameters;
|
|
126
|
+
}
|
|
127
|
+
/**
|
|
128
|
+
* Emits when the service changes.
|
|
129
|
+
*/
|
|
130
|
+
get changed() {
|
|
131
|
+
return this.#changed;
|
|
132
|
+
}
|
|
133
|
+
map(fn) {
|
|
134
|
+
return [...this.addresses].map(fn);
|
|
135
|
+
}
|
|
136
|
+
/**
|
|
137
|
+
* Stream address updates, starting with initial set of addresses.
|
|
138
|
+
*
|
|
139
|
+
* Outputs addresses in priority order so the stream may be used directly for establishing new connections.
|
|
140
|
+
*
|
|
141
|
+
* If no addresses are present, triggers discovery using standard MDNS backoff schedule.
|
|
142
|
+
*/
|
|
143
|
+
async *addressChanges({
|
|
144
|
+
abort,
|
|
145
|
+
order = ServerAddressSet.compareDesirability
|
|
146
|
+
} = {}) {
|
|
147
|
+
var _stack = [];
|
|
148
|
+
try {
|
|
149
|
+
let knownAddresses = /* @__PURE__ */ new Set();
|
|
150
|
+
const dirty = new AsyncObservableValue();
|
|
151
|
+
const _changed = __using(_stack, this.changed.use(() => dirty.emit(true)));
|
|
152
|
+
loop: while (true) {
|
|
153
|
+
dirty.emit(false);
|
|
154
|
+
const addresses = ServerAddressSet(this.addresses, order);
|
|
155
|
+
let changes = new Array();
|
|
156
|
+
const oldKnownAddresses = knownAddresses;
|
|
157
|
+
knownAddresses = /* @__PURE__ */ new Set();
|
|
158
|
+
for (const address of addresses) {
|
|
159
|
+
knownAddresses.add(address);
|
|
160
|
+
if (oldKnownAddresses.has(address)) {
|
|
161
|
+
oldKnownAddresses.delete(address);
|
|
162
|
+
continue;
|
|
163
|
+
}
|
|
164
|
+
changes.push({ kind: "add", address });
|
|
165
|
+
}
|
|
166
|
+
if (oldKnownAddresses.size) {
|
|
167
|
+
const deletedAddresses = [...oldKnownAddresses.values()];
|
|
168
|
+
const deletes = deletedAddresses.map((address) => ({ kind: "delete", address }));
|
|
169
|
+
changes = [...deletes, ...changes];
|
|
170
|
+
}
|
|
171
|
+
for (const change of changes) {
|
|
172
|
+
yield change;
|
|
173
|
+
if (Abort.is(abort)) {
|
|
174
|
+
return;
|
|
175
|
+
}
|
|
176
|
+
if (dirty.value) {
|
|
177
|
+
continue loop;
|
|
178
|
+
}
|
|
179
|
+
}
|
|
180
|
+
await Abort.race(abort, dirty);
|
|
181
|
+
if (Abort.is(abort)) {
|
|
182
|
+
return;
|
|
183
|
+
}
|
|
184
|
+
}
|
|
185
|
+
} catch (_) {
|
|
186
|
+
var _error = _, _hasError = true;
|
|
187
|
+
} finally {
|
|
188
|
+
__callDispose(_stack, _error, _hasError);
|
|
189
|
+
}
|
|
190
|
+
}
|
|
191
|
+
#onServiceChanged = async ({ updated, deleted }) => {
|
|
192
|
+
if (updated) {
|
|
193
|
+
for (const record of updated) {
|
|
194
|
+
const service = serviceOf(record);
|
|
195
|
+
if (service) {
|
|
196
|
+
this.#updateService(record.ttl, service);
|
|
197
|
+
}
|
|
198
|
+
}
|
|
199
|
+
}
|
|
200
|
+
if (deleted) {
|
|
201
|
+
for (const record of deleted) {
|
|
202
|
+
const service = serviceOf(record);
|
|
203
|
+
if (service) {
|
|
204
|
+
this.#deleteService(service);
|
|
205
|
+
}
|
|
206
|
+
}
|
|
207
|
+
}
|
|
208
|
+
};
|
|
209
|
+
#updateService(ttl, { target, port, priority, weight }) {
|
|
210
|
+
const key = hostKeyOf(target, port);
|
|
211
|
+
let service = this.#services.get(key);
|
|
212
|
+
if (service) {
|
|
213
|
+
service.discoveredAt = Time.nowMs;
|
|
214
|
+
service.ttl = ttl;
|
|
215
|
+
service.port = port;
|
|
216
|
+
service.priority = priority;
|
|
217
|
+
service.weight = weight;
|
|
218
|
+
return;
|
|
219
|
+
}
|
|
220
|
+
service = {
|
|
221
|
+
name: this.#names.get(target),
|
|
222
|
+
discoveredAt: Time.nowMs,
|
|
223
|
+
ttl,
|
|
224
|
+
port,
|
|
225
|
+
priority,
|
|
226
|
+
weight,
|
|
227
|
+
onChange: (changes) => this.#onAddressChanged(service, changes)
|
|
228
|
+
};
|
|
229
|
+
this.#observers.on(service.name, service.onChange);
|
|
230
|
+
this.#onAddressChanged(service, { name: service.name, updated: [...service.name.records] });
|
|
231
|
+
this.#services.set(key, service);
|
|
232
|
+
}
|
|
233
|
+
#deleteService({ target, port }) {
|
|
234
|
+
const key = hostKeyOf(target, port);
|
|
235
|
+
const service = this.#services.get(key);
|
|
236
|
+
if (!service) {
|
|
237
|
+
return;
|
|
238
|
+
}
|
|
239
|
+
this.#services.delete(key);
|
|
240
|
+
this.#observers.off(service.name, service.onChange);
|
|
241
|
+
this.#onAddressChanged(service, { name: service.name, deleted: [...service.name.records] });
|
|
242
|
+
return;
|
|
243
|
+
}
|
|
244
|
+
#onAddressChanged = (service, { updated, deleted }) => {
|
|
245
|
+
if (updated) {
|
|
246
|
+
for (const record of updated) {
|
|
247
|
+
const addr = addressOf(record);
|
|
248
|
+
if (addr) {
|
|
249
|
+
this.#updateAddress(service, addr);
|
|
250
|
+
}
|
|
251
|
+
}
|
|
252
|
+
}
|
|
253
|
+
if (deleted) {
|
|
254
|
+
for (const record of deleted) {
|
|
255
|
+
const addr = addressOf(record);
|
|
256
|
+
if (addr) {
|
|
257
|
+
this.#deleteAddress(service, addr);
|
|
258
|
+
}
|
|
259
|
+
}
|
|
260
|
+
}
|
|
261
|
+
};
|
|
262
|
+
#updateAddress(service, ip) {
|
|
263
|
+
const address = { type: "udp", ip, port: service.port };
|
|
264
|
+
if (this.#addresses.has(address)) {
|
|
265
|
+
return;
|
|
266
|
+
}
|
|
267
|
+
this.#addresses.add(address);
|
|
268
|
+
this.#status.isReachable = true;
|
|
269
|
+
this.#notify();
|
|
270
|
+
}
|
|
271
|
+
#deleteAddress(service, ip) {
|
|
272
|
+
const address = { type: "udp", ip, port: service.port };
|
|
273
|
+
if (!this.#addresses.has(address)) {
|
|
274
|
+
return;
|
|
275
|
+
}
|
|
276
|
+
this.#addresses.delete(address);
|
|
277
|
+
this.#notify();
|
|
278
|
+
}
|
|
279
|
+
#notify = () => {
|
|
280
|
+
if (this.#notified) {
|
|
281
|
+
return;
|
|
282
|
+
}
|
|
283
|
+
this.#notified = this.#emitNotification();
|
|
284
|
+
};
|
|
285
|
+
async #emitNotification() {
|
|
286
|
+
await Time.sleep("discovery service coalescence", 0);
|
|
287
|
+
this.#notified = void 0;
|
|
288
|
+
await this.changed.emit();
|
|
289
|
+
}
|
|
290
|
+
}
|
|
291
|
+
function serviceOf(record) {
|
|
292
|
+
if (record.recordType !== DnsRecordType.SRV) {
|
|
293
|
+
return;
|
|
294
|
+
}
|
|
295
|
+
return record.value;
|
|
296
|
+
}
|
|
297
|
+
function hostKeyOf(name, port) {
|
|
298
|
+
return `${name}:${port}`;
|
|
299
|
+
}
|
|
300
|
+
function addressOf(record) {
|
|
301
|
+
if (record.recordType !== DnsRecordType.A && record.recordType !== DnsRecordType.AAAA) {
|
|
302
|
+
return;
|
|
303
|
+
}
|
|
304
|
+
return record.value;
|
|
305
|
+
}
|
|
306
|
+
export {
|
|
307
|
+
IpService
|
|
308
|
+
};
|
|
309
|
+
//# sourceMappingURL=IpService.js.map
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../../src/net/dns-sd/IpService.ts"],
|
|
4
|
+
"mappings": "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",
|
|
5
|
+
"names": []
|
|
6
|
+
}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @license
|
|
3
|
+
* Copyright 2022-2026 Matter.js Authors
|
|
4
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
5
|
+
*/
|
|
6
|
+
import { IpService } from "./IpService.js";
|
|
7
|
+
/**
|
|
8
|
+
* Discovers new IP addresses for an {@link IpService}.
|
|
9
|
+
*
|
|
10
|
+
* This primarily involves sending queries for SRV records using {@link DnssdSolicitor#discover}. We also query for
|
|
11
|
+
* A and AAAA records for any SRV target hostnames for which we do not know IP addresses.
|
|
12
|
+
*
|
|
13
|
+
* Runs until aborted or we discover a new IP address (we ignore existing addresses).
|
|
14
|
+
*/
|
|
15
|
+
export declare function IpServiceResolution(service: IpService, abort: AbortSignal, ipv4?: boolean): Promise<void>;
|
|
16
|
+
//# sourceMappingURL=IpServiceResolution.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"IpServiceResolution.d.ts","sourceRoot":"","sources":["../../../../src/net/dns-sd/IpServiceResolution.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAWH,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAE3C;;;;;;;GAOG;AACH,wBAAsB,mBAAmB,CAAC,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,WAAW,EAAE,IAAI,UAAO,iBA4G5F"}
|