@fails-components/webtransport 0.1.7 → 0.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/CMakeLists.txt CHANGED
@@ -108,12 +108,12 @@ platform/quiche_platform_impl/quiche_flag_utils_impl.h
108
108
  third_party/googleurl/base/debug/crash_logging.cc
109
109
  third_party/googleurl/base/debug/crash_logging.h
110
110
  third_party/googleurl/base/strings/string_util_constants.cc
111
- third_party/googleurl/base/strings/string_piece.cc
112
- third_party/googleurl/base/strings/string_piece.h
113
111
  third_party/googleurl/base/strings/string_util.cc
114
112
  third_party/googleurl/base/strings/string_util.h
115
113
  third_party/googleurl/base/strings/utf_string_conversions.cc
116
114
  third_party/googleurl/base/strings/utf_string_conversions.h
115
+ #third_party/googleurl/base/strings/utf_ostream_operators.cc
116
+ #third_party/googleurl/base/strings/utf_ostream_operators.h
117
117
  third_party/googleurl/url/url_canon.cc
118
118
  third_party/googleurl/url/url_canon_internal.cc
119
119
  third_party/googleurl/url/url_canon_path.cc
package/build.js CHANGED
@@ -83,8 +83,7 @@ const extractthirdparty = async () => {
83
83
  'third_party/zlib',
84
84
  'third_party/googleurl',
85
85
  'third_party/libevent',
86
- 'third_party/protobuf',
87
- 'third_party/icu'
86
+ 'third_party/protobuf'
88
87
  ]
89
88
  for (let mod in submodules) {
90
89
  const sub = submodules[mod]
@@ -255,11 +254,12 @@ if (argv.length > 2) {
255
254
  try {
256
255
  // if we do not succeed, we have to build it ourselves
257
256
  await extractthirdparty()
257
+ await execbuild(['build', ...platformargs])
258
258
  } catch (error) {
259
259
  console.error('Building binary failed: ', error)
260
+ process.exit(1)
260
261
  }
261
- }
262
- // eslint-disable-next-line no-fallthrough
262
+ } break
263
263
  case 'build':
