ds-harness-remote 0.3.32 → 0.3.34
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/README.md +3 -3
- package/dist/client-runtime.d.ts +2 -1
- package/dist/client-runtime.d.ts.map +1 -1
- package/dist/client-runtime.js +73 -31
- package/dist/client-runtime.js.map +1 -1
- package/dist/client.d.ts +1 -0
- package/dist/client.d.ts.map +1 -1
- package/dist/client.github.js +88 -54
- package/dist/client.js +88 -54
- package/dist/client.js.map +1 -1
- package/dist/harness-api-bridge.d.ts.map +1 -1
- package/dist/harness-api-bridge.js +2 -5
- package/dist/harness-api-bridge.js.map +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1384 -113
- package/dist/index.js.map +4 -4
- package/dist/native-rtc-helper.d.ts +4 -0
- package/dist/native-rtc-helper.d.ts.map +1 -0
- package/dist/native-rtc-helper.js +539 -0
- package/dist/native-rtc-helper.js.map +1 -0
- package/dist/rpc-router.d.ts +1 -6
- package/dist/rpc-router.d.ts.map +1 -1
- package/dist/rpc-router.js +5 -20
- package/dist/rpc-router.js.map +1 -1
- package/dist/safe-error.d.ts +8 -0
- package/dist/safe-error.d.ts.map +1 -0
- package/dist/safe-error.js +20 -0
- package/dist/safe-error.js.map +1 -0
- package/dist/server-connection.d.ts.map +1 -1
- package/dist/server-connection.js +43 -2
- package/dist/server-connection.js.map +1 -1
- package/dist/service.d.ts.map +1 -1
- package/dist/service.js +4 -2
- package/dist/service.js.map +1 -1
- package/dist/version.d.ts +1 -1
- package/dist/version.js +1 -1
- package/dist/werift-rtc.d.ts +45 -9
- package/dist/werift-rtc.d.ts.map +1 -1
- package/dist/werift-rtc.js +356 -35
- package/dist/werift-rtc.js.map +1 -1
- package/package.json +4 -1
- package/public.d.ts +1 -1
package/dist/werift-rtc.js
CHANGED
|
@@ -1,44 +1,147 @@
|
|
|
1
1
|
/**
|
|
2
|
-
*
|
|
2
|
+
* Node RTC factory (webrtc-implementation-plan.md §6.2).
|
|
3
3
|
*
|
|
4
|
-
*
|
|
5
|
-
*
|
|
6
|
-
*
|
|
7
|
-
*
|
|
8
|
-
* a WebRTC offer (or run with `forceRelay`).
|
|
4
|
+
* Native libwebrtc is preferred when present because its ICE behavior matches
|
|
5
|
+
* browser Remote Web. werift remains the pure-TypeScript fallback for systems
|
|
6
|
+
* without a loadable native addon. Both backends are loaded lazily so DSH
|
|
7
|
+
* startup remains unaffected when WebRTC is unused or `forceRelay` is enabled.
|
|
9
8
|
*/
|
|
9
|
+
import { createSocket } from 'node:dgram';
|
|
10
10
|
import { networkInterfaces } from 'node:os';
|
|
11
|
+
import { summarizeAddress, summarizeIceCandidate } from '@dsh-remote/webrtc';
|
|
12
|
+
import { loadExternalNativeRtcFactory } from './native-rtc-helper.js';
|
|
11
13
|
let cachedFactory;
|
|
14
|
+
let cachedWerift;
|
|
15
|
+
let cachedNativeFactory;
|
|
16
|
+
/**
|
|
17
|
+
* Node RTC factory used by the Plugin/VS Code clients and Host. Native
|
|
18
|
+
* libwebrtc is preferred because its ICE behavior matches browser Remote Web;
|
|
19
|
+
* werift remains the no-native fallback for environments that cannot load it.
|
|
20
|
+
*/
|
|
21
|
+
export async function loadNodeRtcFactory(options = {}) {
|
|
22
|
+
const nativeFactory = isElectronRuntime()
|
|
23
|
+
? await loadExternalNativeRtcFactory().catch(() => undefined)
|
|
24
|
+
: await loadNativeRtcFactory().catch(() => undefined);
|
|
25
|
+
return nativeFactory ?? await loadWeriftFactory(options);
|
|
26
|
+
}
|
|
12
27
|
/** Load (once) a werift-backed factory, or `undefined` when it cannot be loaded. */
|
|
13
|
-
export async function loadWeriftFactory() {
|
|
14
|
-
|
|
28
|
+
export async function loadWeriftFactory(options = {}) {
|
|
29
|
+
const cacheable = isCacheableFactoryOptions(options);
|
|
30
|
+
if (cacheable && cachedFactory !== undefined)
|
|
15
31
|
return cachedFactory;
|
|
16
32
|
try {
|
|
17
|
-
const werift = (await import('werift'));
|
|
18
|
-
|
|
19
|
-
|
|
33
|
+
const werift = cachedWerift ?? (await import('werift'));
|
|
34
|
+
cachedWerift = werift;
|
|
35
|
+
const routeCandidates = options.preferredHostIpv4Candidates
|
|
36
|
+
?? await detectRouteHostIpv4Candidates(options.routeTargets ?? [], options.routeProbeTimeoutMs);
|
|
37
|
+
const factory = buildWeriftFactory(werift, { ...options, preferredHostIpv4Candidates: routeCandidates });
|
|
38
|
+
if (cacheable)
|
|
39
|
+
cachedFactory = factory;
|
|
40
|
+
return factory;
|
|
41
|
+
}
|
|
42
|
+
catch {
|
|
43
|
+
return undefined;
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
async function loadNativeRtcFactory() {
|
|
47
|
+
if (cachedNativeFactory !== undefined)
|
|
48
|
+
return cachedNativeFactory;
|
|
49
|
+
try {
|
|
50
|
+
const wrtc = (await import('@roamhq/wrtc'));
|
|
51
|
+
const RTCPeerConnection = wrtc.RTCPeerConnection ?? wrtc.default?.RTCPeerConnection;
|
|
52
|
+
if (RTCPeerConnection === undefined)
|
|
53
|
+
return undefined;
|
|
54
|
+
cachedNativeFactory = buildNativeRtcFactory(RTCPeerConnection);
|
|
55
|
+
return cachedNativeFactory;
|
|
20
56
|
}
|
|
21
57
|
catch {
|
|
22
58
|
return undefined;
|
|
23
59
|
}
|
|
24
60
|
}
|
|
61
|
+
function isElectronRuntime() {
|
|
62
|
+
const versions = process.versions;
|
|
63
|
+
return typeof versions.electron === 'string' || process.env.ELECTRON_RUN_AS_NODE === '1';
|
|
64
|
+
}
|
|
65
|
+
function buildNativeRtcFactory(RTCPeerConnection) {
|
|
66
|
+
return {
|
|
67
|
+
create(configuration) {
|
|
68
|
+
const raw = new RTCPeerConnection({ iceServers: configuration.iceServers });
|
|
69
|
+
return {
|
|
70
|
+
get connectionState() { return raw.connectionState; },
|
|
71
|
+
get iceConnectionState() { return raw.iceConnectionState; },
|
|
72
|
+
get iceGatheringState() { return raw.iceGatheringState; },
|
|
73
|
+
get signalingState() { return raw.signalingState; },
|
|
74
|
+
set onconnectionstatechange(value) { raw.onconnectionstatechange = value; },
|
|
75
|
+
get onconnectionstatechange() { return raw.onconnectionstatechange; },
|
|
76
|
+
set oniceconnectionstatechange(value) { raw.oniceconnectionstatechange = value; },
|
|
77
|
+
get oniceconnectionstatechange() { return raw.oniceconnectionstatechange; },
|
|
78
|
+
set onicegatheringstatechange(value) { raw.onicegatheringstatechange = value; },
|
|
79
|
+
get onicegatheringstatechange() { return raw.onicegatheringstatechange; },
|
|
80
|
+
set onicecandidate(value) {
|
|
81
|
+
raw.onicecandidate = value === null ? null : event => value({
|
|
82
|
+
candidate: event.candidate === null ? null : normalizeNativeCandidate(event.candidate),
|
|
83
|
+
});
|
|
84
|
+
},
|
|
85
|
+
get onicecandidate() { return raw.onicecandidate; },
|
|
86
|
+
set ondatachannel(value) {
|
|
87
|
+
raw.ondatachannel = value === null ? null : event => value({ channel: adaptNativeDataChannel(event.channel) });
|
|
88
|
+
},
|
|
89
|
+
get ondatachannel() { return raw.ondatachannel; },
|
|
90
|
+
createDataChannel(label, options) { return adaptNativeDataChannel(raw.createDataChannel(label, options)); },
|
|
91
|
+
createOffer() { return raw.createOffer(); },
|
|
92
|
+
createAnswer() { return raw.createAnswer(); },
|
|
93
|
+
setLocalDescription(description) { return raw.setLocalDescription(description); },
|
|
94
|
+
setRemoteDescription(description) { return raw.setRemoteDescription(description); },
|
|
95
|
+
addIceCandidate(candidate) { return raw.addIceCandidate(candidate); },
|
|
96
|
+
getStats() { return raw.getStats(); },
|
|
97
|
+
close() { raw.close(); },
|
|
98
|
+
};
|
|
99
|
+
},
|
|
100
|
+
};
|
|
101
|
+
}
|
|
25
102
|
/** Synchronous factory for tests and callers that already resolved werift. */
|
|
26
|
-
export function buildWeriftFactory(werift) {
|
|
103
|
+
export function buildWeriftFactory(werift, options = {}) {
|
|
27
104
|
return {
|
|
28
105
|
create(configuration) {
|
|
29
|
-
const
|
|
106
|
+
const hostIpv4Candidates = detectHostIpv4Candidates(options.interfaces ?? networkInterfaces(), options.preferredHostIpv4Candidates);
|
|
107
|
+
const allowedHostIpv4 = new Set(hostIpv4Candidates);
|
|
30
108
|
const raw = new werift.RTCPeerConnection({
|
|
31
|
-
iceServers: (configuration.iceServers ?? []),
|
|
109
|
+
iceServers: orderIceServersForWerift(configuration.iceServers ?? []),
|
|
110
|
+
iceUseIpv4: true,
|
|
32
111
|
iceUseIpv6: false,
|
|
33
112
|
iceUseLinkLocalAddress: false,
|
|
34
|
-
...(
|
|
113
|
+
...(hostIpv4Candidates.length === 0
|
|
114
|
+
? {}
|
|
115
|
+
: {
|
|
116
|
+
iceAdditionalHostAddresses: hostIpv4Candidates,
|
|
117
|
+
iceFilterCandidatePair: pair => {
|
|
118
|
+
const allowed = shouldUseCandidatePair(pair, allowedHostIpv4);
|
|
119
|
+
if (!allowed) {
|
|
120
|
+
configuration.onDiagnostic?.({
|
|
121
|
+
type: 'candidate-pair-filtered',
|
|
122
|
+
localCandidate: summarizeWeriftCandidate(localCandidate(pair)),
|
|
123
|
+
reason: 'local-host-not-allowed',
|
|
124
|
+
});
|
|
125
|
+
}
|
|
126
|
+
return allowed;
|
|
127
|
+
},
|
|
128
|
+
}),
|
|
35
129
|
});
|
|
36
130
|
let onIceCandidate = null;
|
|
37
131
|
let onDataChannel = null;
|
|
38
132
|
raw.onicecandidate = event => {
|
|
39
133
|
if (onIceCandidate === null)
|
|
40
134
|
return;
|
|
41
|
-
|
|
135
|
+
const candidate = event.candidate === undefined ? null : event.candidate.toJSON();
|
|
136
|
+
if (candidate !== null && !shouldAdvertiseCandidate(candidate, allowedHostIpv4)) {
|
|
137
|
+
configuration.onDiagnostic?.({
|
|
138
|
+
type: 'local-candidate-filtered',
|
|
139
|
+
candidate: summarizeIceCandidate(candidate),
|
|
140
|
+
reason: 'local-host-not-allowed',
|
|
141
|
+
});
|
|
142
|
+
return;
|
|
143
|
+
}
|
|
144
|
+
onIceCandidate({ candidate });
|
|
42
145
|
};
|
|
43
146
|
raw.ondatachannel = event => {
|
|
44
147
|
if (onDataChannel === null)
|
|
@@ -106,6 +209,34 @@ function adaptDataChannel(raw) {
|
|
|
106
209
|
close() { raw.close(); },
|
|
107
210
|
};
|
|
108
211
|
}
|
|
212
|
+
function adaptNativeDataChannel(raw) {
|
|
213
|
+
let onmessage = null;
|
|
214
|
+
return {
|
|
215
|
+
get label() { return raw.label; },
|
|
216
|
+
get ordered() { return raw.ordered; },
|
|
217
|
+
get readyState() { return raw.readyState; },
|
|
218
|
+
get bufferedAmount() { return raw.bufferedAmount; },
|
|
219
|
+
get binaryType() { return raw.binaryType; },
|
|
220
|
+
set binaryType(value) { raw.binaryType = value; },
|
|
221
|
+
set onopen(value) { raw.onopen = value; },
|
|
222
|
+
get onopen() { return raw.onopen; },
|
|
223
|
+
set onmessage(value) {
|
|
224
|
+
onmessage = value;
|
|
225
|
+
raw.onmessage = value === null ? null : event => value({ data: normalizeNativeMessageData(event.data) });
|
|
226
|
+
},
|
|
227
|
+
get onmessage() { return onmessage; },
|
|
228
|
+
set onclose(value) { raw.onclose = value; },
|
|
229
|
+
get onclose() { return raw.onclose; },
|
|
230
|
+
set onerror(value) { raw.onerror = value; },
|
|
231
|
+
get onerror() { return raw.onerror; },
|
|
232
|
+
set onbufferedamountlow(value) { raw.onbufferedamountlow = value; },
|
|
233
|
+
get onbufferedamountlow() { return raw.onbufferedamountlow; },
|
|
234
|
+
send(data) {
|
|
235
|
+
raw.send(typeof data === 'string' ? data : Buffer.from(data));
|
|
236
|
+
},
|
|
237
|
+
close() { raw.close(); },
|
|
238
|
+
};
|
|
239
|
+
}
|
|
109
240
|
function toArrayBuffer(data) {
|
|
110
241
|
if (typeof data === 'string')
|
|
111
242
|
return data;
|
|
@@ -114,38 +245,228 @@ function toArrayBuffer(data) {
|
|
|
114
245
|
// ArrayBuffer by byte offset/length is required to extract just the message.
|
|
115
246
|
return data.buffer.slice(data.byteOffset, data.byteOffset + data.byteLength);
|
|
116
247
|
}
|
|
248
|
+
function normalizeNativeCandidate(candidate) {
|
|
249
|
+
if (typeof candidate.toJSON === 'function')
|
|
250
|
+
return candidate.toJSON();
|
|
251
|
+
return {
|
|
252
|
+
candidate: candidate.candidate,
|
|
253
|
+
sdpMid: candidate.sdpMid,
|
|
254
|
+
sdpMLineIndex: candidate.sdpMLineIndex,
|
|
255
|
+
usernameFragment: candidate.usernameFragment,
|
|
256
|
+
};
|
|
257
|
+
}
|
|
258
|
+
function normalizeNativeMessageData(data) {
|
|
259
|
+
if (typeof data === 'string')
|
|
260
|
+
return data;
|
|
261
|
+
if (data instanceof ArrayBuffer)
|
|
262
|
+
return data;
|
|
263
|
+
if (ArrayBuffer.isView(data)) {
|
|
264
|
+
return data.buffer.slice(data.byteOffset, data.byteOffset + data.byteLength);
|
|
265
|
+
}
|
|
266
|
+
return new Uint8Array().buffer;
|
|
267
|
+
}
|
|
117
268
|
/**
|
|
118
|
-
* Pick the
|
|
269
|
+
* Pick the safe IPv4 host addresses for ICE gathering.
|
|
119
270
|
*
|
|
120
271
|
* On macOS a host exposes many interfaces (WiFi `en0`, Thunderbolt `en1-4`,
|
|
121
272
|
* `bridge*`, Apple Wireless Direct Link `awdl0`/`llw0`, and several VPN `utun*`
|
|
122
|
-
* tunnels whose small MTUs drop large SCTP packets).
|
|
123
|
-
*
|
|
124
|
-
*
|
|
125
|
-
* interface as the Server control connection.
|
|
273
|
+
* tunnels whose small MTUs drop large SCTP packets). Let werift/ICE compare
|
|
274
|
+
* real physical interfaces, but filter virtual and link-local Host candidates
|
|
275
|
+
* before they can become nominated paths.
|
|
126
276
|
*/
|
|
127
|
-
function
|
|
128
|
-
const
|
|
129
|
-
const
|
|
130
|
-
for (const [name, addresses] of Object.entries(
|
|
131
|
-
|
|
277
|
+
export function detectHostIpv4Candidates(interfaces, preferredHostIpv4Candidates = []) {
|
|
278
|
+
const candidates = [];
|
|
279
|
+
const routePreference = new Map(preferredHostIpv4Candidates.map((ip, index) => [ip, 10_000 - index]));
|
|
280
|
+
for (const [name, addresses] of Object.entries(interfaces)) {
|
|
281
|
+
const interfaceScore = physicalInterfaceScore(name);
|
|
282
|
+
if (interfaceScore === undefined)
|
|
132
283
|
continue;
|
|
133
284
|
for (const address of addresses ?? []) {
|
|
134
|
-
if (address.internal || address.family
|
|
285
|
+
if (address.internal || !isIpv4Family(address.family))
|
|
135
286
|
continue;
|
|
136
287
|
const ip = address.address;
|
|
137
|
-
if (
|
|
288
|
+
if (!isUsableIpv4(ip))
|
|
138
289
|
continue;
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
290
|
+
candidates.push({
|
|
291
|
+
name,
|
|
292
|
+
ip,
|
|
293
|
+
score: interfaceScore + (isPrivate(ip) ? 1_000 : 0) + (routePreference.get(ip) ?? 0),
|
|
294
|
+
});
|
|
143
295
|
}
|
|
144
296
|
}
|
|
145
|
-
|
|
297
|
+
candidates.sort((left, right) => {
|
|
298
|
+
const score = right.score - left.score;
|
|
299
|
+
if (score !== 0)
|
|
300
|
+
return score;
|
|
301
|
+
const name = left.name.localeCompare(right.name, 'en');
|
|
302
|
+
return name === 0 ? left.ip.localeCompare(right.ip, 'en', { numeric: true }) : name;
|
|
303
|
+
});
|
|
304
|
+
return [...new Set(candidates.map(candidate => candidate.ip))];
|
|
305
|
+
}
|
|
306
|
+
export async function detectRouteHostIpv4Candidates(targets, timeoutMs = 500) {
|
|
307
|
+
const detected = await Promise.all(targets.map(async (target) => {
|
|
308
|
+
const routeTarget = parseRouteTarget(target);
|
|
309
|
+
return routeTarget === undefined ? undefined : await detectRouteHostIpv4(routeTarget, timeoutMs).catch(() => undefined);
|
|
310
|
+
}));
|
|
311
|
+
return [...new Set(detected.filter((ip) => ip !== undefined && isUsableIpv4(ip)))];
|
|
312
|
+
}
|
|
313
|
+
function shouldUseCandidatePair(pair, allowedHostIpv4) {
|
|
314
|
+
if (allowedHostIpv4.size === 0)
|
|
315
|
+
return true;
|
|
316
|
+
const candidate = localCandidate(pair);
|
|
317
|
+
if (candidate === undefined)
|
|
318
|
+
return true;
|
|
319
|
+
return shouldUseLocalCandidate(candidate, allowedHostIpv4);
|
|
320
|
+
}
|
|
321
|
+
export function shouldAdvertiseCandidate(candidate, allowedHostIpv4) {
|
|
322
|
+
if (allowedHostIpv4.size === 0)
|
|
323
|
+
return true;
|
|
324
|
+
const parsed = parseIceCandidate(candidate);
|
|
325
|
+
if (parsed === undefined)
|
|
326
|
+
return true;
|
|
327
|
+
return shouldUseLocalCandidate(parsed, allowedHostIpv4);
|
|
328
|
+
}
|
|
329
|
+
function shouldUseLocalCandidate(candidate, allowedHostIpv4) {
|
|
330
|
+
if (candidate.type === 'host')
|
|
331
|
+
return candidate.host !== undefined && allowedHostIpv4.has(candidate.host);
|
|
332
|
+
if (candidate.type === 'srflx' && candidate.relatedAddress !== undefined) {
|
|
333
|
+
return allowedHostIpv4.has(candidate.relatedAddress);
|
|
334
|
+
}
|
|
335
|
+
return true;
|
|
336
|
+
}
|
|
337
|
+
function localCandidate(pair) {
|
|
338
|
+
try {
|
|
339
|
+
return pair.localCandidate;
|
|
340
|
+
}
|
|
341
|
+
catch {
|
|
342
|
+
return undefined;
|
|
343
|
+
}
|
|
344
|
+
}
|
|
345
|
+
function summarizeWeriftCandidate(candidate) {
|
|
346
|
+
if (candidate === undefined)
|
|
347
|
+
return undefined;
|
|
348
|
+
const address = summarizeAddress(candidate.host);
|
|
349
|
+
const related = summarizeAddress(candidate.relatedAddress);
|
|
350
|
+
return {
|
|
351
|
+
candidateType: candidate.type === 'host' || candidate.type === 'srflx' || candidate.type === 'prflx' || candidate.type === 'relay'
|
|
352
|
+
? candidate.type
|
|
353
|
+
: 'unknown',
|
|
354
|
+
...address,
|
|
355
|
+
...(candidate.relatedAddress === undefined
|
|
356
|
+
? {}
|
|
357
|
+
: { relatedAddressFamily: related.addressFamily, relatedAddressScope: related.addressScope }),
|
|
358
|
+
};
|
|
359
|
+
}
|
|
360
|
+
export function orderIceServersForWerift(iceServers) {
|
|
361
|
+
return iceServers.map(server => {
|
|
362
|
+
const urls = Array.isArray(server.urls) ? [...server.urls] : [server.urls];
|
|
363
|
+
urls.sort((left, right) => iceUrlScore(left) - iceUrlScore(right));
|
|
364
|
+
return { ...server, urls: Array.isArray(server.urls) ? urls : urls[0] ?? server.urls };
|
|
365
|
+
});
|
|
366
|
+
}
|
|
367
|
+
function iceUrlScore(url) {
|
|
368
|
+
const value = url.trim().toLowerCase();
|
|
369
|
+
if (value.startsWith('stun:') || value.startsWith('stuns:'))
|
|
370
|
+
return 0;
|
|
371
|
+
if (value.startsWith('turn:') && value.includes('transport=tcp'))
|
|
372
|
+
return 10;
|
|
373
|
+
if (value.startsWith('turns:') && value.includes('transport=tcp'))
|
|
374
|
+
return 20;
|
|
375
|
+
if (value.startsWith('turn:') && value.includes('transport=udp'))
|
|
376
|
+
return 30;
|
|
377
|
+
if (value.startsWith('turns:'))
|
|
378
|
+
return 40;
|
|
379
|
+
if (value.startsWith('turn:'))
|
|
380
|
+
return 50;
|
|
381
|
+
return 100;
|
|
146
382
|
}
|
|
147
|
-
function
|
|
148
|
-
|
|
383
|
+
function parseRouteTarget(value) {
|
|
384
|
+
try {
|
|
385
|
+
const url = new URL(value);
|
|
386
|
+
const port = Number(url.port || (url.protocol === 'http:' ? '80' : '443'));
|
|
387
|
+
if (!Number.isSafeInteger(port) || port <= 0 || port > 65_535 || url.hostname.length === 0)
|
|
388
|
+
return undefined;
|
|
389
|
+
return { host: url.hostname, port };
|
|
390
|
+
}
|
|
391
|
+
catch {
|
|
392
|
+
return undefined;
|
|
393
|
+
}
|
|
394
|
+
}
|
|
395
|
+
async function detectRouteHostIpv4(target, timeoutMs) {
|
|
396
|
+
const socket = createSocket('udp4');
|
|
397
|
+
try {
|
|
398
|
+
return await new Promise((resolve, reject) => {
|
|
399
|
+
const timer = setTimeout(() => {
|
|
400
|
+
cleanup();
|
|
401
|
+
resolve(undefined);
|
|
402
|
+
}, timeoutMs);
|
|
403
|
+
const cleanup = () => {
|
|
404
|
+
clearTimeout(timer);
|
|
405
|
+
socket.off('error', onError);
|
|
406
|
+
};
|
|
407
|
+
const onError = (error) => {
|
|
408
|
+
cleanup();
|
|
409
|
+
reject(error);
|
|
410
|
+
};
|
|
411
|
+
socket.once('error', onError);
|
|
412
|
+
socket.connect(target.port, target.host, () => {
|
|
413
|
+
cleanup();
|
|
414
|
+
const address = socket.address();
|
|
415
|
+
resolve(typeof address === 'string' ? undefined : address.address);
|
|
416
|
+
});
|
|
417
|
+
});
|
|
418
|
+
}
|
|
419
|
+
finally {
|
|
420
|
+
socket.close();
|
|
421
|
+
}
|
|
422
|
+
}
|
|
423
|
+
function isCacheableFactoryOptions(options) {
|
|
424
|
+
return options.interfaces === undefined
|
|
425
|
+
&& options.preferredHostIpv4Candidates === undefined
|
|
426
|
+
&& options.routeTargets === undefined;
|
|
427
|
+
}
|
|
428
|
+
function parseIceCandidate(candidate) {
|
|
429
|
+
const value = candidate.candidate?.trim();
|
|
430
|
+
if (value === undefined || value.length === 0)
|
|
431
|
+
return undefined;
|
|
432
|
+
const parts = value.replace(/^candidate:/, '').split(/\s+/);
|
|
433
|
+
const typeIndex = parts.indexOf('typ');
|
|
434
|
+
if (typeIndex < 0)
|
|
435
|
+
return undefined;
|
|
436
|
+
const host = parts[4];
|
|
437
|
+
const type = parts[typeIndex + 1];
|
|
438
|
+
const relatedAddressIndex = parts.indexOf('raddr');
|
|
439
|
+
return {
|
|
440
|
+
...(host === undefined ? {} : { host }),
|
|
441
|
+
...(type === undefined ? {} : { type }),
|
|
442
|
+
...(relatedAddressIndex < 0 || parts[relatedAddressIndex + 1] === undefined
|
|
443
|
+
? {}
|
|
444
|
+
: { relatedAddress: parts[relatedAddressIndex + 1] }),
|
|
445
|
+
};
|
|
446
|
+
}
|
|
447
|
+
function physicalInterfaceScore(name) {
|
|
448
|
+
const value = name.toLowerCase();
|
|
449
|
+
if (/^(utun|tun|tap|ppp|bridge|awdl|llw|gif|stf|anpi|ap\d|vmnet|veth|docker|br-|vboxnet|lo)/.test(value)) {
|
|
450
|
+
return undefined;
|
|
451
|
+
}
|
|
452
|
+
if (/^(eth|eno|ens|enp)/.test(value))
|
|
453
|
+
return 500;
|
|
454
|
+
if (/^(en|wlan|wl|wifi|wi-fi)/.test(value))
|
|
455
|
+
return 450;
|
|
456
|
+
return 300;
|
|
457
|
+
}
|
|
458
|
+
function isIpv4Family(family) {
|
|
459
|
+
return family === 'IPv4' || family === 4;
|
|
460
|
+
}
|
|
461
|
+
function isUsableIpv4(ip) {
|
|
462
|
+
const parts = ip.split('.').map(Number);
|
|
463
|
+
if (parts.length !== 4 || parts.some(part => !Number.isInteger(part) || part < 0 || part > 255))
|
|
464
|
+
return false;
|
|
465
|
+
if (parts[0] === 0 || parts[0] === 127 || parts[0] >= 224)
|
|
466
|
+
return false;
|
|
467
|
+
if (parts[0] === 169 && parts[1] === 254)
|
|
468
|
+
return false;
|
|
469
|
+
return !isCgnat(ip);
|
|
149
470
|
}
|
|
150
471
|
function isCgnat(ip) {
|
|
151
472
|
const parts = ip.split('.').map(Number);
|
package/dist/werift-rtc.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"werift-rtc.js","sourceRoot":"","sources":["../src/werift-rtc.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"werift-rtc.js","sourceRoot":"","sources":["../src/werift-rtc.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "ds-harness-remote",
|
|
3
|
-
"version": "0.3.
|
|
3
|
+
"version": "0.3.34",
|
|
4
4
|
"description": "DeepSeek 远程连接",
|
|
5
5
|
"repository": {
|
|
6
6
|
"type": "git",
|
|
@@ -56,6 +56,9 @@
|
|
|
56
56
|
"werift": "0.24.4",
|
|
57
57
|
"zod": "^3.24.1"
|
|
58
58
|
},
|
|
59
|
+
"optionalDependencies": {
|
|
60
|
+
"@roamhq/wrtc": "0.10.0"
|
|
61
|
+
},
|
|
59
62
|
"peerDependencies": {
|
|
60
63
|
"@deepseek-ai/cordis": ">=4.0.1 <5",
|
|
61
64
|
"@deepseek-ai/dsh-client-connection": ">=0.1.0-rc.6 <0.2.0",
|
package/public.d.ts
CHANGED