@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.
Files changed (162) hide show
  1. package/lib/client.js +81 -40
  2. package/lib/dom.ts +7 -5
  3. package/lib/http2/browser/browser.js +168 -0
  4. package/lib/http2/browser/browserparser.js +248 -0
  5. package/lib/http2/flowcontroller.js +371 -0
  6. package/lib/http2/node/capsuleparser.js +291 -0
  7. package/lib/http2/node/client.js +239 -0
  8. package/lib/http2/node/index.js +2 -0
  9. package/lib/http2/node/server.js +499 -0
  10. package/lib/http2/node/websocketparser.js +829 -0
  11. package/lib/http2/parserbase.js +139 -0
  12. package/lib/http2/parserbasehttp2.js +128 -0
  13. package/lib/http2/session.js +225 -0
  14. package/lib/http2/stream.js +354 -0
  15. package/lib/http2/websocketcommon.js +1 -0
  16. package/lib/{index.js → index.browser.js} +6 -10
  17. package/lib/index.node.js +27 -0
  18. package/lib/server.js +252 -69
  19. package/lib/session.js +31 -68
  20. package/lib/stream.js +103 -179
  21. package/lib/types.ts +174 -87
  22. package/lib/utils.js +2 -1
  23. package/lib/webstreams.browser.js +6 -0
  24. package/lib/webstreams.js +7 -0
  25. package/lib/webtransport.browser.js +284 -0
  26. package/lib/webtransport.node.js +137 -0
  27. package/lib/{webtransport.js → webtransportbase.js} +47 -41
  28. package/old_test/test.js +31 -29
  29. package/old_test/testsuite.js +1 -1
  30. package/package.json +18 -17
  31. package/readme.md +94 -30
  32. package/test/bidirectional-streams.spec.js +51 -9
  33. package/test/datagrams.spec.js +8 -2
  34. package/test/fixtures/known-bytes.js +29 -0
  35. package/test/fixtures/read-stream.js +1 -1
  36. package/test/fixtures/reader-value.js +1 -1
  37. package/test/fixtures/server.js +24 -10
  38. package/test/fixtures/webtransport.browser.js +20 -2
  39. package/test/fixtures/webtransport.js +1 -1
  40. package/test/index.js +33 -6
  41. package/test/pw-no-https-errors.json +5 -0
  42. package/test/session.spec.js +71 -52
  43. package/test/unidirectional-streams.spec.js +20 -4
  44. package/CMakeLists.txt +0 -991
  45. package/LICENSE.chromium +0 -27
  46. package/LICENSE.envoy +0 -207
  47. package/build.js +0 -313
  48. package/dist/lib/client.d.ts +0 -78
  49. package/dist/lib/client.d.ts.map +0 -1
  50. package/dist/lib/dom.d.ts +0 -87
  51. package/dist/lib/dom.d.ts.map +0 -1
  52. package/dist/lib/error.d.ts +0 -8
  53. package/dist/lib/error.d.ts.map +0 -1
  54. package/dist/lib/event-loop.d.ts +0 -33
  55. package/dist/lib/event-loop.d.ts.map +0 -1
  56. package/dist/lib/index.d.ts +0 -79
  57. package/dist/lib/index.d.ts.map +0 -1
  58. package/dist/lib/native.d.ts +0 -2
  59. package/dist/lib/native.d.ts.map +0 -1
  60. package/dist/lib/server.d.ts +0 -92
  61. package/dist/lib/server.d.ts.map +0 -1
  62. package/dist/lib/session.d.ts +0 -298
  63. package/dist/lib/session.d.ts.map +0 -1
  64. package/dist/lib/stream.d.ts +0 -135
  65. package/dist/lib/stream.d.ts.map +0 -1
  66. package/dist/lib/transport.d.ts +0 -34
  67. package/dist/lib/transport.d.ts.map +0 -1
  68. package/dist/lib/types.d.ts +0 -212
  69. package/dist/lib/types.d.ts.map +0 -1
  70. package/dist/lib/utils.d.ts +0 -11
  71. package/dist/lib/utils.d.ts.map +0 -1
  72. package/dist/lib/webtransport.d.ts +0 -47
  73. package/dist/lib/webtransport.d.ts.map +0 -1
  74. package/dist/test/bidirectional-streams.spec.d.ts +0 -5
  75. package/dist/test/bidirectional-streams.spec.d.ts.map +0 -1
  76. package/dist/test/datagrams.spec.d.ts +0 -5
  77. package/dist/test/datagrams.spec.d.ts.map +0 -1
  78. package/dist/test/event-loop.node.d.ts +0 -2
  79. package/dist/test/event-loop.node.d.ts.map +0 -1
  80. package/dist/test/fixtures/certificate.d.ts +0 -21
  81. package/dist/test/fixtures/certificate.d.ts.map +0 -1
  82. package/dist/test/fixtures/chai.d.ts +0 -2
  83. package/dist/test/fixtures/chai.d.ts.map +0 -1
  84. package/dist/test/fixtures/known-bytes.d.ts +0 -6
  85. package/dist/test/fixtures/known-bytes.d.ts.map +0 -1
  86. package/dist/test/fixtures/p-timeout.d.ts +0 -8
  87. package/dist/test/fixtures/p-timeout.d.ts.map +0 -1
  88. package/dist/test/fixtures/read-cert-hash.d.ts +0 -6
  89. package/dist/test/fixtures/read-cert-hash.d.ts.map +0 -1
  90. package/dist/test/fixtures/read-stream.d.ts +0 -19
  91. package/dist/test/fixtures/read-stream.d.ts.map +0 -1
  92. package/dist/test/fixtures/reader-value.d.ts +0 -22
  93. package/dist/test/fixtures/reader-value.d.ts.map +0 -1
  94. package/dist/test/fixtures/server.d.ts +0 -5
  95. package/dist/test/fixtures/server.d.ts.map +0 -1
  96. package/dist/test/fixtures/webtransport.browser.d.ts +0 -3
  97. package/dist/test/fixtures/webtransport.browser.d.ts.map +0 -1
  98. package/dist/test/fixtures/webtransport.d.ts +0 -3
  99. package/dist/test/fixtures/webtransport.d.ts.map +0 -1
  100. package/dist/test/fixtures/write-stream.d.ts +0 -10
  101. package/dist/test/fixtures/write-stream.d.ts.map +0 -1
  102. package/dist/test/index.d.ts +0 -2
  103. package/dist/test/index.d.ts.map +0 -1
  104. package/dist/test/session.spec.d.ts +0 -5
  105. package/dist/test/session.spec.d.ts.map +0 -1
  106. package/dist/test/unidirectional-streams.spec.d.ts +0 -2
  107. package/dist/test/unidirectional-streams.spec.d.ts.map +0 -1
  108. package/failslogolicensereadme.txt +0 -4
  109. package/lib/event-loop.js +0 -88
  110. package/lib/native.js +0 -28
  111. package/lib/transport.js +0 -82
  112. package/platform/icufix/fakedata.cpp +0 -8
  113. package/platform/quiche/quic/core/io/socket_win.inc +0 -3
  114. package/platform/quiche_platform_impl/quiche_bug_tracker_impl.h +0 -7
  115. package/platform/quiche_platform_impl/quiche_client_stats_impl.h +0 -7
  116. package/platform/quiche_platform_impl/quiche_command_line_flags_impl.h +0 -7
  117. package/platform/quiche_platform_impl/quiche_containers_impl.h +0 -7
  118. package/platform/quiche_platform_impl/quiche_event_loop_impl.h +0 -7
  119. package/platform/quiche_platform_impl/quiche_export_impl.h +0 -6
  120. package/platform/quiche_platform_impl/quiche_flag_utils_impl.h +0 -11
  121. package/platform/quiche_platform_impl/quiche_flags_impl.h +0 -8
  122. package/platform/quiche_platform_impl/quiche_iovec_impl.h +0 -10
  123. package/platform/quiche_platform_impl/quiche_logging_impl.h +0 -21
  124. package/platform/quiche_platform_impl/quiche_mem_slice_impl.h +0 -2
  125. package/platform/quiche_platform_impl/quiche_mutex_impl.h +0 -8
  126. package/platform/quiche_platform_impl/quiche_prefetch_impl.h +0 -11
  127. package/platform/quiche_platform_impl/quiche_reference_counted_impl.h +0 -16
  128. package/platform/quiche_platform_impl/quiche_server_stats_impl.h +0 -7
  129. package/platform/quiche_platform_impl/quiche_stack_trace_impl.h +0 -12
  130. package/platform/quiche_platform_impl/quiche_stream_buffer_allocator_impl.h +0 -8
  131. package/platform/quiche_platform_impl/quiche_testvalue_impl.h +0 -1
  132. package/platform/quiche_platform_impl/quiche_thread_local_impl.h +0 -6
  133. package/platform/quiche_platform_impl/quiche_time_utils_impl.h +0 -13
  134. package/platform/quiche_platform_impl/quiche_udp_socket_platform_impl.h +0 -39
  135. package/src/http3backendresponse.cc +0 -36
  136. package/src/http3backendresponse.h +0 -109
  137. package/src/http3client.cc +0 -1529
  138. package/src/http3client.h +0 -557
  139. package/src/http3clientsession.cc +0 -65
  140. package/src/http3clientsession.h +0 -60
  141. package/src/http3clientstream.cc +0 -52
  142. package/src/http3clientstream.h +0 -42
  143. package/src/http3dispatcher.cc +0 -62
  144. package/src/http3dispatcher.h +0 -57
  145. package/src/http3eventloop.cc +0 -1107
  146. package/src/http3eventloop.h +0 -316
  147. package/src/http3server.cc +0 -514
  148. package/src/http3server.h +0 -151
  149. package/src/http3serverbackend.cc +0 -105
  150. package/src/http3serverbackend.h +0 -98
  151. package/src/http3serversession.cc +0 -123
  152. package/src/http3serversession.h +0 -95
  153. package/src/http3serverstream.cc +0 -463
  154. package/src/http3serverstream.h +0 -114
  155. package/src/http3sessioncache.cc +0 -85
  156. package/src/http3sessioncache.h +0 -59
  157. package/src/http3wtsessionvisitor.cc +0 -46
  158. package/src/http3wtsessionvisitor.h +0 -397
  159. package/src/http3wtstreamvisitor.cc +0 -155
  160. package/src/http3wtstreamvisitor.h +0 -404
  161. package/test/event-loop.node.js +0 -24
  162. package/tsconfig.json +0 -39
