@fails-components/webtransport 1.0.8 → 1.0.9
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/client.d.ts.map +1 -0
- package/dist/{main/lib → lib}/dom.d.ts +10 -2
- package/dist/lib/dom.d.ts.map +1 -0
- package/dist/lib/error.d.ts.map +1 -0
- package/dist/{main/lib → lib}/features.d.ts.map +1 -1
- package/dist/{main/lib → lib}/http2/browser/browser.d.ts +2 -0
- package/dist/lib/http2/browser/browser.d.ts.map +1 -0
- package/dist/lib/http2/browser/browserparser.d.ts.map +1 -0
- package/dist/{main/lib → lib}/http2/flowcontroller.d.ts +1 -1
- package/dist/lib/http2/flowcontroller.d.ts.map +1 -0
- package/dist/{main/lib → lib}/http2/node/capsuleparser.d.ts +1 -1
- package/dist/lib/http2/node/capsuleparser.d.ts.map +1 -0
- package/dist/{main/lib → lib}/http2/node/client.d.ts +2 -0
- package/dist/lib/http2/node/client.d.ts.map +1 -0
- package/dist/{main/test → lib/http2/node}/index.d.ts.map +1 -1
- package/dist/{main/lib → lib}/http2/node/server.d.ts +3 -0
- package/dist/lib/http2/node/server.d.ts.map +1 -0
- package/dist/{main/lib → lib}/http2/node/websocketparser.d.ts +4 -2
- package/dist/lib/http2/node/websocketparser.d.ts.map +1 -0
- package/dist/{main/lib → lib}/http2/parserbase.d.ts +26 -9
- package/dist/lib/http2/parserbase.d.ts.map +1 -0
- package/dist/lib/http2/parserbasehttp2.d.ts.map +1 -0
- package/dist/{main/lib → lib}/http2/session.d.ts +43 -6
- package/dist/lib/http2/session.d.ts.map +1 -0
- package/dist/{main/lib → lib}/http2/stream.d.ts +29 -7
- package/dist/lib/http2/stream.d.ts.map +1 -0
- package/dist/lib/http2/streamidmanager.d.ts +72 -0
- package/dist/lib/http2/streamidmanager.d.ts.map +1 -0
- package/dist/lib/http2/websocketcommon.d.ts.map +1 -0
- package/dist/lib/index.browser.d.ts.map +1 -0
- package/dist/lib/index.node.d.ts.map +1 -0
- package/dist/lib/server.d.ts.map +1 -0
- package/dist/{main/lib → lib}/session.d.ts +10 -3
- package/dist/lib/session.d.ts.map +1 -0
- package/dist/lib/stream.d.ts.map +1 -0
- package/dist/{main/lib → lib}/types.d.ts +26 -4
- package/dist/lib/types.d.ts.map +1 -0
- package/dist/lib/utils.d.ts.map +1 -0
- package/dist/lib/webstreams.browser.d.ts.map +1 -0
- package/dist/lib/webstreams.d.ts.map +1 -0
- package/dist/{main/lib → lib}/webtransport.browser.d.ts +12 -2
- package/dist/lib/webtransport.browser.d.ts.map +1 -0
- package/dist/lib/webtransport.node.d.ts.map +1 -0
- package/dist/{main/lib → lib}/webtransportbase.d.ts +14 -2
- package/dist/lib/webtransportbase.d.ts.map +1 -0
- package/lib/dom.ts +12 -2
- package/lib/http2/browser/browser.js +12 -3
- package/lib/http2/browser/browserparser.js +36 -36
- package/lib/http2/flowcontroller.js +2 -2
- package/lib/http2/node/capsuleparser.js +58 -51
- package/lib/http2/node/client.js +12 -3
- package/lib/http2/node/server.js +53 -16
- package/lib/http2/node/websocketparser.js +69 -59
- package/lib/http2/parserbase.js +87 -12
- package/lib/http2/session.js +109 -34
- package/lib/http2/stream.js +65 -10
- package/lib/http2/streamidmanager.js +316 -0
- package/lib/session.js +31 -5
- package/lib/types.ts +20 -4
- package/lib/webtransport.browser.js +14 -4
- package/lib/webtransportbase.js +14 -4
- package/package.json +1 -1
- package/readme.md +4 -3
- package/test/fixtures/certificate.js +1 -2
- package/test/fixtures/server.js +112 -7
- package/test/stream-limits.spec.js +247 -0
- package/tsconfig.json +2 -7
- package/dist/main/lib/client.d.ts.map +0 -1
- package/dist/main/lib/dom.d.ts.map +0 -1
- package/dist/main/lib/error.d.ts.map +0 -1
- package/dist/main/lib/http2/browser/browser.d.ts.map +0 -1
- package/dist/main/lib/http2/browser/browserparser.d.ts.map +0 -1
- package/dist/main/lib/http2/flowcontroller.d.ts.map +0 -1
- package/dist/main/lib/http2/node/capsuleparser.d.ts.map +0 -1
- package/dist/main/lib/http2/node/client.d.ts.map +0 -1
- package/dist/main/lib/http2/node/index.d.ts.map +0 -1
- package/dist/main/lib/http2/node/server.d.ts.map +0 -1
- package/dist/main/lib/http2/node/websocketparser.d.ts.map +0 -1
- package/dist/main/lib/http2/parserbase.d.ts.map +0 -1
- package/dist/main/lib/http2/parserbasehttp2.d.ts.map +0 -1
- package/dist/main/lib/http2/session.d.ts.map +0 -1
- package/dist/main/lib/http2/stream.d.ts.map +0 -1
- package/dist/main/lib/http2/websocketcommon.d.ts.map +0 -1
- package/dist/main/lib/index.browser.d.ts.map +0 -1
- package/dist/main/lib/index.node.d.ts.map +0 -1
- package/dist/main/lib/server.d.ts.map +0 -1
- package/dist/main/lib/session.d.ts.map +0 -1
- package/dist/main/lib/stream.d.ts.map +0 -1
- package/dist/main/lib/types.d.ts.map +0 -1
- package/dist/main/lib/utils.d.ts.map +0 -1
- package/dist/main/lib/webstreams.browser.d.ts.map +0 -1
- package/dist/main/lib/webstreams.d.ts.map +0 -1
- package/dist/main/lib/webtransport.browser.d.ts.map +0 -1
- package/dist/main/lib/webtransport.node.d.ts.map +0 -1
- package/dist/main/lib/webtransportbase.d.ts.map +0 -1
- package/dist/main/test/bidirectional-streams.spec.d.ts +0 -5
- package/dist/main/test/bidirectional-streams.spec.d.ts.map +0 -1
- package/dist/main/test/datagrams.spec.d.ts +0 -5
- package/dist/main/test/datagrams.spec.d.ts.map +0 -1
- package/dist/main/test/fixtures/certificate.d.ts +0 -21
- package/dist/main/test/fixtures/certificate.d.ts.map +0 -1
- package/dist/main/test/fixtures/chai.d.ts +0 -2
- package/dist/main/test/fixtures/chai.d.ts.map +0 -1
- package/dist/main/test/fixtures/known-bytes.d.ts +0 -8
- package/dist/main/test/fixtures/known-bytes.d.ts.map +0 -1
- package/dist/main/test/fixtures/p-timeout.d.ts +0 -8
- package/dist/main/test/fixtures/p-timeout.d.ts.map +0 -1
- package/dist/main/test/fixtures/read-cert-hash.d.ts +0 -6
- package/dist/main/test/fixtures/read-cert-hash.d.ts.map +0 -1
- package/dist/main/test/fixtures/read-stream.d.ts +0 -18
- package/dist/main/test/fixtures/read-stream.d.ts.map +0 -1
- package/dist/main/test/fixtures/reader-value.d.ts +0 -21
- package/dist/main/test/fixtures/reader-value.d.ts.map +0 -1
- package/dist/main/test/fixtures/server.d.ts +0 -5
- package/dist/main/test/fixtures/server.d.ts.map +0 -1
- package/dist/main/test/fixtures/webtransport.browser.d.ts +0 -4
- package/dist/main/test/fixtures/webtransport.browser.d.ts.map +0 -1
- package/dist/main/test/fixtures/webtransport.d.ts +0 -3
- package/dist/main/test/fixtures/webtransport.d.ts.map +0 -1
- package/dist/main/test/fixtures/write-stream.d.ts +0 -10
- package/dist/main/test/fixtures/write-stream.d.ts.map +0 -1
- package/dist/main/test/index.d.ts +0 -2
- package/dist/main/test/session.spec.d.ts +0 -5
- package/dist/main/test/session.spec.d.ts.map +0 -1
- package/dist/main/test/unidirectional-streams.spec.d.ts +0 -2
- package/dist/main/test/unidirectional-streams.spec.d.ts.map +0 -1
- package/dist/main/tsconfig.tsbuildinfo +0 -1
- package/dist/transports/http3-quiche/lib/clientsocket.d.ts +0 -19
- package/dist/transports/http3-quiche/lib/clientsocket.d.ts.map +0 -1
- package/dist/transports/http3-quiche/lib/index.d.ts +0 -11
- package/dist/transports/http3-quiche/lib/index.d.ts.map +0 -1
- package/dist/transports/http3-quiche/lib/serversocket.d.ts +0 -12
- package/dist/transports/http3-quiche/lib/serversocket.d.ts.map +0 -1
- package/dist/transports/http3-quiche/lib/socket.d.ts +0 -19
- package/dist/transports/http3-quiche/lib/socket.d.ts.map +0 -1
- package/dist/transports/http3-quiche/lib/types.d.ts +0 -21
- package/dist/transports/http3-quiche/lib/types.d.ts.map +0 -1
- package/dist/transports/http3-quiche/lib/utils.d.ts +0 -6
- package/dist/transports/http3-quiche/lib/utils.d.ts.map +0 -1
- /package/dist/{main/lib → lib}/client.d.ts +0 -0
- /package/dist/{main/lib → lib}/error.d.ts +0 -0
- /package/dist/{main/lib → lib}/features.d.ts +0 -0
- /package/dist/{main/lib → lib}/http2/browser/browserparser.d.ts +0 -0
- /package/dist/{main/lib → lib}/http2/node/index.d.ts +0 -0
- /package/dist/{main/lib → lib}/http2/parserbasehttp2.d.ts +0 -0
- /package/dist/{main/lib → lib}/http2/websocketcommon.d.ts +0 -0
- /package/dist/{main/lib → lib}/index.browser.d.ts +0 -0
- /package/dist/{main/lib → lib}/index.node.d.ts +0 -0
- /package/dist/{main/lib → lib}/server.d.ts +0 -0
- /package/dist/{main/lib → lib}/stream.d.ts +0 -0
- /package/dist/{main/lib → lib}/utils.d.ts +0 -0
- /package/dist/{main/lib → lib}/webstreams.browser.d.ts +0 -0
- /package/dist/{main/lib → lib}/webstreams.d.ts +0 -0
- /package/dist/{main/lib → lib}/webtransport.node.d.ts +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
/// <reference types="node" />
|
|
2
2
|
/// <reference types="node" />
|
|
3
|
-
import type { WebTransportSession, WebTransportHash, WebTransportOptions } from './dom';
|
|
3
|
+
import type { WebTransportSession, WebTransportHash, WebTransportOptions, WebTransportSendGroup } from './dom';
|
|
4
4
|
import type { IncomingHttpHeaders, Http2Stream } from 'http2';
|
|
5
5
|
import { ParserBase } from './http2/parserbase';
|
|
6
6
|
import { Http2WebTransportSession } from './http2/session';
|
|
@@ -12,8 +12,16 @@ export interface NativeHttpWTSession {
|
|
|
12
12
|
jsobj: WebTransportSessionEventHandler;
|
|
13
13
|
sendInitialParameters?: () => void;
|
|
14
14
|
writeDatagram: (chunk: Uint8Array) => void;
|
|
15
|
-
orderUnidiStream: (
|
|
16
|
-
|
|
15
|
+
orderUnidiStream: (opts: {
|
|
16
|
+
sendGroup: WebTransportSendGroup | null;
|
|
17
|
+
sendOrder: number;
|
|
18
|
+
waitUntilAvailable: boolean;
|
|
19
|
+
}) => boolean;
|
|
20
|
+
orderBidiStream: (opts: {
|
|
21
|
+
sendGroup: WebTransportSendGroup | null;
|
|
22
|
+
sendOrder: number;
|
|
23
|
+
waitUntilAvailable: boolean;
|
|
24
|
+
}) => boolean;
|
|
17
25
|
orderSessionStats: () => void;
|
|
18
26
|
orderDatagramStats: () => void;
|
|
19
27
|
notifySessionDraining: () => void;
|
|
@@ -45,12 +53,18 @@ export interface NativeServerOptions {
|
|
|
45
53
|
certhttp2?: string;
|
|
46
54
|
privKey: string;
|
|
47
55
|
privKeyhttp2?: string;
|
|
56
|
+
initialBidirectionalSendStreams?: number;
|
|
57
|
+
initialBidirectionalReceiveStreams?: number;
|
|
58
|
+
initialUnidirectionalSendStreams?: number;
|
|
59
|
+
initialUnidirectionalReceiveStreams?: number;
|
|
48
60
|
initialStreamFlowControlWindow?: number;
|
|
49
61
|
streamShouldAutoTuneReceiveWindow?: boolean;
|
|
50
62
|
streamFlowControlWindowSizeLimit?: number;
|
|
51
63
|
initialSessionFlowControlWindow?: number;
|
|
52
64
|
sessionShouldAutoTuneReceiveWindow?: boolean;
|
|
53
65
|
sessionFlowControlWindowSizeLimit?: number;
|
|
66
|
+
initialBidirectionalStreams?: number;
|
|
67
|
+
initialUnidirectionalStreams?: number;
|
|
54
68
|
}
|
|
55
69
|
export interface NativeClientOptions {
|
|
56
70
|
port: number;
|
|
@@ -59,6 +73,10 @@ export interface NativeClientOptions {
|
|
|
59
73
|
localPort: number;
|
|
60
74
|
allowPooling: boolean;
|
|
61
75
|
forceIpv6: boolean;
|
|
76
|
+
initialBidirectionalSendStreams?: number;
|
|
77
|
+
initialBidirectionalReceiveStreams?: number;
|
|
78
|
+
initialUnidirectionalSendStreams?: number;
|
|
79
|
+
initialUnidirectionalReceiveStreams?: number;
|
|
62
80
|
initialStreamFlowControlWindow?: number;
|
|
63
81
|
streamShouldAutoTuneReceiveWindow?: boolean;
|
|
64
82
|
streamFlowControlWindowSizeLimit?: number;
|
|
@@ -76,6 +94,10 @@ export interface FlowControlable {
|
|
|
76
94
|
}) => void;
|
|
77
95
|
smoothedRtt: () => number;
|
|
78
96
|
}
|
|
97
|
+
export interface StreamIdClient {
|
|
98
|
+
canSendMaxStreams: () => boolean;
|
|
99
|
+
sendMaxStreams: (maxStreams: bigint, unidirectional: boolean) => void;
|
|
100
|
+
}
|
|
79
101
|
export interface ReadBuffer {
|
|
80
102
|
buffer?: Uint8Array;
|
|
81
103
|
readBytes?: number;
|
|
@@ -271,7 +293,7 @@ export interface ParserWebsocketInit extends ParserInit {
|
|
|
271
293
|
ws: WebSocket;
|
|
272
294
|
}
|
|
273
295
|
export interface ReadDataInt {
|
|
274
|
-
data: Uint8Array;
|
|
296
|
+
data: Uint8Array | undefined;
|
|
275
297
|
fin: boolean;
|
|
276
298
|
}
|
|
277
299
|
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../lib/types.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../lib/utils.js"],"names":[],"mappings":"AAEA;;;GAGG;AACH,0EAiBC;AAED;;;GAGG;AACH,6BAHW,MAAM,GACJ,OAAO,SAAS,EAAE,MAAM,CAQpC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"webstreams.browser.d.ts","sourceRoot":"","sources":["../../lib/webstreams.browser.js"],"names":[],"mappings":"AAAA,6BAA6B;AAE7B,6BAFW,cAAc,CAE8B;AACvD,6BAA6B;AAE7B,6BAFW,cAAc,CAE8B"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"webstreams.d.ts","sourceRoot":"","sources":["../../lib/webstreams.js"],"names":[],"mappings":"AAKA;;;;EAAgD;AAChD;;;EAAgD"}
|
|
@@ -43,12 +43,22 @@ export class WebTransportPolyfill {
|
|
|
43
43
|
* @param {WebTransportCloseInfo} [closeinfo]
|
|
44
44
|
*/
|
|
45
45
|
close(closeinfo?: import("./dom").WebTransportCloseInfo | undefined): void;
|
|
46
|
-
|
|
47
|
-
|
|
46
|
+
/**
|
|
47
|
+
* @param {WebTransportSendStreamOptions} [opts]
|
|
48
|
+
* @returns {Promise<WebTransportBidirectionalStream>}
|
|
49
|
+
*/
|
|
50
|
+
createBidirectionalStream(opts?: import("./dom").WebTransportSendStreamOptions | undefined): Promise<WebTransportBidirectionalStream>;
|
|
51
|
+
/**
|
|
52
|
+
* @param {WebTransportSendStreamOptions} [opts]
|
|
53
|
+
* @returns {Promise<WebTransportSendStream>}
|
|
54
|
+
*/
|
|
55
|
+
createUnidirectionalStream(opts?: import("./dom").WebTransportSendStreamOptions | undefined): Promise<WebTransportSendStream>;
|
|
48
56
|
}
|
|
49
57
|
export type WebTransport = import('./dom').WebTransport;
|
|
50
58
|
export type WebTransportCloseInfo = import('./dom').WebTransportCloseInfo;
|
|
51
59
|
export type WebTransportBidirectionalStream = import('./dom').WebTransportBidirectionalStream;
|
|
60
|
+
export type WebTransportSendStream = import('./dom').WebTransportSendStream;
|
|
61
|
+
export type WebTransportSendStreamOptions = import('./dom').WebTransportSendStreamOptions;
|
|
52
62
|
export type WebTransportReceiveStream = import('./dom').WebTransportReceiveStream;
|
|
53
63
|
export type WebTransportError = import('./error').WebTransportError;
|
|
54
64
|
/**
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"webtransport.browser.d.ts","sourceRoot":"","sources":["../../lib/webtransport.browser.js"],"names":[],"mappings":"AAqDA;;;;GAIG;AACH;IAwBI,4BAA0B;CAc7B;AAED;IACE;;;OAGG;IACH,iBAHW,MAAM,0DAsLhB;IAlLC,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,CAExC;IAMf,yDAAuE;IAgBvE,yDAAuE;IAa3E,6DAeE;IAZE,iHAC4D;IAahE,8DAeE;IAZE,4GAC6D;IAcnE,uEAGC;IAED,+DAGC;IAED,oCAEC;IAED,yBAGC;IAED;;OAEG;IACH,2EAGC;IAED;;;OAGG;IACH,6FAFa,QAAQ,+BAA+B,CAAC,CAKpD;IAED;;;OAGG;IACH,8FAFa,QAAQ,sBAAsB,CAAC,CAK3C;CACF;2BA/TY,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;gCACzC,OAAO,SAAS,EAAE,iBAAiB;;;;gCAKnC,OAAO,iBAAiB,EAAE,cAAc,CAAC,CAAC,CAAC;oCAkC3C,OAAO,OAAO,EAAE,YAAY"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"webtransport.node.d.ts","sourceRoot":"","sources":["../../lib/webtransport.node.js"],"names":[],"mappings":"AAiDA;;;;GAIG;AAEH;;;GAGG;AAEH;;;;GAIG;AACH;CAuEC;oCAtFY,OAAO,OAAO,EAAE,qBAAqB;8CACrC,OAAO,OAAO,EAAE,+BAA+B;wCAC/C,OAAO,OAAO,EAAE,yBAAyB;;;;gCAKzC,OAAO,iBAAiB,EAAE,cAAc,CAAC,CAAC,CAAC;oCAI3C,OAAO,OAAO,EAAE,YAAY"}
|
|
@@ -3,6 +3,8 @@
|
|
|
3
3
|
* @typedef {import('./dom.js').WebTransportCloseInfo} WebTransportCloseInfo
|
|
4
4
|
* @typedef {import('./dom.js').WebTransportBidirectionalStream} WebTransportBidirectionalStream
|
|
5
5
|
* @typedef {import('./dom.js').WebTransportReceiveStream} WebTransportReceiveStream
|
|
6
|
+
* @typedef {import('./dom.js').WebTransportSendStream} WebTransportSendStream
|
|
7
|
+
* @typedef {import('./dom.js').WebTransportSendStreamOptions} WebTransportSendStreamOptions
|
|
6
8
|
* @typedef {import('./session.js').HttpWTSession} HttpWTSession
|
|
7
9
|
* @typedef { import('./session.js').HttpClient} HttpClient
|
|
8
10
|
*/
|
|
@@ -54,12 +56,22 @@ export class WebTransportBase implements WebTransportInterface {
|
|
|
54
56
|
* @param {WebTransportCloseInfo} [closeinfo]
|
|
55
57
|
*/
|
|
56
58
|
close(closeinfo?: import("./dom.js").WebTransportCloseInfo | undefined): void;
|
|
57
|
-
|
|
58
|
-
|
|
59
|
+
/**
|
|
60
|
+
* @param {WebTransportSendStreamOptions} [opts]
|
|
61
|
+
* @returns {Promise<WebTransportBidirectionalStream>}
|
|
62
|
+
*/
|
|
63
|
+
createBidirectionalStream(opts?: import("./dom.js").WebTransportSendStreamOptions | undefined): Promise<WebTransportBidirectionalStream>;
|
|
64
|
+
/**
|
|
65
|
+
* @param {WebTransportSendStreamOptions} [opts]
|
|
66
|
+
* @returns {Promise<WebTransportSendStream>}
|
|
67
|
+
*/
|
|
68
|
+
createUnidirectionalStream(opts?: import("./dom.js").WebTransportSendStreamOptions | undefined): Promise<WebTransportSendStream>;
|
|
59
69
|
}
|
|
60
70
|
export type WebTransportCloseInfo = import('./dom.js').WebTransportCloseInfo;
|
|
61
71
|
export type WebTransportBidirectionalStream = import('./dom.js').WebTransportBidirectionalStream;
|
|
62
72
|
export type WebTransportReceiveStream = import('./dom.js').WebTransportReceiveStream;
|
|
73
|
+
export type WebTransportSendStream = import('./dom.js').WebTransportSendStream;
|
|
74
|
+
export type WebTransportSendStreamOptions = import('./dom.js').WebTransportSendStreamOptions;
|
|
63
75
|
export type HttpWTSession = import('./session.js').HttpWTSession;
|
|
64
76
|
export type HttpClient = import('./session.js').HttpClient;
|
|
65
77
|
/**
|
|
@@ -0,0 +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;IACH,mBAJU,OAAO,YAAY,EAAE,oBAAoB,GACvC;QAAC,UAAU,EAAE,aAAa,CAAC;QAAC,MAAM,EAAE,UAAU,CAAA;KAAC,CAK1D;IAED;;;OAGG;IACH,gDAHU;QAAC,MAAM,EAAE,UAAU,CAAC;QAAC,UAAU,EAAE,aAAa,CAAC;QAAC,IAAI,EAAE,GAAG,CAAA;KAAC,QAKnE;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;oCArJY,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/lib/dom.ts
CHANGED
|
@@ -88,6 +88,16 @@ export interface WebTransportOptions {
|
|
|
88
88
|
congestionControl?: WebTransportCongestionControl
|
|
89
89
|
}
|
|
90
90
|
|
|
91
|
+
export interface WebTransportSendGroup {
|
|
92
|
+
getStats: () => Promise<WebTransportSendStreamStats>
|
|
93
|
+
}
|
|
94
|
+
|
|
95
|
+
export interface WebTransportSendStreamOptions {
|
|
96
|
+
sendGroup: WebTransportSendGroup|null
|
|
97
|
+
sendOrder?: number
|
|
98
|
+
waitUntilAvailable?: boolean
|
|
99
|
+
}
|
|
100
|
+
|
|
91
101
|
export interface WebTransportSession {
|
|
92
102
|
getStats: () => Promise<WebTransportStats>
|
|
93
103
|
readonly ready: Promise<void>
|
|
@@ -98,11 +108,11 @@ export interface WebTransportSession {
|
|
|
98
108
|
close: (closeInfo?: WebTransportCloseInfo) => void
|
|
99
109
|
readonly datagrams: WebTransportDatagramDuplexStream
|
|
100
110
|
|
|
101
|
-
createBidirectionalStream: () => Promise<WebTransportBidirectionalStream>
|
|
111
|
+
createBidirectionalStream: (opts?: WebTransportSendStreamOptions) => Promise<WebTransportBidirectionalStream>
|
|
102
112
|
/* a ReadableStream of WebTransportBidirectionalStream objects */
|
|
103
113
|
readonly incomingBidirectionalStreams: ReadableStream<WebTransportBidirectionalStream>
|
|
104
114
|
|
|
105
|
-
createUnidirectionalStream: () => Promise<WebTransportSendStream>
|
|
115
|
+
createUnidirectionalStream: (opts?: WebTransportSendStreamOptions) => Promise<WebTransportSendStream>
|
|
106
116
|
/* a ReadableStream of WebTransportReceiveStream objects */
|
|
107
117
|
readonly incomingUnidirectionalStreams: ReadableStream<WebTransportReceiveStream>
|
|
108
118
|
}
|
|
@@ -17,6 +17,11 @@ export class Http2WebTransportBrowser {
|
|
|
17
17
|
this.initialSessionFlowControlWindow =
|
|
18
18
|
args?.initialSessionFlowControlWindow || 16 * 1024 // 16 KB
|
|
19
19
|
|
|
20
|
+
this.initialBidirectionalStreams =
|
|
21
|
+
args?.initialBidirectionalSendStreams || 100
|
|
22
|
+
this.initialUnidirectionalStreams =
|
|
23
|
+
args?.initialUnidirectionalSendStreams || 100
|
|
24
|
+
|
|
20
25
|
this.streamShouldAutoTuneReceiveWindow =
|
|
21
26
|
args.streamShouldAutoTuneReceiveWindow || false
|
|
22
27
|
this.streamFlowControlWindowSizeLimit =
|
|
@@ -122,7 +127,7 @@ export class Http2WebTransportBrowser {
|
|
|
122
127
|
ws: this.clientInt,
|
|
123
128
|
nativesession,
|
|
124
129
|
isclient: true,
|
|
125
|
-
initialStreamSendWindowOffset:
|
|
130
|
+
initialStreamSendWindowOffset: 0,
|
|
126
131
|
initialStreamReceiveWindowOffset:
|
|
127
132
|
this.initialStreamFlowControlWindow,
|
|
128
133
|
streamShouldAutoTuneReceiveWindow:
|
|
@@ -200,10 +205,14 @@ export class Http2WebTransportBrowser {
|
|
|
200
205
|
})
|
|
201
206
|
return session
|
|
202
207
|
},
|
|
203
|
-
sendWindowOffset:
|
|
208
|
+
sendWindowOffset: 0,
|
|
204
209
|
receiveWindowOffset: this.sessionFlowControlWindowSizeLimit,
|
|
205
210
|
shouldAutoTuneReceiveWindow: this.sessionShouldAutoTuneReceiveWindow,
|
|
206
|
-
receiveWindowSizeLimit: this.sessionFlowControlWindowSizeLimit
|
|
211
|
+
receiveWindowSizeLimit: this.sessionFlowControlWindowSizeLimit,
|
|
212
|
+
initialBidirectionalSendStreams: this.initialBidirectionalStreams, // TODO, once supported by node, use initial settings
|
|
213
|
+
initialBidirectionalReceiveStreams: this.initialBidirectionalStreams,
|
|
214
|
+
initialUnidirectionalSendStreams: this.initialUnidirectionalStreams, // TODO, once supported by node, use initial settings
|
|
215
|
+
initialUnidirectionalReceiveStreams: this.initialUnidirectionalStreams
|
|
207
216
|
}),
|
|
208
217
|
reliable: true
|
|
209
218
|
}
|
|
@@ -116,37 +116,48 @@ export class BrowserParser extends ParserBase {
|
|
|
116
116
|
case ParserBase.WT_STOP_SENDING:
|
|
117
117
|
{
|
|
118
118
|
const streamid = readVarInt(bufferstate)
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
stream
|
|
123
|
-
|
|
124
|
-
nettask:
|
|
119
|
+
if (typeof streamid !== 'undefined') {
|
|
120
|
+
const stream = this.wtstreams.get(streamid)
|
|
121
|
+
const code = readVarInt(bufferstate)
|
|
122
|
+
if (stream && typeof code !== 'undefined') {
|
|
123
|
+
stream.onStreamSignal(
|
|
125
124
|
type === ParserBase.WT_RESET_STREAM
|
|
126
125
|
? 'resetStream'
|
|
127
126
|
: 'stopSending'
|
|
128
|
-
|
|
127
|
+
)
|
|
128
|
+
stream.jsobj.onStreamRecvSignal({
|
|
129
|
+
code: Number(code),
|
|
130
|
+
nettask:
|
|
131
|
+
type === ParserBase.WT_RESET_STREAM
|
|
132
|
+
? 'resetStream'
|
|
133
|
+
: 'stopSending'
|
|
134
|
+
})
|
|
135
|
+
}
|
|
136
|
+
}
|
|
129
137
|
}
|
|
130
138
|
break
|
|
131
139
|
case ParserBase.WT_STREAM_WOFIN:
|
|
132
140
|
case ParserBase.WT_STREAM_WFIN:
|
|
133
141
|
{
|
|
134
|
-
const streamid =
|
|
142
|
+
const streamid = readVarInt(bufferstate)
|
|
135
143
|
|
|
136
144
|
if (typeof streamid !== 'undefined') {
|
|
137
145
|
let object = this.wtstreams.get(streamid)
|
|
138
146
|
if (!object) {
|
|
139
147
|
object = this.newStream(streamid)
|
|
148
|
+
if (!object) return // stream broken
|
|
140
149
|
}
|
|
141
150
|
// TODO submit data
|
|
142
151
|
if (offsetend - bufferstate.offset >= 0) {
|
|
152
|
+
const fin = type === ParserBase.WT_STREAM_WFIN
|
|
153
|
+
if (fin) object.onFin()
|
|
143
154
|
object.recvData({
|
|
144
155
|
data: new Uint8Array(
|
|
145
156
|
bufferstate.buffer.buffer,
|
|
146
157
|
bufferstate.buffer.byteOffset + bufferstate.offset,
|
|
147
158
|
offsetend - bufferstate.offset
|
|
148
159
|
),
|
|
149
|
-
fin
|
|
160
|
+
fin
|
|
150
161
|
})
|
|
151
162
|
}
|
|
152
163
|
}
|
|
@@ -156,46 +167,35 @@ export class BrowserParser extends ParserBase {
|
|
|
156
167
|
this.onMaxData(readVarInt(bufferstate))
|
|
157
168
|
break
|
|
158
169
|
case ParserBase.WT_MAX_STREAM_DATA:
|
|
159
|
-
|
|
170
|
+
{
|
|
171
|
+
const streamid = readVarInt(bufferstate)
|
|
172
|
+
const offset = readVarInt(bufferstate)
|
|
173
|
+
if (typeof streamid !== 'undefined' && typeof offset !== 'undefined')
|
|
174
|
+
this.onMaxStreamData(streamid, offset)
|
|
175
|
+
}
|
|
160
176
|
break
|
|
161
177
|
case ParserBase.WT_MAX_STREAMS_BIDI:
|
|
162
|
-
|
|
178
|
+
this.onMaxStreamBiDi(readVarInt(bufferstate))
|
|
163
179
|
break
|
|
164
180
|
case ParserBase.WT_MAX_STREAMS_UNIDI:
|
|
165
|
-
|
|
181
|
+
this.onMaxStreamUniDi(readVarInt(bufferstate))
|
|
166
182
|
break
|
|
167
183
|
case ParserBase.WT_DATA_BLOCKED:
|
|
168
184
|
this.onDataBlocked(readVarInt(bufferstate))
|
|
169
185
|
break
|
|
170
186
|
case ParserBase.WT_STREAM_DATA_BLOCKED:
|
|
171
|
-
|
|
172
|
-
readVarInt(bufferstate)
|
|
173
|
-
readVarInt(bufferstate)
|
|
174
|
-
|
|
187
|
+
{
|
|
188
|
+
const streamid = readVarInt(bufferstate)
|
|
189
|
+
const offset = readVarInt(bufferstate)
|
|
190
|
+
if (typeof streamid !== 'undefined' && typeof offset !== 'undefined')
|
|
191
|
+
this.onStreamDataBlocked(streamid, offset)
|
|
192
|
+
}
|
|
175
193
|
break
|
|
176
194
|
case ParserBase.WT_STREAMS_BLOCKED_UNIDI:
|
|
177
|
-
|
|
178
|
-
const streamid = readVarInt(bufferstate)
|
|
179
|
-
const object = this.wtstreams.get(streamid)
|
|
180
|
-
if (object)
|
|
181
|
-
this.recvStream({
|
|
182
|
-
maxstreams: readVarInt(bufferstate),
|
|
183
|
-
type,
|
|
184
|
-
object
|
|
185
|
-
})
|
|
186
|
-
} */
|
|
195
|
+
this.onStreamsBlockedUnidi(readVarInt(bufferstate))
|
|
187
196
|
break
|
|
188
197
|
case ParserBase.WT_STREAMS_BLOCKED_BIDI:
|
|
189
|
-
|
|
190
|
-
const streamid = readVarInt(bufferstate)
|
|
191
|
-
const object = this.wtstreams.get(streamid)
|
|
192
|
-
if (object)
|
|
193
|
-
this.recvStream({
|
|
194
|
-
maxstreams: readVarInt(bufferstate),
|
|
195
|
-
type,
|
|
196
|
-
streamid
|
|
197
|
-
})
|
|
198
|
-
} */
|
|
198
|
+
this.onStreamsBlockedBidi(readVarInt(bufferstate))
|
|
199
199
|
break
|
|
200
200
|
case ParserBase.DATAGRAM:
|
|
201
201
|
this.session.jsobj.onDatagramReceived({
|
|
@@ -273,7 +273,7 @@ export class FlowController {
|
|
|
273
273
|
|
|
274
274
|
maybeSendBlocked() {
|
|
275
275
|
if (
|
|
276
|
-
this.sendWindowSize() !==
|
|
276
|
+
this.sendWindowSize() !== 0n ||
|
|
277
277
|
this.lastBlockedSendWindowOffset >= this.sendWindowOffset
|
|
278
278
|
) {
|
|
279
279
|
return
|
|
@@ -342,7 +342,7 @@ export class FlowController {
|
|
|
342
342
|
|
|
343
343
|
sendWindowSize() {
|
|
344
344
|
if (this.bytesSent > this.sendWindowOffset) {
|
|
345
|
-
return
|
|
345
|
+
return 0n
|
|
346
346
|
}
|
|
347
347
|
return this.sendWindowOffset - this.bytesSent
|
|
348
348
|
}
|
|
@@ -121,28 +121,41 @@ export class Http2CapsuleParser extends ParserBaseHttp2 {
|
|
|
121
121
|
case Http2CapsuleParser.WT_STOP_SENDING:
|
|
122
122
|
{
|
|
123
123
|
const streamid = readVarInt(bufferstate)
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
stream
|
|
128
|
-
|
|
129
|
-
nettask:
|
|
124
|
+
if (typeof streamid !== 'undefined') {
|
|
125
|
+
const stream = this.wtstreams.get(streamid)
|
|
126
|
+
const code = readVarInt(bufferstate)
|
|
127
|
+
if (stream && typeof code !== 'undefined') {
|
|
128
|
+
stream.onStreamSignal(
|
|
130
129
|
type === Http2CapsuleParser.WT_RESET_STREAM
|
|
131
130
|
? 'resetStream'
|
|
132
131
|
: 'stopSending'
|
|
133
|
-
|
|
132
|
+
)
|
|
133
|
+
stream.jsobj.onStreamRecvSignal({
|
|
134
|
+
code: Number(code),
|
|
135
|
+
nettask:
|
|
136
|
+
type === Http2CapsuleParser.WT_RESET_STREAM
|
|
137
|
+
? 'resetStream'
|
|
138
|
+
: 'stopSending'
|
|
139
|
+
})
|
|
140
|
+
}
|
|
141
|
+
}
|
|
134
142
|
}
|
|
135
143
|
break
|
|
136
144
|
case Http2CapsuleParser.WT_STREAM_WOFIN:
|
|
137
145
|
case Http2CapsuleParser.WT_STREAM_WFIN:
|
|
138
|
-
streamid =
|
|
146
|
+
streamid = readVarInt(bufferstate)
|
|
139
147
|
if (typeof streamid !== 'undefined') {
|
|
140
148
|
let object = this.wtstreams.get(streamid)
|
|
141
149
|
if (!object) {
|
|
142
150
|
object = this.newStream(streamid)
|
|
151
|
+
if (!object) return // stream broken
|
|
143
152
|
}
|
|
144
153
|
// TODO submit data
|
|
145
154
|
if (offsetend - bufferstate.offset >= 0) {
|
|
155
|
+
const fin =
|
|
156
|
+
type === Http2CapsuleParser.WT_STREAM_WFIN &&
|
|
157
|
+
bufferstate.size >= length + offsetbegin
|
|
158
|
+
if (fin) object.onFin()
|
|
146
159
|
object.recvData({
|
|
147
160
|
data:
|
|
148
161
|
offsetend - bufferstate.offset > 0
|
|
@@ -153,9 +166,7 @@ export class Http2CapsuleParser extends ParserBaseHttp2 {
|
|
|
153
166
|
offsetend - bufferstate.offset
|
|
154
167
|
)
|
|
155
168
|
: undefined,
|
|
156
|
-
fin
|
|
157
|
-
type === Http2CapsuleParser.WT_STREAM_WFIN &&
|
|
158
|
-
bufferstate.size >= length + offsetbegin
|
|
169
|
+
fin
|
|
159
170
|
})
|
|
160
171
|
}
|
|
161
172
|
}
|
|
@@ -164,49 +175,41 @@ export class Http2CapsuleParser extends ParserBaseHttp2 {
|
|
|
164
175
|
this.onMaxData(readVarInt(bufferstate))
|
|
165
176
|
break
|
|
166
177
|
case Http2CapsuleParser.WT_MAX_STREAM_DATA:
|
|
167
|
-
|
|
168
|
-
readVarInt(bufferstate)
|
|
169
|
-
readVarInt(bufferstate)
|
|
170
|
-
|
|
178
|
+
{
|
|
179
|
+
const streamid = readVarInt(bufferstate)
|
|
180
|
+
const offset = readVarInt(bufferstate)
|
|
181
|
+
if (
|
|
182
|
+
typeof streamid !== 'undefined' &&
|
|
183
|
+
typeof offset !== 'undefined'
|
|
184
|
+
)
|
|
185
|
+
this.onMaxStreamData(streamid, offset)
|
|
186
|
+
}
|
|
171
187
|
break
|
|
172
188
|
case Http2CapsuleParser.WT_MAX_STREAMS_BIDI:
|
|
173
|
-
|
|
189
|
+
this.onMaxStreamBiDi(readVarInt(bufferstate))
|
|
174
190
|
break
|
|
175
191
|
case Http2CapsuleParser.WT_MAX_STREAMS_UNIDI:
|
|
176
|
-
|
|
192
|
+
this.onMaxStreamUniDi(readVarInt(bufferstate))
|
|
177
193
|
break
|
|
178
194
|
case Http2CapsuleParser.WT_DATA_BLOCKED:
|
|
179
195
|
this.onDataBlocked(readVarInt(bufferstate))
|
|
180
196
|
break
|
|
181
197
|
case Http2CapsuleParser.WT_STREAM_DATA_BLOCKED:
|
|
182
|
-
|
|
183
|
-
readVarInt(bufferstate)
|
|
184
|
-
readVarInt(bufferstate)
|
|
185
|
-
|
|
198
|
+
{
|
|
199
|
+
const streamid = readVarInt(bufferstate)
|
|
200
|
+
const offset = readVarInt(bufferstate)
|
|
201
|
+
if (
|
|
202
|
+
typeof streamid !== 'undefined' &&
|
|
203
|
+
typeof offset !== 'undefined'
|
|
204
|
+
)
|
|
205
|
+
this.onStreamDataBlocked(streamid, offset)
|
|
206
|
+
}
|
|
186
207
|
break
|
|
187
208
|
case Http2CapsuleParser.WT_STREAMS_BLOCKED_UNIDI:
|
|
188
|
-
|
|
189
|
-
const streamid = readVarInt(bufferstate)
|
|
190
|
-
const object = this.wtstreams.get(streamid)
|
|
191
|
-
if (object)
|
|
192
|
-
this.recvStream({
|
|
193
|
-
maxstreams: readVarInt(bufferstate),
|
|
194
|
-
type,
|
|
195
|
-
object
|
|
196
|
-
})
|
|
197
|
-
} */
|
|
209
|
+
this.onStreamsBlockedUnidi(readVarInt(bufferstate))
|
|
198
210
|
break
|
|
199
211
|
case Http2CapsuleParser.WT_STREAMS_BLOCKED_BIDI:
|
|
200
|
-
|
|
201
|
-
const streamid = readVarInt(bufferstate)
|
|
202
|
-
const object = this.wtstreams.get(streamid)
|
|
203
|
-
if (object)
|
|
204
|
-
this.recvStream({
|
|
205
|
-
maxstreams: readVarInt(bufferstate),
|
|
206
|
-
type,
|
|
207
|
-
streamid
|
|
208
|
-
})
|
|
209
|
-
} */
|
|
212
|
+
this.onStreamsBlockedBidi(readVarInt(bufferstate))
|
|
210
213
|
break
|
|
211
214
|
case Http2CapsuleParser.DATAGRAM:
|
|
212
215
|
this.session.jsobj.onDatagramReceived({
|
|
@@ -241,17 +244,21 @@ export class Http2CapsuleParser extends ParserBaseHttp2 {
|
|
|
241
244
|
if (this.rstreamid) {
|
|
242
245
|
// TODO submitData
|
|
243
246
|
const object = this.wtstreams.get(this.rstreamid)
|
|
247
|
+
const fin =
|
|
248
|
+
this.rtype === Http2CapsuleParser.WT_STREAM_WFIN &&
|
|
249
|
+
this.remainlength === clength
|
|
244
250
|
// TODO submit data
|
|
245
|
-
object
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
251
|
+
if (object) {
|
|
252
|
+
if (fin) object.onFin()
|
|
253
|
+
object.recvData({
|
|
254
|
+
data: new Uint8Array(
|
|
255
|
+
bufferstate.buffer.buffer,
|
|
256
|
+
bufferstate.buffer.byteOffset + bufferstate.offset,
|
|
257
|
+
clength
|
|
258
|
+
),
|
|
259
|
+
fin
|
|
260
|
+
})
|
|
261
|
+
}
|
|
255
262
|
}
|
|
256
263
|
|
|
257
264
|
this.remainlength = this.remainlength - clength
|
package/lib/http2/node/client.js
CHANGED
|
@@ -23,6 +23,11 @@ export class Http2WebTransportClient {
|
|
|
23
23
|
this.initialSessionFlowControlWindow =
|
|
24
24
|
args?.initialSessionFlowControlWindow || 16 * 1024 // 16 KB
|
|
25
25
|
|
|
26
|
+
this.initialBidirectionalStreams =
|
|
27
|
+
args?.initialBidirectionalSendStreams || 100
|
|
28
|
+
this.initialUnidirectionalStreams =
|
|
29
|
+
args?.initialUnidirectionalSendStreams || 100
|
|
30
|
+
|
|
26
31
|
this.streamShouldAutoTuneReceiveWindow =
|
|
27
32
|
args.streamShouldAutoTuneReceiveWindow || false
|
|
28
33
|
this.streamFlowControlWindowSizeLimit =
|
|
@@ -84,8 +89,8 @@ export class Http2WebTransportClient {
|
|
|
84
89
|
0x2b61: this.initialSessionFlowControlWindow, // SETTINGS_WEBTRANSPORT_INITIAL_MAX_DATA
|
|
85
90
|
0x2b62: this.initialStreamFlowControlWindow, // SETTINGS_WEBTRANSPORT_INITIAL_MAX_STREAM_DATA_UNI
|
|
86
91
|
0x2b63: this.initialStreamFlowControlWindow, // SETTINGS_WEBTRANSPORT_INITIAL_MAX_STREAM_DATA_BIDI
|
|
87
|
-
0x2b64:
|
|
88
|
-
0x2b65:
|
|
92
|
+
0x2b64: this.initialUnidirectionalStreams, // SETTINGS_WEBTRANSPORT_INITIAL_MAX_STREAMS_UNI
|
|
93
|
+
0x2b65: this.initialBidirectionalStreams // SETTINGS_WEBTRANSPORT_INITIAL_MAX_STREAMS_BIDI
|
|
89
94
|
}
|
|
90
95
|
},
|
|
91
96
|
localPort: this.localPort,
|
|
@@ -216,13 +221,17 @@ export class Http2WebTransportClient {
|
|
|
216
221
|
stream,
|
|
217
222
|
nativesession,
|
|
218
223
|
isclient: true,
|
|
219
|
-
initialStreamSendWindowOffset: this.initialStreamFlowControlWindow,
|
|
224
|
+
initialStreamSendWindowOffset: this.initialStreamFlowControlWindow, // TODO, once supported by node, use initial settings
|
|
220
225
|
initialStreamReceiveWindowOffset:
|
|
221
226
|
this.initialStreamFlowControlWindow,
|
|
222
227
|
streamShouldAutoTuneReceiveWindow:
|
|
223
228
|
this.streamShouldAutoTuneReceiveWindow,
|
|
224
229
|
streamReceiveWindowSizeLimit: this.streamFlowControlWindowSizeLimit
|
|
225
230
|
}),
|
|
231
|
+
initialBidirectionalSendStreams: this.initialBidirectionalStreams, // TODO, once supported by node, use initial settings
|
|
232
|
+
initialBidirectionalReceiveStreams: this.initialBidirectionalStreams,
|
|
233
|
+
initialUnidirectionalSendStreams: this.initialUnidirectionalStreams, // TODO, once supported by node, use initial settings
|
|
234
|
+
initialUnidirectionalReceiveStreams: this.initialUnidirectionalStreams,
|
|
226
235
|
sendWindowOffset: this.sessionFlowControlWindowSizeLimit,
|
|
227
236
|
receiveWindowOffset: this.sessionFlowControlWindowSizeLimit,
|
|
228
237
|
shouldAutoTuneReceiveWindow: this.sessionShouldAutoTuneReceiveWindow,
|