@fails-components/webtransport 0.0.9 → 0.1.0-macarmbuild.6

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 (90) hide show
  1. package/CMakeLists.txt +110 -73
  2. package/build.js +32 -8
  3. package/dist/lib/client.d.ts +74 -0
  4. package/dist/lib/client.d.ts.map +1 -0
  5. package/dist/lib/dom.d.ts +70 -0
  6. package/dist/lib/dom.d.ts.map +1 -0
  7. package/dist/lib/event-loop.d.ts +26 -0
  8. package/dist/lib/event-loop.d.ts.map +1 -0
  9. package/dist/lib/index.d.ts +79 -0
  10. package/dist/lib/index.d.ts.map +1 -0
  11. package/dist/lib/native.d.ts +2 -0
  12. package/dist/lib/native.d.ts.map +1 -0
  13. package/dist/lib/server.d.ts +75 -0
  14. package/dist/lib/server.d.ts.map +1 -0
  15. package/dist/lib/session.d.ts +221 -0
  16. package/dist/lib/session.d.ts.map +1 -0
  17. package/dist/lib/stream.d.ts +116 -0
  18. package/dist/lib/stream.d.ts.map +1 -0
  19. package/dist/lib/transport.d.ts +25 -0
  20. package/dist/lib/transport.d.ts.map +1 -0
  21. package/dist/lib/types.d.ts +157 -0
  22. package/dist/lib/types.d.ts.map +1 -0
  23. package/dist/lib/utils.d.ts +6 -0
  24. package/dist/lib/utils.d.ts.map +1 -0
  25. package/dist/lib/webtransport.d.ts +35 -0
  26. package/dist/lib/webtransport.d.ts.map +1 -0
  27. package/dist/test/bidirectional-streams.spec.d.ts +5 -0
  28. package/dist/test/bidirectional-streams.spec.d.ts.map +1 -0
  29. package/dist/test/datagrams.spec.d.ts +5 -0
  30. package/dist/test/datagrams.spec.d.ts.map +1 -0
  31. package/dist/test/echoclient.d.ts +2 -0
  32. package/dist/test/echoclient.d.ts.map +1 -0
  33. package/dist/test/echoserver.d.ts +2 -0
  34. package/dist/test/echoserver.d.ts.map +1 -0
  35. package/dist/test/event-loop.spec.d.ts +2 -0
  36. package/dist/test/event-loop.spec.d.ts.map +1 -0
  37. package/dist/test/fixtures/certificate.d.ts +21 -0
  38. package/dist/test/fixtures/certificate.d.ts.map +1 -0
  39. package/dist/test/fixtures/chai.d.ts +2 -0
  40. package/dist/test/fixtures/chai.d.ts.map +1 -0
  41. package/dist/test/fixtures/read-stream.d.ts +10 -0
  42. package/dist/test/fixtures/read-stream.d.ts.map +1 -0
  43. package/dist/test/fixtures/reader-value.d.ts +7 -0
  44. package/dist/test/fixtures/reader-value.d.ts.map +1 -0
  45. package/dist/test/fixtures/server.d.ts +10 -0
  46. package/dist/test/fixtures/server.d.ts.map +1 -0
  47. package/dist/test/fixtures/write-stream.d.ts +10 -0
  48. package/dist/test/fixtures/write-stream.d.ts.map +1 -0
  49. package/dist/test/test.d.ts +2 -0
  50. package/dist/test/test.d.ts.map +1 -0
  51. package/dist/test/testsuite.d.ts +25 -0
  52. package/dist/test/testsuite.d.ts.map +1 -0
  53. package/dist/test/unidirectional-streams.spec.d.ts +5 -0
  54. package/dist/test/unidirectional-streams.spec.d.ts.map +1 -0
  55. package/lib/client.js +163 -0
  56. package/lib/dom.ts +95 -0
  57. package/lib/event-loop.js +79 -0
  58. package/lib/index.js +33 -0
  59. package/lib/native.js +25 -0
  60. package/lib/server.js +165 -0
  61. package/lib/session.js +422 -0
  62. package/lib/stream.js +325 -0
  63. package/lib/transport.js +42 -0
  64. package/lib/types.ts +181 -0
  65. package/lib/utils.js +22 -0
  66. package/lib/webtransport.js +114 -0
  67. package/package.json +18 -6
  68. package/readme.md +28 -5
  69. package/src/http3client.h +0 -1
  70. package/src/http3eventloop.cc +52 -0
  71. package/src/http3eventloop.h +22 -1
  72. package/src/http3server.cc +4 -1
  73. package/src/http3server.h +8 -0
  74. package/src/http3serversession.h +1 -1
  75. package/test/bidirectional-streams.spec.js +138 -0
  76. package/test/datagrams.spec.js +132 -0
  77. package/test/echoclient.js +10 -6
  78. package/test/echoserver.js +6 -8
  79. package/test/event-loop.spec.js +24 -0
  80. package/test/{certificate.js → fixtures/certificate.js} +31 -15
  81. package/test/fixtures/chai.js +6 -0
  82. package/test/fixtures/read-stream.js +36 -0
  83. package/test/fixtures/reader-value.js +24 -0
  84. package/test/fixtures/server.js +58 -0
  85. package/test/fixtures/write-stream.js +17 -0
  86. package/test/test.js +29 -3
  87. package/test/testsuite.js +22 -0
  88. package/test/unidirectional-streams.spec.js +128 -0
  89. package/tsconfig.json +40 -0
  90. package/src/webtransport.js +0 -870