package/lib/types.ts CHANGED
@@ -1,27 +1,37 @@
1
- import type { WebTransport, WebTransportOptions } from './dom'
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 Http3WTSession counterpart
12
+ * Native HttpWTSession counterpart
5
13
  */
6
- export interface NativeHttp3WTSession {
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(): () => void
14
- close: (arg: { code: number, reason: string }) => void
22
+ notifySessionDraining: () => void
23
+ close: (arg: { code: number; reason: string }) => void
15
24
  }
16
25
 
17
26
  /**
18
- * Native Http3WTStream counterpart
27
+ * Native HttpWTStream counterpart
19
28
  */
20
- export interface NativeHttp3WTStream {
21
- updateReadPos(bytesread: Number, pos: Number): unknown
29
+ export interface NativeHttpWTStream {
22
30
  jsobj: WebTransportStreamEventHandler
23
- readbuffer: Uint8Array | undefined
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 type Purpose = 'StreamRecvSignal' | 'StreamRead' | 'StreamWrite' | 'StreamReset' | 'StreamNetworkFinish'
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
- object: NativeHttp3WTStream
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: NativeHttp3WTSession
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
- object: NativeHttp3WTSession
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 Http3WTSessionVisitorEvent {
155
- purpose: 'Http3WTSessionVisitor'
156
- session: NativeHttp3WTSession
191
+ export interface HttpWTSessionVisitorEvent {
192
+ session: NativeHttpWTSession
193
+ reliable?: boolean
157
194
  }
158
195
 
159
- export interface Http3ClientEventHandler {
196
+ export interface HttpClientEventHandler {
160
197
  onClientConnected: (evt: ClientConnectedEvent) => void
161
198
  onClientWebTransportSupport: (evt: ClientWebtransportSupportEvent) => void
162
- onHttp3WTSessionVisitor: (evt: Http3WTSessionVisitorEvent) => void
199
+ onHttpWTSessionVisitor: (evt: HttpWTSessionVisitorEvent) => void
163
200
  }
164
201
 
165
- export interface Http3WTServerSessionVisitorEvent extends Http3WTSessionVisitorEvent {
202
+ export interface HttpWTServerSessionVisitorEvent
203
+ extends HttpWTSessionVisitorEvent {
166
204
  path: string
167
- object: any
168
- header?: any
205
+ header: Object
169
206
  }
170
207
 
171
208
  export interface ServerSessionRequestEvent {
172
- purpose: 'SessionRequest'
173
209
  header: Object
174
- promise: any
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 Http3 server is listening on the specified port
218
+ * The Http server is listening on the specified port
180
219
  */
181
- export interface Http3ServerListeningEvent {
182
- purpose: 'Http3ServerListening'
220
+ export interface HttpServerListeningEvent {
221
+ port: number | undefined
222
+ host: string | undefined
183
223
  }
184
224
 
185
- /**
186
- * The Http3 server has stopped listening on the specified port
187
- */
188
- export interface ServerStatusEvent {
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 = 'connecting' | 'connected' | 'draining' | 'closed' | 'failed'
215
-
216
- export interface WebTransportSession extends WebTransport {
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 Http3WebTransportInit extends WebTransportOptions {
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
- // see Http3ServerJS C++ type
227
- export interface Http3ServerInit extends Http3WebTransportInit {
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 Http3ClientJS C++ type
239
- export interface Http3ClientInit extends Http3WebTransportInit {
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: process.env.DEBUG_TRACE ? debug(`${name}:trace`) : () => {}
34
+ trace: dtrace ? debug(`${name}:trace`) : () => {}
34
35
  })
35
36
  }
@@ -0,0 +1,6 @@
1
+ /** @type {ReadableStream} */
2
+ // @ts-ignore
3
+ export const ReadableStream = globalThis.ReadableStream
4
+ /** @type {WritableStream} */
5
+ // @ts-ignore
6
+ export const WritableStream = globalThis.WritableStream
@@ -0,0 +1,7 @@
1
+ import {
2
+ ReadableStream as ReadableStreamNode,
3
+ WritableStream as WritableStreamNode
4
+ } from 'node:stream/web'
5
+
6
+ export const ReadableStream = ReadableStreamNode
7
+ export const WritableStream = WritableStreamNode