@fails-components/webtransport 1.1.4 → 1.2.1
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/lib/dom.d.ts +27 -10
- package/dist/lib/dom.d.ts.map +1 -1
- package/dist/lib/http2/browser/browser.d.ts +5 -2
- package/dist/lib/http2/browser/browser.d.ts.map +1 -1
- package/dist/lib/http2/browser/browserparser.d.ts.map +1 -1
- package/dist/lib/http2/node/capsuleparser.d.ts.map +1 -1
- package/dist/lib/http2/node/client.d.ts +3 -2
- package/dist/lib/http2/node/client.d.ts.map +1 -1
- package/dist/lib/http2/node/server.d.ts +10 -5
- package/dist/lib/http2/node/server.d.ts.map +1 -1
- package/dist/lib/http2/node/websocketparser.d.ts.map +1 -1
- package/dist/lib/http2/parserbase.d.ts +38 -1
- package/dist/lib/http2/parserbase.d.ts.map +1 -1
- package/dist/lib/http2/priorityscheduler.d.ts +167 -0
- package/dist/lib/http2/priorityscheduler.d.ts.map +1 -0
- package/dist/lib/http2/session.d.ts +25 -16
- package/dist/lib/http2/session.d.ts.map +1 -1
- package/dist/lib/http2/stream.d.ts +10 -0
- package/dist/lib/http2/stream.d.ts.map +1 -1
- package/dist/lib/http2/websocketcommon.d.ts.map +1 -1
- package/dist/lib/server.d.ts.map +1 -1
- package/dist/lib/session.d.ts +32 -17
- package/dist/lib/session.d.ts.map +1 -1
- package/dist/lib/stream.d.ts +13 -0
- package/dist/lib/stream.d.ts.map +1 -1
- package/dist/lib/types.d.ts +18 -15
- package/dist/lib/types.d.ts.map +1 -1
- package/dist/lib/webtransport.browser.d.ts +3 -2
- package/dist/lib/webtransport.browser.d.ts.map +1 -1
- package/dist/lib/webtransportbase.d.ts +1 -0
- package/dist/lib/webtransportbase.d.ts.map +1 -1
- package/eslint.config.js +20 -22
- package/lib/dom.ts +31 -13
- package/lib/http2/browser/browser.js +28 -13
- package/lib/http2/browser/browserparser.js +11 -2
- package/lib/http2/node/capsuleparser.js +14 -5
- package/lib/http2/node/client.js +38 -27
- package/lib/http2/node/server.js +56 -19
- package/lib/http2/node/websocketparser.js +10 -3
- package/lib/http2/parserbase.js +84 -7
- package/lib/http2/priorityscheduler.js +654 -0
- package/lib/http2/session.js +83 -23
- package/lib/http2/stream.js +60 -10
- package/lib/http2/websocketcommon.js +1 -1
- package/lib/server.js +0 -1
- package/lib/session.js +133 -64
- package/lib/stream.js +50 -8
- package/lib/types.ts +15 -8
- package/lib/webtransport.browser.js +84 -18
- package/lib/webtransportbase.js +7 -0
- package/old_test/testsuite.js +6 -2
- package/package.json +6 -6
- package/readme.md +3 -1
package/dist/lib/session.d.ts
CHANGED
|
@@ -5,7 +5,6 @@
|
|
|
5
5
|
* @typedef {import('./types').SessionReadyEvent} SessionReadyEvent
|
|
6
6
|
* @typedef {import('./types').SessionCloseEvent} SessionCloseEvent
|
|
7
7
|
* @typedef {import('./types').DatagramReceivedEvent} DatagramReceivedEvent
|
|
8
|
-
* @typedef {import('./types').DatagramSendEvent} DatagramSendEvent
|
|
9
8
|
* @typedef {import('./types').GoawayReceivedEvent} GoawayReceivedEvent
|
|
10
9
|
* @typedef {import('./types').DatagramStatsEvent} DatagramStatsEvent
|
|
11
10
|
* @typedef {import('./types').SessionStatsEvent} SessionStatsEvent
|
|
@@ -19,8 +18,11 @@
|
|
|
19
18
|
* @typedef {import('./dom').WebTransportDatagramDuplexStream} WebTransportDatagramDuplexStream
|
|
20
19
|
* @typedef {import('./dom').WebTransportReliabilityMode} WebTransportReliabilityMode
|
|
21
20
|
* @typedef {import('./dom').WebTransportCongestionControl} WebTransportCongestionControl
|
|
21
|
+
* @typedef {import('./dom').WebTransportSendGroup} WebTransportSendGroup
|
|
22
22
|
* @typedef {import('./dom').WebTransportStats} WebTransportStats
|
|
23
23
|
* @typedef {import('./dom').WebTransportDatagramStats} WebTransportDatagramStats
|
|
24
|
+
* @typedef {import('./dom').WebTransportSendOptions} WebTransportSendOptions
|
|
25
|
+
* @typedef {import('./dom').WebTransportDatagramsWritable} WebTransportDatagramsWritable
|
|
24
26
|
*
|
|
25
27
|
* @typedef {import('./types').NativeHttpWTSession} NativeHttpWTSession
|
|
26
28
|
*
|
|
@@ -83,13 +85,8 @@ export class HttpWTSession implements WebTransportSessionEventHandler, WebTransp
|
|
|
83
85
|
/** @type {ReadableStream<WebTransportReceiveStream>} */
|
|
84
86
|
incomingUnidirectionalStreams: ReadableStream<WebTransportReceiveStream>;
|
|
85
87
|
incomUniDiController: ReadableStreamDefaultController<import("./dom").WebTransportReceiveStream>;
|
|
86
|
-
/** @type {Array<() => void>} */
|
|
87
|
-
writeDatagramRes: (() => void)[];
|
|
88
|
-
/** @type {Array<(err?: Error) => void>} */
|
|
89
|
-
writeDatagramRej: ((err?: Error) => void)[];
|
|
90
|
-
/** @type {Array<Promise<void>>} */
|
|
91
|
-
writeDatagramProm: Array<Promise<void>>;
|
|
92
88
|
incomDatagramController: import("stream/web").ReadableByteStreamController;
|
|
89
|
+
_lastGetMaxDatagramSize: number;
|
|
93
90
|
/** @type {WebTransportDatagramDuplexStream} */
|
|
94
91
|
datagrams: WebTransportDatagramDuplexStream;
|
|
95
92
|
outgoDatagramController: import("stream/web").WritableStreamDefaultController;
|
|
@@ -119,12 +116,18 @@ export class HttpWTSession implements WebTransportSessionEventHandler, WebTransp
|
|
|
119
116
|
sendStreamsController: Set<WritableStreamDefaultController>;
|
|
120
117
|
/** @type {Set<ReadableStreamDefaultController>} */
|
|
121
118
|
receiveStreamsController: Set<ReadableStreamDefaultController>;
|
|
119
|
+
_sendGroupNum: bigint;
|
|
120
|
+
/** @type {Map<bigint,WebTransportSendGroup>} */
|
|
121
|
+
_sendGroupIndex: Map<bigint, WebTransportSendGroup>;
|
|
122
|
+
/** @type {undefined|string} */
|
|
123
|
+
_selectedProtocol: undefined | string;
|
|
122
124
|
/**
|
|
123
125
|
* @param {NativeHttpWTSession} object
|
|
124
126
|
* @param {boolean} reliable
|
|
125
127
|
*/
|
|
126
128
|
setSessionObj(object: NativeHttpWTSession, reliable: boolean): void;
|
|
127
129
|
reliable: boolean | undefined;
|
|
130
|
+
get protocol(): string | undefined;
|
|
128
131
|
getStats(): Promise<any>;
|
|
129
132
|
/**
|
|
130
133
|
* @param {SessionStatsEvent} evt
|
|
@@ -134,7 +137,6 @@ export class HttpWTSession implements WebTransportSessionEventHandler, WebTransp
|
|
|
134
137
|
* @param {DatagramStatsEvent} evt
|
|
135
138
|
*/
|
|
136
139
|
onDatagramStats({ timestamp, expiredOutgoing, lostOutgoing }: DatagramStatsEvent): void;
|
|
137
|
-
waitForDatagramsSend(): Promise<void>;
|
|
138
140
|
notifySessionDraining(): void;
|
|
139
141
|
/**
|
|
140
142
|
* @param {HttpWTStream} stream
|
|
@@ -184,7 +186,16 @@ export class HttpWTSession implements WebTransportSessionEventHandler, WebTransp
|
|
|
184
186
|
closeCode: number;
|
|
185
187
|
reason: string;
|
|
186
188
|
} | undefined): void;
|
|
187
|
-
|
|
189
|
+
/**
|
|
190
|
+
* @returns {WebTransportSendGroup}
|
|
191
|
+
*/
|
|
192
|
+
createSendGroup(): WebTransportSendGroup;
|
|
193
|
+
/**
|
|
194
|
+
* @param {{protocol?: string}} arg
|
|
195
|
+
**/
|
|
196
|
+
onReady({ protocol }: {
|
|
197
|
+
protocol?: string;
|
|
198
|
+
}): void;
|
|
188
199
|
/**
|
|
189
200
|
* @param {SessionCloseEvent} args
|
|
190
201
|
*/
|
|
@@ -197,10 +208,6 @@ export class HttpWTSession implements WebTransportSessionEventHandler, WebTransp
|
|
|
197
208
|
* @param {DatagramReceivedEvent} args
|
|
198
209
|
*/
|
|
199
210
|
onDatagramReceived(args: DatagramReceivedEvent): void;
|
|
200
|
-
/**
|
|
201
|
-
* @param {DatagramSendEvent} args
|
|
202
|
-
*/
|
|
203
|
-
onDatagramSend(args: DatagramSendEvent): void;
|
|
204
211
|
/**
|
|
205
212
|
* @param {GoawayReceivedEvent} args
|
|
206
213
|
*/
|
|
@@ -222,10 +229,6 @@ export type SessionCloseEvent = import('./types').SessionCloseEvent;
|
|
|
222
229
|
* WebTransport session events
|
|
223
230
|
*/
|
|
224
231
|
export type DatagramReceivedEvent = import('./types').DatagramReceivedEvent;
|
|
225
|
-
/**
|
|
226
|
-
* WebTransport session events
|
|
227
|
-
*/
|
|
228
|
-
export type DatagramSendEvent = import('./types').DatagramSendEvent;
|
|
229
232
|
/**
|
|
230
233
|
* WebTransport session events
|
|
231
234
|
*/
|
|
@@ -274,6 +277,10 @@ export type WebTransportReliabilityMode = import('./dom').WebTransportReliabilit
|
|
|
274
277
|
* WebTransport session events
|
|
275
278
|
*/
|
|
276
279
|
export type WebTransportCongestionControl = import('./dom').WebTransportCongestionControl;
|
|
280
|
+
/**
|
|
281
|
+
* WebTransport session events
|
|
282
|
+
*/
|
|
283
|
+
export type WebTransportSendGroup = import('./dom').WebTransportSendGroup;
|
|
277
284
|
/**
|
|
278
285
|
* WebTransport session events
|
|
279
286
|
*/
|
|
@@ -282,6 +289,14 @@ export type WebTransportStats = import('./dom').WebTransportStats;
|
|
|
282
289
|
* WebTransport session events
|
|
283
290
|
*/
|
|
284
291
|
export type WebTransportDatagramStats = import('./dom').WebTransportDatagramStats;
|
|
292
|
+
/**
|
|
293
|
+
* WebTransport session events
|
|
294
|
+
*/
|
|
295
|
+
export type WebTransportSendOptions = import('./dom').WebTransportSendOptions;
|
|
296
|
+
/**
|
|
297
|
+
* WebTransport session events
|
|
298
|
+
*/
|
|
299
|
+
export type WebTransportDatagramsWritable = import('./dom').WebTransportDatagramsWritable;
|
|
285
300
|
/**
|
|
286
301
|
* Public API
|
|
287
302
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"session.d.ts","sourceRoot":"","sources":["../../lib/session.js"],"names":[],"mappings":";AASA
|
|
1
|
+
{"version":3,"file":"session.d.ts","sourceRoot":"","sources":["../../lib/session.js"],"names":[],"mappings":"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"}
|
package/dist/lib/stream.d.ts
CHANGED
|
@@ -13,6 +13,8 @@
|
|
|
13
13
|
* @typedef {import('./dom').WebTransportReceiveStream} WebTransportReceiveStream
|
|
14
14
|
* @typedef {import('./dom').WebTransportSendStream} WebTransportSendStream
|
|
15
15
|
*
|
|
16
|
+
* @typedef {import('./dom').WebTransportSendGroup} WebTransportSendGroup
|
|
17
|
+
*
|
|
16
18
|
* @typedef {import('./session').HttpWTSession} HttpWTSession
|
|
17
19
|
*
|
|
18
20
|
* @typedef {import('stream/web').WritableStreamDefaultController} WritableStreamDefaultController
|
|
@@ -25,6 +27,8 @@ export class HttpWTStream {
|
|
|
25
27
|
* @param {object} args.transport
|
|
26
28
|
* @param {boolean} args.bidirectional
|
|
27
29
|
* @param {boolean} args.incoming
|
|
30
|
+
* @param {WebTransportSendGroup|undefined} args.sendGroup
|
|
31
|
+
* @param {bigint} args.sendOrder
|
|
28
32
|
*/
|
|
29
33
|
constructor(args: {
|
|
30
34
|
object: NativeHttpWTStream;
|
|
@@ -32,6 +36,8 @@ export class HttpWTStream {
|
|
|
32
36
|
transport: object;
|
|
33
37
|
bidirectional: boolean;
|
|
34
38
|
incoming: boolean;
|
|
39
|
+
sendGroup: WebTransportSendGroup | undefined;
|
|
40
|
+
sendOrder: bigint;
|
|
35
41
|
});
|
|
36
42
|
objint: import("./types").NativeHttpWTStream;
|
|
37
43
|
parentobj: import("./session").HttpWTSession;
|
|
@@ -39,6 +45,8 @@ export class HttpWTStream {
|
|
|
39
45
|
bidirectional: boolean;
|
|
40
46
|
incoming: boolean;
|
|
41
47
|
closed: boolean;
|
|
48
|
+
_sendGroup: import("./dom").WebTransportSendGroup | undefined;
|
|
49
|
+
_sendOrder: bigint;
|
|
42
50
|
/** @type {Promise<void> | null} */
|
|
43
51
|
pendingoperation: Promise<void> | null;
|
|
44
52
|
pendingres: (() => void) | null;
|
|
@@ -68,6 +76,7 @@ export class HttpWTStream {
|
|
|
68
76
|
commitReadBuffer({ buffer, byob, drained, readBytes, fin }: ReadBuffer): {
|
|
69
77
|
stopReading: boolean;
|
|
70
78
|
};
|
|
79
|
+
updateSendOrderAndGroup(): void;
|
|
71
80
|
/**
|
|
72
81
|
* @param {import('./types').StreamRecvSignalEvent} args
|
|
73
82
|
* @returns {void}
|
|
@@ -121,6 +130,10 @@ export type WebTransportReceiveStream = import('./dom').WebTransportReceiveStrea
|
|
|
121
130
|
* WebTransport stream events
|
|
122
131
|
*/
|
|
123
132
|
export type WebTransportSendStream = import('./dom').WebTransportSendStream;
|
|
133
|
+
/**
|
|
134
|
+
* WebTransport stream events
|
|
135
|
+
*/
|
|
136
|
+
export type WebTransportSendGroup = import('./dom').WebTransportSendGroup;
|
|
124
137
|
/**
|
|
125
138
|
* WebTransport stream events
|
|
126
139
|
*/
|
package/dist/lib/stream.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"stream.d.ts","sourceRoot":"","sources":["../../lib/stream.js"],"names":[],"mappings":";AAQA
|
|
1
|
+
{"version":3,"file":"stream.d.ts","sourceRoot":"","sources":["../../lib/stream.js"],"names":[],"mappings":";AAQA;;;;;;;;;;;;;;;;;;;GAmBG;AAEH;IACE;;;;;;;;;OASG;IACH;QARoC,MAAM,EAA/B,kBAAkB;QACE,SAAS,EAA7B,aAAa;QACA,SAAS,EAAtB,MAAM;QACQ,aAAa,EAA3B,OAAO;QACO,QAAQ,EAAtB,OAAO;QAC+B,SAAS,EAA/C,qBAAqB,GAAC,SAAS;QAClB,SAAS,EAAtB,MAAM;OAqNhB;IAlNC,6CAAyB;IAEzB,6CAA+B;IAC/B,kBAA+B;IAC/B,uBAAuC;IACvC,kBAA6B;IAC7B,gBAAmB;IAEnB,8DAAgC;IAChC,mBAAgC;IAMhC,mCAAmC;IACnC,kBADW,QAAQ,IAAI,CAAC,GAAG,IAAI,CACH;IAC5B,mBA2LkB,IAAI,SA3LA;IAEtB,wCAAwC;IACxC,UADW,yBAAyB,CACvB;IACb,qCAAqC;IACrC,UADW,sBAAsB,CACpB;IAEb,mCAAmC;IACnC,sBADW,QAAQ,IAAI,CAAC,GAAG,IAAI,CACC;IAChC,mEAA0B;IAOpB,sEAAoC;IAqBlC,kBAoJU,IAAI,SApJU;IAQ1B,wBAA0B;IAkCxB,yEAAoC;IAwDlC,iBAsDQ,IAAI,SAtDW;IAyDjC,qBAAwB;IAG1B;;;OAGG;IACH,4BAHW;QAAC,QAAQ,EAAE,MAAM,CAAA;KAAC,GAChB,UAAU,CAgBtB;IAED;;OAEG;IACH,4DAFW,UAAU;;MAsCpB;IAED,gCAMC;IAED;;;OAGG;IACH,yBAHW,OAAO,SAAS,EAAE,qBAAqB,GACrC,IAAI,CAkEhB;IA5BO,oCAA0B;IA8BlC,mBAGC;IAED;;OAEG;IAEH,oBAHW,gBAAgB,QAa1B;IAED;;OAEG;IACH,4BAFW,wBAAwB,QAiDlC;IArCK,qCAA2B;CAsClC;;;;6CAtcY,OAAO,SAAS,EAAE,8BAA8B;;;;oCAChD,OAAO,SAAS,EAAE,qBAAqB;;;;8BACvC,OAAO,SAAS,EAAE,eAAe;;;;+BACjC,OAAO,SAAS,EAAE,gBAAgB;;;;uCAClC,OAAO,SAAS,EAAE,wBAAwB;;;;iCAE1C,OAAO,SAAS,EAAE,kBAAkB;;;;yBACpC,OAAO,SAAS,EAAE,UAAU;;;;wCAE5B,OAAO,OAAO,EAAE,yBAAyB;;;;qCACzC,OAAO,OAAO,EAAE,sBAAsB;;;;oCAEtC,OAAO,OAAO,EAAE,qBAAqB;;;;4BAErC,OAAO,WAAW,EAAE,aAAa;;;;8CAEjC,OAAO,YAAY,EAAE,+BAA+B"}
|
package/dist/lib/types.d.ts
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
/// <reference types="node" />
|
|
2
2
|
/// <reference types="node" />
|
|
3
|
-
|
|
3
|
+
/// <reference types="node" />
|
|
4
|
+
import type { WebTransportSession, WebTransportHash, WebTransportOptions, WebTransportSendStreamOptions } from './dom';
|
|
4
5
|
import type { IncomingHttpHeaders, Http2Stream, ServerHttp2Stream } from 'http2';
|
|
5
6
|
import { ParserBase } from './http2/parserbase';
|
|
6
7
|
import { Http2WebTransportSession } from './http2/session';
|
|
@@ -11,20 +12,16 @@ import { HttpClient } from './client';
|
|
|
11
12
|
export interface NativeHttpWTSession {
|
|
12
13
|
jsobj: WebTransportSessionEventHandler;
|
|
13
14
|
sendInitialParameters?: () => void;
|
|
14
|
-
writeDatagram: (chunk: Uint8Array) =>
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
orderBidiStream: (opts: {
|
|
21
|
-
sendGroup: WebTransportSendGroup | null;
|
|
22
|
-
sendOrder: number;
|
|
23
|
-
waitUntilAvailable: boolean;
|
|
24
|
-
}) => boolean;
|
|
15
|
+
writeDatagram: (chunk: Uint8Array) => {
|
|
16
|
+
code: 'success' | 'blocked' | 'internalError' | 'tooBig';
|
|
17
|
+
message?: string;
|
|
18
|
+
};
|
|
19
|
+
orderUnidiStream: (opts: WebTransportSendStreamOptions) => boolean;
|
|
20
|
+
orderBidiStream: (opts: WebTransportSendStreamOptions) => boolean;
|
|
25
21
|
orderSessionStats: () => void;
|
|
26
22
|
orderDatagramStats: () => void;
|
|
27
23
|
notifySessionDraining: () => void;
|
|
24
|
+
getMaxDatagramSize: () => number;
|
|
28
25
|
close: (arg: {
|
|
29
26
|
code: number;
|
|
30
27
|
reason: string;
|
|
@@ -44,6 +41,10 @@ export interface NativeHttpWTStream {
|
|
|
44
41
|
resetStream: (code: number) => void;
|
|
45
42
|
writeChunk: (buf: Uint8Array) => void;
|
|
46
43
|
streamFinal: () => void;
|
|
44
|
+
updateSendOrderAndGroup: (args: {
|
|
45
|
+
sendOrder: bigint;
|
|
46
|
+
sendGroupId: bigint;
|
|
47
|
+
}) => void;
|
|
47
48
|
}
|
|
48
49
|
export interface NativeServerOptions {
|
|
49
50
|
port: number | 443;
|
|
@@ -83,6 +84,7 @@ export interface NativeClientOptions {
|
|
|
83
84
|
initialSessionFlowControlWindow?: number;
|
|
84
85
|
sessionShouldAutoTuneReceiveWindow?: boolean;
|
|
85
86
|
sessionFlowControlWindowSizeLimit?: number;
|
|
87
|
+
protocols?: string[];
|
|
86
88
|
}
|
|
87
89
|
export interface FlowControlable {
|
|
88
90
|
sendWindowUpdate: (windowOffset: bigint) => void;
|
|
@@ -114,6 +116,7 @@ export interface NativeFinishSessionRequest {
|
|
|
114
116
|
head?: Buffer;
|
|
115
117
|
userData?: object;
|
|
116
118
|
transportPrivate?: object;
|
|
119
|
+
selectedProtocol?: string;
|
|
117
120
|
}
|
|
118
121
|
export type Purpose = 'StreamRecvSignal' | 'StreamRead' | 'StreamWrite' | 'StreamReset' | 'StreamNetworkFinish';
|
|
119
122
|
export type NetTask = 'stopSending' | 'resetStream' | 'streamFinal';
|
|
@@ -141,6 +144,7 @@ export interface WebTransportStreamEventHandler {
|
|
|
141
144
|
}
|
|
142
145
|
export interface SessionReadyEvent {
|
|
143
146
|
object: NativeHttpWTSession;
|
|
147
|
+
protocol?: string;
|
|
144
148
|
}
|
|
145
149
|
export interface SessionCloseEvent {
|
|
146
150
|
errorcode: number;
|
|
@@ -163,20 +167,19 @@ export interface DatagramStatsEvent {
|
|
|
163
167
|
export interface DatagramReceivedEvent {
|
|
164
168
|
datagram: Uint8Array;
|
|
165
169
|
}
|
|
166
|
-
export interface DatagramSendEvent {
|
|
167
|
-
}
|
|
168
170
|
export interface GoawayReceivedEvent {
|
|
169
171
|
}
|
|
170
172
|
export interface NewStreamEvent {
|
|
171
173
|
stream: NativeHttpWTStream;
|
|
172
174
|
bidirectional: boolean;
|
|
173
175
|
incoming: boolean;
|
|
176
|
+
sendGroupId?: bigint;
|
|
177
|
+
sendOrder: bigint;
|
|
174
178
|
}
|
|
175
179
|
export interface WebTransportSessionEventHandler {
|
|
176
180
|
onReady: (evt: SessionReadyEvent) => void;
|
|
177
181
|
onClose: (evt: SessionCloseEvent) => void;
|
|
178
182
|
onDatagramReceived: (evt: DatagramReceivedEvent) => void;
|
|
179
|
-
onDatagramSend: (evt: DatagramSendEvent) => void;
|
|
180
183
|
onGoAwayReceived: (evt: GoawayReceivedEvent) => void;
|
|
181
184
|
onSessionStats: (evt: SessionStatsEvent) => void;
|
|
182
185
|
onDatagramStats: (evt: DatagramStatsEvent) => void;
|
package/dist/lib/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../lib/types.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../lib/types.ts"],"names":[],"mappings":"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"}
|
|
@@ -30,7 +30,7 @@ export class WebTransportPolyfill {
|
|
|
30
30
|
/** @type {import('./dom').WebTransportDatagramDuplexStream} */
|
|
31
31
|
datagrams: import('./dom').WebTransportDatagramDuplexStream;
|
|
32
32
|
datagramsReader: ReadableStreamDefaultReader<Uint8Array>;
|
|
33
|
-
datagramsWriter:
|
|
33
|
+
datagramsWriter: any;
|
|
34
34
|
incomingBidirectionalStreams: globalThis.ReadableStream<any>;
|
|
35
35
|
incomingBidirectionalStreamsReader: ReadableStreamDefaultReader<import("./dom").WebTransportBidirectionalStream>;
|
|
36
36
|
incomingUnidirectionalStreams: globalThis.ReadableStream<any>;
|
|
@@ -38,6 +38,7 @@ export class WebTransportPolyfill {
|
|
|
38
38
|
get congestionControl(): import("./dom").WebTransportCongestionControl;
|
|
39
39
|
get reliability(): import("./dom").WebTransportReliabilityMode;
|
|
40
40
|
get supportsReliableOnly(): boolean;
|
|
41
|
+
get protocol(): string | undefined;
|
|
41
42
|
getStats(): Promise<any>;
|
|
42
43
|
/**
|
|
43
44
|
* @param {WebTransportCloseInfo} [closeinfo]
|
|
@@ -60,7 +61,7 @@ export type WebTransportBidirectionalStream = import('./dom').WebTransportBidire
|
|
|
60
61
|
export type WebTransportSendStream = import('./dom').WebTransportSendStream;
|
|
61
62
|
export type WebTransportSendStreamOptions = import('./dom').WebTransportSendStreamOptions;
|
|
62
63
|
export type WebTransportReceiveStream = import('./dom').WebTransportReceiveStream;
|
|
63
|
-
export type
|
|
64
|
+
export type WebTransportSendGroup = import('./dom').WebTransportSendGroup;
|
|
64
65
|
/**
|
|
65
66
|
* <T>
|
|
66
67
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"webtransport.browser.d.ts","sourceRoot":"","sources":["../../lib/webtransport.browser.js"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"webtransport.browser.d.ts","sourceRoot":"","sources":["../../lib/webtransport.browser.js"],"names":[],"mappings":"AAuDA;;;;GAIG;AACH;IAyBI,4BAA0B;CAe7B;AAED;IACE;;;OAGG;IACH,iBAHW,MAAM,0DAoPhB;IAhPC,gBAAuB;IACvB,kBAAqB;IACrB,uBAAyB;IACzB,2BAA8B;IAC9B,sDAAgB;IAEhB,qBAGE;IAFA,+BAAuB;IACvB,iCAAsB;IAGxB,oBAGE;IAFA,+BAAuB;IACvB,iCAAsB;IAGxB,uBAGE;IAFA,kCAA0B;IAC1B,oCAAyB;IAMzB,cAeW,YAAY,GAAC,oBAAoB,CAfW;IAoFzD,+DAA+D;IAE/D,WAFW,OAAO,OAAO,EAAE,gCAAgC,CAY1D;IAaG,yDAAuE;IA6BnE,qBAEkD;IA0C1D,6DAgBE;IAZE,iHAC4D;IAYhE,8DAgBE;IAZE,4GAC6D;IAcnE,uEAGC;IAED,+DAGC;IAED,oCAEC;IAED,mCAEC;IAED,yBAGC;IAED;;OAEG;IACH,2EAGC;IAED;;;OAGG;IACH,6FAFa,QAAQ,+BAA+B,CAAC,CAKpD;IAED;;;OAGG;IACH,8FAFa,QAAQ,sBAAsB,CAAC,CAK3C;CACF;2BApYY,OAAO,OAAO,EAAE,YAAY;oCAC5B,OAAO,OAAO,EAAE,qBAAqB;8CACrC,OAAO,OAAO,EAAE,+BAA+B;qCAC/C,OAAO,OAAO,EAAE,sBAAsB;4CACtC,OAAO,OAAO,EAAE,6BAA6B;wCAC7C,OAAO,OAAO,EAAE,yBAAyB;oCACzC,OAAO,OAAO,EAAE,qBAAqB;;;;gCAKrC,OAAO,iBAAiB,EAAE,cAAc,CAAC,CAAC,CAAC;oCAmC3C,OAAO,OAAO,EAAE,YAAY"}
|
|
@@ -66,6 +66,7 @@ export class WebTransportBase implements WebTransportInterface {
|
|
|
66
66
|
* @returns {Promise<WebTransportSendStream>}
|
|
67
67
|
*/
|
|
68
68
|
createUnidirectionalStream(opts?: import("./dom.js").WebTransportSendStreamOptions | undefined): Promise<WebTransportSendStream>;
|
|
69
|
+
get protocol(): string | undefined;
|
|
69
70
|
}
|
|
70
71
|
export type WebTransportCloseInfo = import('./dom.js').WebTransportCloseInfo;
|
|
71
72
|
export type WebTransportBidirectionalStream = import('./dom.js').WebTransportBidirectionalStream;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"webtransportbase.d.ts","sourceRoot":"","sources":["../../lib/webtransportbase.js"],"names":[],"mappings":"AAAA,8EAA8E;AAE9E;;;;;;;;GAQG;AAEH;;;GAGG;AAEH;;;;GAIG;AACH;IACE;;;OAGG;IACH,iBAHW,MAAM,6DA8BhB;IAdC,qBAA6B;IAC7B,0DAA+B;IAC/B,6BAAmC;IAEnC,+DAAqC;IAErC,4GAA2E;IAE3E,uGAC0C;IAE1C,iDAA4B;IAK9B;;;;OAIG;IAEH,mBALU,OAAO,YAAY,EAAE,oBAAoB,GACvC;QAAC,UAAU,EAAE,aAAa,CAAC;QAAC,MAAM,EAAE,UAAU,CAAA;KAAC,CAM1D;IAED;;;OAGG;IAEH,gDAJU;QAAC,MAAM,EAAE,UAAU,CAAC;QAAC,UAAU,EAAE,aAAa,CAAC;QAAC,IAAI,EAAE,GAAG,CAAA;KAAC,QAMnE;IAED,kEAQC;IAED,0EAQC;IAED,oCAIC;IAED,yBAQC;IAED;;OAEG;IACH,8EASC;IAED;;;OAGG;IACH,gGAFa,QAAQ,+BAA+B,CAAC,CAWpD;IAED;;;OAGG;IACH,iGAFa,QAAQ,sBAAsB,CAAC,CAW3C;CACF;
|
|
1
|
+
{"version":3,"file":"webtransportbase.d.ts","sourceRoot":"","sources":["../../lib/webtransportbase.js"],"names":[],"mappings":"AAAA,8EAA8E;AAE9E;;;;;;;;GAQG;AAEH;;;GAGG;AAEH;;;;GAIG;AACH;IACE;;;OAGG;IACH,iBAHW,MAAM,6DA8BhB;IAdC,qBAA6B;IAC7B,0DAA+B;IAC/B,6BAAmC;IAEnC,+DAAqC;IAErC,4GAA2E;IAE3E,uGAC0C;IAE1C,iDAA4B;IAK9B;;;;OAIG;IAEH,mBALU,OAAO,YAAY,EAAE,oBAAoB,GACvC;QAAC,UAAU,EAAE,aAAa,CAAC;QAAC,MAAM,EAAE,UAAU,CAAA;KAAC,CAM1D;IAED;;;OAGG;IAEH,gDAJU;QAAC,MAAM,EAAE,UAAU,CAAC;QAAC,UAAU,EAAE,aAAa,CAAC;QAAC,IAAI,EAAE,GAAG,CAAA;KAAC,QAMnE;IAED,kEAQC;IAED,0EAQC;IAED,oCAIC;IAED,yBAQC;IAED;;OAEG;IACH,8EASC;IAED;;;OAGG;IACH,gGAFa,QAAQ,+BAA+B,CAAC,CAWpD;IAED;;;OAGG;IACH,iGAFa,QAAQ,sBAAsB,CAAC,CAW3C;IAED,mCAKC;CACF;oCA9JY,OAAO,UAAU,EAAE,qBAAqB;8CACxC,OAAO,UAAU,EAAE,+BAA+B;wCAClD,OAAO,UAAU,EAAE,yBAAyB;qCAC5C,OAAO,UAAU,EAAE,sBAAsB;4CACzC,OAAO,UAAU,EAAE,6BAA6B;4BAChD,OAAO,cAAc,EAAE,aAAa;yBACnC,OAAO,cAAc,EAAE,UAAU;;;;gCAKlC,OAAO,iBAAiB,EAAE,cAAc,CAAC,CAAC,CAAC;oCAI3C,OAAO,UAAU,EAAE,YAAY"}
|
package/eslint.config.js
CHANGED
|
@@ -1,9 +1,8 @@
|
|
|
1
|
-
|
|
2
|
-
import
|
|
3
|
-
import
|
|
4
|
-
import babelParser from "@babel/eslint-parser"
|
|
1
|
+
import js from '@eslint/js'
|
|
2
|
+
import promise from 'eslint-plugin-promise'
|
|
3
|
+
import babelParser from '@babel/eslint-parser'
|
|
5
4
|
import eslintPluginPrettierRecommended from 'eslint-plugin-prettier/recommended'
|
|
6
|
-
import globals from
|
|
5
|
+
import globals from 'globals'
|
|
7
6
|
|
|
8
7
|
export default [
|
|
9
8
|
js.configs.recommended,
|
|
@@ -15,7 +14,6 @@ export default [
|
|
|
15
14
|
languageOptions: {
|
|
16
15
|
globals: {
|
|
17
16
|
...globals.node
|
|
18
|
-
|
|
19
17
|
},
|
|
20
18
|
parser: babelParser,
|
|
21
19
|
ecmaVersion: 2020,
|
|
@@ -24,28 +22,28 @@ export default [
|
|
|
24
22
|
legacyDecorators: true,
|
|
25
23
|
jsx: true
|
|
26
24
|
},
|
|
27
|
-
requireConfigFile: false
|
|
25
|
+
requireConfigFile: false
|
|
28
26
|
}
|
|
29
27
|
},
|
|
30
28
|
ignores: [
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
29
|
+
'build/*',
|
|
30
|
+
'dist/*',
|
|
31
|
+
'node_modules/*',
|
|
32
|
+
'.snapshots/*',
|
|
33
|
+
'*.min.js'
|
|
36
34
|
],
|
|
37
35
|
rules: {
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
}
|
|
36
|
+
'space-before-function-paren': 0,
|
|
37
|
+
'import/export': 0,
|
|
38
|
+
'promise/catch-or-return': 'error',
|
|
39
|
+
'no-useless-return': 1,
|
|
40
|
+
camelcase: 1
|
|
41
|
+
}
|
|
44
42
|
},
|
|
45
43
|
{
|
|
46
|
-
files: [
|
|
44
|
+
files: ['test/*.spec.js'],
|
|
47
45
|
rules: {
|
|
48
|
-
|
|
46
|
+
'no-undef': 0
|
|
49
47
|
}
|
|
50
|
-
}
|
|
51
|
-
]
|
|
48
|
+
}
|
|
49
|
+
]
|
package/lib/dom.ts
CHANGED
|
@@ -24,30 +24,44 @@ export interface WebTransportStats {
|
|
|
24
24
|
datagrams: WebTransportDatagramStats
|
|
25
25
|
}
|
|
26
26
|
|
|
27
|
+
export interface WebTransportSendStreamStats {
|
|
28
|
+
bytesWritten: bigint
|
|
29
|
+
bytesSent: bigint
|
|
30
|
+
bytesAcknowledged: bigint
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
export interface WebTransportSendGroup {
|
|
34
|
+
getStats: () => Promise<WebTransportSendStreamStats>
|
|
35
|
+
}
|
|
36
|
+
|
|
27
37
|
export interface WebTransportCloseInfo {
|
|
28
38
|
closeCode: number
|
|
29
39
|
reason: string
|
|
30
40
|
}
|
|
31
41
|
|
|
42
|
+
export interface WebTransportDatagramsWritable extends WritableStream {
|
|
43
|
+
sendGroup?: WebTransportSendGroup;
|
|
44
|
+
sendOrder: bigint;
|
|
45
|
+
};
|
|
46
|
+
|
|
47
|
+
export interface WebTransportSendOptions {
|
|
48
|
+
sendGroup?: WebTransportSendGroup;
|
|
49
|
+
sendOrder: number;
|
|
50
|
+
};
|
|
51
|
+
|
|
32
52
|
export interface WebTransportDatagramDuplexStream {
|
|
53
|
+
createWritable: (options?: WebTransportSendOptions) => WebTransportDatagramsWritable;
|
|
33
54
|
readable: ReadableStream<Uint8Array>
|
|
34
|
-
|
|
35
|
-
// readonly maxDatagramSize: number
|
|
55
|
+
readonly maxDatagramSize: number
|
|
36
56
|
// incomingMaxAge?: number
|
|
37
57
|
// outgoingMaxAge?: number
|
|
38
58
|
// incomingHighWaterMark: number
|
|
39
59
|
// outgoingHighWaterMark: number
|
|
40
60
|
}
|
|
41
61
|
|
|
42
|
-
|
|
43
|
-
export interface WebTransportSendStreamStats {
|
|
44
|
-
timestamp: number
|
|
45
|
-
bytesWritten: bigint
|
|
46
|
-
bytesSent: bigint
|
|
47
|
-
bytesAcknowledged: bigint
|
|
48
|
-
}
|
|
49
|
-
|
|
50
62
|
export interface WebTransportSendStream extends WritableStream<Uint8Array> {
|
|
63
|
+
sendGroup?: WebTransportSendGroup;
|
|
64
|
+
sendOrder: bigint;
|
|
51
65
|
getStats: () => Promise<WebTransportSendStreamStats>
|
|
52
66
|
}
|
|
53
67
|
|
|
@@ -86,15 +100,18 @@ export interface WebTransportOptions {
|
|
|
86
100
|
*/
|
|
87
101
|
webTransportConnectTimeout?: number
|
|
88
102
|
congestionControl?: WebTransportCongestionControl
|
|
103
|
+
protocols?: string[]
|
|
89
104
|
}
|
|
90
105
|
|
|
91
|
-
export interface
|
|
92
|
-
|
|
106
|
+
export interface WebTransportSendStreamStats {
|
|
107
|
+
bytesWritten: bigint;
|
|
108
|
+
bytesSent: bigint;
|
|
109
|
+
bytesAcknowledged: bigint;
|
|
93
110
|
}
|
|
94
111
|
|
|
95
112
|
export interface WebTransportSendStreamOptions {
|
|
96
113
|
sendGroup: WebTransportSendGroup|null
|
|
97
|
-
sendOrder?:
|
|
114
|
+
sendOrder?: bigint
|
|
98
115
|
waitUntilAvailable?: boolean
|
|
99
116
|
}
|
|
100
117
|
|
|
@@ -119,6 +136,7 @@ export interface WebTransportSession {
|
|
|
119
136
|
|
|
120
137
|
export interface WebTransport extends WebTransportSession {
|
|
121
138
|
readonly supportsReliableOnly: boolean
|
|
139
|
+
readonly protocol: string | undefined
|
|
122
140
|
}
|
|
123
141
|
|
|
124
142
|
export type WebTransportReliabilityMode = 'pending' | 'reliable-only' | 'supports-unreliable'
|
|
@@ -12,6 +12,7 @@ export class Http2WebTransportBrowser {
|
|
|
12
12
|
constructor(args) {
|
|
13
13
|
this.port = args?.port || 443
|
|
14
14
|
this.hostname = args?.host || 'localhost'
|
|
15
|
+
this.protocols = args?.protocols || []
|
|
15
16
|
this.initialStreamFlowControlWindow =
|
|
16
17
|
args?.initialStreamFlowControlWindow || 16 * 1024 // 16 KB
|
|
17
18
|
this.initialSessionFlowControlWindow =
|
|
@@ -23,12 +24,12 @@ export class Http2WebTransportBrowser {
|
|
|
23
24
|
args?.initialUnidirectionalSendStreams || 100
|
|
24
25
|
|
|
25
26
|
this.streamShouldAutoTuneReceiveWindow =
|
|
26
|
-
args.streamShouldAutoTuneReceiveWindow ||
|
|
27
|
+
args.streamShouldAutoTuneReceiveWindow || true
|
|
27
28
|
this.streamFlowControlWindowSizeLimit =
|
|
28
29
|
args?.streamFlowControlWindowSizeLimit || 6 * 1024 * 1024
|
|
29
30
|
|
|
30
31
|
this.sessionShouldAutoTuneReceiveWindow =
|
|
31
|
-
args.sessionShouldAutoTuneReceiveWindow ||
|
|
32
|
+
args.sessionShouldAutoTuneReceiveWindow || true
|
|
32
33
|
this.sessionFlowControlWindowSizeLimit =
|
|
33
34
|
args?.sessionFlowControlWindowSizeLimit || 15 * 1024 * 1024
|
|
34
35
|
/** @type {import('../../session.js').HttpClient} */
|
|
@@ -37,6 +38,8 @@ export class Http2WebTransportBrowser {
|
|
|
37
38
|
/** @type {WebSocket} */
|
|
38
39
|
// @ts-ignore
|
|
39
40
|
this.clientInt = undefined
|
|
41
|
+
/** @type {undefined|string} */
|
|
42
|
+
this._webtransportProtocol = undefined
|
|
40
43
|
}
|
|
41
44
|
|
|
42
45
|
/**
|
|
@@ -46,13 +49,18 @@ export class Http2WebTransportBrowser {
|
|
|
46
49
|
try {
|
|
47
50
|
let url = 'wss://' + this.hostname + ':' + this.port
|
|
48
51
|
if (path) url = url + '/' + path
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
supportedVersions.map(
|
|
53
|
-
(/** @type {string} */ el) => 'webtransport_' + el
|
|
54
|
-
)
|
|
52
|
+
|
|
53
|
+
let protocols = supportedVersions.map(
|
|
54
|
+
(/** @type {string} */ el) => 'webtransport_' + el
|
|
55
55
|
)
|
|
56
|
+
if (this.protocols.length > 0) {
|
|
57
|
+
protocols = protocols
|
|
58
|
+
.filter((el) => el !== 'kDraft1')
|
|
59
|
+
.map((el) => this.protocols.map((el2) => el + '_' + el2))
|
|
60
|
+
.flat(1)
|
|
61
|
+
}
|
|
62
|
+
// eslint-disable-next-line no-undef
|
|
63
|
+
this.clientInt = new WebSocket(url, protocols)
|
|
56
64
|
} catch (error) {
|
|
57
65
|
log('Failed on WebTransport/Websocket:', error)
|
|
58
66
|
this.jsobj.onClientConnected({
|
|
@@ -73,7 +81,7 @@ export class Http2WebTransportBrowser {
|
|
|
73
81
|
}
|
|
74
82
|
const aprotocol = protocol.split('_')
|
|
75
83
|
if (
|
|
76
|
-
aprotocol.length
|
|
84
|
+
!(aprotocol.length === 2 || aprotocol.length >= 3) ||
|
|
77
85
|
aprotocol[0] !== 'webtransport' ||
|
|
78
86
|
!supportedVersions.includes(aprotocol[1])
|
|
79
87
|
) {
|
|
@@ -82,7 +90,13 @@ export class Http2WebTransportBrowser {
|
|
|
82
90
|
success: false
|
|
83
91
|
})
|
|
84
92
|
} else {
|
|
85
|
-
this.
|
|
93
|
+
this._webtransportProtocol =
|
|
94
|
+
aprotocol.length >= 3 ? aprotocol.slice(2).join('_') : undefined
|
|
95
|
+
this.jsobj.onClientWebTransportSupport(
|
|
96
|
+
aprotocol.length >= 3
|
|
97
|
+
? { selectedProtocol: aprotocol.slice(2).join('_') }
|
|
98
|
+
: {}
|
|
99
|
+
)
|
|
86
100
|
this.jsobj.onClientConnected({
|
|
87
101
|
success: true
|
|
88
102
|
})
|
|
@@ -208,7 +222,7 @@ export class Http2WebTransportBrowser {
|
|
|
208
222
|
return session
|
|
209
223
|
},
|
|
210
224
|
sendWindowOffset: 0,
|
|
211
|
-
receiveWindowOffset: this.
|
|
225
|
+
receiveWindowOffset: this.initialSessionFlowControlWindow,
|
|
212
226
|
shouldAutoTuneReceiveWindow: this.sessionShouldAutoTuneReceiveWindow,
|
|
213
227
|
receiveWindowSizeLimit: this.sessionFlowControlWindowSizeLimit,
|
|
214
228
|
initialBidirectionalSendStreams: this.initialBidirectionalStreams, // TODO, once supported by node, use initial settings
|
|
@@ -219,9 +233,10 @@ export class Http2WebTransportBrowser {
|
|
|
219
233
|
reliable: true
|
|
220
234
|
}
|
|
221
235
|
this.jsobj.onHttpWTSessionVisitor(retObj)
|
|
222
|
-
|
|
223
236
|
// @ts-ignore
|
|
224
|
-
sessobj.jsobj.onReady(
|
|
237
|
+
sessobj.jsobj.onReady(
|
|
238
|
+
this._webtransportProtocol ? { protocol: this._webtransportProtocol } : {}
|
|
239
|
+
)
|
|
225
240
|
}
|
|
226
241
|
|
|
227
242
|
closeClient() {
|