@fails-components/webtransport 0.3.1 → 1.0.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/lib/client.js +81 -40
- package/lib/dom.ts +7 -5
- package/lib/http2/browser/browser.js +168 -0
- package/lib/http2/browser/browserparser.js +248 -0
- package/lib/http2/flowcontroller.js +371 -0
- package/lib/http2/node/capsuleparser.js +291 -0
- package/lib/http2/node/client.js +239 -0
- package/lib/http2/node/index.js +2 -0
- package/lib/http2/node/server.js +499 -0
- package/lib/http2/node/websocketparser.js +829 -0
- package/lib/http2/parserbase.js +139 -0
- package/lib/http2/parserbasehttp2.js +128 -0
- package/lib/http2/session.js +225 -0
- package/lib/http2/stream.js +354 -0
- package/lib/http2/websocketcommon.js +1 -0
- package/lib/{index.js → index.browser.js} +6 -10
- package/lib/index.node.js +27 -0
- package/lib/server.js +252 -69
- package/lib/session.js +31 -68
- package/lib/stream.js +103 -179
- package/lib/types.ts +174 -87
- package/lib/utils.js +2 -1
- package/lib/webstreams.browser.js +6 -0
- package/lib/webstreams.js +7 -0
- package/lib/webtransport.browser.js +284 -0
- package/lib/webtransport.node.js +137 -0
- package/lib/{webtransport.js → webtransportbase.js} +47 -41
- package/old_test/test.js +31 -29
- package/old_test/testsuite.js +1 -1
- package/package.json +18 -17
- package/readme.md +94 -30
- package/test/bidirectional-streams.spec.js +51 -9
- package/test/datagrams.spec.js +8 -2
- package/test/fixtures/known-bytes.js +29 -0
- package/test/fixtures/read-stream.js +1 -1
- package/test/fixtures/reader-value.js +1 -1
- package/test/fixtures/server.js +24 -10
- package/test/fixtures/webtransport.browser.js +20 -2
- package/test/fixtures/webtransport.js +1 -1
- package/test/index.js +33 -6
- package/test/pw-no-https-errors.json +5 -0
- package/test/session.spec.js +71 -52
- package/test/unidirectional-streams.spec.js +20 -4
- package/CMakeLists.txt +0 -991
- package/LICENSE.chromium +0 -27
- package/LICENSE.envoy +0 -207
- package/build.js +0 -313
- package/dist/lib/client.d.ts +0 -78
- package/dist/lib/client.d.ts.map +0 -1
- package/dist/lib/dom.d.ts +0 -87
- package/dist/lib/dom.d.ts.map +0 -1
- package/dist/lib/error.d.ts +0 -8
- package/dist/lib/error.d.ts.map +0 -1
- package/dist/lib/event-loop.d.ts +0 -33
- package/dist/lib/event-loop.d.ts.map +0 -1
- package/dist/lib/index.d.ts +0 -79
- package/dist/lib/index.d.ts.map +0 -1
- package/dist/lib/native.d.ts +0 -2
- package/dist/lib/native.d.ts.map +0 -1
- package/dist/lib/server.d.ts +0 -92
- package/dist/lib/server.d.ts.map +0 -1
- package/dist/lib/session.d.ts +0 -298
- package/dist/lib/session.d.ts.map +0 -1
- package/dist/lib/stream.d.ts +0 -135
- package/dist/lib/stream.d.ts.map +0 -1
- package/dist/lib/transport.d.ts +0 -34
- package/dist/lib/transport.d.ts.map +0 -1
- package/dist/lib/types.d.ts +0 -212
- package/dist/lib/types.d.ts.map +0 -1
- package/dist/lib/utils.d.ts +0 -11
- package/dist/lib/utils.d.ts.map +0 -1
- package/dist/lib/webtransport.d.ts +0 -47
- package/dist/lib/webtransport.d.ts.map +0 -1
- package/dist/test/bidirectional-streams.spec.d.ts +0 -5
- package/dist/test/bidirectional-streams.spec.d.ts.map +0 -1
- package/dist/test/datagrams.spec.d.ts +0 -5
- package/dist/test/datagrams.spec.d.ts.map +0 -1
- package/dist/test/event-loop.node.d.ts +0 -2
- package/dist/test/event-loop.node.d.ts.map +0 -1
- package/dist/test/fixtures/certificate.d.ts +0 -21
- package/dist/test/fixtures/certificate.d.ts.map +0 -1
- package/dist/test/fixtures/chai.d.ts +0 -2
- package/dist/test/fixtures/chai.d.ts.map +0 -1
- package/dist/test/fixtures/known-bytes.d.ts +0 -6
- package/dist/test/fixtures/known-bytes.d.ts.map +0 -1
- package/dist/test/fixtures/p-timeout.d.ts +0 -8
- package/dist/test/fixtures/p-timeout.d.ts.map +0 -1
- package/dist/test/fixtures/read-cert-hash.d.ts +0 -6
- package/dist/test/fixtures/read-cert-hash.d.ts.map +0 -1
- package/dist/test/fixtures/read-stream.d.ts +0 -19
- package/dist/test/fixtures/read-stream.d.ts.map +0 -1
- package/dist/test/fixtures/reader-value.d.ts +0 -22
- package/dist/test/fixtures/reader-value.d.ts.map +0 -1
- package/dist/test/fixtures/server.d.ts +0 -5
- package/dist/test/fixtures/server.d.ts.map +0 -1
- package/dist/test/fixtures/webtransport.browser.d.ts +0 -3
- package/dist/test/fixtures/webtransport.browser.d.ts.map +0 -1
- package/dist/test/fixtures/webtransport.d.ts +0 -3
- package/dist/test/fixtures/webtransport.d.ts.map +0 -1
- package/dist/test/fixtures/write-stream.d.ts +0 -10
- package/dist/test/fixtures/write-stream.d.ts.map +0 -1
- package/dist/test/index.d.ts +0 -2
- package/dist/test/index.d.ts.map +0 -1
- package/dist/test/session.spec.d.ts +0 -5
- package/dist/test/session.spec.d.ts.map +0 -1
- package/dist/test/unidirectional-streams.spec.d.ts +0 -2
- package/dist/test/unidirectional-streams.spec.d.ts.map +0 -1
- package/failslogolicensereadme.txt +0 -4
- package/lib/event-loop.js +0 -88
- package/lib/native.js +0 -28
- package/lib/transport.js +0 -82
- package/platform/icufix/fakedata.cpp +0 -8
- package/platform/quiche/quic/core/io/socket_win.inc +0 -3
- package/platform/quiche_platform_impl/quiche_bug_tracker_impl.h +0 -7
- package/platform/quiche_platform_impl/quiche_client_stats_impl.h +0 -7
- package/platform/quiche_platform_impl/quiche_command_line_flags_impl.h +0 -7
- package/platform/quiche_platform_impl/quiche_containers_impl.h +0 -7
- package/platform/quiche_platform_impl/quiche_event_loop_impl.h +0 -7
- package/platform/quiche_platform_impl/quiche_export_impl.h +0 -6
- package/platform/quiche_platform_impl/quiche_flag_utils_impl.h +0 -11
- package/platform/quiche_platform_impl/quiche_flags_impl.h +0 -8
- package/platform/quiche_platform_impl/quiche_iovec_impl.h +0 -10
- package/platform/quiche_platform_impl/quiche_logging_impl.h +0 -21
- package/platform/quiche_platform_impl/quiche_mem_slice_impl.h +0 -2
- package/platform/quiche_platform_impl/quiche_mutex_impl.h +0 -8
- package/platform/quiche_platform_impl/quiche_prefetch_impl.h +0 -11
- package/platform/quiche_platform_impl/quiche_reference_counted_impl.h +0 -16
- package/platform/quiche_platform_impl/quiche_server_stats_impl.h +0 -7
- package/platform/quiche_platform_impl/quiche_stack_trace_impl.h +0 -12
- package/platform/quiche_platform_impl/quiche_stream_buffer_allocator_impl.h +0 -8
- package/platform/quiche_platform_impl/quiche_testvalue_impl.h +0 -1
- package/platform/quiche_platform_impl/quiche_thread_local_impl.h +0 -6
- package/platform/quiche_platform_impl/quiche_time_utils_impl.h +0 -13
- package/platform/quiche_platform_impl/quiche_udp_socket_platform_impl.h +0 -39
- package/src/http3backendresponse.cc +0 -36
- package/src/http3backendresponse.h +0 -109
- package/src/http3client.cc +0 -1529
- package/src/http3client.h +0 -557
- package/src/http3clientsession.cc +0 -65
- package/src/http3clientsession.h +0 -60
- package/src/http3clientstream.cc +0 -52
- package/src/http3clientstream.h +0 -42
- package/src/http3dispatcher.cc +0 -62
- package/src/http3dispatcher.h +0 -57
- package/src/http3eventloop.cc +0 -1107
- package/src/http3eventloop.h +0 -316
- package/src/http3server.cc +0 -514
- package/src/http3server.h +0 -151
- package/src/http3serverbackend.cc +0 -105
- package/src/http3serverbackend.h +0 -98
- package/src/http3serversession.cc +0 -123
- package/src/http3serversession.h +0 -95
- package/src/http3serverstream.cc +0 -463
- package/src/http3serverstream.h +0 -114
- package/src/http3sessioncache.cc +0 -85
- package/src/http3sessioncache.h +0 -59
- package/src/http3wtsessionvisitor.cc +0 -46
- package/src/http3wtsessionvisitor.h +0 -397
- package/src/http3wtstreamvisitor.cc +0 -155
- package/src/http3wtstreamvisitor.h +0 -404
- package/test/event-loop.node.js +0 -24
- package/tsconfig.json +0 -39
package/lib/types.ts
CHANGED
|
@@ -1,27 +1,37 @@
|
|
|
1
|
-
import type {
|
|
1
|
+
import type {
|
|
2
|
+
WebTransportSession,
|
|
3
|
+
WebTransportHash,
|
|
4
|
+
WebTransportOptions
|
|
5
|
+
} from './dom'
|
|
6
|
+
import type { IncomingHttpHeaders, Http2Stream } from 'http2'
|
|
7
|
+
import { ParserBase } from './http2/parserbase'
|
|
8
|
+
import { Http2WebTransportSession } from './http2/session'
|
|
9
|
+
import { HttpClient } from './client'
|
|
2
10
|
|
|
3
11
|
/**
|
|
4
|
-
* Native
|
|
12
|
+
* Native HttpWTSession counterpart
|
|
5
13
|
*/
|
|
6
|
-
|
|
14
|
+
export interface NativeHttpWTSession {
|
|
7
15
|
jsobj: WebTransportSessionEventHandler
|
|
16
|
+
sendInitialParameters?: () => void
|
|
8
17
|
writeDatagram: (chunk: Uint8Array) => void
|
|
9
18
|
orderUnidiStream: () => void
|
|
10
19
|
orderBidiStream: () => void
|
|
11
20
|
orderSessionStats: () => void
|
|
12
21
|
orderDatagramStats: () => void
|
|
13
|
-
notifySessionDraining
|
|
14
|
-
close: (arg: { code: number
|
|
22
|
+
notifySessionDraining: () => void
|
|
23
|
+
close: (arg: { code: number; reason: string }) => void
|
|
15
24
|
}
|
|
16
25
|
|
|
17
26
|
/**
|
|
18
|
-
* Native
|
|
27
|
+
* Native HttpWTStream counterpart
|
|
19
28
|
*/
|
|
20
|
-
export interface
|
|
21
|
-
updateReadPos(bytesread: Number, pos: Number): unknown
|
|
29
|
+
export interface NativeHttpWTStream {
|
|
22
30
|
jsobj: WebTransportStreamEventHandler
|
|
23
|
-
readbuffer:
|
|
31
|
+
readbuffer: ArrayBuffer | undefined
|
|
32
|
+
sendInitialParameters?: () => void
|
|
24
33
|
startReading: () => void
|
|
34
|
+
drainReads: () => void
|
|
25
35
|
stopReading: () => void
|
|
26
36
|
stopSending: (code: number) => void
|
|
27
37
|
resetStream: (code: number) => void
|
|
@@ -29,63 +39,106 @@ export interface NativeHttp3WTStream {
|
|
|
29
39
|
streamFinal: () => void
|
|
30
40
|
}
|
|
31
41
|
|
|
32
|
-
export
|
|
42
|
+
export interface NativeServerOptions {
|
|
43
|
+
port: number | 443
|
|
44
|
+
secret?: string
|
|
45
|
+
host: string
|
|
46
|
+
cert: string
|
|
47
|
+
certhttp2?: string // if http2 has a different cert
|
|
48
|
+
privKey: string
|
|
49
|
+
privKeyhttp2?: string // if http2 has a different cert
|
|
50
|
+
initialStreamFlowControlWindow?: number
|
|
51
|
+
streamShouldAutoTuneReceiveWindow?: boolean
|
|
52
|
+
streamFlowControlWindowSizeLimit?: number
|
|
53
|
+
initialSessionFlowControlWindow?: number
|
|
54
|
+
sessionShouldAutoTuneReceiveWindow?: boolean
|
|
55
|
+
sessionFlowControlWindowSizeLimit?: number
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
export interface NativeClientOptions {
|
|
59
|
+
port: number
|
|
60
|
+
host: string
|
|
61
|
+
serverCertificateHashes: WebTransportHash[]
|
|
62
|
+
localPort: number
|
|
63
|
+
allowPooling: boolean
|
|
64
|
+
forceIpv6: boolean
|
|
65
|
+
initialStreamFlowControlWindow?: number
|
|
66
|
+
streamShouldAutoTuneReceiveWindow?: boolean
|
|
67
|
+
streamFlowControlWindowSizeLimit?: number
|
|
68
|
+
initialSessionFlowControlWindow?: number
|
|
69
|
+
sessionShouldAutoTuneReceiveWindow?: boolean
|
|
70
|
+
sessionFlowControlWindowSizeLimit?: number
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
export interface FlowControlable {
|
|
74
|
+
sendWindowUpdate: (windowOffset: bigint) => void
|
|
75
|
+
sendBlocked: (windowOffSet: bigint) => void
|
|
76
|
+
connected: () => boolean
|
|
77
|
+
closeConnection: (arg: { code: number; reason: string }) => void
|
|
78
|
+
smoothedRtt: () => number
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
export interface ReadBuffer {
|
|
82
|
+
buffer?: Uint8Array
|
|
83
|
+
readBytes?: number
|
|
84
|
+
byob?: ReadableStreamBYOBRequest
|
|
85
|
+
drained?: boolean
|
|
86
|
+
fin: boolean
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
export interface NativeFinishSessionRequest {
|
|
90
|
+
header: IncomingHttpHeaders
|
|
91
|
+
session: Http2Stream
|
|
92
|
+
status: number
|
|
93
|
+
protocol: 'capsule' | 'websocket' | 'websocketoverhttp1' | 'http3'
|
|
94
|
+
head?: Buffer
|
|
95
|
+
}
|
|
96
|
+
|
|
97
|
+
export type Purpose =
|
|
98
|
+
| 'StreamRecvSignal'
|
|
99
|
+
| 'StreamRead'
|
|
100
|
+
| 'StreamWrite'
|
|
101
|
+
| 'StreamReset'
|
|
102
|
+
| 'StreamNetworkFinish'
|
|
33
103
|
export type NetTask = 'stopSending' | 'resetStream' | 'streamFinal'
|
|
34
104
|
|
|
35
105
|
export interface StreamRecvSignalEvent {
|
|
36
|
-
object: NativeHttp3WTStream
|
|
37
|
-
purpose: 'StreamRecvSignal'
|
|
38
106
|
code: number
|
|
39
107
|
nettask: NetTask
|
|
40
108
|
}
|
|
41
109
|
|
|
42
110
|
export interface StreamReadEvent {
|
|
43
|
-
object: NativeHttp3WTStream
|
|
44
|
-
purpose: 'StreamRead'
|
|
45
111
|
buffergrow?: number
|
|
46
112
|
fin?: boolean
|
|
47
113
|
success?: boolean
|
|
48
114
|
}
|
|
49
115
|
|
|
50
116
|
export interface StreamWriteEvent {
|
|
51
|
-
|
|
52
|
-
purpose: 'StreamWrite'
|
|
117
|
+
success?: boolean
|
|
53
118
|
}
|
|
54
119
|
|
|
55
|
-
export interface StreamResetEvent {
|
|
56
|
-
object: NativeHttp3WTStream
|
|
57
|
-
purpose: 'StreamReset'
|
|
58
|
-
}
|
|
120
|
+
export interface StreamResetEvent {}
|
|
59
121
|
|
|
60
122
|
export interface StreamNetworkFinishEvent {
|
|
61
|
-
object: NativeHttp3WTStream
|
|
62
|
-
purpose: 'StreamNetworkFinish'
|
|
63
123
|
nettask: NetTask
|
|
64
124
|
}
|
|
65
125
|
|
|
66
126
|
export interface WebTransportStreamEventHandler {
|
|
67
127
|
onStreamRecvSignal: (evt: StreamRecvSignalEvent) => void
|
|
68
|
-
onStreamRead: (evt: StreamReadEvent) => void
|
|
69
128
|
onStreamWrite: (evt: StreamWriteEvent) => void
|
|
70
|
-
onStreamReset: (evt: StreamResetEvent) => void
|
|
71
129
|
onStreamNetworkFinish: (evt: StreamNetworkFinishEvent) => void
|
|
72
130
|
}
|
|
73
131
|
|
|
74
132
|
export interface SessionReadyEvent {
|
|
75
|
-
object:
|
|
76
|
-
purpose: 'SessionReady'
|
|
133
|
+
object: NativeHttpWTSession
|
|
77
134
|
}
|
|
78
135
|
|
|
79
136
|
export interface SessionCloseEvent {
|
|
80
|
-
object: NativeHttp3WTSession
|
|
81
|
-
purpose: 'SessionClose'
|
|
82
137
|
errorcode: number
|
|
83
138
|
error: string
|
|
84
139
|
}
|
|
85
140
|
|
|
86
141
|
export interface SessionStatsEvent {
|
|
87
|
-
object: NativeHttp3WTSession
|
|
88
|
-
purpose: 'SessionStats'
|
|
89
142
|
timestamp: number
|
|
90
143
|
expiredOutgoing: bigint
|
|
91
144
|
lostOutgoing: bigint
|
|
@@ -98,34 +151,21 @@ export interface SessionStatsEvent {
|
|
|
98
151
|
}
|
|
99
152
|
|
|
100
153
|
export interface DatagramStatsEvent {
|
|
101
|
-
object: NativeHttp3WTSession
|
|
102
|
-
purpose: 'DatagramStats'
|
|
103
154
|
timestamp: number
|
|
104
155
|
expiredOutgoing: bigint
|
|
105
156
|
lostOutgoing: bigint
|
|
106
157
|
}
|
|
107
158
|
|
|
108
159
|
export interface DatagramReceivedEvent {
|
|
109
|
-
object: NativeHttp3WTSession
|
|
110
|
-
purpose: 'DatagramReceived'
|
|
111
160
|
datagram: Uint8Array
|
|
112
161
|
}
|
|
113
162
|
|
|
114
|
-
export interface DatagramSendEvent {
|
|
115
|
-
object: NativeHttp3WTSession
|
|
116
|
-
purpose: 'DatagramSend'
|
|
117
|
-
}
|
|
163
|
+
export interface DatagramSendEvent {}
|
|
118
164
|
|
|
119
|
-
export interface GoawayReceivedEvent {
|
|
120
|
-
object: NativeHttp3WTSession
|
|
121
|
-
purpose: 'GoawayReceived'
|
|
122
|
-
}
|
|
165
|
+
export interface GoawayReceivedEvent {}
|
|
123
166
|
|
|
124
167
|
export interface NewStreamEvent {
|
|
125
|
-
|
|
126
|
-
purpose: 'Http3WTStreamVisitor'
|
|
127
|
-
stream: NativeHttp3WTStream
|
|
128
|
-
transport: object
|
|
168
|
+
stream: NativeHttpWTStream
|
|
129
169
|
bidirectional: boolean
|
|
130
170
|
incoming: boolean
|
|
131
171
|
}
|
|
@@ -143,62 +183,50 @@ export interface WebTransportSessionEventHandler {
|
|
|
143
183
|
}
|
|
144
184
|
|
|
145
185
|
export interface ClientConnectedEvent {
|
|
146
|
-
purpose: 'ClientConnected'
|
|
147
186
|
success: boolean
|
|
148
187
|
}
|
|
149
188
|
|
|
150
|
-
export interface ClientWebtransportSupportEvent {
|
|
151
|
-
purpose: 'ClientWebtransportSupport'
|
|
152
|
-
}
|
|
189
|
+
export interface ClientWebtransportSupportEvent {}
|
|
153
190
|
|
|
154
|
-
export interface
|
|
155
|
-
|
|
156
|
-
|
|
191
|
+
export interface HttpWTSessionVisitorEvent {
|
|
192
|
+
session: NativeHttpWTSession
|
|
193
|
+
reliable?: boolean
|
|
157
194
|
}
|
|
158
195
|
|
|
159
|
-
export interface
|
|
196
|
+
export interface HttpClientEventHandler {
|
|
160
197
|
onClientConnected: (evt: ClientConnectedEvent) => void
|
|
161
198
|
onClientWebTransportSupport: (evt: ClientWebtransportSupportEvent) => void
|
|
162
|
-
|
|
199
|
+
onHttpWTSessionVisitor: (evt: HttpWTSessionVisitorEvent) => void
|
|
163
200
|
}
|
|
164
201
|
|
|
165
|
-
export interface
|
|
202
|
+
export interface HttpWTServerSessionVisitorEvent
|
|
203
|
+
extends HttpWTSessionVisitorEvent {
|
|
166
204
|
path: string
|
|
167
|
-
|
|
168
|
-
header?: any
|
|
205
|
+
header: Object
|
|
169
206
|
}
|
|
170
207
|
|
|
171
208
|
export interface ServerSessionRequestEvent {
|
|
172
|
-
purpose: 'SessionRequest'
|
|
173
209
|
header: Object
|
|
174
|
-
|
|
210
|
+
head?: Buffer | undefined
|
|
211
|
+
promise?: any
|
|
175
212
|
session: any
|
|
213
|
+
object?: any // the actual transport object itself, actually present on all messages, but required here
|
|
214
|
+
protocol: string //'capsule' | 'websocket' | 'http3'
|
|
176
215
|
}
|
|
177
216
|
|
|
178
217
|
/**
|
|
179
|
-
* The
|
|
218
|
+
* The Http server is listening on the specified port
|
|
180
219
|
*/
|
|
181
|
-
export interface
|
|
182
|
-
|
|
220
|
+
export interface HttpServerListeningEvent {
|
|
221
|
+
port: number | undefined
|
|
222
|
+
host: string | undefined
|
|
183
223
|
}
|
|
184
224
|
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
port: number | null
|
|
190
|
-
host: string | null
|
|
191
|
-
purpose: 'ServerStatus',
|
|
192
|
-
status: 'error' | 'listening' | 'close'
|
|
193
|
-
}
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
export interface Http3ServerEventHandler {
|
|
197
|
-
onHttp3WTSessionVisitor: (evt: Http3WTServerSessionVisitorEvent) => void
|
|
198
|
-
onServerError: () => void
|
|
199
|
-
onServerListening: () => void
|
|
225
|
+
export interface HttpServerEventHandler {
|
|
226
|
+
onHttpWTSessionVisitor: (evt: HttpWTServerSessionVisitorEvent) => void
|
|
227
|
+
onServerError: (error?: Error) => void
|
|
228
|
+
onServerListening: (evt: HttpServerListeningEvent) => void
|
|
200
229
|
onServerClose: () => void
|
|
201
|
-
onServerStatus: (evt: ServerStatusEvent) => void
|
|
202
230
|
}
|
|
203
231
|
|
|
204
232
|
/**
|
|
@@ -211,20 +239,32 @@ export interface Deferred<T = unknown> {
|
|
|
211
239
|
}
|
|
212
240
|
|
|
213
241
|
// https://www.w3.org/TR/webtransport/#dom-webtransport-state-slot
|
|
214
|
-
export type WebTransportSessionState =
|
|
215
|
-
|
|
216
|
-
|
|
242
|
+
export type WebTransportSessionState =
|
|
243
|
+
| 'connecting'
|
|
244
|
+
| 'connected'
|
|
245
|
+
| 'draining'
|
|
246
|
+
| 'closed'
|
|
247
|
+
| 'failed'
|
|
248
|
+
|
|
249
|
+
export interface WebTransportSessionImpl extends WebTransportSession {
|
|
217
250
|
state: WebTransportSessionState
|
|
218
251
|
}
|
|
219
252
|
|
|
220
|
-
export interface
|
|
253
|
+
export interface HttpWebTransportInit extends WebTransportOptions {
|
|
221
254
|
host: string
|
|
222
255
|
port: string | number
|
|
223
256
|
quicheLogVerbose?: number
|
|
257
|
+
forceIpv6?: boolean
|
|
258
|
+
localPort?: number
|
|
224
259
|
}
|
|
225
260
|
|
|
226
|
-
|
|
227
|
-
|
|
261
|
+
export type WebTransportServerReliability =
|
|
262
|
+
| 'unreliableOnly'
|
|
263
|
+
| 'reliableOnly'
|
|
264
|
+
| 'both'
|
|
265
|
+
|
|
266
|
+
// see HttpServerJS C++ type
|
|
267
|
+
export interface HttpServerInit extends HttpWebTransportInit {
|
|
228
268
|
port: string | number
|
|
229
269
|
host: string
|
|
230
270
|
secret: string
|
|
@@ -232,13 +272,34 @@ export interface Http3ServerInit extends Http3WebTransportInit {
|
|
|
232
272
|
privKey: string
|
|
233
273
|
maxConnections?: number
|
|
234
274
|
initialStreamFlowControlWindow?: number
|
|
275
|
+
streamShouldAutoTuneReceiveWindow?: boolean
|
|
276
|
+
streamFlowControlWindowSizeLimit?: number
|
|
235
277
|
initialSessionFlowControlWindow?: number
|
|
278
|
+
sessionShouldAutoTuneReceiveWindow?: boolean
|
|
279
|
+
sessionFlowControlWindowSizeLimit?: number
|
|
280
|
+
reliability?: WebTransportServerReliability
|
|
236
281
|
}
|
|
237
282
|
|
|
238
|
-
// see
|
|
239
|
-
export interface
|
|
283
|
+
// see HttpClientJS C++ type
|
|
284
|
+
export interface HttpClientInit extends HttpWebTransportInit {
|
|
285
|
+
forceReliable?: any
|
|
240
286
|
forceIpv6?: boolean
|
|
241
287
|
localPort?: number
|
|
288
|
+
initialStreamFlowControlWindow?: number
|
|
289
|
+
streamShouldAutoTuneReceiveWindow?: boolean
|
|
290
|
+
streamFlowControlWindowSizeLimit?: number
|
|
291
|
+
initialSessionFlowControlWindow?: number
|
|
292
|
+
sessionShouldAutoTuneReceiveWindow?: boolean
|
|
293
|
+
sessionFlowControlWindowSizeLimit?: number
|
|
294
|
+
createReliableClient?: (cklient: HttpClient) => any
|
|
295
|
+
createUnreliableClient?: (client: HttpClient) => any
|
|
296
|
+
}
|
|
297
|
+
|
|
298
|
+
export interface TransportHttp3Quiche {
|
|
299
|
+
checkQuicheInit: () => void
|
|
300
|
+
|
|
301
|
+
Http3WebTransportServer: new (init: HttpServerInit) => any
|
|
302
|
+
Http3WebTransportServerSocket: new (init: HttpServerInit) => any
|
|
242
303
|
}
|
|
243
304
|
|
|
244
305
|
export interface Logger {
|
|
@@ -246,3 +307,29 @@ export interface Logger {
|
|
|
246
307
|
error: (formatter: any, ...args: any[]) => void
|
|
247
308
|
trace: (formatter: any, ...args: any[]) => void
|
|
248
309
|
}
|
|
310
|
+
|
|
311
|
+
export type CreateParserFunction = (
|
|
312
|
+
nativesession: Http2WebTransportSession
|
|
313
|
+
) => ParserBase
|
|
314
|
+
|
|
315
|
+
export interface ParserInit {
|
|
316
|
+
isclient: boolean
|
|
317
|
+
nativesession: any
|
|
318
|
+
initialStreamSendWindowOffset: number
|
|
319
|
+
initialStreamReceiveWindowOffset: number
|
|
320
|
+
streamShouldAutoTuneReceiveWindow: boolean
|
|
321
|
+
streamReceiveWindowSizeLimit: number
|
|
322
|
+
}
|
|
323
|
+
|
|
324
|
+
export interface ParserHttp2Init extends ParserInit {
|
|
325
|
+
stream: Http2Stream
|
|
326
|
+
}
|
|
327
|
+
|
|
328
|
+
export interface ParserWebsocketInit extends ParserInit {
|
|
329
|
+
ws: WebSocket
|
|
330
|
+
}
|
|
331
|
+
|
|
332
|
+
export interface ReadDataInt {
|
|
333
|
+
data: Uint8Array
|
|
334
|
+
fin: boolean
|
|
335
|
+
}
|
package/lib/utils.js
CHANGED
|
@@ -28,8 +28,9 @@ export function defer() {
|
|
|
28
28
|
* @returns {import('./types').Logger}
|
|
29
29
|
*/
|
|
30
30
|
export function logger(name) {
|
|
31
|
+
const dtrace = !!(typeof process === 'undefined' || process.env.DEBUG_TRACE)
|
|
31
32
|
return Object.assign(debug(name), {
|
|
32
33
|
error: debug(`${name}:error`),
|
|
33
|
-
trace:
|
|
34
|
+
trace: dtrace ? debug(`${name}:trace`) : () => {}
|
|
34
35
|
})
|
|
35
36
|
}
|