264
264
  try {
265
265
  await execbuild(['build', ...platformargs])
@@ -6,6 +6,7 @@
6
6
  * @typedef {import('./types').SessionCloseEvent} SessionCloseEvent
7
7
  * @typedef {import('./types').DatagramReceivedEvent} DatagramReceivedEvent
8
8
  * @typedef {import('./types').DatagramSendEvent} DatagramSendEvent
9
+ * @typedef {import('./types').GoawayReceivedEvent} GoawayReceivedEvent
9
10
  * @typedef {import('./types').NewStreamEvent} NewStreamEvent
10
11
  *
11
12
  * @typedef {import('./dom').WebTransportCloseInfo} WebTransportCloseInfo
@@ -33,9 +34,9 @@
33
34
  */
34
35
  export class Http3WTSession implements WebTransportSessionEventHandler, WebTransportSession {
35
36
  /**
36
- * @param {SessionReadyEvent | SessionCloseEvent | DatagramReceivedEvent | DatagramSendEvent | NewStreamEvent} args
37
+ * @param {SessionReadyEvent | SessionCloseEvent | DatagramReceivedEvent | DatagramSendEvent | GoawayReceivedEvent | NewStreamEvent} args
37
38
  */
38
- static callback(args: SessionReadyEvent | SessionCloseEvent | DatagramReceivedEvent | DatagramSendEvent | NewStreamEvent): void;
39
+ static callback(args: SessionReadyEvent | SessionCloseEvent | DatagramReceivedEvent | DatagramSendEvent | GoawayReceivedEvent | NewStreamEvent): void;
39
40
  /**
40
41
  * @param {object} args
41
42
  * @param {import('./types').NativeHttp3WTSession} [args.object]
@@ -130,6 +131,7 @@ export class Http3WTSession implements WebTransportSessionEventHandler, WebTrans
130
131
  };
131
132
  }>;
132
133
  waitForDatagramsSend(): Promise<void>;
134
+ notifySessionDraining(): void;
133
135
  /**
134
136
  * @param {Http3WTStream} stream
135
137
  */
@@ -193,6 +195,10 @@ export class Http3WTSession implements WebTransportSessionEventHandler, WebTrans
193
195
  * @param {DatagramSendEvent} args
194
196
  */
195
197
  onDatagramSend(args: DatagramSendEvent): void;
198
+ /**
199
+ * @param {GoawayReceivedEvent} args
200
+ */
201
+ onGoAwayReceived(args: GoawayReceivedEvent): void;
196
202
  }
197
203
  /**
198
204
  * WebTransport session events
@@ -214,6 +220,10 @@ export type DatagramReceivedEvent = import('./types').DatagramReceivedEvent;
214
220
  * WebTransport session events
215
221
  */
216
222
  export type DatagramSendEvent = import('./types').DatagramSendEvent;
223
+ /**
224
+ * WebTransport session events
225
+ */
226
+ export type GoawayReceivedEvent = import('./types').GoawayReceivedEvent;
217
227
  /**
218
228
  * WebTransport session events
219
229
  */
@@ -1 +1 @@
1
- {"version":3,"file":"session.d.ts","sourceRoot":"","sources":["../../lib/session.js"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"session.d.ts","sourceRoot":"","sources":["../../lib/session.js"],"names":[],"mappings":"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"}
@@ -43,15 +43,23 @@ export class Http3WTStream {
43
43
  /** @type {Promise<void> | null} */
44
44
  pendingoperation: Promise<void> | null;
45
45
  pendingres: (() => void) | null;
46
+ /** @type {Promise<void> | null} */
47
+ pendingoperationRead: Promise<void> | null;
48
+ pendingresRead: ((value: void | PromiseLike<void>) => void) | null;
49
+ /** @type {Number} */
50
+ incomingbufferfilled: number;
51
+ /** @type {Number} */
52
+ incomingbufferreadpos: number;
46
53
  /** @type {WebTransportReceiveStream} */
47
54
  readable: WebTransportReceiveStream;
48
- readableController: ReadableStreamDefaultController<Uint8Array>;
55
+ readableController: import("stream/web").ReadableByteStreamController;
49
56
  cancelres: (() => void) | null;
50
57
  readableclosed: boolean;
51
58
  /** @type {WebTransportSendStream} */
52
59
  writable: WebTransportSendStream;
53
60
  writableController: import("stream/web").WritableStreamDefaultController;
54
61
  abortres: (() => void) | null;
62
+ drainBuffer(): void;
55
63
  /**
56
64
  * @param {import('./types').StreamRecvSignalEvent} args
57
65
  * @returns {void}
@@ -1 +1 @@
1
- {"version":3,"file":"stream.d.ts","sourceRoot":"","sources":["../../lib/stream.js"],"names":[],"mappings":";AAEA;;;;;;;;;;;;;;GAcG;AAEH;IAwSE;;OAEG;IACH,sBAFW,qBAAqB,GAAG,eAAe,GAAG,gBAAgB,GAAG,gBAAgB,GAAG,wBAAwB,QAmClH;IA3UD;;;;;;;OAOG;IACH;QANqC,MAAM,EAAhC,mBAAmB;QACE,SAAS,EAA9B,cAAc;QACD,SAAS,EAAtB,MAAM;QACQ,aAAa,EAA3B,OAAO;QACO,QAAQ,EAAtB,OAAO;OAwIjB;IArIC,8CAAyB;IAEzB,8CAA+B;IAC/B,kBAA+B;IAC/B,uBAAuC;IACvC,kBAA6B;IAC7B,gBAAmB;IAEnB,mCAAmC;IACnC,kBADW,QAAQ,IAAI,CAAC,GAAG,IAAI,CACH;IAC5B,mBAuHkB,IAAI,SAvHA;IAIpB,wCAAwC;IACxC,oCAkCC;IA7BK,gEAAoC;IAelC,kBA4FQ,IAAI,SA5FY;IAQ1B,wBAA0B;IAiBhC,qCAAqC;IACrC,iCAuDC;IApDK,yEAAoC;IA6ClC,iBAsBQ,IAAI,SAtBW;IA0BnC;;;OAGG;IACH,yBAHW,OAAO,SAAS,EAAE,qBAAqB,GACrC,IAAI,CAgDhB;IAhBO,oCAA0B;IAkBlC;;;OAGG;IACH,mBAHW,eAAe,GACb,IAAI,CAuBhB;IAED;;OAEG;IACH,oBAFW,gBAAgB,QAY1B;IAED;;OAEG;IACH,oBAFW,gBAAgB,QAe1B;IAED;;OAEG;IACH,4BAFW,wBAAwB,QAoClC;IAzBK,qCAA2B;CAgElC;;;;6CA3VY,OAAO,SAAS,EAAE,8BAA8B;;;;oCAChD,OAAO,SAAS,EAAE,qBAAqB;;;;8BACvC,OAAO,SAAS,EAAE,eAAe;;;;+BACjC,OAAO,SAAS,EAAE,gBAAgB;;;;+BAClC,OAAO,SAAS,EAAE,gBAAgB;;;;uCAClC,OAAO,SAAS,EAAE,wBAAwB;;;;kCAE1C,OAAO,SAAS,EAAE,mBAAmB;;;;6BAErC,OAAO,WAAW,EAAE,cAAc;;;;8CAElC,OAAO,YAAY,EAAE,+BAA+B"}
1
+ {"version":3,"file":"stream.d.ts","sourceRoot":"","sources":["../../lib/stream.js"],"names":[],"mappings":";AAEA;;;;;;;;;;;;;;GAcG;AAEH;IA6YE;;OAEG;IACH,sBAFW,qBAAqB,GAAG,eAAe,GAAG,gBAAgB,GAAG,gBAAgB,GAAG,wBAAwB,QAsClH;IAnbD;;;;;;;OAOG;IACH;QANqC,MAAM,EAAhC,mBAAmB;QACE,SAAS,EAA9B,cAAc;QACD,SAAS,EAAtB,MAAM;QACQ,aAAa,EAA3B,OAAO;QACO,QAAQ,EAAtB,OAAO;OA+JjB;IA5JC,8CAAyB;IAEzB,8CAA+B;IAC/B,kBAA+B;IAC/B,uBAAuC;IACvC,kBAA6B;IAC7B,gBAAmB;IAEnB,mCAAmC;IACnC,kBADW,QAAQ,IAAI,CAAC,GAAG,IAAI,CACH;IAC5B,mBA8IkB,IAAI,SA9IA;IAEtB,mCAAmC;IACnC,sBADW,QAAQ,IAAI,CAAC,GAAG,IAAI,CACC;IAChC,mEAA0B;IAGxB,qBAAqB;IACrB,6BAA6B;IAC7B,qBAAqB;IACrB,8BAA8B;IAI9B,wCAAwC;IACxC,oCA+CC;IA1CK,sEAAoC;IA0BlC,kBA8FQ,IAAI,SA9FY;IAQ1B,wBAA0B;IAmBhC,qCAAqC;IACrC,iCAuDC;IApDK,yEAAoC;IA6ClC,iBAsBQ,IAAI,SAtBW;IA0BnC,oBAsDC;IAED;;;OAGG;IACH,yBAHW,OAAO,SAAS,EAAE,qBAAqB,GACrC,IAAI,CAwDhB;IAxBO,oCAA0B;IA0BlC;;;OAGG;IACH,mBAHW,eAAe,GACb,IAAI,CAqChB;IAED;;OAEG;IACH,oBAFW,gBAAgB,QAY1B;IAED;;OAEG;IACH,oBAFW,gBAAgB,QAe1B;IAED;;OAEG;IACH,4BAFW,wBAAwB,QAoClC;IAzBK,qCAA2B;CAmElC;;;;6CAncY,OAAO,SAAS,EAAE,8BAA8B;;;;oCAChD,OAAO,SAAS,EAAE,qBAAqB;;;;8BACvC,OAAO,SAAS,EAAE,eAAe;;;;+BACjC,OAAO,SAAS,EAAE,gBAAgB;;;;+BAClC,OAAO,SAAS,EAAE,gBAAgB;;;;uCAClC,OAAO,SAAS,EAAE,wBAAwB;;;;kCAE1C,OAAO,SAAS,EAAE,mBAAmB;;;;6BAErC,OAAO,WAAW,EAAE,cAAc;;;;8CAElC,OAAO,YAAY,EAAE,+BAA+B"}
@@ -7,6 +7,7 @@ export interface NativeHttp3WTSession {
7
7
  writeDatagram: (chunk: Uint8Array) => void;
8
8
  orderUnidiStream: () => void;
9
9
  orderBidiStream: () => void;
10
+ notifySessionDraining(): () => void;
10
11
  close: (arg: {
11
12
  code: number;
12
13
  reason: string;
@@ -16,7 +17,9 @@ export interface NativeHttp3WTSession {
16
17
  * Native Http3WTStream counterpart
17
18
  */
18
19
  export interface NativeHttp3WTStream {
20
+ updateReadPos(bytesread: Number, pos: Number): unknown;
19
21
  jsobj: WebTransportStreamEventHandler;
22
+ readbuffer: Uint8Array | undefined;
20
23
  startReading: () => void;
21
24
  stopReading: () => void;
22
25
  stopSending: (code: number) => void;
@@ -35,8 +38,9 @@ export interface StreamRecvSignalEvent {
35
38
  export interface StreamReadEvent {
36
39
  object: NativeHttp3WTStream;
37
40
  purpose: 'StreamRead';
38
- data?: Uint8Array;
41
+ buffergrow?: number;
39
42
  fin?: boolean;
43
+ success?: boolean;
40
44
  }
41
45
  export interface StreamWriteEvent {
42
46
  object: NativeHttp3WTStream;
@@ -77,6 +81,10 @@ export interface DatagramSendEvent {
77
81
  object: NativeHttp3WTSession;
78
82
  purpose: 'DatagramSend';
79
83
  }
84
+ export interface GoawayReceivedEvent {
85
+ object: NativeHttp3WTSession;
86
+ purpose: 'GoawayReceived';
87
+ }
80
88
  export interface NewStreamEvent {
81
89
  object: NativeHttp3WTSession;
82
90
  purpose: 'Http3WTStreamVisitor';
@@ -90,6 +98,7 @@ export interface WebTransportSessionEventHandler {
90
98
  onClose: (evt: SessionCloseEvent) => void;
91
99
  onDatagramReceived: (evt: DatagramReceivedEvent) => void;
92
100
  onDatagramSend: (evt: DatagramSendEvent) => void;
101
+ onGoAwayReceived: (evt: GoawayReceivedEvent) => void;
93
102
  onStream: (evt: NewStreamEvent) => void;
94
103
  closeHook?: (() => void) | null;
95
104
  }
@@ -150,7 +159,7 @@ export interface Deferred<T = unknown> {
150
159
  resolve: (value?: T) => void;
151
160
  reject: (reason?: any) => void;
152
161
  }
153
- export declare type WebTransportSessionState = 'connected' | 'closed' | 'failed';
162
+ export declare type WebTransportSessionState = 'connected' | 'draining' | 'closed' | 'failed';
154
163
  export interface WebTransportSession extends WebTransport {
155
164
  state: WebTransportSessionState;
156
165
  }
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../lib/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../lib/types.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"bidirectional-streams.spec.d.ts","sourceRoot":"","sources":["../../test/bidirectional-streams.spec.js"],"names":[],"mappings":";;;0BAYa,OAAO,cAAc,EAAE,QAAQ,CAAC,CAAC,CAAC"}
1
+ {"version":3,"file":"bidirectional-streams.spec.d.ts","sourceRoot":"","sources":["../../test/bidirectional-streams.spec.js"],"names":[],"mappings":";;;0BAaa,OAAO,cAAc,EAAE,QAAQ,CAAC,CAAC,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"datagrams.spec.d.ts","sourceRoot":"","sources":["../../test/datagrams.spec.js"],"names":[],"mappings":";;;0BAYa,OAAO,cAAc,EAAE,QAAQ,CAAC,CAAC,CAAC"}
1
+ {"version":3,"file":"datagrams.spec.d.ts","sourceRoot":"","sources":["../../test/datagrams.spec.js"],"names":[],"mappings":";;;0BAaa,OAAO,cAAc,EAAE,QAAQ,CAAC,CAAC,CAAC"}
@@ -0,0 +1,8 @@
1
+ /**
2
+ * @template T
3
+ * @param {Promise<T>} promise
4
+ * @param {number} timeout
5
+ * @returns {Promise<T>}
6
+ */
7
+ export function pTimeout<T>(promise: Promise<T>, timeout: number): Promise<T>;
8
+ //# sourceMappingURL=p-timeout.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"p-timeout.d.ts","sourceRoot":"","sources":["../../../test/fixtures/p-timeout.js"],"names":[],"mappings":"AAWA;;;;;GAKG;AACH,0DAHW,MAAM,cAkBhB"}
@@ -1 +1 @@
1
- {"version":3,"file":"read-stream.d.ts","sourceRoot":"","sources":["../../../test/fixtures/read-stream.js"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,wGA2BC"}
1
+ {"version":3,"file":"read-stream.d.ts","sourceRoot":"","sources":["../../../test/fixtures/read-stream.js"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,wGA8BC"}
@@ -1 +1 @@
1
- {"version":3,"file":"unidirectional-streams.spec.d.ts","sourceRoot":"","sources":["../../test/unidirectional-streams.spec.js"],"names":[],"mappings":";;;0BAYa,OAAO,cAAc,EAAE,QAAQ,CAAC,CAAC,CAAC"}
1
+ {"version":3,"file":"unidirectional-streams.spec.d.ts","sourceRoot":"","sources":["../../test/unidirectional-streams.spec.js"],"names":[],"mappings":";;;0BAaa,OAAO,cAAc,EAAE,QAAQ,CAAC,CAAC,CAAC"}
package/lib/session.js CHANGED
@@ -8,6 +8,7 @@ import { Http3WTStream } from './stream.js'
8
8
  * @typedef {import('./types').SessionCloseEvent} SessionCloseEvent
9
9
  * @typedef {import('./types').DatagramReceivedEvent} DatagramReceivedEvent
10
10
  * @typedef {import('./types').DatagramSendEvent} DatagramSendEvent
11
+ * @typedef {import('./types').GoawayReceivedEvent} GoawayReceivedEvent
11
12
  * @typedef {import('./types').NewStreamEvent} NewStreamEvent
12
13
  *
13
14
  * @typedef {import('./dom').WebTransportCloseInfo} WebTransportCloseInfo
@@ -200,6 +201,13 @@ export class Http3WTSession {
200
201
  }
201
202
  }
202
203
 
204
+ notifySessionDraining() {
205
+ if (this.objint == null) {
206
+ throw new Error('this.objint not set')
207
+ }
208
+ this.objint.notifySessionDraining()
209
+ }
210
+
203
211
  /**
204
212
  * @param {Http3WTStream} stream
205
213
  */
@@ -420,7 +428,15 @@ export class Http3WTSession {
420
428
  }
421
429
 
422
430
  /**
423
- * @param {SessionReadyEvent | SessionCloseEvent | DatagramReceivedEvent | DatagramSendEvent | NewStreamEvent} args
431
+ * @param {GoawayReceivedEvent} args
432
+ */
433
+ onGoAwayReceived(args) {
434
+ if (this.drainingResolve) this.drainingResolve(undefined)
435
+ this.state = 'draining'
436
+ }
437
+
438
+ /**
439
+ * @param {SessionReadyEvent | SessionCloseEvent | DatagramReceivedEvent | DatagramSendEvent | GoawayReceivedEvent | NewStreamEvent} args
424
440
  */
425
441
  static callback(args) {
426
442
  // console.log('Session callback called', args)
@@ -442,6 +458,9 @@ export class Http3WTSession {
442
458
  case 'DatagramSend':
443
459
  if (visitor) visitor.onDatagramSend(args)
444
460
  break
461
+ case 'GoawayReceived':
462
+ visitor.onGoAwayReceived(args)
463
+ break
445
464
  case 'Http3WTStreamVisitor':
446
465
  if (
447
466
  visitor &&
package/lib/stream.js CHANGED
@@ -38,25 +38,46 @@ export class Http3WTStream {
38
38
  this.pendingoperation = null
39
39
  this.pendingres = null
40
40
 
41
+ /** @type {Promise<void> | null} */
42
+ this.pendingoperationRead = null
43
+ this.pendingresRead = null
44
+
41
45
  if (this.bidirectional || this.incoming) {
42
- // @ts-expect-error `getStats` property is missing from ReadavleStream
46
+ /** @type {Number} */
47
+ this.incomingbufferfilled = 0
48
+ /** @type {Number} */
49
+ this.incomingbufferreadpos = 0
50
+ if (!this.objint.readbuffer)
51
+ throw new Error('No readbuffer for read stream')
52
+ // @ts-expect-error `getStats` property is missing from ReadableStream
43
53
  /** @type {WebTransportReceiveStream} */
44
54
  this.readable = new ReadableStream(
45
55
  {
46
56
  start: (
47
- /** @type {ReadableStreamDefaultController<Uint8Array>} */ controller
57
+ /** @type {import("stream/web").ReadableByteStreamController} */ controller
48
58
  ) => {
49
59
  this.readableController = controller
50
60
  this.parentobj.addReceiveStream(this.readable, controller)
51
61
  this.objint.startReading()
52
62
  },
53
- pull: (
54
- /** @type {ReadableStreamDefaultController<Uint8Array>} */ controller
63
+ pull: async (
64
+ /** @type {import("stream/web").ReadableByteStreamController} */ controller
55
65
  ) => {
56
66
  if (this.readableclosed) {
57
67
  return Promise.resolve()
58
68
  }
59
- this.objint.startReading()
69
+
70
+ /** @type {Uint8Array} */
71
+ if (this.incomingbufferfilled === 0) {
72
+ this.pendingoperationRead = new Promise((resolve, reject) => {
73
+ this.pendingresRead = resolve
74
+ })
75
+ await this.pendingoperationRead
76
+ }
77
+ if (this.incomingbufferfilled === 0)
78
+ throw new Error('error reading')
79
+
80
+ this.drainBuffer()
60
81
  },
61
82
  cancel: (/** @type {{ code: number; }} */ reason) => {
62
83
  /** @type {Promise<void>} */
@@ -72,9 +93,11 @@ export class Http3WTStream {
72
93
  this.readableclosed = true
73
94
  this.objint.stopSending(code)
74
95
  return promise
75
- }
76
- },
77
- { highWaterMark: 4 }
96
+ },
97
+ type: 'bytes',
98
+ autoAllocateChunkSize: 4096 // lets take this as buffer size
99
+ }
100
+ // TODO fix stretegy
78
101
  )
79
102
  this.readable.getStats = () => {
80
103
  return Promise.resolve({
@@ -161,6 +184,62 @@ export class Http3WTStream {
161
184
  this.abortres = null
162
185
  }
163
186
 
187
+ drainBuffer() {
188
+ const byob = this.readableController.byobRequest
189
+ // @ts-ignore
190
+ const view = byob?.view
191
+ // @ts-ignore
192
+ if (!(byob?.view instanceof Uint8Array))
193
+ throw new Error('byob view is not a Uint8Array')
194
+ let toread = Math.min(view.byteLength, this.incomingbufferfilled)
195
+ let read = 0
196
+ if (!this.objint.readbuffer)
197
+ throw new Error('No readbuffer in read for read stream')
198
+ if (
199
+ this.incomingbufferreadpos + toread >
200
+ this.objint.readbuffer.byteLength
201
+ ) {
202
+ /** @type {Number} */
203
+ const firstread =
204
+ this.objint.readbuffer.byteLength - this.incomingbufferreadpos
205
+ read += firstread
206
+ toread -= firstread
207
+ const destview = new Uint8Array(
208
+ view.buffer,
209
+ 0 + view.byteOffset,
210
+ firstread
211
+ )
212
+ const srcview = new Uint8Array(
213
+ this.objint.readbuffer,
214
+ this.incomingbufferreadpos,
215
+ firstread
216
+ )
217
+ destview.set(srcview)
218
+ this.incomingbufferreadpos = 0
219
+ }
220
+ {
221
+ const destview = new Uint8Array(
222
+ view.buffer,
223
+ read + view.byteOffset,
224
+ toread
225
+ )
226
+ const srcview = new Uint8Array(
227
+ this.objint.readbuffer,
228
+ this.incomingbufferreadpos,
229
+ toread
230
+ )
231
+ destview.set(srcview)
232
+ read += toread
233
+ this.incomingbufferreadpos =
234
+ (this.incomingbufferreadpos + toread) %
235
+ this.objint.readbuffer.byteLength
236
+ }
237
+ // @ts-ignore
238
+ byob.respond(read)
239
+ this.incomingbufferfilled -= read
240
+ this.objint.updateReadPos(read, this.incomingbufferreadpos)
241
+ }
242
+
164
243
  /**
165
244
  * @param {import('./types').StreamRecvSignalEvent} args
166
245
  * @returns {void}
@@ -211,6 +290,14 @@ export class Http3WTStream {
211
290
  res()
212
291
  }
213
292
  }
293
+ if (this.pendingoperationRead) {
294
+ const res = this.pendingresRead
295
+ this.pendingoperationRead = null
296
+ this.pendingresRead = null
297
+ if (res != null) {
298
+ res()
299
+ }
300
+ }
214
301
  }
215
302
 
216
303
  /**
@@ -218,9 +305,16 @@ export class Http3WTStream {
218
305
  * @returns {void}
219
306
  */
220
307
  onStreamRead(args) {
221
- if (args.data && args.data.length && !this.readableclosed) {
308
+ if (args.buffergrow && !this.readableclosed) {
309
+ this.incomingbufferfilled += args.buffergrow
222
310
  // console.log('stream read received', args.data, Date.now())
223
- this.readableController.enqueue(args.data)
311
+ if (this.pendingoperationRead) {
312
+ // this.readableController.enqueue(data)
313
+ const res = this.pendingresRead
314
+ this.pendingoperationRead = null
315
+ this.pendingresRead = null
316
+ if (res) res()
317
+ }
224
318
  if (
225
319
  this.readableController.desiredSize != null &&
226
320
  this.readableController.desiredSize < 0
@@ -228,6 +322,13 @@ export class Http3WTStream {
228
322
  this.objint.stopReading()
229
323
  }
230
324
  if (args.fin) {
325
+ if (this.incomingbufferfilled > 0) {
326
+ console.log('Warning buffer filled and we got a fin')
327
+ if (this.pendingoperationRead || this.pendingresRead)
328
+ throw new Error('We have pendingoperationRead and a filled buffer?')
329
+
330
+ this.drainBuffer()
331
+ }
231
332
  if (this.cancelres) {
232
333
  const res = this.cancelres
233
334
  this.cancelres = null
@@ -326,7 +427,10 @@ export class Http3WTStream {
326
427
  visitor.onStreamRecvSignal(args)
327
428
  break
328
429
  case 'StreamRead':
329
- if (visitor && Object.prototype.hasOwnProperty.call(args, 'data')) {
430
+ if (
431
+ visitor &&
432
+ Object.prototype.hasOwnProperty.call(args, 'buffergrow')
433
+ ) {
330
434
  visitor.onStreamRead(args)
331
435
  } else {
332
436
  console.log('Stream callback called', visitor, args)
package/lib/types.ts CHANGED
@@ -9,6 +9,7 @@ import type { WebTransport } from './dom'
9
9
  orderUnidiStream: () => void
10
10
  orderBidiStream: () => void
11
11
  // orderStats: () => void
12
+ notifySessionDraining(): () => void
12
13
  close: (arg: { code: number, reason: string }) => void
13
14
  }
14
15
 
@@ -16,7 +17,9 @@ import type { WebTransport } from './dom'
16
17
  * Native Http3WTStream counterpart
17
18
  */
18
19
  export interface NativeHttp3WTStream {
20
+ updateReadPos(bytesread: Number, pos: Number): unknown
19
21
  jsobj: WebTransportStreamEventHandler
22
+ readbuffer: Uint8Array | undefined
20
23
  startReading: () => void
21
24
  stopReading: () => void
22
25
  stopSending: (code: number) => void
@@ -38,8 +41,9 @@ export interface StreamRecvSignalEvent {
38
41
  export interface StreamReadEvent {
39
42
  object: NativeHttp3WTStream
40
43
  purpose: 'StreamRead'
41
- data?: Uint8Array
44
+ buffergrow?: number
42
45
  fin?: boolean
46
+ success?: boolean
43
47
  }
44
48
 
45
49
  export interface StreamWriteEvent {
@@ -89,6 +93,11 @@ export interface DatagramSendEvent {
89
93
  purpose: 'DatagramSend'
90
94
  }
91
95
 
96
+ export interface GoawayReceivedEvent {
97
+ object: NativeHttp3WTSession
98
+ purpose: 'GoawayReceived'
99
+ }
100
+
92
101
  export interface NewStreamEvent {
93
102
  object: NativeHttp3WTSession
94
103
  purpose: 'Http3WTStreamVisitor'
@@ -103,6 +112,7 @@ export interface WebTransportSessionEventHandler {
103
112
  onClose: (evt: SessionCloseEvent) => void
104
113
  onDatagramReceived: (evt: DatagramReceivedEvent) => void
105
114
  onDatagramSend: (evt: DatagramSendEvent) => void
115
+ onGoAwayReceived: (evt: GoawayReceivedEvent) => void
106
116
  onStream: (evt: NewStreamEvent) => void
107
117
  closeHook?: (() => void) | null
108
118
  }
@@ -175,7 +185,7 @@ export interface Deferred<T = unknown> {
175
185
  reject: (reason?: any) => void
176
186
  }
177
187
 
178
- export type WebTransportSessionState = 'connected' | 'closed' | 'failed'
188
+ export type WebTransportSessionState = 'connected' | 'draining' | 'closed' | 'failed'
179
189
 
180
190
  export interface WebTransportSession extends WebTransport {
181
191
  state: WebTransportSessionState
package/package.json CHANGED
@@ -1,11 +1,11 @@
1
1
  {
2
2
  "name": "@fails-components/webtransport",
3
- "version": "0.1.7",
3
+ "version": "0.2.0",
4
4
  "description": "A component to add webtransport support (server and client) to node.js using libquiche",
5
5
  "main": "lib/index.js",
6
6
  "module": "lib/index.js",
7
7
  "engines": {
8
- "node": ">=16"
8
+ "node": ">=16.5"
9
9
  },
10
10
  "type": "module",
11
11
  "types": "./dist/lib/index.d.ts",
@@ -60,7 +60,8 @@
60
60
  "mocha": "^10.1.0",
61
61
  "node-forge": "^1.3.1",
62
62
  "prettier": "^2.4.1",
63
- "typescript": "4.8.4"
63
+ "typescript": "4.8.4",
64
+ "uint8arrays": "^4.0.2"
64
65
  },
65
66
  "binary": {
66
67
  "napi_versions": [
@@ -0,0 +1,5 @@
1
+ // adds string to the includes of google url
2
+ #include <string>
3
+ #warning "Fake utf_stream_operators.h included"
4
+
5
+ #include "third_party/googleurl/base/strings/utf_ostream_operators.h"