@fails-components/webtransport 1.1.3 → 1.2.0
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 +33 -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 +31 -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 +4 -1
- package/lib/http2/node/capsuleparser.js +4 -1
- package/lib/http2/node/client.js +38 -27
- package/lib/http2/node/server.js +56 -19
- package/lib/http2/node/websocketparser.js +5 -2
- package/lib/http2/parserbase.js +76 -7
- package/lib/http2/priorityscheduler.js +654 -0
- package/lib/http2/session.js +69 -20
- package/lib/http2/stream.js +60 -10
- package/lib/http2/websocketcommon.js +1 -1
- package/lib/server.js +0 -1
- package/lib/session.js +128 -64
- package/lib/stream.js +50 -8
- package/lib/types.ts +15 -8
- package/lib/webtransport.browser.js +77 -18
- package/lib/webtransportbase.js +7 -0
- package/old_test/echoserver.js +1 -1
- package/old_test/test.js +1 -1
- package/old_test/testsuite.js +6 -2
- package/package.json +7 -28
- package/readme.md +5 -3
- package/test/bidirectional-streams.spec.js +0 -150
- package/test/datagrams.spec.js +0 -104
- package/test/fixtures/certificate.js +0 -456
- package/test/fixtures/chai.js +0 -8
- package/test/fixtures/known-bytes.js +0 -44
- package/test/fixtures/p-timeout.js +0 -33
- package/test/fixtures/quiche.browser.js +0 -2
- package/test/fixtures/quiche.js +0 -1
- package/test/fixtures/read-cert-hash.js +0 -7
- package/test/fixtures/read-stream.js +0 -57
- package/test/fixtures/reader-value.js +0 -51
- package/test/fixtures/server.js +0 -467
- package/test/fixtures/webtransport.browser.js +0 -19
- package/test/fixtures/webtransport.js +0 -3
- package/test/fixtures/write-stream.js +0 -24
- package/test/index.js +0 -124
- package/test/pw-no-https-errors.json +0 -5
- package/test/session.spec.js +0 -199
- package/test/stream-limits.spec.js +0 -259
- package/test/unidirectional-streams.spec.js +0 -133
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,12 +85,6 @@ 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;
|
|
93
89
|
/** @type {WebTransportDatagramDuplexStream} */
|
|
94
90
|
datagrams: WebTransportDatagramDuplexStream;
|
|
@@ -119,12 +115,18 @@ export class HttpWTSession implements WebTransportSessionEventHandler, WebTransp
|
|
|
119
115
|
sendStreamsController: Set<WritableStreamDefaultController>;
|
|
120
116
|
/** @type {Set<ReadableStreamDefaultController>} */
|
|
121
117
|
receiveStreamsController: Set<ReadableStreamDefaultController>;
|
|
118
|
+
_sendGroupNum: bigint;
|
|
119
|
+
/** @type {Map<bigint,WebTransportSendGroup>} */
|
|
120
|
+
_sendGroupIndex: Map<bigint, WebTransportSendGroup>;
|
|
121
|
+
/** @type {undefined|string} */
|
|
122
|
+
_selectedProtocol: undefined | string;
|
|
122
123
|
/**
|
|
123
124
|
* @param {NativeHttpWTSession} object
|
|
124
125
|
* @param {boolean} reliable
|
|
125
126
|
*/
|
|
126
127
|
setSessionObj(object: NativeHttpWTSession, reliable: boolean): void;
|
|
127
128
|
reliable: boolean | undefined;
|
|
129
|
+
get protocol(): string | undefined;
|
|
128
130
|
getStats(): Promise<any>;
|
|
129
131
|
/**
|
|
130
132
|
* @param {SessionStatsEvent} evt
|
|
@@ -134,7 +136,6 @@ export class HttpWTSession implements WebTransportSessionEventHandler, WebTransp
|
|
|
134
136
|
* @param {DatagramStatsEvent} evt
|
|
135
137
|
*/
|
|
136
138
|
onDatagramStats({ timestamp, expiredOutgoing, lostOutgoing }: DatagramStatsEvent): void;
|
|
137
|
-
waitForDatagramsSend(): Promise<void>;
|
|
138
139
|
notifySessionDraining(): void;
|
|
139
140
|
/**
|
|
140
141
|
* @param {HttpWTStream} stream
|
|
@@ -184,7 +185,16 @@ export class HttpWTSession implements WebTransportSessionEventHandler, WebTransp
|
|
|
184
185
|
closeCode: number;
|
|
185
186
|
reason: string;
|
|
186
187
|
} | undefined): void;
|
|
187
|
-
|
|
188
|
+
/**
|
|
189
|
+
* @returns {WebTransportSendGroup}
|
|
190
|
+
*/
|
|
191
|
+
createSendGroup(): WebTransportSendGroup;
|
|
192
|
+
/**
|
|
193
|
+
* @param {{protocol?: string}} arg
|
|
194
|
+
**/
|
|
195
|
+
onReady({ protocol }: {
|
|
196
|
+
protocol?: string;
|
|
197
|
+
}): void;
|
|
188
198
|
/**
|
|
189
199
|
* @param {SessionCloseEvent} args
|
|
190
200
|
*/
|
|
@@ -197,10 +207,6 @@ export class HttpWTSession implements WebTransportSessionEventHandler, WebTransp
|
|
|
197
207
|
* @param {DatagramReceivedEvent} args
|
|
198
208
|
*/
|
|
199
209
|
onDatagramReceived(args: DatagramReceivedEvent): void;
|
|
200
|
-
/**
|
|
201
|
-
* @param {DatagramSendEvent} args
|
|
202
|
-
*/
|
|
203
|
-
onDatagramSend(args: DatagramSendEvent): void;
|
|
204
210
|
/**
|
|
205
211
|
* @param {GoawayReceivedEvent} args
|
|
206
212
|
*/
|
|
@@ -222,10 +228,6 @@ export type SessionCloseEvent = import('./types').SessionCloseEvent;
|
|
|
222
228
|
* WebTransport session events
|
|
223
229
|
*/
|
|
224
230
|
export type DatagramReceivedEvent = import('./types').DatagramReceivedEvent;
|
|
225
|
-
/**
|
|
226
|
-
* WebTransport session events
|
|
227
|
-
*/
|
|
228
|
-
export type DatagramSendEvent = import('./types').DatagramSendEvent;
|
|
229
231
|
/**
|
|
230
232
|
* WebTransport session events
|
|
231
233
|
*/
|
|
@@ -274,6 +276,10 @@ export type WebTransportReliabilityMode = import('./dom').WebTransportReliabilit
|
|
|
274
276
|
* WebTransport session events
|
|
275
277
|
*/
|
|
276
278
|
export type WebTransportCongestionControl = import('./dom').WebTransportCongestionControl;
|
|
279
|
+
/**
|
|
280
|
+
* WebTransport session events
|
|
281
|
+
*/
|
|
282
|
+
export type WebTransportSendGroup = import('./dom').WebTransportSendGroup;
|
|
277
283
|
/**
|
|
278
284
|
* WebTransport session events
|
|
279
285
|
*/
|
|
@@ -282,6 +288,14 @@ export type WebTransportStats = import('./dom').WebTransportStats;
|
|
|
282
288
|
* WebTransport session events
|
|
283
289
|
*/
|
|
284
290
|
export type WebTransportDatagramStats = import('./dom').WebTransportDatagramStats;
|
|
291
|
+
/**
|
|
292
|
+
* WebTransport session events
|
|
293
|
+
*/
|
|
294
|
+
export type WebTransportSendOptions = import('./dom').WebTransportSendOptions;
|
|
295
|
+
/**
|
|
296
|
+
* WebTransport session events
|
|
297
|
+
*/
|
|
298
|
+
export type WebTransportDatagramsWritable = import('./dom').WebTransportDatagramsWritable;
|
|
285
299
|
/**
|
|
286
300
|
* Public API
|
|
287
301
|
*/
|
|
@@ -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,0DA6OhB;IAzOC,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;IAMG,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;2BA7XY,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() {
|