@fails-components/webtransport 1.0.4 → 1.0.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 (115) hide show
  1. package/dist/main/lib/client.d.ts +95 -0
  2. package/dist/main/lib/client.d.ts.map +1 -0
  3. package/dist/main/lib/dom.d.ts +88 -0
  4. package/dist/main/lib/dom.d.ts.map +1 -0
  5. package/dist/main/lib/error.d.ts +8 -0
  6. package/dist/main/lib/error.d.ts.map +1 -0
  7. package/dist/main/lib/http2/browser/browser.d.ts +30 -0
  8. package/dist/main/lib/http2/browser/browser.d.ts.map +1 -0
  9. package/dist/main/lib/http2/browser/browserparser.d.ts +41 -0
  10. package/dist/main/lib/http2/browser/browserparser.d.ts.map +1 -0
  11. package/dist/main/lib/http2/flowcontroller.d.ts +70 -0
  12. package/dist/main/lib/http2/flowcontroller.d.ts.map +1 -0
  13. package/dist/main/lib/http2/node/capsuleparser.d.ts +24 -0
  14. package/dist/main/lib/http2/node/capsuleparser.d.ts.map +1 -0
  15. package/dist/main/lib/http2/node/client.d.ts +29 -0
  16. package/dist/main/lib/http2/node/client.d.ts.map +1 -0
  17. package/dist/main/lib/http2/node/index.d.ts +3 -0
  18. package/dist/main/lib/http2/node/index.d.ts.map +1 -0
  19. package/dist/main/lib/http2/node/server.d.ts +57 -0
  20. package/dist/main/lib/http2/node/server.d.ts.map +1 -0
  21. package/dist/main/lib/http2/node/websocketparser.d.ts +86 -0
  22. package/dist/main/lib/http2/node/websocketparser.d.ts.map +1 -0
  23. package/dist/main/lib/http2/parserbase.d.ts +84 -0
  24. package/dist/main/lib/http2/parserbase.d.ts.map +1 -0
  25. package/dist/main/lib/http2/parserbasehttp2.d.ts +31 -0
  26. package/dist/main/lib/http2/parserbasehttp2.d.ts.map +1 -0
  27. package/dist/main/lib/http2/session.d.ts +71 -0
  28. package/dist/main/lib/http2/session.d.ts.map +1 -0
  29. package/dist/main/lib/http2/stream.d.ts +112 -0
  30. package/dist/main/lib/http2/stream.d.ts.map +1 -0
  31. package/dist/main/lib/http2/websocketcommon.d.ts +2 -0
  32. package/dist/main/lib/http2/websocketcommon.d.ts.map +1 -0
  33. package/dist/main/lib/index.browser.d.ts +58 -0
  34. package/dist/main/lib/index.browser.d.ts.map +1 -0
  35. package/dist/main/lib/index.node.d.ts +59 -0
  36. package/dist/main/lib/index.node.d.ts.map +1 -0
  37. package/dist/main/lib/server.d.ts +102 -0
  38. package/dist/main/lib/server.d.ts.map +1 -0
  39. package/dist/main/lib/session.d.ts +296 -0
  40. package/dist/main/lib/session.d.ts.map +1 -0
  41. package/dist/main/lib/stream.d.ts +132 -0
  42. package/dist/main/lib/stream.d.ts.map +1 -0
  43. package/dist/main/lib/types.d.ts +277 -0
  44. package/dist/main/lib/types.d.ts.map +1 -0
  45. package/dist/main/lib/utils.d.ts +11 -0
  46. package/dist/main/lib/utils.d.ts.map +1 -0
  47. package/dist/main/lib/webstreams.browser.d.ts +5 -0
  48. package/dist/main/lib/webstreams.browser.d.ts.map +1 -0
  49. package/dist/main/lib/webstreams.d.ts +10 -0
  50. package/dist/main/lib/webstreams.d.ts.map +1 -0
  51. package/dist/main/lib/webtransport.browser.d.ts +60 -0
  52. package/dist/main/lib/webtransport.browser.d.ts.map +1 -0
  53. package/dist/main/lib/webtransport.node.d.ts +26 -0
  54. package/dist/main/lib/webtransport.node.d.ts.map +1 -0
  55. package/dist/main/lib/webtransportbase.d.ts +70 -0
  56. package/dist/main/lib/webtransportbase.d.ts.map +1 -0
  57. package/dist/main/test/bidirectional-streams.spec.d.ts +5 -0
  58. package/dist/main/test/bidirectional-streams.spec.d.ts.map +1 -0
  59. package/dist/main/test/datagrams.spec.d.ts +5 -0
  60. package/dist/main/test/datagrams.spec.d.ts.map +1 -0
  61. package/dist/main/test/fixtures/certificate.d.ts +21 -0
  62. package/dist/main/test/fixtures/certificate.d.ts.map +1 -0
  63. package/dist/main/test/fixtures/chai.d.ts +2 -0
  64. package/dist/main/test/fixtures/chai.d.ts.map +1 -0
  65. package/dist/main/test/fixtures/known-bytes.d.ts +8 -0
  66. package/dist/main/test/fixtures/known-bytes.d.ts.map +1 -0
  67. package/dist/main/test/fixtures/p-timeout.d.ts +8 -0
  68. package/dist/main/test/fixtures/p-timeout.d.ts.map +1 -0
  69. package/dist/main/test/fixtures/read-cert-hash.d.ts +6 -0
  70. package/dist/main/test/fixtures/read-cert-hash.d.ts.map +1 -0
  71. package/dist/main/test/fixtures/read-stream.d.ts +18 -0
  72. package/dist/main/test/fixtures/read-stream.d.ts.map +1 -0
  73. package/dist/main/test/fixtures/reader-value.d.ts +21 -0
  74. package/dist/main/test/fixtures/reader-value.d.ts.map +1 -0
  75. package/dist/main/test/fixtures/server.d.ts +5 -0
  76. package/dist/main/test/fixtures/server.d.ts.map +1 -0
  77. package/dist/main/test/fixtures/webtransport.browser.d.ts +4 -0
  78. package/dist/main/test/fixtures/webtransport.browser.d.ts.map +1 -0
  79. package/dist/main/test/fixtures/webtransport.d.ts +3 -0
  80. package/dist/main/test/fixtures/webtransport.d.ts.map +1 -0
  81. package/dist/main/test/fixtures/write-stream.d.ts +10 -0
  82. package/dist/main/test/fixtures/write-stream.d.ts.map +1 -0
  83. package/dist/main/test/index.d.ts +2 -0
  84. package/dist/main/test/index.d.ts.map +1 -0
  85. package/dist/main/test/session.spec.d.ts +5 -0
  86. package/dist/main/test/session.spec.d.ts.map +1 -0
  87. package/dist/main/test/unidirectional-streams.spec.d.ts +2 -0
  88. package/dist/main/test/unidirectional-streams.spec.d.ts.map +1 -0
  89. package/dist/main/tsconfig.tsbuildinfo +1 -0
  90. package/dist/transports/http3-quiche/lib/clientsocket.d.ts +19 -0
  91. package/dist/transports/http3-quiche/lib/clientsocket.d.ts.map +1 -0
  92. package/dist/transports/http3-quiche/lib/index.d.ts +11 -0
  93. package/dist/transports/http3-quiche/lib/index.d.ts.map +1 -0
  94. package/dist/transports/http3-quiche/lib/serversocket.d.ts +12 -0
  95. package/dist/transports/http3-quiche/lib/serversocket.d.ts.map +1 -0
  96. package/dist/transports/http3-quiche/lib/socket.d.ts +19 -0
  97. package/dist/transports/http3-quiche/lib/socket.d.ts.map +1 -0
  98. package/dist/transports/http3-quiche/lib/types.d.ts +21 -0
  99. package/dist/transports/http3-quiche/lib/types.d.ts.map +1 -0
  100. package/dist/transports/http3-quiche/lib/utils.d.ts +6 -0
  101. package/dist/transports/http3-quiche/lib/utils.d.ts.map +1 -0
  102. package/lib/http2/browser/browser.js +52 -0
  103. package/lib/http2/node/capsuleparser.js +8 -0
  104. package/lib/http2/node/server.js +10 -4
  105. package/lib/http2/node/websocketparser.js +17 -3
  106. package/lib/http2/parserbase.js +7 -0
  107. package/lib/http2/session.js +1 -5
  108. package/lib/webtransport.browser.js +8 -2
  109. package/package.json +5 -3
  110. package/test/bidirectional-streams.spec.js +17 -31
  111. package/test/datagrams.spec.js +17 -20
  112. package/test/index.js +13 -4
  113. package/test/session.spec.js +43 -48
  114. package/test/unidirectional-streams.spec.js +17 -30
  115. package/tsconfig.json +15 -0
