@econ-v1/ports 7.6.42 → 7.6.46
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 +11 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/nat-profile.d.ts +21 -0
- package/dist/nat-profile.d.ts.map +1 -0
- package/dist/network/punch.d.ts +4 -0
- package/dist/network/punch.d.ts.map +1 -0
- package/dist/network.d.ts +31 -2
- package/dist/network.d.ts.map +1 -1
- package/package.json +1 -1
- package/src/index.js +14 -0
- package/src/nat-profile.js +8 -0
- package/src/network/punch.js +41 -0
- package/src/network.js +6 -1
package/dist/index.d.ts
CHANGED
|
@@ -8,6 +8,7 @@ export { DEFAULT_CLIENT_NODE_ORIGIN } from "./network/client-node-origin.js";
|
|
|
8
8
|
export { OutboxIdempotencyConflictError } from "./repositories/outbox.js";
|
|
9
9
|
export { REVISIONED_REPOSITORY_DOMAINS } from "./repositories/revisioned-repository.js";
|
|
10
10
|
export { isSignedCard } from "./gossip-card-verifier.js";
|
|
11
|
+
export { parseTransportPunch } from "./network/punch.js";
|
|
11
12
|
export type ClockPort = import("./clock.js").ClockPort;
|
|
12
13
|
export type ClockWake = import("./clock.js").ClockWake;
|
|
13
14
|
export type DelayPort = import("./clock.js").DelayPort;
|
|
@@ -263,6 +264,16 @@ export type SignedCard = import("./gossip-card-verifier.js").SignedCard;
|
|
|
263
264
|
export type GossipCardVerifier = import("./gossip-card-verifier.js").GossipCardVerifier;
|
|
264
265
|
export type GossipCardRepository = import("./repositories/gossip-card-repository.js").GossipCardRepository;
|
|
265
266
|
export type TransportRelayMember = import("./network.js").TransportRelayMember;
|
|
267
|
+
export type IceCandidateCounts = import("./network.js").IceCandidateCounts;
|
|
268
|
+
export type PunchCandidates = import("./network.js").PunchCandidates;
|
|
269
|
+
export type PunchDiagnostics = import("./network.js").PunchDiagnostics;
|
|
270
|
+
export type PunchFailureReason = import("./network.js").PunchFailureReason;
|
|
271
|
+
export type PromotionResult = import("./network.js").PromotionResult;
|
|
272
|
+
export type TransportPunch = import("./network.js").TransportPunch;
|
|
273
|
+
export type NatProfile = import("./nat-profile.js").NatProfile;
|
|
274
|
+
export type NatType = import("./nat-profile.js").NatType;
|
|
275
|
+
export type NatProbePort = import("./nat-profile.js").NatProbePort;
|
|
276
|
+
export type NatNetworkChangesPort = import("./nat-profile.js").NatNetworkChangesPort;
|
|
266
277
|
export { StorageOperationError, RESET_LOCAL_STORAGE_CONFIRMATION, STORAGE_RECOVERY_MESSAGES } from "./storage.js";
|
|
267
278
|
export { MAX_CLOSE_REASON_BYTES, MAX_DTLS_FINGERPRINT_BYTES, MAX_ICE_CANDIDATE_BYTES, MAX_ICE_CANDIDATES_PER_OFFER, MAX_OFFER_NONCE_BYTES, MAX_SDP_BYTES, MAX_SDP_MID_BYTES, MAX_WEBRTC_SIGNAL_MESSAGE_BYTES, MIN_OFFER_NONCE_BYTES, WEBRTC_SIGNAL_VERSION } from "./network/webrtc-signaling.js";
|
|
268
279
|
export { isWalletAuthoritativeSnapshot, isWalletCommandResult, isWalletSnapshotValue } from "./repositories/wallet-mirror-repository.js";
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.js"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.js"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
export type NatType = "none" | "cone" | "symmetric" | "udp_blocked" | "unknown";
|
|
2
|
+
export type NatProfile = {
|
|
3
|
+
nat_type: NatType;
|
|
4
|
+
cgnat: boolean | null;
|
|
5
|
+
double_nat: boolean | null;
|
|
6
|
+
signals: readonly string[];
|
|
7
|
+
measured_at: number | null;
|
|
8
|
+
};
|
|
9
|
+
/**
|
|
10
|
+
* Session-cached, privacy-safe browser measurement. Invalidating cancels stale results.
|
|
11
|
+
*/
|
|
12
|
+
export type NatProbePort = {
|
|
13
|
+
measure(): Promise<NatProfile>;
|
|
14
|
+
invalidate(): void;
|
|
15
|
+
close(): void;
|
|
16
|
+
};
|
|
17
|
+
/**
|
|
18
|
+
* Subscribe to network changes; the returned function removes the subscription.
|
|
19
|
+
*/
|
|
20
|
+
export type NatNetworkChangesPort = (invalidate: () => void) => (() => void);
|
|
21
|
+
//# sourceMappingURL=nat-profile.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"nat-profile.d.ts","sourceRoot":"","sources":["../src/nat-profile.js"],"names":[],"mappings":"sBACc,MAAM,GAAG,MAAM,GAAG,WAAW,GAAG,aAAa,GAAG,SAAS;yBACzD;IAAC,QAAQ,EAAE,OAAO,CAAC;IAAC,KAAK,EAAE,OAAO,GAAG,IAAI,CAAC;IAAC,UAAU,EAAE,OAAO,GAAG,IAAI,CAAC;IAAC,OAAO,EAAE,SAAS,MAAM,EAAE,CAAC;IAAC,WAAW,EAAE,MAAM,GAAG,IAAI,CAAA;CAAC;;;;2BAE/H;IAAC,OAAO,IAAI,OAAO,CAAC,UAAU,CAAC,CAAC;IAAC,UAAU,IAAI,IAAI,CAAC;IAAC,KAAK,IAAI,IAAI,CAAA;CAAC;;;;oCAEnE,CAAC,UAAU,EAAE,MAAM,IAAI,KAAK,CAAC,MAAM,IAAI,CAAC"}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
/** Validate and project diagnostics; unknown fields (including network identifiers) never cross the seam.
|
|
2
|
+
* @param {unknown} value @returns {import("../network.js").TransportPunch} */
|
|
3
|
+
export function parseTransportPunch(value: unknown): import("../network.js").TransportPunch;
|
|
4
|
+
//# sourceMappingURL=punch.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"punch.d.ts","sourceRoot":"","sources":["../../src/network/punch.js"],"names":[],"mappings":"AACA;8EAC8E;AAC9E,2CADW,OAAO,GAAkB,OAAO,eAAe,EAAE,cAAc,CAsBzE"}
|
package/dist/network.d.ts
CHANGED
|
@@ -9,7 +9,12 @@
|
|
|
9
9
|
/** @typedef {HttpHomeNodeCandidate | WebTransportHomeNodeCandidate} DirectHomeNodeCandidate */
|
|
10
10
|
/** @typedef {"no-network" | "node-unreachable" | "session-required" | "transport-key-required"} TransportOfflineReason */
|
|
11
11
|
/** @typedef {{ readonly nodeId: string, readonly name: string }} TransportRelayMember */
|
|
12
|
-
/** @typedef {{
|
|
12
|
+
/** @typedef {{host: number, srflx: number, prflx: number, relay: number}} IceCandidateCounts */
|
|
13
|
+
/** @typedef {{local: IceCandidateCounts, remote: IceCandidateCounts}} PunchCandidates */
|
|
14
|
+
/** @typedef {{readonly candidates?: PunchCandidates, readonly iceConnectionState?: string, readonly connectionState?: string, readonly elapsedMs?: number, readonly detail?: string}} PunchDiagnostics */
|
|
15
|
+
/** @typedef {"setup_failed" | "signaling_failed" | "stun_unreachable" | "ice_failed" | "connection_failed" | "timeout" | "unstable" | "replace_rejected"} PunchFailureReason */
|
|
16
|
+
/** @typedef {PunchDiagnostics & ({ok: true} | {ok: false, reason: PunchFailureReason | "superseded"})} PromotionResult */
|
|
17
|
+
/** @typedef {PunchDiagnostics & { readonly status: "idle" | "trying" | "failed" | "direct", readonly reason?: string, readonly retryAt?: number }} TransportPunch */
|
|
13
18
|
/** `checking` is a live-link sub-state: the connected path remains usable during a probe or rediscovery. */
|
|
14
19
|
/** @typedef {{ readonly changedAt: string, readonly path: "lan-direct" | "lan-webtransport" | "wan-direct" | "iroh-relay" | "webrtc-direct", readonly status: "connected", readonly checking?: boolean, readonly relayMember?: TransportRelayMember, readonly punch?: TransportPunch, readonly rttMs?: number } | { readonly attempt: number, readonly changedAt: string, readonly path: "offline", readonly status: "connecting" } | { readonly attempt: number, readonly changedAt: string, readonly nextRetryAt: string, readonly path: "offline", readonly status: "reconnecting" } | { readonly changedAt: string, readonly path: "offline", readonly reason?: TransportOfflineReason, readonly status: "offline" }} TransportState */
|
|
15
20
|
/** @typedef {{ readonly headers?: Readonly<Record<string, string>>, readonly operation: string, readonly payload: unknown, readonly responseType?: "blob" | "json" }} HomeNodeRequest */
|
|
@@ -40,7 +45,31 @@ export type TransportRelayMember = {
|
|
|
40
45
|
readonly nodeId: string;
|
|
41
46
|
readonly name: string;
|
|
42
47
|
};
|
|
43
|
-
export type
|
|
48
|
+
export type IceCandidateCounts = {
|
|
49
|
+
host: number;
|
|
50
|
+
srflx: number;
|
|
51
|
+
prflx: number;
|
|
52
|
+
relay: number;
|
|
53
|
+
};
|
|
54
|
+
export type PunchCandidates = {
|
|
55
|
+
local: IceCandidateCounts;
|
|
56
|
+
remote: IceCandidateCounts;
|
|
57
|
+
};
|
|
58
|
+
export type PunchDiagnostics = {
|
|
59
|
+
readonly candidates?: PunchCandidates;
|
|
60
|
+
readonly iceConnectionState?: string;
|
|
61
|
+
readonly connectionState?: string;
|
|
62
|
+
readonly elapsedMs?: number;
|
|
63
|
+
readonly detail?: string;
|
|
64
|
+
};
|
|
65
|
+
export type PunchFailureReason = "setup_failed" | "signaling_failed" | "stun_unreachable" | "ice_failed" | "connection_failed" | "timeout" | "unstable" | "replace_rejected";
|
|
66
|
+
export type PromotionResult = PunchDiagnostics & ({
|
|
67
|
+
ok: true;
|
|
68
|
+
} | {
|
|
69
|
+
ok: false;
|
|
70
|
+
reason: PunchFailureReason | "superseded";
|
|
71
|
+
});
|
|
72
|
+
export type TransportPunch = PunchDiagnostics & {
|
|
44
73
|
readonly status: "idle" | "trying" | "failed" | "direct";
|
|
45
74
|
readonly reason?: string;
|
|
46
75
|
readonly retryAt?: number;
|
package/dist/network.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"network.d.ts","sourceRoot":"","sources":["../src/network.js"],"names":[],"mappings":"AAEA,gGAAgG;AAChG,yGAAyG;AAEzG,6HAA6H;AAC7H,+DAA+D;AAC/D,sFAAsF;AACtF,wIAAwI;AACxI,kIAAkI;AAClI,qKAAqK;AACrK,+FAA+F;AAC/F,0HAA0H;AAC1H,yFAAyF;AACzF,
|
|
1
|
+
{"version":3,"file":"network.d.ts","sourceRoot":"","sources":["../src/network.js"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
package/src/index.js
CHANGED
|
@@ -290,3 +290,17 @@ export {
|
|
|
290
290
|
export { isSignedCard } from './gossip-card-verifier.js';
|
|
291
291
|
|
|
292
292
|
/** @typedef {import("./network.js").TransportRelayMember} TransportRelayMember */
|
|
293
|
+
|
|
294
|
+
/** @typedef {import("./network.js").IceCandidateCounts} IceCandidateCounts */
|
|
295
|
+
/** @typedef {import("./network.js").PunchCandidates} PunchCandidates */
|
|
296
|
+
/** @typedef {import("./network.js").PunchDiagnostics} PunchDiagnostics */
|
|
297
|
+
/** @typedef {import("./network.js").PunchFailureReason} PunchFailureReason */
|
|
298
|
+
/** @typedef {import("./network.js").PromotionResult} PromotionResult */
|
|
299
|
+
/** @typedef {import("./network.js").TransportPunch} TransportPunch */
|
|
300
|
+
export { parseTransportPunch } from "./network/punch.js";
|
|
301
|
+
|
|
302
|
+
/** @typedef {import("./nat-profile.js").NatProfile} NatProfile */
|
|
303
|
+
/** @typedef {import("./nat-profile.js").NatType} NatType */
|
|
304
|
+
/** @typedef {import("./nat-profile.js").NatProbePort} NatProbePort */
|
|
305
|
+
|
|
306
|
+
/** @typedef {import("./nat-profile.js").NatNetworkChangesPort} NatNetworkChangesPort */
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
// @ts-check
|
|
2
|
+
/** @typedef {"none" | "cone" | "symmetric" | "udp_blocked" | "unknown"} NatType */
|
|
3
|
+
/** @typedef {{nat_type: NatType, cgnat: boolean | null, double_nat: boolean | null, signals: readonly string[], measured_at: number | null}} NatProfile */
|
|
4
|
+
/** Session-cached, privacy-safe browser measurement. Invalidating cancels stale results.
|
|
5
|
+
* @typedef {{measure(): Promise<NatProfile>, invalidate(): void, close(): void}} NatProbePort */
|
|
6
|
+
/** Subscribe to network changes; the returned function removes the subscription.
|
|
7
|
+
* @typedef {(invalidate: () => void) => (() => void)} NatNetworkChangesPort */
|
|
8
|
+
export {};
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
// @ts-check
|
|
2
|
+
/** Validate and project diagnostics; unknown fields (including network identifiers) never cross the seam.
|
|
3
|
+
* @param {unknown} value @returns {import("../network.js").TransportPunch} */
|
|
4
|
+
export function parseTransportPunch(value) {
|
|
5
|
+
const punch = record(value);
|
|
6
|
+
const status = punch.status;
|
|
7
|
+
if (status !== "idle" && status !== "trying" && status !== "failed" && status !== "direct") throw new TypeError("Invalid punch status");
|
|
8
|
+
/** @type {import("../network.js").TransportPunch} */
|
|
9
|
+
const result = { status };
|
|
10
|
+
for (const key of ["reason", "detail", "iceConnectionState", "connectionState"]) {
|
|
11
|
+
if (punch[key] === undefined) continue;
|
|
12
|
+
if (typeof punch[key] !== "string") throw new TypeError(`Invalid punch ${key}`);
|
|
13
|
+
Object.assign(result, { [key]: punch[key] });
|
|
14
|
+
}
|
|
15
|
+
for (const key of ["retryAt", "elapsedMs"]) {
|
|
16
|
+
if (punch[key] === undefined) continue;
|
|
17
|
+
if (typeof punch[key] !== "number" || !Number.isFinite(punch[key]) || punch[key] < 0) throw new TypeError(`Invalid punch ${key}`);
|
|
18
|
+
Object.assign(result, { [key]: punch[key] });
|
|
19
|
+
}
|
|
20
|
+
if (punch.candidates !== undefined) {
|
|
21
|
+
const candidates = record(punch.candidates);
|
|
22
|
+
Object.assign(result, { candidates: { local: counts(candidates.local), remote: counts(candidates.remote) } });
|
|
23
|
+
}
|
|
24
|
+
return result;
|
|
25
|
+
}
|
|
26
|
+
/** @param {unknown} value @returns {Record<string, unknown>} */
|
|
27
|
+
function record(value) {
|
|
28
|
+
if (!value || typeof value !== "object" || Array.isArray(value)) throw new TypeError("Invalid punch diagnostics");
|
|
29
|
+
return /** @type {Record<string, unknown>} */ (value);
|
|
30
|
+
}
|
|
31
|
+
/** @param {unknown} value @returns {import("../network.js").IceCandidateCounts} */
|
|
32
|
+
function counts(value) {
|
|
33
|
+
const source = record(value);
|
|
34
|
+
const result = { host: 0, srflx: 0, prflx: 0, relay: 0 };
|
|
35
|
+
for (const key of /** @type {const} */ (["host", "srflx", "prflx", "relay"])) {
|
|
36
|
+
const count = source[key];
|
|
37
|
+
if (typeof count !== "number" || !Number.isSafeInteger(count) || count < 0) throw new TypeError("Invalid candidate count");
|
|
38
|
+
result[key] = count;
|
|
39
|
+
}
|
|
40
|
+
return result;
|
|
41
|
+
}
|
package/src/network.js
CHANGED
|
@@ -12,7 +12,12 @@
|
|
|
12
12
|
/** @typedef {HttpHomeNodeCandidate | WebTransportHomeNodeCandidate} DirectHomeNodeCandidate */
|
|
13
13
|
/** @typedef {"no-network" | "node-unreachable" | "session-required" | "transport-key-required"} TransportOfflineReason */
|
|
14
14
|
/** @typedef {{ readonly nodeId: string, readonly name: string }} TransportRelayMember */
|
|
15
|
-
/** @typedef {{
|
|
15
|
+
/** @typedef {{host: number, srflx: number, prflx: number, relay: number}} IceCandidateCounts */
|
|
16
|
+
/** @typedef {{local: IceCandidateCounts, remote: IceCandidateCounts}} PunchCandidates */
|
|
17
|
+
/** @typedef {{readonly candidates?: PunchCandidates, readonly iceConnectionState?: string, readonly connectionState?: string, readonly elapsedMs?: number, readonly detail?: string}} PunchDiagnostics */
|
|
18
|
+
/** @typedef {"setup_failed" | "signaling_failed" | "stun_unreachable" | "ice_failed" | "connection_failed" | "timeout" | "unstable" | "replace_rejected"} PunchFailureReason */
|
|
19
|
+
/** @typedef {PunchDiagnostics & ({ok: true} | {ok: false, reason: PunchFailureReason | "superseded"})} PromotionResult */
|
|
20
|
+
/** @typedef {PunchDiagnostics & { readonly status: "idle" | "trying" | "failed" | "direct", readonly reason?: string, readonly retryAt?: number }} TransportPunch */
|
|
16
21
|
/** `checking` is a live-link sub-state: the connected path remains usable during a probe or rediscovery. */
|
|
17
22
|
/** @typedef {{ readonly changedAt: string, readonly path: "lan-direct" | "lan-webtransport" | "wan-direct" | "iroh-relay" | "webrtc-direct", readonly status: "connected", readonly checking?: boolean, readonly relayMember?: TransportRelayMember, readonly punch?: TransportPunch, readonly rttMs?: number } | { readonly attempt: number, readonly changedAt: string, readonly path: "offline", readonly status: "connecting" } | { readonly attempt: number, readonly changedAt: string, readonly nextRetryAt: string, readonly path: "offline", readonly status: "reconnecting" } | { readonly changedAt: string, readonly path: "offline", readonly reason?: TransportOfflineReason, readonly status: "offline" }} TransportState */
|
|
18
23
|
/** @typedef {{ readonly headers?: Readonly<Record<string, string>>, readonly operation: string, readonly payload: unknown, readonly responseType?: "blob" | "json" }} HomeNodeRequest */
|