@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 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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"}
@@ -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 timeoutPromise = new Promise((_, reject) => {
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: answerSDP
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 timeoutPromise = new Promise((_, reject) => {
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: answerSDP
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,
@@ -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
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@multitapio/multitap",
3
3
  "type": "module",
4
- "version": "0.0.3",
4
+ "version": "0.0.5",
5
5
  "description": "Rollback networking SDK for fast-paced multiplayer games",
6
6
  "main": "./dist/lib.js",
7
7
  "types": "./dist/lib.d.ts",
@@ -1,3 +0,0 @@
1
- declare const _default: new () => Worker;
2
- export default _default;
3
- //# sourceMappingURL=channel.worker.d.ts.map
@@ -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,3 +0,0 @@
1
- declare const _default: new () => Worker;
2
- export default _default;
3
- //# sourceMappingURL=channel.worker.d.ts.map
@@ -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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"}
@@ -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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"}