@@ -0,0 +1,95 @@
1
+ /**
2
+ * @typedef {import('./session').HttpWTSession} HttpWTSession
3
+ * @typedef {import('./types').HttpClientInit} HttpClientInit
4
+ *
5
+ * Http3Client events
6
+ * @typedef {import('./types').HttpClientEventHandler} HttpClientEventHandler
7
+ * @typedef {import('./types').ClientConnectedEvent} ClientConnectedEvent
8
+ * @typedef {import('./types').ClientWebtransportSupportEvent} ClientWebtransportSupportEvent
9
+ * @typedef {import('./types').HttpWTSessionVisitorEvent} HttpWTSessionVisitorEvent
10
+ */
11
+ /**
12
+ * @implements {HttpClientEventHandler}
13
+ */
14
+ export class HttpClient implements HttpClientEventHandler {
15
+ /**
16
+ * @param {HttpClientInit} args
17
+ */
18
+ constructor(args: HttpClientInit);
19
+ /** @type {HttpClientInit| undefined} */
20
+ args: HttpClientInit | undefined;
21
+ /** @type {{ resolve: (value?: any) => void, reject: (err?: Error) => void} | null | undefined} */
22
+ sessionProm: {
23
+ resolve: (value?: any) => void;
24
+ reject: (err?: Error) => void;
25
+ } | null | undefined;
26
+ /** @type {Promise<void> | undefined} */
27
+ sessionobj: Promise<void> | undefined;
28
+ /** @type {HttpWTSession | null | undefined} */
29
+ sessionobjint: HttpWTSession | null | undefined;
30
+ closeHookSession(): void;
31
+ /** @type {{ resolve: (value?: any) => void, reject: (err?: Error) => void} | null | undefined} */
32
+ webtransportProm: {
33
+ resolve: (value?: any) => void;
34
+ reject: (err?: Error) => void;
35
+ } | null | undefined;
36
+ /** @type {{ resolve: (value?: any) => void, reject: (err?: Error) => void} | null | undefined} */
37
+ quicconnectedProm: {
38
+ resolve: (value?: any) => void;
39
+ reject: (err?: Error) => void;
40
+ } | null | undefined;
41
+ _quicConnectTimeout: number;
42
+ _webTransportConnectTimeout: number;
43
+ /**
44
+ * @param {Object} args
45
+ * @param {boolean} args.createTransport
46
+ * @param {string} args.path
47
+ */
48
+ handleConnection({ createTransport, path }: {
49
+ createTransport: boolean;
50
+ path: string;
51
+ }): Promise<void>;
52
+ quicconnected: Promise<any> | undefined;
53
+ webtransport: Promise<any> | undefined;
54
+ /**
55
+ * @param {HttpWTSession} sessionobj
56
+ * @param {string} path
57
+ * @returns
58
+ */
59
+ createWTSession(sessionobj: HttpWTSession, path: string): Promise<void | undefined>;
60
+ stopped: boolean | undefined;
61
+ /**
62
+ * @param {import('./types').SessionCloseEvent} args
63
+ */
64
+ onClientError(args: import('./types').SessionCloseEvent): void;
65
+ /**
66
+ * @param {ClientConnectedEvent} args
67
+ */
68
+ onClientConnected(args: ClientConnectedEvent): void;
69
+ transportIntSwitchToReliable: any;
70
+ /**
71
+ * @param {ClientWebtransportSupportEvent} args
72
+ */
73
+ onClientWebTransportSupport(args: ClientWebtransportSupportEvent): void;
74
+ /**
75
+ * @param {HttpWTSessionVisitorEvent} args
76
+ */
77
+ onHttpWTSessionVisitor(args: HttpWTSessionVisitorEvent): void;
78
+ /**
79
+ * @param{{path: string}} [args]
80
+ **/
81
+ createTransportInt(args?: {
82
+ path: string;
83
+ } | undefined): void;
84
+ transportInt: any;
85
+ }
86
+ export type HttpWTSession = import('./session').HttpWTSession;
87
+ /**
88
+ * Http3Client events
89
+ */
90
+ export type HttpClientInit = import('./types').HttpClientInit;
91
+ export type HttpClientEventHandler = import('./types').HttpClientEventHandler;
92
+ export type ClientConnectedEvent = import('./types').ClientConnectedEvent;
93
+ export type ClientWebtransportSupportEvent = import('./types').ClientWebtransportSupportEvent;
94
+ export type HttpWTSessionVisitorEvent = import('./types').HttpWTSessionVisitorEvent;
95
+ //# sourceMappingURL=client.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../../lib/client.js"],"names":[],"mappings":"AAMA;;;;;;;;;GASG;AAEH;;GAEG;AACH;IACE;;OAEG;IACH,kBAFW,cAAc,EAwBxB;IArBC,wCAAwC;IACxC,MADW,cAAc,GAAE,SAAS,CACpB;IAEhB,kGAAkG;IAClG;0BAD+B,GAAG,KAAK,IAAI;uBAAiB,KAAK,KAAK,IAAI;yBACnD;IAEvB,wCAAwC;IACxC,YADW,QAAQ,IAAI,CAAC,GAAG,SAAS,CAGlB;IAClB,+CAA+C;IAC/C,eADW,aAAa,GAAG,IAAI,GAAG,SAAS,CAClB;IA0E3B,yBAMC;IA7EC,kGAAkG;IAClG;0BAD+B,GAAG,KAAK,IAAI;uBAAiB,KAAK,KAAK,IAAI;yBAC9C;IAC5B,kGAAkG;IAClG;0BAD+B,GAAG,KAAK,IAAI;uBAAiB,KAAK,KAAK,IAAI;yBAC7C;IAE7B,4BAA0D;IAC1D,oCAA0E;IAG5E;;;;OAIG;IACH;QAHyB,eAAe,EAA7B,OAAO;QACM,IAAI,EAAjB,MAAM;sBA0BhB;IArBC,wCAEE;IACF,uCAEE;IAkBJ;;;;OAIG;IACH,4BAJW,aAAa,QACb,MAAM,6BA2BhB;IAOC,6BAAmB;IAGrB;;OAEG;IACH,oBAFW,OAAO,SAAS,EAAE,iBAAiB,QAM7C;IAED;;OAEG;IACH,wBAFW,oBAAoB,QAa9B;IAVC,kCAA6C;IAY/C;;OAEG;IACH,kCAFW,8BAA8B,QAOxC;IAED;;OAEG;IACH,6BAFW,yBAAyB,QAenC;IAED;;QAEI;IACJ;cAFiB,MAAM;yBA4CtB;IA/BK,kBAAwD;CAgC/D;4BAlNY,OAAO,WAAW,EAAE,aAAa;;;;6BACjC,OAAO,SAAS,EAAE,cAAc;qCAGhC,OAAO,SAAS,EAAE,sBAAsB;mCACxC,OAAO,SAAS,EAAE,oBAAoB;6CACtC,OAAO,SAAS,EAAE,8BAA8B;wCAChD,OAAO,SAAS,EAAE,yBAAyB"}
@@ -0,0 +1,88 @@
1
+ export interface WebTransportDatagramStats {
2
+ timestamp: number;
3
+ expiredOutgoing: bigint;
4
+ droppedIncoming: bigint;
5
+ lostOutgoing: bigint;
6
+ }
7
+ export interface WebTransportStats {
8
+ timestamp: number;
9
+ bytesSent: bigint;
10
+ packetsSent: bigint;
11
+ packetsLost: bigint;
12
+ numOutgoingStreamsCreated: number;
13
+ numIncomingStreamsCreated: number;
14
+ bytesReceived: bigint;
15
+ packetsReceived: bigint;
16
+ smoothedRtt: number;
17
+ rttVariation: number;
18
+ minRtt: number;
19
+ estimatedSendRate: bigint;
20
+ datagrams: WebTransportDatagramStats;
21
+ }
22
+ export interface WebTransportCloseInfo {
23
+ closeCode: number;
24
+ reason: string;
25
+ }
26
+ export interface WebTransportDatagramDuplexStream {
27
+ readable: ReadableStream<Uint8Array>;
28
+ writable: WritableStream<Uint8Array>;
29
+ }
30
+ export interface WebTransportSendStreamStats {
31
+ timestamp: number;
32
+ bytesWritten: bigint;
33
+ bytesSent: bigint;
34
+ bytesAcknowledged: bigint;
35
+ }
36
+ export interface WebTransportSendStream extends WritableStream<Uint8Array> {
37
+ getStats: () => Promise<WebTransportSendStreamStats>;
38
+ }
39
+ export interface WebTransportReceiveStreamStats {
40
+ timestamp: number;
41
+ bytesReceived: bigint;
42
+ bytesRead: bigint;
43
+ }
44
+ export interface WebTransportReceiveStream extends ReadableStream<Uint8Array> {
45
+ getStats: () => Promise<WebTransportReceiveStreamStats>;
46
+ }
47
+ export interface WebTransportBidirectionalStream {
48
+ readonly readable: WebTransportReceiveStream;
49
+ readonly writable: WebTransportSendStream;
50
+ }
51
+ export interface WebTransportHash {
52
+ algorithm: string;
53
+ value: BufferSource;
54
+ }
55
+ export interface WebTransportOptions {
56
+ allowPooling?: boolean;
57
+ requireUnreliable?: boolean;
58
+ serverCertificateHashes?: WebTransportHash[];
59
+ /**
60
+ * Nonstandard option - when a new connection is opened, how long to wait for the quic handshake to complete in ms before rejecting or switching to http2
61
+ */
62
+ quicConnectTimeout?: number;
63
+ /**
64
+ * Nonstandard option - when a new connection is opened, how long to wait for the webtransport handshake to complete in ms before rejecting or switching to http2
65
+ */
66
+ webTransportConnectTimeout?: number;
67
+ congestionControl?: WebTransportCongestionControl;
68
+ }
69
+ export interface WebTransportSession {
70
+ getStats: () => Promise<WebTransportStats>;
71
+ readonly ready: Promise<void>;
72
+ readonly reliability: WebTransportReliabilityMode;
73
+ readonly congestionControl: WebTransportCongestionControl;
74
+ readonly closed: Promise<WebTransportCloseInfo>;
75
+ readonly draining: Promise<undefined>;
76
+ close: (closeInfo?: WebTransportCloseInfo) => void;
77
+ readonly datagrams: WebTransportDatagramDuplexStream;
78
+ createBidirectionalStream: () => Promise<WebTransportBidirectionalStream>;
79
+ readonly incomingBidirectionalStreams: ReadableStream<WebTransportBidirectionalStream>;
80
+ createUnidirectionalStream: () => Promise<WebTransportSendStream>;
81
+ readonly incomingUnidirectionalStreams: ReadableStream<WebTransportReceiveStream>;
82
+ }
83
+ export interface WebTransport extends WebTransportSession {
84
+ readonly supportsReliableOnly: boolean;
85
+ }
86
+ export type WebTransportReliabilityMode = 'pending' | 'reliable-only' | 'supports-unreliable';
87
+ export type WebTransportCongestionControl = 'default' | 'throughput' | 'low-latency';
88
+ //# sourceMappingURL=dom.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dom.d.ts","sourceRoot":"","sources":["../../../lib/dom.ts"],"names":[],"mappings":"AAGA,MAAM,WAAW,yBAAyB;IACxC,SAAS,EAAE,MAAM,CAAA;IACjB,eAAe,EAAE,MAAM,CAAA;IACvB,eAAe,EAAE,MAAM,CAAA;IACvB,YAAY,EAAE,MAAM,CAAA;CACrB;AAED,MAAM,WAAW,iBAAiB;IAChC,SAAS,EAAE,MAAM,CAAA;IACjB,SAAS,EAAE,MAAM,CAAA;IACjB,WAAW,EAAE,MAAM,CAAA;IACnB,WAAW,EAAE,MAAM,CAAA;IACnB,yBAAyB,EAAE,MAAM,CAAA;IACjC,yBAAyB,EAAE,MAAM,CAAA;IACjC,aAAa,EAAE,MAAM,CAAA;IACrB,eAAe,EAAE,MAAM,CAAA;IACvB,WAAW,EAAE,MAAM,CAAA;IACnB,YAAY,EAAE,MAAM,CAAA;IACpB,MAAM,EAAE,MAAM,CAAA;IACd,iBAAiB,EAAE,MAAM,CAAA;IACzB,SAAS,EAAE,yBAAyB,CAAA;CACrC;AAED,MAAM,WAAW,qBAAqB;IACpC,SAAS,EAAE,MAAM,CAAA;IACjB,MAAM,EAAE,MAAM,CAAA;CACf;AAED,MAAM,WAAW,gCAAgC;IAC/C,QAAQ,EAAE,cAAc,CAAC,UAAU,CAAC,CAAA;IACpC,QAAQ,EAAE,cAAc,CAAC,UAAU,CAAC,CAAA;CAMrC;AAGD,MAAM,WAAY,2BAA2B;IAC3C,SAAS,EAAE,MAAM,CAAA;IACjB,YAAY,EAAE,MAAM,CAAA;IACpB,SAAS,EAAE,MAAM,CAAA;IACjB,iBAAiB,EAAE,MAAM,CAAA;CAC1B;AAED,MAAM,WAAW,sBAAuB,SAAQ,cAAc,CAAC,UAAU,CAAC;IACxE,QAAQ,EAAE,MAAM,OAAO,CAAC,2BAA2B,CAAC,CAAA;CACrD;AAED,MAAM,WAAW,8BAA8B;IAC7C,SAAS,EAAE,MAAM,CAAA;IACjB,aAAa,EAAE,MAAM,CAAA;IACrB,SAAS,EAAE,MAAM,CAAA;CAClB;AAED,MAAM,WAAW,yBAA0B,SAAQ,cAAc,CAAC,UAAU,CAAC;IAC3E,QAAQ,EAAE,MAAM,OAAO,CAAC,8BAA8B,CAAC,CAAA;CACxD;AAED,MAAM,WAAW,+BAA+B;IAC9C,QAAQ,CAAC,QAAQ,EAAE,yBAAyB,CAAA;IAC5C,QAAQ,CAAC,QAAQ,EAAE,sBAAsB,CAAA;CAC1C;AAED,MAAM,WAAW,gBAAgB;IAC/B,SAAS,EAAE,MAAM,CAAA;IACjB,KAAK,EAAE,YAAY,CAAA;CACpB;AAED,MAAM,WAAW,mBAAmB;IAClC,YAAY,CAAC,EAAE,OAAO,CAAA;IACtB,iBAAiB,CAAC,EAAE,OAAO,CAAA;IAC3B,uBAAuB,CAAC,EAAE,gBAAgB,EAAE,CAAA;IAE5C;;OAEG;IACH,kBAAkB,CAAC,EAAE,MAAM,CAAA;IAE1B;;OAEG;IACJ,0BAA0B,CAAC,EAAE,MAAM,CAAA;IACnC,iBAAiB,CAAC,EAAE,6BAA6B,CAAA;CAClD;AAED,MAAM,WAAW,mBAAmB;IAClC,QAAQ,EAAE,MAAM,OAAO,CAAC,iBAAiB,CAAC,CAAA;IAC1C,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC,IAAI,CAAC,CAAA;IAC7B,QAAQ,CAAC,WAAW,EAAE,2BAA2B,CAAA;IACjD,QAAQ,CAAC,iBAAiB,EAAE,6BAA6B,CAAA;IACzD,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC,qBAAqB,CAAC,CAAA;IAC/C,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC,SAAS,CAAC,CAAA;IACrC,KAAK,EAAE,CAAC,SAAS,CAAC,EAAE,qBAAqB,KAAK,IAAI,CAAA;IAClD,QAAQ,CAAC,SAAS,EAAE,gCAAgC,CAAA;IAEpD,yBAAyB,EAAE,MAAM,OAAO,CAAC,+BAA+B,CAAC,CAAA;IAEzE,QAAQ,CAAC,4BAA4B,EAAE,cAAc,CAAC,+BAA+B,CAAC,CAAA;IAEtF,0BAA0B,EAAE,MAAM,OAAO,CAAC,sBAAsB,CAAC,CAAA;IAEjE,QAAQ,CAAC,6BAA6B,EAAE,cAAc,CAAC,yBAAyB,CAAC,CAAA;CAClF;AAED,MAAM,WAAW,YAAa,SAAQ,mBAAmB;IACvD,QAAQ,CAAC,oBAAoB,EAAE,OAAO,CAAA;CACvC;AAED,MAAM,MAAM,2BAA2B,GAAG,SAAS,GAAG,eAAe,GAAG,qBAAqB,CAAA;AAC7F,MAAM,MAAM,6BAA6B,GAAG,SAAS,GAAG,YAAY,GAAG,aAAa,CAAC"}
@@ -0,0 +1,8 @@
1
+ export class WebTransportError extends Error {
2
+ /**
3
+ * @param {string} message
4
+ */
5
+ constructor(message: string);
6
+ [Symbol.toStringTag]: string;
7
+ }
8
+ //# sourceMappingURL=error.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"error.d.ts","sourceRoot":"","sources":["../../../lib/error.js"],"names":[],"mappings":"AAAA;IACE;;OAEG;IACH,qBAFW,MAAM,EAMhB;IADa,6BAA8C;CAE7D"}
@@ -0,0 +1,30 @@
1
+ export class Http2WebTransportBrowser {
2
+ /**
3
+ * @param {import('../../types.js').NativeClientOptions} args
4
+ */
5
+ constructor(args: import('../../types.js').NativeClientOptions);
6
+ port: number;
7
+ hostname: string;
8
+ initialStreamFlowControlWindow: number;
9
+ initialSessionFlowControlWindow: number;
10
+ streamShouldAutoTuneReceiveWindow: boolean;
11
+ streamFlowControlWindowSizeLimit: number;
12
+ sessionShouldAutoTuneReceiveWindow: boolean;
13
+ sessionFlowControlWindowSizeLimit: number;
14
+ /** @type {import('../../session.js').HttpClient} */
15
+ jsobj: import('../../session.js').HttpClient;
16
+ /** @type {WebSocket} */
17
+ clientInt: WebSocket;
18
+ /**
19
+ * @param {{path: string}} arg
20
+ */
21
+ createTransport({ path }: {
22
+ path: string;
23
+ }): void;
24
+ /**
25
+ * @param {string} path
26
+ */
27
+ openWTSession(path: string): void;
28
+ closeClient(): void;
29
+ }
30
+ //# sourceMappingURL=browser.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"browser.d.ts","sourceRoot":"","sources":["../../../../../lib/http2/browser/browser.js"],"names":[],"mappings":"AAOA;IACE;;OAEG;IACH,kBAFW,OAAO,gBAAgB,EAAE,mBAAmB,EAyBtD;IAtBC,aAA6B;IAC7B,iBAAyC;IACzC,uCACmD;IACnD,wCACoD;IAEpD,2CACiD;IACjD,yCAC2D;IAE3D,4CACkD;IAClD,0CAC6D;IAC7D,oDAAoD;IAEpD,OAFW,OAAO,kBAAkB,EAAE,UAAU,CAE1B;IACtB,wBAAwB;IAExB,WAFW,SAAS,CAEM;IAG5B;;OAEG;IACH,0BAFW;QAAC,IAAI,EAAE,MAAM,CAAA;KAAC,QAkExB;IAED;;OAEG;IACH,oBAFW,MAAM,QA2GhB;IAED,oBAGC;CACF"}
@@ -0,0 +1,41 @@
1
+ /**
2
+ * @param{{offset: Number, buffer: Uint8Array, size: Number}} bs
3
+ * @param{Number|bigint} int
4
+ */
5
+ export function writeVarInt(bs: {
6
+ offset: number;
7
+ buffer: Uint8Array;
8
+ size: number;
9
+ }, int: number | bigint): void;
10
+ export class BrowserParser extends ParserBase {
11
+ static WS_CONTINUE: number;
12
+ static WS_TEXT: number;
13
+ static WS_BINARY: number;
14
+ static WS_CLOSE: number;
15
+ static WS_PING: number;
16
+ static WS_PONG: number;
17
+ /**
18
+ * @param {import('../../types.js').ParserWebsocketInit} stream
19
+ */
20
+ constructor({ ws, nativesession, isclient, initialStreamSendWindowOffset, initialStreamReceiveWindowOffset, streamShouldAutoTuneReceiveWindow, streamReceiveWindowSizeLimit }: import('../../types.js').ParserWebsocketInit);
21
+ ws: WebSocket;
22
+ /** @type {Buffer|undefined} */
23
+ saveddata: Buffer | undefined;
24
+ /** @type {Number|undefined} */
25
+ rtype: number | undefined;
26
+ closesend: boolean;
27
+ /**
28
+ * @param {Uint8Array} data
29
+ */
30
+ parseData(data: Uint8Array): void;
31
+ /**
32
+ * @param{{type: Number, headerVints: Array<Number|bigint>, payload: Uint8Array|undefined}} bs
33
+ */
34
+ writeCapsule({ type, headerVints, payload }: {
35
+ type: number;
36
+ headerVints: Array<number | bigint>;
37
+ payload: Uint8Array | undefined;
38
+ }): boolean;
39
+ }
40
+ import { ParserBase } from "../parserbase.js";
41
+ //# sourceMappingURL=browserparser.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"browserparser.d.ts","sourceRoot":"","sources":["../../../../../lib/http2/browser/browserparser.js"],"names":[],"mappings":"AAyBA;;;GAGG;AACH,gCAHU;IAAC,MAAM,SAAS;IAAC,MAAM,EAAE,UAAU,CAAC;IAAC,IAAI,SAAQ;CAAC,OAClD,SAAO,MAAM,QAyBtB;AAED;IACE,2BAAwB;IACxB,uBAAoB;IACpB,yBAAsB;IACtB,wBAAqB;IACrB,uBAAoB;IACpB,uBAAoB;IACpB;;OAEG;IACH,+KAFW,OAAO,gBAAgB,EAAE,mBAAmB,EAoCtD;IAjBC,cAAY;IACZ,+BAA+B;IAC/B,WADW,MAAM,GAAC,SAAS,CACD;IAC1B,+BAA+B;IAC/B,OADW,SAAO,SAAS,CACL;IAEtB,mBAAsB;IAaxB;;OAEG;IACH,gBAFW,UAAU,QAiHpB;IAED;;OAEG;IACH,6CAFU;QAAC,IAAI,SAAS;QAAC,WAAW,EAAE,MAAM,SAAO,MAAM,CAAC,CAAC;QAAC,OAAO,EAAE,UAAU,GAAC,SAAS,CAAA;KAAC,WAsBzF;CAQF"}
@@ -0,0 +1,70 @@
1
+ export class FlowController {
2
+ static kSessionFlowControlMultiplier: number;
3
+ /**
4
+ * @param {{tocontrol: FlowControlable
5
+ * sendWindowOffset: number,
6
+ * receiveWindowOffset: number,
7
+ * shouldAutoTuneReceiveWindow: boolean
8
+ * receiveWindowSizeLimit: number,
9
+ * sessionFlowController?: FlowController}} arg
10
+ */
11
+ constructor({ tocontrol, sendWindowOffset, receiveWindowOffset, receiveWindowSizeLimit, shouldAutoTuneReceiveWindow, sessionFlowController }: {
12
+ tocontrol: FlowControlable;
13
+ sendWindowOffset: number;
14
+ receiveWindowOffset: number;
15
+ shouldAutoTuneReceiveWindow: boolean;
16
+ receiveWindowSizeLimit: number;
17
+ sessionFlowController?: FlowController;
18
+ });
19
+ tocontrol: import("../types").FlowControlable;
20
+ bytesSent: bigint;
21
+ sendWindowOffset: bigint;
22
+ bytesConsumed: bigint;
23
+ highestReceivedByteOffset: bigint;
24
+ receiveWindowOffset: bigint;
25
+ receiveWindowSize: bigint;
26
+ receiveWindowSizeLimit: bigint;
27
+ autoTuneReceiveWindow: boolean;
28
+ sessionFlowController: FlowController | undefined;
29
+ lastBlockedSendWindowOffset: bigint;
30
+ prevWindowUpdateTime: number | undefined;
31
+ /**
32
+ * @param {Number} bytesConsumed
33
+ */
34
+ addBytesConsumed(bytesConsumed: number): void;
35
+ /**
36
+ * @param {Number} increaseOffset
37
+ */
38
+ updateHighestReceivedOffset(increaseOffset: number): boolean;
39
+ /**
40
+ * @param {Number} nbytesSent
41
+ */
42
+ addBytesSent(nbytesSent: number): void;
43
+ flowControlViolation(): boolean;
44
+ maybeIncreaseMaxWindowSize(): void;
45
+ increaseWindowSize(): void;
46
+ windowUpdateThreshold(): bigint;
47
+ maybeSendWindowUpdate(): void;
48
+ /**
49
+ * @param {bigint} availableWindow
50
+ */
51
+ updateReceiveWindowOffsetAndSendWindowUpdate(availableWindow: bigint): void;
52
+ maybeSendBlocked(): void;
53
+ /**
54
+ * @param {bigint} newSendWindowOffset
55
+ */
56
+ updateSendWindowOffset(newSendWindowOffset: bigint): boolean;
57
+ /**
58
+ * @param {bigint} windowSize
59
+ */
60
+ ensureWindowAtLeast(windowSize: bigint): void;
61
+ isBlocked(): boolean;
62
+ sendWindowSize(): bigint | 0;
63
+ /**
64
+ * @param {bigint} size
65
+ */
66
+ updateReceiveWindowSize(size: bigint): void;
67
+ sendWindowUpdate(): void;
68
+ }
69
+ export type FlowControlable = import('../types').FlowControlable;
70
+ //# sourceMappingURL=flowcontroller.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"flowcontroller.d.ts","sourceRoot":"","sources":["../../../../lib/http2/flowcontroller.js"],"names":[],"mappings":"AAaA;IACE,6CAA0C;IAE1C;;;;;;;OAOG;IAEH,8IARW;QAAC,SAAS,EAAE,eAAe,CAAA;QACrC,gBAAkB,EAAE,MAAM,CAAC;QAC3B,mBAAqB,EAAE,MAAM,CAAC;QAC9B,2BAA6B,EAAE,OAAO,CAAA;QACtC,sBAAwB,EAAE,MAAM,CAAC;QACjC,qBAAuB,CAAC,EAAE,cAAc,CAAA;KAAC,EAmCzC;IAxBC,8CAA0B;IAC1B,kBAAmB;IACnB,yBAAgD;IAChD,sBAAuB;IACvB,kCAAmC;IACnC,4BAAsD;IACtD,0BAAoD;IACpD,+BAA4D;IAC5D,+BAAwD;IACxD,kDAAkD;IAClD,oCAAqC;IACrC,yCAAqC;IAevC;;OAEG;IACH,8CAKC;IAED;;OAEG;IACH,6DAaC;IAED;;OAEG;IACH,uCAyBC;IAED,gCAYC;IAED,mCAwEC;IAED,2BAMC;IAED,gCAEC;IAED,8BA8BC;IAED;;OAEG;IACH,8DAFW,MAAM,QAqBhB;IAED,yBAuBC;IAED;;OAEG;IACH,4CAFW,MAAM,WAwBhB;IAED;;OAEG;IACH,gCAFW,MAAM,QAUhB;IAED,qBAEC;IAED,6BAKC;IAED;;OAEG;IACH,8BAFW,MAAM,QAehB;IAED,yBAEC;CACF;8BA/WY,OAAO,UAAU,EAAE,eAAe"}
@@ -0,0 +1,24 @@
1
+ export class Http2CapsuleParser extends ParserBaseHttp2 {
2
+ mode: string;
3
+ /** @type {Buffer|undefined} */
4
+ saveddata: Buffer | undefined;
5
+ /** @type {Number|undefined} */
6
+ rtype: number | undefined;
7
+ /**
8
+ * @param {Buffer} data
9
+ */
10
+ parseData(data: Buffer): void;
11
+ remainlength: any;
12
+ rstreamid: number | undefined;
13
+ rfin: boolean | undefined;
14
+ /**
15
+ * @param{{type: Number, headerVints: Array<Number>, payload: Uint8Array|undefined}} bs
16
+ */
17
+ writeCapsule({ type, headerVints, payload }: {
18
+ type: number;
19
+ headerVints: Array<number>;
20
+ payload: Uint8Array | undefined;
21
+ }): boolean | undefined;
22
+ }
23
+ import { ParserBaseHttp2 } from "../parserbasehttp2.js";
24
+ //# sourceMappingURL=capsuleparser.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"capsuleparser.d.ts","sourceRoot":"","sources":["../../../../../lib/http2/node/capsuleparser.js"],"names":[],"mappings":"AAGA;IAsBI,aAAe;IACf,+BAA+B;IAC/B,WADW,MAAM,GAAC,SAAS,CACD;IAC1B,+BAA+B;IAC/B,OADW,SAAO,SAAS,CACL;IAGxB;;OAEG;IACH,gBAFW,MAAM,QA0OhB;IA3CW,kBAA2D;IAGzD,8BAAyB;IACzB,0BAAsD;IAyCpE;;OAEG;IACH,6CAFU;QAAC,IAAI,SAAS;QAAC,WAAW,EAAE,aAAa,CAAC;QAAC,OAAO,EAAE,UAAU,GAAC,SAAS,CAAA;KAAC,uBAmBlF;CASF"}
@@ -0,0 +1,29 @@
1
+ /// <reference types="node" />
2
+ export class Http2WebTransportClient {
3
+ /**
4
+ * @param {import('../../types.js').NativeClientOptions} args
5
+ */
6
+ constructor(args: import('../../types.js').NativeClientOptions);
7
+ port: number;
8
+ hostname: string;
9
+ serverCertificateHashes: import("../../dom.js").WebTransportHash[];
10
+ localPort: number | undefined;
11
+ allowPooling: boolean;
12
+ forceIpv6: boolean;
13
+ initialStreamFlowControlWindow: number;
14
+ initialSessionFlowControlWindow: number;
15
+ streamShouldAutoTuneReceiveWindow: boolean;
16
+ streamFlowControlWindowSizeLimit: number;
17
+ sessionShouldAutoTuneReceiveWindow: boolean;
18
+ sessionFlowControlWindowSizeLimit: number;
19
+ /** @type {import('../../session.js').HttpClient} */
20
+ jsobj: import('../../session.js').HttpClient;
21
+ createTransport(): void;
22
+ clientInt: import("http2").ClientHttp2Session | undefined;
23
+ /**
24
+ * @param {string} path
25
+ */
26
+ openWTSession(path: string): void;
27
+ closeClient(): void;
28
+ }
29
+ //# sourceMappingURL=client.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../../../../lib/http2/node/client.js"],"names":[],"mappings":";AAOA;IACE;;OAEG;IACH,kBAFW,OAAO,gBAAgB,EAAE,mBAAmB,EA4BtD;IAvBC,aAAwB;IACxB,iBAAyC;IACzC,mEAAyE;IACzE,8BAAqD;IACrD,sBAA+C;IAC/C,mBAAyC;IACzC,uCACmD;IACnD,wCACoD;IAEpD,2CACiD;IACjD,yCAC2D;IAE3D,4CACkD;IAClD,0CAC6D;IAC7D,oDAAoD;IAEpD,OAFW,OAAO,kBAAkB,EAAE,UAAU,CAE1B;IAGxB,wBAwJC;IA5FC,0DAGC;IA2FH;;OAEG;IACH,oBAFW,MAAM,QAuChB;IAED,oBAEC;CACF"}
@@ -0,0 +1,3 @@
1
+ export { Http2WebTransportClient } from "./client.js";
2
+ export { Http2WebTransportServer } from "./server.js";
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../lib/http2/node/index.js"],"names":[],"mappings":""}
@@ -0,0 +1,57 @@
1
+ /// <reference types="node" />
2
+ export class Http2WebTransportServer {
3
+ /**
4
+ * @param {import('../../types.js').NativeServerOptions} args
5
+ */
6
+ constructor(args: import('../../types.js').NativeServerOptions);
7
+ port: number;
8
+ secret: string;
9
+ host: string;
10
+ initialStreamFlowControlWindow: number;
11
+ initialSessionFlowControlWindow: number;
12
+ streamShouldAutoTuneReceiveWindow: boolean;
13
+ streamFlowControlWindowSizeLimit: number;
14
+ sessionShouldAutoTuneReceiveWindow: boolean;
15
+ sessionFlowControlWindowSizeLimit: number;
16
+ /** @type {Record<string, boolean>} */
17
+ paths: Record<string, boolean>;
18
+ hasrequesthandler: boolean;
19
+ /** @type {import('../../session.js').HttpServer} */
20
+ jsobj: import('../../session.js').HttpServer;
21
+ serverInt: import("http2").Http2SecureServer;
22
+ capsParser: WebSocketParser;
23
+ /**
24
+ * @param {import("http2").IncomingHttpHeaders} header
25
+ */
26
+ checkProtocolHeader(header: import("http2").IncomingHttpHeaders): any;
27
+ startServer(): void;
28
+ stopServer(): void;
29
+ /**
30
+ * @param {string} cert
31
+ * @param {string} privKey
32
+ * @param {boolean} http2only
33
+ * */
34
+ updateCert(cert: string, privKey: string, http2only: boolean): void;
35
+ /**
36
+ * @param {boolean} isset
37
+ */
38
+ setJSRequestHandler(isset: boolean): void;
39
+ /**
40
+ * @param {string} path
41
+ */
42
+ addPath(path: string): void;
43
+ /**
44
+ * @param {{stream: import('net').Socket, header: any, protocol: string}} args
45
+ */
46
+ sendHttp1Headers({ stream, header, protocol }: {
47
+ stream: import('net').Socket;
48
+ header: any;
49
+ protocol: string;
50
+ }): Promise<void>;
51
+ /**
52
+ * @param {import('../../types.js').NativeFinishSessionRequest} args
53
+ */
54
+ finishSessionRequest({ header, session: stream, status, protocol, head }: import('../../types.js').NativeFinishSessionRequest): void;
55
+ }
56
+ import { WebSocketParser } from "./websocketparser.js";
57
+ //# sourceMappingURL=server.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../../../../lib/http2/node/server.js"],"names":[],"mappings":";AASA;IACE;;OAEG;IACH,kBAFW,OAAO,gBAAgB,EAAE,mBAAmB,EA8StD;IAzSC,aAAwB;IACxB,eAA0B;IAE1B,aAAqC;IAMrC,uCACmD;IACnD,wCACoD;IAEpD,2CACiD;IACjD,yCAC2D;IAE3D,4CACkD;IAClD,0CAC6D;IAE7D,sCAAsC;IACtC,OADW,OAAO,MAAM,EAAE,OAAO,CAAC,CACnB;IACf,2BAA8B;IAC9B,oDAAoD;IAEpD,OAFW,OAAO,kBAAkB,EAAE,UAAU,CAE1B;IAGtB,6CAeE;IAkF6B,4BAYb;IA8JpB;;OAEG;IACH,4BAFW,OAAO,OAAO,EAAE,mBAAmB,OAgB7C;IAED,oBAEC;IAED,mBAGC;IAED;;;;SAIK;IACL,iBAJW,MAAM,WACN,MAAM,aACN,OAAO,QAIjB;IAED;;OAEG;IACH,2BAFW,OAAO,QAIjB;IAED;;OAEG;IACH,cAFW,MAAM,QAIhB;IAED;;OAEG;IACH,+CAFW;QAAC,MAAM,EAAE,OAAO,KAAK,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,GAAG,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAA;KAAC,iBA4BvE;IAED;;OAEG;IACH,0EAFW,OAAO,gBAAgB,EAAE,0BAA0B,QAyG7D;CACF"}
@@ -0,0 +1,86 @@
1
+ /**
2
+ * @param{{offset: Number, buffer: Buffer, size: Number}} bs
3
+ * @param{{offset: Number, mask: Uint8Array}} ms
4
+ */
5
+ export function readVarIntMasked(bs: {
6
+ offset: number;
7
+ buffer: Buffer;
8
+ size: number;
9
+ }, ms: {
10
+ offset: number;
11
+ mask: Uint8Array;
12
+ }): number | undefined;
13
+ export class WebSocketParser extends ParserBaseHttp2 {
14
+ static WS_CONTINUE: number;
15
+ static WS_TEXT: number;
16
+ static WS_BINARY: number;
17
+ static WS_CLOSE: number;
18
+ static WS_PING: number;
19
+ static WS_PONG: number;
20
+ mode: string;
21
+ /** @type {Buffer|undefined} */
22
+ saveddata: Buffer | undefined;
23
+ /** @type {Number|undefined} */
24
+ rtype: number | undefined;
25
+ /**
26
+ * @param {Buffer} data
27
+ */
28
+ parseData(data: Buffer): void;
29
+ maskcontext: {
30
+ mask: Uint8Array;
31
+ offset: number;
32
+ } | undefined;
33
+ lastopcode: number | undefined;
34
+ curtype: number | bigint | undefined;
35
+ /**
36
+ * @type {Uint8Array[]}
37
+ */
38
+ contframes: Uint8Array[] | undefined;
39
+ cstreamid: number | undefined;
40
+ remainlength: any;
41
+ rstreamid: number | undefined;
42
+ rfin: boolean | undefined;
43
+ /**
44
+ * @param {Uint8Array} payload
45
+ */
46
+ sendCloseInt(payload: Uint8Array): void;
47
+ closesend: boolean | undefined;
48
+ /**
49
+ * @param {Uint8Array} payload
50
+ */
51
+ sendPong(payload: Uint8Array): void;
52
+ /**
53
+ * @param{{type: Number, headerVints: Array<Number|bigint>, payload: Uint8Array|undefined}} bs
54
+ */
55
+ writeCapsule({ type, headerVints, payload }: {
56
+ type: number;
57
+ headerVints: Array<number | bigint>;
58
+ payload: Uint8Array | undefined;
59
+ }): boolean;
60
+ /**
61
+ * @param {{ offset: number; size?: number; buffer: Buffer; }} bs
62
+ * @param {{ opcode: number; plength: number; mask: number; }} args
63
+ */
64
+ writeHeader(bs: {
65
+ offset: number;
66
+ size?: number;
67
+ buffer: Buffer;
68
+ }, { opcode, plength, mask }: {
69
+ opcode: number;
70
+ plength: number;
71
+ mask: number;
72
+ }): {
73
+ offset: number;
74
+ mask: Buffer;
75
+ } | undefined;
76
+ /**
77
+ * @param {{ opcode: number; payload: Uint8Array; }} args
78
+ */
79
+ writeWSFrame({ opcode, payload }: {
80
+ opcode: number;
81
+ payload: Uint8Array;
82
+ }): boolean;
83
+ }
84
+ export type Http2Stream = import('node:http2').Http2Stream;
85
+ import { ParserBaseHttp2 } from "../parserbasehttp2.js";
86
+ //# sourceMappingURL=websocketparser.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"websocketparser.d.ts","sourceRoot":"","sources":["../../../../../lib/http2/node/websocketparser.js"],"names":[],"mappings":"AA8BA;;;GAGG;AACH,qCAHU;IAAC,MAAM,SAAS;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,IAAI,SAAQ;CAAC,MAC9C;IAAC,MAAM,SAAS;IAAC,IAAI,EAAE,UAAU,CAAA;CAAC,sBAmB3C;AA+GD;IACE,2BAAwB;IACxB,uBAAoB;IACpB,yBAAsB;IACtB,wBAAqB;IACrB,uBAAoB;IACpB,uBAAoB;IAsBlB,aAAe;IACf,+BAA+B;IAC/B,WADW,MAAM,GAAC,SAAS,CACD;IAC1B,+BAA+B;IAC/B,OADW,SAAO,SAAS,CACL;IAGxB;;OAEG;IACH,gBAFW,MAAM,QA4dhB;IAzZW;;;kBAGC;IAKD,+BAAwB;IAsItB,qCAAmB;IAyEf;;OAEG;IACH,qCAAoB;IAmCpB,8BAAyB;IA4F7B,kBAA2D;IAGzD,8BAAyB;IACzB,0BAA8C;IA6E9D;;OAEG;IACH,sBAFW,UAAU,QAKpB;IADC,+BAAqB;IAGvB;;OAEG;IACH,kBAFW,UAAU,QAIpB;IAED;;OAEG;IACH,6CAFU;QAAC,IAAI,SAAS;QAAC,WAAW,EAAE,MAAM,SAAO,MAAM,CAAC,CAAC;QAAC,OAAO,EAAE,UAAU,GAAC,SAAS,CAAA;KAAC,WAoDzF;IAED;;;OAGG;IACH,gBAHW;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAC;KAAE,6BAClD;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;KAAE;;;kBA4B5D;IAED;;OAEG;IACH,kCAFW;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,UAAU,CAAC;KAAE,WAkClD;CAcF;0BAn0BY,OAAO,YAAY,EAAE,WAAW"}