@multitapio/multitap 0.0.3 → 0.0.5
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/channel.d.ts +0 -2
- package/dist/channel.d.ts.map +1 -1
- package/dist/diagnostics.js +2 -76
- package/dist/lib.js +2 -76
- package/dist/types/channel.d.ts +0 -2
- package/dist/types/channel.d.ts.map +1 -1
- package/package.json +1 -1
- package/dist/channel.worker.d.ts +0 -3
- package/dist/channel.worker.d.ts.map +0 -1
- package/dist/types/channel.worker.d.ts +0 -3
- package/dist/types/channel.worker.d.ts.map +0 -1
- package/dist/types/webrtc-channel.d.ts +0 -79
- package/dist/types/webrtc-channel.d.ts.map +0 -1
- package/dist/webrtc-channel.d.ts +0 -79
- package/dist/webrtc-channel.d.ts.map +0 -1
package/dist/channel.d.ts
CHANGED
|
@@ -83,8 +83,6 @@ export declare class Channel implements AsyncTickLog {
|
|
|
83
83
|
sendSignedInput(payload: Uint8Array, targetTick?: number): Promise<Uint8Array>;
|
|
84
84
|
private _nextChannel;
|
|
85
85
|
private _connectLoop;
|
|
86
|
-
private _waitForIceGathering;
|
|
87
|
-
private _listenForAnswer;
|
|
88
86
|
private _handleDataChannel;
|
|
89
87
|
private _handleMessage;
|
|
90
88
|
private _dropChannel;
|
package/dist/channel.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"channel.d.ts","sourceRoot":"","sources":["../../src/channel.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"channel.d.ts","sourceRoot":"","sources":["../../src/channel.ts"],"names":[],"mappings":"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"}
|
package/dist/diagnostics.js
CHANGED
|
@@ -4163,15 +4163,11 @@ var Channel = class {
|
|
|
4163
4163
|
pc.createDataChannel("negotiation");
|
|
4164
4164
|
const offer = await pc.createOffer();
|
|
4165
4165
|
await pc.setLocalDescription(offer);
|
|
4166
|
-
await this._waitForIceGathering(pc);
|
|
4167
4166
|
const localDesc = pc.localDescription;
|
|
4168
4167
|
if (!localDesc) {
|
|
4169
4168
|
throw new Error("Failed to get local description");
|
|
4170
4169
|
}
|
|
4171
4170
|
const pubKeyHex = bytesToHex2(this.publicKey);
|
|
4172
|
-
const sseURL = `${base}/rtc/events?session=${sessionParam}&pubkey=${pubKeyHex}`;
|
|
4173
|
-
const sseController = new AbortController();
|
|
4174
|
-
const ssePromise = this._listenForAnswer(sseURL, sseController.signal);
|
|
4175
4171
|
const offerURL = `${base}/rtc/offer?session=${sessionParam}&from=${pubKeyHex}&to=relay`;
|
|
4176
4172
|
const offerResponse = await fetch(offerURL, {
|
|
4177
4173
|
method: "POST",
|
|
@@ -4182,17 +4178,12 @@ var Channel = class {
|
|
|
4182
4178
|
})
|
|
4183
4179
|
});
|
|
4184
4180
|
if (!offerResponse.ok) {
|
|
4185
|
-
sseController.abort();
|
|
4186
4181
|
throw new Error(`Offer rejected: ${offerResponse.status}`);
|
|
4187
4182
|
}
|
|
4188
|
-
const
|
|
4189
|
-
setTimeout(() => reject(new Error("SSE timeout")), this.connectionTimeoutMs);
|
|
4190
|
-
});
|
|
4191
|
-
const answerSDP = await Promise.race([ssePromise, timeoutPromise]);
|
|
4192
|
-
sseController.abort();
|
|
4183
|
+
const answerData = await offerResponse.json();
|
|
4193
4184
|
await pc.setRemoteDescription({
|
|
4194
4185
|
type: "answer",
|
|
4195
|
-
sdp:
|
|
4186
|
+
sdp: answerData.sdp
|
|
4196
4187
|
});
|
|
4197
4188
|
this.dataChannels = [];
|
|
4198
4189
|
this.replayChannels.clear();
|
|
@@ -4230,71 +4221,6 @@ var Channel = class {
|
|
|
4230
4221
|
console.log("connect loop exited");
|
|
4231
4222
|
}
|
|
4232
4223
|
}
|
|
4233
|
-
// Wait for ICE gathering to complete (with timeout)
|
|
4234
|
-
async _waitForIceGathering(pc) {
|
|
4235
|
-
if (pc.iceGatheringState === "complete") {
|
|
4236
|
-
return;
|
|
4237
|
-
}
|
|
4238
|
-
return new Promise((resolve) => {
|
|
4239
|
-
const checkState = () => {
|
|
4240
|
-
if (pc.iceGatheringState === "complete") {
|
|
4241
|
-
pc.removeEventListener("icegatheringstatechange", checkState);
|
|
4242
|
-
resolve();
|
|
4243
|
-
}
|
|
4244
|
-
};
|
|
4245
|
-
pc.addEventListener("icegatheringstatechange", checkState);
|
|
4246
|
-
setTimeout(() => {
|
|
4247
|
-
pc.removeEventListener("icegatheringstatechange", checkState);
|
|
4248
|
-
resolve();
|
|
4249
|
-
}, 5e3);
|
|
4250
|
-
});
|
|
4251
|
-
}
|
|
4252
|
-
// Listen for answer from SSE
|
|
4253
|
-
async _listenForAnswer(url, signal) {
|
|
4254
|
-
const response = await fetch(url, {
|
|
4255
|
-
headers: { Accept: "text/event-stream", "Cache-Control": "no-cache" },
|
|
4256
|
-
signal
|
|
4257
|
-
});
|
|
4258
|
-
if (!response.ok) {
|
|
4259
|
-
throw new Error(`SSE connection failed: ${response.status}`);
|
|
4260
|
-
}
|
|
4261
|
-
const reader = response.body?.getReader();
|
|
4262
|
-
if (!reader) {
|
|
4263
|
-
throw new Error("SSE response has no body");
|
|
4264
|
-
}
|
|
4265
|
-
const decoder = new TextDecoder();
|
|
4266
|
-
let buffer2 = "";
|
|
4267
|
-
let eventType = "";
|
|
4268
|
-
let eventData = "";
|
|
4269
|
-
try {
|
|
4270
|
-
while (true) {
|
|
4271
|
-
const { value, done } = await reader.read();
|
|
4272
|
-
if (done) break;
|
|
4273
|
-
buffer2 += decoder.decode(value, { stream: true });
|
|
4274
|
-
const lines = buffer2.split("\n");
|
|
4275
|
-
buffer2 = lines.pop() ?? "";
|
|
4276
|
-
for (const line of lines) {
|
|
4277
|
-
if (line.startsWith("event:")) {
|
|
4278
|
-
eventType = line.slice(6).trim();
|
|
4279
|
-
} else if (line.startsWith("data:")) {
|
|
4280
|
-
eventData = line.slice(5).trim();
|
|
4281
|
-
} else if (line === "" && eventData) {
|
|
4282
|
-
if (eventType === "answer") {
|
|
4283
|
-
const answerMsg = JSON.parse(eventData);
|
|
4284
|
-
if (answerMsg.from === "relay" && answerMsg.sdp) {
|
|
4285
|
-
return answerMsg.sdp;
|
|
4286
|
-
}
|
|
4287
|
-
}
|
|
4288
|
-
eventType = "";
|
|
4289
|
-
eventData = "";
|
|
4290
|
-
}
|
|
4291
|
-
}
|
|
4292
|
-
}
|
|
4293
|
-
} finally {
|
|
4294
|
-
reader.releaseLock();
|
|
4295
|
-
}
|
|
4296
|
-
throw new Error("SSE stream closed without receiving answer");
|
|
4297
|
-
}
|
|
4298
4224
|
_handleDataChannel(dc, generation, onFirstOpen) {
|
|
4299
4225
|
const handle = {
|
|
4300
4226
|
dc,
|
package/dist/lib.js
CHANGED
|
@@ -4300,15 +4300,11 @@ var Channel = class {
|
|
|
4300
4300
|
pc.createDataChannel("negotiation");
|
|
4301
4301
|
const offer = await pc.createOffer();
|
|
4302
4302
|
await pc.setLocalDescription(offer);
|
|
4303
|
-
await this._waitForIceGathering(pc);
|
|
4304
4303
|
const localDesc = pc.localDescription;
|
|
4305
4304
|
if (!localDesc) {
|
|
4306
4305
|
throw new Error("Failed to get local description");
|
|
4307
4306
|
}
|
|
4308
4307
|
const pubKeyHex = bytesToHex2(this.publicKey);
|
|
4309
|
-
const sseURL = `${base}/rtc/events?session=${sessionParam}&pubkey=${pubKeyHex}`;
|
|
4310
|
-
const sseController = new AbortController();
|
|
4311
|
-
const ssePromise = this._listenForAnswer(sseURL, sseController.signal);
|
|
4312
4308
|
const offerURL = `${base}/rtc/offer?session=${sessionParam}&from=${pubKeyHex}&to=relay`;
|
|
4313
4309
|
const offerResponse = await fetch(offerURL, {
|
|
4314
4310
|
method: "POST",
|
|
@@ -4319,17 +4315,12 @@ var Channel = class {
|
|
|
4319
4315
|
})
|
|
4320
4316
|
});
|
|
4321
4317
|
if (!offerResponse.ok) {
|
|
4322
|
-
sseController.abort();
|
|
4323
4318
|
throw new Error(`Offer rejected: ${offerResponse.status}`);
|
|
4324
4319
|
}
|
|
4325
|
-
const
|
|
4326
|
-
setTimeout(() => reject(new Error("SSE timeout")), this.connectionTimeoutMs);
|
|
4327
|
-
});
|
|
4328
|
-
const answerSDP = await Promise.race([ssePromise, timeoutPromise]);
|
|
4329
|
-
sseController.abort();
|
|
4320
|
+
const answerData = await offerResponse.json();
|
|
4330
4321
|
await pc.setRemoteDescription({
|
|
4331
4322
|
type: "answer",
|
|
4332
|
-
sdp:
|
|
4323
|
+
sdp: answerData.sdp
|
|
4333
4324
|
});
|
|
4334
4325
|
this.dataChannels = [];
|
|
4335
4326
|
this.replayChannels.clear();
|
|
@@ -4367,71 +4358,6 @@ var Channel = class {
|
|
|
4367
4358
|
console.log("connect loop exited");
|
|
4368
4359
|
}
|
|
4369
4360
|
}
|
|
4370
|
-
// Wait for ICE gathering to complete (with timeout)
|
|
4371
|
-
async _waitForIceGathering(pc) {
|
|
4372
|
-
if (pc.iceGatheringState === "complete") {
|
|
4373
|
-
return;
|
|
4374
|
-
}
|
|
4375
|
-
return new Promise((resolve) => {
|
|
4376
|
-
const checkState = () => {
|
|
4377
|
-
if (pc.iceGatheringState === "complete") {
|
|
4378
|
-
pc.removeEventListener("icegatheringstatechange", checkState);
|
|
4379
|
-
resolve();
|
|
4380
|
-
}
|
|
4381
|
-
};
|
|
4382
|
-
pc.addEventListener("icegatheringstatechange", checkState);
|
|
4383
|
-
setTimeout(() => {
|
|
4384
|
-
pc.removeEventListener("icegatheringstatechange", checkState);
|
|
4385
|
-
resolve();
|
|
4386
|
-
}, 5e3);
|
|
4387
|
-
});
|
|
4388
|
-
}
|
|
4389
|
-
// Listen for answer from SSE
|
|
4390
|
-
async _listenForAnswer(url, signal) {
|
|
4391
|
-
const response = await fetch(url, {
|
|
4392
|
-
headers: { Accept: "text/event-stream", "Cache-Control": "no-cache" },
|
|
4393
|
-
signal
|
|
4394
|
-
});
|
|
4395
|
-
if (!response.ok) {
|
|
4396
|
-
throw new Error(`SSE connection failed: ${response.status}`);
|
|
4397
|
-
}
|
|
4398
|
-
const reader = response.body?.getReader();
|
|
4399
|
-
if (!reader) {
|
|
4400
|
-
throw new Error("SSE response has no body");
|
|
4401
|
-
}
|
|
4402
|
-
const decoder = new TextDecoder();
|
|
4403
|
-
let buffer2 = "";
|
|
4404
|
-
let eventType = "";
|
|
4405
|
-
let eventData = "";
|
|
4406
|
-
try {
|
|
4407
|
-
while (true) {
|
|
4408
|
-
const { value, done } = await reader.read();
|
|
4409
|
-
if (done) break;
|
|
4410
|
-
buffer2 += decoder.decode(value, { stream: true });
|
|
4411
|
-
const lines = buffer2.split("\n");
|
|
4412
|
-
buffer2 = lines.pop() ?? "";
|
|
4413
|
-
for (const line of lines) {
|
|
4414
|
-
if (line.startsWith("event:")) {
|
|
4415
|
-
eventType = line.slice(6).trim();
|
|
4416
|
-
} else if (line.startsWith("data:")) {
|
|
4417
|
-
eventData = line.slice(5).trim();
|
|
4418
|
-
} else if (line === "" && eventData) {
|
|
4419
|
-
if (eventType === "answer") {
|
|
4420
|
-
const answerMsg = JSON.parse(eventData);
|
|
4421
|
-
if (answerMsg.from === "relay" && answerMsg.sdp) {
|
|
4422
|
-
return answerMsg.sdp;
|
|
4423
|
-
}
|
|
4424
|
-
}
|
|
4425
|
-
eventType = "";
|
|
4426
|
-
eventData = "";
|
|
4427
|
-
}
|
|
4428
|
-
}
|
|
4429
|
-
}
|
|
4430
|
-
} finally {
|
|
4431
|
-
reader.releaseLock();
|
|
4432
|
-
}
|
|
4433
|
-
throw new Error("SSE stream closed without receiving answer");
|
|
4434
|
-
}
|
|
4435
4361
|
_handleDataChannel(dc, generation, onFirstOpen) {
|
|
4436
4362
|
const handle = {
|
|
4437
4363
|
dc,
|
package/dist/types/channel.d.ts
CHANGED
|
@@ -83,8 +83,6 @@ export declare class Channel implements AsyncTickLog {
|
|
|
83
83
|
sendSignedInput(payload: Uint8Array, targetTick?: number): Promise<Uint8Array>;
|
|
84
84
|
private _nextChannel;
|
|
85
85
|
private _connectLoop;
|
|
86
|
-
private _waitForIceGathering;
|
|
87
|
-
private _listenForAnswer;
|
|
88
86
|
private _handleDataChannel;
|
|
89
87
|
private _handleMessage;
|
|
90
88
|
private _dropChannel;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"channel.d.ts","sourceRoot":"","sources":["../../src/channel.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"channel.d.ts","sourceRoot":"","sources":["../../src/channel.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
package/dist/channel.worker.d.ts
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"channel.worker.d.ts","sourceRoot":"","sources":["../../src/channel.worker.ts"],"names":[],"mappings":"wBAMkC,UAAU,MAAM;AAAlD,wBAAmD"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"channel.worker.d.ts","sourceRoot":"","sources":["../../src/channel.worker.ts"],"names":[],"mappings":"wBAMkC,UAAU,MAAM;AAAlD,wBAAmD"}
|
|
@@ -1,79 +0,0 @@
|
|
|
1
|
-
import type { InputData, TickMessage } from './messages';
|
|
2
|
-
import { InputGraph, type AsyncTickLog, type GetTicksAfterOptions, type Participant, type PayloadPredictor, type TickNode, type TickPrimitive } from './input-graph';
|
|
3
|
-
export type StateListener = (connected: boolean) => void;
|
|
4
|
-
export type UnsubscribeFn = () => void;
|
|
5
|
-
export interface WebRTCChannelConfig {
|
|
6
|
-
/** multitap:// connection URL (will be base64-encoded for transport) */
|
|
7
|
-
connectionURL: string;
|
|
8
|
-
privateKey?: Uint8Array;
|
|
9
|
-
relayPubKey?: Uint8Array | undefined | null;
|
|
10
|
-
inputPayloadPredictor?: PayloadPredictor | null;
|
|
11
|
-
debug?: boolean | undefined;
|
|
12
|
-
autoConnect?: boolean | undefined;
|
|
13
|
-
connectionTimeoutMs?: number | undefined;
|
|
14
|
-
logSyncTicks?: boolean | undefined;
|
|
15
|
-
}
|
|
16
|
-
export declare class WebRTCChannel implements AsyncTickLog {
|
|
17
|
-
readonly connectionURL: string;
|
|
18
|
-
readonly connectionTimeoutMs: number;
|
|
19
|
-
private privateKey;
|
|
20
|
-
private publicKey;
|
|
21
|
-
private genesisHash;
|
|
22
|
-
private sessionConfig;
|
|
23
|
-
private pc;
|
|
24
|
-
private dataChannels;
|
|
25
|
-
private replayChannels;
|
|
26
|
-
private roundRobinIndex;
|
|
27
|
-
private connectionGeneration;
|
|
28
|
-
private connected;
|
|
29
|
-
private stopped;
|
|
30
|
-
private debug;
|
|
31
|
-
private logSyncTicks;
|
|
32
|
-
private outbox;
|
|
33
|
-
private stateListeners;
|
|
34
|
-
private flushingOutbox;
|
|
35
|
-
private tickRate;
|
|
36
|
-
inputGraph: InputGraph;
|
|
37
|
-
private tickDeadlineWants;
|
|
38
|
-
private tickDeadlineTimer;
|
|
39
|
-
private tickDeadlineGrace;
|
|
40
|
-
private stats;
|
|
41
|
-
constructor(config: WebRTCChannelConfig);
|
|
42
|
-
connect(): Promise<void>;
|
|
43
|
-
getPublicKey(): Promise<Uint8Array<ArrayBufferLike>>;
|
|
44
|
-
getGenesisHash(): Promise<Uint8Array<ArrayBufferLike>>;
|
|
45
|
-
onStateChange(fn: StateListener): UnsubscribeFn;
|
|
46
|
-
getStats(): {
|
|
47
|
-
activeChannels: number;
|
|
48
|
-
totalChannels: number;
|
|
49
|
-
messagesRecv: number;
|
|
50
|
-
messagesSent: number;
|
|
51
|
-
reconnections: number;
|
|
52
|
-
};
|
|
53
|
-
getTickRate(): Promise<number>;
|
|
54
|
-
getParticipantSlots(tick: number): Promise<Participant[]>;
|
|
55
|
-
getSyncHead(): Promise<TickNode>;
|
|
56
|
-
getPredictedHead(): Promise<TickNode>;
|
|
57
|
-
addSyncTick(msg: TickMessage): Promise<void>;
|
|
58
|
-
addOptimisticInput(input: InputData, preVerifiedSigner?: Uint8Array): Promise<void>;
|
|
59
|
-
getPredictionCount(): Promise<number>;
|
|
60
|
-
getTicksAfter(nodeId: string | null, options?: GetTicksAfterOptions): Promise<TickPrimitive[]>;
|
|
61
|
-
setOnParticipantJoined(fn: (participant: Participant) => void): Promise<void>;
|
|
62
|
-
expose(port: MessagePort): Promise<void>;
|
|
63
|
-
close(): Promise<void>;
|
|
64
|
-
private _setConnected;
|
|
65
|
-
private _generateNullInput;
|
|
66
|
-
private _send;
|
|
67
|
-
sendSignedInput(payload: Uint8Array, targetTick?: number): Promise<Uint8Array>;
|
|
68
|
-
private _nextChannel;
|
|
69
|
-
private _connectLoop;
|
|
70
|
-
private _addDataChannel;
|
|
71
|
-
private _removeChannel;
|
|
72
|
-
private _handleMessage;
|
|
73
|
-
private _maybeResetDeadline;
|
|
74
|
-
private _resetDeadline;
|
|
75
|
-
private _onTickDeadlineExceeded;
|
|
76
|
-
private _flushOutbox;
|
|
77
|
-
private _cleanupConnection;
|
|
78
|
-
}
|
|
79
|
-
//# sourceMappingURL=webrtc-channel.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"webrtc-channel.d.ts","sourceRoot":"","sources":["../../src/webrtc-channel.ts"],"names":[],"mappings":"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"}
|
package/dist/webrtc-channel.d.ts
DELETED
|
@@ -1,79 +0,0 @@
|
|
|
1
|
-
import type { InputData, TickMessage } from './messages';
|
|
2
|
-
import { InputGraph, type AsyncTickLog, type GetTicksAfterOptions, type Participant, type PayloadPredictor, type TickNode, type TickPrimitive } from './input-graph';
|
|
3
|
-
export type StateListener = (connected: boolean) => void;
|
|
4
|
-
export type UnsubscribeFn = () => void;
|
|
5
|
-
export interface WebRTCChannelConfig {
|
|
6
|
-
/** multitap:// connection URL (will be base64-encoded for transport) */
|
|
7
|
-
connectionURL: string;
|
|
8
|
-
privateKey?: Uint8Array;
|
|
9
|
-
relayPubKey?: Uint8Array | undefined | null;
|
|
10
|
-
inputPayloadPredictor?: PayloadPredictor | null;
|
|
11
|
-
debug?: boolean | undefined;
|
|
12
|
-
autoConnect?: boolean | undefined;
|
|
13
|
-
connectionTimeoutMs?: number | undefined;
|
|
14
|
-
logSyncTicks?: boolean | undefined;
|
|
15
|
-
}
|
|
16
|
-
export declare class WebRTCChannel implements AsyncTickLog {
|
|
17
|
-
readonly connectionURL: string;
|
|
18
|
-
readonly connectionTimeoutMs: number;
|
|
19
|
-
private privateKey;
|
|
20
|
-
private publicKey;
|
|
21
|
-
private genesisHash;
|
|
22
|
-
private sessionConfig;
|
|
23
|
-
private pc;
|
|
24
|
-
private dataChannels;
|
|
25
|
-
private replayChannels;
|
|
26
|
-
private roundRobinIndex;
|
|
27
|
-
private connectionGeneration;
|
|
28
|
-
private connected;
|
|
29
|
-
private stopped;
|
|
30
|
-
private debug;
|
|
31
|
-
private logSyncTicks;
|
|
32
|
-
private outbox;
|
|
33
|
-
private stateListeners;
|
|
34
|
-
private flushingOutbox;
|
|
35
|
-
private tickRate;
|
|
36
|
-
inputGraph: InputGraph;
|
|
37
|
-
private tickDeadlineWants;
|
|
38
|
-
private tickDeadlineTimer;
|
|
39
|
-
private tickDeadlineGrace;
|
|
40
|
-
private stats;
|
|
41
|
-
constructor(config: WebRTCChannelConfig);
|
|
42
|
-
connect(): Promise<void>;
|
|
43
|
-
getPublicKey(): Promise<Uint8Array<ArrayBufferLike>>;
|
|
44
|
-
getGenesisHash(): Promise<Uint8Array<ArrayBufferLike>>;
|
|
45
|
-
onStateChange(fn: StateListener): UnsubscribeFn;
|
|
46
|
-
getStats(): {
|
|
47
|
-
activeChannels: number;
|
|
48
|
-
totalChannels: number;
|
|
49
|
-
messagesRecv: number;
|
|
50
|
-
messagesSent: number;
|
|
51
|
-
reconnections: number;
|
|
52
|
-
};
|
|
53
|
-
getTickRate(): Promise<number>;
|
|
54
|
-
getParticipantSlots(tick: number): Promise<Participant[]>;
|
|
55
|
-
getSyncHead(): Promise<TickNode>;
|
|
56
|
-
getPredictedHead(): Promise<TickNode>;
|
|
57
|
-
addSyncTick(msg: TickMessage): Promise<void>;
|
|
58
|
-
addOptimisticInput(input: InputData, preVerifiedSigner?: Uint8Array): Promise<void>;
|
|
59
|
-
getPredictionCount(): Promise<number>;
|
|
60
|
-
getTicksAfter(nodeId: string | null, options?: GetTicksAfterOptions): Promise<TickPrimitive[]>;
|
|
61
|
-
setOnParticipantJoined(fn: (participant: Participant) => void): Promise<void>;
|
|
62
|
-
expose(port: MessagePort): Promise<void>;
|
|
63
|
-
close(): Promise<void>;
|
|
64
|
-
private _setConnected;
|
|
65
|
-
private _generateNullInput;
|
|
66
|
-
private _send;
|
|
67
|
-
sendSignedInput(payload: Uint8Array, targetTick?: number): Promise<Uint8Array>;
|
|
68
|
-
private _nextChannel;
|
|
69
|
-
private _connectLoop;
|
|
70
|
-
private _addDataChannel;
|
|
71
|
-
private _removeChannel;
|
|
72
|
-
private _handleMessage;
|
|
73
|
-
private _maybeResetDeadline;
|
|
74
|
-
private _resetDeadline;
|
|
75
|
-
private _onTickDeadlineExceeded;
|
|
76
|
-
private _flushOutbox;
|
|
77
|
-
private _cleanupConnection;
|
|
78
|
-
}
|
|
79
|
-
//# sourceMappingURL=webrtc-channel.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"webrtc-channel.d.ts","sourceRoot":"","sources":["../../src/webrtc-channel.ts"],"names":[],"mappings":"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"}
|