@econ-v1/domain 6.5.0 → 6.6.0
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/index.d.ts +12 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +8 -1
- package/dist/index.js.map +1 -1
- package/dist/models/owner-views.d.ts +1 -1
- package/dist/models/owner-views.d.ts.map +1 -1
- package/dist/models/release-manifest.d.ts +64 -0
- package/dist/models/release-manifest.d.ts.map +1 -0
- package/dist/models/release-manifest.js +147 -0
- package/dist/models/release-manifest.js.map +1 -0
- package/dist/queries/discovery.d.ts +13 -0
- package/dist/queries/discovery.d.ts.map +1 -0
- package/dist/queries/discovery.js +27 -0
- package/dist/queries/discovery.js.map +1 -0
- package/dist/queries/onboarding-status.d.ts +13 -0
- package/dist/queries/onboarding-status.d.ts.map +1 -0
- package/dist/queries/onboarding-status.js +27 -0
- package/dist/queries/onboarding-status.js.map +1 -0
- package/dist/services/discovery-probe-service.d.ts +60 -0
- package/dist/services/discovery-probe-service.d.ts.map +1 -0
- package/dist/services/discovery-probe-service.js +129 -0
- package/dist/services/discovery-probe-service.js.map +1 -0
- package/dist/services/lan-candidate-refresh-service.d.ts.map +1 -1
- package/dist/services/lan-candidate-refresh-service.js +61 -14
- package/dist/services/lan-candidate-refresh-service.js.map +1 -1
- package/dist/services/onboarding-status-service.d.ts +46 -0
- package/dist/services/onboarding-status-service.d.ts.map +1 -0
- package/dist/services/onboarding-status-service.js +32 -0
- package/dist/services/onboarding-status-service.js.map +1 -0
- package/dist/services/release-manifest-verifier.d.ts +37 -0
- package/dist/services/release-manifest-verifier.d.ts.map +1 -0
- package/dist/services/release-manifest-verifier.js +84 -0
- package/dist/services/release-manifest-verifier.js.map +1 -0
- package/dist/services/transport-manager.d.ts +25 -6
- package/dist/services/transport-manager.d.ts.map +1 -1
- package/dist/services/transport-manager.js +185 -84
- package/dist/services/transport-manager.js.map +1 -1
- package/package.json +2 -2
|
@@ -1,122 +1,151 @@
|
|
|
1
|
-
/** Fixed
|
|
1
|
+
/** Fixed dial priority order — ticket #1823's full ladder before WAN fallback. */
|
|
2
|
+
const DIRECT_TIER_ORDER = ["lan-direct", "lan-webtransport", "wan-direct"];
|
|
3
|
+
/**
|
|
4
|
+
* Direct (non-relayed) home-node transport policy: browser-trusted LAN
|
|
5
|
+
* HTTPS, then hash-pinned LAN WebTransport, then WAN HTTPS/WSS (ticket
|
|
6
|
+
* #1823). Adapters own I/O; this class owns selection only.
|
|
7
|
+
*/
|
|
2
8
|
export class TransportManager {
|
|
3
9
|
#candidates;
|
|
4
10
|
#dial;
|
|
5
11
|
#delay;
|
|
6
|
-
#priorityGraceMs;
|
|
7
12
|
#candidateTimeoutMs;
|
|
8
13
|
#now;
|
|
9
14
|
#onState;
|
|
10
15
|
#run;
|
|
16
|
+
#runAbort;
|
|
17
|
+
#selectedCandidate;
|
|
18
|
+
#controllers = new Set();
|
|
19
|
+
#closedClients = new WeakSet();
|
|
11
20
|
#listeners = new Set();
|
|
12
21
|
#state = { changedAt: "1970-01-01T00:00:00.000Z", path: "offline", status: "offline" };
|
|
13
22
|
constructor(options) {
|
|
14
|
-
this.#candidates =
|
|
23
|
+
this.#candidates = normalizeDirectCandidates(options.candidates);
|
|
15
24
|
this.#dial = options.dial;
|
|
16
25
|
this.#delay = options.delay;
|
|
17
|
-
this.#priorityGraceMs = Math.max(0, options.priorityGraceMs ?? 0);
|
|
18
26
|
this.#candidateTimeoutMs = Math.max(1, options.candidateTimeoutMs ?? 15_000);
|
|
19
27
|
this.#now = options.now ?? (() => new Date().toISOString());
|
|
20
28
|
this.#onState = options.onState ?? (() => undefined);
|
|
21
29
|
}
|
|
22
30
|
get state() { return this.#state; }
|
|
31
|
+
get selectedCandidate() {
|
|
32
|
+
return this.#selectedCandidate === undefined ? undefined : { ...this.#selectedCandidate };
|
|
33
|
+
}
|
|
23
34
|
subscribe(listener) {
|
|
24
35
|
this.#listeners.add(listener);
|
|
25
36
|
return () => this.#listeners.delete(listener);
|
|
26
37
|
}
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
return await run;
|
|
34
|
-
}
|
|
35
|
-
finally {
|
|
36
|
-
if (this.#run === run)
|
|
37
|
-
this.#run = undefined;
|
|
38
|
+
replaceCandidates(candidates) {
|
|
39
|
+
this.#candidates = normalizeDirectCandidates(candidates);
|
|
40
|
+
}
|
|
41
|
+
connect(options = {}) {
|
|
42
|
+
if (options.higherPriorityThan !== undefined && options.path !== undefined) {
|
|
43
|
+
throw new TypeError("Transport selection accepts either a path or a priority bound");
|
|
38
44
|
}
|
|
45
|
+
const candidates = options.path === undefined
|
|
46
|
+
? options.higherPriorityThan === undefined
|
|
47
|
+
? this.#candidates
|
|
48
|
+
: this.#candidates.filter((candidate) => priority(candidate.path) < priority(options.higherPriorityThan))
|
|
49
|
+
: this.#candidates.filter((candidate) => candidate.path === options.path);
|
|
50
|
+
return this.#shareRun(candidates, options.higherPriorityThan === undefined);
|
|
51
|
+
}
|
|
52
|
+
markConnected(path) {
|
|
53
|
+
this.#setState({ changedAt: this.#now(), path, status: "connected" });
|
|
39
54
|
}
|
|
40
55
|
markOffline() {
|
|
41
56
|
this.#setState({ changedAt: this.#now(), path: "offline", status: "offline" });
|
|
42
57
|
}
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
+
abort() {
|
|
59
|
+
this.#runAbort?.abort();
|
|
60
|
+
for (const controller of this.#controllers)
|
|
61
|
+
controller.abort();
|
|
62
|
+
this.markOffline();
|
|
63
|
+
}
|
|
64
|
+
#shareRun(candidates, publishState) {
|
|
65
|
+
if (this.#run !== undefined)
|
|
66
|
+
return this.#run;
|
|
67
|
+
const abort = new AbortController();
|
|
68
|
+
const connection = this.#connect(candidates, publishState, abort.signal);
|
|
69
|
+
const run = connection.finally(() => {
|
|
70
|
+
if (this.#run === run)
|
|
71
|
+
this.#run = undefined;
|
|
72
|
+
if (this.#runAbort === abort)
|
|
73
|
+
this.#runAbort = undefined;
|
|
74
|
+
});
|
|
75
|
+
this.#run = run;
|
|
76
|
+
this.#runAbort = abort;
|
|
77
|
+
return run;
|
|
78
|
+
}
|
|
79
|
+
async #connect(candidates, publishState, signal) {
|
|
80
|
+
const failures = [];
|
|
81
|
+
for (const path of DIRECT_TIER_ORDER) {
|
|
82
|
+
throwIfAborted(signal);
|
|
83
|
+
const tier = candidates.filter((candidate) => candidate.path === path);
|
|
84
|
+
if (tier.length === 0)
|
|
85
|
+
continue;
|
|
86
|
+
const attempts = tier.map((candidate) => this.#startAttempt(candidate, signal));
|
|
87
|
+
const outcomes = await Promise.all(attempts.map(async (attempt) => {
|
|
88
|
+
try {
|
|
89
|
+
return { attempt, client: await attempt.promise, success: true };
|
|
58
90
|
}
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
const active = [];
|
|
63
|
-
let nextCandidate = 0;
|
|
64
|
-
const start = (candidate) => {
|
|
65
|
-
const controller = new AbortController();
|
|
66
|
-
const promise = this.#dialWithTimeout(candidate, controller).catch((error) => {
|
|
67
|
-
failures.push(`${candidate.path}:${error instanceof Error ? error.message : "unavailable"}`);
|
|
68
|
-
throw error;
|
|
69
|
-
});
|
|
70
|
-
active.push({ candidate, controller, promise });
|
|
71
|
-
};
|
|
72
|
-
const firstCandidate = this.#candidates[0];
|
|
73
|
-
if (firstCandidate !== undefined) {
|
|
74
|
-
start(firstCandidate);
|
|
75
|
-
nextCandidate += 1;
|
|
76
|
-
}
|
|
77
|
-
while (active.length > 0) {
|
|
78
|
-
const lowerPriorityGate = nextCandidate < this.#candidates.length
|
|
79
|
-
? this.#wait(this.#priorityGraceMs).then(() => ({ kind: "gate" }))
|
|
80
|
-
: undefined;
|
|
81
|
-
const result = await Promise.race([
|
|
82
|
-
...active.map((attempt) => attempt.promise.then((client) => ({ kind: "success", attempt, client }), () => ({ kind: "failed", attempt }))),
|
|
83
|
-
...(lowerPriorityGate === undefined ? [] : [lowerPriorityGate]),
|
|
84
|
-
]);
|
|
85
|
-
if (result.kind === "gate") {
|
|
86
|
-
const candidate = this.#candidates[nextCandidate];
|
|
87
|
-
if (candidate !== undefined) {
|
|
88
|
-
start(candidate);
|
|
89
|
-
nextCandidate += 1;
|
|
90
|
-
}
|
|
91
|
-
continue;
|
|
91
|
+
catch (error) {
|
|
92
|
+
failures.push(`${attempt.candidate.path}:${messageFor(error)}`);
|
|
93
|
+
return { attempt, success: false };
|
|
92
94
|
}
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
active.splice(index, 1);
|
|
96
|
-
if (result.kind === "success") {
|
|
97
|
-
for (const attempt of active)
|
|
98
|
-
attempt.controller.abort();
|
|
99
|
-
this.#setState({ changedAt: this.#now(), path: result.attempt.candidate.path, status: "connected" });
|
|
100
|
-
return result.client;
|
|
95
|
+
finally {
|
|
96
|
+
this.#controllers.delete(attempt.controller);
|
|
101
97
|
}
|
|
98
|
+
}));
|
|
99
|
+
throwIfAborted(signal);
|
|
100
|
+
const successes = outcomes.filter((outcome) => outcome.success);
|
|
101
|
+
const winner = successes[0];
|
|
102
|
+
if (winner === undefined) {
|
|
103
|
+
for (const attempt of attempts)
|
|
104
|
+
attempt.controller.abort();
|
|
105
|
+
continue;
|
|
102
106
|
}
|
|
107
|
+
await Promise.all(successes.slice(1).map(async (outcome) => {
|
|
108
|
+
outcome.attempt.controller.abort();
|
|
109
|
+
await this.#closeClient(outcome.client);
|
|
110
|
+
}));
|
|
111
|
+
this.#selectedCandidate = { ...winner.attempt.candidate };
|
|
112
|
+
if (publishState)
|
|
113
|
+
this.markConnected(winner.attempt.candidate.path);
|
|
114
|
+
return winner.client;
|
|
115
|
+
}
|
|
116
|
+
if (publishState)
|
|
103
117
|
this.markOffline();
|
|
104
|
-
|
|
105
|
-
|
|
118
|
+
throw new Error(`No home-node transport available (${failures.join(", ") || "no candidates"})`);
|
|
119
|
+
}
|
|
120
|
+
#startAttempt(candidate, runSignal) {
|
|
121
|
+
const controller = new AbortController();
|
|
122
|
+
this.#controllers.add(controller);
|
|
123
|
+
return {
|
|
124
|
+
candidate,
|
|
125
|
+
controller,
|
|
126
|
+
promise: this.#dialWithTimeout(candidate, controller, runSignal),
|
|
127
|
+
};
|
|
106
128
|
}
|
|
107
|
-
async #dialWithTimeout(candidate, controller) {
|
|
129
|
+
async #dialWithTimeout(candidate, controller, runSignal) {
|
|
130
|
+
const dial = this.#dial(candidate, controller.signal);
|
|
131
|
+
void dial.then(async (client) => {
|
|
132
|
+
if (controller.signal.aborted || runSignal.aborted)
|
|
133
|
+
await this.#closeClient(client);
|
|
134
|
+
}).catch(() => undefined);
|
|
135
|
+
const cancellation = Promise.race([rejectedOnAbort(controller.signal), rejectedOnAbort(runSignal)]);
|
|
108
136
|
if (this.#delay === undefined)
|
|
109
|
-
return await
|
|
110
|
-
const timeout =
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
reject(new Error("candidate dial timed out"));
|
|
114
|
-
});
|
|
137
|
+
return await Promise.race([dial, cancellation]);
|
|
138
|
+
const timeout = this.#delay.wait(this.#candidateTimeoutMs).then(() => {
|
|
139
|
+
controller.abort();
|
|
140
|
+
throw new Error("candidate dial timed out");
|
|
115
141
|
});
|
|
116
|
-
return await Promise.race([
|
|
142
|
+
return await Promise.race([dial, timeout, cancellation]);
|
|
117
143
|
}
|
|
118
|
-
#
|
|
119
|
-
|
|
144
|
+
async #closeClient(client) {
|
|
145
|
+
if (this.#closedClients.has(client))
|
|
146
|
+
return;
|
|
147
|
+
this.#closedClients.add(client);
|
|
148
|
+
await closeClient(client);
|
|
120
149
|
}
|
|
121
150
|
#setState(next) {
|
|
122
151
|
if (this.#state.status === next.status && this.#state.path === next.path)
|
|
@@ -127,7 +156,79 @@ export class TransportManager {
|
|
|
127
156
|
listener(next);
|
|
128
157
|
}
|
|
129
158
|
}
|
|
159
|
+
function normalizeDirectCandidates(candidates) {
|
|
160
|
+
const tiers = {
|
|
161
|
+
"lan-direct": [],
|
|
162
|
+
"lan-webtransport": [],
|
|
163
|
+
"wan-direct": [],
|
|
164
|
+
};
|
|
165
|
+
const seen = new Set();
|
|
166
|
+
const trustedNodeIds = new Set();
|
|
167
|
+
for (const candidate of candidates) {
|
|
168
|
+
if (!isDirectCandidate(candidate) || candidate.address.trim() === "" || candidate.id.trim() === "") {
|
|
169
|
+
throw new TypeError("Direct transport candidates must have a path, address, and id");
|
|
170
|
+
}
|
|
171
|
+
const address = canonicalHttpCandidateOrigin(candidate.address);
|
|
172
|
+
const identityBinding = candidate.path === "lan-webtransport" ? undefined : candidate.identityBinding;
|
|
173
|
+
if (identityBinding !== "bootstrap")
|
|
174
|
+
trustedNodeIds.add(candidate.id);
|
|
175
|
+
const key = JSON.stringify([candidate.path, address, candidate.id]);
|
|
176
|
+
if (seen.has(key))
|
|
177
|
+
continue;
|
|
178
|
+
seen.add(key);
|
|
179
|
+
tiers[candidate.path].push({ ...candidate, address });
|
|
180
|
+
}
|
|
181
|
+
if (trustedNodeIds.size > 1) {
|
|
182
|
+
throw new TypeError("Direct transport candidates must share one trusted home-node identity");
|
|
183
|
+
}
|
|
184
|
+
return DIRECT_TIER_ORDER.flatMap((path) => tiers[path]);
|
|
185
|
+
}
|
|
186
|
+
/**
|
|
187
|
+
* Canonicalize a bare HTTPS origin. Named for its HTTP origin, but this rule
|
|
188
|
+
* — exact `https://` scheme, no credentials, no path/query/fragment — is the
|
|
189
|
+
* same origin shape a WebTransport candidate's `address` uses too (ticket
|
|
190
|
+
* #1823): the client-RPC path is appended when dialing, not advertised.
|
|
191
|
+
*/
|
|
192
|
+
export function canonicalHttpCandidateOrigin(value) {
|
|
193
|
+
let url;
|
|
194
|
+
try {
|
|
195
|
+
url = new URL(value);
|
|
196
|
+
}
|
|
197
|
+
catch {
|
|
198
|
+
throw new TypeError("Direct transport candidates must use an exact HTTPS origin");
|
|
199
|
+
}
|
|
200
|
+
if (url.protocol !== "https:" ||
|
|
201
|
+
url.username !== "" ||
|
|
202
|
+
url.password !== "" ||
|
|
203
|
+
url.hostname === "" ||
|
|
204
|
+
url.origin !== value) {
|
|
205
|
+
throw new TypeError("Direct transport candidates must use an exact HTTPS origin");
|
|
206
|
+
}
|
|
207
|
+
return url.origin;
|
|
208
|
+
}
|
|
209
|
+
function isDirectCandidate(candidate) {
|
|
210
|
+
return candidate.path === "lan-direct" || candidate.path === "lan-webtransport" || candidate.path === "wan-direct";
|
|
211
|
+
}
|
|
130
212
|
function priority(path) {
|
|
131
|
-
return path
|
|
213
|
+
return DIRECT_TIER_ORDER.indexOf(path);
|
|
214
|
+
}
|
|
215
|
+
function messageFor(error) {
|
|
216
|
+
return error instanceof Error ? error.message : "unavailable";
|
|
217
|
+
}
|
|
218
|
+
async function closeClient(client) {
|
|
219
|
+
if (client.close === undefined)
|
|
220
|
+
return;
|
|
221
|
+
await Promise.resolve(client.close()).catch(() => undefined);
|
|
222
|
+
}
|
|
223
|
+
function rejectedOnAbort(signal) {
|
|
224
|
+
if (signal.aborted)
|
|
225
|
+
return Promise.reject(new Error("transport selection aborted"));
|
|
226
|
+
return new Promise((_resolve, reject) => {
|
|
227
|
+
signal.addEventListener("abort", () => reject(new Error("transport selection aborted")), { once: true });
|
|
228
|
+
});
|
|
229
|
+
}
|
|
230
|
+
function throwIfAborted(signal) {
|
|
231
|
+
if (signal.aborted)
|
|
232
|
+
throw new Error("transport selection aborted");
|
|
132
233
|
}
|
|
133
234
|
//# sourceMappingURL=transport-manager.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"transport-manager.js","sourceRoot":"","sources":["../../src/services/transport-manager.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"transport-manager.js","sourceRoot":"","sources":["../../src/services/transport-manager.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@econ-v1/domain",
|
|
3
|
-
"version": "6.
|
|
3
|
+
"version": "6.6.0",
|
|
4
4
|
"description": "Platform-neutral domain contracts and errors for Node clients",
|
|
5
5
|
"license": "MIT OR Apache-2.0",
|
|
6
6
|
"author": "Node contributors",
|
|
@@ -51,6 +51,6 @@
|
|
|
51
51
|
"access": "public"
|
|
52
52
|
},
|
|
53
53
|
"dependencies": {
|
|
54
|
-
"@econ-v1/ports": "6.
|
|
54
|
+
"@econ-v1/ports": "6.6.0"
|
|
55
55
|
}
|
|
56
56
|
}
|