@@ -0,0 +1,75 @@
1
+ /// <reference types="node" />
2
+ /**
3
+ * @typedef {import('./types').WebTransportSession} WebTransportSession
4
+ * @typedef {import('./types').NativeHttp3WTSession} NativeHttp3WTSession
5
+ * @typedef {import('./types').Http3ServerEventHandler} Http3ServerEventHandler
6
+ * @typedef {import('./types').Http3WTServerSessionVisitorEvent} Http3WTServerSessionVisitorEvent
7
+ * @typedef {import('./types').ServerStatusEvent} ServerStatusEvent
8
+ * @typedef {import('./types').Http3ServerInit} Http3ServerInit
9
+ */
10
+ /**
11
+ * @implements {Http3ServerEventHandler}
12
+ */
13
+ export class Http3Server extends Http3WebTransport implements Http3ServerEventHandler {
14
+ /**
15
+ *
16
+ * @param {Http3ServerInit} args
17
+ */
18
+ constructor(args: Http3ServerInit);
19
+ /** @type {Record<string, ReadableStream>} */
20
+ sessionStreams: Record<string, ReadableStream>;
21
+ /** @type {Record<string, ReadableStreamController<any>>} */
22
+ sessionController: Record<string, ReadableStreamController<any>>;
23
+ port: number | null;
24
+ host: string | null;
25
+ _ready: import("./types").Deferred<unknown>;
26
+ ready: Promise<unknown>;
27
+ _closed: import("./types").Deferred<unknown>;
28
+ closed: Promise<unknown>;
29
+ startServer(): void;
30
+ stopServer(): void;
31
+ stopped: boolean | undefined;
32
+ /**
33
+ * @returns {{ port: number, host: string, family: 'IPv4' | 'IPv6' } | null}
34
+ */
35
+ address(): {
36
+ port: number;
37
+ host: string;
38
+ family: 'IPv4' | 'IPv6';
39
+ } | null;
40
+ /**
41
+ * @param {string} path
42
+ * @returns {ReadableStream<WebTransportSession>}
43
+ */
44
+ sessionStream(path: string): ReadableStream<WebTransportSession>;
45
+ /**
46
+ * @param {Http3WTServerSessionVisitorEvent} args
47
+ */
48
+ onHttp3WTSessionVisitor(args: Http3WTServerSessionVisitorEvent): void;
49
+ /**
50
+ */
51
+ onServerError(): void;
52
+ /**
53
+ */
54
+ onServerListening(): void;
55
+ /**
56
+ */
57
+ onServerClose(): void;
58
+ /**
59
+ * @param {ServerStatusEvent} evt
60
+ */
61
+ onServerStatus(evt: ServerStatusEvent): void;
62
+ /**
63
+ * @param {Http3WTServerSessionVisitorEvent | ServerStatusEvent} args
64
+ */
65
+ customCallback(args: Http3WTServerSessionVisitorEvent | ServerStatusEvent): void;
66
+ }
67
+ export type WebTransportSession = import('./types').WebTransportSession;
68
+ export type NativeHttp3WTSession = import('./types').NativeHttp3WTSession;
69
+ export type Http3ServerEventHandler = import('./types').Http3ServerEventHandler;
70
+ export type Http3WTServerSessionVisitorEvent = import('./types').Http3WTServerSessionVisitorEvent;
71
+ export type ServerStatusEvent = import('./types').ServerStatusEvent;
72
+ export type Http3ServerInit = import('./types').Http3ServerInit;
73
+ import { Http3WebTransport } from "./transport.js";
74
+ import { ReadableStream } from "stream/web";
75
+ //# sourceMappingURL=server.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../lib/server.js"],"names":[],"mappings":";AAOA;;;;;;;GAOG;AAEH;;GAEG;AACH;IACE;;;OAGG;IACH,kBAFW,eAAe,EAmBzB;IAdC,6CAA6C;IAC7C,gBADW,OAAO,MAAM,EAAE,cAAc,CAAC,CACjB;IAExB,4DAA4D;IAC5D,mBADW,OAAO,MAAM,EAAE,yBAAyB,GAAG,CAAC,CAAC,CAC7B;IAE3B,oBAAgB;IAChB,oBAAgB;IAEhB,4CAAqB;IACrB,wBAAgC;IAEhC,6CAAsB;IACtB,yBAAkC;IAGpC,oBAEC;IAED,mBAOC;IADC,6BAAmB;IAGrB;;OAEG;IACH,WAFa;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAAA;KAAE,GAAG,IAAI,CAa1E;IAED;;;OAGG;IACH,oBAHW,MAAM,GACJ,eAAe,mBAAmB,CAAC,CAa/C;IAED;;OAEG;IACH,8BAFW,gCAAgC,QAY1C;IAED;OACG;IACH,sBAEC;IAED;OACG;IACH,0BAEC;IAED;OACG;IACH,sBAEC;IAED;;OAEG;IACH,oBAFW,iBAAiB,QAoB3B;IAED;;OAEG;IACH,qBAFW,gCAAgC,GAAG,iBAAiB,QAiB9D;CACF;kCA5JY,OAAO,SAAS,EAAE,mBAAmB;mCACrC,OAAO,SAAS,EAAE,oBAAoB;sCACtC,OAAO,SAAS,EAAE,uBAAuB;+CACzC,OAAO,SAAS,EAAE,gCAAgC;gCAClD,OAAO,SAAS,EAAE,iBAAiB;8BACnC,OAAO,SAAS,EAAE,eAAe"}
@@ -0,0 +1,221 @@
1
+ /// <reference types="node" />
2
+ /**
3
+ * WebTransport session events
4
+ * @typedef {import('./types').WebTransportSessionEventHandler} WebTransportSessionEventHandler
5
+ * @typedef {import('./types').SessionReadyEvent} SessionReadyEvent
6
+ * @typedef {import('./types').SessionCloseEvent} SessionCloseEvent
7
+ * @typedef {import('./types').DatagramReceivedEvent} DatagramReceivedEvent
8
+ * @typedef {import('./types').DatagramSendEvent} DatagramSendEvent
9
+ * @typedef {import('./types').NewStreamEvent} NewStreamEvent
10
+ *
11
+ * @typedef {import('./dom').WebTransportCloseInfo} WebTransportCloseInfo
12
+ * @typedef {import('./dom').WebTransportBidirectionalStream} WebTransportBidirectionalStream
13
+ * @typedef {import('./dom').WebTransportSendStream} WebTransportSendStream
14
+ * @typedef {import('./dom').WebTransportDatagramDuplexStream} WebTransportDatagramDuplexStream
15
+ *
16
+ * @typedef {import('./types').NativeHttp3WTSession} NativeHttp3WTSession
17
+ *
18
+ * Public API
19
+ * @typedef {import('./types').WebTransportSession} WebTransportSession
20
+ *
21
+ * @typedef {import('./server').Http3Server} Http3Server
22
+ * @typedef {import('./client').Http3Client} Http3Client
23
+ *
24
+ * @typedef {import('stream/web').WritableStreamDefaultController} WritableStreamDefaultController
25
+ */
26
+ /**
27
+ * @implements {WebTransportSessionEventHandler}
28
+ * @implements {WebTransportSession}
29
+ */
30
+ export class Http3WTSession implements WebTransportSessionEventHandler, WebTransportSession {
31
+ /**
32
+ * @param {SessionReadyEvent | SessionCloseEvent | DatagramReceivedEvent | DatagramSendEvent | NewStreamEvent} args
33
+ */
34
+ static callback(args: SessionReadyEvent | SessionCloseEvent | DatagramReceivedEvent | DatagramSendEvent | NewStreamEvent): void;
35
+ /**
36
+ * @param {object} args
37
+ * @param {import('./types').NativeHttp3WTSession} [args.object]
38
+ * @param {Http3Server | Http3Client} args.parentobj
39
+ */
40
+ constructor(args: {
41
+ object?: import("./types").NativeHttp3WTSession | undefined;
42
+ parentobj: Http3Server | Http3Client;
43
+ });
44
+ objint: import("./types").NativeHttp3WTSession | undefined;
45
+ parentobj: import("./server").Http3Server | import("./client").Http3Client;
46
+ /** @type {import('./types').WebTransportSessionState} */
47
+ state: import('./types').WebTransportSessionState;
48
+ /** @type {((value?: any) => void) | null | undefined} */
49
+ readyResolve: ((value?: any) => void) | null | undefined;
50
+ /** @type {(() => void) | null | undefined} */
51
+ closeHook: (() => void) | null | undefined;
52
+ /** @type {Promise<void>} */
53
+ ready: Promise<void>;
54
+ readyReject: (reason?: any) => void;
55
+ /** @type {Promise<WebTransportCloseInfo>} */
56
+ closed: Promise<WebTransportCloseInfo>;
57
+ closedResolve: (value: import("./dom").WebTransportCloseInfo | PromiseLike<import("./dom").WebTransportCloseInfo>) => void;
58
+ closedReject: (reason?: any) => void;
59
+ incomingBidirectionalStreams: ReadableStream<any>;
60
+ incomBiDiController: import("stream/web").ReadableStreamController<any>;
61
+ incomingUnidirectionalStreams: ReadableStream<any>;
62
+ incomUniDiController: import("stream/web").ReadableStreamController<any>;
63
+ /** @type {Array<() => void>} */
64
+ writeDatagramRes: (() => void)[];
65
+ /** @type {Array<() => void>} */
66
+ writeDatagramRej: (() => void)[];
67
+ /** @type {Array<Promise<void>>} */
68
+ writeDatagramProm: Array<Promise<void>>;
69
+ /** @type {WebTransportDatagramDuplexStream} */
70
+ datagrams: WebTransportDatagramDuplexStream;
71
+ incomDatagramController: import("stream/web").ReadableStreamController<Uint8Array>;
72
+ outgoDatagramController: import("stream/web").WritableStreamDefaultController;
73
+ /** @type {Array<(stream: WebTransportBidirectionalStream) => void>} */
74
+ resolveBiDi: ((stream: WebTransportBidirectionalStream) => void)[];
75
+ /** @type {Array<(stream: WebTransportSendStream) => void>} */
76
+ resolveUniDi: ((stream: WebTransportSendStream) => void)[];
77
+ /** @type {Array<(err?: Error) => void>} */
78
+ rejectBiDi: ((err?: Error) => void)[];
79
+ /** @type {Array<(err?: Error) => void>} */
80
+ rejectUniDi: ((err?: Error) => void)[];
81
+ sendStreams: Set<any>;
82
+ receiveStreams: Set<any>;
83
+ /** @type {Set<Http3WTStream>} */
84
+ streamObjs: Set<Http3WTStream>;
85
+ /** @type {Set<WritableStreamDefaultController>} */
86
+ sendStreamsController: Set<WritableStreamDefaultController>;
87
+ /** @type {Set<ReadableStreamDefaultController>} */
88
+ receiveStreamsController: Set<ReadableStreamDefaultController>;
89
+ /**
90
+ * @param {NativeHttp3WTSession} object
91
+ */
92
+ setSessionObj(object: NativeHttp3WTSession): void;
93
+ waitForDatagramsSend(): Promise<void>;
94
+ /**
95
+ * @param {Http3WTStream} stream
96
+ */
97
+ addStreamObj(stream: Http3WTStream): void;
98
+ /**
99
+ * @param {Http3WTStream} stream
100
+ */
101
+ removeStreamObj(stream: Http3WTStream): void;
102
+ /**
103
+ * @param {WritableStream} stream
104
+ * @param {WritableStreamDefaultController} controller
105
+ */
106
+ addSendStream(stream: WritableStream, controller: WritableStreamDefaultController): void;
107
+ /**
108
+ * @param {WritableStream} stream
109
+ * @param {WritableStreamDefaultController} controller
110
+ */
111
+ removeSendStream(stream: WritableStream, controller: WritableStreamDefaultController): void;
112
+ /**
113
+ * @param {ReadableStream} stream
114
+ * @param {ReadableStreamDefaultController} controller
115
+ */
116
+ addReceiveStream(stream: ReadableStream, controller: ReadableStreamDefaultController): void;
117
+ /**
118
+ * @param {ReadableStream} stream
119
+ * @param {ReadableStreamDefaultController} controller
120
+ */
121
+ removeReceiveStream(stream: ReadableStream, controller: ReadableStreamDefaultController): void;
122
+ /**
123
+ * @returns {Promise<WebTransportBidirectionalStream>}
124
+ */
125
+ createBidirectionalStream(): Promise<WebTransportBidirectionalStream>;
126
+ /**
127
+ *@returns {Promise<WebTransportSendStream>}
128
+ */
129
+ createUnidirectionalStream(): Promise<WebTransportSendStream>;
130
+ /**
131
+ * @param {object} [closeInfo]
132
+ * @param {number} closeInfo.closeCode
133
+ * @param {string} closeInfo.reason
134
+ * @returns {void}
135
+ */
136
+ close(closeInfo?: {
137
+ closeCode: number;
138
+ reason: string;
139
+ } | undefined): void;
140
+ onReady(): void;
141
+ /**
142
+ * @param {SessionCloseEvent} args
143
+ */
144
+ onClose(args: SessionCloseEvent): void;
145
+ /**
146
+ * @param {NewStreamEvent} args
147
+ */
148
+ onStream(args: NewStreamEvent): void;
149
+ /**
150
+ * @param {DatagramReceivedEvent} args
151
+ */
152
+ onDatagramReceived(args: DatagramReceivedEvent): void;
153
+ /**
154
+ * @param {DatagramSendEvent} args
155
+ */
156
+ onDatagramSend(args: DatagramSendEvent): void;
157
+ }
158
+ /**
159
+ * WebTransport session events
160
+ */
161
+ export type WebTransportSessionEventHandler = import('./types').WebTransportSessionEventHandler;
162
+ /**
163
+ * WebTransport session events
164
+ */
165
+ export type SessionReadyEvent = import('./types').SessionReadyEvent;
166
+ /**
167
+ * WebTransport session events
168
+ */
169
+ export type SessionCloseEvent = import('./types').SessionCloseEvent;
170
+ /**
171
+ * WebTransport session events
172
+ */
173
+ export type DatagramReceivedEvent = import('./types').DatagramReceivedEvent;
174
+ /**
175
+ * WebTransport session events
176
+ */
177
+ export type DatagramSendEvent = import('./types').DatagramSendEvent;
178
+ /**
179
+ * WebTransport session events
180
+ */
181
+ export type NewStreamEvent = import('./types').NewStreamEvent;
182
+ /**
183
+ * WebTransport session events
184
+ */
185
+ export type WebTransportCloseInfo = import('./dom').WebTransportCloseInfo;
186
+ /**
187
+ * WebTransport session events
188
+ */
189
+ export type WebTransportBidirectionalStream = import('./dom').WebTransportBidirectionalStream;
190
+ /**
191
+ * WebTransport session events
192
+ */
193
+ export type WebTransportSendStream = import('./dom').WebTransportSendStream;
194
+ /**
195
+ * WebTransport session events
196
+ */
197
+ export type WebTransportDatagramDuplexStream = import('./dom').WebTransportDatagramDuplexStream;
198
+ /**
199
+ * Public API
200
+ */
201
+ export type NativeHttp3WTSession = import('./types').NativeHttp3WTSession;
202
+ /**
203
+ * WebTransport session events
204
+ */
205
+ export type WebTransportSession = import('./types').WebTransportSession;
206
+ /**
207
+ * WebTransport session events
208
+ */
209
+ export type Http3Server = import('./server').Http3Server;
210
+ /**
211
+ * WebTransport session events
212
+ */
213
+ export type Http3Client = import('./client').Http3Client;
214
+ /**
215
+ * WebTransport session events
216
+ */
217
+ export type WritableStreamDefaultController = import('stream/web').WritableStreamDefaultController;
218
+ import { ReadableStream } from "stream/web";
219
+ import { Http3WTStream } from "./stream.js";
220
+ import { WritableStream } from "stream/web";
221
+ //# sourceMappingURL=session.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"session.d.ts","sourceRoot":"","sources":["../../lib/session.js"],"names":[],"mappings":"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"}
@@ -0,0 +1,116 @@
1
+ /// <reference types="node" />
2
+ /**
3
+ * WebTransport stream events
4
+ * @typedef {import('./types').WebTransportStreamEventHandler} WebTransportStreamEventHandler
5
+ * @typedef {import('./types').StreamRecvSignalEvent} StreamRecvSignalEvent
6
+ * @typedef {import('./types').StreamReadEvent} StreamReadEvent
7
+ * @typedef {import('./types').StreamWriteEvent} StreamWriteEvent
8
+ * @typedef {import('./types').StreamResetEvent} StreamResetEvent
9
+ * @typedef {import('./types').StreamNetworkFinishEvent} StreamNetworkFinishEvent
10
+ *
11
+ * @typedef {import('./types').NativeHttp3WTStream} NativeHttp3WTStream
12
+ *
13
+ * @typedef {import('./session').Http3WTSession} Http3WTSession
14
+ *
15
+ * @typedef {import('stream/web').WritableStreamDefaultController} WritableStreamDefaultController
16
+ */
17
+ export class Http3WTStream {
18
+ /**
19
+ * @param {StreamRecvSignalEvent | StreamReadEvent | StreamWriteEvent | StreamResetEvent | StreamNetworkFinishEvent} args
20
+ */
21
+ static callback(args: StreamRecvSignalEvent | StreamReadEvent | StreamWriteEvent | StreamResetEvent | StreamNetworkFinishEvent): void;
22
+ /**
23
+ * @param {object} args
24
+ * @param {NativeHttp3WTStream} args.object
25
+ * @param {Http3WTSession} args.parentobj
26
+ * @param {object} args.transport
27
+ * @param {boolean} args.bidirectional
28
+ * @param {boolean} args.incoming
29
+ */
30
+ constructor(args: {
31
+ object: NativeHttp3WTStream;
32
+ parentobj: Http3WTSession;
33
+ transport: object;
34
+ bidirectional: boolean;
35
+ incoming: boolean;
36
+ });
37
+ objint: import("./types").NativeHttp3WTStream;
38
+ parentobj: import("./session").Http3WTSession;
39
+ transport: object;
40
+ bidirectional: boolean;
41
+ incoming: boolean;
42
+ closed: boolean;
43
+ /** @type {Promise<void> | null} */
44
+ pendingoperation: Promise<void> | null;
45
+ pendingres: (() => void) | null;
46
+ readable: ReadableStream<any> | undefined;
47
+ readableController: import("stream/web").ReadableStreamController<any>;
48
+ cancelres: (() => void) | null;
49
+ readableclosed: boolean;
50
+ writable: WritableStream<any> | undefined;
51
+ writableController: import("stream/web").WritableStreamDefaultController;
52
+ abortres: (() => void) | null;
53
+ /**
54
+ * @param {import('./types').StreamRecvSignalEvent} args
55
+ * @returns {void}
56
+ */
57
+ onStreamRecvSignal(args: import('./types').StreamRecvSignalEvent): void;
58
+ writableclosed: boolean | undefined;
59
+ /**
60
+ * @param {StreamReadEvent} args
61
+ * @returns {void}
62
+ */
63
+ onStreamRead(args: StreamReadEvent): void;
64
+ /**
65
+ * @param {StreamWriteEvent} args
66
+ */
67
+ onStreamWrite(args: StreamWriteEvent): void;
68
+ /**
69
+ * @param {StreamResetEvent} args
70
+ */
71
+ onStreamReset(args: StreamResetEvent): void;
72
+ /**
73
+ * @param {StreamNetworkFinishEvent} args
74
+ */
75
+ onStreamNetworkFinish(args: StreamNetworkFinishEvent): void;
76
+ stopSendingRecv: boolean | undefined;
77
+ }
78
+ /**
79
+ * WebTransport stream events
80
+ */
81
+ export type WebTransportStreamEventHandler = import('./types').WebTransportStreamEventHandler;
82
+ /**
83
+ * WebTransport stream events
84
+ */
85
+ export type StreamRecvSignalEvent = import('./types').StreamRecvSignalEvent;
86
+ /**
87
+ * WebTransport stream events
88
+ */
89
+ export type StreamReadEvent = import('./types').StreamReadEvent;
90
+ /**
91
+ * WebTransport stream events
92
+ */
93
+ export type StreamWriteEvent = import('./types').StreamWriteEvent;
94
+ /**
95
+ * WebTransport stream events
96
+ */
97
+ export type StreamResetEvent = import('./types').StreamResetEvent;
98
+ /**
99
+ * WebTransport stream events
100
+ */
101
+ export type StreamNetworkFinishEvent = import('./types').StreamNetworkFinishEvent;
102
+ /**
103
+ * WebTransport stream events
104
+ */
105
+ export type NativeHttp3WTStream = import('./types').NativeHttp3WTStream;
106
+ /**
107
+ * WebTransport stream events
108
+ */
109
+ export type Http3WTSession = import('./session').Http3WTSession;
110
+ /**
111
+ * WebTransport stream events
112
+ */
113
+ export type WritableStreamDefaultController = import('stream/web').WritableStreamDefaultController;
114
+ import { ReadableStream } from "stream/web";
115
+ import { WritableStream } from "stream/web";
116
+ //# sourceMappingURL=stream.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"stream.d.ts","sourceRoot":"","sources":["../../lib/stream.js"],"names":[],"mappings":";AAEA;;;;;;;;;;;;;;GAcG;AAEH;IA6QE;;OAEG;IACH,sBAFW,qBAAqB,GAAG,eAAe,GAAG,gBAAgB,GAAG,gBAAgB,GAAG,wBAAwB,QAmClH;IAhTD;;;;;;;OAOG;IACH;QANqC,MAAM,EAAhC,mBAAmB;QACE,SAAS,EAA9B,cAAc;QACD,SAAS,EAAtB,MAAM;QACQ,aAAa,EAA3B,OAAO;QACO,QAAQ,EAAtB,OAAO;OAmHjB;IAhHC,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,mBAkGkB,IAAI,SAlGA;IAGpB,0CA+BC;IA5BK,uEAAoC;IAclC,kBA4EQ,IAAI,SA5EY;IAQ1B,wBAA0B;IAShC,0CAwDC;IArDK,yEAAoC;IA8ClC,iBAcQ,IAAI,SAdW;IAkBnC;;;OAGG;IACH,yBAHW,OAAO,SAAS,EAAE,qBAAqB,GACrC,IAAI,CA0ChB;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;;;;6CAhUY,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"}
@@ -0,0 +1,25 @@
1
+ export class Http3WebTransport {
2
+ /**
3
+ * @typedef {object} TransportCallbackEvent
4
+ * @property {{ jsobj: { customCallback: (args: any) => void }}} object
5
+ * @property {string} purpose
6
+ *
7
+ * @param {TransportCallbackEvent} args
8
+ */
9
+ static transportCallback(args: {
10
+ object: {
11
+ jsobj: {
12
+ customCallback: (args: any) => void;
13
+ };
14
+ };
15
+ purpose: string;
16
+ }): void;
17
+ /**
18
+ * @param {*} args
19
+ * @param {'server' | 'client'} purpose
20
+ */
21
+ constructor(args: any, purpose: 'server' | 'client');
22
+ transportInt: any;
23
+ sessions: {};
24
+ }
25
+ //# sourceMappingURL=transport.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"transport.d.ts","sourceRoot":"","sources":["../../lib/transport.js"],"names":[],"mappings":"AAGA;IAkBE;;;;;;OAMG;IACH;;;uCALgD,GAAG,KAAK,IAAI;;;iBAC9C,MAAM;aAgBnB;IApCD;;;OAGG;IACH,gCAFW,QAAQ,GAAG,QAAQ,EAa7B;IAPG,kBAAyE;IAM3E,aAAkB;CAuBrB"}
@@ -0,0 +1,157 @@
1
+ import type { WebTransport } from './dom';
2
+ /**
3
+ * Native Http3WTSession counterpart
4
+ */
5
+ export interface NativeHttp3WTSession {
6
+ jsobj: WebTransportSessionEventHandler;
7
+ writeDatagram: (chunk: Uint8Array) => void;
8
+ orderUnidiStream: () => void;
9
+ orderBidiStream: () => void;
10
+ close: (arg: {
11
+ code: number;
12
+ reason: string;
13
+ }) => void;
14
+ }
15
+ /**
16
+ * Native Http3WTStream counterpart
17
+ */
18
+ export interface NativeHttp3WTStream {
19
+ jsobj: WebTransportStreamEventHandler;
20
+ startReading: () => void;
21
+ stopReading: () => void;
22
+ stopSending: (code: number) => void;
23
+ resetStream: (code: number) => void;
24
+ writeChunk: (buf: Uint8Array) => void;
25
+ streamFinal: () => void;
26
+ }
27
+ export declare type Purpose = 'StreamRecvSignal' | 'StreamRead' | 'StreamWrite' | 'StreamReset' | 'StreamNetworkFinish';
28
+ export declare type NetTask = 'stopSending' | 'resetStream' | 'streamFinal';
29
+ export interface StreamRecvSignalEvent {
30
+ object: NativeHttp3WTStream;
31
+ purpose: 'StreamRecvSignal';
32
+ code: number;
33
+ nettask: NetTask;
34
+ }
35
+ export interface StreamReadEvent {
36
+ object: NativeHttp3WTStream;
37
+ purpose: 'StreamRead';
38
+ data?: Uint8Array;
39
+ fin?: boolean;
40
+ }
41
+ export interface StreamWriteEvent {
42
+ object: NativeHttp3WTStream;
43
+ purpose: 'StreamWrite';
44
+ }
45
+ export interface StreamResetEvent {
46
+ object: NativeHttp3WTStream;
47
+ purpose: 'StreamReset';
48
+ }
49
+ export interface StreamNetworkFinishEvent {
50
+ object: NativeHttp3WTStream;
51
+ purpose: 'StreamNetworkFinish';
52
+ nettask: NetTask;
53
+ }
54
+ export interface WebTransportStreamEventHandler {
55
+ onStreamRecvSignal: (evt: StreamRecvSignalEvent) => void;
56
+ onStreamRead: (evt: StreamReadEvent) => void;
57
+ onStreamWrite: (evt: StreamWriteEvent) => void;
58
+ onStreamReset: (evt: StreamResetEvent) => void;
59
+ onStreamNetworkFinish: (evt: StreamNetworkFinishEvent) => void;
60
+ }
61
+ export interface SessionReadyEvent {
62
+ object: NativeHttp3WTSession;
63
+ purpose: 'SessionReady';
64
+ }
65
+ export interface SessionCloseEvent {
66
+ object: NativeHttp3WTSession;
67
+ purpose: 'SessionClose';
68
+ errorcode: number;
69
+ error: string;
70
+ }
71
+ export interface DatagramReceivedEvent {
72
+ object: NativeHttp3WTSession;
73
+ purpose: 'DatagramReceived';
74
+ datagram: Uint8Array;
75
+ }
76
+ export interface DatagramSendEvent {
77
+ object: NativeHttp3WTSession;
78
+ purpose: 'DatagramSend';
79
+ }
80
+ export interface NewStreamEvent {
81
+ object: NativeHttp3WTSession;
82
+ purpose: 'Http3WTStreamVisitor';
83
+ stream: NativeHttp3WTStream;
84
+ transport: object;
85
+ bidirectional: boolean;
86
+ incoming: boolean;
87
+ }
88
+ export interface WebTransportSessionEventHandler {
89
+ onReady: (evt: SessionReadyEvent) => void;
90
+ onClose: (evt: SessionCloseEvent) => void;
91
+ onDatagramReceived: (evt: DatagramReceivedEvent) => void;
92
+ onDatagramSend: (evt: DatagramSendEvent) => void;
93
+ onStream: (evt: NewStreamEvent) => void;
94
+ closeHook?: (() => void) | null;
95
+ }
96
+ export interface ClientConnectedEvent {
97
+ purpose: 'ClientConnected';
98
+ success: boolean;
99
+ }
100
+ export interface ClientWebtransportSupportEvent {
101
+ purpose: 'ClientWebtransportSupport';
102
+ }
103
+ export interface Http3WTSessionVisitorEvent {
104
+ purpose: 'Http3WTSessionVisitor';
105
+ session: NativeHttp3WTSession;
106
+ }
107
+ export interface Http3ClientEventHandler {
108
+ onClientConnected: (evt: ClientConnectedEvent) => void;
109
+ onClientWebTransportSupport: (evt: ClientWebtransportSupportEvent) => void;
110
+ onHttp3WTSessionVisitor: (evt: Http3WTSessionVisitorEvent) => void;
111
+ }
112
+ export interface Http3WTServerSessionVisitorEvent extends Http3WTSessionVisitorEvent {
113
+ path: string;
114
+ object: any;
115
+ }
116
+ /**
117
+ * The Http3 server is listening on the specified port
118
+ */
119
+ export interface Http3ServerListeningEvent {
120
+ purpose: 'Http3ServerListening';
121
+ }
122
+ /**
123
+ * The Http3 server has stopped listening on the specified port
124
+ */
125
+ export interface ServerStatusEvent {
126
+ port: number | null;
127
+ host: string | null;
128
+ purpose: 'ServerStatus';
129
+ status: 'error' | 'listening' | 'close';
130
+ }
131
+ export interface Http3ServerEventHandler {
132
+ onHttp3WTSessionVisitor: (evt: Http3WTServerSessionVisitorEvent) => void;
133
+ onServerError: () => void;
134
+ onServerListening: () => void;
135
+ onServerClose: () => void;
136
+ onServerStatus: (evt: ServerStatusEvent) => void;
137
+ }
138
+ /**
139
+ * A defered promise with the value T
140
+ */
141
+ export interface Deferred<T = unknown> {
142
+ promise: Promise<T>;
143
+ resolve: (value?: T) => void;
144
+ reject: (reason?: any) => void;
145
+ }
146
+ export declare type WebTransportSessionState = 'connected' | 'closed' | 'failed';
147
+ export interface WebTransportSession extends WebTransport {
148
+ state: WebTransportSessionState;
149
+ }
150
+ export interface Http3ServerInit {
151
+ port: number;
152
+ host: string;
153
+ secret: string;
154
+ cert: string;
155
+ privKey: string;
156
+ }
157
+ //# 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,6 @@
1
+ /**
2
+ * @template {unknown} T
3
+ * @returns {import('./types').Deferred<T>}
4
+ */
5
+ export function defer<T extends unknown>(): import("./types").Deferred<T>;
6
+ //# sourceMappingURL=utils.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../lib/utils.js"],"names":[],"mappings":"AAAA;;;GAGG;AACH,0EAiBC"}
@@ -0,0 +1,35 @@
1
+ /**
2
+ * @typedef {import('./dom').WebTransportCloseInfo} WebTransportCloseInfo
3
+ * @typedef {import('./dom').WebTransportBidirectionalStream} WebTransportBidirectionalStream
4
+ * @typedef {import('./dom').WebTransportReceiveStream} WebTransportReceiveStream
5
+ */
6
+ /**
7
+ * @typedef {import('./dom').WebTransport} WebTransportInterface
8
+ *
9
+ * @implements {WebTransportInterface}
10
+ */
11
+ export class WebTransport implements WebTransportInterface {
12
+ /**
13
+ * @param {string} url
14
+ * @param {import('./dom').WebTransportOptions} [args]
15
+ */
16
+ constructor(url: string, args?: import("./dom").WebTransportOptions | undefined);
17
+ ready: Promise<void>;
18
+ closed: Promise<import("./dom").WebTransportCloseInfo>;
19
+ datagrams: import("./dom").WebTransportDatagramDuplexStream;
20
+ /** @type {ReadableStream<WebTransportBidirectionalStream>} */
21
+ incomingBidirectionalStreams: ReadableStream<WebTransportBidirectionalStream>;
22
+ /** @type {ReadableStream<WebTransportReceiveStream>} */
23
+ incomingUnidirectionalStreams: ReadableStream<WebTransportReceiveStream>;
24
+ /**
25
+ * @param {WebTransportCloseInfo} [closeinfo]
26
+ */
27
+ close(closeinfo?: import("./dom").WebTransportCloseInfo | undefined): void;
28
+ createBidirectionalStream(): Promise<import("./dom").WebTransportBidirectionalStream>;
29
+ createUnidirectionalStream(): Promise<import("./dom").WebTransportSendStream>;
30
+ }
31
+ export type WebTransportCloseInfo = import('./dom').WebTransportCloseInfo;
32
+ export type WebTransportBidirectionalStream = import('./dom').WebTransportBidirectionalStream;
33
+ export type WebTransportReceiveStream = import('./dom').WebTransportReceiveStream;
34
+ export type WebTransportInterface = import('./dom').WebTransport;
35
+ //# sourceMappingURL=webtransport.d.ts.map